Paper Mario DX
Paper Mario (N64) modding
 
Loading...
Searching...
No Matches
power_bounce.c
Go to the documentation of this file.
1#include "common.h"
2#include "script_api/battle.h"
4#include "battle/battle.h"
5#include "sprite/player.h"
6
7#define NAMESPACE battle_move_power_bounce
8
10
11s32 N(DifficultyTable)[] = {
12 7, 6, 5, 4, 3, 2, 1, 0
13};
14
15s32 N(BaseHitChance) = 200;
16
17API_CALLABLE(N(GetHitChance)) {
18 Actor* targetActor = get_actor(get_actor(script->owner1.actorID)->targetActorID);
19 s32 powerBounceChance;
20
21 script->varTable[0] = 99;
22 powerBounceChance = targetActor->actorBlueprint->powerBounceChance;
24 powerBounceChance += 7;
25 }
26 N(BaseHitChance) = N(BaseHitChance) * powerBounceChance / 100;
27
28 if (N(BaseHitChance) < rand_int(100)) {
29 script->varTable[0] = 0;
30 }
31
32 return ApiStatus_DONE2;
33}
34
35BSS s32 N(HitCounter);
36
37API_CALLABLE(N(InitializeHitCounter)) {
38 N(HitCounter) = 0;
39 return ApiStatus_DONE2;
40}
41
42API_CALLABLE(N(IncrementHitCounter)) {
43 N(HitCounter) += 1;
44 return ApiStatus_DONE2;
45}
46
47API_CALLABLE(N(StoreHitCountRecord)) {
48 PlayerData* playerData = &gPlayerData;
49
50 if (playerData->powerBounces < N(HitCounter)) {
51 playerData->powerBounces = N(HitCounter);
52 }
53
54 return ApiStatus_DONE2;
55}
56
57extern EvtScript N(EVS_UseMove_Normal);
58extern EvtScript N(EVS_UseMove_Super);
59extern EvtScript N(EVS_UseMove_Ultra);
60
61EvtScript N(EVS_UseMove) = {
62 Set(LFlagA, FALSE)
63 Call(ShowActionHud, TRUE)
64 Call(N(InitializeHitCounter))
65 Call(GetMenuSelection, LVar0, LVar1, LVar2)
67 CaseEq(0)
68 Set(LVarC, 1)
69 ExecWait(N(EVS_UseMove_Normal))
70 CaseEq(1)
71 Set(LVarC, 2)
72 ExecWait(N(EVS_UseMove_Super))
73 CaseEq(2)
74 Set(LVarC, 3)
75 ExecWait(N(EVS_UseMove_Ultra))
77 Call(N(StoreHitCountRecord))
78 Return
79 End
80};
81
82EvtScript N(EVS_UseMove_Normal) = {
83 Call(LoadActionCommand, ACTION_COMMAND_JUMP)
84 Call(action_command_jump_init)
85 Call(SetActionDifficultyTable, Ref(N(DifficultyTable)))
86 ExecWait(N(EVS_JumpSupport_Approach))
87 ExecWait(N(EVS_JumpSupport_CalcJumpTime))
88 Call(action_command_jump_start, LVarA, 1)
89 Call(UseBattleCamPreset, BTL_CAM_PLAYER_JUMP_MIDAIR)
90 Call(SetGoalToTarget, ACTOR_PLAYER)
91 Call(SetJumpAnimations, ACTOR_PLAYER, 0, ANIM_Mario1_Jump, ANIM_Mario1_Fall, ANIM_MarioB1_Stomp)
92 Call(PlayerBasicJumpToGoal, LVarA, PLAYER_BASIC_JUMP_0)
93 Call(PlayerTestEnemy, LVar0, DAMAGE_TYPE_JUMP, 0, 0, 1, 0)
95 ExecWait(N(EVS_JumpSupport_Miss))
96 Return
97 EndIf
98 Wait(1)
99 Call(GetPlayerActionSuccess, LVar0)
101 CaseGt(FALSE)
111 ExecWait(N(EVS_JumpSupport_NoFollowUp))
112 Return
119 Call(UseBattleCamPreset, BTL_CAM_PLAYER_PRE_JUMP_FINISH)
120 Wait(5)
121 Call(SetGoalToTarget, ACTOR_PLAYER)
122 Call(UseBattleCamPreset, BTL_CAM_PLAYER_JUMP_FINISH)
124 Call(GetActionResult, LVarE)
125 Call(N(IncrementHitCounter))
126 Set(LVarD, 0)
127 Set(LVarF, 0)
128 Set(LFlag0, FALSE)
129 Label(10)
131 Call(UseBattleCamPreset, BTL_CAM_PLAYER_PRE_JUMP_FINISH)
132 Wait(5)
133 Call(SetGoalToTarget, ACTOR_PLAYER)
134 Call(UseBattleCamPreset, BTL_CAM_PLAYER_JUMP_FINISH)
136 Call(CloseActionCommandInfo)
137 Call(SetActionDifficultyTable, Ref(N(DifficultyTable)))
138 Call(LoadActionCommand, ACTION_COMMAND_JUMP)
139 Call(action_command_jump_init)
140 Set(LVarA, 24)
142 CaseEq(0)
143 Call(action_command_jump_start, LVarA, 1)
144 CaseEq(1)
145 Call(action_command_jump_start, LVarA, 2)
146 CaseEq(2)
147 Call(action_command_jump_start, LVarA, 3)
148 CaseEq(3)
149 Call(action_command_jump_start, LVarA, 4)
151 Call(action_command_jump_start, LVarA, 5)
153 Sub(LVarD, 1)
154 Call(SetJumpAnimations, ACTOR_PLAYER, 0, ANIM_Mario1_Jump, ANIM_Mario1_Fall, ANIM_Mario1_SpinFall)
155 Call(SetGoalToTarget, ACTOR_PLAYER)
156 IfEq(LVarF, 0)
157 Call(PlayerBasicJumpToGoal, 24, PLAYER_BASIC_JUMP_3)
158 Else
159 Call(PlayerBasicJumpToGoal, 24, PLAYER_BASIC_JUMP_4)
160 EndIf
161 Call(GetCommandAutoSuccess, LVar1)
162 IfEq(LVar1, 1)
163 IfGe(LVarF, 3)
164 Set(LFlag0, TRUE)
165 EndIf
166 EndIf
167 Call(N(GetHitChance))
169 Set(LFlag0, TRUE)
170 EndIf
171 Wait(1)
172 Call(GetPlayerActionSuccess, LVar0)
174 CaseGt(0)
175 IfEq(LFlag0, FALSE)
178 Else
181 EndIf
187 CaseEq(0)
188 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_JUMP_COMBO_1)
189 CaseEq(1)
190 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_JUMP_COMBO_2)
191 CaseEq(2)
192 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_JUMP_COMBO_3)
193 CaseEq(3)
194 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_JUMP_COMBO_4)
196 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_JUMP_COMBO_4)
198 Call(SetActionResult, LVarE)
202 IfEq(LFlag0, TRUE)
203 ExecWait(N(EVS_JumpSupport_Rebound))
204 Return
205 EndIf
206 ExecWait(N(EVS_JumpSupport_NoFollowUp))
207 Return
211 IfEq(LFlag0, TRUE)
212 ExecWait(N(EVS_JumpSupport_Rebound))
213 Return
214 EndIf
217 Add(LVarF, 1)
218 Call(N(IncrementHitCounter))
219 Goto(10)
220 Return
221 End
222};
223
224EvtScript N(EVS_UseMove_Super) = {
225 Call(LoadActionCommand, ACTION_COMMAND_JUMP)
226 Call(action_command_jump_init)
227 Call(SetActionDifficultyTable, Ref(N(DifficultyTable)))
228 ExecWait(N(EVS_JumpSupport_Approach))
229 ExecWait(N(EVS_JumpSupport_CalcJumpTime))
230 Call(action_command_jump_start, LVarA, 1)
231 Call(UseBattleCamPreset, BTL_CAM_PLAYER_JUMP_MIDAIR)
232 Call(SetGoalToTarget, ACTOR_PLAYER)
233 Call(SetJumpAnimations, ACTOR_PLAYER, 0, ANIM_Mario1_Jump, ANIM_Mario1_Fall, ANIM_MarioB1_Stomp)
234 Call(PlayerBasicJumpToGoal, LVarA, PLAYER_BASIC_JUMP_0)
235 Call(PlayerTestEnemy, LVar0, DAMAGE_TYPE_JUMP, 0, 0, 1, 0)
237 ExecWait(N(EVS_JumpSupport_Miss))
238 Return
239 EndIf
240 Wait(1)
241 Call(GetPlayerActionSuccess, LVar0)
243 CaseGt(FALSE)
253 ExecWait(N(EVS_JumpSupport_NoFollowUp))
254 Return
260 Call(GetActionResult, LVarE)
261 Call(N(IncrementHitCounter))
262 Set(LVarD, 0)
263 Set(LVarF, 0)
264 Set(LFlag0, FALSE)
265 Label(10)
267 Call(UseBattleCamPreset, BTL_CAM_PLAYER_PRE_JUMP_FINISH)
268 Wait(5)
269 Call(SetGoalToTarget, ACTOR_PLAYER)
270 Call(UseBattleCamPreset, BTL_CAM_PLAYER_JUMP_FINISH)
272 Call(CloseActionCommandInfo)
273 Call(SetActionDifficultyTable, Ref(N(DifficultyTable)))
274 Call(LoadActionCommand, ACTION_COMMAND_JUMP)
275 Call(action_command_jump_init)
276 Set(LVarA, 37)
278 CaseEq(0)
279 Call(action_command_jump_start, LVarA, 1)
280 CaseEq(1)
281 Call(action_command_jump_start, LVarA, 2)
282 CaseEq(2)
283 Call(action_command_jump_start, LVarA, 3)
284 CaseEq(3)
285 Call(action_command_jump_start, LVarA, 4)
287 Call(action_command_jump_start, LVarA, 5)
289 Sub(LVarD, 1)
290 Call(SetGoalToTarget, ACTOR_PLAYER)
291 Call(SetJumpAnimations, ACTOR_PLAYER, 0, ANIM_Mario1_Jump, ANIM_Mario1_Sit, ANIM_Mario1_SpinJump)
292 Call(EnablePlayerBlur, ACTOR_BLUR_ENABLE)
293 IfEq(LVarF, 0)
294 Call(PlayerSuperJumpToGoal, 20, PLAYER_SUPER_JUMP_3)
295 Wait(7)
296 Call(PlayerSuperJumpToGoal, 3, PLAYER_SUPER_JUMP_6)
297 Else
298 Call(PlayerSuperJumpToGoal, 20, PLAYER_SUPER_JUMP_4)
299 Wait(7)
300 Call(PlayerSuperJumpToGoal, 3, PLAYER_SUPER_JUMP_5)
301 EndIf
302 Call(EnablePlayerBlur, ACTOR_BLUR_DISABLE)
303 Call(GetCommandAutoSuccess, LVar1)
304 IfEq(LVar1, 1)
305 IfGt(LVarF, 3)
306 Set(LFlag0, TRUE)
307 EndIf
308 EndIf
309 Call(N(GetHitChance))
311 Set(LFlag0, TRUE)
312 EndIf
313 Wait(1)
314 Call(GetPlayerActionSuccess, LVar0)
316 CaseGt(FALSE)
317 IfEq(LFlag0, FALSE)
319 Call(PlayerPowerBounceEnemy, LVar0, DAMAGE_TYPE_JUMP | DAMAGE_TYPE_POWER_BOUNCE, 0, 0, LVarC, LVarD, 64)
320 Else
322 Call(PlayerPowerBounceEnemy, LVar0, DAMAGE_TYPE_JUMP | DAMAGE_TYPE_POWER_BOUNCE, 0, 0, LVarC, LVarD, 224)
323 EndIf
326 Call(PlayerPowerBounceEnemy, LVar0, DAMAGE_TYPE_JUMP | DAMAGE_TYPE_POWER_BOUNCE, 0, 0, LVarC, LVarD, 32)
329 CaseEq(0)
330 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_JUMP_COMBO_1)
331 CaseEq(1)
332 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_JUMP_COMBO_2)
333 CaseEq(2)
334 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_JUMP_COMBO_3)
335 CaseEq(3)
336 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_JUMP_COMBO_4)
338 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_JUMP_COMBO_4)
340 Call(SetActionResult, LVarE)
344 IfEq(LFlag0, TRUE)
345 ExecWait(N(EVS_JumpSupport_Rebound))
346 Return
347 EndIf
348 ExecWait(N(EVS_JumpSupport_NoFollowUp))
349 Return
353 IfEq(LFlag0, TRUE)
354 ExecWait(N(EVS_JumpSupport_Rebound))
355 Return
356 EndIf
359 Add(LVarF, 1)
360 Call(N(IncrementHitCounter))
361 Goto(10)
362 Return
363 End
364};
365
366EvtScript N(EVS_UseMove_Ultra) = {
367 Call(LoadActionCommand, ACTION_COMMAND_JUMP)
368 Call(action_command_jump_init)
369 Call(SetActionDifficultyTable, Ref(N(DifficultyTable)))
370 ExecWait(N(EVS_JumpSupport_Approach))
371 ExecWait(N(EVS_JumpSupport_CalcJumpTime))
372 Call(action_command_jump_start, LVarA, 1)
373 Call(UseBattleCamPreset, BTL_CAM_PLAYER_JUMP_MIDAIR)
374 Call(SetGoalToTarget, ACTOR_PLAYER)
375 Call(SetJumpAnimations, ACTOR_PLAYER, 0, ANIM_Mario1_Jump, ANIM_Mario1_Fall, ANIM_MarioB1_Stomp)
376 Call(PlayerBasicJumpToGoal, LVarA, PLAYER_BASIC_JUMP_0)
377 Call(PlayerTestEnemy, LVar0, DAMAGE_TYPE_JUMP, 0, 0, 1, 0)
379 ExecWait(N(EVS_JumpSupport_Miss))
380 Return
381 EndIf
382 Wait(1)
383 Call(GetPlayerActionSuccess, LVar0)
385 CaseGt(FALSE)
395 ExecWait(N(EVS_JumpSupport_NoFollowUp))
396 Return
402 Call(GetActionResult, LVarE)
403 Call(N(IncrementHitCounter))
404 Set(LVarD, 0)
405 // LVarF = iteration count
406 Set(LVarF, 0)
407 Set(LFlag0, FALSE)
408 Label(10)
410 Call(UseBattleCamPreset, BTL_CAM_PLAYER_PRE_ULTRA_JUMP_FINISH)
411 Wait(5)
412 Call(SetGoalToTarget, ACTOR_PLAYER)
413 Call(UseBattleCamPreset, BTL_CAM_PLAYER_JUMP_FINISH)
415 Call(CloseActionCommandInfo)
416 Call(SetActionDifficultyTable, Ref(N(DifficultyTable)))
417 Call(LoadActionCommand, ACTION_COMMAND_JUMP)
418 Call(action_command_jump_init)
419 Set(LVarA, 25)
421 CaseEq(0)
422 Call(action_command_jump_start, LVarA, 1)
423 CaseEq(1)
424 Call(action_command_jump_start, LVarA, 2)
425 CaseEq(2)
426 Call(action_command_jump_start, LVarA, 3)
427 CaseEq(3)
428 Call(action_command_jump_start, LVarA, 4)
430 Call(action_command_jump_start, LVarA, 5)
432 Sub(LVarD, 1)
433 Call(SetGoalToTarget, ACTOR_PLAYER)
434 Call(EnablePlayerBlur, ACTOR_BLUR_ENABLE)
435 Call(SetJumpAnimations, ACTOR_PLAYER, 0, ANIM_Mario1_Jump, ANIM_Mario1_Jump, ANIM_Mario1_SpinFall)
436 IfEq(LVarF, 0)
437 Call(PlayerUltraJumpToGoal, 25, PLAYER_ULTRA_JUMP_2)
438 Else
439 Call(PlayerUltraJumpToGoal, 25, PLAYER_ULTRA_JUMP_4)
440 EndIf
441 Call(EnablePlayerBlur, ACTOR_BLUR_DISABLE)
442 Call(GetCommandAutoSuccess, LVar1)
443 IfEq(LVar1, 1)
444 IfGt(LVarF, 3)
445 Set(LFlag0, TRUE)
446 EndIf
447 EndIf
448 Call(N(GetHitChance))
450 Set(LFlag0, TRUE)
451 EndIf
452 Wait(1)
453 Call(GetPlayerActionSuccess, LVar0)
455 CaseGt(FALSE)
456 IfEq(LFlag0, FALSE)
458 Call(PlayerPowerBounceEnemy, LVar0, DAMAGE_TYPE_JUMP | DAMAGE_TYPE_POWER_BOUNCE, 0, 0, LVarC, LVarD, 64)
459 Else
461 Call(PlayerPowerBounceEnemy, LVar0, DAMAGE_TYPE_JUMP | DAMAGE_TYPE_POWER_BOUNCE, 0, 0, LVarC, LVarD, 224)
462 EndIf
465 Call(PlayerPowerBounceEnemy, LVar0, DAMAGE_TYPE_JUMP | DAMAGE_TYPE_POWER_BOUNCE, 0, 0, LVarC, LVarD, 32)
468 CaseEq(0)
469 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_JUMP_COMBO_1)
470 CaseEq(1)
471 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_JUMP_COMBO_2)
472 CaseEq(2)
473 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_JUMP_COMBO_3)
474 CaseEq(3)
475 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_JUMP_COMBO_4)
477 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_JUMP_COMBO_4)
479 Call(SetActionResult, LVarE)
483 IfEq(LFlag0, TRUE)
484 ExecWait(N(EVS_JumpSupport_Rebound))
485 Return
486 EndIf
487 ExecWait(N(EVS_JumpSupport_NoFollowUp))
488 Return
492 IfEq(LFlag0, TRUE)
493 ExecWait(N(EVS_JumpSupport_Rebound))
494 Return
495 EndIf
498 Add(LVarF, 1)
499 Call(N(IncrementHitCounter))
500 Goto(10)
501 Return
502 End
503};
struct ActorBlueprint * actorBlueprint
s16 targetActorID
Bytecode EvtScript[]
#define rand_int
@ ACTION_COMMAND_JUMP
Definition enums.h:3473
@ ACTOR_SOUND_HURT
Definition enums.h:2037
@ BS_FLAGS1_NO_RATING
Definition enums.h:3577
@ BS_FLAGS1_NICE_HIT
Definition enums.h:3576
@ BS_FLAGS1_TRIGGER_EVENTS
Definition enums.h:3575
@ BS_FLAGS1_INCLUDE_POWER_UPS
Definition enums.h:3571
@ PLAYER_ULTRA_JUMP_2
Definition enums.h:4315
@ PLAYER_ULTRA_JUMP_4
Definition enums.h:4317
@ PLAYER_SUPER_JUMP_3
Definition enums.h:4306
@ PLAYER_SUPER_JUMP_4
Definition enums.h:4307
@ PLAYER_SUPER_JUMP_5
Definition enums.h:4308
@ PLAYER_SUPER_JUMP_6
Definition enums.h:4309
@ HIT_RESULT_NO_DAMAGE
Definition enums.h:1952
@ HIT_RESULT_HIT
Definition enums.h:1950
@ HIT_RESULT_NICE_NO_DAMAGE
Definition enums.h:1953
@ HIT_RESULT_NICE
Definition enums.h:1951
@ HIT_RESULT_MISS
Definition enums.h:1956
@ BTL_CAM_PLAYER_PRE_ULTRA_JUMP_FINISH
Definition enums.h:4850
@ BTL_CAM_PLAYER_PRE_JUMP_FINISH
Definition enums.h:4849
@ BTL_CAM_PLAYER_JUMP_FINISH
Definition enums.h:4857
@ BTL_CAM_PLAYER_JUMP_MIDAIR
Definition enums.h:4856
@ PLAYER_BASIC_JUMP_3
Definition enums.h:4298
@ PLAYER_BASIC_JUMP_4
Definition enums.h:4299
@ PLAYER_BASIC_JUMP_0
Definition enums.h:4295
@ ABILITY_DODGE_MASTER
Definition enums.h:436
@ SOUND_ACTOR_JUMPED_2
Definition enums.h:778
@ SOUND_JUMP_COMBO_1
Definition enums.h:954
@ SOUND_ACTOR_JUMPED_1
Definition enums.h:777
@ SOUND_NONE
Definition enums.h:547
@ SOUND_JUMP_COMBO_4
Definition enums.h:957
@ SOUND_JUMP_COMBO_3
Definition enums.h:956
@ SOUND_ACTOR_JUMPED_3
Definition enums.h:779
@ SOUND_JUMP_COMBO_2
Definition enums.h:955
@ ACTOR_PLAYER
Definition enums.h:2085
@ ACTOR_BLUR_ENABLE
Definition enums.h:6414
@ ACTOR_BLUR_DISABLE
Definition enums.h:6413
@ DAMAGE_TYPE_POWER_BOUNCE
Definition enums.h:2870
@ DAMAGE_TYPE_JUMP
Definition enums.h:2858
#define ApiStatus_DONE2
Definition evt.h:118
s32 is_ability_active(s32 arg0)
Definition inventory.c:1725
Actor * get_actor(s32 actorID)
Definition actor_api.c:155
#define Else
Marks the end of an if statement and the start of the else block.
Definition macros.h:295
#define Switch(LVAR)
Marks the start of a switch statement.
Definition macros.h:311
#define Ref(sym)
Address/pointer constant.
Definition macros.h:60
#define IfGe(LVAR, RVAR)
Marks the beginning of an if statement that only executes if LVAR >= RVAR.
Definition macros.h:284
#define Set(VAR, INT_VALUE)
Sets the given variable to a given value casted to an integer.
Definition macros.h:365
#define CaseEq(RVAR)
Marks the start of a switch case that executes only if LVAR == RVAR. It also marks the end of any pre...
Definition macros.h:319
#define EndChildThread
Marks the end of a child thread block.
Definition macros.h:563
#define Sub(VAR, INT_VALUE)
Definition macros.h:377
#define LVarF
Definition macros.h:163
#define End
Signals the end of EVT script data. A script missing this will likely crash on load.
Definition macros.h:213
#define Add(VAR, INT_VALUE)
Definition macros.h:376
#define LFlagA
Definition macros.h:177
#define EndCaseGroup
Marks the end of a switch case group (CaseOrEq and/or CaseAndEq), stopping fallthrough.
Definition macros.h:352
#define Goto(LABEL_ID)
Moves execution to the given label.
Definition macros.h:232
#define BSS
Definition macros.h:7
#define LVarC
Definition macros.h:160
#define IfGt(LVAR, RVAR)
Marks the beginning of an if statement that only executes if LVAR <= RVAR.
Definition macros.h:278
#define Label(LABEL_ID)
Marks this point in the script as a Goto target.
Definition macros.h:227
#define CaseOrEq(RVAR)
Marks the start of a switch case that executes only if LVAR == RVAR.
Definition macros.h:341
#define EndIf
Marks the end of an if statement or an else block.
Definition macros.h:298
#define CaseDefault
Marks the start of a switch case that executes unconditionally. It also marks the end of any previous...
Definition macros.h:337
#define ExecWait(EVT_SOURCE)
Launches a new child thread.
Definition macros.h:475
#define LVar2
Definition macros.h:150
#define LVar1
Definition macros.h:149
#define LFlag0
Definition macros.h:167
#define LVarA
Definition macros.h:158
#define LVarD
Definition macros.h:161
#define Wait(NUM_FRAMES)
Blocks for the given number of frames.
Definition macros.h:254
#define EndSwitch
Marks the end of a switch statement and any case.
Definition macros.h:362
#define IfEq(LVAR, RVAR)
Marks the beginning of an if statement that only executes if LVAR == RVAR.
Definition macros.h:269
#define Call(FUNC, ARGS...)
Calls a given C EVT API function with any number of arguments.
Definition macros.h:576
#define ChildThread
Marks the start of a child thread block.
Definition macros.h:560
#define CaseGt(RVAR)
Marks the start of a switch case that executes only if LVAR <= RVAR. It also marks the end of any pre...
Definition macros.h:328
#define LVarE
Definition macros.h:162
#define LVar0
Definition macros.h:148
#define Return
Kills the current EVT thread.
Definition macros.h:217
u8 powerBounceChance
Definition battle.h:146
PlayerData gPlayerData
Definition 77480.c:40