count-wins-fe-heroes

node v6.17.1
version: 0.1.0
endpointsharetweet
var R = require('ramda'); var stats = require('fire-emblem-heroes-stats@0.7.6'); var calculator = require('fire-emblem-heroes-calculator@0.7.6'); /** * Determine who wins, in a battle to the death! */ function doesAttackerWin(attacker, defender) { // initial states var attackerHp = calculator.getStat(attacker, 'hp'); var attackerSpecialCharge = 0; var defenderHp = calculator.getStat(defender, 'hp'); var defenderSpecialCharge = 0; while (!(attackerHp === 0 || defenderHp === 0)) { var result = calculator.calculateResult( { ...attacker, initialHpMissing: calculator.getStat(attacker, 'hp') - attackerHp, initialSpecialCharge: attackerSpecialCharge, }, { ...defender, initialHpMissing: calculator.getStat(defender, 'hp') - defenderHp, initialSpecialCharge: defenderSpecialCharge, }, ); // update state for next round attackerHp = result.attackerHpRemaining; // TODO: attackerSpecialCharge = ??? defenderHp = result.defenderHpRemaining; // TODO: defenderSpecialCharge = ??? } if (attackerHp === 0) { return false; } return true; } var Anna = calculator.getDefaultInstance('Anna'); var Sharena = calculator.getDefaultInstance('Sharena'); doesAttackerWin(Anna, Sharena);
var allDefaultInstances = R.map( hero => calculator.getDefaultInstance(hero.name), stats.getReleasedHeroes() ); function countWinsAsAttacker(heroInstance) { var total = allDefaultInstances.length; var wins = R.compose( R.reduce((winCount, doesWin) => doesWin ? winCount + 1 : winCount, 0), R.map(opponent => doesAttackerWin(heroInstance, opponent)) )(allDefaultInstances); return wins; }
countWinsAsAttacker(calculator.getDefaultInstance('Takumi'));
countWinsAsAttacker(calculator.getDefaultInstance('Olwen'));
function countWinsAsDefender(heroInstance) { var total = allDefaultInstances.length; var wins = R.compose( R.reduce((winCount, doesWin) => doesWin ? winCount + 1 : winCount, 0), R.map(opponent => doesAttackerWin(opponent, heroInstance)) )(allDefaultInstances); return wins; }
countWinsAsDefender(calculator.getDefaultInstance('Takumi'));
module.exports = { asAttacker: countWinsAsAttacker, asDefender: countWinsAsDefender, };
Loading…

no comments

    sign in to comment