5#include "sprite/npc/BattleLakilester.h"
10#include "sprite/player.h"
12#define NAMESPACE battle_partner_lakilester
33static s32 sSavedHurricaneIntensity;
34static s32 sBreathSizeIncrease;
38static s32 TargetMarkRotation;
47static f32 AimMoveAngle;
50static s32 HudStickPosX;
51static s32 HudStickPosY;
52static b32 SpinyFlipTargetingDone;
55static s32 NumEnemiesBeingBlown;
56static s32 IsHurricaneActive;
88s32 N(DefaultAnims)[] = {
95s32 N(IdleAnimations_spiny)[] = {
100s32 N(DefenseTable)[] = {
105s32 N(StatusTable)[] = {
134 .posOffset = { 0, 0, 0 },
135 .targetOffset = { 12, 30 },
137 .idleAnimations = N(DefaultAnims),
138 .defenseTable = N(DefenseTable),
140 .elementImmunityFlags = 0,
141 .projectileTargetOffset = { 0, 0 },
146 .posOffset = { 0, 0, 0 },
147 .targetOffset = { 0, 0 },
149 .idleAnimations = N(IdleAnimations_spiny),
150 .defenseTable = N(DefenseTable),
152 .elementImmunityFlags = 0,
153 .projectileTargetOffset = { 0, 0 },
159 .type = ACTOR_TYPE_LAKILESTER,
160 .level = ACTOR_LEVEL_LAKILESTER,
163 .partsData = N(ActorParts),
164 .initScript = &N(EVS_Init),
165 .statusTable = N(StatusTable),
168 .hurricaneChance = 0,
170 .upAndAwayChance = 0,
172 .powerBounceChance = 80,
175 .healthBarOffset = { 0, 0 },
176 .statusIconOffset = { -10, 30 },
177 .statusTextOffset = { 13, 31 },
196 Call(InterruptActionCommand)
315 Call(ShowActionHud, TRUE)
318 Call(LoadStarPowerScript)
346 Call(PartnerYieldTurn)
357 Call(PartnerYieldTurn)
371API_CALLABLE(N(SpinyFlipUpdatePopup)) {
373 SpinyFlipTargetingDone = FALSE;
376 if (!SpinyFlipTargetingDone) {
384API_CALLABLE(N(SpinyFlipActionCommand)) {
386 s32 screenX, screenY, screenZ;
413 enum SpinyFlipState {
415 SPINY_FLIP_DELAY = 1,
416 SPINY_FLIP_AIMING = 2,
419 partnerState = &partner->
state;
423 script->functionTemp[0] = SPINY_FLIP_INIT;
426 switch (script->functionTemp[0]) {
427 case SPINY_FLIP_INIT:
438 for (i = 0; i <
ARRAY_COUNT(N(AimDotHudScripts)); i++) {
458 partnerState->
speed = 0.0f;
461 TargetMarkRotation = 0;
470 AimMoveAngle = -1.0f;
473 SpinyFlipTargetingDone = TRUE;
474 script->functionTemp[0] = SPINY_FLIP_DELAY;
476 case SPINY_FLIP_DELAY:
477 if (battleStatus->
stickX != 0 || battleStatus->
stickY != 0) {
480 if (AimingTime != 0) {
483 AimingTime = (s32)(80 *
DT);
486 script->functionTemp[0] = SPINY_FLIP_AIMING;
489 case SPINY_FLIP_AIMING:
491 if (stickMagnitude > 80) {
495 if (stickMagnitude < 35) {
496 f32 temp = stickMagnitude;
499 temp_f8 = D_8023D2A0;
500 temp_f2 = temp_f8 + D_8023D2A4 + D_8023D2A8;
501 D_8023D2A0 = stickMagnitude;
502 D_8023D2A8 = D_8023D2A4;
503 temp_f10 = D_8023D2A0 - (temp_f2 / 3.0f);
504 D_8023D2A4 = temp_f8;
506 D_8023D2AC = temp_f10;
508 partner->
state.
speed += (D_8023D2AC / 8.5) / 3.0;
510 partner->
state.
speed += (D_8023D2AC / 8.5) / 2.0;
512 AimMoveAngle = stickAngle;
514 D_8023D2AC = temp_f10;
516 if (!(stickMagnitude < 31)) {
517 AimMoveAngle = stickAngle;
519 if (partnerState->
speed > 6.7) {
520 partnerState->
speed = 6.7;
522 partnerState->
speed -= (f32) ((2.0 * (40 - stickMagnitude)) / 40.0);
523 if (partnerState->
speed <= 0.0f) {
524 partnerState->
speed = 0.0f;
527 if (AimMoveAngle >= 0.0f) {
531 speed = partnerState->
speed;
532 partnerState->
curPos.
x += speed * sinTheta;
533 partnerState->
curPos.
y += speed * cosTheta;
535 if (partnerState->
curPos.
x < -30.0f) {
536 partnerState->
curPos.
x = -30.0f;
538 if (partnerState->
curPos.
x > 170.0f) {
539 partnerState->
curPos.
x = 170.0f;
541 if (partnerState->
curPos.
y > 130.0f) {
542 partnerState->
curPos.
y = 130.0f;
544 if (partnerState->
curPos.
y < 0.0f) {
550 if (AimingTime == 60) {
553 if (AimingTime == 30) {
556 if (AimingTime != 0) {
560 script->varTable[14] = 0;
561 script->varTable[15] = 0;
562 script->varTable[7] = partnerState->
curPos.
x;
563 script->varTable[8] = partnerState->
curPos.
y;
564 script->varTable[9] = partnerState->
curPos.
z;
566 if (partnerState->
dist <= 12.0) {
567 script->varTable[15] = 1;
572 for (i = 0; i <
ARRAY_COUNT(N(AimDotHudScripts)); i++) {
583 &screenX, &screenY, &screenZ);
587 TargetMarkRotation -= 10;
588 TargetMarkRotation =
clamp_angle(TargetMarkRotation);
591 &screenX, &screenY, &screenZ);
595 switch (script->functionTemp[0]) {
596 case SPINY_FLIP_DELAY:
597 case SPINY_FLIP_AIMING:
599 if (HudStickPosX > 50) {
607 switch (script->functionTemp[0]) {
608 case SPINY_FLIP_DELAY:
609 case SPINY_FLIP_AIMING:
613 for (i = 0; i <
ARRAY_COUNT(N(AimDotHudScripts)); i++) {
625API_CALLABLE(N(ThrowSpinyFX)) {
628 f32 xPos = partnerActor->
curPos.
x + 5;
629 f32 yPos = partnerActor->
curPos.
y + partnerActor->
size.
y + 20;
630 f32 zPos = partnerActor->
curPos.
z;
634 fx_throw_spiny(0, xPos, yPos, zPos, var, var2, 20, 1.5f, 30);
639API_CALLABLE(N(GetSpinySurgeDamage)) {
641 s32 actionCommandResult = script->varTable[10];
644 switch (partnerLevel) {
646 if (actionCommandResult <= 99) {
653 if (actionCommandResult <= 70) {
655 }
else if (actionCommandResult <= 99) {
662 if (actionCommandResult <= 40) {
664 }
else if (actionCommandResult <= 70) {
666 }
else if (actionCommandResult <= 99) {
674 if (actionCommandResult >= 100) {
675 script->varTable[0] = TRUE;
677 script->varTable[0] = FALSE;
680 script->varTable[15] = damage;
684API_CALLABLE(N(RemoveCloudNineFX)) {
687 if (effect != NULL) {
697API_CALLABLE(N(SpawnCloudNineFX)) {
704 script->functionTemp[0] = 0;
707 switch (script->functionTemp[0]) {
711 script->functionTemp[0] = 1;
714 if (sCounter >= 1.0) {
724API_CALLABLE(N(ApplyCloudNine)) {
734API_CALLABLE(N(InitHurricane)) {
742 s32 hpMissingPercent;
744 s32 avgHurricaneChance;
747 NumEnemiesBeingBlown = 0;
748 IsHurricaneActive = FALSE;
751 EnemyHurricaneChances[i] = 0;
762 hpMissingPercent = 100 - ((actor->
curHP * 100) / actor->
maxHP);
764 if (hurricaneChance > 0) {
765 hurricaneChance += hurricaneChance * hpMissingPercent / 100;
766 if (hurricaneChance > 100) {
767 hurricaneChance = 100;
770 hurricaneChance = hurricaneChance * 150 / 100;
771 if (hurricaneChance > 150) {
772 hurricaneChance = 150;
783 EnemyHurricaneChances[targetIdx] = hurricaneChance;
784 totalChance += hurricaneChance;
787 if (affectedTargets != 0) {
788 avgHurricaneChance = totalChance / affectedTargets;
790 avgHurricaneChance = 0;
792 script->varTable[0] = avgHurricaneChance;
800 EnemyHurricaneChances[targetIdx] = -1;
801 }
else if (EnemyHurricaneChances[targetIdx] != 0) {
802 EnemyHurricaneChances[targetIdx] = avgHurricaneChance;
808API_CALLABLE(N(CanTargetBeBlown)) {
812 s32* hurricaneChance = &EnemyHurricaneChances[targetIdx];
815 script->varTable[0] = *hurricaneChance;
817 if (*hurricaneChance == -1) {
821 if (*hurricaneChance == 0) {
827 *hurricaneChance = -1;
828 script->varTable[0] = target->
actorID;
830 *hurricaneChance = 0;
838 Call(N(SpinyFlipUpdatePopup))
847 Call(InitTargetIterator)
850 Call(SetBattleCamTarget, 47, 46, 12)
851 Call(SetBattleCamOffsetY, 7)
852 Call(SetBattleCamDist, 416)
853 Call(MoveBattleCamOver, 30)
861 Call(SetAnimation,
ACTOR_SELF, PRT_2, ANIM_BattleLakilester_Spiny)
891 Call(N(SpinyFlipActionCommand))
902 Call(SetAnimation,
ACTOR_SELF, PRT_2, ANIM_BattleLakilester_SpinySpin)
910 Call(SetAnimation,
ACTOR_SELF, PRT_2, ANIM_BattleLakilester_SpinySpin)
918 Call(SetAnimation,
ACTOR_SELF, PRT_2, ANIM_BattleLakilester_SpinySpin)
968 Call(action_command_spiny_surge_init)
972 Call(SetupMashMeter, 2, 99, 100, 0, 0, 0)
974 Call(SetupMashMeter, 3, 70, 99, 100, 0, 0)
976 Call(SetupMashMeter, 4, 40, 70, 99, 100, 0)
978 Call(SetActionHudPrepareTime, 10)
980 Call(SetBattleCamTarget, 45, 60, 0)
981 Call(SetBattleCamOffsetY, 0)
982 Call(SetBattleCamDist, 400)
983 Call(MoveBattleCamOver, 30)
984 Call(InitTargetIterator)
1004 Call(InitTargetIterator)
1042 Call(N(ThrowSpinyFX))
1075 Call(InitTargetIterator)
1083 Call(N(GetSpinySurgeDamage))
1107 ExecWait(N(EVS_ReturnHome_Success))
1124 Call(SetActionHudPrepareTime, 50)
1125 Call(InitTargetIterator)
1129 Call(SetBattleCamOffsetY, 17)
1130 Call(SetBattleCamDist, 300)
1131 Call(MoveBattleCamOver, 30)
1132 Call(DisableBattleCamClampX)
1158 Call(SetJumpAnimations,
ACTOR_PLAYER, 0, ANIM_Mario1_Jump, ANIM_Mario1_Fall, ANIM_Mario1_FightingStance)
1160 Call(PlayerHopToGoal, 18, 0, 0)
1165 Call(AddBattleCamDist, -75)
1166 Call(MoveBattleCamOver, 100)
1170 Call(AddBattleCamDist, 50)
1171 Call(MoveBattleCamOver, 5)
1174 Call(N(RemoveCloudNineFX))
1176 Call(N(SpawnCloudNineFX))
1177 Call(N(ApplyCloudNine))
1198 Call(SetJumpAnimations,
ACTOR_PLAYER, 0, ANIM_Mario1_Jump, ANIM_Mario1_Fall, ANIM_Mario1_FightingStance)
1201 Call(PlayerFallToGoal, 10)
1210 Call(PlayerRunToGoal, 0)
1228 Call(MoveBattleCamOver, 30)
1232 Call(WaitForMessageBoxDone)
1239EvtScript N(EVS_CloudNine_PlayerImmobile) = {
1243 Call(SetActionHudPrepareTime, 50)
1244 Call(N(RemoveCloudNineFX))
1245 Call(InitTargetIterator)
1249 Call(SetBattleCamOffsetY, 0)
1250 Call(SetBattleCamDist, 300)
1251 Call(MoveBattleCamOver, 30)
1252 Call(DisableBattleCamClampX)
1280 Call(AddBattleCamDist, -75)
1281 Call(MoveBattleCamOver, 100)
1285 Call(AddBattleCamDist, 50)
1286 Call(MoveBattleCamOver, 5)
1290 Call(N(SpawnCloudNineFX))
1291 Call(N(ApplyCloudNine))
1320 Call(PlayerRunToGoal, 0)
1333 Call(PartnerYieldTurn)
1335 Call(MoveBattleCamOver, 30)
1339 Call(WaitForMessageBoxDone)
1348 ExecWait(N(EVS_CloudNine_PlayerImmobile))
1350 ExecWait(N(EVS_CloudNine_PlayerOK))
1363#define HURRICANE_PARTNER_MOVE_TIME 140
1364#define HURRICANE_UNUSED_TIME 152
1366#define HURRICANE_PARTNER_MOVE_TIME 165
1367#define HURRICANE_UNUSED_TIME 177
1370API_CALLABLE(N(ProcessHurricane)) {
1388 static s32 sUnusedAngle;
1389 static s32 sHurricaneIntensity;
1390 static s32 sHuffPuffBreathState;
1391 static s32 D_8023D278;
1394 if (isInitialCall) {
1395 script->functionTemp[0] = 0;
1398 switch (script->functionTemp[0]) {
1403 IsHurricaneActive = TRUE;
1405 sHuffPuffBreathEffect = effect = fx_huff_puff_breath(0,
NPC_DISPOSE_LOCATION, 0.0f, -2.0f, 0.6f, 0);
1417 hurricaneState->
unk_46 = 0;
1418 hurricaneState->
state = 0;
1423 sSavedHurricaneIntensity = 0;
1425 sHuffPuffBreathState = -1;
1428 sHurricaneIntensity = 0;
1429 sBreathSizeIncrease = 0;
1432 script->functionTemp[1] =
rand_int(10) + 11;
1433 script->functionTemp[2] = 0;
1434 script->functionTemp[0] = 1;
1437 partner->
state.
angle = sUnusedAngle * 150 / 100 - 75;
1441 temp = EnemyHurricaneChances[targetIndex];
1446 targetActor->
yaw =
clamp_angle(targetActor->
yaw + 13.0f + sHurricaneIntensity * 4);
1458 temp = EnemyHurricaneChances[targetIndex];
1463 targetActor->
yaw = 0.0f;
1468 IsHurricaneActive = FALSE;
1478 switch (sHuffPuffBreathState) {
1481 y = partner->
curPos.
y + 15.0f;
1482 z = partner->
curPos.
z + tempF1;
1494 if (script->functionTemp[2] != 0) {
1497 script->functionTemp[2] = 0;
1509 y = partner->
curPos.
y + 15.0f;
1510 z = partner->
curPos.
z + tempF1;
1517 if (script->functionTemp[2] == 0) {
1520 script->functionTemp[2] = 1;
1523 script->functionTemp[1] = 1;
1539 tempF1 = tempF1 / 3000.0f + 0.5;
1541 tempF2 = tempF2 / 300.0f + 5.75 + sHurricaneIntensity;
1542 fx_moving_cloud(1, x, y, z, x2, y2, z2, tempF2, tempF1);
1553 tempF1 = tempF1 / 4000.0f + 0.1;
1555 tempF2 = tempF2 / 300.0f + 2.75 + sHurricaneIntensity / 2;
1556 fx_moving_cloud(1, x, y, z, x2, y2, z2, tempF2, tempF1);
1560 switch (hurricaneState->
state) {
1568 if (totalPower > 5000.0f) {
1569 totalPower = 5000.0f;
1572 tempF64 = D_8023D278;
1573 tempF1 = tempF64 + tempF64 * (1.0 -
sin_rad(totalPower *
PI_S * 0.5f / 5000.0f +
PI_S / 2)) * 1.5;
1575 sSavedHurricaneIntensity += D_8023D278;
1590 if (sSavedHurricaneIntensity > 1000) {
1591 sSavedHurricaneIntensity = 1000;
1596 if (hurricaneState->
totalPower > sMaxPower + 5000) {
1597 hurricaneState->
totalPower = sMaxPower + 5000;
1598 hurricaneState->
state = 1;
1599 hurricaneState->
unk_5D = 5;
1600 hurricaneState->
intensity = sSavedHurricaneIntensity;
1605 hurricaneState->
state = 10;
1609 switch (hurricaneState->
state) {
1613 if (tempF1 < 200.0f) {
1617 if (hurricaneState->
totalPower < 5000 - sMaxPower) {
1618 hurricaneState->
totalPower = 5000 - sMaxPower;
1619 hurricaneState->
state = 11;
1620 hurricaneState->
unk_5D = 5;
1623 if (sMaxPower > 5000) {
1630 hurricaneState->
state = 0;
1632 sSavedHurricaneIntensity = hurricaneState->
intensity;
1637 if (hurricaneState->
state == 0) {
1645 sUnusedAngle = hurricaneState->
totalPower / 100;
1646 sHurricaneIntensity = hurricaneState->
intensity / 100;
1647 if (sHurricaneIntensity > 10) {
1648 sHurricaneIntensity = 10;
1655API_CALLABLE(N(BlowTargetAway)) {
1661 if (isInitialCall) {
1662 script->functionTempPtr[1] =
get_actor(script->varTable[10]);
1663 script->functionTemp[0] = 0;
1666 target = script->functionTempPtr[1];
1667 state = &target->
state;
1668 switch (script->functionTemp[0]) {
1675 NumEnemiesBeingBlown++;
1678 script->functionTemp[0] = 1;
1687 target->
yaw += 33.0f;
1690 NumEnemiesBeingBlown--;
1701API_CALLABLE(N(AllEnemiesBlownAway)) {
1702 if (NumEnemiesBeingBlown == 0) {
1708API_CALLABLE(N(IsHurricaneActive)) {
1709 script->varTable[0] = IsHurricaneActive;
1715 Call(action_command_hurricane_init)
1716 Call(SetupMashMeter, 1, 100, 0, 0, 0, 0)
1717 Call(SetActionHudPrepareTime, 15)
1720 Call(SetBattleCamTarget, -45, 54, 0)
1721 Call(SetBattleCamOffsetY, 0)
1722 Call(SetBattleCamDist, 280)
1723 Call(MoveBattleCamOver, 40)
1724 Call(InitTargetIterator)
1731 Call(N(InitHurricane))
1736 Call(SetBattleCamTarget, 35, 54, 0)
1737 Call(SetBattleCamOffsetY, 0)
1738 Call(SetBattleCamDist, 430)
1739 Call(MoveBattleCamOver, 150 *
DT)
1743 Call(N(ProcessHurricane))
1747 Call(N(IsHurricaneActive))
1765 Call(InitTargetIterator)
1768 Call(N(CanTargetBeBlown))
1772 Call(N(BlowTargetAway))
1791 Call(N(AllEnemiesBlownAway))
1792 Call(PartnerYieldTurn)
HudScript HES_StickNeutral
#define HURRICANE_UNUSED_TIME
HudScript HES_StickTapRight
#define HURRICANE_PARTNER_MOVE_TIME
struct ActorBlueprint * actorBlueprint
Vec2b projectileTargetOffset
struct SelectableTarget targetData[24]
#define sfx_play_sound_at_position
EffectInstanceDataPtr data
struct PartnerBuffFXData * partnerBuff
struct EndingDecalsFXData * endingDecals
@ FX_BUFF_DATA_CLOUD_NINE
struct HuffPuffBreathFXData * huffPuffBreath
#define STATUS_FLAGS_IMMOBILIZED
@ ACTION_COMMAND_HURRICANE
@ ACTION_COMMAND_THREE_CHANCES
@ ACTION_COMMAND_SPINY_SURGE
@ BS_FLAGS1_STAR_POINTS_DROPPED
@ BS_FLAGS1_FORCE_IMMUNE_HIT
@ BS_FLAGS1_TRIGGER_EVENTS
@ BS_FLAGS1_SHOW_PLAYER_DECORATIONS
@ BS_FLAGS1_INCLUDE_POWER_UPS
@ BTL_MSG_CLOUD_NINE_BEGIN
@ ACTOR_EVENT_FLAG_ILLUSORY
Player attacks pass through and miss.
@ BTL_MENU_TYPE_STAR_POWERS
@ STATUS_TURN_MOD_DEFAULT
@ STATUS_TURN_MOD_PARALYZE
@ HIT_RESULT_NICE_NO_DAMAGE
@ BTL_CAM_PARTNER_MISTAKE
@ SUPPRESS_EVENT_SPIKY_FRONT
@ SUPPRESS_EVENT_BURN_CONTACT
@ SOUND_LAKILESTER_HURRICANE_WIND
@ SOUND_LAKILESTER_HURRICANE_EXHALE
@ SOUND_LAKILESTER_HURRICANE_INHALE
@ SOUND_LAKILESTER_MAKE_CLOUD_NINE
@ SOUND_LAKILESTER_THROW_SPINY_B
@ SOUND_LAKILESTER_THROW_SPINY_A
@ ACTOR_FLAG_FLYING
Quake Hammer can't hit.
@ ACTOR_FLAG_NO_INACTIVE_ANIM
@ ACTOR_FLAG_SHOW_STATUS_ICONS
@ ACTOR_PART_FLAG_USE_ABSOLUTE_POSITION
@ ACTOR_PART_FLAG_INVISIBLE
@ DAMAGE_TYPE_SPINY_SURGE
@ DAMAGE_TYPE_MULTIPLE_POPUPS
void btl_set_popup_duration(s32 duration)
void get_screen_coords(s32 camID, f32 x, f32 y, f32 z, s32 *screenX, s32 *screenY, s32 *screenZ)
void dispatch_event_actor(Actor *, s32)
f32 dist2D(f32 ax, f32 ay, f32 bx, f32 by)
ActorPart * get_actor_part(Actor *actor, s32 partID)
void set_actor_anim(s32 actorID, s32 partID, AnimID animID)
Actor * get_actor(s32 actorID)
void set_goal_pos_to_part(ActorState *state, s32 actorID, s32 partID)
void add_vec2D_polar(f32 *x, f32 *y, f32 r, f32 theta)
void hud_element_create_transform_A(s32 id)
void hud_element_set_scale(s32 index, f32 scale)
void hud_element_set_script(s32 id, HudScript *anim)
void hud_element_set_render_depth(s32 id, s32 z)
void hud_element_set_transform_rotation(s32 id, f32 x, f32 y, f32 z)
void hud_element_set_render_pos(s32 id, s32 x, s32 y)
s32 hud_element_create(HudScript *anim)
Creates a new HUD element and returns its ID.
void hud_element_free(s32 id)
EvtScript EVS_Partner_Recover
EvtScript EVS_Partner_BurnContact
EvtScript EVS_Partner_Drop
EvtScript EVS_Partner_NoDamageHit
EvtScript EVS_Partner_ShockHit
EvtScript EVS_Partner_BurnHit
EvtScript EVS_Partner_Celebrate
EvtScript EVS_RunAwayFail
EvtScript EVS_Partner_SpikeContact
EvtScript EVS_Partner_LakilesterHit
EvtScript EVS_Partner_RunAway
void sfx_stop_sound(s32 soundID)
ApiStatus RandInt(Evt *script, b32 isInitialCall)
#define NPC_DISPOSE_POS_Z
#define Else
Marks the end of an if statement and the start of the else block.
#define Switch(LVAR)
Marks the start of a switch statement.
#define Ref(sym)
Address/pointer constant.
#define Set(VAR, INT_VALUE)
Sets the given variable to a given value casted to an integer.
#define CaseEq(RVAR)
Marks the start of a switch case that executes only if LVAR == RVAR. It also marks the end of any pre...
#define EndChildThread
Marks the end of a child thread block.
#define Sub(VAR, INT_VALUE)
#define IfNe(LVAR, RVAR)
Marks the beginning of an if statement that only executes if LVAR != RVAR.
#define End
Signals the end of EVT script data. A script missing this will likely crash on load.
#define Add(VAR, INT_VALUE)
#define EndLoop
Marks the end of a loop.
#define EndCaseGroup
Marks the end of a switch case group (CaseOrEq and/or CaseAndEq), stopping fallthrough.
#define NPC_DISPOSE_POS_X
#define Goto(LABEL_ID)
Moves execution to the given label.
#define NPC_DISPOSE_POS_Y
#define IfGt(LVAR, RVAR)
Marks the beginning of an if statement that only executes if LVAR <= RVAR.
#define Label(LABEL_ID)
Marks this point in the script as a Goto target.
#define CaseOrEq(RVAR)
Marks the start of a switch case that executes only if LVAR == RVAR.
#define EndIf
Marks the end of an if statement or an else block.
#define CaseDefault
Marks the start of a switch case that executes unconditionally. It also marks the end of any previous...
#define ExecWait(EVT_SOURCE)
Launches a new child thread.
#define BreakLoop
Breaks out of the innermost loop.
#define Thread
Marks the start of a thread block.
#define EndThread
Marks the end of a thread block.
#define IfFlag(LVAR, RVAR)
Marks the beginning of an if statement that only executes if the RVAR flag is set on LVAR,...
#define BreakSwitch
Marks the end of a switch case.
#define Wait(NUM_FRAMES)
Blocks for the given number of frames.
#define NPC_DISPOSE_LOCATION
#define PlayEffect(args...)
#define EndSwitch
Marks the end of a switch statement and any case.
#define IfEq(LVAR, RVAR)
Marks the beginning of an if statement that only executes if LVAR == RVAR.
#define Call(FUNC, ARGS...)
Calls a given C EVT API function with any number of arguments.
#define ChildThread
Marks the start of a child thread block.
#define CaseGt(RVAR)
Marks the start of a switch case that executes only if LVAR <= RVAR. It also marks the end of any pre...
#define Loop(TIMES)
Marks the beginning of a loop.
#define SetConst(VAR, CONST)
Sets the given variable to a given value, skipping the evt_get_variable call.
#define Return
Kills the current EVT thread.
struct EffectInstance * cloudNineEffect
struct Actor * partnerActor
struct Actor * playerActor
struct EffectInstance * buffEffect
@ ACV_THREE_CHANCES_CLOUD_NINE
GameStatus * gGameStatusPtr
BattleStatus gBattleStatus