重新写了大数格式输出
This commit is contained in:
parent
04726128e5
commit
f98dca832c
|
@ -23,4 +23,35 @@
|
|||
force_reload_data: "データの強制更新",
|
||||
}
|
||||
|
||||
//大数字缩短长度
|
||||
Number.prototype.bigNumberToString = function()
|
||||
{
|
||||
let numTemp = this.valueOf();
|
||||
if (!numTemp) return "0";
|
||||
const grouping = Math.pow(10, 4);
|
||||
const unit = ['','万','億','兆','京','垓'];
|
||||
const numParts = [];
|
||||
do{
|
||||
numParts.push(numTemp % grouping);
|
||||
numTemp = Math.floor(numTemp / grouping);
|
||||
}while(numTemp>0 && numParts.length<(unit.length-1))
|
||||
if (numTemp>0)
|
||||
{
|
||||
numParts.push(numTemp);
|
||||
}
|
||||
let numPartsStr = numParts.map((num,idx)=>{
|
||||
if (num > 0)
|
||||
{
|
||||
return (num < 1e3 ? "と" : "") + num.toLocaleString() + unit[idx];
|
||||
}else
|
||||
return "と";
|
||||
});
|
||||
|
||||
numPartsStr.reverse(); //反向
|
||||
let outStr = numPartsStr.join("");
|
||||
outStr = outStr.replace(/(^と+|と+$)/g,''); //去除开头的零
|
||||
outStr = outStr.replace(/と{2,}/g,'と'); //去除多个连续的零
|
||||
return outStr;
|
||||
}
|
||||
|
||||
localisation(localTranslating);
|
|
@ -1,5 +1,36 @@
|
|||
document.title = `智龙迷城${teamsCount}人队伍图制作工具`;
|
||||
|
||||
//大数字缩短长度
|
||||
Number.prototype.bigNumberToString = function()
|
||||
{
|
||||
let numTemp = this.valueOf();
|
||||
if (!numTemp) return "0";
|
||||
const grouping = Math.pow(10, 4);
|
||||
const unit = ['','万','亿','兆','京','垓'];
|
||||
const numParts = [];
|
||||
do{
|
||||
numParts.push(numTemp % grouping);
|
||||
numTemp = Math.floor(numTemp / grouping);
|
||||
}while(numTemp>0 && numParts.length<(unit.length-1))
|
||||
if (numTemp>0)
|
||||
{
|
||||
numParts.push(numTemp);
|
||||
}
|
||||
let numPartsStr = numParts.map((num,idx)=>{
|
||||
if (num > 0)
|
||||
{
|
||||
return (num < 1e3 ? "零" : "") + num.toLocaleString() + unit[idx];
|
||||
}else
|
||||
return "零";
|
||||
});
|
||||
|
||||
numPartsStr.reverse(); //反向
|
||||
let outStr = numPartsStr.join("");
|
||||
outStr = outStr.replace(/(^零+|零+$)/g,''); //去除开头的零
|
||||
outStr = outStr.replace(/零{2,}/g,'零'); //去除多个连续的零
|
||||
return outStr;
|
||||
}
|
||||
|
||||
//查找原先完整技能
|
||||
function findFullSkill(subSkill){
|
||||
const parentSkill = Skills.find(ss=>(ss.type === 116 || ss.type === 118 || ss.type === 138) && ss.params.includes(subSkill.id)) || subSkill;
|
||||
|
@ -230,7 +261,7 @@ function parseSkillDescription(skill)
|
|||
str = `对敌方全体造成自身攻击力×${sk[1]/100}倍的${attrN(sk[0])}属性伤害`;
|
||||
break;
|
||||
case 1:
|
||||
str = `对敌方全体造成${parseBigNumber(sk[1])}点${attrN(sk[0])}属性伤害`;
|
||||
str = `对敌方全体造成${sk[1].bigNumberToString()}点${attrN(sk[0])}属性伤害`;
|
||||
break;
|
||||
case 2:
|
||||
str = `对敌方1体造成自身攻击力×${sk[0]/100}${sk[1]&&sk[1]!=sk[0]?'~'+sk[1]/100:''}倍的自身属性伤害`;
|
||||
|
@ -344,7 +375,7 @@ function parseSkillDescription(skill)
|
|||
str = `受到敌人攻击时${sk[0]==100?"":`有${sk[0]}的几率`}进行受到伤害${sk[1]/100}倍的${attrN(sk[2])}属性反击`;
|
||||
break;
|
||||
case 42:
|
||||
str = `对${attrN(sk[0])}属性敌人造成${parseBigNumber(sk[2])}点${attrN(sk[1])}属性伤害`;
|
||||
str = `对${attrN(sk[0])}属性敌人造成${sk[2].bigNumberToString()}点${attrN(sk[1])}属性伤害`;
|
||||
break;
|
||||
case 43:
|
||||
str = `HP ${sk[0]==100 ?"全满":`${sk[0]}%以上`}时${sk[1]<100?`有${sk[1]}%的几率使`:""}受到的伤害减少${sk[2]}%`;
|
||||
|
@ -379,10 +410,10 @@ function parseSkillDescription(skill)
|
|||
str = `进入地下城时为队长的话,获得的金币×${sk[0]/100}倍`;
|
||||
break;
|
||||
case 55:
|
||||
str = `对敌方1体造成${parseBigNumber(sk[0])}点无视防御的固定伤害`;
|
||||
str = `对敌方1体造成${sk[0].bigNumberToString()}点无视防御的固定伤害`;
|
||||
break;
|
||||
case 56:
|
||||
str = `对敌方全体造成${parseBigNumber(sk[0])}点无视防御的固定伤害`;
|
||||
str = `对敌方全体造成${sk[0].bigNumberToString()}点无视防御的固定伤害`;
|
||||
break;
|
||||
case 58:
|
||||
str = `对敌方全体造成自身攻击力×${sk[1]/100}${sk[2]&&sk[2]!=sk[1]?'~'+sk[2]/100:''}倍的${attrN(sk[0])}属性伤害`;
|
||||
|
@ -461,11 +492,11 @@ function parseSkillDescription(skill)
|
|||
str = `HP ${(sk[3]?(`减少${100-sk[3]}%`):"变为1")},对敌方全体造成自身攻击力×${sk[1]/100}${sk[2]&&sk[2]!=sk[1]?'~'+sk[2]/100:''}倍的${attrN(sk[0])}属性伤害`;
|
||||
break;
|
||||
case 86:
|
||||
str = `HP ${(sk[3]?(`减少${100-sk[3]}%`):"变为1")},对敌方1体造成${parseBigNumber(sk[1])}点${attrN(sk[0])}属性伤害`;
|
||||
str = `HP ${(sk[3]?(`减少${100-sk[3]}%`):"变为1")},对敌方1体造成${sk[1].bigNumberToString()}点${attrN(sk[0])}属性伤害`;
|
||||
if (sk[2]) str += `未知 参数2 ${sk[2]}`;
|
||||
break;
|
||||
case 87:
|
||||
str = `HP ${(sk[3]?(`减少${100-sk[3]}%`):"变为1")},对敌方全体造成${parseBigNumber(sk[1])}点${attrN(sk[0])}属性伤害`;
|
||||
str = `HP ${(sk[3]?(`减少${100-sk[3]}%`):"变为1")},对敌方全体造成${sk[1].bigNumberToString()}点${attrN(sk[0])}属性伤害`;
|
||||
if (sk[2]) str += `未知 参数2 ${sk[2]}`;
|
||||
break;
|
||||
case 88:
|
||||
|
@ -562,7 +593,7 @@ function parseSkillDescription(skill)
|
|||
li.setAttribute("data-skillid", repeatSkill[0]);
|
||||
li.addEventListener("click",fastShowSkill);
|
||||
li.appendChild(parseSkillDescription(Skills[repeatSkill[0]]));
|
||||
li.appendChild(document.createTextNode(`×${repeatSkill.length}次(共${parseBigNumber(repeatDamage[0]*repeatSkill.length)})`));
|
||||
li.appendChild(document.createTextNode(`×${repeatSkill.length}次(共${(repeatDamage[0]*repeatSkill.length).bigNumberToString()})`));
|
||||
noRepeatSk = sk.filter(subSkill => Skills[subSkill].type !== 188);
|
||||
}else
|
||||
{
|
||||
|
@ -1166,7 +1197,7 @@ function parseSkillDescription(skill)
|
|||
if (sk[3] || sk[4] || sk[5]) str += "的"+getFixedHpAtkRcvString({hp:sk[3],atk:sk[4],rcv:sk[5]});
|
||||
break;
|
||||
case 179:
|
||||
str = `${sk[0]}回合内,每回合回复${sk[1]?`${parseBigNumber(sk[1])}点`:` HP 上限 ${sk[2]}%`}的 HP`;
|
||||
str = `${sk[0]}回合内,每回合回复${sk[1]?`${sk[1].bigNumberToString()}点`:` HP 上限 ${sk[2]}%`}的 HP`;
|
||||
if(sk[3] || sk[4])
|
||||
{
|
||||
str += `,并将`;
|
||||
|
@ -1207,7 +1238,7 @@ function parseSkillDescription(skill)
|
|||
if (sk[0] || sk[1]) str += getAttrTypeString(flags(sk[0]),flags(sk[1])) + "宠物的" + getFixedHpAtkRcvString({hp:sk[2],atk:sk[3],rcv:sk[4]});
|
||||
break;
|
||||
case 188: //多次单体固伤
|
||||
str = `对敌方1体造成${parseBigNumber(sk[0])}点无视防御的固定伤害`;
|
||||
str = `对敌方1体造成${sk[0].bigNumberToString()}点无视防御的固定伤害`;
|
||||
break;
|
||||
case 189:
|
||||
//解除寶珠的鎖定狀態;所有寶珠變成火、水、木、光;顯示3COMBO的轉珠路徑(只適用於普通地下城&3個消除)
|
||||
|
@ -1263,7 +1294,7 @@ function parseSkillDescription(skill)
|
|||
break;
|
||||
case 198:
|
||||
//以回復寶珠回復40000HP或以上時,受到的傷害減少50%
|
||||
str = `以回复宝珠回复${parseBigNumber(sk[0])}点或以上时`;
|
||||
str = `以回复宝珠回复${sk[0].bigNumberToString()}点或以上时`;
|
||||
if (sk[1] && sk[1] != 100) str += `所有宠物的${getFixedHpAtkRcvString({atk:sk[1]})}`;
|
||||
if (sk[2]) str += `,受到的伤害减少${sk[2]}%`;
|
||||
if (sk[3]) str += `,觉醒无效状态减少${sk[3]}回合`;
|
||||
|
@ -1285,10 +1316,10 @@ function parseSkillDescription(skill)
|
|||
}
|
||||
if (!atSameTime) str+=`${sk[1]}种属性以上`;
|
||||
else if(sk[0] == 31) str += `5色`;
|
||||
str += `同时攻击时,追加${parseBigNumber(sk[2])}点固定伤害`;
|
||||
str += `同时攻击时,追加${sk[2].bigNumberToString()}点固定伤害`;
|
||||
break;
|
||||
case 200:
|
||||
str = `相连消除${sk[1]}个或以上的${getOrbsAttrString(sk[0],true)}宝珠时,追加${parseBigNumber(sk[2])}点固定伤害`;
|
||||
str = `相连消除${sk[1]}个或以上的${getOrbsAttrString(sk[0],true)}宝珠时,追加${sk[2].bigNumberToString()}点固定伤害`;
|
||||
break;
|
||||
case 201:
|
||||
fullColor = sk.slice(0,4).filter(c=>c>0); //最多4串珠
|
||||
|
@ -1301,7 +1332,7 @@ function parseSkillDescription(skill)
|
|||
{//光寶珠有2COMBO或以上時
|
||||
str = `${nb(fullColor[0], attrsName).join("、")}宝珠有${sk[4]}串或以上时`;
|
||||
}
|
||||
if (sk[5]) str += `,追加${parseBigNumber(sk[5])}点固定伤害`;
|
||||
if (sk[5]) str += `,追加${sk[5].bigNumberToString()}点固定伤害`;
|
||||
break;
|
||||
case 202:
|
||||
fragment.appendChild(document.createTextNode("变身为"));
|
||||
|
@ -1395,24 +1426,6 @@ function parseSkillDescription(skill)
|
|||
//(skill.description.length?(descriptionToHTML(skill.description) + "<hr>"):"") + str
|
||||
return fragment;
|
||||
}
|
||||
//大数字缩短长度
|
||||
function parseBigNumber(number)
|
||||
{
|
||||
if (number === 0)
|
||||
{
|
||||
return number.toLocaleString();
|
||||
}else if (number % 1e8 === 0)
|
||||
{
|
||||
return (number / 1e8).toLocaleString() + " 亿";
|
||||
}else if (number % 1e4 === 0)
|
||||
{
|
||||
return (number / 1e4).toLocaleString() + " 万";
|
||||
}else
|
||||
{
|
||||
return number.toLocaleString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//增加特殊搜索模式
|
||||
(function() {
|
||||
|
|
|
@ -23,4 +23,35 @@
|
|||
force_reload_data: "強制刷新數據",
|
||||
}
|
||||
|
||||
//大數字縮短長度
|
||||
Number.prototype.bigNumberToString = function()
|
||||
{
|
||||
let numTemp = this.valueOf();
|
||||
if (!numTemp) return "0";
|
||||
const grouping = Math.pow(10, 4);
|
||||
const unit = ['','萬','億','兆','京','垓'];
|
||||
const numParts = [];
|
||||
do{
|
||||
numParts.push(numTemp % grouping);
|
||||
numTemp = Math.floor(numTemp / grouping);
|
||||
}while(numTemp>0 && numParts.length<(unit.length-1))
|
||||
if (numTemp>0)
|
||||
{
|
||||
numParts.push(numTemp);
|
||||
}
|
||||
let numPartsStr = numParts.map((num,idx)=>{
|
||||
if (num > 0)
|
||||
{
|
||||
return (num < 1e3 ? "零" : "") + num.toLocaleString() + unit[idx];
|
||||
}else
|
||||
return "零";
|
||||
});
|
||||
|
||||
numPartsStr.reverse(); //反向
|
||||
let outStr = numPartsStr.join("");
|
||||
outStr = outStr.replace(/(^零+|零+$)/g,''); //去除開頭的零
|
||||
outStr = outStr.replace(/零{2,}/g,'零'); //去除多個連續的零
|
||||
return outStr;
|
||||
}
|
||||
|
||||
localisation(localTranslating);
|
|
@ -58,18 +58,12 @@ Number.prototype.prefixInteger = function(length, useGrouping = false)
|
|||
minimumIntegerDigits: length
|
||||
});
|
||||
}
|
||||
//数字补前导0
|
||||
Number.prototype.parseBigNumber = function()
|
||||
//大数字缩短长度,默认返回本地定义字符串
|
||||
Number.prototype.bigNumberToString = function()
|
||||
{
|
||||
return this.toLocaleString();
|
||||
}
|
||||
|
||||
//大数字缩短长度,默认返回本地定义字符串
|
||||
function parseBigNumber(number)
|
||||
{
|
||||
return number.toLocaleString();
|
||||
}
|
||||
|
||||
//数组删除自己尾部的空元素
|
||||
Array.prototype.DeleteLatter = function(item = null)
|
||||
{
|
||||
|
|
|
@ -1778,7 +1778,7 @@ function initialize() {
|
|||
level: level
|
||||
};
|
||||
const needExp = calculateExp(tempMon);
|
||||
monLvExp.textContent = needExp ? needExp[0].parseBigNumber() + (level > 99 ? ` + ${needExp[1].parseBigNumber()}` : "") : "";
|
||||
monLvExp.textContent = needExp ? needExp[0].bigNumberToString() + (level > 99 ? ` + ${needExp[1].bigNumberToString()}` : "") : "";
|
||||
}
|
||||
editBox.reCalculateExp = reCalculateExp;
|
||||
//三维
|
||||
|
|
Loading…
Reference in New Issue