2022-10-25 14:52:20 +08:00

109 lines
6.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

function jsRound(sum,x) {
return sum.toFixed(x)
}
function jsMax() {
}
class FormulaService {
constructor(session) {
}
//英雄NFT幸运值
Hero_Advanced_Lucky_Value(hero){
//ROUND((0.0354*英雄NFT阶数^5-0.8464*英雄NFT阶数^4+10.907*英雄NFT阶数^3 -48.868*英雄NFT阶数^2+312.18*英雄NFT阶数-80)/10,1)*10
return jsRound((0.0354*Math.pow(hero.quality,5)-0.8464*Math.pow(hero.quality,4)+10.907*Math.pow(hero.quality,3)-48.868*Math.pow(hero.quality,2)+312.18*hero.quality-80)/10,1)*10;
}
//英雄NFT最大体力值
Hero_NFT_Maximum_Physical_Strength(hero){
//英雄NFT幸运值*ROUND(1.1714+0.0286*当前英雄NFT阶数,3)
return this.Hero_Advanced_Lucky_Value(hero)*jsRound(1.1714+0.0286*hero.quality,3);
}
//每日英雄体力值衰减百分比
Hero_PSA_Value(hero) {
//MAX(0,ROUND((Hero_Payback_Period-Hero_Attenuation_Parameter* Hero_Labor_Value)/((1-Hero_Attenuation_Parameter/2)* Hero_Payback_Period^2)/ROUND(1.1714+0.0286*英雄阶数,3),4))*(1+0.1*ROUND(SIN(Hero_Labor_Value),2))
return Math.max(0,jsRound((this.Hero_Payback_Period(hero)-this.Hero_Attenuation_Parameter(hero)*this.Hero_Labor_Value(hero))/((1-this.Hero_Attenuation_Parameter(hero)/2)*Math.pow(this.Hero_Payback_Period(hero),2))/jsRound(1.1714+0.0286*hero.quality,3),4))*(1+0.1*jsRound(Math.sin(this.Hero_Labor_Value(hero)),2));
}
//英雄回本周期(参数单位:天)
Hero_Payback_Period(hero){
//ROUND(-0.019*英雄阶数^3+0.1884*英雄阶数^2+11.685*英雄阶数+48.765,0)
return Math.round(-0.019*Math.pow(hero.quality,3)+0.1884*Math.pow(hero.quality,2)+11.685*hero.quality+48.765);
}
//英雄衰减参数
Hero_Attenuation_Parameter(hero){
//ROUND(-0.000015*英雄阶数^3+0.0008*英雄阶数^2-0.02325*英雄阶数+0.606,3)
let sum = -0.000015*Math.pow(hero.quality,3)+0.0008*Math.pow(hero.quality,2)-0.02325*hero.quality+0.606;
return sum.toFixed(3);
}
//英雄劳力值
Hero_Labor_Value(hero){
return hero.labour;
}
//枪械NFT幸运值
Weapon_Advanced_Lucky_Value(weapon){
//ROUND((0.0354*枪械NFT阶数^5-0.8464*枪械NFT阶数^4+10.907*枪械NFT阶数^3 -48.868*枪械NFT阶数^2+312.18*枪械NFT阶数-80)/10,1)*3
return jsRound((0.0354*Math.pow(weapon.quality,5)-0.8464*Math.pow(weapon.quality,4)+10.907*Math.pow(weapon.quality,3)-48.868*Math.pow(weapon.quality,2)+312.18*weapon.quality-80)/10,1)*3;
}
//枪械NFT最大耐久度
Weapon_NFT_Maximum_Durability(weapon){
//枪械NFT幸运值*ROUND(1.1714+0.0286*当前枪械NFT阶数,3)
return this.Weapon_Advanced_Lucky_Value(weapon)*jsRound(1.1714+0.0286*weapon.quality,3);
}
//每日武器耐久度衰减百分比
Weapon_DA_Value(weapon){
//MAX(0,ROUND((Weapon_Payback_Period-Weapon_Attenuation_Parameter* Weapon_Labor_Value)/((1-Weapon_Attenuation_Parameter/2)* Weapon_Payback_Period ^2)/ROUND(1.1714+0.0286*武器阶数,3),4))*(1+0.1*ROUND(SIN(Weapon_Labor_Value),2))
return Math.max(0,jsRound((this.Weapon_Payback_Period(weapon)-this.Weapon_Attenuation_Parameter(weapon)*this.Weapon_Labor_Value(weapon))/((1-this.Weapon_Attenuation_Parameter(weapon)/2)*Math.pow(this.Weapon_Payback_Period(weapon),2))/jsRound(1.1714+0.0286*weapon.quality,3),4))*(1+0.1*jsRound(Math.sin(this.Weapon_Labor_Value(weapon)),2));
}
//枪械回本周期(参数单位:天)
Weapon_Payback_Period(weapon){
//ROUND(-0.019*武器阶数^3+0.1884*武器阶数^2+11.685*武器阶数+48.765,0)
return Math.round(-0.019*Math.pow(weapon.quality,3)+0.1884*Math.pow(weapon.quality,2)+11.685*weapon.quality+48.765);
}
//枪械衰减参数
Weapon_Attenuation_Parameter(weapon){
//ROUND(-0.000015*武器阶数^3+0.0008*武器阶数^2-0.02325*武器阶数+0.606,3)
return jsRound(-0.000015*Math.pow(weapon.quality,3)+0.0008*Math.pow(weapon.quality,2)-0.02325*weapon.quality+0.606,3);
}
//武器劳力值
Weapon_Labor_Value(weapon){
return weapon.labour;
}
// //芯片幸运值
// Chip_Lucky_Value(chip){
// //芯片幸运值=SIGN(芯片星数>4)*ROUND( 0.00419*芯片星数^5-0.0705*芯片星数^4 +0.24*芯片星数^3 +8.5*芯片星数^2-39.9*芯片星数+38,1)
// return (chip.chip_grade>4?1:0)*jsRound(0.00419*Math.pow(chip.chip_grade,5)-0.0705*Math.pow(chip.chip_grade,4)+0.24*Math.pow(chip.chip_grade,3)+8.5*Math.pow(chip.chip_grade,2)-39.9*chip.chip_grade+38,1);
// }
// //芯片体力值(英雄芯片和枪械芯片一样的)
// Hero_Chip_NFT_Maximum_Physical_Strength(chip){
// //芯片体力值命名Hero_Chip_NFT_Maximum_Physical_Strength = SIGN(英雄芯片NFT星数>4)*( 英雄芯片NFT幸运值*ROUND(1+0.04*英雄芯片NFT星数,3))
// return (chip.chip_grade>4?1:0)*(chip.*jsRound(1+0.04*chip.chip_grade,3));
// }
//每日芯片体力值衰减百分比
Chip_PSA_Value(chip){
//Hero_Chip_PSA_Value=MAX(0,ROUND((Chip_Payback_Period-Chip_Attenuation_Parameter* Hero_Chip_Labor_Value)/((1-Chip_Attenuation_Parameter /2)* Chip_Payback_Period ^2)/ROUND(1+0.04*英雄芯片星数,3),4))*(1+0.1*ROUND(SIN(Hero_Chip_Labor_Value),2))
let num = Math.max(0,jsRound((this.Chip_Payback_Period(chip)-this.Chip_Attenuation_Parameter(chip)*this.Chip_Labor_Value(chip))/((1-this.Chip_Attenuation_Parameter(chip)/2)*Math.pow(this.Chip_Payback_Period(chip),2))/jsRound(1+0.04*chip.chip_grade,3),4))*(1+0.1*jsRound(Math.sin(this.Chip_Labor_Value(chip)),2));
return jsRound(num,5);
}
//芯片回本周期(参数单位:天)
Chip_Payback_Period(chip){
//ROUND( -0.0095*芯片星数^3+0.0942*芯片星数^2+5.8425*芯片星数+24.7,0)
return jsRound(-0.0095*Math.pow(chip.chip_grade,3)+0.0942*Math.pow(chip.chip_grade,2)+5.8425*chip.chip_grade+24.7,0);
}
//芯片衰减参数
Chip_Attenuation_Parameter(chip){
//ROUND(-0.0000507*芯片星数^3+0.0024*芯片星数^2-0.0512*芯片星数+0.785,4)
return jsRound(-0.0000507*Math.pow(chip.chip_grade,3)+0.0024*Math.pow(chip.chip_grade,2)-0.0512*chip.chip_grade+0.785,4);
}
//芯片劳力值
Chip_Labor_Value(chip){
return chip.labour;
}
}
module.exports = FormulaService;