3#include <actor/ActorState.h>
4#include <audio/GameAudio.h>
5#include <enemy/Combo.h>
6#include <enemy/EnemyChibiYoshiAwaData.h>
7#include <enemy/EnemyDeathInfo.h>
8#include <enemy/IceMgr.h>
9#include <state/FStateVirtualID.h>
14struct UniqueFumiCheckInf;
36 SEAD_RTTI_OVERRIDE(
Enemy, ActorMultiState)
55
56
57
58
59
60
61
62
66
67
68
69
70
71
72
73
74
75
76
77
78
85
86
87
113 Enemy(
const ActorCreateParam& param);
144
145
146
147
148
149
150
234
235
236
237
238
285
286
287
288
289
307 DECLARE_STATE_VIRTUAL_ID_BASE(
Enemy, DieFumi)
392 GameAudio::getAudioObjMap()->startSound(
"SE_OBJ_FIREBALL_DISAPP", cc_other->getOwner()->getPos());
408 setDeathInfo_Fumi(player, speed, StateID_DieFumi);
413 setDeathInfo_Fumi(player, speed, StateID_DieFall);
418 setDeathInfo_Fumi(player, speed, StateID_DieOther);
430
431
432
433
434
435
501static_assert(
sizeof(
Enemy) == 0x1880);
503#define ENEMY_MAKE_DEATH_INFO_ARG_FALL(arg_name)
504 EnemyDeathInfo::Arg arg_name = {
508 &Enemy::StateID_DieFall,
Definition ActorCollisionCheck.h:22
u8 mPreIceDirection
Definition Enemy.h:495
EnemyDeathInfo mDeathInfo
Definition Enemy.h:480
virtual bool hitCallback_Slip(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
void yoshifumistepSE(Actor *)
Definition Enemy.h:466
u16 _186c
Definition Enemy.h:491
u16 _186e
Definition Enemy.h:492
FumiSeType
Definition Enemy.h:97
@ cFumiSeType_Step
Definition Enemy.h:99
@ cFumiSeType_NoEffect
Definition Enemy.h:100
@ cFumiSeType_Normal
Definition Enemy.h:98
virtual bool hitCallback_Shell(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
virtual bool hitCallback_Spin(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
virtual bool hitCallback_ChibiYoshiUnk(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
Combo mCombo
Definition Enemy.h:496
virtual void returnState_Ice()
void setDeathInfo_FumiFall(Actor *player, const sead::Vector2f &speed)
Definition Enemy.h:411
virtual void yoshifumiSE(Actor *)
virtual void setAwaCatchEnd(Actor *awa)
virtual bool vf18C()
Definition Enemy.h:132
virtual void returnAnm_Ice()
virtual bool hitCallback_ChibiYoshiStar(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
virtual bool hitCallback_ChibiYoshiLight(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
virtual bool playerDamageCheck(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
sead::BitFlag32 mEnFlag
Definition Enemy.h:485
virtual void yoshiFumiJumpSet(Actor *)
IceMgr mIceMgr
Definition Enemy.h:486
virtual bool hitCallback_AttackUnk27(bool *dead, ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
void spinfumiEffect(Actor *)
FumiType fumiCheck(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other, FumiSeType se_type)
Process a collision with a player and return which type occurred.
virtual void vsPlayerHitCheck_Normal(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
virtual void vsChibiYoshiHitCheck_Normal(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
u8 _187c
Definition Enemy.h:497
static void fireballInvalid(ActorCollisionCheck *cc_other)
Definition Enemy.h:390
virtual bool checkDispIn()
virtual void hipatkEffect(const sead::Vector3f &effect_pos)
void startSound(const char *name)
void killIce()
Definition Enemy.h:456
virtual bool yoshiDamageCheck(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
sead::SafeArray< u16, 4 > mNoHitPlayerTimer
Definition Enemy.h:484
s32 calcComboPlFumiCnt(Actor *player)
virtual void vsYoshiHitCheck_Normal(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
virtual bool enemyPreDamageCheck(bool *dead, ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
static const f32 cDefaultGravity
Definition Enemy.h:44
static const f32 cDieFallGravity
Definition Enemy.h:52
virtual void fumiSE(Actor *)
virtual bool setDeathInfo_Star(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
void hitdamageEffect(const sead::Vector3f &effect_pos)
static const f32 cDieFallInitSpeedY
Definition Enemy.h:48
EnemyFumiProc mFumiProc
Definition Enemy.h:489
Angle applyWaterRollDec(Angle ang)
EnemyChibiYoshiAwaData mChibiYoshiAwaData
Definition Enemy.h:487
virtual void setDeathInfo_IceBreak()
~Enemy() override=default
virtual void setAwaInvalid(Actor *awa)
virtual bool enemyDamageCheck(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
void setDeathInfo_Fall(DirType direction, s32 player_no=-1, ScoreMgr::ScoreType score_type=ScoreMgr::cScoreType_Invalid)
virtual void mamefumiEffect(Actor *)
static void normal_collcheck(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
bool preExecute() override
Callback invoked before the execute operation.
static const s32 cNoHitPlayerTimerDefault
Definition Enemy.h:81
virtual bool hitCallback_YoshiFire(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
static const s8 cEnMuki[cDirType_NumX]
Maps a 2D direction to a sign multiplier (1 or -1).
Definition Enemy.h:79
virtual bool hitCallback_HipAttk(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
virtual bool hitCallback_Ice(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
virtual void fumiJumpSet(Actor *)
virtual bool hitCallback_Fire(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
Enemy(const ActorCreateParam ¶m)
u32 _1870
Definition Enemy.h:493
virtual void setDeathSound_HipAttk()
void spinFumiScoreSet(Actor *)
virtual bool hitCallback_AttackUnk25(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
static const f32 cFumiJumpSpeed
Definition Enemy.h:42
void changeState(const StateID &state_id) override
virtual void hitYoshiEat(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
void setDeathInfo_FumiOther(Actor *player, const sead::Vector2f &speed)
Definition Enemy.h:416
EnFlag
Definition Enemy.h:104
@ cEnFlag_16
Definition Enemy.h:107
@ cEnFlag_Shell
Definition Enemy.h:105
@ cEnFlag_NoCeilCheckPlayer
Definition Enemy.h:108
@ cEnFlag_Carry
Definition Enemy.h:106
s8 _187e
Definition Enemy.h:499
virtual void setAwaHit(Actor *awa)
virtual void mamefumiSE()
virtual bool isQuakeDamage()
static const f32 cDieFallMaxFallSpeed
Definition Enemy.h:50
void spinFumiJumpSet(Actor *actor)
Definition Enemy.h:471
virtual bool hitCallback_PenguinSlide(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
virtual bool checkComboClap(s32 combo_cnt)
virtual void awaCatchMove(Actor *awa)
virtual void spinfumiSE(Actor *)
virtual void mameFumiJumpSet(Actor *)
virtual bool chibiYoshiDamageCheck(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
bool setTouchDrcDamage_(const sead::Vector2f &pos) override
static void iceballInvalid(ActorCollisionCheck *cc_other)
virtual bool hitCallback_YoshiBullet(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
virtual void fumiEffect(Actor *)
static const Angle cBaseAngleY[cDirType_NumX]
Maps a 2D direction to a "facing" Y-angle.
Definition Enemy.h:63
virtual void vsEnemyHitCheck_Normal(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
virtual bool hitCallback_YoshiHipAttk(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
virtual void calcMdl_Base()
virtual bool hitCallback_Cannon(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
virtual void setDeathInfo_Quake(s32)
void setDeathInfo_Fumi(Actor *player, const sead::Vector2f &speed, const StateID &state_id)
void setDeathInfo_Fumi(Actor *player, const sead::Vector2f &speed)
Definition Enemy.h:406
u8 _187d
Definition Enemy.h:498
u8 mDieFallDirection
Definition Enemy.h:494
virtual bool hitCallback_Star(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
virtual bool createIceActor()
Callback for spawning ice blocks when frozen by an ice flower.
void blockHitInit_() override
virtual bool etcDamageCheck(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
void setDeathInfo_SpinFumi(Actor *)
void setDeathInfo_Fall(const sead::Vector2f *speeds, DirType direction, s32 player_no=-1, ScoreMgr::ScoreType score_type=ScoreMgr::cScoreType_Invalid)
static const f32 cDefaultMaxFallSpeed
Definition Enemy.h:46
void fumistepSE(Actor *)
Definition Enemy.h:461
virtual bool setDamage(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
virtual bool hitCallback_WireNet(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other)
void setSmokeDamage_(Actor *) override
void bound(f32, f32, f32)
virtual void yoshiFumiScoreSet(Actor *)
FumiType
Defines the classification of player-enemy stomp and collision interactions.
Definition Enemy.h:89
@ cFumiType_MameFumi
Mini Stomp: Jumping onto the enemy as Mini ("Mame") Mario. Also includes Mini Mario's spin-jump.
Definition Enemy.h:92
@ cFumiType_Hit
Lateral Impact: Moving into the enemy (also includes penguin slides & slope slides).
Definition Enemy.h:90
@ cFumiType_Fumi
Standard Stomp: Jumping onto the enemy (e.g. normal jumps, ground pounds).
Definition Enemy.h:91
@ cFumiType_SpinFumi
Spin Stomp: Spin-jumping onto the enemy. Also includes Propeller Mario drills.
Definition Enemy.h:93
virtual void setDeathSound_Fire()
void setDeathInfo_YoshiFumi(Actor *)
virtual void fumiScoreSet(Actor *)
UniqueFumiCheckInf * fumi_check_inf
Definition Enemy.h:19
u8 _8
Definition Enemy.h:20
Enemy * enemy
Definition Enemy.h:18
EnemyFumiCheck fumi_check
Definition Enemy.h:26