New Super Mario Bros. U Headers
Loading...
Searching...
No Matches
Enemy.h
Go to the documentation of this file.
1#pragma once
2
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>
10
11// TODO: Move to own header
12class Enemy;
13
14struct UniqueFumiCheckInf;
15
17{
19 UniqueFumiCheckInf* fumi_check_inf;
21};
22static_assert(sizeof(EnemyFumiCheck) == 0xC);
23
28static_assert(sizeof(EnemyFumiProc) == 0xC);
29
31
32class Enemy : public ActorMultiState // vtbl Address: 0x1007209C
33{
34 // getRuntimeTypeInfoStatic()::typeInfo initialization guard variable Address: 0x101E9EEC
35 // getRuntimeTypeInfoStatic()::typeInfo Address: 0x101E9EF0
36 SEAD_RTTI_OVERRIDE(Enemy, ActorMultiState)
37
38public:
39 // Address: 0x10072064
41 // Address: 0x1007206C
42 static const f32 cFumiJumpSpeed;
43 // Address: 0x10072070
44 static const f32 cDefaultGravity;
45 // Address: 0x10072078
47 // Address: 0x10072EA8
48 static const f32 cDieFallInitSpeedY;
49 // Address: 0x10072EAC
51 // Address: 0x102010AC
52 static const f32 cDieFallGravity; // 1.3 * cDefaultGravity
53
54 /**
55 * @brief Maps a 2D direction to a "facing" Y-angle.
56 * @details Applies a slight rotational bias towards the camera that prevents the actor from facing perfectly perpendicular to the viewer.
57 * This ensures actors remain visually clear and recognizable when facing either direction.
58 * @warning Only indexable with `cDirType_Right` and `cDirType_Left`. Anything else is out of bounds.
59 * @endcode
60 * ---
61 * Address: 0x10200DD8
62 */
64
65 /**
66 * @brief Maps a 2D direction to a sign multiplier (`1` or `-1`).
67 * @details Useful for compacting ternaries for left/right->negative/positive into a multiplication operation.
68 * @code{.cpp}
69 * // Instead of branching:
70 * float speed = (mDirection == cDirType_Right) ? 2.0f : -2.0f;
71 * // Use multiplication:
72 * float speed = cEnMuki[mDirection] * 2.0f;
73 * @endcode
74 * @warning Only indexable with `cDirType_Right` and `cDirType_Left`. Anything else is out of bounds.
75 * @endcode
76 * ---
77 * Address: 0x10200DD8
78 */
79 static const s8 cEnMuki[cDirType_NumX];
80
81 static const s32 cNoHitPlayerTimerDefault = 5;
82
83public:
84 /**
85 * @brief Defines the classification of player-enemy stomp and collision interactions.
86 * @note "Fumi" (踏み) translates to "stomp" in Japanese.
87 */
89 {
90 cFumiType_Hit = 0, ///< **Lateral Impact:** Moving into the enemy (also includes penguin slides & slope slides).
91 cFumiType_Fumi, ///< **Standard Stomp:** Jumping onto the enemy (e.g. normal jumps, ground pounds).
92 cFumiType_MameFumi, ///< **Mini Stomp:** Jumping onto the enemy as Mini ("Mame") Mario. Also includes Mini Mario's spin-jump.
93 cFumiType_SpinFumi ///< **Spin Stomp:** Spin-jumping onto the enemy. Also includes Propeller Mario drills.
94 };
95
102
104 {
107 cEnFlag_16 = 1 << 16,
109 };
110
111public:
112 // Address: 0x02328494
113 Enemy(const ActorCreateParam& param);
114 ~Enemy() override = default;
115
116protected:
117 // Address: 0x02328644
119
120 // Address: 0x02328914
122
123 // Address: 0x0232DC88
124 void setSmokeDamage_(Actor*) override;
125 // Address: 0x0232E1A4
126 bool setTouchDrcDamage_(const sead::Vector2f& pos) override;
127
128public:
129 // Address: 0x02330404
130 void changeState(const StateID& state_id) override;
131
132 virtual bool vf18C() // is not carryable?
133 {
134 return false;
135 }
136
137 // Address: 0x02328B84
138 virtual bool setDamage(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other);
139
140 // Address: 0x0232910C
141 virtual bool checkComboClap(s32 combo_cnt);
142
143 /**
144 * @brief Callback for spawning ice blocks when frozen by an ice flower.
145 * @return Forward the return value of the `createIce()` method call.
146 * @details Implement this function by calling `mIceMgr.createIce()` with your custom `IceInfo`.
147 * @endcode
148 * ---
149 * Address: 0x023304F8
150 */
151 virtual bool createIceActor();
152 // Address: 0x023310BC
153 virtual void setIceAnm();
154 // Address: 0x023310C0
155 virtual void returnAnm_Ice();
156 // Address: 0x02330568
157 virtual void returnState_Ice();
158 // Address: 0x0232A858
159 virtual void calcMdl_Base();
160
161 // Address: 0x0232A85C
162 virtual bool vf1CC(); // Maybe related to the below?
163
164 // Address: 0x023291F8
166 // Address: 0x02329250
168 // Address: 0x02329520
169 virtual bool enemyPreDamageCheck(bool* dead, ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other);
170 // Address: 0x02329578
171 virtual void hitYoshiEat(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other);
172 // Address: 0x0232957C
174 // Address: 0x023296E8
176 // Address: 0x02329800
177 virtual bool etcDamageCheck(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other);
178
179 // Address: 0x023299F0
181 // Address: 0x023299F4
183 // Address: 0x02329A04
185 // Address: 0x02329A08
187
188 // Address: 0x0232CE84
190 // Address: 0x0232CF20
192 // Address: 0x0232D014
194 // Address: 0x0232D0E4
196 // Address: 0x0232D240
198 // Address: 0x0232D3B4
200 // Address: 0x0232D48C
202 // Address: 0x0232D49C
204 // Address: 0x0232D56C
205 virtual bool hitCallback_AttackUnk25(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other); // Player slip 2
206 // Address: 0x0232D57C
208 // Address: 0x0232D70C
210 // Address: 0x0232D7A4
211 virtual bool hitCallback_Ice(ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other);
212 // Address: 0x0232D824
214 // Address: 0x0232D938
216 // Address: 0x0232DA04
218 // Address: 0x0232DA0C
220 // Address: 0x0232DA14
222
223 // Address: 0x0232DA24
224 virtual bool hitCallback_AttackUnk27(bool* dead, ActorCollisionCheck* cc_self, ActorCollisionCheck* cc_other);
225
226 // Address: 0x0232DAF0
227 virtual void setDeathInfo_Quake(s32);
228 // Address: 0x0232DD48
229 virtual void setDeathInfo_IceBreak();
230 // Address: 0x0232E048
232
233 /**
234 * @return Enemy is on ground and can be damaged by quake (e.g. POW block).
235 * @endcode
236 * ---
237 * Address: 0x0232E2EC
238 */
239 virtual bool isQuakeDamage();
240
241 // Address: 0x0232E2F8
242 virtual void setDeathSound_Fire();
243 // Address: 0x0232E358
244 virtual void setDeathSound_HipAttk();
245
246 // Address: 0x02329EA4
247 virtual void fumiJumpSet(Actor*);
248 // Address: 0x02329FA8
249 virtual void fumiScoreSet(Actor*);
250
251 // Address: 0x02329FAC
252 virtual void yoshiFumiJumpSet(Actor*);
253 // Address: 0x02329FB0
254 virtual void yoshiFumiScoreSet(Actor*);
255
256 // Address: 0x02329FC0
257 virtual void mameFumiJumpSet(Actor*);
258
259 // Address: 0x0232A094
260 virtual void fumiSE(Actor*);
261 // Address: 0x0232A118
262 virtual void fumiEffect(Actor*);
263
264 // Address: 0x0232A1BC
265 virtual void spinfumiSE(Actor*);
266 // Address: 0x02329B20
267 void spinfumiEffect(Actor*); // No longer virtual...
268
269 // Address: 0x0232A240
270 virtual void mamefumiSE();
271 // Address: 0x0232A24C
272 virtual void mamefumiEffect(Actor*);
273
274 // Address: 0x0232A250
275 virtual void yoshifumiSE(Actor*);
276 // void yoshifumiEffect(Actor*); // Deleted from NSMBU
277
278 // Address: 0x0232A2D4
279 virtual void hipatkEffect(const sead::Vector3f& effect_pos);
280
281 // Address: 0x0232A2E4
282 virtual void vf34C(); // Adds 2.0f to y speed
283
284 /**
285 * @return Enemy is inside the camera view.
286 * @endcode
287 * ---
288 * Address: 0x0232A2FC
289 */
290 virtual bool checkDispIn();
291
292 // Address: 0x0232A364
293 virtual void setAwaHit(Actor* awa); // Callback for ChibiYoshiAwaData
294 // Address: 0x0232A418
295 virtual void awaCatchMove(Actor* awa); // ^^^
296 // Address: 0x0232A4CC
297 virtual void setAwaCatchEnd(Actor* awa); // ^^^
298 // Address: 0x0232A864
299 virtual void setAwaInvalid(Actor* awa); // ^^^
300
301 // ------------------------------------ EnemyDeath.cpp ------------------------------------ //
302
303 // StateID_DieFumi Address: 0x10200FB0
304 // initializeState_DieFumi Address: 0x0232E518
305 // executeState_DieFumi Address: 0x0232E5E8
306 // finalizeState_DieFumi Address: 0x0232EED0
307 DECLARE_STATE_VIRTUAL_ID_BASE(Enemy, DieFumi)
308 // StateID_DieFall Address: 0x10200FD4
309 // initializeState_DieFall Address: 0x0232E63C
310 // executeState_DieFall Address: 0x0232E640
311 // finalizeState_DieFall Address: 0x0232EED4
313 // StateID_DieYoshiFumi Address: 0x10200FF8
314 // initializeState_DieYoshiFumi Address: 0x0232E72C
315 // executeState_DieYoshiFumi Address: 0x0232E79C
316 // finalizeState_DieYoshiFumi Address: 0x0232EED8
318 // StateID_DieSmoke Address: 0x1020101C
319 // initializeState_DieSmoke Address: 0x0232E7A8
320 // executeState_DieSmoke Address: 0x0232E7B8
321 // finalizeState_DieSmoke Address: 0x0232EEDC
323 // StateID_DieIceVanish Address: 0x10201040
324 // initializeState_DieIceVanish Address: 0x0232E7C4
325 // executeState_DieIceVanish Address: 0x0232E7C8
326 // finalizeState_DieIceVanish Address: 0x0232EEE0
328 // StateID_DieOther Address: 0x10201064
329 // initializeState_DieOther Address: 0x0232E7D4
330 // executeState_DieOther Address: 0x0232EEE4
331 // finalizeState_DieOther Address: 0x0232EEE8
333 // StateID_DieAwa Address: 0x10201088
334 // initializeState_DieAwa Address: 0x0232E7E0
335 // executeState_DieAwa Address: 0x0232EEEC
336 // finalizeState_DieAwa Address: 0x0232EEF0
338
339 // ------------------------------------ EnemyState.cpp ------------------------------------ //
340
341 // StateID_EatIn Address: 0x1020111C
342 // initializeState_EatIn Address: 0x023305E4
343 // executeState_EatIn Address: 0x023305EC
344 // finalizeState_EatIn Address: 0x023310C4
346 // StateID_EatNow Address: 0x10201140
347 // initializeState_EatNow Address: 0x023310C8
348 // executeState_EatNow Address: 0x023310CC
349 // finalizeState_EatNow Address: 0x023310D0
351 // StateID_EatOut Address: 0x10201164
352 // initializeState_EatOut Address: 0x023310D4
353 // executeState_EatOut Address: 0x023310D8
354 // finalizeState_EatOut Address: 0x023310DC
356 // StateID_ChibiEatIn Address: 0x10201188
357 // initializeState_ChibiEatIn Address: 0x023306E8
358 // executeState_ChibiEatIn Address: 0x023306F0
359 // finalizeState_ChibiEatIn Address: 0x023310E0
361 // StateID_ChibiEatNow Address: 0x102011AC
362 // initializeState_ChibiEatNow Address: 0x023310E4
363 // executeState_ChibiEatNow Address: 0x023310E8
364 // finalizeState_ChibiEatNow Address: 0x023310EC
366 // StateID_ChibiEatOut Address: 0x102011D0
367 // initializeState_ChibiEatOut Address: 0x023310F0
368 // executeState_ChibiEatOut Address: 0x023310F4
369 // finalizeState_ChibiEatOut Address: 0x023310F8
371 // StateID_EnemyUnk1 Address: 0x102011F4
372 // initializeState_EnemyUnk1 Address: 0x023310FC
373 // executeState_EnemyUnk1 Address: 0x02331100
374 // finalizeState_EnemyUnk1 Address: 0x02331104
376 // StateID_Ice Address: 0x10201218
377 // initializeState_Ice Address: 0x02330720
378 // executeState_Ice Address: 0x023307A0
379 // finalizeState_Ice Address: 0x02330944
381
382 // ---------------------------------------------------------------------------------------- //
383
384 // Address: 0x02328C24
386
387 // Address: 0x02328C50
389
390 static void fireballInvalid(ActorCollisionCheck* cc_other) // Inline in NSMBU, but not NSMBW
391 {
392 GameAudio::getAudioObjMap()->startSound("SE_OBJ_FIREBALL_DISAPP", cc_other->getOwner()->getPos());
393 }
394
395 // Address: 0x02329A0C
396 static void iceballInvalid(ActorCollisionCheck* cc_other);
397
398 // Address: 0x0232CBA4
399 void setDeathInfo_Fall(DirType direction, s32 player_no = -1, ScoreMgr::ScoreType score_type = ScoreMgr::cScoreType_Invalid);
400 // Address: 0x0232CB08
401 void setDeathInfo_Fall(const sead::Vector2f* speeds, DirType direction, s32 player_no = -1, ScoreMgr::ScoreType score_type = ScoreMgr::cScoreType_Invalid);
402
403 // Address: 0x0232DA34
404 void setDeathInfo_Fumi(Actor* player, const sead::Vector2f& speed, const StateID& state_id);
405
406 void setDeathInfo_Fumi(Actor* player, const sead::Vector2f& speed)
407 {
408 setDeathInfo_Fumi(player, speed, StateID_DieFumi);
409 }
410
411 void setDeathInfo_FumiFall(Actor* player, const sead::Vector2f& speed)
412 {
413 setDeathInfo_Fumi(player, speed, StateID_DieFall);
414 }
415
416 void setDeathInfo_FumiOther(Actor* player, const sead::Vector2f& speed)
417 {
418 setDeathInfo_Fumi(player, speed, StateID_DieOther);
419 }
420
421 // Address: 0x0232CC98
423 // Address: 0x0232D31C
425
426 // Address: 0x02329AA8
427 void startSound(const char* name);
428
429 /**
430 * @brief Process a collision with a player and return which type occurred.
431 * @param se_type Which type of sounds/particles to play for this collision.
432 * @endcode
433 * ---
434 * Address: 0x02329B88
435 */
437
438 // Address: 0x02329130
439 s32 calcComboPlFumiCnt(Actor* player);
440
441 // Address: 0x02329168
442 void bound(f32, f32, f32);
443
444 // Address: 0x023291DC
446
447 // Address: 0x0232CAEC
448 bool isDead() const;
449
450 // Address: 0x023288BC
451 void hitdamageEffect(const sead::Vector3f& effect_pos);
452
453 // Address: 0x0232E144
455
456 void killIce()
457 {
458 mIceMgr.removeIce();
459 }
460
461 void fumistepSE(Actor*)
462 {
463 startSound("SE_EMY_CMN_STEP");
464 }
465
466 void yoshifumistepSE(Actor*)
467 {
468 startSound("SE_EMY_YOSHI_STEP");
469 }
470
471 void spinFumiJumpSet(Actor* actor)
472 {
473 fumiJumpSet(actor);
474 }
475
476 // Address: 0x02329B6C
477 void spinFumiScoreSet(Actor*);
478
479protected:
482 u16,
483 4
484 > mNoHitPlayerTimer; // TODO: This is actually a class ("EnemyCounter"?)
485 sead::BitFlag32 mEnFlag; // See EnFlag
488
490
500};
501static_assert(sizeof(Enemy) == 0x1880);
502
503#define ENEMY_MAKE_DEATH_INFO_ARG_FALL(arg_name)
504 EnemyDeathInfo::Arg arg_name = {
505 sead::Vector2f(),
506 0.0f,
507 0.0f,
508 &Enemy::StateID_DieFall,
509 -1,
510 0,
511 -1
512 }
Definition ActorCollisionCheck.h:22
Definition Enemy.h:33
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)
virtual void vf34C()
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
bool isDead() const
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 bool vf1CC()
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 &param)
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 void setIceAnm()
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
void calcMdl_Normal()
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 *)
Definition Enemy.h:17
UniqueFumiCheckInf * fumi_check_inf
Definition Enemy.h:19
u8 _8
Definition Enemy.h:20
Enemy * enemy
Definition Enemy.h:18
Definition Enemy.h:25
EnemyFumiCheck fumi_check
Definition Enemy.h:26