diff --git a/Scripts/Moves/Acupressure.as b/Scripts/Moves/Acupressure.as index 1e92af5..a2b4e14 100644 --- a/Scripts/Moves/Acupressure.as +++ b/Scripts/Moves/Acupressure.as @@ -3,11 +3,52 @@ namespace Gen7{ class Acupressure : PkmnScript { void OnSecondaryEffect(ExecutingMove@ attack, Pokemon@ target, uint8 hit) override { if (attack.User is target){ - // TODO: Fail. + attack.GetHitData(target, hit).Fail(); return; } - auto randStat = Statistic(target.Battle.Random.Get(0, 6)); + auto randStat = Statistic(target.Battle.Random.Get(1, 6)); target.ChangeStatBoost(randStat, 2); }; } -} \ No newline at end of file +} + +#if TESTS + +void TestWithRandomSeed(uint seed, Statistic stat){ + auto battle = CreateSimpleBattle(seed, "charizard", "venusaur", 100); + auto mon1 = battle.GetBattleSide(0).GetPokemon(0); + auto mon2 = battle.GetBattleSide(1).GetPokemon(0); + + auto script = cast(CreateMoveScript("Acupressure")); + auto executingMove = CreateExecutingMove("Acupressure", mon1, mon2); + script.OnSecondaryEffect(executingMove, mon2, 0x0); + RequireEquals(2, mon2.GetStatBoost(stat)); +} + +[Test name="Acupressure: Random stat increases by two"] +void Acupressure_RandomStatIncreasesBy2(){ + TestWithRandomSeed(684, Statistic::SpecialDefense); + TestWithRandomSeed(1037038, Statistic::SpecialDefense); + TestWithRandomSeed(3572948, Statistic::Attack); + TestWithRandomSeed(4087125, Statistic::SpecialDefense); + TestWithRandomSeed(4199056, Statistic::Speed); + TestWithRandomSeed(7291450, Statistic::Attack); + TestWithRandomSeed(8639137, Statistic::SpecialAttack); + TestWithRandomSeed(8918584, Statistic::Attack); + TestWithRandomSeed(9564376, Statistic::Defense); + TestWithRandomSeed(9859436, Statistic::SpecialDefense); +} + +[Test name="Acupressure: Fails When Targets Self"] +void Acupressure_FailsOnSelfTarget(){ + auto battle = CreateSimpleBattle(684, "charizard", "venusaur", 100); + auto mon1 = battle.GetBattleSide(0).GetPokemon(0); + + auto script = cast(CreateMoveScript("Acupressure")); + auto executingMove = CreateExecutingMove("Acupressure", mon1, mon1); + script.OnSecondaryEffect(executingMove, mon1, 0x0); + Require(executingMove.GetHitData(mon1, 0x0).HasFailed); +} + + +#endif diff --git a/Scripts/Moves/AfterYou.as b/Scripts/Moves/AfterYou.as index ff5f258..769af84 100644 --- a/Scripts/Moves/AfterYou.as +++ b/Scripts/Moves/AfterYou.as @@ -4,7 +4,7 @@ namespace Gen7 { void OnSecondaryEffect(ExecutingMove@ attack, Pokemon@ target, uint8 hit) override { bool result = target.Battle.TurnQueue.MovePokemonChoiceNext(target); if (!result){ - // TODO: Failed + attack.GetHitData(target, hit).Fail(); } }; } diff --git a/Scripts/Moves/ChangeAllTargetStats.as b/Scripts/Moves/ChangeAllTargetStats.as index 4e92005..4a3d100 100644 --- a/Scripts/Moves/ChangeAllTargetStats.as +++ b/Scripts/Moves/ChangeAllTargetStats.as @@ -15,4 +15,29 @@ namespace Gen7 { target.ChangeStatBoost(Statistic::Speed, _amount); } } -} \ No newline at end of file +} + +#if TESTS +void TestChangeAllStats(int8 amount){ + auto battle = CreateSimpleBattle(684, "charizard", "venusaur", 100); + auto mon1 = battle.GetBattleSide(0).GetPokemon(0); + + auto script = cast(CreateMoveScript("ChangeAllTargetStats")); + auto executingMove = CreateExecutingMove("Tackle", mon1, mon1); + script._amount = amount; + script.OnSecondaryEffect(executingMove, mon1, 0x0); + RequireEquals(amount, mon1.GetStatBoost(Statistic::Attack)); + RequireEquals(amount, mon1.GetStatBoost(Statistic::Defense)); + RequireEquals(amount, mon1.GetStatBoost(Statistic::SpecialAttack)); + RequireEquals(amount, mon1.GetStatBoost(Statistic::SpecialDefense)); + RequireEquals(amount, mon1.GetStatBoost(Statistic::Speed)); +} + +[Test name="ChangeAllTargetStats: Does as the name suggests"] +void ChangeAllTargetStats_Test(){ + for (int8 i = -6; i <= 6; i++){ + TestChangeAllStats(i); + } +} + +#endif \ No newline at end of file diff --git a/Scripts/Moves/ChangeTargetAtt.as b/Scripts/Moves/ChangeTargetAtt.as index 5e3b80b..689b82f 100644 --- a/Scripts/Moves/ChangeTargetAtt.as +++ b/Scripts/Moves/ChangeTargetAtt.as @@ -11,4 +11,25 @@ namespace Gen7 { target.ChangeStatBoost(Statistic::Attack, _amount); } } -} \ No newline at end of file +} + +#if TESTS +void TestChangeAttackStat(int8 amount){ + auto battle = CreateSimpleBattle(684, "charizard", "venusaur", 100); + auto mon1 = battle.GetBattleSide(0).GetPokemon(0); + + auto script = cast(CreateMoveScript("ChangeTargetAtt")); + auto executingMove = CreateExecutingMove("Tackle", mon1, mon1); + script._amount = amount; + script.OnSecondaryEffect(executingMove, mon1, 0x0); + RequireEquals(amount, mon1.GetStatBoost(Statistic::Attack)); +} + +[Test name="ChangeTargetAttack: Does as the name suggests"] +void ChangeTargetAttack_Test(){ + for (int8 i = -6; i <= 6; i++){ + TestChangeAttackStat(i); + } +} + +#endif \ No newline at end of file diff --git a/Scripts/Moves/ChangeTargetDef.as b/Scripts/Moves/ChangeTargetDef.as index 91c2025..3f196b4 100644 --- a/Scripts/Moves/ChangeTargetDef.as +++ b/Scripts/Moves/ChangeTargetDef.as @@ -11,4 +11,25 @@ namespace Gen7 { target.ChangeStatBoost(Statistic::Defense, _amount); } } -} \ No newline at end of file +} + +#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 \ No newline at end of file diff --git a/Scripts/Moves/ChangeTargetSpDef.as b/Scripts/Moves/ChangeTargetSpDef.as index 8803521..b402860 100644 --- a/Scripts/Moves/ChangeTargetSpDef.as +++ b/Scripts/Moves/ChangeTargetSpDef.as @@ -11,4 +11,25 @@ namespace Gen7 { target.ChangeStatBoost(Statistic::SpecialDefense, _amount); } } -} \ No newline at end of file +} + +#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 \ No newline at end of file diff --git a/Scripts/Moves/ChangeTargetSpeed.as b/Scripts/Moves/ChangeTargetSpeed.as index b41d7a7..265a970 100644 --- a/Scripts/Moves/ChangeTargetSpeed.as +++ b/Scripts/Moves/ChangeTargetSpeed.as @@ -11,4 +11,25 @@ namespace Gen7 { target.ChangeStatBoost(Statistic::Speed, _amount); } } -} \ No newline at end of file +} + +#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 \ No newline at end of file