3#include <game/bases/d_actor_state.hpp>
4#include <game/bases/d_en_boyo_manager.hpp>
5#include <game/bases/d_en_combo.hpp>
6#include <game/bases/d_en_fumi_check.hpp>
7#include <game/bases/d_ice_manager.hpp>
26 dDeathInfo_c() : mIsDead(
false) {}
30 mSpeed.set(other.mXSpeed, other.mYSpeed);
31 mMaxYSpeed = other.mMaxYSpeed;
32 mYAccel = other.mYAccel;
33 mDeathState = other.mDeathState;
34 mScore = other.mScore;
36 mDirection = other.mDirection;
37 mKilledBy = other.mKilledBy;
41 float getXSpeed()
const {
45 float getYSpeed()
const {
49 float getMaxYSpeed()
const {
53 float getYAccel()
const {
75 void update(
int idx) {
76 if (mTimer[idx] != 0) {
81 u16 mTimer[PLAYER_COUNT];
92 EN_IS_SHELL = BIT_FLAG(0),
93 EN_IS_HARD = BIT_FLAG(1),
94 EN_FLAG_16 = BIT_FLAG(16),
95 EN_FLAG_24 = BIT_FLAG(24)
123 virtual bool EnDamageCheck(
dCc_c *self,
dCc_c *other);
124 virtual bool PlDamageCheck(
dCc_c *self,
dCc_c *other);
125 virtual bool YoshiDamageCheck(
dCc_c *self,
dCc_c *other);
126 virtual bool EtcDamageCheck(
dCc_c *self,
dCc_c *other);
128 virtual void Normal_VsEnHitCheck(
dCc_c *self,
dCc_c *other);
129 virtual void Normal_VsPlHitCheck(
dCc_c *self,
dCc_c *other);
130 virtual void Normal_VsYoshiHitCheck(
dCc_c *self,
dCc_c *other);
132 virtual bool hitCallback_Star(
dCc_c *self,
dCc_c *other);
133 virtual bool hitCallback_Slip(
dCc_c *self,
dCc_c *other);
134 virtual bool hitCallback_Large(
dCc_c *self,
dCc_c *other);
135 virtual bool hitCallback_Spin(
dCc_c *self,
dCc_c *other);
136 virtual bool hitCallback_Rolling(
dCc_c *self,
dCc_c *other);
137 virtual bool hitCallback_WireNet(
dCc_c *self,
dCc_c *other);
138 virtual bool hitCallback_HipAttk(
dCc_c *self,
dCc_c *other);
139 virtual bool hitCallback_YoshiHipAttk(
dCc_c *self,
dCc_c *other);
140 virtual bool hitCallback_Screw(
dCc_c *self,
dCc_c *other);
141 virtual bool hitCallback_PenguinSlide(
dCc_c *self,
dCc_c *other);
142 virtual bool hitCallback_Cannon(
dCc_c *self,
dCc_c *other);
143 virtual bool hitCallback_Shell(
dCc_c *self,
dCc_c *other);
144 virtual bool hitCallback_Fire(
dCc_c *self,
dCc_c *other);
145 virtual bool hitCallback_Ice(
dCc_c *self,
dCc_c *other);
146 virtual bool hitCallback_YoshiBullet(
dCc_c *self,
dCc_c *other);
147 virtual bool hitCallback_YoshiFire(
dCc_c *self,
dCc_c *other);
149 virtual void setDeathInfo_Other(
dActor_c *killedBy);
150 virtual void setDeathInfo_Quake(
int);
151 virtual void setDeathInfo_IceBreak();
152 virtual void setDeathInfo_IceVanish();
153 void setDeathInfo_Smoke(
dActor_c *killedBy);
155 void setDeathInfo_YoshiFumi(
dActor_c *killedBy);
156 void setDeathInfo_SpinFumi(
dActor_c *killedBy,
int);
158 virtual bool isQuakeDamage();
159 virtual void hitYoshiEat(
dCc_c *self,
dCc_c *other);
161 virtual void setDeathSound_HipAttk();
162 virtual void setDeathSound_Fire();
163 virtual void setDeathSound_Slip(
dActor_c *actor);
164 virtual void setDeathSound_Spin();
165 virtual void setDeathSound_Rolling();
181 virtual void fumidamageEffect(
const mVec3_c &pos);
182 virtual void hipatkEffect(
const mVec3_c &pos);
183 virtual void fumidamageSE(
const mVec3_c &pos,
int);
187 virtual bool checkDispIn();
188 virtual void setWaterSpeed();
189 virtual void setDamage(
dActor_c *actor);
192 virtual void boyonBegin();
193 virtual void calcBoyonScale();
195 virtual bool createIceActor();
196 virtual void setIceAnm();
197 virtual void returnAnm_Ice();
198 virtual void returnState_Ice();
200 virtual void beginFunsui();
201 virtual void endFunsui();
202 virtual void isFunsui()
const;
206 virtual void FumiJumpSet(
dActor_c *actor);
207 virtual void FumiScoreSet(
dActor_c *actor);
208 virtual void MameFumiJumpSet(
dActor_c *actor);
209 virtual void YoshiFumiJumpSet(
dActor_c *actor);
210 virtual void YoshiFumiScoreSet(
dActor_c *actor);
211 void SpinFumiJumpSet(
dActor_c *actor);
212 void SpinFumiScoreSet(
dActor_c *actor);
213 virtual void fumiSE(
dActor_c *actor);
214 virtual void fumiEffect(
dActor_c *actor);
215 virtual void spinfumiSE(
dActor_c *actor);
216 virtual void spinfumiEffect(
dActor_c *actor);
217 virtual void mamefumiSE(
dActor_c *actor);
218 virtual void mamefumiEffect(
dActor_c *actor);
219 virtual void yoshifumiSE(
dActor_c *actor);
220 virtual void yoshifumiEffect(
dActor_c *actor);
222 void yoshifumistepSE(
dActor_c *actor);
223 void PlayerFumiJump(
dActor_c *actor,
float);
224 void setFumiComboScore(
dActor_c *actor);
228 void hitdamageEffect(
const mVec3_c &pos);
231 int Enfumi_check(
dCc_c *self,
dCc_c *other,
int step);
235 bool LineBoundaryCheck(
dActor_c *actor);
238 dBc_c::WATER_TYPE_e WaterLineProc(
const mVec3_c &pos,
float h);
239 bool EnLavaCheck(
const mVec3_c &pos);
240 bool EnWaterCheck(
const mVec3_c &pos);
241 bool EnWaterFlagCheck(
const mVec3_c &pos);
245 bool Area_X_check(
float x);
246 bool Area_XY_check(
float x,
float y);
248 bool PlayerCarryCheck(
dActor_c *actor);
251 void Bound(
float epsY,
float scaleX,
float scaleY);
254 bool turnangle_calc(
const short *target,
const short *delta);
256 void fireballInvalid(
dCc_c *self,
dCc_c *other);
257 void iceballInvalid(
dCc_c *self,
dCc_c *other);
259 void setNicePoint_Death();
260 void setDeadMode(
dActor_c *actor,
int);
263 static void normal_collcheck(
dCc_c *self,
dCc_c *other);
264 static bool CeilCheck(
float y,
dCc_c *cc);
266 int getIceMode()
const {
return 0; }
302 static const float smc_WATER_GRAVITY;
303 static const float smc_WATER_YMAXSPD;
304 static const float smc_WATER_FALLMAXSPD;
305 static const float smc_WATER_ROLL_DEC_RATE;
307 static const float smc_DEADFALL_GRAVITY;
308 static const float smc_DEADFALL_YSPEED;
309 static const float smc_DEADFALL_YSPEED_MAX;
310 static const s16 smc_DEADFALL_SPINSPEED;
316extern const s8 l_EnMuki[];
317extern const s16 l_base_angleY[];
318extern const s16 l_base_angleY_add[];
319extern const float l_base_fall_speed_x[];
dActorMultiState_c()
Constructs a new actor.
The minimum required implementation for a stage actor.
void posMove()
Moves the actor by its speed.
Collider ("Collision Check") class - handles collisions between actors.
static const u8 smc_UNKNOWN_HIT
An enemy actor. Note that the definition of "enemy" in this context is actually any interactible stag...
static const u16 smc_NO_HIT_PLAYER_TIMER_DEFAULT
float mAirMaxFallSpeed
The maximum fall speed before entering a liquid.
virtual ~dEn_c()
Destroys the actor.
u16 mTimer2
[Used in EN_HATENA_BALLON, for example]
bool getPl_LRflag(const mVec3_c &pos)
Checks whether the nearest player is to the left of pos.
u8 mDeathFallDirection
The X direction to move towards on death.
u8 mIceDeathDirection
The X direction to move towards on ice death.
void WaterCheck(mVec3_c &pos, float h)
virtual bool setEatSpitOut(dActor_c *)
Callback for when the actor is about to be spat out.
float mAirAccelY
The Y acceleration before entering a liquid.
dDeathInfo_c mDeathInfo
The parameters for the death animation.
virtual void postCreate(fBase_c::MAIN_STATE_e status)
post method for the create operation.
dIceMng_c mIceMng
The ice manager for this enemy.
dEnCombo_c mCombo
The enemy combo manager.
u16 mTimer1
[Used in EN_HATENA_BALLON, for example]
virtual void changeState(const sStateIDIf_c &newState)
Changes the actor's state to the given state.
dEn_c()
Constructs a new enemy actor.
static const u16 smc_NO_HIT_PLAYER_TIMER_SPIT_OUT
bool mKilledByLiquid
Whether the enemy was killed by falling in a liquid.
virtual void quakeAction()
virtual void setEatTongueOff(dActor_c *)
Callback for when the eating action is canceled.
virtual int preExecute()
pre method for the execute operation.
virtual void block_hit_init()
Callback for when a block directly beneath the actor is hit.
float mAirSpeedMaxY
The maximum Y speed before entering a liquid.
dPlayerDownTimer_c mNoHitPlayer
Hit cooldown timers for each player. This is used to prevent, for example, a thrown shell from hittin...
virtual void postExecute(fBase_c::MAIN_STATE_e status)
post method for the execute operation.
virtual void calcEatInScale(dActor_c *)
Adjusts the actor's scale while being eaten.
virtual void poisonSplashEffect(const mVec3_c &, float)
Generates a poison water splash effect.
virtual void setEatTongue(dActor_c *)
Callback for when the actor is targeted by Yoshi's tongue.
virtual void yoganSplashEffect(const mVec3_c &, float)
Generates a lava splash effect.
virtual int preDraw()
pre method for the draw operation.
u32 mFlags
Flags for this actor. See FLAGS_e.
bool getPl_UDflag(const mVec3_c &pos)
Checks whether the nearest player is below pos.
bool mInLiquid
Whether the enemy is in a liquid.
virtual bool checkComboClap(int max)
MAIN_STATE_e
The possible operation results.
A two-dimensional floating point vector.
A three-dimensional floating point vector.
The interface for state IDs.
#define STATE_VIRTUAL_FUNC_DECLARE(class, name)
Declares a virtual state.