papermario
Decompilation of Paper Mario
 
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Loading...
Searching...
No Matches
huff_n_puff.c File Reference

Data Structures

struct  SuctionPath
 

Macros

#define NAMESPACE   A(huff_n_puff)
 
#define MAX_RUFF_PUFFS   10
 
#define FOR_CHILDREN_ORDERED(template)
 
#define FOR_CHILDREN_SCATTERED(template)
 
#define HNP_REGISTER_CHILD(idx)
 
#define HNP_KILL_CHILD(idx)
 
#define HNP_KILL_CHILD(idx)
 
#define HNP_GET_SPEAKER(idx)
 
#define HNP_GET_SPEAKER(idx)
 
#define HNP_GET_SPEAKER(idx)
 
#define HNP_GET_SPEAKER(idx)
 
#define HNP_LOAD_SUCTION_PATH(idx)
 
#define HNP_ADD_HEAL_VALUE(idx)
 
#define HNP_INHALE_CHILD(idx)
 
#define HNP_GROUP_ASCEND(idx)
 
#define HNP_GROUP_DROP(idx)
 
#define HNP_IMPACT_JIGGLE(idx)
 
#define HNP_RETURN_HOME(idx)
 
#define HNP_ADD_CHILD(idx)
 
#define HNP_RETURN_HOME(idx)
 
#define HNP_SWARM_MOVE_UP(idx)
 
#define HNP_ADD_CHILD(idx)
 
#define HNP_SWARM_SURROUND_PLAYER(idx)
 
#define HNP_ADD_CHILD(idx)
 
#define HNP_SQUEEZE_PLAYER(idx)
 
#define HNP_SCATTER_PUFF(idx)
 
#define HNP_RETURN_HOME(idx)
 
#define HNP_SCATTER_PUFF(idx)
 
#define HNP_RETURN_HOME(idx)
 

Functions

ActorBlueprint A (tuff_puff)
 
ActorBlueprint A (huff_n_puff)
 

Data Structure Documentation

◆ SuctionPath

struct SuctionPath
Data Fields
Vec3f end
Vec3f mid
Vec3f start

Macro Definition Documentation

◆ FOR_CHILDREN_ORDERED

#define FOR_CHILDREN_ORDERED ( template)
Value:
template(0) \
template(1) \
template(2) \
template(3) \
template(4) \
template(5) \
template(6) \
template(7) \
template(8) \
template(9)

◆ FOR_CHILDREN_SCATTERED

#define FOR_CHILDREN_SCATTERED ( template)
Value:
template(4) \
template(9) \
template(3) \
template(5) \
template(1) \
template(0) \
template(8) \
template(2) \
template(7) \
template(6)

◆ HNP_ADD_CHILD [1/3]

#define HNP_ADD_CHILD ( idx)
Value:
IfFlag(LVar0, 1 << idx) \
Add(LVarA, 1) \
#define EndIf
Marks the end of an if statement or an else block.
Definition macros.h:310
#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:300
#define LVarA
Definition macros.h:154
#define LVar0
Definition macros.h:144

◆ HNP_ADD_CHILD [2/3]

#define HNP_ADD_CHILD ( idx)
Value:
IfFlag(LVar0, 1 << idx) \
Add(LVarA, 1) \

◆ HNP_ADD_CHILD [3/3]

#define HNP_ADD_CHILD ( idx)
Value:
IfFlag(LVar0, 1 << idx) \
Add(LVar9, 1) \
#define LVar9
Definition macros.h:153

◆ HNP_ADD_HEAL_VALUE

#define HNP_ADD_HEAL_VALUE ( idx)
Value:
IfFlag(LVar9, 1 << idx) \
Call(GetActorVar, ArrayVar(idx), AVAR_TuffPuff_HealValue, LVarB) \
Add(LVarA, LVarB) \
#define ArrayVar(INDEX)
User Word.
Definition macros.h:118
#define LVarB
Definition macros.h:155

◆ HNP_GET_SPEAKER [1/4]

#define HNP_GET_SPEAKER ( idx)
Value:
IfFlag(LVar0, 1 << idx) \
Set(LVar0, ArrayVar(idx)) \
Goto(0) \

◆ HNP_GET_SPEAKER [2/4]

#define HNP_GET_SPEAKER ( idx)
Value:
IfFlag(LVar0, 1 << idx) \
Set(LVar0, ArrayVar(idx)) \
Goto(0) \

◆ HNP_GET_SPEAKER [3/4]

#define HNP_GET_SPEAKER ( idx)
Value:
IfFlag(LVar0, 1 << idx) \
Set(LVar0, ArrayVar(idx)) \
Goto(0) \

◆ HNP_GET_SPEAKER [4/4]

#define HNP_GET_SPEAKER ( idx)
Value:
IfFlag(LVar0, 1 << idx) \
Set(LVar0, ArrayVar(idx)) \
Goto(0) \

◆ HNP_GROUP_ASCEND

#define HNP_GROUP_ASCEND ( idx)
Value:
IfFlag(LVar0, 1 << idx) \
Call(UseIdleAnimation, ArrayVar(idx), FALSE) \
Call(GetActorVar, ArrayVar(idx), AVAR_TuffPuff_IsLarge, LVar1) \
IfEq(LVar1, 0) \
Call(SetAnimation, ArrayVar(idx), 1, ANIM_TuffPuff_Anim09) \
Else \
Call(SetAnimation, ArrayVar(idx), 1, ANIM_TuffPuff_Anim0B) \
EndIf \
Thread \
Mod(LVar9, 2) \
IfEq(LVar9, 0) \
Call(PlaySoundAtActor, ArrayVar(idx), SOUND_RUFF_PUFF_FLY_A) \
Else \
Call(PlaySoundAtActor, ArrayVar(idx), SOUND_RUFF_PUFF_FLY_B) \
EndIf \
Call(GetActorPos, ArrayVar(idx), LVarD, LVarE, LVarF) \
Call(SetGoalPos, ArrayVar(idx), LVarA, LVarB, LVarF) \
Call(FlyToGoal, ArrayVar(idx), 20, 10, EASING_QUADRATIC_IN) \
Set(LVarD, LVarA) \
Set(LVarE, LVarC) \
Set(LVarF, idx) \
Mul(LVarF, 36) \
Add(LVarF, -90) \
Call(AddVectorPolar, LVarD, LVarE, Float(60.0), LVarF) \
Call(SetActorPos, ArrayVar(idx), LVarD, LVarB, LVarE) \
EndThread \
Add(LVar9, 1) \
Wait(8) \
@ EASING_QUADRATIC_IN
Definition enums.h:511
@ SOUND_RUFF_PUFF_FLY_B
Definition enums.h:1282
@ SOUND_RUFF_PUFF_FLY_A
Definition enums.h:1281
ApiStatus AddVectorPolar(Evt *script, b32 isInitialCall)
#define LVarF
Definition macros.h:159
#define LVarC
Definition macros.h:156
#define Float(DOUBLE)
Definition macros.h:47
#define LVar1
Definition macros.h:145
#define LVarD
Definition macros.h:157
#define LVarE
Definition macros.h:158

◆ HNP_GROUP_DROP

#define HNP_GROUP_DROP ( idx)
Value:
IfFlag(LVar0, 1 << idx) \
Thread \
Call(GetActorPos, ArrayVar(idx), LVar1, LVar2, LVar3) \
Call(GetActorVar, ArrayVar(idx), AVAR_TuffPuff_IsLarge, LVar4) \
IfEq(LVar4, 0) \
Set(LVar2, 10) \
Else \
Set(LVar2, 14) \
EndIf \
Call(SetActorSounds, ArrayVar(idx), ACTOR_SOUND_FLY, SOUND_NONE, SOUND_NONE) \
Call(SetGoalPos, ArrayVar(idx), LVar1, LVar2, LVar3) \
Call(FlyToGoal, ArrayVar(idx), 20, 0, EASING_CUBIC_IN) \
Call(ResetActorSounds, ArrayVar(idx), ACTOR_SOUND_FLY) \
EndThread \
EndIf
@ ACTOR_SOUND_FLY
Definition enums.h:2036
@ EASING_CUBIC_IN
Definition enums.h:512
@ SOUND_NONE
Definition enums.h:547
#define LVar2
Definition macros.h:146
#define LVar4
Definition macros.h:148
#define LVar3
Definition macros.h:147

◆ HNP_IMPACT_JIGGLE

#define HNP_IMPACT_JIGGLE ( idx)

◆ HNP_INHALE_CHILD

#define HNP_INHALE_CHILD ( idx)
Value:
IfFlag(LVar9, 1 << idx) \
Set(LVar0, ArrayVar(idx)) \
ExecGetTID(N(EVS_RuffPuff_Inhale), LVar7) \
Add(LVar1, 1) \
Wait(5) \
#define LVar7
Definition macros.h:151

◆ HNP_KILL_CHILD [1/2]

#define HNP_KILL_CHILD ( idx)
Value:
IfFlag(LVar0, 1 << idx) \
Call(SetDamageSource, DMG_SRC_DEFAULT) \
Call(DispatchEvent, ArrayVar(idx), EVENT_DEATH) \
@ DMG_SRC_DEFAULT
Definition enums.h:1989
@ EVENT_DEATH
Definition enums.h:2154

◆ HNP_KILL_CHILD [2/2]

#define HNP_KILL_CHILD ( idx)
Value:
IfFlag(LVar0, 1 << idx) \
Call(DispatchEvent, ArrayVar(idx), EVENT_DEATH) \

◆ HNP_LOAD_SUCTION_PATH

#define HNP_LOAD_SUCTION_PATH ( idx)
Value:
CaseEq(idx) \
Call(LoadPath, 40, Ref(N(SuctionPaths)[idx]), 3, EASING_QUADRATIC_IN)
ApiStatus LoadPath(Evt *script, b32 isInitialCall)
#define Ref(sym)
Address/pointer constant.
Definition macros.h:56
#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:331

◆ HNP_REGISTER_CHILD

#define HNP_REGISTER_CHILD ( idx)
Value:
CaseEq(1 << idx) \
BitwiseOrConst(LVar1, 1 << idx) \
Set(LVar2, idx) \
Set(ArrayVar(idx), LVar0)

◆ HNP_RETURN_HOME [1/4]

#define HNP_RETURN_HOME ( idx)
Value:
IfFlag(LVar0, 1 << idx) \
Thread \
Mod(LVarA, 2) \
IfEq(LVarA, 0) \
Call(PlaySoundAtActor, ArrayVar(idx), SOUND_RUFF_PUFF_FLY_A) \
Else \
Call(PlaySoundAtActor, ArrayVar(idx), SOUND_RUFF_PUFF_FLY_B) \
EndIf \
Call(SetGoalToHome, ArrayVar(idx)) \
Call(FlyToGoal, ArrayVar(idx), 20, -10, EASING_SIN_OUT) \
EndThread \
Add(LVarA, 1) \
Wait(8) \
@ EASING_SIN_OUT
Definition enums.h:521

◆ HNP_RETURN_HOME [2/4]

#define HNP_RETURN_HOME ( idx)
Value:
IfFlag(LVar0, 1 << idx) \
Thread \
Mod(LVarA, 2) \
IfEq(LVarA, 0) \
Call(PlaySoundAtActor, ArrayVar(idx), SOUND_RUFF_PUFF_FLY_A) \
Else \
Call(PlaySoundAtActor, ArrayVar(idx), SOUND_RUFF_PUFF_FLY_B) \
EndIf \
Call(SetGoalToHome, ArrayVar(idx)) \
Call(FlyToGoal, ArrayVar(idx), 20, -10, EASING_SIN_OUT) \
EndThread \
Add(LVarA, 1) \
Wait(8) \

◆ HNP_RETURN_HOME [3/4]

#define HNP_RETURN_HOME ( idx)
Value:
IfFlag(LVar0, 1 << idx) \
Call(GetActorVar, ArrayVar(idx), AVAR_TuffPuff_IsLarge, LVar1) \
IfEq(LVar1, 0) \
Call(SetAnimation, ArrayVar(idx), 1, ANIM_TuffPuff_Anim06) \
Else \
Call(SetAnimation, ArrayVar(idx), 1, ANIM_TuffPuff_Anim07) \
EndIf \
Thread \
Call(SetActorVar, ArrayVar(idx), AVAR_TuffPuff_WobbleMode, 0) \
Mod(LVarA, 2) \
IfEq(LVarA, 0) \
Call(PlaySoundAtActor, ArrayVar(idx), SOUND_RUFF_PUFF_FLY_A) \
Else \
Call(PlaySoundAtActor, ArrayVar(idx), SOUND_RUFF_PUFF_FLY_B) \
EndIf \
Call(SetGoalToHome, ArrayVar(idx)) \
Call(FlyToGoal, ArrayVar(idx), 30, 10, EASING_SIN_OUT) \
Call(SetPartAlpha, ArrayVar(idx), 1, 255) \
Call(SetActorYaw, ArrayVar(idx), 0) \
Call(GetActorVar, ArrayVar(idx), AVAR_TuffPuff_IsLarge, LVar1) \
IfEq(LVar1, 0) \
Call(SetAnimation, ArrayVar(idx), 1, ANIM_TuffPuff_Anim02) \
Else \
Call(SetAnimation, ArrayVar(idx), 1, ANIM_TuffPuff_Anim03) \
EndIf \
EndThread \
Add(LVarA, 1) \
Wait(4) \

◆ HNP_RETURN_HOME [4/4]

#define HNP_RETURN_HOME ( idx)
Value:
IfFlag(LVar0, 1 << idx) \
Call(GetActorVar, ArrayVar(idx), AVAR_TuffPuff_IsLarge, LVar1) \
IfEq(LVar1, 0) \
Call(SetAnimation, ArrayVar(idx), 1, ANIM_TuffPuff_Anim06) \
Else \
Call(SetAnimation, ArrayVar(idx), 1, ANIM_TuffPuff_Anim07) \
EndIf \
Thread \
Call(SetActorVar, ArrayVar(idx), AVAR_TuffPuff_WobbleMode, 0) \
Mod(LVarA, 2) \
IfEq(LVarA, 0) \
Call(PlaySoundAtActor, ArrayVar(idx), SOUND_RUFF_PUFF_FLY_A) \
Else \
Call(PlaySoundAtActor, ArrayVar(idx), SOUND_RUFF_PUFF_FLY_B) \
EndIf \
Call(SetGoalToHome, ArrayVar(idx)) \
Call(FlyToGoal, ArrayVar(idx), 30, 10, EASING_SIN_OUT) \
Call(SetPartAlpha, ArrayVar(idx), 1, 255) \
Call(SetActorYaw, ArrayVar(idx), 0) \
Call(GetActorVar, ArrayVar(idx), AVAR_TuffPuff_IsLarge, LVar1) \
IfEq(LVar1, 0) \
Call(SetAnimation, ArrayVar(idx), 1, ANIM_TuffPuff_Anim02) \
Else \
Call(SetAnimation, ArrayVar(idx), 1, ANIM_TuffPuff_Anim03) \
EndIf \
EndThread \
Add(LVarA, 1) \
Wait(4) \

◆ HNP_SCATTER_PUFF [1/2]

#define HNP_SCATTER_PUFF ( idx)
Value:
IfFlag(LVar0, 1 << idx) \
KillThread(ArrayVar(idx + MAX_RUFF_PUFFS)) \
Call(GetActorVar, ArrayVar(idx), AVAR_TuffPuff_IsLarge, LVar1) \
IfEq(LVar1, 0) \
Call(SetAnimation, ArrayVar(idx), 1, ANIM_TuffPuff_Anim12) \
Else \
Call(SetAnimation, ArrayVar(idx), 1, ANIM_TuffPuff_Anim13) \
EndIf \
Thread \
Call(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2) \
Call(GetActorPos, ArrayVar(idx), LVar3, LVar4, LVar5) \
Call(N(Atan2), LVar6, LVar0, LVar2, LVar3, LVar5) \
DivF(LVar6, Float(2.0)) \
AddF(LVar6, Float(90.0)) \
Call(AddVectorPolar, LVar0, LVar1, Float(70.0), LVar6) \
Call(SetActorJumpGravity, ArrayVar(idx), Float(1.0)) \
Call(SetGoalPos, ArrayVar(idx), LVar0, LVar1, LVar2) \
Call(JumpToGoal, ArrayVar(idx), 20, FALSE, FALSE, FALSE) \
EndThread \
EndIf
#define MAX_RUFF_PUFFS
Definition huff_n_puff.c:11
@ ACTOR_PLAYER
Definition enums.h:2086
#define LVar6
Definition macros.h:150
#define LVar5
Definition macros.h:149

◆ HNP_SCATTER_PUFF [2/2]

#define HNP_SCATTER_PUFF ( idx)
Value:
IfFlag(LVar0, 1 << idx) \
KillThread(ArrayVar(idx + MAX_RUFF_PUFFS)) \
Call(GetActorVar, ArrayVar(idx), AVAR_TuffPuff_IsLarge, LVar1) \
IfEq(LVar1, 0) \
Call(SetAnimation, ArrayVar(idx), 1, ANIM_TuffPuff_Anim12) \
Else \
Call(SetAnimation, ArrayVar(idx), 1, ANIM_TuffPuff_Anim13) \
EndIf \
Thread \
Call(GetActorPos, ACTOR_PLAYER, LVar0, LVar1, LVar2) \
Call(GetActorPos, ArrayVar(idx), LVar3, LVar4, LVar5) \
Call(N(Atan2), LVar6, LVar0, LVar2, LVar3, LVar5) \
DivF(LVar6, Float(2.0)) \
AddF(LVar6, Float(90.0)) \
Call(AddVectorPolar, LVar0, LVar1, Float(70.0), LVar6) \
Call(SetActorJumpGravity, ArrayVar(idx), Float(1.0)) \
Call(SetGoalPos, ArrayVar(idx), LVar0, LVar1, LVar2) \
Call(JumpToGoal, ArrayVar(idx), 20, FALSE, FALSE, FALSE) \
EndThread \
EndIf

◆ HNP_SQUEEZE_PLAYER

#define HNP_SQUEEZE_PLAYER ( idx)
Value:
IfFlag(LVar0, 1 << idx) \
Set(LVar1, ArrayVar(idx)) \
Set(LVar2, LVarA) \
ExecGetTID(N(EVS_TuffPuff_SqueezePlayer), ArrayVar(idx + MAX_RUFF_PUFFS)) \
Add(LVar3, 1) \

◆ HNP_SWARM_MOVE_UP

#define HNP_SWARM_MOVE_UP ( idx)
Value:
IfFlag(LVar0, 1 << idx) \
Thread \
Call(GetActorPos, ArrayVar(idx), LVar1, LVar2, LVar3) \
Add(LVar2, 15) \
Call(SetGoalPos, ArrayVar(idx), LVar1, LVar2, LVar3) \
Call(FlyToGoal, ArrayVar(idx), 20, 0, EASING_LINEAR) \
Wait(3) \
EndThread \
EndIf
@ EASING_LINEAR
Definition enums.h:510

◆ HNP_SWARM_SURROUND_PLAYER

#define HNP_SWARM_SURROUND_PLAYER ( idx)

◆ MAX_RUFF_PUFFS

#define MAX_RUFF_PUFFS   10

◆ NAMESPACE

#define NAMESPACE   A(huff_n_puff)

Function Documentation

◆ A() [1/2]

ActorBlueprint A ( huff_n_puff )

◆ A() [2/2]

ActorBlueprint A ( tuff_puff )
extern