Skip to content

Commit dae8aea

Browse files
Initial Lash Out tests (#7769)
Co-authored-by: Alex <[email protected]>
1 parent 2c16f6b commit dae8aea

File tree

1 file changed

+185
-1
lines changed

1 file changed

+185
-1
lines changed

test/battle/move_effect/lash_out.c

Lines changed: 185 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,188 @@
11
#include "global.h"
22
#include "test/battle.h"
33

4-
TO_DO_BATTLE_TEST("TODO: Write Lash Out (Move Effect) test titles")
4+
SINGLE_BATTLE_TEST("Lash Out damage is boosted if the user's stats are dropped the turn it is used")
5+
{
6+
s16 damage[2];
7+
u32 move = MOVE_NONE;
8+
9+
PARAMETRIZE { move = MOVE_TACKLE; }
10+
PARAMETRIZE { move = MOVE_GROWL; }
11+
PARAMETRIZE { move = MOVE_LEER; }
12+
PARAMETRIZE { move = MOVE_STRING_SHOT; }
13+
PARAMETRIZE { move = MOVE_CONFIDE; }
14+
PARAMETRIZE { move = MOVE_SAND_ATTACK; }
15+
PARAMETRIZE { move = MOVE_SWEET_SCENT; }
16+
PARAMETRIZE { move = MOVE_CHARM; }
17+
PARAMETRIZE { move = MOVE_SCREECH; }
18+
PARAMETRIZE { move = MOVE_SCARY_FACE; }
19+
PARAMETRIZE { move = MOVE_CAPTIVATE; }
20+
PARAMETRIZE { move = MOVE_EERIE_IMPULSE; }
21+
PARAMETRIZE { move = MOVE_FAKE_TEARS; }
22+
PARAMETRIZE { move = MOVE_NOBLE_ROAR; }
23+
PARAMETRIZE { move = MOVE_LUNGE; }
24+
PARAMETRIZE { move = MOVE_FIRE_LASH; }
25+
PARAMETRIZE { move = MOVE_BULLDOZE; }
26+
PARAMETRIZE { move = MOVE_MYSTICAL_FIRE; }
27+
PARAMETRIZE { move = MOVE_BUG_BUZZ; }
28+
29+
GIVEN {
30+
PLAYER(SPECIES_GRIMMSNARL) { Gender(MON_MALE); Speed(1); Moves(MOVE_LASH_OUT); }
31+
OPPONENT(SPECIES_GOLEM) { Gender(MON_FEMALE); Speed(2); Moves(move, MOVE_CELEBRATE); }
32+
} WHEN {
33+
TURN { MOVE(player, MOVE_LASH_OUT); MOVE(opponent, MOVE_CELEBRATE); }
34+
TURN { MOVE(player, MOVE_LASH_OUT); MOVE(opponent, move); }
35+
} SCENE {
36+
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent);
37+
ANIMATION(ANIM_TYPE_MOVE, MOVE_LASH_OUT, player);
38+
HP_BAR(opponent, captureDamage: &damage[0]);
39+
40+
ANIMATION(ANIM_TYPE_MOVE, move, opponent);
41+
ANIMATION(ANIM_TYPE_MOVE, MOVE_LASH_OUT, player);
42+
HP_BAR(opponent, captureDamage: &damage[1]);
43+
} THEN {
44+
if (move == MOVE_TACKLE || move == MOVE_CHARM)
45+
EXPECT_EQ(damage[0], damage[1]);
46+
else if (move == MOVE_GROWL || move == MOVE_LUNGE || move == MOVE_NOBLE_ROAR)
47+
EXPECT_MUL_EQ(damage[0], UQ_4_12(1.33), damage[1]);
48+
else
49+
EXPECT_MUL_EQ(damage[0], UQ_4_12(2.00), damage[1]);
50+
}
51+
}
52+
53+
SINGLE_BATTLE_TEST("Lash Out damage is only boosted on the turn that Intimidate switches in")
54+
{
55+
s16 damage[3] = {0};
56+
u32 move = MOVE_NONE;
57+
58+
PARAMETRIZE { move = MOVE_LASH_OUT; }
59+
PARAMETRIZE { move = MOVE_SPLASH; }
60+
61+
GIVEN {
62+
PLAYER(SPECIES_GRIMMSNARL) { Moves(move, MOVE_CELEBRATE, MOVE_LASH_OUT); }
63+
OPPONENT(SPECIES_INCINEROAR) { Ability(ABILITY_BLAZE); Moves(MOVE_CELEBRATE); }
64+
OPPONENT(SPECIES_INCINEROAR) { Ability(ABILITY_INTIMIDATE); Moves(MOVE_CELEBRATE); }
65+
} WHEN {
66+
TURN { MOVE(player, MOVE_LASH_OUT); MOVE(opponent, MOVE_CELEBRATE); }
67+
TURN { MOVE(player, move); SWITCH(opponent, 1); }
68+
TURN { MOVE(player, MOVE_LASH_OUT); MOVE(opponent, MOVE_CELEBRATE); }
69+
} SCENE {
70+
ANIMATION(ANIM_TYPE_MOVE, MOVE_LASH_OUT, player);
71+
HP_BAR(opponent, captureDamage: &damage[0]);
72+
73+
ANIMATION(ANIM_TYPE_MOVE, move, player);
74+
if (move == MOVE_LASH_OUT)
75+
HP_BAR(opponent, captureDamage: &damage[1]);
76+
77+
ANIMATION(ANIM_TYPE_MOVE, MOVE_LASH_OUT, player);
78+
HP_BAR(opponent, captureDamage: &damage[2]);
79+
} THEN {
80+
EXPECT_EQ(damage[0], damage[2]);
81+
EXPECT_MUL_EQ(damage[0], (move == MOVE_LASH_OUT ? UQ_4_12(1.33) : UQ_4_12(0.00)), damage[1]);
82+
}
83+
}
84+
85+
SINGLE_BATTLE_TEST("Lash Out damage is boosted on turn 1 by switch in abilities")
86+
{
87+
s16 damage[2] = {0};
88+
u32 species = SPECIES_NONE, ability = ABILITY_NONE;
89+
90+
PARAMETRIZE { species = SPECIES_INCINEROAR, ability = ABILITY_BLAZE; }
91+
PARAMETRIZE { species = SPECIES_INCINEROAR, ability = ABILITY_INTIMIDATE; }
92+
PARAMETRIZE { species = SPECIES_HYDRAPPLE, ability = ABILITY_REGENERATOR; }
93+
PARAMETRIZE { species = SPECIES_HYDRAPPLE, ability = ABILITY_SUPERSWEET_SYRUP; }
94+
95+
GIVEN {
96+
PLAYER(SPECIES_GRIMMSNARL) { Moves(MOVE_LASH_OUT); }
97+
OPPONENT(species) { Ability(ability); }
98+
} WHEN {
99+
TURN { MOVE(player, MOVE_LASH_OUT); }
100+
TURN { MOVE(player, MOVE_LASH_OUT); }
101+
} SCENE {
102+
ANIMATION(ANIM_TYPE_MOVE, MOVE_LASH_OUT, player);
103+
HP_BAR(opponent, captureDamage: &damage[0]);
104+
105+
ANIMATION(ANIM_TYPE_MOVE, MOVE_LASH_OUT, player);
106+
HP_BAR(opponent, captureDamage: &damage[1]);
107+
108+
} THEN {
109+
if (ability == ABILITY_INTIMIDATE)
110+
EXPECT_MUL_EQ(damage[0], UQ_4_12(1.33) , damage[1]);
111+
else if (ability == ABILITY_SUPERSWEET_SYRUP)
112+
EXPECT_MUL_EQ(damage[0], UQ_4_12(2.00) , damage[1]);
113+
else
114+
EXPECT_EQ(damage[0], damage[1]);
115+
}
116+
}
117+
118+
DOUBLE_BATTLE_TEST("Lash Out damage is boosted by Cotton Down activation in doubles")
119+
{
120+
s16 damage[2] = {0};
121+
u32 ability = ABILITY_NONE;
122+
123+
PARAMETRIZE { ability = ABILITY_REGENERATOR; }
124+
PARAMETRIZE { ability = ABILITY_COTTON_DOWN; }
125+
126+
GIVEN {
127+
PLAYER(SPECIES_GRIMMSNARL) { Speed(1); Moves(MOVE_LASH_OUT); }
128+
PLAYER(SPECIES_RATTATA) { Speed(2); Moves(MOVE_TACKLE, MOVE_CELEBRATE); }
129+
OPPONENT(SPECIES_ELDEGOSS) { Speed(3); Ability(ability); }
130+
OPPONENT(SPECIES_GOLEM) { Speed(4); }
131+
} WHEN {
132+
TURN { MOVE(playerLeft, MOVE_LASH_OUT, target:opponentRight); MOVE(playerRight, MOVE_TACKLE, target:opponentLeft); }
133+
TURN { MOVE(playerLeft, MOVE_LASH_OUT, target:opponentRight); }
134+
} SCENE {
135+
ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerRight);
136+
ANIMATION(ANIM_TYPE_MOVE, MOVE_LASH_OUT, playerLeft);
137+
HP_BAR(opponentRight, captureDamage: &damage[0]);
138+
139+
ANIMATION(ANIM_TYPE_MOVE, MOVE_LASH_OUT, playerLeft);
140+
HP_BAR(opponentRight, captureDamage: &damage[1]);
141+
142+
} THEN {
143+
if (ability == ABILITY_COTTON_DOWN)
144+
EXPECT_MUL_EQ(damage[0], UQ_4_12(2.00) , damage[1]);
145+
else
146+
EXPECT_EQ(damage[0], damage[1]);
147+
}
148+
}
149+
150+
DOUBLE_BATTLE_TEST("Lash Out damage is not boosted by Treasure of Ruin ability activation in doubles")
151+
{
152+
s16 damage[2] = {0};
153+
u32 species = SPECIES_NONE, ability = ABILITY_NONE;
154+
155+
PARAMETRIZE { species = SPECIES_KANGASKHAN, ability = ABILITY_INNER_FOCUS; }
156+
PARAMETRIZE { species = SPECIES_HYDRAPPLE, ability = ABILITY_SUPERSWEET_SYRUP; }
157+
PARAMETRIZE { species = SPECIES_WO_CHIEN, ability = ABILITY_TABLETS_OF_RUIN; }
158+
PARAMETRIZE { species = SPECIES_CHIEN_PAO, ability = ABILITY_SWORD_OF_RUIN; }
159+
PARAMETRIZE { species = SPECIES_TING_LU, ability = ABILITY_VESSEL_OF_RUIN; }
160+
PARAMETRIZE { species = SPECIES_CHI_YU, ability = ABILITY_BEADS_OF_RUIN; }
161+
162+
GIVEN {
163+
PLAYER(SPECIES_GRIMMSNARL) { Moves(MOVE_LASH_OUT); }
164+
PLAYER(SPECIES_RATTATA);
165+
OPPONENT(SPECIES_WOBBUFFET);
166+
OPPONENT(SPECIES_GOLEM);
167+
OPPONENT(species) { Ability(ability); }
168+
} WHEN {
169+
TURN { MOVE(playerLeft, MOVE_LASH_OUT, target:opponentRight); }
170+
TURN { MOVE(playerLeft, MOVE_LASH_OUT, target:opponentRight); SWITCH(opponentLeft, 2); }
171+
} SCENE {
172+
ANIMATION(ANIM_TYPE_MOVE, MOVE_LASH_OUT, playerLeft);
173+
HP_BAR(opponentRight, captureDamage: &damage[0]);
174+
175+
ANIMATION(ANIM_TYPE_MOVE, MOVE_LASH_OUT, playerLeft);
176+
HP_BAR(opponentRight, captureDamage: &damage[1]);
177+
178+
} THEN {
179+
if (ability == ABILITY_SUPERSWEET_SYRUP)
180+
EXPECT_MUL_EQ(damage[0], UQ_4_12(2.00) , damage[1]);
181+
else if (ability == ABILITY_TABLETS_OF_RUIN)
182+
EXPECT_MUL_EQ(damage[0], UQ_4_12(0.75) , damage[1]);
183+
else if (ability == ABILITY_SWORD_OF_RUIN)
184+
EXPECT_MUL_EQ(damage[0], UQ_4_12(1.33) , damage[1]);
185+
else
186+
EXPECT_EQ(damage[0], damage[1]);
187+
}
188+
}

0 commit comments

Comments
 (0)