d_a_mg_rod mostly done (#2598)

* d_a_mg_rod mostly done

* pr
This commit is contained in:
TakaRikka
2025-08-22 22:58:29 -07:00
committed by GitHub
parent aec2c0987d
commit 0a8679f92e
17 changed files with 6718 additions and 3070 deletions
@@ -35,6 +35,10 @@ inline float ceil(float num) {
inline float floor(float num) {
return ::floorf(num);
}
inline float tan(float num) {
return ::i_tanf(num);
}
} // namespace std
#endif
+1 -1
View File
@@ -340,7 +340,7 @@ int daAlink_c::canoeCommon() {
/* 800F4924-800F4A50 0EF264 012C+00 10/10 0/0 0/0 .text checkNextActionCanoe__9daAlink_cFv */
int daAlink_c::checkNextActionCanoe() {
if ((!checkFishingRodAndLureItem() || mItemAcKeep.getActor() == NULL ||
static_cast<dmg_rod_class*>(mItemAcKeep.getActor())->checkRodEquipPermission()) &&
((dmg_rod_class*)mItemAcKeep.getActor())->checkRodEquipPermission()) &&
checkNextActionFromButton()) {
return 1;
}
+2 -2
View File
@@ -1246,7 +1246,7 @@ static void b_gnd_g_wait(b_gnd_class* i_this) {
mant_class* mant_p = (mant_class*)fopAcM_SearchByID(i_this->mMantChildID);
dmg_rod_class* mgrod_p = (dmg_rod_class*)fopAcM_SearchByName(PROC_MG_ROD);
if (mgrod_p != NULL && mgrod_p->field_0xf7e != 0) {
if (mgrod_p != NULL && mgrod_p->action != 0) {
if (i_this->mMoveMode < 5 && i_this->mPlayerDistXZ < 600.0f) {
i_this->mMoveMode = 5;
i_this->field_0xc44[0] = 10;
@@ -1332,7 +1332,7 @@ static void b_gnd_g_wait(b_gnd_class* i_this) {
}
i_this->field_0xc7d = 2;
i_this->field_0xc80 = mgrod_p->mHookPosition;
i_this->field_0xc80 = mgrod_p->hook_pos;
break;
case 6:
angle_step = 0;
+3 -3
View File
@@ -241,9 +241,9 @@ void daE_BG_c::setSparkEffect() {
/* 80685F04-80685F88 0007E4 0084+00 2/2 0/0 0/0 .text search_esa__8daE_BG_cFv */
fopAc_ac_c* daE_BG_c::search_esa() {
dmg_rod_class* rod = (dmg_rod_class*)fopAcM_SearchByName(PROC_MG_ROD);
if (rod != NULL && rod->field_0xf7c == 1 && rod->field_0xf7e != 5 && rod->field_0x100d != 0 &&
rod->current.pos.y < rod->field_0x590 - 20.0f) {
return rod;
if (rod != NULL && rod->kind == 1 && rod->action != 5 && rod->field_0x100d != 0 &&
rod->actor.current.pos.y < rod->field_0x590 - 20.0f) {
return &rod->actor;
} else {
return NULL;
}
+2 -2
View File
@@ -233,8 +233,8 @@ static obj_kbox_class* search_box(e_sg_class* i_this) {
static dmg_rod_class* search_esa(e_sg_class* i_this) {
dmg_rod_class* rod = (dmg_rod_class*)fopAcM_SearchByName(PROC_MG_ROD);
if (rod != NULL && rod->field_0xf7c == 1 && rod->field_0xf7e != 5 && rod->field_0x100d != 0 &&
rod->current.pos.y < rod->field_0x590 - 20.0f)
if (rod != NULL && rod->kind == 1 && rod->action != 5 && rod->field_0x100d != 0 &&
rod->actor.current.pos.y < rod->field_0x590 - 20.0f)
{
return rod;
}
+80 -80
View File
@@ -184,8 +184,8 @@ static void* s_lure_sub(void* a, void* b) {
if (fopAc_IsActor(a)) {
if (fopAcM_GetName(a) == PROC_MG_ROD) {
dmg_rod_class* rod = (dmg_rod_class*)a;
if (rod->field_0xf7c == 0 &&
rod->field_0xf7e == 4 &&
if (rod->kind == 0 &&
rod->action == 4 &&
rod->field_0x10a9 == 0 &&
rod->field_0x100d != 0) {
return rod;
@@ -200,10 +200,10 @@ static void* s_esa_sub(void* a, void* b) {
if (fopAc_IsActor(a)) {
if (fopAcM_GetName(a) == PROC_MG_ROD) {
dmg_rod_class* rod = (dmg_rod_class*)a;
if (rod->field_0xf7c == 1 &&
rod->field_0xf7e != 5 &&
if (rod->kind == 1 &&
rod->action != 5 &&
rod->field_0x100d != 0 &&
rod->current.pos.y < rod->field_0x590 - 20.0f) {
rod->actor.current.pos.y < rod->field_0x590 - 20.0f) {
return rod;
}
}
@@ -260,7 +260,7 @@ static s32 search_lure(mg_fish_class* i_this, int param_2) {
fpcM_Search(s_other_search_sub, i_this);
if (s_fish_ct <= 1) {
f32 fVar1 = i_this->field_0x5ec;
if (rod->field_0xf80 == 4) {
if (rod->lure_type == MG_LURE_SP) {
fVar1 = 1000.0f;
} else {
if (rod->field_0x1009 != 0) {
@@ -274,13 +274,13 @@ static s32 search_lure(mg_fish_class* i_this, int param_2) {
fVar1 *= 0.5f;
}
if (i_this->mGedouKind != GEDOU_KIND_CF_1 &&
rod->field_0xf80 != 4 &&
(i_this->field_0x750 & learn_d[rod->field_0xf80]) != 0)
rod->lure_type != MG_LURE_SP &&
(i_this->field_0x750 & learn_d[rod->lure_type]) != 0)
{
return -1;
}
cXyz diff = rod->current.pos - i_this->actor.current.pos;
if (rod->field_0xf80 == 2 && rod->field_0x100c >= 10) {
cXyz diff = rod->actor.current.pos - i_this->actor.current.pos;
if (rod->lure_type == MG_LURE_PO && rod->field_0x100c >= 10) {
diff.y = -80.0f;
}
if (diff.abs() < fVar1) {
@@ -292,15 +292,15 @@ static s32 search_lure(mg_fish_class* i_this, int param_2) {
fopAc_ac_c* rod_actor = (fopAc_ac_c*)fpcM_Search(s_esa_sub, i_this);
if (rod_actor != NULL) {
dmg_rod_class* rod = (dmg_rod_class*)rod_actor;
if (i_this->mGedouKind == GEDOU_KIND_KS_2 && rod->field_0x102d != 1) {
if (i_this->mGedouKind == GEDOU_KIND_KS_2 && rod->hook_kind != 1) {
return -1;
}
if ((i_this->mGedouKind == GEDOU_KIND_BG || rod->field_0x102d == 1 || rod->field_0x102c != 0) &&
rod->current.pos.y < i_this->mSurfaceY - 60.0f)
if ((i_this->mGedouKind == GEDOU_KIND_BG || rod->hook_kind == 1 || rod->esa_kind != 0) &&
rod->actor.current.pos.y < i_this->mSurfaceY - 60.0f)
{
f32 maxLatDist = i_this->field_0x5ec;
f32 distX = rod->current.pos.x - i_this->actor.current.pos.x;
f32 distZ = rod->current.pos.z - i_this->actor.current.pos.z;
f32 distX = rod->actor.current.pos.x - i_this->actor.current.pos.x;
f32 distZ = rod->actor.current.pos.z - i_this->actor.current.pos.z;
f32 latDist = JMAFastSqrt(distX * distX + distZ * distZ);
if (latDist < maxLatDist) {
return fopAcM_GetID(rod);
@@ -1378,9 +1378,9 @@ static void mf_lure_search(mg_fish_class* i_this) {
foundLure = true;
} else if (rod->field_0x100a != 0 || rod->field_0x100d == 0) {
foundLure = true;
} else if (rod->field_0xf7e != 4) {
if (rod->field_0xf7e >= 5 &&
rod->mFishId == fopAcM_GetID(i_this)) {
} else if (rod->action != 4) {
if (rod->action >= 5 &&
rod->mg_fish_id == fopAcM_GetID(i_this)) {
foundLure = false;
} else {
foundLure = true;
@@ -1404,7 +1404,7 @@ static void mf_lure_search(mg_fish_class* i_this) {
case 1:
i_this->mActionPhase = 2;
case 2: {
rodSep = rod->current.pos - i_this->actor.current.pos;
rodSep = rod->actor.current.pos - i_this->actor.current.pos;
rodSep.y -= 10.0f;
i_this->mMovementYaw = cM_atan2s(rodSep.x, rodSep.z);
i_this->mMovementPitch = -cM_atan2s(rodSep.y, JMAFastSqrt(rodSep.x * rodSep.x + rodSep.z * rodSep.z));
@@ -1412,7 +1412,7 @@ static void mf_lure_search(mg_fish_class* i_this) {
i_this->mMovementPitch = -0x2000;
}
f32 rodDist = sqrtf(VECSquareMag(&rodSep));
if (rod->field_0xf80 != 4 && rod->field_0xf80 != 2 &&
if (rod->lure_type != MG_LURE_SP && rod->lure_type != MG_LURE_PO &&
rodDist > 2.0f * i_this->field_0x5ec) {
foundLure = true;
} else {
@@ -1421,7 +1421,7 @@ static void mf_lure_search(mg_fish_class* i_this) {
i_this->field_0x624[0] = cM_rndF(100.0f);
i_this->field_0x624[1] = cM_rndF(200.0f) + 100.0f;
if (i_this->mGedouKind == GEDOU_KIND_NP_1 || i_this->mGedouKind == GEDOU_KIND_LM_1) {
if (rod->field_0x14f0 != 0) {
if (rod->reel_btn_flags != 0) {
target = 2.0f;
}
f32 fVar11;
@@ -1431,8 +1431,8 @@ static void mf_lure_search(mg_fish_class* i_this) {
fVar11 = 0.025f;
}
if (rodDist < 1.3f * i_this->field_0x5ec &&
(rod->field_0xf80 == 4 || rod->field_0xf80 == 3) &&
rod->field_0x14f0 != 0 &&
(rod->lure_type == MG_LURE_SP || rod->lure_type == MG_LURE_WS) &&
rod->reel_btn_flags != 0 &&
(i_this->mBobTimer & 0x1f) == 0 &&
cM_rndF(1.0f) < fVar11) {
sVar10 = 0x5a;
@@ -1458,7 +1458,7 @@ static void mf_lure_search(mg_fish_class* i_this) {
limit1 *= 2.0f;
limit2 *= 2.0f;
} else if (i_this->mGedouKind == GEDOU_KIND_RI_1 &&
rod->field_0xf80 != 0 &&
rod->lure_type != MG_LURE_FR &&
i_this->field_0x5f8 < 10) {
limit1 = limit2 = -1.0f;
}
@@ -1493,7 +1493,7 @@ static void mf_lure_search(mg_fish_class* i_this) {
i_this->field_0x624[2] = sVar10;
}
cLib_addCalc2(&i_this->actor.current.pos.y, rod->current.pos.y - 20.0f,
cLib_addCalc2(&i_this->actor.current.pos.y, rod->actor.current.pos.y - 20.0f,
0.05f, 2.0f);
if (i_this->field_0x624[1] == 1) {
@@ -1511,12 +1511,12 @@ static void mf_lure_search(mg_fish_class* i_this) {
break;
}
rodSep = rod->current.pos - i_this->actor.current.pos;
rodSep = rod->actor.current.pos - i_this->actor.current.pos;
i_this->mMovementYaw = cM_atan2s(rodSep.x, rodSep.z);
i_this->mMovementPitch = -cM_atan2s(rodSep.y, JMAFastSqrt(rodSep.x * rodSep.x + rodSep.z * rodSep.z));
target = 3.0f;
if (rod->field_0x14f0 != 0) {
if (rod->reel_btn_flags != 0) {
target = 5.0f;
}
@@ -1529,12 +1529,12 @@ static void mf_lure_search(mg_fish_class* i_this) {
if (rodDist < i_this->mJointScale * 40.0f) {
if (i_this->mGedouKind == GEDOU_KIND_CF_1) {
if (rod->field_0xf80 == 4) {
if (rod->lure_type == MG_LURE_SP) {
i_this->mRemainingHookTime = cM_rndF(10.0f) + 20.0f;
} else {
i_this->mRemainingHookTime = cM_rndF(12.0f) + 30.0f;
}
} else if (rod->field_0xf80 == 4) {
} else if (rod->lure_type == MG_LURE_SP) {
if (i_this->mJointScale >= 0.6f) {
if (sVar10 != 0) {
i_this->mActionPhase = 3;
@@ -1555,13 +1555,13 @@ static void mf_lure_search(mg_fish_class* i_this) {
break;
}
if (rod->field_0xf80 == 0) {
if (rod->lure_type == MG_LURE_FR) {
i_this->mRemainingHookTime = cM_rndF(10.0f) + 40.0f;
}
rod->field_0xf7e = 5;
rod->action = 5;
rod->field_0x10a5 = 2;
rod->mFishId = fopAcM_GetID(i_this);
rod->mg_fish_id = fopAcM_GetID(i_this);
rod->field_0x1006 = cM_rndFX(7000.0f) + 1000.0f;
i_this->mHookedState = 1;
i_this->mMovementYaw = cM_rndFX(65536.0f);
@@ -1570,7 +1570,7 @@ static void mf_lure_search(mg_fish_class* i_this) {
i_this->mActionPhase = 4;
mouth_close(i_this);
if (rod->current.pos.y > i_this->mSurfaceY - 15.0f) {
if (rod->actor.current.pos.y > i_this->mSurfaceY - 15.0f) {
sibuki_set(i_this, 2.5f, i_this->field_0x638);
if (i_this->mGedouKind == GEDOU_KIND_RI_1) {
i_this->mSound.startCreatureSound(Z2SE_AL_DOJOU_EAT_IMPACT, 0, -1);
@@ -1593,7 +1593,7 @@ static void mf_lure_search(mg_fish_class* i_this) {
maxStep = 0.5f;
i_this->mHookedState = 2;
if (i_this->mRemainingHookTime == 0) {
if (rod->field_0xf80 != 4) {
if (rod->lure_type != MG_LURE_SP) {
rod->field_0x10a6 = 30;
if (rod->field_0x10a7 != 4) {
rod->field_0x10a7 = 1;
@@ -1635,7 +1635,7 @@ static void mf_lure_search(mg_fish_class* i_this) {
*/
static void mf_bait_search(mg_fish_class* i_this) {
s32 foundBait = false;
dmg_rod_class* rod = (dmg_rod_class*)fopAcM_SearchByID(i_this->mBaitId);
fr_class* rod = (fr_class*)fopAcM_SearchByID(i_this->mBaitId);
if (rod == NULL) {
i_this->mActionPhase = 100;
foundBait = true;
@@ -1695,9 +1695,9 @@ static void mf_bait_search(mg_fish_class* i_this) {
speedMaxStep = 1.0f;
f32 fVar10 = offsetToRod.abs();
if (fVar10 < 40.0f * i_this->mJointScale) {
rod->field_0x5a4.field_0x2e = 0x32;
rod->field_0x5a4.field_0x30 = 0;
rod->field_0x5a4.field_0x54 = fopAcM_GetID(i_this);
rod->field_0x5d2 = 0x32;
rod->field_0x5d4 = 0;
rod->field_0x5f8 = fopAcM_GetID(i_this);
fVar10 = cM_rndFX(65536.0f);
i_this->mMovementYaw = fVar10;
i_this->mMovementPitch = 0x2000;
@@ -1877,7 +1877,7 @@ static void mf_hit(mg_fish_class* i_this) {
}
}
} else {
if (pvVar5->field_0x14f0 == 0 ||
if (pvVar5->reel_btn_flags == 0 ||
pvVar5->field_0x1515 == 0 ||
pvVar5->field_0xf60 < 100.0f)
{
@@ -1894,16 +1894,16 @@ static void mf_hit(mg_fish_class* i_this) {
i_this->mActionPhase = 0;
g_dComIfG_gameInfo.play.mVibration.StartShock(4, 1, cXyz(0.0f, 1.0f, 0.0f));
Z2AudioMgr::getInterface()->changeBgmStatus(4);
pvVar5->field_0xf7e = 6;
pvVar5->field_0x13b4 = 10;
pvVar5->field_0x13b6 = 0;
pvVar5->action = 6;
pvVar5->play_cam_mode = 10;
pvVar5->play_cam_timer = 0;
pvVar5->field_0x14c2 = 0;
pvVar5->field_0x1408 = 90.0f;
pvVar5->play_cam_fovy = 90.0f;
pvVar5->field_0x146d = 0;
pvVar5->field_0x10b0 = 0;
daPy_py_c* player = daPy_getLinkPlayerActorClass();
player->onFishingRodGetFish();
if (pvVar5->field_0xf80 == 4) {
if (pvVar5->lure_type == MG_LURE_SP) {
u8 bVar7 = g_dComIfG_gameInfo.info.mSavedata.mEvent.getEventReg(0xf11f);
if (bVar7 < 0x1f) {
bVar7++;
@@ -1913,12 +1913,12 @@ static void mf_hit(mg_fish_class* i_this) {
} else if (iVar1 != 0) {
if (iVar1 == 2) {
pvVar5->field_0x10a7 = 3;
pvVar5->field_0x57e = cM_rndF(13.0f) + 30.0f;
pvVar5->timers[2] = cM_rndF(13.0f) + 30.0f;
pvVar5->field_0x10a6 = 1;
} else {
pvVar5->field_0x10a7 = 2;
pvVar5->field_0x10a6 = 0x19;
pvVar5->field_0x57e = 0;
pvVar5->timers[2] = 0;
}
i_this->mCurAction = ACTION_MG_FISH_MF_AWAY;
i_this->mActionPhase = -1;
@@ -1979,7 +1979,7 @@ static void mf_jump(mg_fish_class* i_this) {
i_this->actor.current.angle.z = i_this->actor.current.angle.z + i_this->jointYaws2[2];
i_this->actor.shape_angle.z = i_this->actor.current.angle.z;
i_this->mMovementPitch = i_this->mMovementPitch + i_this->jointYaws2[3];
if (i_this->field_0x624[0] == 1 && rod->mRodStickY <= -0.5f && cM_rndF(1.0f) < 0.35f) {
if (i_this->field_0x624[0] == 1 && rod->rod_stick_y <= -0.5f && cM_rndF(1.0f) < 0.35f) {
i_this->field_0x65a = 1;
i_this->mHookedState = 0;
}
@@ -2224,9 +2224,9 @@ static void mf_catch(mg_fish_class* i_this) {
i_this->mActionPhase = 3;
i_this->field_0x624[0] = 40;
player->onFishingRelease();
rod->health = 1;
rod->field_0x13b4 = 11;
rod->field_0x13b6 = 0;
rod->actor.health = 1;
rod->play_cam_mode = 11;
rod->play_cam_timer = 0;
rod->field_0x146d = 0;
i_this->field_0x740 = cM_rndF(1000.0f) + 3000.0f;
}
@@ -2291,7 +2291,7 @@ static void mf_esa_search(mg_fish_class* i_this) {
flag1 = 1;
} else if (rod->field_0x100d == 0) {
flag1 = 1;
} else if (rod->field_0xf7e == 5) {
} else if (rod->action == 5) {
flag1 = 1;
}
if (flag1) {
@@ -2313,7 +2313,7 @@ static void mf_esa_search(mg_fish_class* i_this) {
i_this->mActionPhase = 2;
}
case 2: {
cXyz xyz = rod->current.pos - i_this->actor.current.pos;
cXyz xyz = rod->actor.current.pos - i_this->actor.current.pos;
i_this->mMovementYaw = cM_atan2s(xyz.x, xyz.z);
i_this->mMovementPitch = -cM_atan2s(xyz.y,
JMAFastSqrt(xyz.x * xyz.x + xyz.z * xyz.z));
@@ -2337,23 +2337,23 @@ static void mf_esa_search(mg_fish_class* i_this) {
}
}
xyz = i_this->field_0x638 - rod->current.pos;
xyz = i_this->field_0x638 - rod->actor.current.pos;
if (sqrtf(VECSquareMag(&xyz)) < i_this->mJointScale * 14.0f) {
fVar9 = i_this->field_0x654;
i_this->mMaxStep = 0;
if (i_this->field_0x624[0] == 0) {
rod->mFishId = fopAcM_GetID(i_this);
rod->mg_fish_id = fopAcM_GetID(i_this);
f32 fVar10 = 0.5f;
if (dComIfGs_getFishNum(5) <= 5) {
fVar10 = 1.5f;
}
if (i_this->mGedouKind != GEDOU_KIND_BG) {
if (rod->field_0x102d == 1) {
if (rod->hook_kind == 1) {
fVar10 = 1.0f;
}
if (rod->field_0x102c == 1) {
if (rod->esa_kind == 1) {
fVar10 *= 1.5f;
} else if (rod->field_0x102c == 2) {
} else if (rod->esa_kind == 2) {
fVar10 *= 2.0f;
}
}
@@ -2371,7 +2371,7 @@ static void mf_esa_search(mg_fish_class* i_this) {
rod->field_0x10a5 = fVar10 * (cM_rndF(15.0f) + 15.0f);
i_this->field_0x659 = rod->field_0x10a5;
i_this->field_0x650 = 0.0f;
if (rod->field_0x102d == 0 && rod->field_0x102c == 0) {
if (rod->hook_kind == 0 && rod->esa_kind == 0) {
i_this->field_0x624[0] = cM_rndF(80.0f) + 50.0f;
} else {
i_this->field_0x624[0] = cM_rndF(20.0f) + 30.0f;
@@ -2380,9 +2380,9 @@ static void mf_esa_search(mg_fish_class* i_this) {
}
}
if (i_this->field_0x659 == 0) {
cLib_addCalc2(&i_this->actor.current.pos.y, rod->current.pos.y, 0.05f, 2.0f);
cLib_addCalc2(&i_this->actor.current.pos.y, rod->actor.current.pos.y, 0.05f, 2.0f);
} else {
cLib_addCalc2(&i_this->actor.current.pos.y, rod->current.pos.y - 20.0f, 0.05f, 2.0f);
cLib_addCalc2(&i_this->actor.current.pos.y, rod->actor.current.pos.y - 20.0f, 0.05f, 2.0f);
}
break;
}
@@ -2401,8 +2401,8 @@ static void mf_esa_search(mg_fish_class* i_this) {
cLib_addCalcAngleS2(&i_this->actor.current.angle.y, i_this->mMovementYaw, 2, i_this->mMaxStep);
cLib_addCalcAngleS2(&i_this->actor.current.angle.x, i_this->mMovementPitch, 2, i_this->mMaxStep);
if (i_this->field_0x5ec > 10000.0f) {
cLib_addCalc2(&i_this->actor.current.pos.x, rod->current.pos.x, 0.1f, 50.0f);
cLib_addCalc2(&i_this->actor.current.pos.z, rod->current.pos.z, 0.1f, 50.0f);
cLib_addCalc2(&i_this->actor.current.pos.x, rod->actor.current.pos.x, 0.1f, 50.0f);
cLib_addCalc2(&i_this->actor.current.pos.z, rod->actor.current.pos.z, 0.1f, 50.0f);
}
if (flag2) {
i_this->mCurAction = ACTION_MG_FISH_MF_SWIM_S;
@@ -2415,7 +2415,7 @@ static void mf_esa_search(mg_fish_class* i_this) {
/* 8053109C-805313D8 00745C 033C+00 1/1 0/0 0/0 .text mf_esa_hit__FP13mg_fish_class */
static void mf_esa_hit(mg_fish_class* i_this) {
dmg_rod_class* rod = (dmg_rod_class*)fopAcM_SearchByID(i_this->mRodId);
if (rod == NULL || (rod != NULL && rod->field_0xf7e != 5)) {
if (rod == NULL || (rod != NULL && rod->action != 5)) {
i_this->mCurAction = ACTION_MG_FISH_MF_SWIM_S;
i_this->mActionPhase = 0;
i_this->field_0x62e = cM_rndF(100.0f) + 100.0f;
@@ -3398,7 +3398,7 @@ static int daMg_Fish_Execute(mg_fish_class* i_this) {
i_this->actor.current.pos.z);
cMtx_YrotM(mDoMtx_stack_c::now, i_this->actor.shape_angle.y);
cMtx_XrotM(mDoMtx_stack_c::now, 0x4000);
if (rod->field_0x102d == 1) {
if (rod->hook_kind == 1) {
mDoMtx_stack_c::transM(0.0f, 0.0f, 35.0f);
} else {
mDoMtx_stack_c::transM(0.0f, 0.0f, 29.0f);
@@ -3516,7 +3516,7 @@ static int daMg_Fish_Execute(mg_fish_class* i_this) {
i_this->actor.current.pos.z);
cMtx_YrotM(mDoMtx_stack_c::now, i_this->actor.shape_angle.y);
cMtx_XrotM(mDoMtx_stack_c::now, -0x4000);
if (rod->field_0x102d == 1) {
if (rod->hook_kind == 1) {
mDoMtx_stack_c::transM(0.0f, 0.0f, -14.0f);
} else {
mDoMtx_stack_c::transM(0.0f, 0.0f, -8.0f);
@@ -3533,7 +3533,7 @@ static int daMg_Fish_Execute(mg_fish_class* i_this) {
i_this->actor.current.pos.z);
cMtx_YrotM(mDoMtx_stack_c::now, i_this->actor.shape_angle.y);
cMtx_XrotM(mDoMtx_stack_c::now, -0x4000);
if (rod->field_0x102d == 1) {
if (rod->hook_kind == 1) {
mDoMtx_stack_c::transM(0.0f, 0.0f, -25.0f);
} else {
mDoMtx_stack_c::transM(0.0f, 0.0f, -19.0f);
@@ -3586,7 +3586,7 @@ static int daMg_Fish_Execute(mg_fish_class* i_this) {
MtxPosition(&commonXyz, &i_this->field_0x638);
if (i_this->mHookedState != 0) {
dmg_rod_class* rod = (dmg_rod_class*)fopAcM_SearchByID(i_this->mRodId);
if (rod->field_0xf80 == 4 && i_this->mCurAction == ACTION_MG_FISH_MF_CATCH) {
if (rod->lure_type == MG_LURE_SP && i_this->mCurAction == ACTION_MG_FISH_MF_CATCH) {
if (i_this->mKind2 == 0) {
f32 fVar3 = (i_this->mJointScale - 0.48f) * 100.0f;
if (fVar3 < 0.0f) {
@@ -3606,29 +3606,29 @@ static int daMg_Fish_Execute(mg_fish_class* i_this) {
commonXyz.z += 5.0f;
}
MtxPosition(&commonXyz, &i_this->field_0x638);
rod->current.angle.y = 0;
rod->current.angle.x = 0x4000;
rod->current.angle.z = player->shape_angle.y + 8000;
rod->shape_angle.x = rod->current.angle.x;
rod->shape_angle.y = rod->current.angle.y;
rod->shape_angle.z = rod->current.angle.z;
rod->actor.current.angle.y = 0;
rod->actor.current.angle.x = 0x4000;
rod->actor.current.angle.z = player->shape_angle.y + 8000;
rod->actor.shape_angle.x = rod->actor.current.angle.x;
rod->actor.shape_angle.y = rod->actor.current.angle.y;
rod->actor.shape_angle.z = rod->actor.current.angle.z;
rod->field_0x114a = 0;
rod->field_0x114c = 0;
rod->field_0x1004 = 0;
} else {
if (rod->field_0xf80 == 0 && i_this->mGedouKind == GEDOU_KIND_RI_1) {
if (rod->lure_type == MG_LURE_FR && i_this->mGedouKind == GEDOU_KIND_RI_1) {
commonXyz.y += 8.0f;
commonXyz.z += -3.0f;
MtxPosition(&commonXyz, &i_this->field_0x638);
}
cLib_addCalcAngleS2(&rod->current.angle.y, i_this->actor.shape_angle.y - 0x1710, 2, 0x800);
cLib_addCalcAngleS2(&rod->current.angle.x,
cLib_addCalcAngleS2(&rod->actor.current.angle.y, i_this->actor.shape_angle.y - 0x1710, 2, 0x800);
cLib_addCalcAngleS2(&rod->actor.current.angle.x,
i_this->actor.shape_angle.x + - 0x310c + rod->field_0x1006, 2, 0x800);
cLib_addCalcAngleS2(&rod->current.angle.z, 0x6328, 2, 0x800);
cLib_addCalcAngleS2(&rod->actor.current.angle.z, 0x6328, 2, 0x800);
}
rod->current.pos.x = i_this->field_0x638.x;
rod->current.pos.y = i_this->field_0x638.y;
rod->current.pos.z = i_this->field_0x638.z;
rod->actor.current.pos.x = i_this->field_0x638.x;
rod->actor.current.pos.y = i_this->field_0x638.y;
rod->actor.current.pos.z = i_this->field_0x638.z;
rod->field_0x1000 = 0;
rod->field_0xffc = 0;
}
+6304 -2876
View File
File diff suppressed because it is too large Load Diff
+9 -9
View File
@@ -501,7 +501,7 @@ static void henna_ride(npc_henna_class* i_this) {
if (lrl != NULL) {
fopAc_ac_c* fish;
if (lrl->field_0xf7e == 0) {
if (lrl->action == 0) {
if (i_this->field_0x710 == 0) {
i_this->field_0x710 = cM_rndF(100.0f) + 90.0f;
cMtx_YrotS(*calc_mtx, actor->shape_angle.y);
@@ -519,25 +519,25 @@ static void henna_ride(npc_henna_class* i_this) {
i_this->field_0x720 = fish->current.pos;
i_this->field_0x70e = 0x600;
}
} else if (lrl->field_0x13b4 == 10 || lrl->field_0x13b4 == 11) {
fish = fopAcM_SearchByID(lrl->mFishId);
} else if (lrl->play_cam_mode == 10 || lrl->play_cam_mode == 11) {
fish = fopAcM_SearchByID(lrl->mg_fish_id);
if (fish != NULL) {
i_this->field_0x720 = fish->current.pos;
i_this->field_0x70e = 1000;
}
} else if (lrl->field_0xf7e == 1) {
} else if (lrl->action == 1) {
cMtx_YrotS(*calc_mtx, player->getFishingRodAngleY());
unkXyz_48.x = 0.0f;
unkXyz_48.y = 0.0f;
unkXyz_48.z = 2000.0f;
MtxPosition(&unkXyz_48, &i_this->field_0x720);
i_this->field_0x720 += player->eyePos;
} else if (lrl->field_0xf7e == 3 || lrl->field_0xf7e == 4 || lrl->field_0xf7e == 5) {
i_this->field_0x720 = lrl->current.pos;
} else if (lrl->action == 3 || lrl->action == 4 || lrl->action == 5) {
i_this->field_0x720 = lrl->actor.current.pos;
i_this->field_0x70e = 0x600;
}
if (player->checkCanoeRide() != 0 && (lrl->field_0x13b4 == 0 || lrl->field_0x13b4 >= 0x50))
if (player->checkCanoeRide() != 0 && (lrl->play_cam_mode == 0 || lrl->play_cam_mode >= 0x50))
{
if (i_this->field_0x6a4 < 5) {
i_this->field_0x6a4 = 5;
@@ -704,7 +704,7 @@ static void action(npc_henna_class* i_this) {
msg_class* msg = ((dMsgObject_c*)unkActor1)->getActor();
if (msg != 0 && msg->mode == 6 && ((dMsgObject_c*)unkActor1)->isMouthCheck() != 0 &&
(lrl == 0 || lrl->field_0x13b4 != 30))
(lrl == 0 || lrl->play_cam_mode != 30))
{
i_this->field_0x6a6 = 15;
}
@@ -2197,7 +2197,7 @@ static void message_guide(npc_henna_class* i_this) {
actor->eventInfo.onCondition(dEvtCnd_CANTALK_e);
if (lrl != NULL && lrl->field_0x13b4 != 0) {
if (lrl != NULL && lrl->play_cam_mode != 0) {
return;
}
+3 -3
View File
@@ -2472,9 +2472,9 @@ static void action(npc_ne_class* i_this) {
cXyz vec1, vec2;
if (i_this->mWantsFish && i_this->mAction != npc_ne_class::ACT_SANBASI
&& player->current.pos.z > -2800.0f) {
dmg_rod_class* rod = static_cast<dmg_rod_class*>(fopAcM_SearchByName(PROC_MG_ROD));
if (rod != NULL && rod->field_0xf7c == 1 && rod->field_0xf7e != 5
&& rod->field_0x13b4 != 0 && !i_this->mNoFollow) {
dmg_rod_class* rod = ((dmg_rod_class*)fopAcM_SearchByName(PROC_MG_ROD));
if (rod != NULL && rod->kind == 1 && rod->action != 5
&& rod->play_cam_mode != 0 && !i_this->mNoFollow) {
if (i_this->mDistToTarget > 500.0f) {
_this->current.pos = ground_search(i_this);
_this->old = _this->current;
+2 -2
View File
@@ -241,8 +241,8 @@ static int daObj_Lp_Execute(obj_lp_class* i_this) {
if (mCanoe) {
tandem = mCanoe->checkTandem();
dmg_rod_class* mDmgRod = (dmg_rod_class*)fopAcM_SearchByName(0x2e4);
if (((mDmgRod && mDmgRod->field_0x13b4 == 11) &&
mDmgRod->field_0x13b6 > 20) && mDmgRod->field_0x13b6 < 0x3c) {
if (((mDmgRod && mDmgRod->play_cam_mode == 11) &&
mDmgRod->play_cam_timer > 20) && mDmgRod->play_cam_timer < 0x3c) {
demo_f = 1;
} else {
demo_f = 0;