Paper Mario DX
Paper Mario (N64) modding
 
Loading...
Searching...
No Matches
amazy_dayzee.inc.c
Go to the documentation of this file.
1#include "battle/battle.h"
2#include "script_api/battle.h"
3#include "sprite/npc/Dayzee.h"
4
5#define NAMESPACE A(amazy_dayzee)
6
7extern s32 N(DefaultAnims)[];
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(ActorParams) {
18 DMG_SING = 20,
19};
20
21s32 N(DefenseTable)[] = {
24};
25
26s32 N(StatusTable)[] = {
49};
50
51ActorPartBlueprint N(ActorParts)[] = {
52 {
54 .index = PRT_MAIN,
55 .posOffset = { 0, 0, 0 },
56 .targetOffset = { -2, 30 },
57 .opacity = 255,
58 .idleAnimations = N(DefaultAnims),
59 .defenseTable = N(DefenseTable),
60 .eventFlags = 0,
61 .elementImmunityFlags = 0,
62 .projectileTargetOffset = { 0, -8 },
63 },
64};
65
66ActorBlueprint NAMESPACE = {
67 .flags = 0,
68 .type = ACTOR_TYPE_AMAZY_DAYZEE,
69 .level = ACTOR_LEVEL_AMAZY_DAYZEE,
70 .maxHP = 20,
71 .partCount = ARRAY_COUNT(N(ActorParts)),
72 .partsData = N(ActorParts),
73 .initScript = &N(EVS_Init),
74 .statusTable = N(StatusTable),
75 .escapeChance = 90,
76 .airLiftChance = 85,
77 .hurricaneChance = 80,
78 .spookChance = 100,
79 .upAndAwayChance = 95,
80 .spinSmashReq = 0,
81 .powerBounceChance = 70,
82 .coinReward = 5,
83 .size = { 32, 34 },
84 .healthBarOffset = { 0, 0 },
85 .statusIconOffset = { -14, 17 },
86 .statusTextOffset = { 9, 25 },
87};
88
89s32 N(DefaultAnims)[] = {
90 STATUS_KEY_NORMAL, ANIM_Dayzee_Amazy_Anim01,
91 STATUS_KEY_STONE, ANIM_Dayzee_Amazy_Anim00,
92 STATUS_KEY_SLEEP, ANIM_Dayzee_Amazy_Anim0C,
93 STATUS_KEY_POISON, ANIM_Dayzee_Amazy_Anim01,
94 STATUS_KEY_STOP, ANIM_Dayzee_Amazy_Anim00,
95 STATUS_KEY_STATIC, ANIM_Dayzee_Amazy_Anim01,
96 STATUS_KEY_PARALYZE, ANIM_Dayzee_Amazy_Anim00,
97 STATUS_KEY_DIZZY, ANIM_Dayzee_Amazy_Anim0B,
98 STATUS_KEY_FEAR, ANIM_Dayzee_Amazy_Anim0B,
100};
101
102EvtScript N(EVS_Init) = {
103 Call(BindTakeTurn, ACTOR_SELF, Ref(N(EVS_TakeTurn)))
104 Call(BindIdle, ACTOR_SELF, Ref(N(EVS_Idle)))
105 Call(BindHandleEvent, ACTOR_SELF, Ref(N(EVS_HandleEvent)))
106 Return
107 End
108};
109
110EvtScript N(EVS_Idle) = {
111 Label(0)
112 Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
113 Add(LVar1, 15)
114 Sub(LVar2, 2)
115 PlayEffect(EFFECT_SPARKLES, 2, LVar0, LVar1, LVar2, 30, 0)
116 Wait(15)
117 Goto(0)
118 Return
119 End
120};
121
122EvtScript N(EVS_ReturnHome) = {
123 SetConst(LVar0, PRT_MAIN)
124 SetConst(LVar1, ANIM_Dayzee_Amazy_Anim03)
126 Return
127 End
128};
129
130EvtScript N(EVS_HandleEvent) = {
131 Call(UseIdleAnimation, ACTOR_SELF, FALSE)
132 Call(GetLastEvent, ACTOR_SELF, LVar0)
136 SetConst(LVar0, PRT_MAIN)
137 SetConst(LVar1, ANIM_Dayzee_Amazy_Anim08)
141 SetConst(LVar0, PRT_MAIN)
142 SetConst(LVar1, ANIM_Dayzee_Amazy_Anim09)
143 SetConst(LVar2, ANIM_Dayzee_Amazy_Anim0A)
146 SetConst(LVar0, PRT_MAIN)
147 SetConst(LVar1, ANIM_Dayzee_Amazy_Anim09)
148 SetConst(LVar2, ANIM_Dayzee_Amazy_Anim0A)
150 SetConst(LVar0, PRT_MAIN)
151 SetConst(LVar1, ANIM_Dayzee_Amazy_Anim0A)
153 Return
155 SetConst(LVar0, PRT_MAIN)
156 SetConst(LVar1, ANIM_Dayzee_Amazy_Anim08)
159 SetConst(LVar0, PRT_MAIN)
160 SetConst(LVar1, ANIM_Dayzee_Amazy_Anim08)
162 SetConst(LVar0, PRT_MAIN)
163 SetConst(LVar1, ANIM_Dayzee_Amazy_Anim08)
165 Return
167 SetConst(LVar0, PRT_MAIN)
168 SetConst(LVar1, ANIM_Dayzee_Amazy_Anim08)
170 SetConst(LVar0, PRT_MAIN)
171 SetConst(LVar1, ANIM_Dayzee_Amazy_Anim08)
173 ExecWait(N(EVS_ReturnHome))
175 SetConst(LVar0, PRT_MAIN)
176 SetConst(LVar1, ANIM_Dayzee_Amazy_Anim08)
178 SetConst(LVar0, PRT_MAIN)
179 SetConst(LVar1, ANIM_Dayzee_Amazy_Anim08)
181 Return
185 SetConst(LVar0, PRT_MAIN)
186 SetConst(LVar1, ANIM_Dayzee_Amazy_Anim01)
190 SetConst(LVar0, PRT_MAIN)
191 SetConst(LVar1, ANIM_Dayzee_Amazy_Anim08)
193 Wait(10)
194 SetConst(LVar0, PRT_MAIN)
195 SetConst(LVar1, ANIM_Dayzee_Amazy_Anim08)
197 Return
199 SetConst(LVar0, PRT_MAIN)
200 SetConst(LVar1, ANIM_Dayzee_Amazy_Anim01)
203 SetConst(LVar0, PRT_MAIN)
204 SetConst(LVar1, ANIM_Dayzee_Amazy_Anim04)
205 SetConst(LVar2, ANIM_Dayzee_Amazy_Anim08)
207 Return
209 SetConst(LVar0, PRT_MAIN)
210 SetConst(LVar1, ANIM_Dayzee_Amazy_Anim04)
213 Call(GetStatusFlags, ACTOR_SELF, LVar0)
216 Call(SetActorDispOffset, ACTOR_SELF, 0, 1, 0)
217 Else
218 Call(SetActorDispOffset, ACTOR_SELF, 0, 3, 0)
219 EndIf
220 EndIf
221 SetConst(LVar0, PRT_MAIN)
222 SetConst(LVar1, ANIM_Dayzee_Amazy_Anim08)
224 Return
227 Call(UseIdleAnimation, ACTOR_SELF, TRUE)
228 Return
229 End
230};
231
232EvtScript N(EVS_Attack_Sing) = {
233 Call(UseIdleAnimation, ACTOR_SELF, FALSE)
234 Call(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
235 Call(GetBattlePhase, LVar0)
237 Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
238 Call(SetActorPos, ACTOR_SELF, -20, LVar1, LVar2)
239 Else
240 Call(UseBattleCamPreset, BTL_CAM_ENEMY_APPROACH)
241 Call(BattleCamTargetActor, ACTOR_SELF)
242 Call(SetBattleCamTargetingModes, BTL_CAM_YADJ_TARGET, BTL_CAM_XADJ_AVG, FALSE)
243 Call(MoveBattleCamOver, 70)
244 Set(LFlag0, FALSE)
245 Label(0)
246 IfEq(LFlag0, FALSE)
247 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Dayzee_Amazy_Anim0E)
248 Set(LFlag0, TRUE)
249 Else
250 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Dayzee_Amazy_Anim0F)
251 Set(LFlag0, FALSE)
252 EndIf
253 Wait(1)
254 Call(SetActorJumpGravity, ACTOR_SELF, Float(0.5))
255 Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
256 Sub(LVar0, 20)
257 Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
258 Call(JumpToGoal, ACTOR_SELF, 15, FALSE, TRUE, FALSE)
259 IfGt(LVar0, 0)
260 Goto(0)
261 EndIf
262 IfEq(LFlag0, FALSE)
263 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Dayzee_Amazy_Anim0E)
264 Set(LFlag0, TRUE)
265 Else
266 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Dayzee_Amazy_Anim0F)
267 Set(LFlag0, FALSE)
268 EndIf
269 Wait(1)
270 Call(SetActorJumpGravity, ACTOR_SELF, Float(0.5))
271 Call(SetGoalPos, ACTOR_SELF, -35, 0, 10)
272 Call(JumpToGoal, ACTOR_SELF, 15, FALSE, TRUE, FALSE)
273 EndIf
274 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Dayzee_Amazy_Anim01)
275 Wait(10)
276 Thread
277 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Dayzee_Amazy_Anim06)
278 Wait(40)
279 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Dayzee_Amazy_Anim07)
281 Wait(20)
282 Call(PlaySoundAtActor, ACTOR_SELF, SOUND_DAYZEE_SONG)
283 Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
284 Add(LVar1, 25)
285 Add(LVar2, 2)
286 Loop(13)
287 Call(RandInt, 30, LVar3)
288 Sub(LVar3, 15)
289 Add(LVar3, LVar0)
290 PlayEffect(EFFECT_MUSIC_NOTE, 1, LVar3, LVar1, LVar2, 0)
291 Wait(10)
292 EndLoop
293 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Dayzee_Amazy_Anim01)
294 Wait(10)
295 Call(EnemyTestTarget, ACTOR_SELF, LVar0, 0, 0, 1, BS_FLAGS1_INCLUDE_POWER_UPS)
299 Set(LVarA, LVar0)
301 Call(EnemyTestTarget, ACTOR_SELF, LVar0, DAMAGE_TYPE_TRIGGER_LUCKY, 0, 0, 0)
302 EndIf
303 Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
304 Wait(15)
305 Call(YieldTurn)
306 Call(SetActorYaw, ACTOR_SELF, 180)
307 Call(AddActorDecoration, ACTOR_SELF, PRT_MAIN, 0, ACTOR_DECORATION_SWEAT)
308 ExecWait(N(EVS_ReturnHome))
309 Call(RemoveActorDecoration, ACTOR_SELF, PRT_MAIN, 0)
310 Call(SetActorYaw, ACTOR_SELF, 0)
311 Call(UseIdleAnimation, ACTOR_SELF, TRUE)
312 Return
315 Call(SetTargetActor, ACTOR_SELF, ACTOR_PLAYER)
316 Call(SetGoalToTarget, ACTOR_SELF)
317 Wait(2)
322 Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
323 Call(MoveBattleCamOver, 10)
324 Wait(20)
325 Call(YieldTurn)
326 ExecWait(N(EVS_ReturnHome))
329 Call(UseIdleAnimation, ACTOR_SELF, TRUE)
330 Return
331 End
332};
333
334EvtScript N(EVS_Move_Flee) = {
335 Call(UseIdleAnimation, ACTOR_SELF, FALSE)
336 Call(UseBattleCamPreset, BTL_CAM_REPOSITION)
337 Call(SetBattleCamDist, 300)
338 Call(SetBattleCamOffsetY, 30)
339 Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
340 Sub(LVar0, 20)
341 Call(SetBattleCamTarget, LVar0, LVar1, LVar2)
342 Call(MoveBattleCamOver, 30)
343 Call(SetActorYaw, ACTOR_SELF, 180)
344 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Dayzee_Amazy_Anim03)
345 Wait(10)
346 Call(GetActorPos, ACTOR_SELF, LVar0, LVar1, LVar2)
347 Call(SetActorSpeed, ACTOR_SELF, Float(1.0))
348 Sub(LVar0, 20)
349 Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
350 Call(RunToGoal, ACTOR_SELF, 0, FALSE)
351 Wait(20)
352 Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
353 Call(EnableActorBlur, ACTOR_SELF, ACTOR_BLUR_ENABLE)
354 Call(SetAnimation, ACTOR_SELF, PRT_MAIN, ANIM_Dayzee_Amazy_Anim04)
355 Call(SetActorSpeed, ACTOR_SELF, Float(12.0))
356 Add(LVar0, 200)
357 Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
358 Call(RunToGoal, ACTOR_SELF, 0, FALSE)
359 Call(EnableActorBlur, ACTOR_SELF, ACTOR_BLUR_DISABLE)
360 Call(SetBattleFlagBits, BS_FLAGS1_BATTLE_FLED, TRUE)
361 Call(UseIdleAnimation, ACTOR_SELF, TRUE)
362 Call(RemoveActor, ACTOR_SELF)
363 Return
364 End
365};
366
367EvtScript N(EVS_TakeTurn) = {
368 Call(GetBattlePhase, LVar0)
370 ExecWait(N(EVS_Attack_Sing))
371 Return
372 EndIf
373 Call(RandInt, 1000, LVar0)
375 CaseLt(850)
376 ExecWait(N(EVS_Move_Flee))
378 ExecWait(N(EVS_Attack_Sing))
380 Return
381 End
382};
Bytecode EvtScript[]
#define STATUS_FLAGS_IMMOBILIZED
Definition enums.h:2834
@ BTL_CAM_XADJ_AVG
Definition enums.h:4900
@ BS_FLAGS1_BATTLE_FLED
Definition enums.h:3587
@ 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_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:4824
@ BTL_CAM_REPOSITION
Definition enums.h:4841
@ BTL_CAM_ENEMY_APPROACH
Definition enums.h:4885
@ STATUS_FLAG_SHRINK
Definition enums.h:2819
@ STATUS_FLAG_SLEEP
Definition enums.h:2812
@ SOUND_DAYZEE_SONG
Definition enums.h:1049
@ ACTOR_PLAYER
Definition enums.h:2085
@ ACTOR_SELF
Definition enums.h:2084
@ BTL_CAM_YADJ_TARGET
Definition enums.h:4905
@ ACTOR_BLUR_ENABLE
Definition enums.h:6414
@ ACTOR_BLUR_DISABLE
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_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
@ DAMAGE_TYPE_TRIGGER_LUCKY
Definition enums.h:2881
@ DAMAGE_TYPE_NO_CONTACT
Definition enums.h:2878
EvtScript EVS_Enemy_ReturnHome
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)
#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 LVarF
Definition macros.h:163
#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 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 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 DMG_STATUS_KEY(typeFlag, duration, chance)
Definition macros.h:224
#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 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 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