Paper Mario DX
Paper Mario (N64) modding
 
Loading...
Searching...
No Matches
dmg_item.c File Reference

Go to the source code of this file.

Macros

#define INFLICT_STATUS(STATUS_TYPE)
 

Functions

HitResult calc_item_check_hit (void)
 
HitResult calc_item_damage_enemy (void)
 

Macro Definition Documentation

◆ INFLICT_STATUS

#define INFLICT_STATUS ( STATUS_TYPE)
Value:
if ((battleStatus->curAttackStatus & STATUS_FLAG_##STATUS_TYPE) && \
wasStatusInflicted = TRUE; \
} \
BSS s32 PopupMenu_SelectedIndex
s32 try_inflict_status(Actor *, s32, s32)
Definition 190B20.c:2264

Function Documentation

◆ calc_item_check_hit()

HitResult calc_item_check_hit ( void )

Definition at line 5 of file dmg_item.c.

5 {
7 ActorState* state = &battleStatus->playerActor->state;
8 s32 actorID = battleStatus->curTargetID;
11 Actor* actor;
13
14 battleStatus->curTargetID2 = battleStatus->curTargetID;
16 battleStatus->curTargetPart2 = currentTargetPartS8;
17
18 actor = get_actor(actorID);
19 if (actor == NULL) {
20 return HIT_RESULT_HIT;
21 }
22
25
26 if (actorPart->eventFlags & ACTOR_EVENT_FLAG_ILLUSORY) {
27 return HIT_RESULT_MISS;
28 }
29
31 return HIT_RESULT_MISS;
32 }
33
34 if (actor->stoneStatus == STATUS_KEY_STONE) {
36 return HIT_RESULT_IMMUNE;
37 }
38
39 if ((battleStatus->curAttackElement & DAMAGE_TYPE_JUMP)
40 && (actorPart->eventFlags & ACTOR_EVENT_FLAG_SPIKY_TOP))
41 {
44 }
45
46 return HIT_RESULT_HIT;
47}
s8 transparentStatus
#define sfx_play_sound_at_position
#define ASSERT(condition)
@ ACTOR_EVENT_FLAG_ILLUSORY
Player attacks pass through and miss.
Definition enums.h:3408
@ ACTOR_EVENT_FLAG_SPIKY_TOP
Player takes spike damage from jump attacks.
Definition enums.h:3407
@ STATUS_KEY_TRANSPARENT
Definition enums.h:2815
@ STATUS_KEY_STONE
Definition enums.h:2813
@ HIT_RESULT_LANDED_ON_SPIKE
Definition enums.h:1980
@ HIT_RESULT_HIT
Definition enums.h:1976
@ HIT_RESULT_IMMUNE
Definition enums.h:1984
@ HIT_RESULT_MISS
Definition enums.h:1982
@ SOUND_IMMUNE
Definition enums.h:748
@ SOUND_HIT_NORMAL
Definition enums.h:727
@ SOUND_SPACE_DEFAULT
Definition enums.h:1740
@ DAMAGE_TYPE_JUMP
Definition enums.h:2892
ActorPart * get_actor_part(Actor *actor, s32 partID)
Definition 190B20.c:923
Actor * get_actor(s32 actorID)
Definition actor_api.c:155
BattleStatus gBattleStatus
Definition battle.cpp:14

◆ calc_item_damage_enemy()

HitResult calc_item_damage_enemy ( void )

Definition at line 49 of file dmg_item.c.

49 {
51 Actor* player = battleStatus->playerActor;
52 s32 currentTargetID = battleStatus->curTargetID;
53 Actor* partner = battleStatus->partnerActor;
54 s32 currentTargetPartID = battleStatus->curTargetPart;
64 Evt* script;
66 s32 temp;
68 ActorState* state;
70 s32 wasStatusInflicted;
72
73 battleStatus->wasStatusInflicted = FALSE;
74 battleStatus->lastAttackDamage = 0;
75 battleStatus->attackerActorID = player->actorID;
76 battleStatus->curTargetID2 = battleStatus->curTargetID;
77 battleStatus->curTargetPart2 = battleStatus->curTargetPart;
79 wasStatusInflicted = FALSE;
80
81 if (target == NULL) {
82 return HIT_RESULT_HIT;
83 }
84
86 if (targetPart == NULL) {
87 PANIC();
88 }
89
90 target->lastDamageTaken = 0;
93 state = &player->state;
94 } else {
95 state = &partner->state;
96 }
97
98 if (battleStatus->curAttackElement & DAMAGE_TYPE_FIRE) {
99 fx_ring_blast(0, state->goalPos.x, state->goalPos.y, state->goalPos.z + 5.0f, 1.0f, 24);
101 }
102 if (battleStatus->curAttackElement & DAMAGE_TYPE_SHOCK) {
105 }
106 if (battleStatus->curAttackElement & DAMAGE_TYPE_WATER) {
107 fx_water_splash(0, state->goalPos.x, state->goalPos.y, state->goalPos.z + 5.0f, 1.0f, 24);
109 }
110 if (battleStatus->curAttackElement & DAMAGE_TYPE_ICE) {
111 fx_big_snowflakes(0, state->goalPos.x, state->goalPos.y, state->goalPos.z + 5.0f);
113 }
114
115 if (!(battleStatus->curAttackElement & DAMAGE_TYPE_REMOVE_BUFFS)) {
116 if ((targetPart->eventFlags & ACTOR_EVENT_FLAG_ILLUSORY)
117 || (target->transparentStatus == STATUS_KEY_TRANSPARENT)
118 || (targetPart->eventFlags & ACTOR_EVENT_FLAG_BURIED && !(battleStatus->curAttackElement & DAMAGE_TYPE_QUAKE))
119 ) {
120 return HIT_RESULT_MISS;
121 }
122 }
123
124 if (target->stoneStatus == STATUS_KEY_STONE) {
126 show_immune_bonk(state->goalPos.x, state->goalPos.y, state->goalPos.z, 0, 1, 1);
127 show_next_damage_popup(state->goalPos.x, state->goalPos.y, state->goalPos.z, 0, 0);
129 return HIT_RESULT_NICE;
130 }
131 return HIT_RESULT_HIT;
132 }
133
134 if (targetPart->elementalImmunities & battleStatus->curAttackElement) {
136 } else {
138 }
139
141 battleStatus->curAttackElement &= ~DAMAGE_TYPE_IGNORE_DEFENSE;
142 }
143
144 temp = get_defense(target, targetPart->defenseTable, battleStatus->curAttackElement);
145 if (!(battleStatus->curAttackElement & DAMAGE_TYPE_IGNORE_DEFENSE)) {
146 temp += target->defenseBoost;
147 }
148
149 attackDamage = battleStatus->curAttackDamage;
150 if (attackDamage > 99) {
151 attackDamage = 99;
152 }
153 if (attackDamage <= 0) {
154 temp = 0;
155 }
156
158 target->hpChangeCounter = 0;
159
160 if (attackDamage <= 0) {
161 target->hpChangeCounter = 0;
163
164 if (!(battleStatus->curAttackElement & DAMAGE_TYPE_STATUS_ALWAYS_HITS)) {
167 battleStatus->lastAttackDamage = 0;
168 } else {
170 battleStatus->lastAttackDamage = 0;
171 }
172 } else {
173 target->damageCounter += attackDamage;
174 target->hpChangeCounter -= attackDamage;
175 battleStatus->lastAttackDamage = 0;
178
181 && !(targetPart->targetFlags & ACTOR_PART_TARGET_NO_DAMAGE)
182 ) {
183 target->curHP -= attackDamage;
184 if (target->curHP <= 0) {
185 target->curHP = 0;
187 }
188 }
189 battleStatus->lastAttackDamage += attackDamage;
190 target->lastDamageTaken = battleStatus->lastAttackDamage;
191 target->hpChangeCounter = 0;
192 }
193
196 show_immune_bonk(state->goalPos.x, state->goalPos.y, state->goalPos.z, 0, 1, 3);
199 }
200
201 if (battleStatus->curAttackElement & DAMAGE_TYPE_DEATH) {
202 battleStatus->lastAttackDamage = 0;
205 }
206
210 }
213 }
214 if (target->curHP <= 0 && dispatchEvent == EVENT_IMMUNE) {
216 }
217 } else if (dispatchEvent == EVENT_DEATH) {
219 }
220
222 if (battleStatus->curAttackElement & DAMAGE_TYPE_REMOVE_BUFFS) {
224 if (targetPart->eventFlags & ACTOR_EVENT_FLAG_ENCHANTED) {
226 wasStatusInflicted = TRUE;
227 }
230 wasStatusInflicted = TRUE;
231 }
234 }
236 }
237 }
238
239 if (battleStatus->curAttackElement & DAMAGE_TYPE_REMOVE_BUFFS) {
241 if ((target->attackBoost > 0 || target->defenseBoost > 0) ||
242 ((target->staticStatus == 0 && target->transparentStatus != 0) || target->staticStatus != 0))
243 {
244 target->attackBoost = 0;
245 target->defenseBoost = 0;
246 target->isGlowing = FALSE;
248 if (target->staticStatus != 0) {
249 target->staticStatus = 0;
250 target->staticDuration = 0;
251 remove_status_static(target->hudElementDataIndex);
252 }
253 if (target->transparentStatus != 0) {
254 target->transparentStatus = 0;
255 target->transparentDuration = 0;
256 remove_status_transparent(target->hudElementDataIndex);
257 }
258 wasStatusInflicted = TRUE;
260 }
261 }
262 }
263
265 if (battleStatus->curAttackElement & DAMAGE_TYPE_PEACH_BEAM) {
267 if (targetPart->eventFlags & ACTOR_EVENT_FLAG_ENCHANTED) {
269 wasStatusInflicted = TRUE;
270 }
273 wasStatusInflicted = TRUE;
274 }
275 }
276 }
277
279 if (battleStatus->curAttackElement & DAMAGE_TYPE_SPIN_SMASH) {
280 if (dispatchEvent == EVENT_HIT) {
282 }
283 if (dispatchEvent == EVENT_DEATH) {
285 }
286 }
287 }
288
290 && (battleStatus->curAttackElement & (DAMAGE_TYPE_JUMP | DAMAGE_TYPE_POW))
291 && (targetPart->eventFlags & ACTOR_EVENT_FLAG_GROUNDABLE)
292 ) {
293 if (dispatchEvent == EVENT_HIT) {
295 }
298 }
299 }
300
302 && (battleStatus->curAttackElement & DAMAGE_TYPE_POW)
304 ) {
305 if (dispatchEvent == EVENT_HIT) {
307 }
310 }
311 }
312
315 && (targetPart->eventFlags & ACTOR_EVENT_FLAG_FLIPABLE)
316 ) {
317 if (dispatchEvent == EVENT_HIT) {
319 }
322 }
323 }
324
326 if (battleStatus->curAttackElement & DAMAGE_TYPE_FIRE) {
327 if (dispatchEvent == EVENT_HIT) {
329 }
330 if (dispatchEvent == EVENT_DEATH) {
332 }
334 }
335 }
336
338 && battleStatus->lastAttackDamage >= 0
342 ) {
343 // Using this macro because it's nicer to look at, and it also is necessary to wrap the first 5 of these in a
344 // do-while-0 OR to wrap each one individually. It's more likely that it's a macro instead, and much cleaner
345 #define INFLICT_STATUS(STATUS_TYPE) \
346 if ((battleStatus->curAttackStatus & STATUS_FLAG_##STATUS_TYPE) && \
347 try_inflict_status(target, STATUS_KEY_##STATUS_TYPE, STATUS_TURN_MOD_##STATUS_TYPE)) { \
348 wasStatusInflicted = TRUE; \
349 } \
350
359
360 #undef INFLICT_STATUS
361
362 if ((battleStatus->curAttackStatus & STATUS_FLAG_UNUSED) &&
364 wasStatusInflicted = TRUE;
365 }
366
367 if (wasStatusInflicted) {
370 }
373 }
374 }
375 }
376
377 temp = target->actorBlueprint->spookChance;
378 temp = (battleStatus->statusChance * temp) / 100;
379
381 if (rand_int(99) < temp
382 && (target->debuff != STATUS_KEY_UNUSED
383 && target->debuff != STATUS_KEY_DIZZY
384 && target->debuff != STATUS_KEY_PARALYZE
385 && target->debuff != STATUS_KEY_SLEEP
386 && target->debuff != STATUS_KEY_FROZEN
387 && target->debuff != STATUS_KEY_STOP)
388 && !(target->flags & ACTOR_FLAG_FLIPPED))
389 {
395 wasStatusInflicted = TRUE;
397 } else {
400 }
401 }
402
403 battleStatus->wasStatusInflicted = wasStatusInflicted;
404
407 ) {
408 if (battleStatus->lastAttackDamage > 0) {
410 }
411
412 if (battleStatus->lastAttackDamage > 0 || (battleStatus->curAttackElement & DAMAGE_TYPE_STATUS_ALWAYS_HITS) && wasSpecialHit) {
415 } else {
417 }
418 }
419 }
420
423 }
424
426
427 if (actorClass == ACTOR_PARTNER) {
428 if ((battleStatus->lastAttackDamage > 0) && (gBattleStatus.flags1 & BS_FLAGS1_TRIGGER_EVENTS)) {
429 inflict_status(target, STATUS_KEY_KO, battleStatus->lastAttackDamage);
430 }
431 }
432
433 if (!(target->flags & ACTOR_FLAG_NO_DMG_POPUP)) {
434 if (battleStatus->lastAttackDamage == 0) {
435 if (!wasSpecialHit && !wasStatusInflicted) {
436 show_immune_bonk(state->goalPos.x, state->goalPos.y, state->goalPos.z, 0, 1, 3);
437 }
438 } else if (!partImmuneToElement) {
439 if (battleStatus->curAttackElement & (DAMAGE_TYPE_MULTIPLE_POPUPS | DAMAGE_TYPE_SMASH)) {
440 show_next_damage_popup(state->goalPos.x, state->goalPos.y, state->goalPos.z, battleStatus->lastAttackDamage, 0);
441 } else {
442 show_primary_damage_popup(state->goalPos.x, state->goalPos.y, state->goalPos.z, battleStatus->lastAttackDamage, 0);
443 }
444 if (!(targetPart->targetFlags & ACTOR_PART_TARGET_NO_DAMAGE)) {
445 show_damage_fx(target, state->goalPos.x, state->goalPos.y, state->goalPos.z, battleStatus->lastAttackDamage);
446 }
447 }
448 }
449
450 if (battleStatus->lastAttackDamage > 0 && !partImmuneToElement) {
452 if (isFireDamage) {
454 } else if (isShockDamage) {
456 } else if (isIceDamage) {
458 } else {
460 }
461 }
462
463 if ((battleStatus->lastAttackDamage <= 0 && !wasStatusInflicted) || (targetPart->flags & ACTOR_FLAG_DAMAGE_IMMUNE)) {
465 }
466
467 if ((battleStatus->curAttackStatus & STATUS_FLAG_SLEEP) && wasStatusInflicted) {
469 script->varTable[0] = state->goalPos.x;
470 script->varTable[1] = state->goalPos.y;
471 script->varTable[2] = state->goalPos.z;
473 }
474 if ((battleStatus->curAttackStatus & STATUS_FLAG_DIZZY) && wasStatusInflicted) {
476 script->varTable[0] = state->goalPos.x;
477 script->varTable[1] = state->goalPos.y;
478 script->varTable[2] = state->goalPos.z;
480 }
481 if ((battleStatus->curAttackStatus & STATUS_FLAG_PARALYZE) && wasStatusInflicted) {
483 script->varTable[0] = state->goalPos.x;
484 script->varTable[1] = state->goalPos.y;
485 script->varTable[2] = state->goalPos.z;
487 }
488 if ((battleStatus->curAttackStatus & STATUS_FLAG_POISON) && wasStatusInflicted) {
490 script->varTable[0] = state->goalPos.x;
491 script->varTable[1] = state->goalPos.y;
492 script->varTable[2] = state->goalPos.z;
494 }
495 if ((battleStatus->curAttackStatus & STATUS_FLAG_STOP) && wasStatusInflicted) {
497 script->varTable[0] = state->goalPos.x;
498 script->varTable[1] = state->goalPos.y;
499 script->varTable[2] = state->goalPos.z;
501 }
502 if ((battleStatus->curAttackStatus & STATUS_FLAG_FROZEN) && wasStatusInflicted) {
504 script->varTable[0] = state->goalPos.x;
505 script->varTable[1] = state->goalPos.y;
506 script->varTable[2] = state->goalPos.z;
507 script->varTablePtr[3] = target;
509 }
510 if ((battleStatus->curAttackStatus & STATUS_FLAG_SHRINK) && wasStatusInflicted) {
512 script->varTable[0] = state->goalPos.x;
513 script->varTable[1] = state->goalPos.y;
514 script->varTable[2] = state->goalPos.z;
515 script->varTablePtr[3] = target;
517 }
518 if ((battleStatus->curAttackElement & DAMAGE_TYPE_SMASH) && (target->actorType == ACTOR_TYPE_GOOMNUT_TREE)) {
520 }
521
523
525 if (hitResult == HIT_RESULT_HIT) {
527 }
530 }
531 }
532
533 return hitResult;
534}
ActorState state
#define INFLICT_STATUS(STATUS_TYPE)
#define rand_int
@ ACTION_RATING_SUPER
sets nice hits = 2
Definition enums.h:2008
@ ACTION_RATING_NICE
sets nice hits = 1
Definition enums.h:2005
@ ACTOR_CLASS_MASK
Definition enums.h:2113
@ BS_FLAGS1_NO_RATING
Definition enums.h:3610
@ BS_FLAGS1_PARTNER_ACTING
Definition enums.h:3621
@ BS_FLAGS1_SUPER_HIT
Definition enums.h:3612
@ BS_FLAGS1_NICE_HIT
Definition enums.h:3609
@ BS_FLAGS1_TRIGGER_EVENTS
Definition enums.h:3608
@ BS_FLAGS1_SHOW_PLAYER_DECORATIONS
Definition enums.h:3601
@ BS_FLAGS1_INCLUDE_POWER_UPS
Definition enums.h:3604
@ BS_FLAGS1_ACTORS_VISIBLE
Definition enums.h:3598
@ ACTOR_EVENT_FLAG_RIDING_BROOMSTICK
Actor is on Magikoopa Broomstick, effect seems to be redundant.
Definition enums.h:3424
@ ACTOR_EVENT_FLAG_STAR_ROD_ENCHANTED
Actor glows and listens for Star Beam and Peach Beam events.
Definition enums.h:3420
@ ACTOR_EVENT_FLAG_GROUNDABLE
Actor can be knocked down from flight; triggered by jump attacks.
Definition enums.h:3416
@ ACTOR_EVENT_FLAG_ATTACK_CHARGED
Actor has charged an attack that can be removed with Star Beam.
Definition enums.h:3423
@ ACTOR_EVENT_FLAG_BURIED
Actor can only by hit by quake-element attacks.
Definition enums.h:3413
@ ACTOR_EVENT_FLAG_FLIPABLE
Actor can be flipped; triggered by jump and quake attacks.
Definition enums.h:3414
@ ACTOR_EVENT_FLAG_ENCHANTED
Actor glows and listens for the Star Beam event.
Definition enums.h:3419
@ ACTOR_PART_TARGET_NO_DAMAGE
Definition enums.h:1903
@ STATUS_KEY_PARALYZE
Definition enums.h:2806
@ STATUS_KEY_FROZEN
Definition enums.h:2808
@ STATUS_TURN_MOD_UNUSED
Definition enums.h:2836
@ STATUS_KEY_KO
Definition enums.h:2814
@ STATUS_KEY_SLEEP
Definition enums.h:2807
@ STATUS_KEY_UNUSED
Definition enums.h:2804
@ STATUS_KEY_STOP
Definition enums.h:2809
@ STATUS_KEY_DIZZY
Definition enums.h:2805
@ HIT_RESULT_NO_DAMAGE
Definition enums.h:1978
@ HIT_RESULT_NICE_NO_DAMAGE
Definition enums.h:1979
@ HIT_RESULT_NICE
Definition enums.h:1977
@ STATUS_FLAG_STOP
Definition enums.h:2855
@ STATUS_FLAG_FROZEN
Definition enums.h:2848
@ STATUS_FLAG_SHRINK
Definition enums.h:2853
@ STATUS_FLAG_PARALYZE
Definition enums.h:2850
@ STATUS_FLAG_DIZZY
Definition enums.h:2852
@ STATUS_FLAG_SLEEP
Definition enums.h:2846
@ STATUS_FLAG_POISON
Definition enums.h:2851
@ STATUS_FLAG_UNUSED
Definition enums.h:2849
@ SOUND_DAMAGE_STARS
Definition enums.h:953
@ SOUND_INFLICT_STATUS
Definition enums.h:1358
@ SOUND_SMACK_TREE
Definition enums.h:790
@ SOUND_HIT_SHOCK
Definition enums.h:1198
@ SOUND_HIT_ICE
Definition enums.h:729
@ SOUND_HIT_FIRE
Definition enums.h:728
@ SOUND_INFLICT_SLEEP
Definition enums.h:1357
@ ACTOR_PARTNER
Definition enums.h:2119
@ ACTOR_FLAG_DAMAGE_IMMUNE
Definition enums.h:3367
@ ACTOR_FLAG_NO_DMG_POPUP
Hide damage popup.
Definition enums.h:3375
@ ACTOR_FLAG_FLIPPED
Actor has been flipped over.
Definition enums.h:3364
@ EVENT_HIT
Definition enums.h:2165
@ EVENT_INVUNERABLE_TAUNT
Definition enums.h:2183
@ EVENT_SCARE_AWAY
Definition enums.h:2207
@ EVENT_BURN_HIT
Definition enums.h:2169
@ EVENT_STAR_BEAM
Definition enums.h:2173
@ EVENT_IMMUNE
Definition enums.h:2179
@ EVENT_FALL_TRIGGER
Definition enums.h:2167
@ EVENT_PEACH_BEAM
Definition enums.h:2174
@ EVENT_BURN_DEATH
Definition enums.h:2190
@ EVENT_ZERO_DAMAGE
Definition enums.h:2177
@ EVENT_SPIN_SMASH_HIT
Definition enums.h:2166
@ EVENT_EXPLODE_TRIGGER
Definition enums.h:2188
@ EVENT_SPIN_SMASH_DEATH
Definition enums.h:2187
@ EVENT_HIT_COMBO
Definition enums.h:2164
@ EVENT_DEATH
Definition enums.h:2186
@ EVENT_FLIP_TRIGGER
Definition enums.h:2168
@ ACTOR_PART_FLAG_DAMAGE_IMMUNE
electrified Plays extra hurt SFX?
Definition enums.h:3392
@ DAMAGE_TYPE_SPIN_SMASH
Definition enums.h:2910
@ DAMAGE_TYPE_POW
Definition enums.h:2895
@ DAMAGE_TYPE_ICE
Definition enums.h:2888
@ DAMAGE_TYPE_STATUS_ALWAYS_HITS
Definition enums.h:2914
@ DAMAGE_TYPE_SMASH
Definition enums.h:2891
@ DAMAGE_TYPE_PEACH_BEAM
Definition enums.h:2907
@ DAMAGE_TYPE_IGNORE_DEFENSE
Definition enums.h:2911
@ DAMAGE_TYPE_REMOVE_BUFFS
Definition enums.h:2906
@ DAMAGE_TYPE_SHOCK
Definition enums.h:2890
@ DAMAGE_TYPE_FIRE
Definition enums.h:2886
@ DAMAGE_TYPE_DEATH
Definition enums.h:2898
@ DAMAGE_TYPE_QUAKE
Definition enums.h:2896
@ DAMAGE_TYPE_FEAR
Definition enums.h:2897
@ DAMAGE_TYPE_MULTIPLE_POPUPS
Definition enums.h:2913
@ DAMAGE_TYPE_WATER
Definition enums.h:2887
@ EVT_PRIORITY_A
Definition evt.h:154
void show_primary_damage_popup(f32 x, f32 y, f32 z, s32 attack, s32 a)
Definition 190B20.c:2001
void show_immune_bonk(f32 x, f32 y, f32 z, s32, s32, s32)
void dispatch_event_actor(Actor *, s32)
Definition 1A5830.c:102
void show_actor_health_bar(Actor *)
Definition 190B20.c:2237
void remove_status_static(s32)
void remove_status_transparent(s32)
void set_actor_flash_mode(Actor *actor, s32 arg1)
Definition 190B20.c:2428
void show_damage_fx(Actor *actor, f32 x, f32 y, f32 z, s32 damage)
Definition 190B20.c:2066
void cancel_action_rating_combo(Actor *)
Definition 190B20.c:2171
Evt * start_script(EvtScript *source, s32 priority, s32 initialState)
s32 inflict_status(Actor *, s32, s32)
Definition 190B20.c:1816
void show_next_damage_popup(f32 x, f32 y, f32 z, s32 damageAmount, s32 angle)
Definition 190B20.c:2027
s32 get_defense(Actor *actor, s32 *defenseTable, s32 elementFlags)
Definition 190B20.c:1951
void apply_shock_effect(Actor *)
void show_action_rating(s32, Actor *, f32, f32, f32)
Definition 190B20.c:2092
EvtScript EVS_PlayStopHitFX
Definition dmg_player.c:109
EvtScript EVS_PlayFreezeHitFX
Definition dmg_player.c:115
EvtScript EVS_PlayShrinkHitFX
Definition dmg_player.c:125
EvtScript EVS_PlayParalyzeHitFX
Definition dmg_player.c:97
EvtScript EVS_PlayPoisonHitFX
Definition dmg_player.c:103
EvtScript EVS_PlaySleepHitFX
Definition dmg_player.c:85
EvtScript EVS_PlayDizzyHitFX
Definition dmg_player.c:91
#define PANIC()
Definition macros.h:55