diff --git a/config/SOUE01/rels/d_a_obj_chairNP/splits.txt b/config/SOUE01/rels/d_a_obj_chairNP/splits.txt index 134c3c1b..214c82fd 100644 --- a/config/SOUE01/rels/d_a_obj_chairNP/splits.txt +++ b/config/SOUE01/rels/d_a_obj_chairNP/splits.txt @@ -17,3 +17,6 @@ REL/global_destructor_chain.c: REL/d/a/obj/d_a_obj_chair.cpp: .text start:0x000000F0 end:0x000015F8 .ctors start:0x00000000 end:0x00000004 + .rodata start:0x00000000 end:0x00000054 + .data start:0x00000000 end:0x00000268 + .bss start:0x00000008 end:0x00000060 diff --git a/config/SOUE01/rels/d_a_obj_chairNP/symbols.txt b/config/SOUE01/rels/d_a_obj_chairNP/symbols.txt index c1e11dfd..f9244362 100644 --- a/config/SOUE01/rels/d_a_obj_chairNP/symbols.txt +++ b/config/SOUE01/rels/d_a_obj_chairNP/symbols.txt @@ -4,24 +4,24 @@ _unresolved = .text:0x00000060; // type:function size:0x4 scope:global __register_global_object = .text:0x00000070; // type:function size:0x1C scope:global __destroy_global_chain = .text:0x00000090; // type:function size:0x54 scope:global dAcOChair_c_classInit__Fv = .text:0x000000F0; // type:function size:0xF0 -fn_484_1E0 = .text:0x000001E0; // type:function size:0x58 +__dt__15dShadowCircle_cFv = .text:0x000001E0; // type:function size:0x58 __dt__24sFState_c<11dAcOChair_c>Fv = .text:0x00000240; // type:function size:0x58 __dt__27sFStateFct_c<11dAcOChair_c>Fv = .text:0x000002A0; // type:function size:0x6C __dt__80sStateMgr_c<11dAcOChair_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000310; // type:function size:0xA0 __dt__50sFStateMgr_c<11dAcOChair_c,20sStateMethodUsr_FI_c>Fv = .text:0x000003B0; // type:function size:0xA4 -AcOChair__initModels = .text:0x00000460; // type:function size:0xC4 -AcOChair__init = .text:0x00000530; // type:function size:0x2DC +createHeap__11dAcOChair_cFv = .text:0x00000460; // type:function size:0xC4 +create__11dAcOChair_cFv = .text:0x00000530; // type:function size:0x2DC changeState__80sStateMgr_c<11dAcOChair_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x00000810; // type:function size:0x10 -fn_484_820 = .text:0x00000820; // type:function size:0x8 -fn_484_830 = .text:0x00000830; // type:function size:0x350 +doDelete__11dAcOChair_cFv = .text:0x00000820; // type:function size:0x8 +actorExecute__11dAcOChair_cFv = .text:0x00000830; // type:function size:0x350 executeState__80sStateMgr_c<11dAcOChair_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000B80; // type:function size:0x10 -fn_484_B90 = .text:0x00000B90; // type:function size:0x1C -fn_484_BB0 = .text:0x00000BB0; // type:function size:0x104 +calcTimer__4sLibFPUc_Uc = .text:0x00000B90; // type:function size:0x1C +draw__11dAcOChair_cFv = .text:0x00000BB0; // type:function size:0x104 initializeState_Wait__11dAcOChair_cFv = .text:0x00000CC0; // type:function size:0x4 executeState_Wait__11dAcOChair_cFv = .text:0x00000CD0; // type:function size:0x194 finalizeState_Wait__11dAcOChair_cFv = .text:0x00000E70; // type:function size:0x4 -AcOChair__getType = .text:0x00000E80; // type:function size:0xD8 -fn_484_F60 = .text:0x00000F60; // type:function size:0x1B4 +getChairType__11dAcOChair_cFRUc = .text:0x00000E80; // type:function size:0xD8 +updateChairPos__11dAcOChair_cFv = .text:0x00000F60; // type:function size:0x1B4 __dt__11dAcOChair_cFv = .text:0x00001120; // type:function size:0x10C getStateID__80sStateMgr_c<11dAcOChair_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00001230; // type:function size:0x10 build__27sFStateFct_c<11dAcOChair_c>FRC12sStateIDIf_c = .text:0x00001240; // type:function size:0x60 @@ -57,8 +57,9 @@ lbl_484_data_38 = .data:0x00000038; // type:object size:0x8 lbl_484_data_40 = .data:0x00000040; // type:object size:0x8 lbl_484_data_48 = .data:0x00000048; // type:object size:0x8 lbl_484_data_50 = .data:0x00000050; // type:object size:0x8 -AcOChair__CHAR_TYPES = .data:0x00000058; // type:object size:0x80 -AcOChair__vtable = .data:0x000000D8; // type:object size:0x80 +CHAIR_FILES = .data:0x00000058; // type:object size:0x24 +sChairColData = .data:0x00000080; // type:object size:0x30 +__vt__15dShadowCircle_c = .data:0x000000D8; // type:object size:0x80 lbl_484_data_158 = .data:0x00000158; // type:object size:0x30 lbl_484_data_188 = .data:0x00000188; // type:object size:0x30 lbl_484_data_1B8 = .data:0x000001B8; // type:object size:0x18 diff --git a/include/d/a/d_a_item.h b/include/d/a/d_a_item.h index 1f0b7691..35e71c7b 100644 --- a/include/d/a/d_a_item.h +++ b/include/d/a/d_a_item.h @@ -63,6 +63,8 @@ public: static void itemGetEventStart(dAcBase_c *); static void itemGetEventEnd(dAcBase_c *); + static void healLink(u32 amount, bool); + private: /* 0x334 */ UNKTYPE *mpMdl; // Model has its own handling system /* 0x338 */ dShadowCircle_c mShdw; diff --git a/include/d/a/d_a_player.h b/include/d/a/d_a_player.h index 133b09f3..d1e16f3e 100644 --- a/include/d/a/d_a_player.h +++ b/include/d/a/d_a_player.h @@ -1,3 +1,6 @@ +#ifndef D_A_PLAYER_H +#define D_A_PLAYER_H + #include "common.h" #include "d/a/d_a_base.h" #include "d/a/obj/d_a_obj_base.h" @@ -256,6 +259,10 @@ public: return mCurrentAction; } + bool checkCurrentAction(int action) const { + return mCurrentAction == action; + } + inline bool checkActionFlags(u32 mask) const { return (mActionFlags & mask) != 0; } @@ -271,3 +278,5 @@ public: static dAcPy_c *LINK; }; + +#endif diff --git a/include/d/a/obj/d_a_obj_chair.h b/include/d/a/obj/d_a_obj_chair.h index 89e3712d..c8c146f7 100644 --- a/include/d/a/obj/d_a_obj_chair.h +++ b/include/d/a/obj/d_a_obj_chair.h @@ -2,18 +2,87 @@ #define D_A_OBJ_CHAIR_H #include "d/a/obj/d_a_obj_base.h" +#include "d/col/bg/d_bg_s_acch.h" +#include "d/col/bg/d_bg_w.h" +#include "d/col/cc/d_cc_d.h" +#include "d/d_shadow.h" +#include "d/flag/sceneflag_manager.h" +#include "m/m3d/m_smdl.h" +#include "m/m_angle.h" +#include "m/m_vec.h" +#include "nw4r/g3d/res/g3d_resfile.h" #include "s/s_State.hpp" #include "s/s_StateMgr.hpp" class dAcOChair_c : public dAcObjBase_c { public: + enum ChairType { + CHAIR_A, // Standard Stool + CHAIR_B, // Standard Chair + CHAIR_C, // Seat like in Headmaster Room + CHAIR_D, // Couch + CHAIR_E, // Bench + CHAIR_F, // Faron - Stump + CHAIR_G, // Eldin - In Huts + CHAIR_H, // Lanayru - 'Past' + CHAIR_I, // In Front of ET + }; + dAcOChair_c() : mStateMgr(*this, sStateID::null) {} virtual ~dAcOChair_c() {} + virtual int create() override; + virtual int doDelete() override; + virtual int draw() override; + virtual bool createHeap() override; + virtual int actorExecute() override; + STATE_FUNC_DECLARE(dAcOChair_c, Wait); + ChairType getChairType(u8 ¶m); + + void updateChairPos(); + + bool isBench() const { + return (mChairType == CHAIR_D || mChairType == CHAIR_E || mChairType == CHAIR_I); + } + bool isChairTypeIdk0() const { + return ( + mChairType == CHAIR_A || mChairType == CHAIR_F || mChairType == CHAIR_G || mChairType == CHAIR_H || + mChairType == CHAIR_I + ); + } + bool isChairTypeIdk1() const { + return mChairType == CHAIR_F || mChairType == CHAIR_H; + } + + // Might be an inline from dAcBase_c? + mAng getRelativeYRotationToPlayer() { + mAng a = getXZAngleToPlayer(); + return a - rotation.y; + } + private: - /* 0x??? */ STATE_MGR_DECLARE(dAcOChair_c); + /* 0x330 */ nw4r::g3d::ResFile mRes; + /* 0x334 */ m3d::smdl_c mMdl; + /* 0x350 */ dShadowCircle_c mShadow; + + /* 0x358 */ dCcD_Cyl mCyl; + /* 0x4A8 */ dBgW mBgW; + /* 0x6B8 */ dBgS_ObjAcch mObjAcch; + /* 0xA68 */ dBgS_AcchCir mAcchCir; + + /* 0xAC4 */ STATE_MGR_DECLARE(dAcOChair_c); + /* 0xB00 */ mVec3_c mChairPos; + /* 0xB0C */ u8 _B0C[0xB14 - 0xB0C]; + /* 0xB14 */ u32 mSeatNodeID; + /* 0xB18 */ mAng mChairRot; + /* 0xB1A */ u8 field_0xB1A; + /* 0xB1B */ u8 field_0xB1B; + /* 0xB1C */ u8 field_0xB1C; + /* 0xB1D */ u8 mHealTimer; + /* 0xB1E */ u8 mChairType; + /* 0xB1E */ u8 mSceneflag; }; #endif diff --git a/include/d/col/c/c_cc_d.h b/include/d/col/c/c_cc_d.h index b9d9daa4..2893419d 100644 --- a/include/d/col/c/c_cc_d.h +++ b/include/d/col/c/c_cc_d.h @@ -315,7 +315,8 @@ public: }; struct cCcD_SrcGObjTgInfo { - /* 0x00 */ u16 mField_0x0; + /* 0x00 */ u8 mField_0x0; + /* 0x01 */ u8 mField_0x1; /* 0x02 */ u16 mField_0x2; }; @@ -631,6 +632,10 @@ public: mField_0x4B = val; } + void SetInfo_0x1(u8 val) { + mSrc.mInfo.mField_0x1 = val; + } + void SetInfo_0x2(u16 val) { mSrc.mInfo.mField_0x2 = val; } @@ -911,6 +916,9 @@ public: void SetTg_0x4B(u8 val) { mTg.Set_0x4B(val); } + void SetTgInfo_0x1(u8 val) { + mTg.SetInfo_0x1(val); + } void SetTgInfo_0x2(u16 val) { mTg.SetInfo_0x2(val); } diff --git a/src/REL/d/a/obj/d_a_obj_chair.cpp b/src/REL/d/a/obj/d_a_obj_chair.cpp index a516b43e..e23de73a 100644 --- a/src/REL/d/a/obj/d_a_obj_chair.cpp +++ b/src/REL/d/a/obj/d_a_obj_chair.cpp @@ -1,9 +1,268 @@ #include "d/a/obj/d_a_obj_chair.h" +#include "common.h" +#include "d/a/d_a_item.h" +#include "d/a/d_a_player.h" +#include "d/a/obj/d_a_obj_base.h" +#include "d/col/bg/d_bg_s.h" +#include "d/col/cc/d_cc_d.h" +#include "d/col/cc/d_cc_s.h" +#include "d/flag/sceneflag_manager.h" +#include "f/f_base.h" +#include "m/m_angle.h" +#include "m/m_quat.h" +#include "m/m_vec.h" +#include "nw4r/g3d/res/g3d_resfile.h" +#include "nw4r/math/math_arithmetic.h" +#include "s/s_Math.h" +#include "toBeSorted/attention.h" + SPECIAL_ACTOR_PROFILE(OBJ_CHAIR, dAcOChair_c, fProfile::OBJ_CHAIR, 0x196, 0, 7); STATE_DEFINE(dAcOChair_c, Wait); +// Honestly, I dont know. This just made the most sense to me +static const u8 _heal_cooldowns[] = {0, 60, 30}; +#define HEAL_COOLDOWN (_heal_cooldowns[2]) +#define FIRST_HEAL_COOLDOWN (_heal_cooldowns[1]) + +char *CHAIR_FILES[9] = { + "CharA", "CharB", "CharC", "CharD", "CharE", "CharF", "CharG", "CharH", "CharI", +}; + +static dCcD_SrcCyl sChairColData = { + /* mObjInf */ + {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, + /* mObjTg */ + {~(AT_TYPE_BUGNET | AT_TYPE_0x80000 | AT_TYPE_BEETLE | AT_TYPE_WIND | AT_TYPE_0x8000), + 0x111, + {0, 0x7, 0x407}, + 0x0, + 0x0}, + /* mObjCo */ {0xE9}}, + /* mCylInf */ + {40.f, 50.f} +}; + +bool dAcOChair_c::createHeap() { + if (!isBench()) { + mRes = nw4r::g3d::ResFile(getOarcResFile(CHAIR_FILES[mChairType])); + TRY_CREATE(mMdl.create(mRes.GetResMdl(CHAIR_FILES[mChairType]), &heap_allocator, 0x120, 1, NULL)); + } + return true; +} + +int dAcOChair_c::create() { + u8 paramType = params & 0xF; + mChairType = getChairType(paramType); + mSceneflag = params >> 4; + + CREATE_ALLOCATOR(dAcOChair_c); + + if (!isBench()) { + mObjAcch.Set(this, 1, &mAcchCir); + mAcchCir.SetWall(20.f, 50.f); + } + + if (!isBench()) { + mStts.SetRank(13); + mCyl.Set(sChairColData); + + mCyl.SetStts(mStts); + mCyl.SetTg_0x4C(0x2000); + + if (mChairType == CHAIR_H) { + mCyl.SetTgInfo_0x1(6); + } + + f32 height = 55.f; + f32 radius = 35.f; + + if (mChairType == CHAIR_B) { + height = 130.f; + radius = 45.f; + } else if (mChairType == CHAIR_C) { + height = 160.f; + radius = 65.f; + } + + mCyl.SetR(radius); + mCyl.SetH(height); + + mSeatNodeID = mMdl.getResMdl().GetResNode("SetLink").GetID(); + } + + updateMatrix(); + + if (isChairTypeIdk1()) { + mMdl.setPriorityDraw(0x1C, 9); + + } else if (!isBench()) { + mObjAcch.CrrPos(*dBgS::GetInstance()); + } + + forwardAccel = -2.f; + forwardMaxSpeed = -40.f; + + field_0xB1B = 1; + field_0xB1A = 1; + + mChairRot = rotation.y; + mStateMgr.changeState(StateID_Wait); + + boundingBox.Set(mVec3_c(-60.f, -0.f, -60.f), mVec3_c(60.f, 160.f, 60.f)); + + return SUCCEEDED; +} + +int dAcOChair_c::doDelete() { + return SUCCEEDED; +} + +inline bool isPlayerSitting() { + bool ret = false; + if ( + dAcPy_c::GetLink()->checkCurrentAction(173) /* SITTING*/ || + dAcPy_c::GetLink()->checkCurrentAction(174) /* ??? */ + ) { + ret = true; + } + return ret; +} + +int dAcOChair_c::actorExecute() { + mStateMgr.executeState(); + + // Calculate the HealCooldown (Heal link if needed) + if (!checkObjectProperty(0x8000)) { + if (!isBench()) { + mCyl.SetC(GetPostion()); + dCcS::GetInstance()->Set(&mCyl); + } + mHealTimer = FIRST_HEAL_COOLDOWN; + } else if (isPlayerSitting()) { + if (sLib::calcTimer(&mHealTimer) == 0) { + dAcItem_c::healLink(4, 1); + mHealTimer = HEAL_COOLDOWN; + } + } + + // Set the flag that link is sitting + if (checkObjectProperty(0x8000) && isPlayerSitting()) { + if (mSceneflag < 0xFF && !SceneflagManager::sInstance->checkBoolFlag(roomid, mSceneflag)) { + SceneflagManager::sInstance->setFlag(roomid, mSceneflag); + } + } else { + if (mSceneflag < 0xFF && SceneflagManager::sInstance->checkBoolFlag(roomid, mSceneflag)) { + SceneflagManager::sInstance->unsetFlag(roomid, mSceneflag); + } + } + + if (!isBench()) { + if (isChairTypeIdk0() && !checkObjectProperty(0x8000)) { + if (sLib::absDiff(GetRotation().y, getXZAngleToPlayer()) > 910) { + GetRotation().y = getXZAngleToPlayer(); + } + } + + updateMatrix(); + + if (isChairTypeIdk0()) { + mWorldMtx.YrotM(mChairRot - GetRotation().y); + } + mMdl.setLocalMtx(mWorldMtx); + mMdl.calc(false); + } else { + if (isChairTypeIdk0() && !checkObjectProperty(0x8000)) { + if (sLib::absDiff(GetRotation().y, getXZAngleToPlayer()) > 910) { + GetRotation().y = getXZAngleToPlayer(); + } + } + } + + updateChairPos(); + + return SUCCEEDED; +} + +int dAcOChair_c::draw() { + if (!isBench()) { + drawModelType1(&mMdl); + static mQuat_c shadowRot(0.f, 40.f, 0.f, 80.f); + drawShadow(mShadow, nullptr, mWorldMtx, &shadowRot, -1, -1, -1, -1, -1, 0.f); + } + return SUCCEEDED; +} + void dAcOChair_c::initializeState_Wait() {} -void dAcOChair_c::executeState_Wait() {} + +void dAcOChair_c::executeState_Wait() { + const f32 height_diff = position.y - dAcPy_c::GetLink()->position.y; + if (!isBench() || (50.f < height_diff && height_diff < 60.f)) { + if (field_0xB1A && field_0xB1B) { + if (dAcPy_c::GetLink()->checkActionFlagsCont(0x1000)) { + return; + } + if (!isBench() && nw4r::math::FAbs(height_diff) > 10.f) { + return; + } + if (field_0xB1C && mChairType == CHAIR_E) { + const f32 mag = (mChairPos - poscopy2).squareMagXZ(); + if (mag < 10000.f) { + return; + } + } + AttentionManager::GetInstance()->addSitTarget(*this, isBench() ? 0 : 3, 120.f); + } + } +} + void dAcOChair_c::finalizeState_Wait() {} + +dAcOChair_c::ChairType dAcOChair_c::getChairType(u8 ¶m) { + switch (actor_subtype) { + case 0: return CHAIR_A; + case 1: return CHAIR_B; + case 2: return CHAIR_C; + case 3: return CHAIR_D; + case 4: return CHAIR_E; + case 5: { + switch (param) { + case 0: return CHAIR_A; + case 1: return CHAIR_D; + case 2: return CHAIR_I; + case 3: return CHAIR_F; + case 4: return CHAIR_G; + case 5: return CHAIR_H; + default: return CHAIR_A; + } + } + default: return CHAIR_A; + } +} + +void dAcOChair_c::updateChairPos() { + if (mChairType != CHAIR_E) { + if (isBench()) { + poscopy2 = position; + } else { + mMdl.getNodeWorldMtxMultVecZero(mSeatNodeID, poscopy2); + } + poscopy3 = poscopy2; + } else { + field_0xB1A = true; + if (!checkObjectProperty(0x8000)) { + mVec3_c work = mVec3_c::Ez * getDistToPlayer(); + work.rotY(getRelativeYRotationToPlayer()); + work.z = 0.f; + work.rotY(rotation.y); + poscopy2 = position; + if (work.squareMagXZ() < 10000.f) { + poscopy2 += work; + } else { + field_0xB1A = false; + } + } + poscopy3 = poscopy2; + } +} diff --git a/src/REL/d/a/obj/d_a_obj_dungeon_ship.cpp b/src/REL/d/a/obj/d_a_obj_dungeon_ship.cpp index b4ef9afb..b0c93221 100644 --- a/src/REL/d/a/obj/d_a_obj_dungeon_ship.cpp +++ b/src/REL/d/a/obj/d_a_obj_dungeon_ship.cpp @@ -29,7 +29,11 @@ dCcD_SrcCps dAcODungeonShip_c::sCcSrc = { { {0, 0x1003E, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, - {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x111, 0, 0x407, 0, 0}, + {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND), + 0x111, + {0, 0, 0x407}, + 0, + 0}, {0xE8}, }, {1000.0f}, diff --git a/src/REL/d/a/obj/d_a_obj_flying_clawshot_target.cpp b/src/REL/d/a/obj/d_a_obj_flying_clawshot_target.cpp index 3153cc67..1d0fac70 100644 --- a/src/REL/d/a/obj/d_a_obj_flying_clawshot_target.cpp +++ b/src/REL/d/a/obj/d_a_obj_flying_clawshot_target.cpp @@ -40,7 +40,7 @@ bool dAcOFlyingClawshotTarget_c::createHeap() { // clang-format off const cCcD_SrcGObj dAcOFlyingClawshotTarget_c::sColSrc = { /* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, - /* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x1080111, {6, 0x407}, 0, 0}, + /* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x1080111, {0, 6, 0x407}, 0, 0}, /* mObjCo */ {0x0} }; // clang-format on diff --git a/src/REL/d/a/obj/d_a_obj_seat_sword.cpp b/src/REL/d/a/obj/d_a_obj_seat_sword.cpp index 381eda1e..726a008a 100644 --- a/src/REL/d/a/obj/d_a_obj_seat_sword.cpp +++ b/src/REL/d/a/obj/d_a_obj_seat_sword.cpp @@ -24,11 +24,11 @@ STATE_DEFINE(dAcOSeatSword_c, Wait); STATE_DEFINE(dAcOSeatSword_c, Get); dCcD_SrcCyl dAcOSeatSword_c::sCylSrc = { - /* mObjInf */ + /* mObjInf */ {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, - /* mObjTg */ {0, 0x311, {0, 0x407}, 0x0, 0x0}, + /* mObjTg */ {0, 0x311, {0, 0, 0x407}, 0x0, 0x0}, /* mObjCo */ {0xE9}}, - /* mCylInf */ + /* mCylInf */ {20.f, 100.f} }; diff --git a/src/REL/d/a/obj/d_a_obj_spike.cpp b/src/REL/d/a/obj/d_a_obj_spike.cpp index 1847604a..ddc24b6b 100644 --- a/src/REL/d/a/obj/d_a_obj_spike.cpp +++ b/src/REL/d/a/obj/d_a_obj_spike.cpp @@ -7,7 +7,7 @@ SPECIAL_ACTOR_PROFILE(OBJ_SPIKE, dAcOspike_c, fProfile::OBJ_SPIKE, 0x1D9, 0, 2); // clang-format off dCcD_SrcUnk dAcOspike_c::sCcSrc = { {{AT_TYPE_DAMAGE, 0x2003F, {0, 0, 0}, 1, 0, 0, 0, 0}, - {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x111, 0x06, 0x407, 0, }, + {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x111, 0x0, 0x06, 0x407, 0, }, {0}}, {-1.0f, -246.0f, -472.0f, 73.0f, 255.0f, 482.0f}}; // clang-format on diff --git a/src/REL/d/a/obj/d_a_obj_toD3_stone_figure.cpp b/src/REL/d/a/obj/d_a_obj_toD3_stone_figure.cpp index c970b551..b8b18519 100644 --- a/src/REL/d/a/obj/d_a_obj_toD3_stone_figure.cpp +++ b/src/REL/d/a/obj/d_a_obj_toD3_stone_figure.cpp @@ -38,7 +38,8 @@ dCcD_SrcCyl dAcOtoD3StoneFigure_c::sCcSrc = { ~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x1000111, { - 0x06, + 0x0, + 0x06, 0x407 }, 0, diff --git a/src/REL/d/a/obj/d_a_obj_triforce.cpp b/src/REL/d/a/obj/d_a_obj_triforce.cpp index 5046cccf..f09ee010 100644 --- a/src/REL/d/a/obj/d_a_obj_triforce.cpp +++ b/src/REL/d/a/obj/d_a_obj_triforce.cpp @@ -10,7 +10,7 @@ SPECIAL_ACTOR_PROFILE(OBJ_TRIFORCE, dAcOtriforce_c, fProfile::OBJ_TRIFORCE, 0x15 // clang-format off dCcD_SrcSph dAcOtriforce_c::sCcSrc = { {{0, 0, 0, 0, 0, 0, 0, 0, 0}, - {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x111, 0x06, 0x407, 0, 0}, + {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x111, 0x0, 0x06, 0x407, 0, 0}, {0xE9}}, {150.0f}}; // clang-format on diff --git a/src/REL/d/a/obj/d_a_obj_tubo.cpp b/src/REL/d/a/obj/d_a_obj_tubo.cpp index af38a2b1..ad83d657 100644 --- a/src/REL/d/a/obj/d_a_obj_tubo.cpp +++ b/src/REL/d/a/obj/d_a_obj_tubo.cpp @@ -53,7 +53,7 @@ STATE_DEFINE(dAcOtubo_c, Rebirth); dCcD_SrcSph dAcOtubo_c::sSphSrc = { /* mObjInf */ {/* mObjAt */ {AT_TYPE_PHYSICS, 0x12, {0, 0, 0}, 2, 0, 0, 0, 0, 0}, - /* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_0x80000 | AT_TYPE_0x8000), 0x801111, {0xA, 0x40F}, 8, 0}, + /* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_0x80000 | AT_TYPE_0x8000), 0x801111, {0, 0xA, 0x40F}, 8, 0}, /* mObjCo */ {0x1E9}}, /* mSphInf */ {30.f}, diff --git a/src/REL/d/a/obj/d_a_obj_tumble_weed.cpp b/src/REL/d/a/obj/d_a_obj_tumble_weed.cpp index 7b8558b9..b5f99107 100644 --- a/src/REL/d/a/obj/d_a_obj_tumble_weed.cpp +++ b/src/REL/d/a/obj/d_a_obj_tumble_weed.cpp @@ -32,7 +32,7 @@ STATE_DEFINE(dAcOTumbleWeed_c, Slope); dCcD_SrcSph dAcOTumbleWeed_c::sSphSrc = { /* mObjInf */ {/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, - /* mObjTg */ {~(AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000), 0x111, {8, 0x40F}, 0, 0}, + /* mObjTg */ {~(AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000), 0x111, {0, 8, 0x40F}, 0, 0}, /* mObjCo */ {0xE9}}, /* mSphInf */ {60.f}, diff --git a/src/REL/d/t/d_t_reaction.cpp b/src/REL/d/t/d_t_reaction.cpp index cfda001a..f165f90c 100644 --- a/src/REL/d/t/d_t_reaction.cpp +++ b/src/REL/d/t/d_t_reaction.cpp @@ -22,7 +22,7 @@ const f32 dTgReaction_c::sHeight = 100.0f; // clang-format off dCcD_SrcCyl dTgReaction_c::sCcSrc = { {{0, 0, 0, 0, 0, 0, 0, 0, 0}, - {AT_TYPE_BELLOWS, 0x213, 0, 0x8, 0x8,}, + {AT_TYPE_BELLOWS, 0x213, {0, 0, 0x8},0x8}, {0xE8}}, {dTgReaction_c::sRadius, dTgReaction_c::sHeight} }; diff --git a/src/d/a/obj/d_a_obj_arrow.cpp b/src/d/a/obj/d_a_obj_arrow.cpp index b44643e6..d600ecb2 100644 --- a/src/d/a/obj/d_a_obj_arrow.cpp +++ b/src/d/a/obj/d_a_obj_arrow.cpp @@ -20,7 +20,7 @@ cCcD_SrcGObj dAcArrow_c::sCcSrcInf = { {AT_TYPE_ARROW, 0x8BB, {0x15,0, 0}, 0, 0, 0, 0, 0, 0}, { ~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_ARROW | AT_TYPE_0x100 | AT_TYPE_WIND | AT_TYPE_SLINGSHOT), - 0x210, 0, 0x407, 0, 0 + 0x210, {0, 0, 0x407}, 0, 0 }, {0}, }; @@ -32,7 +32,7 @@ dCcD_SrcCps dAcArrow_c::sCc1 = { const dCcD_SrcSph dAcArrow_c::sCc2 = { {{0x0, 0x0, 0x0, 0, 0, 0, 0, 0, 0}, - {AT_TYPE_SWORD, 0x211, 0, 0x407, 0, 0}, + {AT_TYPE_SWORD, 0x211, {0, 0, 0x407}, 0, 0}, {0xC28}}, {100.0f}, }; diff --git a/src/d/a/obj/d_a_obj_tbox.cpp b/src/d/a/obj/d_a_obj_tbox.cpp index 8a7650ec..b85de5cd 100644 --- a/src/d/a/obj/d_a_obj_tbox.cpp +++ b/src/d/a/obj/d_a_obj_tbox.cpp @@ -89,7 +89,7 @@ static char *const sOpenEventNames[] = { // TODO just copied from somewhere const cCcD_SrcGObj dAcTbox_c::sColSrc = { /* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0}, - /* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND), 0, {0, 0x407}, 0, 0}, + /* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x80000 | AT_TYPE_0x8000 | AT_TYPE_WIND), 0, {0, 0, 0x407}, 0, 0}, /* mObjCo */ {0xE9} }; // clang-format on diff --git a/src/d/col/bg/d_bg_s.cpp b/src/d/col/bg/d_bg_s.cpp index ecd352ef..d3067b25 100644 --- a/src/d/col/bg/d_bg_s.cpp +++ b/src/d/col/bg/d_bg_s.cpp @@ -498,7 +498,6 @@ bool dBgS::UnRegist(dBgW_Base *pBg) { return false; } - // Not Quite Right if (id <= (BG_ID_MAX - 1) && mColllisionTbl[id] != nullptr) { mColllisionTbl[id] = nullptr; pBg->UnRegistBg(); @@ -513,12 +512,11 @@ bool dBgS::UnRegist(dBgW_Base *pBg) { } } } - ret = false; } else { - ret = true; + return true; } - return ret; + return false; } bool dBgS::ChkMoveBG(cBgS_PolyInfo const &info, bool bChkLock) { @@ -1004,7 +1002,8 @@ mVec3_c dBgS_GetN(cBgS_PolyInfo const &info) { } void dBgS::UpdateScrollTex() { - MapSrollText_t *scrollTex = (MapSrollText_t *)OarcManager::GetInstance()->getData(common_folder, MAP_SCROLL_TEX_FILE); + MapSrollText_t *scrollTex = + (MapSrollText_t *)OarcManager::GetInstance()->getData(common_folder, MAP_SCROLL_TEX_FILE); for (int i = 0; i < 5; ++i, ++scrollTex) { if (++mField_0x3864[i] >= scrollTex->mField_0x0E) { mField_0x3864[i] = 0;