namespace Gen7 { [Move effect=ChangeTargetDef] shared class ChangeTargetDefense : PkmnScript{ int8 _amount; void OnInitialize(const BattleLibrary@ library, const narray@ parameters) override{ _amount = int8(parameters[0].AsInt()); } void OnSecondaryEffect(ExecutingMove@ attack, Pokemon@ target, uint8 hit) override{ target.ChangeStatBoost(Statistic::Defense, _amount, attack.User is target); } } } #if TESTS void TestChangeDefenseStat(int8 amount){ auto battle = CreateSimpleBattle(684, "charizard", "venusaur", 100); auto mon1 = battle.GetBattleSide(0).GetPokemon(0); auto script = cast(CreateMoveScript("ChangeTargetDef")); auto executingMove = CreateExecutingMove("Tackle", mon1, mon1); script._amount = amount; script.OnSecondaryEffect(executingMove, mon1, 0x0); RequireEquals(amount, mon1.GetStatBoost(Statistic::Defense)); } [Test name="ChangeTargetDefense: Does as the name suggests"] void ChangeTargetDefense_Test(){ for (int8 i = -6; i <= 6; i++){ TestChangeDefenseStat(i); } } #endif