Paper Mario DX
Paper Mario (N64) modding
 
Loading...
Searching...
No Matches
HeartPlant.inc.c
Go to the documentation of this file.
1#include "HeartPlant.h"
2
4
5extern EvtScript N(EVS_NpcInteract_HeartPlant);
6
7EvtScript N(EVS_NpcAuxAI_HeartPlant) = {
9 Call(SetSelfVar, 0, 0)
10 Call(SetSelfVar, 1, 0)
11 Return
12 End
13};
14
15EvtScript N(EVS_HeartPlant_RebindInteractAfterDelay) = {
16 Wait(45)
17 Call(BindNpcInteract, NPC_SELF, Ref(N(EVS_NpcInteract_HeartPlant)))
18 Return
19 End
20};
21
22EvtScript N(EVS_NpcInteract_HeartPlant) = {
24 IfEq(LVar0, 0)
25 Call(SetSelfVar, 1, 1)
27 Call(SetNpcAnimation, NPC_SELF, ANIM_HeartPlant_Anim00)
28 Wait(1)
29 Call(N(HeartPlant_SpawnHeart))
30 Call(SetNpcAnimation, NPC_SELF, ANIM_HeartPlant_Anim01)
31 Thread
33 Exec(N(EVS_HeartPlant_RebindInteractAfterDelay))
34 Wait(45)
35 Call(SetSelfVar, 1, 0)
36 Call(SetNpcAnimation, NPC_SELF, ANIM_HeartPlant_Anim00)
38 EndIf
39 Return
40 End
41};
42
43NpcSettings N(NpcSettings_HeartPlant) = {
44 .height = 20,
45 .radius = 28,
46 .level = ACTOR_LEVEL_NONE,
47 .otherAI = &N(EVS_NpcAuxAI_HeartPlant),
48 .onInteract = &N(EVS_NpcInteract_HeartPlant),
49};
50
51#define HEART_PLANT_FLAGS \
52 ENEMY_FLAG_PASSIVE | ENEMY_FLAG_DO_NOT_KILL | ENEMY_FLAG_IGNORE_WORLD_COLLISION | ENEMY_FLAG_IGNORE_ENTITY_COLLISION | \
53 ENEMY_FLAG_FLYING | ENEMY_FLAG_USE_INSPECT_ICON | ENEMY_FLAG_DO_NOT_AUTO_FACE_PLAYER
Bytecode EvtScript[]
@ NPC_SELF
Definition enums.h:2526
@ SOUND_HEART_PLANT
Definition enums.h:1445
@ SOUND_SPACE_DEFAULT
Definition enums.h:1737
s16 height
Definition npc.h:145
ApiStatus PlaySoundAtNpc(Evt *script, b32 isInitialCall)
ApiStatus BindNpcInteract(Evt *script, b32 isInitialCall)
ApiStatus EnableNpcShadow(Evt *script, b32 isInitialCall)
ApiStatus SetNpcAnimation(Evt *script, b32 isInitialCall)
ApiStatus SetSelfVar(Evt *script, b32 isInitialCall)
ApiStatus GetSelfVar(Evt *script, b32 isInitialCall)
#define Ref(sym)
Address/pointer constant.
Definition macros.h:60
#define End
Signals the end of EVT script data. A script missing this will likely crash on load.
Definition macros.h:213
#define EndIf
Marks the end of an if statement or an else block.
Definition macros.h:298
#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 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 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