mirror of
https://github.com/zeldaret/tww.git
synced 2026-05-24 07:10:48 -04:00
d_a_rd 99%
This commit is contained in:
+114
-46
@@ -805,13 +805,11 @@ void daRd_c::modeWait() {
|
||||
setAnm(0x1, false);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (!dLib_checkActorInCircle(m300, this, mAreaRadius, 1000.0f) ||
|
||||
!dLib_checkActorInCircle(m300, player, mAreaRadius, 100.0f)
|
||||
) {
|
||||
modeProcInit(MODE_RETURN);
|
||||
return;
|
||||
}
|
||||
} else if (!dLib_checkActorInCircle(m300, this, mAreaRadius, 1000.0f) ||
|
||||
!dLib_checkActorInCircle(m300, player, mAreaRadius, 100.0f)
|
||||
) {
|
||||
modeProcInit(MODE_RETURN);
|
||||
return;
|
||||
}
|
||||
if (!isLinkControl() && checkPlayerInAttack() && isAnm(1)) {
|
||||
modeProcInit(MODE_ATTACK);
|
||||
@@ -1161,7 +1159,43 @@ void daRd_c::modeReturnInit() {
|
||||
|
||||
/* 00002F34-00003208 .text modeReturn__6daRd_cFv */
|
||||
void daRd_c::modeReturn() {
|
||||
/* Nonmatching */
|
||||
if (checkTgHit()) {
|
||||
return;
|
||||
}
|
||||
|
||||
setAnm(6, false);
|
||||
|
||||
if (dLib_checkActorInCircle(m300, this, 100.0f, 1000.0f)) {
|
||||
speedF = 0.0f;
|
||||
cLib_addCalcAngleS2(&shape_angle.y, m30C, 0xA, 0x200);
|
||||
if (cLib_distanceAngleS(shape_angle.y, m30C) <= 0x200) {
|
||||
shape_angle.y = m30C;
|
||||
modeProcInit(MODE_WAIT);
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
cLib_addCalc2(&speedF, l_HIO.m6C, 0.1f, 0.1f + g_regHIO.mChild[12].mFloatRegs[0]);
|
||||
}
|
||||
|
||||
if (dComIfGp_evmng_startCheck("DEFAULT_RD_ATTACK")) {
|
||||
return;
|
||||
}
|
||||
|
||||
daPy_py_c* player = (daPy_py_c*)dComIfGp_getLinkPlayer();
|
||||
BOOL isOto = fopAcM_otoCheck(this, mAreaRadius);
|
||||
if (!isLinkControl()) {
|
||||
if (dLib_checkActorInCircle(m300, this, mAreaRadius, 1000.0f)) {
|
||||
if (dLib_checkActorInCircle(m300, player, mAreaRadius, 100.0f)) {
|
||||
if ((dLib_checkActorInCircle(m300, player, mAreaRadius, 100.0f) && player->speedF > 10.0f + g_regHIO.mChild[12].mFloatRegs[4]) ||
|
||||
isOto ||
|
||||
dLib_checkActorInFan(current.pos, player, shape_angle.y, l_HIO.m40, l_HIO.m34, 100.0f)
|
||||
) {
|
||||
modeProcInit(MODE_MOVE);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 00003208-0000320C .text modeSilentPrayInit__6daRd_cFv */
|
||||
@@ -1170,7 +1204,40 @@ void daRd_c::modeSilentPrayInit() {
|
||||
|
||||
/* 0000320C-00003400 .text modeSilentPray__6daRd_cFv */
|
||||
void daRd_c::modeSilentPray() {
|
||||
/* Nonmatching */
|
||||
if (checkTgHit()) {
|
||||
return;
|
||||
}
|
||||
|
||||
setAnm(6, false);
|
||||
|
||||
daPy_py_c* player = (daPy_py_c*)dComIfGp_getLinkPlayer();
|
||||
fopAc_ac_c* dyingReDead;
|
||||
if (fopAcM_SearchByID(m6D0, &dyingReDead)) {
|
||||
mCC4 = dyingReDead->current.pos;
|
||||
if (dLib_checkActorInCircle(mCC4, this, 200.0f, 1000.0f)) {
|
||||
setAnm(1, false);
|
||||
speedF = 0.0f;
|
||||
} else {
|
||||
cLib_addCalc2(&speedF, l_HIO.m6C, 0.1f, 0.1f + g_regHIO.mChild[12].mFloatRegs[0]);
|
||||
}
|
||||
} else if (!isLinkControl()) {
|
||||
if (dLib_checkActorInCircle(m300, player, mAreaRadius, 100.0f)) {
|
||||
modeProcInit(MODE_MOVE);
|
||||
} else {
|
||||
modeProcInit(MODE_WAIT);
|
||||
}
|
||||
} else {
|
||||
modeProcInit(MODE_RETURN);
|
||||
}
|
||||
|
||||
if (!isLinkControl()) {
|
||||
if (checkPlayerInCry()) {
|
||||
modeProcInit(MODE_CRY);
|
||||
}
|
||||
if (checkPlayerInAttack()) {
|
||||
modeProcInit(MODE_ATTACK);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 00003400-00003428 .text modeSwWaitInit__6daRd_cFv */
|
||||
@@ -1357,42 +1424,42 @@ void daRd_c::setBtkAnm(s8 idx) {
|
||||
m6DC = m6DB;
|
||||
}
|
||||
|
||||
const int a_anm_bcks_tbl[] = {
|
||||
RD_BCK_TACHIP,
|
||||
RD_BCK_SUWARIP,
|
||||
RD_BCK_WALK2ATACK,
|
||||
RD_BCK_ATACK,
|
||||
RD_BCK_ATACK2WALK,
|
||||
RD_BCK_WALK,
|
||||
RD_BCK_DAMAGE,
|
||||
RD_BCK_DEAD,
|
||||
RD_BCK_TATSU,
|
||||
RD_BCK_SUWARU,
|
||||
RD_BCK_KANOKEP,
|
||||
RD_BCK_BEAM_HIT,
|
||||
RD_BCK_BEAM,
|
||||
RD_BCK_BEAM_END,
|
||||
};
|
||||
const dLib_anm_prm_c a_anm_prm_tbl[] = {
|
||||
{0x0, -1, 0, 8.0f, 1.0f, 2},
|
||||
{0x0, -1, 0, 8.0f, 1.0f, 2},
|
||||
{0x1, -1, 0, 8.0f, 1.0f, 2},
|
||||
{0x2, 4, 0, 8.0f, 1.0f, 0},
|
||||
{0x3, -1, 0, 8.0f, 1.0f, 2},
|
||||
{0x4, 6, 0, 8.0f, 1.0f, 0},
|
||||
{0x5, -1, 0, 8.0f, 1.0f, 2},
|
||||
{0x6, 1, 0, 2.0f, 1.0f, 0},
|
||||
{0x7, -1, 0, 2.0f, 1.0f, 0},
|
||||
{0x8, 1, 0, 8.0f, 0.5f, 0},
|
||||
{0x9, 2, 0, 8.0f, 0.5f, 0},
|
||||
{0xA, -1, 0, 8.0f, 1.0f, 2},
|
||||
{0xB, -1, 0, 2.0f, 1.0f, 0},
|
||||
{0xC, -1, 0, 2.0f, 1.0f, 2},
|
||||
{0xD, -1, 0, 2.0f, 1.0f, 0},
|
||||
};
|
||||
|
||||
/* 00003B3C-00003C48 .text setAnm__6daRd_cFScb */
|
||||
void daRd_c::setAnm(s8 param_1, bool param_2) {
|
||||
static const int a_anm_bcks_tbl[] = {
|
||||
RD_BCK_TACHIP,
|
||||
RD_BCK_SUWARIP,
|
||||
RD_BCK_WALK2ATACK,
|
||||
RD_BCK_ATACK,
|
||||
RD_BCK_ATACK2WALK,
|
||||
RD_BCK_WALK,
|
||||
RD_BCK_DAMAGE,
|
||||
RD_BCK_DEAD,
|
||||
RD_BCK_TATSU,
|
||||
RD_BCK_SUWARU,
|
||||
RD_BCK_KANOKEP,
|
||||
RD_BCK_BEAM_HIT,
|
||||
RD_BCK_BEAM,
|
||||
RD_BCK_BEAM_END,
|
||||
};
|
||||
static const dLib_anm_prm_c a_anm_prm_tbl[] = {
|
||||
{0x0, -1, 0, 8.0f, 1.0f, 2},
|
||||
{0x0, -1, 0, 8.0f, 1.0f, 2},
|
||||
{0x1, -1, 0, 8.0f, 1.0f, 2},
|
||||
{0x2, 4, 0, 8.0f, 1.0f, 0},
|
||||
{0x3, -1, 0, 8.0f, 1.0f, 2},
|
||||
{0x4, 6, 0, 8.0f, 1.0f, 0},
|
||||
{0x5, -1, 0, 8.0f, 1.0f, 2},
|
||||
{0x6, 1, 0, 2.0f, 1.0f, 0},
|
||||
{0x7, -1, 0, 2.0f, 1.0f, 0},
|
||||
{0x8, 1, 0, 8.0f, 0.5f, 0},
|
||||
{0x9, 2, 0, 8.0f, 0.5f, 0},
|
||||
{0xA, -1, 0, 8.0f, 1.0f, 2},
|
||||
{0xB, -1, 0, 2.0f, 1.0f, 0},
|
||||
{0xC, -1, 0, 2.0f, 1.0f, 2},
|
||||
{0xD, -1, 0, 2.0f, 1.0f, 0},
|
||||
};
|
||||
|
||||
if (param_1 != 0xF) {
|
||||
m6D9 = param_1;
|
||||
}
|
||||
@@ -1433,9 +1500,9 @@ bool daRd_c::_execute() {
|
||||
if (mMode != MODE_SILENT_PRAY && mMode != MODE_DEATH && mMode != MODE_DAMAGE &&
|
||||
mMode != MODE_ATTACK && mMode != MODE_CRY && mMode != MODE_CRY_WAIT)
|
||||
{
|
||||
daRd_c* redead = (daRd_c*)fopAcIt_Judge((fopAcIt_JudgeFunc)&searchNeadDeadRd_CB, this);
|
||||
if (redead != NULL) {
|
||||
m6D0 = fopAcM_GetID(redead);
|
||||
daRd_c* dyingReDead = (daRd_c*)fopAcIt_Judge((fopAcIt_JudgeFunc)&searchNeadDeadRd_CB, this);
|
||||
if (dyingReDead != NULL) {
|
||||
m6D0 = fopAcM_GetID(dyingReDead);
|
||||
modeProcInit(MODE_SILENT_PRAY);
|
||||
}
|
||||
}
|
||||
@@ -1525,6 +1592,7 @@ void daRd_c::debugDraw() {
|
||||
temp.y += 10.0f;
|
||||
cXyz pos = current.pos;
|
||||
pos.y += 10.0f;
|
||||
(GXColor){0x00, 0xFF, 0x00, 0x80}; // Unused color, needed for the .rodata section to match.
|
||||
dLib_debugDrawFan(pos, mD18, l_HIO.m42, l_HIO.m38, (GXColor){0xFF, 0xFF, 0x00, 0x80});
|
||||
dLib_debugDrawFan(pos, shape_angle.y, l_HIO.m44, l_HIO.m3C, (GXColor){0xFF, 0x00, 0x00, 0x80});
|
||||
dLib_debugDrawFan(pos, shape_angle.y, l_HIO.m40, l_HIO.m34, (GXColor){0xFF, 0x00, 0xFF, 0x80});
|
||||
|
||||
Reference in New Issue
Block a user