122 if (handleEventScript !=
NULL) {
269 target->lastDamageTaken = 0;
403 target->hpChangeCounter = 0;
433 && (
target->stoneStatus == 0)
456 if (
target->stoneStatus == 0) {
479 target->hpChangeCounter = 0;
510 target->hpChangeCounter = 0;
827 if (actor->
curHP <= 0) {
889 actorID =
script->owner1.actorID;
902 actorID =
script->owner1.actorID;
915 actorID =
script->owner1.actorID;
987 actorID =
script->owner1.actorID;
1001 actorID =
script->owner1.actorID;
1014 f32 posX, posY, posZ;
1019 script->functionTemp[0] = 0;
1022 if (
script->functionTemp[0] == 0) {
1025 actorID =
script->owner1.enemyID;
1031 script->functionTemp[3] = 0;
1033 script->functionTemp[3] |= 1;
1036 script->functionTemp[3] |= 2;
1053 posX = (
goalX - posX);
1054 posY = (
goalY - posY);
1055 posZ = (
goalZ - posZ);
1072 if (
script->functionTemp[2] != 0) {
1078 script->functionTemp[0] = 1;
1081 actor =
script->functionTempPtr[1];
1106 if (
script->functionTemp[3] & 1) {
1112 if (
script->functionTemp[2] != 0) {
1122 f32 posX, posY, posZ;
1130 if (!
script->functionTemp[0]) {
1134 actorID =
script->owner1.actorID;
1138 movement = &actor->
fly;
1158 posX = (
goalX - posX);
1159 posY = (
goalY - posY);
1160 posZ = (
goalZ - posZ);
1179 actor =
script->functionTempPtr[1];
1180 movement = &actor->
fly;
1194 if (
script->functionTemp[3] != 0) {
1209 f32 posX, posY, posZ;
1218 if (!
script->functionTemp[0]) {
1222 actorID =
script->owner1.actorID;
1226 state = &actor->
state;
1243 posX = (posX -
goalX);
1244 posY = (posY -
goalY);
1245 posZ = (posZ -
goalZ);
1267 actor =
script->functionTempPtr[1];
1268 state = &actor->
state;
1297 f32 posX, posY, posZ;
1305 if (!
script->functionTemp[0]) {
1308 actorID =
script->owner1.enemyID;
1330 posX = (
goalX - posX);
1331 posY = (
goalY - posY);
1332 posZ = (
goalZ - posZ);
1355 actor =
script->functionTempPtr[1];
1358 switch (
script->functionTemp[0]) {
1365 script->functionTemp[0] = 2;
1375 script->functionTemp[0] = 3;
1402 if (!
script->functionTemp[0]) {
1406 actorID =
script->owner1.actorID;
1410 script->functionTempPtr[1] = actor;
1417 actor =
script->functionTempPtr[1];
1439 f32 posX, posY, posZ;
1443 script->functionTemp[0] = 0;
1446 if (
script->functionTemp[0] == 0) {
1450 actorID =
script->owner1.enemyID;
1453 state = &actor->
state;
1454 script->functionTempPtr[1] = actor;
1473 posX = (
goalX - posX);
1474 posY = (
goalY - posY);
1475 posZ = (
goalZ - posZ);
1489 script->functionTemp[0] = 1;
1492 actor =
script->functionTempPtr[1];
1517 f32 posX, posY, posZ;
1524 if (!
script->functionTemp[0]) {
1527 actorID =
script->owner1.enemyID;
1574 actor =
script->functionTempPtr[1];
1578 if (
script->functionTemp[2] == 0) {
1641 f32 posX, posY, posZ;
1649 if (!
script->functionTemp[0]) {
1652 actorID =
script->owner1.actorID;
1655 movement = &actor->
fly;
1697 actor =
script->functionTempPtr[1];
1698 movement = &actor->
fly;
1701 if (movement->
speed < 4.0f) {
1727 s32 actorID, partID;
1728 f32 posX, posY, posZ;
1733 script->functionTemp[0] = 0;
1736 if (
script->functionTemp[0] == 0) {
1739 actorID =
script->owner1.actorID;
1745 script->functionTempPtr[1] = actor;
1747 movement =
part->movement;
1774 posX = (
goalX - posX);
1775 posY = (
goalY - posY);
1776 posZ = (
goalZ - posZ);
1787 if (
part->partTypeData[4] != 0) {
1790 script->functionTemp[0] = 1;
1794 movement =
part->movement;
1804 if (
script->functionTemp[3] != 0) {
1821 s32 actorID, partID;
1822 f32 posX, posY, posZ;
1826 script->functionTemp[0] = 0;
1829 if (
script->functionTemp[0] == 0) {
1832 actorID =
script->owner1.actorID;
1838 script->functionTempPtr[1] = actor;
1840 movement =
part->movement;
1866 posX = (
goalX - posX);
1867 posY = (
goalY - posY);
1868 posZ = (
goalZ - posZ);
1878 if (
part->partTypeData[4] != 0) {
1881 script->functionTemp[0] = 1;
1885 movement =
part->movement;
1912 script->functionTemp[0] = 0;
1915 if (
script->functionTemp[0] == 0) {
1920 actorID =
script->owner1.actorID;
1925 script->functionTempPtr[1] = actor;
1927 movement =
part->movement;
1931 script->functionTemp[0] = 1;
1935 movement =
part->movement;
1943 if (
part->absolutePos.y < 0.0f) {
1944 part->absolutePos.y = 0.0f;
1957 s32 actorID, partID;
1958 f32 posX, posY, posZ;
1963 script->functionTemp[0] = 0;
1966 if (
script->functionTemp[0] == 0) {
1969 actorID =
script->owner1.actorID;
1975 script->functionTempPtr[1] = actor;
1977 movement =
part->movement;
2007 if (
part->actorTypeData2b[0] >= 0) {
2008 movement->
dist =
part->actorTypeData2b[0] + 1;
2010 movement->
dist = -(
part->actorTypeData2b[0] + 1);
2012 if (
part->partTypeData[0] != 0 &&
part->partTypeData[1] == 0) {
2015 script->functionTemp[0] = 1;
2019 movement =
part->movement;
2020 actor =
script->functionTempPtr[1];
2032 if (
part->partTypeData[0] != 0 &&
part->partTypeData[1] != 0) {
2033 if (
part->actorTypeData2b[0] >= 0) {
2035 if (
part->actorTypeData2b[0] < movement->
dist) {
2039 if (
part->partTypeData[0] != 0) {
2043 if (
part->partTypeData[1] != 0) {
2049 movement->
dist += 1.0f;
2050 if (-
part->actorTypeData2b[0] <= movement->
dist) {
2054 if (
part->partTypeData[0] != 0) {
2058 if (
part->partTypeData[1] != 0) {
2072 if (
part->partTypeData[0] != 0 &&
part->partTypeData[1] == 0) {
2094 return start + (end - start) *
elapsed / duration;
2096 return start +
SQ(
elapsed) * (end - start) /
SQ(duration);
2110 timeLeft = duration -
elapsed;
2111 return start + (end - start) - ((
SQ(timeLeft) * (end - start))) /
SQ(duration);
2114 timeLeft = duration -
elapsed;
2118 timeLeft = duration -
elapsed;
2126 return end - (end - start) *
absMag;
2148 f32 posX, posY, posZ;
2157 actorID =
script->owner1.enemyID;
2167 if (
script->functionTemp[3] >= 100) {
2168 script->functionTemp[3] -= 100;
2214 actor =
script->functionTempPtr[1];
2287 offsetY = -offsetY * -
actorState->moveArcAmplitude;
2290 offsetY = offsetY *
actorState->moveArcAmplitude;
2303 f32 posX, posY, posZ;
2312 actorID =
script->owner1.enemyID;
2315 movement = &actor->
fly;
2352 movement->
angle = 0.0f;
2353 movement->
vel = 0.0f;
2356 actor =
script->functionTempPtr[1];
2357 movement = &actor->
fly;
2378 if (movement->
dist == 0.0f) {
2379 movement->
dist = 1.0f;
2407 f32 posX, posY, posZ;
2416 actorID =
script->owner1.actorID;
2422 script->functionTempPtr[1] = actor;
2434 posX =
part->absolutePos.x;
2440 posY =
part->absolutePos.y;
2446 posZ =
part->absolutePos.z;
2463 if (
part->partTypeData[2] != 0 &&
part->partTypeData[3] == 0) {
2469 if (
part->actorTypeData2b[1] >= 0) {
2477 actor =
script->functionTempPtr[1];
2488 if (
part->partTypeData[2] != 0 &&
part->partTypeData[3] == 0) {
2494 if (
part->partTypeData[2] != 0 &&
part->partTypeData[3] != 0) {
2495 if (
part->actorTypeData2b[1] >= 0) {
2501 if (
part->partTypeData[2] != 0) {
2505 if (
part->partTypeData[3] != 0) {
2516 if (
part->partTypeData[2] != 0) {
2520 if (
part->partTypeData[3] != 0) {
2562 actorID =
script->owner1.actorID;
2647 actorID =
script->owner1.actorID;
2674 if (actor ==
battleStatus->enemyActors[enemyIDs[i] & 0xFF]) {
2693 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
2709 actorID =
script->owner1.enemyID;
2714 if (
dropper->actorBlueprint->level == 0.0f) {
2726 ntd = (
ntd + 50.0f) / 100.0f;
2760 actorID =
script->owner1.actorID;
2775 actorID =
script->owner1.actorID;
2790 actorID =
script->owner1.actorID;
2805 actorID =
script->owner1.actorID;
2829 actorID =
script->owner1.enemyID;
2909 actorID =
script->owner1.actorID;
2949 actorID =
script->owner1.enemyID;
3040 actorID =
script->owner1.actorID;
3051 actorID =
script->owner1.actorID;
3062 actorID =
script->owner1.actorID;
3078 actorID =
script->owner1.actorID;
3087 part->targetOffset.x = x;
3088 part->targetOffset.y = y;
3100 actorID =
script->owner1.actorID;
3118 actorID =
script->owner1.actorID;
3127 part->projectileTargetOffset.x =
dx;
3128 part->projectileTargetOffset.y =
dy;
3181 actorID =
script->owner1.actorID;
3214 actorID =
script->owner1.actorID;
3281 actorID =
script->owner1.actorID;
3287 part->size.y = sizeY;
3291 part->size.x = sizeX;
3294 part->shadowScale =
part->size.x / 24.0;
3305 actorID =
script->owner1.actorID;
3318 actorID =
script->owner1.actorID;
3331 actorID =
script->owner1.actorID;
3357 if (
it->idleAnimations !=
NULL) {
3428 if (actor->
debuff != 0) {
s32 dispatch_damage_event_actor_1(Actor *actor, s32 damageAmount, s32 event)
void dispatch_event_actor(Actor *actor, s32 event)
HitResult calc_enemy_test_target(Actor *actor)
void dispatch_event_general(Actor *actor, s32 event)
f32 update_lerp_battle(s32 easing, f32 start, f32 end, s32 elapsed, s32 duration)
s32 dispatch_damage_event_actor(Actor *actor, s32 damageAmount, s32 originalEvent, s32 stopMotion)
void play_hit_sound(Actor *actor, f32 x, f32 y, f32 z, u32 hitSound)
s32 StarPointMultiplier[]
Star Point multiplier, indexed by actor count.
s32 dispatch_damage_event_actor_0(Actor *actor, s32 damageAmount, s32 event)
s32 has_enchanted_part(Actor *actor)
HitResult calc_enemy_damage_target(Actor *attacker)
BSS s32 PopupMenu_SelectedIndex
s32 check_block_input(s32 buttonMask)
struct EffectInstance * disableEffect
struct Evt * takeTurnScript
EvtScript * handleEventSource
struct ActorBlueprint * actorBlueprint
struct Evt * handleEventScript
struct ActorPart * partsTable
struct SelectableTarget targetData[24]
EvtScript * handlePhaseSource
EvtScript * takeTurnSource
struct ActorPart * nextPart
union Evt::@10 owner1
Initially -1.
#define sfx_play_sound_at_position
struct DisableXFXData * disableX
EffectInstanceDataPtr data
#define ASSERT(condition)
@ ACTION_RATING_NICE
sets nice hits = 1
@ BS_FLAGS1_TUTORIAL_BATTLE
@ BS_FLAGS1_STAR_POINTS_DROPPED
@ BS_FLAGS1_PLAYER_DEFENDING
@ BS_FLAGS1_TRIGGER_EVENTS
@ BS_FLAGS1_INCLUDE_POWER_UPS
@ ACTOR_EVENT_FLAG_STAR_ROD_ENCHANTED
Actor glows and listens for Star Beam and Peach Beam events.
@ ACTOR_EVENT_FLAG_ELECTRIFIED
Player takes shock damage upon contact.
@ ACTOR_EVENT_FLAG_BURIED
Actor can only by hit by quake-element attacks.
@ ACTOR_EVENT_FLAG_FLIPABLE
Actor can be flipped; triggered by jump and quake attacks.
@ ACTOR_EVENT_FLAG_EXPLODE_ON_IGNITION
Blast and fire attacks trigger an explosion.
@ ACTOR_EVENT_FLAG_ILLUSORY
Player attacks pass through and miss.
@ ACTOR_EVENT_FLAG_ENCHANTED
Actor glows and listens for the Star Beam event.
@ ITEM_SPAWN_MODE_TOSS_FADE3
@ ITEM_SPAWN_MODE_TOSS_FADE1
@ BS_FLAGS2_IS_FIRST_STRIKE
@ STATUS_TURN_MOD_PARALYZE
@ SUPPRESS_EVENT_SHOCK_CONTACT
@ EASING_COS_SLOW_OVERSHOOT
@ EASING_COS_FAST_OVERSHOOT
@ ABILITY_HEALTHY_HEALTHY
@ SOUND_HIT_PLAYER_NORMAL
@ ACTOR_FLAG_FLYING
Quake Hammer can't hit.
@ ACTOR_FLAG_NO_DMG_POPUP
Hide damage popup.
@ ACTOR_FLAG_HEALTH_BAR_HIDDEN
@ ACTOR_FLAG_UPSIDE_DOWN
HP bar offset below actor (e.g. Swooper when upside-down).
@ ACTOR_FLAG_NO_DMG_APPLY
Damage is not applied to actor HP.
@ EVENT_SPIN_SMASH_LAUNCH_HIT
@ EVENT_SPIN_SMASH_LAUNCH_DEATH
@ ACTOR_PART_FLAG_DAMAGE_IMMUNE
electrified Plays extra hurt SFX?
@ DAMAGE_TYPE_STATUS_ALWAYS_HITS
@ DAMAGE_TYPE_UNBLOCKABLE
@ DAMAGE_TYPE_IGNORE_DEFENSE
@ DAMAGE_TYPE_TRIGGER_LUCKY
@ DAMAGE_TYPE_MULTIPLE_POPUPS
@ EVT_FLAG_RUN_IMMEDIATELY
don't wait for next update_scripts call
void show_primary_damage_popup(f32 x, f32 y, f32 z, s32 attack, s32 a)
void enable_actor_blur(Actor *)
s32 does_script_exist_by_ref(Evt *script)
s32 evt_get_variable(Evt *script, Bytecode var)
s32 is_ability_active(s32 arg0)
s32 player_team_is_ability_active(Actor *actor, s32 ability)
void show_immune_bonk(f32 x, f32 y, f32 z, s32, s32, s32)
void remove_status_debuff(s32)
void disable_actor_blur(Actor *)
void add_xz_vec3f_copy1(Vec3f *vector, f32 speed, f32 angleDeg)
void hide_actor_health_bar(Actor *)
void show_actor_health_bar(Actor *)
void remove_status_static(s32)
void clear_part_pal_adjustment(ActorPart *)
f32 dist3D(f32 ax, f32 ay, f32 az, f32 bx, f32 by, f32 bz)
Evt * get_script_by_index(s32 index)
s32 suspend_all_script(s32 id)
s32 evt_set_variable(Evt *script, Bytecode var, s32 value)
void remove_status_transparent(s32)
void dispatch_event_player(s32)
void set_actor_flash_mode(Actor *actor, s32 arg1)
void show_damage_fx(Actor *actor, f32 x, f32 y, f32 z, s32 damage)
f32 dist2D(f32 ax, f32 ay, f32 bx, f32 by)
void cancel_action_rating_combo(Actor *)
void add_xz_vec3f(Vec3f *vector, f32 speed, f32 angleDeg)
Evt * start_script(EvtScript *source, s32 priority, s32 initialState)
s32 inflict_status(Actor *, s32, s32)
ActorPart * get_actor_part(Actor *actor, s32 partID)
s32 func_80263230(Actor *, Actor *)
void set_actor_glow_pal(Actor *actor, s32 arg1)
void show_next_damage_popup(f32 x, f32 y, f32 z, s32 damageAmount, s32 angle)
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)
Actor * get_actor(s32 actorID)
void kill_script_by_ID(s32 id)
void reset_actor_blur(Actor *)
void play_movement_dust_effects(s32 var0, f32 xPos, f32 yPos, f32 zPos, f32 angleDeg)
void force_disable_actor_blur(Actor *)
s32 inflict_status_set_duration(Actor *actor, s32 statusTypeKey, s32 statusDurationKey, s32 duration)
s32 resume_all_script(s32 id)
f32 evt_get_float_variable(Evt *script, Bytecode var)
void btl_delete_actor(Actor *actor)
void apply_shock_effect(Actor *)
s32 make_item_entity_delayed(s32 itemID, f32 x, f32 y, f32 z, s32 itemSpawnMode, s32 pickupDelay, s32 pickupVar)
void show_action_rating(s32, Actor *, f32, f32, f32)
s32 try_inflict_status(Actor *, s32, s32)
s32 inflict_partner_ko(Actor *target, s32 statusTypeKey, s32 duration)
Evt * restart_script(Evt *script)
void dispatch_event_partner(s32)
EvtScript EVS_PlayStopHitFX
EvtScript EVS_PlayFreezeHitFX
EvtScript EVS_PlayShrinkHitFX
EvtScript EVS_PlayParalyzeHitFX
EvtScript EVS_PlayPoisonHitFX
EvtScript EVS_PlaySleepHitFX
EvtScript EVS_PlayDizzyHitFX
EncounterStatus gCurrentEncounter
void snd_stop_sound(s32 soundID)
void set_npc_imgfx_all(s32 spriteIdx, ImgFXType imgfxType, s32 imgfxArg1, s32 imgfxArg2, s32 imgfxArg3, s32 imgfxArg4, s32 imgfxArg5)
BattleStatus gBattleStatus