14 NULL, NULL, NULL, NULL,
15 NULL, NULL, NULL, NULL,
16 NULL, NULL, NULL, NULL,
17 NULL, NULL, NULL, NULL,
18 NULL, NULL, NULL, NULL,
19 NULL, NULL, NULL, NULL,
33 gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
34 gsDPSetCycleType(G_CYC_1CYCLE),
35 gsDPSetTexturePersp(G_TP_NONE),
36 gsDPSetTextureDetail(G_TD_CLAMP),
37 gsDPSetTextureLOD(G_TL_TILE),
38 gsDPSetTextureFilter(G_TF_POINT),
39 gsDPSetTextureLUT(G_TT_NONE),
40 gsDPSetTextureConvert(G_TC_FILT),
69 f32 targetX, targetY, targetZ;
73 s32 hiddenByDarkness = FALSE;
90 targetDataList->
partID = 1;
107 if (partnerActor != NULL) {
109 targetDataList->
partID = 1;
110 if (!targetHomePos) {
128 if (targetActor == NULL) {
138 for (j = 0; j < numParts; targetPart = targetPart->
nextPart, j++) {
143 sampleRow = !targetHomePos;
145 targetX = targetActor->
curPos.
x;
146 targetY = targetActor->
curPos.
y;
147 targetZ = targetActor->
curPos.
z;
162 f14 = targetZ + 5.0f;
171 f14 = targetZ + 5.0f;
180 targetDataList->
truePos.
x = targetX;
181 targetDataList->
truePos.
y = targetY;
182 targetDataList->
truePos.
z = targetZ;
194 if (targetDataList->
sortPos.
y < 40) {
195 targetDataList->
row = 0;
196 }
else if (targetDataList->
sortPos.
y < 85) {
197 targetDataList->
row = 1;
198 }
else if (targetDataList->
sortPos.
y < 100) {
199 targetDataList->
row = 2;
201 targetDataList->
row = 3;
205 if (targetDataList->
sortPos.
x < 25) {
206 targetDataList->
column = 0;
207 }
else if (targetDataList->
sortPos.
x < 65) {
208 targetDataList->
column = 1;
209 }
else if (targetDataList->
sortPos.
x < 105) {
210 targetDataList->
column = 2;
212 targetDataList->
column = 3;
216 if (targetDataList->
sortPos.
z < -30) {
217 targetDataList->
layer = 0;
219 targetDataList->
layer = 1;
241 for (i = 0; i < numTargets; i++) {
242 target = &targetDataList[i];
254 goto FIRST_PASS_REMOVE;
260 if (overlayZoom >= 215.0f) {
262 hiddenByDarkness = TRUE;
263 goto FIRST_PASS_REMOVE;
274 goto FIRST_PASS_REMOVE;
279 removeTarget = FALSE;
283 for (j = i; j < numTargets - 1; j++) {
294 for (i = 0; i < numTargets; i++) {
295 target = &targetDataList[i];
305 goto SECOND_PASS_REMOVE;
309 goto SECOND_PASS_REMOVE;
313 goto SECOND_PASS_REMOVE;
317 goto SECOND_PASS_REMOVE;
321 goto SECOND_PASS_REMOVE;
325 goto SECOND_PASS_REMOVE;
329 goto SECOND_PASS_REMOVE;
333 goto SECOND_PASS_REMOVE;
337 goto SECOND_PASS_REMOVE;
345 s32 foundAbove = FALSE;
347 for (j = 0; j < numTargets; j++) {
348 otherTarget = &targetDataList[j];
349 if (target != otherTarget) {
352 && target->
row < otherTarget->
row
362 goto SECOND_PASS_REMOVE;
369 s32 foundInFront = FALSE;
371 for (j = 0; j < numTargets; j++) {
372 otherTarget = &targetDataList[j];
373 if (target != otherTarget) {
375 && target->
row == otherTarget->
row
386 goto SECOND_PASS_REMOVE;
392 goto SECOND_PASS_REMOVE;
396 goto SECOND_PASS_REMOVE;
400 goto SECOND_PASS_REMOVE;
404 goto SECOND_PASS_REMOVE;
408 goto SECOND_PASS_REMOVE;
412 goto SECOND_PASS_REMOVE;
416 goto SECOND_PASS_REMOVE;
420 goto SECOND_PASS_REMOVE;
424 goto SECOND_PASS_REMOVE;
428 removeTarget = FALSE;
432 for (j = i; j < numTargets - 1; j++) {
441 if (numTargets == 0 && hiddenByDarkness) {
451 for (i = 0; i < numTargets; i++) {
452 targetIndexList[i] = i;
456 for (i = 0; i < numTargets - 1; i++) {
457 for (j = i + 1; j < numTargets; j++) {
458 s32 index1 = targetIndexList[i];
459 s32 index2 = targetIndexList[j];
460 target = &targetDataList[index1];
461 otherTarget = &targetDataList[index2];
463 targetIndexList[i] = targetIndexList[j];
464 targetIndexList[j] = index1;
489 if (targetActor == NULL) {
496 for (i = 0; i < numParts; i++) {
572 if (partner != NULL) {
585 if (partnersEnabled >= 2) {
609 hasValidItem = FALSE;
612 s16 itemID = playerData->
invItems[i];
614 if (itemID != ITEM_NONE) {
639 s32 enemiesStillAlive = FALSE;
646 enemiesStillAlive = TRUE;
650 return !enemiesStillAlive;
678 s32 hasAnyBadgeMoves;
700 if (badge != ITEM_NONE) {
704 move = &moveTable[moveID];
715 hasAnyBadgeMoves = FALSE;
737 hasAnyBadgeMoves = TRUE;
742 if (playerData->
curFP < fpCost) {
755 if (!hasAnyBadgeMoves) {
772 s32 hasAnyBadgeMoves;
793 if (badge != MOVE_NONE) {
796 move = &moveTable[moveID];
807 hasAnyBadgeMoves = FALSE;
829 hasAnyBadgeMoves = TRUE;
834 if (playerData->
curFP < fpCost) {
847 if (!hasAnyBadgeMoves) {
864 s32 hasAnyBadgeMoves;
886 + (MOVE_HEADBONK1 - 6)
897 hasAnyBadgeMoves = FALSE;
916 hasAnyBadgeMoves = TRUE;
924 if (playerData->
curFP < fpCost) {
932 if (!hasAnyBadgeMoves) {
975 playerData->
curFP -= fpCost;
1006 if ((s32) animID >= 0) {
1048 if ((s32) anim >= 0) {
1125 actor->
flags &= ~flags;
1130 actor->
flags &= ~flags;
1133 part->
flags &= ~flags;
1141 f32 sinAngleRad =
sin_rad(angleRad);
1142 f32 cosAngleRad =
cos_rad(angleRad);
1144 vector->
x += speed * sinAngleRad;
1145 vector->
z += -speed * cosAngleRad;
1150 f32 sinAngleRad =
sin_rad(angleRad);
1151 f32 cosAngleRad =
cos_rad(angleRad);
1153 vector->
x += speed * sinAngleRad;
1154 vector->
z += -speed * cosAngleRad;
1159 f32 sinAngleRad =
sin_rad(angleRad);
1160 f32 cosAngleRad =
cos_rad(angleRad);
1162 vector->
x += speed * sinAngleRad;
1163 vector->
z += -speed * cosAngleRad;
1172 fx_landing_dust(0, xPos, yPos + 0.0f, zPos,
D_802938A4);
1173 }
else if (var0 == 1) {
1182 xPos + (sinTheta * 24.0f * 0.2f),
1184 zPos + (cosTheta * 24.0f * 0.2f),
1194 if (partID < 0 || part->nextPart == NULL) {
1198 while (part != NULL) {
1240 player->
rot.
x = 0.0f;
1241 player->
rot.
y = 0.0f;
1242 player->
rot.
z = 0.0f;
1382 ASSERT(decorations != NULL);
1402 decorations->
effect[j] = NULL;
1403 decorations->
type[j] = 0;
1408 ASSERT(partMovement != NULL);
1413 player->
disableEffect = fx_disable_x(0, -142.0f, 34.0f, 1.0f, 0);
1425 Actor* partnerActor;
1427 Evt* takeTurnScript;
1462 ASSERT(partnerActor != NULL);
1477 partnerActor->
numParts = partCount;
1488 partnerActor->
yaw = 0.0f;
1489 partnerActor->
rot.
x = 0.0f;
1490 partnerActor->
rot.
y = 0.0f;
1491 partnerActor->
rot.
z = 0.0f;
1495 partnerActor->
scale.
x = 1.0f;
1496 partnerActor->
scale.
y = 1.0f;
1497 partnerActor->
scale.
z = 1.0f;
1518 partnerActor->
debuff = 0;
1554 for (i = 0; i < partCount; i++) {
1611 ASSERT(decorations != NULL);
1631 decorations->
effect[j] = NULL;
1632 decorations->
type[j] = 0;
1650 if (i + 1 >= partCount) {
1667 partnerActor->
disableEffect = fx_disable_x(0, -142.0f, 34.0f, 1.0f, 0);
1682 Evt* takeTurnScript;
1688 if (formation->home.index >=
EVT_LIMIT) {
1693 x = formation->home.vec->x;
1694 y = formation->home.vec->y;
1695 z = formation->home.vec->z;
1698 formationActor = formation->actor;
1734 actor->
rot.
x = 0.0f;
1735 actor->
rot.
y = 0.0f;
1736 actor->
rot.
z = 0.0f;
1801 actor->
state.varTable[0] = formation->var0;
1802 actor->
state.varTable[1] = formation->var1;
1803 actor->
state.varTable[2] = formation->var2;
1804 actor->
state.varTable[3] = formation->var3;
1811 for (j = 0; j < partCount; j++) {
1873 ASSERT(decorations != NULL);
1893 decorations->
effect[k] = NULL;
1894 decorations->
type[k] = 0;
1917 if (j + 1 >= partCount) {
1938 actor->
disableEffect = fx_disable_x(0, -142.0f, 34.0f, 1.0f, 0);
1947 if (animations == NULL) {
2013 while (*anim != NULL) {
2017 if (*anim == statusKey) {
2028 s32 normalDefense = 0;
2043 return normalDefense;
2047 s32 defaultChance = 0;
2062 return defaultChance;
2066 s32 defaultTurnMod = 0;
2081 return defaultTurnMod;
2088 switch (statusTypeKey) {
2101 if (target->
debuff != statusTypeKey) {
2105 target->
debuff = statusTypeKey;
2107 if ((s8)duration > 9) {
2111 switch (statusTypeKey) {
2115 if (effect != NULL) {
2156 if ((s8)duration > 9) {
2168 if ((s8)duration > 9) {
2175 if (target->
koStatus < statusTypeKey) {
2178 if ((s8)duration > 9) {
2188 if ((s8)duration > 9) {
2205 if (statusTypeKey != target->
koStatus) {
2221 s32 minDefense = 255;
2223 if (defenseTable != NULL) {
2225 #define CHECK_DEFENSE(element) \
2226 if (elementFlags & DAMAGE_TYPE_##element) { \
2227 elemDefense = lookup_defense(defenseTable, ELEMENT_##element); \
2228 if (elemDefense < minDefense) { \
2229 minDefense = elemDefense; \
2245 #undef CHECK_DEFENSE
2249 if (minDefense == 255) {
2251 if (elemDefense < 255) {
2252 minDefense = elemDefense;
2257 if (minDefense == 99) {
2260 }
else if (minDefense > 0) {
2272 for (i = 0; i < 1; i++) {
2290 fx_damage_indicator(0, posX, posY, posZ, 10.0f, angle, damageAmt, &
gDamageCountEffects[i]);
2316 fx_damage_indicator(0, posX, posY, posZ, 10.0f, angle, damageAmt, &
gDamageCountEffects[i]);
2340 }
else if (damage < 5) {
2342 }
else if (damage < 9) {
2349 fx_ring_blast(0, x, y, z, 1.0f, 24);
2353 fx_water_splash(0, x, y, z, 1.0f, 24);
2355 fx_firework(0, x, y, z, 1.0, intensity);
2450 if (actor != NULL) {
2469 if (actor != NULL) {
2487 if (actor != NULL) {
2512 target->
flags &= ~ACTOR_FLAG_HEALTH_BAR_HIDDEN;
2521 if (enemy != NULL) {
2525 enemy->
flags &= ~ACTOR_FLAG_HEALTH_BAR_HIDDEN;
2557 if (chance > 0 && chance >=
rand_int(100)) {
2582 s32 statusDuration = 0;
2585 statusDuration = duration;
2588 if (statusDuration > 0) {
2610 && (part->idleAnimations != NULL)
2630 && (part->idleAnimations != NULL)
2646 if (decorations->
glowState != glowState) {
2657 && (part->idleAnimations != NULL)
2676 && part->idleAnimations != NULL
2699 && part->decorationTable != NULL
2701 && part->idleAnimations != NULL
2719 && (part->idleAnimations != NULL)
2732 decorations->
type[decorationIndex] = decorationType;
2733 decorations->
changed[decorationIndex] = TRUE;
2734 decorations->
state[decorationIndex] = 0;
2742 && part->idleAnimations
2757 && part->idleAnimations != NULL
2767 s32 hasAbility = FALSE;
2769 switch (actorClass) {
2788 part->
flags &= ~ACTOR_PART_FLAG_NO_SHADOW;
2801 part->
flags &= ~ACTOR_PART_FLAG_NO_SHADOW;
2814 battleStatus->
flags1 &= ~BS_FLAGS1_JUMP_CHARGED;
2818 battleStatus->
flags1 &= ~BS_FLAGS1_HAMMER_CHARGED;
2826 battleStatus->
flags1 &= ~BS_FLAGS1_HUSTLED;
2836 playerActorParts->
flags &= ~ACTOR_PART_FLAG_TRANSPARENT;
2845 fx_water_splash(0, player->
curPos.
x - 10.0f, player->
curPos.
y + 5.0f, player->
curPos.
z + 5.0f, 1.0f, 24);
2846 fx_water_splash(0, player->
curPos.
x - 15.0f, player->
curPos.
y + 32.0f, player->
curPos.
z + 5.0f, 1.0f, 24);
2847 fx_water_splash(1, player->
curPos.
x + 15.0f, player->
curPos.
y + 22.0f, player->
curPos.
z + 5.0f, 1.0f, 24);
2881 if (koDuration == 0) {
2886 if (partner != NULL) {
2901 if (enemy != NULL) {
2916 gDPSetRenderMode(
gMainGfxPos++, G_RM_OPA_SURF, G_RM_OPA_SURF2);
2919 gDPSetRenderMode(
gMainGfxPos++, G_RM_XLU_SURF, G_RM_XLU_SURF2);
2920 gDPSetCombineMode(
gMainGfxPos++, G_CC_PRIMITIVE, G_CC_PRIMITIVE);
2924 gDPFillRectangle(
gMainGfxPos++, left, top, right, bottom);
2927 gDPSetRenderMode(
gMainGfxPos++, G_RM_TEX_EDGE, G_RM_TEX_EDGE2);
2928 gDPSetCombineMode(
gMainGfxPos++, G_CC_DECALRGBA, G_CC_DECALRGBA);
2932 u16 right = left + arg6;
2933 u16 bottom = top + arg7;
2950 while (partIt != NULL) {
2987 model->
flags &= ~MODEL_FLAG_HIDDEN;
3022 model->
flags &= ~MODEL_FLAG_HIDDEN;
3031 Call(N(StartRumbleWithParams), 256, 30)
3032 Call(N(StartRumbleWithParams), 200, 15)
3033 Call(N(StartRumbleWithParams), 50, 15)
3039 Call(N(StartRumbleWithParams), 100, 20)
3045 Call(N(StartRumbleWithParams), 150, 20)
3051 Call(N(StartRumbleWithParams), 200, 30)
3057 Call(N(StartRumbleWithParams), 256, 40)
3063 Call(N(StartRumbleWithParams), 256, 60)
3069 Call(N(StartRumbleWithParams), 100, 20)
3075 Call(N(StartRumbleWithParams), 150, 20)
3081 Call(N(StartRumbleWithParams), 200, 30)
3087 Call(N(StartRumbleWithParams), 256, 40)
3093 Call(N(StartRumbleWithParams), 256, 60)
void set_part_flag_bits(s32 actorID, s32 partID, s32 flags)
void load_partner_actor(void)
void reset_all_actor_sounds(Actor *actor)
s32 btl_are_all_enemies_defeated(void)
s32 lookup_status_duration_mod(s32 *statusTable, s32 statusKey)
s32 try_inflict_status(Actor *actor, s32 statusTypeKey, s32 statusKey)
void hide_foreground_models(void)
s32 player_team_is_ability_active(Actor *actor, s32 ability)
void remove_actor_decoration(Actor *actor, s32 decorationIndex)
s32 func_8026324C(Actor *actor, Actor *targetActor)
void set_actor_anim_by_ref(Actor *actor, ActorPart *part, AnimID anim)
void start_rumble_type(u32 type)
void btl_init_menu_items(void)
void remove_player_buffs(s32 buffs)
s32 func_80263064(Actor *actor, Actor *targetActor, b32 unused)
void add_xz_vec3f_copy1(Vec3f *vector, f32 speed, f32 angleDeg)
s32 btl_check_player_defeated(void)
void btl_appendGfx_prim_quad(u8 r, u8 g, u8 b, u8 a, u16 left, u16 top, u16 right, u16 bottom)
#define CHECK_DEFENSE(element)
void btl_update_ko_status(void)
void show_next_damage_popup(f32 posX, f32 posY, f32 posZ, s32 damageAmt, b32 angle)
void set_part_pal_adjustment(ActorPart *part, s32 palAdjust)
s32 inflict_status(Actor *target, s32 statusTypeKey, s32 duration)
void update_damage_popups(void)
void func_80266970(Actor *target)
void add_part_decoration(ActorPart *part, s32 decorationIndex, s32 decorationType)
void reset_actor_turn_info(void)
void clear_part_flash_mode(ActorPart *part)
void clear_actor_static_pal_adjustments(Actor *actor)
void show_damage_fx(Actor *actor, f32 x, f32 y, f32 z, s32 damage)
void btl_check_can_change_partner(void)
PartnerDMAData bPartnerDmaTable[]
void btl_init_menu_hammer(void)
void hide_foreground_models_unchecked(void)
void create_home_target_list(Actor *actor)
s32 count_power_plus(s32 damageType)
void create_target_list(Actor *actor, b32 targetHomePos)
void add_xz_vec3f(Vec3f *vector, f32 speed, f32 angleDeg)
void btl_init_menu_partner(void)
void clear_actor_flash_mode(Actor *actor)
void hide_actor_health_bar(Actor *target)
void set_part_flash_mode(ActorPart *part, s32 flashState)
EvtScript EVS_BattleRumble_Long
EvtScript EVS_BattleRumble_HitLight
EvtScript EVS_BattleRumble_PlayerMin
ActorPart * get_actor_part(Actor *actor, s32 partID)
EvtScript EVS_BattleRumble_HitHeavy
void set_actor_pal_adjustment(Actor *actor, s32 palAdjust)
s32 get_defense(Actor *actor, s32 *defenseTable, s32 elementFlags)
void add_xz_vec3f_copy2(Vec3f *vector, f32 speed, f32 angleDeg)
void set_actor_anim(s32 actorID, s32 partID, AnimID animID)
ActorPartBlueprint bMarioParts[]
EvtScript EVS_BattleRumble_HitMin
void create_part_shadow_by_ref(UNK_TYPE arg0, ActorPart *part)
void set_actor_anim_rate(s32 actorID, s32 partID, f32 rate)
void show_action_rating(s32 rating, Actor *actor, f32 x, f32 y, f32 z)
EvtScript EVS_BattleRumble_PlayerMax
void set_part_glow_pal(ActorPart *part, s32 glowState)
void show_foreground_models_unchecked(void)
ActorBlueprint bPlayerActorBlueprint
void set_actor_flash_mode(Actor *actor, s32 flashState)
void update_health_bars(void)
EvtScript EVS_BattleRumble_PlayerHeavy
void deduct_current_move_fp(void)
void play_movement_dust_effects(s32 var0, f32 xPos, f32 yPos, f32 zPos, f32 angleDeg)
void clear_part_pal_adjustment(ActorPart *part)
s32 get_player_anim_for_status(s32 statusKey)
void btl_draw_prim_quad(u8 r, u8 g, u8 b, u8 a, u16 left, u16 top, u16 arg6, u16 arg7)
void clear_part_flag_bits(s32 actorID, s32 partID, s32 flags)
void set_actor_glow_pal(Actor *actor, s32 glowState)
s32 inflict_status_set_duration(Actor *actor, s32 statusTypeKey, s32 statusDurationKey, s32 duration)
void set_part_yaw(s32 actorID, s32 partID, s32 value)
void add_actor_decoration(Actor *actor, s32 decorationIndex, s32 decorationType)
EvtScript EVS_BattleRumble_HitMax
EvtScript EVS_BattleRumble_PlayerLight
void set_actor_yaw(s32 actorID, s32 yaw)
void remove_part_shadow(s32 actorID, s32 partID)
EvtScript EVS_BattleRumble_HitExtreme
void load_player_actor(void)
void show_actor_health_bar(Actor *target)
void update_action_ratings(void)
void show_primary_damage_popup(f32 posX, f32 posY, f32 posZ, s32 damageAmt, b32 angle)
void clear_part_glow_pal(ActorPart *part)
s32 get_npc_anim_for_status(AnimID *, s32)
void create_current_pos_target_list(Actor *actor)
s32 func_80263230(Actor *actor, Actor *targetActor)
EffectInstance * gDamageCountEffects[]
s32 btl_check_enemies_defeated(void)
s32 inflict_partner_ko(Actor *target, s32 statusTypeKey, s32 duration)
void btl_init_menu_boots(void)
void show_foreground_models(void)
void remove_part_decoration(ActorPart *part, s32 decorationIndex)
s32 lookup_defense(s32 *defenseTable, s32 elementKey)
Actor * create_actor(Formation formation)
void clear_actor_glow_pal(Actor *actor)
s32 lookup_status_chance(s32 *statusTable, s32 statusKey)
EvtScript EVS_BattleRumble_PlayerExtreme
void create_part_shadow(s32 actorID, s32 partID)
struct EffectInstance * disableEffect
struct Evt * handlePhaseScript
struct EffectInstance * attackResultEffect
ActorPartBlueprint * staticData
struct Evt * takeTurnScript
struct EffectInstance * effect[2]
struct ActorPartMovement * movement
EvtScript * handleEventSource
struct ActorBlueprint * actorBlueprint
Vec2b projectileTargetOffset
struct Evt * handleEventScript
struct ActorPart * partsTable
struct SelectableTarget targetData[24]
EvtScript * handlePhaseSource
struct EffectInstance * icePillarEffect
struct ActorBlueprint * ActorBlueprint
union Evt::@8 owner1
Initially -1.
EvtScript * takeTurnSource
struct ActorPart * nextPart
struct DecorationTable * decorationTable
Vec2b projectileTargetOffset
struct AttackResultTextFXData * attackResultText
struct DisableXFXData * disableX
struct PartnerBuffFXData * partnerBuff
struct DamageIndicatorFXData * damageIndicator
@ FX_BUFF_DATA_TURBO_CHARGE
@ FX_BUFF_DATA_CLOUD_NINE
@ FX_BUFF_DATA_WATER_BLOCK
#define ASSERT(condition)
@ FX_INSTANCE_FLAG_DISMISS
@ ACTION_RATING_SUPER
sets nice hits = 2
@ ACTION_RATING_NICE_SUPER_COMBO
'Nice' but becomes 'Super' if nice hits > 2
@ ACTION_RATING_NICE_NO_COMBO
clears nice hits
@ ACTION_RATING_MISS
clears nice hits
@ ACTION_RATING_LUCKY
clears nice hits
@ ACTION_RATING_NICE
sets nice hits = 1
@ BS_FLAGS1_PLAYER_IN_BACK
@ BS_FLAGS1_INCLUDE_POWER_UPS
@ PLAYER_BUFF_PARTNER_GLOWING
@ PLAYER_BUFF_JUMP_CHARGE
@ PLAYER_BUFF_WATER_BLOCK
@ PLAYER_BUFF_TURBO_CHARGE
@ PLAYER_BUFF_TRANSPARENT
@ PLAYER_BUFF_HAMMER_CHARGE
@ DEMO_BTL_FLAG_PARTNER_ACTING
@ ACTOR_PAL_ADJUST_BLEND_PALETTES_VARYING_INTERVALS
@ ACTOR_PAL_ADJUST_POISON
@ ACTOR_PAL_ADJUST_PARALYZE
@ ACTOR_PAL_ADJUST_BLEND_PALETTES_UNIFORM_INTERVALS
@ ACTOR_PAL_ADJUST_STATIC
@ DAMAGE_INTENSITY_EXTREME
@ DAMAGE_INTENSITY_MEDIUM
@ ACTOR_PART_TARGET_NO_SMASH
@ ACTOR_PART_TARGET_NO_JUMP
@ BTL_MENU_TYPE_CHANGE_PARTNER
@ BS_FLAGS2_NO_TARGET_AVAILABLE
@ BS_FLAGS2_IGNORE_DARKNESS
@ STATUS_KEY_INACTIVE_DIZZY
@ STATUS_TURN_MOD_DEFAULT
@ STATUS_KEY_INACTIVE_WEARY
@ ITEM_TYPE_FLAG_BATTLE_USABLE
@ BATTLE_SUBMENU_STATUS_ENABLED
@ BATTLE_SUBMENU_STATUS_NO_TARGETS
@ BATTLE_SUBMENU_STATUS_NOT_ENOUGH_FP
@ BATTLE_SUBMENU_STATUS_NO_TARGETS_2
@ TARGET_FLAG_PRIMARY_ONLY
@ TARGET_FLAG_ALLOW_TARGET_ONLY
@ SOUND_DESTROY_WATER_BLOCK
@ RENDER_MODE_SURFACE_XLU_LAYER3
@ BTL_RUMBLE_PLAYER_HEAVY
@ BTL_RUMBLE_PLAYER_EXTREME
@ BTL_RUMBLE_PLAYER_LIGHT
@ ACTOR_FLAG_FLYING
Quake Hammer can't hit.
@ ACTOR_FLAG_HEALTH_BAR_HIDDEN
@ ACTOR_FLAG_MINOR_TARGET
@ ACTOR_FLAG_UPSIDE_DOWN
HP bar offset below actor (e.g. Swooper when upside-down).
@ ACTOR_FLAG_LOW_PRIORITY_TARGET
@ ACTOR_FLAG_TARGET_ONLY
Battle ends even if undefeated. No turn.
@ ACTOR_FLAG_NO_DMG_APPLY
Damage is not applied to actor HP.
@ ACTOR_PART_FLAG_TARGET_ONLY
@ ACTOR_PART_FLAG_PRIMARY_TARGET
@ ACTOR_PART_FLAG_SKIP_MOVEMENT_ALLOC
@ ACTOR_PART_FLAG_NO_SHADOW
@ ACTOR_PART_FLAG_USE_ABSOLUTE_POSITION
@ ACTOR_PART_FLAG_NO_DECORATIONS
@ ACTOR_PART_FLAG_NO_TATTLE
@ ACTOR_PART_FLAG_IGNORE_BELOW_CHECK
@ ACTOR_PART_FLAG_NO_TARGET
Cannot be targeted.
@ ACTOR_PART_FLAG_INVISIBLE
@ ACTOR_PART_FLAG_MINOR_TARGET
@ DAMAGE_TYPE_IGNORE_DEFENSE
@ EVT_FLAG_RUN_IMMEDIATELY
don't wait for next update_scripts call
void create_status_debuff(s32, s32)
void create_status_transparent(s32, s32)
void _remove_part_decoration(ActorPart *part, s32 decorationIndex)
s32 is_ability_active(s32 arg0)
s32 get_model_list_index_from_tree_index(s32 treeIndex)
void create_status_static(s32, s32)
void remove_status_static(s32)
s32 create_status_icon_set(void)
void remove_status_transparent(s32)
struct Model * get_model_from_list_index(s32 listIndex)
s32 is_partner_ability_active(s32)
Evt * start_script(EvtScript *source, s32 priority, s32 initialState)
void _add_part_decoration(ActorPart *)
Actor * get_actor(s32 actorID)
void kill_script_by_ID(s32 id)
s32 create_shadow_type(s32 type, f32 x, f32 y, f32 z)
void get_screen_overlay_params(s32, u8 *type, f32 *zoom)
void btl_set_state(s32 battleState)
void apply_shock_effect(Actor *)
void * heap_malloc(s32 size)
void sfx_play_sound(s32 soundID)
#define PM_CC_PRIM_FULL_ALPHA
#define End
Signals the end of EVT script data. A script missing this will likely crash on load.
#define STATUS_KEY_IGNORE_RES
#define Call(FUNC, ARGS...)
Calls a given C EVT API function with any number of arguments.
#define Return
Kills the current EVT thread.
s32 spr_update_sprite(s32 spriteInstanceID, s32 animID, f32 timeScale)
s32 spr_get_notify_value(s32 spriteIndex)
s32 spr_load_npc_sprite(s32 animID, u32 *extraAnimList)
s32 spr_update_player_sprite(s32 spriteInstanceID, s32 animID, f32 timeScale)
@ SPRITE_ID_TAIL_ALLOCATE
ActorSounds bActorSoundTable[]
s32 * foregroundModelList
struct ActorPartBlueprint * partsData
s16 delay[2]
Number of frames to wait between walk/fly sounds. Negative values are in distance.
#define STAGE_MODEL_LIST_END
s8 moveCategory
0 = jump, 1 = hammer, 5 = partner, ...
struct EffectInstance * waterBlockEffect
struct EffectInstance * cloudNineEffect
struct Actor * partnerActor
struct Actor * playerActor
struct Actor * enemyActors[24]
struct EffectInstance * buffEffect
s8 menuStatus[4]
-1 = automatically pick the first move, 0 = disabled, 1 = enabled
GameStatus * gGameStatusPtr
BattleStatus gBattleStatus
s32 gDefeatedBattleSubstate
Vec3s StandardActorHomePositions[]