'use strict'; 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'); }); });