mirror of
https://github.com/zeldaret/ss
synced 2026-07-09 06:13:17 -04:00
states finished
This commit is contained in:
@@ -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
|
||||
dAcOBarrel_c_classInit__Fv = .text:0x000000F0; // type:function size:0x16C
|
||||
fn_293_260 = .text:0x00000260; // type:function size:0x58
|
||||
__dt__15dShadowCircle_cFv = .text:0x00000260; // type:function size:0x58
|
||||
__dt__25sFState_c<12dAcOBarrel_c>Fv = .text:0x000002C0; // type:function size:0x58
|
||||
__dt__28sFStateFct_c<12dAcOBarrel_c>Fv = .text:0x00000320; // type:function size:0x6C
|
||||
__dt__81sStateMgr_c<12dAcOBarrel_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000390; // type:function size:0xA0
|
||||
__dt__51sFStateMgr_c<12dAcOBarrel_c,20sStateMethodUsr_FI_c>Fv = .text:0x00000430; // type:function size:0xA4
|
||||
fn_293_4E0 = .text:0x000004E0; // type:function size:0x5C
|
||||
__dt__14dWaterEffect_cFv = .text:0x000004E0; // type:function size:0x5C
|
||||
createHeap__12dAcOBarrel_cFv = .text:0x00000540; // type:function size:0xAC
|
||||
fn_293_5F0 = .text:0x000005F0; // type:function size:0x5B0
|
||||
actorCreate__12dAcOBarrel_cFv = .text:0x000005F0; // type:function size:0x5B0
|
||||
changeState__81sStateMgr_c<12dAcOBarrel_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x00000BA0; // type:function size:0x10
|
||||
fn_293_BB0 = .text:0x00000BB0; // type:function size:0x248
|
||||
fn_293_E00 = .text:0x00000E00; // type:function size:0x8
|
||||
fn_293_E10 = .text:0x00000E10; // type:function size:0x3F4
|
||||
actorPostCreate__12dAcOBarrel_cFv = .text:0x00000BB0; // type:function size:0x248
|
||||
doDelete__12dAcOBarrel_cFv = .text:0x00000E00; // type:function size:0x8
|
||||
actorExecute__12dAcOBarrel_cFv = .text:0x00000E10; // type:function size:0x3F4
|
||||
executeState__81sStateMgr_c<12dAcOBarrel_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00001210; // type:function size:0x10
|
||||
getStateID__81sStateMgr_c<12dAcOBarrel_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00001220; // type:function size:0x10
|
||||
fn_293_1230 = .text:0x00001230; // type:function size:0xA0
|
||||
fn_293_12D0 = .text:0x000012D0; // type:function size:0x70
|
||||
fn_293_1340 = .text:0x00001340; // type:function size:0x9C
|
||||
fn_293_13E0 = .text:0x000013E0; // type:function size:0xE8
|
||||
registerInEvent__12dAcOBarrel_cFv = .text:0x00001230; // type:function size:0xA0
|
||||
unkVirtFunc_0x6C__12dAcOBarrel_cFv = .text:0x000012D0; // type:function size:0x70
|
||||
doInteraction__12dAcOBarrel_cFl = .text:0x00001340; // type:function size:0x9C
|
||||
draw__12dAcOBarrel_cFv = .text:0x000013E0; // type:function size:0xE8
|
||||
initializeState_Wait__12dAcOBarrel_cFv = .text:0x000014D0; // type:function size:0x18
|
||||
executeState_Wait__12dAcOBarrel_cFv = .text:0x000014F0; // type:function size:0x35C
|
||||
finalizeState_Wait__12dAcOBarrel_cFv = .text:0x00001850; // type:function size:0x4
|
||||
@@ -54,30 +54,30 @@ initializeState_Rebirth__12dAcOBarrel_cFv = .text:0x00002DC0; // type:function s
|
||||
executeState_Rebirth__12dAcOBarrel_cFv = .text:0x00002F70; // type:function size:0xE8
|
||||
fn_293_3060 = .text:0x00003060; // type:function size:0x1C
|
||||
finalizeState_Rebirth__12dAcOBarrel_cFv = .text:0x00003080; // type:function size:0x4C
|
||||
fn_293_30D0 = .text:0x000030D0; // type:function size:0xE0
|
||||
fn_293_31B0 = .text:0x000031B0; // type:function size:0x3B0
|
||||
fn_293_3560 = .text:0x00003560; // type:function size:0x24C
|
||||
fn_293_37B0 = .text:0x000037B0; // type:function size:0x26C
|
||||
fn_293_30D0__12dAcOBarrel_cFv = .text:0x000030D0; // type:function size:0xE0
|
||||
fn_293_31B0__12dAcOBarrel_cFv = .text:0x000031B0; // type:function size:0x3B0
|
||||
fn_293_3560__12dAcOBarrel_cFv = .text:0x00003560; // type:function size:0x24C
|
||||
fn_293_37B0__12dAcOBarrel_cFv = .text:0x000037B0; // type:function size:0x26C
|
||||
fn_293_3A20 = .text:0x00003A20; // type:function size:0x384
|
||||
fn_293_3DB0 = .text:0x00003DB0; // type:function size:0x44C
|
||||
fn_293_4200 = .text:0x00004200; // type:function size:0x39C
|
||||
fn_293_45A0 = .text:0x000045A0; // type:function size:0x4E4
|
||||
fn_293_4A90 = .text:0x00004A90; // type:function size:0x12C
|
||||
fn_293_4BC0 = .text:0x00004BC0; // type:function size:0x58
|
||||
fn_293_3DB0__12dAcOBarrel_cFv = .text:0x00003DB0; // type:function size:0x44C
|
||||
fn_293_4200__12dAcOBarrel_cFv = .text:0x00004200; // type:function size:0x39C
|
||||
fn_293_45A0__12dAcOBarrel_cFv = .text:0x000045A0; // type:function size:0x4E4
|
||||
fn_293_4A90__12dAcOBarrel_cFRC4mAng = .text:0x00004A90; // type:function size:0x12C
|
||||
fn_293_4BC0__12dAcOBarrel_cFv = .text:0x00004BC0; // type:function size:0x58
|
||||
fn_293_4C20 = .text:0x00004C20; // type:function size:0x40
|
||||
fn_293_4C60 = .text:0x00004C60; // type:function size:0x78
|
||||
fn_293_4C60__12dAcOBarrel_cFv = .text:0x00004C60; // type:function size:0x78
|
||||
fn_293_4CE0 = .text:0x00004CE0; // type:function size:0x1C
|
||||
fn_293_4D00 = .text:0x00004D00; // type:function size:0x1C4
|
||||
fn_293_4ED0 = .text:0x00004ED0; // type:function size:0xA8
|
||||
fn_293_4F80 = .text:0x00004F80; // type:function size:0x130
|
||||
fn_293_50B0 = .text:0x000050B0; // type:function size:0x98
|
||||
fn_293_5150 = .text:0x00005150; // type:function size:0x208
|
||||
fn_293_5360 = .text:0x00005360; // type:function size:0xDC
|
||||
fn_293_4D00__12dAcOBarrel_cFv = .text:0x00004D00; // type:function size:0x1C4
|
||||
fn_293_4ED0__12dAcOBarrel_cFv = .text:0x00004ED0; // type:function size:0xA8
|
||||
fn_293_4F80__12dAcOBarrel_cFv = .text:0x00004F80; // type:function size:0x130
|
||||
fn_293_50B0__12dAcOBarrel_cFv = .text:0x000050B0; // type:function size:0x98
|
||||
fn_293_5150__12dAcOBarrel_cFv = .text:0x00005150; // type:function size:0x208
|
||||
fn_293_5360__12dAcOBarrel_cFv = .text:0x00005360; // type:function size:0xDC
|
||||
fn_293_5440 = .text:0x00005440; // type:function size:0x8C
|
||||
fn_293_54D0 = .text:0x000054D0; // type:function size:0x380
|
||||
fn_293_5850 = .text:0x00005850; // type:function size:0x70
|
||||
fn_293_58C0 = .text:0x000058C0; // type:function size:0x50
|
||||
fn_293_5910 = .text:0x00005910; // type:function size:0xC0
|
||||
fn_293_5850__12dAcOBarrel_cFPfb = .text:0x00005850; // type:function size:0x70
|
||||
fn_293_58C0__12dAcOBarrel_cFv = .text:0x000058C0; // type:function size:0x50
|
||||
fn_293_5910__12dAcOBarrel_cFv = .text:0x00005910; // type:function size:0xC0
|
||||
__dt__12dAcOBarrel_cFv = .text:0x000059D0; // type:function size:0x164
|
||||
build__28sFStateFct_c<12dAcOBarrel_c>FRC12sStateIDIf_c = .text:0x00005B40; // type:function size:0x60
|
||||
dispose__28sFStateFct_c<12dAcOBarrel_c>FRP10sStateIf_c = .text:0x00005BA0; // type:function size:0xC
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#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_quat.h"
|
||||
#include "m/m_vec.h"
|
||||
#include "nw4r/g3d/res/g3d_resfile.h"
|
||||
@@ -46,6 +47,9 @@ public:
|
||||
/** fn_293_30D0 */
|
||||
void fn_293_30D0();
|
||||
|
||||
/** fn_293_31B0 */
|
||||
void fn_293_31B0();
|
||||
|
||||
/** fn_293_3560 */
|
||||
void fn_293_3560();
|
||||
|
||||
@@ -79,6 +83,9 @@ public:
|
||||
/** fn_293_4ED0 */
|
||||
bool fn_293_4ED0();
|
||||
|
||||
/** fn_293_4F80 */
|
||||
bool fn_293_4F80();
|
||||
|
||||
/** fn_293_50B0 */
|
||||
bool fn_293_50B0();
|
||||
|
||||
@@ -88,6 +95,9 @@ public:
|
||||
/** fn_293_5360 */
|
||||
void fn_293_5360();
|
||||
|
||||
/** fn_293_5850 */
|
||||
void fn_293_5850(f32 *, bool);
|
||||
|
||||
/** fn_293_58C0 */
|
||||
void fn_293_58C0();
|
||||
|
||||
@@ -132,7 +142,8 @@ private:
|
||||
/* 0xC7C */ TimeAreaStruct mTimeArea;
|
||||
/* 0xC88 */ dAcRef_c<dAcNpcCeLady_c> mCeLady;
|
||||
/* 0xC94 */ dAcRef_c<dAcNpcCeFriend_c> mCeFriend;
|
||||
/* 0xCA0 */ u8 _CA0[0xD08 - 0xCA0];
|
||||
/* 0xCA0 */ EffectsStruct mEmitter0;
|
||||
/* 0xCD4 */ EffectsStruct mEmitter1;
|
||||
/* 0xD08 */ dWaterEffect_c mWaterEffect;
|
||||
/* 0xD70 */ mQuat_c quat_0xD50;
|
||||
/* 0xD70 */ mQuat_c quat_0xD60;
|
||||
@@ -142,13 +153,17 @@ private:
|
||||
/* 0xDA0 */ mQuat_c quat_0xDA0;
|
||||
/* 0xDB0 */ u8 _DB0[0xDBC - 0xDB0];
|
||||
/* 0xDBC */ mVec3_c field_0xDBC;
|
||||
/* 0xDC8 */ u8 _DC8[0xDD4 - 0xDC8];
|
||||
/* 0xDC8 */ mVec3_c field_0xDC8;
|
||||
/* 0xDD4 */ f32 field_0xDD4;
|
||||
/* 0xDD8 */ mVec3_c field_0xDD8;
|
||||
/* 0xDE4 */ mAng3_c field_0xDE4;
|
||||
/* 0xDEE */ u8 _DEA[0xDEC - 0xDEA];
|
||||
/* 0xDEC */ u16 field_0xDEC;
|
||||
/* 0xDEE */ u8 _DEE[0xE00 - 0xDEE];
|
||||
/* 0xDEA */ mAng field_0xDEA;
|
||||
/* 0xDEC */ mAng field_0xDEC;
|
||||
/* 0xDEE */ mAng field_0xDEE;
|
||||
/* 0xDF0 */ mAng field_0xDF0;
|
||||
/* 0xDF2 */ mAng field_0xDF2;
|
||||
/* 0xDF4 */ u8 _DF4[0xDFE - 0xDF4];
|
||||
/* 0xDF4 */ u16 field_0xDFE;
|
||||
/* 0xE00 */ bool field_0xE00; //< Can Damage ?
|
||||
/* 0xE01 */ bool field_0xE01;
|
||||
/* 0xE02 */ bool field_0xE02;
|
||||
@@ -158,7 +173,7 @@ private:
|
||||
/* 0xE06 */ bool field_0xE06;
|
||||
/* 0xE07 */ bool field_0xE07;
|
||||
/* 0xE08 */ bool field_0xE08;
|
||||
/* 0xE09 */ bool field_0xE09;
|
||||
/* 0xE09 */ bool field_0xE09; //< for OBJ_VSD Present
|
||||
/* 0xE0A */ bool field_0xE0A;
|
||||
/* 0xE0B */ bool field_0xE0B;
|
||||
/* 0xE0C */ bool field_0xE0C;
|
||||
@@ -175,6 +190,7 @@ private:
|
||||
/* 0xE17 */ u8 field_0xE17;
|
||||
/* 0xE18 */ u8 field_0xE18;
|
||||
/* 0xE19 */ u8 mBrokenFlag;
|
||||
/* 0xE1C */ s32 mDropItem;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -913,9 +913,6 @@ public:
|
||||
void OnAtSet() {
|
||||
mAt.OnSPrm(1);
|
||||
}
|
||||
void OffAtSet() {
|
||||
mAt.OffSPrm(1);
|
||||
}
|
||||
u32 ChkAtNoMass() const {
|
||||
return mAt.MskSPrm(0x400);
|
||||
}
|
||||
|
||||
@@ -17,9 +17,9 @@ enum SpecialItemDropTable {
|
||||
SPECIAL_ITEM_8,
|
||||
SPECIAL_ITEM_9,
|
||||
SPECIAL_ITEM_10,
|
||||
SPECIAL_ITEM_11,
|
||||
SPECIAL_ITEM_12,
|
||||
SPECIAL_ITEM_13,
|
||||
SPECIAL_ITEM_10BOMBS,
|
||||
SPECIAL_ITEM_ARROWS,
|
||||
SPECIAL_ITEM_SEEDS,
|
||||
// ...
|
||||
};
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include "c/c_math.h"
|
||||
#include "common.h"
|
||||
#include "d/a/d_a_base.h"
|
||||
#include "d/a/d_a_item.h"
|
||||
#include "d/a/d_a_player.h"
|
||||
#include "d/a/npc/d_a_npc_ce_friend.h"
|
||||
#include "d/a/npc/d_a_npc_ce_lady.h"
|
||||
@@ -10,11 +11,14 @@
|
||||
#include "d/col/bg/d_bg_s.h"
|
||||
#include "d/col/bg/d_bg_s_gnd_chk.h"
|
||||
#include "d/col/c/c_cc_d.h"
|
||||
#include "d/col/c/c_m3d_g_tri.h"
|
||||
#include "d/col/cc/d_cc_d.h"
|
||||
#include "d/col/cc/d_cc_s.h"
|
||||
#include "d/d_linkage.h"
|
||||
#include "d/d_rumble.h"
|
||||
#include "d/flag/sceneflag_manager.h"
|
||||
#include "d/snd/d_snd_wzsound.h"
|
||||
#include "egg/math/eggMath.h"
|
||||
#include "f/f_base.h"
|
||||
#include "f/f_profile_name.h"
|
||||
#include "m/m_angle.h"
|
||||
@@ -23,10 +27,12 @@
|
||||
#include "nw4r/g3d/res/g3d_resfile.h"
|
||||
#include "nw4r/math/math_arithmetic.h"
|
||||
#include "rvl/MTX/mtxvec.h"
|
||||
#include "rvl/MTX/vec.h"
|
||||
#include "s/s_Math.h"
|
||||
#include "toBeSorted/attention.h"
|
||||
#include "toBeSorted/d_emitter.h"
|
||||
#include "toBeSorted/event_manager.h"
|
||||
#include "toBeSorted/special_item_drop_mgr.h"
|
||||
|
||||
f32 sFloats1(1.f);
|
||||
|
||||
@@ -129,7 +135,7 @@ int dAcOBarrel_c::actorCreate() {
|
||||
mMaxSpeed = -40.f;
|
||||
|
||||
field_0xDD8.y = 0.f;
|
||||
field_0xDEC = 0;
|
||||
field_0xDEC = mAng::Zero();
|
||||
quat_0xD50.set(1.f, 0.f, 0.f, 0.f);
|
||||
mScale.set(1.f, 1.f, 1.f);
|
||||
quat_0xD70.set(1.f, 0.f, 0.f, 0.f);
|
||||
@@ -143,8 +149,8 @@ int dAcOBarrel_c::actorCreate() {
|
||||
mCyl.SetAtGrp(0x10);
|
||||
}
|
||||
|
||||
/* field_0xCC8 = this */
|
||||
/* field_0xCFC = this */
|
||||
mEmitter0.init(this);
|
||||
mEmitter1.init(this);
|
||||
|
||||
if (mRotation.x != 0 || mRotation.z != 0) {
|
||||
field_0xE02 = true;
|
||||
@@ -393,7 +399,7 @@ void dAcOBarrel_c::executeState_Wait() {
|
||||
holdSoundWithFloatParam(SE_Barrel_ROLL_LV, mSpeed);
|
||||
mCyl.OnAtSet();
|
||||
} else {
|
||||
mCyl.OffAtSet();
|
||||
mCyl.ClrAtSet();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -457,7 +463,7 @@ void dAcOBarrel_c::initializeState_GrabUp() {
|
||||
}
|
||||
|
||||
mCyl.SetCo_0x400();
|
||||
mCyl.OffAtSet();
|
||||
mCyl.ClrAtSet();
|
||||
|
||||
if (field_0xE04) {
|
||||
field_0xE15 = 10;
|
||||
@@ -495,7 +501,7 @@ void dAcOBarrel_c::executeState_GrabUp() {
|
||||
}
|
||||
void dAcOBarrel_c::finalizeState_GrabUp() {
|
||||
mCyl.ClrCo_0x400();
|
||||
mCyl.OffAtSet();
|
||||
mCyl.ClrAtSet();
|
||||
field_0xE02 = true;
|
||||
}
|
||||
|
||||
@@ -530,21 +536,276 @@ void dAcOBarrel_c::finalizeState_GrabPut() {
|
||||
mCyl.OnAtSet();
|
||||
}
|
||||
|
||||
void dAcOBarrel_c::initializeState_Slope() {}
|
||||
void dAcOBarrel_c::executeState_Slope() {}
|
||||
void dAcOBarrel_c::finalizeState_Slope() {}
|
||||
void dAcOBarrel_c::initializeState_Water() {}
|
||||
void dAcOBarrel_c::executeState_Water() {}
|
||||
void dAcOBarrel_c::finalizeState_Water() {}
|
||||
void dAcOBarrel_c::initializeState_Water2() {}
|
||||
void dAcOBarrel_c::executeState_Water2() {}
|
||||
void dAcOBarrel_c::finalizeState_Water2() {}
|
||||
void dAcOBarrel_c::initializeState_Explode() {}
|
||||
void dAcOBarrel_c::executeState_Explode() {}
|
||||
void dAcOBarrel_c::initializeState_Slope() {
|
||||
mVec3_c vz_out;
|
||||
cM3dGTri tri;
|
||||
dBgS::GetInstance()->GetTriPla(mObjAcch.GetGnd(), &tri);
|
||||
|
||||
if (checkSlower(EGG::Math<f32>::epsilon())) {
|
||||
mAngle.y = tri.GetAngleY();
|
||||
mSpeed = 5.f;
|
||||
}
|
||||
field_0xDEE = tri.GetAngleY();
|
||||
field_0xDEE -= mAngle.y;
|
||||
|
||||
mAng ang(mAng::abs(mAngle.y - field_0xDEE));
|
||||
field_0xDF0 = nw4r::math::FSqrt(ang.degree2() / 180.f) * 910.f;
|
||||
|
||||
MTXMultVecSR(mWorldMtx, -mVec3_c::Ez, vz_out);
|
||||
field_0xDEA = vz_out.atan2sX_Z();
|
||||
|
||||
field_0xE09 = false;
|
||||
|
||||
if (dBgS_ObjGndChk::CheckPos(mPosition + mVec3_c::Ey * 100.f)) {
|
||||
const dAcObjBase_c *pObj = dBgS::GetInstance()->GetActorPointer(dBgS_ObjGndChk::GetInstance());
|
||||
if (dBgS::GetInstance()->ChkMoveBG(dBgS_ObjGndChk::GetInstance(), true)) {
|
||||
if (pObj && pObj->mProfileName == fProfile::OBJ_VSD) {
|
||||
field_0xE09 = true;
|
||||
quat_0xD70.set(1.f, 0.f, 0.f, 0.f);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
void dAcOBarrel_c::executeState_Slope() {
|
||||
if (mObjAcch.ChkGroundLanding() && !field_0xE0E) {
|
||||
fn_293_37B0();
|
||||
dJEffManager_c::spawnGroundEffect(mPosition, mPolyAttr0, mPolyAttr1, mVelocity, 0, 1.f, field_0x1B0);
|
||||
startSound(SE_Barrel_ROLL_GROUND);
|
||||
} else if (mObjAcch.ChkGndHit()) {
|
||||
field_0xDD8.y = 0.f;
|
||||
mVelocity.y = 0.f;
|
||||
fn_293_30D0();
|
||||
|
||||
if (field_0xE02) {
|
||||
fn_293_31B0();
|
||||
} else {
|
||||
fn_293_58C0();
|
||||
mVec3_c v = field_0xDBC;
|
||||
v.rotY(-mRotation.y);
|
||||
|
||||
if (field_0xE09) {
|
||||
v = mVec3_c::Ey;
|
||||
}
|
||||
|
||||
quat_0xD70.Set(mVec3_c::Ey, v);
|
||||
}
|
||||
|
||||
fn_293_3560();
|
||||
|
||||
if (checkSlower(EGG::Math<f32>::epsilon())) {
|
||||
field_0xE00 = false;
|
||||
} else if (field_0xE02) {
|
||||
field_0xE00 = fn_293_4F80();
|
||||
}
|
||||
|
||||
if (!field_0xE08 && !isType_0() && mYOffset < 0.f && fn_293_4BC0()) {
|
||||
mSpeed = 0.f;
|
||||
field_0xE00 = false;
|
||||
fn_293_5910();
|
||||
}
|
||||
|
||||
if (mSpeed > 0.f && field_0xE02) {
|
||||
holdSoundWithFloatParam(SE_Barrel_ROLL_LV, mSpeed);
|
||||
mCyl.OnAtSet();
|
||||
} else {
|
||||
mCyl.ClrAtSet();
|
||||
}
|
||||
|
||||
if (!field_0xE08 && !isType_0() && checkYOffsetField_0x100()) {
|
||||
killNoItemDrop();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!fn_293_4A90(mAng::deg2short(1))) {
|
||||
mStateMgr.changeState(StateID_Wait);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (fn_293_4C60()) {
|
||||
mStateMgr.changeState(StateID_Water);
|
||||
} else if (getLinkage().checkConnection(dLinkage_c::CONNECTION_1)) {
|
||||
mStateMgr.changeState(StateID_GrabUp);
|
||||
}
|
||||
}
|
||||
void dAcOBarrel_c::finalizeState_Slope() {
|
||||
field_0xE09 = false;
|
||||
}
|
||||
|
||||
void dAcOBarrel_c::initializeState_Water() {
|
||||
field_0xDE4.x = cM::rndInt(0x100) + 0x900;
|
||||
field_0xDF2 = cM::rndInt(0x100) + 0x1000;
|
||||
|
||||
mAcceleration *= 0.25f;
|
||||
mVelocity.y *= 0.25f;
|
||||
|
||||
mStts.SetRank(9);
|
||||
|
||||
field_0xE16 = 120;
|
||||
|
||||
startSound(SE_Barrel_ROLL_FLOAT);
|
||||
startSound(SE_O_FALL_WATER_M);
|
||||
}
|
||||
void dAcOBarrel_c::executeState_Water() {
|
||||
if (mType == dAcOBarrel_c::Type2 && 0 == sLib::calcTimer(&field_0xE16)) {
|
||||
mVelocity.y = nw4r::ut::Max(mVelocity.y + mAcceleration * 0.2f, mMaxSpeed * 0.2f);
|
||||
|
||||
if (mObjAcch.ChkGndHit()) {
|
||||
fn_293_4200();
|
||||
}
|
||||
} else {
|
||||
fn_293_5850(&sFloats1, true);
|
||||
|
||||
if (mScale.y > 0.f) {
|
||||
mWaterEffect.execute(mObjAcch.GetWtrGroundH(), mObjAcch.GetGroundH());
|
||||
}
|
||||
|
||||
if (mType != dAcOBarrel_c::Type2 && nw4r::math::FAbs(field_0xDD8.z + mAcceleration) < 0.1f &&
|
||||
nw4r::math::FAbs(mVelocity.y + mAcceleration) < 0.1f) {
|
||||
mStateMgr.changeState(StateID_Water2);
|
||||
} else if (!fn_293_4C60()) {
|
||||
mStateMgr.changeState(StateID_Wait);
|
||||
}
|
||||
}
|
||||
}
|
||||
void dAcOBarrel_c::finalizeState_Water() {
|
||||
field_0xDF2 = mAng::Zero();
|
||||
}
|
||||
|
||||
void dAcOBarrel_c::initializeState_Water2() {
|
||||
mVelocity.y = cM::rndFX(0.1f) + 0.2f;
|
||||
field_0xDF2 = cM::rndInt(0x50) + 0x300;
|
||||
field_0xDE4.x = cM::rndInt(0x100) + 0x400;
|
||||
}
|
||||
void dAcOBarrel_c::executeState_Water2() {
|
||||
static f32 sFloat = 1.f;
|
||||
fn_293_5850(&sFloat, false);
|
||||
if (mScale.y > 0.f) {
|
||||
mWaterEffect.execute(mObjAcch.GetWtrGroundH(), mObjAcch.GetGroundH());
|
||||
}
|
||||
if (!fn_293_4C60()) {
|
||||
mStateMgr.changeState(StateID_Wait);
|
||||
}
|
||||
}
|
||||
void dAcOBarrel_c::finalizeState_Water2() {
|
||||
field_0xDF2 = mAng::Zero();
|
||||
}
|
||||
|
||||
void dAcOBarrel_c::initializeState_Explode() {
|
||||
setActorProperty(AC_PROP_0x4);
|
||||
mSpeed = 0.f;
|
||||
mVelocity = mVec3_c::Zero;
|
||||
mAcceleration = 0.f;
|
||||
|
||||
mSph.ClrTgSet();
|
||||
mSph.ClrCoSet();
|
||||
mSph.OnAtSet();
|
||||
|
||||
field_0xE13 = 5;
|
||||
|
||||
f32 dist = mPosition.squareDistance(dAcPy_c::GetLink()->mPosition);
|
||||
if (dist < 400.f * 400.f) {
|
||||
dRumble_c::start(dRumble_c::sRumblePreset1, dRumble_c::FLAG_SLOT0 | dRumble_c::FLAG_ACTIVE);
|
||||
} else if (dist < 800.f * 800.f) {
|
||||
dRumble_c::start(dRumble_c::sRumblePreset3, dRumble_c::FLAG_SLOT0 | dRumble_c::FLAG_ACTIVE);
|
||||
}
|
||||
}
|
||||
void dAcOBarrel_c::executeState_Explode() {
|
||||
if (0 == sLib::calcTimer(&field_0xE13)) {
|
||||
if (field_0xE07) {
|
||||
itemDroppingAndGivingRelated(nullptr, 0);
|
||||
}
|
||||
deleteRequest();
|
||||
}
|
||||
}
|
||||
void dAcOBarrel_c::finalizeState_Explode() {}
|
||||
void dAcOBarrel_c::initializeState_KrakenBorn() {}
|
||||
void dAcOBarrel_c::executeState_KrakenBorn() {}
|
||||
|
||||
void dAcOBarrel_c::initializeState_KrakenBorn() {
|
||||
mSpeed = 30.f;
|
||||
mCyl.OffAtGrp(0x2);
|
||||
|
||||
field_0xE00 = true;
|
||||
field_0xE02 = true;
|
||||
}
|
||||
void dAcOBarrel_c::executeState_KrakenBorn() {
|
||||
if (mObjAcch.ChkGroundLanding()) {
|
||||
fn_293_37B0();
|
||||
dJEffManager_c::spawnGroundEffect(mPosition, mPolyAttr0, mPolyAttr1, mVelocity, 0, 1.f, field_0x1B0);
|
||||
startSound(SE_Barrel_ROLL_GROUND);
|
||||
} else if (mObjAcch.ChkGndHit()) {
|
||||
field_0xDD8.y = 0.f;
|
||||
mVelocity.y = 0.f;
|
||||
if (mSpeed > 0.f) {
|
||||
holdSoundWithFloatParam(SE_Barrel_ROLL_LV, mSpeed);
|
||||
}
|
||||
}
|
||||
|
||||
if (fn_293_4C60()) {
|
||||
deleteRequest();
|
||||
}
|
||||
}
|
||||
void dAcOBarrel_c::finalizeState_KrakenBorn() {}
|
||||
void dAcOBarrel_c::initializeState_Rebirth() {}
|
||||
void dAcOBarrel_c::executeState_Rebirth() {}
|
||||
void dAcOBarrel_c::finalizeState_Rebirth() {}
|
||||
|
||||
void dAcOBarrel_c::initializeState_Rebirth() {
|
||||
SpecialItemDropMgr::GetInstance()->giveSpecialDropItem(
|
||||
getParams2UpperByte(), mRoomID, &mPosition, 0, mRotation.y, -1
|
||||
);
|
||||
field_0xDC8 = mPosition;
|
||||
mpPosition = &field_0xDC8;
|
||||
mRotation = mRotationCopy;
|
||||
quat_0xD90.set(1.f, 0.f, 0.f, 0.f);
|
||||
quat_0xD70.set(1.f, 0.f, 0.f, 0.f);
|
||||
quat_0xD80.set(1.f, 0.f, 0.f, 0.f);
|
||||
quat_0xDA0.set(1.f, 0.f, 0.f, 0.f);
|
||||
|
||||
mSpeed = 0.f;
|
||||
mVelocity.y = 0.f;
|
||||
field_0xDD8.y = 0.f;
|
||||
|
||||
mCyl.ClrCoSet();
|
||||
mCyl.ClrTgSet();
|
||||
getLinkage().fn_80050EA0(this);
|
||||
|
||||
mStts.SetRank(0);
|
||||
setObjectProperty(OBJ_PROP_0x200);
|
||||
|
||||
switch (getParams2UpperByte()) {
|
||||
case SPECIAL_ITEM_10BOMBS: mDropItem = 2; break;
|
||||
case SPECIAL_ITEM_ARROWS: mDropItem = 0; break;
|
||||
case SPECIAL_ITEM_SEEDS: mDropItem = 1; break;
|
||||
}
|
||||
|
||||
field_0xDFE = 150;
|
||||
unsetActorProperty(AC_PROP_0x1);
|
||||
}
|
||||
void dAcOBarrel_c::executeState_Rebirth() {
|
||||
field_0xDD8.y = 0.f;
|
||||
|
||||
// Why??
|
||||
mPosition.set(mPositionCopy.x, mPositionCopy.y, mPositionCopy.z);
|
||||
mOldPosition.set(mPositionCopy.x, mPositionCopy.y, mPositionCopy.z);
|
||||
|
||||
u8 count = 0xFF;
|
||||
switch (mDropItem) {
|
||||
case 2: count = dAcItem_c::getTotalBombCount(); break;
|
||||
case 0: count = dAcItem_c::getTotalArrowCount(); break;
|
||||
case 1: count = dAcItem_c::getTotalSeedCount(); break;
|
||||
}
|
||||
|
||||
if (checkObjectProperty(OBJ_PROP_0x2) && count <= 3) {
|
||||
if (0 == sLib::calcTimer(&field_0xDFE)) {
|
||||
mStateMgr.changeState(StateID_Wait);
|
||||
}
|
||||
} else {
|
||||
field_0xDFE = 150;
|
||||
}
|
||||
}
|
||||
void dAcOBarrel_c::finalizeState_Rebirth() {
|
||||
mCyl.OnCoSet();
|
||||
mCyl.OnTgSet();
|
||||
field_0xE02 = false;
|
||||
mpPosition = &mPosition;
|
||||
unsetObjectProperty(OBJ_PROP_0x200);
|
||||
setActorProperty(AC_PROP_0x1);
|
||||
mStts.SetRank(9);
|
||||
}
|
||||
|
||||
@@ -407,10 +407,10 @@ void dAcOtubo_c::initializeState_Rebirth() {
|
||||
|
||||
int item_drop_table = getParams2UpperByte();
|
||||
switch (item_drop_table) {
|
||||
default: break;
|
||||
case SPECIAL_ITEM_11: field_0x9FC = 2; break;
|
||||
case SPECIAL_ITEM_12: field_0x9FC = 0; break;
|
||||
case SPECIAL_ITEM_13: field_0x9FC = 1; break;
|
||||
default: break;
|
||||
case SPECIAL_ITEM_10BOMBS: field_0x9FC = 2; break;
|
||||
case SPECIAL_ITEM_ARROWS: field_0x9FC = 0; break;
|
||||
case SPECIAL_ITEM_SEEDS: field_0x9FC = 1; break;
|
||||
}
|
||||
mTimer_0x9E8 = 150;
|
||||
unsetActorProperty(AC_PROP_0x1);
|
||||
|
||||
Reference in New Issue
Block a user