diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h index c4ec5245c..7511745b9 100644 --- a/include/d/actor/d_a_player.h +++ b/include/d/actor/d_a_player.h @@ -92,6 +92,8 @@ public: daPyFlg0_UNK1000 = 0x00001000, daPyFlg0_UNK4000 = 0x00004000, daPyFlg0_UNK10000 = 0x00010000, + daPyFlg0_NO_FALL_VOICE = 0x00040000, + daPyFlg0_SCOPE_CANCEL = 0x00080000, daPyFlg0_UNK200000 = 0x00200000, daPyFlg0_EQUIP_HEAVY_BOOTS = 0x02000000, daPyFlg0_NO_DRAW = 0x08000000, @@ -99,25 +101,26 @@ public: }; enum daPy_FLG1 { - daPyFlg1_EQUIP_DRAGON_SHIELD = 0x00000001, - daPyFlg1_NPC_CALL_COMMAND = 0x00000002, - daPyFlg1_CASUAL_CLOTHES = 0x00000008, - daPyFlg1_FORCE_VOMIT_JUMP = 0x00000010, - daPyFlg1_NPC_NOT_CHANGE = 0x00000040, - daPyFlg1_UNK80 = 0x00000080, - daPyFlg1_CONFUSE = 0x00000100, - daPyFlg1_FREEZE_STATE = 0x00000800, - daPyFlg1_SHIP_TACT = 0x00001000, - daPyFlg1_USE_ARROW_EFFECT = 0x00002000, - daPyFlg1_LETTER_READ_EYE_MOVE = 0x00004000, - daPyFlg1_UNK8000 = 0x00008000, - daPyFlg1_FOREST_WATER_USE = 0x00020000, - daPyFlg1_WATER_DROP = 0x00080000, - daPyFlg1_UNK800000 = 0x00800000, - daPyFlg1_UNK1000000 = 0x01000000, - daPyFlg1_VINE_CATCH = 0x02000000, - daPyFlg1_UNK8000000 = 0x08000000, - daPyFlg1_LAST_COMBO_WAIT = 0x20000000, + daPyFlg1_EQUIP_DRAGON_SHIELD = 0x00000001, + daPyFlg1_NPC_CALL_COMMAND = 0x00000002, + daPyFlg1_CASUAL_CLOTHES = 0x00000008, + daPyFlg1_FORCE_VOMIT_JUMP = 0x00000010, + daPyFlg1_NPC_NOT_CHANGE = 0x00000040, + daPyFlg1_UNK80 = 0x00000080, + daPyFlg1_CONFUSE = 0x00000100, + daPyFlg1_FREEZE_STATE = 0x00000800, + daPyFlg1_SHIP_TACT = 0x00001000, + daPyFlg1_USE_ARROW_EFFECT = 0x00002000, + daPyFlg1_LETTER_READ_EYE_MOVE = 0x00004000, + daPyFlg1_UNK8000 = 0x00008000, + daPyFlg1_FORCE_VOMIT_JUMP_SHORT = 0x00010000, + daPyFlg1_FOREST_WATER_USE = 0x00020000, + daPyFlg1_WATER_DROP = 0x00080000, + daPyFlg1_UNK800000 = 0x00800000, + daPyFlg1_UNK1000000 = 0x01000000, + daPyFlg1_VINE_CATCH = 0x02000000, + daPyFlg1_UNK8000000 = 0x08000000, + daPyFlg1_LAST_COMBO_WAIT = 0x20000000, }; enum daPy_RFLG0 { @@ -132,10 +135,12 @@ public: daPyRFlg0_GRAB_UP_START = 0x00008000, daPyRFlg0_ATTENTION_LOCK = 0x00010000, daPyRFlg0_HAMMER_QUAKE = 0x00020000, + daPyRFlg0_POISON_CURSE = 0x00100000, daPyRFlg0_GRAB_PUT_START = 0x00400000, daPyRFlg0_TACT_USE = 0x01000000, daPyRFlg0_FAIRY_USE = 0x02000000, daPyRFlg0_UNK8000000 = 0x08000000, + daPyRFlg0_ARROW_SHOOT = 0x20000000, // 0x00000001 and 0x00000002 set in daPy_lk_c::dProcLastCombo // 0x00001000 set in daPy_lk_c::procCrawlMove_init, checked in checkNoCollisionCorret__9daPy_lk_cFv // 0x04000000 set in daPy_lk_c::procShipPaddle @@ -175,6 +180,8 @@ public: bool getCutAtFlg() const { return checkNoResetFlg0(daPyFlg0_CUT_AT_FLG); } void onPushPullKeep() { onNoResetFlg0(daPyFlg0_PUSH_PULL_KEEP); } void offPushPullKeep() { offNoResetFlg0(daPyFlg0_PUSH_PULL_KEEP); } + void onNoFallVoice() { onNoResetFlg0(daPyFlg0_NO_FALL_VOICE); } + void onScopeCancel() { onNoResetFlg0(daPyFlg0_SCOPE_CANCEL); } bool checkEquipHeavyBoots() const { return checkNoResetFlg0(daPyFlg0_EQUIP_HEAVY_BOOTS); } void onPlayerNoDraw() { onNoResetFlg0(daPyFlg0_NO_DRAW); } void offPlayerNoDraw() { offNoResetFlg0(daPyFlg0_NO_DRAW); } @@ -187,12 +194,14 @@ public: void offNoResetFlg1(daPy_FLG1 flag) { mNoResetFlg1 &= ~flag; } bool checkNoResetFlg1(daPy_FLG1 flag) const { return mNoResetFlg1 & flag; } bool checkEquipDragonShield() const { return checkNoResetFlg1(daPyFlg1_EQUIP_DRAGON_SHIELD); } + void onNpcCallCommand() { onNoResetFlg1(daPyFlg1_NPC_CALL_COMMAND); } void onNpcCall() { onNoResetFlg1(daPyFlg1_NPC_CALL_COMMAND); } void offNpcCallCommand() { offNoResetFlg1(daPyFlg1_NPC_CALL_COMMAND); } bool checkNpcCallCommand() const { return checkNoResetFlg1(daPyFlg1_NPC_CALL_COMMAND); } void onForceVomitJump() { onNoResetFlg1(daPyFlg1_FORCE_VOMIT_JUMP); } void onNpcNotChange() { onNoResetFlg1(daPyFlg1_NPC_NOT_CHANGE); } void offNpcNotChange() { offNoResetFlg1(daPyFlg1_NPC_NOT_CHANGE); } + bool checkNpcNotChange() const { return checkNoResetFlg1(daPyFlg1_NPC_NOT_CHANGE); } void onConfuse() { onNoResetFlg1(daPyFlg1_CONFUSE); } void offConfuse() { offNoResetFlg1(daPyFlg1_CONFUSE); } bool checkConfuse() const { return checkNoResetFlg1(daPyFlg1_CONFUSE); } @@ -202,6 +211,7 @@ public: void onUseArrowEffect() { onNoResetFlg1(daPyFlg1_USE_ARROW_EFFECT); } void offUseArrowEffect() { offNoResetFlg1(daPyFlg1_USE_ARROW_EFFECT); } void onLetterReadEyeMove() { onNoResetFlg1(daPyFlg1_LETTER_READ_EYE_MOVE); } + void onForceVomitJumpShort() { onNoResetFlg1(daPyFlg1_FORCE_VOMIT_JUMP_SHORT); } bool checkForestWaterUse() const { return checkNoResetFlg1(daPyFlg1_FOREST_WATER_USE); } void onWaterDrop() { onNoResetFlg1(daPyFlg1_WATER_DROP); } void onVineCatch() { onNoResetFlg1(daPyFlg1_VINE_CATCH); } @@ -215,28 +225,25 @@ public: bool getAutoJumpLand() const { return checkResetFlg0(daPyRFlg0_AUTO_JUMP_LAND); } bool getRightFootOnGround() const { return checkResetFlg0(daPyRFlg0_RIGHT_FOOT_ON_GROUND); } bool getLeftFootOnGround() const { return checkResetFlg0(daPyRFlg0_LEFT_FOOT_ON_GROUND); } + bool getFootOnGround() const { return getRightFootOnGround() || getLeftFootOnGround(); } bool checkFrontRollCrash() const { return checkResetFlg0(daPyRFlg0_FRONT_ROLL_CRASH); } bool getGrabUpStart() const { return checkResetFlg0(daPyRFlg0_GRAB_UP_START); } bool checkAttentionLock() const { return checkResetFlg0(daPyRFlg0_ATTENTION_LOCK); } bool checkHammerQuake() const { return checkResetFlg0(daPyRFlg0_HAMMER_QUAKE); } + void onPoisonCurse() { onResetFlg0(daPyRFlg0_POISON_CURSE); } bool getGrabPutStart() const { return checkResetFlg0(daPyRFlg0_GRAB_PUT_START); } bool checkFairyUse() const { return checkResetFlg0(daPyRFlg0_FAIRY_USE); } bool checkTactUse() const { return checkResetFlg0(daPyRFlg0_TACT_USE); } + bool checkArrowShoot() const { return checkResetFlg0(daPyRFlg0_ARROW_SHOOT); } + + bool checkGrabWear() const { return field_0x2b0 < 0.0f; } // checkSwordMiniGame__9daPy_py_cCFv // checkNormalSwordEquip__9daPy_py_cCFv // checkBowMiniGame__9daPy_py_cCFv // checkUseArrowEffect__9daPy_py_cCFv - // checkNpcNotChange__9daPy_py_cCFv // checkFinalMasterSwordEquip__9daPy_py_cCFv // checkEquipHoverBoots__9daPy_py_cCFv - // onNpcCallCommand__9daPy_py_cFv - // onForceVomitJumpShort__9daPy_py_cFv - // onNoFallVoice__9daPy_py_cFv - // checkGrabWear__9daPy_py_cCFv - // checkArrowShoot__9daPy_py_cCFv - // onScopeCancel__9daPy_py_cFv - // getFootOnGround__9daPy_py_cCFv virtual MtxP getLeftHandMatrix() = 0; virtual MtxP getRightHandMatrix() = 0; diff --git a/src/d/actor/d_a_am.cpp b/src/d/actor/d_a_am.cpp index 3b70f4339..4a52db0e8 100644 --- a/src/d/actor/d_a_am.cpp +++ b/src/d/actor/d_a_am.cpp @@ -647,7 +647,7 @@ static void action_dousa(am_class* i_this) { i_this->mGravity = -11.0f; i_this->speed.y = 40.0f; fopAcM_monsSeStart(i_this, JA_SE_CV_AM_JUMP, 0); - if (!Line_check(i_this, player->current.pos) || player->getDamageWaitTimer()) { + if (!Line_check(i_this, player->current.pos) || player->getDamageWaitTimer() != 0) { i_this->speedF = 0.0f; } i_this->mState += 1; diff --git a/src/d/actor/d_a_player_main.cpp b/src/d/actor/d_a_player_main.cpp index 295398e8d..4790f2c7b 100644 --- a/src/d/actor/d_a_player_main.cpp +++ b/src/d/actor/d_a_player_main.cpp @@ -1448,7 +1448,7 @@ BOOL daPy_lk_c::commonProcInit(daPy_lk_c::daPy_PROC procID) { m32F0.end(); mSmokeEcallBack.end(); - if (!(field_0x2b0 < 0.0f)) { + if (!checkGrabWear()) { m35D8 = 0.0f; } @@ -2115,7 +2115,7 @@ void daPy_lk_c::setBgCheckParam() { mAcchCir[0].SetWallH(25.0f); mAcchCir[1].SetWallH(25.0f); mAcchCir[2].SetWallH(25.0f); - } else if (field_0x2b0 < 0.0f) { + } else if (checkGrabWear()) { mAcchCir[0].SetWallR(50.0f); } else { mAcchCir[0].SetWallR(35.0f); diff --git a/src/d/actor/d_a_vrbox.cpp b/src/d/actor/d_a_vrbox.cpp index a0785edd0..dcf159a3a 100644 --- a/src/d/actor/d_a_vrbox.cpp +++ b/src/d/actor/d_a_vrbox.cpp @@ -94,7 +94,7 @@ static BOOL daVrbox_color_set(vrbox_class* i_this) { /* 8015E6B8-8015E864 .text dungeon_rain_proc__Fv */ static void dungeon_rain_proc() { - dScnKy_env_light_c* env_light = &g_env_light; + dScnKy_env_light_c* env_light = &g_env_light; // Probably a fakematch u8 mode = 0; int roomNo = dComIfGp_roomControl_getStayNo(); @@ -126,17 +126,18 @@ static void dungeon_rain_proc() { if (env_light->mRainCountOrig != 250) { dKy_change_colpat(1); dKyw_rain_set(250); - g_env_light.mThunderEff.mMode = 1; + env_light = &g_env_light; + env_light->mThunderEff.mMode = 1; } } else if (mode == 2) { // Thunder, but no rain env_light = &g_env_light; - if (g_env_light.mThunderEff.mMode == 0) { + if (env_light->mThunderEff.mMode == 0) { dKy_change_colpat(1); env_light->mThunderEff.mMode = 0xA; } } else { // No rain or thunder env_light = &g_env_light; - if (g_env_light.mThunderEff.mMode != 0) { + if (env_light->mThunderEff.mMode != 0) { dKyw_rain_set(0); env_light->mThunderEff.mMode = 0; }