Spaces:
Running
Running
; | |
const assert = require('./../../assert'); | |
const common = require('./../../common'); | |
let battle; | |
describe('Ice Face', () => { | |
afterEach(() => battle.destroy()); | |
it(`should block damage from one physical move per Hail`, () => { | |
battle = common.createBattle([[ | |
{ species: 'Eiscue', ability: 'iceface', moves: ['splash'] }, | |
], [ | |
{ species: 'Mewtwo', ability: 'pressure', moves: ['tackle', 'watergun', 'hail'] }, | |
]]); | |
const eiscue = battle.p1.active[0]; | |
assert.hurts(eiscue, () => battle.makeChoices('auto', 'move watergun')); | |
assert.false.hurts(eiscue, () => battle.makeChoices()); | |
assert.hurts(eiscue, () => battle.makeChoices()); | |
assert.false.hurts(eiscue, () => battle.makeChoices('auto', 'move hail')); | |
assert.false.hurts(eiscue, () => battle.makeChoices()); | |
assert.hurts(eiscue, () => battle.makeChoices()); | |
}); | |
it(`should not work while Transformed`, () => { | |
battle = common.createBattle([[ | |
{ species: 'Eiscue', ability: 'iceface', moves: ['transform'] }, | |
{ species: 'Wynaut', moves: ['sleeptalk'] }, | |
], [ | |
{ species: 'Eiscue', ability: 'iceface', moves: ['sleeptalk', 'aerialace', 'hail'] }, | |
]]); | |
battle.makeChoices(); | |
battle.makeChoices('move aerialace', 'move aerialace'); | |
const transformedEiscue = battle.p1.active[0]; | |
assert.species(transformedEiscue, 'Eiscue', `Transformed Eiscue should not have changed to Eiscue-Noice after taking physical damage`); | |
assert.false.fullHP(transformedEiscue); | |
battle.makeChoices('switch 2', 'auto'); | |
battle.makeChoices('switch 2', 'auto'); | |
battle.makeChoices('move transform', 'auto'); | |
battle.makeChoices('move hail', 'auto'); | |
assert.species(transformedEiscue, 'Eiscue-Noice', `Transformed Eiscue should not have changed to Eiscue after hail was set`); | |
}); | |
it(`should not trigger if the Pokemon was KOed by Max Hailstorm`, () => { | |
battle = common.gen(8).createBattle([[ | |
{ species: 'Eiscue', level: 1, ability: 'iceface', moves: ['sleeptalk'] }, | |
], [ | |
{ species: 'Weavile', moves: ['icepunch'] }, | |
]]); | |
battle.makeChoices(); | |
battle.makeChoices('auto', 'move icepunch dynamax'); | |
const activate = '|-activate'; | |
const battleLog = battle.log.join('\n'); | |
const firstIndex = battleLog.indexOf(activate); | |
const hasMultipleActivates = (firstIndex !== -1) && (firstIndex !== battleLog.lastIndexOf(activate)); | |
assert.false(hasMultipleActivates, "Ice Face should not trigger when being KOed. Only one |-activate| should exist in this test."); | |
}); | |
it(`should reform Ice Face on switchin after all entrance Abilities occur`, () => { | |
battle = common.createBattle([[ | |
{ species: 'Eiscue', ability: 'iceface', moves: ['sleeptalk'] }, | |
{ species: 'Abomasnow', ability: 'snowwarning', moves: ['sleeptalk'] }, | |
], [ | |
{ species: 'Guzzlord', moves: ['tackle', 'finalgambit'] }, | |
{ species: 'Torkoal', ability: 'drought', moves: ['sleeptalk'] }, | |
]]); | |
const eiscue = battle.p1.active[0]; | |
battle.makeChoices(); | |
battle.makeChoices('switch 2', 'move finalgambit'); // hail activates | |
battle.makeChoices('switch 2', 'switch 2'); // sun should activate first, even though Torkoal is slower, so Ice Face misses the timing | |
assert.species(eiscue, 'Eiscue-Noice'); | |
}); | |
}); | |