From f9f8231f7520a7d8d2a7e1d66fe1b6878690c66f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=AB=E8=B0=B7=E5=89=91=E4=BB=99?= Date: Sat, 18 Jan 2020 16:51:34 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=E4=B8=AD=E6=96=87=E6=8A=80=E8=83=BD?= =?UTF-8?q?=E5=BC=80=E5=8F=91=E8=BF=81=E7=A7=BB=E5=88=B0=E6=8A=80=E8=83=BD?= =?UTF-8?q?=E5=BC=80=E5=8F=91=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- languages/language-list.js | 4 + languages/zh-dev.css | 252 ++++++++++++++++++++++++ languages/zh-dev.js | 379 +++++++++++++++++++++++++++++++++++++ script.js | 11 +- universal_function.js | 16 +- 5 files changed, 651 insertions(+), 11 deletions(-) create mode 100644 languages/zh-dev.css create mode 100644 languages/zh-dev.js diff --git a/languages/language-list.js b/languages/language-list.js index 697615cc..c47d120f 100644 --- a/languages/language-list.js +++ b/languages/language-list.js @@ -19,4 +19,8 @@ name:"한국어",i18n:"ko",searchlist:["ko","ja"], guideURL:"http://www.thisisgame.com/pad/info/monster/detail.php?code=$1" }, + { + name:"中文(简体)技能开发版",i18n:"zh-dev",searchlist:["chs","ja"], + guideURL:"http://pad.skyozora.com/pets/$1" + }, ]; \ No newline at end of file diff --git a/languages/zh-dev.css b/languages/zh-dev.css new file mode 100644 index 00000000..4ad2fb3f --- /dev/null +++ b/languages/zh-dev.css @@ -0,0 +1,252 @@ +@charset "utf-8"; +.status.loading-mon-info .text::before{ + content: "正在加载怪物数据,请稍候。"; +} +.status.loading-skill-info .text::before{ + content: "正在加载技能数据,请稍候。"; +} +.delay .monster::before{ + content: "应 对\A威 吓"; +} +.monster .level.max::before{ + content: "Lv.最大"; +} +.monster .level::before{ + content: "Lv."; +} +.monster .id::before{ + content: "No."; +} +.formation-A-bigbox::after{ + content: "队伍\A A"; +} +.formation-B-bigbox::before{ + content: "队伍\A B"; +} +.formation-A-box .formation-assist .member::after{ + content: "▼辅助"; +} +.formation-B-box .formation-assist .member::before{ + content: "▲辅助"; +} +.abilitys .hp::before{ + content: "HP:"; +} +.abilitys .atk::before{ + content: "攻击:"; +} +.abilitys .rcv::before{ + content: "回复:"; +} +.edit-box .edit-box-title::before{ + content: "修改队员"; +} +.edit-box .edit-box-title.edit-box-title-assist::before{ + content: "修改辅助"; +} +.edit-box .setting-box .row-mon-id::before{ + content: "▼怪物ID"; +} +.monsterinfo-box .monster-id::before{ + content: "No."; +} +.edit-box .setting-box .row-mon-level::before{ + content: "▼怪物等级"; +} +.m-level-btn-min::before{ + content: "Lv."; +} +.m-level-btn-max::before{ + content: "最高Lv."; +} +.edit-box .setting-box .row-mon-awoken::before{ + content: "▼怪物觉醒"; +} +.edit-box .setting-box .row-mon-super-awoken::before{ + content: "▼超觉醒"; +} +.edit-box .setting-box .row-mon-plus::before{ + content: "▼怪物加值"; +} +.m-plus-hp-li::before{ + content: "HP"; +} +.m-plus-atk-li::before{ + content: "攻击"; +} +.m-plus-rcv-li::before{ + content: "回复"; +} +.edit-box .setting-box .row-mon-latent::before{ + content: "▼潜在觉醒"; +} + +.skill-box .skill-cd::before{ + content: "冷却回合:"; +} +.skill-box .skill-level-label::before{ + content: "Lv."; +} +.skill-box .m-skill-lv-1::before{ + content: "Lv."; +} +.skill-box .m-skill-lv-max::before{ + content: "最高Lv."; +} +.row-mon-skill .skill-title::before{ + content: "主動技能"; +} +.row-mon-leader-skill .skill-title::before{ + content: "隊長技能"; +} + +.edit-box .button-box .button-null::after{ + content: "留空格子"; +} +.edit-box .button-box .button-delay::after{ + content: "应对威吓"; +} +.edit-box .button-box .button-cancel::after{ + content: "取消修改"; +} +.edit-box .button-box .button-done::after{ + content: "确认修改"; +} +.edit-box .button-box .button-done.cant-assist::after{ + content: "不能辅助"; +} +.awoken-total-box::before{ + content: "觉醒总计:"; +} +.type-name-4::after{ + content: "龍"; +} +.type-name-5::after{ + content: "神"; +} +.type-name-7::after{ + content: "惡魔"; +} +.type-name-8::after{ + content: "机械"; +} +.type-name-1::after{ + content: "平衡"; +} +.type-name-6::after{ + content: "攻撃"; +} +.type-name-2::after{ + content: "体力"; +} +.type-name-3::after{ + content: "回復"; +} +.type-name-0::after{ + content: "進化用"; +} +.type-name-12::after{ + content: "能力覺醒用"; +} +.type-name-14::after{ + content: "強化合成用"; +} +.type-name-15::after{ + content: "販賣用"; +} +.type-name-9::after{ + content: "特別保護"; +} +.control-box .languages-label::before{ + content: "语言:"; +} +.control-box .datasource-label::before{ + content: "数据来源:"; +} +.control-box .btn-solo-link::before{ + content: "🧑转到单人游戏"; +} +.control-box .btn-multi-link::before{ + content: "🧑‍🤝‍🧑转到2人车队"; +} +.control-box .btn-clear-data::before{ + content: "🗑️清除数据"; +} +.control-box .btn-swap-AB-team::before{ + content: "🔄交换AB队"; +} +.control-box .btn-show-mon-id::before{ + content: "⬜隐藏怪物ID"; +} +.not-show-mon-id .control-box .btn-show-mon-id::before{ + content: "🆔显示怪物ID"; +} +.show-mon-skill-cd .control-box .btn-show-mon-skill-cd::before{ + content: "⬜隐藏已满技能冷却"; +} +.control-box .btn-show-mon-skill-cd::before{ + content: "❄️显示已满技能冷却"; +} +.team-info .tIf-total-hp::before{ + content: "总HP(队伍觉醒和徽章):"; +} +.team-info .tIf-total-rcv::before{ + content: "总回复(队伍觉醒和徽章):"; +} + +.setting-box .row-mon-id .open-search::before{ + content: "简易搜索"; +} +.search-box::before{ + content: "▼搜索怪物"; +} +.search-box .attrs .attr-list-1::before{ + content: "属性 1"; +} +.search-box .attrs .attr-list-2::before{ + content: "属性 2"; +} +.search-box .attrs .fix-main-color-label::after{ + content: "限制属性 1 为主属性,属性 2 为副属性"; +} +.attrs .attr-all::before{ + content: "不限"; +} +.attrs .attr-none::before{ + content: "无"; +} +.search-box .types-div::before{ + content: "类型(OR)"; +} +.search-box .awoken-div::before{ + content: "觉醒(AND)(提示:点击数字可减少数值)"; +} +.search-box .sawoken-div::before{ + content: "超觉醒(OR)"; +} +.control-div .search-start::before{ + content: "🔍开始搜索"; +} +.control-div .search-clear::before{ + content: "清空搜索"; +} +.control-div .search-close::before{ + content: "关闭搜索"; +} +.edit-box .monsterinfo-box .monster-name{ + font-family: "Microsoft Yahei","Source Han Sans",Arial, Helvetica, sans-serif; + font-weight: bold; +} +.spColor{ + color: #ff3600; +} +/*Some icons, style different from the Japanese version*/ +.awoken-46, +.awoken-47 +{ + background-position-x: -64px; +} +.badge-0 +{ + background-position-x: -72px; +} \ No newline at end of file diff --git a/languages/zh-dev.js b/languages/zh-dev.js new file mode 100644 index 00000000..74dc6b1d --- /dev/null +++ b/languages/zh-dev.js @@ -0,0 +1,379 @@ +document.title = solo?'智龙迷城单人队伍图制作工具':'智龙迷城协力队伍图制作工具'; + +//高级技能解释 +function parseSkillDescription(skill) +{ + const id = skill.id; + if (id == 0) return ""; + const type = skill.type; + const sk = skill.params; + let str = null; + + //珠子名数组 + const attrsName = ["火","水","木","光","暗","回复","废","毒","剧毒","炸弹"]; + //类型名数组 + const typeName = ["进化","平衡","体力","回复","龙","神","攻击","恶魔","机械","特别保护","10","11","觉醒","13","强化","卖钱"]; + //觉醒名数组 + const awokenName = ["HP+","攻击+","回复+","火盾","水盾","木盾","光盾","暗盾","自回","防封","防暗","防废","防毒","火+","水+","木+","光+","暗+","手指","心解","SB","火横","水横","木横","光横","暗横","U","SX","心+","协力","龙杀","神杀","恶魔杀","机杀","平衡杀","攻击杀","体力杀","回复杀","进化杀","觉醒杀","强化杀","卖钱杀","7c","5色破防","心追","全体HP","全体回复","破无效","武器觉醒","方块心追","5色溜","大防封","大手指","防云","防封条","大SB","满血强化","下半血强化","L盾","L解锁","10c","c珠","语音","奖励增加","HP-","攻击-","回复-","大防暗","大防废","大防毒","掉废","掉毒"]; + const ClumsN = ["左边第1竖列","左边第2竖列","左边第3竖列","右边第3竖列","右边第2竖列","右边第1竖列"]; + const RowsN = ["最上1横行","上方第2横行","中间横行","下方第2横行","最下1横行"]; + //返回属性名 + function attrN(i){return attrsName[i] || ("未知属性" + i);} + //返回类型名 + function typeN(i){return typeName[i] || ("未知类型" + i);} + //返回觉醒名 + function awokenN(i){return awokenName[i-1] || ("未知觉醒" + i);} + //从二进制的数字中获得布尔值数组 + function getBooleanFromBinary(num,reverse=true) + { /*num是输入的数字,2的N次方在2进制下表示1后面跟着N个0。 + 如果num和2的N次方同时存在某位1,则返回这个数,逻辑上转换为true。*/ + let arr = num.toString(2).split("").map(c=>{return parseInt(c);}); + if (reverse) arr.reverse(); + return arr; + } + //从二进制的数字中获得有哪些内容 + function getNamesFromBinary(num,dataArr) + { /*num是输入的数字,2的N次方在2进制下表示1后面跟着N个0。 + 如果num和2的N次方同时存在某位1,则返回这个数,逻辑上转换为true。 + filter就可以返回所有有这个数的数据*/ + var results = dataArr.filter(function(pn,pi){ + return num & Math.pow(2,pi); //Math.pow(x,y)计算以x为底的y次方值 + }); + return results; + } + const nb = getNamesFromBinary; //化简名称 + //从二进制(10进制保存)的数字中获得有哪些珠子 + function binPns(b) + { /*b是输入的数字,比如10进制465转二进制=>111010001 + 然后从地位到高位表示火水木光暗…… + 用逻辑运算AND序号来获得有没有这个值*/ + return getNamesFromBinary(b,attrsName); + } + //从二进制的数字中获得有哪些列(colum) + function binClum(b) + { + return getNamesFromBinary(b,ClumsN); + } + //从二进制的数字中获得有哪些行(row) + function binRows(b) + { + return getNamesFromBinary(b,RowsN); + } + + let strArr = null; + switch(type) + { + case 0: + str = "对敌方全体造成自身攻击力×" + sk[1]/100 + "倍的" + attrN(sk[0]) + "属性伤害"; + break; + case 1: + str = "对敌方全体造成" + sk[1] + "的" + attrN(sk[0]) + "属性攻击"; + break; + case 2: + str = "对敌方1体造成自身攻击力×" + sk[0]/100 + "倍的伤害"; + break; + case 3: + str = sk[0] + "回合内受到的伤害减少" + sk[1] + "%"; + break; + case 4: + str = "使敌方全体中毒,每回合损失宠物自身攻击力×" + sk[0]/100 + "倍的HP"; + break; + case 5: + str = sk[0] + "秒内时间停止,可以任意移动宝珠"; + break; + case 6: + str = "敌人的HP减少" + sk[0] + "%"; + break; + case 8: + str = "回复" + sk[0] + "HP"; + break; + case 9: + str = attrN(sk[0]) + "变为" + attrN(sk[1] || 0); + break; + case 10: + str = "全版刷新"; + break; + case 11: + str = attrN(sk[0]) + "属性宠物的攻击力×" + sk[1]/100 + "倍"; + break; + case 12: + str = "消除宝珠的回合,以自身攻击力×" + sk[0]/100 + "倍的伤害追打敌人"; + break; + case 13: + str = "消除宝珠的回合,回复自身回复力×" + sk[0]/100 + "倍的HP"; + break; + case 14: + str = "如当前HP在HP上限的"+sk[0]+"%~"+sk[1]+"%的话,受到单一次致命攻击时,将会以1点HP生还"; + break; + case 15: + str = "操作时间演延长" + sk[0]/100 + "秒"; + break; + case 16: + str = "受到的所有伤害减少" + sk[0] + "%"; + break; + case 17: + str = "受到的" +attrN(sk[0])+ "属性伤害减少" + sk[1] + "%"; + break; + case 18: + str = "将敌人的攻击延迟" + sk[0] + "回合"; + break; + case 19: + str = sk[0] + "回合内敌方防御力减少" + sk[1] + "%"; + break; + case 20: //单色A转B,C转D + strArr = []; + for (var ai=0;ai=0) + {strArr = sk.slice(6,sk.indexOf(1,-1));} + str = "全画面的宝珠变成" + strArr.map((o)=>{return attrN(o);}).join("、"); + break; + case 84: + str = "HP"+(sk[3]?("减少"+ sk[3] +"%"):"变为1")+",对敌方1体造成自身攻击力×" + (sk[1]!=sk[2]?(sk[1]/100+"~"+sk[2]/100):sk[1]/100) + "倍的" + attrN(sk[0]) + "属性伤害"; + break; + case 85: + str = "HP减少"+ sk[3] +"%,对敌方全体造成自身攻击力×" + (sk[1]!=sk[2]?(sk[1]/100+"~"+sk[2]/100):sk[1]/100) + "倍的" + attrN(sk[0]) + "属性伤害"; + break; + case 87: + str = "HP变为1,,对敌方全体造成"+sk[1]+"点"+attrN(sk[0])+"属性伤害"; + break; + case 88: + str = sk[0] + "回合内" + typeN(sk[1]) + "类型的攻击力×"+ sk[2]/100 + "倍"; + break; + case 90: + strArr = sk.slice(1,sk.length-1); + str = sk[0] + "回合内" + strArr.map(attr => {return attrN(attr);}).join("、") + "属性的攻击力×"+ sk[sk.length-1]/100 + "倍"; + break; + case 92: + strArr = sk.slice(1,sk.length-1); + str = sk[0] + "回合内" + strArr.map(type => {return typeN(type);}).join("、") + "类型的攻击力×"+ sk[sk.length-1]/100 + "倍"; + break; + case 110: + str = "根据余下HP对敌方"+(sk[0]?"1":"全")+"体造成"+attrN(sk[1])+"属性伤害(100%HP时为自身攻击力的"+sk[2]/100+"倍,1HP时为自身攻击力的"+sk[3]/100+"倍)"; + break; + case 115: + str = `对敌方全体造成自身攻击力×${sk[1]/100}倍的${attrN(sk[0])}属性伤害,并回复伤害${sk[2]}%的HP`; + break; + case 116: //多内容主动技能 + str = "按顺序组合发动如下主动技能:"; + break; + case 118: //随机内容主动技能 + str = "随机发动如下主动技能:"; + break; + case 117: + strArr = []; + if(sk[1]>0) strArr.push(`回复宠物自身回复力x${sk[1]/100}倍的HP`); + if(sk[3]) strArr.push(`回复HP上限${sk[3]}%的HP`); + if(sk[2]) strArr.push(`回复${sk[2]}HP`); + if(sk[0]>0) strArr.push("封锁状态减少" + sk[0] + "回合"); + if(sk[4]>0) strArr.push("觉醒无效状态减少" + sk[4] + "回合"); + str = strArr.join(","); + break; + case 126: + str = sk[7] +"回合内" + binPns(sk[6]).join("、") + "珠的掉落率提高"+ sk[9] + "%"; + if (sk[7] != sk[8]) str += "还有未知sk[8]"; + break; + case 127: //生成竖列 + var argArr = sk.slice(6); //获取6开始的参数 + var arrT = []; + for (var ai=0;ai {return "
  • " + parseSkillDescription(Skills[subSkill]) + "
  • ";}).join(""); + str += ""; + break; + case 140: + str = binPns(sk[6]).join("、") + "宝珠强化(每颗强化珠伤害/回复增加"+sk[7]+"%)"; + break; + case 141: + str = "随机生成" + binPns(sk[7]).join("、") + "珠各"+ sk[6] + "个"; + if (sk[7] != sk[8]) str += "还有未知sk[8]"; + break; + case 144: + str = "对敌方全体造成"+binPns(sk[6]).join("、")+"属性总攻击力×" + sk[7]/100 + "倍的" + attrN(sk[9]||0) + "属性伤害"; + if (sk[8]>0) str += "还有未知sk[8]"; + break; + case 146: + str = "自身以外的宠物技能CD减少"+ (sk[6]!=sk[7]?(sk[6]+"~"+sk[7]):sk[6])+"回合"; + break; + case 152: + str = "将"+ binPns(sk[6]).join("、") + "宝珠锁定"; + if (sk[7]!=42) str += "还有未知sk[7]"; + break; + case 153: + str = "敌人全体变为"+ attrN(sk[6]) + "属性。(" +(sk[7]?"不":"")+"受防护盾的影响)"; + break; + case 154: + str = binPns(sk[6]).join("、") + "珠变为"+ binPns(sk[7]).join("、"); + break; + case 156: //宝石姬技能 + if (sk[10]==2) + str = sk[6] + "回合内,根据队伍内觉醒技能"+awokenN(sk[7])+"的数目提升所有属性的攻击力,每个觉醒可以提升"+(sk[11]-100)+"%"; + else if (sk[10]==3) + str = sk[6] + "回合内,根据队伍内觉醒技能"+awokenN(sk[7])+"的数目减少收到的伤害,每个觉醒可以减少"+sk[11]+"%"; + else + str = "156宝石姬技能,未知buff类型sk[10]"; + if (sk[8]>0) str += "还有未知sk[8]"; + if (sk[9]>0) str += "还有未知sk[9]"; + break; + case 160: + str = sk[0] + "回合内,结算时增加"+sk[1]+"COMBO"; + break; + case 167: + //"相連消除5個或以上的火寶珠或光寶珠時攻擊力和回復力4倍,每多1個+1倍,最大7個時6倍;" + str = `相连消除${sk[1]}个或以上${nb(sk[0],attrsName).join("或")}宝珠时`; + if (sk[2]==sk[3] && sk[4] == sk[5]) + { + str += `攻击力和回复力${sk[2]/100}倍`; + if (sk[4]>0) + { + str += `,每多1个+${sk[4]/100}倍`; + } + if (sk[6]>0) + { + str += `,最大${sk[6]}个时${((sk[6]-sk[1])*sk[4]+sk[2])/100}倍`; + } + }else + { + if (sk[2]>0) + { + str += `,攻击力${sk[2]/100}倍`; + if (sk[4]>0) + { + str += `,每多1个+${sk[4]/100}倍`; + } + if (sk[6]>0) + { + str += `,最大${sk[6]}个时${((sk[6]-sk[1])*sk[4]+sk[2])/100}倍`; + } + } + if (sk[3]>0) + { + str += `,回复力${sk[3]/100}倍`; + if (sk[5]>0) + { + str += `,每多1个+${sk[5]/100}倍`; + } + if (sk[6]>0) + { + str += `,最大${sk[6]}个时${((sk[6]-sk[1])*sk[5]+sk[3])/100}倍`; + } + } + } + break; + case 172: + str = "解锁所有宝珠"; + break; + case 176: + //●◉○◍◯ + var table = [sk[0],sk[1],sk[2],sk[3],sk[4]]; + str = "以如下形状生成" + attrN(sk[5]||0) + "宝珠
    "; + str += table.map(r=>{ + var rArr = []; + for(var c=0;c<=5;c++) + { + rArr.push(r & Math.pow(2,c)?"●":"○"); + } + return rArr.join(""); + }).join("
    "); + break; + case 173: + strArr = []; + if (sk[1]) strArr.push("属性吸收"); + if (sk[2]) strArr.push("连击吸收?目前是猜测"); + if (sk[3]) strArr.push("伤害吸收"); + str = sk[0] + "回合内敌人的" + strArr.join("、") + "无效化"; + break; + case 184: + str = sk[0] + "回合内,天降的宝珠不会产生COMBO"; + break; + case 180: + str = sk[0] + "回合内," + sk[1] + "%概率掉落强化宝珠"; + break; + case 186: + str = '版面变为【7×6】'; + strArr =[]; + if (sk[0]) {strArr.push(nb(sk[0],attrsName).join("、") + "属性");} + if (sk[1]) {strArr.push(nb(sk[1],typeName).join("、") + "类型");} + if (strArr.length) str += strArr.join("和") + "宠物的"; + strArr =[]; + if (sk[2]) {strArr.push("HP " + sk[2]/100 + "倍");} + if (sk[3]) {strArr.push("攻击力 " + sk[3]/100 + "倍");} + if (sk[4]) {strArr.push("回复力 " + sk[4]/100 + "倍");} + str += strArr.join("、") + "。"; + break; + case 188: + str = "对敌方1体造成" + sk[0] + "点无视防御的固定伤害(×多次)"; + break; + case 191: + str = sk[0] + "回合内可以贯穿伤害无效盾"; + break; + case 195: + str = "HP减少"+ sk[0] + "%"; + break; + case 196: + str = "无法消除宝珠状态减少"+ sk[0] + "回合"; + break; + default: + str = "未知的技能类型" + type + "(No." + id + ")"; + const copySkill = JSON.parse(JSON.stringify(skill)); + copySkill.params = copySkill.params.map(p=>{return [p,getBooleanFromBinary(p).join("")];}); + console.log("未知的技能类型",copySkill); + break; + } + return str; +} \ No newline at end of file diff --git a/script.js b/script.js index 18e013d1..ef8e5911 100644 --- a/script.js +++ b/script.js @@ -1565,13 +1565,6 @@ function editBoxChangeMonId(id) latentDom.classList.add("unselected-latent"); } } - //将怪物的文字介绍解析为HTML - function descriptionToHTML(str) - { - str = str.replace("\n","
    "); - str = str.replace(/\^(\w+)\^(.+)\^p/igm,'$2'); - return str; - } //怪物主动技能 const rowSkill = settingBox.querySelector(".row-mon-skill"); const skillBox = rowSkill.querySelector(".skill-box"); @@ -1586,7 +1579,7 @@ function editBoxChangeMonId(id) fragment.appendChild(skillBox); skillTitle.innerHTML = descriptionToHTML(skill.name); - skillDetail.innerHTML = descriptionToHTML(skill.description); + skillDetail.innerHTML = parseSkillDescription(skill); skillLevel.max = skill.maxLevel; skillLevel.value = skill.maxLevel; skillLevel_Max.value = skill.maxLevel; @@ -1605,7 +1598,7 @@ function editBoxChangeMonId(id) fragment.appendChild(lskillBox); lskillTitle.innerHTML = descriptionToHTML(leaderSkill.name); - lskillDetail.innerHTML = descriptionToHTML(leaderSkill.description); + lskillDetail.innerHTML = parseSkillDescription(leaderSkill); rowLederSkill.appendChild(fragment); diff --git a/universal_function.js b/universal_function.js index 0ecd0971..2e279947 100644 --- a/universal_function.js +++ b/universal_function.js @@ -86,7 +86,7 @@ function usedHole(latent) return previous + (current>= 12?2:1); },0); } -//计算队伍中有多少个该觉醒 +//计算所有队伍中有多少个该觉醒 function awokenCountInFormation(formationTeam,ak,solo) { var allAwokenCount = formationTeam.reduce(function(fc,fm){ @@ -94,7 +94,7 @@ function awokenCountInFormation(formationTeam,ak,solo) },0); return allAwokenCount; } -//计算队伍中有多少个该觉醒 +//计算单个队伍中有多少个该觉醒 function awokenCountInTeam(team,awokenIndex,solo) { var formationAwokenCount = team.reduce(function(tc,tm,isAssist){ @@ -250,4 +250,16 @@ function searchCards(cards,attr1,attr2,fixMainColor,types,awokens,sawokens) res = res.filter(c=>{return sawokens.some(sa=>{return c.superAwakenings.indexOf(sa)>=0;});}); } return res; +} +//将怪物的文字介绍解析为HTML +function descriptionToHTML(str) +{ + str = str.replace("\n","
    "); + str = str.replace(/\^(\w+)\^(.+)\^p/igm,'$2'); + return str; +} +//默认的技能解释的显示行为 +function parseSkillDescription(skill) +{ + return descriptionToHTML(skill.description); } \ No newline at end of file