69 f32 targetX, targetY, targetZ;
107 if (partnerActor !=
NULL) {
162 f14 = targetZ + 5.0f;
171 f14 = targetZ + 5.0f;
452 targetIndexList[i] = i;
458 s32
index1 = targetIndexList[i];
459 s32
index2 = targetIndexList[
j];
463 targetIndexList[i] = targetIndexList[
j];
496 for (i = 0; i < numParts; i++) {
515 x +=
part->partOffset.x;
517 y +=
part->partOffset.y;
519 y -=
part->partOffset.y;
521 z +=
part->partOffset.z;
525 y +=
part->targetOffset.y;
527 y -=
part->targetOffset.y;
530 x =
part->absolutePos.x;
531 y =
part->absolutePos.y;
532 z =
part->absolutePos.z;
534 x +=
part->targetOffset.x;
536 y +=
part->targetOffset.y;
538 y -=
part->targetOffset.y;
547 target->priorityOffset = 0;
887 +
partner->actorBlueprint->level;
915 if (
partner->targetListLength != 0){
920 if (
partner->targetListLength == 0) {
1006 if ((s32) animID >= 0) {
1013 if (
part->curAnimation != animID) {
1029 if (
part->curAnimation != animID) {
1037 if (
part->curAnimation != animID) {
1038 part->curAnimation = animID;
1048 if ((s32) anim >= 0) {
1051 if (
part->curAnimation != anim) {
1052 part->curAnimation = anim;
1058 if (
part->curAnimation != anim) {
1059 part->curAnimation = anim;
1077 part->animationRate = rate;
1086 part->animationRate = rate;
1173 }
else if (var0 == 1) {
1199 if (
part->staticData->index == partID) {
1240 player->
rot.
x = 0.0f;
1241 player->
rot.
y = 0.0f;
1242 player->
rot.
z = 0.0f;
1317 part->partOffset.x = 0;
1318 part->partOffset.y = 0;
1319 part->partOffset.z = 0;
1320 part->partOffset.x = 12;
1321 part->partOffset.y = 32;
1322 part->partOffset.z = 5;
1325 part->targetFlags = 0;
1326 part->partOffsetFloat.x = 0.0f;
1327 part->partOffsetFloat.y = 0.0f;
1328 part->partOffsetFloat.z = 0.0f;
1329 part->rotPivotOffset.x = 0;
1330 part->rotPivotOffset.y = 0;
1331 part->rotPivotOffset.z = 0;
1332 part->visualOffset.x = 0;
1333 part->visualOffset.y = 0;
1334 part->visualOffset.z = 0;
1335 part->absolutePos.x = 0.0f;
1336 part->absolutePos.y = 0.0f;
1337 part->absolutePos.z = 0.0f;
1346 part->eventFlags = 0;
1347 part->elementalImmunities = 0;
1348 part->opacity = 255;
1352 part->targetOffset.x = 0;
1353 part->targetOffset.y = 0;
1354 part->targetPriorityOffset = 0;
1358 part->scale.x = 1.0f;
1359 part->scale.y = 1.0f;
1360 part->scale.z = 1.0f;
1361 part->verticalStretch = 1;
1362 part->palAnimPosOffset[0] = 0;
1363 part->palAnimPosOffset[1] = 0;
1364 part->animationRate = 1.0f;
1376 if (
part->idleAnimations !=
NULL) {
1380 decorations =
part->decorationTable;
1403 decorations->
type[
j] = 0;
1425 Actor* partnerActor;
1427 Evt* takeTurnScript;
1458 partCount =
actorBP->partCount;
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++) {
1560 part->targetFlags = 0;
1566 part->visualOffset.x = 0;
1567 part->visualOffset.y = 0;
1568 part->visualOffset.z = 0;
1569 part->absolutePos.x = 0.0f;
1570 part->absolutePos.y = 0.0f;
1571 part->absolutePos.z = 0.0f;
1582 part->targetPriorityOffset = 0;
1583 part->rotPivotOffset.x = 0;
1584 part->rotPivotOffset.y = 0;
1585 part->rotPivotOffset.z = 0;
1589 part->scale.x = 1.0f;
1590 part->scale.y = 1.0f;
1591 part->scale.z = 1.0f;
1592 part->verticalStretch = 1;
1593 part->palAnimPosOffset[0] = 0;
1594 part->palAnimPosOffset[1] = 0;
1604 if (
part->idleAnimations !=
NULL) {
1609 decorations =
part->decorationTable;
1632 decorations->
type[
j] = 0;
1641 part->animationRate = 1.0f;
1642 part->curAnimation = 0;
1643 part->spriteInstanceID = -1;
1645 if (
part->idleAnimations !=
NULL) {
1650 if (i + 1 >= partCount) {
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;
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++) {
1817 part->targetFlags = 0;
1823 part->visualOffset.x = 0;
1824 part->visualOffset.y = 0;
1825 part->visualOffset.z = 0;
1838 if (
part->opacity < 255) {
1846 part->targetPriorityOffset = 0;
1847 part->projectileTargetOffset.x =
actorPartBP->projectileTargetOffset.x;
1848 part->projectileTargetOffset.y =
actorPartBP->projectileTargetOffset.y;
1852 part->rotPivotOffset.x = 0;
1853 part->rotPivotOffset.y = 0;
1854 part->rotPivotOffset.z = 0;
1855 part->scale.x = 1.0f;
1856 part->scale.y = 1.0f;
1857 part->scale.z = 1.0f;
1858 part->verticalStretch = 1;
1859 part->palAnimPosOffset[0] = 0;
1860 part->palAnimPosOffset[1] = 0;
1872 decorations =
part->decorationTable;
1894 decorations->
type[
k] = 0;
1908 part->animationRate = 1.0f;
1909 part->curAnimation = 0;
1910 part->spriteInstanceID = -1;
1912 if (
part->idleAnimations !=
NULL) {
1917 if (
j + 1 >= partCount) {
1947 if (animations ==
NULL) {
2013 while (*anim !=
NULL) {
2106 target->debuffDuration = duration;
2107 if ((
s8)duration > 9) {
2108 target->debuffDuration = 9;
2114 effect =
target->icePillarEffect;
2115 if (effect !=
NULL) {
2119 target->curPos.z, 1.0f, 0);
2155 target->staticDuration = duration;
2156 if ((
s8)duration > 9) {
2157 target->staticDuration = 9;
2167 target->stoneDuration = duration;
2168 if ((
s8)duration > 9) {
2169 target->stoneDuration = 9;
2177 target->koDuration = duration;
2178 if ((
s8)duration > 9) {
2187 target->transparentDuration = duration;
2188 if ((
s8)duration > 9) {
2189 target->transparentDuration = 9;
2209 target->koDuration += duration;
2210 if (
target->koDuration > 9) {
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
2272 for (i = 0; i < 1; i++) {
2440 target->actionRatingCombo = 0;
2450 if (actor !=
NULL) {
2469 if (actor !=
NULL) {
2487 if (actor !=
NULL) {
2506 target->healthBarHideTime = -1;
2511 target->healthBarHideTime = 0;
2521 if (enemy !=
NULL) {
2582 s32 statusDuration = 0;
2585 statusDuration = duration;
2588 if (statusDuration > 0) {
2646 if (decorations->
glowState != glowState) {
2710 part->decorationTable->flashState = 0;
2742 &&
part->idleAnimations
2790 part->shadowScale =
part->size.x / 24.0;
2803 part->shadowScale =
part->size.x / 24.0;
2881 if (koDuration == 0) {
2892 if (
partner->koDuration > 0) {
2894 partner->disableEffect->data.disableX->koDuration =
partner->koDuration;
2901 if (enemy !=
NULL) {
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)
BSS s32 PopupMenu_SelectedIndex
struct EffectInstance * disableEffect
struct Evt * handlePhaseScript
struct EffectInstance * attackResultEffect
ActorPartBlueprint * staticData
struct Evt * takeTurnScript
struct EffectInstance * effect[2]
EvtScript * handleEventSource
struct ActorBlueprint * actorBlueprint
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 DisableXFXData * disableX
struct AttackResultTextFXData * attackResultText
struct DamageIndicatorFXData * damageIndicator
@ FX_BUFF_DATA_TURBO_CHARGE
@ FX_BUFF_DATA_CLOUD_NINE
@ FX_BUFF_DATA_WATER_BLOCK
EffectInstanceDataPtr data
#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
s16 delay[2]
Number of frames to wait between walk/fly sounds. Negative values are in distance.
#define STAGE_MODEL_LIST_END
struct Actor * enemyActors[24]
GameStatus * gGameStatusPtr
BattleStatus gBattleStatus
s32 gDefeatedBattleSubstate
Vec3s StandardActorHomePositions[]