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