《小冰游戏战斗数值计算》
前言
之前由于缺少数据,只是简单分析了下大佬@Yui 写的强壮地代码(oh~yes♂)
文章连接: 《小冰游戏战斗逻辑详解》原来你也玩。。。
现在,我已拿到了所有数据,那么...
战斗!爽!
userInfo中配置你的等级以及装备数据,数据可以从小冰游戏的控制台获取:
monster中配置怪物的等级(最好是你想要越级的地图的等级上限),
配置完成,开始战斗!
getResult() {
let userInfo = {
name: '吴彦祖',
lv: 57,
equip: {
arms: {
name: '屠龙宝刀',
detail: '屠龙宝刀长约四尺,有百余斤重,锋利至极,无坚不摧,具备强力磁性能吸天下所有暗器。',
obtain: '商城',
type: 'arms',
atk: 100,
def: 0,
price: 1000000,
recovery: 100
},
fire: {
name: '帝炎',
type: 'fire',
detail: '曾有异火拥有灵智后,吞尽其他火焰,自命帝炎,成丹率增加200%,攻击力增加200%',
obtain: '未知',
atk: 2,
price: 0,
recovery: 0
},
armor: {
name: '玄铁甲',
detail: '铁匠用上古玄铁炼成的甲,好像很结实的样子。',
obtain: '商城',
type: 'armor',
atk: 0,
def: 15,
price: 3000,
recovery: 750
}
}
};
let monster = {
name: '天道',
lv: 70
};
if (monster.lv - userInfo.lv > 20) {
monster.atk = 9999999;
} else if (monster.lv - userInfo.lv > 15) {
monster.atk = parseInt(monster.lv * 20 + 100 * Math.random() * 28 + 4);
} else if (monster.lv - userInfo.lv > 10) {
monster.atk = parseInt(monster.lv * 12 + 50 * Math.random() * 21 + 3);
} else if (monster.lv - userInfo.lv > 7) {
monster.atk = parseInt(monster.lv * 8 + 20 * Math.random() * 14 + 2);
} else if (monster.lv - userInfo.lv > 3) {
monster.atk = parseInt(monster.lv * 7 + 10 * Math.random() * 7 + 1);
} else {
monster.atk = parseInt(monster.lv * 7);
}
this.battleWithMinster(userInfo, monster).then(res => {
if (!res.isWin) console.log(res);
});
},
battleWithMinster(userInfo, monster) {
return new Promise((resolve, reject) => {
let uatk = (userInfo.lv * 10 + (userInfo.equip.arms ? userInfo.equip.arms.atk : 0)) * (userInfo.equip.fire ? userInfo.equip.fire.atk + 1 : 1);
let udef = userInfo.lv * 10 + (userInfo.equip.armor ? userInfo.equip.armor.def : 0);
let uhp = 100 + userInfo.lv * 100;
let matk = monster.atk;
let mdef = monster.lv * 5;
let mhp = Math.floor(Math.random() * monster.lv + monster.lv * 100);
let round = 0;
let isWin = false;
let battleMsg = `一一一${userInfo.name} PK ${monster.name}一一一`;
do {
round++;
let hxyj = Math.random() * 100 > 70;
uhp = uhp - (matk > udef ? matk - udef : 0);
if (hxyj) {
mhp = mhp - (uatk > mdef ? uatk * 2 - mdef : 0);
} else {
mhp = mhp - (uatk > mdef ? uatk - mdef : 0);
}
battleMsg += `<br>round${round}:${userInfo.name}发动攻击,造成${hxyj ? uatk * 2 : uatk}点伤害!${monster.name}HP:${mhp}`;
battleMsg += `<br>${monster.name}发动攻击,造成${matk}点伤害!${userInfo.name}HP:${uhp}`;
} while (uhp > 0 && mhp > 0);
isWin = uhp > 0 ? true : false;
// console.log(battleMsg)
if (isWin) {
let exp = parseInt((monster.lv - userInfo.lv) * (monster.lv + 10) * 12 + (monster.lv + (Math.random() + 15)));
battleMsg += `<br>获得经验值${exp}`;
}
let cb = {
isWin: isWin,
battleMsg: battleMsg
};
resolve(cb);
});
},
测试地址在打赏区
13 打赏
打赏 6 积分后可见
-
游戏
羡慕会写脚本
成功还不好啊!
用自己的装备信息,多测几次,你要是嫌成功率太高了,就把这两个随机数改为1