《小冰游戏战斗数值计算》

前言

之前由于缺少数据,只是简单分析了下大佬@Yui 写的强壮地代码(oh~yes♂)

文章连接: 《小冰游戏战斗逻辑详解》原来你也玩。。。

现在,我已拿到了所有数据,那么...

image.png

战斗!爽!

userInfo中配置你的等级以及装备数据,数据可以从小冰游戏的控制台获取:

image.png

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 积分后可见