mirror of
https://github.com/zeldaret/tww.git
synced 2026-08-21 14:07:29 -04:00
boko closer to matching, various documentation, enum/inline/struct fixes
This commit is contained in:
@@ -430,7 +430,7 @@ public:
|
||||
|
||||
protected:
|
||||
/* 0x10 */ u32 mType;
|
||||
/* 0x14 */ u8 mAtp;
|
||||
/* 0x14 */ u8 mAtp; // AtPoint, amount of damage done when attacking
|
||||
}; // size = 0x18
|
||||
|
||||
STATIC_ASSERT(0x18 == sizeof(cCcD_ObjAt));
|
||||
|
||||
+35
-11
@@ -24,6 +24,27 @@ struct LineKe {
|
||||
|
||||
class daBoko_c : public fopAc_ac_c {
|
||||
public:
|
||||
enum {
|
||||
/* 0x0 */ Type_BOKO_STICK_e = 0x0,
|
||||
/* 0x1 */ Type_MACHETE_e = 0x1,
|
||||
/* 0x2 */ Type_STALFOS_MACE_e = 0x2,
|
||||
/* 0x3 */ Type_DARKNUT_SWORD_e = 0x3,
|
||||
/* 0x4 */ Type_MOBLIN_SPEAR_e = 0x4,
|
||||
/* 0x5 */ Type_PGANON_SWORD_e = 0x5,
|
||||
Type_COUNT_e,
|
||||
/* 0x7 */ Type_UNK_7_e = 0x7, // TODO: What is this supposed to be? Lit torch? Is this ever set or only read?
|
||||
};
|
||||
|
||||
enum {
|
||||
/* 0x0 */ Mode_WAIT_e = 0x0,
|
||||
/* 0x1 */ Mode_MOVE_e = 0x1,
|
||||
/* 0x2 */ Mode_ENEMY_CARRY_e = 0x2,
|
||||
/* 0x3 */ Mode_PLAYER_CARRY_e = 0x3,
|
||||
/* 0x4 */ Mode_4_e = 0x4,
|
||||
/* 0x5 */ Mode_5_e = 0x5,
|
||||
/* 0x6 */ Mode_THROW_e = 0x6,
|
||||
};
|
||||
|
||||
static u32 m_bound_se[6];
|
||||
static u32 m_heap_size[6];
|
||||
static char* m_arc_name[6];
|
||||
@@ -31,7 +52,7 @@ public:
|
||||
static Vec m_cull_max[6];
|
||||
|
||||
typedef BOOL (daBoko_c::*ProcFunc_t)();
|
||||
|
||||
|
||||
daBoko_c();
|
||||
|
||||
static Vec m_top_offset[6];
|
||||
@@ -54,22 +75,25 @@ public:
|
||||
f32 getBlurRate() { return m_blur_rate[fopAcM_GetParam(this)]; }
|
||||
u8 getSeType() { return m_se_type[fopAcM_GetParam(this)]; }
|
||||
|
||||
int getFlameTimer() { return m2C4; }
|
||||
void getNowMode() {}
|
||||
void setNowMode(int) {}
|
||||
int getFlameTimer() { return mFlameTimer; }
|
||||
u8 getNowMode() { return mNowMode; }
|
||||
void setNowMode(int mode) { mNowMode = mode; }
|
||||
void moveStateInit(f32 speedForward, f32 speedY, s16 angleY) {
|
||||
speed.y = speedY;
|
||||
speedF = speedForward;
|
||||
current.angle.y = angleY;
|
||||
}
|
||||
void onFloorFlg() {} // maybe: m2BC = 1;
|
||||
void onFloorFlg() { mbFloorFlg = true; }
|
||||
void setMatrix(Mtx mtx) {
|
||||
if (mpModel) {
|
||||
mpModel->setBaseTRMtx(mtx);
|
||||
}
|
||||
}
|
||||
void setRotAngleSpeed(s16 speed) { m2C2 = speed; }
|
||||
void setThrow(s16 param_0) { m2BA = param_0; }
|
||||
void setThrow(s16 param_0) {
|
||||
mbThrow = true;
|
||||
m2CA = param_0;
|
||||
}
|
||||
|
||||
void getTopPos(cXyz*);
|
||||
void getBlurRootPos(cXyz*);
|
||||
@@ -94,22 +118,22 @@ public:
|
||||
BOOL createHeap();
|
||||
cPhs_State create();
|
||||
|
||||
public:
|
||||
private:
|
||||
/* 0x290 */ request_of_phase_process_class mPhase;
|
||||
/* 0x298 */ J3DModel* mpModel;
|
||||
/* 0x29C */ mDoExt_brkAnm mBrkAnm;
|
||||
#if VERSION > VERSION_DEMO
|
||||
/* 0x2B4 */ u32 m2B4;
|
||||
#endif
|
||||
/* 0x2B8 */ u8 mCurrentAction;
|
||||
/* 0x2B8 */ u8 mNowMode;
|
||||
/* 0x2B9 */ u8 m2B9;
|
||||
/* 0x2BA */ u8 m2BA;
|
||||
/* 0x2BA */ u8 mbThrow;
|
||||
/* 0x2BB */ u8 m2BB;
|
||||
/* 0x2BC */ u8 m2BC;
|
||||
/* 0x2BC */ u8 mbFloorFlg;
|
||||
/* 0x2BD */ u8 m2BD[0x2C0 - 0x2BD];
|
||||
/* 0x2C0 */ s16 m2C0;
|
||||
/* 0x2C2 */ s16 m2C2;
|
||||
/* 0x2C4 */ s16 m2C4;
|
||||
/* 0x2C4 */ s16 mFlameTimer;
|
||||
/* 0x2C6 */ u8 m2C6[0x2C8 - 0x2C6];
|
||||
/* 0x2C8 */ s16 m2C8;
|
||||
/* 0x2CA */ s16 m2CA;
|
||||
|
||||
@@ -77,6 +77,7 @@ enum dCcG_CoRPrm_e {
|
||||
enum dCcG_hitSe {
|
||||
/* 0x01 */ dCcG_SE_UNK1 = 1,
|
||||
/* 0x02 */ dCcG_SE_UNK2 = 2,
|
||||
/* 0x03 */ dCcG_SE_UNK3 = 3,
|
||||
/* 0x04 */ dCcG_SE_UNK4 = 4,
|
||||
/* 0x05 */ dCcG_SE_UNK5 = 5,
|
||||
/* 0x06 */ dCcG_SE_UNK6 = 6,
|
||||
|
||||
@@ -43,7 +43,7 @@ enum daPy__PlayerStatus0 {
|
||||
daPyStts0_UNK10_e = 0x00000010,
|
||||
daPyStts0_UNK20_e = 0x00000020,
|
||||
daPyStts0_UNK40_e = 0x00000040,
|
||||
daPyStts0_UNK80_e = 0x00000080,
|
||||
daPyStts0_UNK80_e = 0x00000080, // Maybe inside a Baba Bud before being spat out?
|
||||
daPyStts0_UNK100_e = 0x00000100,
|
||||
daPyStts0_UNK200_e = 0x00000200,
|
||||
daPyStts0_UNK400_e = 0x00000400,
|
||||
|
||||
+6
-10
@@ -834,24 +834,20 @@ public:
|
||||
/* 0x50 */ int mVrboxNum;
|
||||
};
|
||||
|
||||
struct dStage_darkStatus_c_0C {
|
||||
/* 0x00 */ u8 m00[4];
|
||||
}; // size = 0x4;
|
||||
|
||||
class dStage_darkStatus_c {
|
||||
public:
|
||||
/* 0x00 */ u8 mEnvAlpha;
|
||||
/* 0x01 */ u8 mBokoAlpha[2];
|
||||
/* 0x04 */ f32 mBokoScale[2];
|
||||
/* 0x0C */ dStage_darkStatus_c_0C field_0xc;
|
||||
/* 0x10 */ f32 field_0x10[2];
|
||||
/* 0x01 */ u8 mNonAlpha[2];
|
||||
/* 0x04 */ f32 mNonScale[2];
|
||||
/* 0x0C */ u8 mBokoAlpha[4];
|
||||
/* 0x10 */ f32 mBokoScale[2];
|
||||
/* 0x18 */ f32 field_0x18[2];
|
||||
|
||||
u8 getEnvAlpha() const { return mEnvAlpha; }
|
||||
u8 getNonAlpha(int i) const { return mNonAlpha[i]; }
|
||||
f32 getNonScale(int i) const { return mNonScale[i]; }
|
||||
u8 getBokoAlpha(int i) const { return mBokoAlpha[i]; }
|
||||
f32 getBokoScale(int i) const { return mBokoScale[i]; }
|
||||
// void getNonAlpha(int i) const {}
|
||||
// void getNonScale(int i) const {}
|
||||
}; // size = 0x20
|
||||
|
||||
class dBgW;
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#include "d/actor/d_a_npc_os.h"
|
||||
#include "d/actor/d_a_npc_md.h"
|
||||
#include "d/actor/d_a_npc_cb1.h"
|
||||
#include "d/actor/d_a_boko.h"
|
||||
|
||||
static dCcD_SrcCyl l_cyl_src = {
|
||||
// dCcD_SrcGObjInf
|
||||
@@ -1985,13 +1986,13 @@ BOOL daAgbsw0_c::MoveCheck(s16 conditionNo) {
|
||||
|
||||
break;
|
||||
case 0x2D:
|
||||
if(!daPy_getPlayerLinkActorClass()->checkGrabWeapon(1)) {
|
||||
if(!daPy_getPlayerLinkActorClass()->checkGrabWeapon(daBoko_c::Type_MACHETE_e)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
break;
|
||||
case 0x2E:
|
||||
if(daPy_getPlayerLinkActorClass()->checkGrabWeapon(1)) {
|
||||
if(daPy_getPlayerLinkActorClass()->checkGrabWeapon(daBoko_c::Type_MACHETE_e)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
+10
-11
@@ -669,8 +669,7 @@ static s32 target_info_count;
|
||||
static void* s_w_sub(void* param_1, void*) {
|
||||
if (fopAc_IsActor(param_1) && fopAcM_GetName(param_1) == PROC_BOKO) {
|
||||
daBoko_c* boko = (daBoko_c*)param_1;
|
||||
// TODO: enum for boko type
|
||||
if (fopAcM_GetParam(boko) != 4 && !fopAcM_checkCarryNow(boko)) {
|
||||
if (fopAcM_GetParam(boko) != daBoko_c::Type_MOBLIN_SPEAR_e && !fopAcM_checkCarryNow(boko)) {
|
||||
if (target_info_count < (s32)ARRAY_SIZE(target_info)) {
|
||||
target_info[target_info_count] = boko;
|
||||
target_info_count++;
|
||||
@@ -2816,7 +2815,7 @@ static void wepon_search(bk_class* i_this) {
|
||||
if (i_this->m0300[1] == 24) {
|
||||
if (boko != NULL && !fopAcM_checkCarryNow(boko)) {
|
||||
i_this->m0B30 = 2;
|
||||
if (fopAcM_GetParam(boko) == 0) {
|
||||
if (fopAcM_GetParam(boko) == daBoko_c::Type_BOKO_STICK_e) {
|
||||
i_this->m02D5 = 0;
|
||||
i_this->m1040.SetAtType(AT_TYPE_UNK2000);
|
||||
i_this->m1040.SetAtSe(dCcG_SE_UNK4);
|
||||
@@ -4207,13 +4206,13 @@ static BOOL daBk_Execute(bk_class* i_this) {
|
||||
}
|
||||
|
||||
if (i_this->m1214 != 0) {
|
||||
daBoko_c* temp = (daBoko_c*)fopAcM_SearchByID(i_this->m1200);
|
||||
if (temp != NULL) {
|
||||
daBoko_c* boko = (daBoko_c*)fopAcM_SearchByID(i_this->m1200);
|
||||
if (boko != NULL) {
|
||||
i_this->m1214 = 0;
|
||||
i_this->m0B30 = 1;
|
||||
fopAcM_setCarryNow(temp, FALSE);
|
||||
fopAcM_setCarryNow(boko, FALSE);
|
||||
MtxTrans(-10000.0f, -10000.0f, 0.0f, 0);
|
||||
temp->setMatrix(*calc_mtx);
|
||||
boko->setMatrix(*calc_mtx);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4359,9 +4358,9 @@ static BOOL daBk_Execute(bk_class* i_this) {
|
||||
enemy_fire(&i_this->mEnemyFire);
|
||||
|
||||
if (i_this->m0B30 != 0) {
|
||||
daBoko_c* r29 = (daBoko_c*)fopAcM_SearchByID(i_this->m1200);
|
||||
if (r29 != NULL) {
|
||||
if (fopAcM_checkCarryNow(r29)) {
|
||||
daBoko_c* boko = (daBoko_c*)fopAcM_SearchByID(i_this->m1200);
|
||||
if (boko != NULL) {
|
||||
if (fopAcM_checkCarryNow(boko)) {
|
||||
if (i_this->m0B7B == 0) {
|
||||
int jointIdx = 0x2C; // buki joint
|
||||
MTXCopy(i_this->mpMorf->getModel()->getAnmMtx(jointIdx), *calc_mtx);
|
||||
@@ -4394,7 +4393,7 @@ static BOOL daBk_Execute(bk_class* i_this) {
|
||||
s16 angleX = 0x5B1B + REG8_S(5);
|
||||
cMtx_XrotM(*calc_mtx, angleX);
|
||||
}
|
||||
r29->setMatrix(*calc_mtx);
|
||||
boko->setMatrix(*calc_mtx);
|
||||
cXyz sp64;
|
||||
sp64.x = REG8_F(12);
|
||||
sp64.y = REG8_F(13);
|
||||
|
||||
+127
-160
@@ -20,95 +20,48 @@
|
||||
#include "SSystem/SComponent/c_counter.h"
|
||||
|
||||
u32 daBoko_c::m_bound_se[] = {
|
||||
JA_SE_CM_BOKOBOU_BOUND, JA_SE_CM_NATA_BOUND, JA_SE_OBJ_ST_CLUB_FALL, JA_SE_OBJ_TN_SWORD_FALL, JA_SE_CM_LANCE_BOUND, JA_SE_OBJ_TN_SWORD_FALL
|
||||
/* Type_BOKO_STICK_e */ JA_SE_CM_BOKOBOU_BOUND,
|
||||
/* Type_MACHETE_e */ JA_SE_CM_NATA_BOUND,
|
||||
/* Type_STALFOS_MACE_e */ JA_SE_OBJ_ST_CLUB_FALL,
|
||||
/* Type_DARKNUT_SWORD_e */ JA_SE_OBJ_TN_SWORD_FALL,
|
||||
/* Type_MOBLIN_SPEAR_e */ JA_SE_CM_LANCE_BOUND,
|
||||
/* Type_PGANON_SWORD_e */ JA_SE_OBJ_TN_SWORD_FALL,
|
||||
};
|
||||
|
||||
u32 daBoko_c::m_heap_size[] = {
|
||||
0x2300,
|
||||
0x1240,
|
||||
0x1240,
|
||||
0x1240,
|
||||
#if VERSION == VERSION_DEMO
|
||||
0x3000,
|
||||
#else
|
||||
0x4200,
|
||||
#endif
|
||||
0x2000
|
||||
/* Type_BOKO_STICK_e */ 0x2300,
|
||||
/* Type_MACHETE_e */ 0x1240,
|
||||
/* Type_STALFOS_MACE_e */ 0x1240,
|
||||
/* Type_DARKNUT_SWORD_e */ 0x1240,
|
||||
/* Type_MOBLIN_SPEAR_e */ DEMO_SELECT(0x3000, 0x4200),
|
||||
/* Type_PGANON_SWORD_e */ 0x2000
|
||||
};
|
||||
|
||||
char* daBoko_c::m_arc_name[] = {
|
||||
"Boko", /* Boko stick */
|
||||
"Nata", /* Bokoblin machete */
|
||||
"Club", /* Stalfos mace/club */
|
||||
"Tkwn", /* Darknut sword */
|
||||
"Spear", /* Moblin spear */
|
||||
"Pgsw" /* Phantom Ganon's sword */
|
||||
/* Type_BOKO_STICK_e */ "Boko",
|
||||
/* Type_MACHETE_e */ "Nata",
|
||||
/* Type_STALFOS_MACE_e */ "Club",
|
||||
/* Type_DARKNUT_SWORD_e */ "Tkwn",
|
||||
/* Type_MOBLIN_SPEAR_e */ "Spear",
|
||||
/* Type_PGANON_SWORD_e */ "Pgsw"
|
||||
};
|
||||
|
||||
Vec daBoko_c::m_cull_min[6] = {
|
||||
{
|
||||
-20.0f,
|
||||
-10.0f,
|
||||
-95.0f,
|
||||
},
|
||||
{
|
||||
-20.0f,
|
||||
-10.0f,
|
||||
-95.0f,
|
||||
},
|
||||
{
|
||||
-35.0f,
|
||||
-35.0f,
|
||||
-125.0f,
|
||||
},
|
||||
{
|
||||
-45.0f,
|
||||
-10.0f,
|
||||
-145.0f,
|
||||
},
|
||||
{
|
||||
-20.0f,
|
||||
-20.0f,
|
||||
-180.0f,
|
||||
},
|
||||
{
|
||||
-50.0f,
|
||||
-20.0f,
|
||||
-140.0f,
|
||||
},
|
||||
Vec daBoko_c::m_cull_min[] = {
|
||||
/* Type_BOKO_STICK_e */ {-20.0f, -10.0f, -95.0f},
|
||||
/* Type_MACHETE_e */ {-20.0f, -10.0f, -95.0f},
|
||||
/* Type_STALFOS_MACE_e */ {-35.0f, -35.0f, -125.0f},
|
||||
/* Type_DARKNUT_SWORD_e */ {-45.0f, -10.0f, -145.0f},
|
||||
/* Type_MOBLIN_SPEAR_e */ {-20.0f, -20.0f, -180.0f},
|
||||
/* Type_PGANON_SWORD_e */ {-50.0f, -20.0f, -140.0f},
|
||||
};
|
||||
|
||||
Vec daBoko_c::m_cull_max[6] = {
|
||||
{
|
||||
20.0f,
|
||||
10.0f,
|
||||
95.0f,
|
||||
},
|
||||
{
|
||||
20.0f,
|
||||
10.0f,
|
||||
95.0f,
|
||||
},
|
||||
{
|
||||
35.0f,
|
||||
35.0f,
|
||||
120.0f,
|
||||
},
|
||||
{
|
||||
45.0f,
|
||||
10.0f,
|
||||
130.0f,
|
||||
},
|
||||
{
|
||||
20.0f,
|
||||
20.0f,
|
||||
200.0f,
|
||||
},
|
||||
{
|
||||
50.0f,
|
||||
20.0f,
|
||||
120.0f,
|
||||
},
|
||||
Vec daBoko_c::m_cull_max[] = {
|
||||
/* Type_BOKO_STICK_e */ {20.0f, 10.0f, 95.0f},
|
||||
/* Type_MACHETE_e */ {20.0f, 10.0f, 95.0f},
|
||||
/* Type_STALFOS_MACE_e */ {35.0f, 35.0f, 120.0f},
|
||||
/* Type_DARKNUT_SWORD_e */ {45.0f, 10.0f, 130.0f},
|
||||
/* Type_MOBLIN_SPEAR_e */ {20.0f, 20.0f, 200.0f},
|
||||
/* Type_PGANON_SWORD_e */ {50.0f, 20.0f, 120.0f},
|
||||
};
|
||||
|
||||
static cXyz l_break_particle_offset(0.0f, 0.0f, 30.0f);
|
||||
@@ -122,8 +75,12 @@ static daBoko_HIO_c l_HIO;
|
||||
|
||||
/* 000000EC-0000017C .text keDraw__8daBoko_cFv */
|
||||
void daBoko_c::keDraw() {
|
||||
#ifdef __MWERKS__
|
||||
mpLineKe->lineMat.update(0xA, 1.25f, (GXColor){0xFF, 0x64, 0x00, 0xFF}, 2, &tevStr);
|
||||
#else
|
||||
GXColor color = {0xFF, 0x64, 0x00, 0xFF};
|
||||
mpLineKe->lineMat.update(0xA, 1.25f, color, 2, &tevStr);
|
||||
#endif
|
||||
dComIfGd_set3DlineMat(&mpLineKe->lineMat);
|
||||
}
|
||||
|
||||
@@ -223,49 +180,49 @@ BOOL daBoko_c::draw() {
|
||||
mParticleCallBack.getEmitter()->clearStatus(4);
|
||||
}
|
||||
|
||||
if (m2C4 != 0) {
|
||||
dStage_darkStatus_c* pdVar4 = dStage_roomControl_c::getDarkStatus();
|
||||
if (pdVar4 != NULL) {
|
||||
if (mFlameTimer != 0) {
|
||||
dStage_darkStatus_c* dark_stts = dStage_roomControl_c::getDarkStatus();
|
||||
if (dark_stts != NULL) {
|
||||
GXColor color = {0xEB, 0x7D, 0, 0};
|
||||
dComIfGd_setAlphaModelColor(color);
|
||||
|
||||
s32 i;
|
||||
for (i = 0; i < 2; i++) {
|
||||
dComIfGd_setAlphaModel(dDlst_alphaModel_c::TYPE_SPHERE, mAlphaModelMtx[i], pdVar4->field_0xc.m00[i]);
|
||||
dComIfGd_setAlphaModel(dDlst_alphaModel_c::TYPE_SPHERE, mAlphaModelMtx[i], dark_stts->getBokoAlpha(i));
|
||||
}
|
||||
|
||||
if (mCurrentAction == 3 && dStage_roomControl_c::getDarkMode() != 0) {
|
||||
if (getNowMode() == Mode_PLAYER_CARRY_e && dStage_roomControl_c::getDarkMode() != 0) {
|
||||
for (s32 j = i; j < 4; j++) {
|
||||
dComIfGd_setSpotModel(dDlst_alphaModel_c::TYPE_SPHERE, mAlphaModelMtx[j], pdVar4->field_0xc.m00[j]);
|
||||
dComIfGd_setSpotModel(dDlst_alphaModel_c::TYPE_SPHERE, mAlphaModelMtx[j], dark_stts->getBokoAlpha(j));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (mCurrentAction == 3 && player->checkPlayerNoDraw()) {
|
||||
if (getNowMode() == Mode_PLAYER_CARRY_e && player->checkPlayerNoDraw()) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
g_env_light.settingTevStruct(TEV_TYPE_ACTOR, ¤t.pos, &tevStr);
|
||||
g_env_light.setLightTevColorType(mpModel, &tevStr);
|
||||
if (fopAcM_GetParam(this) == 5) {
|
||||
if (fopAcM_GetParam(this) == Type_PGANON_SWORD_e) {
|
||||
mBrkAnm.entry(mpModel->getModelData());
|
||||
}
|
||||
|
||||
mDoExt_modelEntryDL(mpModel);
|
||||
|
||||
if (fopAcM_GetParam(this) == 5) {
|
||||
if (fopAcM_GetParam(this) == Type_PGANON_SWORD_e) {
|
||||
mBrkAnm.remove(mpModel->getModelData());
|
||||
}
|
||||
|
||||
#if VERSION > VERSION_DEMO
|
||||
if (fopAcM_GetParam(this) == 2 && mCurrentAction != 3 && mCurrentAction != 2) {
|
||||
if (fopAcM_GetParam(this) == Type_STALFOS_MACE_e && getNowMode() != Mode_PLAYER_CARRY_e && getNowMode() != Mode_ENEMY_CARRY_e) {
|
||||
cXyz sp0C(current.pos.x, current.pos.y + 100.0f, current.pos.z);
|
||||
m2B4 = dComIfGd_setShadow(m2B4, 1, mpModel, &sp0C, 400.0f, 0.0f, current.pos.y, mAcch.GetGroundH(), mAcch.m_gnd, &tevStr);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (&mpLineKe->lineMat != NULL) {
|
||||
if (mpLineKe != NULL) {
|
||||
keDraw();
|
||||
}
|
||||
return TRUE;
|
||||
@@ -278,15 +235,15 @@ static BOOL daBoko_Draw(daBoko_c* i_this) {
|
||||
|
||||
/* 00000DE4-00000EB0 .text setTopRootPos__8daBoko_cFi */
|
||||
void daBoko_c::setTopRootPos(int arg1) {
|
||||
s32 iVar1 = fopAcM_GetParam(this);
|
||||
s32 type = fopAcM_GetParam(this);
|
||||
if (arg1 != 0) {
|
||||
mDoMtx_stack_c::transS(current.pos.x, current.pos.y + 5.0f, current.pos.z);
|
||||
mDoMtx_stack_c::ZXYrotM(shape_angle.x, shape_angle.y, shape_angle.z);
|
||||
} else {
|
||||
mDoMtx_stack_c::copy(mpModel->getBaseTRMtx());
|
||||
}
|
||||
mDoMtx_stack_c::multVec(m_top_offset + iVar1, &m2D0);
|
||||
mDoMtx_stack_c::multVec(m_root_offset + iVar1, &m2DC);
|
||||
mDoMtx_stack_c::multVec(&m_top_offset[type], &m2D0);
|
||||
mDoMtx_stack_c::multVec(&m_root_offset[type], &m2DC);
|
||||
}
|
||||
|
||||
/* 00000EB0-00000F60 .text setBaseMatrix__8daBoko_cFv */
|
||||
@@ -294,7 +251,7 @@ void daBoko_c::setBaseMatrix() {
|
||||
mDoMtx_stack_c::transS(current.pos.x, current.pos.y + 5.0f, current.pos.z);
|
||||
mDoMtx_stack_c::ZXYrotM(shape_angle.x, shape_angle.y, shape_angle.z);
|
||||
#if VERSION > VERSION_DEMO
|
||||
if (fopAcM_GetParam(this) == 2) {
|
||||
if (fopAcM_GetParam(this) == Type_STALFOS_MACE_e) {
|
||||
mDoMtx_stack_c::XrotM(-1000);
|
||||
mDoMtx_stack_c::transM(0.0f, 10.0f, 0.0f);
|
||||
}
|
||||
@@ -304,23 +261,24 @@ void daBoko_c::setBaseMatrix() {
|
||||
|
||||
/* 00000F60-00000FA4 .text checkNoDraw__8daBoko_cFv */
|
||||
BOOL daBoko_c::checkNoDraw() {
|
||||
return m2B9 || mCurrentAction == 4 || (mCurrentAction == 3 && dComIfGp_checkPlayerStatus0(0, daPyStts0_UNK80_e));
|
||||
return m2B9 || getNowMode() == Mode_4_e || (getNowMode() == Mode_PLAYER_CARRY_e && dComIfGp_checkPlayerStatus0(0, daPyStts0_UNK80_e));
|
||||
}
|
||||
|
||||
/* 00000FA4-00001340 .text setFlameEffect__8daBoko_cFv */
|
||||
void daBoko_c::setFlameEffect() {
|
||||
/* Nonmatching */
|
||||
static const s16 base_angle[] = {150, 200, 180, 120};
|
||||
|
||||
dStage_darkStatus_c* pdVar3 = dStage_roomControl_c::getDarkStatus();
|
||||
dStage_darkStatus_c* dark_stts = dStage_roomControl_c::getDarkStatus();
|
||||
|
||||
if (pdVar3 != NULL) {
|
||||
if (dark_stts != NULL) {
|
||||
for (s32 i = 0; i < 4; i++) {
|
||||
cLib_addCalc2(&m7E4, cM_rndF(0.2f) + 1.0f, 0.5f, 0.01f);
|
||||
f32 fVar10 = m7E4 * pdVar3->field_0x10[i];
|
||||
f32 scale = m7E4 * dark_stts->getBokoScale(i);
|
||||
s16 y = g_Counter.mTimer * base_angle[i];
|
||||
mDoMtx_stack_c::transS(m2D0.x, m2D0.y, m2D0.z);
|
||||
mDoMtx_stack_c::ZXYrotM(0, y, y);
|
||||
mDoMtx_stack_c::scaleM(fVar10, fVar10, fVar10);
|
||||
mDoMtx_stack_c::scaleM(scale, scale, scale);
|
||||
MTXCopy(mDoMtx_stack_c::get(), mAlphaModelMtx[i]);
|
||||
}
|
||||
}
|
||||
@@ -413,7 +371,7 @@ BOOL daBoko_c::procWait_init() {
|
||||
m2C2 = 0;
|
||||
mCurrentProc = &daBoko_c::procWait;
|
||||
cLib_onBit<u32>(attention_info.flags, fopAc_Attn_ACTION_CARRY_e);
|
||||
mCurrentAction = 0;
|
||||
setNowMode(Mode_WAIT_e);
|
||||
fopAcM_cancelCarryNow(this);
|
||||
gravity = -3.0f;
|
||||
return TRUE;
|
||||
@@ -426,13 +384,13 @@ BOOL daBoko_c::procWait() {
|
||||
mCurrentProc = &daBoko_c::procCarry;
|
||||
speedF = 0.0f;
|
||||
speed = cXyz::Zero;
|
||||
if (mCurrentAction != 3) {
|
||||
mCurrentAction = 2;
|
||||
if (getNowMode() != Mode_PLAYER_CARRY_e) {
|
||||
setNowMode(Mode_ENEMY_CARRY_e);
|
||||
}
|
||||
cLib_offBit<u32>(attention_info.flags, fopAc_Attn_ACTION_CARRY_e);
|
||||
m2BC = 0;
|
||||
mbFloorFlg = false;
|
||||
procCarry();
|
||||
} else if (m2BC == 0) {
|
||||
} else if (!mbFloorFlg) {
|
||||
fopAcM_posMoveF(this, NULL);
|
||||
mAcch.CrrPos(*dComIfG_Bgsp());
|
||||
if (!mAcch.ChkGroundHit()) {
|
||||
@@ -447,34 +405,35 @@ BOOL daBoko_c::procWait() {
|
||||
/* 000016E4-0000175C .text procMove_init__8daBoko_cFv */
|
||||
BOOL daBoko_c::procMove_init() {
|
||||
mCurrentProc = &daBoko_c::procMove;
|
||||
mCurrentAction = 1;
|
||||
setNowMode(Mode_MOVE_e);
|
||||
fopAcM_setCarryNow(this, FALSE);
|
||||
cLib_offBit<u32>(attention_info.flags, fopAc_Attn_ACTION_CARRY_e);
|
||||
m2BB = 0x14;
|
||||
m2BC = 0;
|
||||
mbFloorFlg = false;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 0000175C-00001E94 .text procMove__8daBoko_cFv */
|
||||
BOOL daBoko_c::procMove() {
|
||||
/* Nonmatching - fpr regswap */
|
||||
BOOL bVar4 = FALSE;
|
||||
fopAcM_posMoveF(this, NULL);
|
||||
f32 fVar14 = m2DC.y;
|
||||
f32 fVar15 = m2D0.y;
|
||||
f32 fVar14_2 = m2DC.y;
|
||||
f32 fVar15_2 = m2D0.y;
|
||||
setTopRootPos(1);
|
||||
|
||||
cXyz sp1C(m2DC.x, fVar14, m2DC.z);
|
||||
cXyz sp1C(m2DC.x, fVar14_2, m2DC.z);
|
||||
m_ground_check.SetPos(&sp1C);
|
||||
|
||||
fVar14 = dComIfG_Bgsp()->GroundCross(&m_ground_check);
|
||||
f32 fVar14 = dComIfG_Bgsp()->GroundCross(&m_ground_check);
|
||||
if (fVar14 == -G_CM3D_F_INF) {
|
||||
fVar14 = mAcch.GetGroundH();
|
||||
}
|
||||
f32 fVar2 = m2DC.y - fVar14;
|
||||
sp1C.set(m2D0.x, fVar15, m2D0.z);
|
||||
sp1C.set(m2D0.x, fVar15_2, m2D0.z);
|
||||
m_ground_check.SetPos(&sp1C);
|
||||
|
||||
fVar15 = dComIfG_Bgsp()->GroundCross(&m_ground_check);
|
||||
f32 fVar15 = dComIfG_Bgsp()->GroundCross(&m_ground_check);
|
||||
if (fVar15 == -G_CM3D_F_INF) {
|
||||
fVar15 = mAcch.GetGroundH();
|
||||
}
|
||||
@@ -547,10 +506,16 @@ BOOL daBoko_c::procMove() {
|
||||
}
|
||||
|
||||
if (m2C0 != 0) {
|
||||
cLib_addCalcAngleS(&shape_angle.z, -0x4000 - abs(shape_angle.z), 5, 0x1000, 0x100);
|
||||
s16 target_angle_z;
|
||||
if (abs(shape_angle.z) <= 0x4000) {
|
||||
target_angle_z = 0;
|
||||
} else {
|
||||
target_angle_z = -0x8000;
|
||||
}
|
||||
cLib_addCalcAngleS(&shape_angle.z, target_angle_z, 5, 0x1000, 0x100);
|
||||
}
|
||||
|
||||
fVar14 = speed.y;
|
||||
f32 fVar14_3 = speed.y;
|
||||
mAcch.CrrPos(*dComIfG_Bgsp());
|
||||
setRoomInfo();
|
||||
|
||||
@@ -596,7 +561,7 @@ BOOL daBoko_c::procMove() {
|
||||
speedF *= 0.7f;
|
||||
}
|
||||
} else {
|
||||
speed.y = fVar14;
|
||||
speed.y = fVar14_3;
|
||||
}
|
||||
setBaseMatrix();
|
||||
return TRUE;
|
||||
@@ -671,7 +636,7 @@ BOOL daBoko_c::procThrow() {
|
||||
|
||||
/* 000021B8-00002624 .text procCarry__8daBoko_cFv */
|
||||
BOOL daBoko_c::procCarry() {
|
||||
if (fopAcM_checkCarryNow(this) || m2BA == 0) {
|
||||
if (fopAcM_checkCarryNow(this) || !mbThrow) {
|
||||
mDoMtx_multVecZero(mpModel->getBaseTRMtx(), ¤t.pos);
|
||||
mDoMtx_MtxToRot(mpModel->getBaseTRMtx(), &shape_angle);
|
||||
}
|
||||
@@ -683,9 +648,9 @@ BOOL daBoko_c::procCarry() {
|
||||
fopAcM_setCarryNow(this, FALSE);
|
||||
setTopRootPos(1);
|
||||
|
||||
if (m2BA != 0) {
|
||||
if (mbThrow) {
|
||||
mCurrentProc = &daBoko_c::procThrow;
|
||||
mCurrentAction = 6;
|
||||
setNowMode(Mode_THROW_e);
|
||||
gravity = 0.0f;
|
||||
shape_angle.x = m2CA;
|
||||
shape_angle.y = link->shape_angle.y;
|
||||
@@ -693,7 +658,7 @@ BOOL daBoko_c::procCarry() {
|
||||
speedF = 70.0f * cM_scos(shape_angle.x);
|
||||
speed.y = -70.0f * cM_ssin(shape_angle.x);
|
||||
m2C8 = 2;
|
||||
m2BA = 0;
|
||||
mbThrow = false;
|
||||
mCps.ResetAtHit();
|
||||
m_line_check.Set(&linkFootPos, ¤t.pos, this);
|
||||
|
||||
@@ -709,7 +674,7 @@ BOOL daBoko_c::procCarry() {
|
||||
} else {
|
||||
procThrow();
|
||||
}
|
||||
} else if (m2BC != 0) {
|
||||
} else if (mbFloorFlg) {
|
||||
if (shape_angle.z >= 0x4000) {
|
||||
shape_angle.z = 0;
|
||||
shape_angle.x += 0x8000;
|
||||
@@ -718,7 +683,7 @@ BOOL daBoko_c::procCarry() {
|
||||
procWait_init();
|
||||
} else {
|
||||
current.angle.y = shape_angle.y + 0x8000;
|
||||
if (mCurrentAction == 3) {
|
||||
if (getNowMode() == Mode_PLAYER_CARRY_e) {
|
||||
m_line_check.Set(&linkFootPos, ¤t.pos, this);
|
||||
if (dComIfG_Bgsp()->LineCross(&m_line_check)) {
|
||||
current.pos = m_line_check.GetCross();
|
||||
@@ -765,13 +730,13 @@ BOOL daBoko_c::execute() {
|
||||
if (mSph.ChkTgHit()) {
|
||||
cCcD_Obj* pcVar2 = mSph.GetTgHitObj();
|
||||
if (pcVar2 != NULL) {
|
||||
if (m2C4 > 0 && pcVar2->ChkAtType(AT_TYPE_WATER)) {
|
||||
m2C4 = 1;
|
||||
if (mFlameTimer > 0 && pcVar2->ChkAtType(AT_TYPE_WATER)) {
|
||||
mFlameTimer = 1;
|
||||
bVar4 = TRUE;
|
||||
} else if (m2C4 == 0 && pcVar2->ChkAtType(AT_TYPE_UNK20000 | AT_TYPE_FIRE)) {
|
||||
} else if (mFlameTimer == 0 && pcVar2->ChkAtType(AT_TYPE_UNK20000 | AT_TYPE_FIRE)) {
|
||||
mDoAud_seStart(JA_SE_OBJ_TORCH_IGNITION, &m2D0, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
|
||||
fopAcM_SetCullSize(this, fopAc_CULLSPHERE_6_e);
|
||||
m2C4 = 900;
|
||||
mFlameTimer = 900;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -779,20 +744,20 @@ BOOL daBoko_c::execute() {
|
||||
mpModel->calc();
|
||||
setTopRootPos(0);
|
||||
|
||||
if (m2C4 != 0) {
|
||||
if (mCurrentAction != 2) {
|
||||
m2C4--;
|
||||
if (mFlameTimer != 0) {
|
||||
if (getNowMode() != Mode_ENEMY_CARRY_e) {
|
||||
mFlameTimer--;
|
||||
}
|
||||
|
||||
f32 waterY;
|
||||
if (bVar4 || (fopAcM_getWaterY(&m2D0, &waterY) && waterY >= m2D0.y)) {
|
||||
if (m2C4 != 0) {
|
||||
if (mFlameTimer != 0) {
|
||||
dComIfGp_particle_set(dPa_name::ID_COMMON_035A, &m2D0);
|
||||
}
|
||||
m2C4 = 0;
|
||||
mFlameTimer = 0;
|
||||
}
|
||||
|
||||
if (m2C4 != 0) {
|
||||
if (mFlameTimer != 0) {
|
||||
setFlameEffect();
|
||||
} else {
|
||||
fopAcM_SetCullSize(this, fopAc_CULLBOX_CUSTOM_e);
|
||||
@@ -810,26 +775,26 @@ BOOL daBoko_c::execute() {
|
||||
mLight.mPower = 0.0f;
|
||||
}
|
||||
|
||||
if (fopAcM_GetParam(this) == 0) {
|
||||
if (m2C4 > 0) {
|
||||
if (fopAcM_GetParam(this) == Type_BOKO_STICK_e) {
|
||||
if (mFlameTimer > 0) {
|
||||
mSph.OnAtSPrmBit(cCcD_TgSPrm_Set_e);
|
||||
} else {
|
||||
mSph.OffAtSPrmBit(cCcD_TgSPrm_Set_e);
|
||||
}
|
||||
mSph.SetC(m2D0);
|
||||
dComIfG_Ccsp()->Set(&mSph);
|
||||
if (mCurrentAction == 3) {
|
||||
if (getNowMode() == Mode_PLAYER_CARRY_e) {
|
||||
dComIfG_Ccsp_SetMass(&mSph, 1);
|
||||
} else {
|
||||
dComIfG_Ccsp_SetMass(&mSph, 4);
|
||||
}
|
||||
}
|
||||
|
||||
if (&mpLineKe->lineMat != NULL) {
|
||||
if (mpLineKe != NULL) {
|
||||
keCalc();
|
||||
}
|
||||
|
||||
if (fopAcM_GetParam(this) == 5) {
|
||||
if (fopAcM_GetParam(this) == Type_PGANON_SWORD_e) {
|
||||
if (dComIfGs_isEventBit(0x3a08)) {
|
||||
mBrkAnm.play();
|
||||
bVar4 = true;
|
||||
@@ -875,14 +840,14 @@ static BOOL daBoko_createHeap(fopAc_ac_c* i_this) {
|
||||
BOOL daBoko_c::createHeap() {
|
||||
static const s32 model_idx[] = {BOKO_BDL_BOKO, NATA_BDL_BK_NATA, CLUB_BDL_ST_BUKI, TKWN_BDL_TN_KEN1, SPEAR_BDL_MO_YARI, PGSW_BDL_BPG_KEN1};
|
||||
|
||||
u32 uVar5 = fopAcM_GetParam(this);
|
||||
if (uVar5 >= 6) {
|
||||
u32 type = fopAcM_GetParam(this);
|
||||
if (type >= Type_COUNT_e) {
|
||||
JUT_ASSERT(DEMO_SELECT(1702, 1740), FALSE);
|
||||
}
|
||||
|
||||
u32 unused = uVar5 == 5;
|
||||
u32 unused = type == Type_PGANON_SWORD_e;
|
||||
|
||||
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(m_arc_name[uVar5], model_idx[uVar5]);
|
||||
J3DModelData* modelData = static_cast<J3DModelData*>(dComIfG_getObjectRes(m_arc_name[type], model_idx[type]));
|
||||
JUT_ASSERT(DEMO_SELECT(1708, 1746), modelData != NULL);
|
||||
|
||||
mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000002);
|
||||
@@ -890,7 +855,7 @@ BOOL daBoko_c::createHeap() {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (uVar5 == 4) {
|
||||
if (type == 4) {
|
||||
mpLineKe = new LineKe();
|
||||
if (mpLineKe == NULL) {
|
||||
return FALSE;
|
||||
@@ -899,9 +864,11 @@ BOOL daBoko_c::createHeap() {
|
||||
if (!mpLineKe->lineMat.init(0x10, 10, 0)) {
|
||||
return FALSE;
|
||||
}
|
||||
} else if (uVar5 == 5 &&
|
||||
} else if (type == 5 &&
|
||||
!mBrkAnm.init(
|
||||
modelData, (J3DAnmTevRegKey*)dComIfG_getObjectRes("Pgsw", PGSW_BRK_KIERU_KEN1), true, J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1, false, FALSE
|
||||
modelData,
|
||||
static_cast<J3DAnmTevRegKey*>(dComIfG_getObjectRes("Pgsw", PGSW_BRK_KIERU_KEN1)),
|
||||
true, J3DFrameCtrl::EMode_NONE, 1.0f, 0, -1, false, FALSE
|
||||
))
|
||||
{
|
||||
return FALSE;
|
||||
@@ -972,21 +939,21 @@ cPhs_State daBoko_c::create() {
|
||||
|
||||
fopAcM_SetupActor(this, daBoko_c);
|
||||
|
||||
u32 uVar4 = fopAcM_GetParam(this);
|
||||
if (uVar4 == 7) {
|
||||
uVar4 = 0;
|
||||
fopAcM_SetParam(this, uVar4);
|
||||
u32 type = fopAcM_GetParam(this);
|
||||
if (type == Type_UNK_7_e) {
|
||||
type = Type_BOKO_STICK_e;
|
||||
fopAcM_SetParam(this, type);
|
||||
fopAcM_SetCullSize(this, fopAc_CULLSPHERE_6_e);
|
||||
m2C4 = 900;
|
||||
mFlameTimer = 900;
|
||||
}
|
||||
|
||||
cPhs_State PVar5 = dComIfG_resLoad(&mPhase, m_arc_name[uVar4]);
|
||||
cPhs_State PVar5 = dComIfG_resLoad(&mPhase, m_arc_name[type]);
|
||||
if (PVar5 == cPhs_COMPLEATE_e) {
|
||||
if (uVar4 >= 6) {
|
||||
if (type >= Type_COUNT_e) {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
|
||||
if (!fopAcM_entrySolidHeap(this, daBoko_createHeap, m_heap_size[uVar4])) {
|
||||
if (!fopAcM_entrySolidHeap(this, daBoko_createHeap, m_heap_size[type])) {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
|
||||
@@ -997,9 +964,9 @@ cPhs_State daBoko_c::create() {
|
||||
mpModel->setBaseScale(scale);
|
||||
fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
|
||||
|
||||
Vec* min = &m_cull_min[uVar4];
|
||||
Vec* min = &m_cull_min[type];
|
||||
fopAcM_SetMin(this, min->x, min->y, min->z);
|
||||
Vec* max = &m_cull_max[uVar4];
|
||||
Vec* max = &m_cull_max[type];
|
||||
fopAcM_SetMax(this, max->x, max->y, max->z);
|
||||
|
||||
mAcchCir.SetWall(10.0f, 60.0f);
|
||||
@@ -1020,24 +987,24 @@ cPhs_State daBoko_c::create() {
|
||||
fopAcM_SetMaxFallSpeed(this, -100.0f);
|
||||
mStts.Init(10, 0xff, this);
|
||||
|
||||
if (uVar4 == 0) {
|
||||
if (type == Type_BOKO_STICK_e) {
|
||||
mpModel->getModelData()->getJointTree().getJointNodePointer(2)->getMesh()->getShape()->hide();
|
||||
}
|
||||
mSph.Set(sph_src);
|
||||
mSph.SetStts(&mStts);
|
||||
mCps.Set(at_cps_src);
|
||||
mCps.SetStts(&mStts);
|
||||
mCps.SetAtType(m_at_type[fopAcM_GetParam(this)]);
|
||||
mCps.SetAtAtp(m_at_point[fopAcM_GetParam(this)]);
|
||||
mCps.SetAtSe(m_se_type[fopAcM_GetParam(this)]);
|
||||
mCps.SetR(m_cps_r[fopAcM_GetParam(this)]);
|
||||
mCps.SetAtType(getAtType());
|
||||
mCps.SetAtAtp(getAtPoint());
|
||||
mCps.SetAtSe(getSeType());
|
||||
mCps.SetR(getCpsR());
|
||||
|
||||
mCurrentProc = &daBoko_c::procWait;
|
||||
|
||||
setBaseMatrix();
|
||||
setTopRootPos(0);
|
||||
|
||||
if (m2C4 != 0) {
|
||||
if (mFlameTimer != 0) {
|
||||
m7E4 = 1.0f;
|
||||
setFlameEffect();
|
||||
}
|
||||
@@ -1048,7 +1015,7 @@ cPhs_State daBoko_c::create() {
|
||||
|
||||
mpModel->calc();
|
||||
|
||||
if (uVar4 == 0) {
|
||||
if (type == Type_BOKO_STICK_e) {
|
||||
dKy_plight_set(&mLight);
|
||||
mLight.mColor.r = 600;
|
||||
mLight.mColor.g = 400;
|
||||
|
||||
+16
-16
@@ -1026,21 +1026,21 @@ void fail(fganon_class* i_this) {
|
||||
kieru_brk(i_this, 2);
|
||||
i_this->m3A4[0] = 10;
|
||||
i_this->mMode = 4;
|
||||
i_this->mBokoID = fopAcM_create(PROC_BOKO, 5, &i_this->current.pos, i_this->current.roomNo);
|
||||
i_this->mBokoID = fopAcM_create(PROC_BOKO, daBoko_c::Type_PGANON_SWORD_e, &i_this->current.pos, i_this->current.roomNo);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 4: {
|
||||
daBoko_c* act = (daBoko_c*)fopAcM_SearchByID(i_this->mBokoID);
|
||||
if (act != NULL) {
|
||||
if (!fopAcM_checkCarryNow(act)) {
|
||||
fopAcM_setCarryNow(act, 0);
|
||||
daBoko_c* boko = (daBoko_c*)fopAcM_SearchByID(i_this->mBokoID);
|
||||
if (boko != NULL) {
|
||||
if (!fopAcM_checkCarryNow(boko)) {
|
||||
fopAcM_setCarryNow(boko, 0);
|
||||
}
|
||||
act->setMatrix(i_this->mpKenModel->getBaseTRMtx());
|
||||
boko->setMatrix(i_this->mpKenModel->getBaseTRMtx());
|
||||
if (i_this->m3A4[0] == 0) {
|
||||
fopAcM_delete(i_this);
|
||||
act->m2BC = 1;
|
||||
fopAcM_cancelCarryNow(act);
|
||||
boko->onFloorFlg();
|
||||
fopAcM_cancelCarryNow(boko);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -1261,17 +1261,17 @@ void last_end(fganon_class* i_this) {
|
||||
case 4: {
|
||||
if (i_this->m3A4[1] <= 4) {
|
||||
if (i_this->m3A4[1] == 4) {
|
||||
i_this->mBokoID = fopAcM_create(PROC_BOKO, 5, &i_this->current.pos, i_this->current.roomNo);
|
||||
i_this->mBokoID = fopAcM_create(PROC_BOKO, daBoko_c::Type_PGANON_SWORD_e, &i_this->current.pos, i_this->current.roomNo);
|
||||
}
|
||||
daBoko_c* mBoko = (daBoko_c*)fopAcM_SearchByID(i_this->mBokoID);
|
||||
if (mBoko != NULL) {
|
||||
daBoko_c* boko = (daBoko_c*)fopAcM_SearchByID(i_this->mBokoID);
|
||||
if (boko != NULL) {
|
||||
i_this->m2D0 = 2;
|
||||
if (!fopAcM_checkCarryNow(mBoko)) {
|
||||
fopAcM_setCarryNow(mBoko, 0);
|
||||
if (!fopAcM_checkCarryNow(boko)) {
|
||||
fopAcM_setCarryNow(boko, 0);
|
||||
}
|
||||
mBoko->setMatrix(i_this->mpKenModel->getBaseTRMtx());
|
||||
boko->setMatrix(i_this->mpKenModel->getBaseTRMtx());
|
||||
if (i_this->m3A4[1] == 1) {
|
||||
fopAcM_cancelCarryNow(mBoko);
|
||||
fopAcM_cancelCarryNow(boko);
|
||||
i_this->mMode = 5;
|
||||
i_this->mB54++;
|
||||
i_this->mB56 = 0;
|
||||
@@ -2768,7 +2768,7 @@ static cPhs_State daFganon_Create(fopAc_ac_c* i_act) {
|
||||
|
||||
if ((i_this->mSwitchNo != 0xFF) && (dComIfGs_isSwitch(i_this->mSwitchNo, dComIfGp_roomControl_getStayNo()) != 0)) {
|
||||
if (((fopAcM_GetParam(i_this) & 0xF) == 2) && !(dComIfGs_isEventBit(0x3A08))) { // Probably a flag to do with beating FF1 so PG spawns?
|
||||
fopAcM_create(PROC_BOKO, 5, &i_this->current.pos, i_this->current.roomNo);
|
||||
fopAcM_create(PROC_BOKO, daBoko_c::Type_PGANON_SWORD_e, &i_this->current.pos, i_this->current.roomNo);
|
||||
}
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
|
||||
@@ -527,10 +527,7 @@ BOOL daPy_lk_c::dProcOpenTreasure_init() {
|
||||
if (boko != NULL) {
|
||||
mDoMtx_stack_c::transS(current.pos);
|
||||
mDoMtx_stack_c::YrotM(shape_angle.y + 0x2000);
|
||||
MtxP mtx = mDoMtx_stack_c::get();
|
||||
if (boko->mpModel != NULL) {
|
||||
boko->mpModel->setBaseTRMtx(mtx);
|
||||
}
|
||||
boko->setMatrix(mDoMtx_stack_c::get());
|
||||
}
|
||||
}
|
||||
fopAc_ac_c* partner_p = fopAcM_getEventPartner(this);
|
||||
|
||||
@@ -337,7 +337,7 @@ BOOL daPy_lk_c::procGrabReady_init() {
|
||||
}
|
||||
if (fopAcM_GetName(mpAttnActorA) == PROC_BOKO) {
|
||||
daBoko_c* boko = static_cast<daBoko_c*>(mpAttnActorA);
|
||||
boko->mCurrentAction = 3;
|
||||
boko->setNowMode(daBoko_c::Mode_PLAYER_CARRY_e);
|
||||
}
|
||||
shape_angle.y = fopAcM_searchActorAngleY(this, mpAttnActorA);
|
||||
current.angle.y = shape_angle.y;
|
||||
|
||||
@@ -1103,20 +1103,20 @@ s32 daPy_lk_c::setItemModel() {
|
||||
MtxP pMVar14 = mpCLModel->getAnmMtx(0xD);
|
||||
MtxP pMVar13 = mpCLModel->getAnmMtx(0x8);
|
||||
MtxP pMVar6 = mpCLModel->getAnmMtx(0xC);
|
||||
daBoko_c* pfVar11 = (daBoko_c*)mActorKeepEquip.getActor();
|
||||
if (pfVar11 != NULL && mEquipItem == daPyItem_BOKO_e) {
|
||||
daBoko_c* boko = (daBoko_c*)mActorKeepEquip.getActor();
|
||||
if (boko != NULL && mEquipItem == daPyItem_BOKO_e) {
|
||||
mDoMtx_stack_c::transS(40.0f, 47.0f, 2.1f);
|
||||
mDoMtx_stack_c::XYZrotM(0x3E38, -0x5D4, 0x66F8);
|
||||
if (fopAcM_GetParam(pfVar11) == 2 || fopAcM_GetParam(pfVar11) == 3) {
|
||||
if (fopAcM_GetParam(boko) == daBoko_c::Type_STALFOS_MACE_e || fopAcM_GetParam(boko) == daBoko_c::Type_DARKNUT_SWORD_e) {
|
||||
mDoMtx_stack_c::transM(0.0f, 0.0f, 20.0f);
|
||||
} else if (fopAcM_GetParam(pfVar11) == 4) {
|
||||
} else if (fopAcM_GetParam(boko) == daBoko_c::Type_MOBLIN_SPEAR_e) {
|
||||
mDoMtx_stack_c::transM(0.0f, 0.0f, 70.0f);
|
||||
} else if (fopAcM_GetParam(pfVar11) == 5) {
|
||||
} else if (fopAcM_GetParam(boko) == daBoko_c::Type_PGANON_SWORD_e) {
|
||||
mDoMtx_stack_c::transM(0.0f, 0.0f, 30.0f);
|
||||
}
|
||||
mDoMtx_stack_c::revConcat(pMVar13);
|
||||
MtxP mtx = mDoMtx_stack_c::now;
|
||||
pfVar11->setMatrix(mtx);
|
||||
boko->setMatrix(mtx);
|
||||
}
|
||||
if (mpEquipItemBtk != NULL) {
|
||||
dVar16 = mpEquipItemBtk->getFrame();
|
||||
@@ -1185,9 +1185,9 @@ s32 daPy_lk_c::setItemModel() {
|
||||
if (mpBottleCapModel != NULL) {
|
||||
mpBottleCapModel->setBaseTRMtx(pMVar13);
|
||||
}
|
||||
} else if (mEquipItem == dItem_HOOKSHOT_e && pfVar11 != NULL) {
|
||||
if (fopAcM_GetParam(pfVar11) != 0) {
|
||||
if (fopAcM_GetParam(pfVar11) == 1) {
|
||||
} else if (mEquipItem == dItem_HOOKSHOT_e && boko != NULL) {
|
||||
if (fopAcM_GetParam(boko) != daBoko_c::Type_BOKO_STICK_e) {
|
||||
if (fopAcM_GetParam(boko) == daBoko_c::Type_MACHETE_e) {
|
||||
m35EC += 1.0f;
|
||||
} else {
|
||||
m35EC -= 1.0f;
|
||||
@@ -13027,7 +13027,7 @@ const daPy_anmIndex_c* daPy_lk_c::getAnmData(daPy_ANM anm) const {
|
||||
BOOL daPy_lk_c::checkGrabWeapon(int r4) {
|
||||
if (mEquipItem == daPyItem_BOKO_e && mActorKeepEquip.getActor() != NULL) {
|
||||
daBoko_c* boko = (daBoko_c*)mActorKeepEquip.getActor();
|
||||
if (r4 == 6 || fopAcM_GetParam(boko) == r4) {
|
||||
if (r4 == daBoko_c::Type_COUNT_e || fopAcM_GetParam(boko) == r4) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1352,23 +1352,23 @@ BOOL daPy_lk_c::procCutTurn_init(int param_0) {
|
||||
setBlurPosResource(LKANM__CUTTURN_POS);
|
||||
} else {
|
||||
daBoko_c* boko = (daBoko_c*)mActorKeepEquip.getActor();
|
||||
u32 uVar5;
|
||||
u32 boko_type;
|
||||
if (boko == NULL) {
|
||||
uVar5 = 0;
|
||||
boko_type = daBoko_c::Type_BOKO_STICK_e;
|
||||
mAtCyl.SetAtAtp(1);
|
||||
} else {
|
||||
uVar5 = fopAcM_GetParam(boko);
|
||||
boko_type = fopAcM_GetParam(boko);
|
||||
mAtCyl.SetAtAtp(boko->getAtPoint());
|
||||
}
|
||||
if (uVar5 == 0) {
|
||||
if (boko_type == daBoko_c::Type_BOKO_STICK_e) {
|
||||
m35A4 = daPy_HIO_cutTurn_c0::m.field_0x60;
|
||||
} else if (uVar5 == 1) {
|
||||
} else if (boko_type == daBoko_c::Type_MACHETE_e) {
|
||||
m35A4 = daPy_HIO_cutTurn_c0::m.field_0x64;
|
||||
} else if (uVar5 == 2) {
|
||||
} else if (boko_type == daBoko_c::Type_STALFOS_MACE_e) {
|
||||
m35A4 = daPy_HIO_cutTurn_c0::m.field_0x68;
|
||||
} else if (uVar5 == 3) {
|
||||
} else if (boko_type == daBoko_c::Type_DARKNUT_SWORD_e) {
|
||||
m35A4 = daPy_HIO_cutTurn_c0::m.field_0x6C;
|
||||
} else if (uVar5 == 4) {
|
||||
} else if (boko_type == daBoko_c::Type_MOBLIN_SPEAR_e) {
|
||||
m35A4 = daPy_HIO_cutTurn_c0::m.field_0x70;
|
||||
} else {
|
||||
m35A4 = daPy_HIO_cutTurn_c0::m.field_0x74;
|
||||
|
||||
@@ -18,12 +18,12 @@
|
||||
/* 80153554-801535D8 .text setEnemyWeaponAtParam__9daPy_lk_cFi */
|
||||
void daPy_lk_c::setEnemyWeaponAtParam(BOOL r4) {
|
||||
static const u8 cut_type[] = {
|
||||
0x0B,
|
||||
0x0D,
|
||||
0x14,
|
||||
0x16,
|
||||
0x18,
|
||||
0x1C,
|
||||
/* daBoko_c::Type_STICK_e */ 0x0B,
|
||||
/* daBoko_c::Type_MACHETE_e */ 0x0D,
|
||||
/* daBoko_c::Type_CLUB_e */ 0x14,
|
||||
/* daBoko_c::Type_DN_SWORD_e */ 0x16,
|
||||
/* daBoko_c::Type_SPEAR_e */ 0x18,
|
||||
/* daBoko_c::Type_PG_SWORD_e */ 0x1C,
|
||||
};
|
||||
daBoko_c* boko = (daBoko_c*)mActorKeepEquip.getActor();
|
||||
u8 cutType = cut_type[fopAcM_GetParam(boko)];
|
||||
@@ -395,8 +395,7 @@ BOOL daPy_lk_c::procWeaponThrow() {
|
||||
uVar2 = cM_atan2s(-local_34.y, dVar5);
|
||||
}
|
||||
}
|
||||
boko->setThrow(1);
|
||||
boko->m2CA = uVar2;
|
||||
boko->setThrow(uVar2);
|
||||
voiceStart(0);
|
||||
deleteEquipItem(FALSE);
|
||||
}
|
||||
|
||||
@@ -1451,7 +1451,7 @@ bool Act_c::_delete() {
|
||||
void Act_c::spec_make_boko(int arg1) {
|
||||
M7A0* ptr = &m7A0[0];
|
||||
for (s32 i = 0; i < arg1; i++, ptr++) {
|
||||
ptr->m00 = fopAcM_create(PROC_BOKO, 0, ¤t.pos, fopAcM_GetHomeRoomNo(this));
|
||||
ptr->m00 = fopAcM_create(PROC_BOKO, daBoko_c::Type_BOKO_STICK_e, ¤t.pos, fopAcM_GetHomeRoomNo(this));
|
||||
ptr->m06 = data_spec_boko(i).m00;
|
||||
ptr->m08 = ptr->m06;
|
||||
ptr->m10 = data_spec_boko(i).m04;
|
||||
|
||||
+63
-64
@@ -9,81 +9,80 @@
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
#include "d/d_cc_d.h"
|
||||
#include "SSystem/SComponent/c_xyz.h"
|
||||
#include "SSystem/SComponent/c_phase.h"
|
||||
#include "JSystem/J3DGraphAnimator/J3DModel.h"
|
||||
#include "m_Do/m_Do_mtx.h"
|
||||
|
||||
Vec daBoko_c::m_top_offset[6] = {
|
||||
{ 0.0f, 0.0f, 85.0f },
|
||||
{ 16.0f, 0.0f, 77.0f },
|
||||
{ -8.0f, 3.0f, 120.0f },
|
||||
{ 0.0f, 0.0f, 128.0f },
|
||||
{ 10.0f, 0.0f, 200.0f },
|
||||
{ -40.0f, 0.0f, 110.0f },
|
||||
Vec daBoko_c::m_top_offset[] = {
|
||||
/* Type_BOKO_STICK_e */ { 0.0f, 0.0f, 85.0f },
|
||||
/* Type_MACHETE_e */ { 16.0f, 0.0f, 77.0f },
|
||||
/* Type_STALFOS_MACE_e */ { -8.0f, 3.0f, 120.0f },
|
||||
/* Type_DARKNUT_SWORD_e */ { 0.0f, 0.0f, 128.0f },
|
||||
/* Type_MOBLIN_SPEAR_e */ { 10.0f, 0.0f, 200.0f },
|
||||
/* Type_PGANON_SWORD_e */ { -40.0f, 0.0f, 110.0f },
|
||||
};
|
||||
Vec daBoko_c::m_blur_root_offset[6] = {
|
||||
{ 0.0f, 0.0f, -45.0f },
|
||||
{ 0.0f, 0.0f, -43.0f },
|
||||
{ -1.0f, 3.0f, -60.0f },
|
||||
{ 0.0f, 0.0f, -50.0f },
|
||||
{ 0.0f, 0.0f, -100.0f },
|
||||
{ -20.0f, 0.0f, -50.0f },
|
||||
Vec daBoko_c::m_blur_root_offset[] = {
|
||||
/* Type_BOKO_STICK_e */ { 0.0f, 0.0f, -45.0f },
|
||||
/* Type_MACHETE_e */ { 0.0f, 0.0f, -43.0f },
|
||||
/* Type_STALFOS_MACE_e */ { -1.0f, 3.0f, -60.0f },
|
||||
/* Type_DARKNUT_SWORD_e */ { 0.0f, 0.0f, -50.0f },
|
||||
/* Type_MOBLIN_SPEAR_e */ { 0.0f, 0.0f, -100.0f },
|
||||
/* Type_PGANON_SWORD_e */ { -20.0f, 0.0f, -50.0f },
|
||||
};
|
||||
Vec daBoko_c::m_root_offset[6] = {
|
||||
{ 0.0f, 0.0f, -85.0f },
|
||||
{ 5.0f, 0.0f, -90.0f },
|
||||
{ 3.0f, 0.0f, -120.0f },
|
||||
{ 0.0f, 0.0f, -130.0f },
|
||||
{ 0.0f, 0.0f, -175.0f },
|
||||
{ 0.0f, 0.0f, -125.0f },
|
||||
Vec daBoko_c::m_root_offset[] = {
|
||||
/* Type_BOKO_STICK_e */ { 0.0f, 0.0f, -85.0f },
|
||||
/* Type_MACHETE_e */ { 5.0f, 0.0f, -90.0f },
|
||||
/* Type_STALFOS_MACE_e */ { 3.0f, 0.0f, -120.0f },
|
||||
/* Type_DARKNUT_SWORD_e */ { 0.0f, 0.0f, -130.0f },
|
||||
/* Type_MOBLIN_SPEAR_e */ { 0.0f, 0.0f, -175.0f },
|
||||
/* Type_PGANON_SWORD_e */ { 0.0f, 0.0f, -125.0f },
|
||||
};
|
||||
f32 daBoko_c::m_cps_r[6] = {
|
||||
30.0f,
|
||||
30.0f,
|
||||
50.0f,
|
||||
50.0f,
|
||||
50.0f,
|
||||
50.0f,
|
||||
f32 daBoko_c::m_cps_r[] = {
|
||||
/* Type_BOKO_STICK_e */ 30.0f,
|
||||
/* Type_MACHETE_e */ 30.0f,
|
||||
/* Type_STALFOS_MACE_e */ 50.0f,
|
||||
/* Type_DARKNUT_SWORD_e */ 50.0f,
|
||||
/* Type_MOBLIN_SPEAR_e */ 50.0f,
|
||||
/* Type_PGANON_SWORD_e */ 50.0f,
|
||||
};
|
||||
s32 daBoko_c::m_at_point[6] = {
|
||||
0x01,
|
||||
0x02,
|
||||
0x04,
|
||||
0x04,
|
||||
0x04,
|
||||
0x04,
|
||||
s32 daBoko_c::m_at_point[] = {
|
||||
/* Type_BOKO_STICK_e */ 0x01,
|
||||
/* Type_MACHETE_e */ 0x02,
|
||||
/* Type_STALFOS_MACE_e */ 0x04,
|
||||
/* Type_DARKNUT_SWORD_e */ 0x04,
|
||||
/* Type_MOBLIN_SPEAR_e */ 0x04,
|
||||
/* Type_PGANON_SWORD_e */ 0x04,
|
||||
};
|
||||
u32 daBoko_c::m_at_type[6] = {
|
||||
AT_TYPE_BOKO_STICK,
|
||||
AT_TYPE_MACHETE,
|
||||
AT_TYPE_STALFOS_MACE,
|
||||
AT_TYPE_DARKNUT_SWORD,
|
||||
AT_TYPE_MOBLIN_SPEAR,
|
||||
AT_TYPE_PGANON_SWORD,
|
||||
u32 daBoko_c::m_at_type[] = {
|
||||
/* Type_BOKO_STICK_e */ AT_TYPE_BOKO_STICK,
|
||||
/* Type_MACHETE_e */ AT_TYPE_MACHETE,
|
||||
/* Type_STALFOS_MACE_e */ AT_TYPE_STALFOS_MACE,
|
||||
/* Type_DARKNUT_SWORD_e */ AT_TYPE_DARKNUT_SWORD,
|
||||
/* Type_MOBLIN_SPEAR_e */ AT_TYPE_MOBLIN_SPEAR,
|
||||
/* Type_PGANON_SWORD_e */ AT_TYPE_PGANON_SWORD,
|
||||
};
|
||||
f32 daBoko_c::m_jump_blur_rate[6] = {
|
||||
0.0f,
|
||||
-0.1f,
|
||||
0.4f,
|
||||
0.5f,
|
||||
1.4f,
|
||||
0.5f,
|
||||
f32 daBoko_c::m_jump_blur_rate[] = {
|
||||
/* Type_BOKO_STICK_e */ 0.0f,
|
||||
/* Type_MACHETE_e */ -0.1f,
|
||||
/* Type_STALFOS_MACE_e */ 0.4f,
|
||||
/* Type_DARKNUT_SWORD_e */ 0.5f,
|
||||
/* Type_MOBLIN_SPEAR_e */ 1.4f,
|
||||
/* Type_PGANON_SWORD_e */ 0.5f,
|
||||
};
|
||||
f32 daBoko_c::m_blur_rate[6] = {
|
||||
0.0f,
|
||||
-0.1f,
|
||||
0.1f,
|
||||
0.2f,
|
||||
1.0f,
|
||||
0.2f,
|
||||
f32 daBoko_c::m_blur_rate[] = {
|
||||
/* Type_BOKO_STICK_e */ 0.0f,
|
||||
/* Type_MACHETE_e */ -0.1f,
|
||||
/* Type_STALFOS_MACE_e */ 0.1f,
|
||||
/* Type_DARKNUT_SWORD_e */ 0.2f,
|
||||
/* Type_MOBLIN_SPEAR_e */ 1.0f,
|
||||
/* Type_PGANON_SWORD_e */ 0.2f,
|
||||
};
|
||||
u8 daBoko_c::m_se_type[6] = {
|
||||
0x04,
|
||||
0x01,
|
||||
0x01,
|
||||
0x01,
|
||||
0x03,
|
||||
0x01,
|
||||
u8 daBoko_c::m_se_type[] = {
|
||||
/* Type_BOKO_STICK_e */ dCcG_SE_UNK4,
|
||||
/* Type_MACHETE_e */ dCcG_SE_UNK1,
|
||||
/* Type_STALFOS_MACE_e */ dCcG_SE_UNK1,
|
||||
/* Type_DARKNUT_SWORD_e */ dCcG_SE_UNK1,
|
||||
/* Type_MOBLIN_SPEAR_e */ dCcG_SE_UNK3,
|
||||
/* Type_PGANON_SWORD_e */ dCcG_SE_UNK1,
|
||||
};
|
||||
|
||||
/* 80067E78-80067F0C .text getTopPos__8daBoko_cFP4cXyz */
|
||||
|
||||
+2
-2
@@ -321,10 +321,10 @@ void dStage_roomControl_c::checkDrawArea() const {
|
||||
static Mtx l_m[2];
|
||||
for (int i = 0; i < 2; i++) {
|
||||
mDoMtx_stack_c::transS(pos);
|
||||
f32 scale = darkStatus.getBokoScale(i);
|
||||
f32 scale = darkStatus.getNonScale(i);
|
||||
mDoMtx_stack_c::scaleM(scale, scale, scale);
|
||||
cMtx_copy(mDoMtx_stack_c::get(), l_m[i]);
|
||||
dComIfGd_setSpotModel(0, l_m[i], darkStatus.getBokoAlpha(i));
|
||||
dComIfGd_setSpotModel(0, l_m[i], darkStatus.getNonAlpha(i));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user