Paper Mario DX
Paper Mario (N64) modding
 
Loading...
Searching...
No Matches
fire_flower.c
Go to the documentation of this file.
1#include "common.h"
2#include "script_api/battle.h"
3#include "effects.h"
4#include "model.h"
5#include "sprite/player.h"
6
7#define NAMESPACE battle_item_fire_flower
8
10
11API_CALLABLE(N(func_802A123C_716E9C)) {
12 Bytecode* args = script->ptrReadPos;
13 s32 a = evt_get_variable(script, *args++);
14 s32 b = evt_get_variable(script, *args++);
15 s32 c = evt_get_variable(script, *args++);
16
17 fx_fire_flower(0, a, b, c, 0);
18
19 return ApiStatus_DONE2;
20}
21
24
26
27EvtScript N(EVS_UseItem) = {
28 SetConst(LVarA, ITEM_FIRE_FLOWER)
29 ExecWait(N(UseItemWithEffect))
32 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_PlantFireFlower)
33 Thread
34 Wait(50)
35 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Idle)
37 Wait(35)
38 Call(UseBattleCamPreset, BTL_CAM_DEFAULT)
39 Call(MoveBattleCamOver, 20)
40 Wait(10)
41 Call(GetActorPos, ACTOR_PLAYER, LVar3, LVar4, LVar5)
42 Set(LVar0, 40)
43 Call(MultiplyByActorScale, LVar0)
45 Thread
46 Call(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
47 Sub(LVar0, 10)
48 Call(SetActorSpeed, ACTOR_PLAYER, Float(2.0))
49 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Run)
50 Call(SetGoalPos, ACTOR_PLAYER, LVar0, LVar1, LVar2)
51 Call(PlayerRunToGoal, 0)
52 Call(SetAnimation, ACTOR_PLAYER, 0, ANIM_Mario1_Idle)
54 Thread
55 Call(N(func_802A123C_716E9C), LVar3, LVar4, LVar5)
56 Wait(25)
57 Loop(12)
58 Wait(1)
60 Wait(2)
62 Wait(1)
65 Wait(80)
66 Call(UseBattleCamPreset, BTL_CAM_VIEW_ENEMIES)
67 Call(MoveBattleCamOver, 20)
68 Call(InitTargetIterator)
69 Label(0)
70 Call(SetGoalToTarget, ACTOR_SELF)
71 Call(ItemCheckHit, LVar0, DAMAGE_TYPE_NO_CONTACT, 0, LVar0, 0)
73 Goto(1)
74 EndIf
75 Call(GetGoalPos, ACTOR_SELF, LVar0, LVar1, LVar2)
76 Call(GetItemPower, ITEM_FIRE_FLOWER, LVar0, LVar1)
78 Label(1)
79 Wait(5)
80 Call(ChooseNextTarget, ITER_NEXT, LVar0)
82 Goto(0)
83 EndIf
85 Wait(30)
86 ExecWait(N(PlayerGoHome))
87 Return
88 End
89};
Bytecode EvtScript[]
@ BS_FLAGS1_TRIGGER_EVENTS
Definition enums.h:3575
@ ITER_NO_MORE
Definition enums.h:2030
@ ITER_NEXT
Definition enums.h:2025
@ HIT_RESULT_MISS
Definition enums.h:1956
@ BTL_CAM_DEFAULT
Definition enums.h:4824
@ BTL_CAM_VIEW_ENEMIES
Definition enums.h:4825
@ SOUND_PLANT_FIRE_FLOWER
Definition enums.h:1191
@ SOUND_FIRE_FLOWER_B
Definition enums.h:1350
@ SOUND_FIRE_FLOWER_A
Definition enums.h:1349
@ ACTOR_PLAYER
Definition enums.h:2085
@ ACTOR_SELF
Definition enums.h:2084
@ DAMAGE_TYPE_IGNORE_DEFENSE
Definition enums.h:2877
@ DAMAGE_TYPE_FIRE
Definition enums.h:2852
@ DAMAGE_TYPE_NO_CONTACT
Definition enums.h:2878
@ DAMAGE_TYPE_MULTIPLE_POPUPS
Definition enums.h:2879
#define ApiStatus_DONE2
Definition evt.h:118
s32 Bytecode
Definition evt.h:7
s32 evt_get_variable(Evt *script, Bytecode var)
Definition evt.c:1690
ApiStatus PlaySound(Evt *script, b32 isInitialCall)
ApiStatus FadeBackgroundLighten(Evt *script, b32 isInitialCall)
ApiStatus FadeBackgroundDarken(Evt *script, b32 isInitialCall)
ApiStatus GetItemPower(Evt *script, b32 isInitialCall)
#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 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 LVar5
Definition macros.h:153
#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 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 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