1#include <game/bases/d_actor.hpp>
2#include <game/bases/d_a_player_manager.hpp>
3#include <game/bases/d_a_yoshi.hpp>
4#include <game/bases/d_attention.hpp>
6#include <game/bases/d_bg.hpp>
7#include <game/bases/d_cd.hpp>
8#include <game/bases/d_eff_actor_manager.hpp>
9#include <game/bases/d_fukidashi_manager.hpp>
10#include <game/bases/d_game_com.hpp>
11#include <game/bases/d_info.hpp>
12#include <game/bases/d_multi_manager.hpp>
13#include <game/bases/d_s_stage.hpp>
14#include <game/bases/d_score_manager.hpp>
15#include <game/bases/d_SmallScore.hpp>
16#include <game/mLib/m_effect.hpp>
18#include <constants/sjis_constants.h>
62 dCdFile_c *file = dCd_c::m_instance->getFileP(dScStage_c::m_instance->mCurrFile);
126 mPos.x = dScStage_c::getLoopPosX(
mPos.x);
134 dAttention_c::mspInstance->entry(
mUniqueID);
136 m_1eb.set(0.0f, 0.0f);
159 return D_ACTOR_KIND_STRING;
201 dAcPy_c *closestPlayer =
nullptr;
202 float closestDist = 1e9;
203 for (
int i = 0; i < 4; i++) {
204 dAcPy_c *player = daPyMng_c::getPlayer(i);
205 if (player ==
nullptr || !daPyMng_c::checkPlayer(i)) {
211 float dist = xDiff * xDiff + yDiff * yDiff;
213 if (closestDist > dist) {
214 delta.set(xDiff, yDiff);
215 closestPlayer = player;
219 return closestPlayer;
223 dAcPy_c *closestPlayer =
nullptr;
225 float loopOffset = dBg_c::m_bg_p->mLoopOffset;
228 loopPos.x = dScStage_c::getLoopPosX(pos.x);
230 float closestDist = 1e9;
233 for (
int i = 0; i < 4; i++) {
234 if ((player = daPyMng_c::getPlayer(i)) ==
nullptr || !daPyMng_c::checkPlayer(i)) {
239 loopPlayerPos.x = dScStage_c::getLoopPosX(player->getCenterX());
240 loopPlayerPos.y = player->getCenterY();
243 adjDelta.x = loopPlayerPos.x - loopPos.x;
246 if (adjDelta.x < 0.0f) {
247 if (adjDelta.x < -loopOffset / 2) {
248 adjDelta.x += loopOffset;
251 if (adjDelta.x > loopOffset / 2) {
252 adjDelta.x -= loopOffset;
256 adjDelta.y = loopPlayerPos.y - loopPos.y;
258 float dist = adjDelta.x * adjDelta.x + adjDelta.y * adjDelta.y;
259 if (closestDist > dist) {
260 delta.set(adjDelta.x, adjDelta.y);
261 closestPlayer = player;
265 return closestPlayer;
286 float loopTrgX = dScStage_c::getLoopPosX(trgX);
287 float loopSrcX = dScStage_c::getLoopPosX(srcX);
288 float diffX = loopTrgX - loopSrcX;
290 float loopOffset = dBg_c::m_bg_p->mLoopOffset / 2;
292 return !(diffX < -loopOffset);
294 return diffX > loopOffset;
299 dScStage_c::changePos(pos);
303 dScStage_c::setChangePosFunc(loopType);
313 for (
int i = 0; i < 4; i++) {
314 dActor_c *player = daPyMng_c::getPlayer(i);
344 m3d::replaceLightMapTexture(
"lm_01i", mdl, 0);
345 m3d::replaceLightMapTexture(
"lm_02i", mdl, 0);
347 for (
size_t i = 0; i < resMdl.GetResMatNumEntries(); i++) {
351 mat.SetLightSetIdx(6);
361 if (spawnFlags ==
nullptr || deleteVal ==
nullptr) {
365 if (!deleteForever) {
366 if (spawnFlags !=
nullptr) {
370 if (spawnFlags !=
nullptr) {
373 if (deleteVal !=
nullptr) {
380 dCdFile_c *course = dCd_c::m_instance->getFileP(dScStage_c::m_instance->mCurrFile);
381 sAreaData *area = course->getAreaDataP(areaID,
nullptr);
382 if (area ==
nullptr) {
389 bt.x = pos.x + bound.mOffset.x - bound.mSize.x;
390 bt.y = pos.y + bound.mOffset.y + bound.mSize.y;
393 b.x -= area->mRangeData.mX;
394 b.y += area->mRangeData.mY;
396 mVec2_c doubleBoundSize = bound.getSize();
397 doubleBoundSize.x = 2.0f * doubleBoundSize.x;
398 doubleBoundSize.y = 2.0f * doubleBoundSize.y;
402 if (!(course->mpOptions->mFlags & sOptionData::WRAP_AROUND_EDGES)) {
403 if (b.x + doubleBoundSize.x < -maxBoundSize.x || b.x > area->mRangeData.mWidth + maxBoundSize.x) {
407 if (b.y - doubleBoundSize.y > maxBoundSize.y || b.y < -(area->mRangeData.mHeight + maxBoundSize.y)) {
429 bool outOfScreen =
false;
479 mVec3_c minTriggerPos(centerPos.x - fukidashiTriggerSize.x, centerPos.y - fukidashiTriggerSize.y,
mPos.z);
480 mVec3_c maxTriggerPos(centerPos.x + fukidashiTriggerSize.x, centerPos.y + fukidashiTriggerSize.y,
mPos.z);
489 if (player !=
nullptr) {
490 bool canDrawFukidashi = player->isDrawingCarryFukidashi();
495 dScStage_c::getLoopPosX(playerBoundBox.mOffset.x + player->
mPos.x),
496 playerBoundBox.mOffset.y + player->
mPos.y,
500 mVec3_c minPlayerPos(playerPos.x - playerBoundBox.mSize.x - 2.0f, playerPos.y - playerBoundBox.mSize.y, playerPos.z);
501 mVec3_c maxPlayerPos(playerPos.x + playerBoundBox.mSize.x + 2.0f, playerPos.y + playerBoundBox.mSize.y, playerPos.z);
508 if ((!canDrawFukidashi) || (!overlap)) {
516 if (player !=
nullptr) {
517 bool canDrawFukidashi = player->isDrawingCarryFukidashi();
522 dScStage_c::getLoopPosX(playerBoundBox.mOffset.x + player->
mPos.x),
523 playerBoundBox.mOffset.y + player->
mPos.y,
527 mVec3_c minPlayerPos(playerPos.x - playerBoundBox.mSize.x, playerPos.y - playerBoundBox.mSize.y, playerPos.z);
528 mVec3_c maxPlayerPos(playerPos.x + playerBoundBox.mSize.x, playerPos.y + playerBoundBox.mSize.y, playerPos.z);
531 if (canDrawFukidashi && overlap) {
541 for (
int i = 0; i < 4; i++) {
555 dAcPy_c *closestPlayer =
nullptr;
556 float closestDist = 1e9;
557 for (
int i = 0; i < 4; i++) {
558 if (daPyMng_c::checkPlayer(i) && !dInfo_c::m_instance->mFukidashiActionPerformed[i][fukidashiAction]) {
559 dAcPy_c *player = daPyMng_c::getPlayer(i);
560 if (player ==
nullptr) {
566 float dist = diffX * diffX + diffY * diffY;
567 if (closestDist > dist) {
568 closestPlayer = player;
573 return closestPlayer;
585 mEf::createEffect(
"Wm_en_burst_s", 0, &effPos,
nullptr,
nullptr);
593 for (
int i = 0; i < daPyMng_c::mNum; i++) {
594 dAcPy_c *player = daPyMng_c::getPlayer(i);
596 player->cancelCarry(
this);
600 effPos += centerOffs;
601 mEf::createEffect(
"Wm_en_burst_s", 0, &effPos,
nullptr,
nullptr);
629 static const int yoshiEatPoints[] = { 200, 1000 };
633 smallScorePos.y += 40.0f;
635 s8 plrNo = *eatingActor->
getPlrNo();
636 dGameCom::CreateSmallScore(smallScorePos, yoshiEatPopupTypes[
mEatPoints], plrNo,
false);
639 daPyMng_c::addScore(yoshiEatPoints[
mEatPoints], plrNo);
656 yoshi->getMouthMtx(&mouthMtx);
658 PSMTXTrans(transposeMtx, 10.0f, -7.0f, 0.0f);
660 PSMTXConcat(mouthMtx, transposeMtx, mouthMtx);
661 mPos.x = mouthMtx.transX();
662 mPos.y = mouthMtx.transY();
669 if (yoshi->m_a0 <= 1) {
670 res = yoshi->m_a0 / 1.25f;
679 if (scaleRate < 1.0f) {
688 yoshi->getTongueTipMtx(&tongueTipMtx);
689 mPos.x = tongueTipMtx.transX();
715 int combo = multiplier;
716 if (combo >= ARRAY_SIZE(cs_combo_se)) {
717 combo = ARRAY_SIZE(cs_combo_se) - 1;
719 int comboNeededForClaps = shortCombo ? 4 : 7;
720 if (combo >= comboNeededForClaps) {
733 mVec3_c shiftedPos(pos, 6500.0f);
735 int waterDepth = dBc_c::checkWaterDepth(shiftedPos.x, shiftedPos.y,
mLayer,
mBc.mLineKind,
nullptr);
738 if (waterDepth < 3) {
741 splashInfo |= (
mLayer << 16);
743 mVec3_c splashSize(size, size, size);
744 dEffActorMng_c::m_instance->createWaterSplashEff(shiftedPos, splashInfo, -1, splashSize);
746 dAudio::g_pSndObjMap->startSound(SE_OBJ_CMN_SPLASH, shiftedPos, 0);
748 dBg_c::m_bg_p->setWaterInWave(pos.x, pos.y, 6);
752 mVec3_c shiftedPos(pos, 6500.0f);
754 u32 splashInfo = 4 | (
mLayer << 16);
756 mVec3_c splashSize(size, size, size);
757 dEffActorMng_c::m_instance->createWaterSplashEff(shiftedPos, splashInfo, -1, splashSize);
759 dAudio::g_pSndObjMap->startSound(SE_OBJ_CMN_SPLASH_LAVA, shiftedPos, 0);
762 dBg_c::m_bg_p->setWaterInWave(pos.x, pos.y, 16);
764 dBg_c::m_bg_p->setWaterInWave(pos.x, pos.y, 14);
769 mVec3_c shiftedPos(pos, 6500.0f);
771 u32 splashInfo = 6 | (
mLayer << 16);
773 mVec3_c splashSize(size, size, size);
774 dEffActorMng_c::m_instance->createWaterSplashEff(shiftedPos, splashInfo, -1, splashSize);
776 dAudio::g_pSndObjMap->startSound(SE_OBJ_CMN_SPLASH_POISON, pos, 0);
779 dBg_c::m_bg_p->setWaterInWave(pos.x, pos.y, 23);
781 dBg_c::m_bg_p->setWaterInWave(pos.x, pos.y, 21);
786 for (
int i = 0; i < 4; i++) {
787 dAcPy_c *player = daPyMng_c::getPlayer(i);
789 if (playerNum !=
nullptr) {
795 if (playerNum !=
nullptr) {
void getCcBounds(sRangeDataF &bounds)
static u8 mExecStopReq
The actors for which the execute operation is requested to be disabled.
static u8 mExecStop
The actors for which the execute operation is currently disabled.
static bool getTrgToSrcDirLoop(float trgX, float srcX)
See getTrgToSrcDirFunc.
void deleteActor(u8 deleteForever)
Deletes the actor and optionally disables respawn.
static const float smc_CULL_AREA_XLIMIT
The default max bound X size.
u8 mExecStopMask
The mask required to disable the execute operation for the actor.
static dActor_c * construct(ProfileName profName, unsigned long param, const mVec3_c *position, const mAng3_c *rotation, u8 layer)
Creates a stage actor without a parent.
void slideComboSE(int multiplier, bool shortCombo)
Plays the combo kill sound effect.
static bool screenCullCheck(const mVec3_c &pos, const sRangeDataF &visibleBound, sRangeDataF destroyBound, u8 areaID)
Checks if the actor should be culled due to being outside the screen.
virtual bool setEatGlupDown(dActor_c *eatingActor)
Callback for when the actor is about to be fully swallowed.
bool mBlockHit
Whether a block below the actor was hit.
dAcPy_c * searchNearPlayer(mVec2_c &delta)
Gets the closest player to the actor and its distance.
sRangeDataF mDestroyBound
static void setLoopFunc(int loopType)
Sets the position-related functions for the level.
bool checkAreaNo()
Checks if at least one player is in the same zone as the actor.
void carryFukidashiCancel(int fukidashiAction, int playerId)
Hides the given action prompt for all players.
virtual void postCreate(fBase_c::MAIN_STATE_e status)
post method for the create operation.
virtual void postDelete(fBase_c::MAIN_STATE_e status)
post method for the delete operation.
mVec3_c mPreEatScale
The actor's scale before being eaten.
static void setSoftLight_MapObj(m3d::bmdl_c &mdl)
Sets the soft light effect for map objects.
virtual void cancelFunsuiActUpper()
u8 m_00
Seems to be a player bit flag.
static u8 * m_tmpCtSpawnFlags
Temporary storage for the next created sprite actor's spawn flags. See mpSpawnFlags.
static void setSoftLight_Map(m3d::bmdl_c &mdl)
Sets the soft light effect for map actors.
bool mNoRespawn
Whether the actor should not respawn after being deleted.
virtual void setSpinLiftUpActor(dActor_c *carryingActor)
Callback for when the actor is picked up by another actor.
virtual void reviveCc()
Enables the actor's collision.
static void setTmpCtData(u8 layer)
Sets temporary data to be used for the next actor's construction.
static u64 m_tmpCtEventMask
Temporary storage for the next created sprite actor's event mask. See mEventMask.
static u8 m_tmpCtLayerNo
Temporary storage for the next constructed actor's layer. See mLayer.
u8 * mpSpawnFlags
The spawn flags for the actor. See ACTOR_SPAWN_FLAG_e.
bool areaCullCheck(const mVec3_c &pos, const sRangeDataF &bound, u8 areaID) const
Checks if the actor should be culled due to zone limits.
dBc_c mBc
The actor-to-tile collision sensor.
static getTrgToSrcDirFunc mGetTrgToSrcDirFunc
The direction detection function.
static u8 m_tmpCtSpriteLayerNo
Temporary storage for the next created sprite actor's layer. See mLayer.
virtual void poisonSplashEffect(const mVec3_c &pos, float size)
Generates a poison water splash effect.
static bool getTrgToSrcDir_Main(float trgX, float srcX)
See getTrgToSrcDirFunc.
static void setSoftLight_Enemy(m3d::bmdl_c &mdl)
Sets the soft light effect for enemies.
void clrComboCnt()
Clears the actor's combo counter.
virtual void setEatTongue(dActor_c *eatingActor)
Callback for when the actor is targeted by Yoshi's tongue.
@ EAT_POINTS_200
Awards 200 points (default).
@ EAT_POINTS_NONE
No points are awarded.
virtual mVec2_c getLookatPos() const
Gets the position players look to when focused on the actor.
@ SKIP_SCREEN_CHECK
The actor position is not checked against the screen boundaries.
@ SKIP_RIDE_CHECK
The actor's ride status is not checked.
@ SKIP_ACTOR_DELETE
The actor is not deleted if out of screen.
static bool getTrgToSrcDirNormal(float trgX, float srcX)
See getTrgToSrcDirFunc.
static void setSoftLight_Boss(m3d::bmdl_c &mdl)
Sets the soft light effect for bosses.
static const float smc_CULL_YLIMIT
The default max bound Y offset.
static void setSoftLight_Player(m3d::bmdl_c &mdl)
Sets the soft light effect for players.
virtual float calcEatScaleRate(dActor_c *eatingActor)
Computes the scaling rate during eating.
static dAcPy_c * searchNearPlayerLoop(mVec2_c &delta, const mVec2_c &pos)
See searchNearPlayerFunc.
static u16 m_tmpCtEventNums
Temporary storage for the next created sprite actor's tracked event IDs. See mEventNums.
u8 mKind
The actor's kind. Value is a STAGE_ACTOR_KIND_e.
u8 mEatState
The actor's eat state. Value is a EAT_STATE_e.
static void changePosAngle(mVec3_c *pos, mAng3_c *ang, int param3)
Adjusts the actor's position to account for looping stages.
dCc_c mCc
The actor-to-actor collision sensor.
static dAcPy_c * searchNearPlayerNormal(mVec2_c &delta, const mVec2_c &pos)
See searchNearPlayerFunc.
@ EAT_TYPE_EAT_PERMANENT
The actor is consumed permanently after being eaten (default).
virtual bool ActorDrawCullCheck()
Checks if the actor is out of view.
dAcPy_c * searchCarryFukidashiPlayer(int fukidashiAction)
Searches the closest player who has not yet performed the given action.
static void setSearchNearPlayerFunc(int loopType)
Sets the player search function to be used for the level.
mVec2_c mVisibleAreaSize
The size of the area inside which the actor is visible.
virtual void removeCc()
Disables the actor's collision.
virtual int preCreate()
pre method for the create operation.
static dAcPy_c * searchNearPlayer_Main(mVec2_c &delta, const mVec2_c &pos)
See searchNearPlayerFunc.
static u8 mDrawStopReq
The actor kinds for which the draw operation is requested to be disabled.
dAcPy_c *(* searchNearPlayerFunc)(mVec2_c &delta, const mVec2_c &pos)
Gets the closest player to the given position and its distance.
virtual void postExecute(fBase_c::MAIN_STATE_e status)
post method for the execute operation.
virtual void eatMove(dActor_c *eatingActor)
Updates the actor's position during eating actions.
static void setGetTrgToSrcDirFunc(int loopType)
Sets the direction detection function to be used for the level.
u8 mEatBehaviour
The actor's eat behaviour. Value is a EAT_BEHAVIOR_e.
u8 mAreaNo
The actor's zone ID.
void setKind(u8 kind)
Sets the actor's kind. See STAGE_ACTOR_KIND_e.
virtual int preExecute()
pre method for the execute operation.
virtual void allEnemyDeathEffSet()
Spawns the visual effects for when all players reach the flagpole and all enemies are cleared.
static void setSoftLight_Item(m3d::bmdl_c &mdl)
Sets the soft light effect for items.
virtual const char * getKindString() const
Gets the base's kind string.
s8 mPlayerNo
The player associated with the actor, -1 if not associated to any player.
bool ActorScrOutCheck(u16 flags)
Checks if the actor is out of gameplay and optionally deletes it.
u32 mComboMultiplier
The current combo multiplier obtained by the actor by colliding with other actors.
virtual void cancelFunsuiActSide(int)
virtual void cancelFunsuiActVanish()
virtual void setEatMouth(dActor_c *eatingActor)
Callback for when the actor is being eaten.
u32 mEatenByID
The unique identifier of the eating actor.
bool carryFukidashiCheck(int fukidashiAction, mVec2_c fukidashiTriggerSize)
Checks if the prompt for the given action should be displayed for each player.
virtual void waterSplashEffect(const mVec3_c &pos, float size)
Generates a water splash effect.
void killActor(s8 playerId, int noScore)
Kills the actor and optionally awards points to one or all players.
virtual void setEatTongueOff(dActor_c *eatingActor)
Callback for when the eating action is canceled.
virtual void block_hit_init()
Callback for when a block directly beneath the actor is hit.
@ EAT_STATE_EATEN
The actor has been successfully eaten.
bool checkCarried(int *playerNum)
Returns whether the actor is being carried by a player.
dActor_c()
Constructs a new actor.
bool checkBgColl()
Returns whether the actor is colliding with any enabled collision sides.
virtual void yoganSplashEffect(const mVec3_c &pos, float size)
Generates a lava splash effect.
@ COLL_FOOT
The actor can collide with the ground.
@ COLL_HEAD
The actor can collide with ceilings.
@ COLL_WALL_L
The actor can collide with walls on its left.
@ COLL_WALL_R
The actor can collide with walls on its right.
@ COLL_NONE
The actor does not collide with any surface.
static const float smc_CULL_AREA_YLIMIT
The default max bound Y size.
dRc_c mRc
The actor's ride surface manager.
@ ACTOR_SPAWNED
The actor is spawned.
@ ACTOR_NO_RESPAWN
The actor must not respawn after deletion.
virtual void calcEatInScale(dActor_c *eatingActor)
Adjusts the actor's scale while being eaten.
u32 mCarryFukidashiPlayerNo
The player for whom an action prompt related to the actor is being displayed. -1 if no players meet t...
virtual int preDraw()
pre method for the draw operation.
virtual s8 * getPlrNo()
Gets the player number associated with the actor. See mPlayerNo.
virtual void setAfterEatScale()
Restores the actor's scale once spat out.
static const mVec2_c smc_FUKIDASHI_RANGE
The default trigger area size for displaying action prompts.
virtual bool setEatSpitOut(dActor_c *eatingActor)
Callback for when the actor is about to be spat out.
@ STAGE_ACTOR_GENERIC
A generic stage actor (default).
virtual void calcSpitOutPos(dActor_c *eatingActor)
Calculates the position where the actor will be spat out.
static void setChangePosAngleFunc(int loopType)
Sets the position update function to be used for the level.
virtual void postDraw(fBase_c::MAIN_STATE_e status)
post method for the draw operation.
virtual int preDelete()
pre method for the delete operation.
static const float smc_CULL_XLIMIT
The default max bound X offset.
static searchNearPlayerFunc mSearchNearPlayerFunc
The player search function.
u8 mLayer
The actor's layer.
mVec2_c mVisibleAreaOffset
The offset applied to the area size.
bool(* getTrgToSrcDirFunc)(float trgX, float srcX)
Gets the direction the target position is in, from the source position's viewpoint.
~dActor_c()
Destroys the actor.
u8 mBgCollFlags
The collision directions that the actor can respond to.
static u8 mDrawStop
The actor kinds for which the draw operation is currently disabled.
EAT_POINTS_e mEatPoints
The score awarded when the actor is eaten by Yoshi.
bool mVisible
Whether the actor should be visible or not. Defaults to true .
virtual int preDraw()
pre method for the draw operation.
mVec3_c mScale
The actor's scale (defaults to 1).
mVec3_c mPos
The actor's position.
virtual void postExecute(fBase_c::MAIN_STATE_e status)
post method for the execute operation.
virtual void postDraw(fBase_c::MAIN_STATE_e status)
post method for the draw operation.
mVec3_c mCenterOffs
The offset from the position to the center of the actor (defaults to 0).
static dBaseActor_c * construct(ProfileName profName, unsigned long param, const mVec3_c *position, const mAng3_c *rotation)
Creates an actor without a parent.
virtual int preDelete()
pre method for the delete operation.
virtual void postDelete(fBase_c::MAIN_STATE_e status)
post method for the delete operation.
mVec3_c getCenterPos() const
Gets the actor's centered position.
virtual void postCreate(fBase_c::MAIN_STATE_e status)
post method for the create operation.
u32 mActorProperties
The actor's properties. See fProfile::fActorProfile_c::mActorProperties.
virtual int preExecute()
pre method for the execute operation.
virtual int preCreate()
pre method for the create operation.
dBase_c()
Constructs a new base.
const char * mpKindString
The base's kind string.
Course data file holder. A course data file contains the actual course elements - areas,...
static dMultiMng_c * mspInstance
The instance of this class.
static float smc_SCORE_X
The score's horizontal offset from the actor position.
static float smc_SCORE_Y
The score's vertical offset from the actor position.
@ POPUP_TYPE_1000
The number 1000.
@ POPUP_TYPE_200
The number 200.
MAIN_STATE_e
The possible operation results.
@ SUCCESS
The operation was completed successfully.
void deleteRequest()
Requests deletion of the base.
bool mDeleteRequested
If deletion of the base was requested, but the delete operation has not been scheduled yet.
@ NOT_READY
The step could not completed at this time.
@ SUCCEEDED
The step was completed successfully.
fBaseID_e mUniqueID
The base's unique identifier.
static fBase_c * searchBaseByID(fBaseID_e id)
Searches for a base with the given ID.
A three-dimensional short angle vector.
A two-dimensional floating point vector.
A three-dimensional floating point vector.
const u8 l_Ami_Line[]
The sub-layer for each side of chainlink fences.
const float l_Ami_Zpos[]
The additional Z offset for each side of chainlink fences.
@ BASE_ID_NULL
Represents the null base.
u16 ProfileName
The name of a profile. Value is a fProfile::PROFILE_NAME_e.
void SetSoftLight_Player(m3d::bmdl_c &, int)
Sets the soft light effect for players.
void SetSoftLight_Enemy(m3d::bmdl_c &, int)
Sets the soft light effect for enemies.
bool someCheck(mVec3_c *a, sRangeDataF *b)
void SetSoftLight_MapObj(m3d::bmdl_c &, int)
Sets the soft light effect for map objects.
void SetSoftLight_Map(m3d::bmdl_c &, int)
Sets the soft light effect for map actors.
void hideFukidashiForLevel(int playerId, int fukidashiAction, int param3)
Hides the given action prompt for the given player for the rest of the current level.
void showFukidashi(int playerId, int fukidashiAction)
Displays the given action prompt to the given player.
bool isGameStop(ulong flag)
Determines if gameplay is currently stopped for the specified reason(s).
bool checkRectangleOverlap(mVec3_c *, mVec3_c *, mVec3_c *, mVec3_c *, float)
void SetSoftLight_Boss(m3d::bmdl_c &, int)
Sets the soft light effect for bosses.
void hideFukidashiTemporarily(int playerId, int fukidashiAction, int param3)
Temporarily hides the given action prompt for the given player.
void hideFukidashiForSession(int playerId, int fukidashiAction)
Hides the given action prompt for the given player for the rest of the current session.
@ GAME_STOP_ANY
The game is stopped for any unspecified reason.