Paper Mario DX
Paper Mario (N64) modding
 
Loading...
Searching...
No Matches
hyper_goomba.inc.c
Go to the documentation of this file.
1#include "battle/battle.h"
2#include "script_api/battle.h"
3#include "sprite/npc/Goomba.h"
4
5#ifndef NESTED_HYPER_GOOMBA_INCLUDE
6#define NAMESPACE A(hyper_goomba)
7#endif
8
9extern s32 N(DefaultAnims)[];
10extern EvtScript N(EVS_Init);
11extern EvtScript N(EVS_Idle);
13extern EvtScript N(EVS_TakeTurn);
16
17enum N(ActorParams) {
18 DMG_HEADBONK = 1,
19 DMG_CHARGED = 8,
20};
21
22#ifndef NESTED_HYPER_GOOMBA_INCLUDE
23
24enum N(ActorPartIDs) {
25 PRT_MAIN = 1,
26};
27
28enum N(ActorVars) {
31};
32
33s32 N(DefenseTable)[] = {
36};
37
38s32 N(StatusTable)[] = {
45 STATUS_KEY_FEAR, 100,
61};
62
64 {
66 .index = PRT_MAIN,
67 .posOffset = { 0, 0, 0 },
68 .targetOffset = { 0, 22 },
69 .opacity = 255,
70 .idleAnimations = N(DefaultAnims),
71 .defenseTable = N(DefenseTable),
72 .eventFlags = ACTOR_EVENT_FLAGS_NONE,
73 .elementImmunityFlags = 0,
74 .projectileTargetOffset = { 0, -10 },
75 },
76};
77
78ActorBlueprint NAMESPACE = {
79 .flags = 0,
82 .maxHP = 7,
83 .partCount = ARRAY_COUNT(N(ActorParts)),
84 .partsData = N(ActorParts),
85 .initScript = &N(EVS_Init),
86 .statusTable = N(StatusTable),
87 .escapeChance = 60,
88 .airLiftChance = 90,
89 .hurricaneChance = 90,
90 .spookChance = 80,
91 .upAndAwayChance = 95,
92 .spinSmashReq = 0,
93 .powerBounceChance = 100,
94 .coinReward = 1,
95 .size = { 24, 24 },
96 .healthBarOffset = { 0, 0 },
97 .statusIconOffset = { -10, 20 },
98 .statusTextOffset = { 10, 20 },
99};
100
101#endif // NESTED_HYPER_GOOMBA_INCLUDE
102
103s32 N(HyperAnims)[] = {
114};
115
116EvtScript N(EVS_Init) = {
123 Return
124 End
125};
126
136 Return
137 End
138};
139
141
148 IfEq(LVar0, 0)
152 Wait(20)
155 Add(LVar1, 10)
158 Wait(30)
166 Call(N(StartRumbleWithParams), 128, 10)
167 Thread
168 Call(ShakeCam, CAM_BATTLE, 0, 5, Float(0.5))
175 Wait(2)
178 Return
179 EndIf
183 Loop(20)
185 Wait(1)
187 Wait(1)
188 EndLoop
194 Set(LVarA, LVar0)
195 Thread
196 Loop(0)
198 Add(LVar0, 30)
202 EndIf
203 Wait(1)
204 EndLoop
208 EndIf
209 Wait(15)
216 Call(AddGoalPos, ACTOR_SELF, -200, 0, 0)
225 Wait(20)
229 Call(SetActorPos, ACTOR_SELF, 300, 0, 0)
241 Return
251 Wait(2)
256 Thread
258 Set(LVar0, 80)
259 Loop(60)
260 Add(LVar0, 18)
262 Wait(1)
263 EndLoop
271 Set(LVar1, 0)
272 Sub(LVar0, 50)
275 Sub(LVar0, 40)
278 Sub(LVar0, 30)
281 Wait(10)
298 Return
299 End
300};
301
307 Return
308 EndIf
310 IfEq(LVar0, 1)
312 Return
313 EndIf
318 IfEq(LVar0, 0)
319 Call(RandInt, 1000, LVar0)
320 IfLt(LVar0, 750)
323 Else
326 EndIf
327 Else
328 Call(RandInt, 1000, LVar0)
329 IfLt(LVar0, 500)
332 Else
335 EndIf
336 EndIf
342 Return
343 End
344};
345
346s32 N(DefaultAnims)[] = {
357};
358
359s32 N(ShuffleAnims)[] = {
370};
371
372// unused
377 Return
378 End
379};
380
381EvtScript N(EVS_Idle) = {
382 Label(10)
383 Call(RandInt, 80, LVar0)
384 Add(LVar0, 80)
385 Loop(LVar0)
386 Label(0)
389 Wait(1)
390 Goto(0)
391 EndIf
392 Wait(1)
393 EndLoop
395 Add(LVar0, 5)
401 Loop(20)
402 Label(1)
405 Wait(1)
406 Goto(1)
407 EndIf
408 Wait(1)
409 EndLoop
411 Sub(LVar0, 5)
417 Loop(80)
418 Label(2)
421 Wait(1)
422 Goto(2)
423 EndIf
424 Wait(1)
425 EndLoop
426 Goto(10)
427 Return
428 End
429};
430
434 Call(SetActorScale, ACTOR_SELF, Float(1.0), Float(1.0), Float(1.0))
456 Return
468 Return
489 Wait(5)
506 Return
509 IfEq(LVar0, 1)
516 EndIf
531 Wait(10)
535 Return
553 Return
562 Return
568 Return
569 End
570};
571
572#include "common/CalculateArcsinDeg.inc.c"
573
583 Call(AddGoalPos, ACTOR_SELF, 50, 0, 0)
588 Wait(1)
590 Wait(5)
597 Set(LVarA, LVar0)
600 Sub(LVar0, 10)
601 Set(LVar1, 10)
602 Add(LVar2, 3)
605 Thread
607 Set(LVar0, 0)
608 Loop(16)
612 Set(LVar1, LVar4)
613 Set(LVar2, LVar5)
614 Set(LVar3, LVar6)
615 Wait(1)
616 EndLoop
618 Thread
619 Wait(6)
624 Call(SetActorScale, ACTOR_SELF, Float(1.1), Float(0.8), Float(1.0))
626 Wait(1)
627 Call(SetActorScale, ACTOR_SELF, Float(1.3), Float(0.5), Float(1.0))
629 Wait(1)
630 Call(SetActorScale, ACTOR_SELF, Float(1.0), Float(1.0), Float(1.0))
633 Wait(5)
636 EndIf
637 Wait(5)
642 Add(LVar0, 20)
643 Set(LVar1, 0)
646 Thread
647 Wait(4)
648 Set(LVar0, 180)
649 Loop(4)
650 Sub(LVar0, 45)
652 Wait(1)
653 EndLoop
658 Wait(5)
669 Wait(5)
676 Return
681 Thread
683 Set(LVar0, 0)
684 Loop(16)
688 Set(LVar1, LVar4)
689 Set(LVar2, LVar5)
690 Set(LVar3, LVar6)
691 Wait(1)
692 EndLoop
694 Thread
695 Wait(6)
700 Call(SetActorScale, ACTOR_SELF, Float(1.1), Float(0.8), Float(1.0))
701 Wait(1)
702 Call(SetActorScale, ACTOR_SELF, Float(1.3), Float(0.5), Float(1.0))
703 Wait(1)
710 Call(SetActorScale, ACTOR_SELF, Float(1.1), Float(0.8), Float(1.0))
711 Wait(1)
712 Call(SetActorScale, ACTOR_SELF, Float(1.0), Float(1.0), Float(1.0))
713 Wait(1)
718 Add(LVar0, 40)
719 Set(LVar1, 0)
723 Add(LVar0, 30)
726 Add(LVar0, 20)
730 Wait(3)
742 Return
743 End
744};
BSS s32 PopupMenu_SelectedIndex
Bytecode EvtScript[]
#define STATUS_FLAGS_IMMOBILIZED
Definition enums.h:2834
@ BTL_CAM_XADJ_AVG
Definition enums.h:4899
@ ACTOR_SOUND_JUMP
Definition enums.h:2036
@ BS_FLAGS1_TRIGGER_EVENTS
Definition enums.h:3574
@ BS_FLAGS1_INCLUDE_POWER_UPS
Definition enums.h:3570
@ ELEMENT_END
Definition enums.h:2114
@ ELEMENT_NORMAL
Definition enums.h:2115
@ ACTOR_EVENT_FLAG_ATTACK_CHARGED
Actor has charged an attack that can be removed with Star Beam.
Definition enums.h:3389
@ ACTOR_EVENT_FLAGS_NONE
Definition enums.h:3370
@ ACTOR_DECORATION_SWEAT
Definition enums.h:2045
@ PHASE_ENEMY_BEGIN
Definition enums.h:2068
@ PHASE_PLAYER_BEGIN
Definition enums.h:2066
@ PHASE_ENEMY_END
Definition enums.h:2067
@ 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:4823
@ BTL_CAM_INTERRUPT
Definition enums.h:4822
@ BTL_CAM_ACTOR
Definition enums.h:4835
@ BTL_CAM_ENEMY_APPROACH
Definition enums.h:4884
@ IDLE_SCRIPT_ENABLE
Definition enums.h:6407
@ IDLE_SCRIPT_DISABLE
Definition enums.h:6406
@ SOUND_POWER_UP
Definition enums.h:1050
@ SOUND_ACTOR_HURT
Definition enums.h:748
@ SOUND_GOOMBA_STEP
Definition enums.h:1507
@ ACTOR_PLAYER
Definition enums.h:2085
@ ACTOR_SELF
Definition enums.h:2084
@ BTL_CAM_YADJ_TARGET
Definition enums.h:4904
@ EVENT_HIT
Definition enums.h:2132
@ EVENT_SCARE_AWAY
Definition enums.h:2174
@ EVENT_BURN_HIT
Definition enums.h:2136
@ EVENT_STAR_BEAM
Definition enums.h:2140
@ 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
@ CAM_BATTLE
Definition enums.h:1801
@ DAMAGE_TYPE_TRIGGER_LUCKY
Definition enums.h:2881
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 RandInt(Evt *script, b32 isInitialCall)
ApiStatus ShakeCam(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 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 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 IfGt(LVAR, RVAR)
Marks the beginning of an if statement that only executes if LVAR <= RVAR.
Definition macros.h:278
#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 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 BreakLoop
Breaks out of the innermost loop.
Definition macros.h:251
#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 Wait(NUM_FRAMES)
Blocks for the given number of frames.
Definition macros.h:254
#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 LVar4
Definition macros.h:152
#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
@ BTL_VAL_HyperSync_Active
Definition battle.h:86
@ BTL_VAL_HyperSync_Done
Definition battle.h:85
@ BTL_VAL_HyperSync_None
Definition battle.h:84
@ BTL_VAR_HyperSync
Definition battle.h:83