Spaces:
Running
Running
; | |
const assert = require('./../../assert'); | |
const common = require('./../../common'); | |
let battle; | |
describe("Accuracy", () => { | |
afterEach(() => { | |
battle.destroy(); | |
}); | |
it(`should round half down when applying a modifier`, () => { | |
battle = common.createBattle([ | |
[{ species: 'Butterfree', ability: 'compoundeyes', moves: ['sleeppowder'] }], | |
[{ species: 'Beldum', moves: ['poltergeist'] }], | |
]); | |
battle.onEvent('Accuracy', battle.format, accuracy => { | |
assert.equal(accuracy, 98, 'CompoundEyes Sleep Powder should be 98% accurate'); | |
}); | |
battle.makeChoices(); | |
battle = common.createBattle([ | |
[{ species: 'Butterfree', ability: 'victorystar', moves: ['fireblast'] }], | |
[{ species: 'Regirock', moves: ['sleeptalk'] }], | |
]); | |
battle.onEvent('Accuracy', battle.format, accuracy => { | |
assert.equal(accuracy, 94, 'Victory Star Fire Blast should be 94% accurate'); | |
}); | |
battle.makeChoices(); | |
battle = common.createBattle([ | |
[{ species: 'Butterfree', item: 'widelens', moves: ['fireblast'] }], | |
[{ species: 'Regirock', moves: ['sleeptalk'] }], | |
]); | |
battle.onEvent('Accuracy', battle.format, accuracy => { | |
assert.equal(accuracy, 93, 'Wide Lens Fire Blast should be 93% accurate'); | |
}); | |
battle.makeChoices(); | |
}); | |
it(`should chain modifiers in order of the Pokemon's raw speed`, () => { | |
battle = common.createBattle({ gameType: 'doubles' }, [[ | |
{ species: 'Mewtwo', ability: 'victorystar', moves: ['gravity', 'sleeptalk', 'sandattack'] }, | |
{ species: 'Charizard', ability: 'compoundeyes', moves: ['sleeptalk', 'fireblast'] }, | |
], [ | |
{ species: 'Bonsly', ability: 'tangledfeet', moves: ['doubleteam', 'sleeptalk'] }, | |
{ species: 'Pyukumuku', ability: 'noguard', moves: ['confuseray', 'sandattack', 'sleeptalk'] }, | |
]]); | |
battle.makeChoices('move sandattack -2, move sleeptalk', 'move doubleteam, move sandattack 2'); | |
battle.makeChoices('auto', 'move sleeptalk, move confuseray -1'); | |
battle.onEvent('Accuracy', battle.format, (accuracy, target, source, move) => { | |
if (move.id !== 'fireblast') return; | |
assert.equal(accuracy, 51); | |
}); | |
battle.makeChoices('move gravity, move fire blast 1', 'move sleeptalk, move sleeptalk'); | |
// Changing the Pokemon's Speeds around changes the chaining order, which affects the result | |
battle = common.createBattle({ gameType: 'doubles' }, [[ | |
{ species: 'Bonsly', ability: 'victorystar', moves: ['gravity', 'sleeptalk', 'sandattack'] }, | |
{ species: 'Charizard', ability: 'compoundeyes', moves: ['sleeptalk', 'fireblast'] }, | |
], [ | |
{ species: 'Mewtwo', ability: 'tangledfeet', moves: ['doubleteam', 'sleeptalk'] }, | |
{ species: 'Pyukumuku', ability: 'noguard', moves: ['confuseray', 'sandattack', 'sleeptalk'] }, | |
]]); | |
battle.makeChoices('move sandattack -2, move sleeptalk', 'move doubleteam, move sandattack 2'); | |
battle.makeChoices('auto', 'move sleeptalk, move confuseray -1'); | |
battle.onEvent('Accuracy', battle.format, (accuracy, target, source, move) => { | |
if (move.id !== 'fireblast') return; | |
assert.equal(accuracy, 50); | |
}); | |
battle.makeChoices('move gravity, move fire blast 1', 'move sleeptalk, move sleeptalk'); | |
}); | |
}); | |