Paper Mario DX
Paper Mario (N64) modding
 
Loading...
Searching...
No Matches
sky_guy.inc.c
Go to the documentation of this file.
1#include "common.h"
2#include "effects.h"
3#include "battle/battle.h"
4#include "script_api/battle.h"
5#include "sprite/npc/ShyGuy.h"
6#include "sprite/npc/SkyGuy.h"
7
8#define NAMESPACE A(sky_guy)
9
10extern s32 N(GroundAnims)[];
11
12extern EvtScript N(EVS_Flying_Init);
13extern EvtScript N(EVS_Flying_Idle);
14extern EvtScript N(EVS_Flying_TakeTurn);
15extern EvtScript N(EVS_Flying_HandleEvent);
16
17extern EvtScript N(EVS_Ground_Idle);
18extern EvtScript N(EVS_Ground_TakeTurn);
19extern EvtScript N(EVS_Ground_HandleEvent);
20
21enum N(ActorPartIDs) {
22 PRT_GROUND = 1,
23 PRT_FLYING = 2,
24 PRT_YELLOW_BALLOON = 3,
25 PRT_RED_BALLOON = 4,
26 PRT_BLUE_BALLOON = 5,
27 PRT_STONE = 6,
28};
29
30enum N(ActorVars) {
31 AVAR_BalloonState = 8,
32 AVAL_Balloons_Intact = 0,
33 AVAL_Balloons_Popping = 1,
34 AVAL_Balloons_Popped = 2,
35};
36
37enum N(ActorParams) {
38 DMG_SLINGSHOT = 3,
39 DMG_TACKLE = 2,
40 DMG_VAULT = 3,
41};
42
43s32 N(DefaultAnims)[] = {
44 STATUS_KEY_NORMAL, ANIM_SkyGuy_Anim01,
45 STATUS_KEY_STONE, ANIM_SkyGuy_Anim00,
46 STATUS_KEY_SLEEP, ANIM_SkyGuy_Anim04,
47 STATUS_KEY_POISON, ANIM_SkyGuy_Anim01,
48 STATUS_KEY_STOP, ANIM_SkyGuy_Anim00,
49 STATUS_KEY_STATIC, ANIM_SkyGuy_Anim01,
50 STATUS_KEY_PARALYZE, ANIM_SkyGuy_Anim00,
51 STATUS_KEY_DIZZY, ANIM_SkyGuy_Anim05,
52 STATUS_KEY_FEAR, ANIM_SkyGuy_Anim05,
54};
55
56s32 N(YellowBalloonAnims)[] = {
57 STATUS_KEY_NORMAL, ANIM_SkyGuy_Anim10,
58 STATUS_KEY_STONE, ANIM_SkyGuy_Anim0D,
59 STATUS_KEY_SLEEP, ANIM_SkyGuy_Anim19,
60 STATUS_KEY_POISON, ANIM_SkyGuy_Anim10,
61 STATUS_KEY_STOP, ANIM_SkyGuy_Anim0D,
62 STATUS_KEY_STATIC, ANIM_SkyGuy_Anim10,
63 STATUS_KEY_PARALYZE, ANIM_SkyGuy_Anim0D,
64 STATUS_KEY_DIZZY, ANIM_SkyGuy_Anim10,
65 STATUS_KEY_FEAR, ANIM_SkyGuy_Anim10,
67};
68
69s32 N(RedBalloonAnims)[] = {
70 STATUS_KEY_NORMAL, ANIM_SkyGuy_Anim0F,
71 STATUS_KEY_STONE, ANIM_SkyGuy_Anim0C,
72 STATUS_KEY_SLEEP, ANIM_SkyGuy_Anim18,
73 STATUS_KEY_POISON, ANIM_SkyGuy_Anim0F,
74 STATUS_KEY_STOP, ANIM_SkyGuy_Anim0C,
75 STATUS_KEY_STATIC, ANIM_SkyGuy_Anim0F,
76 STATUS_KEY_PARALYZE, ANIM_SkyGuy_Anim0C,
77 STATUS_KEY_DIZZY, ANIM_SkyGuy_Anim0F,
78 STATUS_KEY_FEAR, ANIM_SkyGuy_Anim0F,
80};
81
82s32 N(BlueBalloonAnims)[] = {
83 STATUS_KEY_NORMAL, ANIM_SkyGuy_Anim11,
84 STATUS_KEY_STONE, ANIM_SkyGuy_Anim0E,
85 STATUS_KEY_SLEEP, ANIM_SkyGuy_Anim1A,
86 STATUS_KEY_POISON, ANIM_SkyGuy_Anim11,
87 STATUS_KEY_STOP, ANIM_SkyGuy_Anim0E,
88 STATUS_KEY_STATIC, ANIM_SkyGuy_Anim11,
89 STATUS_KEY_PARALYZE, ANIM_SkyGuy_Anim0E,
90 STATUS_KEY_DIZZY, ANIM_SkyGuy_Anim11,
91 STATUS_KEY_FEAR, ANIM_SkyGuy_Anim11,
93};
94
95s32 N(StoneAnims)[] = {
96 STATUS_KEY_NORMAL, ANIM_SkyGuy_Anim0B,
98};
99
100s32 N(FlyingDefense)[] = {
102 ELEMENT_SHOCK, 0,
104};
105
106s32 N(GroundDefense)[] = {
108 ELEMENT_SHOCK, 0,
110};
111
112s32 N(FlyingStatusTable)[] = {
119 STATUS_KEY_FEAR, 100,
123 STATUS_KEY_STOP, 90,
135};
136
137s32 N(StatusTable_802296D0)[] = {
144 STATUS_KEY_FEAR, 100,
148 STATUS_KEY_STOP, 90,
160};
161
162ActorPartBlueprint N(ActorParts)[] = {
163 {
165 .index = PRT_GROUND,
166 .posOffset = { 0, 0, 0 },
167 .targetOffset = { 0, 32 },
168 .opacity = 255,
169 .idleAnimations = N(GroundAnims),
170 .defenseTable = N(GroundDefense),
171 .eventFlags = ACTOR_EVENT_FLAGS_NONE,
172 .elementImmunityFlags = 0,
173 .projectileTargetOffset = { 0, -10 },
174 },
175 {
177 .index = PRT_FLYING,
178 .posOffset = { 0, 0, 0 },
179 .targetOffset = { 0, 24 },
180 .opacity = 255,
181 .idleAnimations = N(DefaultAnims),
182 .defenseTable = N(FlyingDefense),
183 .eventFlags = ACTOR_EVENT_FLAGS_NONE,
184 .elementImmunityFlags = 0,
185 .projectileTargetOffset = { -1, -10 },
186 },
187 {
189 .index = PRT_YELLOW_BALLOON,
190 .posOffset = { 0, 0, 0 },
191 .targetOffset = { 2, 50 },
192 .opacity = 255,
193 .idleAnimations = N(YellowBalloonAnims),
194 .defenseTable = N(FlyingDefense),
195 .eventFlags = ACTOR_EVENT_FLAGS_NONE,
196 .elementImmunityFlags = 0,
197 .projectileTargetOffset = { -1, -10 },
198 .overrideNameMsg = MSG_EnemyName_Balloon,
199 },
200 {
202 .index = PRT_RED_BALLOON,
203 .posOffset = { 0, 0, 0 },
204 .targetOffset = { 0, 24 },
205 .opacity = 255,
206 .idleAnimations = N(RedBalloonAnims),
207 .defenseTable = N(FlyingDefense),
208 .eventFlags = ACTOR_EVENT_FLAGS_NONE,
209 .elementImmunityFlags = 0,
210 .projectileTargetOffset = { -1, -10 },
211 },
212 {
214 .index = PRT_BLUE_BALLOON,
215 .posOffset = { 0, 0, 0 },
216 .targetOffset = { 0, 24 },
217 .opacity = 255,
218 .idleAnimations = N(BlueBalloonAnims),
219 .defenseTable = N(FlyingDefense),
220 .eventFlags = ACTOR_EVENT_FLAGS_NONE,
221 .elementImmunityFlags = 0,
222 .projectileTargetOffset = { -1, -10 },
223 },
224 {
226 .index = PRT_STONE,
227 .posOffset = { 0, 0, 0 },
228 .targetOffset = { 0, 24 },
229 .opacity = 255,
230 .idleAnimations = N(StoneAnims),
231 .defenseTable = N(FlyingDefense),
232 .eventFlags = ACTOR_EVENT_FLAGS_NONE,
233 .elementImmunityFlags = 0,
234 .projectileTargetOffset = { -1, -10 },
235 },
236};
237
238ActorBlueprint NAMESPACE = {
239 .flags = ACTOR_FLAG_FLYING,
240 .type = ACTOR_TYPE_SKY_GUY,
241 .level = ACTOR_LEVEL_SKY_GUY,
242 .maxHP = 7,
243 .partCount = ARRAY_COUNT(N(ActorParts)),
244 .partsData = N(ActorParts),
245 .initScript = &N(EVS_Flying_Init),
246 .statusTable = N(FlyingStatusTable),
247 .escapeChance = 50,
248 .airLiftChance = 90,
249 .hurricaneChance = 90,
250 .spookChance = 80,
251 .upAndAwayChance = 95,
252 .spinSmashReq = 0,
253 .powerBounceChance = 90,
254 .coinReward = 1,
255 .size = { 28, 28 },
256 .healthBarOffset = { 0, 0 },
257 .statusIconOffset = { -10, 20 },
258 .statusTextOffset = { 10, 20 },
259};
260
261EvtScript N(EVS_Flying_Init) = {
262 Call(BindTakeTurn, ACTOR_SELF, Ref(N(EVS_Flying_TakeTurn)))
263 Call(BindIdle, ACTOR_SELF, Ref(N(EVS_Flying_Idle)))
264 Call(BindHandleEvent, ACTOR_SELF, Ref(N(EVS_Flying_HandleEvent)))
265 Call(SetActorVar, ACTOR_SELF, AVAR_BalloonState, AVAL_Balloons_Intact)
266 Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
267 Call(SetPartPos, ACTOR_SELF, PRT_YELLOW_BALLOON, LVar0, LVar1, LVar2)
268 Call(SetPartPos, ACTOR_SELF, PRT_RED_BALLOON, LVar0, LVar1, LVar2)
269 Call(SetPartPos, ACTOR_SELF, PRT_BLUE_BALLOON, LVar0, LVar1, LVar2)
270 Call(SetPartFlagBits, ACTOR_SELF, PRT_YELLOW_BALLOON, ACTOR_PART_FLAG_INVISIBLE | ACTOR_PART_FLAG_USE_ABSOLUTE_POSITION, FALSE)
271 Call(SetPartFlagBits, ACTOR_SELF, PRT_RED_BALLOON, ACTOR_PART_FLAG_INVISIBLE | ACTOR_PART_FLAG_USE_ABSOLUTE_POSITION, FALSE)
272 Call(SetPartFlagBits, ACTOR_SELF, PRT_BLUE_BALLOON, ACTOR_PART_FLAG_INVISIBLE | ACTOR_PART_FLAG_USE_ABSOLUTE_POSITION, FALSE)
273 Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
274 Sub(LVar1, 5)
275 Call(ForceHomePos, ACTOR_SELF, LVar0, LVar1, LVar2)
276 Call(HPBarToHome, ACTOR_SELF)
277 Call(SetPartTargetFlagBits, ACTOR_SELF, PRT_YELLOW_BALLOON, ACTOR_PART_TARGET_NO_DAMAGE, TRUE)
278 Return
279 End
280};
281
282EvtScript N(EVS_Flying_Idle) = {
283 Return
284 End
285};
286
287EvtScript N(EVS_KillActor) = {
288 Call(GetActorVar, ACTOR_SELF, AVAR_BalloonState, LVar2)
289 IfNe(LVar2, AVAL_Balloons_Intact)
291 Else
292 Call(SetActorVar, ACTOR_SELF, AVAR_BalloonState, AVAL_Balloons_Popping)
293 Call(GetActorPos, ACTOR_SELF, LVar7, LVar8, LVar9)
294 Add(LVar8, 20)
295 PlayEffect(EFFECT_BALLOON, 2, LVar7, LVar8, LVar9, Float(1.0), 150, 0)
296 Sub(LVar7, 14)
297 Sub(LVar8, 4)
298 PlayEffect(EFFECT_BALLOON, 0, LVar7, LVar8, LVar9, Float(1.0), 150, 0)
299 Add(LVar7, 28)
300 PlayEffect(EFFECT_BALLOON, 1, LVar7, LVar8, LVar9, Float(1.0), 150, 0)
301 Call(SetActorVar, ACTOR_SELF, AVAR_BalloonState, AVAL_Balloons_Popped)
302 Call(SetPartFlagBits, ACTOR_SELF, PRT_YELLOW_BALLOON, ACTOR_PART_FLAG_INVISIBLE | ACTOR_PART_FLAG_NO_TARGET, TRUE)
303 Call(SetPartFlagBits, ACTOR_SELF, PRT_RED_BALLOON, ACTOR_PART_FLAG_INVISIBLE | ACTOR_PART_FLAG_NO_TARGET, TRUE)
304 Call(SetPartFlagBits, ACTOR_SELF, PRT_BLUE_BALLOON, ACTOR_PART_FLAG_INVISIBLE | ACTOR_PART_FLAG_NO_TARGET, TRUE)
306 EndIf
307 Return
308 End
309};
310
311EvtScript N(EVS_ResetAnimations) = {
312 Call(SetAnimation, ACTOR_SELF, PRT_FLYING, ANIM_SkyGuy_Anim02)
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)
316 Return
317 End
318};
319
320EvtScript N(EVS_StretchBalloons) = {
321 Call(MakeLerp, 100, 80, 7, EASING_CUBIC_OUT)
322 Label(0)
324 DivF(LVar0, Float(100.0))
325 SetF(LVar2, Float(2.0))
327 Call(SetPartScale, ACTOR_SELF, PRT_YELLOW_BALLOON, LVar2, LVar0, Float(1.0))
328 Call(SetPartScale, ACTOR_SELF, PRT_RED_BALLOON, LVar2, LVar0, Float(1.0))
329 Call(SetPartScale, ACTOR_SELF, PRT_BLUE_BALLOON, LVar2, LVar0, Float(1.0))
330 Wait(1)
331 IfEq(LVar1, 1)
332 Goto(0)
333 EndIf
335 Label(1)
337 DivF(LVar0, Float(100.0))
338 SetF(LVar2, Float(2.0))
340 Call(SetPartScale, ACTOR_SELF, PRT_YELLOW_BALLOON, LVar2, LVar0, Float(1.0))
341 Call(SetPartScale, ACTOR_SELF, PRT_RED_BALLOON, LVar2, LVar0, Float(1.0))
342 Call(SetPartScale, ACTOR_SELF, PRT_BLUE_BALLOON, LVar2, LVar0, Float(1.0))
343 Wait(1)
344 IfEq(LVar1, 1)
345 Goto(1)
346 EndIf
347 Call(SetPartScale, ACTOR_SELF, PRT_YELLOW_BALLOON, Float(1.0), Float(1.0), Float(1.0))
348 Call(SetPartScale, ACTOR_SELF, PRT_RED_BALLOON, Float(1.0), Float(1.0), Float(1.0))
349 Call(SetPartScale, ACTOR_SELF, PRT_BLUE_BALLOON, Float(1.0), Float(1.0), Float(1.0))
350 Return
351 End
352};
353
354#include "common/StartRumbleWithParams.inc.c"
355
356EvtScript N(EVS_PopBalloons) = {
357 Call(GetLastElement, LVar0)
360 Call(HideHealthBar, ACTOR_SELF)
361 Thread
362 Wait(20)
363 Call(PlaySoundAtActor, ACTOR_SELF, SOUND_SKY_GUY_BALLOON_POP)
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)
368 Wait(30)
369 Call(SetPartFlagBits, ACTOR_SELF, PRT_YELLOW_BALLOON, ACTOR_PART_FLAG_INVISIBLE | ACTOR_PART_FLAG_NO_TARGET, TRUE)
370 Call(SetPartFlagBits, ACTOR_SELF, PRT_RED_BALLOON, ACTOR_PART_FLAG_INVISIBLE | ACTOR_PART_FLAG_NO_TARGET, TRUE)
371 Call(SetPartFlagBits, ACTOR_SELF, PRT_BLUE_BALLOON, ACTOR_PART_FLAG_INVISIBLE | ACTOR_PART_FLAG_NO_TARGET, TRUE)
372 Call(SetActorVar, ACTOR_SELF, AVAR_BalloonState, AVAL_Balloons_Popped)
373 Wait(15)
374 Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
375 Call(SetAnimation, ACTOR_SELF, PRT_FLYING, ANIM_SkyGuy_Anim00)
376 Call(PlaySoundAtActor, ACTOR_SELF, SOUND_EMOTE_QUESTION)
377 PlayEffect(EFFECT_EMOTE, EMOTE_QUESTION, 0, LVar0, LVar1, LVar2, 24, 0, 25, 0, 0)
378 Wait(25)
379 Call(SetAnimation, ACTOR_SELF, PRT_FLYING, ANIM_SkyGuy_Anim06)
380 Wait(30)
381 Call(SetAnimation, ACTOR_SELF, PRT_FLYING, ANIM_SkyGuy_Anim06)
382 Call(SetActorJumpGravity, ACTOR_SELF, Float(0.5))
383 Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
384 Set(LVar1, 0)
385 Call(SetHomePos, ACTOR_SELF, LVar0, LVar1, LVar2)
387 Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
388 Call(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE)
389 Call(N(StartRumbleWithParams), 120, 10)
390 Thread
391 Call(ShakeCam, CAM_BATTLE, 0, 5, Float(0.5))
393 Call(PlaySoundAtActor, ACTOR_SELF, SOUND_ACTOR_COLLAPSE)
394 Call(ResetActorSounds, ACTOR_SELF, ACTOR_SOUND_JUMP)
397 Call(SetAnimation, ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim12)
398 PlayEffect(EFFECT_LANDING_DUST, 3, LVar0, LVar1, LVar2, 0, 0)
399 Wait(40)
400 Call(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_FLYING, FALSE)
401 Call(BindTakeTurn, ACTOR_SELF, Ref(N(EVS_Ground_TakeTurn)))
402 Call(BindIdle, ACTOR_SELF, Ref(N(EVS_Ground_Idle)))
403 Call(BindHandleEvent, ACTOR_SELF, Ref(N(EVS_Ground_HandleEvent)))
404 Call(SetActorType, ACTOR_SELF, ACTOR_TYPE_SHY_GUY)
405 Call(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_TYPE_CHANGED, TRUE)
406 Call(HPBarToHome, ACTOR_SELF)
407 Call(ResetAllActorSounds, ACTOR_SELF)
408 Else
409 ExecWait(N(EVS_StretchBalloons))
410 EndIf
411 Return
412 End
413};
414
415EvtScript N(EVS_Flying_HandleEvent) = {
416 Call(UseIdleAnimation, ACTOR_SELF, FALSE)
417 Call(GetLastEvent, ACTOR_SELF, LVar0)
420 Call(func_8026E914, LVar0, LVar1)
421 IfGe(LVar1, PRT_YELLOW_BALLOON)
422 ExecWait(N(EVS_StretchBalloons))
423 Else
424 SetConst(LVar0, PRT_FLYING)
425 SetConst(LVar1, ANIM_SkyGuy_Anim06)
427 EndIf
429 Call(func_8026E914, LVar0, LVar1)
430 IfGe(LVar1, PRT_YELLOW_BALLOON)
431 ExecWait(N(EVS_StretchBalloons))
432 ExecWait(N(EVS_PopBalloons))
433 Else
434 SetConst(LVar0, PRT_FLYING)
435 SetConst(LVar1, ANIM_SkyGuy_Anim06)
437 EndIf
439 SetConst(LVar0, PRT_FLYING)
440 SetConst(LVar1, ANIM_SkyGuy_Anim09)
441 SetConst(LVar2, ANIM_SkyGuy_Anim0A)
444 SetConst(LVar0, PRT_FLYING)
445 SetConst(LVar1, ANIM_SkyGuy_Anim09)
446 SetConst(LVar2, ANIM_SkyGuy_Anim0A)
448 SetConst(LVar0, PRT_FLYING)
449 SetConst(LVar1, ANIM_SkyGuy_Anim0A)
450 ExecWait(N(EVS_KillActor))
451 Return
453 Call(func_8026E914, LVar0, LVar1)
454 IfGe(LVar1, PRT_YELLOW_BALLOON)
455 ExecWait(N(EVS_StretchBalloons))
456 Else
457 SetConst(LVar0, PRT_FLYING)
458 SetConst(LVar1, ANIM_SkyGuy_Anim01)
460 EndIf
463 Call(func_8026E914, LVar0, LVar1)
464 IfGe(LVar1, PRT_YELLOW_BALLOON)
465 ExecWait(N(EVS_StretchBalloons))
466 Else
467 SetConst(LVar0, PRT_FLYING)
468 SetConst(LVar1, ANIM_SkyGuy_Anim01)
470 EndIf
473 SetConst(LVar0, PRT_FLYING)
474 SetConst(LVar1, ANIM_SkyGuy_Anim06)
476 Wait(10)
477 SetConst(LVar0, PRT_FLYING)
478 SetConst(LVar1, ANIM_SkyGuy_Anim06)
479 ExecWait(N(EVS_KillActor))
480 Return
482 Call(SetActorPos, ACTOR_SELF, 20, 0, 0)
483 Call(HPBarToCurrent, ACTOR_SELF)
485 Call(SetActorYaw, ACTOR_SELF, 180)
486 Call(SetAnimation, ACTOR_SELF, PRT_FLYING, ANIM_SkyGuy_Anim03)
487 Call(SetGoalToHome, ACTOR_SELF)
488 Call(SetActorSpeed, ACTOR_SELF, Float(4.0))
489 Call(FlyToGoal, ACTOR_SELF, 0, 1, EASING_LINEAR)
490 Call(SetAnimation, ACTOR_SELF, PRT_FLYING, ANIM_SkyGuy_Anim01)
491 Call(SetActorYaw, ACTOR_SELF, 0)
492 Call(HPBarToHome, ACTOR_SELF)
494 SetConst(LVar0, PRT_FLYING)
495 SetConst(LVar1, ANIM_SkyGuy_Anim01)
498 Call(SetPartFlagBits, ACTOR_SELF, PRT_YELLOW_BALLOON, ACTOR_PART_FLAG_USE_ABSOLUTE_POSITION, FALSE)
499 Call(SetPartFlagBits, ACTOR_SELF, PRT_RED_BALLOON, ACTOR_PART_FLAG_USE_ABSOLUTE_POSITION, FALSE)
500 Call(SetPartFlagBits, ACTOR_SELF, PRT_BLUE_BALLOON, ACTOR_PART_FLAG_USE_ABSOLUTE_POSITION, FALSE)
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)
504 SetConst(LVar0, PRT_FLYING)
505 SetConst(LVar1, ANIM_SkyGuy_Anim03)
506 SetConst(LVar2, ANIM_SkyGuy_Anim06)
508 Return
510 SetConst(LVar0, PRT_FLYING)
511 SetConst(LVar1, ANIM_SkyGuy_Anim03)
514 SetConst(LVar0, PRT_FLYING)
515 SetConst(LVar1, ANIM_SkyGuy_Anim07)
517 Return
520 ExecWait(N(EVS_ResetAnimations))
521 Call(UseIdleAnimation, ACTOR_SELF, TRUE)
522 Return
523 End
524};
525
526EvtScript N(EVS_Flying_TakeTurn) = {
527 Call(UseIdleAnimation, ACTOR_SELF, FALSE)
528 Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
529 Call(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
530 Call(SetGoalToTarget, ACTOR_SELF)
531 Call(GetBattlePhase, LVar0)
533 Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
534 Call(MoveBattleCamOver, 1)
535 EndIf
536 Call(PlaySoundAtActor, ACTOR_SELF, SOUND_SLINGSHOT_DRAW)
537 Call(SetAnimation, ACTOR_SELF, PRT_FLYING, ANIM_SkyGuy_Anim08)
538 Wait(12)
539 Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
540 Add(LVar1, 20)
541 Add(LVar2, 2)
542 Call(SetPartPos, ACTOR_SELF, PRT_STONE, LVar0, LVar1, LVar2)
543 Call(SetAnimation, ACTOR_SELF, PRT_STONE, ANIM_SkyGuy_Anim0B)
544 Wait(12)
545 Call(SetPartFlagBits, ACTOR_SELF, PRT_STONE, ACTOR_PART_FLAG_INVISIBLE, FALSE)
546 Call(PlaySoundAtActor, ACTOR_SELF, SOUND_SLINGSHOT_FIRE)
547 Call(SetPartSounds, ACTOR_SELF, PRT_STONE, ACTOR_SOUND_JUMP, SOUND_NONE, SOUND_NONE)
551 Call(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
552 Call(SetGoalToTarget, ACTOR_SELF)
553 Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
554 Sub(LVar0, 120)
555 Set(LVar1, 0)
556 Call(SetPartMoveSpeed, ACTOR_SELF, PRT_STONE, Float(12.0))
557 Call(SetPartJumpGravity, ACTOR_SELF, PRT_STONE, Float(0.1))
558 Call(JumpPartTo, ACTOR_SELF, PRT_STONE, LVar0, LVar1, LVar2, 0, TRUE)
559 Call(SetPartFlagBits, ACTOR_SELF, PRT_STONE, ACTOR_PART_FLAG_INVISIBLE, TRUE)
560 ExecWait(N(EVS_ResetAnimations))
561 Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
562 Call(UseIdleAnimation, ACTOR_SELF, TRUE)
563 Return
565 Call(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
566 Call(SetGoalToTarget, ACTOR_SELF)
567 Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
568 Sub(LVar0, 50)
569 Set(LVar1, -5)
570 Call(SetPartMoveSpeed, ACTOR_SELF, PRT_STONE, Float(14.0))
571 Call(SetPartJumpGravity, ACTOR_SELF, PRT_STONE, Float(0.1))
572 Call(FlyPartTo, ACTOR_SELF, PRT_STONE, LVar0, LVar1, LVar2, 0, 30, EASING_LINEAR)
573 Call(SetAnimation, ACTOR_SELF, PRT_FLYING, ANIM_SkyGuy_Anim07)
574 Call(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
575 Call(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
576 Sub(LVar0, 65)
577 Set(LVar1, -5)
578 Call(SetPartMoveSpeed, ACTOR_SELF, PRT_STONE, Float(6.0))
579 Call(SetPartJumpGravity, ACTOR_SELF, PRT_STONE, Float(0.1))
580 Call(FlyPartTo, ACTOR_SELF, PRT_STONE, LVar0, LVar1, LVar2, 0, 15, EASING_LINEAR)
581 Call(SetPartFlagBits, ACTOR_SELF, PRT_STONE, ACTOR_PART_FLAG_INVISIBLE, TRUE)
582 ExecWait(N(EVS_ResetAnimations))
583 Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
584 Call(UseIdleAnimation, ACTOR_SELF, TRUE)
585 Return
587 Call(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
588 Call(SetGoalToTarget, ACTOR_SELF)
589 Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
590 Call(SetPartMoveSpeed, ACTOR_SELF, PRT_STONE, Float(14.0))
591 Call(SetPartJumpGravity, ACTOR_SELF, PRT_STONE, Float(0.1))
592 Call(FlyPartTo, ACTOR_SELF, PRT_STONE, LVar0, LVar1, LVar2, 0, 15, EASING_LINEAR)
593 Wait(2)
594 Call(EnemyDamageTarget, ACTOR_SELF, LVarF, DAMAGE_TYPE_NO_CONTACT, 0, 0, DMG_SLINGSHOT, BS_FLAGS1_TRIGGER_EVENTS)
598 Call(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
599 Sub(LVar0, 55)
600 Set(LVar1, 0)
601 Call(SetPartMoveSpeed, ACTOR_SELF, PRT_STONE, Float(6.0))
602 Call(SetPartJumpGravity, ACTOR_SELF, PRT_STONE, Float(0.1))
603 Call(FlyPartTo, ACTOR_SELF, PRT_STONE, LVar0, LVar1, LVar2, 0, 25, EASING_LINEAR)
604 Call(SetPartMoveSpeed, ACTOR_SELF, PRT_STONE, Float(4.0))
605 Sub(LVar0, 20)
606 Call(FlyPartTo, ACTOR_SELF, PRT_STONE, LVar0, LVar1, LVar2, 0, 21, EASING_LINEAR)
607 Call(SetPartFlagBits, ACTOR_SELF, PRT_STONE, ACTOR_PART_FLAG_INVISIBLE, TRUE)
610 ExecWait(N(EVS_ResetAnimations))
611 Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
612 Call(UseIdleAnimation, ACTOR_SELF, TRUE)
613 Return
614 End
615};
616
617s32 N(GroundAnims)[] = {
618 STATUS_KEY_NORMAL, ANIM_ShyGuy_Red_Anim01,
619 STATUS_KEY_STONE, ANIM_ShyGuy_Red_Anim00,
620 STATUS_KEY_SLEEP, ANIM_ShyGuy_Red_Anim12,
621 STATUS_KEY_POISON, ANIM_ShyGuy_Red_Anim01,
622 STATUS_KEY_STOP, ANIM_ShyGuy_Red_Anim00,
623 STATUS_KEY_STATIC, ANIM_ShyGuy_Red_Anim01,
624 STATUS_KEY_PARALYZE, ANIM_ShyGuy_Red_Anim00,
625 STATUS_KEY_DIZZY, ANIM_ShyGuy_Red_Anim13,
626 STATUS_KEY_FEAR, ANIM_ShyGuy_Red_Anim13,
628};
629
630// unused
631EvtScript N(EVS_Ground_Init) = {
632 Call(BindTakeTurn, ACTOR_SELF, Ref(N(EVS_Ground_TakeTurn)))
633 Call(BindIdle, ACTOR_SELF, Ref(N(EVS_Ground_Idle)))
634 Call(BindHandleEvent, ACTOR_SELF, Ref(N(EVS_Ground_HandleEvent)))
635 Return
636 End
637};
638
640
641EvtScript N(EVS_Ground_Idle) = {
642 Label(0)
643 Call(GetStatusFlags, ACTOR_SELF, LVar0)
645 Call(SetTargetOffset, ACTOR_SELF, PRT_GROUND, -4, 14)
646 Call(SetProjectileTargetOffset, ACTOR_SELF, PRT_GROUND, 0, 0)
647 Call(N(SetAbsoluteStatusOffsets), -10, 13, 10, 13)
648 Else
649 Call(SetTargetOffset, ACTOR_SELF, PRT_GROUND, 0, 24)
650 Call(SetProjectileTargetOffset, ACTOR_SELF, PRT_GROUND, -1, -10)
651 Call(N(SetAbsoluteStatusOffsets), -10, 20, 10, 20)
652 EndIf
653 Wait(1)
654 Goto(0)
655 Return
656 End
657};
658
659EvtScript N(EVS_Ground_ReturnHome) = {
660 Call(ResetAllActorSounds, ACTOR_SELF)
661 SetConst(LVar0, PRT_GROUND)
662 SetConst(LVar1, ANIM_ShyGuy_Red_Anim03)
664 Call(SetAnimation, ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim01)
665 Return
666 End
667};
668
669EvtScript N(EVS_Ground_HandleEvent) = {
670 Call(UseIdleAnimation, ACTOR_SELF, FALSE)
671 Call(GetLastEvent, ACTOR_SELF, LVar0)
675 SetConst(LVar0, PRT_GROUND)
676 SetConst(LVar1, ANIM_ShyGuy_Red_Anim0C)
680 SetConst(LVar0, PRT_GROUND)
681 SetConst(LVar1, ANIM_ShyGuy_Red_Anim0D)
682 SetConst(LVar2, ANIM_ShyGuy_Red_Anim0E)
685 SetConst(LVar0, PRT_GROUND)
686 SetConst(LVar1, ANIM_ShyGuy_Red_Anim0D)
687 SetConst(LVar2, ANIM_ShyGuy_Red_Anim0E)
689 SetConst(LVar0, PRT_GROUND)
690 SetConst(LVar1, ANIM_ShyGuy_Red_Anim0E)
692 Return
694 SetConst(LVar0, PRT_GROUND)
695 SetConst(LVar1, ANIM_ShyGuy_Red_Anim0C)
698 SetConst(LVar0, PRT_GROUND)
699 SetConst(LVar1, ANIM_ShyGuy_Red_Anim0C)
701 SetConst(LVar0, PRT_GROUND)
702 SetConst(LVar1, ANIM_ShyGuy_Red_Anim0C)
704 Return
706 SetConst(LVar0, PRT_GROUND)
707 SetConst(LVar1, ANIM_ShyGuy_Red_Anim0C)
709 SetConst(LVar0, PRT_GROUND)
710 SetConst(LVar1, ANIM_ShyGuy_Red_Anim0C)
712 Call(SetActorSpeed, ACTOR_SELF, Float(4.0))
713 ExecWait(N(EVS_Ground_ReturnHome))
715 SetConst(LVar0, PRT_GROUND)
716 SetConst(LVar1, ANIM_ShyGuy_Red_Anim0C)
718 SetConst(LVar0, PRT_GROUND)
719 SetConst(LVar1, ANIM_ShyGuy_Red_Anim0C)
721 Return
725 SetConst(LVar0, PRT_GROUND)
726 SetConst(LVar1, ANIM_ShyGuy_Red_Anim01)
730 SetConst(LVar0, PRT_GROUND)
731 SetConst(LVar1, ANIM_ShyGuy_Red_Anim0C)
733 Wait(10)
734 SetConst(LVar0, PRT_GROUND)
735 SetConst(LVar1, ANIM_ShyGuy_Red_Anim0C)
737 Return
739 SetConst(LVar0, PRT_GROUND)
740 SetConst(LVar1, ANIM_ShyGuy_Red_Anim01)
743 SetConst(LVar0, PRT_GROUND)
744 SetConst(LVar1, ANIM_ShyGuy_Red_Anim03)
745 SetConst(LVar2, ANIM_ShyGuy_Red_Anim14)
747 Return
749 SetConst(LVar0, PRT_GROUND)
750 SetConst(LVar1, ANIM_ShyGuy_Red_Anim0C)
753 SetConst(LVar0, PRT_GROUND)
754 SetConst(LVar1, ANIM_ShyGuy_Red_Anim0C)
756 Return
759 Call(UseIdleAnimation, ACTOR_SELF, TRUE)
760 Return
761 End
762};
763
764EvtScript N(EVS_Attack_Tackle) = {
765 Call(UseIdleAnimation, ACTOR_SELF, FALSE)
766 Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
767 Call(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
768 Call(UseBattleCamPreset, BTL_CAM_ENEMY_APPROACH)
769 Call(BattleCamTargetActor, ACTOR_SELF)
770 Call(MoveBattleCamOver, 20)
771 Call(SetBattleCamTargetingModes, BTL_CAM_YADJ_TARGET, BTL_CAM_XADJ_AVG, FALSE)
772 Call(SetAnimation, ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim03)
773 Call(SetActorSpeed, ACTOR_SELF, Float(4.0))
774 Call(SetGoalToTarget, ACTOR_SELF)
775 Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
776 Add(LVar0, 50)
777 Set(LVar1, 0)
778 Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
779 Call(RunToGoal, ACTOR_SELF, 0, FALSE)
780 Call(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_INCLUDE_POWER_UPS)
784 Set(LVarA, LVar0)
785 Call(SetActorSounds, ACTOR_SELF, ACTOR_SOUND_JUMP, SOUND_ACTOR_HOP, 0)
787 Call(SetActorSounds, ACTOR_SELF, ACTOR_SOUND_WALK_INCREMENT, 10, 0)
788 Call(SetActorSpeed, ACTOR_SELF, Float(6.0))
789 Call(SetAnimation, ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim04)
790 Call(SetGoalToTarget, ACTOR_SELF)
791 Call(RunToGoal, ACTOR_SELF, 0, FALSE)
792 Call(SetAnimation, ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim05)
793 Call(SetActorSpeed, ACTOR_SELF, Float(6.0))
794 Call(SetActorJumpGravity, ACTOR_SELF, Float(0.5))
795 Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
796 Sub(LVar0, 30)
797 Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
798 Call(JumpToGoal, ACTOR_SELF, 8, FALSE, TRUE, FALSE)
800 Call(EnemyTestTarget, ACTOR_SELF, LVarA, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
801 EndIf
802 Call(ResetAllActorSounds, ACTOR_SELF)
803 Sub(LVar0, 20)
804 Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
805 Call(JumpToGoal, ACTOR_SELF, 8, FALSE, TRUE, FALSE)
806 Wait(15)
807 Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
808 Call(SetActorYaw, ACTOR_SELF, 180)
809 Call(AddActorDecoration, ACTOR_SELF, PRT_GROUND, 0, ACTOR_DECORATION_SWEAT)
810 Call(SetActorSpeed, ACTOR_SELF, Float(4.0))
811 SetConst(LVar0, PRT_GROUND)
812 SetConst(LVar1, ANIM_ShyGuy_Red_Anim04)
814 Call(RemoveActorDecoration, ACTOR_SELF, PRT_GROUND, 0)
815 Call(SetActorYaw, ACTOR_SELF, 0)
816 Call(SetAnimation, ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim01)
817 Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
818 Call(UseIdleAnimation, ACTOR_SELF, TRUE)
819 Return
822 Thread
823 Wait(3)
824 Call(PlaySoundAtActor, ACTOR_SELF, SOUND_ACTOR_HOP)
827 Call(SetActorSounds, ACTOR_SELF, ACTOR_SOUND_WALK_INCREMENT, 10, 0)
828 Call(SetActorSpeed, ACTOR_SELF, Float(6.0))
829 Call(SetAnimation, ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim04)
830 Call(SetGoalToTarget, ACTOR_SELF)
831 Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
832 Add(LVar0, 10)
833 Set(LVar1, 0)
834 Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
835 Call(RunToGoal, ACTOR_SELF, 0, FALSE)
836 Call(SetAnimation, ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim05)
837 Wait(2)
838 Call(SetGoalToTarget, ACTOR_SELF)
839 Call(EnemyDamageTarget, ACTOR_SELF, LVar0, 0, 0, 0, DMG_TACKLE, BS_FLAGS1_TRIGGER_EVENTS)
840 Call(ResetAllActorSounds, ACTOR_SELF)
841 Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
842 Call(MoveBattleCamOver, 15)
843 Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
844 Add(LVar0, 30)
845 Set(LVar1, 0)
846 Call(SetActorJumpGravity, ACTOR_SELF, Float(1.8))
847 Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
848 Call(JumpToGoal, ACTOR_SELF, 10, FALSE, TRUE, FALSE)
849 Call(SetAnimation, ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim01)
850 Wait(8)
851 Call(SetActorSpeed, ACTOR_SELF, Float(6.0))
852 ExecWait(N(EVS_Ground_ReturnHome))
853 Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
854 Call(UseIdleAnimation, ACTOR_SELF, TRUE)
855 Return
856 End
857};
858
859EvtScript N(EVS_Attack_Vault) = {
860 Call(UseIdleAnimation, ACTOR_SELF, FALSE)
861 Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
862 Call(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
863 Call(UseBattleCamPreset, BTL_CAM_ENEMY_APPROACH)
864 Call(BattleCamTargetActor, ACTOR_SELF)
865 Call(MoveBattleCamOver, 20)
866 Call(SetBattleCamTargetingModes, BTL_CAM_YADJ_TARGET, BTL_CAM_XADJ_AVG, FALSE)
867 Call(PlaySoundAtActor, ACTOR_SELF, SOUND_TIMING_BAR_GO)
868 Call(SetAnimation, ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim09)
869 Wait(20)
870 Call(SetAnimation, ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim03)
871 Call(SetActorSpeed, ACTOR_SELF, Float(3.0))
872 Call(SetGoalToTarget, ACTOR_SELF)
873 Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
874 Add(LVar0, 80)
875 Set(LVar1, 0)
876 Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
877 Call(RunToGoal, ACTOR_SELF, 0, FALSE)
879 Call(SetActorSounds, ACTOR_SELF, ACTOR_SOUND_WALK_INCREMENT, 10, 0)
880 Call(SetAnimation, ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim04)
881 Call(SetActorSpeed, ACTOR_SELF, Float(5.0))
882 Sub(LVar0, 40)
883 Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
884 Call(RunToGoal, ACTOR_SELF, 0, FALSE)
885 Call(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_INCLUDE_POWER_UPS)
889 Set(LVarA, LVar0)
890 Call(SetActorSpeed, ACTOR_SELF, Float(6.0))
891 Call(SetAnimation, ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim09)
892 Thread
893 Wait(12)
894 Call(SetAnimation, ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim0A)
896 Call(SetActorJumpGravity, ACTOR_SELF, Float(0.8))
897 Call(SetGoalToTarget, ACTOR_SELF)
898 Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
899 Sub(LVar0, 10)
900 Set(LVar1, 0)
901 Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
902 Call(JumpToGoal, ACTOR_SELF, 24, FALSE, TRUE, FALSE)
904 Call(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
905 EndIf
906 Call(SetAnimation, ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim05)
907 Call(SetActorSpeed, ACTOR_SELF, Float(6.0))
908 Call(SetActorJumpGravity, ACTOR_SELF, Float(0.5))
909 Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
910 Sub(LVar0, 30)
911 Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
912 Call(JumpToGoal, ACTOR_SELF, 8, FALSE, TRUE, FALSE)
913 Sub(LVar0, 20)
914 Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
915 Call(JumpToGoal, ACTOR_SELF, 8, FALSE, TRUE, FALSE)
916 Wait(15)
917 Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
918 Call(MoveBattleCamOver, 15)
919 Call(SetActorYaw, ACTOR_SELF, 180)
920 Call(AddActorDecoration, ACTOR_SELF, PRT_GROUND, 0, ACTOR_DECORATION_SWEAT)
921 Call(SetActorSpeed, ACTOR_SELF, Float(6.0))
922 SetConst(LVar0, PRT_GROUND)
923 SetConst(LVar1, ANIM_ShyGuy_Red_Anim04)
925 Call(RemoveActorDecoration, ACTOR_SELF, PRT_GROUND, 0)
926 Call(SetActorYaw, ACTOR_SELF, 0)
927 Call(SetAnimation, ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim01)
928 Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
929 Call(UseIdleAnimation, ACTOR_SELF, TRUE)
930 Return
933 Call(SetActorSpeed, ACTOR_SELF, Float(6.0))
934 Call(SetAnimation, ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim09)
935 Thread
936 Wait(9)
937 Call(SetAnimation, ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim0A)
939 Call(SetActorJumpGravity, ACTOR_SELF, Float(0.8))
940 Call(SetGoalToTarget, ACTOR_SELF)
941 Call(JumpToGoal, ACTOR_SELF, 18, FALSE, TRUE, FALSE)
942 Wait(2)
943 Call(EnemyDamageTarget, ACTOR_SELF, LVar0, 0, 0, 0, DMG_VAULT, BS_FLAGS1_TRIGGER_EVENTS)
947 Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
948 Call(MoveBattleCamOver, 15)
949 Thread
950 Call(SetActorRotationOffset, ACTOR_SELF, 0, 14, 0)
951 Set(LVar3, 0)
952 Loop(20)
953 Sub(LVar3, 30)
954 IfLt(LVar3, 0)
955 Add(LVar3, 360)
956 EndIf
957 Call(SetActorRotation, ACTOR_SELF, 0, 0, LVar3)
958 Wait(1)
959 EndLoop
960 Call(SetActorRotation, ACTOR_SELF, 0, 0, 0)
961 Call(SetActorRotationOffset, ACTOR_SELF, 0, 0, 0)
963 Call(GetBattleFlags, LVar0)
965 Goto(1)
966 EndIf
967 Call(GetLastDamage, ACTOR_PLAYER, LVar0)
968 IfEq(LVar0, 0)
969 Goto(1)
970 EndIf
971 Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
972 Add(LVar0, 40)
973 Set(LVar1, 0)
974 Call(SetActorJumpGravity, ACTOR_SELF, Float(0.8))
975 Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
976 Call(JumpToGoal, ACTOR_SELF, 20, FALSE, TRUE, FALSE)
977 Call(PlaySoundAtActor, ACTOR_SELF, SOUND_LRAW_CHEERING)
979 Call(SetAnimation, ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim09)
980 Wait(10)
981 Call(SetAnimation, ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim07)
982 Wait(15)
983 Goto(2)
984 Label(1)
985 Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
986 Add(LVar0, 40)
987 Set(LVar1, 0)
988 Call(SetActorJumpGravity, ACTOR_SELF, Float(0.8))
989 Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
990 Call(JumpToGoal, ACTOR_SELF, 20, FALSE, TRUE, FALSE)
991 Call(PlaySoundAtActor, ACTOR_SELF, SOUND_ACTOR_COLLAPSE)
992 Call(SetAnimation, ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim10)
993 Wait(10)
994 Call(PlaySoundAtActor, ACTOR_SELF, SOUND_DISAPPOINTED)
995 Call(AddActorDecoration, ACTOR_SELF, PRT_GROUND, 0, ACTOR_DECORATION_SWEAT)
996 Call(RandInt, 100, LVar0)
997 IfLt(LVar0, 50)
998 Call(SetAnimation, ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim11)
999 Else
1000 Call(SetAnimation, ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim13)
1001 EndIf
1002 Wait(25)
1003 Call(RemoveActorDecoration, ACTOR_SELF, PRT_GROUND, 0)
1004 Call(SetActorYaw, ACTOR_SELF, 180)
1005 Label(2)
1006 Call(SetActorSpeed, ACTOR_SELF, Float(6.0))
1007 SetConst(LVar0, PRT_GROUND)
1008 SetConst(LVar1, ANIM_ShyGuy_Red_Anim04)
1010 Call(SetActorYaw, ACTOR_SELF, 0)
1011 Call(SetAnimation, ACTOR_SELF, PRT_GROUND, ANIM_ShyGuy_Red_Anim01)
1013 EndSwitch
1014 Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
1015 Call(UseIdleAnimation, ACTOR_SELF, TRUE)
1016 Return
1017 End
1018};
1019
1020EvtScript N(EVS_Ground_TakeTurn) = {
1021 Call(RandInt, 1, LVar0)
1022 IfEq(LVar0, 0)
1023 ExecWait(N(EVS_Attack_Tackle))
1024 Else
1025 ExecWait(N(EVS_Attack_Vault))
1026 EndIf
1027 Return
1028 End
1029};
Bytecode EvtScript[]
@ BTL_CAM_XADJ_AVG
Definition enums.h:4900
@ EMOTE_QUESTION
Definition enums.h:497
@ ACTOR_SOUND_WALK
Definition enums.h:2034
@ ACTOR_SOUND_WALK_INCREMENT
Definition enums.h:2038
@ ACTOR_SOUND_JUMP
Definition enums.h:2036
@ BS_FLAGS1_TRIGGER_EVENTS
Definition enums.h:3575
@ BS_FLAGS1_ATK_BLOCKED
Definition enums.h:3600
@ BS_FLAGS1_INCLUDE_POWER_UPS
Definition enums.h:3571
@ ELEMENT_END
Definition enums.h:2114
@ ELEMENT_SHOCK
Definition enums.h:2125
@ ELEMENT_NORMAL
Definition enums.h:2115
@ ACTOR_EVENT_FLAGS_NONE
Definition enums.h:3370
@ ACTOR_DECORATION_SWEAT
Definition enums.h:2045
@ ACTOR_PART_TARGET_NO_DAMAGE
Definition enums.h:1877
@ PHASE_FIRST_STRIKE
Definition enums.h:2059
@ STATUS_KEY_PARALYZE
Definition enums.h:2201
@ STATUS_TURN_MOD_DEFAULT
Definition enums.h:2227
@ STATUS_TURN_MOD_PARALYZE
Definition enums.h:2234
@ STATUS_KEY_FROZEN
Definition enums.h:2203
@ STATUS_TURN_MOD_SLEEP
Definition enums.h:2228
@ STATUS_TURN_MOD_DIZZY
Definition enums.h:2232
@ STATUS_KEY_STATIC
Definition enums.h:2207
@ STATUS_END
Definition enums.h:2196
@ STATUS_TURN_MOD_POISON
Definition enums.h:2233
@ STATUS_KEY_FEAR
Definition enums.h:2199
@ STATUS_TURN_MOD_STOP
Definition enums.h:2237
@ STATUS_KEY_SLEEP
Definition enums.h:2202
@ STATUS_KEY_STONE
Definition enums.h:2208
@ STATUS_KEY_STOP
Definition enums.h:2204
@ STATUS_TURN_MOD_FROZEN
Definition enums.h:2230
@ STATUS_KEY_SHRINK
Definition enums.h:2206
@ STATUS_KEY_DIZZY
Definition enums.h:2200
@ STATUS_KEY_POISON
Definition enums.h:2205
@ STATUS_TURN_MOD_STATIC
Definition enums.h:2229
@ STATUS_TURN_MOD_FEAR
Definition enums.h:2231
@ STATUS_KEY_NORMAL
Definition enums.h:2197
@ STATUS_TURN_MOD_SHRINK
Definition enums.h:2235
@ STATUS_KEY_DEFAULT
Definition enums.h:2198
@ HIT_RESULT_NO_DAMAGE
Definition enums.h:1952
@ HIT_RESULT_HIT
Definition enums.h:1950
@ HIT_RESULT_LUCKY
Definition enums.h:1955
@ HIT_RESULT_MISS
Definition enums.h:1956
@ BTL_CAM_DEFAULT
Definition enums.h:4824
@ BTL_CAM_ENEMY_APPROACH
Definition enums.h:4885
@ SOUND_ID_TRIGGER_CHANGE_SOUND
Definition enums.h:532
@ EASING_CUBIC_OUT
Definition enums.h:515
@ EASING_LINEAR
Definition enums.h:510
@ EASING_COS_FAST_OVERSHOOT
Definition enums.h:518
@ IDLE_SCRIPT_ENABLE
Definition enums.h:6408
@ IDLE_SCRIPT_DISABLE
Definition enums.h:6407
@ STATUS_FLAG_SLEEP
Definition enums.h:2812
@ SOUND_LRAW_CHEERING
Definition enums.h:1151
@ SOUND_NONE
Definition enums.h:547
@ SOUND_TIMING_BAR_GO
Definition enums.h:953
@ SOUND_EMOTE_QUESTION
Definition enums.h:979
@ SOUND_ACTOR_HOP
Definition enums.h:1073
@ SOUND_ACTOR_COLLAPSE
Definition enums.h:1514
@ SOUND_SLINGSHOT_DRAW
Definition enums.h:1065
@ SOUND_SKY_GUY_BALLOON_POP
Definition enums.h:1059
@ SOUND_ACTOR_STEP_A
Definition enums.h:1474
@ SOUND_ACTOR_STEP_B
Definition enums.h:1250
@ SOUND_FALL_QUICK
Definition enums.h:1090
@ SOUND_DISAPPOINTED
Definition enums.h:1482
@ SOUND_SLINGSHOT_FIRE
Definition enums.h:1066
@ ACTOR_PLAYER
Definition enums.h:2085
@ ACTOR_SELF
Definition enums.h:2084
@ ACTOR_FLAG_FLYING
Quake Hammer can't hit.
Definition enums.h:3329
@ ACTOR_FLAG_TYPE_CHANGED
Indicates actors type has changed, triggers recheck for if HP bar should be shown based on tattle sta...
Definition enums.h:3332
@ BTL_CAM_YADJ_TARGET
Definition enums.h:4905
@ EVENT_HIT
Definition enums.h:2132
@ EVENT_SCARE_AWAY
Definition enums.h:2174
@ EVENT_BURN_HIT
Definition enums.h:2136
@ EVENT_BEGIN_FIRST_STRIKE
Definition enums.h:2173
@ EVENT_END_FIRST_STRIKE
Definition enums.h:2171
@ EVENT_IMMUNE
Definition enums.h:2146
@ EVENT_BURN_DEATH
Definition enums.h:2157
@ EVENT_ZERO_DAMAGE
Definition enums.h:2144
@ EVENT_SHOCK_DEATH
Definition enums.h:2159
@ EVENT_SPIN_SMASH_HIT
Definition enums.h:2133
@ EVENT_SPIN_SMASH_DEATH
Definition enums.h:2154
@ EVENT_HIT_COMBO
Definition enums.h:2131
@ EVENT_AIR_LIFT_FAILED
Definition enums.h:2152
@ EVENT_BEGIN_AIR_LIFT
Definition enums.h:2175
@ EVENT_DEATH
Definition enums.h:2153
@ EVENT_SHOCK_HIT
Definition enums.h:2165
@ EVENT_RECOVER_STATUS
Definition enums.h:2167
@ EVENT_BLOW_AWAY
Definition enums.h:2143
@ ACTOR_PART_FLAG_PRIMARY_TARGET
Definition enums.h:3362
@ ACTOR_PART_FLAG_NO_SHADOW
Definition enums.h:3352
@ ACTOR_PART_FLAG_USE_ABSOLUTE_POSITION
Definition enums.h:3361
@ ACTOR_PART_FLAG_NO_DECORATIONS
Definition enums.h:3351
@ ACTOR_PART_FLAG_NO_TARGET
Cannot be targeted.
Definition enums.h:3360
@ ACTOR_PART_FLAG_DAMAGE_IMMUNE
electrified Plays extra hurt SFX?
Definition enums.h:3358
@ ACTOR_PART_FLAG_INVISIBLE
Definition enums.h:3350
@ CAM_BATTLE
Definition enums.h:1801
@ DAMAGE_TYPE_4000
Definition enums.h:2865
@ DAMAGE_TYPE_SPINY_SURGE
Definition enums.h:2867
@ DAMAGE_TYPE_BLAST
Definition enums.h:2860
@ DAMAGE_TYPE_FIRE
Definition enums.h:2852
@ DAMAGE_TYPE_TRIGGER_LUCKY
Definition enums.h:2881
@ DAMAGE_TYPE_NO_CONTACT
Definition enums.h:2878
EvtScript EVS_Enemy_ReturnHome
EvtScript EVS_Enemy_Knockback
EvtScript EVS_Enemy_ScareAway
EvtScript EVS_Enemy_Hit
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.
Definition macros.h:295
#define Switch(LVAR)
Marks the start of a switch statement.
Definition macros.h:311
#define Ref(sym)
Address/pointer constant.
Definition macros.h:60
#define DivF(VAR, FLOAT_VALUE)
Definition macros.h:386
#define IfGe(LVAR, RVAR)
Marks the beginning of an if statement that only executes if LVAR >= RVAR.
Definition macros.h:284
#define Set(VAR, INT_VALUE)
Sets the given variable to a given value casted to an integer.
Definition macros.h:365
#define CaseEq(RVAR)
Marks the start of a switch case that executes only if LVAR == RVAR. It also marks the end of any pre...
Definition macros.h:319
#define Sub(VAR, INT_VALUE)
Definition macros.h:377
#define LVarF
Definition macros.h:163
#define IfNe(LVAR, RVAR)
Marks the beginning of an if statement that only executes if LVAR != RVAR.
Definition macros.h:272
#define End
Signals the end of EVT script data. A script missing this will likely crash on load.
Definition macros.h:213
#define Add(VAR, INT_VALUE)
Definition macros.h:376
#define EndLoop
Marks the end of a loop.
Definition macros.h:248
#define EndCaseGroup
Marks the end of a switch case group (CaseOrEq and/or CaseAndEq), stopping fallthrough.
Definition macros.h:352
#define Goto(LABEL_ID)
Moves execution to the given label.
Definition macros.h:232
#define ARRAY_COUNT(arr)
Definition macros.h:40
#define IfLt(LVAR, RVAR)
Marks the beginning of an if statement that only executes if LVAR < RVAR.
Definition macros.h:275
#define Float(DOUBLE)
Definition macros.h:51
#define Label(LABEL_ID)
Marks this point in the script as a Goto target.
Definition macros.h:227
#define CaseOrEq(RVAR)
Marks the start of a switch case that executes only if LVAR == RVAR.
Definition macros.h:341
#define EndIf
Marks the end of an if statement or an else block.
Definition macros.h:298
#define CaseDefault
Marks the start of a switch case that executes unconditionally. It also marks the end of any previous...
Definition macros.h:337
#define ExecWait(EVT_SOURCE)
Launches a new child thread.
Definition macros.h:475
#define LVar7
Definition macros.h:155
#define Thread
Marks the start of a thread block.
Definition macros.h:544
#define EndThread
Marks the end of a thread block.
Definition macros.h:547
#define SetF(VAR, FLOAT_VALUE)
Sets the given variable to a given value, but supports Floats.
Definition macros.h:373
#define IfFlag(LVAR, RVAR)
Marks the beginning of an if statement that only executes if the RVAR flag is set on LVAR,...
Definition macros.h:288
#define LVar8
Definition macros.h:156
#define LVar2
Definition macros.h:150
#define LVar1
Definition macros.h:149
#define LVarA
Definition macros.h:158
#define Wait(NUM_FRAMES)
Blocks for the given number of frames.
Definition macros.h:254
#define LVar9
Definition macros.h:157
#define SubF(VAR, FLOAT_VALUE)
Definition macros.h:384
#define PlayEffect(args...)
Definition macros.h:807
#define EndSwitch
Marks the end of a switch statement and any case.
Definition macros.h:362
#define IfEq(LVAR, RVAR)
Marks the beginning of an if statement that only executes if LVAR == RVAR.
Definition macros.h:269
#define Call(FUNC, ARGS...)
Calls a given C EVT API function with any number of arguments.
Definition macros.h:576
#define Loop(TIMES)
Marks the beginning of a loop.
Definition macros.h:245
#define LVar3
Definition macros.h:151
#define LVar0
Definition macros.h:148
#define SetConst(VAR, CONST)
Sets the given variable to a given value, skipping the evt_get_variable call.
Definition macros.h:370
#define Return
Kills the current EVT thread.
Definition macros.h:217