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>
16static_assert(
sizeof(BossDrcTouchCB) ==
sizeof(ActorCollisionDrcTouchCallback));
22 SEAD_RTTI_OVERRIDE(
Boss, Enemy)
38 AttentionMgr::instance()->release(mAttentionLookat);
39 ActorCollisionCheckMgr::instance()->release(mCollisionCheckDrcTouch);
40 return cResult_Success;
45 ActorCollisionCheckMgr::instance()->release(mCollisionCheck);
46 ActorCollisionCheckMgr::instance()->release(mCollisionCheckDrcTouch);
51 ActorCollisionCheckMgr::instance()->entry(mCollisionCheck);
52 ActorCollisionCheckMgr::instance()->entry(mCollisionCheckDrcTouch);
58 void getBox_(sead::BoundBox2f& box)
override
61 mPos.x - 48.0f, mPos.y,
62 mPos.x + 48.0f, mPos.y + 96.0f
81 bool hitCallback_Star(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other)
override;
83 bool hitCallback_Slip(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other)
override
89 bool hitCallback_Spin(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other)
override;
103 bool hitCallback_Fire(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other)
override;
105 bool hitCallback_Ice(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other)
override;
128 DECLARE_STATE_VIRTUAL_ID_OVERRIDE(
Boss, DieFumi)
188 return !mIceMgr.hasIce();
194 mIcePos.y = mPos.y - 2.5f;
197 mIceScale.set(40.0f, 48.0f, 40.0f);
273 createCoinBattleSmallScore_(actor, mPos, 3);
278 createCoinBattleSmallScore_(actor, mPos, 4);
293 changeState(StateID_DieFumi);
302 changeState(StateID_DieFire);
307 setFumiDamage(actor);
323 changeState(StateID_DieSlide);
334 changeState(StateID_DieStar);
343 changeState(StateID_DieQuake);
352 changeState(StateID_DieShell);
441 mAudioObj.startSound(
"SE_BOSS_CMN_STOMPED", mAudioObjSeqVar);
446 mAudioObj.startSound(
"SE_BOSS_CMN_STOMPED_LAST1", mAudioObjSeqVar);
452 mAudioObj.startSound(
"SE_BOSS_CMN_DAMAGE_STAR_DEF", mAudioObjSeqVar);
457 mAudioObj.startSound(
"SE_BOSS_CMN_DAMAGE_STAR_LAST", mAudioObjSeqVar);
463 mAudioObj.startSound(
"SE_BOSS_CMN_DAMAGE_DEF", mAudioObjSeqVar);
468 mAudioObj.startSound(
"SE_BOSS_CMN_DAMAGE_LAST", mAudioObjSeqVar);
473 if (life_IsDmgSection())
474 mAudioObj.startSound(
"SE_BOSS_CMN_DAMAGE_FIRE_DEF", mAudioObjSeqVar);
476 mAudioObj.startSound(
"SE_BOSS_CMN_DAMAGE_FIRE", mAudioObjSeqVar);
481 mAudioObj.startSound(
"SE_BOSS_CMN_DAMAGE_LAST_F_MODE", mAudioObjSeqVar);
482 mAudioObj.startSound(
"SE_BOSS_CMN_DAMAGE_FIRE_LAST", mAudioObjSeqVar);
487 if (life_IsDmgSection())
488 mAudioObj.startSound(
"SE_BOSS_CMN_DAMAGE_FIRE_DEF", mAudioObjSeqVar, nw::snd::OUTPUT_LINE_MAIN | nw::snd::OUTPUT_LINE_DRC);
490 mAudioObj.startSound(
"SE_BOSS_CMN_DAMAGE_FIRE", mAudioObjSeqVar, nw::snd::OUTPUT_LINE_MAIN | nw::snd::OUTPUT_LINE_DRC);
495 mAudioObj.startSound(
"SE_BOSS_CMN_DAMAGE_LAST_F_MODE", mAudioObjSeqVar);
496 mAudioObj.startSound(
"SE_BOSS_CMN_DAMAGE_FIRE_LAST", mAudioObjSeqVar, nw::snd::OUTPUT_LINE_MAIN | nw::snd::OUTPUT_LINE_DRC);
501 mAudioObj.startSound(
"SE_BOSS_CMN_DAMAGE_STAR_DEF", mAudioObjSeqVar);
506 mAudioObj.startSound(
"SE_BOSS_CMN_DAMAGE_LAST_F_MODE", mAudioObjSeqVar);
525 mAttentionLookat.getPos().set(
526 mPos.x + mCenterOffset.x,
527 mPos.y + mCenterOffset.y
587static_assert(
sizeof(
Boss) == 0x1B78);
bool ccSetTouchNormal(ActorCollisionCheck *cc, const sead::Vector2f &pos) override
bool mIsShock
Definition Boss.h:566
virtual void firedmgSE()
Definition Boss.h:471
virtual s32 life_GetDamage_Shell() const =0
virtual void damageLVo()
Definition Boss.h:519
u32 mStateTimer_PreIce
Definition Boss.h:584
virtual void setBlockHitDead()
Definition Boss.h:361
virtual bool life_IsTwoDamage() const
Definition Boss.h:215
virtual void damageProc()
Definition Boss.h:371
virtual void setHipatkDamage(Actor *actor)
Definition Boss.h:305
virtual bool isFumiInvalid() const
Definition Boss.h:380
virtual void stardmgSE()
Definition Boss.h:450
bool hitCallback_Spin(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
virtual void vf7EC()
Definition Boss.h:545
virtual void setSlideDamage(Actor *actor)
Definition Boss.h:316
void getBox_(sead::BoundBox2f &box) override
Definition Boss.h:58
virtual void onFreeze()
Definition Boss.h:191
virtual void tenmetsuProc()
Definition Boss.h:247
void removeCollisionCheck() override
Definition Boss.h:43
void postExecute(MainState state) override
Callback invoked unconditionally after the execute phase completes. It executes even if preExecute() ...
virtual void setQuakeDamage()
Definition Boss.h:337
bool hitCallback_Fire(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
virtual void fumideadSE()
Definition Boss.h:444
virtual void quakedeadSE()
Definition Boss.h:504
bool hitCallback_HipAttk(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
virtual void hitFireEffect()
Definition Boss.h:426
bool hitCallback_Star(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
virtual void setStarDead(Actor *actor)
Definition Boss.h:332
virtual void setFumiDamage(Actor *actor)
Definition Boss.h:287
virtual void shelldmgSE()
Definition Boss.h:461
virtual void setBlockHitDamage()
Definition Boss.h:356
bool isQuakeDamage() override
virtual bool life_IsDmgSection() const
Definition Boss.h:220
virtual void tenmetsuReady()
Definition Boss.h:243
virtual s32 getTenmetsuTime_Shell()
Definition Boss.h:261
virtual void calcModel()
Definition Boss.h:541
ActorCollisionCheck mCollisionCheckDrcTouch
Definition Boss.h:576
bool hitCallback_WireNet(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
Definition Boss.h:91
virtual void firedeadSE()
Definition Boss.h:479
virtual bool isFreezeable() const
Definition Boss.h:186
virtual bool isShellInvalid() const
Definition Boss.h:407
virtual void setShellDamage(Actor *actor)
Definition Boss.h:346
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:83
void createCoinBattleSmallScore_(Actor *actor, const sead::Vector3f &pos, u32 type) const
s16 mAudioObjSeqVar
Definition Boss.h:573
virtual s32 life_GetDamage_Star() const =0
virtual void fumiDeadVo()
Definition Boss.h:509
virtual bool isFumiDmgInvalid() const
Definition Boss.h:385
bool createIceActor() override
Callback for spawning ice blocks when frozen by an ice flower.
virtual void setFireDead(Actor *actor)
Definition Boss.h:300
sead::Vector3f mSpeed_PreIce
Definition Boss.h:581
s32 mLifeHP
Definition Boss.h:563
virtual u32 vf6D4()
Definition Boss.h:366
virtual void tenmetsuFin()
Definition Boss.h:251
virtual bool isStarInvalid() const
Definition Boss.h:413
virtual void createCBSmallScoreDead(Actor *actor) const
Definition Boss.h:276
AttentionLookat mAttentionLookat
Definition Boss.h:574
sead::Vector3f mIceScale
Definition Boss.h:579
BossDrcTouchCB mDrcTouchCallback
Definition Boss.h:577
virtual void life_DamageRev(s32 damage)
Definition Boss.h:225
virtual void vf7F4()
Definition Boss.h:549
bool preExecute() override
Callback invoked before the execute operation.
f32 mGravity_PreIce
Definition Boss.h:582
sead::SafeArray< s32, cPlayerNum > _1890
Definition Boss.h:571
virtual void calcLookatPos()
Definition Boss.h:523
void calcMdl_Base() override
Definition Boss.h:71
virtual void createCBSmallScoreDamage(Actor *actor) const
Definition Boss.h:271
void reviveCollisionCheck() override
Definition Boss.h:49
f32 mPow_PreIce
Definition Boss.h:583
virtual void iceBreak()
Definition Boss.h:179
virtual void setShellDead(Actor *actor)
Definition Boss.h:350
bool hitCallback_Shell(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
EnemyBoyoMgr mBoyoMgr
Definition Boss.h:575
void setDeathInfo_IceBreak() override
Definition Boss.h:110
virtual void hitShellEffect()
Definition Boss.h:431
virtual s32 life_GetDamage_PenguinSlide() const =0
bool setTouchDrcDamage_(const sead::Vector3f &pos) override
virtual void setFireDamage(Actor *actor)
Definition Boss.h:296
virtual void setQuakeDead()
Definition Boss.h:341
virtual bool life_IsNonDamage() const
Definition Boss.h:203
virtual void setStarDamage(Actor *actor)
Definition Boss.h:327
virtual s32 life_GetDamage_HipAtk() const =0
virtual void fumiProc(Actor *)
virtual bool isFireInvalid() const
Definition Boss.h:395
virtual void setSlideDead(Actor *actor)
Definition Boss.h:321
bool hitCallback_Ice(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
virtual bool life_IsOneDamage() const
Definition Boss.h:209
Result create() override
Main initialization/setup callback for the actor.
s32 _1888
Definition Boss.h:565
virtual void setHipatkDead(Actor *actor)
Definition Boss.h:310
virtual void deadAllKill()
void vsYoshiHitCheck_Normal(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
virtual void fumidmgEffect()
Definition Boss.h:422
virtual s32 life_GetDamage_Fumi() const =0
virtual bool isSlideInvalid() const
Definition Boss.h:401
virtual void vf57C()
Definition Boss.h:174
virtual s32 life_GetDamage_Quake() const =0
virtual void stardeadSE()
Definition Boss.h:455
virtual void createModel()
Definition Boss.h:537
virtual bool isIceInvalid() const
Definition Boss.h:390
virtual void shelldeadSE()
Definition Boss.h:466
virtual void setFumiDead(Actor *actor)
Definition Boss.h:291
GameAudio::AudioObjctEmy mAudioObj
Definition Boss.h:572
void fumiScoreSet(Actor *) override
Definition Boss.h:120
virtual void firedeadSE_Drc()
Definition Boss.h:493
virtual void damageSVo()
Definition Boss.h:514
void vsPlayerHitCheck_Normal(ActorCollisionCheck *cc_self, ActorCollisionCheck *cc_other) override
bool mIsDemoWait
Definition Boss.h:567
sead::Vector3f mIcePos
Definition Boss.h:578
virtual void fumidmgSE()
Definition Boss.h:439
virtual void firedmgSE_Drc()
Definition Boss.h:485
virtual void quakedmgSE()
Definition Boss.h:499
void setDeathInfo_Quake(QuakeDeathType type) override
sead::Vector3f mPos_PreIce
Definition Boss.h:580
virtual s32 life_GetDamage_BlockHit() const =0
virtual s32 getTenmetsuTime_Press()
Definition Boss.h:266
virtual bool createInit()
Definition Boss.h:553
virtual void fumideadEffect()
Definition Boss.h:418
void returnState_Ice() override
virtual void deadProc()
Definition Boss.h:375
virtual void vf744()
Definition Boss.h:435
s32 _1884
Definition Boss.h:564
virtual s32 getTenmetsuTime_Fire()
Definition Boss.h:255
Result doDelete() override
Main deletion callback for the actor.
Definition Boss.h:36
u32 mStateSubTimer_PreIce
Definition Boss.h:585