Paper Mario DX
Paper Mario (N64) modding
 
Loading...
Searching...
No Matches
Magikoopa.inc.c
Go to the documentation of this file.
1#include "Magikoopa.h"
2
4
5MagikoopaTeleportAnim N(MagikoopaAI_TeleportAnim)[] = {
6 { 0.80f, 1.0f, 200 },
7 { 0.60f, 1.0f, 180 },
8 { 0.50f, 1.0f, 160 },
9 { 0.40f, 1.0f, 140 },
10 { 0.30f, 1.1f, 120 },
11 { 0.20f, 1.3f, 110 },
12 { 0.15f, 1.6f, 100 },
13 { 0.12f, 2.0f, 90 },
14 { 0.11f, 3.0f, 80 },
15 { 0.10f, 4.0f, 70 },
16 {}
17};
18
19MobileAISettings N(AISettings_Magikoopa) = {
20 .moveSpeed = 1.0f,
21 .moveTime = 120,
22 .waitTime = 30,
23 .alertRadius = 100.0f,
24 .playerSearchInterval = 10,
25 .chaseSpeed = 3.0f,
26 .chaseTurnRate = 90,
27 .chaseUpdateInterval = 15,
28 .chaseRadius = 200.0f,
29 .unk_AI_2C = 1,
30};
31
32EvtScript N(EVS_NpcAI_Magikoopa) = {
33 Call(N(MagikoopaAI_Main), Ref(N(AISettings_Magikoopa)))
34 Return
35 End
36};
37
38EvtScript N(EVS_NpcHit_Magikoopa) = {
49 Return
50 End
51};
52
53EvtScript N(EVS_NpcDefeat_Magikoopa) = {
57 Call(N(MagikoopaAI_OnPlayerWon))
60 Call(N(MagikoopaAI_OnPlayerFled))
63 Return
64 End
65};
66
67NpcSettings N(NpcSettings_Magikoopa) = {
68 .height = 32,
69 .radius = 28,
70 .level = ACTOR_LEVEL_MAGIKOOPA,
71 .ai = &N(EVS_NpcAI_Magikoopa),
72 .onHit = &N(EVS_NpcHit_Magikoopa),
73 .onDefeat = &N(EVS_NpcDefeat_Magikoopa),
74};
75
76AnimID N(ExtraAnims_Magikoopa)[] = {
77 ANIM_Magikoopa_Anim00,
78 ANIM_Magikoopa_Anim01,
79 ANIM_Magikoopa_Anim01,
80 ANIM_Magikoopa_Anim01,
81 ANIM_Magikoopa_Anim02,
82 ANIM_Magikoopa_Anim03,
83 ANIM_Magikoopa_Anim04,
85};
86
87EvtScript N(EVS_NpcAuxAI_Magikoopa_GroundHitbox) = {
88 Call(SetSelfVar, 1, 10)
89 Call(SetSelfVar, 2, 40)
90 Return
91 End
92};
93
94EvtScript N(EVS_NpcAuxAI_Magikoopa_FlyingHitbox) = {
95 Call(SetSelfVar, 1, 0)
96 Call(SetSelfVar, 2, 55)
97 Return
98 End
99};
100
101EvtScript N(EVS_NpcAI_Magikoopa_Hitbox) = {
102 Call(N(MagikoopaAI_SpellMain))
103 Return
104 End
105};
106
107EvtScript N(EVS_NpcHit_Magikoopa_Hitbox) = {
108 Call(N(MagikoopaAI_OnHitInit))
109 IfEq(LVar0, 0)
110 Return
111 EndIf
112 Call(N(MagikoopaAI_OnHit))
114 Return
115 End
116};
117
118EvtScript N(EVS_NpcDefeat_Magikoopa_Hitbox) = {
130 Return
131 End
132};
133
134NpcSettings N(NpcSettings_Magikoopa_GroundHitbox) = {
135 .defaultAnim = ANIM_Magikoopa_Anim00,
136 .otherAI = &N(EVS_NpcAuxAI_Magikoopa_GroundHitbox),
137 .ai = &N(EVS_NpcAI_Magikoopa_Hitbox),
138 .onHit = &N(EVS_NpcHit_Magikoopa_Hitbox),
139 .onDefeat = &N(EVS_NpcDefeat_Magikoopa_Hitbox),
140};
141
142NpcSettings N(NpcSettings_Magikoopa_FlyingHitbox) = {
143 .defaultAnim = ANIM_FlyingMagikoopa_Anim00,
144 .otherAI = &N(EVS_NpcAuxAI_Magikoopa_FlyingHitbox),
145 .ai = &N(EVS_NpcAI_Magikoopa_Hitbox),
146 .onHit = &N(EVS_NpcHit_Magikoopa_Hitbox),
147 .onDefeat = &N(EVS_NpcDefeat_Magikoopa_Hitbox),
148};
Bytecode EvtScript[]
u32 AnimID
@ ENEMY_ANIM_INDEX_HIT
Definition enums.h:3433
@ ENCOUNTER_TRIGGER_JUMP
Definition enums.h:269
@ ENCOUNTER_TRIGGER_HAMMER
Definition enums.h:271
@ ENCOUNTER_TRIGGER_NONE
Definition enums.h:268
@ ENCOUNTER_TRIGGER_PARTNER
Definition enums.h:273
@ ENEMY_FLAG_FLED
Definition enums.h:4525
@ NPC_SELF
Definition enums.h:2526
@ OUTCOME_ENEMY_FLED
Definition enums.h:1905
@ OUTCOME_PLAYER_WON
Definition enums.h:1902
@ OUTCOME_PLAYER_FLED
Definition enums.h:1904
s16 height
Definition npc.h:145
AnimID defaultAnim
Definition npc.h:144
ApiStatus SetEnemyFlagBits(Evt *script, b32 isInitialCall)
EvtScript EnemyNpcHit
Definition encounter.c:131
ApiStatus RemoveNpc(Evt *script, b32 isInitialCall)
ApiStatus GetSelfAnimationFromTable(Evt *script, b32 isInitialCall)
ApiStatus DoNpcDefeat(Evt *script, b32 isInitialCall)
ApiStatus SetNpcPos(Evt *script, b32 isInitialCall)
ApiStatus GetOwnerEncounterTrigger(Evt *script, b32 isInitialCall)
ApiStatus OnPlayerFled(Evt *script, b32 isInitialCall)
ApiStatus SetSelfVar(Evt *script, b32 isInitialCall)
ApiStatus GetBattleOutcome(Evt *script, b32 isInitialCall)
#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 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 End
Signals the end of EVT script data. A script missing this will likely crash on load.
Definition macros.h:213
#define EndCaseGroup
Marks the end of a switch case group (CaseOrEq and/or CaseAndEq), stopping fallthrough.
Definition macros.h:352
#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 ExecWait(EVT_SOURCE)
Launches a new child thread.
Definition macros.h:475
#define NPC_DISPOSE_LOCATION
Definition macros.h:158
#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 Exec(EVT_SOURCE)
Launches a new thread.
Definition macros.h:455
#define Return
Kills the current EVT thread.
Definition macros.h:217
EvtScript EVS_NpcHitRecoil
Definition 38F00.c:13
#define ANIM_LIST_END
Terminates an extraAnimationList.
Definition types.h:22