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