3#include <actor/AttentionMgr.h>
4#include <collision/ActorCollisionCheckMgr.h>
5#include <collision/ActorCollisionDrcTouchCallback.h>
6#include <enemy/Enemy.h>
7#include <enemy/EnemyBoyoMgr.h>
8#include <player/PlayerEnum.h>
17static_assert(
sizeof(BossDrcTouchCB) ==
sizeof(ActorCollisionDrcTouchCallback));
24 SEAD_RTTI_OVERRIDE(
Boss, Enemy)
40 AttentionMgr::instance()->release(mAttentionLookat);
41 ActorCollisionCheckMgr::instance()->release(mCollisionCheckDrcTouch);
42 return cResult_Success;
47 ActorCollisionCheckMgr::instance()->release(mCollisionCheck);
48 ActorCollisionCheckMgr::instance()->release(mCollisionCheckDrcTouch);
53 ActorCollisionCheckMgr::instance()->entry(mCollisionCheck);
54 ActorCollisionCheckMgr::instance()->entry(mCollisionCheckDrcTouch);
60 void getBox_(sead::BoundBox2f& box)
override
63 mPos.x - 48.0f, mPos.y,
64 mPos.x + 48.0f, mPos.y + 96.0f
83 bool hitCallback_Star(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other)
override;
85 bool hitCallback_Slip(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other)
override
91 bool hitCallback_Spin(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other)
override;
105 bool hitCallback_Fire(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other)
override;
107 bool hitCallback_Ice(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other)
override;
130 DECLARE_STATE_VIRTUAL_ID_OVERRIDE(
Boss, DieFumi)
190 return !mIceMgr.hasIce();
196 mIcePos.y = mPos.y - 2.5f;
199 mIceScale.set(40.0f, 48.0f, 40.0f);
275 createCoinBattleSmallScore_(actor, mPos, 3);
280 createCoinBattleSmallScore_(actor, mPos, 4);
295 changeState(StateID_DieFumi);
304 changeState(StateID_DieFire);
309 setFumiDamage(actor);
325 changeState(StateID_DieSlide);
336 changeState(StateID_DieStar);
345 changeState(StateID_DieQuake);
354 changeState(StateID_DieShell);
443 mAudioObj.startSound(
"SE_BOSS_CMN_STOMPED", mAudioObjSeqVar);
448 mAudioObj.startSound(
"SE_BOSS_CMN_STOMPED_LAST1", mAudioObjSeqVar);
454 mAudioObj.startSound(
"SE_BOSS_CMN_DAMAGE_STAR_DEF", mAudioObjSeqVar);
459 mAudioObj.startSound(
"SE_BOSS_CMN_DAMAGE_STAR_LAST", mAudioObjSeqVar);
465 mAudioObj.startSound(
"SE_BOSS_CMN_DAMAGE_DEF", mAudioObjSeqVar);
470 mAudioObj.startSound(
"SE_BOSS_CMN_DAMAGE_LAST", mAudioObjSeqVar);
475 if (life_IsDmgSection())
476 mAudioObj.startSound(
"SE_BOSS_CMN_DAMAGE_FIRE_DEF", mAudioObjSeqVar);
478 mAudioObj.startSound(
"SE_BOSS_CMN_DAMAGE_FIRE", mAudioObjSeqVar);
483 mAudioObj.startSound(
"SE_BOSS_CMN_DAMAGE_LAST_F_MODE", mAudioObjSeqVar);
484 mAudioObj.startSound(
"SE_BOSS_CMN_DAMAGE_FIRE_LAST", mAudioObjSeqVar);
489 if (life_IsDmgSection())
490 mAudioObj.startSound(
"SE_BOSS_CMN_DAMAGE_FIRE_DEF", mAudioObjSeqVar, nw::snd::OUTPUT_LINE_MAIN | nw::snd::OUTPUT_LINE_DRC);
492 mAudioObj.startSound(
"SE_BOSS_CMN_DAMAGE_FIRE", mAudioObjSeqVar, nw::snd::OUTPUT_LINE_MAIN | nw::snd::OUTPUT_LINE_DRC);
497 mAudioObj.startSound(
"SE_BOSS_CMN_DAMAGE_LAST_F_MODE", mAudioObjSeqVar);
498 mAudioObj.startSound(
"SE_BOSS_CMN_DAMAGE_FIRE_LAST", mAudioObjSeqVar, nw::snd::OUTPUT_LINE_MAIN | nw::snd::OUTPUT_LINE_DRC);
503 mAudioObj.startSound(
"SE_BOSS_CMN_DAMAGE_STAR_DEF", mAudioObjSeqVar);
508 mAudioObj.startSound(
"SE_BOSS_CMN_DAMAGE_LAST_F_MODE", mAudioObjSeqVar);
527 mAttentionLookat.getPos().set(
528 mPos.x + mCenterOffset.x,
529 mPos.y + mCenterOffset.y
589static_assert(
sizeof(
Boss) == 0x1B78);
bool ccSetTouchNormal(ActorCollisionCheck *cc, const sead::Vector2f &pos) override
bool mIsShock
Definition Boss.h:568
virtual void firedmgSE()
Definition Boss.h:473
virtual s32 life_GetDamage_Shell() const =0
virtual void damageLVo()
Definition Boss.h:521
u32 mStateTimer_PreIce
Definition Boss.h:586
virtual void setBlockHitDead()
Definition Boss.h:363
virtual bool life_IsTwoDamage() const
Definition Boss.h:217
virtual void damageProc()
Definition Boss.h:373
virtual void setHipatkDamage(Actor *actor)
Definition Boss.h:307
virtual bool isFumiInvalid() const
Definition Boss.h:382
virtual void stardmgSE()
Definition Boss.h:452
bool hitCallback_Spin(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
virtual void vf7EC()
Definition Boss.h:547
virtual void setSlideDamage(Actor *actor)
Definition Boss.h:318
void getBox_(sead::BoundBox2f &box) override
Definition Boss.h:60
virtual void onFreeze()
Definition Boss.h:193
virtual void tenmetsuProc()
Definition Boss.h:249
void removeCollisionCheck() override
Definition Boss.h:45
void postExecute(MainState state) override
Callback invoked unconditionally after the execute phase completes. It executes even if preExecute() ...
virtual void setQuakeDamage()
Definition Boss.h:339
bool hitCallback_Fire(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
virtual void fumideadSE()
Definition Boss.h:446
virtual void quakedeadSE()
Definition Boss.h:506
bool hitCallback_HipAttk(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
virtual void hitFireEffect()
Definition Boss.h:428
bool hitCallback_Star(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
virtual void setStarDead(Actor *actor)
Definition Boss.h:334
virtual void setFumiDamage(Actor *actor)
Definition Boss.h:289
virtual void shelldmgSE()
Definition Boss.h:463
virtual void setBlockHitDamage()
Definition Boss.h:358
bool isQuakeDamage() override
virtual bool life_IsDmgSection() const
Definition Boss.h:222
virtual void tenmetsuReady()
Definition Boss.h:245
virtual s32 getTenmetsuTime_Shell()
Definition Boss.h:263
virtual void calcModel()
Definition Boss.h:543
ActorCollisionCheck mCollisionCheckDrcTouch
Definition Boss.h:578
bool hitCallback_WireNet(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
Definition Boss.h:93
virtual void firedeadSE()
Definition Boss.h:481
virtual bool isFreezeable() const
Definition Boss.h:188
virtual bool isShellInvalid() const
Definition Boss.h:409
virtual void setShellDamage(Actor *actor)
Definition Boss.h:348
virtual void initCcDrcTouch()
virtual s32 life_GetDamage_Fire() const =0
bool hitCallback_PenguinSlide(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
bool hitCallback_Slip(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
Definition Boss.h:85
void createCoinBattleSmallScore_(Actor *actor, const sead::Vector3f &pos, u32 type) const
s16 mAudioObjSeqVar
Definition Boss.h:575
virtual s32 life_GetDamage_Star() const =0
virtual void fumiDeadVo()
Definition Boss.h:511
virtual bool isFumiDmgInvalid() const
Definition Boss.h:387
bool createIceActor() override
Callback for spawning ice blocks when frozen by an ice flower.
virtual void setFireDead(Actor *actor)
Definition Boss.h:302
sead::Vector3f mSpeed_PreIce
Definition Boss.h:583
s32 mLifeHP
Definition Boss.h:565
virtual u32 vf6D4()
Definition Boss.h:368
virtual void tenmetsuFin()
Definition Boss.h:253
virtual bool isStarInvalid() const
Definition Boss.h:415
virtual void createCBSmallScoreDead(Actor *actor) const
Definition Boss.h:278
sead::Vector3f mIceScale
Definition Boss.h:581
BossDrcTouchCB mDrcTouchCallback
Definition Boss.h:579
virtual void life_DamageRev(s32 damage)
Definition Boss.h:227
virtual void vf7F4()
Definition Boss.h:551
bool preExecute() override
Callback invoked before the execute operation.
f32 mGravity_PreIce
Definition Boss.h:584
sead::SafeArray< s32, cPlayerNum > _1890
Definition Boss.h:573
virtual void calcLookatPos()
Definition Boss.h:525
void calcMdl_Base() override
Definition Boss.h:73
virtual void createCBSmallScoreDamage(Actor *actor) const
Definition Boss.h:273
void reviveCollisionCheck() override
Definition Boss.h:51
f32 mPow_PreIce
Definition Boss.h:585
virtual void iceBreak()
Definition Boss.h:181
virtual void setShellDead(Actor *actor)
Definition Boss.h:352
bool hitCallback_Shell(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
EnemyBoyoMgr mBoyoMgr
Definition Boss.h:577
void setDeathInfo_IceBreak() override
Definition Boss.h:112
virtual void hitShellEffect()
Definition Boss.h:433
virtual s32 life_GetDamage_PenguinSlide() const =0
bool setTouchDrcDamage_(const sead::Vector3f &pos) override
virtual void setFireDamage(Actor *actor)
Definition Boss.h:298
virtual void setQuakeDead()
Definition Boss.h:343
virtual bool life_IsNonDamage() const
Definition Boss.h:205
virtual void setStarDamage(Actor *actor)
Definition Boss.h:329
virtual s32 life_GetDamage_HipAtk() const =0
virtual void fumiProc(Actor *)
virtual bool isFireInvalid() const
Definition Boss.h:397
virtual void setSlideDead(Actor *actor)
Definition Boss.h:323
bool hitCallback_Ice(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
virtual bool life_IsOneDamage() const
Definition Boss.h:211
Result create() override
Main initialization/setup callback for the actor.
s32 _1888
Definition Boss.h:567
virtual void setHipatkDead(Actor *actor)
Definition Boss.h:312
virtual void deadAllKill()
void vsYoshiHitCheck_Normal(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
virtual void fumidmgEffect()
Definition Boss.h:424
virtual s32 life_GetDamage_Fumi() const =0
virtual bool isSlideInvalid() const
Definition Boss.h:403
virtual void vf57C()
Definition Boss.h:176
virtual s32 life_GetDamage_Quake() const =0
virtual void stardeadSE()
Definition Boss.h:457
virtual void createModel()
Definition Boss.h:539
AttentionInfo mAttentionLookat
Definition Boss.h:576
virtual bool isIceInvalid() const
Definition Boss.h:392
virtual void shelldeadSE()
Definition Boss.h:468
virtual void setFumiDead(Actor *actor)
Definition Boss.h:293
GameAudio::AudioObjctEmy mAudioObj
Definition Boss.h:574
void fumiScoreSet(Actor *) override
Definition Boss.h:122
virtual void firedeadSE_Drc()
Definition Boss.h:495
virtual void damageSVo()
Definition Boss.h:516
void vsPlayerHitCheck_Normal(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
bool mIsDemoWait
Definition Boss.h:569
sead::Vector3f mIcePos
Definition Boss.h:580
virtual void fumidmgSE()
Definition Boss.h:441
virtual void firedmgSE_Drc()
Definition Boss.h:487
virtual void quakedmgSE()
Definition Boss.h:501
void setDeathInfo_Quake(QuakeDeathType type) override
sead::Vector3f mPos_PreIce
Definition Boss.h:582
virtual s32 life_GetDamage_BlockHit() const =0
virtual s32 getTenmetsuTime_Press()
Definition Boss.h:268
virtual bool createInit()
Definition Boss.h:555
virtual void fumideadEffect()
Definition Boss.h:420
void returnState_Ice() override
virtual void deadProc()
Definition Boss.h:377
virtual void vf744()
Definition Boss.h:437
s32 _1884
Definition Boss.h:566
virtual s32 getTenmetsuTime_Fire()
Definition Boss.h:257
Result doDelete() override
Definition Boss.h:38
u32 mStateSubTimer_PreIce
Definition Boss.h:587