109 lines
6.3 KiB
JavaScript
109 lines
6.3 KiB
JavaScript
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;
|