Paper Mario DX
Paper Mario (N64) modding
 
Loading...
Searching...
No Matches
red_magikoopa.inc.c
Go to the documentation of this file.
1#include "battle/battle.h"
2#include "script_api/battle.h"
3#include "effects.h"
4#include "sprite/npc/Magikoopa.h"
5#include "sprite/npc/FlyingMagikoopa.h"
6
7#define NAMESPACE A(red_magikoopa)
8
9extern s32 N(GroundAnims)[];
10extern s32 N(FlyingAnims)[];
11extern s32 N(BroomAnims)[];
12
13extern EvtScript N(EVS_Init);
15extern EvtScript N(EVS_TakeTurn);
16extern EvtScript N(EVS_Flee);
17
18enum N(ActorPartIDs) {
19 PRT_GROUND = 1,
20 PRT_FLYING = 2,
21 PRT_BROOM = 3,
22};
23
24enum N(ActorVars) {
26};
27
28enum N(ActorParams) {
33};
34
35s32 N(DefenseTable)[] = {
38};
39
40s32 N(FlyingDefense)[] = {
43};
44
45s32 N(StatusTable)[] = {
68};
69
70s32 N(FlyingStatusTable)[] = {
93};
94
96 {
98 .index = PRT_GROUND,
99 .posOffset = { 0, 0, 0 },
100 .targetOffset = { 2, 35 },
101 .opacity = 255,
102 .idleAnimations = N(GroundAnims),
103 .defenseTable = N(DefenseTable),
104 .eventFlags = 0,
105 .elementImmunityFlags = 0,
106 .projectileTargetOffset = { -5, -12 },
107 },
108};
109
111 {
113 .index = PRT_GROUND,
114 .posOffset = { 0, 0, 0 },
115 .targetOffset = { 2, 35 },
116 .opacity = 255,
117 .idleAnimations = N(GroundAnims),
118 .defenseTable = N(FlyingDefense),
120 .elementImmunityFlags = 0,
121 .projectileTargetOffset = { -5, -12 },
122 },
123 {
125 .index = PRT_FLYING,
126 .posOffset = { 0, 0, 0 },
127 .targetOffset = { -10, 35 },
128 .opacity = 255,
129 .idleAnimations = N(FlyingAnims),
130 .defenseTable = N(FlyingDefense),
131 .eventFlags = 0,
132 .elementImmunityFlags = 0,
133 .projectileTargetOffset = { 0, -8 },
134 },
135 {
137 .index = PRT_BROOM,
138 .posOffset = { 0, 0, 0 },
139 .targetOffset = { 0, 0 },
140 .opacity = 255,
141 .idleAnimations = N(BroomAnims),
142 .defenseTable = N(FlyingDefense),
143 .eventFlags = 0,
144 .elementImmunityFlags = 0,
145 .projectileTargetOffset = { 0, 0 },
146 },
147};
148
149ActorBlueprint NAMESPACE = {
150 .flags = 0,
153 .maxHP = 11,
154 .partCount = ARRAY_COUNT(N(GroundParts)),
155 .partsData = N(GroundParts),
156 .initScript = &N(EVS_Init),
157 .statusTable = N(StatusTable),
158 .escapeChance = 40,
159 .airLiftChance = 80,
160 .hurricaneChance = 70,
161 .spookChance = 40,
162 .upAndAwayChance = 95,
163 .spinSmashReq = 0,
164 .powerBounceChance = 80,
165 .coinReward = 2,
166 .size = { 36, 40 },
167 .healthBarOffset = { 0, 0 },
168 .statusIconOffset = { -10, 20 },
169 .statusTextOffset = { 10, 32 },
170};
171
173 .flags = ACTOR_FLAG_FLYING,
176 .maxHP = 11,
177 .partCount = ARRAY_COUNT(N(FlyingParts)),
178 .partsData = N(FlyingParts),
179 .initScript = &N(EVS_Init_Flying),
180 .statusTable = N(FlyingStatusTable),
181 .escapeChance = 40,
182 .airLiftChance = 95,
183 .hurricaneChance = 75,
184 .spookChance = 40,
185 .upAndAwayChance = 95,
186 .spinSmashReq = 0,
187 .powerBounceChance = 80,
188 .coinReward = 2,
189 .size = { 48, 40 },
190 .healthBarOffset = { 0, 0 },
191 .statusIconOffset = { -25, 20 },
192 .statusTextOffset = { 1, 34 },
193};
194
195s32 N(GroundAnims)[] = {
206};
207
208s32 N(FlyingAnims)[] = {
219};
220
221s32 N(BroomAnims)[] = {
224};
225
226EvtScript N(EVS_Idle) = {
227 Return
228 End
229};
230
236
261 Return
273 Return
285 Wait(10)
289 Return
300 Wait(15)
303 Return
313 Else
315 EndIf
316 EndIf
320 Return
325 Return
326 End
327};
328
334 EndIf
335 Else
345 EndIf
348 EndIf
349 Return
350 End
351};
352
355 IfEq(LVar0, 1)
357 Goto(0)
358 EndIf
362 Goto(0)
363 EndIf
364 Return
365 Label(0)
370 EndIf
378 Sub(LVar2, 1)
382 Set(LVar1, 0)
386 Call(N(StartRumbleWithParams), 150, 10)
387 Thread
388 Call(ShakeCam, CAM_BATTLE, 0, 5, Float(0.7))
394 Add(LVar4, 10)
395 Add(LVar5, 5)
397 EndIf
402 Loop(20)
404 Wait(1)
406 Wait(1)
407 EndLoop
414 Call(N(SetAbsoluteStatusOffsets), -10, 20, 10, 32)
418 Mod(LVar0, 4)
425 Return
426 End
427};
428
464 Return
476 Return
488 Wait(10)
492 Return
494 Call(SetActorPos, ACTOR_SELF, 20, 0, 0)
513 Wait(15)
516 Return
526 Else
528 EndIf
529 EndIf
533 Return
538 Return
539 End
540};
541
550 Else
553 EndIf
558 Sub(LVar0, 12)
559 Add(LVar1, 14)
560 Else
561 Sub(LVar0, 30)
562 Add(LVar1, 36)
563 EndIf
566 Wait(30)
571 Set(LVarA, LVar0)
574 Wait(5)
578 Sub(LVar0, 8)
579 Add(LVar1, 8)
580 Else
581 Sub(LVar0, 20)
582 Add(LVar1, 20)
583 EndIf
586 Sub(LVar3, 50)
587 Set(LVar4, 0)
589 Wait(50)
592 EndIf
593 Wait(14)
596 Wait(30)
600 Return
605 Wait(5)
609 Sub(LVar0, 8)
610 Add(LVar1, 8)
611 Else
612 Sub(LVar0, 20)
613 Add(LVar1, 20)
614 EndIf
617 Sub(LVar3, 10)
619 Wait(18)
620 Wait(2)
625 Wait(19)
631 Return
632 End
633};
634
643 Thread
645 Set(LVar0, 200)
646 Loop(20)
647 Sub(LVar0, 10)
649 Wait(1)
650 EndLoop
652 Wait(10)
657 Add(LVar0, 5)
658 Else
659 Add(LVar0, 25)
660 EndIf
661 Set(LVar1, 0)
664 Set(LVar0, 55)
665 Loop(20)
666 Add(LVar0, 10)
668 Wait(1)
669 EndLoop
672 Wait(11)
678 Set(LVarA, LVar0)
682 EndIf
683 Wait(15)
684 Set(LVar0, 200)
685 Loop(20)
686 Sub(LVar0, 10)
688 Wait(1)
689 EndLoop
694 Set(LVar0, 55)
695 Loop(20)
696 Add(LVar0, 10)
698 Wait(1)
699 EndLoop
703 Return
707 Wait(2)
713 Wait(10)
714 Set(LVar0, 200)
715 Loop(20)
716 Sub(LVar0, 10)
718 Wait(1)
719 EndLoop
724 Set(LVar0, 55)
725 Loop(20)
726 Add(LVar0, 10)
728 Wait(1)
729 EndLoop
735 Return
736 End
737};
738
739EvtScript N(EVS_Flee) = {
748 Wait(15)
750 EndIf
753 Add(LVar0, 20)
756 Wait(10)
761 Add(LVar0, 200)
769 Return
770 End
771};
772
773EvtScript N(EVS_Init) = {
778 IfEq(LVar0, 0)
780 EndIf
782 Return
783 End
784};
785
791 IfEq(LVar0, 0)
793 EndIf
795 Return
796 End
797};
798
801 Label(10)
804 Label(0)
810 IfEq(LVar3, 0)
813 Set(LVar8, LVar0)
815 Goto(100)
816 EndIf
817 EndIf
818 EndIf
821 Goto(0)
822 EndIf
824 Set(LFlag0, TRUE)
826 Goto(10)
827 EndIf
829 IfEq(LVar0, 1)
831 Return
832 EndIf
836 Else
838 EndIf
839 Return
840 Label(100)
847 Wait(15)
851 Else
853 EndIf
854 Wait(5)
861 Sub(LVar0, 6)
862 Add(LVar1, 12)
863 Sub(LVar2, 2)
865 Else
866 Sub(LVar0, 16)
867 Add(LVar1, 31)
868 Sub(LVar2, 2)
870 EndIf
871 Else
875 Sub(LVar0, 12)
876 Add(LVar1, 14)
877 Sub(LVar2, 2)
879 Else
880 Sub(LVar0, 30)
881 Add(LVar1, 36)
882 Sub(LVar2, 2)
884 EndIf
885 EndIf
886 Wait(30)
890 Else
892 EndIf
893 Wait(5)
894 Thread
895 Wait(10)
898 Thread
905 Wait(10)
909 Return
910 End
911};
BSS s32 PopupMenu_SelectedIndex
Bytecode EvtScript[]
#define STATUS_FLAGS_IMMOBILIZED
Definition enums.h:2834
@ BTL_CAM_XADJ_AVG
Definition enums.h:4899
@ BS_FLAGS1_PARTNER_ACTING
Definition enums.h:3587
@ BS_FLAGS1_SUPER_HIT
Definition enums.h:3578
@ BS_FLAGS1_NICE_HIT
Definition enums.h:3575
@ 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
@ ITER_NO_MORE
Definition enums.h:2030
@ ITER_NEXT
Definition enums.h:2025
@ ACTOR_EVENT_FLAG_RIDING_BROOMSTICK
Actor is on Magikoopa Broomstick, effect seems to be redundant.
Definition enums.h:3390
@ 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_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
@ TARGET_FLAG_PRIMARY_ONLY
Definition enums.h:1863
@ TARGET_FLAG_2
Definition enums.h:1850
@ EASING_COS_IN_OUT
Definition enums.h:520
@ EASING_LINEAR
Definition enums.h:510
@ IDLE_SCRIPT_ENABLE
Definition enums.h:6407
@ IDLE_SCRIPT_DISABLE
Definition enums.h:6406
@ STATUS_FLAG_SHRINK
Definition enums.h:2819
@ SOUND_MAGIKOOPA_WAND_STRIKE
Definition enums.h:1054
@ SOUND_SPELL_CAST1
Definition enums.h:1498
@ SOUND_SPELL_CAST2
Definition enums.h:1499
@ SOUND_MAGIKOOPA_VANISH
Definition enums.h:1053
@ SOUND_FALL_QUICK
Definition enums.h:1090
@ SOUND_MAGIKOOPA_POWER_UP
Definition enums.h:1055
@ 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:4904
@ ACTOR_BLUR_ENABLE
Definition enums.h:6413
@ 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_FALL_TRIGGER
Definition enums.h:2134
@ 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_15
Definition enums.h:2137
@ EVENT_AIR_LIFT_FAILED
Definition enums.h:2152
@ EVENT_BEGIN_AIR_LIFT
Definition enums.h:2175
@ EVENT_DEATH
Definition enums.h:2153
@ 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_USE_ABSOLUTE_POSITION
Definition enums.h:3361
@ ACTOR_PART_FLAG_NO_TARGET
Cannot be targeted.
Definition enums.h:3360
@ ACTOR_PART_FLAG_INVISIBLE
Definition enums.h:3350
@ CAM_BATTLE
Definition enums.h:1801
@ DAMAGE_TYPE_POW
Definition enums.h:2861
@ DAMAGE_TYPE_MAGIC
Definition enums.h:2855
@ DAMAGE_TYPE_TRIGGER_LUCKY
Definition enums.h:2881
@ DAMAGE_TYPE_NO_CONTACT
Definition enums.h:2878
EvtScript EVS_Enemy_Hit
EvtScript EVS_Enemy_Death
EvtScript EVS_Enemy_SpinSmashHit
EvtScript EVS_Enemy_AirLift
EvtScript EVS_ForceNextTarget
EvtScript EVS_Enemy_BlowAway
EvtScript EVS_Enemy_Recover
EvtScript EVS_Enemy_BurnHit
EvtScript EVS_Enemy_NoDamageHit
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 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 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 Mod(VAR, INT_VALUE)
Definition macros.h:380
#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 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 LVar8
Definition macros.h:156
#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 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 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_VAR_Magikoopa_LastIndexBoosted
Definition battle.h:90