Paper Mario DX
Paper Mario (N64) modding
 
Loading...
Searching...
No Matches
ghost_kooper.inc.c
Go to the documentation of this file.
1#include "battle/battle.h"
2#include "script_api/battle.h"
3#include "sprite/npc/BattleKooper.h"
4
5#define NAMESPACE A(kooper_clone)
6
7extern EvtScript N(EVS_Init);
8extern EvtScript N(EVS_Idle);
9extern EvtScript N(EVS_TakeTurn);
10extern EvtScript N(EVS_HandleEvent);
11
12s32 N(DefaultAnims)[] = {
13 STATUS_KEY_NORMAL, ANIM_BattleKooper_Idle,
14 STATUS_KEY_STONE, ANIM_BattleKooper_Still,
15 STATUS_KEY_SLEEP, ANIM_BattleKooper_Still,
16 STATUS_KEY_POISON, ANIM_BattleKooper_Idle,
17 STATUS_KEY_STOP, ANIM_BattleKooper_Still,
18 STATUS_KEY_STATIC, ANIM_BattleKooper_Idle,
19 STATUS_KEY_PARALYZE, ANIM_BattleKooper_Still,
20 STATUS_KEY_DIZZY, ANIM_BattleKooper_Injured,
21 STATUS_KEY_FEAR, ANIM_BattleKooper_Injured,
23};
24
25s32 N(ToppleAnims)[] = {
26 STATUS_KEY_NORMAL, ANIM_BattleKooper_Toppled,
27 STATUS_KEY_STONE, ANIM_BattleKooper_StillToppled,
28 STATUS_KEY_SLEEP, ANIM_BattleKooper_StillToppled,
29 STATUS_KEY_POISON, ANIM_BattleKooper_Toppled,
30 STATUS_KEY_STOP, ANIM_BattleKooper_StillToppled,
31 STATUS_KEY_STATIC, ANIM_BattleKooper_Toppled,
32 STATUS_KEY_PARALYZE, ANIM_BattleKooper_StillToppled,
33 STATUS_KEY_DIZZY, ANIM_BattleKooper_Toppled,
34 STATUS_KEY_FEAR, ANIM_BattleKooper_Toppled,
36};
37
38s32 N(UprightDefenseTable)[] = {
41};
42
43s32 N(ToppledDefenseTable)[] = {
46};
47
48s32 N(StatusTable)[] = {
71};
72
73ActorPartBlueprint N(ActorParts)[] = {
74 {
76 .index = PRT_MAIN,
77 .posOffset = { 0, 0, 0 },
78 .targetOffset = { -2, 32 },
79 .opacity = 255,
80 .idleAnimations = N(DefaultAnims),
81 .defenseTable = N(UprightDefenseTable),
82 .eventFlags = ACTOR_EVENT_FLAG_FLIPABLE,
83 .elementImmunityFlags = 0,
84 .projectileTargetOffset = { 0, -16 },
85 },
86};
87
88ActorBlueprint NAMESPACE = {
89 .flags = 0,
90 .type = ACTOR_TYPE_GHOST_KOOPER,
91 .level = ACTOR_LEVEL_GHOST_KOOPER,
92 .maxHP = 15,
93 .partCount = ARRAY_COUNT(N(ActorParts)),
94 .partsData = N(ActorParts),
95 .initScript = &N(EVS_Init),
96 .statusTable = N(StatusTable),
97 .escapeChance = 50,
98 .airLiftChance = 80,
99 .hurricaneChance = 70,
100 .spookChance = 50,
101 .upAndAwayChance = 95,
102 .spinSmashReq = 0,
103 .powerBounceChance = 90,
104 .coinReward = 2,
105 .size = { 32, 38 },
106 .healthBarOffset = { 0, 0 },
107 .statusIconOffset = { -10, 20 },
108 .statusTextOffset = { 10, 20 },
109};
110
111EvtScript N(EVS_Init) = {
112 Call(BindTakeTurn, ACTOR_SELF, Ref(N(EVS_TakeTurn)))
113 Call(BindIdle, ACTOR_SELF, Ref(N(EVS_Idle)))
114 Call(BindHandleEvent, ACTOR_SELF, Ref(N(EVS_HandleEvent)))
115 Call(SetActorVar, ACTOR_SELF, AVAR_Kooper_Toppled, FALSE)
116 Call(SetActorVar, ACTOR_SELF, AVAR_Kooper_ToppleTurns, 0)
117 Return
118 End
119};
120
121#include "common/battle/SetAbsoluteStatusOffsets.inc.c"
122
123EvtScript N(EVS_Idle) = {
124 Label(0)
125 Call(GetActorVar, ACTOR_SELF, AVAR_Kooper_Toppled, LVar0)
127 CaseEq(0)
128 Call(SetTargetOffset, ACTOR_SELF, PRT_MAIN, -2, 38)
129 Call(SetProjectileTargetOffset, ACTOR_SELF, PRT_MAIN, -3, -9)
130 Call(N(SetAbsoluteStatusOffsets), -10, 25, 10, 25)
131 CaseEq(1)
132 Call(SetTargetOffset, ACTOR_SELF, PRT_MAIN, 5, 15)
133 Call(SetProjectileTargetOffset, ACTOR_SELF, PRT_MAIN, 0, -6)
134 Call(N(SetAbsoluteStatusOffsets), -10, 20, 10, 20)
136 Wait(1)
137 Goto(0)
138 Return
139 End
140};
141
142s32 N(FlipPosOffsets)[] = { 9, 16, 22, 26, 30, 32, 33, 32, 30, 26, 22, 16, 9, 0, 4, 6, 7, 6, 4, 0, 2, 0 };
143
144EvtScript N(EVS_HandleEvent) = {
145 Call(UseIdleAnimation, ACTOR_SELF, FALSE)
146 Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
147 Call(GetLastEvent, ACTOR_SELF, LVar0)
151 Call(GetLastElement, LVar1)
153 SetConst(LVar0, PRT_MAIN)
154 SetConst(LVar1, ANIM_BattleKooper_Hurt)
155 ExecWait(A(EVS_Duplighost_OnHitElectric))
156 Return
157 Else
158 SetConst(LVar0, PRT_MAIN)
159 SetConst(LVar1, ANIM_BattleKooper_Hurt)
161 EndIf
164 SetConst(LVar0, PRT_MAIN)
165 SetConst(LVar1, ANIM_BattleKooper_BurnHurt)
166 SetConst(LVar2, ANIM_BattleKooper_BurnStill)
169 SetConst(LVar0, PRT_MAIN)
170 SetConst(LVar1, ANIM_BattleKooper_BurnHurt)
171 SetConst(LVar2, ANIM_BattleKooper_BurnStill)
173 ExecWait(A(EVS_Duplighost_OnDeath))
174 SetConst(LVar0, PRT_MAIN)
175 SetConst(LVar1, ANIM_BattleKooper_BurnStill)
177 Return
179 SetConst(LVar0, PRT_MAIN)
180 SetConst(LVar1, ANIM_BattleKooper_Hurt)
183 ExecWait(A(EVS_Duplighost_OnDeath))
184 SetConst(LVar0, PRT_MAIN)
185 SetConst(LVar1, ANIM_BattleKooper_Hurt)
187 SetConst(LVar0, PRT_MAIN)
188 SetConst(LVar1, ANIM_BattleKooper_Hurt)
190 Return
192 Call(SetActorVar, ACTOR_SELF, AVAR_Kooper_Toppled, 1)
193 Call(SetActorVar, ACTOR_SELF, AVAR_Kooper_ToppleTurns, 1)
194 Call(SetDefenseTable, ACTOR_SELF, PRT_MAIN, Ref(N(ToppledDefenseTable)))
195 Call(SetIdleAnimations, ACTOR_SELF, PRT_MAIN, Ref(N(ToppleAnims)))
196 Call(SetTargetOffset, ACTOR_SELF, PRT_MAIN, 5, 15)
197 Call(SetProjectileTargetOffset, ACTOR_SELF, PRT_MAIN, 0, -6)
198 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleKooper_Hurt)
199 Call(SetActorRotationOffset, ACTOR_SELF, 0, 12, 0)
200 Thread
201 Wait(4)
202 Call(SetActorRotation, ACTOR_SELF, 0, 0, 30)
203 Wait(1)
204 Call(SetActorRotation, ACTOR_SELF, 0, 0, 0)
205 Wait(1)
206 Call(SetActorRotation, ACTOR_SELF, 0, 0, -30)
207 Wait(1)
208 Call(SetActorRotation, ACTOR_SELF, 0, 0, -60)
209 Wait(1)
210 Call(SetActorRotation, ACTOR_SELF, 0, 0, -75)
211 Wait(1)
213 UseBuf(N(FlipPosOffsets))
214 Loop(ARRAY_COUNT(N(FlipPosOffsets)))
216 Call(SetActorDispOffset, ACTOR_SELF, 0, LVar0, 0)
217 Wait(1)
218 EndLoop
219 Call(SetActorRotationOffset, ACTOR_SELF, 0, 0, 0)
220 Call(SetActorRotation, ACTOR_SELF, 0, 0, 0)
221 Call(SetActorDispOffset, ACTOR_SELF, 0, 0, 0)
222 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleKooper_Toppled)
226 Call(GetActorVar, ACTOR_SELF, AVAR_Kooper_Toppled, LVar0)
228 CaseEq(0)
229 SetConst(LVar0, PRT_MAIN)
230 SetConst(LVar1, ANIM_BattleKooper_Idle)
231 CaseEq(1)
232 Call(SetAnimationRate, ACTOR_SELF, PRT_MAIN, Float(1.0))
233 SetConst(LVar0, PRT_MAIN)
234 SetConst(LVar1, ANIM_BattleKooper_Toppled)
239 ExecWait(A(EVS_Duplighost_OnDeath))
240 SetConst(LVar0, PRT_MAIN)
241 SetConst(LVar1, ANIM_BattleKooper_Hurt)
243 Wait(10)
244 SetConst(LVar0, PRT_MAIN)
245 SetConst(LVar1, ANIM_BattleKooper_Hurt)
247 Return
249 Call(GetActorVar, ACTOR_SELF, AVAR_Kooper_Toppled, LVar0)
250 IfEq(LVar0, 1)
251 SetConst(LVar0, PRT_MAIN)
252 SetConst(LVar1, ANIM_BattleKooper_Toppled)
254 Else
255 SetConst(LVar0, PRT_MAIN)
256 SetConst(LVar1, ANIM_BattleKooper_Idle)
258 EndIf
260 SetConst(LVar0, PRT_MAIN)
261 SetConst(LVar1, ANIM_BattleKooper_Run)
262 SetConst(LVar2, ANIM_BattleKooper_Hurt)
264 Return
266 Call(GetActorVar, ACTOR_SELF, AVAR_Kooper_Toppled, LVar0)
268 CaseEq(0)
269 SetConst(LVar0, PRT_MAIN)
270 SetConst(LVar1, ANIM_BattleKooper_Run)
271 CaseEq(1)
272 Call(SetAnimationRate, ACTOR_SELF, PRT_MAIN, Float(3.0))
273 SetConst(LVar0, PRT_MAIN)
274 SetConst(LVar1, ANIM_BattleKooper_Toppled)
278 Call(GetActorVar, ACTOR_SELF, AVAR_Kooper_Toppled, LVar0)
280 CaseEq(0)
281 Call(GetStatusFlags, ACTOR_SELF, LVar0)
284 Call(SetActorDispOffset, ACTOR_SELF, 0, 1, 0)
285 Else
286 Call(SetActorDispOffset, ACTOR_SELF, 0, 3, 0)
287 EndIf
288 EndIf
289 SetConst(LVar0, PRT_MAIN)
290 SetConst(LVar1, ANIM_BattleKooper_Hurt)
291 CaseEq(1)
292 SetConst(LVar0, PRT_MAIN)
293 SetConst(LVar1, ANIM_BattleKooper_Toppled)
296 Return
299 Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
300 Call(UseIdleAnimation, ACTOR_SELF, TRUE)
301 Return
302 End
303};
304
305#include "common/UnkActorPosFunc.inc.c"
306
307EvtScript N(EVS_TakeTurn) = {
308 Call(UseIdleAnimation, ACTOR_SELF, FALSE)
309 Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_DISABLE)
310 Call(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
311 Call(GetActorVar, ACTOR_SELF, AVAR_Kooper_Toppled, LVar0)
312 IfEq(LVar0, 1)
313 Call(GetActorVar, ACTOR_SELF, AVAR_Kooper_ToppleTurns, LVar0)
314 Sub(LVar0, 1)
315 IfGt(LVar0, 0)
316 Call(SetActorVar, ACTOR_SELF, AVAR_Kooper_ToppleTurns, LVar0)
317 Call(AddActorDecoration, ACTOR_SELF, PRT_MAIN, 0, ACTOR_DECORATION_SWEAT)
318 Call(SetAnimationRate, ACTOR_SELF, PRT_MAIN, Float(3.0))
319 Wait(30)
320 Call(SetAnimationRate, ACTOR_SELF, PRT_MAIN, Float(1.0))
321 Call(RemoveActorDecoration, ACTOR_SELF, PRT_MAIN, 0)
322 Else
323 Call(AddActorDecoration, ACTOR_SELF, PRT_MAIN, 0, ACTOR_DECORATION_SWEAT)
324 Call(SetAnimationRate, ACTOR_SELF, PRT_MAIN, Float(3.0))
325 Wait(20)
326 Call(SetAnimationRate, ACTOR_SELF, PRT_MAIN, Float(1.0))
327 Call(RemoveActorDecoration, ACTOR_SELF, PRT_MAIN, 0)
328 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleKooper_Toppled)
329 Set(LVar0, 0)
330 Call(SetActorRotationOffset, ACTOR_SELF, 0, 12, 0)
331 Thread
332 Loop(5)
333 Add(LVar0, 15)
334 Call(SetActorRotation, ACTOR_SELF, 0, 0, LVar0)
335 Wait(1)
336 EndLoop
338 Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
339 Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
340 Call(SetActorJumpGravity, ACTOR_SELF, Float(3.0))
341 Call(JumpToGoal, ACTOR_SELF, 8, FALSE, TRUE, FALSE)
342 Call(SetActorRotationOffset, ACTOR_SELF, 0, 0, 0)
343 Call(SetActorRotation, ACTOR_SELF, 0, 0, 0)
344 Call(SetActorDispOffset, ACTOR_SELF, 0, 0, 0)
345 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleKooper_Idle)
346 Call(SetActorVar, ACTOR_SELF, AVAR_Kooper_Toppled, 0)
347 Call(SetDefenseTable, ACTOR_SELF, PRT_MAIN, Ref(N(UprightDefenseTable)))
348 Call(SetIdleAnimations, ACTOR_SELF, PRT_MAIN, Ref(N(DefaultAnims)))
349 Call(SetTargetOffset, ACTOR_SELF, PRT_MAIN, -2, 38)
350 Call(SetProjectileTargetOffset, ACTOR_SELF, PRT_MAIN, -3, -9)
351 EndIf
352 Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
353 Call(UseIdleAnimation, ACTOR_SELF, TRUE)
354 Return
355 EndIf
356 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleKooper_EnterShell)
357 Call(PlaySoundAtActor, ACTOR_SELF, SOUND_NONE)
358 Wait(15)
359 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleKooper_ShellSpinSlowest)
360 Call(PlaySoundAtActor, ACTOR_SELF, SOUND_KOOPER_SHELL_SPINUP)
361 Call(UseBattleCamPreset, BTL_CAM_ACTOR)
362 Call(BattleCamTargetActor, ACTOR_SELF)
363 Call(MoveBattleCamOver, 75)
364 Call(SetBattleCamTargetingModes, BTL_CAM_YADJ_AVG, BTL_CAM_XADJ_AVG, TRUE)
365 Call(GetActorVar, ACTOR_SELF, AVAR_Copy_PartnerLevel, LVar0)
368 Set(LVar0, 10)
370 Set(LVar0, 20)
372 Set(LVar0, 30)
374 Set(LVar9, 0)
375 Loop(LVar0)
376 Add(LVar9, 1)
378 CaseLt(20)
379 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleKooper_ShellSpinSlowest)
380 Call(SetActorSpeed, ACTOR_SELF, Float(10.0))
381 CaseEq(20)
382 Call(GetActorPos, ACTOR_SELF, LVar4, LVar5, LVar6)
383 PlayEffect(EFFECT_SMOKE_IMPACT, 1, LVar4, LVar5, LVar6, 32, 4, 0, 10, 0)
384 CaseLt(40)
385 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleKooper_ShellSpinSlower)
386 Call(SetActorSpeed, ACTOR_SELF, Float(12.0))
387 CaseEq(40)
388 Call(GetActorPos, ACTOR_SELF, LVar4, LVar5, LVar6)
389 PlayEffect(EFFECT_SMOKE_IMPACT, 1, LVar4, LVar5, LVar6, 32, 4, 0, 10, 0)
390 CaseLt(50)
391 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleKooper_ShellSpinFaster)
392 Call(SetActorSpeed, ACTOR_SELF, Float(14.0))
393 CaseEq(50)
394 Call(GetActorPos, ACTOR_SELF, LVar4, LVar5, LVar6)
395 PlayEffect(EFFECT_SMOKE_IMPACT, 1, LVar4, LVar5, LVar6, 32, 4, 0, 10, 0)
396 CaseLt(60)
397 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleKooper_ShellSpinFastest)
398 Call(SetActorSpeed, ACTOR_SELF, Float(16.0))
399 CaseEq(60)
400 Call(GetActorPos, ACTOR_SELF, LVar4, LVar5, LVar6)
401 PlayEffect(EFFECT_SMOKE_IMPACT, 1, LVar4, LVar5, LVar6, 32, 4, 0, 10, 0)
403 Wait(1)
404 EndLoop
405 Call(PlaySoundAtActor, ACTOR_SELF, SOUND_PARAKARRY_AIR_RAID_1)
407 Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
408 Call(MoveBattleCamOver, 15)
409 Call(AddActorDecoration, ACTOR_SELF, PRT_ZERO, 0, ACTOR_DECORATION_GREY_SMOKE_TRAIL)
410 Call(SetGoalToTarget, ACTOR_SELF)
411 Call(RunToGoal, ACTOR_SELF, 0, FALSE)
412 Call(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_INCLUDE_POWER_UPS)
416 Set(LVarA, LVar0)
417 Thread
418 Call(N(UnkActorPosFunc))
419 Call(RemoveActorDecoration, ACTOR_SELF, PRT_ZERO, 0)
421 Wait(4)
422 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleKooper_ShellStill)
423 Call(SetActorRotationOffset, ACTOR_SELF, -8, 0, 0)
424 Set(LVar0, 0)
425 Loop(2)
426 Add(LVar0, 30)
427 Call(SetActorRotation, ACTOR_SELF, 0, 0, LVar0)
428 Wait(1)
429 EndLoop
430 Wait(5)
431 Call(GetActorPos, ACTOR_SELF, LVar4, LVar5, LVar6)
432 PlayEffect(EFFECT_SMOKE_IMPACT, 1, LVar4, LVar5, LVar6, 16, 4, 0, 10, 0)
433 Loop(5)
434 Add(LVar0, -12)
435 Call(SetActorRotation, ACTOR_SELF, 0, 0, LVar0)
436 Wait(1)
437 EndLoop
438 Call(SetActorRotationOffset, ACTOR_SELF, 0, 0, 0)
439 Call(SetActorRotation, ACTOR_SELF, 0, 0, 2)
440 Wait(2)
441 Call(SetActorRotation, ACTOR_SELF, 0, 0, -2)
442 Wait(2)
443 Call(SetActorRotation, ACTOR_SELF, 0, 0, 0)
445 Call(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
446 EndIf
447 Wait(10)
448 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleKooper_ExitShell)
449 Wait(10)
450 Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
451 Call(YieldTurn)
452 Call(ResetAllActorSounds, ACTOR_SELF)
453 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleKooper_Run)
454 Call(SetGoalToHome, ACTOR_SELF)
455 Call(SetActorSpeed, ACTOR_SELF, Float(4.5))
456 Call(RunToGoal, ACTOR_SELF, 0, FALSE)
457 Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
458 Call(UseIdleAnimation, ACTOR_SELF, TRUE)
459 Return
462 Call(RemoveActorDecoration, ACTOR_SELF, PRT_ZERO, 0)
463 Call(GetActorVar, ACTOR_SELF, AVAR_Copy_PartnerLevel, LVar9)
466 Wait(2)
467#if VERSION_JP
468 Call(EnemyDamageTarget, ACTOR_SELF, LVar0, 0, SUPPRESS_EVENT_ALL, 0, 1, BS_FLAGS1_TRIGGER_EVENTS)
469#else
470 Call(EnemyDamageTarget, ACTOR_SELF, LVar0, 0, SUPPRESS_EVENT_ALL, 0, 2, BS_FLAGS1_TRIGGER_EVENTS)
471#endif
473 Wait(2)
474 Call(EnemyDamageTarget, ACTOR_SELF, LVar0, 0, SUPPRESS_EVENT_ALL, 0, 3, BS_FLAGS1_TRIGGER_EVENTS)
476 Wait(2)
477#if VERSION_JP
478 Call(EnemyDamageTarget, ACTOR_SELF, LVar0, 0, SUPPRESS_EVENT_ALL, 0, 4, BS_FLAGS1_TRIGGER_EVENTS)
479#else
480 Call(EnemyDamageTarget, ACTOR_SELF, LVar0, 0, SUPPRESS_EVENT_ALL, 0, 5, BS_FLAGS1_TRIGGER_EVENTS)
481#endif
486 Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
487 Call(MoveBattleCamOver, 8)
488 Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
489 Add(LVar0, 60)
490 Set(LVar1, 0)
491 Call(SetActorJumpGravity, ACTOR_SELF, Float(1.4))
492 Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
493 Call(JumpToGoal, ACTOR_SELF, 20, FALSE, TRUE, FALSE)
494 Add(LVar0, 30)
495 Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
496 Call(JumpToGoal, ACTOR_SELF, 8, FALSE, TRUE, FALSE)
497 Add(LVar0, 20)
498 Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
499 Call(JumpToGoal, ACTOR_SELF, 6, FALSE, TRUE, FALSE)
500 Add(LVar0, 10)
501 Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
502 Call(JumpToGoal, ACTOR_SELF, 4, FALSE, TRUE, FALSE)
503 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleKooper_ExitShell)
504 Wait(15)
505 Call(YieldTurn)
506 Call(ResetAllActorSounds, ACTOR_SELF)
507 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_BattleKooper_Run)
508 Call(SetGoalToHome, ACTOR_SELF)
509 Call(SetActorSpeed, ACTOR_SELF, Float(4.5))
510 Call(RunToGoal, ACTOR_SELF, 0, FALSE)
513 Call(EnableIdleScript, ACTOR_SELF, IDLE_SCRIPT_ENABLE)
514 Call(UseIdleAnimation, ACTOR_SELF, TRUE)
515 Return
516 End
517};
518
519Formation A(KooperCloneFormation) = {
520 ACTOR_BY_POS(NAMESPACE, A(DuplighostSummonPos), 0),
521};
Bytecode EvtScript[]
#define STATUS_FLAGS_IMMOBILIZED
Definition enums.h:2834
@ BTL_CAM_XADJ_AVG
Definition enums.h:4900
@ ACTOR_SOUND_WALK
Definition enums.h:2034
@ 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_FLAG_FLIPABLE
Actor can be flipped; triggered by jump and quake attacks.
Definition enums.h:3380
@ ACTOR_DECORATION_GREY_SMOKE_TRAIL
Definition enums.h:2048
@ ACTOR_DECORATION_SWEAT
Definition enums.h:2045
@ 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_ACTOR
Definition enums.h:4836
@ SUPPRESS_EVENT_ALL
Definition enums.h:2907
@ IDLE_SCRIPT_ENABLE
Definition enums.h:6408
@ IDLE_SCRIPT_DISABLE
Definition enums.h:6407
@ PARTNER_RANK_NORMAL
Definition enums.h:2018
@ PARTNER_RANK_SUPER
Definition enums.h:2019
@ PARTNER_RANK_ULTRA
Definition enums.h:2020
@ STATUS_FLAG_SHRINK
Definition enums.h:2819
@ SOUND_NONE
Definition enums.h:547
@ SOUND_PARAKARRY_AIR_RAID_1
Definition enums.h:1319
@ SOUND_KOOPER_SHELL_SPINUP
Definition enums.h:1321
@ ACTOR_PLAYER
Definition enums.h:2085
@ ACTOR_SELF
Definition enums.h:2084
@ BTL_CAM_YADJ_AVG
Definition enums.h:4907
@ EVENT_HIT
Definition enums.h:2132
@ EVENT_SCARE_AWAY
Definition enums.h:2174
@ EVENT_BURN_HIT
Definition enums.h:2136
@ EVENT_IMMUNE
Definition enums.h:2146
@ EVENT_BURN_DEATH
Definition enums.h:2157
@ EVENT_ZERO_DAMAGE
Definition enums.h:2144
@ 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_FLIP_TRIGGER
Definition enums.h:2135
@ 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_SHOCK
Definition enums.h:2856
@ DAMAGE_TYPE_TRIGGER_LUCKY
Definition enums.h:2881
EvtScript EVS_Enemy_ScareAway
EvtScript EVS_Enemy_Hit
EvtScript EVS_Enemy_Death
EvtScript EVS_Enemy_SpinSmashHit
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 LVar6
Definition macros.h:154
#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 UseBuf(INT_PTR)
Loads a s32 pointer for use with subsequent EVT_BUF_READ commands.
Definition macros.h:389
#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 BufRead1(VAR)
Consumes the next s32 from the buffer and stores it in the given variable.
Definition macros.h:392
#define IfGt(LVAR, RVAR)
Marks the beginning of an if statement that only executes if LVAR <= RVAR.
Definition macros.h:278
#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 LVar5
Definition macros.h:153
#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 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 LVarA
Definition macros.h:158
#define IfNotFlag(LVAR, RVAR)
Marks the beginning of an if statement that only executes if the RVAR flag is unset on LVAR,...
Definition macros.h:292
#define Wait(NUM_FRAMES)
Blocks for the given number of frames.
Definition macros.h:254
#define LVar9
Definition macros.h:157
#define A(sym)
Definition macros.h:36
#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 CaseLt(RVAR)
Marks the start of a switch case that executes only if LVAR < RVAR. It also marks the end of any prev...
Definition macros.h:325
#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 LVar4
Definition macros.h:152
#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
#define ACTOR_BY_POS(_name, _pos, _priority, args...)
Definition battle.h:230
FormationRow Formation[]
Definition battle.h:167