class GameValue {
/**
* 数据验证(金币)
*/
testGoldValue() {
console.log("等级", "仓库", "过关奖励", "塔升级消耗")
for (let level = 1; level <= 90; level++) {
console.log(
level
,this.goldWarehouse(level)
,this.goldPassReward(level)
,this.goldTowerUpgrade(level)
)
}
for (let level of [500, 1000, 5000, 10000]) {
console.log(
level
,this.goldWarehouse(level)
,this.goldPassReward(level)
,this.goldTowerUpgrade(level)
)
}
}
/**
* 生成通用的基础值
* level:关卡的等级或塔的等级
*/
goldBaseValue(level){
var cut = 10;
var x = parseInt(level/cut);
var value = ((((x+1)*5+level*5)+45)/500)*12*60;
return value;
}
/**
* 金币仓库总价值
* level: 当前关卡
*/
goldWarehouse(level) {
return Math.ceil(this.goldBaseValue(level)*8);
}
/**
* 通过关卡后金币奖励总数
* level: 当前关卡
*/
goldPassReward(level) {
return Math.ceil(this.goldBaseValue(level));
}
/**
* 防御塔升级的金币消耗
* levelTotal: 所有防御塔所有属性等级之和
*/
goldTowerUpgrade(levelTotal) {
return Math.ceil(this.goldBaseValue(levelTotal/12)*8/6);
}
_Cycle = 200;//每多少关数值增幅跃升
_IncreasePro = 0.05;//每关增加的比例
/**
* 得到最终攻击力或血量
* powerBase:1级攻击力或血量
* level:防御塔等级或怪物等级
*/
powerBaseValue(powerBase,level){
//取得周期间隔数
var c = Math.floor((level-1)/_Cycle);
//得到不同关卡的起点关卡
var l0 = Math.floor((level-1)/_Cycle)*_Cycle + 1;
//得到起点关卡的power值
var p0 = powerBase * Math.pow(_Cycle*_IncreasePro+1, c);
//得到最终的power
var p = p0 + (level-l0)*_IncreasePro*p0;
return p;
}
_TowerAttack = [30,20,20,20];//塔1级攻击力
/**
* 防御塔攻击力
* towerId: 防御塔ID
* level: 防御塔当前攻击等级
* stoneIncPro:魂石增加的攻击百分比
*/
towerAttack(towerId, level, stoneIncPro) {
//得到基础power
var powerBase = _TowerAttack[towerId];
var p = powerBaseValue(powerBase,level)*(1+stoneIncPro);
return p;
}
_TowerSpeed = [3,1,1,1];//塔1级攻击速度
_IncreaseSpeedPro1 = 0.001;//前201级每级的提升比例
_IncreaseSpeedPro2 = 0.0001;//前202-2201级每级的提升比例
_IncreaseSpeedPro3 = 0.00001;//前2202-22001级每级的提升比例
/**
* 防御塔攻速
* towerId: 防御塔ID
* level: 防御塔当前攻速等级
*/
towerSpeed(towerId, level) {
var s0 = _TowerSpeed[towerId];
var s = s0;
if(level<=201){
s = s0 + (_IncreaseSpeedPro1*(level-1))*s0;
}else if(level>201 && level<=2201){
s = s0 + (_IncreaseSpeedPro1*(201-1))*s0;
s = s + (_IncreaseSpeedPro2*(level-201))*s0;
}else{
s = s0 + (_IncreaseSpeedPro1*(201-1))*s0;
s = s + (_IncreaseSpeedPro2*(2201-201))*s0;
s = s + (_IncreaseSpeedPro3*(level-2201))*s0;
}
return s;
}
_TowerCrit = 750;//塔1级暴击
_IncreaseCritPro = 0.05;//每级增加的暴击(抗暴击)比例
/**
* 防御塔暴击
* towerId: 防御塔ID
* level: 防御塔当前暴击等级
*/
towerCrit(towerId, level) {
var c = _TowerCrit + (level-1)*_IncreaseCritPro*_TowerCrit;
return c;
}
_EnemyHealth = [500,1000,300,800,2500,5000,1500,4000,500,1000,300,800,2500,5000,1500,4000];//怪物1级血量
/**
* 敌人生命值
* enemyId: 敌人ID
* level: 当前关卡
*/
enemyHealth(enemyId, level) {
//得到基础power
var powerBase = _EnemyHealth[enemyId];
var p = powerBaseValue(powerBase,level);
return p;
}
_EnemyUnCrit = 5000;//怪物1级抗暴击
/**
* 敌人抗暴击
* enemyId: 敌人ID
* level: 当前关卡
*/
enemyUnCrit(enemyId, level) {
var u = _EnemyUnCrit + (level-1)*_IncreaseCritPro*_EnemyUnCrit;
return u;
}
}
new GameValue().testGoldValue()
console