Paper Mario DX
Paper Mario (N64) modding
 
Loading...
Searching...
No Matches
swooper.inc.c
Go to the documentation of this file.
1#include "battle/battle.h"
2#include "script_api/battle.h"
3#include "sprite/npc/Swooper.h"
4
5#define NAMESPACE A(swooper)
6
7extern s32 N(CeilingAnims)[];
8extern EvtScript N(EVS_Init);
9extern EvtScript N(EVS_Idle);
10extern EvtScript N(EVS_TakeTurn);
11extern EvtScript N(EVS_HandleEvent);
12
13enum N(ActorPartIDs) {
14 PRT_MAIN = 1,
15};
16
17enum N(ActorVars) {
18 AVAR_IN_SnapToIndexPos = 0, // -1 = no, 0 = yes
19 AVAR_IsFlying = 8, // false when attached to ceiling
20};
21
22enum N(ActorParams) {
23 DMG_SWOOP = 2,
24};
25
26s32 N(DefenseTable)[] = {
29};
30
31s32 N(StatusTable)[] = {
54};
55
56ActorPartBlueprint N(ActorParts)[] = {
57 {
59 .index = PRT_MAIN,
60 .posOffset = { 0, 0, 0 },
61 .targetOffset = { 0, 29 },
62 .opacity = 255,
63 .idleAnimations = N(CeilingAnims),
64 .defenseTable = N(DefenseTable),
65 .eventFlags = ACTOR_EVENT_FLAGS_NONE,
66 .elementImmunityFlags = 0,
67 .projectileTargetOffset = { 1, 15 },
68 },
69};
70
71ActorBlueprint NAMESPACE = {
73 .type = ACTOR_TYPE_SWOOPER,
74 .level = ACTOR_LEVEL_SWOOPER,
75 .maxHP = 4,
76 .partCount = ARRAY_COUNT(N(ActorParts)),
77 .partsData = N(ActorParts),
78 .initScript = &N(EVS_Init),
79 .statusTable = N(StatusTable),
80 .escapeChance = 50,
81 .airLiftChance = 100,
82 .hurricaneChance = 95,
83 .spookChance = 90,
84 .upAndAwayChance = 95,
85 .spinSmashReq = 0,
86 .powerBounceChance = 80,
87 .coinReward = 1,
88 .size = { 31, 24 },
89 .healthBarOffset = { 0, 0 },
90 .statusIconOffset = { -10, -20 },
91 .statusTextOffset = { 10, -20 },
92};
93
94s32 N(CeilingAnims)[] = {
95 STATUS_KEY_NORMAL, ANIM_Swooper_Anim0C,
96 STATUS_KEY_STONE, ANIM_Swooper_Anim0B,
97 STATUS_KEY_SLEEP, ANIM_Swooper_Anim0F,
98 STATUS_KEY_POISON, ANIM_Swooper_Anim0C,
99 STATUS_KEY_STOP, ANIM_Swooper_Anim0B,
100 STATUS_KEY_STATIC, ANIM_Swooper_Anim0C,
101 STATUS_KEY_PARALYZE, ANIM_Swooper_Anim0B,
102 STATUS_KEY_DIZZY, ANIM_Swooper_Anim10,
103 STATUS_KEY_FEAR, ANIM_Swooper_Anim10,
105};
106
107s32 N(FlyingAnims)[] = {
108 STATUS_KEY_NORMAL, ANIM_Swooper_Anim02,
109 STATUS_KEY_STONE, ANIM_Swooper_Anim01,
110 STATUS_KEY_SLEEP, ANIM_Swooper_Anim13,
111 STATUS_KEY_POISON, ANIM_Swooper_Anim02,
112 STATUS_KEY_STOP, ANIM_Swooper_Anim01,
113 STATUS_KEY_STATIC, ANIM_Swooper_Anim02,
114 STATUS_KEY_PARALYZE, ANIM_Swooper_Anim01,
115 STATUS_KEY_DIZZY, ANIM_Swooper_Anim14,
116 STATUS_KEY_FEAR, ANIM_Swooper_Anim14,
118};
119
120EvtScript N(EVS_Init) = {
121 Call(BindTakeTurn, ACTOR_SELF, Ref(N(EVS_TakeTurn)))
122 Call(BindIdle, ACTOR_SELF, Ref(N(EVS_Idle)))
123 Call(BindHandleEvent, ACTOR_SELF, Ref(N(EVS_HandleEvent)))
124 Call(SetActorVar, ACTOR_SELF, AVAR_IsFlying, 0)
125 Return
126 End
127};
128
129EvtScript N(EVS_Idle) = {
130 Return
131 End
132};
133
134EvtScript N(EVS_ReturnHome) = {
135 Call(GetActorVar, ACTOR_SELF, AVAR_IsFlying, LVar0)
137 CaseEq(0)
138 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Swooper_Anim02)
139 Call(SetActorSpeed, ACTOR_SELF, Float(8.0))
140 Call(SetGoalToHome, ACTOR_SELF)
141 Call(AddGoalPos, ACTOR_SELF, 0, -24, 0)
142 Call(FlyToGoal, ACTOR_SELF, 0, 1, EASING_SIN_OUT)
143 Call(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_UPSIDE_DOWN, TRUE)
144 Call(SetIdleAnimations, ACTOR_SELF, PRT_MAIN, Ref(N(CeilingAnims)))
145 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Swooper_Anim0C)
146 Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
147 Add(LVar1, 24)
148 Call(SetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
149 Call(HPBarToHome, ACTOR_SELF)
150 CaseEq(1)
151 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Swooper_Anim02)
152 Call(SetActorSpeed, ACTOR_SELF, Float(8.0))
153 Call(SetGoalToHome, ACTOR_SELF)
154 Call(FlyToGoal, ACTOR_SELF, 0, 1, EASING_SIN_OUT)
156 Return
157 End
158};
159
160EvtScript N(EVS_Flying_HandleEvent) = {
161 Call(UseIdleAnimation, ACTOR_SELF, FALSE)
162 Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
163 Call(GetLastEvent, ACTOR_SELF, LVar0)
167 SetConst(LVar0, PRT_MAIN)
168 SetConst(LVar1, ANIM_Swooper_Anim15)
172 SetConst(LVar0, PRT_MAIN)
173 SetConst(LVar1, ANIM_Swooper_Anim17)
174 SetConst(LVar2, ANIM_Swooper_Anim18)
177 SetConst(LVar0, PRT_MAIN)
178 SetConst(LVar1, ANIM_Swooper_Anim17)
179 SetConst(LVar2, ANIM_Swooper_Anim18)
181 SetConst(LVar0, PRT_MAIN)
182 SetConst(LVar1, ANIM_Swooper_Anim18)
184 Return
186 Call(func_80269470)
187 SetConst(LVar0, PRT_MAIN)
188 SetConst(LVar1, ANIM_Swooper_Anim15)
190 Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
191 ExecWait(N(EVS_ReturnHome))
193 Call(func_80269470)
194 SetConst(LVar0, PRT_MAIN)
195 SetConst(LVar1, ANIM_Swooper_Anim15)
197 Thread
198 Wait(30)
199 Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
201 SetConst(LVar0, PRT_MAIN)
202 SetConst(LVar1, ANIM_Swooper_Anim15)
204 Return
208 SetConst(LVar0, PRT_MAIN)
209 SetConst(LVar1, ANIM_Swooper_Anim02)
213 SetConst(LVar0, PRT_MAIN)
214 SetConst(LVar1, ANIM_Swooper_Anim15)
216 Wait(10)
217 SetConst(LVar0, PRT_MAIN)
218 SetConst(LVar1, ANIM_Swooper_Anim15)
220 Return
222 SetConst(LVar0, PRT_MAIN)
223 SetConst(LVar1, ANIM_Swooper_Anim02)
226 Call(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_FLYING, FALSE)
227 SetConst(LVar0, PRT_MAIN)
228 SetConst(LVar1, ANIM_Swooper_Anim02)
229 SetConst(LVar2, ANIM_Swooper_Anim15)
231 Return
233 SetConst(LVar0, PRT_MAIN)
234 SetConst(LVar1, ANIM_Swooper_Anim02)
237 SetConst(LVar0, PRT_MAIN)
238 SetConst(LVar1, ANIM_Swooper_Anim15)
240 Return
242 Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
243 Call(UseIdleAnimation, ACTOR_SELF, TRUE)
244 Return
245 End
246};
247
248#include "common/battle/SetAbsoluteStatusOffsets.inc.c"
249
250EvtScript N(EVS_FallFromCeiling) = {
251 Call(HideHealthBar, ACTOR_SELF)
252 Call(GetLastDamage, ACTOR_SELF, LVar0)
253 IfLe(LVar0, 0)
254 Return
255 EndIf
256 Call(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_UPSIDE_DOWN, FALSE)
257 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Swooper_Anim02)
258 Call(SetActorDispOffset, ACTOR_SELF, 0, 0, 0)
259 Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
260 Sub(LVar1, 24)
261 Call(SetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
262 Call(GetActorVar, ACTOR_SELF, AVAR_IN_SnapToIndexPos, LVarA)
263 IfEq(LVarA, -1)
264 Call(SetHomePos, ACTOR_SELF, LVar0, 45, LVar2)
265 Call(SetActorJumpGravity, ACTOR_SELF, Float(0.8))
266 Call(SetGoalToHome, ACTOR_SELF)
267 Call(JumpToGoal, ACTOR_SELF, 15, FALSE, FALSE, FALSE)
268 Call(JumpToGoal, ACTOR_SELF, 10, FALSE, FALSE, FALSE)
269 Else
270 Call(SetActorJumpGravity, ACTOR_SELF, Float(0.8))
271 Call(SetGoalPos, ACTOR_SELF, LVar0, 45, LVar2)
272 Call(JumpToGoal, ACTOR_SELF, 15, FALSE, FALSE, FALSE)
273 Call(GetIndexFromPos, ACTOR_SELF, LVarA)
274 Mod(LVarA, 4)
275 Add(LVarA, 4)
276 Call(SetGoalToIndex, ACTOR_SELF, LVarA)
277 Call(GetGoalPos, ACTOR_SELF, LVarA, LVarB, LVarC)
278 Call(SetHomePos, ACTOR_SELF, LVarA, LVarB, LVarC)
279 Call(SetActorJumpGravity, ACTOR_SELF, Float(0.8))
280 Call(SetGoalToHome, ACTOR_SELF)
281 Call(JumpToGoal, ACTOR_SELF, 10, FALSE, FALSE, FALSE)
282 EndIf
283 Call(SetProjectileTargetOffset, ACTOR_SELF, PRT_MAIN, 0, -10)
284 Call(SetTargetOffset, ACTOR_SELF, PRT_MAIN, 0, 22)
285 Call(N(SetAbsoluteStatusOffsets), -10, 20, 10, 20)
286 Call(SetIdleAnimations, ACTOR_SELF, PRT_MAIN, Ref(N(FlyingAnims)))
287 Call(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_FLYING, TRUE)
288 Call(HPBarToHome, ACTOR_SELF)
289 Call(SetActorVar, ACTOR_SELF, AVAR_IsFlying, 1)
290 Return
291 End
292};
293
294EvtScript N(EVS_HandleEvent) = {
295 Call(GetActorVar, ACTOR_SELF, AVAR_IsFlying, LVar0)
296 IfEq(LVar0, 1)
297 ExecWait(N(EVS_Flying_HandleEvent))
298 Return
299 EndIf
300 Call(UseIdleAnimation, ACTOR_SELF, FALSE)
301 Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
302 Call(GetLastEvent, ACTOR_SELF, LVar0)
305 Call(GetBattlePhase, LVar0)
307 SetConst(LVar0, PRT_MAIN)
308 SetConst(LVar1, ANIM_Swooper_Anim15)
310 Else
311 SetConst(LVar0, PRT_MAIN)
312 SetConst(LVar1, ANIM_Swooper_Anim0E)
314 EndIf
316 Call(GetBattlePhase, LVar0)
318 SetConst(LVar0, PRT_MAIN)
319 SetConst(LVar1, ANIM_Swooper_Anim15)
321 Else
322 SetConst(LVar0, PRT_MAIN)
323 SetConst(LVar1, ANIM_Swooper_Anim0E)
325 ExecWait(N(EVS_FallFromCeiling))
326 EndIf
328 Call(GetBattlePhase, LVar0)
330 SetConst(LVar0, PRT_MAIN)
331 SetConst(LVar1, ANIM_Swooper_Anim17)
332 SetConst(LVar2, ANIM_Swooper_Anim18)
334 Else
335 SetConst(LVar0, PRT_MAIN)
336 SetConst(LVar1, ANIM_Swooper_Anim11)
337 SetConst(LVar2, ANIM_Swooper_Anim12)
339 ExecWait(N(EVS_FallFromCeiling))
340 EndIf
342 Call(GetBattlePhase, LVar0)
344 SetConst(LVar0, PRT_MAIN)
345 SetConst(LVar1, ANIM_Swooper_Anim17)
346 SetConst(LVar2, ANIM_Swooper_Anim18)
348 SetConst(LVar0, PRT_MAIN)
349 SetConst(LVar1, ANIM_Swooper_Anim18)
351 Else
352 SetConst(LVar0, PRT_MAIN)
353 SetConst(LVar1, ANIM_Swooper_Anim11)
354 SetConst(LVar2, ANIM_Swooper_Anim12)
356 SetConst(LVar0, PRT_MAIN)
357 SetConst(LVar1, ANIM_Swooper_Anim12)
359 EndIf
360 Return
362 Call(func_80269470)
363 SetConst(LVar0, PRT_MAIN)
364 SetConst(LVar1, ANIM_Swooper_Anim15)
366 Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
367 ExecWait(N(EVS_ReturnHome))
369 Call(func_80269470)
370 SetConst(LVar0, PRT_MAIN)
371 SetConst(LVar1, ANIM_Swooper_Anim15)
373 Thread
374 Wait(30)
375 Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
377 SetConst(LVar0, PRT_MAIN)
378 SetConst(LVar1, ANIM_Swooper_Anim15)
380 Return
383 SetConst(LVar0, PRT_MAIN)
384 SetConst(LVar1, ANIM_Swooper_Anim0C)
388 Call(GetBattlePhase, LVar0)
390 SetConst(LVar0, PRT_MAIN)
391 SetConst(LVar1, ANIM_Swooper_Anim15)
393 Wait(10)
394 SetConst(LVar0, PRT_MAIN)
395 SetConst(LVar1, ANIM_Swooper_Anim15)
397 Else
398 SetConst(LVar0, PRT_MAIN)
399 SetConst(LVar1, ANIM_Swooper_Anim0E)
401 Wait(10)
402 SetConst(LVar0, PRT_MAIN)
403 SetConst(LVar1, ANIM_Swooper_Anim0E)
405 EndIf
406 Return
408 Call(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_UPSIDE_DOWN, FALSE)
409 Call(SetIdleAnimations, ACTOR_SELF, PRT_MAIN, Ref(N(FlyingAnims)))
410 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Swooper_Anim02)
411 Call(SetActorPos, ACTOR_SELF, 20, 0, 0)
412 Call(HPBarToCurrent, ACTOR_SELF)
414 ExecWait(N(EVS_ReturnHome))
415 Call(HPBarToHome, ACTOR_SELF)
418 Call(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_FLYING, TRUE)
419 Call(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_UPSIDE_DOWN, FALSE)
420 Call(SetActorDispOffset, ACTOR_SELF, 0, -24, 0)
421 SetConst(LVar0, PRT_MAIN)
422 SetConst(LVar1, ANIM_Swooper_Anim02)
423 SetConst(LVar2, ANIM_Swooper_Anim15)
425 Return
427 Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
428 Call(UseIdleAnimation, ACTOR_SELF, TRUE)
429 Return
430 End
431};
432
433EvtScript N(EVS_Flying_TakeTurn) = {
434 Call(UseIdleAnimation, ACTOR_SELF, FALSE)
435 Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
436 Call(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
437 Call(GetBattlePhase, LVar0)
439 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Swooper_Anim02)
440 Call(SetGoalToTarget, ACTOR_SELF)
441 Call(AddGoalPos, ACTOR_SELF, 50, 10, 0)
442 Call(SetActorSpeed, ACTOR_SELF, Float(8.0))
443 Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
444 Call(SetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
445 Else
446 Call(UseBattleCamPreset, BTL_CAM_ENEMY_APPROACH)
447 Call(BattleCamTargetActor, ACTOR_SELF)
448 Call(SetBattleCamTargetingModes, BTL_CAM_YADJ_TARGET, BTL_CAM_XADJ_AVG, FALSE)
449 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Swooper_Anim02)
450 Call(SetGoalToTarget, ACTOR_SELF)
451 Call(AddGoalPos, ACTOR_SELF, 50, 10, 0)
452 Call(SetActorSpeed, ACTOR_SELF, Float(8.0))
453 Call(FlyToGoal, ACTOR_SELF, 0, -4, EASING_LINEAR)
454 EndIf
455 Call(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 2, BS_FLAGS1_INCLUDE_POWER_UPS)
459 Set(LVarA, LVar0)
460 Wait(10)
461 Call(SetActorSpeed, ACTOR_SELF, Float(5.0))
462 Call(SetActorJumpGravity, ACTOR_SELF, Float(1.8))
463 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Swooper_Anim06)
464 Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
465 Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
466 Call(JumpToGoal, ACTOR_SELF, 10, FALSE, FALSE, FALSE)
467 Call(SetGoalToTarget, ACTOR_SELF)
468 Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
469 Sub(LVar0, 50)
470 Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
471 Call(SetActorSpeed, ACTOR_SELF, Float(8.0))
472 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Swooper_Anim06)
473 Call(FlyToGoal, ACTOR_SELF, 0, -10, EASING_LINEAR)
474 Call(SetAnimationRate, ACTOR_SELF, PRT_MAIN, Float(10.0))
475 Wait(15)
476 Call(SetAnimationRate, ACTOR_SELF, PRT_MAIN, Float(1.0))
478 Call(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
479 EndIf
480 Call(YieldTurn)
481 Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
482 Call(SetActorYaw, ACTOR_SELF, 180)
483 Call(AddActorDecoration, ACTOR_SELF, PRT_MAIN, 0, ACTOR_DECORATION_SWEAT)
484 ExecWait(N(EVS_ReturnHome))
485 Call(RemoveActorDecoration, ACTOR_SELF, PRT_MAIN, 0)
486 Call(SetActorYaw, ACTOR_SELF, 0)
487 Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
488 Call(UseIdleAnimation, ACTOR_SELF, TRUE)
489 Return
492 Call(GetStatusFlags, ACTOR_SELF, LVar0)
494 Set(LFlag0, FALSE)
495 Else
496 Set(LFlag0, TRUE)
497 EndIf
499 Wait(10)
500 Call(SetActorSpeed, ACTOR_SELF, Float(5.0))
501 Call(SetActorJumpGravity, ACTOR_SELF, Float(1.8))
502 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Swooper_Anim06)
503 Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
504 Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
505 Call(JumpToGoal, ACTOR_SELF, 10, FALSE, FALSE, FALSE)
506 Call(SetGoalToTarget, ACTOR_SELF)
507 Call(SetActorSpeed, ACTOR_SELF, Float(8.0))
508 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Swooper_Anim06)
509 Call(FlyToGoal, ACTOR_SELF, 0, -10, EASING_LINEAR)
510 Wait(2)
511 Call(EnemyDamageTarget, ACTOR_SELF, LVar0, 0, 0, 0, DMG_SWOOP, BS_FLAGS1_TRIGGER_EVENTS)
512 Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
513 Call(SetGoalToTarget, ACTOR_SELF)
514 Call(AddGoalPos, ACTOR_SELF, 50, 10, 0)
515 Call(SetActorSpeed, ACTOR_SELF, Float(8.0))
516 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Swooper_Anim02)
517 Call(FlyToGoal, ACTOR_SELF, 0, -10, EASING_LINEAR)
518 Wait(10)
519 Call(YieldTurn)
520 ExecWait(N(EVS_ReturnHome))
521 Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
522 Call(UseIdleAnimation, ACTOR_SELF, TRUE)
523 Return
524 End
525};
526
527EvtScript N(EVS_TakeTurn) = {
528 Call(GetActorVar, ACTOR_SELF, AVAR_IsFlying, LVar0)
529 IfEq(LVar0, 1)
530 ExecWait(N(EVS_Flying_TakeTurn))
531 Return
532 EndIf
533 Call(UseIdleAnimation, ACTOR_SELF, FALSE)
534 Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
535 Call(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
536 Call(UseBattleCamPreset, BTL_CAM_ENEMY_APPROACH)
537 Call(BattleCamTargetActor, ACTOR_SELF)
538 Call(SetBattleCamTargetingModes, BTL_CAM_YADJ_TARGET, BTL_CAM_XADJ_AVG, FALSE)
539 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Swooper_Anim02)
540 Call(SetActorFlagBits, ACTOR_SELF, ACTOR_FLAG_UPSIDE_DOWN, FALSE)
541 Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
542 Sub(LVar1, 24)
543 Call(SetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
544 Call(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 2, BS_FLAGS1_INCLUDE_POWER_UPS)
548 Set(LVarA, LVar0)
549 Wait(10)
550 Call(SetActorSpeed, ACTOR_SELF, Float(5.0))
551 Call(SetActorJumpGravity, ACTOR_SELF, Float(1.8))
552 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Swooper_Anim06)
553 Call(SetGoalToTarget, ACTOR_SELF)
554 Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
555 Call(AddGoalPos, ACTOR_SELF, -50, 0, 0)
556 Call(SetActorSpeed, ACTOR_SELF, Float(8.0))
557 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Swooper_Anim06)
558 Call(FlyToGoal, ACTOR_SELF, 0, -40, EASING_LINEAR)
559 Call(SetAnimationRate, ACTOR_SELF, PRT_MAIN, Float(10.0))
560 Wait(15)
561 Call(SetAnimationRate, ACTOR_SELF, PRT_MAIN, Float(1.0))
563 Call(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
564 EndIf
565 Call(YieldTurn)
566 Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
567 Call(SetActorYaw, ACTOR_SELF, 180)
568 Call(AddActorDecoration, ACTOR_SELF, PRT_MAIN, 0, ACTOR_DECORATION_SWEAT)
569 ExecWait(N(EVS_ReturnHome))
570 Call(RemoveActorDecoration, ACTOR_SELF, PRT_MAIN, 0)
571 Call(SetActorYaw, ACTOR_SELF, 0)
572 Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
573 Call(UseIdleAnimation, ACTOR_SELF, TRUE)
574 Return
577 Call(GetStatusFlags, ACTOR_SELF, LVar0)
579 Set(LFlag0, FALSE)
580 Else
581 Set(LFlag0, TRUE)
582 EndIf
584 Wait(10)
585 Call(SetActorSpeed, ACTOR_SELF, Float(5.0))
586 Call(SetActorJumpGravity, ACTOR_SELF, Float(1.8))
587 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Swooper_Anim06)
588 Call(SetGoalToTarget, ACTOR_SELF)
589 Call(SetActorSpeed, ACTOR_SELF, Float(8.0))
590 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Swooper_Anim06)
591 Call(FlyToGoal, ACTOR_SELF, 0, -40, EASING_LINEAR)
592 Wait(2)
593 Call(EnemyDamageTarget, ACTOR_SELF, LVar0, 0, 0, 0, DMG_SWOOP, BS_FLAGS1_TRIGGER_EVENTS)
594 Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
595 Call(SetGoalToTarget, ACTOR_SELF)
596 Call(AddGoalPos, ACTOR_SELF, 50, 10, 0)
597 Call(SetActorSpeed, ACTOR_SELF, Float(8.0))
598 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Swooper_Anim02)
599 Call(FlyToGoal, ACTOR_SELF, 0, -10, EASING_LINEAR)
600 Wait(10)
601 Call(YieldTurn)
602 ExecWait(N(EVS_ReturnHome))
603 Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
604 Call(UseIdleAnimation, ACTOR_SELF, TRUE)
605 Return
606 Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
607 Call(UseIdleAnimation, ACTOR_SELF, TRUE)
608 Return
609 End
610};
Bytecode EvtScript[]
@ BTL_CAM_XADJ_AVG
Definition enums.h:4900
@ BS_FLAGS1_TRIGGER_EVENTS
Definition enums.h:3575
@ BS_FLAGS1_INCLUDE_POWER_UPS
Definition enums.h:3571
@ ELEMENT_END
Definition enums.h:2114
@ ELEMENT_NORMAL
Definition enums.h:2115
@ ACTOR_EVENT_FLAGS_NONE
Definition enums.h:3370
@ ACTOR_DECORATION_SWEAT
Definition enums.h:2045
@ 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_HIT_STATIC
Definition enums.h:1957
@ 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
@ EASING_SIN_OUT
Definition enums.h:521
@ EASING_LINEAR
Definition enums.h:510
@ IDLE_SCRIPT_ENABLE
Definition enums.h:6408
@ IDLE_SCRIPT_DISABLE
Definition enums.h:6407
@ STATUS_FLAG_STATIC
Definition enums.h:2813
@ 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_UPSIDE_DOWN
HP bar offset below actor (e.g. Swooper when upside-down).
Definition enums.h:3331
@ 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_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
@ DAMAGE_TYPE_TRIGGER_LUCKY
Definition enums.h:2881
EvtScript EVS_Enemy_ScareAway
EvtScript EVS_Enemy_Hit
EvtScript EVS_Enemy_Death
EvtScript EVS_Enemy_ShockHit_Impl
EvtScript EVS_Enemy_ShockHit
EvtScript EVS_Enemy_AirLift
EvtScript EVS_Enemy_BlowAway
EvtScript EVS_Enemy_Recover
EvtScript EVS_Enemy_BurnHit
EvtScript EVS_Enemy_NoDamageHit
#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 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 End
Signals the end of EVT script data. A script missing this will likely crash on load.
Definition macros.h:213
#define Mod(VAR, INT_VALUE)
Definition macros.h:380
#define Add(VAR, INT_VALUE)
Definition macros.h:376
#define EndCaseGroup
Marks the end of a switch case group (CaseOrEq and/or CaseAndEq), stopping fallthrough.
Definition macros.h:352
#define LVarC
Definition macros.h:160
#define ARRAY_COUNT(arr)
Definition macros.h:40
#define Float(DOUBLE)
Definition macros.h:51
#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 LVarB
Definition macros.h:159
#define ExecWait(EVT_SOURCE)
Launches a new child thread.
Definition macros.h:475
#define IfLe(LVAR, RVAR)
Marks the beginning of an if statement that only executes if LVAR > RVAR.
Definition macros.h:281
#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 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 LVar2
Definition macros.h:150
#define LVar1
Definition macros.h:149
#define LFlag0
Definition macros.h:167
#define LVarA
Definition macros.h:158
#define Wait(NUM_FRAMES)
Blocks for the given number of frames.
Definition macros.h:254
#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 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