mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-08-03 08:23:08 -04:00
d_a_alink cleanup / debug work (#3045)
* start d_a_alink debug cleanup * d_a_alink_damage debug * d_a_alink_guard debug * d_a_alink_bow debug * d_a_alink_boom debug * d_a_alink_copyrod debug * d_a_alink_hvyboots debug * d_a_alink_grab debug * d_a_alink_sumou debug * d_a_alink_horse debug * d_a_alink_canoe debug * d_a_alink_crawl / d_a_alink_hang debug * d_a_alink_swim debug * d_a_alink_hook / d_a_alink_iceleaf debug * d_a_alink_bottle debug * d_a_alink_whistle / d_a_alink_kandelaar / d_a_alink_ironball debug * d_a_alink_demo debug * d_a_alink_effect debug * d_a_alink_wolf debug * d_a_alink debug / cleanup * cleanup button status enums
This commit is contained in:
+4132
-3411
File diff suppressed because it is too large
Load Diff
+155
-135
@@ -12,124 +12,132 @@
|
||||
static void daAlinkHIO_setAnmGenMessage(daAlinkHIO_anm_c* i_anmP, JORMContext* ctx, char* param_3,
|
||||
f32 param_4, int param_5) {
|
||||
size_t sVar1;
|
||||
char acStack_94[100];
|
||||
char labelbuf[100];
|
||||
|
||||
sVar1 = strlen(param_3);
|
||||
sprintf(acStack_94, param_3);
|
||||
sprintf(labelbuf, param_3);
|
||||
|
||||
// A Speed
|
||||
sprintf(acStack_94 + sVar1, "A速度");
|
||||
ctx->genSlider(acStack_94, &i_anmP->mSpeed, 0.0f, 10.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
|
||||
sprintf(labelbuf + sVar1, "A速度");
|
||||
ctx->genSlider(labelbuf, &i_anmP->mSpeed, 0.0f, 10.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
|
||||
|
||||
// Starting F
|
||||
sprintf(acStack_94 + sVar1, "開始F");
|
||||
ctx->genSlider(acStack_94, &i_anmP->mStartFrame, 0.0f, param_4, 0, NULL, 0xffff, 0xffff, 0x200,
|
||||
sprintf(labelbuf + sVar1, "開始F");
|
||||
ctx->genSlider(labelbuf, &i_anmP->mStartFrame, 0.0f, param_4, 0, NULL, 0xffff, 0xffff, 0x200,
|
||||
0x18);
|
||||
|
||||
// Ending F
|
||||
sprintf(acStack_94 + sVar1, "終了F");
|
||||
ctx->genSlider(acStack_94, &i_anmP->mEndFrame, 0, param_4, 0, NULL, 0xffff, 0xffff, 0x200,
|
||||
sprintf(labelbuf + sVar1, "終了F");
|
||||
ctx->genSlider(labelbuf, &i_anmP->mEndFrame, 0, param_4, 0, NULL, 0xffff, 0xffff, 0x200,
|
||||
0x18);
|
||||
|
||||
if (param_5 != 0) {
|
||||
sprintf(acStack_94 + sVar1, "CF");
|
||||
ctx->genSlider(acStack_94, &i_anmP->mCancelFrame, -1.0f, param_4 + 1.0f, 0, NULL, 0xffff,
|
||||
sprintf(labelbuf + sVar1, "CF");
|
||||
ctx->genSlider(labelbuf, &i_anmP->mCancelFrame, -1.0f, param_4 + 1.0f, 0, NULL, 0xffff,
|
||||
0xffff, 0x200, 0x18);
|
||||
}
|
||||
|
||||
// Interpolation
|
||||
sprintf(acStack_94 + sVar1, "補間");
|
||||
ctx->genSlider(acStack_94, &i_anmP->mInterpolation, 0.0f, 20.0f, 0, NULL, 0xffff, 0xffff, 0x200,
|
||||
sprintf(labelbuf + sVar1, "補間");
|
||||
ctx->genSlider(labelbuf, &i_anmP->mInterpolation, 0.0f, 20.0f, 0, NULL, 0xffff, 0xffff, 0x200,
|
||||
0x18);
|
||||
}
|
||||
|
||||
static void daAlinkHIO_setReverseAnmGenMessage(daAlinkHIO_anm_c* i_anmP, JORMContext* ctx,
|
||||
char* param_3, f32 param_4, int param_5) {
|
||||
size_t sVar1;
|
||||
char acStack_94[100];
|
||||
char labelbuf[100];
|
||||
|
||||
sVar1 = strlen(param_3);
|
||||
sprintf(acStack_94, param_3);
|
||||
sprintf(labelbuf, param_3);
|
||||
|
||||
// A Speed
|
||||
sprintf(acStack_94 + sVar1, "A速度");
|
||||
ctx->genSlider(acStack_94, &i_anmP->mSpeed, -10.0f, 0.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
|
||||
sprintf(labelbuf + sVar1, "A速度");
|
||||
ctx->genSlider(labelbuf, &i_anmP->mSpeed, -10.0f, 0.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
|
||||
|
||||
// Starting F
|
||||
sprintf(acStack_94 + sVar1, "開始F");
|
||||
ctx->genSlider(acStack_94, &i_anmP->mEndFrame, 0, param_4, 0, NULL, 0xffff, 0xffff, 0x200,
|
||||
sprintf(labelbuf + sVar1, "開始F");
|
||||
ctx->genSlider(labelbuf, &i_anmP->mEndFrame, 0, param_4, 0, NULL, 0xffff, 0xffff, 0x200,
|
||||
0x18);
|
||||
|
||||
// Ending F
|
||||
sprintf(acStack_94 + sVar1, "終了F");
|
||||
ctx->genSlider(acStack_94, &i_anmP->mStartFrame, 0.0f, param_4, 0, NULL, 0xffff, 0xffff, 0x200,
|
||||
sprintf(labelbuf + sVar1, "終了F");
|
||||
ctx->genSlider(labelbuf, &i_anmP->mStartFrame, 0.0f, param_4, 0, NULL, 0xffff, 0xffff, 0x200,
|
||||
0x18);
|
||||
|
||||
if (param_5 != 0) {
|
||||
sprintf(acStack_94 + sVar1, "CF");
|
||||
ctx->genSlider(acStack_94, &i_anmP->mCancelFrame, -1.0f, param_4 + 1.0f, 0, NULL, 0xffff,
|
||||
sprintf(labelbuf + sVar1, "CF");
|
||||
ctx->genSlider(labelbuf, &i_anmP->mCancelFrame, -1.0f, param_4 + 1.0f, 0, NULL, 0xffff,
|
||||
0xffff, 0x200, 0x18);
|
||||
}
|
||||
|
||||
// Interpolation
|
||||
sprintf(acStack_94 + sVar1, "補間");
|
||||
ctx->genSlider(acStack_94, &i_anmP->mInterpolation, 0.0f, 20.0f, 0, NULL, 0xffff, 0xffff, 0x200,
|
||||
sprintf(labelbuf + sVar1, "補間");
|
||||
ctx->genSlider(labelbuf, &i_anmP->mInterpolation, 0.0f, 20.0f, 0, NULL, 0xffff, 0xffff, 0x200,
|
||||
0x18);
|
||||
}
|
||||
|
||||
// DEBUG NONMATCHING - regalloc + extra mr instruction
|
||||
void daAlinkHIO_data_c::setStructData(char* param_1) {
|
||||
u8* pfVar2;
|
||||
u8* pfVar4;
|
||||
void daAlinkHIO_data_c::setStructData(char* o_data) {
|
||||
int i, j;
|
||||
s16* ps16data;
|
||||
f32* pf32data;
|
||||
daAlinkHIO_anm_c* panmdata;
|
||||
u8* pu8data;
|
||||
|
||||
sprintf(param_1 + strlen(param_1), m_name_string);
|
||||
pfVar2 = (u8*)mp_data;
|
||||
// open struct data string
|
||||
sprintf(o_data + strlen(o_data), m_name_string);
|
||||
panmdata = (daAlinkHIO_anm_c*)mp_data;
|
||||
|
||||
for (int i = 0; i < m_anm_num; i++) {
|
||||
sprintf(param_1 + strlen(param_1), "\t{\n");
|
||||
pfVar4 = pfVar2;
|
||||
// create daAlinkHIO_anm_c data string
|
||||
for (i = 0; i < m_anm_num; i++) {
|
||||
sprintf(o_data + strlen(o_data), "\t{\n");
|
||||
|
||||
for (int i = 0; i < 2; i++) {
|
||||
sprintf(param_1 + strlen(param_1), "\t\t%d,\n", *(s16*)pfVar4);
|
||||
pfVar4 += 2;
|
||||
ps16data = (s16*)panmdata;
|
||||
for (j = 0; j < 2; j++) {
|
||||
sprintf(o_data + strlen(o_data), "\t\t%d,\n", *ps16data);
|
||||
ps16data++;
|
||||
}
|
||||
|
||||
pfVar4 = pfVar2;
|
||||
|
||||
for (int i = 0; i < 4; i++) {
|
||||
sprintf(param_1 + strlen(param_1), "\t\t%ff,\n", *(f32*)pfVar4);
|
||||
pfVar4 += 4;
|
||||
pf32data = (f32*)ps16data;
|
||||
for (j = 0; j < 4; j++) {
|
||||
sprintf(o_data + strlen(o_data), "\t\t%ff,\n", *pf32data);
|
||||
pf32data++;
|
||||
}
|
||||
|
||||
pfVar2 += 0x14;
|
||||
sprintf(param_1 + strlen(param_1), "\t},\n");
|
||||
panmdata++;
|
||||
sprintf(o_data + strlen(o_data), "\t},\n");
|
||||
}
|
||||
|
||||
pfVar4 = pfVar2;
|
||||
|
||||
for (int i = 0; i < m_u8_num; i++) {
|
||||
sprintf(param_1 + strlen(param_1), "\t%d,\n", *(u8*)pfVar2);
|
||||
pfVar2++;
|
||||
// create u8 data string
|
||||
pu8data = (u8*)panmdata;
|
||||
for (i = 0; i < m_u8_num; i++) {
|
||||
sprintf(o_data + strlen(o_data), "\t%d,\n", *pu8data);
|
||||
pu8data++;
|
||||
}
|
||||
|
||||
for (int i = 0; i < m_s16_num; i++) {
|
||||
sprintf(param_1 + strlen(param_1), "\t%d,\n", *(s16*)pfVar2);
|
||||
pfVar2 += 2;
|
||||
// create s16 data string
|
||||
ps16data = (s16*)pu8data;
|
||||
for (i = 0; i < m_s16_num; i++) {
|
||||
sprintf(o_data + strlen(o_data), "\t%d,\n", *ps16data);
|
||||
ps16data++;
|
||||
}
|
||||
|
||||
for (int i = 0; i < m_f32_num; i++) {
|
||||
sprintf(param_1 + strlen(param_1), "\t%ff,\n", *(f32*)pfVar2);
|
||||
pfVar2 += 4;
|
||||
// create f32 data string
|
||||
pf32data = (f32*)ps16data;
|
||||
for (i = 0; i < m_f32_num; i++) {
|
||||
sprintf(o_data + strlen(o_data), "\t%ff,\n", *pf32data);
|
||||
pf32data++;
|
||||
}
|
||||
|
||||
sprintf(param_1 + strlen(param_1), "};\n\n");
|
||||
// close struct data string
|
||||
sprintf(o_data + strlen(o_data), "};\n\n");
|
||||
}
|
||||
|
||||
daAlinkHIO_data_c* l_HIO_before;
|
||||
daAlinkHIO_data_c* l_HIO_top;
|
||||
|
||||
void daAlinkHIO_data_c::checkDataSize() {
|
||||
u32 dataSize = (m_u8_num + m_anm_num * 0x14) + (m_s16_num * 2) + (m_f32_num * 4);
|
||||
u32 dataSize = (m_u8_num + m_anm_num * sizeof(daAlinkHIO_anm_c)) + (m_s16_num * sizeof(s16)) + (m_f32_num * sizeof(f32));
|
||||
JUT_ASSERT(188, dataSize == m_len);
|
||||
|
||||
if (l_HIO_before != NULL) {
|
||||
@@ -146,49 +154,65 @@ void daAlinkHIO_data_c::baseCopy() {
|
||||
cLib_memCpy(mp_data, mp_src_data, m_len);
|
||||
}
|
||||
|
||||
// DEBUG NONMATCHING
|
||||
void daAlinkHIO_data_c::update() {
|
||||
int i, j;
|
||||
s16* ps16data;
|
||||
u8* pu8data;
|
||||
f32* pf32data;
|
||||
daAlinkHIO_anm_c* panmdata;
|
||||
|
||||
baseCopy();
|
||||
|
||||
JORMContext* ctx = attachJORMContext(8);
|
||||
ctx->startUpdateNode(this);
|
||||
u8* local_20 = (u8*)mp_data;
|
||||
|
||||
for (int i = 0; i < m_anm_num; i++) {
|
||||
ctx->updateSlider(2, (s16*)local_20, 0, 0, 0);
|
||||
panmdata = (daAlinkHIO_anm_c*)mp_data;
|
||||
for (i = 0; i < m_anm_num; i++) {
|
||||
ps16data = (s16*)panmdata;
|
||||
ctx->updateSlider(2, ps16data, 0, 0, 0);
|
||||
ps16data++;
|
||||
ps16data++;
|
||||
|
||||
for (int j = 0; j < 4; local_20 += 4, j++) {
|
||||
ctx->updateSlider(2, (f32*)local_20, 0.0f, 0.0f, 0);
|
||||
pf32data = (f32*)ps16data;
|
||||
for (j = 0; j < 4; j++) {
|
||||
ctx->updateSlider(2, pf32data, 0.0f, 0.0f, 0);
|
||||
pf32data++;
|
||||
}
|
||||
|
||||
panmdata++;
|
||||
}
|
||||
|
||||
for (int i = 0; i < f14; i++) {
|
||||
ctx->updateCheckBox(2, local_20, 1, 0);
|
||||
pu8data = (u8*)panmdata;
|
||||
for (i = 0; i < f14; i++) {
|
||||
ctx->updateCheckBox(2, pu8data, 1, 0);
|
||||
pu8data++;
|
||||
}
|
||||
|
||||
for (int i = 0; i < f18; i++) {
|
||||
ctx->updateComboBox(2, local_20, 0);
|
||||
// local_20++;
|
||||
for (i = 0; i < f18; i++) {
|
||||
ctx->updateComboBox(2, pu8data, 0);
|
||||
pu8data++;
|
||||
}
|
||||
|
||||
for (int i = 0; i < (m_u8_num - f14 + f18); i++) {
|
||||
// local_20++;
|
||||
int spC = m_u8_num - (f14 + f18);
|
||||
for (i = 0; i < spC; i++) {
|
||||
pu8data++;
|
||||
}
|
||||
|
||||
int iVar1 = f1c;
|
||||
int iVar3 = m_s16_num;
|
||||
|
||||
for (int i = 0; i < iVar3 - iVar1; i++) {
|
||||
ctx->updateSlider(2, (s16*)local_20, 0, 0, 0);
|
||||
// local_20 += 2;
|
||||
ps16data = (s16*)pu8data;
|
||||
int sp8 = m_s16_num - f1c;
|
||||
for (i = 0; i < sp8; i++) {
|
||||
ctx->updateSlider(2, ps16data, 0, 0, 0);
|
||||
ps16data++;
|
||||
}
|
||||
|
||||
for (int i = 0; i < f1c; i++) {
|
||||
// local_20 += 2;
|
||||
for (i = 0; i < f1c; i++) {
|
||||
ps16data++;
|
||||
}
|
||||
|
||||
for (int i = 0; i < m_f32_num; i++) {
|
||||
ctx->updateSlider(2, (f32*)local_20, 0.0f, 0.0f, 0);
|
||||
// local_20 += 4;
|
||||
pf32data = (f32*)ps16data;
|
||||
for (i = 0; i < m_f32_num; i++) {
|
||||
ctx->updateSlider(2, pf32data, 0.0f, 0.0f, 0);
|
||||
pf32data++;
|
||||
}
|
||||
|
||||
ctx->endUpdateNode();
|
||||
@@ -5812,9 +5836,9 @@ void daAlinkHIO_c::jumpStateUpdate(const cXyz* param_0, const cXyz* param_1, f32
|
||||
JORMContext* ctx = attachJORMContext(8);
|
||||
ctx->startUpdateNode(this);
|
||||
sprintf(buf, "水平距離 %-8.3f", JMAFastSqrt(xDiff * xDiff + zDiff * zDiff));
|
||||
ctx->updateLabel(2, 0x4000006, buf);
|
||||
ctx->updateLabel(2, PROPERTY_JUMP_HDIST_DISP_e, buf);
|
||||
sprintf(buf, "最頂点 %-8.3f", param_2);
|
||||
ctx->updateLabel(2, 0x4000007, buf);
|
||||
ctx->updateLabel(2, PROPERTY_JUMP_VDIST_DISP_e, buf);
|
||||
ctx->endUpdateNode();
|
||||
releaseJORMContext(ctx);
|
||||
}
|
||||
@@ -5823,15 +5847,15 @@ void daAlinkHIO_c::genMessage(JORMContext* ctx) {
|
||||
// ------ Info Display ------
|
||||
ctx->genLabel("------情報表示------", 0x4000001, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
|
||||
// Horizontal Distance
|
||||
ctx->genLabel("水平距離", 0x4000006, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
|
||||
ctx->genLabel("水平距離", PROPERTY_JUMP_HDIST_DISP_e, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
|
||||
// Vertical Distance
|
||||
ctx->genLabel("最頂点", 0x4000007, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
|
||||
// Reset
|
||||
ctx->genButton("位置", 0x4000002, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
|
||||
ctx->genLabel("最頂点", PROPERTY_JUMP_VDIST_DISP_e, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
|
||||
// Position
|
||||
ctx->genButton("位置", PROPERTY_POS_DISP_e, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
|
||||
// Save to File
|
||||
ctx->genButton("ファイルに保存", 0x4000004, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
|
||||
ctx->genButton("ファイルに保存", PROPERTY_SAVE_FILE_e, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
|
||||
// Load File
|
||||
ctx->genButton("ファイル読込", 0x4000005, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
|
||||
ctx->genButton("ファイル読込", PROPERTY_LOAD_FILE_e, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
|
||||
// Basic
|
||||
ctx->genNode("基本", &mBasic, 0, 0);
|
||||
// Move
|
||||
@@ -5880,51 +5904,49 @@ void daAlinkHIO_c::genMessage(JORMContext* ctx) {
|
||||
ctx->genNode("狼", &mWolf, 0, 0);
|
||||
}
|
||||
|
||||
void daAlinkHIO_c::readFileData(char* param_0) {
|
||||
int src;
|
||||
void daAlinkHIO_c::readFileData(char* o_fileData) {
|
||||
int position;
|
||||
daAlinkHIO_data_c* top;
|
||||
src = 0;
|
||||
|
||||
position = 0;
|
||||
for (top = l_HIO_top; top != NULL; top = top->mpNext) {
|
||||
cLib_memCpy(top->mp_src_data, param_0 + src, top->m_len);
|
||||
cLib_memCpy(top->mp_src_data, o_fileData + position, top->m_len);
|
||||
top->update();
|
||||
src += top->m_len;
|
||||
position += top->m_len;
|
||||
}
|
||||
}
|
||||
|
||||
size_t daAlinkHIO_c::makeFileOutData(char* param_0, char* param_1) {
|
||||
size_t sVar1;
|
||||
int iVar2;
|
||||
size_t daAlinkHIO_c::makeFileOutData(char* o_fileData, char* o_structData) {
|
||||
int position;
|
||||
daAlinkHIO_data_c* top;
|
||||
iVar2 = 0;
|
||||
|
||||
position = 0;
|
||||
for (top = l_HIO_top; top != NULL; top = top->mpNext) {
|
||||
cLib_memCpy(param_0 + iVar2, top->mp_data, top->m_len);
|
||||
iVar2 += top->m_len;
|
||||
cLib_memCpy(o_fileData + position, top->mp_data, top->m_len);
|
||||
position += top->m_len;
|
||||
}
|
||||
|
||||
param_0[iVar2] = 10;
|
||||
iVar2++;
|
||||
o_fileData[position] = '\n';
|
||||
position++;
|
||||
top = l_HIO_top;
|
||||
*param_1 = 0;
|
||||
*o_structData = 0;
|
||||
|
||||
for (; top != NULL; top = top->mpNext) {
|
||||
top->setStructData(param_1);
|
||||
top->setStructData(o_structData);
|
||||
}
|
||||
|
||||
cLib_memCpy(param_0 + iVar2, param_1, strlen(param_1));
|
||||
return iVar2 + strlen(param_1);
|
||||
cLib_memCpy(o_fileData + position, o_structData, strlen(o_structData));
|
||||
return position + strlen(o_structData);
|
||||
}
|
||||
|
||||
void daAlinkHIO_c::listenPropertyEvent(const JORPropertyEvent* event) {
|
||||
fopAc_ac_c* player = dComIfGp_getPlayer(0);
|
||||
JORReflexible::listenPropertyEvent(event);
|
||||
JORFile aJStack_168;
|
||||
JORFile file;
|
||||
|
||||
switch ((u32)event->id) {
|
||||
case 0x4000002: {
|
||||
OS_REPORT("X = %f, Y = %f, Z = %f,\n", player->current.pos.x, player->current.pos.y,
|
||||
player->current.pos.z);
|
||||
case PROPERTY_POS_DISP_e: {
|
||||
OS_REPORT("X = %f, Y = %f, Z = %f,\n", player->current.pos.x, player->current.pos.y, player->current.pos.z);
|
||||
OS_REPORT("SHAPE_ANGLE = %x, %d\n", player->shape_angle.y, player->shape_angle.y);
|
||||
OS_REPORT("CURRENT_ANGLE = %x, %d\n", player->current.angle.y, player->current.angle.y);
|
||||
|
||||
@@ -5934,60 +5956,58 @@ void daAlinkHIO_c::listenPropertyEvent(const JORPropertyEvent* event) {
|
||||
dComIfG_play_c::getLayerNo(0));
|
||||
break;
|
||||
}
|
||||
case 0x4000004: {
|
||||
if (aJStack_168.open(6, "すべてのファイル(*.*)\0*.*\0", 0, 0, 0) != 0) {
|
||||
char* buffer1 = new (0x20) char[0x10000];
|
||||
char* buffer2 = new (0x20) char[0x10000];
|
||||
case PROPERTY_SAVE_FILE_e: {
|
||||
if (file.open(6, "すべてのファイル(*.*)\0*.*\0", NULL, NULL, NULL)) {
|
||||
char* fileData = new (0x20) char[0x10000];
|
||||
char* structData = new (0x20) char[0x10000];
|
||||
|
||||
if (buffer1 != NULL && buffer2 != NULL) {
|
||||
size_t uVar5 = makeFileOutData(buffer1, buffer2);
|
||||
aJStack_168.writeData(buffer1, uVar5);
|
||||
if (fileData != NULL && structData != NULL) {
|
||||
size_t dataSize = makeFileOutData(fileData, structData);
|
||||
file.writeData(fileData, dataSize);
|
||||
|
||||
// Write area %x\n
|
||||
OS_REPORT("書き込み領域%x\n", uVar5);
|
||||
OS_REPORT("書き込み領域%x\n", dataSize);
|
||||
|
||||
if (uVar5 > 0x20000) {
|
||||
if (dataSize > 0x20000) {
|
||||
// Memory corruption has occurred!!!!!
|
||||
OS_REPORT("メモリ破壊が起こりました!!!!!\n");
|
||||
}
|
||||
|
||||
delete[] buffer1;
|
||||
delete[] buffer2;
|
||||
|
||||
delete[] fileData;
|
||||
delete[] structData;
|
||||
} else {
|
||||
if (buffer1 != NULL) {
|
||||
delete[] buffer1;
|
||||
if (fileData != NULL) {
|
||||
delete[] fileData;
|
||||
}
|
||||
|
||||
if (buffer2 != NULL) {
|
||||
delete[] buffer2;
|
||||
if (structData != NULL) {
|
||||
delete[] structData;
|
||||
}
|
||||
|
||||
// Could not secure the write area
|
||||
OS_REPORT("書き込み用領域確保できませんでした\n");
|
||||
}
|
||||
|
||||
aJStack_168.close();
|
||||
file.close();
|
||||
} else {
|
||||
// Cannot open file
|
||||
OS_REPORT("ファイルが開けません\n");
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 0x4000005: {
|
||||
if (aJStack_168.open(1, "すべてのファイル(*.*)\0*.*\0", (char*)0x0, (char*)0x0, (char*)0x0) != 0) {
|
||||
char* buffer1 = new (0x20) char[0x10000];
|
||||
case PROPERTY_LOAD_FILE_e: {
|
||||
if (file.open(1, "すべてのファイル(*.*)\0*.*\0", NULL, NULL, NULL)) {
|
||||
char* fileData = new (0x20) char[0x10000];
|
||||
|
||||
if (buffer1 != NULL) {
|
||||
aJStack_168.readData(buffer1, 0);
|
||||
readFileData(buffer1);
|
||||
delete[] buffer1;
|
||||
if (fileData != NULL) {
|
||||
file.readData(fileData, 0);
|
||||
readFileData(fileData);
|
||||
delete[] fileData;
|
||||
} else {
|
||||
// Could not secure the read area
|
||||
OS_REPORT("読み込み用領域確保できませんでした\n");
|
||||
}
|
||||
|
||||
aJStack_168.close();
|
||||
file.close();
|
||||
} else {
|
||||
// The file cannot be opened
|
||||
OS_REPORT("ファイルが開けません\n");
|
||||
|
||||
@@ -94,9 +94,12 @@ bool daAlink_c::checkBoomerangChargeEnd() {
|
||||
}
|
||||
|
||||
BOOL daAlink_c::checkBoomerangCarry(fopAc_ac_c* i_grabActor) {
|
||||
if (checkNoResetFlg0(FLG0_UNK_20) && !checkEventRun() && !checkWolf() &&
|
||||
checkModeFlg(0x10000000) &&
|
||||
(checkHorseNoUpperAnime() || checkHorseTurnAnime() || checkBoomerangThrowAnime())) {
|
||||
if (checkNoResetFlg0(FLG0_UNK_20)
|
||||
&& !checkEventRun()
|
||||
&& !checkWolf()
|
||||
&& checkModeFlg(0x10000000)
|
||||
&& (checkHorseNoUpperAnime() || checkHorseTurnAnime() || checkBoomerangThrowAnime()))
|
||||
{
|
||||
deleteEquipItem(FALSE, FALSE);
|
||||
seStartOnlyReverb(JA_SE_LK_BOOM_CATCH);
|
||||
offNoResetFlg0(FLG0_UNK_20);
|
||||
@@ -110,13 +113,12 @@ BOOL daAlink_c::checkBoomerangCarry(fopAc_ac_c* i_grabActor) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
void daAlink_c::initBoomerangUpperAnimeSpeed(int param_0) {
|
||||
void daAlink_c::initBoomerangUpperAnimeSpeed(BOOL param_0) {
|
||||
if (!checkBoomerangThrowAnime()) {
|
||||
if (param_0 != 0) {
|
||||
f32 tmp = 0.0f;
|
||||
mUpperFrameCtrl[2].setRate(tmp);
|
||||
mUpperFrameCtrl[2].setFrame(tmp);
|
||||
getNowAnmPackUpper(UPPER_2)->setFrame(tmp);
|
||||
if (param_0) {
|
||||
mUpperFrameCtrl[2].setRate(0.0f);
|
||||
mUpperFrameCtrl[2].setFrame(0.0f);
|
||||
getNowAnmPackUpper(UPPER_2)->setFrame(0.0f);
|
||||
} else {
|
||||
mUpperFrameCtrl[2].setRate(mpHIO->mItem.mBoomerang.m.mIdleAnmSpeed);
|
||||
}
|
||||
@@ -129,37 +131,36 @@ BOOL daAlink_c::checkBoomerangAnime() const {
|
||||
|
||||
BOOL daAlink_c::checkBoomerangThrowAnime() const {
|
||||
return (mEquipItem == fpcNm_ITEM_BOOMERANG || checkNoResetFlg1(FLG1_UNK_2) || mEquipItem == 0x102) &&
|
||||
checkUpperAnime(0x53);
|
||||
checkUpperAnime(dRes_ID_ALANM_BCK_BOOMTHROW_e);
|
||||
}
|
||||
|
||||
void daAlink_c::setBoomerangReadyQuake() {
|
||||
f32 tmp_0 = 0.0f;
|
||||
dComIfGp_getVibration().StartQuake(1, 1, cXyz(tmp_0, 1.0f, tmp_0));
|
||||
dComIfGp_getVibration().StartQuake(VIBMODE_Q_POWER1, 1, cXyz(0.0f, 1.0f, 0.0f));
|
||||
|
||||
onNoResetFlg3(FLG3_UNK_4);
|
||||
mItemVar0.field_0x3018 = mpHIO->mItem.mBoomerang.m.mChargeTime;
|
||||
}
|
||||
|
||||
void daAlink_c::setBoomerangReadyAnime() {
|
||||
f32 var_f31;
|
||||
if (checkAttentionLock()) {
|
||||
var_f31 = mpHIO->mItem.mBoomerang.m.mIdleAnmSpeed;
|
||||
f32 anm_speed;
|
||||
if (!checkAttentionLock()) {
|
||||
anm_speed = 0.0f;
|
||||
} else {
|
||||
var_f31 = 0.0f;
|
||||
anm_speed = mpHIO->mItem.mBoomerang.m.mIdleAnmSpeed;
|
||||
}
|
||||
|
||||
setUpperAnimeBaseSpeed(0x54, var_f31, 3.0f);
|
||||
setUpperAnimeBaseSpeed(dRes_ID_ALANM_BCK_BOOMWAIT_e, anm_speed, 3.0f);
|
||||
setBoomerangReadyQuake();
|
||||
}
|
||||
|
||||
void daAlink_c::setThrowBoomerangAnime() {
|
||||
setUpperAnimeParam(0x53, UPPER_2, &mpHIO->mItem.mBoomerang.m.mThrowAnm);
|
||||
setUpperAnimeParam(dRes_ID_ALANM_BCK_BOOMTHROW_e, UPPER_2, &mpHIO->mItem.mBoomerang.m.mThrowAnm);
|
||||
cancelItemUseQuake(0);
|
||||
}
|
||||
|
||||
void daAlink_c::setBoomerangCatchAnime() {
|
||||
setUpperAnimeParam(0x52, UPPER_2, &mpHIO->mItem.mBoomerang.m.mCatchAnm);
|
||||
setFacePriBck(0xE8);
|
||||
setUpperAnimeParam(dRes_ID_ALANM_BCK_BOOMCATCH_e, UPPER_2, &mpHIO->mItem.mBoomerang.m.mCatchAnm);
|
||||
setFacePriBck(dRes_ID_ALANM_BCK_FAT_e);
|
||||
field_0x2f97 = 254;
|
||||
|
||||
if (mEquipItem != fpcNm_ITEM_COPY_ROD) {
|
||||
@@ -234,12 +235,20 @@ void daAlink_c::throwBoomerang() {
|
||||
int daAlink_c::returnBoomerang(int param_0) {
|
||||
dComIfGp_clearPlayerStatus0(0, 0x400000);
|
||||
|
||||
if (mEquipItem == fpcNm_ITEM_NONE && !checkMagneBootsOn() && mItemAcKeep.getActor() == NULL &&
|
||||
!checkBoardRide() && !checkBoarRide() && !checkWolf() &&
|
||||
(mProcID != PROC_HANG_READY || field_0x3198 != 3) && (!checkEventRun() || param_0 != 0) &&
|
||||
(checkNoUpperAnime() || checkPlayerGuard() || checkHorseTurnAnime() ||
|
||||
checkDashDamageAnime() || checkBoomerangAnime()) &&
|
||||
!checkModeFlg(0x1BD0810)) {
|
||||
if (mEquipItem == fpcNm_ITEM_NONE
|
||||
&& !checkMagneBootsOn()
|
||||
&& mItemAcKeep.getActor() == NULL
|
||||
#if !PLATFORM_SHIELD
|
||||
&& !checkBoardRide()
|
||||
&& !checkBoarRide()
|
||||
#endif
|
||||
&& !checkWolf()
|
||||
&& (mProcID != PROC_HANG_READY || field_0x3198 != 3)
|
||||
&& (!checkEventRun() || param_0 != 0)
|
||||
&& (checkNoUpperAnime() || checkPlayerGuard() || checkHorseTurnAnime() ||
|
||||
checkDashDamageAnime() || checkBoomerangAnime())
|
||||
&& !checkModeFlg(0x1BD0810))
|
||||
{
|
||||
mItemAcKeep = mThrowBoomerangAcKeep;
|
||||
mThrowBoomerangAcKeep.clearData();
|
||||
|
||||
@@ -247,8 +256,7 @@ int daAlink_c::returnBoomerang(int param_0) {
|
||||
field_0x2f94 = 2;
|
||||
onNoResetFlg0(FLG0_UNK_20);
|
||||
|
||||
f32 tmp_0 = 0.0f;
|
||||
dComIfGp_getVibration().StartShock(1, 1, cXyz(tmp_0, 1.0f, tmp_0));
|
||||
dComIfGp_getVibration().StartShock(VIBMODE_S_POWER1, 1, cXyz(0.0f, 1.0f, 0.0f));
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -349,7 +357,7 @@ void daAlink_c::setBoomerangSight() {
|
||||
|
||||
daBoomerang_c* boomerang = (daBoomerang_c*)mItemAcKeep.getActor();
|
||||
if (boomerang->getLockReserve() || (check_line && !boomerang->getLockCntMax())) {
|
||||
setItemActionButtonStatus(0x10);
|
||||
setItemActionButtonStatus(BUTTON_STATUS_LOCK);
|
||||
itemActionTrigger();
|
||||
}
|
||||
}
|
||||
@@ -376,7 +384,7 @@ int daAlink_c::procBoomerangSubject() {
|
||||
}
|
||||
|
||||
if (checkBoomerangReadyAnime()) {
|
||||
setDoStatus(0x12);
|
||||
setDoStatus(BUTTON_STATUS_BACK);
|
||||
}
|
||||
|
||||
setShapeAngleToAtnActor(0);
|
||||
@@ -414,14 +422,14 @@ int daAlink_c::procBoomerangMove() {
|
||||
}
|
||||
|
||||
if (!checkNextAction(0)) {
|
||||
f32 var_f31 = -1.0f;
|
||||
f32 morf = -1.0f;
|
||||
|
||||
if (checkZeroSpeedF()) {
|
||||
onModeFlg(1);
|
||||
|
||||
if (field_0x2f98 != 3) {
|
||||
field_0x2f98 = 3;
|
||||
var_f31 = mpHIO->mBasic.m.mBasicInterpolation;
|
||||
morf = mpHIO->mBasic.m.mBasicInterpolation;
|
||||
}
|
||||
} else {
|
||||
offModeFlg(1);
|
||||
@@ -432,7 +440,7 @@ int daAlink_c::procBoomerangMove() {
|
||||
}
|
||||
}
|
||||
|
||||
setBlendAtnMoveAnime(var_f31);
|
||||
setBlendAtnMoveAnime(morf);
|
||||
setBodyAngleXReadyAnime(0);
|
||||
}
|
||||
|
||||
@@ -459,7 +467,7 @@ int daAlink_c::procBoomerangCatch() {
|
||||
onModeFlg(4);
|
||||
}
|
||||
|
||||
if (frameCtrl->checkAnmEnd()) {
|
||||
if (checkAnmEnd(frameCtrl)) {
|
||||
resetUpperAnime(UPPER_2, -1.0f);
|
||||
checkNextAction(0);
|
||||
} else {
|
||||
|
||||
@@ -12,7 +12,7 @@ static int daAlink_bottleModelCallBack(J3DJoint* i_joint, int param_1);
|
||||
|
||||
int daAlink_c::bottleModelCallBack() {
|
||||
if (mItemMode != 0) {
|
||||
mDoMtx_stack_c::copy(mpLinkModel->getAnmMtx(field_0x30c2));
|
||||
mDoMtx_stack_c::copy(mpLinkModel->getAnmMtx(mRightItemJntNo));
|
||||
mDoMtx_stack_c::transM(-3.0f, -1.0f, 0.3f);
|
||||
mDoMtx_stack_c::XYZrotM(cM_deg2s(102.0f), cM_deg2s(-0.5f), cM_deg2s(-122.0f));
|
||||
mDoMtx_copy(mDoMtx_stack_c::get(), mHeldItemModel->getAnmMtx(1));
|
||||
@@ -22,6 +22,8 @@ int daAlink_c::bottleModelCallBack() {
|
||||
}
|
||||
|
||||
static int daAlink_bottleModelCallBack(J3DJoint* i_joint, int param_1) {
|
||||
UNUSED(i_joint);
|
||||
|
||||
daAlink_c* player_p = (daAlink_c*)j3dSys.getModel()->getUserArea();
|
||||
|
||||
if (param_1 == 0) {
|
||||
@@ -46,36 +48,36 @@ BOOL daAlink_c::checkOilBottleItemNotGet(u16 i_itemNo) {
|
||||
|
||||
void daAlink_c::setBottleModel(u16 i_itemNo) {
|
||||
JKRHeap* prev_heap = setItemHeap();
|
||||
mHeldItemModel = initModelEnv(loadAramBmd(0x310, 0x5C00), 0x1020200);
|
||||
field_0x072c = loadAramItemBtp(0x3AE, mHeldItemModel);
|
||||
field_0x0724 = loadAramItemBrk(0x322, mHeldItemModel);
|
||||
mHeldItemModel = initModelEnv(loadAramBmd(dRes_ID_ALANM_BMD_AL_BOTTLE_e, 0x5C00), 0x1020200);
|
||||
field_0x072c = loadAramItemBtp(dRes_ID_ALANM_BTP_AL_BOTTLE_e, mHeldItemModel);
|
||||
field_0x0724 = loadAramItemBrk(dRes_ID_ALANM_BRK_AL_BOTTLE_e, mHeldItemModel);
|
||||
|
||||
if (checkDrinkBottleItem(i_itemNo) || checkOilBottleItemNotGet(i_itemNo)) {
|
||||
field_0x071c = loadAramItemBtk(0x328, mHeldItemModel);
|
||||
field_0x0720 = loadAramItemBtk(0x327, mHeldItemModel);
|
||||
field_0x071c = loadAramItemBtk(dRes_ID_ALANM_BTK_BOTTLE_D_YURE_e, mHeldItemModel);
|
||||
field_0x0720 = loadAramItemBtk(dRes_ID_ALANM_BTK_BOTTLE_D_NOMU_e, mHeldItemModel);
|
||||
} else {
|
||||
field_0x071c = loadAramItemBtk(0x32A, mHeldItemModel);
|
||||
field_0x0720 = loadAramItemBtk(0x329, mHeldItemModel);
|
||||
field_0x071c = loadAramItemBtk(dRes_ID_ALANM_BTK_BOTTLE_NUKU_e, mHeldItemModel);
|
||||
field_0x0720 = loadAramItemBtk(dRes_ID_ALANM_BTK_BOTTLE_DASU_e, mHeldItemModel);
|
||||
}
|
||||
|
||||
field_0x0718 = loadAramItemBtk(0x32B, mHeldItemModel);
|
||||
field_0x0718 = loadAramItemBtk(dRes_ID_ALANM_BTK_BOTTLE_YURE_e, mHeldItemModel);
|
||||
|
||||
if (i_itemNo == fpcNm_ITEM_FAIRY) {
|
||||
J3DAnmTransform* bck = (J3DAnmTransform*)loadAram(0x1E8, 0xC00);
|
||||
mpHookTipModel = initModel(loadAramBmd(0x31D, 0x1400), 0);
|
||||
J3DAnmTransform* bck = (J3DAnmTransform*)loadAram(dRes_ID_ALANM_BCK_O_GD_NV_e, 0xC00);
|
||||
mpHookTipModel = initModel(loadAramBmd(dRes_ID_ALANM_BMD_O_GD_NV_e, 0x1400), 0);
|
||||
if (!mHookTipBck.init(bck, FALSE, J3DFrameCtrl::EMode_LOOP, 1.0f, 0, -1, false)) {
|
||||
JUT_ASSERT(142, FALSE);
|
||||
}
|
||||
mHookTipBck.entry(mpHookTipModel->getModelData(), 0.0f);
|
||||
} else if (i_itemNo == fpcNm_ITEM_WORM) {
|
||||
J3DAnmTransform* bck = (J3DAnmTransform*)loadAram(0x1E9, 0xC00);
|
||||
mpHookTipModel = initModel(loadAramBmd(0x31E, 0x2400), 0);
|
||||
J3DAnmTransform* bck = (J3DAnmTransform*)loadAram(dRes_ID_ALANM_BCK_O_GD_WORM_e, 0xC00);
|
||||
mpHookTipModel = initModel(loadAramBmd(dRes_ID_ALANM_BMD_O_GD_WORM_e, 0x2400), 0);
|
||||
if (!mHookTipBck.init(bck, FALSE, J3DFrameCtrl::EMode_LOOP, 1.0f, 0, -1, false)) {
|
||||
JUT_ASSERT(151, FALSE);
|
||||
}
|
||||
mHookTipBck.entry(mpHookTipModel->getModelData(), 0.0f);
|
||||
} else if (i_itemNo == fpcNm_ITEM_BEE_CHILD) {
|
||||
mpHookTipModel = initModel(loadAramBmd(0x31C, 0x1000), 0);
|
||||
mpHookTipModel = initModel(loadAramBmd(dRes_ID_ALANM_BMD_O_GD_HK_e, 0x1000), 0);
|
||||
}
|
||||
|
||||
mDoExt_setCurrentHeap(prev_heap);
|
||||
@@ -139,14 +141,13 @@ void daAlink_c::setBottleModel(u16 i_itemNo) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int daAlink_c::commonBottleDrink(int param_0) {
|
||||
int daAlink_c::commonBottleDrink(BOOL param_0) {
|
||||
simpleAnmPlay(field_0x0718);
|
||||
simpleAnmPlay(field_0x071c);
|
||||
|
||||
daPy_frameCtrl_c* frameCtrl_p;
|
||||
u16 current_anm;
|
||||
if (param_0 || mUpperAnmHeap[2].getIdx() == 0x247) {
|
||||
if (param_0 || mUpperAnmHeap[2].getIdx() == dRes_ID_ALANM_BCK_TAKEL_e) {
|
||||
frameCtrl_p = &mUpperFrameCtrl[2];
|
||||
current_anm = mUpperAnmHeap[2].getIdx();
|
||||
} else {
|
||||
@@ -222,18 +223,14 @@ int daAlink_c::commonBottleDrink(int param_0) {
|
||||
if (dComIfGs_getLife() <= 2) {
|
||||
mItemVar0.mBottleItemHealAmount = dComIfGs_getMaxLifeGauge();
|
||||
} else if (dComIfGs_getLife() <= 4) {
|
||||
mItemVar0.mBottleItemHealAmount =
|
||||
(dComIfGs_getMaxLifeGauge() / 2) - dComIfGs_getLife();
|
||||
} else if (dComIfGs_getLife() == dComIfGs_getMaxLifeGauge() ||
|
||||
cM_rnd() < 0.5f)
|
||||
{
|
||||
mItemVar0.mBottleItemHealAmount = (dComIfGs_getMaxLifeGauge() / 2) - dComIfGs_getLife();
|
||||
} else if (dComIfGs_getLife() == dComIfGs_getMaxLifeGauge() || cM_rnd() < 0.5f) {
|
||||
mItemVar0.mBottleItemHealAmount = -4;
|
||||
} else {
|
||||
mItemVar0.mBottleItemHealAmount = 4;
|
||||
}
|
||||
} else if (mEquipItem == fpcNm_ITEM_CHUCHU_PURPLE) {
|
||||
f32 rnd = cM_rndF(6.0f);
|
||||
|
||||
if (rnd < 1.0f) {
|
||||
mItemVar0.mBottleItemHealAmount = dComIfGs_getMaxLifeGauge();
|
||||
} else if (rnd < 2.0f) {
|
||||
@@ -329,7 +326,6 @@ int daAlink_c::commonBottleDrink(int param_0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
fopAc_ac_c* daAlink_c::makeFairy(cXyz* i_pos, u32 i_params) {
|
||||
cXyz fairy_pos;
|
||||
|
||||
@@ -345,11 +341,8 @@ fopAc_ac_c* daAlink_c::makeFairy(cXyz* i_pos, u32 i_params) {
|
||||
i_pos = &fairy_pos;
|
||||
}
|
||||
|
||||
fopAc_ac_c* fairy_actor =
|
||||
(fopAc_ac_c*)fopAcM_fastCreate(PROC_Obj_Yousei, i_params, i_pos, fopAcM_GetRoomNo(this),
|
||||
&shape_angle, NULL, -1, NULL, NULL);
|
||||
|
||||
field_0x285c.setData(fairy_actor);
|
||||
field_0x285c.setData(fopAcM_fastCreate(PROC_Obj_Yousei, i_params, i_pos, fopAcM_GetRoomNo(this),
|
||||
&shape_angle, NULL, -1, NULL, NULL));
|
||||
onResetFlg0(RFLG0_UNK_400);
|
||||
|
||||
if (checkEventRun() && field_0x285c.getActor() != NULL) {
|
||||
@@ -365,7 +358,7 @@ int daAlink_c::procBottleDrinkInit(u16 i_itemNo) {
|
||||
return 1;
|
||||
}
|
||||
} else {
|
||||
if (!dComIfGp_event_compulsory(this, 0, 0xFFFF)) {
|
||||
if (!dComIfGp_event_compulsory(this, NULL, 0xFFFF)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -401,8 +394,8 @@ int daAlink_c::procBottleDrink() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
int daAlink_c::procBottleOpenInit(u16 param_0) {
|
||||
if (!dComIfGp_event_compulsory(this, 0, 0xFFFF)) {
|
||||
int daAlink_c::procBottleOpenInit(u16 i_itemNo) {
|
||||
if (!dComIfGp_event_compulsory(this, NULL, 0xFFFF)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -414,7 +407,7 @@ int daAlink_c::procBottleOpenInit(u16 param_0) {
|
||||
|
||||
setSingleAnimeParam(ANM_BOTTLE_OPEN, &mpHIO->mItem.mBottle.m.mOpenBottleAnm);
|
||||
keepItemData();
|
||||
setBottleModel(param_0);
|
||||
setBottleModel(i_itemNo);
|
||||
dComIfGp_setPlayerStatus1(0, 0x4000);
|
||||
mProcVar1.field_0x300a = 0;
|
||||
field_0x32cc = -1;
|
||||
@@ -435,21 +428,19 @@ int daAlink_c::procBottleOpenInit(u16 param_0) {
|
||||
|
||||
mProcVar3.field_0x300e = 0;
|
||||
|
||||
u32 id = fopAcM_GetID(this);
|
||||
dCam_getBody()->StartEventCamera(0x12, id, "Type", 1, &field_0x3194, 0);
|
||||
dCam_getBody()->StartEventCamera(0x12, fopAcM_GetID(this), "Type", 1, &field_0x3194, 0);
|
||||
mProcVar2.field_0x300c = 0;
|
||||
|
||||
field_0x27c8.initialize(current.pos.y + field_0x598);
|
||||
field_0x27c8.initialize(current.pos.y + mHeight);
|
||||
|
||||
if (param_0 == 0x67) {
|
||||
setCylAtParam(0x200, dCcG_At_Spl_UNK_0, 0, 0, 0, 30.0f, 30.0f);
|
||||
if (i_itemNo == fpcNm_ITEM_WATER_BOTTLE) {
|
||||
setCylAtParam(AT_TYPE_LANTERN_SWING, dCcG_At_Spl_UNK_0, 0, dCcD_SE_NONE, 0, 30.0f, 30.0f);
|
||||
}
|
||||
mProcVar4.field_0x3010 = 0;
|
||||
|
||||
mProcVar4.field_0x3010 = 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int daAlink_c::procBottleOpen() {
|
||||
static Vec const bottleTop = {0.0f, 25.0f, 0.0f};
|
||||
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
|
||||
@@ -486,17 +477,17 @@ int daAlink_c::procBottleOpen() {
|
||||
mHeldItemModel->getModelData()->entryTexMtxAnimator(field_0x071c);
|
||||
|
||||
if (mEquipItem == fpcNm_ITEM_FAIRY) {
|
||||
cXyz spC;
|
||||
mDoMtx_multVec(mHeldItemModel->getBaseTRMtx(), &bottleTop, &spC);
|
||||
cXyz fairyPos;
|
||||
mDoMtx_multVec(mHeldItemModel->getBaseTRMtx(), &bottleTop, &fairyPos);
|
||||
|
||||
if (makeFairy(&spC, 0)) {
|
||||
if (makeFairy(&fairyPos, 0)) {
|
||||
onModeFlg(0x8000000);
|
||||
mpHookTipModel = NULL;
|
||||
resetFairyEffect();
|
||||
}
|
||||
}
|
||||
} else if (frameCtrl_p->getFrame() >= 18.0f) {
|
||||
field_0x2f93 = 5;
|
||||
mRightHandIndex = 5;
|
||||
}
|
||||
} else {
|
||||
if (checkAnmEnd(frameCtrl_p) && mProcVar0.field_0x3008 != 0) {
|
||||
@@ -534,14 +525,12 @@ int daAlink_c::procBottleOpen() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int daAlink_c::procBottleSwingInit(fopAc_ac_c* param_0, int param_1) {
|
||||
fopAc_ac_c* var_r31 = param_0;
|
||||
if (var_r31 != NULL && mEquipItem != fpcNm_ITEM_KANTERA) {
|
||||
int daAlink_c::procBottleSwingInit(fopAc_ac_c* i_catchActor, int param_1) {
|
||||
if (i_catchActor != NULL && mEquipItem != fpcNm_ITEM_KANTERA) {
|
||||
return procPreActionUnequipInit(PROC_BOTTLE_SWING, NULL);
|
||||
}
|
||||
|
||||
if (var_r31 == NULL && getReadyItem() != fpcNm_ITEM_EMPTY_BOTTLE) {
|
||||
if (i_catchActor == NULL && getReadyItem() != fpcNm_ITEM_EMPTY_BOTTLE) {
|
||||
return checkWaitAction();
|
||||
}
|
||||
|
||||
@@ -551,22 +540,24 @@ int daAlink_c::procBottleSwingInit(fopAc_ac_c* param_0, int param_1) {
|
||||
field_0x2f98 = 4;
|
||||
mProcVar4.field_0x3010 = param_1;
|
||||
|
||||
if (var_r31 != NULL) {
|
||||
field_0x280c.setData(var_r31);
|
||||
fopAc_ac_c* catchActor;
|
||||
if (i_catchActor != NULL) {
|
||||
catchActor = i_catchActor;
|
||||
field_0x280c.setData(i_catchActor);
|
||||
} else {
|
||||
var_r31 = dComIfGp_att_getCatghTarget();
|
||||
catchActor = dComIfGp_att_getCatghTarget();
|
||||
}
|
||||
|
||||
BOOL temp_r3;
|
||||
s16 temp_r30;
|
||||
if (var_r31 != NULL) {
|
||||
if (var_r31->attention_info.position.y > field_0x3834.y - 30.0f) {
|
||||
s16 catchActorName;
|
||||
if (catchActor != NULL) {
|
||||
if (catchActor->attention_info.position.y > field_0x3834.y - 30.0f) {
|
||||
temp_r3 = false;
|
||||
} else {
|
||||
temp_r3 = true;
|
||||
}
|
||||
|
||||
temp_r30 = fopAcM_GetName(var_r31);
|
||||
catchActorName = fopAcM_GetName(catchActor);
|
||||
} else {
|
||||
if (field_0x2fbc != 11 && field_0x2fbc != 6 && mWaterY > current.pos.y + 10.0f) {
|
||||
temp_r3 = true;
|
||||
@@ -574,16 +565,16 @@ int daAlink_c::procBottleSwingInit(fopAc_ac_c* param_0, int param_1) {
|
||||
temp_r3 = false;
|
||||
}
|
||||
|
||||
temp_r30 = PROC_ALINK;
|
||||
catchActorName = PROC_ALINK;
|
||||
}
|
||||
|
||||
if (temp_r30 == PROC_OBJ_OILTUBO || temp_r30 == PROC_TAG_SSDRINK ||
|
||||
temp_r30 == PROC_TAG_BTLITM || mEquipItem == fpcNm_ITEM_KANTERA)
|
||||
if (catchActorName == PROC_OBJ_OILTUBO || catchActorName == PROC_TAG_SSDRINK ||
|
||||
catchActorName == PROC_TAG_BTLITM || mEquipItem == fpcNm_ITEM_KANTERA)
|
||||
{
|
||||
setSingleAnimeParam(ANM_BOTTLE_SCOOP, &mpHIO->mItem.mBottle.m.mScoopAnm);
|
||||
|
||||
if (mEquipItem == fpcNm_ITEM_KANTERA) {
|
||||
onNoResetFlg2(FLG2_UNK_10000000);
|
||||
onNoResetFlg2(FLG2_KANDELAAR_LIGHT_OFF);
|
||||
|
||||
JPABaseEmitter* emitter_p = dComIfGp_particle_getEmitter(field_0x31c4);
|
||||
if (emitter_p != NULL) {
|
||||
@@ -594,15 +585,15 @@ int daAlink_c::procBottleSwingInit(fopAc_ac_c* param_0, int param_1) {
|
||||
field_0x3478 = mpHIO->mItem.mBottle.m.mScoopAnm.mCancelFrame;
|
||||
field_0x347c = 14.0f;
|
||||
|
||||
if (var_r31 != NULL) {
|
||||
shape_angle.y = cLib_targetAngleY(¤t.pos, &var_r31->current.pos);
|
||||
if (catchActor != NULL) {
|
||||
shape_angle.y = cLib_targetAngleY(¤t.pos, &catchActor->current.pos);
|
||||
current.angle.y = shape_angle.y;
|
||||
|
||||
current.pos.x = var_r31->current.pos.x - cM_ssin(shape_angle.y) * 70.0f;
|
||||
current.pos.z = var_r31->current.pos.z - cM_scos(shape_angle.y) * 70.0f;
|
||||
current.pos.x = catchActor->current.pos.x - cM_ssin(shape_angle.y) * 70.0f;
|
||||
current.pos.z = catchActor->current.pos.z - cM_scos(shape_angle.y) * 70.0f;
|
||||
}
|
||||
|
||||
if (temp_r30 == PROC_OBJ_OILTUBO) {
|
||||
if (catchActorName == PROC_OBJ_OILTUBO) {
|
||||
onModeFlg(0x2000);
|
||||
}
|
||||
} else if (temp_r3) {
|
||||
@@ -622,7 +613,6 @@ int daAlink_c::procBottleSwingInit(fopAc_ac_c* param_0, int param_1) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int daAlink_c::procBottleSwing() {
|
||||
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
|
||||
|
||||
@@ -702,9 +692,8 @@ int daAlink_c::procBottleSwing() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int daAlink_c::procBottleGetInit(int param_0) {
|
||||
BOOL proc_pickup = mProcID == PROC_PICK_UP;
|
||||
int daAlink_c::procBottleGetInit(BOOL param_0) {
|
||||
BOOL isPrevPickUp = mProcID == PROC_PICK_UP;
|
||||
commonProcInit(PROC_BOTTLE_GET);
|
||||
|
||||
int var_r30;
|
||||
@@ -712,19 +701,19 @@ int daAlink_c::procBottleGetInit(int param_0) {
|
||||
setSingleAnime(ANM_BOTTLE_GET, mpHIO->mItem.mBottle.m.mGetAnm.mSpeed, 40.0f,
|
||||
mpHIO->mItem.mBottle.m.mGetAnm.mEndFrame,
|
||||
mpHIO->mItem.mBottle.m.mGetAnm.mInterpolation);
|
||||
field_0x2f93 = 0xFE;
|
||||
mRightHandIndex = 0xFE;
|
||||
|
||||
if (proc_pickup) {
|
||||
if (isPrevPickUp) {
|
||||
execItemGet(fpcNm_ITEM_KANTERA);
|
||||
var_r30 = 0xF8;
|
||||
var_r30 = fpcNm_ITEM_KANTERA2;
|
||||
dComIfGp_setItemOilCount(-dComIfGs_getMaxOil());
|
||||
} else {
|
||||
dComIfGp_setItemOilCount(dComIfGs_getMaxOil());
|
||||
|
||||
if (param_0) {
|
||||
var_r30 = 0x9C;
|
||||
var_r30 = fpcNm_ITEM_CHUCHU_YELLOW2;
|
||||
} else {
|
||||
var_r30 = 0x6E;
|
||||
var_r30 = fpcNm_ITEM_OIL2;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -751,15 +740,14 @@ int daAlink_c::procBottleGetInit(int param_0) {
|
||||
dCam_getBody()->StartEventCamera(0x12, id, "Type", 1, &field_0x3194, 0);
|
||||
|
||||
if (mEquipItem == fpcNm_ITEM_FAIRY_DROP || mEquipItem == fpcNm_ITEM_CHUCHU_RARE || mEquipItem == fpcNm_ITEM_WORM) {
|
||||
setFaceBasicTexture(FTANM_UNK_48);
|
||||
setFaceBasicBck(0x143);
|
||||
setFaceBasicTexture(FTANM_I_BINGET);
|
||||
setFaceBasicBck(dRes_ID_ALANM_BCK_FI_e);
|
||||
} else if (mEquipItem == fpcNm_ITEM_UGLY_SOUP) {
|
||||
setFaceBasicBck(0x146);
|
||||
setFaceBasicBck(dRes_ID_ALANM_BCK_FJ_e);
|
||||
}
|
||||
|
||||
// event flag 0x4A40: Ordon Day 1 completed
|
||||
if (mEquipItem == fpcNm_ITEM_BEE_CHILD && dComIfGs_isEventBit(0x4A40)) {
|
||||
dComIfGs_onEventBit(0x4C80); // event flag 0x4C80: Collected Bee Larva on Ordon Day 2
|
||||
if (mEquipItem == fpcNm_ITEM_BEE_CHILD && dComIfGs_isEventBit(dSv_event_flag_c::F_0700)) {
|
||||
dComIfGs_onEventBit(dSv_event_flag_c::F_0618);
|
||||
}
|
||||
|
||||
return 1;
|
||||
@@ -770,7 +758,7 @@ int daAlink_c::procBottleGet() {
|
||||
|
||||
simpleAnmPlay(field_0x0718);
|
||||
|
||||
if (frameCtrl->checkAnmEnd() && checkEndMessage(field_0x32cc)) {
|
||||
if (checkAnmEnd(frameCtrl) && checkEndMessage(field_0x32cc)) {
|
||||
resetFairyEffect();
|
||||
if (mEquipItem != fpcNm_ITEM_KANTERA) {
|
||||
deleteEquipItem(FALSE, FALSE);
|
||||
@@ -778,12 +766,12 @@ int daAlink_c::procBottleGet() {
|
||||
|
||||
resetSpecialEvent();
|
||||
} else if (frameCtrl->getFrame() >= 37.0f) {
|
||||
field_0x2f93 = 0xFE;
|
||||
mRightHandIndex = 0xFE;
|
||||
} else if (frameCtrl->getFrame() >= 15.0f) {
|
||||
mItemMode = 0;
|
||||
} else if (frameCtrl->getFrame() >= 5.0f) {
|
||||
mHeldItemModel->getModelData()->getMaterialNodePointer(0)->getShape()->show();
|
||||
field_0x2f93 = 5;
|
||||
mRightHandIndex = 5;
|
||||
mItemMode = 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
#include "d/actor/d_a_arrow.h"
|
||||
#include "d/actor/d_a_horse.h"
|
||||
|
||||
void daAlink_c::getArrowFlyData(f32* o_distance, f32* o_speed, int i_forceCharge) const {
|
||||
void daAlink_c::getArrowFlyData(f32* o_distance, f32* o_speed, BOOL i_forceCharge) const {
|
||||
if (mEquipItem == fpcNm_ITEM_PACHINKO) {
|
||||
*o_distance = mpHIO->mItem.mBow.m.mSlingshotDistance;
|
||||
*o_speed = mpHIO->mItem.mBow.m.mSlingshotSpeed;
|
||||
@@ -53,43 +53,45 @@ BOOL daAlink_c::checkBowAndSlingItem(int i_itemNo) {
|
||||
}
|
||||
|
||||
void daAlink_c::setSlingModel() {
|
||||
J3DAnmTransform* bck = (J3DAnmTransform*)mAnmHeap9.loadDataIdx(0x1F9);
|
||||
J3DAnmTransform* bck = (J3DAnmTransform*)mAnmHeap9.loadDataIdx(dRes_ID_ALANM_BCK_PWAIT_e);
|
||||
JKRHeap* prev_heap = setItemHeap();
|
||||
|
||||
J3DModelData* model_data = loadAramBmd(0x319, 0x2C00);
|
||||
mHeldItemModel = initModel(model_data, 0);
|
||||
mItemBck.init(bck, 0, 2, 1.0f, 0, -1, false);
|
||||
mHeldItemModel = initModel(loadAramBmd(dRes_ID_ALANM_BMD_AL_PACHI_e, 0x2C00), 0);
|
||||
|
||||
if (!mItemBck.init(bck, FALSE, J3DFrameCtrl::EMode_LOOP, 1.0f, 0, -1, false)) {
|
||||
JUT_ASSERT(108, 0);
|
||||
}
|
||||
|
||||
mDoExt_setCurrentHeap(prev_heap);
|
||||
field_0x2f95 = 5;
|
||||
field_0x2f94 = 103;
|
||||
}
|
||||
|
||||
cXyz* daAlink_c::checkBowCameraArrowPosP(s16* param_0, s16* param_1) {
|
||||
cXyz* daAlink_c::checkBowCameraArrowPosP(s16* o_angleX, s16* o_angleY) {
|
||||
if (!checkBowAnime() || mEquipItem == fpcNm_ITEM_PACHINKO) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
s16 var_28;
|
||||
s16 angle_y;
|
||||
if (checkHorseRide() && checkBoarSingleBattle() && dComIfGp_getHorseActor() != NULL) {
|
||||
var_28 = dComIfGp_getHorseActor()->shape_angle.y;
|
||||
angle_y = dComIfGp_getHorseActor()->shape_angle.y;
|
||||
} else if (checkMagneBootsOn()) {
|
||||
var_28 = field_0x3118;
|
||||
angle_y = field_0x3118;
|
||||
} else {
|
||||
var_28 = shape_angle.y;
|
||||
angle_y = shape_angle.y;
|
||||
}
|
||||
|
||||
var_28 += mBodyAngle.y;
|
||||
angle_y += mBodyAngle.y;
|
||||
|
||||
mDoMtx_stack_c::transS(field_0x3834);
|
||||
concatMagneBootMtx();
|
||||
mDoMtx_stack_c::ZXYrotM(mBodyAngle.x, var_28, 0);
|
||||
mDoMtx_stack_c::ZXYrotM(mBodyAngle.x, angle_y, 0);
|
||||
|
||||
static Vec const localPos = {3.45f, 45.32f, -7.0f};
|
||||
static const Vec localPos = {3.45f, 45.32f, -7.0f};
|
||||
mDoMtx_stack_c::multVec(&localPos, &mHeldItemRootPos);
|
||||
|
||||
*param_0 = mBodyAngle.x;
|
||||
*param_1 = var_28;
|
||||
*o_angleX = mBodyAngle.x;
|
||||
*o_angleY = angle_y;
|
||||
return &mHeldItemRootPos;
|
||||
}
|
||||
|
||||
@@ -111,8 +113,13 @@ void daAlink_c::makeArrow() {
|
||||
field_0x301e = 0;
|
||||
}
|
||||
|
||||
fopAc_ac_c* arrow_p = daArrow_c::makeArrow(this, field_0x301e);
|
||||
mItemAcKeep.setData(arrow_p);
|
||||
mItemAcKeep.setData(daArrow_c::makeArrow(this, field_0x301e));
|
||||
|
||||
if (mItemAcKeep.getActor() == NULL) {
|
||||
// "Not enough memory to create item!!"
|
||||
OS_REPORT("メモリが足りなくてアイテム発生できません!!\n");
|
||||
JUT_ASSERT(221, 0);
|
||||
}
|
||||
}
|
||||
|
||||
mItemVar0.field_0x3018 = 0;
|
||||
@@ -152,7 +159,7 @@ void daAlink_c::changeArrowType() {
|
||||
return;
|
||||
}
|
||||
|
||||
setItemActionButtonStatus(0x11);
|
||||
setItemActionButtonStatus(BUTTON_STATUS_SWITCH);
|
||||
|
||||
if (arrowChangeTrigger()) {
|
||||
if (mEquipItem == fpcNm_ITEM_HAWK_ARROW) {
|
||||
@@ -179,14 +186,13 @@ void daAlink_c::changeArrowType() {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BOOL daAlink_c::cancelBowMoveRideNotAtn() {
|
||||
return checkModeFlg(0x400) && checkAttentionLock() && mTargetedActor == NULL;
|
||||
}
|
||||
|
||||
BOOL daAlink_c::cancelBowMove() {
|
||||
if (mTargetedActor == NULL && !checkAttentionLock() && mFastShotTime == 0 &&
|
||||
!checkBowReadyAnime() && (!checkBowShootAnime() || mUpperFrameCtrl[2].checkAnmEnd()))
|
||||
!checkBowReadyAnime() && (!checkBowShootAnime() || checkAnmEnd(&mUpperFrameCtrl[2])))
|
||||
{
|
||||
resetUpperAnime(UPPER_2, -1.0f);
|
||||
return true;
|
||||
@@ -208,7 +214,7 @@ void daAlink_c::setBowReadyAnime() {
|
||||
}
|
||||
}
|
||||
|
||||
setUpperAnimeBase(0xD);
|
||||
setUpperAnimeBase(dRes_ID_ALANM_BCK_ASHOOTWAIT_e);
|
||||
|
||||
if (checkResetFlg0(RFLG0_UNK_80)) {
|
||||
mItemMode = 0;
|
||||
@@ -220,23 +226,23 @@ void daAlink_c::setBowReadyAnime() {
|
||||
field_0x2f96 = 4;
|
||||
|
||||
if (mEquipItem == fpcNm_ITEM_PACHINKO) {
|
||||
changeItemBck(0x1F1, -1.0f);
|
||||
changeItemBck(dRes_ID_ALANM_BCK_PSHOOT_e, -1.0f);
|
||||
} else {
|
||||
changeItemBck(0x43, -1.0f);
|
||||
changeItemBck(dRes_ID_ALANM_BCK_BASHOOT_e, -1.0f);
|
||||
}
|
||||
}
|
||||
|
||||
void daAlink_c::setBowReloadAnime() {
|
||||
setUpperAnimeParam(9, UPPER_2, &mpHIO->mItem.mBow.m.mLoadAnm);
|
||||
setFacePriTexture(FTANM_UNK_8);
|
||||
setFacePriBck(0xE5);
|
||||
setUpperAnimeParam(dRes_ID_ALANM_BCK_ARELORD_e, UPPER_2, &mpHIO->mItem.mBow.m.mLoadAnm);
|
||||
setFacePriTexture(FTANM_FINISHA);
|
||||
setFacePriBck(dRes_ID_ALANM_BCK_FARELORD_e);
|
||||
|
||||
if (mEquipItem == fpcNm_ITEM_PACHINKO) {
|
||||
changeItemBck(0x1F0, mpHIO->mItem.mBow.m.mLoadAnm.mStartFrame);
|
||||
changeItemBck(dRes_ID_ALANM_BCK_PRELORD_e, mpHIO->mItem.mBow.m.mLoadAnm.mStartFrame);
|
||||
field_0x2f97 = 5;
|
||||
seStartOnlyReverb(Z2SE_AL_PACHINKO_DRAW);
|
||||
} else {
|
||||
changeItemBck(0x41, mpHIO->mItem.mBow.m.mLoadAnm.mStartFrame);
|
||||
changeItemBck(dRes_ID_ALANM_BCK_BARELORD_e, mpHIO->mItem.mBow.m.mLoadAnm.mStartFrame);
|
||||
field_0x2f97 = 7;
|
||||
seStartOnlyReverb(Z2SE_AL_DRAW_BOW);
|
||||
}
|
||||
@@ -249,7 +255,7 @@ BOOL daAlink_c::checkUpperItemActionBow() {
|
||||
daPy_frameCtrl_c* frameCtrl_p = &mUpperFrameCtrl[2];
|
||||
|
||||
if (mEquipItem == fpcNm_ITEM_PACHINKO) {
|
||||
static Vec const slingLocalPos = {10.0f, 10.0f, 0.0f};
|
||||
static const Vec slingLocalPos = {10.0f, 10.0f, 0.0f};
|
||||
mDoMtx_multVec(getLeftItemMatrix(), &slingLocalPos, &mHeldItemRootPos);
|
||||
}
|
||||
|
||||
@@ -273,29 +279,29 @@ BOOL daAlink_c::checkUpperItemActionBow() {
|
||||
|
||||
if (checkReadyItem()) {
|
||||
if (mItemVar0.field_0x3018 != 0) {
|
||||
setUpperAnimeParam(0xC, UPPER_2, &mpHIO->mItem.mBow.m.mShootAnm);
|
||||
setFacePriBck(0xE8);
|
||||
setUpperAnimeParam(dRes_ID_ALANM_BCK_ASHOOT_e, UPPER_2, &mpHIO->mItem.mBow.m.mShootAnm);
|
||||
setFacePriBck(dRes_ID_ALANM_BCK_FAT_e);
|
||||
field_0x2f96 = 0;
|
||||
|
||||
u16 var_r29;
|
||||
u16 bck_res_id;
|
||||
if (mEquipItem == fpcNm_ITEM_PACHINKO) {
|
||||
var_r29 = 0x1F1;
|
||||
bck_res_id = dRes_ID_ALANM_BCK_PSHOOT_e;
|
||||
if (dComIfGs_getPachinkoNum() != 0 &&
|
||||
daArrow_c::makeSlingStone(this, &mHeldItemRootPos) != NULL)
|
||||
{
|
||||
dComIfGp_setItemPachinkoNumCount(-1);
|
||||
}
|
||||
} else if (field_0x301c != 0) {
|
||||
var_r29 = 0x43;
|
||||
bck_res_id = dRes_ID_ALANM_BCK_BASHOOT_e;
|
||||
} else {
|
||||
var_r29 = 0x44;
|
||||
bck_res_id = dRes_ID_ALANM_BCK_BASHOOTTAME_e;
|
||||
}
|
||||
|
||||
changeItemBck(var_r29, mpHIO->mItem.mBow.m.mShootAnm.mStartFrame);
|
||||
changeItemBck(bck_res_id, mpHIO->mItem.mBow.m.mShootAnm.mStartFrame);
|
||||
mItemVar0.field_0x3018 = 0;
|
||||
} else if (mEquipItem == fpcNm_ITEM_PACHINKO) {
|
||||
if (!itemButton()) {
|
||||
dComIfGp_getVibration().StartShock(1, 1, cXyz(0.0f, 1.0f, 0.0f));
|
||||
dComIfGp_getVibration().StartShock(VIBMODE_S_POWER1, 1, cXyz(0.0f, 1.0f, 0.0f));
|
||||
seStartOnlyReverb(Z2SE_AL_PACHINKO_SHOT);
|
||||
mItemVar0.field_0x3018 = 1;
|
||||
resetFacePriAnime();
|
||||
@@ -303,11 +309,11 @@ BOOL daAlink_c::checkUpperItemActionBow() {
|
||||
} else if (!itemButton()) {
|
||||
if (arrow_p != NULL) {
|
||||
u32 sound;
|
||||
int shock_strength;
|
||||
int vibmode;
|
||||
|
||||
if (field_0x301c != 0) {
|
||||
arrow_p->setShoot();
|
||||
shock_strength = 1;
|
||||
vibmode = VIBMODE_S_POWER1;
|
||||
|
||||
if (arrow_p->checkBombArrow()) {
|
||||
sound = Z2SE_OBJ_ARROWBOMB_SHOT;
|
||||
@@ -316,7 +322,7 @@ BOOL daAlink_c::checkUpperItemActionBow() {
|
||||
}
|
||||
} else {
|
||||
arrow_p->setChargeShoot();
|
||||
shock_strength = 2;
|
||||
vibmode = VIBMODE_S_POWER2;
|
||||
|
||||
if (arrow_p->checkBombArrow()) {
|
||||
sound = Z2SE_OBJ_ARROWBOMB_SHOTGAIN;
|
||||
@@ -325,7 +331,7 @@ BOOL daAlink_c::checkUpperItemActionBow() {
|
||||
}
|
||||
}
|
||||
|
||||
dComIfGp_getVibration().StartShock(shock_strength, 1, cXyz(0.0f, 1.0f, 0.0f));
|
||||
dComIfGp_getVibration().StartShock(vibmode, 1, cXyz(0.0f, 1.0f, 0.0f));
|
||||
seStartOnlyReverb(sound);
|
||||
|
||||
if (field_0x301e == 1) {
|
||||
@@ -352,13 +358,13 @@ BOOL daAlink_c::checkUpperItemActionBow() {
|
||||
}
|
||||
} else if (checkBowReloadAnime()) {
|
||||
if (checkAnmEnd(frameCtrl_p)) {
|
||||
setUpperAnimeBaseSpeed(10, 0.0f, -1.0f);
|
||||
setFacePriTexture(FTANM_UNK_9);
|
||||
setFacePriBck(0xE6);
|
||||
setUpperAnimeBaseSpeed(dRes_ID_ALANM_BCK_ARELORDTAME_e, 0.0f, -1.0f);
|
||||
setFacePriTexture(FTANM_ARELORD);
|
||||
setFacePriBck(dRes_ID_ALANM_BCK_FARELORDTAME_e);
|
||||
|
||||
if (mEquipItem != fpcNm_ITEM_PACHINKO) {
|
||||
changeItemBck(0x42, 0.0f);
|
||||
dComIfGp_getVibration().StartQuake(1, 1, cXyz(0.0f, 1.0f, 0.0f));
|
||||
changeItemBck(dRes_ID_ALANM_BCK_BARELORDTAME_e, 0.0f);
|
||||
dComIfGp_getVibration().StartQuake(VIBMODE_Q_POWER1, 1, cXyz(0.0f, 1.0f, 0.0f));
|
||||
onNoResetFlg3(FLG3_UNK_4);
|
||||
}
|
||||
}
|
||||
@@ -423,7 +429,6 @@ BOOL daAlink_c::checkUpperItemActionBow() {
|
||||
return cancelUpperItemReadyAnime(0);
|
||||
}
|
||||
|
||||
|
||||
void daAlink_c::checkUpperItemActionBowFly() {
|
||||
if (checkBowAnime()) {
|
||||
checkUpperItemActionBow();
|
||||
@@ -439,7 +444,7 @@ int daAlink_c::checkNextActionBow() {
|
||||
mFastShotTime--;
|
||||
}
|
||||
|
||||
BOOL var_r31 = false;
|
||||
BOOL is_hawk_arrow = false;
|
||||
if (!checkBowAnime()) {
|
||||
setBowReadyAnime();
|
||||
setFastShotTimer();
|
||||
@@ -452,7 +457,7 @@ int daAlink_c::checkNextActionBow() {
|
||||
mItemVar0.field_0x3018 = 1;
|
||||
|
||||
if (mEquipItem == fpcNm_ITEM_HAWK_ARROW) {
|
||||
var_r31 = true;
|
||||
is_hawk_arrow = true;
|
||||
mFastShotTime = 0;
|
||||
}
|
||||
|
||||
@@ -471,7 +476,7 @@ int daAlink_c::checkNextActionBow() {
|
||||
}
|
||||
}
|
||||
|
||||
BOOL rt;
|
||||
BOOL rt = FALSE;
|
||||
if (!checkAttentionLock() && mFastShotTime == 0) {
|
||||
if (checkModeFlg(0x400)) {
|
||||
if (checkCanoeRide()) {
|
||||
@@ -494,7 +499,7 @@ int daAlink_c::checkNextActionBow() {
|
||||
}
|
||||
}
|
||||
|
||||
if (rt && var_r31) {
|
||||
if (rt && is_hawk_arrow) {
|
||||
dComIfGp_setPlayerStatus0(0, 0x200000);
|
||||
seStartSystem(Z2SE_AL_HAWK_EYE_PUTON);
|
||||
}
|
||||
@@ -502,36 +507,37 @@ int daAlink_c::checkNextActionBow() {
|
||||
return rt;
|
||||
}
|
||||
|
||||
|
||||
void daAlink_c::setBowModel() {
|
||||
J3DAnmTransform* bck = (J3DAnmTransform*)mAnmHeap9.loadDataIdx(0x59);
|
||||
JKRHeap* old_heap = setItemHeap();
|
||||
J3DAnmTransform* bck = (J3DAnmTransform*)mAnmHeap9.loadDataIdx(dRes_ID_ALANM_BCK_BVJMPCL_e);
|
||||
JKRHeap* heap = setItemHeap();
|
||||
|
||||
mHeldItemModel = initModel(loadAramBmd(0x314, 0x4C00), 0);
|
||||
mItemBck.init(bck, FALSE, 2, 1.0f, 0, -1, false);
|
||||
mHeldItemModel = initModel(loadAramBmd(dRes_ID_ALANM_BMD_AL_BOW_e, 0x4C00), 0);
|
||||
|
||||
if (!mItemBck.init(bck, FALSE, 2, 1.0f, 0, -1, false)) {
|
||||
JUT_ASSERT(894, 0);
|
||||
}
|
||||
|
||||
mDoExt_setCurrentHeap(old_heap);
|
||||
mDoExt_setCurrentHeap(heap);
|
||||
field_0x33dc = mItemBck.getBckAnm()->getFrameMax() - 0.001f;
|
||||
field_0x2f95 = 5;
|
||||
field_0x2f94 = 0x67;
|
||||
}
|
||||
|
||||
|
||||
bool daAlink_c::checkBowGrabLeftHand() const {
|
||||
return checkReinRide() && !checkBowAnime();
|
||||
}
|
||||
|
||||
void daAlink_c::setBowHangAnime() {
|
||||
if (checkBowItem(mEquipItem)) {
|
||||
changeItemBck(0x58, 0.0f);
|
||||
changeItemBck(dRes_ID_ALANM_BCK_BVJMPCH_e, 0.0f);
|
||||
}
|
||||
}
|
||||
|
||||
void daAlink_c::setBowNormalAnime() {
|
||||
if (checkBowItem(mEquipItem)) {
|
||||
changeItemBck(0x59, -1.0f);
|
||||
changeItemBck(dRes_ID_ALANM_BCK_BVJMPCL_e, -1.0f);
|
||||
} else if (mEquipItem == fpcNm_ITEM_PACHINKO) {
|
||||
changeItemBck(0x1F9, -1.0f);
|
||||
changeItemBck(dRes_ID_ALANM_BCK_PWAIT_e, -1.0f);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -563,7 +569,7 @@ int daAlink_c::procBowSubjectInit() {
|
||||
}
|
||||
|
||||
int daAlink_c::procBowSubject() {
|
||||
setDoStatus(0x12);
|
||||
setDoStatus(BUTTON_STATUS_BACK);
|
||||
if (!checkNextAction(0) && setBodyAngleToCamera()) {
|
||||
setBowSight();
|
||||
}
|
||||
@@ -597,21 +603,21 @@ int daAlink_c::procBowMove() {
|
||||
onEndResetFlg0(ERFLG0_UNK_8000000);
|
||||
|
||||
if (!checkNextAction(0)) {
|
||||
f32 var_f31 = -1.0f;
|
||||
f32 morf = -1.0f;
|
||||
|
||||
if (checkZeroSpeedF()) {
|
||||
onModeFlg(1);
|
||||
|
||||
if (field_0x2f98 != 3) {
|
||||
field_0x2f98 = 3;
|
||||
var_f31 = mpHIO->mBasic.m.mBasicInterpolation;
|
||||
morf = mpHIO->mBasic.m.mBasicInterpolation;
|
||||
}
|
||||
current.angle.y = shape_angle.y - 0x4000;
|
||||
} else {
|
||||
offModeFlg(1);
|
||||
}
|
||||
|
||||
setBlendAtnMoveAnime(var_f31);
|
||||
setBlendAtnMoveAnime(morf);
|
||||
setBodyAngleXReadyAnime(0);
|
||||
}
|
||||
|
||||
|
||||
+291
-275
File diff suppressed because it is too large
Load Diff
@@ -43,7 +43,7 @@ fopAc_ac_c* daAlink_c::getCopyRodCameraActor() {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void daAlink_c::initCopyRodUpperAnimeSpeed(int param_0) {
|
||||
void daAlink_c::initCopyRodUpperAnimeSpeed(BOOL param_0) {
|
||||
if (!checkCopyRodThrowAnime()) {
|
||||
if (param_0) {
|
||||
mUpperFrameCtrl[2].setRate(0.0f);
|
||||
@@ -60,11 +60,9 @@ BOOL daAlink_c::checkForestOldCentury() {
|
||||
}
|
||||
|
||||
BOOL daAlink_c::checkCopyRodTopUse() {
|
||||
// Event flag 0x2580: Dominion Rod power restored
|
||||
return (dComIfGs_isEventBit(0x2580) &&
|
||||
!(mProcID == PROC_UNEQUIP && mProcVar3.field_0x300e != 0)) ||
|
||||
dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 0x15 ||
|
||||
checkForestOldCentury();
|
||||
return (dComIfGs_isEventBit(dSv_event_flag_c::F_0302) && !(mProcID == PROC_UNEQUIP && mProcVar3.field_0x300e != 0))
|
||||
|| dStage_stagInfo_GetSaveTbl(dComIfGp_getStage()->getStagInfo()) == dStage_SaveTbl_LV6
|
||||
|| checkForestOldCentury();
|
||||
}
|
||||
|
||||
BOOL daAlink_c::checkCopyRodAnime() const {
|
||||
@@ -73,7 +71,7 @@ BOOL daAlink_c::checkCopyRodAnime() const {
|
||||
|
||||
void daAlink_c::setCopyRodControllAnime() {
|
||||
if (checkNoUpperAnime() && getCopyRodControllActor()) {
|
||||
setUpperAnimeBaseSpeed(0x202, 0.0f, 3.0f);
|
||||
setUpperAnimeBaseSpeed(dRes_ID_ALANM_BCK_RODD_e, 0.0f, 3.0f);
|
||||
field_0x2f96 = 2;
|
||||
field_0x2f97 = 5;
|
||||
field_0x33e8 = 0.0f;
|
||||
@@ -81,26 +79,26 @@ void daAlink_c::setCopyRodControllAnime() {
|
||||
}
|
||||
|
||||
void daAlink_c::setCopyRodControllUpperSpeedRate() {
|
||||
f32 var_f31;
|
||||
f32 max_speed;
|
||||
if (checkAttentionLock()) {
|
||||
var_f31 = 1.0f;
|
||||
max_speed = 1.0f;
|
||||
} else {
|
||||
if (mProcID == PROC_STEP_MOVE) {
|
||||
var_f31 = fabsf(field_0x3478 / mpHIO->mMove.m.mMaxSpeed);
|
||||
max_speed = fabsf(field_0x3478 / mpHIO->mMove.m.mMaxSpeed);
|
||||
} else {
|
||||
var_f31 = fabsf(mNormalSpeed / mpHIO->mMove.m.mMaxSpeed);
|
||||
max_speed = fabsf(mNormalSpeed / mpHIO->mMove.m.mMaxSpeed);
|
||||
}
|
||||
|
||||
if (checkHeavyStateOn(1, 1)) {
|
||||
var_f31 *= 1.0f / (mHeavySpeedMultiplier * mHeavySpeedMultiplier);
|
||||
if (checkHeavyStateOn(TRUE, TRUE)) {
|
||||
max_speed *= 1.0f / (mHeavySpeedMultiplier * mHeavySpeedMultiplier);
|
||||
}
|
||||
}
|
||||
|
||||
if (var_f31 > 1.0f) {
|
||||
var_f31 = 1.0f;
|
||||
if (max_speed > 1.0f) {
|
||||
max_speed = 1.0f;
|
||||
}
|
||||
|
||||
cLib_chaseF(&field_0x33e8, var_f31, 0.15f);
|
||||
cLib_chaseF(&field_0x33e8, max_speed, 0.15f);
|
||||
|
||||
daPy_frameCtrl_c* frame_ctrl = &mUpperFrameCtrl[2];
|
||||
frame_ctrl->setFrame(field_0x33e8 * frame_ctrl->getEnd());
|
||||
@@ -109,9 +107,8 @@ void daAlink_c::setCopyRodControllUpperSpeedRate() {
|
||||
|
||||
void daAlink_c::setCopyRodModel() {
|
||||
JKRHeap* heap = setItemHeap();
|
||||
J3DModelData* mdl_data = loadAramBmd(0x315, 0x5400);
|
||||
mHeldItemModel = initModel(mdl_data, 0x80000, 0x1000000);
|
||||
field_0x0724 = loadAramItemBrk(0x323, mHeldItemModel);
|
||||
mHeldItemModel = initModel(loadAramBmd(dRes_ID_ALANM_BMD_AL_CROD_e, 0x5400), 0x1000000);
|
||||
field_0x0724 = loadAramItemBrk(dRes_ID_ALANM_BRK_AL_CROD_CHANGE_COLOR_e, mHeldItemModel);
|
||||
mDoExt_setCurrentHeap(heap);
|
||||
|
||||
field_0x0724->setFrame(0.0f);
|
||||
@@ -119,25 +116,25 @@ void daAlink_c::setCopyRodModel() {
|
||||
|
||||
mAtCps[0].SetAtSpl(dCcG_At_Spl_UNK_0);
|
||||
mAtCps[0].SetAtAtp(0);
|
||||
mAtCps[0].SetAtSe(20);
|
||||
mAtCps[0].SetAtSe(dCcD_SE_COPYROD);
|
||||
mAtCps[0].SetAtHitMark(1);
|
||||
mAtCps[0].OnAtSetBit();
|
||||
mAtCps[0].SetAtHitCallback(NULL);
|
||||
mAtCps[0].SetAtMtrl(dCcD_MTRL_NONE);
|
||||
|
||||
mHeldItemModel->setBaseTRMtx(mpLinkModel->getAnmMtx(field_0x30c0));
|
||||
mHeldItemModel->setBaseTRMtx(mpLinkModel->getAnmMtx(mLeftItemJntNo));
|
||||
mHeldItemModel->calc();
|
||||
}
|
||||
|
||||
void daAlink_c::setCopyRodReadyAnime() {
|
||||
f32 speed;
|
||||
if (checkAttentionLock()) {
|
||||
speed = mpHIO->mItem.mBoomerang.m.mIdleAnmSpeed;
|
||||
} else {
|
||||
if (!checkAttentionLock()) {
|
||||
speed = 0.0f;
|
||||
} else {
|
||||
speed = mpHIO->mItem.mBoomerang.m.mIdleAnmSpeed;
|
||||
}
|
||||
|
||||
setUpperAnimeBaseSpeed(0x54, speed, 3.0f);
|
||||
setUpperAnimeBaseSpeed(dRes_ID_ALANM_BCK_BOOMWAIT_e, speed, 3.0f);
|
||||
|
||||
if (checkCopyRodTopUse()) {
|
||||
seStartSwordCut(Z2SE_AL_COPYROD_READY);
|
||||
@@ -160,6 +157,7 @@ void daAlink_c::throwCopyRod() {
|
||||
onNoResetFlg3(FLG3_COPY_ROD_THROW_AFTER);
|
||||
mItemAcKeep.clearData();
|
||||
}
|
||||
|
||||
dComIfGp_clearPlayerStatus0(0, 0x80);
|
||||
mFastShotTime = -1;
|
||||
voiceStart(Z2SE_AL_V_ATTACK_S);
|
||||
@@ -179,20 +177,19 @@ void daAlink_c::throwCopyRod() {
|
||||
int daAlink_c::returnCopyRod() {
|
||||
offNoResetFlg3(FLG3_COPY_ROD_THROW_AFTER);
|
||||
|
||||
int var_r31;
|
||||
BOOL rt;
|
||||
if (mEquipItem == fpcNm_ITEM_COPY_ROD) {
|
||||
mItemAcKeep = mCopyRodAcKeep;
|
||||
onNoResetFlg0(FLG0_UNK_20);
|
||||
var_r31 = 1;
|
||||
rt = TRUE;
|
||||
|
||||
f32 tmp_0 = 0.0f;
|
||||
dComIfGp_getVibration().StartShock(1, 1, cXyz(tmp_0, 1.0f, tmp_0));
|
||||
dComIfGp_getVibration().StartShock(VIBMODE_S_POWER1, 1, cXyz(0.0f, 1.0f, 0.0f));
|
||||
} else {
|
||||
var_r31 = 0;
|
||||
rt = FALSE;
|
||||
}
|
||||
|
||||
mCopyRodAcKeep.clearData();
|
||||
return var_r31;
|
||||
return rt;
|
||||
}
|
||||
|
||||
BOOL daAlink_c::checkUpperItemActionCopyRod() {
|
||||
@@ -255,7 +252,6 @@ int daAlink_c::checkNextActionCopyRod() {
|
||||
void daAlink_c::setCopyRodSight() {
|
||||
if (mItemAcKeep.getActor() && !checkCopyRodThrowAnime()) {
|
||||
cXyz sight_pos;
|
||||
|
||||
checkSightLine(getCopyRodBallDisMax(), &sight_pos);
|
||||
mSight.setPos(&sight_pos);
|
||||
mSight.onDrawFlg();
|
||||
@@ -288,7 +284,7 @@ int daAlink_c::procCopyRodSubject() {
|
||||
}
|
||||
|
||||
if (checkCopyRodReadyAnime()) {
|
||||
setDoStatus(0x12);
|
||||
setDoStatus(BUTTON_STATUS_BACK);
|
||||
}
|
||||
|
||||
setShapeAngleToAtnActor(0);
|
||||
@@ -326,20 +322,20 @@ int daAlink_c::procCopyRodMove() {
|
||||
}
|
||||
|
||||
if (!checkNextAction(0)) {
|
||||
f32 var_f31 = -1.0f;
|
||||
f32 morf = -1.0f;
|
||||
|
||||
if (checkZeroSpeedF()) {
|
||||
onModeFlg(1);
|
||||
|
||||
if (field_0x2f98 != 3) {
|
||||
field_0x2f98 = 3;
|
||||
var_f31 = mpHIO->mBasic.m.mBasicInterpolation;
|
||||
morf = mpHIO->mBasic.m.mBasicInterpolation;
|
||||
}
|
||||
} else {
|
||||
offModeFlg(1);
|
||||
}
|
||||
|
||||
setBlendAtnMoveAnime(var_f31);
|
||||
setBlendAtnMoveAnime(morf);
|
||||
setBodyAngleXReadyAnime(0);
|
||||
}
|
||||
|
||||
@@ -383,7 +379,7 @@ int daAlink_c::procCopyRodSwing() {
|
||||
daPy_frameCtrl_c* frameCtrl = mUnderFrameCtrl;
|
||||
mProcVar2.field_0x300c = 0;
|
||||
|
||||
if (frameCtrl->checkAnmEnd()) {
|
||||
if (checkAnmEnd(frameCtrl)) {
|
||||
setCopyRodControllAnime();
|
||||
checkNextAction(0);
|
||||
} else if (frameCtrl->getFrame() > field_0x3480 && checkNextAction(1)) {
|
||||
@@ -413,7 +409,7 @@ int daAlink_c::procCopyRodReviveInit() {
|
||||
|
||||
if (mDemo.getParam0() == 0) {
|
||||
if (mEquipItem != fpcNm_ITEM_COPY_ROD) {
|
||||
deleteEquipItem(0, 0);
|
||||
deleteEquipItem(FALSE, FALSE);
|
||||
mEquipItem = fpcNm_ITEM_COPY_ROD;
|
||||
setCopyRodModel();
|
||||
}
|
||||
@@ -428,7 +424,7 @@ int daAlink_c::procCopyRodReviveInit() {
|
||||
int daAlink_c::procCopyRodRevive() {
|
||||
simpleAnmPlay(field_0x0724);
|
||||
|
||||
if (mUnderFrameCtrl[0].checkAnmEnd()) {
|
||||
if (checkAnmEnd(&mUnderFrameCtrl[0])) {
|
||||
dComIfGp_evmng_cutEnd(mAlinkStaffId);
|
||||
}
|
||||
|
||||
|
||||
+144
-120
@@ -28,8 +28,13 @@ void daAlink_c::setCrawlMoveDirectionArrow() {
|
||||
static const u8 data_80452F39 = 4;
|
||||
|
||||
u8 direction = 0;
|
||||
camera_class* camera = (camera_class*)dComIfGp_getCamera(field_0x317c);
|
||||
BOOL bvar = cLib_distanceAngleS(fopCamM_GetAngleY(camera), shape_angle.y) > 0x4000;
|
||||
|
||||
BOOL bvar;
|
||||
if (cLib_distanceAngleS(fopCamM_GetAngleY(dComIfGp_getCamera(field_0x317c)), shape_angle.y) > 0x4000) {
|
||||
bvar = TRUE;
|
||||
} else {
|
||||
bvar = FALSE;
|
||||
}
|
||||
|
||||
if (field_0x3198 & 4) {
|
||||
if (!bvar) {
|
||||
@@ -140,9 +145,20 @@ BOOL daAlink_c::changeCrawlAutoMoveProc(cXyz* param_0) {
|
||||
var_r29 |= 8;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (cM3d_Len2dSqPntAndSegLine(0.5f * (sp34.x + sp28.x), 0.5f * (sp34.z + sp28.z), sp70.x, sp70.z, param_0->x - (95.0f * temp_f31), param_0->z - (95.0f * temp_f30), &sp64.x, &sp64.z, &spC)) {
|
||||
f32 var_f27 = param_0->x - (95.0f * temp_f31);
|
||||
f32 var_f26 = param_0->z - (95.0f * temp_f30);
|
||||
|
||||
if (cM3d_Len2dSqPntAndSegLine(0.5f * (sp34.x + sp28.x),
|
||||
0.5f * (sp34.z + sp28.z),
|
||||
sp70.x,
|
||||
sp70.z,
|
||||
var_f27,
|
||||
var_f26,
|
||||
&sp64.x,
|
||||
&sp64.z,
|
||||
&spC))
|
||||
{
|
||||
sp64.y = current.pos.y;
|
||||
if (checkWolf()) {
|
||||
return procWolfLieAutoMoveInit(var_r29, &sp64);
|
||||
@@ -155,15 +171,15 @@ BOOL daAlink_c::changeCrawlAutoMoveProc(cXyz* param_0) {
|
||||
}
|
||||
|
||||
int daAlink_c::getCrawlMoveVec(cXyz* param_0, cXyz* param_1, cXyz* param_2, int param_3,
|
||||
int param_4, u8* param_5) {
|
||||
int param_4, u8* param_5) {
|
||||
if (commonLineCheck(param_0, param_1) && ((param_4 == 0 && (!checkWolf() || !dComIfGp_checkPlayerStatus0(0, 0x08000000))) || dComIfG_Bgsp().GetWallCode(mLinkLinChk) != 6) && (!checkWolf() || dComIfG_Bgsp().GetWallCode(mLinkLinChk) != 7)) {
|
||||
cM3dGPla sp3C;
|
||||
dComIfG_Bgsp().GetTriPla(mLinkLinChk, &sp3C);
|
||||
cM3dGPla tripla;
|
||||
dComIfG_Bgsp().GetTriPla(mLinkLinChk, &tripla);
|
||||
|
||||
int temp_r27 = dComIfG_Bgsp().GetSpecialCode(mLinkLinChk);
|
||||
if (cBgW_CheckBWall(sp3C.mNormal.y) || (param_3 == 2 && cBgW_CheckBGround(sp3C.mNormal.y))) {
|
||||
if (cBgW_CheckBWall(tripla.mNormal.y) || (param_3 == 2 && cBgW_CheckBGround(tripla.mNormal.y))) {
|
||||
cXyz sp1C = *param_1 - mLinkLinChk.GetCross();
|
||||
s16 temp_r26 = sp3C.mNormal.atan2sX_Z();
|
||||
s16 temp_r26 = tripla.mNormal.atan2sX_Z();
|
||||
s16 temp_r3 = sp1C.atan2sX_Z();
|
||||
|
||||
if (abs((s16)((temp_r3 + 0x8000) - temp_r26)) > 0x3000) {
|
||||
@@ -172,34 +188,34 @@ int daAlink_c::getCrawlMoveVec(cXyz* param_0, cXyz* param_1, cXyz* param_2, int
|
||||
|
||||
f32 temp_f31 = -sp1C.absXZ() * cM_scos(((temp_r3 - temp_r26) - 0x8000));
|
||||
|
||||
param_2->x = temp_f31 * sp3C.mNormal.x;
|
||||
param_2->x = temp_f31 * tripla.mNormal.x;
|
||||
if (param_3 != 1) {
|
||||
param_2->y = 0.0f;
|
||||
} else {
|
||||
param_2->y = sp1C.y;
|
||||
}
|
||||
param_2->z = temp_f31 * sp3C.mNormal.z;
|
||||
param_2->z = temp_f31 * tripla.mNormal.z;
|
||||
|
||||
if (param_5 != NULL && (dKy_pol_argument_get(&mLinkLinChk) & 0x60)) {
|
||||
*param_5 = 3;
|
||||
|
||||
cM3dGPla sp28;
|
||||
dComIfG_Bgsp().GetTriPla(mLinkLinChk, &sp28);
|
||||
cM3dGPla tripla;
|
||||
dComIfG_Bgsp().GetTriPla(mLinkLinChk, &tripla);
|
||||
|
||||
field_0x311e = sp28.mNormal.atan2sX_Z();
|
||||
field_0x311e = tripla.mNormal.atan2sX_Z();
|
||||
|
||||
if (checkIcePolygonDamage(&mLinkLinChk)) {
|
||||
*param_5 |= 0x80;
|
||||
*param_5 |= (u8)0x80;
|
||||
}
|
||||
|
||||
if (dKy_pol_argument_get(&mLinkLinChk) & 0x20) {
|
||||
*param_5 |= 0x40;
|
||||
*param_5 |= (u8)0x40;
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (param_3 == 1 && (temp_r27 == 1 || (sp3C.mNormal.y < field_0x3470 && temp_r27 == 2))) {
|
||||
if (param_3 == 1 && (temp_r27 == 1 || (tripla.mNormal.y < field_0x3470 && temp_r27 == 2))) {
|
||||
*param_2 = *param_1 - mLinkLinChk.GetCross();
|
||||
return 1;
|
||||
}
|
||||
@@ -233,24 +249,24 @@ void daAlink_c::crawlBgCheck(cXyz* param_0, cXyz* param_1, int param_2) {
|
||||
}
|
||||
|
||||
BOOL daAlink_c::checkCrawlSideWall(cXyz* param_0, cXyz* param_1, cXyz* param_2, cXyz* param_3,
|
||||
s16* param_4, s16* param_5) {
|
||||
s16* param_4, s16* param_5) {
|
||||
cXyz sp58;
|
||||
cXyz sp4C;
|
||||
|
||||
if (commonLineCheck(param_0, param_1)) {
|
||||
cM3dGPla sp64;
|
||||
cM3dGPla tripla;
|
||||
*param_2 = mLinkLinChk.GetCross();
|
||||
dComIfG_Bgsp().GetTriPla(mLinkLinChk, &sp64);
|
||||
dComIfG_Bgsp().GetTriPla(mLinkLinChk, &tripla);
|
||||
|
||||
*param_4 = sp64.mNormal.atan2sX_Z();
|
||||
*param_4 = tripla.mNormal.atan2sX_Z();
|
||||
|
||||
sp4C = *param_2 + (sp64.mNormal * 95.0f);
|
||||
sp4C = *param_2 + (tripla.mNormal * 95.0f);
|
||||
sp58 = (sp4C + *param_2) * 0.5f;
|
||||
if (commonLineCheck(&sp58, &sp4C)) {
|
||||
*param_3 = mLinkLinChk.GetCross();
|
||||
dComIfG_Bgsp().GetTriPla(mLinkLinChk, &sp64);
|
||||
dComIfG_Bgsp().GetTriPla(mLinkLinChk, &tripla);
|
||||
|
||||
*param_5 = sp64.mNormal.atan2sX_Z();
|
||||
*param_5 = tripla.mNormal.atan2sX_Z();
|
||||
|
||||
cXyz sp40 = *param_2 - *param_3;
|
||||
f32 temp_f31 = sp40.abs2XZ();
|
||||
@@ -265,25 +281,25 @@ BOOL daAlink_c::checkCrawlSideWall(cXyz* param_0, cXyz* param_1, cXyz* param_2,
|
||||
|
||||
void daAlink_c::decideCrawlDoStatus() {
|
||||
if (dComIfGp_checkCameraAttentionStatus(field_0x317c, 0x80)) {
|
||||
if (checkSubjectEnd(1) || mWaterY > current.pos.y) {
|
||||
if (checkSubjectEnd(TRUE) || mWaterY > current.pos.y) {
|
||||
dComIfGp_clearPlayerStatus0(0, 0x2000);
|
||||
}
|
||||
} else {
|
||||
dCamera_c* camera = dCam_getBody();
|
||||
} else if (dCam_getBody()->ChangeModeOK(4) && mWaterY <= current.pos.y) {
|
||||
onResetFlg0(RFLG0_UNK_4000000);
|
||||
|
||||
if (camera->ChangeModeOK(4) && mWaterY <= current.pos.y) {
|
||||
onResetFlg0(RFLG0_UNK_4000000);
|
||||
|
||||
if (dComIfGp_checkCameraAttentionStatus(field_0x317c, 0x1000) && !checkEventRun()) {
|
||||
setSubjectMode();
|
||||
}
|
||||
if (dComIfGp_checkCameraAttentionStatus(field_0x317c, 0x1000) && !checkEventRun()) {
|
||||
setSubjectMode();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BOOL daAlink_c::checkNotCrawlStand(cXyz* param_0) {
|
||||
mLinkRoofChk.SetPos(*param_0);
|
||||
return dComIfG_Bgsp().RoofChk(&mLinkRoofChk) - current.pos.y <= field_0x598;
|
||||
if (dComIfG_Bgsp().RoofChk(&mLinkRoofChk) - current.pos.y <= mHeight) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL daAlink_c::checkNotCrawlStand(cXyz* param_0, cXyz* param_1) {
|
||||
@@ -303,6 +319,8 @@ BOOL daAlink_c::checkNotCrawlStand(cXyz* param_0, cXyz* param_1) {
|
||||
}
|
||||
|
||||
BOOL daAlink_c::checkCrawlInHoll(cXyz* param_0, cXyz* param_1, cXyz* param_2, int param_3) {
|
||||
UNUSED(param_3);
|
||||
|
||||
cXyz spC0;
|
||||
cXyz spB4;
|
||||
cXyz spA8;
|
||||
@@ -325,7 +343,9 @@ BOOL daAlink_c::checkCrawlInHoll(cXyz* param_0, cXyz* param_1, cXyz* param_2, in
|
||||
*param_2 += sp90;
|
||||
spB4 = (*param_2 * 2.0f) - spC0;
|
||||
|
||||
if (checkCrawlSideWall(param_2, &spC0, &spA8, &sp9C, &sp16, &sp14) || checkCrawlSideWall(param_2, &spB4, &sp9C, &spA8, &sp14, &sp16)) {
|
||||
if (checkCrawlSideWall(param_2, &spC0, &spA8, &sp9C, &sp16, &sp14) ||
|
||||
checkCrawlSideWall(param_2, &spB4, &sp9C, &spA8, &sp14, &sp16))
|
||||
{
|
||||
field_0x3198 = 1;
|
||||
field_0x37c8 = ((spA8 + sp9C) * 0.5f) - sp90;
|
||||
mProcVar2.field_0x300c = sp16 + 0x4000;
|
||||
@@ -336,9 +356,7 @@ BOOL daAlink_c::checkCrawlInHoll(cXyz* param_0, cXyz* param_1, cXyz* param_2, in
|
||||
}
|
||||
|
||||
void daAlink_c::setCrawlMoveHoll() {
|
||||
f32 frame_ctrl_rate = mUnderFrameCtrl[0].getRate();
|
||||
|
||||
if (frame_ctrl_rate) {
|
||||
if (mUnderFrameCtrl[0].getRate()) {
|
||||
cLib_addCalcAngleS(&shape_angle.y, mProcVar2.field_0x300c, 5, 0x1000, 0x800);
|
||||
current.angle.y = shape_angle.y;
|
||||
}
|
||||
@@ -357,7 +375,7 @@ void daAlink_c::setCrawlMoveAngle() {
|
||||
cXyz sp2C;
|
||||
cXyz sp38;
|
||||
|
||||
cLib_addCalcAngleS(&shape_angle.y, field_0x2fe2, mpHIO->mCrouch.m.mCrawlTurnRate,
|
||||
cLib_addCalcAngleS(&shape_angle.y, mMoveAngle, mpHIO->mCrouch.m.mCrawlTurnRate,
|
||||
mpHIO->mCrouch.m.mCrawlTurnMax,
|
||||
mpHIO->mCrouch.m.mCrawlTurnMin);
|
||||
|
||||
@@ -386,14 +404,14 @@ void daAlink_c::setCrawlMoveAngle() {
|
||||
}
|
||||
}
|
||||
|
||||
void daAlink_c::stopHalfMoveAnime(f32 param_0) {
|
||||
void daAlink_c::stopHalfMoveAnime(f32 i_frame) {
|
||||
daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
|
||||
|
||||
f32 frame;
|
||||
if (frame_ctrl->checkPass(0.0f)) {
|
||||
frame = 0.0f;
|
||||
} else {
|
||||
frame = param_0;
|
||||
frame = i_frame;
|
||||
}
|
||||
|
||||
frame_ctrl->setRate(0.0f);
|
||||
@@ -402,11 +420,11 @@ void daAlink_c::stopHalfMoveAnime(f32 param_0) {
|
||||
}
|
||||
|
||||
void daAlink_c::setCrawlAutoMoveAimPos() {
|
||||
int temp_r30 = getDirectionFromShapeAngle();
|
||||
int direction = getDirectionFromShapeAngle();
|
||||
f32 temp_f31 = cM_ssin(shape_angle.y);
|
||||
f32 temp_f30 = cM_scos(shape_angle.y);
|
||||
|
||||
if (temp_r30 == 2 && (field_0x3198 & 4)) {
|
||||
if (direction == DIR_LEFT && (field_0x3198 & 4)) {
|
||||
field_0x37c8.x += 1.5f * (95.0f * temp_f30);
|
||||
field_0x37c8.z -= 1.5f * (95.0f * temp_f31);
|
||||
|
||||
@@ -419,7 +437,7 @@ void daAlink_c::setCrawlAutoMoveAimPos() {
|
||||
}
|
||||
|
||||
mProcVar0.field_0x3008 = -1;
|
||||
} else if (temp_r30 == 3 && (field_0x3198 & 8)) {
|
||||
} else if (direction == DIR_RIGHT && (field_0x3198 & 8)) {
|
||||
field_0x37c8.x -= 1.5f * (95.0f * temp_f30);
|
||||
field_0x37c8.z += 1.5f * (95.0f * temp_f31);
|
||||
|
||||
@@ -432,14 +450,14 @@ void daAlink_c::setCrawlAutoMoveAimPos() {
|
||||
}
|
||||
|
||||
mProcVar0.field_0x3008 = -1;
|
||||
} else if ((field_0x3198 & 1) && ((shape_angle.y == current.angle.y && temp_r30 == 0) || (shape_angle.y != current.angle.y && temp_r30 == 1))) {
|
||||
} else if ((field_0x3198 & 1) && ((shape_angle.y == current.angle.y && direction == DIR_FORWARD) || (shape_angle.y != current.angle.y && direction == DIR_BACKWARD))) {
|
||||
field_0x37c8.x += 1.5f * (95.0f * cM_ssin(current.angle.y));
|
||||
field_0x37c8.z += 1.5f * (95.0f * cM_scos(current.angle.y));
|
||||
|
||||
mProcVar2.field_0x300c = shape_angle.y;
|
||||
mProcVar3.field_0x300e = 0;
|
||||
mProcVar0.field_0x3008 = -1;
|
||||
} else if ((shape_angle.y == current.angle.y && temp_r30 == 1) || (shape_angle.y != current.angle.y && temp_r30 == 0)) {
|
||||
} else if ((shape_angle.y == current.angle.y && direction == DIR_BACKWARD) || (shape_angle.y != current.angle.y && direction == DIR_FORWARD)) {
|
||||
current.angle.y += 0x8000;
|
||||
field_0x37c8.x -= 1.5f * (95.0f * cM_ssin(current.angle.y));
|
||||
field_0x37c8.z -= 1.5f * (95.0f * cM_scos(current.angle.y));
|
||||
@@ -503,50 +521,50 @@ int daAlink_c::procCrawlStart() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
int daAlink_c::procCrawlMoveInit(s16 param_0, s16 param_1) {
|
||||
int daAlink_c::procCrawlMoveInit(s16 i_angleX, s16 i_angleZ) {
|
||||
BOOL var_r29;
|
||||
BOOL var_r28 = 0;
|
||||
BOOL var_r28 = FALSE;
|
||||
|
||||
if (mProcID == PROC_CRAWL_AUTO_MOVE) {
|
||||
var_r29 = 0;
|
||||
var_r29 = FALSE;
|
||||
} else {
|
||||
var_r29 = 1;
|
||||
var_r29 = TRUE;
|
||||
if (mProcID == PROC_CRAWL_START) {
|
||||
var_r28 = 1;
|
||||
var_r28 = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
BOOL var_r27;
|
||||
if (dComIfGp_checkPlayerStatus0(0, 0x2000)) {
|
||||
var_r27 = 1;
|
||||
var_r27 = TRUE;
|
||||
} else {
|
||||
var_r27 = 0;
|
||||
var_r27 = FALSE;
|
||||
}
|
||||
|
||||
commonProcInit(PROC_CRAWL_MOVE);
|
||||
mProcVar3.field_0x300e = 0;
|
||||
|
||||
if (var_r29 != 0) {
|
||||
f32 var_f31 = getCrawlMoveAnmSpeed();
|
||||
if (var_r28 != 0) {
|
||||
if (var_r29) {
|
||||
f32 anm_speed = getCrawlMoveAnmSpeed();
|
||||
if (var_r28) {
|
||||
mProcVar3.field_0x300e = 1;
|
||||
} else if (getDirectionFromShapeAngle() == 1) {
|
||||
var_f31 *= -1.0f;
|
||||
} else if (getDirectionFromShapeAngle() == DIR_BACKWARD) {
|
||||
anm_speed *= -1.0f;
|
||||
}
|
||||
|
||||
current.angle.y = shape_angle.y;
|
||||
setSingleAnimeBaseSpeed(ANM_CRAWL, var_f31, mpHIO->mCrouch.m.mCrawlInterpolation);
|
||||
setSingleAnimeBaseSpeed(ANM_CRAWL, anm_speed, mpHIO->mCrouch.m.mCrawlInterpolation);
|
||||
}
|
||||
|
||||
field_0x3198 = var_r29 ^ 1;
|
||||
shape_angle.x = param_0;
|
||||
shape_angle.z = param_1;
|
||||
shape_angle.x = i_angleX;
|
||||
shape_angle.z = i_angleZ;
|
||||
field_0x33cc = 1.0f;
|
||||
field_0x2f99 = 0xC;
|
||||
|
||||
dComIfGp_setPlayerStatus0(0, 0x08000000);
|
||||
|
||||
if (var_r27 != 0) {
|
||||
if (var_r27) {
|
||||
dComIfGp_setPlayerStatus0(0, 0x2000);
|
||||
}
|
||||
|
||||
@@ -554,7 +572,7 @@ int daAlink_c::procCrawlMoveInit(s16 param_0, s16 param_1) {
|
||||
}
|
||||
|
||||
int daAlink_c::procCrawlMove() {
|
||||
daPy_frameCtrl_c* temp_r29 = &mUnderFrameCtrl[0];
|
||||
daPy_frameCtrl_c* framectrl = &mUnderFrameCtrl[0];
|
||||
cXyz sp54;
|
||||
cXyz sp48;
|
||||
cXyz sp3C;
|
||||
@@ -587,33 +605,33 @@ int daAlink_c::procCrawlMove() {
|
||||
if ((var_r27 != 0 && mProcVar3.field_0x300e == 0) || getSlidePolygon(&sp60) || checkCrawlWaterIn()) {
|
||||
procCrawlEndInit(1, shape_angle.x, shape_angle.z);
|
||||
} else {
|
||||
BOOL var_r26 = 0;
|
||||
BOOL var_r26 = FALSE;
|
||||
f32 temp_f31 = getCrawlMoveAnmSpeed();
|
||||
|
||||
if (temp_r29->getRate() > 0.0f) {
|
||||
setWaterInAnmRate(temp_r29, temp_f31);
|
||||
} else if (temp_r29->getRate() < 0.0f) {
|
||||
setWaterInAnmRate(temp_r29, -temp_f31);
|
||||
if (framectrl->getRate() > 0.0f) {
|
||||
setWaterInAnmRate(framectrl, temp_f31);
|
||||
} else if (framectrl->getRate() < 0.0f) {
|
||||
setWaterInAnmRate(framectrl, -temp_f31);
|
||||
} else {
|
||||
var_r26 = 1;
|
||||
var_r26 = TRUE;
|
||||
}
|
||||
|
||||
if (var_r26 == 1 || temp_r29->checkPass(0.0f) || temp_r29->checkPass(17.0f)) {
|
||||
if (var_r26 == TRUE || framectrl->checkPass(0.0f) || framectrl->checkPass(17.0f)) {
|
||||
if (mProcVar3.field_0x300e != 0) {
|
||||
mProcVar3.field_0x300e--;
|
||||
setWaterInAnmRate(temp_r29, temp_f31);
|
||||
temp_r29->setLoop(0);
|
||||
setWaterInAnmRate(framectrl, temp_f31);
|
||||
framectrl->setLoop(0);
|
||||
} else if (checkInputOnR()) {
|
||||
if (getDirectionFromShapeAngle() != 1) {
|
||||
setWaterInAnmRate(temp_r29, temp_f31);
|
||||
temp_r29->setLoop(0);
|
||||
if (getDirectionFromShapeAngle() != DIR_BACKWARD) {
|
||||
setWaterInAnmRate(framectrl, temp_f31);
|
||||
framectrl->setLoop(0);
|
||||
} else {
|
||||
setWaterInAnmRate(temp_r29, -temp_f31);
|
||||
temp_r29->setLoop(temp_r29->getEnd());
|
||||
setWaterInAnmRate(framectrl, -temp_f31);
|
||||
framectrl->setLoop(framectrl->getEnd());
|
||||
}
|
||||
|
||||
initBasAnime();
|
||||
} else if (var_r26 == 0) {
|
||||
} else if (var_r26 == FALSE) {
|
||||
stopHalfMoveAnime(17.0f);
|
||||
}
|
||||
}
|
||||
@@ -624,9 +642,9 @@ int daAlink_c::procCrawlMove() {
|
||||
|
||||
if (checkCrawlInHoll(&sp54, &sp3C, &sp18, var_r27)) {
|
||||
setCrawlMoveHoll();
|
||||
} else if (sp8 != 0 && temp_r25 && temp_r24 && temp_r23 && var_r27 == 0 && changeCrawlAutoMoveProc(&sp18) ) {
|
||||
} else if (sp8 != 0 && temp_r25 && temp_r24 && temp_r23 && !var_r27 && changeCrawlAutoMoveProc(&sp18) ) {
|
||||
return 1;
|
||||
} else if (mProcVar3.field_0x300e == 0 && checkInputOnR() && temp_r29->getRate() > 0.0f) {
|
||||
} else if (mProcVar3.field_0x300e == 0 && checkInputOnR() && framectrl->getRate() > 0.0f) {
|
||||
setCrawlMoveAngle();
|
||||
}
|
||||
|
||||
@@ -648,7 +666,13 @@ int daAlink_c::procCrawlMove() {
|
||||
}
|
||||
|
||||
int daAlink_c::procCrawlAutoMoveInit(int param_0, cXyz* param_1) {
|
||||
BOOL var_r30 = dComIfGp_checkPlayerStatus0(0, 0x2000) != 0 ? TRUE : FALSE;
|
||||
BOOL var_r30;
|
||||
if (dComIfGp_checkPlayerStatus0(0, 0x2000)) {
|
||||
var_r30 = TRUE;
|
||||
} else {
|
||||
var_r30 = FALSE;
|
||||
}
|
||||
|
||||
commonProcInit(PROC_CRAWL_AUTO_MOVE);
|
||||
field_0x37c8 = *param_1;
|
||||
field_0x33cc = 1.0f;
|
||||
@@ -671,24 +695,24 @@ int daAlink_c::procCrawlAutoMoveInit(int param_0, cXyz* param_1) {
|
||||
int daAlink_c::procCrawlAutoMove() {
|
||||
field_0x2f99 = 0xC;
|
||||
|
||||
daPy_frameCtrl_c* temp_r29 = &mUnderFrameCtrl[0];
|
||||
s16 temp_r27 = shape_angle.y;
|
||||
s16 temp_r26 = current.angle.y;
|
||||
daPy_frameCtrl_c* framectrl = &mUnderFrameCtrl[0];
|
||||
s16 prev_shapeangle = shape_angle.y;
|
||||
s16 prev_angle = current.angle.y;
|
||||
|
||||
if (mProcVar0.field_0x3008 > 0) {
|
||||
if (temp_r29->checkPass(0.0f) || temp_r29->checkPass(17.0f)) {
|
||||
if (framectrl->checkPass(0.0f) || framectrl->checkPass(17.0f)) {
|
||||
stopHalfMoveAnime(17.0f);
|
||||
mNormalSpeed = 0.0f;
|
||||
} else if (checkAnmEnd(temp_r29)) {
|
||||
} else if (checkAnmEnd(framectrl)) {
|
||||
mNormalSpeed = 0.0f;
|
||||
mProcVar0.field_0x3008 -= 1;
|
||||
mProcVar0.field_0x3008--;
|
||||
}
|
||||
|
||||
setCrawlMoveDirectionArrow();
|
||||
decideCrawlDoStatus();
|
||||
|
||||
shape_angle.y = temp_r27;
|
||||
current.angle.y = temp_r26;
|
||||
shape_angle.y = prev_shapeangle;
|
||||
current.angle.y = prev_angle;
|
||||
} else if (mProcVar0.field_0x3008 == 0) {
|
||||
setCrawlMoveDirectionArrow();
|
||||
if (checkInputOnR()) {
|
||||
@@ -698,19 +722,19 @@ int daAlink_c::procCrawlAutoMove() {
|
||||
dComIfGp_setAdvanceDirection(0);
|
||||
|
||||
if (shape_angle.y == current.angle.y) {
|
||||
setWaterInAnmRate(temp_r29, 2.0f);
|
||||
temp_r29->setLoop(0);
|
||||
setWaterInAnmRate(framectrl, 2.0f);
|
||||
framectrl->setLoop(0);
|
||||
} else {
|
||||
setWaterInAnmRate(temp_r29, -2.0f);
|
||||
temp_r29->setLoop(temp_r29->getEnd());
|
||||
setWaterInAnmRate(framectrl, -2.0f);
|
||||
framectrl->setLoop(framectrl->getEnd());
|
||||
}
|
||||
|
||||
initBasAnime();
|
||||
}
|
||||
} else {
|
||||
decideCrawlDoStatus();
|
||||
shape_angle.y = temp_r27;
|
||||
current.angle.y = temp_r26;
|
||||
shape_angle.y = prev_shapeangle;
|
||||
current.angle.y = prev_angle;
|
||||
}
|
||||
} else {
|
||||
int var_r28 = 1;
|
||||
@@ -754,55 +778,55 @@ int daAlink_c::procCrawlAutoMove() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
int daAlink_c::procCrawlEndInit(int param_0, s16 param_1, s16 param_2) {
|
||||
daPy_frameCtrl_c* temp_r29 = &mUnderFrameCtrl[0];
|
||||
f32 var_f31 = temp_r29->getFrame();
|
||||
int daAlink_c::procCrawlEndInit(int param_0, s16 i_angleX, s16 i_angleZ) {
|
||||
daPy_frameCtrl_c* framectrl = &mUnderFrameCtrl[0];
|
||||
f32 frame = framectrl->getFrame();
|
||||
|
||||
commonProcInit(PROC_CRAWL_END);
|
||||
|
||||
current.angle.y = shape_angle.y;
|
||||
field_0x2f99 = 0xC;
|
||||
|
||||
const daAlinkHIO_anm_c* temp_r30 = &mpHIO->mCrouch.m.mCrawlEndAnm;
|
||||
const daAlinkHIO_anm_c* anmParams = &mpHIO->mCrouch.m.mCrawlEndAnm;
|
||||
|
||||
f32 var_f30;
|
||||
f32 morf;
|
||||
if (param_0 != 0) {
|
||||
var_f30 = temp_r30->mInterpolation;
|
||||
morf = anmParams->mInterpolation;
|
||||
} else {
|
||||
var_f30 = -1.0f;
|
||||
morf = -1.0f;
|
||||
}
|
||||
|
||||
setSingleAnime(ANM_CRAWL_START, temp_r30->mSpeed, temp_r30->mStartFrame, temp_r30->mEndFrame, var_f30);
|
||||
setSingleAnime(ANM_CRAWL_START, anmParams->mSpeed, anmParams->mStartFrame, anmParams->mEndFrame, morf);
|
||||
|
||||
if (param_0 == 0) {
|
||||
if (temp_r30->mStartFrame > var_f31) {
|
||||
var_f31 = temp_r30->mStartFrame;
|
||||
} else if (temp_r30->mEndFrame <= var_f31) {
|
||||
var_f31 = temp_r30->mEndFrame;
|
||||
if (anmParams->mStartFrame > frame) {
|
||||
frame = anmParams->mStartFrame;
|
||||
} else if (anmParams->mEndFrame <= frame) {
|
||||
frame = anmParams->mEndFrame;
|
||||
}
|
||||
|
||||
temp_r29->setFrame(var_f31);
|
||||
getNowAnmPackUnder(UNDER_0)->setFrame(var_f31);
|
||||
framectrl->setFrame(frame);
|
||||
getNowAnmPackUnder(UNDER_0)->setFrame(frame);
|
||||
}
|
||||
|
||||
J3DTransformInfo sp10;
|
||||
getNowAnmPackUnder(UNDER_0)->getTransform(0, &sp10);
|
||||
J3DTransformInfo transinfo;
|
||||
getNowAnmPackUnder(UNDER_0)->getTransform(0, &transinfo);
|
||||
|
||||
field_0x34d4.x = sp10.mTranslate.x;
|
||||
field_0x34d4.y = sp10.mTranslate.y;
|
||||
field_0x34d4.z = sp10.mTranslate.z;
|
||||
field_0x34d4.x = transinfo.mTranslate.x;
|
||||
field_0x34d4.y = transinfo.mTranslate.y;
|
||||
field_0x34d4.z = transinfo.mTranslate.z;
|
||||
|
||||
mNormalSpeed = 0.0f;
|
||||
shape_angle.x = param_1;
|
||||
shape_angle.z = param_2;
|
||||
shape_angle.x = i_angleX;
|
||||
shape_angle.z = i_angleZ;
|
||||
|
||||
if (temp_r30->mCancelFrame > temp_r30->mStartFrame) {
|
||||
field_0x347c = temp_r30->mCancelFrame;
|
||||
if (anmParams->mCancelFrame > anmParams->mStartFrame) {
|
||||
field_0x347c = anmParams->mCancelFrame;
|
||||
} else {
|
||||
field_0x347c = temp_r30->mStartFrame;
|
||||
field_0x347c = anmParams->mStartFrame;
|
||||
}
|
||||
|
||||
field_0x3478 = 1.0f / (temp_r30->mEndFrame - field_0x347c);
|
||||
field_0x3478 = 1.0f / (anmParams->mEndFrame - field_0x347c);
|
||||
field_0x3588 = l_waitBaseAnime;
|
||||
return 1;
|
||||
}
|
||||
|
||||
+536
-425
File diff suppressed because it is too large
Load Diff
+393
-377
File diff suppressed because it is too large
Load Diff
+695
-434
File diff suppressed because it is too large
Load Diff
+609
-509
File diff suppressed because it is too large
Load Diff
+466
-436
File diff suppressed because it is too large
Load Diff
+115
-101
@@ -6,24 +6,19 @@
|
||||
#include "d/actor/d_a_alink.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "d/actor/d_a_obj_gra2.h"
|
||||
#include "d/actor/d_a_npc_kn.h"
|
||||
|
||||
BOOL daAlink_c::checkEnemyGroup(fopAc_ac_c* i_actor) {
|
||||
return i_actor != NULL && (fopAcM_GetGroup(i_actor) == fopAc_ENEMY_e ||
|
||||
fopAcM_GetName(i_actor) == PROC_E_ZH || checkSpecialNpc(i_actor));
|
||||
return i_actor != NULL
|
||||
&& (fopAcM_GetGroup(i_actor) == fopAc_ENEMY_e || fopAcM_GetName(i_actor) == PROC_E_ZH || checkSpecialNpc(i_actor));
|
||||
}
|
||||
|
||||
// properly setup later
|
||||
class daNpc_Kn_c : public fopAc_ac_c {
|
||||
public:
|
||||
bool checkBattleMode() { return true; }
|
||||
};
|
||||
|
||||
BOOL daAlink_c::checkSpecialNpc(fopAc_ac_c* i_actor) {
|
||||
s16 name = fopAcM_GetName(i_actor);
|
||||
|
||||
return ((name == PROC_NPC_KAKASHI || name == PROC_NPC_KN) &&
|
||||
static_cast<daNpc_Kn_c*>(i_actor)->checkBattleMode()) ||
|
||||
(name == PROC_OBJ_GRA && !static_cast<daObj_GrA_c*>(i_actor)->checkNpcObjGra());
|
||||
return name == PROC_NPC_KAKASHI ||
|
||||
(name == PROC_NPC_KN && static_cast<daNpc_Kn_c*>(i_actor)->checkBattleMode()) ||
|
||||
(name == PROC_OBJ_GRA && !static_cast<daObj_GrA_c*>(i_actor)->checkNpcObjGra());
|
||||
}
|
||||
|
||||
BOOL daAlink_c::checkShieldAttackEmphasys() {
|
||||
@@ -56,20 +51,29 @@ void daAlink_c::stickArrowIncrement(int param_0) {
|
||||
}
|
||||
|
||||
if (arrow_num != 0) {
|
||||
if (checkShieldGet() && checkItemGet(fpcNm_ITEM_BOW, true)) {
|
||||
int arrow_type = arrow_num == 1 ? fpcNm_ITEM_ARROW_1 : fpcNm_ITEM_ARROW_10;
|
||||
if (checkShieldGet()
|
||||
#if !PLATFORM_SHIELD
|
||||
&& checkItemGet(fpcNm_ITEM_BOW, true)
|
||||
#endif
|
||||
)
|
||||
{
|
||||
int arrow_type;
|
||||
if (arrow_num == 1) {
|
||||
arrow_type = fpcNm_ITEM_ARROW_1;
|
||||
} else {
|
||||
arrow_type = fpcNm_ITEM_ARROW_10;
|
||||
}
|
||||
|
||||
dComIfGp_setItemArrowNumCount(arrow_num);
|
||||
fopAcM_createItemForSimpleDemo(¤t.pos, arrow_type, -1, NULL, NULL, 0.0f,
|
||||
0.0f);
|
||||
}
|
||||
|
||||
onResetFlg0(RFLG0_UNK_1);
|
||||
onResetFlg0(RFLG0_STICK_ARROW_RESET);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void daAlink_c::setArrowShieldActor(fopAc_ac_c* i_actor, int param_1) {
|
||||
fpc_ProcID new_arrow_id = fopAcM_GetID(i_actor);
|
||||
|
||||
@@ -106,12 +110,11 @@ void daAlink_c::setArrowShieldActor(fopAc_ac_c* i_actor, int param_1) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BOOL daAlink_c::checkWoodShieldEquipNotIronBall() const {
|
||||
return checkWoodShieldEquip() && !checkIronBallEquip();
|
||||
}
|
||||
|
||||
void daAlink_c::getArrowShieldOffset(cXyz const* param_0, csXyz const* param_1, cXyz* param_2,
|
||||
void daAlink_c::getArrowShieldOffset(const cXyz* param_0, const csXyz* param_1, cXyz* param_2,
|
||||
cXyz* param_3) const {
|
||||
cXyz sp54;
|
||||
mDoMtx_stack_c::ZXYrotS(param_1->x + cM_rndFX(0x1000), param_1->y + cM_rndFX(0x1000), 0);
|
||||
@@ -120,7 +123,7 @@ void daAlink_c::getArrowShieldOffset(cXyz const* param_0, csXyz const* param_1,
|
||||
mDoMtx_stack_c::inverse();
|
||||
mDoMtx_stack_c::multVecSR(&sp54, param_3);
|
||||
|
||||
static Vec const localCenter = {-15.0f, 0.0f, 18.0f};
|
||||
static const Vec localCenter = {-15.0f, 0.0f, 18.0f};
|
||||
cXyz sp60;
|
||||
mDoMtx_multVec(getShieldMtx(), &localCenter, &sp60);
|
||||
|
||||
@@ -140,9 +143,8 @@ void daAlink_c::getArrowShieldOffset(cXyz const* param_0, csXyz const* param_1,
|
||||
mDoMtx_stack_c::multVec(&sp6C, param_2);
|
||||
}
|
||||
|
||||
|
||||
void daAlink_c::setArrowShieldPos(cXyz* param_0, csXyz* param_1, cXyz const* param_2,
|
||||
cXyz const* param_3) const {
|
||||
void daAlink_c::setArrowShieldPos(cXyz* param_0, csXyz* param_1, const cXyz* param_2,
|
||||
const cXyz* param_3) const {
|
||||
cXyz sp1C;
|
||||
|
||||
mDoMtx_multVecSR(getShieldMtx(), param_3, &sp1C);
|
||||
@@ -153,9 +155,12 @@ void daAlink_c::setArrowShieldPos(cXyz* param_0, csXyz* param_1, cXyz const* par
|
||||
}
|
||||
|
||||
BOOL daAlink_c::checkUpperGuardAnime() const {
|
||||
return checkNoResetFlg2(FLG2_UNK_8000000) && !checkEventRun() &&
|
||||
!checkNoResetFlg0(FLG0_UNK_2) && mProcID != PROC_GUARD_BREAK &&
|
||||
mProcID != PROC_CUT_REVERSE && mProcID != PROC_GUARD_ATTACK;
|
||||
return checkNoResetFlg2(FLG2_UNK_8000000) &&
|
||||
!checkEventRun() &&
|
||||
!checkNoResetFlg0(FLG0_UNK_2) &&
|
||||
mProcID != PROC_GUARD_BREAK &&
|
||||
mProcID != PROC_CUT_REVERSE &&
|
||||
mProcID != PROC_GUARD_ATTACK;
|
||||
}
|
||||
|
||||
BOOL daAlink_c::checkPlayerGuard() const {
|
||||
@@ -168,15 +173,20 @@ BOOL daAlink_c::checkPlayerGuardAndAttack() const {
|
||||
}
|
||||
|
||||
BOOL daAlink_c::checkGuardAccept() {
|
||||
return checkModeFlg(0x80) && checkShieldGet() && !checkFmChainGrabAnime() &&
|
||||
return checkModeFlg(0x80) &&
|
||||
checkShieldGet() &&
|
||||
!checkFmChainGrabAnime() &&
|
||||
!checkNotBattleStage();
|
||||
}
|
||||
|
||||
void daAlink_c::setUpperGuardAnime(f32) {
|
||||
void daAlink_c::setUpperGuardAnime(f32 param_0) {
|
||||
UNUSED(param_0);
|
||||
onNoResetFlg2(FLG2_UNK_8000000);
|
||||
}
|
||||
|
||||
void daAlink_c::setShieldGuard() {
|
||||
f32 var_f31 = mNowAnmPackUpper[2].getRatio();
|
||||
|
||||
if ((mProcID == PROC_GUARD_SLIP && mEquipItem != fpcNm_ITEM_IRONBALL) || checkSmallUpperGuardAnime() ||
|
||||
(checkGuardAccept() && !checkGrabAnime() && !checkUpperReadyThrowAnime() &&
|
||||
!checkDkCaught2Anime() && !checkKandelaarSwingAnime() && !checkCutDashAnime() &&
|
||||
@@ -191,28 +201,28 @@ void daAlink_c::setShieldGuard() {
|
||||
|
||||
void daAlink_c::setGuardSe(dCcD_GObjInf* i_objinf) {
|
||||
int var_r31;
|
||||
int var_r30;
|
||||
BOOL isRebound;
|
||||
|
||||
if (checkWoodShieldEquipNotIronBall() && !checkMagicArmorNoDamage()) {
|
||||
var_r31 = 0x29;
|
||||
var_r30 = 0;
|
||||
isRebound = FALSE;
|
||||
} else {
|
||||
var_r31 = 0x28;
|
||||
var_r30 = 1;
|
||||
isRebound = TRUE;
|
||||
}
|
||||
|
||||
u32 hit_se;
|
||||
if (i_objinf->GetTgHitGObj() != NULL && i_objinf->GetTgHitGObj()->GetAtType() == AT_TYPE_BOMB) {
|
||||
hit_se = Z2SE_HIT_METAL_WEAPON;
|
||||
} else {
|
||||
hit_se = i_objinf->GetTgHitObjHitSeID(var_r30);
|
||||
hit_se = i_objinf->GetTgHitObjHitSeID(isRebound);
|
||||
}
|
||||
|
||||
mZ2Link.startCollisionSE(hit_se, var_r31);
|
||||
}
|
||||
|
||||
void daAlink_c::setSmallGuard(dCcD_GObjInf* i_objinf) {
|
||||
setUpperAnimeBase(0x16);
|
||||
setUpperAnimeBase(dRes_ID_ALANM_BCK_ATDEFS_e);
|
||||
cXyz* dmg_vec = getDamageVec(i_objinf);
|
||||
|
||||
mBodyAngle.y = (dmg_vec->atan2sX_Z() + 0x8000) - shape_angle.y;
|
||||
@@ -227,7 +237,7 @@ void daAlink_c::setSmallGuard(dCcD_GObjInf* i_objinf) {
|
||||
mBodyAngle.x = cLib_minMaxLimit<s16>(cM_atan2s(dmg_vec->y, dmg_vec->absXZ()), -mpHIO->mGuard.m.mSmallGuardFBAngleMax, mpHIO->mGuard.m.mSmallGuardFBAngleMax);
|
||||
}
|
||||
|
||||
int daAlink_c::procGuardSlipInit(int param_0, dCcD_GObjInf* param_1) {
|
||||
int daAlink_c::procGuardSlipInit(int i_atSpl, dCcD_GObjInf* i_objinf) {
|
||||
if (mProcID == PROC_GUARD_SLIP) {
|
||||
return 0;
|
||||
}
|
||||
@@ -241,9 +251,11 @@ int daAlink_c::procGuardSlipInit(int param_0, dCcD_GObjInf* param_1) {
|
||||
commonProcInit(PROC_GUARD_SLIP);
|
||||
field_0x2fd4 = 3;
|
||||
|
||||
cXyz* temp_r3 = getDamageVec(param_1);
|
||||
current.angle.y = temp_r3->atan2sX_Z();
|
||||
cXyz* dmg_vec = getDamageVec(i_objinf);
|
||||
current.angle.y = dmg_vec->atan2sX_Z();
|
||||
|
||||
const daAlinkHIO_anm_c* anmParams;
|
||||
daAlink_ANM anm;
|
||||
if (mEquipItem == fpcNm_ITEM_IRONBALL) {
|
||||
setSingleAnimeBase(ANM_IRONBALL_DEF);
|
||||
setIronBallWaitUpperAnime(1);
|
||||
@@ -253,15 +265,14 @@ int daAlink_c::procGuardSlipInit(int param_0, dCcD_GObjInf* param_1) {
|
||||
mProcVar2.field_0x300c = 0;
|
||||
mProcVar3.field_0x300e = 0;
|
||||
} else {
|
||||
const daAlinkHIO_anm_c* var_r27 = &mpHIO->mGuard.m.mGuardHitAnm;
|
||||
daAlink_ANM var_r28;
|
||||
anmParams = &mpHIO->mGuard.m.mGuardHitAnm;
|
||||
if (field_0x2f98 == 2) {
|
||||
var_r28 = ANM_GUARD_LEFT;
|
||||
anm = ANM_GUARD_LEFT;
|
||||
} else {
|
||||
var_r28 = ANM_GUARD_RIGHT;
|
||||
anm = ANM_GUARD_RIGHT;
|
||||
}
|
||||
|
||||
setSingleAnimeParam(var_r28, var_r27);
|
||||
setSingleAnimeParam(anm, anmParams);
|
||||
setUpperGuardAnime(-1.0f);
|
||||
|
||||
mProcVar2.field_0x300c = (current.angle.y + 0x8000) - shape_angle.y;
|
||||
@@ -271,7 +282,7 @@ int daAlink_c::procGuardSlipInit(int param_0, dCcD_GObjInf* param_1) {
|
||||
mProcVar2.field_0x300c = cLib_minMaxLimit<s16>((s16)mProcVar2.field_0x300c, -mpHIO->mGuard.m.mGuardLRAngleMax, mpHIO->mGuard.m.mGuardLRAngleMax);
|
||||
}
|
||||
|
||||
mProcVar3.field_0x300e = cLib_minMaxLimit<s16>(cM_atan2s(temp_r3->y, temp_r3->absXZ()), -mpHIO->mGuard.m.mGuardFBAngleMax, mpHIO->mGuard.m.mGuardFBAngleMax);
|
||||
mProcVar3.field_0x300e = cLib_minMaxLimit<s16>(cM_atan2s(dmg_vec->y, dmg_vec->absXZ()), -mpHIO->mGuard.m.mGuardFBAngleMax, mpHIO->mGuard.m.mGuardFBAngleMax);
|
||||
mProcVar1.field_0x300a = mpHIO->mGuard.m.mGuardBodyInterpolation + 1;
|
||||
mProcVar2.field_0x300c = (mProcVar2.field_0x300c - mBodyAngle.y) / mProcVar1.field_0x300a;
|
||||
mProcVar3.field_0x300e = (mProcVar3.field_0x300e - mBodyAngle.x) / mProcVar1.field_0x300a;
|
||||
@@ -284,7 +295,7 @@ int daAlink_c::procGuardSlipInit(int param_0, dCcD_GObjInf* param_1) {
|
||||
mProcVar4.field_0x3010 = 0;
|
||||
mProcVar5.field_0x3012 = 0;
|
||||
|
||||
if (param_1 != NULL && param_1->GetTgHitAc() != NULL && fopAcM_GetName(param_1->GetTgHitAc()) == PROC_E_MM_MT && param_1->GetTgHitAc()->argument == 1) {
|
||||
if (i_objinf != NULL && i_objinf->GetTgHitAc() != NULL && fopAcM_GetName(i_objinf->GetTgHitAc()) == PROC_E_MM_MT && i_objinf->GetTgHitAc()->argument == 1) {
|
||||
if (checkBootsOrArmorHeavy()) {
|
||||
mNormalSpeed = mpHIO->mGuard.m.mMagneHvyGuardSpeed;
|
||||
mProcVar5.field_0x3012 = 1;
|
||||
@@ -294,13 +305,13 @@ int daAlink_c::procGuardSlipInit(int param_0, dCcD_GObjInf* param_1) {
|
||||
}
|
||||
|
||||
mProcVar4.field_0x3010 = 1;
|
||||
} else if (checkHugeAttack(param_0)) {
|
||||
} else if (checkHugeAttack(i_atSpl)) {
|
||||
if ((!checkBootsOrArmorHeavy() && checkMiddleBossGoronRoom()) || checkStageName("D_MN07B")) {
|
||||
mNormalSpeed = 40.0f;
|
||||
} else {
|
||||
mNormalSpeed = mpHIO->mGuard.m.mGuardSpeedHuge;
|
||||
}
|
||||
} else if (checkLargeAttack(param_0)) {
|
||||
} else if (checkLargeAttack(i_atSpl)) {
|
||||
mNormalSpeed = mpHIO->mGuard.m.mGuardSpeedLarge;
|
||||
} else {
|
||||
mNormalSpeed = mpHIO->mGuard.m.mGuardSpeedNormal;
|
||||
@@ -319,7 +330,7 @@ int daAlink_c::procGuardSlip() {
|
||||
setShapeAngleToAtnActor(0);
|
||||
|
||||
if (mProcVar1.field_0x300a != 0) {
|
||||
mProcVar1.field_0x300a -= 1;
|
||||
mProcVar1.field_0x300a -= (s16)1;
|
||||
mBodyAngle.y += mProcVar2.field_0x300c;
|
||||
mBodyAngle.x += mProcVar3.field_0x300e;
|
||||
}
|
||||
@@ -328,19 +339,19 @@ int daAlink_c::procGuardSlip() {
|
||||
field_0x2f9d = 0x60;
|
||||
}
|
||||
|
||||
f32 var_f31;
|
||||
f32 speed_step;
|
||||
if (checkBootsOrArmorHeavy() && mProcVar4.field_0x3010 == 0) {
|
||||
var_f31 = 2.5f;
|
||||
speed_step = 2.5f;
|
||||
} else {
|
||||
var_f31 = 1.25f;
|
||||
speed_step = 1.25f;
|
||||
}
|
||||
|
||||
if (mProcVar4.field_0x3010 != 0 && mProcVar5.field_0x3012 != checkBootsOrArmorHeavy()) {
|
||||
mNormalSpeed = 0.0f;
|
||||
}
|
||||
|
||||
if (cLib_chaseF(&mNormalSpeed, 0.0f, var_f31) != 0 && checkAnmEnd(&mUnderFrameCtrl[0])) {
|
||||
field_0x814.SetTgApid(0);
|
||||
if (cLib_chaseF(&mNormalSpeed, 0.0f, speed_step) != 0 && checkAnmEnd(&mUnderFrameCtrl[0])) {
|
||||
mCcStts.SetTgApid(0);
|
||||
|
||||
if (!checkGuardActionChange()) {
|
||||
onEndResetFlg1(ERFLG1_UNK_20);
|
||||
@@ -357,41 +368,44 @@ int daAlink_c::procGuardSlip() {
|
||||
}
|
||||
|
||||
int daAlink_c::procGuardAttackInit() {
|
||||
if (mDemo.getDemoMode() == 0x4B && mProcID == PROC_GUARD_ATTACK) {
|
||||
if (mDemo.getDemoMode() == daPy_demo_c::DEMO_GUARD_ATTACK_e && mProcID == PROC_GUARD_ATTACK) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
commonProcInit(PROC_GUARD_ATTACK);
|
||||
const daAlinkHIO_guardAttack_c1* temp_r30 = &mpHIO->mGuard.mAtPush.m;
|
||||
daAlink_ANM anm = ANM_SHIELD_ATTACK;
|
||||
const daAlinkHIO_guardAttack_c1* params = &mpHIO->mGuard.mAtPush.m;
|
||||
|
||||
field_0x2f98 = 3;
|
||||
field_0x34d4 = l_rWaitBaseAnime;
|
||||
field_0x3588 = l_rWaitBaseAnime;
|
||||
|
||||
setCutType(0x29);
|
||||
setSingleAnimeParam(ANM_SHIELD_ATTACK, &temp_r30->mAttackAnm);
|
||||
setCutType(CUT_TYPE_GUARD_ATTACK);
|
||||
u8 atSe = dCcD_SE_SHIELD_ATTACK;
|
||||
|
||||
field_0x3478 = temp_r30->mAttackStartFrame;
|
||||
field_0x347c = temp_r30->mAttackEndFrame;
|
||||
field_0x3480 = temp_r30->mSpeed;
|
||||
setSingleAnimeParam(anm, ¶ms->mAttackAnm);
|
||||
|
||||
if (checkHeavyStateOn(1, 1) != 0) {
|
||||
field_0x3478 = params->mAttackStartFrame;
|
||||
field_0x347c = params->mAttackEndFrame;
|
||||
field_0x3480 = params->mSpeed;
|
||||
|
||||
if (checkHeavyStateOn(TRUE, TRUE)) {
|
||||
field_0x3480 *= mHeavySpeedMultiplier;
|
||||
}
|
||||
|
||||
if (mDemo.getDemoMode() == 0x4B) {
|
||||
if (mDemo.getDemoMode() == daPy_demo_c::DEMO_GUARD_ATTACK_e) {
|
||||
field_0x3484 = 1000.0f;
|
||||
field_0x3488 = 1000.0f;
|
||||
} else {
|
||||
field_0x3484 = temp_r30->mAttackAnm.mCancelFrame;
|
||||
field_0x3488 = temp_r30->mSlashCheckFrame;
|
||||
field_0x3484 = params->mAttackAnm.mCancelFrame;
|
||||
field_0x3488 = params->mSlashCheckFrame;
|
||||
}
|
||||
|
||||
mNormalSpeed = 0.0f;
|
||||
setSwordVoiceSe(Z2SE_AL_V_TATE_OSHI);
|
||||
|
||||
mGuardAtCps.ResetAtHit();
|
||||
mGuardAtCps.SetAtSe(2);
|
||||
mGuardAtCps.SetAtSe(atSe);
|
||||
mGuardAtCps.SetR(mpHIO->mGuard.m.mAttackRadius);
|
||||
|
||||
current.angle.y = shape_angle.y;
|
||||
@@ -405,7 +419,7 @@ int daAlink_c::procGuardAttackInit() {
|
||||
}
|
||||
|
||||
int daAlink_c::procGuardAttack() {
|
||||
daPy_frameCtrl_c* temp_r30 = &mUnderFrameCtrl[0];
|
||||
daPy_frameCtrl_c* framectrl = &mUnderFrameCtrl[0];
|
||||
|
||||
setUpperGuardAnime(-1.0f);
|
||||
field_0x2f99 = 4;
|
||||
@@ -419,17 +433,17 @@ int daAlink_c::procGuardAttack() {
|
||||
|
||||
BOOL var_r29;
|
||||
if (mEquipItem == 0x103 && !checkMagneBootsOn()) {
|
||||
var_r29 = 1;
|
||||
var_r29 = TRUE;
|
||||
if (doTrigger()) {
|
||||
mProcVar3.field_0x300e = 1;
|
||||
}
|
||||
} else {
|
||||
var_r29 = 0;
|
||||
var_r29 = FALSE;
|
||||
}
|
||||
|
||||
if (mProcVar0.field_0x3008 == 0 && mGuardAtCps.ChkAtHit()) {
|
||||
mProcVar0.field_0x3008 = 1;
|
||||
dComIfGp_getVibration().StartShock(3, 1, cXyz(0.0f, 1.0f, 0.0f));
|
||||
dComIfGp_getVibration().StartShock(VIBMODE_S_POWER3, 1, cXyz(0.0f, 1.0f, 0.0f));
|
||||
}
|
||||
|
||||
if (mProcVar5.field_0x3012 != 0 && commonLineCheck(&field_0x3834, &mRightHandPos) && dComIfG_Bgsp().GetWallCode(mLinkLinChk) != 7) {
|
||||
@@ -439,20 +453,20 @@ int daAlink_c::procGuardAttack() {
|
||||
|
||||
if (var_r29) {
|
||||
if (checkCutHeadState()) {
|
||||
setDoStatusEmphasys(0x77);
|
||||
setDoStatusEmphasys(BUTTON_STATUS_HELM_SPLITTER);
|
||||
} else {
|
||||
setDoStatus(0x86);
|
||||
setDoStatus(BUTTON_STATUS_UNK_134);
|
||||
}
|
||||
}
|
||||
|
||||
if (checkAnmEnd(temp_r30)) {
|
||||
if (mDemo.getDemoMode() == 0x4B) {
|
||||
if (checkAnmEnd(framectrl)) {
|
||||
if (mDemo.getDemoMode() == daPy_demo_c::DEMO_GUARD_ATTACK_e) {
|
||||
dComIfGp_evmng_cutEnd(mAlinkStaffId);
|
||||
} else {
|
||||
checkNextAction(0);
|
||||
}
|
||||
} else {
|
||||
if (temp_r30->getFrame() > field_0x3488) {
|
||||
if (framectrl->getFrame() > field_0x3488) {
|
||||
if (mProcVar3.field_0x300e != 0) {
|
||||
return checkDoCutAction();
|
||||
}
|
||||
@@ -462,10 +476,10 @@ int daAlink_c::procGuardAttack() {
|
||||
}
|
||||
}
|
||||
|
||||
if (temp_r30->getFrame() > field_0x3484) {
|
||||
if (framectrl->getFrame() > field_0x3484) {
|
||||
onModeFlg(4);
|
||||
checkNextAction(1);
|
||||
} else if (temp_r30->getFrame() >= field_0x3478 && temp_r30->getFrame() < field_0x347c) {
|
||||
} else if (framectrl->getFrame() >= field_0x3478 && framectrl->getFrame() < field_0x347c) {
|
||||
if (mProcVar5.field_0x3012 == 0) {
|
||||
mNormalSpeed = field_0x3480;
|
||||
}
|
||||
@@ -483,29 +497,29 @@ int daAlink_c::procGuardBreakInit() {
|
||||
setSingleAnimeParam(ANM_GUARD_BREAK, &mpHIO->mGuard.m.mGuardBreakAnm);
|
||||
|
||||
if (mEquipItem == fpcNm_ITEM_IRONBALL) {
|
||||
deleteEquipItem(0, 0);
|
||||
deleteEquipItem(FALSE, FALSE);
|
||||
}
|
||||
|
||||
mNormalSpeed = 0.0f;
|
||||
field_0x3588 = l_halfAtnWaitBaseAnime;
|
||||
dComIfGp_getVibration().StartShock(5, 0x1F, cXyz(0.0f, 1.0f, 0.0f));
|
||||
dComIfGp_getVibration().StartShock(VIBMODE_S_POWER5, 0x1F, cXyz(0.0f, 1.0f, 0.0f));
|
||||
voiceStart(Z2SE_AL_V_GUARD_BROKEN);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int daAlink_c::procGuardBreak() {
|
||||
daPy_frameCtrl_c* temp_r30 = &mUnderFrameCtrl[0];
|
||||
daPy_frameCtrl_c* framectrl = &mUnderFrameCtrl[0];
|
||||
|
||||
setUpperGuardAnime(-1.0f);
|
||||
onEndResetFlg0(ERFLG0_UNK_8000000);
|
||||
field_0x2f99 = 4;
|
||||
|
||||
if (checkAnmEnd(temp_r30)) {
|
||||
if (checkAnmEnd(framectrl)) {
|
||||
if (checkGuardActionChange() == 0) {
|
||||
onEndResetFlg1(ERFLG1_UNK_20);
|
||||
}
|
||||
checkNextAction(0);
|
||||
} else if (temp_r30->getFrame() > mpHIO->mGuard.m.mGuardBreakAnm.mCancelFrame) {
|
||||
} else if (framectrl->getFrame() > mpHIO->mGuard.m.mGuardBreakAnm.mCancelFrame) {
|
||||
if (!checkGuardActionChange()) {
|
||||
onEndResetFlg1(ERFLG1_UNK_20);
|
||||
}
|
||||
@@ -518,37 +532,37 @@ int daAlink_c::procGuardBreak() {
|
||||
}
|
||||
|
||||
int daAlink_c::procTurnMoveInit(int param_0) {
|
||||
BOOL temp_r27 = checkUpperGuardAnime();
|
||||
fopAc_ac_c* temp_r28 = mTargetedActor;
|
||||
BOOL isUpperGuardAnime = checkUpperGuardAnime();
|
||||
fopAc_ac_c* targetedActor = mTargetedActor;
|
||||
|
||||
commonProcInit(PROC_TURN_MOVE);
|
||||
mNormalSpeed = 0.0f;
|
||||
|
||||
daAlink_ANM var_r29;
|
||||
daAlink_ANM anm;
|
||||
if (param_0 == 2) {
|
||||
var_r29 = ANM_SIDE_ROLL_LEFT;
|
||||
anm = ANM_SIDE_ROLL_LEFT;
|
||||
} else if (param_0 == 3) {
|
||||
var_r29 = ANM_SIDE_ROLL_RIGHT;
|
||||
anm = ANM_SIDE_ROLL_RIGHT;
|
||||
} else if (checkInputOnR()) {
|
||||
if ((s16)(field_0x2fe2 - shape_angle.y) >= 0) {
|
||||
var_r29 = ANM_SIDE_ROLL_LEFT;
|
||||
if ((s16)(mMoveAngle - shape_angle.y) >= 0) {
|
||||
anm = ANM_SIDE_ROLL_LEFT;
|
||||
} else {
|
||||
var_r29 = ANM_SIDE_ROLL_RIGHT;
|
||||
anm = ANM_SIDE_ROLL_RIGHT;
|
||||
}
|
||||
} else {
|
||||
var_r29 = ANM_SIDE_ROLL_LEFT;
|
||||
anm = ANM_SIDE_ROLL_LEFT;
|
||||
}
|
||||
|
||||
f32 temp_f31 = mpHIO->mGuard.mTurnMove.m.mTurnAnm.mSpeed;
|
||||
f32 anm_speed = mpHIO->mGuard.mTurnMove.m.mTurnAnm.mSpeed;
|
||||
mProcVar1.field_0x300a = mpHIO->mGuard.mTurnMove.m.mMaxTurnSpeed;
|
||||
|
||||
if (checkNoResetFlg0(FLG0_UNDERWATER)) {
|
||||
if (checkNoResetFlg0(FLG0_WATER_IN_MOVE)) {
|
||||
mProcVar1.field_0x300a = mProcVar1.field_0x300a * mpHIO->mItem.mIronBoots.m.mWaterVelocityX;
|
||||
}
|
||||
|
||||
setSingleAnime(var_r29, temp_f31, mpHIO->mGuard.mTurnMove.m.mTurnAnm.mStartFrame, mpHIO->mGuard.mTurnMove.m.mTurnAnm.mEndFrame, mpHIO->mGuard.mTurnMove.m.mTurnAnm.mInterpolation);
|
||||
setSingleAnime(anm, anm_speed, mpHIO->mGuard.mTurnMove.m.mTurnAnm.mStartFrame, mpHIO->mGuard.mTurnMove.m.mTurnAnm.mEndFrame, mpHIO->mGuard.mTurnMove.m.mTurnAnm.mInterpolation);
|
||||
|
||||
if (var_r29 == ANM_SIDE_ROLL_LEFT) {
|
||||
if (anm == ANM_SIDE_ROLL_LEFT) {
|
||||
mProcVar2.field_0x300c = -0x7FF0;
|
||||
field_0x2f98 = 2;
|
||||
} else {
|
||||
@@ -556,9 +570,9 @@ int daAlink_c::procTurnMoveInit(int param_0) {
|
||||
field_0x2f98 = 3;
|
||||
}
|
||||
|
||||
if (temp_r28 != NULL) {
|
||||
cXyz sp8 = current.pos - temp_r28->current.pos;
|
||||
shape_angle.y = fopAcM_searchActorAngleY(this, temp_r28);
|
||||
if (targetedActor != NULL) {
|
||||
cXyz sp8 = current.pos - targetedActor->current.pos;
|
||||
shape_angle.y = fopAcM_searchActorAngleY(this, targetedActor);
|
||||
field_0x3478 = sp8.absXZ();
|
||||
mProcVar3.field_0x300e = sp8.atan2sX_Z();
|
||||
} else {
|
||||
@@ -569,7 +583,7 @@ int daAlink_c::procTurnMoveInit(int param_0) {
|
||||
field_0x347c = (field_0x3478 - 150.0f) / mProcVar2.field_0x300c;
|
||||
voiceStart(Z2SE_AL_V_SOTOMO_ROLL);
|
||||
|
||||
if (mDemo.getDemoMode() == 0x52) {
|
||||
if (mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK_82_e) {
|
||||
mProcVar0.field_0x3008 = 1;
|
||||
} else {
|
||||
mProcVar0.field_0x3008 = 0;
|
||||
@@ -579,7 +593,7 @@ int daAlink_c::procTurnMoveInit(int param_0) {
|
||||
field_0x2f9d = 4;
|
||||
dComIfGp_setPlayerStatus0(0, 4);
|
||||
|
||||
if (temp_r27 != 0) {
|
||||
if (isUpperGuardAnime) {
|
||||
onNoResetFlg0(FLG0_UNK_2);
|
||||
}
|
||||
|
||||
@@ -611,22 +625,22 @@ int daAlink_c::procTurnMove() {
|
||||
shape_angle.y = mProcVar3.field_0x300e + 0x8000;
|
||||
mProcVar0.field_0x3008 |= checkCutFinishJumpUp();
|
||||
|
||||
daPy_frameCtrl_c* temp_r30 = &mUnderFrameCtrl[0];
|
||||
daPy_frameCtrl_c* framectrl = &mUnderFrameCtrl[0];
|
||||
|
||||
if (checkNoResetFlg0(FLG0_UNK_2)) {
|
||||
setUpperGuardAnime(-1.0f);
|
||||
}
|
||||
|
||||
if (checkAnmEnd(temp_r30)) {
|
||||
if (checkAnmEnd(framectrl)) {
|
||||
if (!checkAttentionLock()) {
|
||||
offNoResetFlg2(FLG2_UNK_8000000);
|
||||
}
|
||||
checkNextAction(0);
|
||||
} else if (mProcVar0.field_0x3008 != 0 && !checkNotJumpSinkLimit() && temp_r30->getFrame() > mpHIO->mGuard.mTurnMove.m.mTwirlCutDelayF) {
|
||||
} else if (mProcVar0.field_0x3008 != 0 && !checkNotJumpSinkLimit() && framectrl->getFrame() > mpHIO->mGuard.mTurnMove.m.mTwirlCutDelayF) {
|
||||
procCutFinishJumpUpInit();
|
||||
dComIfGp_setPlayerStatus0(0, 4);
|
||||
} else {
|
||||
if (temp_r30->getFrame() > mpHIO->mGuard.mTurnMove.m.mTurnAnm.mCancelFrame) {
|
||||
if (framectrl->getFrame() > mpHIO->mGuard.mTurnMove.m.mTurnAnm.mCancelFrame) {
|
||||
onModeFlg(4);
|
||||
|
||||
if (checkNextAction(1)) {
|
||||
@@ -634,8 +648,8 @@ int daAlink_c::procTurnMove() {
|
||||
}
|
||||
}
|
||||
|
||||
if (temp_r30->checkPass(19.0f)) {
|
||||
dComIfGp_getVibration().StartShock(1, 1, cXyz(0.0f, 1.0f, 0.0f));
|
||||
if (framectrl->checkPass(19.0f)) {
|
||||
dComIfGp_getVibration().StartShock(VIBMODE_S_POWER1, 1, cXyz(0.0f, 1.0f, 0.0f));
|
||||
}
|
||||
|
||||
if (abs(temp_r29) > 0x100) {
|
||||
|
||||
+209
-244
File diff suppressed because it is too large
Load Diff
+215
-219
File diff suppressed because it is too large
Load Diff
+558
-526
File diff suppressed because it is too large
Load Diff
@@ -18,9 +18,9 @@ void daAlink_c::concatMagneBootInvMtx() {
|
||||
}
|
||||
}
|
||||
|
||||
void daAlink_c::multVecMagneBootInvMtx(cXyz* vec) {
|
||||
void daAlink_c::multVecMagneBootInvMtx(cXyz* o_dst) {
|
||||
if (checkMagneBootsOn()) {
|
||||
mDoMtx_multVecSR(mMagneBootInvMtx, vec, vec);
|
||||
mDoMtx_multVecSR(mMagneBootInvMtx, o_dst, o_dst);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ bool daAlink_c::commonMagneLineCheck(cXyz* i_start, cXyz* i_end) {
|
||||
}
|
||||
|
||||
BOOL daAlink_c::checkBootsMoveAnime(int param_0) {
|
||||
return (checkHeavyStateOn(param_0, 1) && !checkNoResetFlg0(FLG0_UNDERWATER)) ||
|
||||
return (checkHeavyStateOn(param_0, 1) && !checkNoResetFlg0(FLG0_WATER_IN_MOVE)) ||
|
||||
checkDkCaught2Anime();
|
||||
}
|
||||
|
||||
@@ -56,7 +56,7 @@ int daAlink_c::setHeavyBoots(int param_0) {
|
||||
deleteEquipItem(TRUE, FALSE);
|
||||
}
|
||||
|
||||
if (checkNoResetFlg0(FLG0_UNDERWATER) && !dComIfGp_checkPlayerStatus1(0, 0x2000000)) {
|
||||
if (checkNoResetFlg0(FLG0_WATER_IN_MOVE) && !dComIfGp_checkPlayerStatus1(0, 0x2000000)) {
|
||||
return procSwimWaitInit(0);
|
||||
}
|
||||
|
||||
@@ -92,7 +92,6 @@ int daAlink_c::setHeavyBoots(int param_0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
s16 daAlink_c::getMagneBootsLocalAngleY(s16 param_0, int param_1) {
|
||||
if (param_1 == 1 || (param_1 != 2 && field_0x3114 <= 0x4000 && field_0x3114 != -0x8000)) {
|
||||
return param_0;
|
||||
@@ -107,12 +106,12 @@ s16 daAlink_c::getMagneBootsLocalAngleY(s16 param_0, int param_1) {
|
||||
return vec.atan2sX_Z();
|
||||
}
|
||||
|
||||
|
||||
void daAlink_c::setMagneBootsMtx(cBgS_PolyInfo* i_polyinfo, int param_1) {
|
||||
cM3dGPla poly;
|
||||
dComIfG_Bgsp().GetTriPla(*i_polyinfo, &poly);
|
||||
|
||||
s16 var_r28 = cM_atan2s(poly.mNormal.absXZ(), poly.mNormal.y);
|
||||
s16 var_r26 = field_0x3116;
|
||||
int temp_r3_2 = abs(var_r28);
|
||||
if (temp_r3_2 < 500) {
|
||||
var_r28 = 0;
|
||||
@@ -145,16 +144,14 @@ void daAlink_c::setMagneBootsMtx(cBgS_PolyInfo* i_polyinfo, int param_1) {
|
||||
cXyz sp44 = mMagneBootsTopVec.outprod(poly.mNormal);
|
||||
sp44.normalizeZP();
|
||||
|
||||
f32 var_f1_2 = JMAFastSqrt(1.0f - temp_f1 * temp_f1);
|
||||
f32 temp_f1_2 = cM_atan2f(var_f1_2, temp_f1);
|
||||
f32 temp_f1_2 = cM_atan2f(JMAFastSqrt(1.0f - temp_f1 * temp_f1), temp_f1);
|
||||
f32 var_f2 = temp_f1_2 * 0.2f;
|
||||
|
||||
if (var_f2 > 0.4f) {
|
||||
var_f2 = 0.4f;
|
||||
} else if (var_f2 < 0.025f) {
|
||||
var_f2 = 0.025f;
|
||||
|
||||
if (0.025f > temp_f1_2) {
|
||||
if (var_f2 > temp_f1_2) {
|
||||
var_f2 = temp_f1_2;
|
||||
}
|
||||
}
|
||||
@@ -167,10 +164,10 @@ void daAlink_c::setMagneBootsMtx(cBgS_PolyInfo* i_polyinfo, int param_1) {
|
||||
|
||||
field_0x3114 = cM_atan2s(sp40.absXZ(), sp40.y);
|
||||
|
||||
int temp_r3_4 = abs(field_0x3114);
|
||||
if (temp_r3_4 < 500) {
|
||||
temp_r3_2 = abs(field_0x3114);
|
||||
if (temp_r3_2 < 500) {
|
||||
field_0x3114 = 0;
|
||||
} else if (temp_r3_4 > 0x7E0B) {
|
||||
} else if (temp_r3_2 > 0x7E0B) {
|
||||
field_0x3114 = -0x8000;
|
||||
}
|
||||
|
||||
@@ -189,7 +186,7 @@ void daAlink_c::setMagneBootsMtx(cBgS_PolyInfo* i_polyinfo, int param_1) {
|
||||
s16 angle = sp40.atan2sX_Z();
|
||||
shape_angle.y += angle;
|
||||
current.angle.y += angle;
|
||||
field_0x2fe6 += angle;
|
||||
mPrevAngleY += angle;
|
||||
field_0x310c += angle;
|
||||
}
|
||||
}
|
||||
@@ -201,7 +198,6 @@ void daAlink_c::setMagneBootsMtx(cBgS_PolyInfo* i_polyinfo, int param_1) {
|
||||
mDoMtx_multVec(mMagneBootMtx, &cXyz::BaseY, &mMagneBootsTopVec);
|
||||
}
|
||||
|
||||
|
||||
int daAlink_c::cancelMagneBootsOn() {
|
||||
offNoResetFlg0(FLG0_MAGNE_BOOTS_ON);
|
||||
mZ2Link.setMagnetized(false);
|
||||
@@ -221,10 +217,10 @@ int daAlink_c::cancelMagneBootsOn() {
|
||||
current.pos += mMagneBootsTopVec * 100.0f;
|
||||
mLinkGndChk.SetPos(¤t.pos);
|
||||
|
||||
f32 gnd_cross = dComIfG_Bgsp().GroundCross(&mLinkGndChk);
|
||||
f32 ground_y = dComIfG_Bgsp().GroundCross(&mLinkGndChk);
|
||||
current.pos.y -= 100.0f;
|
||||
if (gnd_cross > current.pos.y) {
|
||||
current.pos.y = gnd_cross;
|
||||
if (ground_y > current.pos.y) {
|
||||
current.pos.y = ground_y;
|
||||
}
|
||||
|
||||
old.pos = current.pos;
|
||||
@@ -242,7 +238,6 @@ int daAlink_c::cancelMagneBootsOn() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int daAlink_c::checkMagneBootsFly() {
|
||||
if (field_0x2fb8 != 0 && checkEquipHeavyBoots() && !checkDeadHP() &&
|
||||
mProcID != PROC_MAGNE_BOOTS_FLY && !checkEventRun())
|
||||
@@ -291,14 +286,13 @@ int daAlink_c::procBootsEquip() {
|
||||
onModeFlg(4);
|
||||
checkNextAction(1);
|
||||
} else if (frameCtrl_p->getFrame() >= 5.0f) {
|
||||
field_0x2f92 = 1;
|
||||
field_0x2f93 = 6;
|
||||
mLeftHandIndex = 1;
|
||||
mRightHandIndex = 6;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int daAlink_c::procMagneBootsFlyInit() {
|
||||
cXyz sp44 = field_0x369c.normZP();
|
||||
cM3dGPla sp50(&sp44, -sp44.inprod(field_0x3834));
|
||||
@@ -338,20 +332,27 @@ int daAlink_c::procMagneBootsFlyInit() {
|
||||
}
|
||||
|
||||
field_0x3478 = 0.0f;
|
||||
field_0x594 = mpHIO->mItem.mIronBoots.m.mMaxMagneFlySpeed;
|
||||
mMaxSpeed = mpHIO->mItem.mIronBoots.m.mMaxMagneFlySpeed;
|
||||
mProcVar2.field_0x300c = 0;
|
||||
voiceStart(Z2SE_AL_V_MAGNET_CAUGHT);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int daAlink_c::procMagneBootsFly() {
|
||||
field_0x3478 += mpHIO->mItem.mIronBoots.m.mMagneFlyAccelRate;
|
||||
if (field_0x3478 > field_0x594) {
|
||||
field_0x3478 = field_0x594;
|
||||
if (field_0x3478 > mMaxSpeed) {
|
||||
field_0x3478 = mMaxSpeed;
|
||||
}
|
||||
|
||||
if (dComIfG_Bgsp().ChkPolySafe(mPolyInfo2) && checkEquipHeavyBoots()) {
|
||||
/* !@bug - If iron boots are unequipped mid-flight, player will still stick to magnetic poly
|
||||
* Fixed in GCN and Wii KOR versions by adding a checkEquipHeavyBoots check
|
||||
*/
|
||||
if (dComIfG_Bgsp().ChkPolySafe(mPolyInfo2)
|
||||
#if PLATFORM_GCN || VERSION == VERSION_WII_KOR
|
||||
&& checkEquipHeavyBoots()
|
||||
#endif
|
||||
)
|
||||
{
|
||||
if (dComIfG_Bgsp().ChkMoveBG(mPolyInfo2)) {
|
||||
cXyz old_37c8(field_0x37c8);
|
||||
dComIfG_Bgsp().MoveBgTransPos(mPolyInfo2, true, &field_0x37c8, NULL, NULL);
|
||||
@@ -377,7 +378,7 @@ int daAlink_c::procMagneBootsFly() {
|
||||
|
||||
cLib_addCalcAngleS(&shape_angle.x, sp24.atan2sY_XZ() + -0x4000, 5, 0x1000, 0x100);
|
||||
cLib_addCalcAngleS(&shape_angle.y, sp24.atan2sX_Z(), 5, 0x1000, 0x100);
|
||||
mProcVar2.field_0x300c += 0x1C00;
|
||||
mProcVar2.field_0x300c += (s16)0x1C00;
|
||||
}
|
||||
|
||||
return 1;
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
#include "SSystem/SComponent/c_math.h"
|
||||
|
||||
static fopAc_ac_c* daAlink_searchIceLeaf(fopAc_ac_c* i_actor, void* i_data) {
|
||||
UNUSED(i_data);
|
||||
|
||||
if (fopAcM_GetName(i_actor) == PROC_Obj_IceLeaf) {
|
||||
return i_actor;
|
||||
}
|
||||
@@ -19,8 +21,8 @@ bool daAlink_c::checkSnowCode() const {
|
||||
return mGndPolySpecialCode == dBgW_SPCODE_HEAVY_SNOW || mGndPolySpecialCode == dBgW_SPCODE_LIGHT_SNOW;
|
||||
}
|
||||
|
||||
bool daAlink_c::checkSnowCodePolygon(cBgS_PolyInfo& i_poly) {
|
||||
int code = dComIfG_Bgsp().GetSpecialCode(i_poly);
|
||||
bool daAlink_c::checkSnowCodePolygon(cBgS_PolyInfo& i_polyinfo) {
|
||||
int code = dComIfG_Bgsp().GetSpecialCode(i_polyinfo);
|
||||
return code == dBgW_SPCODE_HEAVY_SNOW || code == dBgW_SPCODE_LIGHT_SNOW;
|
||||
}
|
||||
|
||||
@@ -47,7 +49,7 @@ int daAlink_c::boardCommon(BOOL i_canMove) {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
if (mAcchCir[i].ChkWallHit() && cLib_distanceAngleS(sp8, mAcchCir[i].GetWallAngleY()) <= 0x2000 && mNormalSpeed > 30.0f) {
|
||||
setJumpMode();
|
||||
return procCoLargeDamageInit(-4, 1, 0, 0, NULL, 0);
|
||||
return procCoLargeDamageInit(-4, TRUE, 0, 0, NULL, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -66,14 +68,14 @@ int daAlink_c::boardCommon(BOOL i_canMove) {
|
||||
|
||||
s16 var_r27;
|
||||
if (mLinkAcch.ChkGroundHit() && dComIfG_Bgsp().ChkPolySafe(mLinkAcch.m_gnd)) {
|
||||
cM3dGPla poly;
|
||||
dComIfG_Bgsp().GetTriPla(mLinkAcch.m_gnd, &poly);
|
||||
cM3dGPla tripla;
|
||||
dComIfG_Bgsp().GetTriPla(mLinkAcch.m_gnd, &tripla);
|
||||
|
||||
mProcVar3.field_0x300e = cM_atan2s(poly.mNormal.absXZ(), poly.mNormal.y);
|
||||
mProcVar3.field_0x300e = cM_atan2s(tripla.mNormal.absXZ(), tripla.mNormal.y);
|
||||
if (mProcVar3.field_0x300e == 0) {
|
||||
var_r27 = shape_angle.y;
|
||||
} else {
|
||||
var_r27 = poly.mNormal.atan2sX_Z();
|
||||
var_r27 = tripla.mNormal.atan2sX_Z();
|
||||
}
|
||||
} else {
|
||||
mProcVar3.field_0x300e = 0;
|
||||
@@ -82,7 +84,7 @@ int daAlink_c::boardCommon(BOOL i_canMove) {
|
||||
|
||||
if (mProcVar0.field_0x3008 != 0) {
|
||||
mProcVar0.field_0x3008--;
|
||||
onResetFlg1(RFLG1_UNK_40);
|
||||
onResetFlg1(RFLG1_BOARD_NO_FOOT_ANGLE);
|
||||
}
|
||||
|
||||
f32 var_f30 = 0.0f;
|
||||
@@ -90,10 +92,10 @@ int daAlink_c::boardCommon(BOOL i_canMove) {
|
||||
|
||||
s16 var_r24;
|
||||
if (checkInputOnR() && i_canMove) {
|
||||
var_r24 = 1024.0f * field_0x33ac * cM_ssin(mStickAngle);
|
||||
var_r24 = 1024.0f * mMoveValue * cM_ssin(mStickAngle);
|
||||
|
||||
if (temp_r26 > 0x6000 && field_0x2f8c == 0xB && mProcID == PROC_BOARD_WAIT) {
|
||||
f32 temp_f29 = field_0x33ac * cM_scos((0x8000 - temp_r26) * 2);
|
||||
f32 temp_f29 = mMoveValue * cM_scos((0x8000 - temp_r26) * 2);
|
||||
f32 speed_step = temp_f29;
|
||||
|
||||
if (speed_step < 0.15f) {
|
||||
@@ -178,8 +180,8 @@ int daAlink_c::boardCommon(BOOL i_canMove) {
|
||||
f32 temp_f26 = (var_f31 * cM_scos(var_r27)) + (mNormalSpeed * cM_scos(shape_angle.y));
|
||||
|
||||
mNormalSpeed = JMAFastSqrt((temp_f27 * temp_f27) + (temp_f26 * temp_f26));
|
||||
if (mNormalSpeed > field_0x594) {
|
||||
mNormalSpeed = field_0x594;
|
||||
if (mNormalSpeed > mMaxSpeed) {
|
||||
mNormalSpeed = mMaxSpeed;
|
||||
}
|
||||
|
||||
if (mNormalSpeed > 0.1f) {
|
||||
@@ -203,8 +205,8 @@ int daAlink_c::boardCommon(BOOL i_canMove) {
|
||||
setCommonBoardAnime(FALSE);
|
||||
}
|
||||
|
||||
if (mNormalSpeed > (0.7f * field_0x594)) {
|
||||
cLib_chaseF(&mNormalSpeed, 0.7f * field_0x594, 1.5f);
|
||||
if (mNormalSpeed > (0.7f * mMaxSpeed)) {
|
||||
cLib_chaseF(&mNormalSpeed, 0.7f * mMaxSpeed, 1.5f);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -227,19 +229,27 @@ int daAlink_c::boardCommon(BOOL i_canMove) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
void daAlink_c::setCommonBoardAnime(BOOL i_is_ride_front) {
|
||||
void daAlink_c::setCommonBoardAnime(BOOL i_isRideFront) {
|
||||
// Fakematch, retail should use mpHIO->mItem.mBoard.m.mStandAnmSpeed and mpHIO->mItem.mBoard.m.mStandInterpolation
|
||||
#if DEBUG
|
||||
setDoubleAnime(
|
||||
0.0f,
|
||||
mpHIO->mItem.mBoard.m.mStandAnmSpeed,
|
||||
1.0f,
|
||||
i_isRideFront ? ANM_RIDE_FRONT : ANM_RIDE_WAIT, ANM_RIDE_STOP,
|
||||
11,
|
||||
mpHIO->mItem.mBoard.m.mStandInterpolation
|
||||
);
|
||||
#else
|
||||
setDoubleAnime(
|
||||
0.0f,
|
||||
// Fakematch, should be
|
||||
// mpHIO->mItem.mBoard.m.mStandAnmSpeed,
|
||||
daAlinkHIO_board_c0::m.mStandAnmSpeed,
|
||||
1.0f,
|
||||
i_is_ride_front ? ANM_RIDE_FRONT : ANM_RIDE_WAIT, ANM_RIDE_STOP,
|
||||
i_isRideFront ? ANM_RIDE_FRONT : ANM_RIDE_WAIT, ANM_RIDE_STOP,
|
||||
11,
|
||||
// Fakematch, should be
|
||||
// mpHIO->mItem.mBoard.m.mStandInterpolation
|
||||
daAlinkHIO_board_c0::m.mStandInterpolation
|
||||
);
|
||||
#endif
|
||||
}
|
||||
|
||||
int daAlink_c::checkNextActionBoard() {
|
||||
@@ -296,7 +306,7 @@ int daAlink_c::procBoardRideInit() {
|
||||
setHeavyBoots(0);
|
||||
|
||||
if (mEquipItem != 0x103) {
|
||||
deleteEquipItem(1, 1);
|
||||
deleteEquipItem(TRUE, TRUE);
|
||||
} else {
|
||||
offKandelaarModel();
|
||||
}
|
||||
@@ -335,7 +345,8 @@ int daAlink_c::procBoardRide() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
int daAlink_c::procBoardWaitInit(fopAc_ac_c* i_board) {
|
||||
int daAlink_c::procBoardWaitInit(fopAc_ac_c* i_boardActor) {
|
||||
#if PLATFORM_GCN
|
||||
if (mEquipItem != 0x103) {
|
||||
deleteEquipItem(TRUE, TRUE);
|
||||
} else {
|
||||
@@ -347,23 +358,24 @@ int daAlink_c::procBoardWaitInit(fopAc_ac_c* i_board) {
|
||||
if (!checkBoardRide()) {
|
||||
resetUpperAnime(UPPER_2, -1.0f);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (checkModeFlg(2) && i_board == NULL) {
|
||||
if (checkModeFlg(2) && i_boardActor == NULL) {
|
||||
return procBoardJumpInit(0.0f, TRUE);
|
||||
}
|
||||
|
||||
BOOL prev_ride = mProcID == PROC_BOARD_RIDE;
|
||||
BOOL is_prev_boardRide = mProcID == PROC_BOARD_RIDE;
|
||||
if (!commonProcInitNotSameProc(PROC_BOARD_WAIT)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
current.angle.y = shape_angle.y;
|
||||
|
||||
if (i_board != NULL) {
|
||||
mRideAcKeep.setData(i_board);
|
||||
((daObjIceLeaf_c*)i_board)->onRide();
|
||||
if (i_boardActor != NULL) {
|
||||
mRideAcKeep.setData(i_boardActor);
|
||||
((daObjIceLeaf_c*)i_boardActor)->onRide();
|
||||
|
||||
if (prev_ride) {
|
||||
if (is_prev_boardRide) {
|
||||
f32 speed_ratio = mNormalSpeed / mpHIO->mMove.m.mMaxSpeed;
|
||||
if (speed_ratio > 1.0f) {
|
||||
speed_ratio = 1.0f;
|
||||
@@ -374,13 +386,13 @@ int daAlink_c::procBoardWaitInit(fopAc_ac_c* i_board) {
|
||||
mNormalSpeed = 0.0f;
|
||||
}
|
||||
|
||||
field_0x594 = mpHIO->mItem.mBoard.m.mMaxSpeed;
|
||||
mMaxSpeed = mpHIO->mItem.mBoard.m.mMaxSpeed;
|
||||
mProcVar2.field_0x300c = 0;
|
||||
mProcVar3.field_0x300e = 0;
|
||||
setCommonBoardAnime(FALSE);
|
||||
}
|
||||
|
||||
mRideStatus = 4;
|
||||
mRideStatus = RIDETYPE_BOARD;
|
||||
mProcVar5.field_0x3012 = 0;
|
||||
mProcVar1.field_0x300a = 0;
|
||||
return 1;
|
||||
@@ -423,7 +435,7 @@ int daAlink_c::procBoardWait() {
|
||||
return procBoardCutInit();
|
||||
} else if (mProcVar5.field_0x3012 == 0) {
|
||||
if (!checkModeFlg(2) && mProcID != PROC_BOARD_ROW) {
|
||||
setDoStatus(0xA);
|
||||
setDoStatus(BUTTON_STATUS_CROUCH);
|
||||
|
||||
if (doButton()) {
|
||||
f32 blend_ratio;
|
||||
@@ -440,7 +452,7 @@ int daAlink_c::procBoardWait() {
|
||||
}
|
||||
} else if (mProcVar5.field_0x3012 != 0) {
|
||||
if (mNormalSpeed > 15.0f) {
|
||||
setDoStatus(0x19);
|
||||
setDoStatus(BUTTON_STATUS_JUMP);
|
||||
}
|
||||
|
||||
if (!doButton()) {
|
||||
@@ -463,7 +475,7 @@ int daAlink_c::procBoardWait() {
|
||||
int daAlink_c::procBoardRowInit() {
|
||||
commonProcInit(PROC_BOARD_ROW);
|
||||
setSingleAnimeBaseSpeed(ANM_RIDE_KICK, getBoardRowAnmSpeed(), mpHIO->mItem.mBoard.m.mPushInterpolation);
|
||||
onResetFlg1(RFLG1_UNK_40);
|
||||
onResetFlg1(RFLG1_BOARD_NO_FOOT_ANGLE);
|
||||
mProcVar0.field_0x3008 = 4;
|
||||
mProcVar4.field_0x3010 = 1;
|
||||
mProcVar5.field_0x3012 = 0;
|
||||
@@ -476,7 +488,7 @@ int daAlink_c::procBoardRow() {
|
||||
}
|
||||
|
||||
if (mProcVar4.field_0x3010 != 0) {
|
||||
onResetFlg1(RFLG1_UNK_40);
|
||||
onResetFlg1(RFLG1_BOARD_NO_FOOT_ANGLE);
|
||||
mProcVar0.field_0x3008 = 4;
|
||||
}
|
||||
|
||||
@@ -492,7 +504,6 @@ int daAlink_c::procBoardRow() {
|
||||
}
|
||||
} else if (frame_ctrl->checkPass(7.0f)) {
|
||||
mNormalSpeed += mpHIO->mItem.mBoard.m.mPushAccel;
|
||||
|
||||
if (mNormalSpeed > mpHIO->mItem.mBoard.m.mMaxPushSpeed) {
|
||||
mNormalSpeed = mpHIO->mItem.mBoard.m.mMaxPushSpeed;
|
||||
}
|
||||
@@ -530,7 +541,7 @@ int daAlink_c::procBoardTurn() {
|
||||
mProcVar1.field_0x300a = 1;
|
||||
}
|
||||
} else {
|
||||
cLib_addCalcAngleS(&shape_angle.y, mProcVar4.field_0x3010, 5, 0x1B58, 0x7D0);
|
||||
cLib_addCalcAngleS(&shape_angle.y, mProcVar4.field_0x3010, 5, 7000, 2000);
|
||||
current.angle.y = shape_angle.y;
|
||||
|
||||
if (!checkModeFlg(2)) {
|
||||
@@ -544,7 +555,7 @@ int daAlink_c::procBoardTurn() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
int daAlink_c::procBoardJumpInit(f32 i_jump_speed, BOOL i_no_speed_set) {
|
||||
int daAlink_c::procBoardJumpInit(f32 i_jumpSpeed, BOOL i_isNoSpeed) {
|
||||
commonProcInit(PROC_BOARD_JUMP);
|
||||
mProcVar0.field_0x3008 = 0;
|
||||
mProcVar5.field_0x3012 = 1;
|
||||
@@ -554,8 +565,8 @@ int daAlink_c::procBoardJumpInit(f32 i_jump_speed, BOOL i_no_speed_set) {
|
||||
mpHIO->mItem.mBoard.m.mAirborneAnm.mEndFrame,
|
||||
mpHIO->mItem.mBoard.m.mAirborneAnm.mInterpolation);
|
||||
|
||||
if (!i_no_speed_set) {
|
||||
speed.y = cLib_minMaxLimit(i_jump_speed, mpHIO->mItem.mBoard.m.mMinJumpSpeedY, mpHIO->mItem.mBoard.m.mMaxJumpSpeedY);
|
||||
if (!i_isNoSpeed) {
|
||||
speed.y = cLib_minMaxLimit(i_jumpSpeed, mpHIO->mItem.mBoard.m.mMinJumpSpeedY, mpHIO->mItem.mBoard.m.mMaxJumpSpeedY);
|
||||
}
|
||||
|
||||
mProcVar4.field_0x3010 = 0;
|
||||
@@ -588,7 +599,6 @@ int daAlink_c::procBoardSubjectivityInit() {
|
||||
commonProcBoardInit(PROC_BOARD_SUBJECTIVITY);
|
||||
setSubjectMode();
|
||||
setCommonBoardAnime(FALSE);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -603,7 +613,7 @@ int daAlink_c::procBoardSubjectivity() {
|
||||
|
||||
shape_angle.y = old_shape_angle;
|
||||
|
||||
if (checkSubjectEnd(1)) {
|
||||
if (checkSubjectEnd(TRUE)) {
|
||||
procBoardWaitInit(NULL);
|
||||
} else {
|
||||
setRideSubjectAngle(old_angle);
|
||||
@@ -615,17 +625,10 @@ int daAlink_c::procBoardSubjectivity() {
|
||||
int daAlink_c::procBoardCutInit() {
|
||||
commonProcBoardInit(PROC_BOARD_CUT);
|
||||
|
||||
bool cut_charge = false;
|
||||
if (checkUnderMove0BckNoArc(ANM_RIDE_CUT_TURN_CHARGE)) {
|
||||
if (mUnderFrameCtrl[0].getFrame() > mpHIO->mCut.m.mNormalSwingDuration) {
|
||||
cut_charge = true;
|
||||
}
|
||||
}
|
||||
|
||||
bool isCutCharge = checkUnderMove0BckNoArc(ANM_RIDE_CUT_TURN_CHARGE) && mUnderFrameCtrl[0].getFrame() > mpHIO->mCut.m.mNormalSwingDuration;
|
||||
setCommonBoardAnime(FALSE);
|
||||
setCutDash(1, cut_charge);
|
||||
setCutDash(1, isCutCharge);
|
||||
mProcVar5.field_0x3012 = 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -660,7 +663,7 @@ int daAlink_c::procBoardCutTurnInit() {
|
||||
}
|
||||
|
||||
mProcVar5.field_0x3012 = 0;
|
||||
resetCombo(1);
|
||||
resetCombo(TRUE);
|
||||
|
||||
field_0x3478 = mpHIO->mCut.mCutTurn.m.mAttackRadius;
|
||||
field_0x347c = 0.5f * field_0x3478;
|
||||
@@ -680,14 +683,14 @@ int daAlink_c::procBoardCutTurn() {
|
||||
daPy_frameCtrl_c* frame_ctrl = &mUnderFrameCtrl[0];
|
||||
|
||||
if (frame_ctrl->getFrame() >= 4.0f && frame_ctrl->getFrame() < 14.0f) {
|
||||
if (!checkNoResetFlg0(FLG0_UNK_40)) {
|
||||
if (!checkNoResetFlg0(FLG0_CUT_AT_FLG)) {
|
||||
seStartSwordCut(Z2SE_AL_KAITENGIRI);
|
||||
}
|
||||
|
||||
onResetFlg0(RFLG0_UNK_2);
|
||||
cLib_chaseF(&field_0x347c, field_0x3478, 20.0f);
|
||||
field_0xFB8.SetR(field_0x347c);
|
||||
onResetFlg1(RFLG1_UNK_40);
|
||||
mAtSph.SetR(field_0x347c);
|
||||
onResetFlg1(RFLG1_BOARD_NO_FOOT_ANGLE);
|
||||
} else {
|
||||
mProcVar5.field_0x3012 = 0;
|
||||
}
|
||||
|
||||
@@ -42,10 +42,11 @@ bool daAlink_c::checkIronBallGroundStop() const {
|
||||
|
||||
void daAlink_c::setIronBallWaitUpperAnime(int param_0) {
|
||||
if (!checkIronBallWaitAnime() && !checkIronBallPreSwingAnime() &&
|
||||
(mItemVar0.field_0x3018 == 0 || mItemVar0.field_0x3018 == 8) && (param_0 || checkNoUpperAnime())) {
|
||||
setUpperAnimeBaseSpeed(0x19C, mpHIO->mItem.mIronBall.m.mWaitAnmSpeed,
|
||||
(mItemVar0.field_0x3018 == 0 || mItemVar0.field_0x3018 == 8) && (param_0 || checkNoUpperAnime()))
|
||||
{
|
||||
setUpperAnimeBaseSpeed(dRes_ID_ALANM_BCK_IBWAIT_e, mpHIO->mItem.mIronBall.m.mWaitAnmSpeed,
|
||||
mpHIO->mBasic.m.mBasicInterpolation);
|
||||
setFacePriBck(0xE8);
|
||||
setFacePriBck(dRes_ID_ALANM_BCK_FAT_e);
|
||||
field_0x2f96 = 254;
|
||||
field_0x2f97 = 5;
|
||||
mItemVar0.field_0x3018 = 0;
|
||||
@@ -66,7 +67,7 @@ void daAlink_c::checkIronBallDelete() {
|
||||
}
|
||||
}
|
||||
|
||||
void daAlink_c::setIronBallReturn(int param_0) {
|
||||
void daAlink_c::setIronBallReturn(BOOL param_0) {
|
||||
if (param_0 && field_0x301e != 0) {
|
||||
field_0x301e--;
|
||||
} else if (mItemVar0.field_0x3018 != 7) {
|
||||
@@ -89,8 +90,8 @@ void daAlink_c::setIronBallBgCheckPos() {
|
||||
void daAlink_c::setIronBallModel() {
|
||||
JKRHeap* prev_heap = setItemHeap();
|
||||
|
||||
mHeldItemModel = initModelEnv(loadAramBmd(0x311, 0x2800), 0);
|
||||
mpItemModelData = loadAramBmd(0x317, 0x1000);
|
||||
mHeldItemModel = initModelEnv(loadAramBmd(dRes_ID_ALANM_BMD_AL_IB_e, 0x2800), 0);
|
||||
mpItemModelData = loadAramBmd(dRes_ID_ALANM_BMD_AL_HS_KUSARI_e, 0x1000);
|
||||
mpHookChain = new hsChainShape_c();
|
||||
|
||||
mIronBallChainPos = new cXyz[102];
|
||||
@@ -113,12 +114,12 @@ void daAlink_c::setIronBallModel() {
|
||||
|
||||
mpHookChain->setUserArea((uintptr_t)this);
|
||||
|
||||
field_0xFB8.SetAtType(AT_TYPE_IRON_BALL);
|
||||
field_0xFB8.SetAtHitMark(3);
|
||||
field_0xFB8.SetAtSe(dCcD_SE_HAMMER);
|
||||
field_0xFB8.SetAtAtp(2);
|
||||
field_0xFB8.SetAtMtrl(dCcD_MTRL_NONE);
|
||||
field_0xFB8.SetR(mpHIO->mItem.mIronBall.m.mAttackRadius);
|
||||
mAtSph.SetAtType(AT_TYPE_IRON_BALL);
|
||||
mAtSph.SetAtHitMark(3);
|
||||
mAtSph.SetAtSe(dCcD_SE_HAMMER);
|
||||
mAtSph.SetAtAtp(2);
|
||||
mAtSph.SetAtMtrl(dCcD_MTRL_NONE);
|
||||
mAtSph.SetR(mpHIO->mItem.mIronBall.m.mAttackRadius);
|
||||
|
||||
csXyz* var_r28 = mIronBallChainAngle;
|
||||
for (int i = 0; i < 102; i++, var_r28++) {
|
||||
@@ -158,7 +159,7 @@ void daAlink_c::setIronBallModel() {
|
||||
field_0x3024 = 0;
|
||||
field_0x3026 = 0;
|
||||
|
||||
field_0x173c.Init(0xDC, 0xFF, this);
|
||||
field_0x173c.Init(220, 0xFF, this);
|
||||
field_0x1778.Set(l_sphSrc);
|
||||
field_0x1778.SetStts(&field_0x173c);
|
||||
field_0x1778.OffTgSetBit();
|
||||
@@ -289,11 +290,11 @@ void daAlink_c::setIronBallChainPos() {
|
||||
*var_r26 = (*var_r29 - sp28C) * mpHIO->mItem.mIronBall.m.mChainSpeedRate;
|
||||
}
|
||||
} else if (mItemVar0.field_0x3018 == 1 || mItemVar0.field_0x3018 == 3 || mItemVar0.field_0x3018 == 4) {
|
||||
daPy_frameCtrl_c* sp30 = &mUnderFrameCtrl[0];
|
||||
daPy_frameCtrl_c* framectrl = &mUnderFrameCtrl[0];
|
||||
|
||||
if (mItemVar0.field_0x3018 == 1) {
|
||||
f32 temp_f25 = sp30->getEnd() - 13.0f;
|
||||
f32 temp_f29 = (sp30->getFrame() - 13.0f) / temp_f25;
|
||||
f32 temp_f25 = framectrl->getEnd() - 13.0f;
|
||||
f32 temp_f29 = (framectrl->getFrame() - 13.0f) / temp_f25;
|
||||
s16 sp12 = -16384.0f - (14336.0f * temp_f29);
|
||||
|
||||
mDoMtx_stack_c::ZXYrotS(mBodyAngle.x, shape_angle.y, 0);
|
||||
@@ -310,7 +311,7 @@ void daAlink_c::setIronBallChainPos() {
|
||||
mDoMtx_stack_c::ZXYrotS(mBodyAngle.x, shape_angle.y, 0);
|
||||
mDoMtx_stack_c::multVec(&sp268, &sp298);
|
||||
|
||||
sp38 = 2.0f * (1.0f + sp30->getFrame());
|
||||
sp38 = 2.0f * (1.0f + framectrl->getFrame());
|
||||
} else {
|
||||
sp38 = -1;
|
||||
}
|
||||
@@ -448,8 +449,9 @@ BOOL daAlink_c::checkIronBallReturnChange() {
|
||||
if (mProcID != PROC_IRON_BALL_THROW ||
|
||||
(!(mBodyAngle.x > 0x400) && mIronBallBgChkPos.y < (current.pos.y - 200.0f)) ||
|
||||
(mBodyAngle.x > 0x400 && mItemMode == 0x64) ||
|
||||
(field_0xFB8.ChkAtHit() && field_0xFB8.GetAtHitGObj() != NULL &&
|
||||
static_cast<dCcD_GObjInf*>(field_0xFB8.GetAtHitGObj())->ChkTgIronBallRebound())) {
|
||||
(mAtSph.ChkAtHit() && mAtSph.GetAtHitGObj() != NULL &&
|
||||
static_cast<dCcD_GObjInf*>(mAtSph.GetAtHitGObj())->ChkTgIronBallRebound()))
|
||||
{
|
||||
setIronBallReturn(0);
|
||||
return true;
|
||||
}
|
||||
@@ -465,7 +467,7 @@ void daAlink_c::setIronBallPos() {
|
||||
cXyz spDC;
|
||||
cXyz spD0(mIronBallCenterPos);
|
||||
|
||||
mDoMtx_stack_c::copy(mpLinkModel->getAnmMtx(0xF));
|
||||
mDoMtx_stack_c::copy(mpLinkModel->getAnmMtx(15));
|
||||
mDoMtx_stack_c::transM(-1.0f, -6.0f, -3.6f);
|
||||
mDoMtx_stack_c::XYZrotM(cM_deg2s(150.0f), cM_deg2s(-81.0f), cM_deg2s(111.0f));
|
||||
|
||||
@@ -478,7 +480,7 @@ void daAlink_c::setIronBallPos() {
|
||||
mDoMtx_stack_c::multVecZero(&mHeldItemRootPos);
|
||||
mDoMtx_MtxToRot(mDoMtx_stack_c::get(), &field_0x316c);
|
||||
mDoMtx_multVecZero(mpLinkModel->getAnmMtx(9), &sp10C);
|
||||
mDoMtx_multVecZero(mpLinkModel->getAnmMtx(0xE), &sp100);
|
||||
mDoMtx_multVecZero(mpLinkModel->getAnmMtx(14), &sp100);
|
||||
|
||||
spE8 = (sp10C + sp100) * 0.5f;
|
||||
|
||||
@@ -494,12 +496,12 @@ void daAlink_c::setIronBallPos() {
|
||||
cXyz spC4;
|
||||
cXyz spB8;
|
||||
|
||||
if (field_0xFB8.ChkAtHit()) {
|
||||
if (mAtSph.ChkAtHit()) {
|
||||
dComIfGp_getVibration().StartShock(3, 1, cXyz(0.0f, 1.0f, 0.0f));
|
||||
}
|
||||
|
||||
if (mItemVar0.field_0x3018 == 0) {
|
||||
mDoMtx_stack_c::copy(mpLinkModel->getAnmMtx(0xA));
|
||||
mDoMtx_stack_c::copy(mpLinkModel->getAnmMtx(10));
|
||||
mDoMtx_stack_c::transM(-35.3f, -9.5f, -16.0f);
|
||||
mDoMtx_stack_c::XYZrotM(cM_deg2s(61.5f), cM_deg2s(-2.5f), cM_deg2s(50.3f));
|
||||
mDoMtx_stack_c::multVecZero(mIronBallChainPos);
|
||||
@@ -513,8 +515,8 @@ void daAlink_c::setIronBallPos() {
|
||||
mItemMode = 6;
|
||||
} else if (mItemVar0.field_0x3018 != 1) {
|
||||
if (mItemVar0.field_0x3018 == 2) {
|
||||
daPy_frameCtrl_c* temp_r24 = &mUpperFrameCtrl[2];
|
||||
s16 sp10 = 32768.0f - (65536.0f * (temp_r24->getFrame() / temp_r24->getEnd()));
|
||||
daPy_frameCtrl_c* framectrl = &mUpperFrameCtrl[2];
|
||||
s16 sp10 = 32768.0f - (65536.0f * (framectrl->getFrame() / framectrl->getEnd()));
|
||||
|
||||
mItemMode = 3;
|
||||
|
||||
@@ -570,13 +572,13 @@ void daAlink_c::setIronBallPos() {
|
||||
spF4 = *mIronBallChainPos - mHookshotTopPos;
|
||||
f32 temp_f1 = spF4.abs();
|
||||
|
||||
BOOL var_r26 = 0;
|
||||
BOOL var_r26 = FALSE;
|
||||
if (temp_f1 > 1000.0f) {
|
||||
spF4 *= 1000.0f / temp_f1;
|
||||
*mIronBallChainPos = mHookshotTopPos + spF4;
|
||||
|
||||
if (field_0x3848->abs2() < 1.0f) {
|
||||
var_r26 = 1;
|
||||
var_r26 = TRUE;
|
||||
} else {
|
||||
field_0x3848->x = 0.0f;
|
||||
field_0x3848->z = 0.0f;
|
||||
@@ -811,14 +813,14 @@ BOOL daAlink_c::checkIronBallAnime() const {
|
||||
void daAlink_c::setIronBallReadyAnime() {
|
||||
resetUpperAnime(UPPER_2, -1.0f);
|
||||
setSingleAnime(ANM_IRONBALL_ATTACK, mpHIO->mItem.mIronBall.m.mPrepareAnmSpeed, 0.0f,
|
||||
0x15, mpHIO->mItem.mIronBall.m.mPrepareInterpolation);
|
||||
setUpperAnimeBaseSpeed(0x19A, mpHIO->mItem.mIronBall.m.mPrepareAnmSpeed, -1.0f);
|
||||
21, mpHIO->mItem.mIronBall.m.mPrepareInterpolation);
|
||||
setUpperAnimeBaseSpeed(dRes_ID_ALANM_BCK_IBTHROW_e, mpHIO->mItem.mIronBall.m.mPrepareAnmSpeed, -1.0f);
|
||||
mNowAnmPackUpper[2].setRatio(0.0f);
|
||||
voiceStart(Z2SE_AL_V_SWING_IB);
|
||||
|
||||
field_0xFB8.OffAtSetBit();
|
||||
field_0xFB8.ResetAtHit();
|
||||
field_0xFB8.SetAtAtp(2);
|
||||
mAtSph.OffAtSetBit();
|
||||
mAtSph.ResetAtHit();
|
||||
mAtSph.SetAtAtp(2);
|
||||
|
||||
field_0x301e = 10;
|
||||
field_0x3020 = 0;
|
||||
@@ -845,13 +847,12 @@ BOOL daAlink_c::checkUpperItemActionIronBall() {
|
||||
return procIronBallThrowInit();
|
||||
}
|
||||
|
||||
if (frameCtrl->checkAnmEnd()) {
|
||||
if (checkAnmEnd(frameCtrl)) {
|
||||
if (checkModeFlg(1)) {
|
||||
setSingleAnimeBaseSpeed(ANM_IRONBALL_TURN, mpHIO->mItem.mIronBall.m.mTurnAnmSpeed, mpHIO->mItem.mIronBall.m.mTurnInterpolation);
|
||||
}
|
||||
|
||||
u16 upperId = getMainBckData(ANM_IRONBALL_TURN)->m_upperID;
|
||||
setUpperAnimeBaseSpeed(upperId, mpHIO->mItem.mIronBall.m.mTurnAnmSpeed, mpHIO->mItem.mIronBall.m.mTurnInterpolation);
|
||||
setUpperAnimeBaseSpeed(getMainBckData(ANM_IRONBALL_TURN)->m_upperID, mpHIO->mItem.mIronBall.m.mTurnAnmSpeed, mpHIO->mItem.mIronBall.m.mTurnInterpolation);
|
||||
mItemVar0.field_0x3018 = 2;
|
||||
seStartOnlyReverb(Z2SE_AL_IB_SWING);
|
||||
return 1;
|
||||
@@ -912,7 +913,7 @@ int daAlink_c::procIronBallSubjectInit() {
|
||||
|
||||
int daAlink_c::procIronBallSubject() {
|
||||
if (checkIronBallAnime()) {
|
||||
setDoStatus(0x12);
|
||||
setDoStatus(BUTTON_STATUS_BACK);
|
||||
}
|
||||
|
||||
setShapeAngleToAtnActor(0);
|
||||
@@ -943,13 +944,13 @@ int daAlink_c::procIronBallMoveInit() {
|
||||
|
||||
int daAlink_c::procIronBallMove() {
|
||||
if (checkIronBallAnime()) {
|
||||
setDoStatus(0x12);
|
||||
setDoStatus(BUTTON_STATUS_BACK);
|
||||
}
|
||||
|
||||
setShapeAngleToAtnActor(0);
|
||||
|
||||
if (!checkNextAction(0)) {
|
||||
f32 var_f31 = -1.0f;
|
||||
f32 morf = -1.0f;
|
||||
|
||||
if (checkIronBallPreSwingAnime()) {
|
||||
mNormalSpeed = 0.0f;
|
||||
@@ -960,7 +961,7 @@ int daAlink_c::procIronBallMove() {
|
||||
|
||||
if (field_0x2f98 != 2) {
|
||||
field_0x2f98 = 2;
|
||||
var_f31 = mpHIO->mBasic.m.mBasicInterpolation;
|
||||
morf = mpHIO->mBasic.m.mBasicInterpolation;
|
||||
}
|
||||
} else {
|
||||
offModeFlg(1);
|
||||
@@ -969,7 +970,7 @@ int daAlink_c::procIronBallMove() {
|
||||
if (checkModeFlg(1)) {
|
||||
setIronBallBaseAnime();
|
||||
} else {
|
||||
setBlendAtnMoveAnime(var_f31);
|
||||
setBlendAtnMoveAnime(morf);
|
||||
}
|
||||
|
||||
setBodyAngleXReadyAnime(0);
|
||||
@@ -992,12 +993,12 @@ int daAlink_c::procIronBallThrowInit() {
|
||||
|
||||
voiceStart(Z2SE_AL_V_THROW_IB);
|
||||
seStartOnlyReverb(Z2SE_AL_IB_THROW);
|
||||
field_0xFB8.SetAtAtp(3);
|
||||
mAtSph.SetAtAtp(3);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int daAlink_c::procIronBallThrow() {
|
||||
daPy_frameCtrl_c* temp_r29 = &mUnderFrameCtrl[0];
|
||||
daPy_frameCtrl_c* framectrl = &mUnderFrameCtrl[0];
|
||||
|
||||
if (mEquipItem != fpcNm_ITEM_IRONBALL) {
|
||||
return checkWaitAction();
|
||||
@@ -1009,16 +1010,16 @@ int daAlink_c::procIronBallThrow() {
|
||||
return procIronBallReturnInit();
|
||||
}
|
||||
|
||||
if (mItemVar0.field_0x3018 == 4 && temp_r29->checkPass(6.0f)) {
|
||||
if (mItemVar0.field_0x3018 == 4 && framectrl->checkPass(6.0f)) {
|
||||
mItemVar0.field_0x3018 = 5;
|
||||
mDoMtx_stack_c::ZXYrotS(mBodyAngle.x, shape_angle.y, 0);
|
||||
|
||||
Vec sp8 = {0.0f, mpHIO->mItem.mIronBall.m.mThrowSpeedY, mpHIO->mItem.mIronBall.m.mThrowSpeedZ};
|
||||
mDoMtx_stack_c::multVec(&sp8, field_0x3848);
|
||||
Vec throwVec = {0.0f, mpHIO->mItem.mIronBall.m.mThrowSpeedY, mpHIO->mItem.mIronBall.m.mThrowSpeedZ};
|
||||
mDoMtx_stack_c::multVec(&throwVec, field_0x3848);
|
||||
field_0x3022 = 0;
|
||||
}
|
||||
|
||||
if (checkAnmEnd(temp_r29)) {
|
||||
if (checkAnmEnd(framectrl)) {
|
||||
if (mProcVar2.field_0x300c == 0) {
|
||||
mProcVar2.field_0x300c = 1;
|
||||
setSingleAnimeBaseSpeed(ANM_IRONBALL_THROW, mpHIO->mItem.mIronBall.m.mThrowAnmSpeed, mpHIO->mItem.mIronBall.m.mThrowInterpolation);
|
||||
@@ -1028,9 +1029,9 @@ int daAlink_c::procIronBallThrow() {
|
||||
procIronBallReturnInit();
|
||||
}
|
||||
} else if (mProcVar2.field_0x300c != 0) {
|
||||
if (temp_r29->getFrame() >= 5.0f) {
|
||||
field_0x2f92 = 0xFE;
|
||||
field_0x2f93 = 0xFE;
|
||||
if (framectrl->getFrame() >= 5.0f) {
|
||||
mLeftHandIndex = 0xFE;
|
||||
mRightHandIndex = 0xFE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1070,7 +1071,7 @@ int daAlink_c::procIronBallReturn() {
|
||||
seStartOnlyReverb(Z2SE_AL_IB_CATCH);
|
||||
|
||||
dComIfGp_getVibration().StartShock(3, 1, cXyz(0.0f, 1.0f, 0.0f));
|
||||
} else if (frameCtrl->checkAnmEnd()) {
|
||||
} else if (checkAnmEnd(frameCtrl)) {
|
||||
if (mItemVar0.field_0x3018 == 8) {
|
||||
mItemVar0.field_0x3018 = 0;
|
||||
setIronBallWaitUpperAnime(1);
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
#include "SSystem/SComponent/c_math.h"
|
||||
|
||||
static fopAc_ac_c* daAlink_searchTagKandelaar(fopAc_ac_c* i_actor, void* i_data) {
|
||||
UNUSED(i_data);
|
||||
|
||||
if (fopAcM_GetName(i_actor) == PROC_TAG_LANTERN) {
|
||||
return i_actor;
|
||||
}
|
||||
@@ -19,10 +21,11 @@ static fopAc_ac_c* daAlink_searchTagKandelaar(fopAc_ac_c* i_actor, void* i_data)
|
||||
}
|
||||
|
||||
static fopAc_ac_c* daAlink_searchTagKtOnFire(fopAc_ac_c* i_actor, void* i_data) {
|
||||
UNUSED(i_data);
|
||||
daAlink_c* player_p = daAlink_getAlinkActorClass();
|
||||
|
||||
if (fopAcM_GetName(i_actor) == PROC_Tag_KtOnFire &&
|
||||
i_actor->current.pos.abs2(player_p->current.pos) < 22500.0f &&
|
||||
i_actor->current.pos.abs2(player_p->current.pos) < SQUARE(150.0f) &&
|
||||
fopAcM_seenActorAngleY(player_p, i_actor) < 0x3000)
|
||||
{
|
||||
return i_actor;
|
||||
@@ -34,7 +37,7 @@ static fopAc_ac_c* daAlink_searchTagKtOnFire(fopAc_ac_c* i_actor, void* i_data)
|
||||
void daAlink_c::setKandelaarMtx(Mtx i_mtx, int param_1, int param_2) {
|
||||
if (mpKanteraModel != NULL) {
|
||||
if (checkNoResetFlg2(FLG2_UNK_1)) {
|
||||
deleteEquipItem(0, 1);
|
||||
deleteEquipItem(FALSE, TRUE);
|
||||
}
|
||||
|
||||
onEndResetFlg1(ERFLG1_UNK_4);
|
||||
@@ -51,7 +54,6 @@ void daAlink_c::setKandelaarMtx(Mtx i_mtx, int param_1, int param_2) {
|
||||
}
|
||||
|
||||
BOOL daAlink_c::checkWaterInKandelaarOffset(f32 param_0) {
|
||||
f32 tmp_65 = 65.0f; // tmp can be removed with literals
|
||||
f32 base_y_pos;
|
||||
if (checkModeFlg(0x40)) {
|
||||
base_y_pos = mRightFootPos.y;
|
||||
@@ -59,7 +61,7 @@ BOOL daAlink_c::checkWaterInKandelaarOffset(f32 param_0) {
|
||||
base_y_pos = current.pos.y;
|
||||
}
|
||||
|
||||
return param_0 > tmp_65 + base_y_pos;
|
||||
return param_0 > 65.0f + base_y_pos;
|
||||
}
|
||||
|
||||
void daAlink_c::checkWaterInKandelaar(f32 param_0) {
|
||||
@@ -74,7 +76,7 @@ void daAlink_c::checkWaterInKandelaar(f32 param_0) {
|
||||
}
|
||||
|
||||
void daAlink_c::offKandelaarModel() {
|
||||
offNoResetFlg2(FLG2_UNK_10000001);
|
||||
offNoResetFlg2(daPy_FLG2(FLG2_KANDELAAR_LIGHT_OFF | FLG2_UNK_1));
|
||||
mZ2Link.setKanteraState(0);
|
||||
}
|
||||
|
||||
@@ -111,7 +113,7 @@ int daAlink_c::kandelaarModelCallBack() {
|
||||
mDoMtx_stack_c::multVec(&sp38, &sp38);
|
||||
|
||||
s16 var_r28 = cLib_minMaxLimit<s16>(cM_atan2s(-sp38.z, -sp38.y), -0x1800, 0x1800);
|
||||
s16 var_r27 = cLib_minMaxLimit<s16>(cM_atan2s(sp38.x, JMAFastSqrt((sp38.y * sp38.y) + (sp38.z * sp38.z))), -0x1800, 0x1800);
|
||||
s16 var_r27 = cLib_minMaxLimit<s16>(cM_atan2s(sp38.x, JMAFastSqrt(SQUARE(sp38.y) + SQUARE(sp38.z))), -0x1800, 0x1800);
|
||||
|
||||
mDoMtx_stack_c::transS(sp44);
|
||||
if (mProcID != PROC_OPEN_TREASURE && (mProcID != PROC_GET_ITEM || mProcVar4.field_0x3010 == 0)) {
|
||||
@@ -124,10 +126,10 @@ int daAlink_c::kandelaarModelCallBack() {
|
||||
field_0x3618 = (mKandelaarFlamePos - field_0x3624) * 0.9f;
|
||||
|
||||
if (!checkEndResetFlg1(ERFLG1_UNK_8)) {
|
||||
f32 temp_f31 = JMAFastSqrt((J3DSys::mCurrentMtx[0][0] * J3DSys::mCurrentMtx[0][0]) + (J3DSys::mCurrentMtx[1][0] * J3DSys::mCurrentMtx[1][0]) + (J3DSys::mCurrentMtx[2][0] * J3DSys::mCurrentMtx[2][0]));
|
||||
f32 scale = JMAFastSqrt(SQUARE(J3DSys::mCurrentMtx[0][0]) + SQUARE(J3DSys::mCurrentMtx[1][0]) + SQUARE(J3DSys::mCurrentMtx[2][0]));
|
||||
mDoMtx_stack_c::transS(J3DSys::mCurrentMtx[0][3], J3DSys::mCurrentMtx[1][3], J3DSys::mCurrentMtx[2][3]);
|
||||
mDoMtx_stack_c::ZXYrotM(var_r28, var_r29, var_r27);
|
||||
mDoMtx_stack_c::scaleM(temp_f31, temp_f31, temp_f31);
|
||||
mDoMtx_stack_c::scaleM(scale, scale, scale);
|
||||
|
||||
mpKanteraModel->setAnmMtx(1, mDoMtx_stack_c::get());
|
||||
cMtx_copy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx);
|
||||
@@ -136,7 +138,9 @@ int daAlink_c::kandelaarModelCallBack() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int daAlink_kandelaarModelCallBack(J3DJoint* param_0, int param_1) {
|
||||
static int daAlink_kandelaarModelCallBack(J3DJoint* i_joint, int param_1) {
|
||||
UNUSED(i_joint);
|
||||
|
||||
daAlink_c* player_p = (daAlink_c*)j3dSys.getModel()->getUserArea();
|
||||
|
||||
if (param_1 == 0) {
|
||||
@@ -147,7 +151,7 @@ static int daAlink_kandelaarModelCallBack(J3DJoint* param_0, int param_1) {
|
||||
}
|
||||
|
||||
cXyz* daAlink_c::getKandelaarFlamePos() {
|
||||
if ((!checkNoResetFlg2((daPy_FLG2)0x20001) && !checkEndResetFlg1(ERFLG1_UNK_4)) ||
|
||||
if ((!checkNoResetFlg2(daPy_FLG2(FLG2_UNK_20000 | FLG2_UNK_1)) && !checkEndResetFlg1(ERFLG1_UNK_4)) ||
|
||||
checkWolf() || !checkNoResetFlg1(FLG1_UNK_80))
|
||||
{
|
||||
return NULL;
|
||||
@@ -157,7 +161,7 @@ cXyz* daAlink_c::getKandelaarFlamePos() {
|
||||
}
|
||||
|
||||
BOOL daAlink_c::checkKandelaarEquipAnime() const {
|
||||
return checkUpperAnime(0x264) || checkUpperAnime(0x268);
|
||||
return checkUpperAnime(dRes_ID_ALANM_BCK_WAITHK_e) || checkUpperAnime(dRes_ID_ALANM_BCK_WAITK_e);
|
||||
}
|
||||
|
||||
void daAlink_c::preKandelaarDraw() {
|
||||
@@ -179,14 +183,14 @@ void daAlink_c::preKandelaarDraw() {
|
||||
mDoLib_project(&mKandelaarFlamePos, &proj);
|
||||
|
||||
camera_class* camera_p = dComIfGp_getCamera(0);
|
||||
f32 var_f3;
|
||||
f32 trimHeight;
|
||||
if (camera_p != NULL) {
|
||||
var_f3 = camera_p->mCamera.TrimHeight();
|
||||
trimHeight = camera_p->mCamera.TrimHeight();
|
||||
} else {
|
||||
var_f3 = 0.0f;
|
||||
trimHeight = 0.0f;
|
||||
}
|
||||
|
||||
if (proj.x > 0.0f && proj.x < FB_WIDTH && proj.y > var_f3 && proj.y < FB_HEIGHT - var_f3) {
|
||||
if (proj.x > 0.0f && proj.x < FB_WIDTH && proj.y > trimHeight && proj.y < FB_HEIGHT - trimHeight) {
|
||||
dComIfGd_peekZ(proj.x, proj.y, &field_0x32c8);
|
||||
} else {
|
||||
field_0x32c8 = 0;
|
||||
@@ -210,7 +214,7 @@ void daAlink_c::setKandelaarModel() {
|
||||
if (!checkNoResetFlg2(FLG2_UNK_1)) {
|
||||
onNoResetFlg2(FLG2_UNK_1);
|
||||
|
||||
mDoMtx_multVecZero(mpLinkModel->getAnmMtx(field_0x30c0), &mKandelaarFlamePos);
|
||||
mDoMtx_multVecZero(mpLinkModel->getAnmMtx(mLeftItemJntNo), &mKandelaarFlamePos);
|
||||
mKandelaarFlamePos.y -= 30.0f;
|
||||
|
||||
field_0x3630 = field_0x3624;
|
||||
@@ -227,7 +231,6 @@ void daAlink_c::setKandelaarModel() {
|
||||
mZ2Link.setKanteraState(1);
|
||||
}
|
||||
|
||||
|
||||
void daAlink_c::resetOilBottleModel() {
|
||||
deleteEquipItem(FALSE, TRUE);
|
||||
|
||||
@@ -270,7 +273,7 @@ int daAlink_c::commonKandelaarPour(int param_0) {
|
||||
current_anm = mUnderAnmHeap[0].getIdx();
|
||||
}
|
||||
|
||||
onNoResetFlg2(FLG2_UNK_10000000);
|
||||
onNoResetFlg2(FLG2_KANDELAAR_LIGHT_OFF);
|
||||
|
||||
if (current_anm == getMainBckData(ANM_OIL_BOTTLE_POUR_START)->m_underID) {
|
||||
if (checkAnmEnd(frameCtrl_p)) {
|
||||
@@ -310,14 +313,13 @@ int daAlink_c::commonKandelaarPour(int param_0) {
|
||||
|
||||
resetOilBottleModel();
|
||||
resetSpecialEvent();
|
||||
offNoResetFlg2(FLG2_UNK_10000000);
|
||||
offNoResetFlg2(FLG2_KANDELAAR_LIGHT_OFF);
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void daAlink_c::initKandelaarSwing() {
|
||||
if (mEquipItem == fpcNm_ITEM_KANTERA) {
|
||||
if (dComIfGs_getOil() != 0) {
|
||||
@@ -328,19 +330,19 @@ void daAlink_c::initKandelaarSwing() {
|
||||
}
|
||||
|
||||
voiceStart(Z2SE_AL_V_SWING_BOTTLE);
|
||||
field_0xFB8.ResetAtHit();
|
||||
mAtSph.ResetAtHit();
|
||||
|
||||
if (!checkEventRun()) {
|
||||
dComIfGp_setItemOilCount(-mpHIO->mItem.mLantern.m.mShakeOilLoss);
|
||||
}
|
||||
|
||||
field_0xFB8.OffAtSetBit();
|
||||
field_0xFB8.SetR(50.0f);
|
||||
field_0xFB8.SetAtType(AT_TYPE_LANTERN_SWING);
|
||||
field_0xFB8.SetAtHitMark(0);
|
||||
field_0xFB8.SetAtSe(dCcD_SE_NONE);
|
||||
field_0xFB8.SetAtAtp(0);
|
||||
field_0xFB8.SetAtMtrl(dCcD_MTRL_FIRE);
|
||||
mAtSph.OffAtSetBit();
|
||||
mAtSph.SetR(50.0f);
|
||||
mAtSph.SetAtType(AT_TYPE_LANTERN_SWING);
|
||||
mAtSph.SetAtHitMark(0);
|
||||
mAtSph.SetAtSe(dCcD_SE_NONE);
|
||||
mAtSph.SetAtAtp(0);
|
||||
mAtSph.SetAtMtrl(dCcD_MTRL_FIRE);
|
||||
}
|
||||
|
||||
int daAlink_c::procKandelaarSwingInit() {
|
||||
@@ -383,17 +385,16 @@ int daAlink_c::procKandelaarSwingInit() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int daAlink_c::procKandelaarSwing() {
|
||||
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
|
||||
|
||||
if (frameCtrl_p->checkAnmEnd()) {
|
||||
if (mDemo.getDemoMode() == 0x27) {
|
||||
if (checkAnmEnd(frameCtrl_p)) {
|
||||
if (mDemo.getDemoMode() == daPy_demo_c::DEMO_KANDELAAR_SWING_e) {
|
||||
dComIfGp_evmng_cutEnd(mAlinkStaffId);
|
||||
} else {
|
||||
checkNextAction(0);
|
||||
}
|
||||
} else if (frameCtrl_p->getFrame() > field_0x3478 && mDemo.getDemoMode() != 0x27) {
|
||||
} else if (frameCtrl_p->getFrame() > field_0x3478 && mDemo.getDemoMode() != daPy_demo_c::DEMO_KANDELAAR_SWING_e) {
|
||||
onModeFlg(4);
|
||||
checkNextAction(1);
|
||||
}
|
||||
@@ -402,7 +403,7 @@ int daAlink_c::procKandelaarSwing() {
|
||||
}
|
||||
|
||||
int daAlink_c::procKandelaarPourInit() {
|
||||
if (!dComIfGp_event_compulsory(this, 0, 0xFBFF)) {
|
||||
if (!dComIfGp_event_compulsory(this, NULL, 0xFBFF)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -63,38 +63,39 @@ int daAlink_c::checkSubjectAction() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
s16 daAlink_c::checkBodyAngleX(s16 param_0) {
|
||||
s16 daAlink_c::checkBodyAngleX(s16 i_angle) {
|
||||
if (checkWolf() || mProcID == PROC_PEEP_SUBJECTIVITY || mProcID == PROC_HOOKSHOT_WALL_SHOOT) {
|
||||
return param_0;
|
||||
return i_angle;
|
||||
}
|
||||
|
||||
Vec sp2C = { 0.0f, 0.0f, 0.0f };
|
||||
sp2C.y = 0.5f * field_0x598;
|
||||
f32 var_f31 = 0.5f * mHeight;
|
||||
sp2C.y = var_f31;
|
||||
|
||||
cXyz sp20;
|
||||
mDoMtx_multVecZero(mpLinkModel->getAnmMtx(1), &sp20);
|
||||
cXyz sp14;
|
||||
cXyz backbone1_pos;
|
||||
mDoMtx_multVecZero(mpLinkModel->getAnmMtx(1), &backbone1_pos);
|
||||
cXyz check_pos;
|
||||
|
||||
if (param_0 >= 0) {
|
||||
if (i_angle >= 0) {
|
||||
sp2C.z = 25.0f;
|
||||
} else {
|
||||
sp2C.z = -25.0f;
|
||||
}
|
||||
|
||||
mDoMtx_stack_c::transS(sp20);
|
||||
mDoMtx_stack_c::transS(backbone1_pos);
|
||||
concatMagneBootMtx();
|
||||
mDoMtx_stack_c::ZXYrotM(param_0, shape_angle.y, 0);
|
||||
mDoMtx_stack_c::multVec(&sp2C, &sp14);
|
||||
mDoMtx_stack_c::ZXYrotM(i_angle, shape_angle.y, 0);
|
||||
mDoMtx_stack_c::multVec(&sp2C, &check_pos);
|
||||
|
||||
if (commonLineCheck(&sp20, &sp14)) {
|
||||
cXyz sp8 = sp14 - mLinkLinChk.GetCross();
|
||||
multVecMagneBootInvMtx(&sp8);
|
||||
if (commonLineCheck(&backbone1_pos, &check_pos)) {
|
||||
cXyz dist = check_pos - mLinkLinChk.GetCross();
|
||||
multVecMagneBootInvMtx(&dist);
|
||||
|
||||
current.pos.x -= sp8.x;
|
||||
current.pos.z -= sp8.z;
|
||||
current.pos.x -= dist.x;
|
||||
current.pos.z -= dist.z;
|
||||
}
|
||||
|
||||
return param_0;
|
||||
return i_angle;
|
||||
}
|
||||
|
||||
BOOL daAlink_c::setBodyAngleToCamera() {
|
||||
@@ -105,7 +106,7 @@ BOOL daAlink_c::setBodyAngleToCamera() {
|
||||
|
||||
s16 sp8;
|
||||
if (checkInputOnR()) {
|
||||
f32 var_f31 = 512.0f * field_0x33ac * field_0x33ac;
|
||||
f32 var_f31 = 512.0f * mMoveValue * mMoveValue;
|
||||
if (checkWolfEyeUp()) {
|
||||
var_f31 *= 0.6f;
|
||||
}
|
||||
@@ -160,11 +161,11 @@ BOOL daAlink_c::subjectCancelTrigger() {
|
||||
return false;
|
||||
}
|
||||
|
||||
int daAlink_c::checkSubjectEnd(BOOL i_playSound) {
|
||||
setDoStatus(0x12);
|
||||
BOOL daAlink_c::checkSubjectEnd(BOOL i_isPlaySe) {
|
||||
setDoStatus(BUTTON_STATUS_BACK);
|
||||
|
||||
if (checkEventRun() || checkEquipAnime() || doTrigger() || checkSetItemTrigger(fpcNm_ITEM_HAWK_EYE) || subjectCancelTrigger() || checkEndResetFlg0(ERFLG0_FORCE_SUBJECT_CANCEL) || dComIfGp_checkCameraAttentionStatus(field_0x317c, 0x2000)) {
|
||||
if (i_playSound) {
|
||||
if (i_isPlaySe) {
|
||||
seStartSystem(Z2SE_SUBJ_VIEW_OUT);
|
||||
}
|
||||
|
||||
@@ -180,7 +181,8 @@ void daAlink_c::searchPeepObj(fopAc_ac_c* i_actor, void* i_data) {
|
||||
f32 var_f31 = current.pos.abs2(i_actor->current.pos);
|
||||
if (var_f31 < field_0x3478) {
|
||||
field_0x3478 = var_f31;
|
||||
*(fopAc_ac_c**)i_data = i_actor;
|
||||
fopAc_ac_c** var_r29 = (fopAc_ac_c**)i_data;
|
||||
*var_r29 = i_actor;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -195,7 +197,7 @@ int daAlink_c::procCoSubjectivityInit() {
|
||||
mNormalSpeed = 0.0f;
|
||||
|
||||
setSubjectMode();
|
||||
field_0x2fe6 = shape_angle.y;
|
||||
mPrevAngleY = shape_angle.y;
|
||||
|
||||
if (checkWolf()) {
|
||||
setSingleAnimeWolfBaseSpeed(WANM_WAIT, 0.0f, 3.0f);
|
||||
@@ -310,7 +312,7 @@ int daAlink_c::procCoPeepSubjectivity() {
|
||||
mPeepExitID = peep->getSceneListID();
|
||||
}
|
||||
|
||||
if (dComIfGp_event_compulsory(this, 0, 0xFFFF)) {
|
||||
if (dComIfGp_event_compulsory(this, NULL, 0xFFFF)) {
|
||||
startPeepChange();
|
||||
}
|
||||
}
|
||||
@@ -319,45 +321,45 @@ int daAlink_c::procCoPeepSubjectivity() {
|
||||
}
|
||||
|
||||
u32 daAlink_c::checkBoardRide() const {
|
||||
return mRideStatus == 4;
|
||||
return mRideStatus == RIDETYPE_BOARD;
|
||||
}
|
||||
|
||||
u32 daAlink_c::checkCanoeRide() const {
|
||||
return mRideStatus == 3;
|
||||
return mRideStatus == RIDETYPE_CANOE;
|
||||
}
|
||||
|
||||
u32 daAlink_c::checkHorseRide() const {
|
||||
return mRideStatus == 1;
|
||||
return mRideStatus == RIDETYPE_HORSE;
|
||||
}
|
||||
|
||||
MtxP daAlink_c::getLeftItemMatrix() {
|
||||
return mpLinkModel->getAnmMtx(field_0x30c0);
|
||||
return mpLinkModel->getAnmMtx(mLeftItemJntNo);
|
||||
}
|
||||
|
||||
u32 daAlink_c::checkBoarRide() const {
|
||||
return mRideStatus == 2;
|
||||
return mRideStatus == RIDETYPE_BOAR;
|
||||
}
|
||||
|
||||
u32 daAlink_c::checkSpinnerRide() const {
|
||||
return mRideStatus == 5;
|
||||
return mRideStatus == RIDETYPE_SPINNER;
|
||||
}
|
||||
|
||||
MtxP daAlink_c::getLeftHandMatrix() {
|
||||
return mpLinkModel->getAnmMtx(field_0x30b8);
|
||||
return mpLinkModel->getAnmMtx(mLeftHandJntNo);
|
||||
}
|
||||
|
||||
MtxP daAlink_c::getRightHandMatrix() {
|
||||
return mpLinkModel->getAnmMtx(field_0x30ba);
|
||||
return mpLinkModel->getAnmMtx(mRightHandJntNo);
|
||||
}
|
||||
|
||||
void daAlink_c::onSceneChangeArea(u8 exitID, u8 exitDirection, fopAc_ac_c* scexAc) {
|
||||
mExitID = exitID;
|
||||
mExitDirection = exitDirection;
|
||||
mpScnChg = (daScex_c*)scexAc;
|
||||
void daAlink_c::onSceneChangeArea(u8 i_exitID, u8 i_exitDirection, fopAc_ac_c* i_scexAc) {
|
||||
mExitID = i_exitID;
|
||||
mExitDirection = i_exitDirection;
|
||||
mpScnChg = (daScex_c*)i_scexAc;
|
||||
}
|
||||
|
||||
MtxP daAlink_c::getRightItemMatrix() {
|
||||
return mpLinkModel->getAnmMtx(field_0x30c2);
|
||||
return mpLinkModel->getAnmMtx(mRightItemJntNo);
|
||||
}
|
||||
|
||||
u32 daAlink_c::checkPlayerNoDraw() {
|
||||
@@ -366,5 +368,10 @@ u32 daAlink_c::checkPlayerNoDraw() {
|
||||
}
|
||||
|
||||
daAlink_c::daAlink_c()
|
||||
: mAnmHeap3(0), mAnmHeap4(0), mFaceBtpHeap(0x800), mFaceBtkHeap(0x400), mFaceBckHeap(0xC00),
|
||||
mAnmHeap9(0x800) {}
|
||||
: mAnmHeap3(0),
|
||||
mAnmHeap4(0),
|
||||
mFaceBtpHeap(0x800),
|
||||
mFaceBtkHeap(0x400),
|
||||
mFaceBckHeap(0xC00),
|
||||
mAnmHeap9(0x800)
|
||||
{}
|
||||
|
||||
@@ -84,7 +84,6 @@ bool daAlink_c::checkSpinnerTriggerAttack() {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
void daAlink_c::setSpinnerSyncPos() {
|
||||
daSpinner_c* spinner = (daSpinner_c*)mRideAcKeep.getActor();
|
||||
|
||||
@@ -150,8 +149,8 @@ int daAlink_c::procSpinnerReady() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
void daAlink_c::setSpinnerStatus(u8 status, u8 flag) {
|
||||
dComIfGp_setDoStatus(status, flag);
|
||||
void daAlink_c::setSpinnerStatus(u8 i_status, u8 i_flag) {
|
||||
dComIfGp_setDoStatus(i_status, i_flag);
|
||||
}
|
||||
|
||||
int daAlink_c::procSpinnerWaitInit() {
|
||||
@@ -159,7 +158,7 @@ int daAlink_c::procSpinnerWaitInit() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
mRideStatus = 5;
|
||||
mRideStatus = RIDETYPE_SPINNER;
|
||||
setBgCheckParam();
|
||||
setSingleAnimeBaseSpeed(ANM_RIDE_CROUCH, mpHIO->mItem.mBoard.m.mSitAnmSpeed, 4.0f);
|
||||
speed.y = 0.0f;
|
||||
@@ -177,12 +176,12 @@ int daAlink_c::procSpinnerWaitInit() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int daAlink_c::procSpinnerWait() {
|
||||
daSpinner_c* spinner = (daSpinner_c*)mRideAcKeep.getActor();
|
||||
|
||||
if (spinner == NULL || spinner->getDeleteFlg() || checkWindSpeedOnXZ() ||
|
||||
checkEndResetFlg1(ERFLG1_UNK_1) || checkEndResetFlg0(ERFLG0_UNK_2)) {
|
||||
checkEndResetFlg1(ERFLG1_NS_SCREAM) || checkEndResetFlg0(ERFLG0_FORCE_WOLF_CHANGE))
|
||||
{
|
||||
mNormalSpeed = 0.0f;
|
||||
setJumpMode();
|
||||
return procFallInit(1, mpHIO->mAutoJump.m.mFallInterpolation);
|
||||
@@ -200,7 +199,7 @@ int daAlink_c::procSpinnerWait() {
|
||||
spinner->setMove(mNormalSpeed, getSpinnerRideMoveTime());
|
||||
} else if (checkInputOnR()) {
|
||||
int direction = getDirectionFromAngle(mStickAngle);
|
||||
s16 angle = field_0x33ac * 384.0f * field_0x33ac;
|
||||
s16 angle = mMoveValue * 384.0f * mMoveValue;
|
||||
|
||||
if (direction == DIR_LEFT) {
|
||||
shape_angle.y += angle;
|
||||
@@ -226,10 +225,10 @@ int daAlink_c::procSpinnerWait() {
|
||||
|
||||
if (spinner->checkPathMoveNow() == NULL) {
|
||||
seStartOnlyReverbLevel(Z2SE_AL_SPINNER_RIDE);
|
||||
setSpinnerStatus(ACTION_STR_ATTACK, ACTION_FLG_DEFAULT);
|
||||
setSpinnerStatus(BUTTON_STATUS_ATTACK, BUTTON_STATUS_FLAG_NONE);
|
||||
} else {
|
||||
seStartOnlyReverbLevel(Z2SE_AL_SPINNER_RAIL);
|
||||
setSpinnerStatus(ACTION_STR_JUMP2, ACTION_FLG_DEFAULT);
|
||||
setSpinnerStatus(BUTTON_STATUS_UNK_101, BUTTON_STATUS_FLAG_NONE);
|
||||
}
|
||||
|
||||
mNormalSpeed = spinner->speedF;
|
||||
@@ -237,7 +236,7 @@ int daAlink_c::procSpinnerWait() {
|
||||
|
||||
if (spinner->checkSpinnerTagIntoIncRot()) {
|
||||
mProcVar5.field_0x3012 = 1;
|
||||
setSpinnerStatus(ACTION_STR_SPIN, ACTION_FLG_CONTINUATION);
|
||||
setSpinnerStatus(BUTTON_STATUS_SPIN, BUTTON_STATUS_FLAG_CONTINUATION);
|
||||
|
||||
if (field_0x3198 != ANM_RIDE_KICK && field_0x2060->getOldFrameRate() < 0.01f) {
|
||||
setSingleAnimeBaseSpeed(ANM_RIDE_CROUCH, mpHIO->mItem.mBoard.m.mSitAnmSpeed,
|
||||
@@ -247,9 +246,9 @@ int daAlink_c::procSpinnerWait() {
|
||||
}
|
||||
} else if (spinner->checkSpinnerTagInto()) {
|
||||
if (mProcVar5.field_0x3012 != 0) {
|
||||
setSpinnerStatus(ACTION_STR_SPIN, ACTION_FLG_CONTINUATION);
|
||||
setSpinnerStatus(BUTTON_STATUS_SPIN, BUTTON_STATUS_FLAG_CONTINUATION);
|
||||
} else {
|
||||
setSpinnerStatus(ACTION_STR_SPIN, ACTION_FLG_DEFAULT);
|
||||
setSpinnerStatus(BUTTON_STATUS_SPIN, BUTTON_STATUS_FLAG_NONE);
|
||||
}
|
||||
|
||||
if ((field_0x3198 == ANM_RIDE_KICK && field_0x2060->getOldFrameRate() < 0.01f) ||
|
||||
@@ -276,7 +275,7 @@ int daAlink_c::procSpinnerWait() {
|
||||
mpHIO->mItem.mBoard.m.mAirborneAnm.mEndFrame, -1.0f);
|
||||
mProcVar4.field_0x3010 = 1;
|
||||
}
|
||||
} else if ((field_0x3198 == ANM_RIDE_JUMP_LAND && frameCtrl->checkAnmEnd()) ||
|
||||
} else if ((field_0x3198 == ANM_RIDE_JUMP_LAND && checkAnmEnd(frameCtrl)) ||
|
||||
(field_0x3198 != ANM_RIDE_JUMP_LAND && field_0x3198 != ANM_RIDE_CROUCH)) {
|
||||
setSingleAnimeBaseSpeed(ANM_RIDE_CROUCH, mpHIO->mItem.mBoard.m.mSitAnmSpeed,
|
||||
mpHIO->mItem.mBoard.m.mSitInterpolation);
|
||||
|
||||
+149
-142
@@ -17,7 +17,7 @@ BOOL daAlink_c::checkSumouVsActor() {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (mSpecialMode == 0xD || mSpecialMode == 0xB || mSpecialMode == 0xC || mSpecialMode == 0xE) {
|
||||
if (mMode == 0xD || mMode == 0xB || mMode == 0xC || mMode == 0xE) {
|
||||
procSumouWinLoseInit();
|
||||
return false;
|
||||
}
|
||||
@@ -27,15 +27,15 @@ BOOL daAlink_c::checkSumouVsActor() {
|
||||
|
||||
void daAlink_c::cancelSumouMode() {
|
||||
mCargoCarryAcKeep.clearData();
|
||||
mSpecialMode = 0;
|
||||
mMode = 0;
|
||||
}
|
||||
|
||||
BOOL daAlink_c::sumouPunchTrigger() {
|
||||
return itemTriggerCheck(BTN_B);
|
||||
return swordTrigger();
|
||||
}
|
||||
|
||||
void daAlink_c::setSumouPunchStatus() {
|
||||
setBStatus(ACTION_STR_SLAP);
|
||||
setBStatus(BUTTON_STATUS_SLAP);
|
||||
}
|
||||
|
||||
int daAlink_c::procSumouReadyInit() {
|
||||
@@ -49,7 +49,7 @@ int daAlink_c::procSumouReadyInit() {
|
||||
field_0x3588 = l_waitBaseAnime;
|
||||
field_0x34d4 = field_0x3588;
|
||||
field_0x2f99 = 4;
|
||||
mSpecialMode = 1;
|
||||
mMode = 1;
|
||||
mProcVar2.field_0x300c = 0;
|
||||
mProcVar3.field_0x300e = 0;
|
||||
deleteEquipItem(FALSE, TRUE);
|
||||
@@ -68,9 +68,9 @@ int daAlink_c::procSumouReady() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (mSpecialMode == 2 || mSpecialMode == 3 || mSpecialMode == 4) {
|
||||
if (mMode == 2 || mMode == 3 || mMode == 4) {
|
||||
setSumouPunchStatus();
|
||||
setDoStatusEmphasys(0x15);
|
||||
setDoStatusEmphasys(BUTTON_STATUS_GRAB);
|
||||
dComIfGp_setAdvanceDirection(5);
|
||||
|
||||
if (doTrigger()) {
|
||||
@@ -85,20 +85,20 @@ int daAlink_c::procSumouReady() {
|
||||
if (mUnderAnmHeap[0].getIdx() == getMainBckData(ANM_SUMOU_HAKEYOI)->m_underID &&
|
||||
mUnderFrameCtrl[0].checkPass(7.0f))
|
||||
{
|
||||
field_0x2f92 = 0xFE;
|
||||
field_0x2f93 = 0xFE;
|
||||
mLeftHandIndex = 0xFE;
|
||||
mRightHandIndex = 0xFE;
|
||||
}
|
||||
|
||||
if (mSpecialMode == 3) {
|
||||
if (mMode == 3) {
|
||||
setSingleAnimeBase(ANM_SUMOU_HAKEYOI);
|
||||
field_0x2f99 = 12;
|
||||
mSpecialMode = 4;
|
||||
mMode = 4;
|
||||
dComIfGp_clearPlayerStatus0(0, 0x2000);
|
||||
} else if (checkAnmEnd(mUnderFrameCtrl)) {
|
||||
if (checkInputOnR()) {
|
||||
s16 temp_r29 = (s16)(field_0x2fe2 - shape_angle.y);
|
||||
s16 temp_r29 = (s16)(mMoveAngle - shape_angle.y);
|
||||
int var_r30 = abs(temp_r29);
|
||||
cLib_distanceAngleS(field_0x2fe2, shape_angle.y);
|
||||
cLib_distanceAngleS(mMoveAngle, shape_angle.y);
|
||||
|
||||
if (var_r30 > 0x800 && var_r30 < 0x7800) {
|
||||
mNormalSpeed = 1.0f;
|
||||
@@ -111,10 +111,9 @@ int daAlink_c::procSumouReady() {
|
||||
}
|
||||
}
|
||||
|
||||
if (mSpecialMode == 0x1C || mSpecialMode == 0x1B || mProcVar2.field_0x300c != 0 ||
|
||||
if (mMode == 0x1C || mMode == 0x1B || mProcVar2.field_0x300c != 0 ||
|
||||
mProcVar3.field_0x300e != 0 ||
|
||||
(static_cast<daNpcWrestler_c*>(mCargoCarryAcKeep.getActor())->getWrestlerAction() ==
|
||||
3 &&
|
||||
(static_cast<daNpcWrestler_c*>(mCargoCarryAcKeep.getActor())->getWrestlerAction() == 3 &&
|
||||
!checkZeroSpeedF()))
|
||||
{
|
||||
procSumouActionInit(mProcVar2.field_0x300c, mProcVar3.field_0x300e, 0);
|
||||
@@ -126,7 +125,6 @@ int daAlink_c::procSumouReady() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int daAlink_c::procSumouMoveInit() {
|
||||
daNpcWrestler_c* wrestler_p = (daNpcWrestler_c*)mCargoCarryAcKeep.getActor();
|
||||
commonProcInit(PROC_SUMOU_MOVE);
|
||||
@@ -135,30 +133,36 @@ int daAlink_c::procSumouMoveInit() {
|
||||
field_0x3478 = 1000.0f;
|
||||
|
||||
daAlink_ANM anm;
|
||||
if (mSpecialMode == 15 || mSpecialMode == 16) {
|
||||
if (wrestler_p->getWrestlerType() != 0) {
|
||||
anm = ANM_SUMOU_TACKLE_WAIT_GORON;
|
||||
} else {
|
||||
if (mMode == 15 || mMode == 16) {
|
||||
#if VERSION == VERSION_SHIELD_DEBUG // probably a fakematch
|
||||
if (wrestler_p->getWrestlerType() == 0) {
|
||||
anm = ANM_SUMOU_TACKLE_WAIT;
|
||||
} else {
|
||||
anm = ANM_SUMOU_TACKLE_WAIT_GORON;
|
||||
}
|
||||
|
||||
#else
|
||||
anm = wrestler_p->getWrestlerType() != 0 ? ANM_SUMOU_TACKLE_WAIT_GORON : ANM_SUMOU_TACKLE_WAIT;
|
||||
#endif
|
||||
setSingleAnimeBase(anm);
|
||||
mSpeedModifier = 1.0f;
|
||||
mSpecialMode = 7;
|
||||
mMode = 7;
|
||||
mProcVar2.field_0x300c = 0xFFFF;
|
||||
mProcVar0.field_0x3008 = 10;
|
||||
field_0x3478 = 5.0f;
|
||||
field_0x32cc = Z2SE_AL_V_SUMO_PUSH;
|
||||
} else {
|
||||
if (wrestler_p->getWrestlerType() != 0) {
|
||||
anm = ANM_SUMOU_TACKLE_STAGGER_GORON;
|
||||
} else {
|
||||
#if VERSION == VERSION_SHIELD_DEBUG // probably a fakematch
|
||||
if (wrestler_p->getWrestlerType() == 0) {
|
||||
anm = ANM_SUMOU_TACKLE_STAGGER;
|
||||
} else {
|
||||
anm = ANM_SUMOU_TACKLE_STAGGER_GORON;
|
||||
}
|
||||
|
||||
#else
|
||||
anm = wrestler_p->getWrestlerType() != 0 ? ANM_SUMOU_TACKLE_STAGGER_GORON : ANM_SUMOU_TACKLE_STAGGER;
|
||||
#endif
|
||||
setSingleAnimeBase(anm);
|
||||
mSpeedModifier = -1.0f;
|
||||
mSpecialMode = 8;
|
||||
mMode = 8;
|
||||
mProcVar2.field_0x300c = 10;
|
||||
mProcVar0.field_0x3008 = 15;
|
||||
field_0x2f9d = 0x60;
|
||||
@@ -174,7 +178,6 @@ int daAlink_c::procSumouMoveInit() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int daAlink_c::procSumouMove() {
|
||||
field_0x2f99 = 4;
|
||||
|
||||
@@ -190,7 +193,7 @@ int daAlink_c::procSumouMove() {
|
||||
voiceStart(field_0x32cc);
|
||||
}
|
||||
|
||||
if (mSpecialMode == 9 || mSpecialMode == 10) {
|
||||
if (mMode == 9 || mMode == 10) {
|
||||
if (mProcVar1.field_0x300a != 0) {
|
||||
mProcVar1.field_0x300a--;
|
||||
}
|
||||
@@ -202,7 +205,7 @@ int daAlink_c::procSumouMove() {
|
||||
}
|
||||
|
||||
f32 var_f1;
|
||||
if (mSpecialMode == 10 && mProcVar1.field_0x300a == 0) {
|
||||
if (mMode == 10 && mProcVar1.field_0x300a == 0) {
|
||||
var_f1 = 1.5f;
|
||||
} else {
|
||||
var_f1 = 0.2f;
|
||||
@@ -210,11 +213,11 @@ int daAlink_c::procSumouMove() {
|
||||
|
||||
cLib_chaseF(&sp8, var_f1, 0.3f);
|
||||
frameCtrl_p->setRate(sp8);
|
||||
} else if (mSpecialMode == 9) {
|
||||
} else if (mMode == 9) {
|
||||
cLib_chaseF(&sp8, 1.5f, 0.3f);
|
||||
} else {
|
||||
setSingleAnimeBase(ANM_SUMOU_PUSH_BACK);
|
||||
mSpecialMode = 0x23;
|
||||
mMode = 0x23;
|
||||
mSpeedModifier = 0.0f;
|
||||
field_0x3478 = 13.0f;
|
||||
field_0x32cc = Z2SE_AL_V_SUMO_HOLD_BACK;
|
||||
@@ -240,26 +243,30 @@ int daAlink_c::procSumouMove() {
|
||||
|
||||
dMeter2Info_onBlinkButton(1);
|
||||
|
||||
if (mSpecialMode == 0x24 || (mSpeedModifier < 0.0f && mProcVar2.field_0x300c == 0)) {
|
||||
if (mMode == 0x24 || (mSpeedModifier < 0.0f && mProcVar2.field_0x300c == 0)) {
|
||||
mProcVar3.field_0x300e = 1;
|
||||
field_0x2f99 = 12;
|
||||
|
||||
if (mSpeedModifier > 0.0f) {
|
||||
daAlink_ANM anm;
|
||||
if (wrestler_p->getWrestlerType() != 0) {
|
||||
anm = ANM_SUMOU_PULL_BACK_GORON;
|
||||
} else {
|
||||
#if VERSION == VERSION_SHIELD_DEBUG // probably a fakematch
|
||||
if (wrestler_p->getWrestlerType() == 0) {
|
||||
anm = ANM_SUMOU_PULL_BACK;
|
||||
} else {
|
||||
anm = ANM_SUMOU_PULL_BACK_GORON;
|
||||
}
|
||||
#else
|
||||
anm = wrestler_p->getWrestlerType() != 0 ? ANM_SUMOU_PULL_BACK_GORON : ANM_SUMOU_PULL_BACK;
|
||||
#endif
|
||||
|
||||
setSingleAnimeBase(anm);
|
||||
mSpecialMode = 0x24;
|
||||
mMode = 0x24;
|
||||
field_0x3478 = 13.0f;
|
||||
field_0x32cc = Z2SE_AL_V_SUMO_PUSHED_BACK;
|
||||
field_0x3198 = anm;
|
||||
} else {
|
||||
setSingleAnimeBase(ANM_SUMOU_PUSH_BACK);
|
||||
mSpecialMode = 0x23;
|
||||
mMode = 0x23;
|
||||
field_0x3478 = 13.0f;
|
||||
field_0x32cc = Z2SE_AL_V_SUMO_HOLD_BACK;
|
||||
field_0x3198 = ANM_SUMOU_PUSH_BACK;
|
||||
@@ -272,7 +279,7 @@ int daAlink_c::procSumouMove() {
|
||||
if (mSpeedModifier > 0.0f && checkInputOnR()) {
|
||||
int direction = getDirectionFromAngle(mStickAngle);
|
||||
if (direction == DIR_LEFT || direction == DIR_RIGHT) {
|
||||
var_r31 = field_0x33ac * (mpHIO->mPushpull.m.mSumoRotationAngle * field_0x33ac);
|
||||
var_r31 = mMoveValue * (mpHIO->mPushpull.m.mSumoRotationAngle * mMoveValue);
|
||||
|
||||
if (direction == DIR_RIGHT) {
|
||||
var_r31 = -var_r31;
|
||||
@@ -311,18 +318,17 @@ int daAlink_c::procSumouMove() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int daAlink_c::procSumouSideMoveInit() {
|
||||
commonProcInit(PROC_SUMOU_SIDE_MOVE);
|
||||
mSpecialMode = 0x16;
|
||||
mMode = 0x16;
|
||||
field_0x2f98 = 3;
|
||||
current.angle.y = shape_angle.y + -0x4000;
|
||||
field_0x594 = mpHIO->mAtnMove.m.mMaxSpeed;
|
||||
mMaxSpeed = mpHIO->mAtnMove.m.mMaxSpeed;
|
||||
setSingleAnimeBase(ANM_SUMOU_FIGHT_WAIT);
|
||||
|
||||
field_0x3198 = 0x141;
|
||||
setSumouPunchStatus();
|
||||
setDoStatusEmphasys(0x15);
|
||||
setDoStatusEmphasys(BUTTON_STATUS_GRAB);
|
||||
dComIfGp_setAdvanceDirection(5);
|
||||
|
||||
field_0x2f99 = 12;
|
||||
@@ -353,8 +359,8 @@ int daAlink_c::procSumouSideMove() {
|
||||
current.angle.y = shape_angle.y + 0x4000;
|
||||
}
|
||||
|
||||
int temp_r30_2 = cLib_distanceAngleS(field_0x2fe2, shape_angle.y);
|
||||
if (mSpecialMode == 0x1C || mSpecialMode == 0x1B || doTrigger() || sumouPunchTrigger() ||
|
||||
int temp_r30_2 = cLib_distanceAngleS(mMoveAngle, shape_angle.y);
|
||||
if (mMode == 0x1C || mMode == 0x1B || doTrigger() || sumouPunchTrigger() ||
|
||||
(static_cast<daNpcWrestler_c*>(mCargoCarryAcKeep.getActor())->getWrestlerAction() == 3 &&
|
||||
!checkZeroSpeedF()))
|
||||
{
|
||||
@@ -362,12 +368,12 @@ int daAlink_c::procSumouSideMove() {
|
||||
}
|
||||
|
||||
setSumouPunchStatus();
|
||||
setDoStatusEmphasys(0x15);
|
||||
setDoStatusEmphasys(BUTTON_STATUS_GRAB);
|
||||
dComIfGp_setAdvanceDirection(5);
|
||||
|
||||
f32 var_f1;
|
||||
if (checkInputOnR() && temp_r30_2 > 0x800 && temp_r30_2 < 0x7800) {
|
||||
if (abs((s16)(field_0x2fe2 - current.angle.y)) > 0x4000) {
|
||||
if (abs((s16)(mMoveAngle - current.angle.y)) > 0x4000) {
|
||||
current.angle.y += 0x8000;
|
||||
mNormalSpeed *= -1.0f;
|
||||
|
||||
@@ -378,8 +384,8 @@ int daAlink_c::procSumouSideMove() {
|
||||
}
|
||||
}
|
||||
|
||||
if (field_0x33ac > (1.0f - fabsf(mNormalSpeed / field_0x594)) * 0.3f) {
|
||||
var_f1 = mpHIO->mAtnMove.m.mAcceleration * field_0x33ac;
|
||||
if (mMoveValue > (1.0f - fabsf(mNormalSpeed / mMaxSpeed)) * 0.3f) {
|
||||
var_f1 = mpHIO->mAtnMove.m.mAcceleration * mMoveValue;
|
||||
} else {
|
||||
var_f1 = 0.0f;
|
||||
}
|
||||
@@ -391,7 +397,7 @@ int daAlink_c::procSumouSideMove() {
|
||||
|
||||
if (checkZeroSpeedF()) {
|
||||
onModeFlg(1);
|
||||
mSpecialMode = 0x16;
|
||||
mMode = 0x16;
|
||||
field_0x2f98 = 3;
|
||||
current.angle.y = shape_angle.y - 0x4000;
|
||||
|
||||
@@ -417,13 +423,15 @@ int daAlink_c::procSumouSideMove() {
|
||||
mSpeedModifier = 1.0f;
|
||||
}
|
||||
|
||||
daPy_frameCtrl_c* framectrl = mUnderFrameCtrl;
|
||||
|
||||
if (field_0x2f98 == 3) {
|
||||
mSpecialMode = 0x18;
|
||||
mMode = 0x18;
|
||||
} else {
|
||||
mSpecialMode = 0x17;
|
||||
mMode = 0x17;
|
||||
}
|
||||
|
||||
mUnderFrameCtrl[0].setRate(mNormalSpeed / field_0x594);
|
||||
framectrl->setRate(mNormalSpeed / mMaxSpeed);
|
||||
initBasAnime();
|
||||
field_0x2f9d = 0x60;
|
||||
}
|
||||
@@ -431,8 +439,8 @@ int daAlink_c::procSumouSideMove() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int daAlink_c::procSumouActionInit(BOOL i_doTrigger, BOOL i_punchTrigger, int unused) {
|
||||
int daAlink_c::procSumouActionInit(BOOL i_isDoTrigger, BOOL i_isPunchTrigger, int unused) {
|
||||
UNUSED(unused);
|
||||
commonProcInit(PROC_SUMOU_ACTION);
|
||||
|
||||
daNpcWrestler_c* wrestler_p = (daNpcWrestler_c*)mCargoCarryAcKeep.getActor();
|
||||
@@ -440,100 +448,94 @@ int daAlink_c::procSumouActionInit(BOOL i_doTrigger, BOOL i_punchTrigger, int un
|
||||
mProcVar5.field_0x3012 = 0;
|
||||
|
||||
daAlink_ANM anm;
|
||||
if (mSpecialMode == 0x21) {
|
||||
mSpecialMode = 0x22;
|
||||
if (mMode == 0x21) {
|
||||
mMode = 0x22;
|
||||
anm = ANM_SUMOU_PUNCH_SHOCK;
|
||||
} else if (mSpecialMode == 0x1C) {
|
||||
i_doTrigger = FALSE;
|
||||
i_punchTrigger = FALSE;
|
||||
mSpecialMode = 0x1E;
|
||||
} else if (mMode == 0x1C) {
|
||||
i_isDoTrigger = FALSE;
|
||||
i_isPunchTrigger = FALSE;
|
||||
mMode = 0x1E;
|
||||
|
||||
if (!checkZeroSpeedF()) {
|
||||
daAlink_ANM var_r0;
|
||||
if (field_0x2f98 == 2) {
|
||||
var_r0 = ANM_SUMOU_FIGHT_STEP_LEFT;
|
||||
anm = ANM_SUMOU_FIGHT_STEP_LEFT;
|
||||
} else {
|
||||
var_r0 = ANM_SUMOU_FIGHT_STEP_RIGHT;
|
||||
anm = ANM_SUMOU_FIGHT_STEP_RIGHT;
|
||||
}
|
||||
|
||||
anm = var_r0;
|
||||
mProcVar5.field_0x3012 = 1;
|
||||
} else {
|
||||
anm = ANM_SUMOU_PUNCH_SHOCK;
|
||||
}
|
||||
} else if (mSpecialMode == 0x1B) {
|
||||
i_doTrigger = FALSE;
|
||||
i_punchTrigger = FALSE;
|
||||
mSpecialMode = 0x1D;
|
||||
} else if (mMode == 0x1B) {
|
||||
i_isDoTrigger = FALSE;
|
||||
i_isPunchTrigger = FALSE;
|
||||
mMode = 0x1D;
|
||||
anm = ANM_SUMOU_TACKLE_SHOCK;
|
||||
} else if (wrestler_action == 2) {
|
||||
if (i_doTrigger) {
|
||||
mSpecialMode = 0x10;
|
||||
if (i_isDoTrigger) {
|
||||
mMode = 0x10;
|
||||
anm = ANM_SUMOU_DODGE_TACKLE;
|
||||
} else if (i_punchTrigger) {
|
||||
mSpecialMode = 0x15;
|
||||
} else if (i_isPunchTrigger) {
|
||||
mMode = 0x15;
|
||||
anm = ANM_SUMOU_PUNCH_MISS_SHOCK_RETURN;
|
||||
} else {
|
||||
mSpecialMode = 0x1E;
|
||||
mMode = 0x1E;
|
||||
|
||||
if (!checkZeroSpeedF()) {
|
||||
daAlink_ANM var_r0_2;
|
||||
if (field_0x2f98 == 2) {
|
||||
var_r0_2 = ANM_SUMOU_FIGHT_STEP_LEFT;
|
||||
anm = ANM_SUMOU_FIGHT_STEP_LEFT;
|
||||
} else {
|
||||
var_r0_2 = ANM_SUMOU_FIGHT_STEP_RIGHT;
|
||||
anm = ANM_SUMOU_FIGHT_STEP_RIGHT;
|
||||
}
|
||||
|
||||
anm = var_r0_2;
|
||||
mProcVar5.field_0x3012 = 1;
|
||||
} else {
|
||||
anm = ANM_SUMOU_PUNCH_SHOCK;
|
||||
}
|
||||
}
|
||||
} else if (wrestler_action == 3) {
|
||||
if (i_doTrigger) {
|
||||
mSpecialMode = 0x12;
|
||||
if (i_isDoTrigger) {
|
||||
mMode = 0x12;
|
||||
anm = ANM_SUMOU_TACKLE_SHOCK_RETURN;
|
||||
} else if (i_punchTrigger) {
|
||||
mSpecialMode = 0x14;
|
||||
} else if (i_isPunchTrigger) {
|
||||
mMode = 0x14;
|
||||
anm = ANM_SUMOU_PUNCH_MISS_SHOCK;
|
||||
} else if (!checkZeroSpeedF()) {
|
||||
if (field_0x2f98 == 3) {
|
||||
mSpecialMode = 0x1A;
|
||||
mMode = 0x1A;
|
||||
anm = ANM_SUMOU_FIGHT_STEP_RIGHT;
|
||||
} else {
|
||||
mSpecialMode = 0x19;
|
||||
mMode = 0x19;
|
||||
anm = ANM_SUMOU_FIGHT_STEP_LEFT;
|
||||
}
|
||||
} else {
|
||||
mSpecialMode = 0x1D;
|
||||
mMode = 0x1D;
|
||||
anm = ANM_SUMOU_TACKLE_SHOCK;
|
||||
}
|
||||
} else if (wrestler_action == 1) {
|
||||
if (i_doTrigger) {
|
||||
mSpecialMode = 0x11;
|
||||
if (i_isDoTrigger) {
|
||||
mMode = 0x11;
|
||||
anm = ANM_SUMOU_TACKLE_MISS;
|
||||
} else {
|
||||
mSpecialMode = 0x13;
|
||||
mMode = 0x13;
|
||||
anm = ANM_SUMOU_PUNCH;
|
||||
}
|
||||
} else if (wrestler_p->getWrestlerType() != 0 && !checkEquipHeavyBoots()) {
|
||||
if (i_doTrigger) {
|
||||
mSpecialMode = 0x12;
|
||||
if (i_isDoTrigger) {
|
||||
mMode = 0x12;
|
||||
anm = ANM_SUMOU_TACKLE_SHOCK_RETURN;
|
||||
} else {
|
||||
mSpecialMode = 0x15;
|
||||
mMode = 0x15;
|
||||
anm = ANM_SUMOU_PUNCH_MISS_SHOCK_RETURN;
|
||||
}
|
||||
} else if (i_doTrigger) {
|
||||
mSpecialMode = 0xF;
|
||||
} else if (i_isDoTrigger) {
|
||||
mMode = 0xF;
|
||||
if (wrestler_p->getWrestlerType() == 0) {
|
||||
anm = ANM_SUMOU_TACKLE;
|
||||
} else {
|
||||
anm = ANM_SUMOU_TACKLE_GORON;
|
||||
}
|
||||
} else {
|
||||
mSpecialMode = 0x13;
|
||||
mMode = 0x13;
|
||||
anm = ANM_SUMOU_PUNCH;
|
||||
}
|
||||
|
||||
@@ -541,19 +543,19 @@ int daAlink_c::procSumouActionInit(BOOL i_doTrigger, BOOL i_punchTrigger, int un
|
||||
mDoMtx_stack_c::YrotM(shape_angle.y);
|
||||
mProcVar3.field_0x300e = 0x82;
|
||||
|
||||
if (mSpecialMode == 0x19) {
|
||||
if (mMode == 0x19) {
|
||||
dComIfGp_setAdvanceDirection(1);
|
||||
mProcVar4.field_0x3010 = shape_angle.y - 0x2800;
|
||||
field_0x2f98 = 2;
|
||||
} else if (mSpecialMode == 0x1A) {
|
||||
} else if (mMode == 0x1A) {
|
||||
field_0x2f98 = 3;
|
||||
dComIfGp_setAdvanceDirection(4);
|
||||
mProcVar4.field_0x3010 = shape_angle.y + 0x2800;
|
||||
} else if (i_doTrigger) {
|
||||
setDoStatusEmphasys(0x15);
|
||||
} else if (i_isDoTrigger) {
|
||||
setDoStatusEmphasys(BUTTON_STATUS_GRAB);
|
||||
mProcVar3.field_0x300e = 0x15;
|
||||
field_0x2f98 = 4;
|
||||
} else if (i_punchTrigger) {
|
||||
} else if (i_isPunchTrigger) {
|
||||
setSumouPunchStatus();
|
||||
mProcVar3.field_0x300e = 0x44;
|
||||
field_0x2f98 = 4;
|
||||
@@ -567,13 +569,13 @@ int daAlink_c::procSumouActionInit(BOOL i_doTrigger, BOOL i_punchTrigger, int un
|
||||
field_0x2f98 = 4;
|
||||
}
|
||||
|
||||
f32 var_f31;
|
||||
f32 anm_frame;
|
||||
if ((anm == ANM_SUMOU_FIGHT_STEP_RIGHT || anm == ANM_SUMOU_FIGHT_STEP_LEFT) &&
|
||||
mUnderAnmHeap[0].getIdx() != (getMainBckData(anm)->m_underID & 0xFFF))
|
||||
{
|
||||
var_f31 = mUnderFrameCtrl[0].getFrame();
|
||||
anm_frame = mUnderFrameCtrl[0].getFrame();
|
||||
} else {
|
||||
var_f31 = 0.0f;
|
||||
anm_frame = 0.0f;
|
||||
}
|
||||
|
||||
mProcVar2.field_0x300c = 0;
|
||||
@@ -587,8 +589,8 @@ int daAlink_c::procSumouActionInit(BOOL i_doTrigger, BOOL i_punchTrigger, int un
|
||||
}
|
||||
|
||||
setSingleAnime(anm, 1.0f, 0.0f, end_frame, 3.0f);
|
||||
mUnderFrameCtrl[0].setFrame(var_f31);
|
||||
getNowAnmPackUnder(UNDER_0)->setFrame(var_f31);
|
||||
mUnderFrameCtrl[0].setFrame(anm_frame);
|
||||
getNowAnmPackUnder(UNDER_0)->setFrame(anm_frame);
|
||||
|
||||
cLib_addCalcAngleS(&shape_angle.y,
|
||||
cLib_targetAngleY(¤t.pos, &mCargoCarryAcKeep.getActor()->current.pos),
|
||||
@@ -634,7 +636,6 @@ int daAlink_c::procSumouActionInit(BOOL i_doTrigger, BOOL i_punchTrigger, int un
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int daAlink_c::procSumouAction() {
|
||||
field_0x2f99 = 4;
|
||||
|
||||
@@ -650,11 +651,11 @@ int daAlink_c::procSumouAction() {
|
||||
|
||||
mProcVar2.field_0x300c++;
|
||||
|
||||
if (mSpecialMode == 0x1C || mSpecialMode == 0x1B) {
|
||||
if (mMode == 0x1C || mMode == 0x1B) {
|
||||
return procSumouActionInit(FALSE, FALSE, 0);
|
||||
}
|
||||
|
||||
if (mSpecialMode == 0x19 || mSpecialMode == 0x1A) {
|
||||
if (mMode == 0x19 || mMode == 0x1A) {
|
||||
cLib_addCalcAngleS(&shape_angle.y, mProcVar4.field_0x3010, 2, 0x400, 0x40);
|
||||
current.angle.y = shape_angle.y;
|
||||
|
||||
@@ -664,20 +665,20 @@ int daAlink_c::procSumouAction() {
|
||||
procSumouSideMoveInit();
|
||||
}
|
||||
} else {
|
||||
if (mSpecialMode == 0x13) {
|
||||
if (mMode == 0x13) {
|
||||
cLib_addCalcAngleS(
|
||||
&shape_angle.y,
|
||||
cLib_targetAngleY(¤t.pos, &mCargoCarryAcKeep.getActor()->current.pos), 2,
|
||||
0x2000, 0x800);
|
||||
current.angle.y = shape_angle.y;
|
||||
} else if (mSpecialMode == 0x1E && mProcVar5.field_0x3012 != 0) {
|
||||
} else if (mMode == 0x1E && mProcVar5.field_0x3012 != 0) {
|
||||
cLib_addCalcAngleS(&shape_angle.y, mProcVar4.field_0x3010, 2, 0x400, 0x40);
|
||||
current.angle.y = shape_angle.y;
|
||||
|
||||
current.pos.set(field_0x37c8.x - field_0x3478 * cM_ssin(current.angle.y),
|
||||
field_0x37c8.y,
|
||||
field_0x37c8.z - field_0x3478 * cM_scos(current.angle.y));
|
||||
} else if (mSpecialMode == 0x1E || mSpecialMode == 0x1D) {
|
||||
} else if (mMode == 0x1E || mMode == 0x1D) {
|
||||
cLib_addCalcAngleS(
|
||||
&shape_angle.y,
|
||||
cLib_targetAngleY(¤t.pos, &mCargoCarryAcKeep.getActor()->current.pos), 2,
|
||||
@@ -686,18 +687,18 @@ int daAlink_c::procSumouAction() {
|
||||
}
|
||||
|
||||
if (mProcVar3.field_0x300e == 0x15) {
|
||||
setDoStatusEmphasys(0x15);
|
||||
setDoStatusEmphasys(BUTTON_STATUS_GRAB);
|
||||
} else if (mProcVar3.field_0x300e == 0x44) {
|
||||
setSumouPunchStatus();
|
||||
}
|
||||
|
||||
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
|
||||
if (checkAnmEnd(frameCtrl_p)) {
|
||||
if (mSpecialMode == 0x1E) {
|
||||
if (mMode == 0x1E) {
|
||||
procSumouStaggerInit();
|
||||
} else if (mSpecialMode == 0x12 || mSpecialMode == 0x22 || mSpecialMode == 0x13 ||
|
||||
mSpecialMode == 0x1A || mSpecialMode == 0x19 || mSpecialMode == 0x11 ||
|
||||
mSpecialMode == 0x15)
|
||||
} else if (mMode == 0x12 || mMode == 0x22 || mMode == 0x13 ||
|
||||
mMode == 0x1A || mMode == 0x19 || mMode == 0x11 ||
|
||||
mMode == 0x15)
|
||||
{
|
||||
procSumouSideMoveInit();
|
||||
} else {
|
||||
@@ -725,14 +726,13 @@ int daAlink_c::procSumouAction() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int daAlink_c::procSumouStaggerInit() {
|
||||
commonProcInit(PROC_SUMOU_STAGGER);
|
||||
|
||||
if (mSpecialMode == 0x11) {
|
||||
mSpecialMode = 0x20;
|
||||
if (mMode == 0x11) {
|
||||
mMode = 0x20;
|
||||
} else {
|
||||
mSpecialMode = 0x1F;
|
||||
mMode = 0x1F;
|
||||
}
|
||||
|
||||
setSingleAnimeBase(ANM_SUMOU_STAGGER);
|
||||
@@ -750,8 +750,8 @@ int daAlink_c::procSumouStagger() {
|
||||
}
|
||||
|
||||
mProcVar0.field_0x3008--;
|
||||
if (mSpecialMode == 0x1C || mSpecialMode == 0x21 || mSpecialMode == 0x1B) {
|
||||
procSumouActionInit(0, 0, 0);
|
||||
if (mMode == 0x1C || mMode == 0x21 || mMode == 0x1B) {
|
||||
procSumouActionInit(FALSE, FALSE, 0);
|
||||
} else if (mProcVar0.field_0x3008 == 0) {
|
||||
procSumouSideMoveInit();
|
||||
}
|
||||
@@ -760,7 +760,7 @@ int daAlink_c::procSumouStagger() {
|
||||
}
|
||||
|
||||
int daAlink_c::procSumouWinLoseInit() {
|
||||
if (mSpecialMode == 0xB && mUnderFrameCtrl[0].getAttribute() == 2) {
|
||||
if (mMode == 0xB && mUnderFrameCtrl[0].getAttribute() == 2) {
|
||||
cancelSumouMode();
|
||||
return procWaitInit();
|
||||
}
|
||||
@@ -770,15 +770,20 @@ int daAlink_c::procSumouWinLoseInit() {
|
||||
field_0x3478 = 1000.0f;
|
||||
|
||||
daAlink_ANM anm = ANM_WAIT;
|
||||
if (mSpecialMode == 0xB) {
|
||||
if (mMode == 0xB) {
|
||||
mProcVar2.field_0x300c = 1;
|
||||
} else if (mSpecialMode == 0xD) {
|
||||
} else if (mMode == 0xD) {
|
||||
field_0x2f99 = 12;
|
||||
if (wrestler_p->getWrestlerType() != 0) {
|
||||
anm = ANM_SUMOU_WIN_GORON;
|
||||
} else {
|
||||
|
||||
#if VERSION == VERSION_SHIELD_DEBUG // probably a fakematch
|
||||
if (wrestler_p->getWrestlerType() == 0) {
|
||||
anm = ANM_SUMOU_WIN;
|
||||
} else {
|
||||
anm = ANM_SUMOU_WIN_GORON;
|
||||
}
|
||||
#else
|
||||
anm = wrestler_p->getWrestlerType() != 0 ? ANM_SUMOU_WIN_GORON : ANM_SUMOU_WIN;
|
||||
#endif
|
||||
|
||||
setSingleAnimeBase(anm);
|
||||
mProcVar2.field_0x300c = 1;
|
||||
@@ -787,7 +792,7 @@ int daAlink_c::procSumouWinLoseInit() {
|
||||
field_0x3198 = 13;
|
||||
} else {
|
||||
f32 start_frame;
|
||||
if (mSpecialMode == 12) {
|
||||
if (mMode == 12) {
|
||||
start_frame = 24.0f;
|
||||
voiceStart(Z2SE_AL_V_SUMO_FALL_LOSE);
|
||||
} else {
|
||||
@@ -796,11 +801,15 @@ int daAlink_c::procSumouWinLoseInit() {
|
||||
field_0x32cc = Z2SE_AL_V_SUMO_FALL_LOSE;
|
||||
}
|
||||
|
||||
if (wrestler_p->getWrestlerType() != 0) {
|
||||
anm = ANM_SUMOU_LOSE_GORON;
|
||||
} else {
|
||||
#if VERSION == VERSION_SHIELD_DEBUG // probably a fakematch
|
||||
if (wrestler_p->getWrestlerType() == 0) {
|
||||
anm = ANM_SUMOU_LOSE;
|
||||
} else {
|
||||
anm = ANM_SUMOU_LOSE_GORON;
|
||||
}
|
||||
#else
|
||||
anm = wrestler_p->getWrestlerType() != 0 ? ANM_SUMOU_LOSE_GORON : ANM_SUMOU_LOSE;
|
||||
#endif
|
||||
|
||||
setSingleAnime(anm, 1.0f, start_frame, -1, 3.0f);
|
||||
field_0x2f99 = 15;
|
||||
@@ -818,7 +827,6 @@ int daAlink_c::procSumouWinLoseInit() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int daAlink_c::procSumouWinLose() {
|
||||
if (mProcVar3.field_0x300e == 0) {
|
||||
if (mProcVar2.field_0x300c != 0) {
|
||||
@@ -844,7 +852,7 @@ int daAlink_c::procSumouWinLose() {
|
||||
field_0x3478 = 1000.0f;
|
||||
field_0x3198 = ANM_SUMOU_KNOCKED_DOWN;
|
||||
}
|
||||
} else if (mProcVar3.field_0x300e == 0 && mSpecialMode == 0x25) {
|
||||
} else if (mProcVar3.field_0x300e == 0 && mMode == 0x25) {
|
||||
setSingleAnimeBase(ANM_SUMOU_GET_UP);
|
||||
mProcVar3.field_0x300e = 1;
|
||||
field_0x3478 = 1000.0f;
|
||||
@@ -860,7 +868,6 @@ int daAlink_c::procSumouWinLose() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int daAlink_c::procSumouShikoInit() {
|
||||
if (!commonProcInitNotSameProc(PROC_SUMOU_SHIKO)) {
|
||||
return 0;
|
||||
@@ -872,10 +879,10 @@ int daAlink_c::procSumouShikoInit() {
|
||||
field_0x34d4 = field_0x3588;
|
||||
field_0x2f99 = 12;
|
||||
mProcVar2.field_0x300c = 0;
|
||||
mSpecialMode = 0;
|
||||
mMode = 0;
|
||||
|
||||
setFootEffectProcType(5);
|
||||
deleteEquipItem(0, 1);
|
||||
deleteEquipItem(FALSE, TRUE);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -885,7 +892,7 @@ int daAlink_c::procSumouShiko() {
|
||||
field_0x2f99 = 4;
|
||||
}
|
||||
|
||||
if (mSpecialMode == 1) {
|
||||
if (mMode == 1) {
|
||||
return procSumouReadyInit();
|
||||
}
|
||||
|
||||
@@ -899,8 +906,8 @@ int daAlink_c::procSumouShiko() {
|
||||
} else if (frameCtrl_p->checkPass(65.0f)) {
|
||||
voiceStart(Z2SE_AL_V_SUMO_SHIKO);
|
||||
} else if (frameCtrl_p->checkPass(9.0f)) {
|
||||
field_0x2f92 = 0xFE;
|
||||
field_0x2f93 = 0xFE;
|
||||
mLeftHandIndex = 0xFE;
|
||||
mRightHandIndex = 0xFE;
|
||||
}
|
||||
} else {
|
||||
dComIfGp_evmng_cutEnd(mAlinkStaffId);
|
||||
|
||||
+183
-177
@@ -17,7 +17,7 @@ BOOL daAlink_c::checkAcceptUseItemInWater(u16 i_itemNo) const {
|
||||
|
||||
void daAlink_c::swimDeleteItem() {
|
||||
if (!checkHookshotItem(mEquipItem) && (mEquipItem != 0x103 || !checkBootsOrArmorHeavy())) {
|
||||
deleteEquipItem(1, 1);
|
||||
deleteEquipItem(TRUE, TRUE);
|
||||
}
|
||||
|
||||
if (checkNoResetFlg2(FLG2_UNK_1)) {
|
||||
@@ -54,23 +54,21 @@ f32 daAlink_c::getSwimMaxFallSpeed() const {
|
||||
}
|
||||
|
||||
void daAlink_c::checkOxygenTimer() {
|
||||
BOOL hide_timer;
|
||||
BOOL is_hide_timer;
|
||||
|
||||
if (!checkNoResetFlg0(FLG0_SWIM_UP) ||
|
||||
(checkModeFlg(MODE_SWIMMING) && mWaterY > 5.0f + current.pos.y))
|
||||
{
|
||||
hide_timer = false;
|
||||
is_hide_timer = false;
|
||||
} else {
|
||||
hide_timer = true;
|
||||
is_hide_timer = true;
|
||||
}
|
||||
|
||||
if (dComIfGp_getOxygenShowFlag()) {
|
||||
if (checkZoraWearAbility()) {
|
||||
offOxygenTimer();
|
||||
} else if (hide_timer) {
|
||||
s32 max = dComIfGp_getMaxOxygen();
|
||||
dComIfGp_setOxygenCount(max);
|
||||
|
||||
} else if (is_hide_timer) {
|
||||
dComIfGp_setOxygenCount(dComIfGp_getMaxOxygen());
|
||||
if (field_0x2fbe < 90) {
|
||||
field_0x2fbe++;
|
||||
} else {
|
||||
@@ -79,7 +77,7 @@ void daAlink_c::checkOxygenTimer() {
|
||||
} else if (!checkEventRun()) {
|
||||
dComIfGp_setOxygenCount(-1);
|
||||
}
|
||||
} else if (!hide_timer && !checkZoraWearAbility()) {
|
||||
} else if (!is_hide_timer && !checkZoraWearAbility()) {
|
||||
if (field_0x2fbe != 0) {
|
||||
field_0x2fbe--;
|
||||
} else {
|
||||
@@ -91,19 +89,19 @@ void daAlink_c::checkOxygenTimer() {
|
||||
|
||||
void daAlink_c::offOxygenTimer() {
|
||||
dComIfGp_offOxygenShowFlag();
|
||||
s32 max = dComIfGp_getMaxOxygen();
|
||||
dComIfGp_setOxygen(max);
|
||||
dComIfGp_setOxygen(dComIfGp_getMaxOxygen());
|
||||
|
||||
field_0x2fbe = 90;
|
||||
}
|
||||
|
||||
BOOL daAlink_c::checkPossibleWaterInMode() const {
|
||||
return checkModeFlg(MODE_VINE_CLIMB) || dComIfGp_checkPlayerStatus1(0, 0x2000000) ||
|
||||
return checkModeFlg(MODE_VINE_CLIMB) ||
|
||||
dComIfGp_checkPlayerStatus1(0, 0x2000000) ||
|
||||
mProcID == PROC_HOOKSHOT_FLY;
|
||||
}
|
||||
|
||||
void daAlink_c::setWaterInAnmRate(daPy_frameCtrl_c* i_frameCtrl, f32 i_rate) {
|
||||
if (checkNoResetFlg0(FLG0_UNDERWATER)) {
|
||||
if (checkNoResetFlg0(FLG0_WATER_IN_MOVE)) {
|
||||
if (checkZoraWearAbility()) {
|
||||
i_rate *= mpHIO->mItem.mIronBoots.m.mZoraWaterAnmSpeed;
|
||||
} else {
|
||||
@@ -121,24 +119,24 @@ void daAlink_c::swimBgCheck(f32 param_0) {
|
||||
return;
|
||||
}
|
||||
|
||||
cXyz start_pos(current.pos);
|
||||
cXyz end_pos;
|
||||
cXyz linechk_start(current.pos);
|
||||
cXyz linechk_end;
|
||||
|
||||
s16 var_r29;
|
||||
if (getZoraSwim()) {
|
||||
var_r29 = field_0x3080;
|
||||
} else {
|
||||
var_r29 = mProcVar2.field_0x300c;
|
||||
start_pos.y += mpHIO->mWolf.mWlWallHang.m.mAutoWalkHeight;
|
||||
linechk_start.y += mpHIO->mWolf.mWlWallHang.m.mAutoWalkHeight;
|
||||
}
|
||||
|
||||
f32 var_f28 = param_0 * cM_scos(var_r29);
|
||||
|
||||
end_pos.set(start_pos.x + (var_f28 * cM_ssin(shape_angle.y)),
|
||||
start_pos.y - param_0 * cM_ssin(var_r29),
|
||||
start_pos.z + (var_f28 * cM_scos(shape_angle.y)));
|
||||
linechk_end.set(linechk_start.x + (var_f28 * cM_ssin(shape_angle.y)),
|
||||
linechk_start.y - param_0 * cM_ssin(var_r29),
|
||||
linechk_start.z + (var_f28 * cM_scos(shape_angle.y)));
|
||||
|
||||
if (!commonLineCheck(&start_pos, &end_pos)) {
|
||||
if (!commonLineCheck(&linechk_start, &linechk_end)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -148,12 +146,9 @@ void daAlink_c::swimBgCheck(f32 param_0) {
|
||||
if (cBgW_CheckBWall(tri.mNormal.y) &&
|
||||
(mProcID != PROC_METAMORPHOSE || dComIfG_Bgsp().GetWallCode(mLinkLinChk) != 7))
|
||||
{
|
||||
cXyz sp14 = end_pos - mLinkLinChk.GetCross();
|
||||
f32 temp_f1 = sp14.absXZ();
|
||||
cXyz sp14 = linechk_end - mLinkLinChk.GetCross();
|
||||
|
||||
s16 var_r28 = sp14.atan2sX_Z();
|
||||
f32 var_f26 = cM_scos(var_r28 - cM_atan2s(-tri.mNormal.x, -tri.mNormal.z));
|
||||
f32 var_f29 = -temp_f1 * var_f26;
|
||||
f32 var_f29 = -sp14.absXZ() * cM_scos(sp14.atan2sX_Z() - cM_atan2s(-tri.mNormal.x, -tri.mNormal.z));
|
||||
|
||||
f32 var_f31 = var_f29 * tri.mNormal.x;
|
||||
f32 var_f30 = var_f29 * tri.mNormal.z;
|
||||
@@ -165,21 +160,18 @@ void daAlink_c::swimBgCheck(f32 param_0) {
|
||||
onNoResetFlg1(FLG1_UNK_20000000);
|
||||
}
|
||||
|
||||
start_pos.x -= var_f31;
|
||||
start_pos.z -= var_f30;
|
||||
end_pos.x -= var_f31;
|
||||
end_pos.z -= var_f30;
|
||||
linechk_start.x -= var_f31;
|
||||
linechk_start.z -= var_f30;
|
||||
linechk_end.x -= var_f31;
|
||||
linechk_end.z -= var_f30;
|
||||
|
||||
if (commonLineCheck(&start_pos, &end_pos)) {
|
||||
if (commonLineCheck(&linechk_start, &linechk_end)) {
|
||||
dComIfG_Bgsp().GetTriPla(mLinkLinChk, &tri);
|
||||
|
||||
if (cBgW_CheckBWall(tri.mNormal.y)) {
|
||||
sp14 = end_pos - mLinkLinChk.GetCross();
|
||||
temp_f1 = sp14.absXZ();
|
||||
sp14 = linechk_end - mLinkLinChk.GetCross();
|
||||
|
||||
var_r28 = sp14.atan2sX_Z();
|
||||
var_f26 = cM_scos(var_r28 - cM_atan2s(-tri.mNormal.x, -tri.mNormal.z));
|
||||
var_f29 = -temp_f1 * var_f26;
|
||||
var_f29 = -sp14.absXZ() * cM_scos(sp14.atan2sX_Z() - cM_atan2s(-tri.mNormal.x, -tri.mNormal.z));
|
||||
|
||||
var_f31 += var_f29 * tri.mNormal.x;
|
||||
var_f30 += var_f29 * tri.mNormal.z;
|
||||
@@ -193,35 +185,36 @@ void daAlink_c::swimBgCheck(f32 param_0) {
|
||||
}
|
||||
|
||||
void daAlink_c::setSpeedAndAngleSwim() {
|
||||
if (!checkBootsOrArmorHeavy() && dComIfGp_getDoStatus() == 0 && (!checkHookshotAnime() || (checkHookshotItem(mEquipItem) && (mItemMode == 0 || mItemMode == 1)))) {
|
||||
if (!checkBootsOrArmorHeavy() && dComIfGp_getDoStatus() == BUTTON_STATUS_NONE && (!checkHookshotAnime() || (checkHookshotItem(mEquipItem) && (mItemMode == 0 || mItemMode == 1)))) {
|
||||
if (checkZoraWearAbility()) {
|
||||
if (checkNoResetFlg0(FLG0_SWIM_UP)) {
|
||||
if (field_0x2fcd == 0) {
|
||||
setDoStatus(0x41);
|
||||
setDoStatus(BUTTON_STATUS_DIVE);
|
||||
}
|
||||
} else {
|
||||
setDoStatus(0x4C);
|
||||
setDoStatus(BUTTON_STATUS_SWIM);
|
||||
}
|
||||
} else if (!checkNoResetFlg0(FLG0_SWIM_UP)) {
|
||||
setDoStatus(0x97);
|
||||
setDoStatus(BUTTON_STATUS_UNK_151);
|
||||
} else if (mProcID == PROC_SWIM_MOVE && checkUnderMove0BckNoArc(ANM_SWIM_A) && field_0x30d0 == 0 && field_0x30d2 == 0) {
|
||||
setDoStatus(9);
|
||||
setDoStatus(BUTTON_STATUS_DASH);
|
||||
}
|
||||
}
|
||||
|
||||
f32 var_f31;
|
||||
f32 var_f30;
|
||||
s16 temp_r29;
|
||||
if (mProcID == PROC_SWIM_HOOKSHOT_MOVE && !checkHookshotWait()) {
|
||||
var_f30 = 0.0f;
|
||||
} else if (checkZoraSwimMove()) {
|
||||
s16 temp_r29 = shape_angle.y;
|
||||
temp_r29 = shape_angle.y;
|
||||
|
||||
if (mTargetedActor != NULL && current.pos.abs2XZ(mTargetedActor->eyePos) > 22500.0f) {
|
||||
setShapeAngleToAtnActor(0);
|
||||
} else if (checkInputOnR()) {
|
||||
s16 var_r28;
|
||||
if (checkEventRun()) {
|
||||
var_r28 = field_0x2fe2;
|
||||
var_r28 = mMoveAngle;
|
||||
} else {
|
||||
var_r28 = shape_angle.y + (16384.0f * cM_ssin(mStickAngle));
|
||||
}
|
||||
@@ -230,24 +223,24 @@ void daAlink_c::setSpeedAndAngleSwim() {
|
||||
}
|
||||
|
||||
current.angle.y = shape_angle.y;
|
||||
var_f30 = 3.0f * cM_scos((shape_angle.y - temp_r29));
|
||||
var_f30 = 3.0f * cM_scos(shape_angle.y - temp_r29);
|
||||
} else if (!checkAttentionLock()) {
|
||||
if (checkInputOnR()) {
|
||||
s16 temp_r29_2 = shape_angle.y;
|
||||
temp_r29 = shape_angle.y;
|
||||
if (checkNoResetFlg0(FLG0_SWIM_UP)) {
|
||||
cLib_addCalcAngleS(&shape_angle.y, field_0x2fe2, mpHIO->mSwim.m.mTurnRate, mpHIO->mSwim.m.mMaxTurn, mpHIO->mSwim.m.mMinTurn);
|
||||
cLib_addCalcAngleS(&shape_angle.y, mMoveAngle, mpHIO->mSwim.m.mTurnRate, mpHIO->mSwim.m.mMaxTurn, mpHIO->mSwim.m.mMinTurn);
|
||||
} else {
|
||||
cLib_addCalcAngleS(&shape_angle.y, field_0x2fe2, mpHIO->mSwim.m.mUnderwaterTurnRate, mpHIO->mSwim.m.mUnderwaterMaxTurn, mpHIO->mSwim.m.mUnderwaterMinTurn);
|
||||
cLib_addCalcAngleS(&shape_angle.y, mMoveAngle, mpHIO->mSwim.m.mUnderwaterTurnRate, mpHIO->mSwim.m.mUnderwaterMaxTurn, mpHIO->mSwim.m.mUnderwaterMinTurn);
|
||||
}
|
||||
|
||||
f32 var_f29;
|
||||
if (checkUnderMove0BckNoArc(ANM_SWIM_DASH)) {
|
||||
var_f29 = 1.0f;
|
||||
} else {
|
||||
var_f29 = field_0x33a8;
|
||||
var_f29 = mStickValue;
|
||||
}
|
||||
|
||||
var_f30 = 3.0f * var_f29 * cM_scos((shape_angle.y - temp_r29_2));
|
||||
var_f30 = 3.0f * var_f29 * cM_scos(shape_angle.y - temp_r29);
|
||||
cLib_addCalcAngleS(¤t.angle.y, shape_angle.y, 2, 0x2000, 0x1000);
|
||||
} else {
|
||||
var_f30 = 0.0f;
|
||||
@@ -266,17 +259,17 @@ void daAlink_c::setSpeedAndAngleSwim() {
|
||||
}
|
||||
|
||||
if (checkZeroSpeedF()) {
|
||||
current.angle.y = field_0x2fe2;
|
||||
current.angle.y = mMoveAngle;
|
||||
}
|
||||
|
||||
s16 temp_r29_3 = current.angle.y;
|
||||
temp_r29 = current.angle.y;
|
||||
if (checkNoResetFlg0(FLG0_SWIM_UP)) {
|
||||
cLib_addCalcAngleS(¤t.angle.y, field_0x2fe2, mpHIO->mSwim.m.mTurnRate, mpHIO->mSwim.m.mMaxTurn, mpHIO->mSwim.m.mMinTurn);
|
||||
cLib_addCalcAngleS(¤t.angle.y, mMoveAngle, mpHIO->mSwim.m.mTurnRate, mpHIO->mSwim.m.mMaxTurn, mpHIO->mSwim.m.mMinTurn);
|
||||
} else {
|
||||
cLib_addCalcAngleS(¤t.angle.y, field_0x2fe2, mpHIO->mSwim.m.mUnderwaterTurnRate, mpHIO->mSwim.m.mUnderwaterMaxTurn, mpHIO->mSwim.m.mUnderwaterMinTurn);
|
||||
cLib_addCalcAngleS(¤t.angle.y, mMoveAngle, mpHIO->mSwim.m.mUnderwaterTurnRate, mpHIO->mSwim.m.mUnderwaterMaxTurn, mpHIO->mSwim.m.mUnderwaterMinTurn);
|
||||
}
|
||||
|
||||
var_f30 = mpHIO->mSwim.m.mAcceleration * field_0x33a8 * cM_scos((s16)(current.angle.y - temp_r29_3));
|
||||
var_f30 = mpHIO->mSwim.m.mAcceleration * mStickValue * cM_scos((s16)(current.angle.y - temp_r29));
|
||||
} else {
|
||||
var_f30 = 0.0f;
|
||||
}
|
||||
@@ -322,7 +315,7 @@ int daAlink_c::checkNextActionSwim() {
|
||||
field_0x3000 = 30;
|
||||
}
|
||||
|
||||
if ((checkZoraWearAbility() && !checkHeavyStateOn(1, 1)) || checkNoResetFlg0(FLG0_SWIM_UP)) {
|
||||
if ((checkZoraWearAbility() && !checkHeavyStateOn(TRUE, TRUE)) || checkNoResetFlg0(FLG0_SWIM_UP)) {
|
||||
setTalkStatus();
|
||||
}
|
||||
|
||||
@@ -333,7 +326,7 @@ int daAlink_c::checkNextActionSwim() {
|
||||
if (mAttList != NULL && mAttList->mType == fopAc_attn_ETC_e && checkNoResetFlg0(FLG0_SWIM_UP) &&
|
||||
fopAcM_GetName(field_0x27f4) == PROC_CANOE)
|
||||
{
|
||||
setDoStatus(0x17);
|
||||
setDoStatus(BUTTON_STATUS_GET_ON);
|
||||
|
||||
if (doTrigger()) {
|
||||
return procCanoeRideInit();
|
||||
@@ -362,9 +355,15 @@ int daAlink_c::checkSwimAction(int param_0) {
|
||||
var_f31 = mpHIO->mSwim.m.mStartHeight;
|
||||
}
|
||||
|
||||
if (checkNoResetFlg0(FLG0_UNK_80) && !checkNoResetFlg0(FLG0_UNDERWATER) && !checkModeFlg(0x40000) && mProcID != PROC_MAGNE_BOOTS_FLY && ((mProcID != PROC_WOLF_LOCK_ATTACK && mProcID != PROC_WOLF_LOCK_ATTACK_TURN) || mProcVar5.field_0x3012 == 0) && mDemo.getDemoMode() != 0x11) {
|
||||
f32 var_f28;
|
||||
if (checkNoResetFlg0(FLG0_UNK_80)
|
||||
&& !checkNoResetFlg0(FLG0_WATER_IN_MOVE)
|
||||
&& !checkModeFlg(0x40000)
|
||||
&& mProcID != PROC_MAGNE_BOOTS_FLY
|
||||
&& ((mProcID != PROC_WOLF_LOCK_ATTACK && mProcID != PROC_WOLF_LOCK_ATTACK_TURN) || mProcVar5.field_0x3012 == 0)
|
||||
&& mDemo.getDemoMode() != daPy_demo_c::DEMO_UNK_17_e)
|
||||
{
|
||||
f32 var_f29;
|
||||
f32 var_f28;
|
||||
f32 var_f30;
|
||||
|
||||
if (checkWolf()) {
|
||||
@@ -393,14 +392,14 @@ int daAlink_c::checkSwimAction(int param_0) {
|
||||
offNoResetFlg0(FLG0_SWIM_UP);
|
||||
mZ2Link.setInWater(true);
|
||||
|
||||
field_0x594 = var_f29;
|
||||
mMaxSpeed = var_f29;
|
||||
|
||||
if (!param_0) {
|
||||
mNormalSpeed *= 0.75f;
|
||||
}
|
||||
|
||||
if (mNormalSpeed >= field_0x594) {
|
||||
mNormalSpeed = field_0x594;
|
||||
if (mNormalSpeed >= mMaxSpeed) {
|
||||
mNormalSpeed = mMaxSpeed;
|
||||
}
|
||||
|
||||
swimDeleteItem();
|
||||
@@ -421,7 +420,7 @@ int daAlink_c::checkSwimAction(int param_0) {
|
||||
}
|
||||
|
||||
if (checkModeFlg(2) && !checkPossibleWaterInMode()) {
|
||||
dComIfGp_getVibration().StartShock(2, 1, cXyz(0.0f, 1.0f, 0.0f));
|
||||
dComIfGp_getVibration().StartShock(VIBMODE_S_POWER2, 1, cXyz(0.0f, 1.0f, 0.0f));
|
||||
current.pos.y = var_f30 + var_f31;
|
||||
|
||||
speed.y = 0.75f * field_0x3528.y;
|
||||
@@ -433,15 +432,15 @@ int daAlink_c::checkSwimAction(int param_0) {
|
||||
|
||||
if (checkWolf()) {
|
||||
if (checkNoResetFlg2(FLG2_UNK_8)) {
|
||||
daAlink_WANM var_r29;
|
||||
daAlink_WANM anm;
|
||||
if (cM_rnd() < 0.5f) {
|
||||
var_r29 = WANM_FLING_LEFT;
|
||||
anm = WANM_FLING_LEFT;
|
||||
onNoResetFlg2(FLG2_WOLF_ENEMY_LEFT_THROW);
|
||||
} else {
|
||||
var_r29 = WANM_FLING_RIGHT;
|
||||
anm = WANM_FLING_RIGHT;
|
||||
offNoResetFlg2(FLG2_WOLF_ENEMY_LEFT_THROW);
|
||||
}
|
||||
setWolfEnemyThrowUpperAnime(var_r29, 0.0f);
|
||||
setWolfEnemyThrowUpperAnime(anm, 0.0f);
|
||||
}
|
||||
|
||||
return procWolfSwimWaitInit(1);
|
||||
@@ -460,7 +459,7 @@ int daAlink_c::checkSwimAction(int param_0) {
|
||||
}
|
||||
|
||||
if (checkBootsOrArmorHeavy() || checkPossibleWaterInMode()) {
|
||||
onNoResetFlg0(FLG0_UNDERWATER);
|
||||
onNoResetFlg0(FLG0_WATER_IN_MOVE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -541,7 +540,7 @@ int daAlink_c::checkSwimUpAction() {
|
||||
} else {
|
||||
current.pos.y = mLinkAcch.GetGroundH();
|
||||
mLinkAcch.SetGroundHit();
|
||||
onNoResetFlg0(FLG0_UNDERWATER);
|
||||
onNoResetFlg0(FLG0_WATER_IN_MOVE);
|
||||
procLandInit(0.0f);
|
||||
field_0x2f99 = 0x90;
|
||||
return 1;
|
||||
@@ -559,12 +558,14 @@ int daAlink_c::checkSwimUpAction() {
|
||||
}
|
||||
|
||||
void daAlink_c::swimOutAfter(int param_0) {
|
||||
UNUSED(param_0);
|
||||
|
||||
onNoResetFlg0(FLG0_SWIM_UP);
|
||||
onEndResetFlg1(ERFLG1_UNK_100);
|
||||
mZ2Link.setInWater(false);
|
||||
|
||||
if (checkNoResetFlg0(FLG0_UNDERWATER)) {
|
||||
offNoResetFlg0(FLG0_UNDERWATER);
|
||||
if (checkNoResetFlg0(FLG0_WATER_IN_MOVE)) {
|
||||
offNoResetFlg0(FLG0_WATER_IN_MOVE);
|
||||
} else {
|
||||
field_0x2b98 = 0.0f;
|
||||
field_0x2f98 = 4;
|
||||
@@ -630,12 +631,11 @@ int daAlink_c::checkSwimOutAction() {
|
||||
}
|
||||
|
||||
void daAlink_c::setSwimMoveAnime() {
|
||||
daPy_frameCtrl_c* temp_r28 = &mUnderFrameCtrl[0];
|
||||
daPy_frameCtrl_c* temp_r27 = &mUpperFrameCtrl[2];
|
||||
daPy_frameCtrl_c* framectrl_under0 = &mUnderFrameCtrl[0];
|
||||
daPy_frameCtrl_c* framectrl_upper2 = &mUpperFrameCtrl[2];
|
||||
|
||||
f32 var_f31;
|
||||
f32 temp_f25 = temp_r28->getEnd();
|
||||
f32 var_f26 = temp_r28->getFrame() * temp_f25;
|
||||
f32 var_f26 = framectrl_under0->getFrame() * framectrl_under0->getEnd();
|
||||
|
||||
if (field_0x3000 != 0 && !checkHookshotAnime()) {
|
||||
field_0x2f98 = 4;
|
||||
@@ -650,9 +650,9 @@ void daAlink_c::setSwimMoveAnime() {
|
||||
field_0x2f98 = 0;
|
||||
}
|
||||
|
||||
daAlink_ANM var_r29;
|
||||
BOOL var_r26 = 1;
|
||||
BOOL var_r25 = 0;
|
||||
daAlink_ANM anm = (daAlink_ANM)field_0x3198;
|
||||
BOOL var_r26 = TRUE;
|
||||
BOOL var_r25 = FALSE;
|
||||
|
||||
if (field_0x2f98 == 4) {
|
||||
f32 temp_f29 = mpHIO->mSwim.m.mUnderwaterMaxSpeed + mpHIO->mSwim.m.mUnderwaterButtonAdditionalSpeed;
|
||||
@@ -660,12 +660,12 @@ void daAlink_c::setSwimMoveAnime() {
|
||||
field_0x3478 = mpHIO->mSwim.m.mUnderwaterMinAnmSpeed;
|
||||
field_0x347c = mpHIO->mSwim.m.mUnderwaterMaxAnmSpeed;
|
||||
|
||||
if (field_0x594 < mpHIO->mSwim.m.mUnderwaterMaxSpeed) {
|
||||
field_0x594 = mpHIO->mSwim.m.mUnderwaterMaxSpeed;
|
||||
if (mMaxSpeed < mpHIO->mSwim.m.mUnderwaterMaxSpeed) {
|
||||
mMaxSpeed = mpHIO->mSwim.m.mUnderwaterMaxSpeed;
|
||||
} else if (doTrigger()) {
|
||||
field_0x594 += 0.75f;
|
||||
if (field_0x594 > temp_f29) {
|
||||
field_0x594 = temp_f29;
|
||||
mMaxSpeed += 0.75f;
|
||||
if (mMaxSpeed > temp_f29) {
|
||||
mMaxSpeed = temp_f29;
|
||||
}
|
||||
|
||||
if (!checkSwimMoveHandAnime() && !checkZoraSwimDamageAnime()) {
|
||||
@@ -679,77 +679,77 @@ void daAlink_c::setSwimMoveAnime() {
|
||||
setUpperAnime(0x23F, UPPER_2, 1.0f, 0.0f, 0x28, var_f28);
|
||||
mProcVar5.field_0x3012 = 0;
|
||||
var_r25 = 1;
|
||||
} else if (temp_r27->getFrame() > 25.0f) {
|
||||
} else if (framectrl_upper2->getFrame() > 25.0f) {
|
||||
mProcVar5.field_0x3012 = 1;
|
||||
}
|
||||
} else if (!checkSwimMoveHandAnime()) {
|
||||
cLib_chaseF(&field_0x594, mpHIO->mSwim.m.mUnderwaterMaxSpeed, 0.4f);
|
||||
cLib_chaseF(&mMaxSpeed, mpHIO->mSwim.m.mUnderwaterMaxSpeed, 0.4f);
|
||||
}
|
||||
|
||||
var_f31 = 1.0f / mpHIO->mSwim.m.mUnderwaterMaxSpeed;
|
||||
|
||||
if (checkZoraWearAbility() && (field_0x3198 == ANM_SWIM_DIVE || (field_0x3198 == ANM_SWIM_ZORA_START && !checkAnmEnd(temp_r28)))) {
|
||||
var_r29 = ANM_SWIM_ZORA_START;
|
||||
if (checkZoraWearAbility() && (field_0x3198 == ANM_SWIM_DIVE || (field_0x3198 == ANM_SWIM_ZORA_START && !checkAnmEnd(framectrl_under0)))) {
|
||||
anm = ANM_SWIM_ZORA_START;
|
||||
} else {
|
||||
var_r29 = ANM_SWIM_C;
|
||||
anm = ANM_SWIM_C;
|
||||
|
||||
if (field_0x3198 == ANM_SWIM_ZORA_START) {
|
||||
var_r26 = 0;
|
||||
var_r26 = FALSE;
|
||||
if (mProcVar4.field_0x3010 == 1) {
|
||||
mProcVar4.field_0x3010 = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (field_0x2f98 == 0) {
|
||||
if (checkSwimDashMode() && checkUnderMove0BckNoArc(ANM_SWIM_DASH) && !checkAnmEnd(temp_r28)) {
|
||||
var_r29 = ANM_SWIM_DASH;
|
||||
if (checkSwimDashMode() && checkUnderMove0BckNoArc(ANM_SWIM_DASH) && !checkAnmEnd(framectrl_under0)) {
|
||||
anm = ANM_SWIM_DASH;
|
||||
} else if (mNormalSpeed < 3.0f || checkHookshotAnime()) {
|
||||
var_r29 = ANM_SWIM_WAIT;
|
||||
anm = ANM_SWIM_WAIT;
|
||||
field_0x30d0 = 0;
|
||||
} else {
|
||||
var_r29 = ANM_SWIM_A;
|
||||
anm = ANM_SWIM_A;
|
||||
}
|
||||
|
||||
if (checkSwimDashMode()) {
|
||||
field_0x3478 = mpHIO->mSwim.m.mDashMinAnmSpeed;
|
||||
field_0x347c = mpHIO->mSwim.m.mDashMaxAnmSpeed;
|
||||
field_0x594 = mpHIO->mSwim.m.mDashMaxSpeed;
|
||||
mMaxSpeed = mpHIO->mSwim.m.mDashMaxSpeed;
|
||||
} else {
|
||||
field_0x3478 = mpHIO->mSwim.m.mForwardMinAnmSpeed;
|
||||
field_0x347c = mpHIO->mSwim.m.mForwardMaxAnmSpeed;
|
||||
field_0x594 = getSwimFrontMaxSpeed();
|
||||
mMaxSpeed = getSwimFrontMaxSpeed();
|
||||
}
|
||||
|
||||
var_f31 = 1.0f / field_0x594;
|
||||
var_f31 = 1.0f / mMaxSpeed;
|
||||
} else if (field_0x2f98 == 1) {
|
||||
var_r29 = ANM_ATN_SWIM_BACK;
|
||||
anm = ANM_ATN_SWIM_BACK;
|
||||
field_0x3478 = mpHIO->mSwim.m.mBackwardMinAnmSpeed;
|
||||
field_0x347c = mpHIO->mSwim.m.mBackwardMaxAnmSpeed;
|
||||
|
||||
if (checkZoraWearAbility()) {
|
||||
field_0x594 = 10.0f;
|
||||
mMaxSpeed = 10.0f;
|
||||
} else {
|
||||
field_0x594 = mpHIO->mSwim.m.mBackwardMaxSpeed;
|
||||
mMaxSpeed = mpHIO->mSwim.m.mBackwardMaxSpeed;
|
||||
}
|
||||
|
||||
var_f31 = 1.0f / field_0x594;
|
||||
var_f31 = 1.0f / mMaxSpeed;
|
||||
} else {
|
||||
if (field_0x2f98 == 2) {
|
||||
var_r29 = ANM_ATN_SWIM_LEFT;
|
||||
anm = ANM_ATN_SWIM_LEFT;
|
||||
} else {
|
||||
var_r29 = ANM_ATN_SWIM_RIGHT;
|
||||
anm = ANM_ATN_SWIM_RIGHT;
|
||||
}
|
||||
|
||||
field_0x3478 = mpHIO->mSwim.m.mStrafeMinAnmSpeed;
|
||||
field_0x347c = mpHIO->mSwim.m.mStrafeMaxAnmSpeed;
|
||||
|
||||
if (checkZoraWearAbility()) {
|
||||
field_0x594 = 12.0f;
|
||||
mMaxSpeed = 12.0f;
|
||||
} else {
|
||||
field_0x594 = mpHIO->mSwim.m.mStrafeMaxSpeed;
|
||||
mMaxSpeed = mpHIO->mSwim.m.mStrafeMaxSpeed;
|
||||
}
|
||||
|
||||
var_f31 = 1.0f / field_0x594;
|
||||
var_f31 = 1.0f / mMaxSpeed;
|
||||
}
|
||||
|
||||
field_0x347c -= field_0x3478;
|
||||
@@ -759,55 +759,55 @@ void daAlink_c::setSwimMoveAnime() {
|
||||
}
|
||||
|
||||
if (checkBootsOrArmorHeavy()) {
|
||||
var_r29 = ANM_SWIM_WAIT;
|
||||
field_0x594 = mpHIO->mSwim.m.mUnderwaterFallMaxSpeed;
|
||||
anm = ANM_SWIM_WAIT;
|
||||
mMaxSpeed = mpHIO->mSwim.m.mUnderwaterFallMaxSpeed;
|
||||
if (mEquipItem != fpcNm_ITEM_NONE && !checkHookshotAnime()) {
|
||||
setDoStatus(4);
|
||||
setDoStatus(BUTTON_STATUS_PUT_AWAY);
|
||||
}
|
||||
}
|
||||
|
||||
if (var_r29 != field_0x3198) {
|
||||
if (anm != field_0x3198) {
|
||||
if (field_0x3198 == ANM_SWIM_ZORA_START) {
|
||||
speed.y = 0.0f;
|
||||
}
|
||||
|
||||
field_0x3198 = var_r29;
|
||||
field_0x3198 = anm;
|
||||
|
||||
if (checkUnderMove0BckNoArc(ANM_SWIM_DASH)) {
|
||||
field_0x30d2 = mpHIO->mSwim.m.field_0x5e;
|
||||
}
|
||||
|
||||
if (var_r29 == ANM_SWIM_WAIT) {
|
||||
if (anm == ANM_SWIM_WAIT) {
|
||||
setSingleAnimeBaseSpeed(ANM_SWIM_WAIT, mpHIO->mSwim.m.mWaitAnmSpeed, mpHIO->mSwim.m.mWaitInterpolation);
|
||||
} else {
|
||||
f32 var_f27;
|
||||
if (var_r26 != 0) {
|
||||
var_f27 = mpHIO->mSwim.m.mMoveInterpolation;
|
||||
f32 morf;
|
||||
if (var_r26) {
|
||||
morf = mpHIO->mSwim.m.mMoveInterpolation;
|
||||
} else {
|
||||
var_f27 = 0.0f;
|
||||
morf = 0.0f;
|
||||
}
|
||||
setSingleAnimeBaseMorf(var_r29, var_f27);
|
||||
setSingleAnimeBaseMorf(anm, morf);
|
||||
}
|
||||
}
|
||||
|
||||
if (var_r29 != ANM_SWIM_WAIT && var_r29 != ANM_SWIM_DASH) {
|
||||
if (anm != ANM_SWIM_WAIT && anm != ANM_SWIM_DASH) {
|
||||
f32 temp_f30 = var_f31 * fabsf(mNormalSpeed);
|
||||
if (temp_f30 > 1.0f && field_0x2f98 == 4) {
|
||||
temp_r28->setRate(mpHIO->mSwim.m.mUnderwaterMaxAnmSpeed + ((temp_f30 - 1.0f) * mpHIO->mSwim.m.mUnderwaterAdditionalAnmSpeed));
|
||||
framectrl_under0->setRate(mpHIO->mSwim.m.mUnderwaterMaxAnmSpeed + ((temp_f30 - 1.0f) * mpHIO->mSwim.m.mUnderwaterAdditionalAnmSpeed));
|
||||
} else {
|
||||
temp_r28->setRate(field_0x3478 + (field_0x347c * temp_f30));
|
||||
framectrl_under0->setRate(field_0x3478 + (field_0x347c * temp_f30));
|
||||
}
|
||||
}
|
||||
|
||||
if (checkSwimMoveHandAnime()) {
|
||||
if (temp_r27->checkPass(17.0f)) {
|
||||
if (framectrl_upper2->checkPass(17.0f)) {
|
||||
seStartOnlyReverb(Z2SE_AL_WATER_STROKE_L);
|
||||
}
|
||||
|
||||
if (var_r29 == ANM_SWIM_C) {
|
||||
temp_r27->setRate(temp_r28->getRate());
|
||||
if (anm == ANM_SWIM_C) {
|
||||
framectrl_upper2->setRate(framectrl_under0->getRate());
|
||||
|
||||
if (var_r25 == 0 && temp_r27->checkPass(0.0f)) {
|
||||
if (!var_r25 && framectrl_upper2->checkPass(0.0f)) {
|
||||
if (mProcVar5.field_0x3012 != 0) {
|
||||
mProcVar5.field_0x3012 = 0;
|
||||
} else {
|
||||
@@ -821,7 +821,7 @@ void daAlink_c::setSwimMoveAnime() {
|
||||
|
||||
maxFallSpeed = getSwimMaxFallSpeed();
|
||||
|
||||
if (var_r29 == ANM_SWIM_C || var_r29 == ANM_SWIM_ZORA_START) {
|
||||
if (anm == ANM_SWIM_C || anm == ANM_SWIM_ZORA_START) {
|
||||
if (!checkZoraWearAbility()) {
|
||||
if (field_0x3080 != -0x3800) {
|
||||
setOldRootQuaternion(0x4000, 0, 0);
|
||||
@@ -854,11 +854,11 @@ void daAlink_c::setSwimMoveAnime() {
|
||||
}
|
||||
|
||||
bool daAlink_c::checkSwimButtonAccept() {
|
||||
return dComIfGp_getDoStatus() == 0x41 || dComIfGp_getDoStatus() == 0x4C;
|
||||
return dComIfGp_getDoStatus() == BUTTON_STATUS_DIVE || dComIfGp_getDoStatus() == BUTTON_STATUS_SWIM;
|
||||
}
|
||||
|
||||
bool daAlink_c::checkUpSwimButtonAccept() {
|
||||
return dComIfGp_getDoStatus() == 0x97;
|
||||
return dComIfGp_getDoStatus() == BUTTON_STATUS_UNK_151;
|
||||
}
|
||||
|
||||
BOOL daAlink_c::checkSwimButtonMove() {
|
||||
@@ -879,7 +879,7 @@ void daAlink_c::setSwimUpDownOffset() {
|
||||
|
||||
f32 var_f1;
|
||||
if (checkWolf()) {
|
||||
if (checkHeavyStateOn(1, 1)) {
|
||||
if (checkHeavyStateOn(TRUE, TRUE)) {
|
||||
var_f1 = mpHIO->mWolf.mWlSwim.m.mHeavyIdleUpDownSwayAmount;
|
||||
} else {
|
||||
var_f1 = mpHIO->mWolf.mWlSwim.m.mIdleUpDownSwayAmount;
|
||||
@@ -946,10 +946,10 @@ int daAlink_c::procSwimUp() {
|
||||
|
||||
int daAlink_c::procSwimWaitInit(int param_0) {
|
||||
daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
|
||||
u32 mode_40000 = checkModeFlg(0x40000);
|
||||
u32 is_mode40000 = checkModeFlg(0x40000);
|
||||
|
||||
if (checkNoResetFlg0(FLG0_UNDERWATER)) {
|
||||
offNoResetFlg0(FLG0_UNDERWATER);
|
||||
if (checkNoResetFlg0(FLG0_WATER_IN_MOVE)) {
|
||||
offNoResetFlg0(FLG0_WATER_IN_MOVE);
|
||||
current.pos.y += mpHIO->mSwim.m.mStartHeight;
|
||||
}
|
||||
|
||||
@@ -959,7 +959,7 @@ int daAlink_c::procSwimWaitInit(int param_0) {
|
||||
seStartMapInfo(Z2SE_AL_INTO_WATER);
|
||||
mProcVar4.field_0x3010 = 0;
|
||||
field_0x3480 = mpHIO->mSwim.m.mStartHeight;
|
||||
} else if (!mode_40000) {
|
||||
} else if (!is_mode40000) {
|
||||
mProcVar4.field_0x3010 = 0;
|
||||
field_0x3480 = mpHIO->mSwim.m.mStartHeight;
|
||||
}
|
||||
@@ -991,18 +991,18 @@ int daAlink_c::procSwimWaitInit(int param_0) {
|
||||
|
||||
mProcVar2.field_0x300c = 0;
|
||||
mProcVar0.field_0x3008 = 0;
|
||||
field_0x594 = getSwimFrontMaxSpeed();
|
||||
mMaxSpeed = getSwimFrontMaxSpeed();
|
||||
return 1;
|
||||
}
|
||||
|
||||
int daAlink_c::procSwimWait() {
|
||||
if (mDemo.getDemoMode() == 6 || mDemo.getDemoMode() == 8) {
|
||||
if (mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK_6_e || mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK_8_e) {
|
||||
setShapeAngleToTalkActor();
|
||||
current.angle.y = shape_angle.y;
|
||||
}
|
||||
|
||||
maxFallSpeed = getSwimMaxFallSpeed();
|
||||
field_0x594 = getSwimFrontMaxSpeed();
|
||||
mMaxSpeed = getSwimFrontMaxSpeed();
|
||||
|
||||
setSpeedAndAngleSwim();
|
||||
|
||||
@@ -1015,7 +1015,7 @@ int daAlink_c::procSwimWait() {
|
||||
setSwimUpDownOffset();
|
||||
|
||||
if (checkEquipHeavyBoots() && mEquipItem != fpcNm_ITEM_NONE) {
|
||||
setDoStatus(0x4);
|
||||
setDoStatus(BUTTON_STATUS_PUT_AWAY);
|
||||
}
|
||||
|
||||
if (checkSwimUpAction()) {
|
||||
@@ -1047,25 +1047,25 @@ int daAlink_c::procSwimWait() {
|
||||
}
|
||||
|
||||
int daAlink_c::procSwimMoveInit() {
|
||||
u32 mode_40000 = checkModeFlg(0x40000);
|
||||
bool proc_dive_jump = mProcID == PROC_DIVE_JUMP;
|
||||
bool proc_swim_dive = mProcID == PROC_SWIM_DIVE;
|
||||
u32 is_mode40000 = checkModeFlg(0x40000);
|
||||
bool is_prev_dive_jump = mProcID == PROC_DIVE_JUMP;
|
||||
bool is_prev_swim_dive = mProcID == PROC_SWIM_DIVE;
|
||||
|
||||
commonProcInit(PROC_SWIM_MOVE);
|
||||
|
||||
if (checkNoResetFlg0(FLG0_UNDERWATER)) {
|
||||
offNoResetFlg0(FLG0_UNDERWATER);
|
||||
if (checkNoResetFlg0(FLG0_WATER_IN_MOVE)) {
|
||||
offNoResetFlg0(FLG0_WATER_IN_MOVE);
|
||||
}
|
||||
|
||||
if (!mode_40000) {
|
||||
if (!is_mode40000) {
|
||||
field_0x3480 = mpHIO->mSwim.m.mStartHeight;
|
||||
mProcVar4.field_0x3010 = 0;
|
||||
}
|
||||
|
||||
if (proc_swim_dive || proc_dive_jump) {
|
||||
if (is_prev_swim_dive || is_prev_dive_jump) {
|
||||
field_0x3198 = 199;
|
||||
|
||||
if (proc_dive_jump) {
|
||||
if (is_prev_dive_jump) {
|
||||
field_0x3080 = 0x2800;
|
||||
mProcVar3.field_0x300e = field_0x3080;
|
||||
mProcVar4.field_0x3010 = 1;
|
||||
@@ -1092,6 +1092,8 @@ int daAlink_c::procSwimMoveInit() {
|
||||
int daAlink_c::procSwimMove() {
|
||||
setSpeedAndAngleSwim();
|
||||
|
||||
daPy_frameCtrl_c* framectrl = mUnderFrameCtrl;
|
||||
|
||||
if (checkUpSwimButtonAccept() && doButton()) {
|
||||
field_0x3000 = 30;
|
||||
}
|
||||
@@ -1113,7 +1115,7 @@ int daAlink_c::procSwimMove() {
|
||||
|
||||
if (checkSwimButtonAccept() && doTrigger() && !getZoraSwim()) {
|
||||
procSwimDiveInit();
|
||||
} else if (dComIfGp_getDoStatus() == 9 && doTrigger()) {
|
||||
} else if (dComIfGp_getDoStatus() == BUTTON_STATUS_DASH && doTrigger()) {
|
||||
onNoResetFlg1(FLG1_DASH_MODE);
|
||||
field_0x30d0 = mpHIO->mSwim.m.field_0x5c;
|
||||
setSingleAnimeParam(ANM_SWIM_DASH, &mpHIO->mSwim.m.mDashAnm);
|
||||
@@ -1153,12 +1155,11 @@ int daAlink_c::procSwimDiveInit() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int daAlink_c::procSwimDive() {
|
||||
daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
|
||||
|
||||
if (mProcVar2.field_0x300c == 0) {
|
||||
setDoStatus(0x4C);
|
||||
setDoStatus(BUTTON_STATUS_SWIM);
|
||||
} else if (checkNoResetFlg0(FLG0_SWIM_UP) && frame_ctrl->getFrame() > 20.0f) {
|
||||
offNoResetFlg0(FLG0_SWIM_UP);
|
||||
mZ2Link.setInWater(true);
|
||||
@@ -1178,8 +1179,8 @@ int daAlink_c::procSwimDive() {
|
||||
fopKyM_createWpillar(&pos, 0.7f, 0);
|
||||
}
|
||||
|
||||
if (mLinkAcch.GetGroundH() > current.pos.y - field_0x598 * 0.5f) {
|
||||
current.pos.y = field_0x598 * 0.5f + mLinkAcch.GetGroundH();
|
||||
if (mLinkAcch.GetGroundH() > current.pos.y - mHeight * 0.5f) {
|
||||
current.pos.y = mHeight * 0.5f + mLinkAcch.GetGroundH();
|
||||
}
|
||||
|
||||
if (checkAnmEnd(frame_ctrl)) {
|
||||
@@ -1198,7 +1199,6 @@ int daAlink_c::procSwimDive() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int daAlink_c::procSwimHookshotSubjectInit() {
|
||||
if (!commonProcInitNotSameProc(PROC_SWIM_HOOKSHOT_SUBJECT)) {
|
||||
return 0;
|
||||
@@ -1226,23 +1226,26 @@ int daAlink_c::procSwimHookshotSubjectInit() {
|
||||
|
||||
mProcVar2.field_0x300c = 0;
|
||||
mProcVar0.field_0x3008 = 0;
|
||||
field_0x594 = getSwimFrontMaxSpeed();
|
||||
mMaxSpeed = getSwimFrontMaxSpeed();
|
||||
|
||||
field_0x3480 = mpHIO->mSwim.m.mStartHeight;
|
||||
mProcVar4.field_0x3010 = 0;
|
||||
field_0x30d0 = 0;
|
||||
|
||||
#if PLATFORM_GCN
|
||||
setHookshotReadyMaterial();
|
||||
#endif
|
||||
|
||||
dComIfGp_setPlayerStatus0(0, 0x104000);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int daAlink_c::procSwimHookshotSubject() {
|
||||
maxFallSpeed = getSwimMaxFallSpeed();
|
||||
field_0x594 = getSwimFrontMaxSpeed();
|
||||
mMaxSpeed = getSwimFrontMaxSpeed();
|
||||
|
||||
if (checkHookshotWait()) {
|
||||
setDoStatus(0x12);
|
||||
setDoStatus(BUTTON_STATUS_BACK);
|
||||
}
|
||||
|
||||
setShapeAngleToAtnActor(0);
|
||||
@@ -1316,7 +1319,7 @@ int daAlink_c::procSwimHookshotMove() {
|
||||
cancelHookshotMove();
|
||||
|
||||
if (checkHookshotWait() && !checkZoraWearAbility()) {
|
||||
setDoStatus(0x12);
|
||||
setDoStatus(BUTTON_STATUS_BACK);
|
||||
}
|
||||
|
||||
if (mItemVar0.field_0x3018 == 0) {
|
||||
@@ -1364,48 +1367,50 @@ int daAlink_c::procSwimHookshotMove() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
int daAlink_c::procSwimDamageInit(dCcD_GObjInf* param_0) {
|
||||
int daAlink_c::procSwimDamageInit(dCcD_GObjInf* i_hitObj) {
|
||||
seStartOnlyReverb(Z2SE_AL_DAMAGE_NORMAL);
|
||||
dComIfGp_getVibration().StartShock(2, 31, cXyz(0.0f, 1.0f, 0.0f));
|
||||
dComIfGp_getVibration().StartShock(VIBMODE_S_POWER2, 31, cXyz(0.0f, 1.0f, 0.0f));
|
||||
|
||||
BOOL bvar4 =
|
||||
checkNoResetFlg0(FLG0_SWIM_UP) || ((param_0 != NULL && param_0->GetTgHitAc() != NULL) &&
|
||||
fopAcM_GetName(param_0->GetTgHitAc()) == PROC_E_SG);
|
||||
BOOL bvar4 = checkNoResetFlg0(FLG0_SWIM_UP)
|
||||
|| ((i_hitObj != NULL && i_hitObj->GetTgHitAc() != NULL)
|
||||
&& fopAcM_GetName(i_hitObj->GetTgHitAc()) == PROC_E_SG);
|
||||
|
||||
if (!getZoraSwim() && bvar4 && mProcID != PROC_SWIM_WAIT) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
cXyz* temp_r30;
|
||||
cXyz sp30;
|
||||
cXyz* dmg_vec;
|
||||
cXyz work;
|
||||
|
||||
if (param_0 != NULL) {
|
||||
temp_r30 = (cXyz*)getDamageVec(param_0);
|
||||
if (i_hitObj != NULL) {
|
||||
dmg_vec = (cXyz*)getDamageVec(i_hitObj);
|
||||
} else {
|
||||
sp30.set(-cM_ssin(current.angle.y), 0.0f, -cM_scos(current.angle.y));
|
||||
temp_r30 = &sp30;
|
||||
work.set(-cM_ssin(current.angle.y), 0.0f, -cM_scos(current.angle.y));
|
||||
dmg_vec = &work;
|
||||
}
|
||||
|
||||
f32 scale =
|
||||
temp_r30->abs() * mpHIO->mDamage.mDamSwim.m.mAttackSpeedRate + mpHIO->mDamage.mDamSwim.m.mInitialSpeed;
|
||||
f32 scale = dmg_vec->abs() * mpHIO->mDamage.mDamSwim.m.mAttackSpeedRate + mpHIO->mDamage.mDamSwim.m.mInitialSpeed;
|
||||
if (scale > mpHIO->mDamage.mDamSwim.m.mMaxSpeed) {
|
||||
scale = mpHIO->mDamage.mDamSwim.m.mMaxSpeed;
|
||||
}
|
||||
|
||||
field_0x3750 = temp_r30->normZP();
|
||||
field_0x3750 = dmg_vec->normZP();
|
||||
field_0x3750 *= scale;
|
||||
|
||||
if (getZoraSwim()) {
|
||||
setUpperAnimeParam(0xBF, UPPER_2, &mpHIO->mDamage.mDamSwim.m.mSinkAnm);
|
||||
setFacePriBck(0xEA);
|
||||
setFacePriTexture(FTANM_UNK_27);
|
||||
setUpperAnimeParam(dRes_ID_ALANM_BCK_DAMSW_e, UPPER_2, &mpHIO->mDamage.mDamSwim.m.mSinkAnm);
|
||||
setFacePriBck(dRes_ID_ALANM_BCK_FB_e);
|
||||
setFacePriTexture(FTANM_B_A);
|
||||
return 1;
|
||||
}
|
||||
|
||||
commonProcInit(PROC_SWIM_DAMAGE);
|
||||
cXyz sp24(temp_r30->z * -cM_ssin(shape_angle.y) + temp_r30->x * cM_scos(shape_angle.y),
|
||||
temp_r30->y,
|
||||
temp_r30->z * cM_scos(shape_angle.y) + temp_r30->x * cM_ssin(shape_angle.y));
|
||||
|
||||
f32 var_f30 = cM_ssin(shape_angle.y);
|
||||
f32 var_f29 = cM_scos(shape_angle.y);
|
||||
cXyz sp24(dmg_vec->z * -var_f30 + dmg_vec->x * var_f29,
|
||||
dmg_vec->y,
|
||||
dmg_vec->z * var_f29 + dmg_vec->x * var_f30);
|
||||
|
||||
mProcVar0.field_0x3008 =
|
||||
cLib_minMaxLimit(cM_atan2s(sp24.z, sp24.y), (s16)-mpHIO->mDamage.mDamSwim.m.mFrontBackBodyMaxAngle,
|
||||
@@ -1436,7 +1441,9 @@ int daAlink_c::procSwimDamageInit(dCcD_GObjInf* param_0) {
|
||||
}
|
||||
|
||||
mNormalSpeed = 0.0f;
|
||||
field_0x347c = M_PI / (mUnderFrameCtrl->getEnd() - mUnderFrameCtrl->getStart());
|
||||
|
||||
daPy_frameCtrl_c* framectrl = mUnderFrameCtrl;
|
||||
field_0x347c = M_PI / (framectrl->getEnd() - framectrl->getStart());
|
||||
field_0x3480 = mpHIO->mSwim.m.mStartHeight;
|
||||
current.angle.y = shape_angle.y;
|
||||
|
||||
@@ -1470,13 +1477,12 @@ int daAlink_c::procSwimDamage() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int daAlink_c::procOctaIealSpitInit() {
|
||||
u32 temp_r30 = checkModeFlg(MODE_SWIMMING);
|
||||
commonProcInit(PROC_OCTAIEAL_SPIT);
|
||||
|
||||
if (checkNoResetFlg0(FLG0_UNDERWATER)) {
|
||||
offNoResetFlg0(FLG0_UNDERWATER);
|
||||
if (checkNoResetFlg0(FLG0_WATER_IN_MOVE)) {
|
||||
offNoResetFlg0(FLG0_WATER_IN_MOVE);
|
||||
}
|
||||
|
||||
setSingleAnimeBase(ANM_MORPHEEL_SPIT_OUT);
|
||||
@@ -1519,14 +1525,14 @@ static f32 dummyFloat() {
|
||||
}
|
||||
|
||||
int daAlink_c::procOctaIealSpit() {
|
||||
if (mDemo.getDemoMode() == 0x2E) {
|
||||
if (mDemo.getDemoMode() == daPy_demo_c::DEMO_CAUGHT_e) {
|
||||
cancelOriginalDemo();
|
||||
}
|
||||
|
||||
cLib_addCalc(&mNormalSpeed, 0.0f, 0.5f, field_0x3478, 0.1f);
|
||||
field_0x2f99 = 7;
|
||||
|
||||
if (mUnderFrameCtrl[0].checkAnmEnd()) {
|
||||
if (checkAnmEnd(mUnderFrameCtrl)) {
|
||||
procSwimWaitInit(0);
|
||||
}
|
||||
|
||||
|
||||
@@ -5,8 +5,9 @@
|
||||
|
||||
#include "d/actor/d_a_alink.h"
|
||||
#include "JSystem/JKernel/JKRExpHeap.h"
|
||||
#include "JSystem/J3DGraphLoader/J3DAnmLoader.h"
|
||||
|
||||
static int daAlink_modelCallBack(J3DJoint* p_joint, int param_1);
|
||||
static int daAlink_modelCallBack(J3DJoint* i_joint, int param_1);
|
||||
static int daAlink_headModelCallBack(J3DJoint* i_joint, int param_1);
|
||||
static int daAlink_wolfModelCallBack(J3DJoint* i_joint, int param_1);
|
||||
|
||||
@@ -24,14 +25,6 @@ void daAlink_c::setArcName(BOOL i_isWolf) {
|
||||
}
|
||||
}
|
||||
|
||||
inline bool checkCarvingWoodShieldEquip() {
|
||||
return dComIfGs_getSelectEquipShield() == fpcNm_ITEM_WOOD_SHIELD;
|
||||
}
|
||||
|
||||
inline bool checkShopWoodShieldEquip() {
|
||||
return dComIfGs_getSelectEquipShield() == fpcNm_ITEM_SHIELD;
|
||||
}
|
||||
|
||||
void daAlink_c::setShieldArcName() {
|
||||
if (checkCarvingWoodShieldEquip() || !checkShieldGet()) {
|
||||
mShieldArcName = l_cWShdArcName;
|
||||
@@ -44,8 +37,13 @@ void daAlink_c::setShieldArcName() {
|
||||
|
||||
void daAlink_c::setOriginalHeap(JKRExpHeap** i_ppheap, u32 i_size) {
|
||||
if (*i_ppheap == NULL) {
|
||||
*i_ppheap =
|
||||
JKRExpHeap::create(ROUND(i_size, 0x10) + 0xA0, mDoExt_getGameHeap(), true);
|
||||
u32 var_r29 = 0x90;
|
||||
u32 var_r28 = 0x10;
|
||||
u32 size = ROUND(i_size, 16);
|
||||
JKRHeap* parent = mDoExt_getGameHeap();
|
||||
|
||||
JKRExpHeap* heap = JKRExpHeap::create(size + (var_r29 + var_r28), parent, true);
|
||||
*i_ppheap = heap;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -91,7 +89,8 @@ int daAlink_c::loadModelDVD() {
|
||||
mClothesChangeWaitTimer = 0;
|
||||
changeLink(1);
|
||||
} else {
|
||||
if (dComIfG_resLoad(&mPhaseReq, mArcName, mpArcHeap) == cPhs_COMPLEATE_e) {
|
||||
int phase_state = dComIfG_resLoad(&mPhaseReq, mArcName, mpArcHeap);
|
||||
if (phase_state == cPhs_COMPLEATE_e) {
|
||||
mClothesChangeWaitTimer = 0;
|
||||
|
||||
if (mProcID == PROC_METAMORPHOSE || mProcID == PROC_METAMORPHOSE_ONLY) {
|
||||
@@ -134,8 +133,8 @@ int daAlink_c::loadShieldModelDVD() {
|
||||
mpShieldArcHeap->freeAll();
|
||||
setShieldArcName();
|
||||
} else if (mShieldChangeWaitTimer == 1) {
|
||||
if (dComIfG_resLoad(&mShieldPhaseReq, mShieldArcName, mpShieldArcHeap) == cPhs_COMPLEATE_e)
|
||||
{
|
||||
int phase_state = dComIfG_resLoad(&mShieldPhaseReq, mShieldArcName, mpShieldArcHeap);
|
||||
if (phase_state == cPhs_COMPLEATE_e) {
|
||||
mShieldChangeWaitTimer = 0;
|
||||
setShieldModel();
|
||||
} else {
|
||||
@@ -151,6 +150,7 @@ int daAlink_c::loadShieldModelDVD() {
|
||||
|
||||
void daAlink_c::changeModelDataDirect(int param_0) {
|
||||
u16 i;
|
||||
J3DModelData* modelData;
|
||||
|
||||
field_0x064C = mpLinkModel->getModelData();
|
||||
field_0x06c0 = mpLinkFaceModel->getModelData();
|
||||
@@ -164,14 +164,14 @@ void daAlink_c::changeModelDataDirect(int param_0) {
|
||||
field_0x064C->getJointNodePointer(i)->setCallBack(daAlink_modelCallBack);
|
||||
}
|
||||
|
||||
J3DModelData* head_modelData = mpLinkHatModel->getModelData();
|
||||
for (i = 1; i < head_modelData->getJointNum(); i++) {
|
||||
head_modelData->getJointNodePointer(i)->setCallBack(daAlink_headModelCallBack);
|
||||
modelData = mpLinkHatModel->getModelData();
|
||||
for (i = 1; i < modelData->getJointNum(); i++) {
|
||||
modelData->getJointNodePointer(i)->setCallBack(daAlink_headModelCallBack);
|
||||
}
|
||||
|
||||
if (param_0) {
|
||||
if (field_0x2154 != NULL) {
|
||||
field_0x06c0->entryTexNoAnimator(field_0x2154);
|
||||
if (mpFaceBtp != NULL) {
|
||||
field_0x06c0->entryTexNoAnimator(mpFaceBtp);
|
||||
}
|
||||
|
||||
if (mpFaceBtk != NULL) {
|
||||
@@ -188,14 +188,14 @@ void daAlink_c::changeModelDataDirect(int param_0) {
|
||||
field_0x064C->getJointNodePointer(i)->setCallBack(NULL);
|
||||
}
|
||||
|
||||
J3DModelData* head_modelData = mpLinkHatModel->getModelData();
|
||||
for (i = 1; i < head_modelData->getJointNum(); i++) {
|
||||
head_modelData->getJointNodePointer(i)->setCallBack(NULL);
|
||||
modelData = mpLinkHatModel->getModelData();
|
||||
for (i = 1; i < modelData->getJointNum(); i++) {
|
||||
modelData->getJointNodePointer(i)->setCallBack(NULL);
|
||||
}
|
||||
|
||||
if (!checkNoResetFlg2(daPy_FLG2(FLG2_UNK_100000 | FLG2_UNK_80000))) {
|
||||
for (i = 6; i < 8; i++) {
|
||||
head_modelData->getJointNodePointer(i)->setCallBack(daAlink_headModelCallBack);
|
||||
modelData->getJointNodePointer(i)->setCallBack(daAlink_headModelCallBack);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -217,8 +217,8 @@ void daAlink_c::changeModelDataDirectWolf(int param_0) {
|
||||
}
|
||||
|
||||
if (param_0) {
|
||||
if (field_0x2154 != NULL) {
|
||||
field_0x06c0->entryTexNoAnimator(field_0x2154);
|
||||
if (mpFaceBtp != NULL) {
|
||||
field_0x06c0->entryTexNoAnimator(mpFaceBtp);
|
||||
}
|
||||
|
||||
if (mpFaceBtk != NULL) {
|
||||
@@ -240,61 +240,61 @@ void daAlink_c::initStatusWindow() {
|
||||
onNoResetFlg2(FLG2_STATUS_WINDOW_DRAW);
|
||||
|
||||
void* tmpBuffer = new (0x20) void*[0x500];
|
||||
JUT_ASSERT(0x18A, tmpBuffer);
|
||||
JUT_ASSERT(394, tmpBuffer);
|
||||
|
||||
u16 var_r28, var_r31, var_r30;
|
||||
u16 bckResIdx, btpResIdx, btkResIdx;
|
||||
if (checkWolf()) {
|
||||
var_r28 = 0x2FF;
|
||||
var_r31 = 0x408;
|
||||
var_r30 = 0x3A7;
|
||||
bckResIdx = dRes_ID_ALANM_BCK_WL_WAITA_e;
|
||||
btpResIdx = dRes_ID_ALANM_BTP_WL_FA_e;
|
||||
btkResIdx = dRes_ID_ALANM_BTK_WL_FA_e;
|
||||
changeModelDataDirectWolf(0);
|
||||
} else {
|
||||
var_r28 = 0x26A;
|
||||
var_r31 = 0x3AF;
|
||||
var_r30 = 0x32C;
|
||||
bckResIdx = dRes_ID_ALANM_BCK_WAITS_e;
|
||||
btpResIdx = dRes_ID_ALANM_BTP_FA_e;
|
||||
btkResIdx = dRes_ID_ALANM_BTK_FA_e;
|
||||
|
||||
if (checkZoraWearAbility() && !checkZoraWearMaskDraw()) {
|
||||
field_0x06f0->hide();
|
||||
}
|
||||
|
||||
changeModelDataDirect(0);
|
||||
}
|
||||
|
||||
JKRReadIdxResource(tmpBuffer, 0x1400, var_r28, dComIfGp_getAnmArchive());
|
||||
JKRReadIdxResource(tmpBuffer, 0x1400, bckResIdx, dComIfGp_getAnmArchive());
|
||||
m_sWindowBck = new mDoExt_bckAnm();
|
||||
JUT_ASSERT(0x1AC, m_sWindowBck);
|
||||
JUT_ASSERT(428, m_sWindowBck);
|
||||
|
||||
J3DAnmTransform* bck = (J3DAnmTransform*)J3DAnmLoaderDataBase::load(tmpBuffer, J3DLOADER_UNK_FLAG0);
|
||||
if (!m_sWindowBck->init(bck, 1, 2, 1.0f, 0, -1, false)) {
|
||||
if (!m_sWindowBck->init((J3DAnmTransform*)J3DAnmLoaderDataBase::load(tmpBuffer), TRUE, 2, 1.0f, 0, -1, false)) {
|
||||
JUT_ASSERT(433, FALSE);
|
||||
}
|
||||
|
||||
tmpBuffer = new (0x20) void*[0x100];
|
||||
JUT_ASSERT(0x1B5, tmpBuffer);
|
||||
JUT_ASSERT(437, tmpBuffer);
|
||||
|
||||
JKRReadIdxResource(tmpBuffer, 0x400, var_r31, dComIfGp_getAnmArchive());
|
||||
JKRReadIdxResource(tmpBuffer, 0x400, btpResIdx, dComIfGp_getAnmArchive());
|
||||
J3DAnmTexPattern* btp = (J3DAnmTexPattern*)J3DAnmLoaderDataBase::load(tmpBuffer, J3DLOADER_UNK_FLAG0);
|
||||
btp->setFrame(0.0f);
|
||||
btp->searchUpdateMaterialID(field_0x06c0);
|
||||
field_0x06c0->entryTexNoAnimator(btp);
|
||||
|
||||
tmpBuffer = new (0x20) void*[0x100];
|
||||
JUT_ASSERT(0x1C1, tmpBuffer);
|
||||
JUT_ASSERT(449, tmpBuffer);
|
||||
|
||||
JKRReadIdxResource(tmpBuffer, 0x400, var_r30, dComIfGp_getAnmArchive());
|
||||
JKRReadIdxResource(tmpBuffer, 0x400, btkResIdx, dComIfGp_getAnmArchive());
|
||||
J3DAnmTextureSRTKey* btk = (J3DAnmTextureSRTKey*)J3DAnmLoaderDataBase::load(tmpBuffer, J3DLOADER_UNK_FLAG0);
|
||||
btk->setFrame(0.0f);
|
||||
btk->searchUpdateMaterialID(field_0x06c0);
|
||||
field_0x06c0->entryTexMtxAnimator(btk);
|
||||
}
|
||||
|
||||
|
||||
void daAlink_c::statusWindowExecute(const cXyz* i_pos, s16 i_angle) {
|
||||
if (loadModelDVD()) {
|
||||
if (mSwordChangeWaitTimer != 0) {
|
||||
mSwordChangeWaitTimer--;
|
||||
}
|
||||
|
||||
loadShieldModelDVD();
|
||||
setSelectEquipItem(1);
|
||||
setSelectEquipItem(TRUE);
|
||||
|
||||
if (mSwordChangeWaitTimer >= 30) {
|
||||
mSwordChangeWaitTimer = 0;
|
||||
@@ -367,7 +367,7 @@ void daAlink_c::resetStatusWindow() {
|
||||
setMatrix();
|
||||
mpLinkModel->calc();
|
||||
onNoResetFlg2(FLG2_STATUS_WINDOW_DRAW);
|
||||
setSelectEquipItem(0);
|
||||
setSelectEquipItem(FALSE);
|
||||
|
||||
if (checkWolf()) {
|
||||
setWolfItemMatrix();
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
#include "d/actor/d_a_obj_yobikusa.h"
|
||||
|
||||
static fopAc_ac_c* daAlink_searchWhistle(fopAc_ac_c* i_actor, void* i_data) {
|
||||
UNUSED(i_data);
|
||||
|
||||
if (daAlink_getAlinkActorClass()->getGrassHowlEventActor() == fopAcM_GetName(i_actor)) {
|
||||
return i_actor;
|
||||
}
|
||||
@@ -19,6 +21,8 @@ static fopAc_ac_c* daAlink_searchWhistle(fopAc_ac_c* i_actor, void* i_data) {
|
||||
}
|
||||
|
||||
static fopAc_ac_c* daAlink_searchHawk(fopAc_ac_c* i_actor, void* i_data) {
|
||||
UNUSED(i_data);
|
||||
|
||||
if (fopAcM_GetName(i_actor) == PROC_NPC_TK) {
|
||||
return i_actor;
|
||||
}
|
||||
@@ -26,7 +30,7 @@ static fopAc_ac_c* daAlink_searchHawk(fopAc_ac_c* i_actor, void* i_data) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void daAlink_c::setGrassWhistleModel(int modelType) {
|
||||
void daAlink_c::setGrassWhistleModel(int i_modelType) {
|
||||
static const char* grassWhistleArcName[] = {
|
||||
"J_Tobi",
|
||||
"J_Umak",
|
||||
@@ -38,8 +42,8 @@ void daAlink_c::setGrassWhistleModel(int modelType) {
|
||||
|
||||
JKRHeap* prev_heap = setItemHeap();
|
||||
|
||||
J3DModelData* modeldata = (J3DModelData*)dComIfG_getObjectRes(grassWhistleArcName[modelType],
|
||||
grassWhistleIdx[modelType]);
|
||||
J3DModelData* modeldata = (J3DModelData*)dComIfG_getObjectRes(grassWhistleArcName[i_modelType],
|
||||
grassWhistleIdx[i_modelType]);
|
||||
mHeldItemModel = mDoExt_J3DModel__create(modeldata, 0x80000, 0x11000084);
|
||||
|
||||
mDoExt_setCurrentHeap(prev_heap);
|
||||
@@ -50,7 +54,7 @@ void daAlink_c::setGrassWhistleModel(int modelType) {
|
||||
void daAlink_c::setHorseWhistleModel() {
|
||||
JKRHeap* prev_heap = setItemHeap();
|
||||
|
||||
mHeldItemModel = initModel(loadAramBmd(0x31A, 0x3000), 0);
|
||||
mHeldItemModel = initModel(loadAramBmd(dRes_ID_ALANM_BMD_AL_PEND_e, 0x3000), 0);
|
||||
|
||||
mDoExt_setCurrentHeap(prev_heap);
|
||||
mEquipItem = fpcNm_ITEM_HORSE_FLUTE;
|
||||
@@ -68,7 +72,7 @@ int daAlink_c::procGrassWhistleGetInit() {
|
||||
field_0x2f98 = 4;
|
||||
|
||||
setSingleAnimeParam(ANM_BOTTLE_SWING_DOWN, &mpHIO->mItem.mBottle.m.mSwingDownAnm);
|
||||
field_0x2f92 = 0xFE;
|
||||
mLeftHandIndex = 0xFE;
|
||||
field_0x280c.setData(field_0x27f4);
|
||||
|
||||
daObjYobikusa_c* yobikusa_p = (daObjYobikusa_c*)field_0x27f4;
|
||||
@@ -83,11 +87,10 @@ int daAlink_c::procGrassWhistleGetInit() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int daAlink_c::procGrassWhistleGet() {
|
||||
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
|
||||
|
||||
if (frameCtrl_p->checkAnmEnd()) {
|
||||
if (checkAnmEnd(frameCtrl_p)) {
|
||||
procGrassWhistleWaitInit(mProcVar2.field_0x300c, mProcVar3.field_0x300e,
|
||||
mProcVar4.field_0x3010, mProcVar5.field_0x3012, &field_0x37c8);
|
||||
} else if (mEquipItem == fpcNm_ITEM_NONE && frameCtrl_p->getFrame() >= 9.0f) {
|
||||
@@ -104,14 +107,14 @@ int daAlink_c::procGrassWhistleGet() {
|
||||
|
||||
int daAlink_c::procGrassWhistleWaitInit(int param_0, int param_1, int param_2, s16 param_3,
|
||||
cXyz* param_4) {
|
||||
u16 var_r6;
|
||||
u16 hindFlag;
|
||||
if (param_0 == 3) {
|
||||
var_r6 = 0xFFFF;
|
||||
hindFlag = 0xFFFF;
|
||||
} else {
|
||||
var_r6 = 0xFFF9;
|
||||
hindFlag = 0xFFF9;
|
||||
}
|
||||
|
||||
if (!dComIfGp_event_compulsory(this, NULL, var_r6)) {
|
||||
if (!dComIfGp_event_compulsory(this, NULL, hindFlag)) {
|
||||
return checkNextAction(0);
|
||||
}
|
||||
|
||||
@@ -167,7 +170,6 @@ int daAlink_c::procGrassWhistleWaitInit(int param_0, int param_1, int param_2, s
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int daAlink_c::procGrassWhistleWait() {
|
||||
if (mProcVar5.field_0x3012 != 0) {
|
||||
if (checkEndMessage(field_0x32cc)) {
|
||||
@@ -216,16 +218,16 @@ int daAlink_c::procGrassWhistleWait() {
|
||||
return procWaitInit();
|
||||
}
|
||||
|
||||
setFaceBasicTexture(FTANM_UNK_0);
|
||||
setFaceBasicTexture(FTANM_0);
|
||||
mProcVar5.field_0x3012 = 1;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
setGrassCancelStatus(0);
|
||||
setGrassCancelStatus(BUTTON_STATUS_NONE);
|
||||
} else if (checkAnmEnd(&mUpperFrameCtrl[2])) {
|
||||
setGrassCancelStatus(0x12);
|
||||
setDoStatus(0x2C);
|
||||
setGrassCancelStatus(BUTTON_STATUS_BACK);
|
||||
setDoStatus(BUTTON_STATUS_BLOW);
|
||||
|
||||
if (mProcVar2.field_0x300c == 3 || doTrigger()) {
|
||||
setSingleAnimeBaseMorf(ANM_GRASS_WHISTLE_PLAY, 0.0f);
|
||||
@@ -256,7 +258,7 @@ int daAlink_c::procGrassWhistleWait() {
|
||||
}
|
||||
} else {
|
||||
#if VERSION != VERSION_SHIELD_DEBUG
|
||||
setGrassCancelStatus(0);
|
||||
setGrassCancelStatus(BUTTON_STATUS_NONE);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -280,13 +282,13 @@ int daAlink_c::procCoHorseCallWaitInit(int param_0) {
|
||||
setSingleAnimeBaseSpeed(ANM_WAIT, mpHIO->mMove.m.mWaitAnmSpeed, 3.0f);
|
||||
}
|
||||
|
||||
setGrassCancelStatus(0);
|
||||
setGrassCancelStatus(BUTTON_STATUS_NONE);
|
||||
dComIfGp_setPlayerStatus1(0, 0x4000000);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int daAlink_c::procCoHorseCallWait() {
|
||||
setGrassCancelStatus(0);
|
||||
setGrassCancelStatus(BUTTON_STATUS_NONE);
|
||||
|
||||
mProcVar4.field_0x3010--;
|
||||
if (mProcVar4.field_0x3010 > 2 && dComIfGp_getHorseActor() != NULL) {
|
||||
@@ -322,7 +324,7 @@ int daAlink_c::procHawkCatchInit() {
|
||||
}
|
||||
|
||||
int daAlink_c::procHawkCatch() {
|
||||
if (mUnderFrameCtrl[0].checkAnmEnd()) {
|
||||
if (checkAnmEnd(mUnderFrameCtrl)) {
|
||||
dComIfGp_evmng_cutEnd(mAlinkStaffId);
|
||||
procHawkSubjectInit();
|
||||
}
|
||||
@@ -360,8 +362,8 @@ int daAlink_c::procHawkSubject() {
|
||||
dComIfGp_evmng_cutEnd(mAlinkStaffId);
|
||||
} else {
|
||||
fopAc_ac_c* temp_r29 = field_0x280c.getActor();
|
||||
setGrassCancelStatus(0x12);
|
||||
setDoStatus(0x31);
|
||||
setGrassCancelStatus(BUTTON_STATUS_BACK);
|
||||
setDoStatus(BUTTON_STATUS_SET_FREE);
|
||||
|
||||
if (doTrigger()) {
|
||||
mProcVar2.field_0x300c = 2;
|
||||
|
||||
+1051
-978
File diff suppressed because it is too large
Load Diff
@@ -2306,7 +2306,7 @@ static int daB_BQ_Execute(b_bq_class* i_this) {
|
||||
dComIfG_Ccsp()->Set(&i_this->mCcCoreSph);
|
||||
|
||||
sp50 = a_this->eyePos;
|
||||
if (daPy_getPlayerActorClass()->getCutType() != 0x27 && i_this->mAction >= ACTION_DAMAGE) {
|
||||
if (daPy_getPlayerActorClass()->getCutType() != daPy_py_c::CUT_TYPE_DOWN && i_this->mAction >= ACTION_DAMAGE) {
|
||||
sp50.y = player->current.pos.y + 70.0f + KREG_F(7);
|
||||
} else {
|
||||
sp50.x -= 20000.0f;
|
||||
|
||||
@@ -1813,7 +1813,7 @@ void daB_DR_c::executeWeekHit() {
|
||||
dComIfGp_particle_set(0x8999, &sp50, NULL, NULL);
|
||||
dComIfGp_particle_set(0x899A, &sp50, NULL, NULL);
|
||||
|
||||
if (health <= 0 || player->getCutType() == 0x20) {
|
||||
if (health <= 0 || player->getCutType() == daPy_py_c::CUT_TYPE_FINISH_STAB) {
|
||||
health = 0;
|
||||
mSound.startCollisionSE(Z2SE_HIT_SWORD, 0x20);
|
||||
|
||||
|
||||
@@ -3300,8 +3300,8 @@ static void demo_camera(b_gnd_class* i_this) {
|
||||
sp114.y = 0.0f;
|
||||
sp114.z = 135.0f;
|
||||
MtxPosition(&sp114, &sp108);
|
||||
a_this->current.pos.x = sp108.x + player->field_0x5f8.x;
|
||||
a_this->current.pos.z = sp108.z + player->field_0x5f8.z;
|
||||
a_this->current.pos.x = sp108.x + player->mViewerCurrentPos.x;
|
||||
a_this->current.pos.z = sp108.z + player->mViewerCurrentPos.z;
|
||||
a_this->current.angle.y = player->shape_angle.y + 0x8000;
|
||||
|
||||
spF0 = a_this->current.pos + ((*player->getViewerCurrentPosP() - a_this->current.pos) * 0.5f);
|
||||
|
||||
@@ -1115,8 +1115,8 @@ void daB_MGN_c::damage_check() {
|
||||
dComIfGs_onOneZoneSwitch(6, fopAcM_GetRoomNo(this));
|
||||
}
|
||||
|
||||
if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_WOLF_ATTACK) && player->getCutType() != 44 &&
|
||||
player->getCutType() != 45 && player->onWolfEnemyHangBite(this))
|
||||
if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_WOLF_ATTACK) && player->getCutType() != daPy_py_c::CUT_TYPE_WOLF_B_LEFT &&
|
||||
player->getCutType() != daPy_py_c::CUT_TYPE_WOLF_B_RIGHT && player->onWolfEnemyHangBite(this))
|
||||
{
|
||||
setActionMode(ACTION_DOWN_BITE_DAMAGE_e, 0);
|
||||
return;
|
||||
|
||||
@@ -1121,7 +1121,7 @@ u32 daB_TN_c::getCutType() {
|
||||
case daPy_py_c::CUT_TYPE_NM_RIGHT:
|
||||
case daPy_py_c::CUT_TYPE_FINISH_LEFT:
|
||||
case daPy_py_c::CUT_TYPE_FINISH_VERTICAL:
|
||||
case daPy_py_c::CUT_TYPE_DASH_UNK_26:
|
||||
case daPy_py_c::CUT_TYPE_DASH_RIGHT:
|
||||
return rv | 0x12;
|
||||
|
||||
case daPy_py_c::CUT_TYPE_NM_STAB:
|
||||
@@ -1129,7 +1129,7 @@ u32 daB_TN_c::getCutType() {
|
||||
return rv | 0x02;
|
||||
|
||||
case daPy_py_c::CUT_TYPE_NM_LEFT:
|
||||
case daPy_py_c::CUT_TYPE_DASH_UNK_25:
|
||||
case daPy_py_c::CUT_TYPE_DASH_LEFT:
|
||||
return rv | 0x21;
|
||||
|
||||
case daPy_py_c::CUT_TYPE_COMBO_STAB:
|
||||
@@ -1344,8 +1344,8 @@ void daB_TN_c::damage_check() {
|
||||
if (cut_type == daPy_py_c::CUT_TYPE_LARGE_JUMP_FINISH) {
|
||||
return;
|
||||
} else if (mActionMode1 < 8) {
|
||||
if (cut_type == daPy_py_c::CUT_TYPE_DASH_UNK_25 ||
|
||||
cut_type == daPy_py_c::CUT_TYPE_DASH_UNK_26 ||
|
||||
if (cut_type == daPy_py_c::CUT_TYPE_DASH_LEFT ||
|
||||
cut_type == daPy_py_c::CUT_TYPE_DASH_RIGHT ||
|
||||
mAtInfo.mpCollider->ChkAtType(AT_TYPE_UNK))
|
||||
{
|
||||
setShieldEffect(&dStack_160);
|
||||
@@ -1403,8 +1403,8 @@ void daB_TN_c::damage_check() {
|
||||
|
||||
if (mTimer10 != 0 ||
|
||||
abs((s16)(fopAcM_searchPlayerAngleY(this) - shape_angle.y)) < 0x3000 ||
|
||||
cut_type == daPy_py_c::CUT_TYPE_DASH_UNK_25 ||
|
||||
cut_type == daPy_py_c::CUT_TYPE_DASH_UNK_26)
|
||||
cut_type == daPy_py_c::CUT_TYPE_DASH_LEFT ||
|
||||
cut_type == daPy_py_c::CUT_TYPE_DASH_RIGHT)
|
||||
{
|
||||
field_0xaa8 = false;
|
||||
setShieldEffect(&dStack_160);
|
||||
|
||||
@@ -176,7 +176,7 @@ static void damage_check(e_bu_class* i_this) {
|
||||
if (i_this->atInfo.mpCollider->ChkAtType(AT_TYPE_HOOKSHOT)) {
|
||||
actor->speedF = 0.0f;
|
||||
i_this->head_rot_y = i_this->atInfo.mHitDirection.y;
|
||||
} else if (player->getCutType() == 10 && player->checkCutJumpCancelTurn()) {
|
||||
} else if (player->getCutType() == daPy_py_c::CUT_TYPE_JUMP && player->checkCutJumpCancelTurn()) {
|
||||
i_this->invulnerabilityTimer = NREG_S(7) + 3;
|
||||
actor->speedF = 0.0f;
|
||||
} else {
|
||||
|
||||
@@ -1301,7 +1301,7 @@ int daE_HM_c::Execute() {
|
||||
cXyz bindEffectSize(1.0f, 1.0f, 1.0f);
|
||||
|
||||
u32 cutType = daPy_getPlayerActorClass()->getCutType();
|
||||
if (cutType == 0x36 && mSph.ChkAtSet() != 0) {
|
||||
if (cutType == daPy_py_c::CUT_TYPE_WOLF_LOCK && mSph.ChkAtSet() != 0) {
|
||||
mSph.OffAtSetBit();
|
||||
field_0x5ac = 1;
|
||||
} else if (field_0x5ac != 0) {
|
||||
|
||||
@@ -595,10 +595,10 @@ static void action(e_mm_mt_class* i_this) {
|
||||
fopAc_ac_c* local_a4 = at_power_check(&i_this->m_atInfo);
|
||||
|
||||
if (i_this->m_atInfo.mHitType == 1) {
|
||||
if (daPy_getPlayerActorClass()->getCutType() == 8 ||
|
||||
daPy_getPlayerActorClass()->getCutType() == 9 ||
|
||||
daPy_getPlayerActorClass()->getCutType() == 23 ||
|
||||
daPy_getPlayerActorClass()->getCutType() == 24) {
|
||||
if (daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_TURN_RIGHT ||
|
||||
daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_UNK_9 ||
|
||||
daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_LARGE_TURN_LEFT ||
|
||||
daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_LARGE_TURN_RIGHT) {
|
||||
actor->speedF = cM_rndF(10.0f) + 40.0f + TREG_F(16);
|
||||
i_this->m_spin = (s16)(cM_rndF(2000.0f) + 5500.0f);
|
||||
i_this->field_0x69C = (s16)(cM_rndF(1000.0f) + 5000.0f);
|
||||
|
||||
@@ -613,13 +613,13 @@ int daE_OC_c::getCutType() {
|
||||
case daPy_py_c::CUT_TYPE_NM_STAB:
|
||||
case daPy_py_c::CUT_TYPE_NM_RIGHT:
|
||||
case daPy_py_c::CUT_TYPE_FINISH_STAB:
|
||||
case daPy_py_c::CUT_TYPE_DASH_UNK_26:
|
||||
case daPy_py_c::CUT_TYPE_DASH_RIGHT:
|
||||
case daPy_py_c::CUT_TYPE_NM_VERTICAL:
|
||||
return 0;
|
||||
case daPy_py_c::CUT_TYPE_COMBO_STAB:
|
||||
case daPy_py_c::CUT_TYPE_HORSE_UNK_22:
|
||||
case daPy_py_c::CUT_TYPE_HORSE_UNK_23:
|
||||
case daPy_py_c::CUT_TYPE_DASH_UNK_25:
|
||||
case daPy_py_c::CUT_TYPE_HORSE_LEFT_A:
|
||||
case daPy_py_c::CUT_TYPE_HORSE_LEFT_B:
|
||||
case daPy_py_c::CUT_TYPE_DASH_LEFT:
|
||||
case daPy_py_c::CUT_TYPE_NM_LEFT:
|
||||
return 1;
|
||||
default:
|
||||
|
||||
@@ -684,7 +684,7 @@ void daE_OctBg_c::damage_check() {
|
||||
field_0x9f8.ChkAtHit())
|
||||
{
|
||||
if (field_0x9f8.ChkAtShieldHit()) {
|
||||
if (daPy_getPlayerActorClass()->getCutType() == 41) {
|
||||
if (daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_GUARD_ATTACK) {
|
||||
setAction(&daE_OctBg_c::damage);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -265,14 +265,14 @@ u8 daE_PZ_c::getCutType() {
|
||||
case daPy_py_c::CUT_TYPE_NM_STAB:
|
||||
case daPy_py_c::CUT_TYPE_NM_RIGHT:
|
||||
case daPy_py_c::CUT_TYPE_FINISH_VERTICAL:
|
||||
case daPy_py_c::CUT_TYPE_DASH_UNK_26:
|
||||
case daPy_py_c::CUT_TYPE_DASH_RIGHT:
|
||||
return 1;
|
||||
case daPy_py_c::CUT_TYPE_NM_LEFT:
|
||||
case daPy_py_c::CUT_TYPE_FINISH_LEFT:
|
||||
case daPy_py_c::CUT_TYPE_COMBO_STAB:
|
||||
case daPy_py_c::CUT_TYPE_HORSE_UNK_22:
|
||||
case daPy_py_c::CUT_TYPE_HORSE_UNK_23:
|
||||
case daPy_py_c::CUT_TYPE_DASH_UNK_25:
|
||||
case daPy_py_c::CUT_TYPE_HORSE_LEFT_A:
|
||||
case daPy_py_c::CUT_TYPE_HORSE_LEFT_B:
|
||||
case daPy_py_c::CUT_TYPE_DASH_LEFT:
|
||||
return 2;
|
||||
default:
|
||||
return 3;
|
||||
|
||||
@@ -607,7 +607,7 @@ void daE_SB_c::ActionCheck() {
|
||||
if ( (s16) (shape_angle.y - tgt_ang) > -0x3000 && (s16) (shape_angle.y - tgt_ang) < 0x3000) {
|
||||
if (temp_r27 > 1U) {
|
||||
Hit();
|
||||
} else if (temp_r29 == 1 || temp_r29 == 10 || temp_r29 == 0x29 || dComIfGp_checkPlayerStatus0(0, 0x4000U)) {
|
||||
} else if (temp_r29 == daPy_py_c::CUT_TYPE_NM_VERTICAL || temp_r29 == daPy_py_c::CUT_TYPE_JUMP || temp_r29 == daPy_py_c::CUT_TYPE_GUARD_ATTACK || dComIfGp_checkPlayerStatus0(0, 0x4000U)) {
|
||||
Hanekaeri();
|
||||
} else {
|
||||
Hit();
|
||||
|
||||
@@ -171,7 +171,7 @@ int daE_TT_c::getCutType() {
|
||||
case daPy_py_c::CUT_TYPE_NM_VERTICAL:
|
||||
case daPy_py_c::CUT_TYPE_NM_STAB:
|
||||
case daPy_py_c::CUT_TYPE_NM_RIGHT:
|
||||
case daPy_py_c::CUT_TYPE_DASH_UNK_26:
|
||||
case daPy_py_c::CUT_TYPE_DASH_RIGHT:
|
||||
return 0;
|
||||
|
||||
default:
|
||||
|
||||
@@ -2759,7 +2759,7 @@ void daE_VA_c::executeOpaciDown() {
|
||||
break;
|
||||
}
|
||||
|
||||
if (player->getCutCount() > 1 || player->getCutType() == 10) {
|
||||
if (player->getCutCount() > 1 || player->getCutType() == daPy_py_c::CUT_TYPE_JUMP) {
|
||||
if (mFadeAwayTimer < 30) {
|
||||
mFadeAwayTimer = 30;
|
||||
}
|
||||
@@ -2773,7 +2773,7 @@ void daE_VA_c::executeOpaciDown() {
|
||||
void daE_VA_c::executeOpaciDownDamage() {
|
||||
daPy_py_c* player = daPy_getPlayerActorClass();
|
||||
|
||||
if (player->getCutCount() > 1 || player->getCutType() == 10) {
|
||||
if (player->getCutCount() > 1 || player->getCutType() == daPy_py_c::CUT_TYPE_JUMP) {
|
||||
if (mFadeAwayTimer < 30) {
|
||||
mFadeAwayTimer = 30;
|
||||
}
|
||||
|
||||
@@ -2994,7 +2994,7 @@ void daE_YM_c::checkFrinedSamePos() {
|
||||
|
||||
void daE_YM_c::action() {
|
||||
int reg_r27 = 0; // set but not used
|
||||
if (daPy_getPlayerActorClass()->getCutType() == 0x36) {
|
||||
if (daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_WOLF_LOCK) {
|
||||
reg_r27 = 1;
|
||||
field_0x700 = 0;
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ static BOOL d_kytag12_cut_normal_check() {
|
||||
daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0);
|
||||
BOOL var_r3 = true;
|
||||
if (player != NULL &&
|
||||
(player->getCutType() == 0x28 || player->getCutType() == daPy_py_c::CUT_TYPE_GUARD_ATTACK))
|
||||
(player->getCutType() == daPy_py_c::CUT_TYPE_UNK_28 || player->getCutType() == daPy_py_c::CUT_TYPE_GUARD_ATTACK))
|
||||
{
|
||||
var_r3 = false;
|
||||
}
|
||||
|
||||
@@ -332,7 +332,7 @@ int daObj_Kanban2_c::getKanbanCutType() {
|
||||
case daPy_py_c::CUT_TYPE_NM_VERTICAL:
|
||||
case daPy_py_c::CUT_TYPE_NM_RIGHT:
|
||||
case daPy_py_c::CUT_TYPE_FINISH_LEFT:
|
||||
case daPy_py_c::CUT_TYPE_DASH_UNK_26:
|
||||
case daPy_py_c::CUT_TYPE_DASH_RIGHT:
|
||||
if (angle_to_player < 0x3800) {
|
||||
return DAMAGE_TLBR_DIAGONAL;
|
||||
}
|
||||
@@ -351,7 +351,7 @@ int daObj_Kanban2_c::getKanbanCutType() {
|
||||
}
|
||||
return DAMAGE_HORIZONTAL_SPLIT;
|
||||
case daPy_py_c::CUT_TYPE_NM_LEFT:
|
||||
case daPy_py_c::CUT_TYPE_DASH_UNK_25:
|
||||
case daPy_py_c::CUT_TYPE_DASH_LEFT:
|
||||
return DAMAGE_HORIZONTAL_SPLIT;
|
||||
case daPy_py_c::CUT_TYPE_TURN_RIGHT:
|
||||
case daPy_py_c::CUT_TYPE_LARGE_JUMP_INIT:
|
||||
|
||||
+126
-111
@@ -33,8 +33,7 @@ void daPy_frameCtrl_c::updateFrame() {
|
||||
offNowSetFlg();
|
||||
}
|
||||
|
||||
void daPy_frameCtrl_c::setFrameCtrl(u8 i_attribute, s16 i_start, s16 i_end, f32 i_rate,
|
||||
f32 i_frame) {
|
||||
void daPy_frameCtrl_c::setFrameCtrl(u8 i_attribute, s16 i_start, s16 i_end, f32 i_rate, f32 i_frame) {
|
||||
setAttribute(i_attribute);
|
||||
setEnd(i_end);
|
||||
setRate(i_rate);
|
||||
@@ -50,15 +49,15 @@ void daPy_frameCtrl_c::setFrameCtrl(u8 i_attribute, s16 i_start, s16 i_end, f32
|
||||
offEndFlg();
|
||||
}
|
||||
|
||||
void daPy_boomerangMove_c::initOffset(cXyz const* i_offset) {
|
||||
void daPy_boomerangMove_c::initOffset(const cXyz* i_pos) {
|
||||
daBoomerang_c* boomerang_p = daPy_py_c::getThrowBoomerangActor();
|
||||
|
||||
if (boomerang_p != NULL) {
|
||||
bgCheckAfterOffset(i_offset);
|
||||
bgCheckAfterOffset(i_pos);
|
||||
boomerang_p->onWindCatch();
|
||||
} else {
|
||||
field_0x4 = cM_rndF(70.0f) + 30.0f;
|
||||
field_0x8 = cM_rndF(50.0f) + 50.0f;
|
||||
m_offsetY = cM_rndF(70.0f) + 30.0f;
|
||||
m_offsetXZ = cM_rndF(50.0f) + 50.0f;
|
||||
field_0x2 = cM_rndF(65536.0f);
|
||||
}
|
||||
|
||||
@@ -71,20 +70,20 @@ s16 daPy_boomerangMove_c::m_dropAngleY;
|
||||
|
||||
s16 daPy_boomerangMove_c::m_eventKeepFlg;
|
||||
|
||||
int daPy_boomerangMove_c::posMove(cXyz* param_0, s16* param_1, fopAc_ac_c* param_2, s16 param_3) {
|
||||
int daPy_boomerangMove_c::posMove(cXyz* o_pos, s16* o_rotY, fopAc_ac_c* i_objActor, s16 i_rotStep) {
|
||||
daBoomerang_c* boomerang_p = daPy_py_c::getThrowBoomerangActor();
|
||||
|
||||
field_0x2 -= param_3;
|
||||
*param_1 -= param_3;
|
||||
field_0x2 -= i_rotStep;
|
||||
*o_rotY -= i_rotStep;
|
||||
|
||||
if (field_0x8 > 300.0f) {
|
||||
field_0x8 = 300.0f;
|
||||
if (m_offsetXZ > 300.0f) {
|
||||
m_offsetXZ = 300.0f;
|
||||
}
|
||||
|
||||
if (field_0x4 < -700.0f) {
|
||||
field_0x4 = -700.0f;
|
||||
} else if (field_0x4 > 50.0f) {
|
||||
field_0x4 = 50.0f;
|
||||
if (m_offsetY < -700.0f) {
|
||||
m_offsetY = -700.0f;
|
||||
} else if (m_offsetY > 50.0f) {
|
||||
m_offsetY = 50.0f;
|
||||
}
|
||||
|
||||
if (boomerang_p != NULL) {
|
||||
@@ -98,39 +97,39 @@ int daPy_boomerangMove_c::posMove(cXyz* param_0, s16* param_1, fopAc_ac_c* param
|
||||
return 0;
|
||||
}
|
||||
|
||||
param_0->set(boomerang_p->current.pos.x + field_0x8 * cM_ssin(field_0x2),
|
||||
boomerang_p->current.pos.y + field_0x4,
|
||||
boomerang_p->current.pos.z + field_0x8 * cM_scos(field_0x2));
|
||||
o_pos->set(boomerang_p->current.pos.x + m_offsetXZ * cM_ssin(field_0x2),
|
||||
boomerang_p->current.pos.y + m_offsetY,
|
||||
boomerang_p->current.pos.z + m_offsetXZ * cM_scos(field_0x2));
|
||||
boomerang_p->onWindCatch();
|
||||
return 1;
|
||||
}
|
||||
|
||||
daAlink_c* player_p = daAlink_getAlinkActorClass();
|
||||
if ((param_2 == NULL || !player_p->checkBoomerangCarry(param_2)) &&
|
||||
if ((i_objActor == NULL || !player_p->checkBoomerangCarry(i_objActor)) &&
|
||||
(m_eventKeepFlg == 0 || field_0x0 != 0))
|
||||
{
|
||||
s16 tmp = (m_dropAngleY + player_p->shape_angle.y) + cM_rndF(2048.0f);
|
||||
|
||||
param_0->x = player_p->current.pos.x + field_0x8 * cM_ssin(tmp);
|
||||
param_0->z = player_p->current.pos.z + field_0x8 * cM_scos(tmp);
|
||||
o_pos->x = player_p->current.pos.x + m_offsetXZ * cM_ssin(tmp);
|
||||
o_pos->z = player_p->current.pos.z + m_offsetXZ * cM_scos(tmp);
|
||||
m_dropAngleY += 0x2000;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void daPy_boomerangMove_c::bgCheckAfterOffset(cXyz const* i_offset) {
|
||||
void daPy_boomerangMove_c::bgCheckAfterOffset(const cXyz* i_pos) {
|
||||
daBoomerang_c* boomerang_p = daPy_py_c::getThrowBoomerangActor();
|
||||
if (boomerang_p != NULL) {
|
||||
field_0x4 = i_offset->y - boomerang_p->current.pos.y;
|
||||
field_0x8 = boomerang_p->current.pos.absXZ(*i_offset);
|
||||
field_0x2 = cM_atan2s(i_offset->x - boomerang_p->current.pos.x,
|
||||
i_offset->z - boomerang_p->current.pos.z);
|
||||
m_offsetY = i_pos->y - boomerang_p->current.pos.y;
|
||||
m_offsetXZ = boomerang_p->current.pos.absXZ(*i_pos);
|
||||
field_0x2 = cM_atan2s(i_pos->x - boomerang_p->current.pos.x,
|
||||
i_pos->z - boomerang_p->current.pos.z);
|
||||
}
|
||||
}
|
||||
|
||||
u32 daPy_py_c::setParamData(int param_0, int param_1, int param_2, int param_3) {
|
||||
return param_3 | (param_0 & 0x3F | (param_1 & 0x1F) << 0xC | param_2 << 0x18);
|
||||
u32 daPy_py_c::setParamData(int i_roomNo, int i_mode, int param_2, int param_3) {
|
||||
return (i_roomNo & 0x3F) | (i_mode & 0x1F) << 0xC | ((param_2 & 0xFF) << 0x18) | param_3;
|
||||
}
|
||||
|
||||
BOOL daPy_py_c::checkFishingRodItem(int i_itemNo) {
|
||||
@@ -142,16 +141,23 @@ BOOL daPy_py_c::checkBombItem(int i_itemNo) {
|
||||
}
|
||||
|
||||
BOOL daPy_py_c::checkBottleItem(int i_itemNo) {
|
||||
return (i_itemNo >= fpcNm_ITEM_EMPTY_BOTTLE && i_itemNo <= fpcNm_ITEM_FAIRY) || i_itemNo == fpcNm_ITEM_BEE_CHILD ||
|
||||
i_itemNo == fpcNm_ITEM_WORM || i_itemNo == fpcNm_ITEM_FAIRY_DROP || i_itemNo == fpcNm_ITEM_CHUCHU_BLACK ||
|
||||
(i_itemNo >= fpcNm_ITEM_CHUCHU_RARE && i_itemNo <= fpcNm_ITEM_LV3_SOUP);
|
||||
return (i_itemNo >= fpcNm_ITEM_EMPTY_BOTTLE && i_itemNo <= fpcNm_ITEM_FAIRY)
|
||||
|| i_itemNo == fpcNm_ITEM_BEE_CHILD
|
||||
|| i_itemNo == fpcNm_ITEM_WORM
|
||||
|| i_itemNo == fpcNm_ITEM_FAIRY_DROP
|
||||
|| i_itemNo == fpcNm_ITEM_CHUCHU_BLACK
|
||||
|| (i_itemNo >= fpcNm_ITEM_CHUCHU_RARE && i_itemNo <= fpcNm_ITEM_LV3_SOUP);
|
||||
}
|
||||
|
||||
BOOL daPy_py_c::checkDrinkBottleItem(int i_itemNo) {
|
||||
return (i_itemNo >= fpcNm_ITEM_RED_BOTTLE && i_itemNo <= fpcNm_ITEM_HALF_MILK_BOTTLE) || i_itemNo == fpcNm_ITEM_RED_BOTTLE_2 ||
|
||||
i_itemNo == fpcNm_ITEM_UGLY_SOUP || i_itemNo == fpcNm_ITEM_HOT_SPRING || i_itemNo == fpcNm_ITEM_BEE_CHILD ||
|
||||
i_itemNo == fpcNm_ITEM_CHUCHU_BLACK || i_itemNo == fpcNm_ITEM_FAIRY_DROP ||
|
||||
(i_itemNo >= fpcNm_ITEM_CHUCHU_RARE && i_itemNo != fpcNm_ITEM_CHUCHU_YELLOW && i_itemNo <= fpcNm_ITEM_LV3_SOUP);
|
||||
return (i_itemNo >= fpcNm_ITEM_RED_BOTTLE && i_itemNo <= fpcNm_ITEM_HALF_MILK_BOTTLE)
|
||||
|| i_itemNo == fpcNm_ITEM_RED_BOTTLE_2
|
||||
|| i_itemNo == fpcNm_ITEM_UGLY_SOUP
|
||||
|| i_itemNo == fpcNm_ITEM_HOT_SPRING
|
||||
|| i_itemNo == fpcNm_ITEM_BEE_CHILD
|
||||
|| i_itemNo == fpcNm_ITEM_CHUCHU_BLACK
|
||||
|| i_itemNo == fpcNm_ITEM_FAIRY_DROP
|
||||
|| (i_itemNo >= fpcNm_ITEM_CHUCHU_RARE && i_itemNo != fpcNm_ITEM_CHUCHU_YELLOW && i_itemNo <= fpcNm_ITEM_LV3_SOUP);
|
||||
}
|
||||
|
||||
BOOL daPy_py_c::checkOilBottleItem(int i_itemNo) {
|
||||
@@ -171,9 +177,13 @@ BOOL daPy_py_c::checkHookshotItem(int i_itemNo) {
|
||||
}
|
||||
|
||||
BOOL daPy_py_c::checkTradeItem(int i_itemNo) {
|
||||
return (i_itemNo >= fpcNm_ITEM_LETTER && i_itemNo <= fpcNm_ITEM_IRIAS_PENDANT) || i_itemNo == fpcNm_ITEM_ANCIENT_DOCUMENT ||
|
||||
i_itemNo == fpcNm_ITEM_AIR_LETTER || i_itemNo == fpcNm_ITEM_ANCIENT_DOCUMENT2 || i_itemNo == fpcNm_ITEM_RAFRELS_MEMO ||
|
||||
i_itemNo == fpcNm_ITEM_TKS_LETTER || i_itemNo == fpcNm_ITEM_ASHS_SCRIBBLING;
|
||||
return (i_itemNo >= fpcNm_ITEM_LETTER && i_itemNo <= fpcNm_ITEM_IRIAS_PENDANT)
|
||||
|| i_itemNo == fpcNm_ITEM_ANCIENT_DOCUMENT
|
||||
|| i_itemNo == fpcNm_ITEM_AIR_LETTER
|
||||
|| i_itemNo == fpcNm_ITEM_ANCIENT_DOCUMENT2
|
||||
|| i_itemNo == fpcNm_ITEM_RAFRELS_MEMO
|
||||
|| i_itemNo == fpcNm_ITEM_TKS_LETTER
|
||||
|| i_itemNo == fpcNm_ITEM_ASHS_SCRIBBLING;
|
||||
}
|
||||
|
||||
BOOL daPy_py_c::checkDungeonWarpItem(int i_itemNo) {
|
||||
@@ -181,11 +191,10 @@ BOOL daPy_py_c::checkDungeonWarpItem(int i_itemNo) {
|
||||
}
|
||||
|
||||
void daPy_actorKeep_c::setActor() {
|
||||
if (mID != -1) {
|
||||
if (mID != fpcM_ERROR_PROCESS_ID_e) {
|
||||
mActor = fopAcM_SearchByID(mID);
|
||||
|
||||
if (mActor == NULL) {
|
||||
mID = -1;
|
||||
mID = fpcM_ERROR_PROCESS_ID_e;
|
||||
}
|
||||
} else {
|
||||
mActor = NULL;
|
||||
@@ -202,7 +211,7 @@ void daPy_actorKeep_c::setData(fopAc_ac_c* i_actor) {
|
||||
}
|
||||
|
||||
void daPy_actorKeep_c::clearData() {
|
||||
mID = 0xffffffff;
|
||||
mID = fpcM_ERROR_PROCESS_ID_e;
|
||||
mActor = NULL;
|
||||
}
|
||||
|
||||
@@ -243,25 +252,44 @@ void daPy_anmHeap_c::createHeap(daPy_anmHeap_c::daAlinkHEAP_TYPE i_heapType) {
|
||||
size = 0xA0;
|
||||
}
|
||||
|
||||
char* tmpWork;
|
||||
mDoExt_transAnmBas* tmpTransBas;
|
||||
J3DAnmTransformKey* tmpTrans;
|
||||
J3DAnmTexPattern* tmpTp;
|
||||
J3DAnmTextureSRTKey* tmpTk;
|
||||
|
||||
JKRHeap* tmp;
|
||||
mAnimeHeap = mDoExt_createSolidHeapFromGameToCurrent(&tmp, size, 0x20);
|
||||
|
||||
|
||||
if (i_heapType == 4) {
|
||||
char* tmpWork = new char[size];
|
||||
tmpWork = new char[size];
|
||||
JUT_ASSERT(669, tmpWork != NULL);
|
||||
} else if (i_heapType == 3) {
|
||||
mDoExt_transAnmBas* tmpTransBas = new mDoExt_transAnmBas(NULL);
|
||||
tmpTransBas = new mDoExt_transAnmBas(NULL);
|
||||
JUT_ASSERT(672, tmpTransBas != NULL);
|
||||
} else if (i_heapType == 0) {
|
||||
J3DAnmTransformKey* tmpTrans = new J3DAnmTransformKey();
|
||||
tmpTrans = new J3DAnmTransformKey();
|
||||
JUT_ASSERT(675, tmpTrans != NULL);
|
||||
} else if (i_heapType == 1) {
|
||||
J3DAnmTexPattern* tmpTp = new J3DAnmTexPattern();
|
||||
tmpTp = new J3DAnmTexPattern();
|
||||
JUT_ASSERT(678, tmpTp != NULL);
|
||||
} else {
|
||||
J3DAnmTextureSRTKey* tmpTk = new J3DAnmTextureSRTKey();
|
||||
tmpTk = new J3DAnmTextureSRTKey();
|
||||
JUT_ASSERT(681, tmpTk != NULL);
|
||||
}
|
||||
|
||||
mDoExt_setCurrentHeap(tmp);
|
||||
mDoExt_adjustSolidHeap(mAnimeHeap);
|
||||
}
|
||||
|
||||
void daPy_aramBufferCheck(void* i_buffer, u32 i_size) {
|
||||
daPy_anmHeap_c* heap = (daPy_anmHeap_c*)i_buffer;
|
||||
if (heap->mBufferSize > i_size) {
|
||||
OS_REPORT("%x, %x\n", heap->mBufferSize, i_size);
|
||||
JUT_ASSERT(699, FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
void* daPy_anmHeap_c::loadData(u16 i_resId) {
|
||||
static const char twglArcName[] = "TWGate_Lk";
|
||||
static const char twgwArcName[] = "TWGate_Wf";
|
||||
@@ -278,7 +306,11 @@ void* daPy_anmHeap_c::loadData(u16 i_resId) {
|
||||
};
|
||||
|
||||
if (mArcNo == 0xFFFF) {
|
||||
dComIfGp_getAnmArchive()->readIdxResource(mBuffer, mBufferSize, i_resId);
|
||||
JKRReadIdxResource(mBuffer, mBufferSize, i_resId, dComIfGp_getAnmArchive());
|
||||
#if DEBUG
|
||||
daPy_aramBufferCheck(mBuffer, mBufferSize);
|
||||
#endif
|
||||
|
||||
JKRHeap* heap = setAnimeHeap();
|
||||
void* data = J3DAnmLoaderDataBase::load(mBuffer, J3DLOADER_UNK_FLAG0);
|
||||
mDoExt_setCurrentHeap(heap);
|
||||
@@ -293,48 +325,36 @@ void* daPy_anmHeap_c::loadData(u16 i_resId) {
|
||||
}
|
||||
|
||||
void* daPy_anmHeap_c::loadDataIdx(u16 i_resID) {
|
||||
void* data;
|
||||
|
||||
if (i_resID == mIdx && mArcNo == 0xFFFF) {
|
||||
data = NULL;
|
||||
} else {
|
||||
mIdx = i_resID;
|
||||
mArcNo = 0xFFFF;
|
||||
if (mPriIdx == 0xFFFF) {
|
||||
data = loadData(i_resID);
|
||||
} else {
|
||||
data = NULL;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return data;
|
||||
mIdx = i_resID;
|
||||
mArcNo = 0xFFFF;
|
||||
if (mPriIdx == 0xFFFF) {
|
||||
return loadData(i_resID);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void* daPy_anmHeap_c::loadDataPriIdx(u16 i_resID) {
|
||||
void* data;
|
||||
|
||||
if (i_resID == mPriIdx || mArcNo != 0xFFFF) {
|
||||
data = NULL;
|
||||
} else {
|
||||
mPriIdx = i_resID;
|
||||
data = loadData(i_resID);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return data;
|
||||
mPriIdx = i_resID;
|
||||
return loadData(i_resID);
|
||||
}
|
||||
|
||||
void* daPy_anmHeap_c::loadDataDemoRID(u16 i_resID, u16 i_arcNo) {
|
||||
void* data;
|
||||
|
||||
if (i_resID == mIdx && i_arcNo == mArcNo) {
|
||||
data = NULL;
|
||||
} else {
|
||||
mIdx = i_resID;
|
||||
mArcNo = i_arcNo;
|
||||
data = loadData(i_resID);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return data;
|
||||
mIdx = i_resID;
|
||||
mArcNo = i_arcNo;
|
||||
return loadData(i_resID);
|
||||
}
|
||||
|
||||
JKRHeap* daPy_anmHeap_c::setAnimeHeap() {
|
||||
@@ -370,13 +390,11 @@ void daPy_sightPacket_c::draw() {
|
||||
|
||||
GXSetTevColor(GX_TEVREG0, reg0);
|
||||
GXSetTevColor(GX_TEVREG1, reg1);
|
||||
u8 tmp2 = mpImg->mipmapCount;
|
||||
tmp2 = tmp2 > 1;
|
||||
GXInitTexObj(&texObj, mpData, mpImg->width, mpImg->height, (GXTexFmt)mpImg->format,
|
||||
(GXTexWrapMode)mpImg->wrapS, (GXTexWrapMode)mpImg->wrapT, (GXBool)(tmp2));
|
||||
(GXTexWrapMode)mpImg->wrapS, (GXTexWrapMode)mpImg->wrapT, mpImg->mipmapCount > 1 ? GX_ENABLE : GX_DISABLE);
|
||||
GXInitTexObjLOD(&texObj, GX_LINEAR, GX_LINEAR, 0.0, 0.0, 0.0, GX_FALSE, GX_FALSE, GX_ANISO_1);
|
||||
GXLoadTexObj(&texObj, GX_TEXMAP0);
|
||||
GXLoadPosMtxImm(field_0x14, GX_PNMTX0);
|
||||
GXLoadPosMtxImm(mProjMtx, GX_PNMTX0);
|
||||
GXSetCurrentMtx(0);
|
||||
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL);
|
||||
GXCallDisplayList(l_sightDL, 0x80);
|
||||
@@ -389,7 +407,7 @@ void daPy_sightPacket_c::setSight() {
|
||||
mDoLib_project(&mPos, &proj);
|
||||
mDoMtx_stack_c::transS(proj.x, proj.y, proj.z);
|
||||
mDoMtx_stack_c::scaleM(32.0f, 32.0f, 32.0f);
|
||||
mDoMtx_copy(mDoMtx_stack_c::get(), field_0x14);
|
||||
mDoMtx_copy(mDoMtx_stack_c::get(), mProjMtx);
|
||||
dComIfGd_set2DXlu(this);
|
||||
}
|
||||
|
||||
@@ -399,19 +417,12 @@ void daPy_sightPacket_c::setSightImage(ResTIMG* i_img) {
|
||||
}
|
||||
|
||||
BOOL daPy_py_c::checkMasterSwordEquip() {
|
||||
u32 equipSword = dComIfGs_getSelectEquipSword();
|
||||
bool isMasterSword = false;
|
||||
|
||||
if (equipSword == fpcNm_ITEM_MASTER_SWORD || equipSword == fpcNm_ITEM_LIGHT_SWORD) {
|
||||
isMasterSword = true;
|
||||
}
|
||||
|
||||
return isMasterSword;
|
||||
u16 equipSword = dComIfGs_getSelectEquipSword();
|
||||
return equipSword == fpcNm_ITEM_MASTER_SWORD || equipSword == fpcNm_ITEM_LIGHT_SWORD;
|
||||
}
|
||||
|
||||
BOOL daPy_py_c::checkWoodShieldEquip() {
|
||||
u16 equipShield = dComIfGs_getSelectEquipShield();
|
||||
|
||||
return equipShield == fpcNm_ITEM_WOOD_SHIELD || equipShield == fpcNm_ITEM_SHIELD;
|
||||
}
|
||||
|
||||
@@ -427,13 +438,12 @@ int daPy_py_c::checkNowWolfEyeUp() {
|
||||
return daAlink_getAlinkActorClass()->checkWolfEyeUp();
|
||||
}
|
||||
|
||||
|
||||
void daAlink_c::startRestartRoomFromOut(int param_0, u32 param_1, int param_2) {
|
||||
startRestartRoom(param_1, param_2, param_0, dComIfGp_event_runCheck());
|
||||
void daAlink_c::startRestartRoomFromOut(int i_dmgAmount, u32 i_mode, int param_2) {
|
||||
startRestartRoom(i_mode, param_2, i_dmgAmount, dComIfGp_event_runCheck());
|
||||
}
|
||||
|
||||
void daPy_py_c::forceRestartRoom(int param_0, u32 param_1, int param_2) {
|
||||
daAlink_getAlinkActorClass()->startRestartRoomFromOut(param_0, param_1, param_2);
|
||||
void daPy_py_c::forceRestartRoom(int i_dmgAmount, u32 i_mode, int param_2) {
|
||||
daAlink_getAlinkActorClass()->startRestartRoomFromOut(i_dmgAmount, i_mode, param_2);
|
||||
}
|
||||
|
||||
BOOL daPy_py_c::setFmChainPos(fopAc_ac_c* param_0, cXyz* param_1, int param_2) {
|
||||
@@ -448,14 +458,13 @@ void daPy_py_c::setLookPos(cXyz* i_pos) {
|
||||
daAlink_getAlinkActorClass()->setLookPosFromOut(i_pos);
|
||||
}
|
||||
|
||||
void daPy_py_c::setPlayerSe(u32 i_sfxID) {
|
||||
daAlink_getAlinkActorClass()->seStartOnlyReverb(i_sfxID);
|
||||
void daPy_py_c::setPlayerSe(u32 i_soundID) {
|
||||
daAlink_getAlinkActorClass()->seStartOnlyReverb(i_soundID);
|
||||
}
|
||||
|
||||
bool daPy_py_c::linkGrabSubjectNoDraw(fopAc_ac_c* i_actor) {
|
||||
return (fopAcM_checkCarryNow(i_actor) &&
|
||||
daPy_getPlayerActorClass()->getGrabActorID() == fopAcM_GetID(i_actor)) &&
|
||||
dComIfGp_checkCameraAttentionStatus(dComIfGp_getPlayerCameraID(0), 2);
|
||||
return (fopAcM_checkCarryNow(i_actor) && daPy_getPlayerActorClass()->getGrabActorID() == fopAcM_GetID(i_actor))
|
||||
&& dComIfGp_checkCameraAttentionStatus(dComIfGp_getPlayerCameraID(0), 2);
|
||||
}
|
||||
|
||||
bool daPy_py_c::wolfGrabSubjectNoDraw(fopAc_ac_c* i_actor) {
|
||||
@@ -463,7 +472,7 @@ bool daPy_py_c::wolfGrabSubjectNoDraw(fopAc_ac_c* i_actor) {
|
||||
}
|
||||
|
||||
bool daPy_py_c::checkRoomRestartStart() {
|
||||
u8 mode = getLastSceneMode();
|
||||
u32 mode = getLastSceneMode();
|
||||
if (mode == 4 || mode == 8 || mode == 5) {
|
||||
return true;
|
||||
}
|
||||
@@ -472,9 +481,10 @@ bool daPy_py_c::checkRoomRestartStart() {
|
||||
}
|
||||
|
||||
u32 daPy_py_c::checkCarryStartLightBallA() {
|
||||
if (checkRoomRestartStart() || !dComIfGp_getStage() ||
|
||||
!dComIfGp_getStage()->getStagInfo() ||
|
||||
dStage_stagInfo_GetSaveTbl(dComIfGp_getStage()->getStagInfo()) != 0x17)
|
||||
if (checkRoomRestartStart()
|
||||
|| !dComIfGp_getStage()
|
||||
|| !dComIfGp_getStage()->getStagInfo()
|
||||
|| dStage_stagInfo_GetSaveTbl(dComIfGp_getStage()->getStagInfo()) != dStage_SaveTbl_LV8)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
@@ -483,9 +493,10 @@ u32 daPy_py_c::checkCarryStartLightBallA() {
|
||||
}
|
||||
|
||||
u32 daPy_py_c::checkCarryStartLightBallB() {
|
||||
if (checkRoomRestartStart() || !dComIfGp_getStage() ||
|
||||
!dComIfGp_getStage()->getStagInfo() ||
|
||||
dStage_stagInfo_GetSaveTbl(dComIfGp_getStage()->getStagInfo()) != 0x17)
|
||||
if (checkRoomRestartStart()
|
||||
|| !dComIfGp_getStage()
|
||||
|| !dComIfGp_getStage()->getStagInfo()
|
||||
|| dStage_stagInfo_GetSaveTbl(dComIfGp_getStage()->getStagInfo()) != dStage_SaveTbl_LV8)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
@@ -516,22 +527,25 @@ bool daPy_py_c::checkBoomerangCharge() {
|
||||
}
|
||||
|
||||
bool daPy_py_c::checkBoomerangChargeTime() {
|
||||
return 0;
|
||||
return daAlink_getAlinkActorClass()->checkBoomerangChargeNow();
|
||||
}
|
||||
|
||||
daBoomerang_c* daPy_py_c::getThrowBoomerangActor() {
|
||||
return static_cast<daBoomerang_c*>(
|
||||
daAlink_getAlinkActorClass()->getThrowBoomerangAcKeep()->getActor());
|
||||
return static_cast<daBoomerang_c*>(daAlink_getAlinkActorClass()->getThrowBoomerangAcKeep()->getActor());
|
||||
}
|
||||
|
||||
void daPy_py_c::cancelBoomerangLockActor(fopAc_ac_c* i_actor) {
|
||||
daAlink_getAlinkActorClass()->cancelBoomerangLock(i_actor);
|
||||
}
|
||||
|
||||
void daPy_py_c::setPlayerDamage(int i_dmgAmount, int i_setDmgTimer) {
|
||||
void daPy_py_c::setPlayerDamage(int i_dmgAmount, BOOL i_setDmgTimer) {
|
||||
daAlink_getAlinkActorClass()->setDamagePoint(i_dmgAmount, FALSE, i_setDmgTimer, 0);
|
||||
}
|
||||
|
||||
BOOL daPy_py_c::checkAcceptDungeonWarp() {
|
||||
return daAlink_getAlinkActorClass()->checkAcceptDungeonWarpAlink(1);
|
||||
}
|
||||
|
||||
void daPy_py_c::setMidnaMotionNum(int i_motionNum) {
|
||||
if (m_midnaActor != NULL) {
|
||||
m_midnaActor->setMotionNum(i_motionNum);
|
||||
@@ -563,5 +577,6 @@ int daPy_addCalcShort(s16* i_value, s16 i_target, s16 i_scale, s16 i_maxStep, s1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return i_target - *i_value;
|
||||
}
|
||||
|
||||
@@ -68,7 +68,7 @@ int daSpinner_c::create() {
|
||||
|
||||
mAcchCir[0].SetWall(50.01f, 58.0f);
|
||||
mAcchCir[1].SetWall(129.99f, 35.0f);
|
||||
mAcchCir[2].SetWall(player->field_0x598, 35.0f);
|
||||
mAcchCir[2].SetWall(player->mHeight, 35.0f);
|
||||
|
||||
mPaPo.init(&mAcch, 85.0f, 85.0f);
|
||||
|
||||
|
||||
@@ -188,7 +188,7 @@ void daTagKagoFall_c::actionWaitFall() {
|
||||
if (dComIfGs_getLife() == 0) {
|
||||
player->onSceneChangeAreaJump(mExitID, -1, NULL);
|
||||
|
||||
if (player->checkNoResetFlg2(daPy_py_c::FLG2_SCN_CHG_START) && !mPlayedSceneChangeSfx)
|
||||
if (player->checkNoResetFlg2(daPy_py_c::FLG2_SCENE_CHANGE_START) && !mPlayedSceneChangeSfx)
|
||||
{
|
||||
Z2GetAudioMgr()->seStart(Z2SE_FORCE_BACK, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
|
||||
player->voiceStart(Z2SE_WL_V_FALL_TO_RESTART);
|
||||
|
||||
@@ -365,7 +365,7 @@ void dFlower_data_c::WorkAt(fopAc_ac_c* i_hitActor, u32 i_massFlg, int i_roomNo,
|
||||
}
|
||||
}
|
||||
|
||||
if ((daPy_getPlayerActorClass()->getCutType() >= 3) && (daPy_getPlayerActorClass()->getCutType() <= 7)) {
|
||||
if ((daPy_getPlayerActorClass()->getCutType() >= daPy_py_c::CUT_TYPE_NM_RIGHT) && (daPy_getPlayerActorClass()->getCutType() <= daPy_py_c::CUT_TYPE_FINISH_VERTICAL)) {
|
||||
if (m_pos.abs(temp_r26->current.pos) > 128.0f) {
|
||||
if (m_pos.abs(temp_r26->current.pos) < 200.0f) {
|
||||
WorkAt_NoCutAnim(i_hitActor, i_massFlg, i_roomNo, i_hitinf, hitobj_p);
|
||||
|
||||
+1
-1
@@ -102,7 +102,7 @@ u16 cc_pl_cut_bit_get() {
|
||||
} else if (player_p->getCutType() == daPy_py_c::CUT_TYPE_FINISH_VERTICAL) {
|
||||
bit = 0x40;
|
||||
} else if (player_p->getCutType() == daPy_py_c::CUT_TYPE_TURN_RIGHT ||
|
||||
player_p->getCutType() == 9 || player_p->getCutType() == daPy_py_c::CUT_TYPE_HORSE_TURN ||
|
||||
player_p->getCutType() == daPy_py_c::CUT_TYPE_UNK_9 || player_p->getCutType() == daPy_py_c::CUT_TYPE_HORSE_TURN ||
|
||||
player_p->getCutType() == daPy_py_c::CUT_TYPE_LARGE_TURN_RIGHT)
|
||||
{
|
||||
bit = 0x80;
|
||||
|
||||
+7
-7
@@ -193,8 +193,8 @@ u16 dDemo_c::m_branchType;
|
||||
const u8* dDemo_c::m_branchData;
|
||||
|
||||
|
||||
int dDemo_actor_c::getDemoIDData(int* param_0, int* param_1, int* param_2, u16* param_3,
|
||||
u8* param_4) {
|
||||
int dDemo_actor_c::getDemoIDData(int* o_arg0, int* o_arg1, int* o_arg2, u16* o_resID,
|
||||
u8* param_4) {
|
||||
JStudio::stb::TParseData_fixed<51, TValueIterator_misaligned<u32> > data(getPrm()->getData());
|
||||
|
||||
static JStudio::stb::TParseData_fixed<51, TValueIterator_misaligned<u32> > dummy;
|
||||
@@ -210,10 +210,10 @@ int dDemo_actor_c::getDemoIDData(int* param_0, int* param_1, int* param_2, u16*
|
||||
}
|
||||
|
||||
u32 var_r31 = *it;
|
||||
*param_0 = var_r31 >> 0x1E;
|
||||
*param_1 = (var_r31 >> 0x18) & 0xF;
|
||||
*param_2 = (var_r31 >> 0x10) & 0xF;
|
||||
*param_3 = var_r31 & 0xFFFF;
|
||||
*o_arg0 = var_r31 >> 0x1E;
|
||||
*o_arg1 = (var_r31 >> 0x18) & 0xF;
|
||||
*o_arg2 = (var_r31 >> 0x10) & 0xF;
|
||||
*o_resID = var_r31 & 0xFFFF;
|
||||
|
||||
if (param_4 != NULL) {
|
||||
*param_4 = (var_r31 >> 0x17) & 1;
|
||||
@@ -224,7 +224,7 @@ int dDemo_actor_c::getDemoIDData(int* param_0, int* param_1, int* param_2, u16*
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
s16 dDemo_c::m_branchNum = 0;
|
||||
u16 dDemo_c::m_branchNum = 0;
|
||||
#endif
|
||||
|
||||
static void* dDemo_getJaiPointer(char const* arcName, u32 anmID, int param_2, u16* param_3) {
|
||||
|
||||
@@ -1144,9 +1144,9 @@ void dMenu_Dmap_c::screenInit() {
|
||||
field_0x88[0] = new CPaneMgr(mpDrawBg->mBaseScreen, 'map000', 3, NULL);
|
||||
field_0x88[1] = new CPaneMgr(mpDrawBg->mBaseScreen, 'con000', 3, NULL);
|
||||
|
||||
if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 0x11) {
|
||||
if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == dStage_SaveTbl_LV2) {
|
||||
field_0x88[2] = new CPaneMgr(mpDrawBg->mBaseScreen, 'i_key_n', 3, NULL);
|
||||
} else if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 0x14) {
|
||||
} else if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == dStage_SaveTbl_LV5) {
|
||||
field_0x88[2] = new CPaneMgr(mpDrawBg->mBaseScreen, 'lv5_k_n', 3, NULL);
|
||||
} else {
|
||||
field_0x88[2] = new CPaneMgr(mpDrawBg->mBaseScreen, 'nor_k_n', 3, NULL);
|
||||
@@ -1156,7 +1156,7 @@ void dMenu_Dmap_c::screenInit() {
|
||||
field_0x88[i]->scale(0.9f, 0.9f);
|
||||
}
|
||||
|
||||
if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 0x11) {
|
||||
if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == dStage_SaveTbl_LV2) {
|
||||
mpDrawBg->mBaseScreen->search('lv5_k_n')->hide();
|
||||
mpDrawBg->mBaseScreen->search('nor_k_n')->hide();
|
||||
|
||||
@@ -1195,7 +1195,7 @@ void dMenu_Dmap_c::screenInit() {
|
||||
((J2DPicture*)mpDrawBg->mBaseScreen->search('c_n_1_s'))->changeTexture(tex, 0);
|
||||
((J2DPicture*)mpDrawBg->mBaseScreen->search('c_n_1'))->changeTexture(tex, 0);
|
||||
}
|
||||
} else if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 0x14) {
|
||||
} else if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == dStage_SaveTbl_LV5) {
|
||||
mpDrawBg->mBaseScreen->search('i_key_n')->hide();
|
||||
mpDrawBg->mBaseScreen->search('nor_k_n')->hide();
|
||||
mpDrawBg->mBaseScreen->search('key_n_n')->hide();
|
||||
|
||||
@@ -1020,7 +1020,7 @@ void dMenu_Fmap_c::portal_warp_map_proc() {
|
||||
}
|
||||
} else if (mPortalNo == 3) {
|
||||
if ((dMeter2Info_getMapStatus() == 3
|
||||
&& dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 2
|
||||
&& dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == dStage_SaveTbl_FARON
|
||||
&& dComIfGs_isOneZoneSwitch(0xf, -1))
|
||||
/* dSv_event_flag_c::M_018 - Main Event - Brought Kakariko bridge back to original location */
|
||||
|| dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[0x33]))
|
||||
|
||||
@@ -360,7 +360,7 @@ void dMenu_ItemExplain_c::open_init() {
|
||||
u8 itemNo = field_0xe1;
|
||||
s32 iVar = -1;
|
||||
if (itemNo == 0x26) {
|
||||
if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 0x11) {
|
||||
if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == dStage_SaveTbl_LV2) {
|
||||
s32 itemsObtained = 0;
|
||||
for (int i = 0; i < 3; i++) {
|
||||
if (checkItemGet(i + fpcNm_ITEM_L2_KEY_PIECES1, 1) != 0) {
|
||||
@@ -377,7 +377,7 @@ void dMenu_ItemExplain_c::open_init() {
|
||||
itemNo = 0xfd;
|
||||
}
|
||||
} else {
|
||||
if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 0x14) {
|
||||
if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == dStage_SaveTbl_LV5) {
|
||||
itemNo = 0xf6;
|
||||
}
|
||||
}
|
||||
@@ -622,7 +622,7 @@ u8 dMenu_ItemExplain_c::openExplainDmap(u8 param_0, u8 param_1, u8 param_2, bool
|
||||
u8 ret = 0;
|
||||
s32 itemsObtained = 0;
|
||||
|
||||
if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 0x11 && param_0 == 0x26) {
|
||||
if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == dStage_SaveTbl_LV2 && param_0 == 0x26) {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
if (checkItemGet(i + fpcNm_ITEM_L2_KEY_PIECES1, 1) != 0) {
|
||||
itemsObtained++;
|
||||
@@ -644,7 +644,7 @@ u8 dMenu_ItemExplain_c::openExplainDmap(u8 param_0, u8 param_1, u8 param_2, bool
|
||||
mStatus = 1;
|
||||
field_0xe1 = param_0;
|
||||
field_0xcc = itemNo + 0x165;
|
||||
if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 0x14 && itemNo == 0x23) {
|
||||
if (dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == dStage_SaveTbl_LV5 && itemNo == 0x23) {
|
||||
field_0xcc = 0x5bf;
|
||||
}
|
||||
if (itemNo == 0x25 && dComIfGs_isDungeonItemWarp(0x16)) {
|
||||
|
||||
Reference in New Issue
Block a user