Paper Mario DX
Paper Mario (N64) modding
 
Loading...
Searching...
No Matches
HammerSupport.inc.c
Go to the documentation of this file.
1#include "common.h"
2#include "script_api/battle.h"
4#include "sprite/player.h"
5
6#define BASIC_HAMMER_DMG_BAD 1
7#define BASIC_HAMMER_DMG_GOOD 2
8#define SUPER_HAMMER_DMG_BAD 2
9#define SUPER_HAMMER_DMG_GOOD 4
10#define ULTRA_HAMMER_DMG_BAD 3
11#define ULTRA_HAMMER_DMG_GOOD 6
12
13API_CALLABLE(N(IsBerserkerEquipped)) {
14 script->varTable[0] = gBattleStatus.actionCommandMode;
15 script->varTable[1] = 15;
16
18 script->varTable[0] = AC_MODE_NOT_LEARNED;
19 script->varTable[1] = 40;
20 }
21
22 return ApiStatus_DONE2;
23}
24
26
27// Move the player into position 32 units to the left of the target enemy
28EvtScript N(EVS_HammerSupport_SmashApproach) = {
29 Call(InitTargetIterator)
30 Call(SetGoalToTarget, ACTOR_PLAYER)
31 Call(AddGoalPos, ACTOR_PLAYER, 0, 0, 0)
32 Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
33 Sub(LVar0, 32)
34 Call(SetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
35 Call(UseBattleCamPreset, BTL_CAM_PLAYER_ATTACK_APPROACH)
36 Call(SetActorSpeed, ACTOR_PLAYER, Float(5.0))
37 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Run)
38 Call(PlayerRunToGoal, 0)
39 Return
40 End
41};
42
43// Move the player into a fixed position ideal for quakin'
44EvtScript N(EVS_HammerSupport_QuakeApproach) = {
45 Call(SetGoalPos, ACTOR_PLAYER, -33, 0, 0)
46 Call(UseBattleCamPreset, BTL_CAM_PLAYER_ATTACK_APPROACH)
47 Call(SetActorSpeed, ACTOR_PLAYER, Float(5.0))
48 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Run)
49 Call(PlayerRunToGoal, 0)
50 Return
51 End
52};
53
54// delay while player holds hammer on the ground before raising it
55// can be sped up by pre-emptively holding left
56EvtScript N(EVS_HammerSupport_BasicRaiseDelay) = {
57 Call(SetGoalToTarget, ACTOR_PLAYER)
58 Call(AddGoalPos, ACTOR_PLAYER, 0, 0, 0)
59 Set(LVar1, 0)
60 Loop(10)
61 Call(CheckButtonDown, BUTTON_STICK_LEFT, LVar0)
62 IfEq(LVar0, TRUE)
63 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Idle)
65 EndIf
66 Wait(1)
67 Add(LVar1, 1)
68 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash1_Begin)
70 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash1_Begin)
72 CaseLt(3)
73 Wait(4)
74 CaseLt(5)
75 Wait(3)
76 CaseLt(7)
77 Wait(2)
78 CaseLt(9)
79 Wait(1)
80 CaseLt(11)
81 Wait(0)
83 Return
84 End
85};
86
87// delay while player holds hammer on the ground before raising it
88// can be sped up by pre-emptively holding left
89EvtScript N(EVS_HammerSupport_SuperRaiseDelay) = {
90 Call(SetGoalToTarget, ACTOR_PLAYER)
91 Call(AddGoalPos, ACTOR_PLAYER, 0, 0, 0)
92 Set(LVar1, 0)
93 Loop(10)
94 Call(CheckButtonDown, BUTTON_STICK_LEFT, LVar0)
95 IfEq(LVar0, TRUE)
96 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Idle)
98 EndIf
99 Wait(1)
100 Add(LVar1, 1)
101 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash2_Begin)
102 EndLoop
103 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash2_Begin)
105 CaseLt(3)
106 Wait(4)
107 CaseLt(5)
108 Wait(3)
109 CaseLt(7)
110 Wait(2)
111 CaseLt(9)
112 Wait(1)
113 CaseLt(11)
114 Wait(0)
116 Return
117 End
118};
119
120// delay while player holds hammer on the ground before raising it
121// can be sped up by pre-emptively holding left
122EvtScript N(EVS_HammerSupport_UltraRaiseDelay) = {
123 Call(SetGoalToTarget, ACTOR_PLAYER)
124 Call(AddGoalPos, ACTOR_PLAYER, 0, 0, 0)
125 Set(LVar1, 0)
126 Loop(10)
127 Call(CheckButtonDown, BUTTON_STICK_LEFT, LVar0)
128 IfEq(LVar0, TRUE)
129 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Idle)
131 EndIf
132 Wait(1)
133 Add(LVar1, 1)
134 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash3_Begin)
135 EndLoop
136 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash3_Begin)
138 CaseLt(3)
139 Wait(4)
140 CaseLt(5)
141 Wait(3)
142 CaseLt(7)
143 Wait(2)
144 CaseLt(9)
145 Wait(1)
146 CaseLt(11)
147 Wait(0)
149 Return
150 End
151};
152
153EvtScript N(EVS_HammerSupport_F) = {
154 Call(UseBattleCamPreset, BTL_CAM_PLAYER_AIM_HAMMER)
155 Call(SetBattleCamOffsetY, 8)
156 Call(InitTargetIterator)
157 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_HAMMER_WINDUP)
158 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash1_PullBack)
159 Wait(4)
160 Call(action_command_hammer_start, 0, 36, AC_DIFFICULTY_3)
161 Call(SetActionProgress, 0)
162 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash1_Hold1)
163 Set(LVar1, 0)
164 Loop(30)
165 Wait(1)
166 Call(GetActionProgress, LVar0)
167 IfNe(LVar0, 0)
168 IfNe(LVar1, 1)
169 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash1_Hold2)
170 Set(LVar1, 1)
171 EndIf
172 EndIf
173 Call(CheckButtonDown, BUTTON_STICK_LEFT, LVar0)
174 IfEq(LVar0, FALSE)
176 EndIf
177 EndLoop
178 Label(0)
179 Wait(1)
180 Call(CheckButtonDown, BUTTON_STICK_LEFT, LVar0)
181 IfEq(LVar0, TRUE)
182 Goto(0)
183 EndIf
184 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash1_PreSwing)
185 Wait(3)
186 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash1_Swing)
187 Call(UseBattleCamPreset, BTL_CAM_PLAYER_HAMMER_STRIKE)
188 Return
189 End
190};
191
192EvtScript N(EVS_HammerSupport_ReturnHome_SmashSuccess) = {
193 Call(PlayerYieldTurn)
194 Call(UseBattleCamPreset, BTL_CAM_RETURN_HOME)
195 Call(MoveBattleCamOver, 5)
196 Call(func_802693F0)
197 Wait(20)
198 Call(EnablePlayerBlur, ACTOR_BLUR_RESET)
199 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Idle)
200 Wait(5)
201 Call(SetGoalToHome, ACTOR_PLAYER)
202 Call(SetActorSpeed, ACTOR_PLAYER, Float(8.0))
203 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Run)
204 Call(PlayerRunToGoal, 0)
205 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Idle)
206 Return
207 End
208};
209
210EvtScript N(EVS_HammerSupport_ReturnHome_Quake) = {
211 Call(PlayerYieldTurn)
212 Call(func_802693F0)
213 Wait(20)
214 Call(EnablePlayerBlur, ACTOR_BLUR_RESET)
215 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Idle)
216 Wait(5)
217 Call(SetGoalToHome, ACTOR_PLAYER)
218 Call(SetActorSpeed, ACTOR_PLAYER, Float(8.0))
219 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Run)
220 Call(PlayerRunToGoal, 0)
221 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Idle)
222 Return
223 End
224};
225
226EvtScript N(EVS_HammerSupport_ReturnHome_SmashMiss) = {
227 Call(PlayerYieldTurn)
228 Call(UseBattleCamPreset, BTL_CAM_PLAYER_MISTAKE)
229 Call(func_802693F0)
230 Wait(20)
231 Call(EnablePlayerBlur, ACTOR_BLUR_RESET)
232 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Idle)
233 Wait(5)
234 Call(SetGoalToHome, ACTOR_PLAYER)
235 Call(SetActorSpeed, ACTOR_PLAYER, Float(8.0))
236 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Run)
237 Call(PlayerRunToGoal, 0)
238 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Idle)
239 Return
240 End
241};
242
243EvtScript N(EVS_UseBasicHammer) = {
244 Call(LoadActionCommand, ACTION_COMMAND_SMASH)
245 Call(action_command_hammer_init)
246 ExecWait(N(EVS_HammerSupport_SmashApproach))
247 Call(SetGoalToTarget, ACTOR_PLAYER)
248 Call(AddGoalPos, ACTOR_PLAYER, 0, 0, 0)
249 ExecWait(N(EVS_HammerSupport_BasicRaiseDelay))
250 Call(PlayerTestEnemy, LVar0, DAMAGE_TYPE_SMASH, 0, 0, 0, 16)
251 Call(UseBattleCamPreset, BTL_CAM_PLAYER_AIM_HAMMER)
252 Call(SetBattleCamOffsetY, 8)
253 Call(InitTargetIterator)
254 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_HAMMER_WINDUP)
255 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash1_PullBack)
256 Wait(4)
257 Call(N(IsBerserkerEquipped))
258 IfNe(LVar0, FALSE)
259 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash1_Hold1)
260 Call(GetActionCommandMode, LVar0)
262 Call(N(ShouldMovesAutoSucceed))
263 IfEq(LVar0, 0)
264 Loop(45)
265 Wait(1)
266 Call(CheckButtonDown, BUTTON_STICK_LEFT, LVar0)
267 IfNe(LVar0, FALSE)
269 EndIf
270 EndLoop
271 EndIf
272 EndIf
273 Add(LVarD, 6)
274 Call(action_command_hammer_start, 0, LVarD, AC_DIFFICULTY_3)
275 Call(SetActionProgress, 0)
276 Set(LVar1, 0)
277 Loop(30)
278 Wait(1)
279 Call(GetActionProgress, LVar0)
280 IfNe(LVar0, 0)
281 IfNe(LVar1, 1)
282 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash1_Hold2)
283 Set(LVar1, 1)
284 EndIf
285 EndIf
286 Call(CheckButtonDown, BUTTON_STICK_LEFT, LVar0)
287 IfEq(LVar0, FALSE)
289 EndIf
290 EndLoop
291 Label(0)
292 Call(GetActionCommandMode, LVar0)
294 Wait(1)
295 Call(GetSmashActionQuality, LVar0)
296 IfEq(LVar0, 0)
297 Goto(0)
298 EndIf
299 EndIf
300 Else
301 Call(action_command_hammer_start, 0, LVar1, AC_DIFFICULTY_3)
302 Call(SetActionProgress, 0)
303 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash1_Hold1)
304 Sub(LVar1, 10)
305 Wait(LVar1)
306 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash1_Hold2)
307 Wait(5)
308 EndIf
309 Call(GetActionCommandMode, LVar0)
311 Call(SetActionCommandMode, AC_MODE_TUTORIAL_WAIT_INPUT)
312 Loop(0)
313 Call(GetActionCommandMode, LVar0)
316 EndIf
317 Wait(1)
318 EndLoop
319 EndIf
320 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash1_PreSwing)
321 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_HAMMER_SWING_1)
322 Wait(3)
323 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash1_Swing)
324 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_HAMMER_STRIKE_1)
325 Return
326 End
327};
328
329EvtScript N(EVS_UseSuperHammer) = {
330 Call(LoadActionCommand, ACTION_COMMAND_SMASH)
331 Call(action_command_hammer_init)
332 ExecWait(N(EVS_HammerSupport_SmashApproach))
333 Call(SetGoalToTarget, ACTOR_PLAYER)
334 Call(AddGoalPos, ACTOR_PLAYER, 0, 0, 0)
335 ExecWait(N(EVS_HammerSupport_SuperRaiseDelay))
336 Call(PlayerTestEnemy, LVar0, DAMAGE_TYPE_SMASH, 0, 0, 0, BS_FLAGS1_INCLUDE_POWER_UPS)
337 Call(UseBattleCamPreset, BTL_CAM_PLAYER_AIM_HAMMER)
338 Call(SetBattleCamOffsetY, 8)
339 Call(InitTargetIterator)
340 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_HAMMER_WINDUP)
341 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash2_PullBack)
342 Wait(4)
343 Call(N(IsBerserkerEquipped))
344 IfEq(LVar0, TRUE)
345 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash2_Hold1)
346 Call(N(ShouldMovesAutoSucceed))
348 Loop(45)
349 Wait(1)
350 Call(CheckButtonDown, BUTTON_STICK_LEFT, LVar0)
351 IfNe(LVar0, FALSE)
353 EndIf
354 EndLoop
355 EndIf
356 Add(LVarD, 6)
357 Call(action_command_hammer_start, 0, LVarD, AC_DIFFICULTY_3)
358 Call(SetActionProgress, 0)
359 Set(LVar1, 0)
360 Loop(30)
361 Wait(1)
362 Call(GetActionProgress, LVar0)
363 IfNe(LVar0, 0)
364 IfNe(LVar1, 1)
365 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash2_Hold2)
366 Set(LVar1, 1)
367 EndIf
368 EndIf
369 Call(CheckButtonDown, BUTTON_STICK_LEFT, LVar0)
370 IfEq(LVar0, FALSE)
372 EndIf
373 EndLoop
374 Label(0)
375 Wait(1)
376 Call(GetSmashActionQuality, LVar0)
377 IfEq(LVar0, 0)
378 Goto(0)
379 EndIf
380 Else
381 Call(action_command_hammer_start, 0, LVar1, AC_DIFFICULTY_3)
382 Call(SetActionProgress, 0)
383 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash2_Hold1)
384 Sub(LVar1, 10)
385 Wait(LVar1)
386 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash2_Hold2)
387 Wait(5)
388 EndIf
389 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash2_PreSwing)
390 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_HAMMER_SWING_2)
391 Wait(3)
392 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash2_Swing)
393 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_HAMMER_STRIKE_2)
394 Return
395 End
396};
397
398EvtScript N(EVS_UseUltraHammer) = {
399 Call(LoadActionCommand, ACTION_COMMAND_SMASH)
400 Call(action_command_hammer_init)
401 ExecWait(N(EVS_HammerSupport_SmashApproach))
402 Call(SetGoalToTarget, ACTOR_PLAYER)
403 Call(AddGoalPos, ACTOR_PLAYER, 0, 0, 0)
404 ExecWait(N(EVS_HammerSupport_UltraRaiseDelay))
405 Call(PlayerTestEnemy, LVar0, DAMAGE_TYPE_SMASH, 0, 0, 0, BS_FLAGS1_INCLUDE_POWER_UPS)
406 Call(UseBattleCamPreset, BTL_CAM_PLAYER_AIM_HAMMER)
407 Call(SetBattleCamOffsetY, 8)
408 Call(InitTargetIterator)
409 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_HAMMER_WINDUP)
410 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash3_PullBack)
411 Wait(4)
412 Call(N(IsBerserkerEquipped))
413 IfEq(LVar0, TRUE)
414 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash3_Hold1)
415 Call(N(ShouldMovesAutoSucceed))
417 Loop(45)
418 Wait(1)
419 Call(CheckButtonDown, BUTTON_STICK_LEFT, LVar0)
420 IfNe(LVar0, FALSE)
422 EndIf
423 EndLoop
424 EndIf
425 Add(LVarD, 6)
426 Call(action_command_hammer_start, 0, LVarD, AC_DIFFICULTY_3)
427 Call(SetActionProgress, 0)
428 Set(LVar1, 0)
429 Loop(30)
430 Wait(1)
431 Call(GetActionProgress, LVar0)
432 IfNe(LVar0, 0)
433 IfNe(LVar1, 1)
434 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash3_Hold2)
435 Set(LVar1, 1)
436 EndIf
437 EndIf
438 Call(CheckButtonDown, BUTTON_STICK_LEFT, LVar0)
439 IfEq(LVar0, FALSE)
441 EndIf
442 EndLoop
443 Label(0)
444 Wait(1)
445 Call(GetSmashActionQuality, LVar0)
446 IfEq(LVar0, 0)
447 Goto(0)
448 EndIf
449 Else
450 Call(action_command_hammer_start, 0, LVar1, AC_DIFFICULTY_3)
451 Call(SetActionProgress, 0)
452 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash3_Hold1)
453 Sub(LVar1, 10)
454 Wait(LVar1)
455 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash3_Hold2)
456 Wait(5)
457 EndIf
458 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash3_PreSwing)
459 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_HAMMER_SWING_3)
460 Wait(3)
461 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash3_Swing)
462 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_HAMMER_STRIKE_3)
463 Return
464 End
465};
466
467EvtScript N(EVS_Hammer_UseBasicQuake) = {
468 Call(ChooseNextTarget, ITER_LAST, LVar0)
469 Call(LoadActionCommand, ACTION_COMMAND_SMASH)
470 Call(action_command_hammer_init)
471 ExecWait(N(EVS_HammerSupport_QuakeApproach))
472 Call(SetGoalToTarget, ACTOR_PLAYER)
473 Call(AddGoalPos, ACTOR_PLAYER, 0, 0, 0)
474 ExecWait(N(EVS_HammerSupport_BasicRaiseDelay))
475 Call(UseBattleCamPreset, BTL_CAM_PLAYER_AIM_HAMMER)
476 Call(AddBattleCamDist, 80)
477 Call(InitTargetIterator)
478 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_HAMMER_WINDUP)
479 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash1_PullBack)
480 Wait(8)
481 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash1_Hold1)
482 Call(N(ShouldMovesAutoSucceed))
483 IfEq(LVar0, 0)
484 Loop(45)
485 Wait(1)
486 Call(CheckButtonDown, BUTTON_STICK_LEFT, LVar0)
487 IfNe(LVar0, FALSE)
489 EndIf
490 EndLoop
491 EndIf
492 Add(LVarD, 6)
493 Call(action_command_hammer_start, 0, LVarD, AC_DIFFICULTY_3)
494 Call(SetActionProgress, 0)
495 Set(LVar1, 0)
496 Loop(30)
497 Wait(1)
498 Call(GetActionProgress, LVar0)
499 IfNe(LVar0, 0)
500 IfNe(LVar1, 1)
501 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash1_Hold2)
502 Set(LVar1, 1)
503 EndIf
504 EndIf
505 Call(CheckButtonDown, BUTTON_STICK_LEFT, LVar0)
506 IfEq(LVar0, FALSE)
508 EndIf
509 EndLoop
510 Label(0)
511 Wait(1)
512 Call(GetSmashActionQuality, LVar0)
513 IfEq(LVar0, 0)
514 Goto(0)
515 EndIf
516 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_HAMMER_SWING_1)
517 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash1_PreSwing)
518 Wait(3)
519 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash1_Swing)
520 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_HAMMER_STRIKE_1)
521 Return
522 End
523};
524
525EvtScript N(EVS_Hammer_UseSuperQuake) = {
526 Call(ChooseNextTarget, ITER_LAST, LVar0)
527 Call(LoadActionCommand, ACTION_COMMAND_SMASH)
528 Call(action_command_hammer_init)
529 ExecWait(N(EVS_HammerSupport_QuakeApproach))
530 Call(SetGoalToTarget, ACTOR_PLAYER)
531 Call(AddGoalPos, ACTOR_PLAYER, 0, 0, 0)
532 ExecWait(N(EVS_HammerSupport_SuperRaiseDelay))
533 Call(UseBattleCamPreset, BTL_CAM_PLAYER_AIM_HAMMER)
534 Call(AddBattleCamDist, 80)
535 Call(InitTargetIterator)
536 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_HAMMER_WINDUP)
537 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash2_PullBack)
538 Wait(8)
539 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash2_Hold1)
540 Call(N(ShouldMovesAutoSucceed))
541 IfEq(LVar0, 0)
542 Loop(45)
543 Wait(1)
544 Call(CheckButtonDown, BUTTON_STICK_LEFT, LVar0)
545 IfNe(LVar0, FALSE)
547 EndIf
548 EndLoop
549 EndIf
550 Add(LVarD, 6)
551 Call(action_command_hammer_start, 0, LVarD, AC_DIFFICULTY_3)
552 Loop(60)
553 Wait(1)
554 Call(CheckButtonDown, BUTTON_STICK_LEFT, LVar0)
555 IfEq(LVar0, FALSE)
557 EndIf
558 EndLoop
559 Label(0)
560 Wait(1)
561 Call(GetSmashActionQuality, LVar0)
562 IfEq(LVar0, 0)
563 Goto(0)
564 EndIf
565 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_HAMMER_SWING_2)
566 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash2_PreSwing)
567 Wait(3)
568 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash2_Swing)
569 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_HAMMER_STRIKE_2)
570 Return
571 End
572};
573
574EvtScript N(EVS_Hammer_UseUltraQuake) = {
575 Call(ChooseNextTarget, ITER_LAST, LVar0)
576 Call(LoadActionCommand, ACTION_COMMAND_SMASH)
577 Call(action_command_hammer_init)
578 ExecWait(N(EVS_HammerSupport_QuakeApproach))
579 Call(SetGoalToTarget, ACTOR_PLAYER)
580 Call(AddGoalPos, ACTOR_PLAYER, 0, 0, 0)
581 ExecWait(N(EVS_HammerSupport_UltraRaiseDelay))
582 Call(UseBattleCamPreset, BTL_CAM_PLAYER_AIM_HAMMER)
583 Call(AddBattleCamDist, 80)
584 Call(InitTargetIterator)
585 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_HAMMER_WINDUP)
586 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash3_PullBack)
587 Wait(8)
588 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash3_Hold1)
589 Call(N(ShouldMovesAutoSucceed))
590 IfEq(LVar0, 0)
591 Loop(45)
592 Wait(1)
593 Call(CheckButtonDown, BUTTON_STICK_LEFT, LVar0)
594 IfNe(LVar0, FALSE)
596 EndIf
597 EndLoop
598 EndIf
599 Add(LVarD, 6)
600 Call(action_command_hammer_start, 0, LVarD, AC_DIFFICULTY_3)
601 Loop(60)
602 Wait(1)
603 Call(CheckButtonDown, BUTTON_STICK_LEFT, LVar0)
604 IfEq(LVar0, FALSE)
606 EndIf
607 EndLoop
608 Label(0)
609 Wait(1)
610 Call(GetSmashActionQuality, LVar0)
611 IfEq(LVar0, 0)
612 Goto(0)
613 EndIf
614 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_HAMMER_SWING_3)
615 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash3_PreSwing)
616 Wait(3)
617 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_MarioB1_Smash3_Swing)
618 Call(PlaySoundAtActor, ACTOR_PLAYER, SOUND_HAMMER_STRIKE_3)
619 Return
620 End
621};
@ AC_DIFFICULTY_3
Definition action_cmd.h:45
@ AC_MODE_TUTORIAL_WAIT_INPUT
Definition action_cmd.h:63
@ AC_MODE_TUTORIAL
Definition action_cmd.h:62
@ AC_MODE_NOT_LEARNED
Definition action_cmd.h:60
Bytecode EvtScript[]
@ ACTION_COMMAND_SMASH
Definition enums.h:3474
@ BUTTON_STICK_LEFT
Definition enums.h:2793
@ BS_FLAGS1_INCLUDE_POWER_UPS
Definition enums.h:3570
@ ITER_LAST
Definition enums.h:2027
@ HIT_RESULT_HIT
Definition enums.h:1950
@ BTL_CAM_RETURN_HOME
Definition enums.h:4825
@ BTL_CAM_PLAYER_MISTAKE
Definition enums.h:4850
@ BTL_CAM_PLAYER_AIM_HAMMER
Definition enums.h:4864
@ BTL_CAM_PLAYER_HAMMER_STRIKE
Definition enums.h:4865
@ BTL_CAM_PLAYER_ATTACK_APPROACH
Definition enums.h:4847
@ ABILITY_BERSERKER
Definition enums.h:457
@ SOUND_HAMMER_STRIKE_3
Definition enums.h:1559
@ SOUND_HAMMER_SWING_3
Definition enums.h:1556
@ SOUND_HAMMER_STRIKE_1
Definition enums.h:1557
@ SOUND_HAMMER_SWING_1
Definition enums.h:1554
@ SOUND_HAMMER_SWING_2
Definition enums.h:1555
@ SOUND_HAMMER_WINDUP
Definition enums.h:744
@ SOUND_HAMMER_STRIKE_2
Definition enums.h:1558
@ ACTOR_PLAYER
Definition enums.h:2085
@ ACTOR_SELF
Definition enums.h:2084
@ ACTOR_BLUR_RESET
Definition enums.h:6414
@ DAMAGE_TYPE_SMASH
Definition enums.h:2857
#define ApiStatus_DONE2
Definition evt.h:118
s32 is_ability_active(s32 arg0)
Definition inventory.c:1736
#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 Set(VAR, INT_VALUE)
Sets the given variable to a given value casted to an integer.
Definition macros.h:365
#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 Add(VAR, INT_VALUE)
Definition macros.h:376
#define EndLoop
Marks the end of a loop.
Definition macros.h:248
#define Goto(LABEL_ID)
Moves execution to the given label.
Definition macros.h:232
#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 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 BreakLoop
Breaks out of the innermost loop.
Definition macros.h:251
#define LVar2
Definition macros.h:150
#define LVar1
Definition macros.h:149
#define LVarD
Definition macros.h:161
#define Wait(NUM_FRAMES)
Blocks for the given number of frames.
Definition macros.h:254
#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 LVar0
Definition macros.h:148
#define Return
Kills the current EVT thread.
Definition macros.h:217
BattleStatus gBattleStatus
Definition battle.c:11