69 f32 targetX, targetY, targetZ;
107 if (partnerActor !=
NULL) {
162 f14 = targetZ + 5.0f;
171 f14 = targetZ + 5.0f;
452 targetIndexList[i] = i;
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;
738 if ((
s32) animID >= 0) {
745 if (
part->curAnimation != animID) {
761 if (
part->curAnimation != animID) {
769 if (
part->curAnimation != animID) {
770 part->curAnimation = animID;
780 if ((
s32) anim >= 0) {
783 if (
part->curAnimation != anim) {
784 part->curAnimation = anim;
790 if (
part->curAnimation != anim) {
791 part->curAnimation = anim;
905 }
else if (var0 == 1) {
931 if (
part->staticData->index == partID) {
972 player->
rot.
x = 0.0f;
973 player->
rot.
y = 0.0f;
974 player->
rot.
z = 0.0f;
1049 part->partOffset.x = 0;
1050 part->partOffset.y = 0;
1051 part->partOffset.z = 0;
1052 part->partOffset.x = 12;
1053 part->partOffset.y = 32;
1054 part->partOffset.z = 5;
1057 part->targetFlags = 0;
1058 part->partOffsetFloat.x = 0.0f;
1059 part->partOffsetFloat.y = 0.0f;
1060 part->partOffsetFloat.z = 0.0f;
1061 part->rotPivotOffset.x = 0;
1062 part->rotPivotOffset.y = 0;
1063 part->rotPivotOffset.z = 0;
1064 part->visualOffset.x = 0;
1065 part->visualOffset.y = 0;
1066 part->visualOffset.z = 0;
1067 part->absolutePos.x = 0.0f;
1068 part->absolutePos.y = 0.0f;
1069 part->absolutePos.z = 0.0f;
1078 part->eventFlags = 0;
1079 part->elementalImmunities = 0;
1080 part->opacity = 255;
1084 part->targetOffset.x = 0;
1085 part->targetOffset.y = 0;
1086 part->targetPriorityOffset = 0;
1090 part->scale.x = 1.0f;
1091 part->scale.y = 1.0f;
1092 part->scale.z = 1.0f;
1093 part->verticalStretch = 1;
1094 part->palAnimPosOffset[0] = 0;
1095 part->palAnimPosOffset[1] = 0;
1096 part->animationRate = 1.0f;
1108 if (
part->idleAnimations !=
NULL) {
1112 decorations =
part->decorationTable;
1135 decorations->
type[
j] = 0;
1157 Actor* partnerActor;
1159 Evt* takeTurnScript;
1190 partCount =
actorBP->partCount;
1209 partnerActor->
numParts = partCount;
1220 partnerActor->
yaw = 0.0f;
1221 partnerActor->
rot.
x = 0.0f;
1222 partnerActor->
rot.
y = 0.0f;
1223 partnerActor->
rot.
z = 0.0f;
1227 partnerActor->
scale.
x = 1.0f;
1228 partnerActor->
scale.
y = 1.0f;
1229 partnerActor->
scale.
z = 1.0f;
1250 partnerActor->
debuff = 0;
1286 for (i = 0; i < partCount; i++) {
1292 part->targetFlags = 0;
1298 part->visualOffset.x = 0;
1299 part->visualOffset.y = 0;
1300 part->visualOffset.z = 0;
1301 part->absolutePos.x = 0.0f;
1302 part->absolutePos.y = 0.0f;
1303 part->absolutePos.z = 0.0f;
1314 part->targetPriorityOffset = 0;
1315 part->rotPivotOffset.x = 0;
1316 part->rotPivotOffset.y = 0;
1317 part->rotPivotOffset.z = 0;
1321 part->scale.x = 1.0f;
1322 part->scale.y = 1.0f;
1323 part->scale.z = 1.0f;
1324 part->verticalStretch = 1;
1325 part->palAnimPosOffset[0] = 0;
1326 part->palAnimPosOffset[1] = 0;
1336 if (
part->idleAnimations !=
NULL) {
1341 decorations =
part->decorationTable;
1364 decorations->
type[
j] = 0;
1373 part->animationRate = 1.0f;
1374 part->curAnimation = 0;
1375 part->spriteInstanceID = -1;
1377 if (
part->idleAnimations !=
NULL) {
1382 if (i + 1 >= partCount) {
1414 Evt* takeTurnScript;
1420 if (formation->home.index >=
EVT_LIMIT) {
1425 x = formation->home.vec->x;
1426 y = formation->home.vec->y;
1427 z = formation->home.vec->z;
1466 actor->
rot.
x = 0.0f;
1467 actor->
rot.
y = 0.0f;
1468 actor->
rot.
z = 0.0f;
1533 actor->
state.varTable[0] = formation->var0;
1534 actor->
state.varTable[1] = formation->var1;
1535 actor->
state.varTable[2] = formation->var2;
1536 actor->
state.varTable[3] = formation->var3;
1543 for (
j = 0;
j < partCount;
j++) {
1549 part->targetFlags = 0;
1555 part->visualOffset.x = 0;
1556 part->visualOffset.y = 0;
1557 part->visualOffset.z = 0;
1570 if (
part->opacity < 255) {
1578 part->targetPriorityOffset = 0;
1579 part->projectileTargetOffset.x =
actorPartBP->projectileTargetOffset.x;
1580 part->projectileTargetOffset.y =
actorPartBP->projectileTargetOffset.y;
1584 part->rotPivotOffset.x = 0;
1585 part->rotPivotOffset.y = 0;
1586 part->rotPivotOffset.z = 0;
1587 part->scale.x = 1.0f;
1588 part->scale.y = 1.0f;
1589 part->scale.z = 1.0f;
1590 part->verticalStretch = 1;
1591 part->palAnimPosOffset[0] = 0;
1592 part->palAnimPosOffset[1] = 0;
1604 decorations =
part->decorationTable;
1626 decorations->
type[
k] = 0;
1640 part->animationRate = 1.0f;
1641 part->curAnimation = 0;
1642 part->spriteInstanceID = -1;
1644 if (
part->idleAnimations !=
NULL) {
1649 if (
j + 1 >= partCount) {
1679 if (animations ==
NULL) {
1745 while (*anim !=
NULL) {
1838 target->debuffDuration = duration;
1839 if ((
s8)duration > 9) {
1840 target->debuffDuration = 9;
1846 effect =
target->icePillarEffect;
1847 if (effect !=
NULL) {
1851 target->curPos.z, 1.0f, 0);
1887 target->staticDuration = duration;
1888 if ((
s8)duration > 9) {
1889 target->staticDuration = 9;
1899 target->stoneDuration = duration;
1900 if ((
s8)duration > 9) {
1901 target->stoneDuration = 9;
1909 target->koDuration = duration;
1910 if ((
s8)duration > 9) {
1919 target->transparentDuration = duration;
1920 if ((
s8)duration > 9) {
1921 target->transparentDuration = 9;
1941 target->koDuration += duration;
1942 if (
target->koDuration > 9) {
1955 if (defenseTable !=
NULL) {
1957 #define CHECK_DEFENSE(element) \
1958 if (elementFlags & DAMAGE_TYPE_##element) { \
1959 elemDefense = lookup_defense(defenseTable, ELEMENT_##element); \
1960 if (elemDefense < minDefense) { \
1961 minDefense = elemDefense; \
1977 #undef CHECK_DEFENSE
2004 for (i = 0; i < 1; i++) {
2172 target->actionRatingCombo = 0;
2182 if (actor !=
NULL) {
2201 if (actor !=
NULL) {
2219 if (actor !=
NULL) {
2238 target->healthBarHideTime = -1;
2243 target->healthBarHideTime = 0;
2253 if (enemy !=
NULL) {
2314 s32 statusDuration = 0;
2317 statusDuration = duration;
2320 if (statusDuration > 0) {
2378 if (decorations->
glowState != glowState) {
2442 part->decorationTable->flashState = 0;
2474 &&
part->idleAnimations
2522 part->shadowScale =
part->size.x / 24.0;
2535 part->shadowScale =
part->size.x / 24.0;
2613 if (koDuration == 0) {
2624 if (
partner->koDuration > 0) {
2626 partner->disableEffect->data.disableX->koDuration =
partner->koDuration;
2633 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)
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 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 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 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)
s32 try_inflict_status(Actor *actor, s32 statusTypeKey, s32 statusTurnsKey)
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)
void cancel_action_rating_combo(Actor *target)
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 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
EvtScript * takeTurnSource
struct ActorPart * nextPart
union Evt::@10 owner1
Initially -1.
struct DisableXFXData * disableX
@ FX_BUFF_DATA_TURBO_CHARGE
@ FX_BUFF_DATA_CLOUD_NINE
@ FX_BUFF_DATA_WATER_BLOCK
struct AttackResultTextFXData * attackResultText
struct DamageIndicatorFXData * damageIndicator
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
@ 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
@ TARGET_FLAG_PRIMARY_ONLY
@ TARGET_FLAG_ALLOW_TARGET_ONLY
@ STATUS_FLAG_USE_DURATION
@ 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_get_notify_value(s32 spriteInstanceID)
s32 spr_update_sprite(s32 spriteInstanceID, s32 animID, f32 timeScale)
s32 spr_load_npc_sprite(s32 animID, u32 *extraAnimList)
s32 spr_update_player_sprite(s32 spriteInstanceID, s32 animID, f32 timeScale)
@ SPRITE_ID_TAIL_ALLOCATE
s32 * foregroundModelList
s16 delay[2]
Number of frames to wait between walk/fly sounds. Negative values are in distance.
#define STAGE_MODEL_LIST_END
EXTERN_C ActorSounds bActorSoundTable[]
struct Actor * enemyActors[24]
GameStatus * gGameStatusPtr
BattleStatus gBattleStatus
s32 gDefeatedBattleSubstate
Vec3s StandardActorHomePositions[]