5#include "sprite/npc/ShyGuy.h"
6#include "sprite/npc/SkyGuy.h"
8#define NAMESPACE A(sky_guy)
10extern s32 N(GroundAnims)[];
15extern EvtScript N(EVS_Flying_HandleEvent);
19extern EvtScript N(EVS_Ground_HandleEvent);
24 PRT_YELLOW_BALLOON = 3,
31 AVAR_BalloonState = 8,
32 AVAL_Balloons_Intact = 0,
33 AVAL_Balloons_Popping = 1,
34 AVAL_Balloons_Popped = 2,
43s32 N(DefaultAnims)[] = {
56s32 N(YellowBalloonAnims)[] = {
69s32 N(RedBalloonAnims)[] = {
82s32 N(BlueBalloonAnims)[] = {
95s32 N(StoneAnims)[] = {
100s32 N(FlyingDefense)[] = {
106s32 N(GroundDefense)[] = {
112s32 N(FlyingStatusTable)[] = {
137s32 N(StatusTable_802296D0)[] = {
166 .posOffset = { 0, 0, 0 },
167 .targetOffset = { 0, 32 },
169 .idleAnimations = N(GroundAnims),
170 .defenseTable = N(GroundDefense),
172 .elementImmunityFlags = 0,
173 .projectileTargetOffset = { 0, -10 },
178 .posOffset = { 0, 0, 0 },
179 .targetOffset = { 0, 24 },
181 .idleAnimations = N(DefaultAnims),
182 .defenseTable = N(FlyingDefense),
184 .elementImmunityFlags = 0,
185 .projectileTargetOffset = { -1, -10 },
189 .index = PRT_YELLOW_BALLOON,
190 .posOffset = { 0, 0, 0 },
191 .targetOffset = { 2, 50 },
193 .idleAnimations = N(YellowBalloonAnims),
194 .defenseTable = N(FlyingDefense),
196 .elementImmunityFlags = 0,
197 .projectileTargetOffset = { -1, -10 },
198 .overrideNameMsg = MSG_EnemyName_Balloon,
202 .index = PRT_RED_BALLOON,
203 .posOffset = { 0, 0, 0 },
204 .targetOffset = { 0, 24 },
206 .idleAnimations = N(RedBalloonAnims),
207 .defenseTable = N(FlyingDefense),
209 .elementImmunityFlags = 0,
210 .projectileTargetOffset = { -1, -10 },
214 .index = PRT_BLUE_BALLOON,
215 .posOffset = { 0, 0, 0 },
216 .targetOffset = { 0, 24 },
218 .idleAnimations = N(BlueBalloonAnims),
219 .defenseTable = N(FlyingDefense),
221 .elementImmunityFlags = 0,
222 .projectileTargetOffset = { -1, -10 },
227 .posOffset = { 0, 0, 0 },
228 .targetOffset = { 0, 24 },
230 .idleAnimations = N(StoneAnims),
231 .defenseTable = N(FlyingDefense),
233 .elementImmunityFlags = 0,
234 .projectileTargetOffset = { -1, -10 },
240 .type = ACTOR_TYPE_SKY_GUY,
241 .level = ACTOR_LEVEL_SKY_GUY,
244 .partsData = N(ActorParts),
245 .initScript = &N(EVS_Flying_Init),
246 .statusTable = N(FlyingStatusTable),
249 .hurricaneChance = 90,
251 .upAndAwayChance = 95,
253 .powerBounceChance = 90,
256 .healthBarOffset = { 0, 0 },
257 .statusIconOffset = { -10, 20 },
258 .statusTextOffset = { 10, 20 },
265 Call(SetActorVar,
ACTOR_SELF, AVAR_BalloonState, AVAL_Balloons_Intact)
292 Call(SetActorVar,
ACTOR_SELF, AVAR_BalloonState, AVAL_Balloons_Popping)
301 Call(SetActorVar,
ACTOR_SELF, AVAR_BalloonState, AVAL_Balloons_Popped)
313 Call(SetAnimation,
ACTOR_SELF, PRT_YELLOW_BALLOON, ANIM_SkyGuy_Anim13)
314 Call(SetAnimation,
ACTOR_SELF, PRT_RED_BALLOON, ANIM_SkyGuy_Anim12)
315 Call(SetAnimation,
ACTOR_SELF, PRT_BLUE_BALLOON, ANIM_SkyGuy_Anim14)
354#include "common/StartRumbleWithParams.inc.c"
365 Call(SetAnimation,
ACTOR_SELF, PRT_YELLOW_BALLOON, ANIM_SkyGuy_Anim2E)
366 Call(SetAnimation,
ACTOR_SELF, PRT_RED_BALLOON, ANIM_SkyGuy_Anim2D)
367 Call(SetAnimation,
ACTOR_SELF, PRT_BLUE_BALLOON, ANIM_SkyGuy_Anim2F)
372 Call(SetActorVar,
ACTOR_SELF, AVAR_BalloonState, AVAL_Balloons_Popped)
377 PlayEffect(EFFECT_EMOTE,
EMOTE_QUESTION, 0,
LVar0,
LVar1,
LVar2, 24, 0, 25, 0, 0)
389 Call(N(StartRumbleWithParams), 120, 10)
397 Call(SetAnimation,
ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim12)
501 Call(SetAnimation,
ACTOR_SELF, PRT_YELLOW_BALLOON, ANIM_SkyGuy_Anim1F)
502 Call(SetAnimation,
ACTOR_SELF, PRT_RED_BALLOON, ANIM_SkyGuy_Anim1E)
503 Call(SetAnimation,
ACTOR_SELF, PRT_BLUE_BALLOON, ANIM_SkyGuy_Anim20)
534 Call(MoveBattleCamOver, 1)
617s32 N(GroundAnims)[] = {
647 Call(N(SetAbsoluteStatusOffsets), -10, 13, 10, 13)
651 Call(N(SetAbsoluteStatusOffsets), -10, 20, 10, 20)
664 Call(SetAnimation,
ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim01)
770 Call(MoveBattleCamOver, 20)
772 Call(SetAnimation,
ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim03)
789 Call(SetAnimation,
ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim04)
792 Call(SetAnimation,
ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim05)
816 Call(SetAnimation,
ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim01)
829 Call(SetAnimation,
ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim04)
836 Call(SetAnimation,
ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim05)
842 Call(MoveBattleCamOver, 15)
849 Call(SetAnimation,
ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim01)
865 Call(MoveBattleCamOver, 20)
868 Call(SetAnimation,
ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim09)
870 Call(SetAnimation,
ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim03)
880 Call(SetAnimation,
ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim04)
891 Call(SetAnimation,
ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim09)
894 Call(SetAnimation,
ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim0A)
906 Call(SetAnimation,
ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim05)
918 Call(MoveBattleCamOver, 15)
927 Call(SetAnimation,
ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim01)
934 Call(SetAnimation,
ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim09)
937 Call(SetAnimation,
ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim0A)
948 Call(MoveBattleCamOver, 15)
979 Call(SetAnimation,
ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim09)
981 Call(SetAnimation,
ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim07)
992 Call(SetAnimation,
ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim10)
998 Call(SetAnimation,
ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim11)
1000 Call(SetAnimation,
ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim13)
1011 Call(SetAnimation,
ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim01)
@ ACTOR_SOUND_WALK_INCREMENT
@ BS_FLAGS1_TRIGGER_EVENTS
@ BS_FLAGS1_INCLUDE_POWER_UPS
@ ACTOR_PART_TARGET_NO_DAMAGE
@ STATUS_TURN_MOD_DEFAULT
@ STATUS_TURN_MOD_PARALYZE
@ SOUND_ID_TRIGGER_CHANGE_SOUND
@ EASING_COS_FAST_OVERSHOOT
@ SOUND_SKY_GUY_BALLOON_POP
@ ACTOR_FLAG_FLYING
Quake Hammer can't hit.
@ ACTOR_FLAG_TYPE_CHANGED
Indicates actors type has changed, triggers recheck for if HP bar should be shown based on tattle sta...
@ EVENT_BEGIN_FIRST_STRIKE
@ ACTOR_PART_FLAG_PRIMARY_TARGET
@ ACTOR_PART_FLAG_NO_SHADOW
@ ACTOR_PART_FLAG_USE_ABSOLUTE_POSITION
@ ACTOR_PART_FLAG_NO_DECORATIONS
@ ACTOR_PART_FLAG_NO_TARGET
Cannot be targeted.
@ ACTOR_PART_FLAG_DAMAGE_IMMUNE
electrified Plays extra hurt SFX?
@ ACTOR_PART_FLAG_INVISIBLE
@ DAMAGE_TYPE_SPINY_SURGE
@ DAMAGE_TYPE_TRIGGER_LUCKY
EvtScript EVS_Enemy_ReturnHome
EvtScript EVS_Enemy_Knockback
EvtScript EVS_Enemy_ScareAway
EvtScript EVS_Enemy_Death
EvtScript EVS_Enemy_SpinSmashHit
EvtScript EVS_Enemy_ShockHit
EvtScript EVS_Enemy_AirLift
EvtScript EVS_Enemy_BlowAway
EvtScript EVS_Enemy_Recover
EvtScript EVS_Enemy_BurnHit
EvtScript EVS_Enemy_NoDamageHit
ApiStatus UpdateLerp(Evt *script, b32 isInitialCall)
ApiStatus RandInt(Evt *script, b32 isInitialCall)
ApiStatus ShakeCam(Evt *script, b32 isInitialCall)
ApiStatus MakeLerp(Evt *script, b32 isInitialCall)
#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 DivF(VAR, FLOAT_VALUE)
#define IfGe(LVAR, RVAR)
Marks the beginning of an if statement that only executes if LVAR >= RVAR.
#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 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 Goto(LABEL_ID)
Moves execution to the given label.
#define IfLt(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 Thread
Marks the start of a thread block.
#define EndThread
Marks the end of a thread block.
#define SetF(VAR, FLOAT_VALUE)
Sets the given variable to a given value, but supports Floats.
#define IfFlag(LVAR, RVAR)
Marks the beginning of an if statement that only executes if the RVAR flag is set on LVAR,...
#define Wait(NUM_FRAMES)
Blocks for the given number of frames.
#define SubF(VAR, FLOAT_VALUE)
#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 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.