summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/d/actor/d_a_e_wb.cpp86
-rw-r--r--src/d/actor/d_a_e_ww.cpp2918
2 files changed, 1371 insertions, 1633 deletions
diff --git a/src/d/actor/d_a_e_wb.cpp b/src/d/actor/d_a_e_wb.cpp
index a31ec5f08d..798ea8a6b2 100644
--- a/src/d/actor/d_a_e_wb.cpp
+++ b/src/d/actor/d_a_e_wb.cpp
@@ -126,17 +126,17 @@ static dCcD_SrcSph at_sph_src = {
/* 807D248C-807D2548 0000EC 00BC+00 1/1 0/0 0/0 .text __ct__12daE_WB_HIO_cFv */
daE_WB_HIO_c::daE_WB_HIO_c() {
field_0x04 = -1;
- mBaseSize = 1.2f;
- mLeaderSizeRatio = 1.2f;
- mMovementSpeed = 3.5f;
- mPlayerRecognitionDistance = 600.0f;
- mMaxSpeed = 37.0f;
- mCalvaryBattleMaxSpeed = 50.0f;
- mLeaderWalkingSpeed = 10.0f;
- mLeaderMaxSpeed = 40.0f;
- mLeaderCalvaryBattleMaxSpeed = 54.0f;
- mNormalSpeedVi = 25.0f;
- mMediumSpeedVi = 45.0f;
+ base_size = 1.2f;
+ leader_size_ratio = 1.2f;
+ movement_speed = 3.5f;
+ player_recognition_dist = 600.0f;
+ max_speed = 37.0f;
+ cavalry_battle_max_speed = 50.0f;
+ leader_walking_speed = 10.0f;
+ leader_max_speed = 40.0f;
+ leader_cavalry_battle_max_speed = 54.0f;
+ normal_speed_vi = 25.0f;
+ medium_speed_vi = 45.0f;
mMaxSpeedVi = 55.0f;
mSingleRiderSpeed = 50.0f;
mPlayerMountedMaxSpeed = 30.0f;
@@ -153,23 +153,23 @@ daE_WB_HIO_c::daE_WB_HIO_c() {
#ifdef DEBUG
void daE_WB_HIO_c::genMessage(JORMContext* ctx) {
ctx->genLabel(" イノシシ", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
- ctx->genSlider("基本サイズ", &mBaseSize, 0.0f, 5.0f, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
- ctx->genSlider("リーダーサイズ比", &mLeaderSizeRatio, 0.0f, 5.0, 0, NULL, 0xFFFF, 0xFFFF, 512,
+ ctx->genSlider("基本サイズ", &base_size, 0.0f, 5.0f, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
+ ctx->genSlider("リーダーサイズ比", &leader_size_ratio, 0.0f, 5.0, 0, NULL, 0xFFFF, 0xFFFF, 512,
24);
- ctx->genSlider("移動速度", &mMovementSpeed, 0.0f, 20.0f, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
- ctx->genSlider("PL認識距離", &mPlayerRecognitionDistance, 0.0f, 2000.0f, 0, NULL, 0xFFFF,
+ ctx->genSlider("移動速度", &movement_speed, 0.0f, 20.0f, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
+ ctx->genSlider("PL認識距離", &player_recognition_dist, 0.0f, 2000.0f, 0, NULL, 0xFFFF,
0xFFFF, 512, 24);
- ctx->genSlider("最速度", &mMaxSpeed, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
- ctx->genSlider("騎馬戦最速", &mCalvaryBattleMaxSpeed, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF,
+ ctx->genSlider("最速度", &max_speed, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
+ ctx->genSlider("騎馬戦最速", &cavalry_battle_max_speed, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF,
512, 24);
- ctx->genSlider("歩き速(リ)", &mLeaderWalkingSpeed, 0.0f, 30.0f, 0, NULL, 0xFFFF, 0xFFFF, 512,
+ ctx->genSlider("歩き速(リ)", &leader_walking_speed, 0.0f, 30.0f, 0, NULL, 0xFFFF, 0xFFFF, 512,
24);
- ctx->genSlider("最速度(リ)", &mLeaderMaxSpeed, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 512,
+ ctx->genSlider("最速度(リ)", &leader_max_speed, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 512,
24);
- ctx->genSlider("騎馬戦最(リ)", &mLeaderCalvaryBattleMaxSpeed, 0.0f, 100.0f, 0, NULL, 0xFFFF,
+ ctx->genSlider("騎馬戦最(リ)", &leader_cavalry_battle_max_speed, 0.0f, 100.0f, 0, NULL, 0xFFFF,
0xFFFF, 512, 24);
- ctx->genSlider("通常速(車)", &mNormalSpeedVi, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
- ctx->genSlider("中速度(車)", &mMediumSpeedVi, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
+ ctx->genSlider("通常速(車)", &normal_speed_vi, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
+ ctx->genSlider("中速度(車)", &medium_speed_vi, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
ctx->genSlider("最速度(車)", &mMaxSpeedVi, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
ctx->genSlider("一騎速", &mSingleRiderSpeed, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
ctx->genCheckBox("手綱ナシ", &mNoReins, 1, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
@@ -319,10 +319,10 @@ static void himo_control1(e_wb_class* i_this, cXyz* i_pos, int i_idx, s8 param_3
}
if (i_this->field_0x79d != 0) {
- sp60.z *= l_HIO.mLeaderSizeRatio;
- sp48 *= l_HIO.mLeaderSizeRatio;
- sp30 *= l_HIO.mLeaderSizeRatio;
- sp24 *= l_HIO.mLeaderSizeRatio;
+ sp60.z *= l_HIO.leader_size_ratio;
+ sp48 *= l_HIO.leader_size_ratio;
+ sp30 *= l_HIO.leader_size_ratio;
+ sp24 *= l_HIO.leader_size_ratio;
}
i = 1;
@@ -846,7 +846,7 @@ static void e_wb_pl_ride_now(e_wb_class* i_this) {
/* 807D4154-807D48C0 001DB4 076C+00 1/1 0/0 0/0 .text e_wb_pl_ride__FP10e_wb_class */
static void e_wb_pl_ride(e_wb_class* i_this) {
- f32 fVar11 = l_HIO.mCalvaryBattleMaxSpeed;
+ f32 fVar11 = l_HIO.cavalry_battle_max_speed;
f32 fVar2;
if (i_this->field_0x1432 != 0) {
@@ -952,8 +952,8 @@ static void e_wb_pl_ride(e_wb_class* i_this) {
i_this->mActionID = ACT_PL_RIDE;
i_this->field_0x1432 = 0;
- if (l_HIO.mNormalSpeedVi < i_this->speedF) {
- i_this->speedF = l_HIO.mNormalSpeedVi;
+ if (l_HIO.normal_speed_vi < i_this->speedF) {
+ i_this->speedF = l_HIO.normal_speed_vi;
}
}
} else if (i_this->field_0x142f && iVar4 == 1) {
@@ -993,7 +993,7 @@ static void e_wb_pl_ride(e_wb_class* i_this) {
i_this->mWaitRollAngle = i_this->current.angle.y - curr_angle_y;
f32 fVar10 =
- i_this->mWaitRollAngle * TREG_S(7) - 8 * i_this->speedF / l_HIO.mBaseSize + 1.0f;
+ i_this->mWaitRollAngle * TREG_S(7) - 8 * i_this->speedF / l_HIO.base_size + 1.0f;
if (fVar10 <= NREG_F(0x11) + 4500.0f) {
if (fVar10 < -NREG_F(0x11) + 4500.0f)
@@ -1281,7 +1281,7 @@ static void e_wb_b_run2(e_wb_class* i_this) {
cLib_addCalcAngleS2(&i_this->mTargetAngleStep, 0x400, 1, 0x10);
fVar1 = 3.0f;
- fVar10 = l_HIO.mLeaderMaxSpeed;
+ fVar10 = l_HIO.leader_max_speed;
i_this->field_0x142c = 1;
if (i_this->field_0x698 == 0 && dist < 5000.0f) {
@@ -1348,7 +1348,7 @@ static void e_wb_b_run(e_wb_class* i_this) {
i_this->mActionMode = 0;
} else {
s8 bVar11 = false;
- f32 fVar14 = l_HIO.mLeaderCalvaryBattleMaxSpeed;
+ f32 fVar14 = l_HIO.leader_cavalry_battle_max_speed;
if (daPy_getPlayerActorClass()->checkHorseRide() &&
dComIfGp_getHorseActor()->speedF >= 30.0f)
{
@@ -1447,20 +1447,20 @@ static void e_wb_b_run(e_wb_class* i_this) {
if (bVar11) {
// float regalloc
horse_speed = dComIfGp_getHorseActor()->speedF;
- speed_target = l_HIO.mLeaderCalvaryBattleMaxSpeed;
+ speed_target = l_HIO.leader_cavalry_battle_max_speed;
if (speed_target > horse_speed) {
speed_target = horse_speed;
} else {
- if (speed_target < l_HIO.mLeaderMaxSpeed) {
- speed_target = l_HIO.mLeaderMaxSpeed;
+ if (speed_target < l_HIO.leader_max_speed) {
+ speed_target = l_HIO.leader_max_speed;
}
}
if (fopAcM_searchPlayerDistanceXZ(i_this) < 2000.0f) {
speed_target *= 1.2f;
- if (i_this->speedF < l_HIO.mMaxSpeed) {
+ if (i_this->speedF < l_HIO.max_speed) {
speed_step = 0.5f;
} else {
speed_step = 1.5f;
@@ -1476,7 +1476,7 @@ static void e_wb_b_run(e_wb_class* i_this) {
horse_speed = 1.2f;
} else {
speed_step = 3.0;
- speed_target = l_HIO.mLeaderMaxSpeed;
+ speed_target = l_HIO.leader_max_speed;
}
if (dist > 6000.0f) {
@@ -1488,7 +1488,7 @@ static void e_wb_b_run(e_wb_class* i_this) {
break;
case 3:
i_this->field_0x6bd = 1;
- speed_target = l_HIO.mMaxSpeed;
+ speed_target = l_HIO.max_speed;
speed_step = 3.0f;
if (i_this->field_0x698 == 10) {
@@ -1514,7 +1514,7 @@ static void e_wb_b_run(e_wb_class* i_this) {
break;
case 10: // jumping a fence / hit wall
- speed_target = l_HIO.mMaxSpeed;
+ speed_target = l_HIO.max_speed;
speed_step = 3.0f;
int anm_id = i_this->mAnmID;
@@ -1683,7 +1683,7 @@ static void e_wb_a_run(e_wb_class* i_this) {
}
default:
cLib_addCalcAngleS2(&i_this->current.angle.y, i_this->mAngleTarget, 8, 0x800);
- cLib_addCalc2(&i_this->speedF, l_HIO.mMaxSpeed * 1.2f, 1.0f, 2.0f);
+ cLib_addCalc2(&i_this->speedF, l_HIO.max_speed * 1.2f, 1.0f, 2.0f);
cLib_addCalcAngleS2(&i_this->field_0x79a, (i_this->current.angle.y - curr_angle_y) * -8, 8,
0x200);
}
@@ -1957,14 +1957,14 @@ static s8 e_wb_c_run(e_wb_class* i_this) {
local_10c = diff;
dist = JMAFastSqrt(local_10c.x * local_10c.x + local_10c.z * local_10c.z);
- target_speed = l_HIO.mMaxSpeed;
+ target_speed = l_HIO.max_speed;
if (dist >= 500.0f) {
- target_speed = l_HIO.mMaxSpeed;
+ target_speed = l_HIO.max_speed;
}
if (dist > 3000.0f) {
- target_speed = l_HIO.mMaxSpeed;
+ target_speed = l_HIO.max_speed;
}
return_value = (i_this->field_0x6be & 2) == 0;
diff --git a/src/d/actor/d_a_e_ww.cpp b/src/d/actor/d_a_e_ww.cpp
index 5fafc0c0c0..ce7e937fd0 100644
--- a/src/d/actor/d_a_e_ww.cpp
+++ b/src/d/actor/d_a_e_ww.cpp
@@ -7,19 +7,99 @@
#include "d/actor/d_a_e_ww.h"
#include "f_op/f_op_camera_mng.h"
-#include "dol2asm.h"
-#include "f_op/f_op_actor_enemy.h"
-#include "Z2AudioLib/Z2Instances.h"
#include "d/d_debug_viewer.h"
#include "d/d_cc_uty.h"
-#include <cmath.h>
+#include "f_op/f_op_actor_enemy.h"
+#include "Z2AudioLib/Z2Instances.h"
+enum E_ww_RES_File_ID {
+ /* BCK */
+ /* 0x04 */ BCK_WW_APPEAR = 0x4,
+ /* 0x05 */ BCK_WW_BACKSTEP,
+ /* 0x06 */ BCK_WW_DAMAGE,
+ /* 0x07 */ BCK_WW_DEAD,
+ /* 0x08 */ BCK_WW_JUMPATTACKA,
+ /* 0x09 */ BCK_WW_JUMPATTACKB,
+ /* 0x0A */ BCK_WW_JUMPATTACKC,
+ /* 0x0B */ BCK_WW_RUN,
+ /* 0x0C */ BCK_WW_SIDESTEPL,
+ /* 0x0D */ BCK_WW_SIDESTEPR,
+ /* 0x0E */ BCK_WW_TURN,
+ /* 0x0F */ BCK_WW_WAIT,
+ /* 0x10 */ BCK_WW_WALK,
+
+ /* BMDR */
+ /* 0x13 */ BMDR_WW = 0x13,
+};
+
+enum Joint {
+ /* 0x00 */ JNT_WORLD_ROOT,
+ /* 0x01 */ JNT_BODY01,
+ /* 0x02 */ JNT_BODY02,
+ /* 0x03 */ JNT_NECK,
+ /* 0x04 */ JNT_HEAD,
+ /* 0x05 */ JNT_AGO,
+ /* 0x06 */ JNT_EARL,
+ /* 0x07 */ JNT_EARR,
+ /* 0x08 */ JNT_SHOULDERL,
+ /* 0x09 */ JNT_ARML01,
+ /* 0x0A */ JNT_ARML02,
+ /* 0x0B */ JNT_HANDL01,
+ /* 0x0C */ JNT_HANDL02,
+ /* 0x0D */ JNT_SHOULDERR,
+ /* 0x0E */ JNT_ARMR01,
+ /* 0x0F */ JNT_ARMR02,
+ /* 0x10 */ JNT_HANDR01,
+ /* 0x11 */ JNT_HANDR02,
+ /* 0x12 */ JNT_WAIST,
+ /* 0x13 */ JNT_LEGL01,
+ /* 0x14 */ JNT_LEGL02,
+ /* 0x15 */ JNT_LEGL03,
+ /* 0x16 */ JNT_FOOTL,
+ /* 0x17 */ JNT_LEGR01,
+ /* 0x18 */ JNT_LEGR02,
+ /* 0x19 */ JNT_LEGR03,
+ /* 0x1A */ JNT_FOOTR,
+ /* 0x1B */ JNT_TAIL01,
+ /* 0x1C */ JNT_TAIL02,
+};
-/* ############################################################################################## */
+enum Action {
+ /* 0x0 */ ACTION_MASTER,
+ /* 0x1 */ ACTION_WAIT,
+ /* 0x2 */ ACTION_ATTACK,
+ /* 0x3 */ ACTION_CHASE,
+ /* 0x4 */ ACTION_DAMAGE,
+ /* 0x5 */ ACTION_MOVE_OUT,
+ /* 0x6 */ ACTION_WALK,
+};
+
+enum Action_Mode {
+ /* 0x00 */ ACTION_MODE_0,
+ /* 0x01 */ ACTION_MODE_1,
+ /* 0x02 */ ACTION_MODE_2,
+ /* 0x03 */ ACTION_MODE_3,
+ /* 0x05 */ ACTION_MODE_5 = 0x5,
+ /* 0x06 */ ACTION_MODE_6,
+ /* 0x0A */ ACTION_MODE_10 = 0xA,
+ /* 0x0B */ ACTION_MODE_11,
+ /* 0x0C */ ACTION_MODE_12,
+ /* 0x0D */ ACTION_MODE_13,
+ /* 0x0E */ ACTION_MODE_14,
+ /* 0x0F */ ACTION_MODE_15,
+ /* 0x10 */ ACTION_MODE_16,
+ /* 0x14 */ ACTION_MODE_20 = 0x14,
+ /* 0x15 */ ACTION_MODE_21,
+ /* 0x16 */ ACTION_MODE_22,
+ /* 0x19 */ ACTION_MODE_25 = 0x19,
+ /* 0x1A */ ACTION_MODE_26,
+ /* 0x1B */ ACTION_MODE_27,
+ /* 0x1C */ ACTION_MODE_28,
+ /* 0xC8 */ ACTION_MODE_200 = 0xC8,
+};
namespace {
- /* 807EF904-807EF944 000038 0040+00 1/1 0/0 0/0 .data cc_ww_src__22@unnamed@d_a_e_ww_cpp@
- */
+ /* 807EF904-807EF944 000038 0040+00 1/1 0/0 0/0 .data cc_ww_src__22@unnamed@d_a_e_ww_cpp@ */
dCcD_SrcSph cc_ww_src = {
{
{0x0, {{0x400, 0x1, 0xC}, {0x0, 0x0}, 0x75}}, // mObj
@@ -46,136 +126,38 @@ namespace {
};
} // namespace
-/* ############################################################################################## */
-/* 807EFB80-807EFB84 000008 0001+03 1/1 0/0 0/0 .bss @1109 */
-// static u8 lit_1109[1 + 3 /* padding */];
-
-// /* 807EFB84-807EFB88 00000C 0001+03 0/0 0/0 0/0 .bss @1107 */
-// #pragma push
-// #pragma force_active on
-// static u8 lit_1107[1 + 3 /* padding */];
-// #pragma pop
-
-// /* 807EFB88-807EFB8C 000010 0001+03 0/0 0/0 0/0 .bss @1105 */
-// #pragma push
-// #pragma force_active on
-// static u8 lit_1105[1 + 3 /* padding */];
-// #pragma pop
-
-// /* 807EFB8C-807EFB90 000014 0001+03 0/0 0/0 0/0 .bss @1104 */
-// #pragma push
-// #pragma force_active on
-// static u8 lit_1104[1 + 3 /* padding */];
-// #pragma pop
-
-// /* 807EFB90-807EFB94 000018 0001+03 0/0 0/0 0/0 .bss @1099 */
-// #pragma push
-// #pragma force_active on
-// static u8 lit_1099[1 + 3 /* padding */];
-// #pragma pop
-
-// /* 807EFB94-807EFB98 00001C 0001+03 0/0 0/0 0/0 .bss @1097 */
-// #pragma push
-// #pragma force_active on
-// static u8 lit_1097[1 + 3 /* padding */];
-// #pragma pop
-
-// /* 807EFB98-807EFB9C 000020 0001+03 0/0 0/0 0/0 .bss @1095 */
-// #pragma push
-// #pragma force_active on
-// static u8 lit_1095[1 + 3 /* padding */];
-// #pragma pop
-
-// /* 807EFB9C-807EFBA0 000024 0001+03 0/0 0/0 0/0 .bss @1094 */
-// #pragma push
-// #pragma force_active on
-// static u8 lit_1094[1 + 3 /* padding */];
-// #pragma pop
-
-// /* 807EFBA0-807EFBA4 000028 0001+03 0/0 0/0 0/0 .bss @1057 */
-// #pragma push
-// #pragma force_active on
-// static u8 lit_1057[1 + 3 /* padding */];
-// #pragma pop
-
-// /* 807EFBA4-807EFBA8 00002C 0001+03 0/0 0/0 0/0 .bss @1055 */
-// #pragma push
-// #pragma force_active on
-// static u8 lit_1055[1 + 3 /* padding */];
-// #pragma pop
-
-// /* 807EFBA8-807EFBAC 000030 0001+03 0/0 0/0 0/0 .bss @1053 */
-// #pragma push
-// #pragma force_active on
-// static u8 lit_1053[1 + 3 /* padding */];
-// #pragma pop
-
-// /* 807EFBAC-807EFBB0 000034 0001+03 0/0 0/0 0/0 .bss @1052 */
-// #pragma push
-// #pragma force_active on
-// static u8 lit_1052[1 + 3 /* padding */];
-// #pragma pop
-
-// /* 807EFBB0-807EFBB4 000038 0001+03 0/0 0/0 0/0 .bss @1014 */
-// #pragma push
-// #pragma force_active on
-// static u8 lit_1014[1 + 3 /* padding */];
-// #pragma pop
-
-// /* 807EFBB4-807EFBB8 00003C 0001+03 0/0 0/0 0/0 .bss @1012 */
-// #pragma push
-// #pragma force_active on
-// static u8 lit_1012[1 + 3 /* padding */];
-// #pragma pop
-
-// /* 807EFBB8-807EFBBC 000040 0001+03 0/0 0/0 0/0 .bss @1010 */
-// #pragma push
-// #pragma force_active on
-// static u8 lit_1010[1 + 3 /* padding */];
-// #pragma pop
-
-// /* 807EFBBC-807EFBC0 -00001 0004+00 2/2 0/0 0/0 .bss None */
-// /* 807EFBBC 0001+00 data_807EFBBC @1009 */
-// /* 807EFBBD 0003+00 data_807EFBBD None */
-// static u8 struct_807EFBBC[4];
-
-/* 807EFBC0-807EFBCC 000048 000C+00 0/1 0/0 0/0 .bss @3921 */
-#pragma push
-#pragma force_active on
-static u8 lit_3921[12];
-#pragma pop
+/* 807EFBF4-807EFBF8 00007C 0004+00 2/2 0/0 0/0 .bss None */
+static u8 l_HIOInit;
/* 807EFBCC-807EFBF4 000054 0028+00 7/8 0/0 0/0 .bss l_HIO */
static daE_WW_HIO_c l_HIO;
-/* 807EFBF4-807EFBF8 00007C 0004+00 2/2 0/0 0/0 .bss None */
-static u8 l_HIOInit;
static u8 lbl_237_bss_30; // What name for this variable ?
/* 807E76EC-807E7748 0000EC 005C+00 1/1 0/0 0/0 .text __ct__12daE_WW_HIO_cFv */
daE_WW_HIO_c::daE_WW_HIO_c() {
field_0x04 = -1;
- mModelSize = 1.0f;
- mAttackInterval = 150.0f;
- mRunAnm = 1.2f;
- mWalkAnm = 0.5f;
- mRunSpeed = 40.0f;
- mWolfEscapeSpeed = 25.0f;
- mLinkEscapeSpeed = 40.0f;
- mMoveRangeDebugDisp = 0;
+ model_size = 1.0f;
+ attack_interval = 150.0f;
+ run_anm = 1.2f;
+ walk_anm = 0.5f;
+ run_speed = 40.0f;
+ wolf_escape_speed = 25.0f;
+ link_escape_speed = 40.0f;
+ move_range_debug_display = 0;
}
#ifdef DEBUG
void daE_WW_HIO_c::genMessage(JORMContext* mctx) {
mctx->genLabel("ホワイトウルフォス", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
- mctx->genSlider("モデルサイズ", &mModelSize, 0.0f, 10.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
- mctx->genSlider("攻撃間隔", &mAttackInterval, 0.0f, 2000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
- mctx->genSlider("走りアニメーション", &mRunAnm, 0.0f, 10.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
- mctx->genSlider("歩きアニメーション", &mWalkAnm, 0.0f, 10.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
- mctx->genSlider("走る速度", &mRunSpeed, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
- mctx->genSlider("狼から逃亡速度", &mWolfEscapeSpeed, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
- mctx->genSlider("リンクから逃亡速度", &mLinkEscapeSpeed, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
- mctx->genCheckBox("移動範囲デバック表示", &mMoveRangeDebugDisp, 1, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
+ mctx->genSlider("モデルサイズ", &model_size, 0.0f, 10.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
+ mctx->genSlider("攻撃間隔", &attack_interval, 0.0f, 2000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
+ mctx->genSlider("走りアニメーション", &run_anm, 0.0f, 10.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
+ mctx->genSlider("歩きアニメーション", &walk_anm, 0.0f, 10.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
+ mctx->genSlider("走る速度", &run_speed, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
+ mctx->genSlider("狼から逃亡速度", &wolf_escape_speed, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
+ mctx->genSlider("リンクから逃亡速度", &link_escape_speed, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
+ mctx->genCheckBox("移動範囲デバック表示", &move_range_debug_display, 1, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
}
#endif
@@ -187,10 +169,10 @@ int daE_WW_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) {
mDoMtx_stack_c::copy(i_model->getAnmMtx(jnt_no));
switch (jnt_no) {
- case 3:
- case 4:
- mDoMtx_stack_c::YrotM(field_0x67C);
- mDoMtx_stack_c::ZrotM(field_0x67E);
+ case JNT_NECK:
+ case JNT_HEAD:
+ mDoMtx_stack_c::YrotM(field_0x67c);
+ mDoMtx_stack_c::ZrotM(field_0x67e);
}
i_model->setAnmMtx(jnt_no, mDoMtx_stack_c::get());
@@ -200,14 +182,15 @@ int daE_WW_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) {
}
/* 807E7800-807E784C 000200 004C+00 1/1 0/0 0/0 .text JointCallBack__8daE_WW_cFP8J3DJointi */
-int daE_WW_c::JointCallBack(J3DJoint* i_joint, int param_1) {
- if (param_1 == 0) {
+int daE_WW_c::JointCallBack(J3DJoint* i_joint, int param_2) {
+ if (param_2 == 0) {
J3DModel* model_p = j3dSys.getModel();
- daE_WW_c* i_this = reinterpret_cast<daE_WW_c*>(model_p->getUserArea());
+ daE_WW_c* i_this = (daE_WW_c*)model_p->getUserArea();
if (i_this != NULL) {
i_this->ctrlJoint(i_joint, model_p);
}
}
+
return 1;
}
@@ -215,59 +198,65 @@ int daE_WW_c::JointCallBack(J3DJoint* i_joint, int param_1) {
void daE_WW_c::setHeadAngle() {
cXyz player_eye_pos = daPy_getPlayerActorClass()->eyePos;
cXyz temp_r1; // Zero position ? effpos effective pos ?
- if (mActionID != ACTION_EXECUTE_MASTER) {
- if (field_0x75A != 0) {
- mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(4));
+ if (mAction != ACTION_MASTER) {
+ if (field_0x75a != 0) {
+ mDoMtx_stack_c::copy(mpModelMorf->getModel()->getAnmMtx(JNT_HEAD));
mDoMtx_stack_c::multVecZero(&temp_r1);
s16 var_r29 = cLib_targetAngleY(&temp_r1, &player_eye_pos) - shape_angle.y;
if (var_r29 > 0x4000) {
var_r29 = 0x4000;
}
+
if (var_r29 < -0x4000) {
var_r29 = -0x4000;
}
- cLib_addCalcAngleS(&field_0x67C, (int)var_r29/2, 4, 0x400, 0x100);
+
+ cLib_addCalcAngleS(&field_0x67c, (int)var_r29/2, 4, 0x400, 0x100);
s16 var_r28 = cLib_targetAngleX(&temp_r1, &player_eye_pos) - shape_angle.x;
if (var_r28 > 0x3000) {
var_r28 = 0x3000;
}
+
if (var_r28 < -0x3000) {
var_r28 = -0x3000;
}
- cLib_addCalcAngleS(&field_0x67A, (int)var_r28/2, 4, 0x400, 0x100);
+
+ cLib_addCalcAngleS(&field_0x67a, (int)var_r28/2, 4, 0x400, 0x100);
return;
}
- cLib_addCalcAngleS(&field_0x67C, 0, 4, 0x400, 0x100);
- cLib_addCalcAngleS(&field_0x67A, 0, 4, 0x400, 0x100);
+
+ cLib_addCalcAngleS(&field_0x67c, 0, 4, 0x400, 0x100);
+ cLib_addCalcAngleS(&field_0x67a, 0, 4, 0x400, 0x100);
}
}
-/* ############################################################################################## */
-
/* 807E79D4-807E7ABC 0003D4 00E8+00 1/1 0/0 0/0 .text draw__8daE_WW_cFv */
int daE_WW_c::draw() {
- if (mActionID == ACTION_EXECUTE_MASTER) {
- if (l_HIO.mMoveRangeDebugDisp != 0) {
+ if (mAction == ACTION_MASTER) {
+ #ifdef DEBUG
+ if (l_HIO.move_range_debug_display != 0) {
cXyz curr_pos = current.pos;
curr_pos.y += 100.0f;
GXColor circle1Color = { 200, 0, 0, 255 };
- dDbVw_drawCircleOpa(curr_pos, field_0x6A8, circle1Color, 1, 0xC);
- curr_pos.y = current.pos.y - field_0x6AC;
+ dDbVw_drawCircleOpa(curr_pos, field_0x6a8, circle1Color, 1, 0xC);
+ curr_pos.y = current.pos.y - field_0x6ac;
GXColor circle2Color = { 0, 0, 200, 255 };
- dDbVw_drawCircleOpa(curr_pos, field_0x6A8, circle2Color, 1, 0xC);
- curr_pos.y = current.pos.y + field_0x6AC;
+ dDbVw_drawCircleOpa(curr_pos, field_0x6a8, circle2Color, 1, 0xC);
+ curr_pos.y = current.pos.y + field_0x6ac;
GXColor circle3Color = { 0, 0, 200, 255 };
- dDbVw_drawCircleOpa(curr_pos, field_0x6A8, circle3Color, 1, 0xC);
+ dDbVw_drawCircleOpa(curr_pos, field_0x6a8, circle3Color, 1, 0xC);
}
+ #endif
return 1;
}
- J3DModel* model_p = mpMorf->getModel();
+
+ J3DModel* model_p = mpModelMorf->getModel();
g_env_light.settingTevStruct(0, &current.pos, &tevStr);
g_env_light.setLightTevColorType_MAJI(model_p, &tevStr);
- mpMorf->entryDL();
+ mpModelMorf->entryDL();
cXyz sp14;
sp14.set(current.pos.x, 100.0f + current.pos.y, current.pos.z);
- field_0x6D0 = dComIfGd_setShadow(field_0x6D0, 1, model_p, &sp14, 700.0f + nREG_F(19), 0.0f, current.pos.y, mAcch.GetGroundH(), mAcch.m_gnd, &tevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex());
+ field_0x6d0 = dComIfGd_setShadow(field_0x6d0, 1, model_p, &sp14, 700.0f + nREG_F(19), 0.0f, current.pos.y, mObjAcch.GetGroundH(), mObjAcch.m_gnd, &tevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex());
return 1;
}
@@ -276,36 +265,31 @@ static int daE_WW_Draw(daE_WW_c* i_this) {
return static_cast<daE_WW_c*>(i_this)->draw();
}
-/* ############################################################################################## */
-
/* 807E7ADC-807E7B80 0004DC 00A4+00 6/6 0/0 0/0 .text setBck__8daE_WW_cFiUcff */
void daE_WW_c::setBck(int i_index, u8 i_attr, f32 i_morf, f32 i_rate) {
- mpMorf->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("E_WW", i_index), i_attr, i_morf, i_rate, 0.0f, -1.0f);
+ mpModelMorf->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("E_WW", i_index), i_attr, i_morf, i_rate, 0.0f, -1.0f);
}
/* 807E7B80-807E7BDC 000580 005C+00 1/1 0/0 0/0 .text checkBck__8daE_WW_cFi */
bool daE_WW_c::checkBck(int i_index) {
- if (mpMorf->getAnm() == (J3DAnmTransform*)dComIfG_getObjectRes("E_WW", i_index)) {
+ if (mpModelMorf->getAnm() == (J3DAnmTransform*)dComIfG_getObjectRes("E_WW", i_index)) {
return 1;
}
+
return 0;
}
-/* ############################################################################################## */
-
/* 807E7BDC-807E7C20 0005DC 0044+00 11/11 0/0 0/0 .text setActionMode__8daE_WW_cFii */
void daE_WW_c::setActionMode(int i_action_id, int i_attack_action_id) {
gravity = -5.0f;
- mActionID = i_action_id;
- mAttackActionID = i_attack_action_id;
+ mAction = i_action_id;
+ mActionMode = i_attack_action_id;
field_0x756 = 0;
- mAcch.ClrGrndNone();
- mAcch.OnLineCheck();
- mAcch.OffLineCheckNone();
+ mObjAcch.ClrGrndNone();
+ mObjAcch.OnLineCheck();
+ mObjAcch.OffLineCheckNone();
}
-/* ############################################################################################## */
-
/* 807E7C20-807E7E74 000620 0254+00 1/1 0/0 0/0 .text damage_check__8daE_WW_cFv */
void daE_WW_c::damage_check() {
if (field_0x724 == 0) {
@@ -313,21 +297,24 @@ void daE_WW_c::damage_check() {
if (mSph1[1].ChkAtShieldHit() != 0) {
mSph1[1].OffAtShieldHit();
if (daPy_getPlayerActorClass()->checkPlayerGuard()) {
- setActionMode(ACTION_EXECUTE_DAMAGE, 0);
+ setActionMode(ACTION_DAMAGE, ACTION_MODE_0);
return;
}
}
+
cCcD_Obj* var_r29 = NULL; // ObjHit ? Where damage is applied ?
if (mSph2[0].ChkTgHit() != 0) {
var_r29 = mSph2[0].GetTgHitObj();
}
+
if (mSph2[1].ChkTgHit() != 0) {
var_r29 = mSph2[1].GetTgHitObj();
}
+
if (var_r29 != NULL) {
- mpHitObj = var_r29;
- if (mpHitObj->ChkAtType(AT_TYPE_IRON_BALL) != 0) {
- if (fopAcM_GetName(dCc_GetAc(mpHitObj->GetAc())) == PROC_Obj_Carry) {
+ mAtInfo.mpCollider = var_r29;
+ if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_IRON_BALL) != 0) {
+ if (fopAcM_GetName(dCc_GetAc(mAtInfo.mpCollider->GetAc())) == PROC_Obj_Carry) {
health += (s16) 150;
} else if (dComIfGp_checkPlayerStatus0(0, 0x400) != 0) {
health += (s16) 180;
@@ -335,42 +322,44 @@ void daE_WW_c::damage_check() {
health = 0;
}
}
- cc_at_check(this, (dCcU_AtInfo*) &mpHitObj);
- if (mpHitObj->GetAtAtp() >= 1) {
- cXyz temp_r1; // Change !
- mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(4));
+
+ cc_at_check(this, &mAtInfo);
+ if (mAtInfo.mpCollider->GetAtAtp() >= 1) {
+ cXyz temp_r1;
+ mDoMtx_stack_c::copy(mpModelMorf->getModel()->getAnmMtx(JNT_HEAD));
mDoMtx_stack_c::transM(-10.0f, -20.0f, 0.0f);
mDoMtx_stack_c::multVecZero(&temp_r1);
- if (field_0xEB3 == 0) {
+
+ if (mAtInfo.mHitStatus == 0) {
dComIfGp_setHitMark(1, this, &temp_r1, NULL, NULL, 0);
} else {
dComIfGp_setHitMark(3, this, &temp_r1, NULL, NULL, 0);
}
}
- if (mpHitObj->ChkAtType(AT_TYPE_UNK) != 0) {
+
+ if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_UNK) != 0) {
field_0x724 = 20;
} else {
field_0x724 = 10;
}
- if (field_0xEB0 <= 1) {
+
+ if (mAtInfo.mAttackPower <= 1) {
field_0x724 = (u8)(KREG_S(8) + 10);
}
- setActionMode(ACTION_EXECUTE_DAMAGE, 0);
+
+ setActionMode(ACTION_DAMAGE, ACTION_MODE_0);
}
}
}
-/* ############################################################################################## */
-
/* 807E7E74-807E7FCC 000874 0158+00 1/1 0/0 0/0 .text setRandamNumber__8daE_WW_cFv */
void daE_WW_c::setRandamNumber() {
- // Probably need further cleanup even if matching
-
int var_r27 = 0;
- int var_r26 = field_0x6B6;
- if (field_0x6B6 < 5) {
+ int var_r26 = field_0x6b6;
+ if (field_0x6b6 < 5) {
var_r26 = 5;
}
+
for (int i=0; i<var_r26; i++){
int var_r29 = cM_rndF(var_r26 - 0.1f);
if ((var_r27 & (1 << var_r29)) != 0) {
@@ -384,9 +373,10 @@ void daE_WW_c::setRandamNumber() {
}
}
}
+
var_r27 |= 1 << var_r29;
- field_0x6FC[i] = var_r29;
- field_0x6D4[i] = 8.0f + cM_rndFX(3.0f);
+ field_0x6fc[i] = var_r29;
+ field_0x6d4[i] = 8.0f + cM_rndFX(3.0f);
}
}
@@ -400,28 +390,25 @@ s16 daE_WW_c::getNearPlayerAngle() {
}
return player_angle - 0x1800;
}
+
return shape_angle.y;
}
-/* ############################################################################################## */
-
/* 807E804C-807E830C 000A4C 02C0+00 1/1 0/0 0/0 .text setGroundAngle__8daE_WW_cFv */
void daE_WW_c::setGroundAngle() {
- // Change name for vectors
- Vec gnd_pos;
-
- if (field_0x75B != 0 && !mAcch.ChkGroundHit()) {
+ if (field_0x75b != 0 && !mObjAcch.ChkGroundHit()) {
cLib_addCalcAngleS(&field_0x674.x, 0, 4, 0x1000, 0x200);
cLib_addCalcAngleS(&field_0x674.z, 0, 4, 0x1000, 0x200);
- cLib_addCalcAngleS(&field_0x6CE, 0, 4, 0x1000, 0x200);
+ cLib_addCalcAngleS(&field_0x6ce, 0, 4, 0x1000, 0x200);
return;
}
cXyz sp14 = current.pos;
- sp14.y = mAcch.GetGroundH();
+ sp14.y = mObjAcch.GetGroundH();
dBgS_GndChk gnd_chk;
+ Vec gnd_pos;
- if (field_0x75C == 0) {
+ if (field_0x75c == 0) {
gnd_pos.x = sp14.x + 100.0f * cM_ssin(shape_angle.y);
gnd_pos.y = 150.0f + sp14.y;
gnd_pos.z = sp14.z + 100.0f * cM_scos(shape_angle.y);
@@ -430,6 +417,7 @@ void daE_WW_c::setGroundAngle() {
if (-1e9f == gnd_pos.y) {
gnd_pos.y = (f32) sp14.y;
}
+
if (std::abs(gnd_pos.y - sp14.y) > 150.0f) {
if (gnd_pos.y > sp14.y) {
gnd_pos.y = sp14.y + 150.0f;
@@ -437,7 +425,8 @@ void daE_WW_c::setGroundAngle() {
gnd_pos.y = sp14.y - 150.0f;
}
}
- field_0x6CE = -cLib_targetAngleX(&sp14, (cXyz*)&gnd_pos);
+
+ field_0x6ce = -cLib_targetAngleX(&sp14, (cXyz*)&gnd_pos);
field_0x674.x = 0;
field_0x674.z = 0;
} else {
@@ -449,6 +438,7 @@ void daE_WW_c::setGroundAngle() {
if (-1e9f != gnd_pos.y) {
field_0x674.x = -cM_atan2s(gnd_pos.y - sp14.y, gnd_pos.z - sp14.z);
}
+
gnd_pos.x = sp14.x + 50.0f;
gnd_pos.y = sp14.y + 150.0f;
gnd_pos.z = sp14.z;
@@ -457,21 +447,23 @@ void daE_WW_c::setGroundAngle() {
if (-1e9f != gnd_pos.y) {
field_0x674.z = (s16)cM_atan2s(gnd_pos.y - sp14.y, gnd_pos.x - sp14.x);
}
- field_0x6CE = 0;
+
+ field_0x6ce = 0;
}
}
/* 807E830C-807E8518 000D0C 020C+00 3/3 0/0 0/0 .text checkCreateBg__8daE_WW_cF4cXyz */
f32 daE_WW_c::checkCreateBg(cXyz i_vector) {
cXyz sp14 = i_vector; // gnd_check_pos ?
- sp14.y += field_0x6AC;
+ sp14.y += field_0x6ac;
dBgS_GndChk gnd_chk;
gnd_chk.SetPos(&sp14);
f32 temp_f1 = dComIfG_Bgsp().GroundCross(&gnd_chk);
if (temp_f1 != -1e9f) {
- if (std::abs(temp_f1 - current.pos.y) > field_0x6AC) {
+ if (std::abs(temp_f1 - current.pos.y) > field_0x6ac) {
return -1e9f;
}
+
if (dComIfG_Bgsp().GetSpecialCode(gnd_chk) == 5 || dComIfG_Bgsp().GetPolyAtt0(gnd_chk) == 0xD) {
cXyz temp_r1 = daPy_getPlayerActorClass()->current.pos;
temp_r1.y += 100.0f;
@@ -484,24 +476,26 @@ f32 daE_WW_c::checkCreateBg(cXyz i_vector) {
dComIfG_Bgsp().GetTriPla(lin_chk, &plane);
return -1e9f;
}
+
return temp_f1;
}
}
+
return -1e9f;
}
/* 807E8560-807E8624 000F60 00C4+00 3/3 0/0 0/0 .text checkAttackWall__8daE_WW_cFv */
-int daE_WW_c::checkAttackWall() {
- // Change to BOOL ?
+bool daE_WW_c::checkAttackWall() {
cXyz curr_pos = current.pos;
curr_pos.y += 100.0f;
cXyz player_eye_pos = daPy_getPlayerActorClass()->eyePos;
dBgS_LinChk line_chk;
line_chk.Set(&curr_pos, &player_eye_pos, NULL);
if (dComIfG_Bgsp().LineCross(&line_chk)) {
- return 0;
+ return false;
}
- return 1;
+
+ return true;
}
/* 807E8624-807E8700 001024 00DC+00 1/1 0/0 0/0 .text setBlurEffect__8daE_WW_cFv */
@@ -509,7 +503,7 @@ void daE_WW_c::setBlurEffect() {
mParticleKey = dComIfGp_particle_set(mParticleKey, 0x8602, &current.pos, &tevStr);
JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(mParticleKey);
if (emitter != NULL) {
- emitter->setGlobalSRTMatrix(mpMorf->getModel()->getAnmMtx(2));
+ emitter->setGlobalSRTMatrix(mpModelMorf->getModel()->getAnmMtx(JNT_BODY02));
}
}
@@ -544,26 +538,37 @@ static void* s_child_ww(void* i_actor, void* i_data) {
return NULL;
}
-/* ############################################################################################## */
-
/* 807E8B2C-807E8C54 00152C 0128+00 1/1 0/0 0/0 .text s_obj_sub__FPvPv */
static void* s_obj_sub(void* i_proc, void* i_data) {
if (fopAcM_IsActor(i_proc) && !fpcM_IsCreating(fopAcM_GetID(i_proc)) && fopAcM_checkCarryNow((fopAc_ac_c *) i_proc) == 0) {
f32 dist = fopAcM_searchActorDistance((fopAc_ac_c *) i_proc, (fopAc_ac_c *) i_data);
- if (dist < 100.0f && fopAcM_GetSpeedF((fopAc_ac_c *) i_proc) == 0.0f && fopAcM_GetSpeed((fopAc_ac_c *) i_proc).y == 0.0f) {
- if (fopAcM_GetName(i_proc) == PROC_Obj_Carry) {
- return i_proc;
- }
- if (fopAcM_GetName(i_proc) == PROC_NBOMB) {
- return i_proc;
+ if (dist < 100.0f) {
+ f32 fVar2 = fopAcM_GetSpeedF((fopAc_ac_c *) i_proc);
+ f32 fVar3 = 0.0f;
+ if (fVar2 == fVar3) {
+ f32 fVar4 = fopAcM_GetSpeed((fopAc_ac_c *) i_proc).y;
+ if (fVar4 == fVar3) {
+ if (fopAcM_GetName(i_proc) == PROC_Obj_Carry) {
+ return i_proc;
+ }
+
+ if (fopAcM_GetName(i_proc) == PROC_NBOMB) {
+ return i_proc;
+ }
+ }
}
}
if (dist < 500.0f && (fopAcM_GetName(i_proc) == PROC_BOOMERANG || fopAcM_GetName(i_proc) == PROC_NBOMB)) {
return i_proc;
}
- if (dist < 700.0f && fopAcM_GetName(i_proc) == PROC_ARROW && fopAcM_GetSpeedF((fopAc_ac_c *) i_proc) != 0.0f) {
- return i_proc;
+
+ if (dist < 700.0f && fopAcM_GetName(i_proc) == PROC_ARROW) {
+ f32 fVar5 = fopAcM_GetSpeedF((fopAc_ac_c *) i_proc);
+ f32 fVar6 = 0.0f;
+ if (fVar5 != fVar6) {
+ return i_proc;
+ }
}
}
@@ -571,68 +576,66 @@ static void* s_obj_sub(void* i_proc, void* i_data) {
}
/* 807E8C54-807E8E6C 001654 0218+00 4/4 0/0 0/0 .text checkSideStep__8daE_WW_cFv */
-int daE_WW_c::checkSideStep() {
- // Change to bool ? or BOOL ?
+bool daE_WW_c::checkSideStep() {
cXyz* temp_r3;
if (dComIfGp_checkPlayerStatus0(0, 0x4000) != 0) {
temp_r3 = daPy_getPlayerActorClass()->getHookshotTopPos();
if (temp_r3 != NULL && temp_r3->absXZ(current.pos) < 500.0f) {
if ((s16)(cLib_targetAngleY(&current.pos, temp_r3) - shape_angle.y) < 0) {
- field_0x6C0 = 0;
+ field_0x6c0 = 0;
} else {
- field_0x6C0 = 1;
+ field_0x6c0 = 1;
}
- return 1;
+
+ return true;
}
}
+
fopAc_ac_c* temp_r3_2 = (fopAc_ac_c*) fpcM_Search(s_obj_sub, this);
if (temp_r3_2 != NULL) {
if ((s16)(fopAcM_searchActorAngleY(this, temp_r3_2) - shape_angle.y) < 0) {
- field_0x6C0 = 0;
+ field_0x6c0 = 0;
} else {
- field_0x6C0 = 1;
+ field_0x6c0 = 1;
}
- return 1;
+
+ return true;
}
- return 0;
+
+ return false;
}
/* 807E8E6C-807E8EEC 00186C 0080+00 1/1 0/0 0/0 .text s_attack_ww__FPvPv */
-static void* s_attack_ww(void* param_0, void* param_1) {
- // Change names ?
- if (param_0 != param_1 && fopAcM_IsActor(param_0) && fopAcM_GetName(param_0) == PROC_E_WW && !fpcM_IsCreating(fopAcM_GetID(param_0)) && ((daE_WW_c*)param_0)->isAttack() != 0) {
- return param_0;
+static void* s_attack_ww(void* i_actor, void* i_data) {
+ if (i_actor != i_data && fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_E_WW && !fpcM_IsCreating(fopAcM_GetID(i_actor)) && ((daE_WW_c*)i_actor)->isAttack() != 0) {
+ return i_actor;
}
+
return NULL;
}
-/* ############################################################################################## */
-
/* 807E8EEC-807E905C 0018EC 0170+00 2/2 0/0 0/0 .text createWolf__8daE_WW_cF4cXyzUc */
void daE_WW_c::createWolf(cXyz param_0, u8 param_1) {
fpc_ProcID var_r30;
u8 var_r29;
u8 var_r28;
- // sp10 = param_1;
cXyz sp1C = daPy_getPlayerActorClass()->current.pos;
- // f32 temp_f31 = ;
csXyz sp14(0, cLib_targetAngleY(&param_0, &sp1C) + cM_rndFX(4096.0f), 0);
- u8 temp_r27 = field_0x6A8 / 100.0f;
+ u8 temp_r27 = field_0x6a8 / 100.0f;
if (param_1 == 0) {
var_r30 = fopAcM_GetLinkId(this);
var_r29 = 0;
var_r28 = 2;
} else {
var_r30 = fopAcM_GetID(this);
- var_r29 = field_0x6C0;
+ var_r29 = field_0x6c0;
var_r28 = 1;
}
- mChildID[var_r29] = fopAcM_createChild(PROC_E_WW, var_r30, (var_r28 << 24) | (field_0x6B4 | (0xF0FF0000 | 0xF000) | (temp_r27 * 0x10)), &param_0, fopAcM_GetRoomNo(this), &sp14, NULL, -1, NULL);
-}
-/* ############################################################################################## */
+ mChildID[var_r29] = fopAcM_createChild(PROC_E_WW, var_r30, (var_r28 << 24) | (field_0x6b4 | (0xF0FF0000 | 0xF000) | (temp_r27 * 0x10)), &param_0, fopAcM_GetRoomNo(this), &sp14, NULL, -1, NULL);
+}
/* 807EFCAC-807EFD60 000134 00B4+00 1/2 0/0 0/0 .bss create_pos */
static cXyz create_pos[15] = {
@@ -662,81 +665,87 @@ void daE_WW_c::executeMaster() {
cXyz sp30;
fopAcM_OffStatus(this, fopAcM_STATUS_UNK_004000);
field_0x724 = 10;
- switch (mAttackActionID) {
- case 0:
- if ((field_0x6B4 != 0 || !(std::abs(current.pos.y - sp48.y) > 500.0f)) && temp_f30 < field_0x6A8) {
- if (field_0x6B4 == 0) {
+ switch (mActionMode) {
+ case ACTION_MODE_0:
+ if ((field_0x6b4 != 0 || !(std::abs(current.pos.y - sp48.y) > 500.0f)) && temp_f30 < field_0x6a8) {
+ if (field_0x6b4 == 0) {
sp30.set(0.0f, 0.0f, 2500.0f + nREG_F(11));
} else {
sp30.set(0.0f, 0.0f, 3000.0f);
}
+
cLib_offsetPos(&sp3C, &sp48, fopCamM_GetAngleY(camera), &sp30);
- if (current.pos.abs(sp3C) < field_0x6A8) {
+ if (current.pos.abs(sp3C) < field_0x6a8) {
f32 temp_f31 = checkCreateBg(sp3C);
if (-1e9f != temp_f31) {
sp3C.y = temp_f31;
int var_r30 = 0;
lbl_237_bss_30 = 0;
fpcM_Search(s_child_ww, this);
- if (lbl_237_bss_30 < field_0x6B6) {
- var_r30 = field_0x6B6 - lbl_237_bss_30;
- if (field_0x6B5 != 0xFF && var_r30 > (field_0x6B5 - field_0x6C8)) {
- var_r30 = field_0x6B5 - field_0x6C8;
+ if (lbl_237_bss_30 < field_0x6b6) {
+ var_r30 = field_0x6b6 - lbl_237_bss_30;
+ if (field_0x6b5 != 0xFF && var_r30 > (field_0x6b5 - field_0x6c8)) {
+ var_r30 = field_0x6b5 - field_0x6c8;
}
}
+
if (var_r30 > 0) {
- field_0x65C = sp3C;
- mAttackActionID = 1;
- field_0x6B7 = var_r30;
- field_0x6C0 = 0;
+ field_0x65c = sp3C;
+ mActionMode = ACTION_MODE_1;
+ field_0x6b7 = var_r30;
+ field_0x6c0 = 0;
setRandamNumber();
field_0x728 = 0;
return;
}
}
- mAttackActionID = 10;
+
+ mActionMode = ACTION_MODE_10;
field_0x728 = 30;
}
}
break;
- case 1:
+ case ACTION_MODE_1:
if (field_0x728 == 0) {
int var_r30_2;
- if (field_0x6B4 == 0) {
- var_r30_2 = field_0x6FC[field_0x6C0] + 5;
+ if (field_0x6b4 == 0) {
+ var_r30_2 = field_0x6fc[field_0x6c0] + 5;
} else {
- var_r30_2 = field_0x6FC[field_0x6C0];
+ var_r30_2 = field_0x6fc[field_0x6c0];
}
+
sp30 = create_pos[var_r30_2];
sp30.x += cM_rndFX(200.0f);
- cLib_offsetPos(&sp3C, &field_0x65C, (s16)fopCamM_GetAngleY(camera), &sp30);
+ cLib_offsetPos(&sp3C, &field_0x65c, (s16)fopCamM_GetAngleY(camera), &sp30);
f32 temp_f31_2 = checkCreateBg(sp3C);
if (-1e9f != temp_f31_2) {
sp3C.y = temp_f31_2;
} else {
- sp3C = field_0x65C;
+ sp3C = field_0x65c;
}
+
createWolf(sp3C, 1);
- field_0x6C8++;
- field_0x6C0++;
- if (field_0x6C0 >= field_0x6B7) {
- mAttackActionID = 3;
- field_0x6C0 = 0;
- field_0x6C4 = 0;
+ field_0x6c8++;
+ field_0x6c0++;
+ if (field_0x6c0 >= field_0x6b7) {
+ mActionMode = ACTION_MODE_3;
+ field_0x6c0 = 0;
+ field_0x6c4 = 0;
setRandamNumber();
field_0x728 = 20;
return;
}
- field_0x728 = field_0x6D4[field_0x6C0];
+
+ field_0x728 = field_0x6d4[field_0x6c0];
}
break;
case 2:
if (field_0x728 == 0) {
- mAttackActionID = 3;
- field_0x6C0 = 0;
- field_0x6C4 = 0;
+ mActionMode = ACTION_MODE_3;
+ field_0x6c0 = 0;
+ field_0x6c4 = 0;
setRandamNumber();
field_0x728 = 0;
}
@@ -744,108 +753,105 @@ void daE_WW_c::executeMaster() {
case 3:
if (field_0x728 == 0) {
- if (field_0x6FC[field_0x6C4] < field_0x6B7) {
+ if (field_0x6fc[field_0x6c4] < field_0x6b7) {
fopAc_ac_c* sp8;
- fopAcM_SearchByID(mChildID[field_0x6FC[field_0x6C4]], &sp8);
+ fopAcM_SearchByID(mChildID[field_0x6fc[field_0x6c4]], &sp8);
if (sp8 != NULL) {
((daE_WW_c*)sp8)->setAttack();
}
- field_0x6C0++;
- if (field_0x6C0 >= field_0x6B7) {
- field_0x6C4 = 10;
+
+ field_0x6c0++;
+ if (field_0x6c0 >= field_0x6b7) {
+ field_0x6c4 = 10;
}
}
- field_0x6C4++;
- if (field_0x6C4 >= 10) {
- mAttackActionID = 10;
+
+ field_0x6c4++;
+ if (field_0x6c4 >= 10) {
+ mActionMode = ACTION_MODE_10;
field_0x728 = 50;
return;
}
- if (field_0x6FC[field_0x6C4] < field_0x6B7) {
- field_0x728 = field_0x6D4[field_0x6C4] * 2;
+
+ if (field_0x6fc[field_0x6c4] < field_0x6b7) {
+ field_0x728 = field_0x6d4[field_0x6c4] * 2;
}
}
break;
case 10:
if (field_0x728 == 0) {
- mAttackActionID = 0;
+ mActionMode = ACTION_MODE_0;
}
- if (field_0x6B5 != 0xFF && field_0x6C8 >= field_0x6B5) {
+
+ if (field_0x6b5 != 0xFF && field_0x6c8 >= field_0x6b5) {
fopAcM_delete(this);
}
break;
}
}
-/* ############################################################################################## */
-
/* 807E972C-807E99B8 00212C 028C+00 1/1 0/0 0/0 .text executeWait__8daE_WW_cFv */
void daE_WW_c::executeWait() {
- // s32 temp_r0;
- // s32 var_r28;
- // std *temp_r3_3;
- // void **temp_r3;
- // void **temp_r3_2;
- // void *temp_r1;
-
- // temp_r1 = sp - 0x30;
- switch (mAttackActionID) {
- case 0:
+ switch (mActionMode) {
+ case ACTION_MODE_0:
fopAcM_OnStatus(this, fopAcM_STATUS_UNK_004000);
- setBck(ANM_APPEAR, 0, 0.0f, 1.0f);
- mAttackActionID = 1;
+ setBck(BCK_WW_APPEAR, J3DFrameCtrl::EMode_NONE, 0.0f, 1.0f);
+ mActionMode = ACTION_MODE_1;
break;
- case 1:
- if (mpMorf->checkFrame(3.0f)) {
+ case ACTION_MODE_1:
+ if (mpModelMorf->checkFrame(3.0f)) {
mSound.startCreatureSound(Z2SE_EN_WW_APPEAR, 0, -1);
setAppearEffect();
}
- if (mpMorf->checkFrame(15.0f) || mpMorf->checkFrame(20.0f)) {
+
+ if (mpModelMorf->checkFrame(15.0f) || mpModelMorf->checkFrame(20.0f)) {
mSound.startCreatureSound(Z2SE_EN_WW_FOOTNOTE, 0, -1);
}
- if (mpMorf->isStop()) {
+
+ if (mpModelMorf->isStop()) {
if (field_0x758 != 0) {
- mAttackActionID = 10;
+ mActionMode = ACTION_MODE_10;
return;
}
- setBck(ANM_WAIT, 2, 3.0f, 1.0f);
+
+ setBck(BCK_WW_WAIT, J3DFrameCtrl::EMode_LOOP, 3.0f, 1.0f);
return;
}
break;
- case 10:
- bool var_r28 = true;
+ case ACTION_MODE_10:
+ BOOL var_r28 = TRUE;
if (checkAttackWall() == 0) {
- var_r28 = false;
- } else if (field_0x6B4 == 1) {
+ var_r28 = FALSE;
+ } else if (field_0x6b4 == 1) {
if (cM_rnd() < 0.3f) {
- var_r28 = false;
+ var_r28 = FALSE;
}
- } else if (field_0x6B4 == 0) {
+ } else if (field_0x6b4 == 0) {
if (std::abs(current.pos.y - daPy_getPlayerActorClass()->current.pos.y) > 500.0f) {
- var_r28 = false;
+ var_r28 = FALSE;
}
}
+
fopAcM_OffStatus(this, fopAcM_STATUS_UNK_004000);
if (var_r28) {
- setActionMode(2, 0);
+ setActionMode(ACTION_ATTACK, ACTION_MODE_0);
field_0x756 = 1;
return;
}
- field_0x734 = l_HIO.mAttackInterval + cM_rndFX(30.0f);
- setBck(ANM_WAIT, 2, 3.0f, 1.0f);
- setActionMode(3, 10);
+
+ field_0x734 = l_HIO.attack_interval + cM_rndFX(30.0f);
+ setBck(BCK_WW_WAIT, J3DFrameCtrl::EMode_LOOP, 3.0f, 1.0f);
+ setActionMode(ACTION_CHASE, ACTION_MODE_10);
break;
}
}
-/* ############################################################################################## */
-
/* 807E99B8-807E9C1C 0023B8 0264+00 1/1 0/0 0/0 .text calcJumpSpeed__8daE_WW_cFv */
int daE_WW_c::calcJumpSpeed() {
- f32 var_f31 = field_0x65C.y - current.pos.y;
+ f32 var_f31 = field_0x65c.y - current.pos.y;
int var_r28 = 0;
int var_r29 = 0;
int unused = 0;
@@ -861,161 +867,169 @@ int daE_WW_c::calcJumpSpeed() {
var_r29++;
}
}
+
speed.y = 35.0f + 3.0f * var_r28 + nREG_F(7);
- field_0x75B = 2;
- speedF = current.pos.absXZ(field_0x65C) / (17.0f + var_r29 + nREG_F(8));
+ field_0x75b = 2;
+ speedF = current.pos.absXZ(field_0x65c) / (17.0f + var_r29 + nREG_F(8));
if (speedF < 20.0f + nREG_F(10)) {
speedF = 20.0f + nREG_F(10);
}
+
gravity = -3.0f + nREG_F(9);
return var_r29; // Jump speed ?
}
-/* ############################################################################################## */
-
/* 807E9C1C-807EA474 00261C 0858+00 2/1 0/0 0/0 .text executeAttack__8daE_WW_cFv */
void daE_WW_c::executeAttack() {
daPy_py_c* player_p = daPy_getPlayerActorClass();
- switch (mAttackActionID) {
- case 0:
- setBck(ANM_RUN, 2, 3.0f, l_HIO.mRunAnm); // Change BCK index to enum ?
- mAttackActionID = 1;
+ switch (mActionMode) {
+ case ACTION_MODE_0:
+ setBck(BCK_WW_RUN, J3DFrameCtrl::EMode_LOOP, 3.0f, l_HIO.run_anm); // Change BCK index to enum ?
+ mActionMode = ACTION_MODE_1;
field_0x728 = 10;
- speedF = l_HIO.mRunSpeed;
- field_0x72C = 300;
+ speedF = l_HIO.run_speed;
+ field_0x72c = 300;
/* fallthrough */
-
- case 1:
- field_0x75A = 1;
+ case ACTION_MODE_1:
+ field_0x75a = 1;
cLib_addCalcAngleS(&shape_angle.y, fopAcM_searchPlayerAngleY(this), 4, 0x800, 0x100);
current.angle.y = shape_angle.y;
if (checkAttackWall() == 0) {
- setActionMode(3, 2);
+ setActionMode(ACTION_CHASE, ACTION_MODE_2);
}
+
if (field_0x728 == 0) {
- if (checkMoveOut() == 0) {
- if (fopAcM_searchPlayerDistance(this) < (800.0f + nREG_F(18) + mDistCheckModifier)) {
- mAttackActionID = 20;
- setBck(ANM_JUMP_ATTACKA, 0, 3.0f, 1.0f);
- mSound.startCreatureVoice(Z2SE_EN_WW_V_ATTACK, -1);
- speed.y = 0.0f;
- speedF = 0.0f;
- }
- break;
+ if (checkMoveOut() != 0) {
+ return;
+ }
+
+ if (fopAcM_searchPlayerDistance(this) < (800.0f + nREG_F(18) + mDistCheckModifier)) {
+ mActionMode = ACTION_MODE_20;
+ setBck(BCK_WW_JUMPATTACKA, J3DFrameCtrl::EMode_NONE, 3.0f, 1.0f);
+ mSound.startCreatureVoice(Z2SE_EN_WW_V_ATTACK, -1);
+ speed.y = 0.0f;
+ speedF = 0.0f;
}
- return;
}
- if (mpMorf->getFrame() <= 5.0f && checkSideStep() != 0) {
- mAttackActionID = 10;
+
+ if (mpModelMorf->getFrame() <= 5.0f && checkSideStep() != 0) {
+ mActionMode = ACTION_MODE_10;
speed.y = 0.0f;
speedF = 0.0f;
}
- if (field_0x72C == 0 && fopAcM_otherBgCheck(this, daPy_getPlayerActorClass()) != 0) {
- setActionMode(3, 2);
+
+ if (field_0x72c == 0 && fopAcM_otherBgCheck(this, daPy_getPlayerActorClass()) != 0) {
+ setActionMode(ACTION_CHASE, ACTION_MODE_2);
return;
}
break;
- case 10:
- field_0x6CC = fopAcM_searchPlayerAngleY(this);
- shape_angle.y = field_0x6CC;
- if (field_0x6C0 == 0) {
- setBck(ANM_SIDESTEP_LEFT, 0, 3.0f, 1.0f);
- current.angle.y = field_0x6CC + 0x1800 + cM_rndFX(2000.0f);
+ case ACTION_MODE_10:
+ field_0x6cc = fopAcM_searchPlayerAngleY(this);
+ shape_angle.y = field_0x6cc;
+ if (field_0x6c0 == 0) {
+ setBck(BCK_WW_SIDESTEPL, J3DFrameCtrl::EMode_NONE, 3.0f, 1.0f);
+ current.angle.y = field_0x6cc + 0x1800 + cM_rndFX(2000.0f);
} else {
- setBck(ANM_SIDESTEP_RIGHT, 0, 3.0f, 1.0f);
- current.angle.y = field_0x6CC - 0x1800 + cM_rndFX(2000.0f);
+ setBck(BCK_WW_SIDESTEPR, J3DFrameCtrl::EMode_NONE, 3.0f, 1.0f);
+ current.angle.y = field_0x6cc - 0x1800 + cM_rndFX(2000.0f);
}
- mAttackActionID = 11; // Change to anm run ??
+ mActionMode = ACTION_MODE_11;
/* fallthrough */
-
- case 11:
- field_0x75A = 1;
- if (mpMorf->checkFrame(5.0f) != 0) {
- field_0x75B = 1;
+ case ACTION_MODE_11:
+ field_0x75a = 1;
+ if (mpModelMorf->checkFrame(5.0f) != 0) {
+ field_0x75b = 1;
speed.y = 20.0f + nREG_F(15);
speedF = nREG_F(16) + 40.0f + cM_rndFX(5.0f);
- mAttackActionID = 12;
+ mActionMode = ACTION_MODE_12;
mSound.startCreatureSound(Z2SE_EN_WW_JUMP, 0, -1);
}
break;
- case 12:
- field_0x75A = 1;
+ case ACTION_MODE_12:
+ field_0x75a = 1;
cLib_addCalcAngleS(&shape_angle.y, fopAcM_searchPlayerAngleY(this), 4, 0x800, 0x100);
- if (mAcch.ChkGroundHit() != 0) {
+ if (mObjAcch.ChkGroundHit() != 0) {
speedF = 0.0f;
- if (mpMorf->isStop() != 0) {
- if (checkMoveOut() == 0) {
- f32 var_f31 = 800.0f + nREG_F(18) + mDistCheckModifier;
- if (player_p->getSpeedF() >= 18.0f) {
- var_f31 = 1000.0f + nREG_F(18) + mDistCheckModifier;
- }
- if (fopAcM_searchPlayerDistance(this) < var_f31 && checkAttackWall() != 0) {
- mAttackActionID = 20;
- setBck(ANM_JUMP_ATTACKA, 0, 3.0f, 1.0f); // Change to ANM_JUMP ?
- mSound.startCreatureVoice(Z2SE_EN_WW_V_ATTACK, -1);
- } else {
- mAttackActionID = 0;
- }
- break;
+ if (mpModelMorf->isStop() != 0) {
+ if (checkMoveOut() != 0) {
+ return;
}
- return;
+
+ f32 var_f31 = 800.0f + nREG_F(18) + mDistCheckModifier;
+ if (player_p->getSpeedF() >= 18.0f) {
+ var_f31 = 1000.0f + nREG_F(18) + mDistCheckModifier;
+ }
+
+ if (fopAcM_searchPlayerDistance(this) < var_f31 && checkAttackWall() != 0) {
+ mActionMode = ACTION_MODE_20;
+ setBck(BCK_WW_JUMPATTACKA, J3DFrameCtrl::EMode_NONE, 3.0f, 1.0f); // Change to ANM_JUMP ?
+ mSound.startCreatureVoice(Z2SE_EN_WW_V_ATTACK, -1);
+ } else {
+ mActionMode = ACTION_MODE_0;
+ }
+ break;
}
}
break;
- case 20:
+ case ACTION_MODE_20: {
cXyz sp2C(0.0f, 0.0f, (17.0f + nREG_F(8)) * player_p->getSpeedF());
- cLib_offsetPos(&field_0x65C, &player_p->current.pos, player_p->shape_angle.y, &sp2C);
- cLib_addCalcAngleS(&shape_angle.y, cLib_targetAngleY(&current.pos, &field_0x65C), 4, 0x1000, 0x100);
+ cLib_offsetPos(&field_0x65c, &player_p->current.pos, player_p->shape_angle.y, &sp2C);
+ cLib_addCalcAngleS(&shape_angle.y, cLib_targetAngleY(&current.pos, &field_0x65c), 4, 0x1000, 0x100);
current.angle.y = shape_angle.y;
- if (mpMorf->checkFrame(2.0f) != 0) {
+ if (mpModelMorf->checkFrame(2.0f) != 0) {
mSound.startCreatureSound(Z2SE_EN_WW_JUMP, 0, -1);
}
- if (mpMorf->isStop() != 0) {
+
+ if (mpModelMorf->isStop() != 0) {
calcJumpSpeed();
- if (field_0x6B4 == 0) {
- mAttackActionID = 21;
+ if (field_0x6b4 == 0) {
+ mActionMode = ACTION_MODE_21;
field_0x756 = 0;
} else {
- mAttackActionID = 25;
+ mActionMode = ACTION_MODE_25;
field_0x756 = 0;
- mAcch.SetGrndNone();
- mAcch.OffLineCheck();
- mAcch.OnLineCheckNone();
+ mObjAcch.SetGrndNone();
+ mObjAcch.OffLineCheck();
+ mObjAcch.OnLineCheckNone();
}
- setBck(ANM_JUMP_ATTACKB, 2, 3.0f, 1.0f);
+
+ setBck(BCK_WW_JUMPATTACKB, J3DFrameCtrl::EMode_LOOP, 3.0f, 1.0f);
shape_angle.x = cM_atan2s(speedF, speed.y) - 0x4000;
}
break;
+ }
- case 21:
+ case ACTION_MODE_21:
mSph2[0].SetTgType(0xD8FBFDFF);
mSph2[1].SetTgType(0xD8FBFDFF);
cLib_chaseF(&speedF, 0.0f, 1.0f);
mSph1[1].OnAtSetBit();
- if (mAcch.ChkGroundHit()) {
+
+ if (mObjAcch.ChkGroundHit()) {
speedF = 20.0f + ZREG_F(0);
- setBck(ANM_JUMP_ATTACKC, 0, 3.0f, 1.0f);
- mAttackActionID = 22;
+ setBck(BCK_WW_JUMPATTACKC, J3DFrameCtrl::EMode_NONE, 3.0f, 1.0f);
+ mActionMode = ACTION_MODE_22;
}
break;
- case 22:
+ case ACTION_MODE_22:
cLib_chaseF(&speedF, 0.0f, 1.0f + ZREG_F(1));
- if (mpMorf->checkFrame(2.0f) != 0) {
+ if (mpModelMorf->checkFrame(2.0f) != 0) {
mSound.startCreatureSound(Z2SE_EN_WW_FOOTNOTE, 0, -1);
}
- if (mpMorf->isStop() != 0) {
- setActionMode(3, 0);
+
+ if (mpModelMorf->isStop() != 0) {
+ setActionMode(ACTION_CHASE, ACTION_MODE_0);
}
break;
- case 25:
- case 26:
- mAcch.ClrGroundHit();
+ case ACTION_MODE_25:
+ case ACTION_MODE_26:
+ mObjAcch.ClrGroundHit();
mSph2[0].SetTgType(0xD8FBFDFF);
mSph2[1].SetTgType(0xD8FBFDFF);
cLib_chaseF(&speedF, 0.0f, 1.0f);
@@ -1023,297 +1037,336 @@ void daE_WW_c::executeAttack() {
cXyz sp20(current.pos.x, 1000.0f + current.pos.y, current.pos.z);
dBgS_GndChk gnd_chk;
gnd_chk.SetPos(&sp20);
- if (-1e9f != dComIfG_Bgsp().GroundCross(&gnd_chk)) {
- if (mAttackActionID == 25 && current.pos.y < sp20.y) {
+ sp20.y = dComIfG_Bgsp().GroundCross(&gnd_chk);
+ if (-1e9f != sp20.y) {
+ if (mActionMode == ACTION_MODE_25 && current.pos.y < sp20.y) {
setAppearEffect();
mSound.startCreatureSound(Z2SE_EN_WW_HIDE, 0, -1);
- mAttackActionID = 26;
+ mActionMode = ACTION_MODE_26;
}
+
if (attention_info.position.y < sp20.y) {
- field_0x75D = 0;
+ field_0x75d = 0;
}
+
if (current.pos.y < (sp20.y - 500.0f)) {
fopAcM_delete(this);
}
}
break;
}
- if (mAcch.ChkGroundHit()) {
+
+ if (mObjAcch.ChkGroundHit()) {
cLib_addCalcAngleS(&shape_angle.x, 0, 4, 0x1000, 0x200);
return;
}
- cLib_addCalcAngleS(&shape_angle.x, cM_atan2s(speedF, speed.y) - 0x4000, 4, 0x800, 0x200);
+ cLib_addCalcAngleS(&shape_angle.x, cM_atan2s(speedF, speed.y) - 0x4000, 4, 0x800, 0x200);
}
-/* ############################################################################################## */
-
/* 807EA474-807EA870 002E74 03FC+00 2/2 0/0 0/0 .text checkAttackStart__8daE_WW_cFv */
-int daE_WW_c::checkAttackStart() {
- // Change to bool ?
+bool daE_WW_c::checkAttackStart() {
if (field_0x734 == 0) {
- s16 temp_r25 = fopCamM_GetAngleY(dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0))) + 0x8000;
- s16 temp_r28 = temp_r25 - fopAcM_searchPlayerAngleY(this);
+ camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0));
+ s16 temp_r28 = (fopCamM_GetAngleY(camera) + 0x8000) - fopAcM_searchPlayerAngleY(this);
cXyz sp14 = daPy_getPlayerActorClass()->current.pos;
- if (field_0x6B4 != 1) {
+
+ if (field_0x6b4 != 1) {
if (fpcM_Search(s_attack_ww, this) != NULL) {
return 0;
}
- }
- else {
- if (abs(temp_r28) > 0x5000) {
- if (current.pos.absXZ(sp14) > 1400.0f + nREG_F(18) + mDistCheckModifier) {
- fopAcM_delete(this);
- return 1;
- }
+ } else if (abs(temp_r28) > 0x5000) {
+ if (current.pos.absXZ(sp14) > 1400.0f + nREG_F(18) + mDistCheckModifier) {
+ fopAcM_delete(this);
+ return 1;
}
}
- if (field_0x6B4 == 0 && std::abs(current.pos.y - sp14.y) > 500.0f) {
+
+ if (field_0x6b4 == 0 && std::abs(current.pos.y - sp14.y) > 500.0f) {
return 0;
}
- if (abs(temp_r28) < nREG_S(9) + 0x1555 && field_0x668.absXZ(sp14) < 800.0f + field_0x6A8) {
- BOOL temp = (checkCreateBg(current.pos) == -1e9)^1;
- if (temp != 0 && checkAttackWall() != 0) {
- setActionMode(2, 0);
+
+ if (abs(temp_r28) < nREG_S(9) + 0x1555 && field_0x668.absXZ(sp14) < 800.0f + field_0x6a8) {
+ if (checkCreateBg(current.pos) != -1e9f && checkAttackWall() != 0) {
+ setActionMode(ACTION_ATTACK, ACTION_MODE_0);
field_0x756 = 1;
return 1;
}
}
}
+
return 0;
}
-/* ############################################################################################## */
-
/* 807EA870-807EB650 003270 0DE0+00 1/1 0/0 0/0 .text executeChase__8daE_WW_cFv */
void daE_WW_c::executeChase() {
-// cXyz sp28;
-// s32 sp24;
-// JAISoundID sp20;
-// JAISoundID sp1C;
-// JAISoundID sp18;
-// JAISoundID sp14;
-// s32 (*sp10)(daPy_py_c *);
-// s32 (*spC)(daPy_py_c *);
s16 sp8;
-// f32 temp_f31;
-// s32 temp_r0;
-// s32 var_r29;
-// s32 var_r29_2;
-// void **temp_r3;
-// void **temp_r3_2;
-// void **temp_r3_3;
-// void **temp_r3_4;
-
cXyz sp28 = daPy_getPlayerActorClass()->current.pos;
f32 temp_f31 = sp28.absXZ(current.pos);
- switch (mAttackActionID) {
- case 5:
+
+ switch (mActionMode) {
+ case ACTION_MODE_5:
if (temp_f31 > 1500.0f + nREG_F(18) + mDistCheckModifier) {
- mAttackActionID = 10;
- setBck(ANM_WAIT, 2, 3.0f, 1.0f);
+ mActionMode = ACTION_MODE_10;
+ setBck(BCK_WW_WAIT, J3DFrameCtrl::EMode_LOOP, 3.0f, 1.0f);
return;
}
- case 0:
- setBck(ANM_RUN, 2, 3.0f, l_HIO.mRunAnm);
- mAttackActionID = 1;
- speedF = l_HIO.mRunSpeed;
- field_0x734 = l_HIO.mAttackInterval + cM_rndFX(30.0f);
+ case ACTION_MODE_0:
+ setBck(BCK_WW_RUN, J3DFrameCtrl::EMode_LOOP, 3.0f, l_HIO.run_anm);
+ mActionMode = ACTION_MODE_1;
+ speedF = l_HIO.run_speed;
+ field_0x734 = l_HIO.attack_interval + cM_rndFX(30.0f);
field_0x728 = 150;
-
- case 1:
+ // fallthrough
+ case ACTION_MODE_1: {
if (calcMoveDir(&sp8, fopAcM_searchPlayerAngleY(this) - 0x8000) != 0) {
cLib_addCalcAngleS(&shape_angle.y, sp8, 4, 0x800, 0x100);
} else {
cLib_addCalcAngleS(&shape_angle.y, sp8, 8, 0x200, 0x80);
}
+
current.angle.y = shape_angle.y;
- bool var_r29 = false;
+ BOOL var_r29 = FALSE;
if (temp_f31 > 1500.0f + nREG_F(18) + mDistCheckModifier - 200.0f) {
- var_r29 = true;
+ var_r29 = TRUE;
}
- if ((field_0x6B4 == 0) && (field_0x728 == 0) && (daPy_getPlayerActorClass()->speedF == 0.0f)) {
- var_r29 = true;
+
+ if (field_0x6b4 == 0 && field_0x728 == 0) {
+ f32 fVar7 = daPy_getPlayerActorClass()->speedF;
+ f32 fVar8 = 0.0f;
+ if (fVar7 == fVar8) {
+ var_r29 = TRUE;
+ }
}
+
if (var_r29) {
- mAttackActionID = 2;
- setBck(ANM_TURN, 0, 3.0f, 1.0f);
+ mActionMode = ACTION_MODE_2;
+ setBck(BCK_WW_TURN, J3DFrameCtrl::EMode_NONE, 3.0f, 1.0f);
mSound.startCreatureSound(Z2SE_EN_WW_JUMP, 0, -1);
}
break;
+ }
- case 2:
- field_0x75A = 1;
+ case ACTION_MODE_2: {
+ field_0x75a = 1;
cLib_addCalcAngleS(&shape_angle.y, getNearPlayerAngle(), 8, 0x800, 0x100);
cLib_chaseF(&speedF, 0.0f, 1.5f);
- if (speedF == 0.0f && abs(shape_angle.y - fopAcM_searchPlayerAngleY(this)) < 0x2000) {
- mAttackActionID = 10;
- setBck(ANM_WAIT, 2, 3.0f, 1.0f);
+ f32 fVar1 = 0.0f;
+ if (speedF == fVar1 && abs((s16)(shape_angle.y - fopAcM_searchPlayerAngleY(this))) < 0x2000) {
+ mActionMode = ACTION_MODE_10;
+ setBck(BCK_WW_WAIT, J3DFrameCtrl::EMode_LOOP, 3.0f, 1.0f);
}
break;
+ }
- case 10:
- mAttackActionID = 11;
- field_0x740 = 30;
- /* fallthrough */
+ case ACTION_MODE_200: {
+ field_0x75a = 1;
+ cLib_addCalcAngleS(&shape_angle.y, getNearPlayerAngle(), 8, 0x800, 0x100);
+ cLib_chaseF(&speedF, 0.0f, 1.5f);
+
+ f32 fVar2 = 0.0f;
+ if (speedF == fVar2) {
+ if (abs((s16)(shape_angle.y - fopAcM_searchPlayerAngleY(this))) < 0x2000) {
+ speedF = 0.0f;
+ setActionMode(ACTION_MOVE_OUT, ACTION_MODE_10);
+ setBck(BCK_WW_WAIT, J3DFrameCtrl::EMode_LOOP, 3.0f, 1.0f);
+ }
+ }
+ break;
+ }
- case 11:
- field_0x75A = 1;
+ case ACTION_MODE_10:
+ mActionMode = ACTION_MODE_11;
+ field_0x740 = 30;
+ /// fallthrough
+ case ACTION_MODE_11: {
+ field_0x75a = 1;
cLib_addCalcAngleS(&shape_angle.y, getNearPlayerAngle(), 4, 0x800, 0x100);
current.angle.y = shape_angle.y;
- if (daPy_getPlayerActorClass()->speedF != 0.0f) {
+
+ f32 fVar5 = daPy_getPlayerActorClass()->speedF;
+ f32 fVar6 = 0.0f;
+ if (fVar5 != fVar6) {
if (temp_f31 < 1400.0f + nREG_F(18) + mDistCheckModifier) {
if (field_0x730 != 0 || temp_f31 < 1200.0f + nREG_F(18) + mDistCheckModifier) {
- mAttackActionID = 0xC;
- setBck(ANM_RUN, 2, 3.0f, l_HIO.mRunAnm);
+ mActionMode = ACTION_MODE_12;
+ setBck(BCK_WW_RUN, J3DFrameCtrl::EMode_LOOP, 3.0f, l_HIO.run_anm);
} else {
- setBck(ANM_BACKSTEP, 0, 3.0f, 1.0f);
+ setBck(BCK_WW_BACKSTEP, J3DFrameCtrl::EMode_NONE, 3.0f, 1.0f);
mSound.startCreatureSound(Z2SE_EN_WW_JUMP, 0, -1);
- mAttackActionID = 0xF;
+ mActionMode = ACTION_MODE_15;
speedF = -40.0f;
speed.y = 25.0f;
- field_0x75B = 1;
+ field_0x75b = 1;
field_0x730 = 0x3C;
}
} else if (temp_f31 > 1800.0f + nREG_F(18) + mDistCheckModifier) {
- setBck(ANM_RUN, 2, 3.0f, l_HIO.mRunAnm);
- mAttackActionID = 0x14;
- speedF = l_HIO.mRunSpeed - 10.0f;
+ setBck(BCK_WW_RUN, J3DFrameCtrl::EMode_LOOP, 3.0f, l_HIO.run_anm);
+ mActionMode = ACTION_MODE_20;
+ speedF = l_HIO.run_speed - 10.0f;
}
}
+
if (checkSideStep() != 0) {
- mAttackActionID = 0x19;
+ mActionMode = ACTION_MODE_25;
speed.y = 0.0f;
speedF = 0.0f;
}
- if (checkWalkStart() == 0 && checkAttackStart() == 0) {
- if (checkMoveOut() != 0) {
- return;
- }
+
+ if (checkWalkStart()) {
+ return;
+ }
+
+ if (checkAttackStart()) {
+ return;
+ }
+
+ if (checkMoveOut()) {
+ return;
}
break;
+ }
case 12:
field_0x728 = 30;
- mAttackActionID = 0xD;
- /* fallthrough */
-
+ mActionMode = ACTION_MODE_13;
+ // fallthrough
case 13:
if (daPy_getPlayerActorClass()->checkNowWolf() != 0) {
- speedF = l_HIO.mWolfEscapeSpeed;
+ speedF = l_HIO.wolf_escape_speed;
} else {
- speedF = l_HIO.mLinkEscapeSpeed;
+ speedF = l_HIO.link_escape_speed;
}
+
if (calcMoveDir(&sp8, fopAcM_searchPlayerAngleY(this) - 0x8000) != 0) {
cLib_addCalcAngleS(&shape_angle.y, sp8, 4, 0x800, 0x200);
} else {
cLib_addCalcAngleS(&shape_angle.y, sp8, 8, 0x200, 0x80);
}
+
current.angle.y = shape_angle.y;
if (field_0x728 == 0) {
- mAttackActionID = 0xE;
+ mActionMode = ACTION_MODE_14;
field_0x728 = 150;
}
break;
- case 14:
+ case ACTION_MODE_14: {
if (daPy_getPlayerActorClass()->checkNowWolf() != 0) {
- cLib_chaseF(&speedF, l_HIO.mWolfEscapeSpeed, 1.0f);
+ cLib_chaseF(&speedF, l_HIO.wolf_escape_speed, 1.0f);
} else {
- cLib_chaseF(&speedF, l_HIO.mLinkEscapeSpeed, 1.0f);
+ cLib_chaseF(&speedF, l_HIO.link_escape_speed, 1.0f);
}
+
if (calcMoveDir(&sp8, (fopAcM_searchPlayerAngleY(this) - 0x8000)) != 0) {
cLib_addCalcAngleS(&shape_angle.y, sp8, 4, 0x800, 0x200);
} else {
cLib_addCalcAngleS(&shape_angle.y, sp8, 8, 0x200, 0x80);
}
+
current.angle.y = shape_angle.y;
- bool var_r29_2 = false;
+
+ if (field_0x668.absXZ(current.pos) > field_0x6a8) {
+ mActionMode = ACTION_MODE_200;
+ setBck(BCK_WW_TURN, J3DFrameCtrl::EMode_NONE, 3.0f, 1.0f);
+ mSound.startCreatureSound(Z2SE_EN_WW_JUMP, 0, -1);
+ return;
+ }
+
+ BOOL var_r29_2 = FALSE;
if (temp_f31 > 1500.0f + nREG_F(18) + mDistCheckModifier) {
- var_r29_2 = true;
+ var_r29_2 = TRUE;
}
- if (field_0x6B4 == 0 && field_0x728 == 0 && daPy_getPlayerActorClass()->speedF == 0.0f) {
- var_r29_2 = true;
+
+ if (field_0x6b4 == 0 && field_0x728 == 0) {
+ f32 fVar3 = daPy_getPlayerActorClass()->speedF;
+ f32 fVar4 = 0.0f;
+ if (fVar3 == fVar4) {
+ var_r29_2 = TRUE;
+ }
}
+
if (var_r29_2) {
- mAttackActionID = 2;
- setBck(ANM_TURN, 0, 3.0f, 1.0f);
+ mActionMode = ACTION_MODE_2;
+ setBck(BCK_WW_TURN, J3DFrameCtrl::EMode_NONE, 3.0f, 1.0f);
mSound.startCreatureSound(Z2SE_EN_WW_JUMP, 0, -1);
}
break;
+ }
- case 15:
- field_0x75A = 1;
- if (!mAcch.ChkGroundHit()) {
+ case ACTION_MODE_15:
+ field_0x75a = 1;
+ if (!mObjAcch.ChkGroundHit()) {
cLib_addCalcAngleS(&shape_angle.y, fopAcM_searchPlayerAngleY(this), 4, 0x800, 0x100);
current.angle.y = shape_angle.y;
} else {
speedF = 0.0f;
- if (mpMorf->isStop()) {
- setBck(ANM_WAIT, 2, 3.0f, 1.0f);
- mAttackActionID = 0xA;
+ if (mpModelMorf->isStop()) {
+ setBck(BCK_WW_WAIT, J3DFrameCtrl::EMode_LOOP, 3.0f, 1.0f);
+ mActionMode = ACTION_MODE_10;
}
}
break;
- case 20:
- field_0x73C = 0;
- /* fallthrough */
-
- case 21:
- field_0x75A = 1;
+ case ACTION_MODE_20:
+ field_0x73c = 0;
+ // fallthrough
+ case ACTION_MODE_21:
+ field_0x75a = 1;
cLib_addCalcAngleS(&shape_angle.y, fopAcM_searchPlayerAngleY(this), 4, 0x800, 0x100);
current.angle.y = shape_angle.y;
if (temp_f31 < 1600.0f + nREG_F(18) + mDistCheckModifier) {
- setBck(ANM_WAIT, 2, 3.0f, 1.0f);
- mAttackActionID = 0xA;
+ setBck(BCK_WW_WAIT, J3DFrameCtrl::EMode_LOOP, 3.0f, 1.0f);
+ mActionMode = ACTION_MODE_10;
speedF = 0.0f;
}
- if (mpMorf->getFrame() <= 5.0f) {
+
+ if (mpModelMorf->getFrame() <= 5.0f) {
if (checkSideStep() != 0) {
- mAttackActionID = 0x19;
+ mActionMode = ACTION_MODE_25;
speed.y = 0.0f;
speedF = 0.0f;
}
- if (field_0x73C == 0 && checkMoveOut() != 0) {
+
+ if (field_0x73c == 0 && checkMoveOut() != 0) {
return;
}
}
break;
- case 25:
- field_0x6CC = fopAcM_searchPlayerAngleY(this);
- shape_angle.y = field_0x6CC;
- if (field_0x6C0 == 0) {
- setBck(ANM_SIDESTEP_LEFT, 0, 3.0f, 1.0f);
- current.angle.y = field_0x6CC + 0x3800 + cM_rndFX(2000.0f);
+ case ACTION_MODE_25:
+ field_0x6cc = fopAcM_searchPlayerAngleY(this);
+ shape_angle.y = field_0x6cc;
+ if (field_0x6c0 == 0) {
+ setBck(BCK_WW_SIDESTEPL, J3DFrameCtrl::EMode_NONE, 3.0f, 1.0f);
+ current.angle.y = field_0x6cc + 0x3800 + cM_rndFX(2000.0f);
} else {
- setBck(ANM_SIDESTEP_RIGHT, 0, 3.0f, 1.0f);
- current.angle.y = field_0x6CC - 0x3800 + cM_rndFX(2000.0f);
+ setBck(BCK_WW_SIDESTEPR, J3DFrameCtrl::EMode_NONE, 3.0f, 1.0f);
+ current.angle.y = field_0x6cc - 0x3800 + cM_rndFX(2000.0f);
}
- mAttackActionID = 0x1B;
- /* fallthrough */
- case 27:
- field_0x75A = 1;
- if (mpMorf->checkFrame(5.0f) != 0) {
+ mActionMode = ACTION_MODE_27;
+ // fallthrough
+ case ACTION_MODE_27:
+ field_0x75a = 1;
+ if (mpModelMorf->checkFrame(5.0f) != 0) {
speed.y = 20.0f + nREG_F(15);
speedF = nREG_F(16) + (40.0f + cM_rndFX(5.0f));
- field_0x75B = 1;
- mAttackActionID = 0x1C;
+ field_0x75b = 1;
+ mActionMode = ACTION_MODE_28;
mSound.startCreatureSound(Z2SE_EN_WW_JUMP, 0, -1);
}
break;
- case 28:
- field_0x75A = 1;
+ case ACTION_MODE_28:
+ field_0x75a = 1;
cLib_addCalcAngleS(&shape_angle.y, fopAcM_searchPlayerAngleY(this), 4, 0x800, 0x100);
- if (mAcch.ChkGroundHit() != 0) {
+ if (mObjAcch.ChkGroundHit() != 0) {
speedF = 0.0f;
- if (mpMorf->isStop() != 0) {
- setBck(ANM_WAIT, 2, 3.0f, 1.0f);
- mAttackActionID = 0xA;
+ if (mpModelMorf->isStop() != 0) {
+ setBck(BCK_WW_WAIT, J3DFrameCtrl::EMode_LOOP, 3.0f, 1.0f);
+ mActionMode = ACTION_MODE_10;
}
}
break;
@@ -1322,671 +1375,551 @@ void daE_WW_c::executeChase() {
cLib_addCalcAngleS(&shape_angle.x, 0, 8, 0x400, 0x100);
}
-/* ############################################################################################## */
-/* 807EF84C-807EF850 0000DC 0004+00 0/1 0/0 0/0 .rodata @5607 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5607 = 14.0f;
-COMPILER_STRIP_GATE(0x807EF84C, &lit_5607);
-#pragma pop
-
-/* 807EF850-807EF854 0000E0 0004+00 0/1 0/0 0/0 .rodata @5608 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5608 = 21.0f;
-COMPILER_STRIP_GATE(0x807EF850, &lit_5608);
-#pragma pop
-
/* 807EB650-807EB964 004050 0314+00 1/1 0/0 0/0 .text executeDamage__8daE_WW_cFv */
void daE_WW_c::executeDamage() {
- // JAISoundID spC;
- // JAISoundID sp8;
- // s32 temp_r0;
- // void **temp_r3;
- // void **temp_r3_2;
-
- // if (health <= 0) {
- // field_0x724 = 5;
- // OffTgSetBit(mSph2[0]);
- // OffTgSetBit(mSph2[1]);
- // field_0x75D = 0;
- // attention_info.flags = 0;
- // }
- // temp_r0 = mAttackActionID;
- // switch (temp_r0) { /* irregular */
- // case 0:
- // if (health > 0) {
- // setBck(ANM_DAMAGE, 0, 3.0f, 1.0f);
- // temp_r3 = &mSound;
- // temp_r3.startCreatureVoice(0x70389, -1);
- // if (mAcch.ChkGroundHit() != 0) {
- // speed.y = 20.0f;
- // }
- // speedF = 40.0f;
- // mAttackActionID = 1;
- // } else {
- // setBck(ANM_DEAD, 0, 3.0f, 1.0f);
- // temp_r3_2 = &mSound;
- // temp_r3_2.startCreatureVoice(0x7038A, -1);
- // if (mAcch.ChkGroundHit() != 0) {
- // speed.y = 20.0f;
- // }
- // speedF = 30.0f;
- // mAttackActionID = 5;
- // field_0x75C = 1;
- // }
- // field_0x75B = 1;
- // shape_angle = 0;
- // current.angle.y = field_0xEA2 + 0x8000;
- // shape_angle.y = field_0xEA2;
- // return;
- // case 1:
- // if (mpMorf->checkFrame(@119044.unkCC) != 0) {
- // setPlaySpeed((mDoExt_morf_c *) mpMorf, 0.0f);
- // }
- // if (mAcch.ChkGroundHit() != 0) {
- // field_0x75B = 0;
- // mAttackActionID = 2;
- // setPlaySpeed((mDoExt_morf_c *) mpMorf, 1.0f);
- // return;
- // }
- // return;
- // case 2:
- // cLib_chaseF(&speedF, 0.0f, 2.0f);
- // if (mpMorf->isStop() != 0) {
- // setActionMode(3, 0);
- // return;
- // }
- // break;
- // case 5:
- // if (mpMorf->checkFrame(@119044.unkD0) != 0) {
- // setPlaySpeed((mDoExt_morf_c *) mpMorf, 0.0f);
- // }
- // if (mAcch.ChkGroundHit() != 0) {
- // field_0x75B = 0;
- // mAttackActionID = 6;
- // setPlaySpeed((mDoExt_morf_c *) mpMorf, 1.0f);
- // return;
- // }
- // break;
- // case 6:
- // if (mAcch.ChkGroundHit() != 0) {
- // cLib_chaseF(&speedF, 0.0f, 2.0f);
- // }
- // if (mpMorf->isStop() != 0) {
- // fopAcM_createDisappear((fopAc_ac_c *) &current.pos.x, 0xA, 0, 0x1B);
- // fopAcM_delete(this);
- // }
- // break;
- // }
+ if (health <= 0) {
+ field_0x724 = 5;
+ mSph2[0].OffTgSetBit();
+ mSph2[1].OffTgSetBit();
+ field_0x75d = 0;
+ attention_info.flags = 0;
+ }
+
+ switch (mActionMode) {
+ case ACTION_MODE_0:
+ if (health > 0) {
+ setBck(BCK_WW_DAMAGE, J3DFrameCtrl::EMode_NONE, 3.0f, 1.0f);
+ mSound.startCreatureVoice(Z2SE_EN_WW_V_DAMAGE, -1);
+
+ if (mObjAcch.ChkGroundHit()) {
+ speed.y = 20.0f;
+ }
+
+ speedF = 40.0f;
+ mActionMode = ACTION_MODE_1;
+ } else {
+ setBck(BCK_WW_DEAD, J3DFrameCtrl::EMode_NONE, 3.0f, 1.0f);
+ mSound.startCreatureVoice(Z2SE_EN_WW_V_DEAD, -1);
+
+ if (mObjAcch.ChkGroundHit()) {
+ speed.y = 20.0f;
+ }
+
+ speedF = 30.0f;
+ mActionMode = ACTION_MODE_5;
+ field_0x75c = 1;
+ }
+
+ field_0x75b = 1;
+ shape_angle.x = 0;
+ current.angle.y = mAtInfo.mHitDirection.y + 0x8000;
+ shape_angle.y = mAtInfo.mHitDirection.y;
+ break;
+
+ case ACTION_MODE_1:
+ if (mpModelMorf->checkFrame(14.0f)) {
+ mpModelMorf->setPlaySpeed(0.0f);
+ }
+
+ if (mObjAcch.ChkGroundHit()) {
+ field_0x75b = 0;
+ mActionMode = ACTION_MODE_2;
+ mpModelMorf->setPlaySpeed(1.0f);
+ }
+ break;
+
+ case ACTION_MODE_2:
+ cLib_chaseF(&speedF, 0.0f, 2.0f);
+
+ if (mpModelMorf->isStop()) {
+ setActionMode(ACTION_CHASE, ACTION_MODE_0);
+ }
+ break;
+
+ case ACTION_MODE_5:
+ if (mpModelMorf->checkFrame(21.0f)) {
+ mpModelMorf->setPlaySpeed(0.0f);
+ }
+
+ if (mObjAcch.ChkGroundHit()) {
+ field_0x75b = 0;
+ mActionMode = ACTION_MODE_6;
+ mpModelMorf->setPlaySpeed(1.0f);
+ }
+ break;
+
+ case ACTION_MODE_6:
+ if (mObjAcch.ChkGroundHit()) {
+ cLib_chaseF(&speedF, 0.0f, 2.0f);
+ }
+
+ if (mpModelMorf->isStop()) {
+ fopAcM_createDisappear(this, &current.pos, 10, 0, 0x1B);
+ fopAcM_delete(this);
+ }
+ break;
+ }
}
/* 807EB964-807EBAE0 004364 017C+00 3/3 0/0 0/0 .text checkMoveOut__8daE_WW_cFv */
-int daE_WW_c::checkMoveOut() {
- // Change to BOOL ?
-
- if (field_0x668.absXZ(current.pos) > field_0x6A8) {
- setActionMode(5, 0);
- return 1;
+bool daE_WW_c::checkMoveOut() {
+ if (field_0x668.absXZ(current.pos) > field_0x6a8) {
+ setActionMode(ACTION_MOVE_OUT, ACTION_MODE_0);
+ return true;
}
- return 0;
+
+ return false;
}
/* 807EBAE0-807EC940 0044E0 0E60+00 2/1 0/0 0/0 .text executeMoveOut__8daE_WW_cFv */
void daE_WW_c::executeMoveOut() {
-// f32 temp_f1;
-// f32 temp_f1_2;
-// f32 temp_f31;
-// s16 temp_r28;
-// s32 temp_r0;
-// void **temp_r3;
-// void **temp_r3_2;
-// void **temp_r3_3;
-// void *temp_r1;
-
-// temp_r1 = sp - 0x50;
-// (sp14, daPy_getPlayerActorClass()->current.pos);
-// temp_r0 = mAttackActionID;
-// switch (temp_r0) {
-// case 0:
-// field_0x728 = 30;
-// sp20 = (l_HIO.mAttackInterval + cM_rndFX(30.0f));
-// field_0x734 = sp24;
-// /* fallthrough */
-// case 10:
-// temp_f31 = absXZ(sp14, (Vec *) &current.pos.x);
-// field_0x75A = 1;
-// cLib_addCalcAngleS(&shape_angle.y, getNearPlayerAngle(), 4, 0x800, 0x100);
-// current.angle.y = shape_angle.y;
-// if (absXZ(&field_0x668, sp14) > field_0x6A8) {
-// if (temp_f31 < (1200.0f + nREG_F(18) + mDistCheckModifier)) {
-// if (field_0x728 == 0) {
-// mAttackActionID = 0xB;
-// }
-// goto block_20;
-// }
-// if (temp_f31 > (3000.0f + nREG_F(18) + mDistCheckModifier)) {
-// if (fopAcM_CheckCondition((fopAc_ac_c *) 4) != 0) {
-// fopAcM_delete(this);
-// return;
-// }
-// goto block_20;
-// }
-// if ((absXZ(&field_0x668, (Vec *) &current.pos.x) > (200.0f + field_0x6A8)) && (field_0x728 == 0)) {
-// mAttackActionID = 0xB;
-// }
-// goto block_20;
-// }
-// if (temp_f31 < (1200.0f + nREG_F(18) + mDistCheckModifier)) {
-// if (field_0x728 == 0) {
-// mAttackActionID = 0xF;
-// }
-// goto block_20;
-// }
-// if ((checkAttackStart() == 0) && (checkWalkStart() == 0)) {
-// if (temp_f31 > (1800.0f + nREG_F(18) + mDistCheckModifier)) {
-// setBck(ANM_RUN, 2, 3.0f, l_HIO.mRunAnm);
-// setActionMode(3, 0x15);
-// speedF = l_HIO.mRunSpeed - 10.0f;
-// field_0x73C = 30;
-// return;
-// }
-// block_20:
-// if (checkSideStep() != 0) {
-// mAttackActionID = 0x19;
-// speed.y = 0.0f;
-// speedF = 0.0f;
-// }
-// if (mAttackActionID == 0) {
-// speedF = 0.0f;
-// setBck(ANM_WAIT, 2, 3.0f, 1.0f);
-// mAttackActionID = 0xA;
-// return;
-// }
-// /* Duplicate return node #45. Try simplifying control flow for better match */
-// return;
-// }
-// default:
-// return;
-// case 11:
-// setBck(ANM_RUN, 2, 3.0f, l_HIO.mRunAnm);
-// speedF = l_HIO.mRunSpeed;
-// mAttackActionID = 0xC;
-// field_0x728 = 0x3C;
-// /* fallthrough */
-// case 12:
-// cLib_addCalcAngleS(&shape_angle.y, cLib_targetAngleY((Vec *) &current.pos.x, (Vec *) &field_0x668), 4, 0x800, 0x100);
-// current.angle.y = shape_angle.y;
-// if ((absXZ(&field_0x668, (Vec *) &current.pos.x) < (field_0x6A8 - 100.0f)) && ((field_0x728 == 0) || (absXZ(sp14, (Vec *) &current.pos.x) > (1500.0f + nREG_F(18) + mDistCheckModifier)))) {
-// setActionMode(3, 2);
-// setBck(ANM_TURN, 0, 3.0f, 1.0f);
-// temp_r3 = &mSound;
-// temp_r3.startCreatureSound(Z2SE_EN_WW_JUMP, 0, -1);
-// return;
-// }
-// /* Duplicate return node #45. Try simplifying control flow for better match */
-// return;
-// case 15:
-// setBck(ANM_RUN, 2, 3.0f, l_HIO.mRunAnm);
-// speedF = l_HIO.mRunSpeed;
-// mAttackActionID = 0x10;
-// field_0x728 = 0x3C;
-// temp_r28 = cLib_targetAngleY((Vec *) &current.pos.x, (Vec *) &field_0x668);
-// if ((temp_r28 - fopAcM_searchPlayerAngleY(this)) < 0) {
-// field_0x6CC = 0x2000;
-// } else {
-// field_0x6CC = -0x2000;
-// }
-// /* fallthrough */
-// case 16:
-// cLib_addCalcAngleS(&shape_angle.y, (field_0x6CC + cLib_targetAngleY((Vec *) &current.pos.x, (Vec *) &field_0x668)), 4, 0x800, 0x100);
-// current.angle.y = shape_angle.y;
-// if ((absXZ(&field_0x668, (Vec *) &current.pos.x) < (field_0x6A8 - 100.0f)) && ((field_0x728 == 0) || (absXZ(sp14, (Vec *) &current.pos.x) > (1500.0f + nREG_F(18) + mDistCheckModifier)))) {
-// setActionMode(3, 2);
-// setBck(ANM_TURN, 0, 3.0f, 1.0f);
-// temp_r3_2 = &mSound;
-// temp_r3_2.startCreatureSound(Z2SE_EN_WW_JUMP, 0, -1);
-// return;
-// }
-// /* Duplicate return node #45. Try simplifying control flow for better match */
-// return;
-// case 25:
-// field_0x6CC = fopAcM_searchPlayerAngleY(this);
-// shape_angle.y = field_0x6CC;
-// if (field_0x6C0 == 0) {
-// setBck(ANM_SIDESTEP_LEFT, 0, 3.0f, 1.0f);
-// temp_f1 = cM_rndFX(2000.0f);
-// sp24 = ((field_0x6CC + 0x3800) ^ 0x80000000);
-// sp20 = 0x43300000;
-// sp28 = (((f32) sp20 - (f32) 0.1f) + temp_f1);
-// current.angle.y = sp2C;
-// } else {
-// setBck(ANM_SIDESTEP_RIGHT, 0, 3.0f, 1.0f);
-// temp_f1_2 = cM_rndFX(2000.0f);
-// sp2C = ((field_0x6CC - 0x3800) ^ 0x80000000);
-// sp28 = 0x43300000;
-// sp20 = (((f32) sp28 - (f32) 0.1f) + temp_f1_2);
-// current.angle.y = sp24;
-// }
-// mAttackActionID = 0x1B;
-// /* fallthrough */
-// case 27:
-// field_0x75A = 1;
-// if (mpMorf->checkFrame(5.0f) != 0) {
-// field_0x75B = 1;
-// speed.y = 20.0f + nREG_F(15);
-// speedF = nREG_F(16) + (40.0f + cM_rndFX(5.0f));
-// mAttackActionID = 0x1C;
-// temp_r3_3 = &mSound;
-// temp_r3_3.startCreatureSound(Z2SE_EN_WW_JUMP, 0, -1);
-// return;
-// }
-// /* Duplicate return node #45. Try simplifying control flow for better match */
-// return;
-// case 28:
-// field_0x75A = 1;
-// cLib_addCalcAngleS(&shape_angle.y, fopAcM_searchPlayerAngleY(this), 4, 0x800, 0x100);
-// if (mAcch.ChkGroundHit() != 0) {
-// speedF = 0.0f;
-// if (mpMorf->isStop() != 0) {
-// setBck(ANM_WAIT, 2, 3.0f, 1.0f);
-// mAttackActionID = 0xA;
-// }
-// }
-// /* Duplicate return node #45. Try simplifying control flow for better match */
-// return;
-// }
-}
+ cXyz sp3c = daPy_getPlayerActorClass()->current.pos;
+
+ switch (mActionMode) {
+ case ACTION_MODE_0:
+ field_0x728 = 30;
+ field_0x734 = l_HIO.attack_interval + cM_rndFX(30.0f);
+ // fallthrough
+ case ACTION_MODE_10: {
+ f32 fVar1 = sp3c.absXZ(current.pos);
+ field_0x75a = 1;
+ cLib_addCalcAngleS(&shape_angle.y, getNearPlayerAngle(), 4, 0x800, 0x100);
+ current.angle.y = shape_angle.y;
-/* ############################################################################################## */
-/* 807EF854-807EF858 0000E4 0004+00 0/1 0/0 0/0 .rodata @6190 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6190 = 3.0f / 5.0f;
-COMPILER_STRIP_GATE(0x807EF854, &lit_6190);
-#pragma pop
-
-/* 807EF858-807EF85C 0000E8 0004+00 0/1 0/0 0/0 .rodata @6191 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6191 = 3072.0f;
-COMPILER_STRIP_GATE(0x807EF858, &lit_6191);
-#pragma pop
-
-/* 807EF85C-807EF860 0000EC 0004+00 0/1 0/0 0/0 .rodata @6192 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6192 = 1024.0f;
-COMPILER_STRIP_GATE(0x807EF85C, &lit_6192);
-#pragma pop
-
-/* 807EF860-807EF864 0000F0 0004+00 0/1 0/0 0/0 .rodata @6193 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6193 = 1700.0f;
-COMPILER_STRIP_GATE(0x807EF860, &lit_6193);
-#pragma pop
-
-/* 807EF864-807EF868 0000F4 0004+00 0/1 0/0 0/0 .rodata @6194 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6194 = 7.0f / 10.0f;
-COMPILER_STRIP_GATE(0x807EF864, &lit_6194);
-#pragma pop
+ if (field_0x668.absXZ((sp3c)) > field_0x6a8) {
+ if (fVar1 < nREG_F(18) + 1200.0f + mDistCheckModifier) {
+ if (field_0x728 == 0) {
+ mActionMode = ACTION_MODE_11;
+ }
+ } else if (fVar1 > nREG_F(18) + 3000.0f + mDistCheckModifier) {
+ if (fopAcM_CheckCondition(this, fopAcM_STATUS_UNK_000004)) {
+ fopAcM_delete(this);
+ break;
+ }
+ } else if (field_0x668.absXZ(current.pos) > field_0x6a8 + 200.0f && field_0x728 == 0) {
+ mActionMode = ACTION_MODE_11;
+ }
+ } else if (fVar1 < nREG_F(18) + 1200.0f + mDistCheckModifier) {
+ if (field_0x728 == 0) {
+ mActionMode = ACTION_MODE_15;
+ }
+ } else {
+ if (checkAttackStart() || checkWalkStart()) {
+ break;
+ }
-/* 807EC940-807ECE58 005340 0518+00 2/2 0/0 0/0 .text checkWalkStart__8daE_WW_cFv */
-int daE_WW_c::checkWalkStart() {
- // Change to bool ?
-// f32 temp_f1;
-// f32 temp_f1_2;
-// f32 temp_f30;
-// f32 temp_f30_2;
-// f32 var_f31;
-// s16 temp_r0;
-// s16 temp_r26;
-// s32 var_r27;
-// s8 var_r28;
-// void *temp_r1;
-
-// temp_r1 = sp - 0x130;
-// if (field_0x6B4 != 0) {
-// return 0;
-// }
-// temp_r26 = fopCamM_GetAngleY(dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)));
-// cXyz sp60;
-// cXyz sp54;
-// (sp48, daPy_getPlayerActorClass()->current.pos);
-// if (field_0x740 == 0) {
-// field_0x740 = 30;
-// spA = (fopAcM_searchPlayerAngleY(this) - 0x8000);
-// temp_r0 = temp_r26 - spA;
-// if (abs(temp_r0) < 0x3000) {
-// if (cM_rnd() < (@119044.unkD4 + nREG_F(20))) {
-// return 0;
-// }
-// spE0 = (@119044.unkD8 + cM_rndFX(@119044.unkDC));
-// var_r27 = spE4;
-// if (abs(temp_r0) < 0x2000) {
-// if (cM_rnd() < 0.5f) {
-// var_r27 = -var_r27;
-// }
-// } else if (temp_r0 > 0) {
-// var_r27 = -var_r27;
-// }
-// var_f31 = absXZ(sp48, (Vec *) &current.pos.x);
-// if (var_f31 < (100.0f + (1400.0f + nREG_F(18)))) {
-// var_f31 = 100.0f + (1400.0f + nREG_F(18));
-// }
-// if (var_f31 > ((1800.0f + nREG_F(18)) - 100.0f)) {
-// var_f31 = (1800.0f + nREG_F(18)) - 100.0f;
-// }
-// set(sp54, 0.0f, 100.0f, var_f31);
-// cLib_offsetPos(sp60, sp48, (spA + var_r27), sp54);
-// cXyz sp3C(current.pos, 100.0f + current.pos.y, current.pos.z);
-// (sp70);
-// Set(sp70, sp3C, sp60, NULL);
-// if (LineCross(dComIfG_Bgsp(), sp70) == 0) {
-// &field_0x65C = sp60
-// setActionMode(6, 0);
-// sp8 = 1;
-// return sp8;
-// }
-// goto block_32;
-// }
-// if (cM_rnd() < (@119044.unkE0 + nREG_F(20))) {
-// return 0;
-// }
-// var_r28 = 0;
-// set(sp54, 0.0f, 100.0f, 100.0f + (1500.0f + nREG_F(18)));
-// temp_f1 = cM_rndFX(@119044.unkDC);
-// spE4 = ((temp_r26 + 0x1400) ^ 0x80000000);
-// spE0 = 0x43300000;
-// spE8 = (((f32) spE0 - (f32) 0.1f) + temp_f1);
-// cLib_offsetPos(sp60, sp48, spEC, sp54);
-// (sp24, sp60);
-// temp_f30 = checkCreateBg((cXyz) (sp24));
-// if (-1e9f != temp_f30) {
-// var_r28 = 1;
-// sp64 = temp_f30;
-// }
-// cXyz sp30;
-// temp_f1_2 = cM_rndFX(@119044.unkDC);
-// spEC = ((temp_r26 - 0x1400) ^ 0x80000000);
-// spE8 = 0x43300000;
-// spE0 = (((f32) spE8 - (f32) 0.1f) + temp_f1_2);
-// cLib_offsetPos(sp30, sp48, spE4, sp54);
-// (sp18, sp30);
-// temp_f30_2 = checkCreateBg((cXyz) (sp18));
-// if (-1e9f != temp_f30_2) {
-// var_r28 |= 2;
-// sp34 = temp_f30_2;
-// }
-// if (var_r28 == 0) {
-// return 0;
-// }
-// if (var_r28 == 3) {
-// if (cM_rnd() < 0.5f) {
-// sp60 = sp30
-// }
-// } else if (var_r28 == 2) {
-// sp60 = sp30
-// }
-// (spC, sp60);
-// createWolf((cXyz) (spC), 0);
-// fopAcM_delete(this);
-// return 1;
-// }
-// block_32:
- return 0;
+ if (fVar1 > nREG_F(18) + 1800.0f + mDistCheckModifier) {
+ setBck(BCK_WW_RUN, J3DFrameCtrl::EMode_LOOP, 3.0f, l_HIO.run_anm);
+ setActionMode(ACTION_CHASE, ACTION_MODE_21);
+ speedF = l_HIO.run_speed - 10.0f;
+ field_0x73c = 30;
+ break;
+ }
+ }
+
+ if (checkSideStep()) {
+ mActionMode = ACTION_MODE_25;
+ speed.y = 0.0f;
+ speedF = 0.0f;
+ }
+
+ if (mActionMode == ACTION_MODE_0) {
+ speedF = 0.0f;
+ setBck(BCK_WW_WAIT, J3DFrameCtrl::EMode_LOOP, 3.0f, 1.0f);
+ mActionMode = ACTION_MODE_10;
+ }
+ break;
+ }
+
+ case ACTION_MODE_11:
+ setBck(BCK_WW_RUN, J3DFrameCtrl::EMode_LOOP, 3.0f, l_HIO.run_anm);
+ speedF = l_HIO.run_speed;
+ mActionMode = ACTION_MODE_12;
+ field_0x728 = 60;
+ // fallthrough
+ case ACTION_MODE_12:
+ cLib_addCalcAngleS(&shape_angle.y, cLib_targetAngleY(&current.pos, &field_0x668), 4, 0x800, 0x100);
+ current.angle.y = shape_angle.y;
+
+ if (field_0x668.absXZ(current.pos) < field_0x6a8 - 100.0f && (field_0x728 == 0 ||
+ sp3c.absXZ(current.pos) > nREG_F(18) + 1500.0f + mDistCheckModifier)) {
+ setActionMode(ACTION_CHASE, ACTION_MODE_2);
+ setBck(BCK_WW_TURN, J3DFrameCtrl::EMode_NONE, 3.0f, 1.0f);
+ mSound.startCreatureSound(Z2SE_EN_WW_JUMP, 0, -1);
+ }
+ break;
+
+ case ACTION_MODE_15:
+ setBck(BCK_WW_RUN, J3DFrameCtrl::EMode_LOOP, 3.0f, l_HIO.run_anm);
+ speedF = l_HIO.run_speed;
+ mActionMode = ACTION_MODE_16;
+ field_0x728 = 60;
+
+ if ((s16)(cLib_targetAngleY(&current.pos, &field_0x668) - fopAcM_searchPlayerAngleY(this)) < 0) {
+ field_0x6cc = 0x2000;
+ } else {
+ field_0x6cc = -0x2000;
+ }
+ // fallthrough
+ case ACTION_MODE_16:
+ cLib_addCalcAngleS(&shape_angle.y, field_0x6cc + cLib_targetAngleY(&current.pos, &field_0x668), 4, 0x800, 0x100);
+ current.angle.y = shape_angle.y;
+
+ if (field_0x668.absXZ(current.pos) < field_0x6a8 - 100.0f && (field_0x728 == 0 ||
+ sp3c.absXZ(current.pos) > nREG_F(18) + 1500.0f + mDistCheckModifier)) {
+ setActionMode(ACTION_CHASE, ACTION_MODE_2);
+ setBck(BCK_WW_TURN, J3DFrameCtrl::EMode_NONE, 3.0f, 1.0f);
+ mSound.startCreatureSound(Z2SE_EN_WW_JUMP, 0, -1);
+ }
+ break;
+
+ case ACTION_MODE_25:
+ field_0x6cc = fopAcM_searchPlayerAngleY(this);
+ shape_angle.y = field_0x6cc;
+
+ if (field_0x6c0 == 0) {
+ setBck(BCK_WW_SIDESTEPL, J3DFrameCtrl::EMode_NONE, 3.0f, 1.0f);
+ current.angle.y = field_0x6cc + 0x3800 + cM_rndFX(2000.0f);
+ } else {
+ setBck(BCK_WW_SIDESTEPR, J3DFrameCtrl::EMode_NONE, 3.0f, 1.0f);
+ current.angle.y = field_0x6cc - 0x3800 + cM_rndFX(2000.0f);
+ }
+
+ mActionMode = ACTION_MODE_27;
+ // fallthrough
+ case ACTION_MODE_27:
+ field_0x75a = 1;
+
+ if (mpModelMorf->checkFrame(5.0f)) {
+ field_0x75b = 1;
+ speed.y = nREG_F(15) + 20.0f;
+ speedF = nREG_F(16) + cM_rndFX(5.0f) + 40.0f;
+ mActionMode = ACTION_MODE_28;
+ mSound.startCreatureSound(Z2SE_EN_WW_JUMP, 0, -1);
+ }
+ break;
+
+ case ACTION_MODE_28:
+ field_0x75a = 1;
+ cLib_addCalcAngleS(&shape_angle.y, fopAcM_searchPlayerAngleY(this), 4, 0x800, 0x100);
+
+ if (mObjAcch.ChkGroundHit()) {
+ speedF = 0.0f;
+
+ if (mpModelMorf->isStop()) {
+ setBck(BCK_WW_WAIT, J3DFrameCtrl::EMode_LOOP, 3.0f, 1.0f);
+ mActionMode = ACTION_MODE_10;
+ }
+ }
+ break;
+
+ }
}
-/* ############################################################################################## */
-/* 807EF868-807EF86C 0000F8 0004+00 0/3 0/0 0/0 .rodata @6359 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6359 = 300.0f;
-COMPILER_STRIP_GATE(0x807EF868, &lit_6359);
-#pragma pop
+/* 807EC940-807ECE58 005340 0518+00 2/2 0/0 0/0 .text checkWalkStart__8daE_WW_cFv */
+bool daE_WW_c::checkWalkStart() {
+ if (field_0x6b4 != 0) {
+ return false;
+ }
+
+ s16 angleY = fopCamM_GetAngleY(dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)));
+ cXyz spd0, spdc;
+ cXyz spe8 = daPy_getPlayerActorClass()->current.pos;
+
+ if (field_0x740 == 0) {
+ field_0x740 = 30;
+ s16 sVar3 = fopAcM_searchPlayerAngleY(this) - 0x8000;
+ s16 sVar2 = angleY - sVar3;
+ if (abs(sVar2) < 0x3000) {
+ if (cM_rnd() < nREG_F(20) + 0.6f) {
+ return false;
+ }
+
+ angleY = cM_rndFX(1024.0f) + 3072.0f;
+ if (abs(sVar2) < 0x2000) {
+ if (cM_rnd() < 0.5f) {
+ angleY = -angleY;
+ }
+ } else if (sVar2 > 0) {
+ angleY = -angleY;
+ }
+
+ f32 fVar2 = spe8.absXZ(current.pos);
+ if (fVar2 < nREG_F(18) + 1400.0f + 100.0f) {
+ fVar2 = nREG_F(18) + 1400.0f + 100.0f;
+ }
+
+ if (fVar2 > nREG_F(18) + 1800.0f - 100.0f) {
+ fVar2 = nREG_F(18) + 1800.0f - 100.0f;
+ }
+
+ spdc.set(0.0f, 100.0f, fVar2);
+ cLib_offsetPos(&spd0, &spe8, sVar3 + angleY, &spdc);
+ cXyz spf4(current.pos.x, current.pos.y + 100.0f, current.pos.z);
+ dBgS_LinChk lin_chk;
+ lin_chk.Set(&spf4, &spd0, NULL);
+
+ if (!dComIfG_Bgsp().LineCross(&lin_chk)) {
+ field_0x65c = spd0;
+ setActionMode(ACTION_WALK, ACTION_MODE_0);
+
+ return true;
+ }
+ } else {
+ if (cM_rnd() < nREG_F(20) + 0.7f) {
+ return false;
+ }
+
+ u8 uVar1 = 0;
+ spdc.set(0.0f, 100.0f, nREG_F(18) + 1500.0f + 100.0f);
+ cLib_offsetPos(&spd0, &spe8, (s16)(angleY + 0x1400 + cM_rndFX(1024.0f)), &spdc);
+
+ f32 fVar1 = checkCreateBg(spd0);
+ if (fVar1 != -1e9f) {
+ uVar1 = 1;
+ spd0.y = fVar1;
+ }
+
+ cXyz sp100;
+ cLib_offsetPos(&sp100, &spe8, (s16)(angleY - 0x1400 + cM_rndFX(1024.0f)), &spdc);
+
+ fVar1 = checkCreateBg(sp100);
+ if (fVar1 != -1e9f) {
+ uVar1 |= 2;
+ sp100.y = fVar1;
+ }
+
+ if (uVar1 == 0) {
+ return false;
+ }
+
+ if (uVar1 == 3) {
+ if (cM_rnd() < 0.5f) {
+ spd0 = sp100;
+ }
+ } else if (uVar1 == 2) {
+ spd0 = sp100;
+ }
+
+ createWolf(spd0, 0);
+ fopAcM_delete(this);
+
+ return true;
+ }
+ }
+
+ return false;
+}
/* 807ECE58-807ED674 005858 081C+00 1/1 0/0 0/0 .text executeWalk__8daE_WW_cFv */
void daE_WW_c::executeWalk() {
-// f32 temp_f31;
-// s16 temp_r3_2;
-// s16 var_r28;
-// s32 temp_r0;
-// void **temp_r3;
-// void **temp_r3_3;
-// void **temp_r3_4;
-// void *temp_r1;
-
-// temp_r1 = sp - 0x50;
-// temp_f31 = absXZ(daPy_getPlayerActorClass()->current.pos, (Vec *) &current.pos.x);
-// temp_r0 = mAttackActionID;
-// if (temp_r0 != 0xA) {
-// if (temp_r0 < 0xA) {
-// if (temp_r0 != 1) {
-// if (temp_r0 < 1) {
-// if (temp_r0 < 0) {
-// return;
-// }
-// setBck(ANM_WALK, 2, 3.0f, l_HIO.unk14);
-// mAttackActionID = 1;
-// field_0x728 = 150;
-// break;
-// }
-// /* Duplicate return node #44. Try simplifying control flow for better match */
-// return;
-// }
-// block_9:
-// if ((mpMorf->checkFrame(5.0f) != 0) || (mpMorf->checkFrame(10.0f) != 0) || (mpMorf->checkFrame(15.0f) != 0) || (mpMorf->checkFrame(20.0f) != 0)) {
-// temp_r3 = &mSound;
-// temp_r3.startCreatureSound(Z2SE_EN_WW_FOOTNOTE, 0, -1);
-// }
-// field_0x75A = 1;
-// var_r28 = cLib_targetAngleY((Vec *) &current.pos.x, (Vec *) &field_0x65C);
-// cLib_addCalcAngleS(&current.angle.y, var_r28, 8, 0x400, 0x100);
-// temp_r3_2 = fopAcM_searchPlayerAngleY(this);
-// if ((var_r28 - temp_r3_2) > 0x4000) {
-// var_r28 = temp_r3_2 + 0x4000;
-// }
-// if ((var_r28 - temp_r3_2) < -0x4000) {
-// var_r28 = temp_r3_2 - 0x4000;
-// }
-// cLib_addCalcAngleS(&shape_angle.y, var_r28, 8, 0x400, 0x100);
-// cLib_chaseF(&speedF, 5.0f + nREG_F(1), 1.0f);
-// if ((absXZ(&field_0x65C, (Vec *) &current.pos.x) < 150.0f) || (field_0x728 == 0)) {
-// setActionMode(3, 2);
-// }
-// if (temp_f31 < (1400.0f + nREG_F(18) + mDistCheckModifier)) {
-// if ((field_0x730 != 0) || (temp_f31 < (1200.0f + nREG_F(18) + mDistCheckModifier))) {
-// setActionMode(3, 0xC);
-// setBck(ANM_RUN, 2, 3.0f, l_HIO.mRunAnm);
-// } else {
-// setBck(ANM_BACKSTEP, 0, 3.0f, 1.0f);
-// temp_r3_3 = &mSound;
-// temp_r3_3.startCreatureSound(Z2SE_EN_WW_JUMP, 0, -1);
-// setActionMode(3, 0xF);
-// speedF = -40.0f;
-// speed.y = 25.0f;
-// field_0x730 = 0x3C;
-// field_0x75B = 1;
-// }
-// } else if (temp_f31 > (1800.0f + nREG_F(18) + mDistCheckModifier)) {
-// setBck(ANM_RUN, 2, 3.0f, l_HIO.mRunAnm);
-// setActionMode(3, 0x14);
-// speedF = l_HIO.mRunSpeed - 10.0f;
-// }
-// if (checkSideStep() != 0) {
-// setActionMode(3, 0x19);
-// speed.y = 0.0f;
-// speedF = 0.0f;
-// }
-// if (checkMoveOut() != 0) {
-// return;
-// }
-// /* Duplicate return node #44. Try simplifying control flow for better match */
-// return;
-// }
-// if (temp_r0 < 0xC) {
-// goto block_33;
-// }
-// /* Duplicate return node #44. Try simplifying control flow for better match */
-// return;
-// }
-// setBck(ANM_RUN, 2, 3.0f, l_HIO.mRunAnm);
-// mAttackActionID = 0xB;
-// field_0x728 = 150;
-// block_33:
-// daPy_getPlayerActorClass();
-// spC = checkNowWolf__9daPy_py_cFv;
-// if (spC((daPy_py_c *) checkNowWolf__9daPy_py_cFv) != 0) {
-// speedF = l_HIO.mWolfEscapeSpeed;
-// } else {
-// speedF = l_HIO.mLinkEscapeSpeed;
-// }
-// sp1C = calcMoveDir(temp_r1 + 8, cLib_targetAngleY((Vec *) &current.pos.x, (Vec *) &field_0x65C));
-// if (sp1C != 0) {
-// cLib_addCalcAngleS(&shape_angle.y, sp8, 4, 0x800, 0x200);
-// } else {
-// cLib_addCalcAngleS(&shape_angle.y, sp8, 8, 0x200, 0x80);
-// }
-// current.angle.y = shape_angle.y;
-// if ((abs(&field_0x65C, (Vec *) &current.pos.x) < @119044.unkE4) || (field_0x728 == 0)) {
-// if (temp_f31 > (1400.0f + nREG_F(18) + mDistCheckModifier)) {
-// setActionMode(3, 2);
-// setBck(ANM_TURN, 0, 3.0f, 1.0f);
-// temp_r3_4 = &mSound;
-// temp_r3_4.startCreatureSound(Z2SE_EN_WW_JUMP, 0, -1);
-// return;
-// }
-// setActionMode(3, 0xC);
-// setBck(ANM_RUN, 2, 3.0f, l_HIO.mRunAnm);
-// /* Duplicate return node #44. Try simplifying control flow for better match */
-// return;
-// }
-}
+ f32 fVar1 = daPy_getPlayerActorClass()->current.pos.absXZ(current.pos);
+
+ switch (mActionMode) {
+ case ACTION_MODE_0:
+ setBck(BCK_WW_WALK, J3DFrameCtrl::EMode_LOOP, 3.0f, l_HIO.walk_anm);
+ mActionMode = ACTION_MODE_1;
+ field_0x728 = 150;
+ // fallthrough
+ case ACTION_MODE_1: {
+ if (mpModelMorf->checkFrame(5.0f) || mpModelMorf->checkFrame(10.0f) || mpModelMorf->checkFrame(15.0f) || mpModelMorf->checkFrame(20.0f)) {
+ mSound.startCreatureSound(Z2SE_EN_WW_FOOTNOTE, 0, -1);
+ }
+
+ field_0x75a = 1;
+ s16 sVar1 = cLib_targetAngleY(&current.pos, &field_0x65c);
+ cLib_addCalcAngleS(&current.angle.y, sVar1, 8, 0x400, 0x100);
+ s16 sVar2 = fopAcM_searchPlayerAngleY(this);
+
+ if ((s16)(sVar1 - sVar2) > 0x4000) {
+ sVar1 = sVar2 + 0x4000;
+ }
-/* ############################################################################################## */
-/* 807EF86C-807EF870 0000FC 0004+00 0/1 0/0 0/0 .rodata @6385 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6385 = -30.0f;
-COMPILER_STRIP_GATE(0x807EF86C, &lit_6385);
-#pragma pop
+ if ((s16)(sVar1 - sVar2) < -0x4000) {
+ sVar1 = sVar2 - 0x4000;
+ }
+
+ cLib_addCalcAngleS(&shape_angle.y, sVar1, 8, 0x400, 0x100);
+ cLib_chaseF(&speedF, nREG_F(1) + 5.0f, 1.0f);
+
+ if (field_0x65c.absXZ(current.pos) < 150.0f || field_0x728 == 0) {
+ setActionMode(ACTION_CHASE, ACTION_MODE_2);
+ }
+
+ if (fVar1 < nREG_F(18) + 1400.0f + mDistCheckModifier) {
+ if (field_0x730 != 0 || fVar1 < nREG_F(18) + 1200.0f + mDistCheckModifier) {
+ setActionMode(ACTION_CHASE, ACTION_MODE_12);
+ setBck(BCK_WW_RUN, J3DFrameCtrl::EMode_LOOP, 3.0f, l_HIO.run_anm);
+ } else {
+ setBck(BCK_WW_BACKSTEP, J3DFrameCtrl::EMode_NONE, 3.0f, 1.0f);
+ mSound.startCreatureSound(Z2SE_EN_WW_JUMP, 0, -1);
+ setActionMode(ACTION_CHASE, ACTION_MODE_15);
+ speedF = -40.0f;
+ speed.y = 25.0f;
+ field_0x730 = 60;
+ field_0x75b = 1;
+ }
+ } else if (fVar1 > nREG_F(18) + 1800.0f + mDistCheckModifier) {
+ setBck(BCK_WW_RUN, J3DFrameCtrl::EMode_LOOP, 3.0f, l_HIO.run_anm);
+ setActionMode(ACTION_CHASE, ACTION_MODE_20);
+ speedF = l_HIO.run_speed - 10.0f;
+ }
+
+ if (checkSideStep()) {
+ setActionMode(ACTION_CHASE, ACTION_MODE_25);
+ speed.y = 0.0f;
+ speedF = 0.0f;
+ }
+
+ if (checkMoveOut()) return;
+ break;
+ }
+
+ case ACTION_MODE_10:
+ setBck(BCK_WW_RUN, J3DFrameCtrl::EMode_LOOP, 3.0f, l_HIO.run_anm);
+ mActionMode = ACTION_MODE_11;
+ field_0x728 = 150;
+ // fallthrough
+ case ACTION_MODE_11:
+ if (daPy_getPlayerActorClass()->checkNowWolf()) {
+ speedF = l_HIO.wolf_escape_speed;
+ } else {
+ speedF = l_HIO.link_escape_speed;
+ }
+
+ s16 sVar1;
+ if (calcMoveDir(&sVar1, cLib_targetAngleY(&current.pos, &field_0x65c))) {
+ cLib_addCalcAngleS(&shape_angle.y, sVar1, 4, 0x800, 0x200);
+ } else {
+ cLib_addCalcAngleS(&shape_angle.y, sVar1, 8, 0x200, 0x80);
+ }
+
+ current.angle.y = shape_angle.y;
+
+ if (field_0x65c.abs(current.pos) < 300.0f || field_0x728 == 0) {
+ if (fVar1 > nREG_F(18) + 1400.0f + mDistCheckModifier) {
+ setActionMode(ACTION_CHASE, ACTION_MODE_2);
+ setBck(BCK_WW_TURN, J3DFrameCtrl::EMode_NONE, 3.0f, 1.0f);
+ mSound.startCreatureSound(Z2SE_EN_WW_JUMP, 0, -1);
+ } else {
+ setActionMode(ACTION_CHASE, ACTION_MODE_12);
+ setBck(BCK_WW_RUN, J3DFrameCtrl::EMode_LOOP, 3.0f, l_HIO.run_anm);
+ }
+ }
+ break;
+ }
+}
/* 807ED674-807ED78C 006074 0118+00 1/1 0/0 0/0 .text eWW_posMoveF__8daE_WW_cFv */
void daE_WW_c::eWW_posMoveF() {
- if (field_0x75B != 0 && speed.y < 0.0f && mAcch.ChkGroundHit()) {
- field_0x75B = 0;
+ if (field_0x75b != 0 && speed.y < 0.0f && mObjAcch.ChkGroundHit()) {
+ field_0x75b = 0;
}
- switch (field_0x75B) {
+
+ switch (field_0x75b) {
case 0:
gravity = -30.0f + nREG_F(0);
break;
+
case 1:
gravity = -5.0f;
break;
+
case 2:
gravity = -3.0f;
break;
}
+
f32 temp_f31 = speedF;
- if (mAcch.ChkGroundHit()) {
+ if (mObjAcch.ChkGroundHit()) {
cM3dGPla plane;
- dComIfG_Bgsp().GetTriPla(mAcch.m_gnd, &plane);
+ dComIfG_Bgsp().GetTriPla(mObjAcch.m_gnd, &plane);
speedF *= plane.GetNP()->y;
}
+
fopAcM_posMoveF(this,mCcStts.GetCCMoveP());
speedF = temp_f31;
}
/* 807ED78C-807EDA78 00618C 02EC+00 2/1 0/0 0/0 .text action__8daE_WW_cFv */
void daE_WW_c::action() {
-// s16 temp_r26;
-// void **temp_r3;
-// void **temp_r3_2;
-// void *temp_r1;
-
-// temp_r1 = sp - 0xA0;
-// field_0x75A = 0;
-// setGroundAngle();
-// damage_check();
-// OffAtSetBit(mSph1[1]);
-// mSph2[0].SetTgType(, 0xD8000012);
-// mSph2[1].SetTgType(0xD8000012);
- int var_r29 = 0;
-// temp_r26 = shape_angle.y;
- switch (mActionID) {
- case ACTION_EXECUTE_MASTER:
- executeMaster();
- return;
-
- case ACTION_EXECUTE_WAIT:
- executeWait();
- /* Fallthrough */
- default:
- break;
+ field_0x75a = 0;
+ setGroundAngle();
+ damage_check();
+ mSph1[1].OffAtSetBit();
+ mSph2[0].SetTgType(0xD8000012);
+ mSph2[1].SetTgType(0xD8000012);
+ BOOL bVar1 = FALSE;
+ s16 sVar1 = shape_angle.y;
+
+ switch (mAction) {
+ case ACTION_MASTER:
+ executeMaster();
+ return;
- case ACTION_EXECUTE_ATTACK:
- executeAttack();
- var_r29 = 1;
- break;
+ case ACTION_WAIT:
+ executeWait();
+ break;
+
+ case ACTION_ATTACK:
+ executeAttack();
+ bVar1 = TRUE;
+ break;
+
+ case ACTION_CHASE:
+ executeChase();
+ bVar1 = TRUE;
+ break;
+
+ case ACTION_DAMAGE:
+ executeDamage();
+ bVar1 = TRUE;
+ break;
+
+ case ACTION_MOVE_OUT:
+ executeMoveOut();
+ break;
+
+ case ACTION_WALK:
+ executeWalk();
+ bVar1 = TRUE;
+ break;
+ }
- case ACTION_EXECUTE_CHASE:
- executeChase();
- var_r29 = 1;
- break;
+ setBlurEffect();
+ field_0x759 = 0;
+ if (shape_angle.y != sVar1) {
+ if ((s16)(shape_angle.y - sVar1) < 0) {
+ field_0x759 = 1;
+ } else {
+ field_0x759 = 2;
+ }
+ }
- case ACTION_EXECUTE_DAMAGE:
- executeDamage();
- var_r29 = 1;
- break;
+ mSound.setLinkSearch(bVar1);
- case ACTION_EXECUTE_MOVE_OUT:
- executeMoveOut();
- break;
+ if (field_0x75d) {
+ dBgS_LinChk lin_chk;
+ lin_chk.Set(&dComIfGp_getCamera(0)->lookat.eye, &attention_info.position, this);
- case ACTION_EXECUTE_WALK:
- executeWalk();
- var_r29 = 1;
- break;
+ if (dComIfG_Bgsp().LineCross(&lin_chk)) {
+ attention_info.flags &= 0xFFFFFFFB;
+ } else {
+ attention_info.flags |= 4;
+ }
}
- // setBlurEffect();
- // field_0x759 = 0;
- // if (shape_angle.y != temp_r26) {
- // if ((shape_angle.y - temp_r26) < 0) {
- // field_0x759 = 1;
- // } else {
- // field_0x759 = 2;
- // }
- // }
- // setLinkSearch((Z2CreatureEnemy *) &mSound, (-var_r29 | var_r29) >> 0x1F);
- // if (field_0x75D != 0) {
- // (sp10);
- // Set(sp10, dComIfGp_getCamera(0) + 0xDC, &attention_info.position, this);
- // if (LineCross(dComIfG_Bgsp(), sp10) != 0) {
- // attention_info.flags &= 0xFFFFFFFB;
- // } else {
- // attention_info.flags |= 4;
- // }
- // }
- // eWW_posMoveF();
- // CrrPos(&mAcch, dComIfG_Bgsp());
- // play(mpMorf, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
- // if (checkBck(0xB) != 0) {
- // if ((mpMorf->checkFrame(0.0f) != 0) || (mpMorf->checkFrame(@119044.unkEC) != 0) || (mpMorf->checkFrame(8.0f) != 0) || (mpMorf->checkFrame(@119044.unkF0) != 0)) {
- // temp_r3 = &mSound;
- // temp_r3.startCreatureSound(Z2SE_EN_WW_FOOTNOTE, 0, -1);
- // return;
- // }
- // } else {
- // if ((checkBck(0xF) != 0) && (mpMorf->checkFrame(5.0f) != 0)) {
- // temp_r3_2 = &mSound;
- // temp_r3_2.startCreatureVoice(0x70388, -1);
- // }
- // return;
- // }
+ eWW_posMoveF();
+ mObjAcch.CrrPos(dComIfG_Bgsp());
+ mpModelMorf->play(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this)));
+
+ if (checkBck(0xB)) {
+ if (mpModelMorf->checkFrame(0.0f) || mpModelMorf->checkFrame(6.0f) || mpModelMorf->checkFrame(8.0f) || mpModelMorf->checkFrame(13.0f)) {
+ mSound.startCreatureSound(Z2SE_EN_WW_FOOTNOTE, 0, -1);
+ }
+ } else if (checkBck(0xF) && mpModelMorf->checkFrame(5.0f)) {
+ mSound.startCreatureVoice(Z2SE_EN_WW_V_WAIT, -1);
+ }
}
/* 807EDA78-807EDB00 006478 0088+00 1/1 0/0 0/0 .text mtx_set__8daE_WW_cFv */
@@ -1994,45 +1927,23 @@ void daE_WW_c::mtx_set() {
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::ZXYrotM(field_0x674);
mDoMtx_stack_c::ZXYrotM(shape_angle);
- mDoMtx_stack_c::XrotM(field_0x6CE);
- mDoMtx_stack_c::scaleM(l_HIO.mModelSize, l_HIO.mModelSize, l_HIO.mModelSize);
+ mDoMtx_stack_c::XrotM(field_0x6ce);
+ mDoMtx_stack_c::scaleM(l_HIO.model_size, l_HIO.model_size, l_HIO.model_size);
- mpMorf->getModel()->setBaseTRMtx(mDoMtx_stack_c::get());
- mpMorf->modelCalc();
+ mpModelMorf->getModel()->setBaseTRMtx(mDoMtx_stack_c::get());
+ mpModelMorf->modelCalc();
}
-/* ############################################################################################## */
-/* 807EF870-807EF874 000100 0004+00 0/0 0/0 0/0 .rodata @6439 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6439 = 6.0f;
-COMPILER_STRIP_GATE(0x807EF870, &lit_6439);
-#pragma pop
-
-/* 807EF874-807EF878 000104 0004+00 0/0 0/0 0/0 .rodata @6440 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6440 = 13.0f;
-COMPILER_STRIP_GATE(0x807EF874, &lit_6440);
-#pragma pop
-
-/* 807EF878-807EF87C 000108 0004+00 0/1 0/0 0/0 .rodata @6500 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_6500 = 70.0f;
-COMPILER_STRIP_GATE(0x807EF878, &lit_6500);
-#pragma pop
-
/* 807EDB00-807EDCC4 006500 01C4+00 1/1 0/0 0/0 .text cc_set__8daE_WW_cFv */
void daE_WW_c::cc_set() {
cXyz sp8;
- if (mActionID != ACTION_EXECUTE_MASTER) {
- J3DModel* model_p = mpMorf->getModel();
- mDoMtx_stack_c::copy(model_p->getAnmMtx(4));
+ if (mAction != ACTION_MASTER) {
+ J3DModel* model_p = mpModelMorf->getModel();
+ mDoMtx_stack_c::copy(model_p->getAnmMtx(JNT_HEAD));
mDoMtx_stack_c::multVecZero(&eyePos);
attention_info.position = eyePos;
attention_info.position.y += 20.0f;
- mDoMtx_stack_c::copy(model_p->getAnmMtx(1));
+ mDoMtx_stack_c::copy(model_p->getAnmMtx(JNT_BODY01));
mDoMtx_stack_c::transM(0.0f, -20.0f, 0.0f);
mDoMtx_stack_c::multVecZero(&sp8);
mSph1[0].SetC(sp8);
@@ -2041,7 +1952,7 @@ void daE_WW_c::cc_set() {
mSph2[0].SetC(sp8);
mSph2[0].SetR(70.0f + nREG_F(17));
dComIfG_Ccsp()->Set(&mSph2[0]);
- mDoMtx_stack_c::copy(model_p->getAnmMtx(4)),
+ mDoMtx_stack_c::copy(model_p->getAnmMtx(JNT_HEAD)),
mDoMtx_stack_c::transM(-10.0f, -20.0f, 0.0f);
mDoMtx_stack_c::multVecZero(&sp8);
mSph1[1].SetC(sp8);
@@ -2055,63 +1966,56 @@ void daE_WW_c::cc_set() {
/* 807EDCC4-807EDE6C 0066C4 01A8+00 1/1 0/0 0/0 .text execute__8daE_WW_cFv */
int daE_WW_c::execute() {
-// mDoMtx_stack_c *temp_ret;
-// s32 temp_cr0_eq;
-// s32 var_r29;
-// void *temp_r1;
-// void *temp_r4;
-
-// temp_r1 = sp - 0x30;
-// if (field_0x728 != 0) {
-// field_0x728 -= 1;
-// }
-// if (field_0x72C != 0) {
-// field_0x72C -= 1;
-// }
-// if (field_0x724 != 0) {
-// field_0x724 -= 1;
-// }
-// if (field_0x730 != 0) {
-// field_0x730 -= 1;
-// }
-// if (field_0x734 != 0) {
-// field_0x734 -= 1;
-// }
-// if (field_0x738 != 0) {
-// field_0x738 -= 1;
-// }
-// if (field_0x73C != 0) {
-// field_0x73C -= 1;
-// }
-// if (field_0x740 != 0) {
-// field_0x740 -= 1;
-// }
-// var_r29 = 0;
-// loop_20:
-// temp_cr0_eq = var_r29 == 0;
-// var_r29++;
-// if (temp_cr0_eq == 0) {
-// if ((this + (var_r29 * 4))->unk77C != 0) {
-// temp_r4 = this + (var_r29 * 4);
-// temp_r4->unk77C = (temp_r4->unk77C - 1);
-// }
-// goto loop_20;
-// }
-// action();
-// mtx_set();
-// cc_set();
-// setHeadAngle();
-// if (l_HIO.mMoveRangeDebugDisp != 0) {
-// fopAcM_OffStatus((fopAc_ac_c *) 0x100);
-// } else {
-// fopAcM_OnStatus((fopAc_ac_c *) 0x100);
-// }
-// cXyz sp14;
-// temp_ret = mpMorf->getModel()->getAnmMtx(2);
-// mDoMtx_stack_c::copy(temp_ret, (f32 (*)[4]) (u64) temp_ret);
-// mDoMtx_stack_c::multVecZero(sp14, (Vec *) mDoMtx_stack_c::transM((mDoMtx_stack_c *) &g_regHIO, nREG_F(0), nREG_F(1), nREG_F(2)));
-// cXyz temp_r1 + 8(1.0f + nREG_F(3), 1.0f + nREG_F(4), 2.0f + nREG_F(5));
-// setMidnaBindEffect((fopEn_enemy_c *) (Z2CreatureEnemy *) &mSound, sp14, temp_r1 + 8);
+ if (field_0x728 != 0) {
+ field_0x728--;
+ }
+
+ if (field_0x72c != 0) {
+ field_0x72c--;
+ }
+
+ if (field_0x724 != 0) {
+ field_0x724--;
+ }
+
+ if (field_0x730 != 0) {
+ field_0x730--;
+ }
+
+ if (field_0x734 != 0) {
+ field_0x734--;
+ }
+
+ if (field_0x738 != 0) {
+ field_0x738--;
+ }
+
+ if (field_0x73c != 0) {
+ field_0x73c--;
+ }
+
+ if (field_0x740 != 0) {
+ field_0x740--;
+ }
+
+ for (int i = 0; i++ != 0;) {
+ if (field_0x744[i] != 0) {
+ field_0x744[i]--;
+ }
+ }
+
+ action();
+ mtx_set();
+ cc_set();
+ setHeadAngle();
+
+ cXyz i_effPos;
+ mDoMtx_stack_c::copy(mpModelMorf->getModel()->getAnmMtx(JNT_BODY02));
+ mDoMtx_stack_c::transM(nREG_F(0), nREG_F(1), nREG_F(2));
+ mDoMtx_stack_c::multVecZero(&i_effPos);
+ cXyz i_effSize(nREG_F(3) + 1.0f, nREG_F(4) + 1.0f, nREG_F(5) + 2.0f);
+ setMidnaBindEffect(this, &mSound, &i_effPos, &i_effSize);
+
return 1;
}
@@ -2120,167 +2024,148 @@ static int daE_WW_Execute(daE_WW_c* i_this) {
return i_this->execute();
}
-/* ############################################################################################## */
-/* 807EF87C-807EF884 00010C 0006+02 0/1 0/0 0/0 .rodata @6556 */
-// #pragma push
-// #pragma force_active on
-// SECTION_RODATA static u8 const lit_6556[6 + 2 /* padding */] = {
-// 0x00,
-// 0x00,
-// 0xE0,
-// 0x00,
-// 0x20,
-// 0x00,
-// /* padding */
-// 0x00,
-// 0x00,
-// };
-// COMPILER_STRIP_GATE(0x807EF87C, &lit_6556);
-// #pragma pop
-
-// /* 807EF8B8-807EF8B8 000148 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-// #pragma push
-// #pragma force_active on
-// SECTION_DEAD static char const* const stringBase_807EF8BD = "D_MN11";
-// #pragma pop
-
/* 807EDE8C-807EE438 00688C 05AC+00 2/2 0/0 0/0 .text calcMoveDir__8daE_WW_cFPss */
-int daE_WW_c::calcMoveDir(s16* param_0, s16 param_1) {
-// s16 temp_r3;
-// s16 var_r29;
-// s32 var_r27;
-// void *temp_r1;
-
-// temp_r1 = sp - 0x100;
-// (sp70);
-// (sp58);
-// sp10 = @119044.eventInfo;
-// sp14 = (&@119044 + 0xF8)->unk4;
-// cXyz sp40;
-// cXyz sp34;
-// cXyz sp28(0.0f, 0.0f, 500.0f);
-// set(sp34, current.pos, 100.0f + current.pos.y, current.pos.z);
-// var_r27 = 0;
-// loop_5:
-// if (var_r27 < 3) {
-// *(sp4C + (var_r27 * 4)) = 1000.0f;
-// cLib_offsetPos(sp40, sp34, (shape_angle.y + *(sp10 + (var_r27 * 2))), sp28);
-// Set(sp70, sp34, sp40, NULL);
-// *(sp20 + (var_r27 * 2)) = 0;
-// if (LineCross(dComIfG_Bgsp(), sp70) != 0) {
-// *(sp4C + (var_r27 * 4)) = abs(&current.pos.x, GetCross(sp70));
-// GetTriPla(dComIfG_Bgsp(), sp84, sp58);
-// if (sp5C < 0.5f) {
-// temp_r3 = cM_atan2s(sp58, sp60);
-// *(sp18 + (var_r27 * 2)) = temp_r3;
-// (this + (var_r27 * 2))->unk788 = temp_r3;
-// *(sp20 + (var_r27 * 2)) = 1;
-// (this + (var_r27 * 4))->unk77C = (nREG_S(0) + 30);
-// }
-// }
-// var_r27++;
-// goto loop_5;
-// }
-// if ((strcmp("D_MN11", dComIfGp_getStartStageName()) == 0) && (dComIfGp_getStartStageRoomNo() == 4)) {
-// if (sp20 != 0) {
-// field_0x74C = 0;
-// field_0x748 = 0;
-// } else {
-// if (field_0x748 != 0) {
-// sp1A = field_0x752;
-// sp22 = 1;
-// }
-// if (field_0x74C != 0) {
-// sp1C = field_0x754;
-// sp24 = 1;
-// }
-// }
-// }
-// if ((sp22 != 0) && (sp24 != 0)) {
-// if (sp20 != 0) {
-// if (field_0x759 == 1) {
-// var_r29 = shape_angle.y - 0x2000;
-// } else {
-// var_r29 = shape_angle.y + 0x2000;
-// }
-// } else if (field_0x759 == 1) {
-// var_r29 = shape_angle.y - 0x2000;
-// } else if (field_0x759 == 2) {
-// var_r29 = shape_angle.y + 0x2000;
-// } else {
-// var_r29 = param_1;
-// }
-// field_0x738 = 30;
-// } else if (sp20 != 0) {
-// if (sp22 != 0) {
-// var_r29 = shape_angle.y + 0x2000;
-// } else if (sp24 != 0) {
-// var_r29 = shape_angle.y - 0x2000;
-// } else if ((sp18 - shape_angle.y) > 0) {
-// var_r29 = shape_angle.y + 0x2000;
-// } else {
-// var_r29 = shape_angle.y - 0x2000;
-// }
-// if ((field_0x738 == 0) && (abs((fopAcM_searchPlayerAngleY(this) - var_r29)) < 0x4000)) {
-// var_r29 = param_1;
-// }
-// } else if (sp22 != 0) {
-// if ((sp1A - shape_angle.y) < 0) {
-// var_r29 = sp1A + 0x4000;
-// } else {
-// var_r29 = sp1A - 0x4000;
-// }
-// if ((field_0x738 == 0) && (abs((fopAcM_searchPlayerAngleY(this) - var_r29)) < 0x2000)) {
-// var_r29 = sp1A;
-// }
-// if (sp50 < @119044.unkE4) {
-// var_r29 = sp1A;
-// }
-// } else if (sp24 != 0) {
-// if ((sp1C - shape_angle.y) < 0) {
-// var_r29 = sp1C + 0x4000;
-// } else {
-// var_r29 = sp1C - 0x4000;
-// }
-// if ((field_0x738 == 0) && (abs((fopAcM_searchPlayerAngleY(this) - var_r29)) < 0x2000)) {
-// var_r29 = sp1C;
-// }
-// if (sp54 < @119044.unkE4) {
-// var_r29 = sp1C;
-// }
-// } else {
-// var_r29 = param_1;
-// }
-// *param_0 = var_r29;
-// spC = 0;
-// loop_60:
-// if (spC >= 3) {
-// sp8 = 0;
-// return sp8;
-// }
-// if (*(sp20 + (spC * 2)) != 0) {
-// sp9 = 1;
-// return sp9;
-// }
-// spC = (spC + 1);
-// goto loop_60;
+bool daE_WW_c::calcMoveDir(s16* param_1, s16 param_2) {
+ dBgS_LinChk lin_chk;
+ cM3dGPla plane;
+ s16 sVar4, sVar2[3], sVar3[3];
+ s16 sVar1[3] = {0, -0x2000, 0x2000};
+ f32 fVar1[3];
+ cXyz spc0, spcc;
+ cXyz spd8(0.0f, 0.0f, 500.0f);
+ spcc.set(current.pos.x, current.pos.y + 100.0f, current.pos.z);
+
+ for (int i = 0; i < 3; i++) {
+ fVar1[i] = 1000.0f;
+ cLib_offsetPos(&spc0, &spcc, shape_angle.y + sVar1[i], &spd8);
+ lin_chk.Set(&spcc, &spc0, NULL);
+ sVar2[i] = 0;
+
+ if (dComIfG_Bgsp().LineCross(&lin_chk)) {
+ fVar1[i] = current.pos.abs(lin_chk.GetCross());
+ dComIfG_Bgsp().GetTriPla(lin_chk, &plane);
+
+ if (plane.mNormal.y < 0.5f) {
+ field_0x750[i] = sVar3[i] = cM_atan2s(plane.mNormal.x, plane.mNormal.z);
+ sVar2[i] = 1;
+ field_0x744[i] = nREG_S(0) + 30;
+ }
+ }
+ }
+
+ if (strcmp("D_MN11", dComIfGp_getStartStageName()) == 0 && dComIfGp_getStartStageRoomNo() == 4) {
+ if (sVar2[0] != 0) {
+ field_0x74c = 0;
+ field_0x744[1] = 0;
+ } else {
+ if (field_0x744[1] != 0) {
+ sVar3[1] = field_0x750[1];
+ sVar2[1] = 1;
+ }
+
+ if (field_0x74c != 0) {
+ sVar3[2] = field_0x750[2];
+ sVar2[2] = 1;
+ }
+ }
+ }
+
+ if (sVar2[1] != 0 && sVar2[2] != 0) {
+ if (sVar2[0] != 0) {
+ if (field_0x759 == 1) {
+ sVar4 = shape_angle.y - 0x2000;
+ } else {
+ sVar4 = shape_angle.y + 0x2000;
+ }
+ } else if (field_0x759 == 1) {
+ sVar4 = shape_angle.y - 0x2000;
+ } else if (field_0x759 == 2) {
+ sVar4 = shape_angle.y + 0x2000;
+ } else {
+ sVar4 = param_2;
+ }
+
+ field_0x738 = 30;
+ } else if (sVar2[0] != 0) {
+ if (sVar2[1] != 0) {
+ sVar4 = shape_angle.y + 0x2000;
+ } else if (sVar2[2] != 0) {
+ sVar4 = shape_angle.y - 0x2000;
+ } else if ((s16)(sVar3[0] - shape_angle.y) > 0) {
+ sVar4 = shape_angle.y + 0x2000;
+ } else {
+ sVar4 = shape_angle.y - 0x2000;
+ }
+
+ if (field_0x738 == 0) {
+ if (abs((s16)(fopAcM_searchPlayerAngleY(this) - sVar4)) < 0x4000) {
+ sVar4 = param_2;
+ }
+ }
+ } else if (sVar2[1] != 0) {
+ if ((s16)(sVar3[1] - shape_angle.y) < 0) {
+ sVar4 = sVar3[1] + 0x4000;
+ } else {
+ sVar4 = sVar3[1] - 0x4000;
+ }
+
+ if (field_0x738 == 0) {
+ if (abs((s16)(fopAcM_searchPlayerAngleY(this) - sVar4)) < 0x2000) {
+ sVar4 = sVar3[1];
+ }
+ }
+
+ if (fVar1[1] < 300.0f) {
+ sVar4 = sVar3[1];
+ }
+ } else if (sVar2[2] != 0) {
+ if ((s16)(sVar3[2] - shape_angle.y) < 0) {
+ sVar4 = sVar3[2] + 0x4000;
+ } else {
+ sVar4 = sVar3[2] - 0x4000;
+ }
+
+ if (field_0x738 == 0) {
+ if (abs((s16)(fopAcM_searchPlayerAngleY(this) - sVar4)) < 0x2000) {
+ sVar4 = sVar3[2];
+ }
+ }
+
+ if (fVar1[2] < 300.0f) {
+ sVar4 = sVar3[2];
+ }
+ } else {
+ sVar4 = param_2;
+ }
+
+ *param_1 = sVar4;
+
+ for (int i = 0; i < 3; i++) {
+ if (sVar2[i] != 0) {
+ return true;
+ }
+ }
+
+ return false;
}
/* 807EE438-807EE440 006E38 0008+00 1/0 0/0 0/0 .text daE_WW_IsDelete__FP8daE_WW_c */
-static int daE_WW_IsDelete(daE_WW_c* param_0) {
+static int daE_WW_IsDelete(daE_WW_c* i_this) {
return 1;
}
/* 807EE440-807EE4B4 006E40 0074+00 1/1 0/0 0/0 .text _delete__8daE_WW_cFv */
int daE_WW_c::_delete() {
dComIfG_resDelete(&mPhase, "E_WW");
- if (field_0xEC4 != 0) {
+ if (field_0xec4 != 0) {
l_HIOInit = false;
mDoHIO_DELETE_CHILD(l_HIO.field_0x04);
}
+
if (heap != 0) {
mSound.deleteObject();
}
+
return 1;
}
@@ -2292,45 +2177,23 @@ static int daE_WW_Delete(daE_WW_c* i_this) {
/* 807EE4D4-807EE61C 006ED4 0148+00 1/1 0/0 0/0 .text CreateHeap__8daE_WW_cFv */
int daE_WW_c::CreateHeap() {
-// s32 sp10;
-// s32 spC;
-// void **sp8;
-// J3DAnmTransform *temp_r7;
-// J3DModel *temp_r3_2;
-// JUTAssertion *temp_r3;
-// mDoExt_McaMorfSO *var_r26;
-// u16 var_r29;
-
-// temp_r3 = dComIfG_getObjectRes((s8 *) (@LOCAL@setMidnaBindEffect__FP13fopEn_enemy_cP15Z2CreatureEnemyP4cXyzP4cXyz@e_prim + 0x138), 0x13);
-// if (temp_r3 != NULL) {
-
-// } else {
-// showAssert(getSDevice(temp_r3), (@LOCAL@setMidnaBindEffect__FP13fopEn_enemy_cP15Z2CreatureEnemyP4cXyzP4cXyz@e_prim + 0x2D0), (s8 *)0xB07, (@LOCAL@setMidnaBindEffect__FP13fopEn_enemy_cP15Z2CreatureEnemyP4cXyzP4cXyz@e_prim + 0x2E0));
-// OSPanic(@LOCAL@setMidnaBindEffect__FP13fopEn_enemy_cP15Z2CreatureEnemyP4cXyzP4cXyz@e_prim + 0x2D0, 0xB07, @LOCAL@setMidnaBindEffect__FP13fopEn_enemy_cP15Z2CreatureEnemyP4cXyzP4cXyz@e_prim + 0x2F0);
-// }
-// var_r26 = (0x58);
-// if (var_r26 != NULL) {
-// temp_r7 = dComIfG_getObjectRes((s8 *) (@LOCAL@setMidnaBindEffect__FP13fopEn_enemy_cP15Z2CreatureEnemyP4cXyzP4cXyz@e_prim + 0x138), 4);
-// sp8 = &mSound;
-// spC = 0x80000;
-// sp10 = 0x11000084;
-// var_r26 = (var_r26, (J3DModelData *) temp_r3, NULL, NULL, temp_r7, 0, 1.0f, 0, -1, M2C_ERROR(/* Unable to find stack arg 0x24 in block */), M2C_ERROR(/* Unable to find stack arg 0x28 in block */), M2C_ERROR(/* Unable to find stack arg 0x2c in block */));
-// }
-// mpMorf = var_r26;
-// if (((mDoExt_McaMorfSO *) mpMorf == NULL) || (mpMorf->getModel() == NULL)) {
-// return 0;
-// }
-// temp_r3_2 = mpMorf->getModel();
-// setUserArea(temp_r3_2, this);
-// var_r29 = 1;
-// loop_13:
-// if (var_r29 < getJointNum(temp_r3_2->getModelData())) {
-// if ((var_r29 == 3) || (var_r29 == 4)) {
-// setCallBack(getJointNodePointer(temp_r3_2->getModelData(), var_r29), (s32 (*)(J3DJoint *, s32)) JointCallBack__8daE_WW_cFP8J3DJointi);
-// }
-// var_r29++;
-// goto loop_13;
-// }
+ J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("E_WW", BMDR_WW);
+
+ JUT_ASSERT(2823, modelData != 0);
+
+ mpModelMorf = new mDoExt_McaMorfSO(modelData, NULL, NULL, (J3DAnmTransform*)dComIfG_getObjectRes("E_WW", BCK_WW_APPEAR), 0, 1.0f, 0, -1, &mSound, 0x80000, 0x11000084);
+ if (mpModelMorf == NULL || mpModelMorf->getModel() == NULL) {
+ return 0;
+ }
+
+ J3DModel* model = mpModelMorf->getModel();
+ model->setUserArea((u32)this);
+ for (u16 i = JNT_BODY01; i < model->getModelData()->getJointNum(); i++) {
+ if (i == JNT_NECK || i == JNT_HEAD) {
+ model->getModelData()->getJointNodePointer(i)->setCallBack(JointCallBack);
+ }
+ }
+
return 1;
}
@@ -2340,83 +2203,39 @@ static int useHeapInit(fopAc_ac_c* i_this) {
return a_this->CreateHeap();
}
-/* ############################################################################################## */
-/* 807EF884-807EF888 000114 0004+00 0/2 0/0 0/0 .rodata @6946 */
-// #pragma push
-// #pragma force_active on
-// SECTION_RODATA static f32 const lit_6946 = -200.0f;
-// COMPILER_STRIP_GATE(0x807EF884, &lit_6946);
-// #pragma pop
-
-// /* 807EF888-807EF88C 000118 0004+00 0/1 0/0 0/0 .rodata @6947 */
-// #pragma push
-// #pragma force_active on
-// SECTION_RODATA static f32 const lit_6947 = 65.0f;
-// COMPILER_STRIP_GATE(0x807EF888, &lit_6947);
-// #pragma pop
-
-// /* 807EF88C-807EF890 00011C 0004+00 0/1 0/0 0/0 .rodata @6948 */
-// #pragma push
-// #pragma force_active on
-// SECTION_RODATA static f32 const lit_6948 = 130.0f;
-// COMPILER_STRIP_GATE(0x807EF88C, &lit_6948);
-// #pragma pop
-
-/* 807EF890-807EF898 000120 0008+00 0/1 0/0 0/0 .rodata @6950 */
-// #pragma push
-// #pragma force_active on
-// SECTION_RODATA static u8 const lit_6950[8] = {
-// 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-// };
-// COMPILER_STRIP_GATE(0x807EF890, &lit_6950);
-// #pragma pop
-
-// /* 807EF8B8-807EF8B8 000148 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-// #pragma push
-// #pragma force_active on
-// SECTION_DEAD static char const* const stringBase_807EF8C4 = "E_ww";
-// #pragma pop
-
-u8 lbl_237_bss_0;
-
/* 807EE63C-807EEB38 00703C 04FC+00 1/1 0/0 0/0 .text create__8daE_WW_cFv */
int daE_WW_c::create() {
- // s32 sp8;
- // cXyz *temp_r22;
- // cXyz *temp_r23;
- // cXyz *temp_r4;
- // daE_WW_c *temp_r3_2;
- // int temp_r3 = 0;
- // u8 var_r26;
- // u8 var_r27;
- // void *temp_r1;
-
- // temp_r1 = sp - 0x50;
fopAcM_SetupActor(this, daE_WW_c);
int phase_state = dComIfG_resLoad(&mPhase, "E_WW");
if (phase_state == cPhs_COMPLEATE_e) {
OS_REPORT("E_WW PARAM %x\n", fopAcM_GetParam(this));
- field_0x6B4 = fopAcM_GetParam(this) & 0xF;
- if (field_0x6B4 == 0xF) {
- field_0x6B4 = 0;
+
+ field_0x6b4 = fopAcM_GetParam(this) & 0xF;
+ if (field_0x6b4 == 0xF) {
+ field_0x6b4 = 0;
}
+
u8 var_r26 = fopAcM_GetParam(this) >> 4; // Arg1 ?
if (var_r26 == 0xFF || var_r26 == 0) {
var_r26 = 30;
}
- field_0x6A8 = 100.0f * var_r26;
- field_0x6B5 = fopAcM_GetParam(this) >> 0xC;
- if (field_0x6B5 == 0) {
- field_0x6B5 = 5;
+
+ field_0x6a8 = 100.0f * var_r26;
+ field_0x6b5 = fopAcM_GetParam(this) >> 0xC;
+ if (field_0x6b5 == 0) {
+ field_0x6b5 = 5;
}
- field_0x6B6 = (fopAcM_GetParam(this) >> 0x14) & 0xF;
- if (field_0x6B6 == 0xF || field_0x6B6 == 0) {
- field_0x6B6 = 3;
+
+ field_0x6b6 = (fopAcM_GetParam(this) >> 0x14) & 0xF;
+ if (field_0x6b6 == 0xF || field_0x6b6 == 0) {
+ field_0x6b6 = 3;
}
- if (field_0x6B6 > 10) {
- field_0x6B6 = 10;
+
+ if (field_0x6b6 > 10) {
+ field_0x6b6 = 10;
}
+
field_0x757 = (fopAcM_GetParam(this) >> 0x18) & 0xF;
if (field_0x757 == 0xF || field_0x757 == 0) {
field_0x757 = 1;
@@ -2424,45 +2243,53 @@ int daE_WW_c::create() {
if (field_0x757 == 2) {
field_0x758 = 1;
}
+
field_0x757 = 0;
}
+
u8 var_r27 = current.angle.x;
if (var_r27 == 0xFF || var_r27 == 0) {
- if (field_0x6B4 == 0) {
+ if (field_0x6b4 == 0) {
var_r27 = 5;
} else {
var_r27 = 10;
}
}
- field_0x6AC = 100.0f * var_r27;
+
+ field_0x6ac = 100.0f * var_r27;
shape_angle.x = 0;
current.angle.x = 0;
if (!fopAcM_entrySolidHeap(this, useHeapInit, 0x1F00)) {
return cPhs_ERROR_e;
}
+
if (l_HIOInit == false) {
l_HIOInit = true;
- field_0xEC4 = 1;
+ field_0xec4 = 1;
l_HIO.field_0x04 = mDoHIO_CREATE_CHILD("ホワイトウルフォス", (JORReflexible*)&l_HIO);
}
- fopAcM_SetMtx(this, mpMorf->getModel()->getBaseTRMtx());
+
+ fopAcM_SetMtx(this, mpModelMorf->getModel()->getBaseTRMtx());
fopAcM_SetMin(this, -200.0f, -200.0f, -200.0f);
fopAcM_SetMax(this, 200.0f, 200.0f, 200.0f);
+
if (field_0x757 != 0) {
- setActionMode(0, 0);
+ setActionMode(ACTION_MASTER, ACTION_MODE_0);
} else {
- mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this), NULL, NULL);
+ mObjAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this), NULL, NULL);
mAcchCir.SetWall(65.0f, 130.0f);
- mAcch.OnLineCheck();
- if (field_0x6B4 == 1) {
+ mObjAcch.OnLineCheck();
+
+ if (field_0x6b4 == 1) {
health = 1;
field_0x560 = 1;
} else {
health = 100;
field_0x560 = 100;
}
+
mCcStts.Init(0xFE, 0, this);
- field_0x75D = 1;
+ field_0x75d = 1;
attention_info.flags = 4;
mSph1[0].Set(cc_ww_src);
mSph1[0].SetStts(&mCcStts);
@@ -2476,19 +2303,24 @@ int daE_WW_c::create() {
mSph2[1].OnTgNoHitMark();
mSound.init(&current.pos, &eyePos, 3, 1);
mSound.setEnemyName("E_ww");
- mpSound = &mSound;
- field_0xEB2 = 1;
+ mAtInfo.mpSound = &mSound;
+ mAtInfo.mPowerType = 1;
gravity = -5.0f;
mDistCheckModifier = cM_rndFX(100.0f);
field_0x668 = home.pos;
- if (fopAcM_SearchByID(fopAcM_GetLinkId(this)) != 0) {
- field_0x668 = current.pos;
+
+ fopAc_ac_c* actor_p;
+ if (fopAcM_SearchByID(fopAcM_GetLinkId(this), (fopAc_ac_c**)&actor_p) != 0) {
+ field_0x668 = actor_p->current.pos;
}
- setActionMode(1, 0);
+
+ setActionMode(ACTION_WAIT, ACTION_MODE_0);
}
+
attention_info.distances[fopAc_attn_BATTLE_e] = 0x34;
daE_WW_Execute(this);
}
+
return phase_state;
}
@@ -2497,100 +2329,6 @@ static int daE_WW_Create(daE_WW_c* i_this) {
return static_cast<daE_WW_c*>(i_this)->create();
}
-/* ############################################################################################## */
-/* 807EF898-807EF89C 000128 0004+00 0/1 0/0 0/0 .rodata @7175 */
-// #pragma push
-// #pragma force_active on
-// SECTION_RODATA static f32 const lit_7175 = -700.0f;
-// COMPILER_STRIP_GATE(0x807EF898, &lit_7175);
-// #pragma pop
-
-// /* 807EF89C-807EF8A0 00012C 0004+00 0/1 0/0 0/0 .rodata @7176 */
-// #pragma push
-// #pragma force_active on
-// SECTION_RODATA static f32 const lit_7176 = -1000.0f;
-// COMPILER_STRIP_GATE(0x807EF89C, &lit_7176);
-// #pragma pop
-
-// /* 807EF8A0-807EF8A4 000130 0004+00 0/1 0/0 0/0 .rodata @7177 */
-// #pragma push
-// #pragma force_active on
-// SECTION_RODATA static f32 const lit_7177 = -300.0f;
-// COMPILER_STRIP_GATE(0x807EF8A0, &lit_7177);
-// #pragma pop
-
-// /* 807EF8A4-807EF8A8 000134 0004+00 0/1 0/0 0/0 .rodata @7178 */
-// #pragma push
-// #pragma force_active on
-// SECTION_RODATA static f32 const lit_7178 = -100.0f;
-// COMPILER_STRIP_GATE(0x807EF8A4, &lit_7178);
-// #pragma pop
-
-// /* 807EF8A8-807EF8AC 000138 0004+00 0/1 0/0 0/0 .rodata @7179 */
-// #pragma push
-// #pragma force_active on
-// SECTION_RODATA static f32 const lit_7179 = 400.0f;
-// COMPILER_STRIP_GATE(0x807EF8A8, &lit_7179);
-// #pragma pop
-
-// /* 807EF8AC-807EF8B0 00013C 0004+00 0/1 0/0 0/0 .rodata @7180 */
-// #pragma push
-// #pragma force_active on
-// SECTION_RODATA static f32 const lit_7180 = -400.0f;
-// COMPILER_STRIP_GATE(0x807EF8AC, &lit_7180);
-// #pragma pop
-
-// /* 807EF8B0-807EF8B4 000140 0004+00 0/1 0/0 0/0 .rodata @7181 */
-// #pragma push
-// #pragma force_active on
-// SECTION_RODATA static f32 const lit_7181 = 250.0f;
-// COMPILER_STRIP_GATE(0x807EF8B0, &lit_7181);
-// #pragma pop
-
-// /* 807EF8B4-807EF8B8 000144 0004+00 0/1 0/0 0/0 .rodata @7182 */
-// #pragma push
-// #pragma force_active on
-// SECTION_RODATA static f32 const lit_7182 = -250.0f;
-// COMPILER_STRIP_GATE(0x807EF8B4, &lit_7182);
-// #pragma pop
-
-// /* 807EEF04-807EF2CC 007904 03C8+00 0/0 1/0 0/0 .text __sinit_d_a_e_ww_cpp */
-// void __sinit_d_a_e_ww_cpp() {
-// // NONMATCHING
-// }
-
-// #pragma push
-// #pragma force_active on
-// REGISTER_CTORS(0x807EEF04, __sinit_d_a_e_ww_cpp);
-// #pragma pop
-
-// /* 807EF2CC-807EF2D4 007CCC 0008+00 1/0 0/0 0/0 .text @20@__dt__14dBgS_ObjGndChkFv */
-// static void func_807EF2CC() {
-// // NONMATCHING
-// }
-
-// /* 807EF2D4-807EF2DC 007CD4 0008+00 1/0 0/0 0/0 .text @76@__dt__14dBgS_ObjGndChkFv */
-// static void func_807EF2D4() {
-// // NONMATCHING
-// }
-
-// /* 807EF2DC-807EF2E4 007CDC 0008+00 1/0 0/0 0/0 .text @60@__dt__14dBgS_ObjGndChkFv */
-// static void func_807EF2DC() {
-// // NONMATCHING
-// }
-
-// /* 807EF2E4-807EF2EC 007CE4 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */
-// static void func_807EF2E4() {
-// // NONMATCHING
-// }
-
-// /* 807EF2EC-807EF2F4 007CEC 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */
-// static void func_807EF2EC() {
-// // NONMATCHING
-// }
-
-/* ############################################################################################## */
-
/* 807EFA80-807EFAA0 -00001 0020+00 1/0 0/0 0/0 .data l_daE_WW_Method */
static actor_method_class l_daE_WW_Method = {
(process_method_func)daE_WW_Create,
@@ -2618,4 +2356,4 @@ extern actor_process_profile_definition g_profile_E_WW = {
fopAc_CULLBOX_CUSTOM_e, // cullType
};
-AUDIO_INSTANCES; // Needed ??
+AUDIO_INSTANCES;