summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLagoLunatic <LagoLunatic@users.noreply.github.com>2024-01-20 19:27:19 -0500
committerLagoLunatic <LagoLunatic@users.noreply.github.com>2024-01-20 19:27:19 -0500
commit25e69da75e7c76b3b65ec1ecd6a4cfecfeaf65be (patch)
tree117164becb109f873d65ce7f1672b777658dd81c /src
parent29890bc07c634824299f6d1f226a7392e32da1e6 (diff)
d_cc_uty OK
Diffstat (limited to 'src')
-rw-r--r--src/c/c_damagereaction.cpp6
-rw-r--r--src/d/actor/d_a_am.cpp4
-rw-r--r--src/d/actor/d_a_am2.cpp4
-rw-r--r--src/d/actor/d_a_arrow.cpp4
-rw-r--r--src/d/actor/d_a_bk.cpp2
-rw-r--r--src/d/actor/d_a_hookshot.cpp2
-rw-r--r--src/d/actor/d_a_obj_akabe.cpp2
-rw-r--r--src/d/actor/d_a_player_main.cpp30
-rw-r--r--src/d/actor/d_a_player_main_data.inc4
-rw-r--r--src/d/actor/d_a_rd.cpp4
-rw-r--r--src/d/d_cc_uty.cpp265
-rw-r--r--src/d/d_kankyo_rain.cpp2
-rw-r--r--src/f_op/f_op_actor_mng.cpp2
13 files changed, 283 insertions, 48 deletions
diff --git a/src/c/c_damagereaction.cpp b/src/c/c_damagereaction.cpp
index b0ba4395..094a7b1d 100644
--- a/src/c/c_damagereaction.cpp
+++ b/src/c/c_damagereaction.cpp
@@ -87,7 +87,7 @@ dCcD_SrcCyl cc_cyl_src = {
/* SrcGObjAt Spl */ 0,
/* SrcGObjAt Mtrl */ 0,
/* SrcGObjAt SPrm */ 0,
- /* SrcGObjTg Se */ 0x05,
+ /* SrcGObjTg Se */ dCcD_SE_UNK5,
/* SrcGObjTg HitMark */ G_TG_MARK_PURPLE_HIT,
/* SrcGObjTg Spl */ 0,
/* SrcGObjTg Mtrl */ 0,
@@ -158,7 +158,7 @@ BOOL enemy_ice(enemyice* ei) {
if (fopAcM_GetName(ac) != PROC_PZ) {
// If the actor is not Princess Zelda, drop an item ball.
// TODO: Why the Zelda check? Is she coded to be able to die to Light Arrows?
- fopAcM_createIball(&pos, ac->mItemTableIdx, fopAcM_GetRoomNo(ac), &ac->current.angle, ac->mItemStealNum);
+ fopAcM_createIball(&pos, ac->mItemTableIdx, fopAcM_GetRoomNo(ac), &ac->current.angle, ac->mStealItemBitNo);
}
if (ei->mDeathSwitch != 0) {
dComIfGs_onSwitch(ei->mDeathSwitch, fopAcM_GetRoomNo(ac));
@@ -336,7 +336,7 @@ BOOL enemy_ice(enemyice* ei) {
}
fopAcM_seStart(ac, JA_SE_CM_ICE_BREAK, 0);
- fopAcM_createIball(&pos, ac->mItemTableIdx, fopAcM_GetRoomNo(ac), &ac->current.angle, ac->mItemStealNum);
+ fopAcM_createIball(&pos, ac->mItemTableIdx, fopAcM_GetRoomNo(ac), &ac->current.angle, ac->mStealItemBitNo);
ei->mFreezeTimer = 0;
if (ei->mDeathSwitch != 0) {
dComIfGs_onSwitch(ei->mDeathSwitch, fopAcM_GetRoomNo(ac));
diff --git a/src/d/actor/d_a_am.cpp b/src/d/actor/d_a_am.cpp
index 732cced5..24f0fed7 100644
--- a/src/d/actor/d_a_am.cpp
+++ b/src/d/actor/d_a_am.cpp
@@ -260,7 +260,7 @@ static BOOL medama_atari_check(am_class* i_this) {
switch (hitObj->GetAtType()) {
case AT_TYPE_GRAPPLING_HOOK:
if (i_this->mCurrBckIdx != AM_BCK_SLEEP && i_this->mCurrBckIdx != AM_BCK_SLEEP_LOOP) {
- if (i_this->mItemStealLeft > 0) {
+ if (i_this->mStealItemLeft > 0) {
i_this->mMaxHealth = 10;
i_this->mHealth = 10;
atInfo.mpObj = i_this->mEyeSph.GetTgHitObj();
@@ -1192,7 +1192,7 @@ static s32 daAM_Create(fopAc_ac_c* i_actor) {
return cPhs_ERROR_e;
}
- i_this->mItemStealLeft = 3;
+ i_this->mStealItemLeft = 3;
i_this->mSmokeCbs[0].setRateOff(0);
i_this->mSmokeCbs[1].setRateOff(0);
diff --git a/src/d/actor/d_a_am2.cpp b/src/d/actor/d_a_am2.cpp
index 13875624..e6831e8c 100644
--- a/src/d/actor/d_a_am2.cpp
+++ b/src/d/actor/d_a_am2.cpp
@@ -168,7 +168,7 @@ static BOOL medama_atari_check(am2_class* i_this) {
if (hitObj->GetAtType() & AT_TYPE_GRAPPLING_HOOK) {
if (i_this->mCurrBckIdx != AM2_BCK_SLEEP) {
- if (i_this->mItemStealLeft > 0) {
+ if (i_this->mStealItemLeft > 0) {
s8 origHealth = i_this->mHealth;
i_this->mHealth = 10;
atInfo.mpObj = i_this->mEyeSph.GetTgHitObj();
@@ -1338,7 +1338,7 @@ static s32 daAM2_Create(fopAc_ac_c* i_actor) {
i_this->mItemTableIdx = dComIfGp_CharTbl()->GetNameIndex("amos2", 0);
i_this->mMaxHealth = 2;
i_this->mHealth = 2;
- i_this->mItemStealLeft = 3;
+ i_this->mStealItemLeft = 3;
i_this->model = i_this->mpMorf->getModel();
fopAcM_SetMtx(i_this, i_this->mpMorf->mpModel->getBaseTRMtx());
diff --git a/src/d/actor/d_a_arrow.cpp b/src/d/actor/d_a_arrow.cpp
index 6dab7328..ea775d5b 100644
--- a/src/d/actor/d_a_arrow.cpp
+++ b/src/d/actor/d_a_arrow.cpp
@@ -33,7 +33,7 @@ const dCcD_SrcCps daArrow_c::m_at_cps_src = {
/* SrcObjTg Type */ 0,
/* SrcObjTg SPrm */ 0,
/* SrcObjCo SPrm */ 0,
- /* SrcGObjAt Se */ 0x07,
+ /* SrcGObjAt Se */ dCcD_SE_ARROW,
/* SrcGObjAt HitMark */ G_AT_MARK_NORMAL_HIT,
/* SrcGObjAt Spl */ 0,
/* SrcGObjAt Mtrl */ 0,
@@ -63,7 +63,7 @@ const dCcD_SrcSph daArrow_c::m_co_sph_src = {
/* SrcObjTg Type */ 0,
/* SrcObjTg SPrm */ 0,
/* SrcObjCo SPrm */ CO_SPRM_SET | CO_SPRM_IS_UNK8 | CO_SPRM_VS_UNK2 | CO_SPRM_NO_CRR,
- /* SrcGObjAt Se */ 0x07,
+ /* SrcGObjAt Se */ dCcD_SE_ARROW,
/* SrcGObjAt HitMark */ 0,
/* SrcGObjAt Spl */ 0,
/* SrcGObjAt Mtrl */ 0,
diff --git a/src/d/actor/d_a_bk.cpp b/src/d/actor/d_a_bk.cpp
index ab5c2a48..ecddbace 100644
--- a/src/d/actor/d_a_bk.cpp
+++ b/src/d/actor/d_a_bk.cpp
@@ -863,7 +863,7 @@ static s32 daBk_Create(fopAc_ac_c* i_actor) {
i_this->mEnemyFire.mParticleScale[i] = fire_sc[i];
}
- i_this->mItemStealLeft = 3;
+ i_this->mStealItemLeft = 3;
daBk_Execute(i_this);
}
diff --git a/src/d/actor/d_a_hookshot.cpp b/src/d/actor/d_a_hookshot.cpp
index b2ef9d27..9378a900 100644
--- a/src/d/actor/d_a_hookshot.cpp
+++ b/src/d/actor/d_a_hookshot.cpp
@@ -343,7 +343,7 @@ static dCcD_SrcCps l_at_cps_src = {
/* SrcObjTg Type */ 0,
/* SrcObjTg SPrm */ 0,
/* SrcObjCo SPrm */ 0,
- /* SrcGObjAt Se */ 0x08,
+ /* SrcGObjAt Se */ dCcD_SE_HOOKSHOT,
/* SrcGObjAt HitMark */ 0,
/* SrcGObjAt Spl */ 0,
/* SrcGObjAt Mtrl */ 0,
diff --git a/src/d/actor/d_a_obj_akabe.cpp b/src/d/actor/d_a_obj_akabe.cpp
index 9ef730bb..3d63fa4d 100644
--- a/src/d/actor/d_a_obj_akabe.cpp
+++ b/src/d/actor/d_a_obj_akabe.cpp
@@ -21,7 +21,7 @@ namespace daObjAkabe {
/* 00000078-0000009C .text solidHeapCB__Q210daObjAkabe5Act_cFP10fopAc_ac_c */
BOOL Act_c::solidHeapCB(fopAc_ac_c* i_this) {
- return ((Act_c*)i_this)->create_heap() & 0xFF; // Fakematch
+ return ((Act_c*)i_this)->create_heap() & 0xFF; // Fakematch (see comment in create_heap)
}
/* 0000009C-000001A4 .text create_heap__Q210daObjAkabe5Act_cFv */
diff --git a/src/d/actor/d_a_player_main.cpp b/src/d/actor/d_a_player_main.cpp
index 23fb0c86..a9415712 100644
--- a/src/d/actor/d_a_player_main.cpp
+++ b/src/d/actor/d_a_player_main.cpp
@@ -1749,7 +1749,7 @@ BOOL daPy_lk_c::changeDamageProc() {
}
BOOL r30;
- int r29;
+ int damage;
s32 r28 = dBgS_Attr_NORMAL_e;
if (checkNoResetFlg1(daPyFlg1_UNK4) || (
@@ -1781,12 +1781,12 @@ BOOL daPy_lk_c::changeDamageProc() {
if (r28 != dBgS_Attr_NORMAL_e) {
r30 = TRUE;
- r29 = 1;
+ damage = 1;
} else {
r30 = FALSE;
- r29 = mStts.GetDmg();
- if (mCyl.ChkTgHit() && mCyl.GetTgHitGObj() && mCyl.GetTgHitGObj()->GetAtType() == 0x20) {
- r29 = 1;
+ damage = mStts.GetDmg();
+ if (mCyl.ChkTgHit() && mCyl.GetTgHitGObj() && mCyl.GetTgHitGObj()->GetAtType() == AT_TYPE_BOMB) {
+ damage = 1;
}
}
@@ -1804,7 +1804,7 @@ BOOL daPy_lk_c::changeDamageProc() {
if (checkModeFlg(ModeFlg_04000000)) {
if (r30 || mCyl.ChkTgHit() && !checkSuccessGuard(r27)) {
- setDamagePoint(-r29);
+ setDamagePoint(-damage);
mDamageWaitTimer = daPy_HIO_dam_c0::m.field_0x2;
voiceStart(2);
@@ -1828,7 +1828,7 @@ BOOL daPy_lk_c::changeDamageProc() {
}
}
} else {
- if (mAtCps[0].GetAtType() != 0x80 && mAtCps[0].GetAtType() != 0x100) {
+ if (mAtCps[0].GetAtType() != AT_TYPE_BOKO_STICK && mAtCps[0].GetAtType() != AT_TYPE_WATER) {
cXyz sp8;
if (checkElecReturnDamage(&mAtCps[0], &sp8) ||
checkElecReturnDamage(&mAtCps[1], &sp8) ||
@@ -1864,7 +1864,7 @@ BOOL daPy_lk_c::changeDamageProc() {
setDamageEmitter();
changePlayer(this);
- setDamagePoint(-r29);
+ setDamagePoint(-damage);
fopAc_ac_c* grabActor = mActorKeepGrab.getActor();
if (daPy_dmEcallBack_c::checkElec()) {
if (procElecDamage_init(NULL)) {
@@ -1891,17 +1891,17 @@ BOOL daPy_lk_c::changeDamageProc() {
if (daPy_lk_c::checkPlayerFly() || r27 == 6 || r27 == 1 || r27 == 9) {
return procLargeDamage_init(-1, 1, 0, 0);
}
- if (checkNormalDamage(r29)) {
+ if (checkNormalDamage(damage)) {
return procDamage_init();
}
setDashDamage();
} else {
u8 hitSe = mCyl.GetTgHitObjSe();
- if (hitSe == 6) {
+ if (hitSe == dCcD_SE_UNK6) {
seStartOnlyReverb(JA_SE_OBJ_COL_N_BDY_MPLT);
- } else if (hitSe == 2 || hitSe == 5) {
+ } else if (hitSe == dCcD_SE_UNK2 || hitSe == dCcD_SE_UNK5) {
seStartOnlyReverb(JA_SE_OBJ_COL_SWS_NMTLP);
- } else if (hitSe == 4) {
+ } else if (hitSe == dCcD_SE_UNK4) {
seStartOnlyReverb(JA_SE_OBJ_COL_NWHP_NMTL);
} else {
seStartOnlyReverb(JA_SE_OBJ_COL_SWM_NSWL);
@@ -1918,7 +1918,7 @@ BOOL daPy_lk_c::changeDamageProc() {
if (mHeldItemType == 0x101) {
deleteEquipItem(FALSE);
}
- setDamagePoint(-r29);
+ setDamagePoint(-damage);
if (r28 == dBgS_Attr_ELECTRICITY_e) {
setDamageElecEmitter();
@@ -1927,7 +1927,7 @@ BOOL daPy_lk_c::changeDamageProc() {
}
}
- if (checkNormalDamage(r29)) {
+ if (checkNormalDamage(damage)) {
return procPolyDamage_init();
}
@@ -2790,7 +2790,7 @@ void daPy_lk_c::setAtParam(u32 type, int atp, dCcG_At_Spl spl, u8 se, u8 hitMark
atp *= 2;
}
if (type != AT_TYPE_SWORD) {
- field_0x291 = 0;
+ mCutCount = 0;
}
for (int i = 0; i < ARRAY_SIZE(mAtCps); i++, cps++) {
cps->SetAtType(type);
diff --git a/src/d/actor/d_a_player_main_data.inc b/src/d/actor/d_a_player_main_data.inc
index 3349f89f..adf4fd33 100644
--- a/src/d/actor/d_a_player_main_data.inc
+++ b/src/d/actor/d_a_player_main_data.inc
@@ -57,7 +57,7 @@ static dCcD_SrcCyl l_cyl_src = {
/* SrcGObjAt Spl */ 0,
/* SrcGObjAt Mtrl */ 0,
/* SrcGObjAt SPrm */ 0,
- /* SrcGObjTg Se */ 0x25,
+ /* SrcGObjTg Se */ dCcD_SE_UNK25,
/* SrcGObjTg HitMark */ G_TG_MARK_PURPLE_HIT,
/* SrcGObjTg Spl */ 0,
/* SrcGObjTg Mtrl */ 0,
@@ -142,7 +142,7 @@ static dCcD_SrcCps l_at_cps_src = {
/* SrcObjTg Type */ 0,
/* SrcObjTg SPrm */ 0,
/* SrcObjCo SPrm */ 0,
- /* SrcGObjAt Se */ 0x01,
+ /* SrcGObjAt Se */ dCcD_SE_UNK1,
/* SrcGObjAt HitMark */ G_AT_MARK_NORMAL_HIT,
/* SrcGObjAt Spl */ 0,
/* SrcGObjAt Mtrl */ 0,
diff --git a/src/d/actor/d_a_rd.cpp b/src/d/actor/d_a_rd.cpp
index 5611faed..0f0661a8 100644
--- a/src/d/actor/d_a_rd.cpp
+++ b/src/d/actor/d_a_rd.cpp
@@ -45,7 +45,7 @@ const dCcD_SrcCyl daRd_c::m_cyl_src = {
/* SrcGObjAt Spl */ 0,
/* SrcGObjAt Mtrl */ 0,
/* SrcGObjAt SPrm */ 0,
- /* SrcGObjTg Se */ 0x23,
+ /* SrcGObjTg Se */ dCcD_SE_UNK23,
/* SrcGObjTg HitMark */ 0,
/* SrcGObjTg Spl */ 0,
/* SrcGObjTg Mtrl */ 0,
@@ -1813,7 +1813,7 @@ void daRd_c::createInit() {
mD3C = 1;
mD40 = 1;
- mItemStealLeft = 5;
+ mStealItemLeft = 5;
mEnemyFire.mpMcaMorf = mpMorf;
mEnemyFire.mpActor = this;
diff --git a/src/d/d_cc_uty.cpp b/src/d/d_cc_uty.cpp
index ff04bff1..21e9bf40 100644
--- a/src/d/d_cc_uty.cpp
+++ b/src/d/d_cc_uty.cpp
@@ -4,39 +4,274 @@
//
#include "d/d_cc_uty.h"
-#include "dolphin/types.h"
+#include "d/d_com_inf_game.h"
+#include "d/actor/d_a_player.h"
+#include "d/actor/d_a_bomb.h"
+#include "d/actor/d_a_tsubo.h"
+#include "d/actor/d_a_mt.h"
+#include "d/d_procname.h"
+#include "d/d_s_play.h"
/* 800AE938-800AE9E8 .text cc_pl_cut_bit_get__Fv */
-void cc_pl_cut_bit_get() {
- /* Nonmatching */
+int cc_pl_cut_bit_get() {
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ int r3 = 0;
+ if (player->getCutType() == 1) {
+ r3 = 0x01;
+ } else if (player->getCutType() == 2) {
+ r3 = 0x02;
+ } else if (player->getCutType() == 3) {
+ r3 = 0x04;
+ } else if (player->getCutType() == 4) {
+ r3 = 0x08;
+ } else if (player->getCutType() == 5) {
+ r3 = 0x10;
+ } else if (player->getCutType() == 6) {
+ r3 = 0x20;
+ } else if (player->getCutType() == 7) {
+ r3 = 0x40;
+ } else if (player->getCutType() == 8 || player->getCutType() == 9) {
+ r3 = 0x80;
+ } else if (player->getCutType() == 10) {
+ r3 = 0x100;
+ }
+ return r3;
}
/* 800AE9E8-800AEA60 .text at_se_get__FP8cCcD_Obj */
-void at_se_get(cCcD_Obj*) {
- /* Nonmatching */
+u32 at_se_get(cCcD_Obj* obj) {
+ dCcD_GObjInf* gObjInf = dCcD_GetGObjInf(obj);
+ if (gObjInf->GetAtType() & (AT_TYPE_SKULL_HAMMER | AT_TYPE_STALFOS_MACE)) {
+ return JA_SE_LK_HAMMER_HIT;
+ } else if (gObjInf->GetAtSe() == dCcD_SE_UNK4) {
+ return JA_SE_LK_W_WEP_HIT;
+ } else if (gObjInf->GetAtSe() == dCcD_SE_UNK5) {
+ return JA_SE_LK_MS_WEP_HIT;
+ } else if (gObjInf->GetAtSe() == dCcD_SE_ARROW) {
+ return JA_SE_LK_ARROW_HIT;
+ } else if (gObjInf->GetAtSe() == dCcD_SE_HOOKSHOT) {
+ return JA_SE_LK_HS_SPIKE;
+ } else {
+ return JA_SE_LK_SW_HIT_S;
+ }
}
/* 800AEA60-800AEAD8 .text at_se_getC__FP8cCcD_Obj */
-void at_se_getC(cCcD_Obj*) {
- /* Nonmatching */
+u32 at_se_getC(cCcD_Obj* obj) {
+ dCcD_GObjInf* gObjInf = dCcD_GetGObjInf(obj);
+ if (gObjInf->GetAtType() & (AT_TYPE_SKULL_HAMMER | AT_TYPE_STALFOS_MACE)) {
+ return JA_SE_LK_HAMMER_HIT;
+ } else if (gObjInf->GetAtSe() == dCcD_SE_UNK4) {
+ return JA_SE_LK_W_WEP_CRT_HIT;
+ } else if (gObjInf->GetAtSe() == dCcD_SE_UNK5) {
+ return JA_SE_LK_MS_WEP_CRT_HIT;
+ } else if (gObjInf->GetAtSe() == dCcD_SE_ARROW) {
+ return JA_SE_LK_ARROW_HIT;
+ } else if (gObjInf->GetAtSe() == dCcD_SE_HOOKSHOT) {
+ return JA_SE_LK_HS_SPIKE;
+ } else {
+ return JA_SE_LK_SW_CRT_HIT;
+ }
}
/* 800AEAD8-800AEB50 .text def_se_set__FP10fopAc_ac_cP8cCcD_ObjUl */
-void def_se_set(fopAc_ac_c*, cCcD_Obj*, unsigned long) {
- /* Nonmatching */
+void def_se_set(fopAc_ac_c* actor, cCcD_Obj* obj, unsigned long r5) {
+ fopAcM_seStart(actor, at_se_get(obj), r5);
}
/* 800AEB50-800AEBCC .text def_se_set_p__FP10fopAc_ac_cP4cXyzP8cCcD_ObjUl */
-void def_se_set_p(fopAc_ac_c*, cXyz*, cCcD_Obj*, unsigned long) {
- /* Nonmatching */
+void def_se_set_p(fopAc_ac_c* actor, cXyz* sePos, cCcD_Obj* obj, unsigned long r6) {
+ mDoAud_seStart(at_se_get(obj), sePos, r6, dComIfGp_getReverb(fopAcM_GetRoomNo(actor)));
}
/* 800AEBCC-800AEEF8 .text at_power_check__FP8CcAtInfo */
-void at_power_check(CcAtInfo*) {
- /* Nonmatching */
+fopAc_ac_c* at_power_check(CcAtInfo* atInfo) {
+ daPy_py_c* player = daPy_getPlayerActorClass();
+ if (atInfo->mpObj == NULL) {
+ return NULL;
+ }
+ fopAc_ac_c* r0;
+ if (atInfo->mpObj->GetStts() == NULL) {
+ r0 = NULL;
+ } else {
+ r0 = atInfo->mpObj->GetStts()->GetAc();
+ }
+ atInfo->mpActor = r0;
+ atInfo->mResultingAttackType = 0xC;
+ atInfo->mDamage = 0;
+
+ if (atInfo->mpObj->GetAtType() & AT_TYPE_WATER) {
+ atInfo->mResultingAttackType = 0x4;
+ return atInfo->mpActor;
+ } else if (atInfo->mpObj->GetAtType() & AT_TYPE_WIND) {
+ atInfo->mResultingAttackType = 0x8;
+ return atInfo->mpActor;
+ } else if (atInfo->mpObj->GetAtType() & AT_TYPE_UNK20000) {
+ atInfo->mResultingAttackType = 0x5;
+ return atInfo->mpActor;
+ } else if (atInfo->mpObj->GetAtType() & (AT_TYPE_FIRE | AT_TYPE_FIRE_ARROW)) {
+ atInfo->mResultingAttackType = 0x5;
+ }
+
+ if (atInfo->mpActor) {
+ atInfo->mDamage = atInfo->mpObj->GetAtAtp();
+
+ if (fopAcM_GetName(atInfo->mpActor) == PROC_PLAYER) {
+ if (atInfo->mpObj->GetAtType() & AT_TYPE_SKULL_HAMMER) {
+ atInfo->mResultingAttackType = 0x9;
+ } else {
+ atInfo->mResultingAttackType = 0x1;
+ atInfo->mPlCutBit = cc_pl_cut_bit_get();
+
+ if (player->getCutCount() == 3) {
+ atInfo->mHitSoundId = 1;
+ } else if (player->getCutCount() == 4) {
+ atInfo->mHitSoundId = 4;
+ } else if (player->getCutType() == 0xA) {
+ atInfo->mHitSoundId = 2;
+ } else if (player->getCutType() == 0x5 || player->getCutType() == 0xF || player->getCutType() == 0x10) {
+ atInfo->mHitSoundId = 3;
+ } else {
+ atInfo->mHitSoundId = 0;
+ }
+ }
+ } else if (fopAcM_GetName(atInfo->mpActor) == PROC_BOMB) {
+ daBomb_c* bomb = (daBomb_c*)atInfo->mpActor;
+ if (bomb->chk_state(daBomb_c::STATE_8)) {
+ atInfo->mResultingAttackType = 0xD;
+ } else {
+ atInfo->mResultingAttackType = 0x2;
+ }
+ atInfo->mPlCutBit = 0x200;
+ } else if (fopAcM_GetName(atInfo->mpActor) == PROC_Bomb2) {
+ atInfo->mResultingAttackType = 0x2;
+ atInfo->mPlCutBit = 0x200;
+ } else if (fopAcM_GetName(atInfo->mpActor) == PROC_HIMO2) {
+ atInfo->mResultingAttackType = 0xE;
+ atInfo->mPlCutBit = 0x400;
+ } else if (fopAcM_GetName(atInfo->mpActor) == PROC_BOOMERANG) {
+ atInfo->mResultingAttackType = 0xA;
+ atInfo->mPlCutBit = 0x800;
+ } else if (fopAcM_GetName(atInfo->mpActor) == PROC_ARROW) {
+ atInfo->mPlCutBit = 0x1000;
+ } else if (fopAcM_GetName(atInfo->mpActor) == PROC_BDK) {
+ atInfo->mResultingAttackType = 0xB;
+ } else if (fopAcM_GetName(atInfo->mpActor) == PROC_TSUBO) {
+ daTsubo::Act_c* tsubo = (daTsubo::Act_c*)atInfo->mpActor;
+ if (tsubo->prm_get_type() == daTsubo::Act_c::TYPE_WATER_JUG) {
+ atInfo->mResultingAttackType = 0x4;
+ } else {
+ atInfo->mResultingAttackType = 0x3;
+ }
+ } else if (fopAcM_GetName(atInfo->mpActor) == PROC_MO2) {
+ atInfo->mResultingAttackType = 0x7;
+ if (atInfo->mDamage > 2) {
+ atInfo->mDamage = 2;
+ }
+ } else if (fopAcM_GetName(atInfo->mpActor) == PROC_MT) {
+ atInfo->mResultingAttackType = 0x6;
+ atInfo->mDamage = 4;
+ }
+ }
+
+ atInfo->mbDead = 0;
+ if (fopAcM_GetName(atInfo->mpActor) == PROC_PLAYER) {
+ dCcD_GObjInf* gObjInf = dCcD_GetGObjInf(atInfo->mpObj);
+ if (gObjInf->GetAtSpl() == 1) {
+ atInfo->mbDead = 1;
+ }
+ } else if (atInfo->mDamage >= 2) {
+ atInfo->mbDead = 1;
+ }
+
+ return atInfo->mpActor;
}
/* 800AEEF8-800AF368 .text cc_at_check__FP10fopAc_ac_cP8CcAtInfo */
-void cc_at_check(fopAc_ac_c*, CcAtInfo*) {
- /* Nonmatching */
+fopAc_ac_c* cc_at_check(fopAc_ac_c* r30, CcAtInfo* atInfo) {
+ atInfo->mHitSoundId = 0;
+ atInfo->mpActor = at_power_check(atInfo);
+
+ s8 r28;
+
+ if (atInfo->mpActor) {
+ mDoAud_onEnemyDamage();
+
+ f32 f2, f0;
+ if (atInfo->mpActor->speed.abs() > 50.0f) {
+ f2 = atInfo->mpActor->speed.x;
+ f0 = atInfo->mpActor->speed.z;
+ } else {
+ f2 = r30->current.pos.x - atInfo->mpActor->current.pos.x;
+ f0 = r30->current.pos.z - atInfo->mpActor->current.pos.z;
+ }
+ atInfo->m0E = cM_atan2s(-f2, -f0);
+
+ if (atInfo->mpObj->GetAtType() & AT_TYPE_HOOKSHOT) {
+ if (fopAcM_checkStatus(r30, fopAcStts_UNK80000_e | fopAcStts_HOOK_CARRY_e | fopAcStts_UNK200000_e)) {
+ atInfo->mDamage = 0;
+ }
+ }
+
+ if (fopAcM_GetName(atInfo->mpActor) == PROC_HIMO2 && r30->mStealItemLeft != 0) {
+ r30->mStealItemLeft--;
+ fopAcM_createStealItem(&r30->current.pos, r30->mItemTableIdx, r30->current.roomNo, NULL, r30->mStealItemBitNo);
+ r30->mStealItemBitNo++;
+ atInfo->mDamage = 0;
+ }
+
+ if ((s8)atInfo->mDamage > 0) {
+ r30->mHealth -= atInfo->mDamage;
+ }
+
+ if (r30->mHealth <= 0) {
+ atInfo->mbDead = 1;
+
+ fopAcM_seStart(r30, JA_SE_LK_LAST_HIT, 0);
+
+ r28 = 6 + g_regHIO.mChild->mShortRegs[7];
+
+ if (atInfo->pParticlePos) {
+ dComIfGp_particle_set(0x10, atInfo->pParticlePos);
+ cXyz scale;
+ scale.x = scale.y = scale.z = 2.0f;
+ csXyz angle;
+ angle.x = angle.z = 0;
+ angle.y = fopAcM_searchPlayerAngleY(r30);
+ dComIfGp_particle_set(dPa_name::ID_COMMON_NORMAL_HIT, atInfo->pParticlePos, &angle, &scale);
+ }
+ } else {
+ u32 r29 = fopAcM_GetName(r30) == PROC_ST ? 0x33 : 0x20;
+ if (atInfo->mbDead) {
+ fopAcM_seStart(r30, at_se_getC(atInfo->mpObj), r29);
+ if (atInfo->mResultingAttackType == 9) {
+ r28 = 6;
+ } else {
+ r28 = 4 + g_regHIO.mChild->mShortRegs[6];
+ }
+ } else {
+ if (fopAcM_GetName(r30) == PROC_MT) {
+ mt_class* mt = (mt_class*)r30;
+ if (mt->m454 == 2) {
+ fopAcM_seStart(r30, JA_SE_OBJ_MG_BALL_DMG, 0);
+ } else {
+ fopAcM_seStart(r30, at_se_get(atInfo->mpObj), r29);
+ }
+ } else {
+ fopAcM_seStart(r30, at_se_get(atInfo->mpObj), r29);
+ }
+ r28 = 1 + g_regHIO.mChild->mShortRegs[5];
+ }
+ }
+
+ if (atInfo->mResultingAttackType == 1) {
+ dScnPly_ply_c::setPauseTimer(r28);
+ }
+
+ if (atInfo->mDamage != 0) {
+ mDoAud_bgmHitSound(atInfo->mHitSoundId);
+ }
+ }
+
+ return atInfo->mpActor;
}
diff --git a/src/d/d_kankyo_rain.cpp b/src/d/d_kankyo_rain.cpp
index dac2f37b..02a23171 100644
--- a/src/d/d_kankyo_rain.cpp
+++ b/src/d/d_kankyo_rain.cpp
@@ -1253,7 +1253,7 @@ BOOL light_at_hit_check(cXyz* pPos) {
BOOL ret = FALSE;
fopAc_ac_c * pActor;
u32 res = dComIfG_Ccsp()->ChkMass(pPos, &pActor, &hitInfo);
- if (((res & 1) != 0) && (hitInfo.GetAtHitObj()->GetAtType() & AT_TYPE_LIGHT) != 0)
+ if (((res & 1) != 0) && (hitInfo.GetAtHitObj()->GetAtType() & AT_TYPE_LIGHT))
ret = TRUE;
return ret;
}
diff --git a/src/f_op/f_op_actor_mng.cpp b/src/f_op/f_op_actor_mng.cpp
index c03c2328..4b949b92 100644
--- a/src/f_op/f_op_actor_mng.cpp
+++ b/src/f_op/f_op_actor_mng.cpp
@@ -865,7 +865,7 @@ s32 fopAcM_createItemFromTable(cXyz* p_pos, int i_itemNo, int i_itemBitNo, int r
if (tableIdx == RECOVER_FAIRY) {
// Bug: This condition never gets triggered. They meant to check if (itemNo == RECOVER_FAIRY) so
- // that the 3x fairies drop table (table 0x14) spawns them in a triangle. But nstead they check if
+ // that the 3x fairies drop table (table 0x14) spawns them in a triangle. But instead they check if
// the table index is equal to 0x16/RECOVER_FAIRY, which will never be true.
pos += fairy_offset_tbl[i];
angle.y = cM_rndF((f32)0x7FFE);