mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-07-04 03:12:48 -04:00
855ab92930
* d_a_alink_effect work * more d_a_alink_effect work * some d_a_alink data cleanup * d_a_alink_effect mostly done
4479 lines
143 KiB
C++
4479 lines
143 KiB
C++
/**
|
|
* d_a_alink_demo.inc
|
|
* Player Cutscene / Event action handling
|
|
*/
|
|
|
|
#include "d/actor/d_a_alink.h"
|
|
#include "d/d_com_inf_game.h"
|
|
#include "d/d_demo.h"
|
|
#include "d/d_gameover.h"
|
|
#include "f_op/f_op_msg_mng.h"
|
|
#include "f_op/f_op_overlap_mng.h"
|
|
#include "d/actor/d_a_kytag04.h"
|
|
#include "d/actor/d_a_tag_mhint.h"
|
|
#include "d/actor/d_a_tag_mist.h"
|
|
#include "d/actor/d_a_tag_mstop.h"
|
|
#include "d/actor/d_a_tag_mwait.h"
|
|
#include "d/actor/d_a_canoe.h"
|
|
#include "d/actor/d_a_horse.h"
|
|
#include "d/actor/d_a_midna.h"
|
|
#include "d/actor/d_a_e_wb.h"
|
|
#include "d/actor/d_a_npc_zra.h"
|
|
#include "d/actor/d_a_obj_tks.h"
|
|
#include "d/actor/d_a_npc_tkc.h"
|
|
|
|
/* 80115C20-80115C50 110560 0030+00 72/72 0/0 0/0 .text checkEventRun__9daAlink_cCFv */
|
|
BOOL daAlink_c::checkEventRun() const {
|
|
return dComIfGp_event_runCheck() || checkPlayerDemoMode();
|
|
}
|
|
|
|
/* 80115C50-80115D08 110590 00B8+00 2/2 0/0 0/0 .text createNpcTks__9daAlink_cFP4cXyziUl
|
|
*/
|
|
void daAlink_c::createNpcTks(cXyz* i_basePos, int i_roomNo, u32 i_parameters) {
|
|
cXyz pos(i_basePos->x + cM_ssin(shape_angle.y) * 200.0f, i_basePos->y,
|
|
i_basePos->z + cM_scos(shape_angle.y) * 200.0f);
|
|
csXyz angle(0, shape_angle.y + 0x8000, 0);
|
|
fopAcM_create(PROC_NPC_TKS, i_parameters, &pos, i_roomNo, &angle, NULL, -1);
|
|
}
|
|
|
|
|
|
/* 80115D08-80115EC0 110648 01B8+00 1/0 0/0 0/0 .text checkSetNpcTks__9daAlink_cFP4cXyzii
|
|
*/
|
|
bool daAlink_c::checkSetNpcTks(cXyz* i_basePos, int i_roomNo, int param_2) {
|
|
u32 scene_mode = getLastSceneMode();
|
|
|
|
if (param_2 != 0 && checkDungeon() &&
|
|
i_dStage_stagInfo_GetSaveTbl(dComIfGp_getStage()->getStagInfo()) != 0x17 &&
|
|
i_dStage_stagInfo_GetSaveTbl(dComIfGp_getStage()->getStagInfo()) != 0x18 &&
|
|
(checkItemGet(TKS_LETTER, 1) ||
|
|
(checkItemGet(DUNGEON_BACK, 1) && !checkLv7DungeonShop())) &&
|
|
dComIfGs_isDungeonItemWarp())
|
|
{
|
|
if (!dComIfGs_isStageBossEnemy()) {
|
|
cXyz pos;
|
|
csXyz angle;
|
|
|
|
u32 parameters = 5;
|
|
if (checkStageName("D_MN01")) {
|
|
daNpcF_getPlayerInfoFromPlayerList(1, 0, pos, angle);
|
|
i_basePos = &pos;
|
|
if (scene_mode != 0xC) {
|
|
parameters = 8;
|
|
}
|
|
} else if ((checkStageName("D_MN06") != 0 || checkStageName("D_MN05")) &&
|
|
scene_mode != 0xC)
|
|
{
|
|
parameters = 9;
|
|
}
|
|
|
|
createNpcTks(i_basePos, i_roomNo, parameters);
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/* 80115EC0-80116E60 110800 0FA0+00 1/1 0/0 0/0 .text checkDemoAction__9daAlink_cFv */
|
|
int daAlink_c::checkDemoAction() {
|
|
if (dComIfGp_getEvent().isOrderOK()) {
|
|
if (!dComIfGp_event_runCheck()) {
|
|
offNoResetFlg0(FLG0_UNK_200000);
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
u32 demoMode = mDemo.getDemoMode();
|
|
JUT_ASSERT(155,
|
|
(demoMode < daPy_demo_c::DEMO_LAST_e) || (demoMode == daPy_demo_c::DEMO_NEW_ANM0_e));
|
|
|
|
if (demoMode != 6 && demoMode != 8) {
|
|
offNoResetFlg0(FLG0_UNK_400);
|
|
}
|
|
|
|
if (demoMode != 0x33 && mSpecialMode == 1) {
|
|
return procSumouReadyInit();
|
|
}
|
|
|
|
if (mProcID == PROC_WOLF_GIANT_PUZZLE) {
|
|
return 0;
|
|
}
|
|
|
|
if (!checkModeFlg(0x400) && demoMode != daPy_demo_c::DEMO_NEW_ANM0_e && demoMode != 0x46 &&
|
|
demoMode != 0x47 && demoMode != 0x39 && demoMode != 0x3A && demoMode != 9 &&
|
|
demoMode != 0x11 && demoMode != 0x18 && demoMode != 7 && demoMode != 0x13 &&
|
|
demoMode != 4 && demoMode != 0x38 && demoMode != 0x45 && demoMode != 0xA &&
|
|
demoMode != 0x2D && demoMode != 0x23 && demoMode != 0x43 && demoMode != 0x34 &&
|
|
(demoMode != 0xB || !checkModeFlg(0x10040)) &&
|
|
!dComIfGp_checkPlayerStatus0(0, 0x100000) && !checkFlyAtnWait() &&
|
|
((!mLinkAcch.ChkGroundHit() && !checkMagneBootsOn()) || checkModeFlg(0x70C52)))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if (checkSpinnerRide()) {
|
|
current.pos.x = field_0x37a4.x;
|
|
current.pos.z = field_0x37a4.z;
|
|
}
|
|
|
|
if (demoMode != daPy_demo_c::DEMO_NEW_ANM0_e) {
|
|
endHighModel();
|
|
}
|
|
|
|
if (demoMode == daPy_demo_c::DEMO_NEW_ANM0_e) {
|
|
onNoResetFlg0(FLG0_UNK_100000);
|
|
return procCoToolDemoInit();
|
|
}
|
|
|
|
if (m_demoInitTable[demoMode] != NULL) {
|
|
onNoResetFlg0(FLG0_UNK_100000);
|
|
return (this->*m_demoInitTable[demoMode])();
|
|
}
|
|
|
|
if (demoMode == 6 || demoMode == 8) {
|
|
if (mDemo.getParam1() != 1 && !checkNoResetFlg0(FLG0_UNK_400)) {
|
|
seStartSystem(Z2SE_SY_TALK_START);
|
|
onNoResetFlg0(FLG0_UNK_400);
|
|
}
|
|
|
|
if (mProcID == PROC_SPINNER_WAIT) {
|
|
return procFallInit(1, daAlinkHIO_autoJump_c0::m.mFallInterpolation);
|
|
}
|
|
|
|
if (checkModeFlg(0x4000000) || checkModeFlg(0x40000) || checkHorseRide() ||
|
|
checkBoarRide() || checkCanoeRide())
|
|
{
|
|
if (demoMode == 6 && (checkHorseRide() || checkBoarRide())) {
|
|
if (mEquipItem != NO_ITEM && mEquipItem != KANTERA && !checkEquipAnime()) {
|
|
allUnequip(1);
|
|
}
|
|
}
|
|
|
|
if (checkHorseRide()) {
|
|
if (fopAcM_getTalkEventPartner(this) == daPy_py_c::getMidnaActor()) {
|
|
daHorse_c* horse_p = dComIfGp_getHorseActor();
|
|
|
|
if (!horse_p->checkOriginalDemo()) {
|
|
horse_p->changeOriginalDemo();
|
|
horse_p->changeDemoMode(14, 0);
|
|
}
|
|
}
|
|
}
|
|
|
|
field_0x3000 = 0;
|
|
return 1;
|
|
}
|
|
|
|
onNoResetFlg0(FLG0_UNK_100000);
|
|
if (mGrabItemAcKeep.getActor() != NULL) {
|
|
if (fopAcM_getTalkEventPartner(this) != NULL &&
|
|
checkGrabTalkActor(fopAcM_getTalkEventPartner(this)))
|
|
{
|
|
return procGrabWaitInit();
|
|
} else {
|
|
return commonGrabPutInit();
|
|
}
|
|
}
|
|
|
|
return procCoTalkInit();
|
|
} else if (demoMode == 4) {
|
|
int var_r28;
|
|
if (checkWolf()) {
|
|
var_r28 = procWolfWaitInit();
|
|
} else {
|
|
if (mDemo.getParam0() != 0) {
|
|
freeGrabItem();
|
|
|
|
if (mDemo.getParam0() == 1 && i_checkSwordGet()) {
|
|
if (mEquipItem != 0x103) {
|
|
deleteEquipItem(FALSE, TRUE);
|
|
if (checkEquipAnime()) {
|
|
resetUpperAnime(UPPER_2, -1.0f);
|
|
}
|
|
|
|
setSwordModel();
|
|
}
|
|
} else if (mDemo.getParam0() == 2) {
|
|
deleteEquipItem(FALSE, TRUE);
|
|
} else if (mDemo.getParam0() == 4) {
|
|
if (!checkFishingRodItem(mEquipItem)) {
|
|
deleteEquipItem(FALSE, TRUE);
|
|
mEquipItem = FISHING_ROD_1;
|
|
setGroundFishingRodActor();
|
|
}
|
|
} else if (mDemo.getParam0() == 3) {
|
|
if (!checkCanoeRide()) {
|
|
daCanoe_c* canoe_p =
|
|
(daCanoe_c*)fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchCanoe, NULL);
|
|
fpc_ProcID rodID =
|
|
fopAcM_create(PROC_MG_ROD, 0xD, &mLeftHandPos, -1, NULL, NULL, -1);
|
|
canoe_p->onRodID(rodID);
|
|
return procCanoeJumpRideInit(NULL);
|
|
}
|
|
return 1;
|
|
} else if (mDemo.getParam0() == 5) {
|
|
if (!checkBoardRide()) {
|
|
fopAc_ac_c* board_p = (fopAc_ac_c*)fopAcIt_Judge(
|
|
(fopAcIt_JudgeFunc)daAlink_searchIceLeaf, NULL);
|
|
if (board_p != NULL) {
|
|
mGndPolySpecialCode = dBgW_SPCODE_LIGHT_SNOW;
|
|
return procBoardWaitInit(board_p);
|
|
}
|
|
} else {
|
|
return 1;
|
|
}
|
|
} else if (mDemo.getParam0() == 6 && checkHorseRide()) {
|
|
mDemo.setParam0(0);
|
|
return 1;
|
|
}
|
|
|
|
mDemo.setParam0(0);
|
|
}
|
|
|
|
var_r28 = procWaitInit();
|
|
}
|
|
|
|
if (var_r28 != 0) {
|
|
field_0x2060->initOldFrameMorf(0.0f, 0, field_0x30c6);
|
|
}
|
|
return var_r28;
|
|
} else if (demoMode == 9) {
|
|
onNoResetFlg0(FLG0_UNK_100000);
|
|
if (mProcID == PROC_LARGE_DAMAGE_UP || mProcID == PROC_WOLF_LARGE_DAMAGE_UP ||
|
|
mProcID == PROC_LARGE_DAMAGE_WALL)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if (checkModeFlg(0x40000)) {
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
return 0;
|
|
}
|
|
|
|
return procCoLargeDamageInit(-2, 1, 0, 0, NULL, 0);
|
|
} else if (demoMode == 0x24) {
|
|
onNoResetFlg0(FLG0_UNK_100000);
|
|
int prm0 = mDemo.getParam0();
|
|
if (mProcID == PROC_CUT_NORMAL || mProcID == PROC_CUT_FINISH || mProcID == PROC_CUT_TURN) {
|
|
return 0;
|
|
}
|
|
|
|
if (prm0 < 5) {
|
|
return procCutNormalInit(prm0);
|
|
}
|
|
|
|
if (prm0 - 20 >= 0 && prm0 - 20 < 6) {
|
|
return procCutFinishInit(prm0 - 20);
|
|
} else {
|
|
return procCutTurnInit(1, 1);
|
|
}
|
|
} else if (demoMode == 0x52) {
|
|
onNoResetFlg0(FLG0_UNK_100000);
|
|
if (mProcID == PROC_TURN_MOVE || mProcID == PROC_CUT_FINISH_JUMP_UP ||
|
|
mProcID == PROC_CUT_FINISH_JUMP_UP_LAND)
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return procTurnMoveInit(2);
|
|
} else if (demoMode == 0x54) {
|
|
onNoResetFlg0(FLG0_UNK_100000);
|
|
if (mProcID != PROC_CUT_FINISH) {
|
|
onNoResetFlg0(FLG0_UNK_1000000);
|
|
changeCutFast();
|
|
}
|
|
|
|
return 1;
|
|
} else if (demoMode == 0x2B) {
|
|
onNoResetFlg0(FLG0_UNK_100000);
|
|
int prm0 = mDemo.getParam0();
|
|
|
|
if (mProcID == PROC_WOLF_WAIT_ATTACK) {
|
|
return 0;
|
|
}
|
|
|
|
if (prm0 >= 4) {
|
|
return procWolfWaitAttackInit(0);
|
|
} else {
|
|
return procWolfWaitAttackInit(prm0);
|
|
}
|
|
} else if (demoMode == 0x1B) {
|
|
onNoResetFlg0(FLG0_UNK_100000);
|
|
|
|
if (mDemo.getDemoType() == 1) {
|
|
return commonLargeDamageUpInit(-2, 1, 0, 0);
|
|
} else if (mDemo.getParam0() == 1) {
|
|
return commonLargeDamageUpInit(-5, 1, 0, 0);
|
|
} else {
|
|
return commonLargeDamageUpInit(-3, 1, 0, 0);
|
|
}
|
|
} else if (demoMode == 0xF) {
|
|
onNoResetFlg0(FLG0_UNK_100000);
|
|
return procWolfSitInit(1);
|
|
} else if (demoMode == 0x15) {
|
|
onNoResetFlg0(FLG0_UNK_100000);
|
|
return procWolfHowlInit(0);
|
|
} else if (demoMode == 0x16) {
|
|
onNoResetFlg0(FLG0_UNK_100000);
|
|
return procWolfHowlInit(1);
|
|
} else if (demoMode == 0x2D) {
|
|
onNoResetFlg0(FLG0_UNK_100000);
|
|
return procCoWarpInit(mDemo.getParam0(), mDemo.getParam1());
|
|
} else if (demoMode == 0x18) {
|
|
onNoResetFlg0(FLG0_UNK_100000);
|
|
return procAutoJumpInit(1);
|
|
} else if (demoMode == 0x5B) {
|
|
if (mProcID == PROC_CUT_TURN_MOVE || mProcID == PROC_CUT_TURN_CHARGE) {
|
|
return 1;
|
|
}
|
|
|
|
onNoResetFlg0(FLG0_UNK_100000);
|
|
return procCutTurnChargeInit();
|
|
} else if (demoMode == 0x5E) {
|
|
if (mProcID == PROC_WOLF_SERVICE_WAIT) {
|
|
return 0;
|
|
}
|
|
|
|
if (checkModeFlg(0x40000)) {
|
|
return 0;
|
|
}
|
|
|
|
onNoResetFlg0(FLG0_UNK_100000);
|
|
return procWolfServiceWaitInit(0);
|
|
} else if (demoMode == 0x5C) {
|
|
if (mProcID == PROC_CUT_LARGE_JUMP_CHARGE || mProcID == PROC_CUT_TURN_MOVE) {
|
|
return 1;
|
|
}
|
|
|
|
onNoResetFlg0(FLG0_UNK_100000);
|
|
return procCutLargeJumpChargeInit();
|
|
} else if (demoMode == 0x49) {
|
|
onNoResetFlg0(FLG0_UNK_100000);
|
|
return procSideRollInit(mDemo.getParam0() ? 3 : 2);
|
|
} else if (demoMode == 0x10) {
|
|
onNoResetFlg0(FLG0_UNK_100000);
|
|
if (checkWolf()) {
|
|
if (mProcID == PROC_WOLF_BACKJUMP_LAND || mProcID == PROC_WOLF_SIDESTEP_LAND ||
|
|
mProcID == PROC_WOLF_BACKJUMP || mProcID == PROC_WOLF_SIDESTEP)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
field_0x2f98 = mDemo.getParam0();
|
|
if (field_0x2f98 == 1) {
|
|
field_0x2fcc = 1;
|
|
}
|
|
|
|
return procWolfSideStepInit(0);
|
|
}
|
|
|
|
if (mProcID == PROC_BACK_JUMP_LAND || mProcID == PROC_SIDESTEP_LAND ||
|
|
mProcID == PROC_BACK_JUMP || mProcID == PROC_SIDESTEP)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if (mDemo.getParam0() == 0) {
|
|
mDemo.setParam0(1);
|
|
}
|
|
|
|
return procSideStepInit(mDemo.getParam0());
|
|
} else if (demoMode == 0x2C) {
|
|
onNoResetFlg0(FLG0_UNK_100000);
|
|
return procWolfLieMoveInit(0);
|
|
} else if (demoMode == 0x11) {
|
|
onNoResetFlg0(FLG0_UNK_100000);
|
|
return commonFallInit(1);
|
|
} else if (demoMode == 0x2A) {
|
|
onNoResetFlg0(FLG0_UNK_100000);
|
|
return procBottleDrinkInit(mDemo.getParam0());
|
|
} else if (demoMode == 0x1F) {
|
|
onNoResetFlg0(FLG0_UNK_100000);
|
|
if (!checkModeFlg(0x4070C52) &&
|
|
(checkUpperReadyThrowAnime() || field_0x2f8c == 2 || field_0x2f8c == 1 ||
|
|
field_0x2f8c == 3 || field_0x2f8c == 8 || mProcID == PROC_GRAB_WAIT ||
|
|
mProcID == PROC_TALK || field_0x2f8c == 9))
|
|
{
|
|
return procCoLookWaitInit();
|
|
}
|
|
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
return 1;
|
|
} else if (demoMode == 7) {
|
|
offNoResetFlg0(FLG0_UNK_100000);
|
|
if (checkUpperReadyThrowAnime() || checkGrabAnime()) {
|
|
resetUpperAnime(UPPER_2, -1.0f);
|
|
}
|
|
|
|
if (!checkModeFlg(0x400)) {
|
|
initForceRideHorse();
|
|
}
|
|
|
|
return checkNextActionHorse();
|
|
} else if (checkFlyAtnWait()) {
|
|
return procAtnActorWaitInit();
|
|
} else if ((checkNoResetFlg0(FLG0_UNK_100000) || checkUpperReadyThrowAnime() ||
|
|
checkModeFlg(0x400) || mProcID == PROC_SWIM_SUBJECTIVITY ||
|
|
mProcID == PROC_FISHING_CAST || mProcID == PROC_SUBJECTIVITY) &&
|
|
(demoMode == 1 || checkDemoMoveMode(demoMode) || demoMode == 0x17 ||
|
|
demoMode == 0x1F || demoMode == 0x12 ||
|
|
(checkSpinnerRide() &&
|
|
(demoMode == 0x1A || (demoMode == 0xE && mDemo.getParam0() == 0)))))
|
|
{
|
|
offNoResetFlg0(FLG0_UNK_100000);
|
|
if (checkUpperReadyThrowAnime()) {
|
|
resetUpperAnime(UPPER_2, -1.0f);
|
|
}
|
|
|
|
if (checkReinRide()) {
|
|
if (mDemo.getDemoMode() == 0x17 && !checkEquipAnime() && mEquipItem != 0x103 &&
|
|
(mDemo.getParam1() == 2 || mDemo.getParam1() == 3))
|
|
{
|
|
swordEquip(0);
|
|
}
|
|
|
|
if (checkHorseGetOffMode() || checkHorseRideOn()) {
|
|
fopAc_ac_c* rideAc_p = mRideAcKeep.getActor();
|
|
if (rideAc_p == NULL) {
|
|
return commonCheckNextAction(0);
|
|
}
|
|
|
|
commonInitForceRideRein();
|
|
|
|
if (rideAc_p == dComIfGp_getHorseActor()) {
|
|
static_cast<daHorse_c*>(rideAc_p)->onRideFlg();
|
|
mZ2Link.setRiding(true);
|
|
} else {
|
|
static_cast<e_wb_class*>(rideAc_p)->setPlayerRide();
|
|
}
|
|
}
|
|
|
|
return checkNextActionHorse();
|
|
} else if (checkCanoeRide()) {
|
|
return checkNextActionCanoe();
|
|
} else if (checkBoardRide()) {
|
|
return checkNextActionBoard();
|
|
} else if (checkSpinnerRide()) {
|
|
return procFallInit(1, daAlinkHIO_autoJump_c0::m.mFallInterpolation);
|
|
}
|
|
|
|
return commonCheckNextAction(0);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
/* 80116E60-80116E9C 1117A0 003C+00 4/4 0/0 0/0 .text checkDemoMoveMode__9daAlink_cCFUl
|
|
*/
|
|
bool daAlink_c::checkDemoMoveMode(u32 i_mode) const {
|
|
return i_mode == 2 || i_mode == 3 || i_mode == 0x26;
|
|
}
|
|
|
|
/* 80116E9C-80117064 1117DC 01C8+00 1/1 0/0 0/0 .text setDemoMoveData__9daAlink_cFPUlPC4cXyz */
|
|
void daAlink_c::setDemoMoveData(u32* param_0, cXyz const* param_1) {
|
|
cXyz sp20;
|
|
sp20 = *param_1 - current.pos;
|
|
|
|
f32 temp_f30;
|
|
f32 temp_f29;
|
|
f32 temp_f28;
|
|
f32 var_f27;
|
|
if (checkWolf()) {
|
|
var_f27 = daAlinkHIO_wlMoveNoP_c0::m.field_0x8 / daAlinkHIO_move_c0::m.mMaxSpeed;
|
|
var_f27 *= var_f27;
|
|
} else {
|
|
var_f27 = 1.0f;
|
|
}
|
|
|
|
temp_f30 = var_f27 * 100.0f;
|
|
temp_f29 = var_f27 * 400.0f;
|
|
temp_f28 = var_f27 * 2500.0f;
|
|
|
|
f32 dist_to_pos = sp20.abs2XZ();
|
|
if (dist_to_pos < var_f27 * 25.0f) {
|
|
*param_0 = 1;
|
|
|
|
if (!checkModeFlg(0x2)) {
|
|
mNormalSpeed = 0.0f;
|
|
}
|
|
} else if (dist_to_pos < temp_f30 || (dist_to_pos < temp_f28 && checkZeroSpeedF())) {
|
|
*param_0 = 1;
|
|
} else if ((*param_0 == 2 && dist_to_pos < temp_f29) || dist_to_pos < temp_f28) {
|
|
*param_0 = 2;
|
|
mDemo.setStick(0.35f);
|
|
} else if (mDemo.getDemoType() == 3) {
|
|
mDemo.setStick(1.0f);
|
|
}
|
|
|
|
mDemo.setMoveAngle(sp20.atan2sX_Z());
|
|
}
|
|
|
|
/* 80117064-801171F4 1119A4 0190+00 1/1 0/0 0/0 .text setNoDrawSwordShield__9daAlink_cFiUs */
|
|
void daAlink_c::setNoDrawSwordShield(int param_0, u16 param_1) {
|
|
if (param_0 == 5) {
|
|
if (param_1 == 2) {
|
|
offNoResetFlg2(FLG2_UNK_2000000);
|
|
onNoResetFlg3(FLG3_UNK_80000000);
|
|
} else if (param_1 == 1) {
|
|
onNoResetFlg2(FLG2_UNK_2000000);
|
|
offNoResetFlg3(FLG3_UNK_80000000);
|
|
} else {
|
|
offNoResetFlg2(FLG2_UNK_2000000);
|
|
offNoResetFlg3(FLG3_UNK_80000000);
|
|
}
|
|
} else if (param_0 == 6) {
|
|
if (param_1 != 0) {
|
|
onNoResetFlg2(FLG2_UNK_4000000);
|
|
} else {
|
|
offNoResetFlg2(FLG2_UNK_4000000);
|
|
}
|
|
} else if (param_0 == 3) {
|
|
if (param_1 == 1) {
|
|
onEndResetFlg0(ERFLG0_UNK_800000);
|
|
} else if (param_1 == 2) {
|
|
onEndResetFlg1(ERFLG1_UNK_80000);
|
|
} else if (param_1 == 3) {
|
|
onEndResetFlg1(ERFLG1_UNK_400000);
|
|
}
|
|
} else {
|
|
if (param_0 == 7) {
|
|
if (param_1 == 1) {
|
|
onNoResetFlg0(FLG0_PLAYER_NO_DRAW);
|
|
} else {
|
|
offNoResetFlg0(FLG0_PLAYER_NO_DRAW);
|
|
}
|
|
} else if (param_0 == 8) {
|
|
if (param_1 == 1) {
|
|
onNoResetFlg3(FLG3_UNK_1000000);
|
|
} else {
|
|
offNoResetFlg3(FLG3_UNK_1000000);
|
|
|
|
}
|
|
} else if (param_0 == 9) {
|
|
if (param_1 == 1) {
|
|
onNoResetFlg2(FLG2_PLAYER_SHADOW);
|
|
} else {
|
|
offNoResetFlg2(FLG2_PLAYER_SHADOW);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801171F4-80117B90 111B34 099C+00 1/1 0/0 0/0 .text setDemoData__9daAlink_cFv */
|
|
void daAlink_c::setDemoData() {
|
|
if (dComIfGp_getEvent().isOrderOK()) {
|
|
if (checkPlayerDemoMode() && mClothesChangeWaitTimer == 0) {
|
|
endDemoMode();
|
|
}
|
|
|
|
if (mMidnaTalkDelayTimer != 0) {
|
|
mMidnaTalkDelayTimer--;
|
|
}
|
|
} else {
|
|
dDemo_actor_c* demo_actor_p = dDemo_c::getActor(demoActorID);
|
|
cXyz* pos_p = NULL;
|
|
s16 angle;
|
|
u32 demo_mode = 1;
|
|
int* prm0_p = NULL;
|
|
int* prm1_p = NULL;
|
|
|
|
dComIfGp_clearPlayerStatus0(0, 0x600000);
|
|
offNoResetFlg3(FLG3_COPY_ROD_THROW_AFTER);
|
|
field_0x30d0 = 0;
|
|
|
|
if (mProcID == PROC_SUBJECTIVITY) {
|
|
if (checkWolf()) {
|
|
procWolfWaitInit();
|
|
} else {
|
|
procWaitInit();
|
|
}
|
|
} else if (mProcID == PROC_SWIM_SUBJECTIVITY) {
|
|
if (checkWolf()) {
|
|
procWolfSwimWaitInit(0);
|
|
} else {
|
|
procSwimWaitInit(0);
|
|
}
|
|
}
|
|
|
|
if (mDemo.getDemoType() == 4 && !dComIfGp_evmng_checkStartDemo()) {
|
|
mDemo.setSystemDemoType();
|
|
}
|
|
|
|
if (demo_actor_p != NULL) {
|
|
demo_actor_p->setModel(mpLinkModel);
|
|
field_0x3184 = -1;
|
|
|
|
if (mDemo.getDemoType() != 1) {
|
|
mDemo.setToolDemoType();
|
|
mDemo.setDemoMode(1);
|
|
freeGrabItem();
|
|
|
|
if (dComIfGp_evmng_startCheck("R22-opening")) {
|
|
if (mEquipItem == IRONBALL) {
|
|
deleteEquipItem(FALSE, FALSE);
|
|
}
|
|
} else {
|
|
deleteEquipItem(FALSE, TRUE);
|
|
}
|
|
|
|
if (checkIronBallWaitAnime()) {
|
|
resetUpperAnime(UPPER_2, -1.0f);
|
|
}
|
|
|
|
if (checkWolf()) {
|
|
procWolfWaitInit();
|
|
} else {
|
|
procWaitInit();
|
|
}
|
|
}
|
|
|
|
if (demo_actor_p->checkEnable(0x20)) {
|
|
demo_mode = demo_actor_p->getAnmId();
|
|
} else {
|
|
demo_mode = mDemo.getDemoMode();
|
|
}
|
|
|
|
if (demo_actor_p->checkEnable(0x2)) {
|
|
pos_p = &demo_actor_p->getTrans();
|
|
} else {
|
|
pos_p = ¤t.pos;
|
|
}
|
|
|
|
if (demo_actor_p->checkEnable(0x8)) {
|
|
angle = demo_actor_p->getRatate().y;
|
|
} else {
|
|
angle = shape_angle.y;
|
|
}
|
|
|
|
int sp14;
|
|
int sp10;
|
|
int spC;
|
|
u16 sp8;
|
|
while (demo_actor_p->getDemoIDData(&sp14, &sp10, &spC, &sp8, NULL) != 0) {
|
|
if (sp14 == 0 && sp10 == 0) {
|
|
setNoDrawSwordShield(spC, sp8);
|
|
}
|
|
}
|
|
} else {
|
|
BOOL var_r28 = FALSE;
|
|
if (checkPlayerDemoMode() == 0) {
|
|
mDemo.setSystemDemoType();
|
|
var_r28 = TRUE;
|
|
|
|
if (mDemo.getDemoMode() == 0) {
|
|
demo_mode = 0x41;
|
|
}
|
|
}
|
|
|
|
if (field_0x3184 != -1) {
|
|
if (mProcID == PROC_DUNGEON_WARP_READY) {
|
|
mDemo.setSystemDemoType();
|
|
}
|
|
|
|
char* cut_name = dComIfGp_getPEvtManager()->getMyNowCutName(field_0x3184);
|
|
if (cut_name != NULL) {
|
|
// Take the first 3 chars in cut_name, convert them to integers, and calculate
|
|
// demo_mode
|
|
demo_mode = ((cut_name[0] - '0') * 100) + ((cut_name[1] - '0') * 10) +
|
|
(cut_name[2] - '0');
|
|
if (mDemo.getDemoType() != 4 && (demo_mode == 1 || demo_mode == 0x17) &&
|
|
mLinkAcch.ChkGroundHit() && !checkModeFlg(0x70C52))
|
|
{
|
|
mNormalSpeed = 0.0f;
|
|
speedF = 0.0f;
|
|
}
|
|
|
|
if (demo_mode == 0x32 && !daMidna_c::checkMidnaRealBody()) {
|
|
demo_mode = 1;
|
|
}
|
|
|
|
pos_p = dComIfGp_evmng_getMyXyzP(field_0x3184, "pos");
|
|
if (pos_p == NULL) {
|
|
pos_p = dComIfGp_evmng_getGoal();
|
|
}
|
|
|
|
int* angle_p = dComIfGp_evmng_getMyIntegerP(field_0x3184, "angle");
|
|
if (angle_p != NULL) {
|
|
angle = *angle_p;
|
|
} else if (demo_mode == 5) {
|
|
angle = mDemo.getMoveAngle();
|
|
} else {
|
|
angle = shape_angle.y;
|
|
}
|
|
|
|
prm0_p = dComIfGp_evmng_getMyIntegerP(field_0x3184, "prm0");
|
|
prm1_p = dComIfGp_evmng_getMyIntegerP(field_0x3184, "prm1");
|
|
|
|
if (mDemo.getDemoType() == 2) {
|
|
f32* stick_p = dComIfGp_evmng_getMyFloatP(field_0x3184, "stick");
|
|
|
|
if (stick_p != NULL) {
|
|
mDemo.setStick(*stick_p);
|
|
} else {
|
|
mDemo.setStick(1.0f);
|
|
}
|
|
}
|
|
|
|
if ((demo_mode == 2 || demo_mode == 3) && prm1_p != NULL && *prm1_p == 1) {
|
|
cXyz goal_pos;
|
|
mDoMtx_stack_c::transS(current.pos);
|
|
mDoMtx_stack_c::YrotM(shape_angle.y);
|
|
mDoMtx_stack_c::multVec(pos_p, &goal_pos);
|
|
dComIfGp_evmng_setGoal(&goal_pos);
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
}
|
|
}
|
|
}
|
|
|
|
if ((mEquipItem == IRONBALL || checkFishingRodItem(mEquipItem)) && demo_mode != 1 &&
|
|
demo_mode != 0x1F && (field_0x3184 != -1 || mDemo.getDemoType() == 3) &&
|
|
(demo_mode != 6 || (var_r28 == 0 && !checkEquipAnime())))
|
|
{
|
|
deleteEquipItem(FALSE, TRUE);
|
|
if (checkIronBallWaitAnime()) {
|
|
resetUpperAnime(UPPER_2, 3.0f);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (mDemo.getDemoType() == 4) {
|
|
if (mDemo.getDemoMode() == 0xE) {
|
|
if (mDemo.getTimer() != 0) {
|
|
mDemo.decTimer();
|
|
|
|
cXyz tmp_sp = current.pos - home.pos;
|
|
if (tmp_sp.abs2XZ() > 90000.0f) {
|
|
mDemo.setTimer(0);
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
}
|
|
} else {
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
}
|
|
}
|
|
} else {
|
|
if (mDemo.getDemoType() == 1 || (mDemo.getDemoType() == 2 && field_0x3184 != -1)) {
|
|
if (prm0_p != NULL) {
|
|
mDemo.setParam0(*prm0_p);
|
|
} else {
|
|
mDemo.setParam0(0);
|
|
}
|
|
|
|
if (prm1_p != NULL) {
|
|
mDemo.setParam1(*prm1_p);
|
|
} else {
|
|
mDemo.setParam1(0);
|
|
}
|
|
|
|
if (demo_mode == 4) {
|
|
mNormalSpeed = 0.0f;
|
|
speedF = 0.0f;
|
|
field_0x814.ClrCcMove();
|
|
setPlayerPosAndAngle(pos_p, angle, 0);
|
|
mDemo.setMoveAngle(angle);
|
|
} else if (checkDemoMoveMode(demo_mode)) {
|
|
setDemoMoveData(&demo_mode, pos_p);
|
|
} else if (demo_mode == 5) {
|
|
mDemo.setMoveAngle(angle);
|
|
}
|
|
|
|
mDemo.setDemoMode(demo_mode);
|
|
} else if (mDemo.getDemoType() == 3) {
|
|
demo_mode = mDemo.getDemoMode();
|
|
|
|
if (checkDemoMoveMode(demo_mode)) {
|
|
setDemoMoveData(&demo_mode, mDemo.getPos0());
|
|
mDemo.setDemoMode(demo_mode);
|
|
} else if (demo_mode == 0x41) {
|
|
mDemo.setDemoMode(1);
|
|
}
|
|
} else {
|
|
mDemo.setDemoMode(demo_mode);
|
|
}
|
|
|
|
if (checkModeFlg(0x80000) || mDemo.getDemoMode() == 6 || mDemo.getDemoMode() == 8) {
|
|
dComIfGp_setPlayerStatus0(0, 0x10);
|
|
mMidnaTalkDelayTimer = 30;
|
|
} else {
|
|
dComIfGp_clearPlayerStatus0(0, 0x10);
|
|
}
|
|
|
|
if (field_0x3184 != -1 &&
|
|
(demo_mode == 1 || demo_mode == 4 || demo_mode == 0x17 || demo_mode == 0xE ||
|
|
demo_mode == 0x11 || demo_mode == 0x18 || demo_mode == 7 || demo_mode == 0xF ||
|
|
demo_mode == 0x15 || demo_mode == 0x16 || demo_mode == 6 || demo_mode == 8 ||
|
|
demo_mode == 0x29 || demo_mode == 0x12))
|
|
{
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
}
|
|
|
|
s16 prm2 = mDemo.getParam2();
|
|
if (prm2 != 0) {
|
|
if (!checkWolf()) {
|
|
if (prm2 == 1) {
|
|
setFacePriTexture(FTANM_UNK_0);
|
|
setFacePriBck(0x15A);
|
|
} else if (prm2 == 2) {
|
|
setFacePriBtp(0x3E1);
|
|
field_0x2154->setFrame(field_0x2154->getFrameMax());
|
|
|
|
setFacePriBtk(0x37B);
|
|
mpFaceBtk->setFrame(mpFaceBtk->getFrameMax());
|
|
|
|
setFacePriBck(0x149);
|
|
}
|
|
|
|
offNoResetFlg1(FLG1_UNK_2000);
|
|
onNoResetFlg1(FLG1_UNK_200);
|
|
}
|
|
} else if (checkNoResetFlg1(FLG1_UNK_200)) {
|
|
offNoResetFlg1(FLG1_UNK_200);
|
|
resetFacePriAnime();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/* 80117B90-80117C34 1124D0 00A4+00 1/1 0/0 0/0 .text resetDemoBck__9daAlink_cFv */
|
|
void daAlink_c::resetDemoBck() {
|
|
mFaceBckHeap.resetArcNo();
|
|
mFaceBtpHeap.resetArcNo();
|
|
mFaceBtkHeap.resetArcNo();
|
|
mUnderAnmHeap[0].resetArcNo();
|
|
mUnderAnmHeap[0].resetIdx();
|
|
mFaceBckHeap.resetIdx();
|
|
mFaceBtpHeap.resetIdx();
|
|
mFaceBtkHeap.resetIdx();
|
|
|
|
if (checkWolf()) {
|
|
setSingleAnimeWolfBaseSpeed(WANM_WAIT, daAlinkHIO_wlMoveNoP_c0::m.field_0x14,
|
|
daAlinkHIO_wlMove_c0::m.field_0x94);
|
|
setFaceBasicAnime(ANM_WAIT);
|
|
} else {
|
|
setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed,
|
|
daAlinkHIO_basic_c0::m.mAnmBlendFactor);
|
|
}
|
|
}
|
|
|
|
/* 80117C34-80117C90 112574 005C+00 3/3 0/0 0/0 .text endHighModel__9daAlink_cFv */
|
|
void daAlink_c::endHighModel() {
|
|
if (field_0x068c != NULL) {
|
|
mpDemoFCTongueModel->getModelData()->removeTexMtxAnimator(field_0x068c);
|
|
}
|
|
|
|
offNoResetFlg1(FLG1_UNK_10);
|
|
field_0x0698 = NULL;
|
|
field_0x068c = NULL;
|
|
}
|
|
|
|
/* 80117C90-80117CF8 1125D0 0068+00 21/21 0/0 0/0 .text resetSpecialEvent__9daAlink_cFv
|
|
*/
|
|
void daAlink_c::resetSpecialEvent() {
|
|
dComIfGp_event_reset();
|
|
dCam_getBody()->EndEventCamera(fopAcM_GetID(this));
|
|
endDemoMode();
|
|
}
|
|
|
|
/* 80117CF8-801180EC 112638 03F4+00 4/4 0/0 0/0 .text endDemoMode__9daAlink_cFv */
|
|
void daAlink_c::endDemoMode() {
|
|
BOOL temp_r30 = checkFlyAtnWait();
|
|
endHighModel();
|
|
offNoResetFlg0(FLG0_UNK_10400);
|
|
field_0x06f4 = NULL;
|
|
|
|
if (field_0x06f8 != NULL) {
|
|
if (mpDemoHLTmpModel != NULL) {
|
|
mpDemoHLTmpModel->getModelData()->removeTevRegAnimator(field_0x06f8);
|
|
}
|
|
field_0x06f8 = NULL;
|
|
}
|
|
|
|
if (mpDemoHDTmpBck != NULL && mpLinkHatModel != NULL && mClothesChangeWaitTimer == 0) {
|
|
mpDemoHDTmpBck->remove(mpLinkHatModel->getModelData());
|
|
}
|
|
|
|
offNoResetFlg0(FLG0_UNK_100000);
|
|
dComIfGp_clearPlayerStatus0(0, 0x10);
|
|
|
|
BOOL temp_r29 = mDemo.getDemoType() == 4;
|
|
BOOL var_r0 = mDemo.getDemoMode() == 0xE || mDemo.getDemoMode() == 0x1A;
|
|
|
|
mDemo.resetDemoType();
|
|
mDemo.setDemoMode(0);
|
|
mDemo.setParam0(0);
|
|
mDemo.setParam1(0);
|
|
|
|
if (checkNoResetFlg1(FLG1_UNK_200)) {
|
|
offNoResetFlg1(FLG1_UNK_200);
|
|
resetFacePriAnime();
|
|
}
|
|
|
|
mDemo.setParam2(0);
|
|
mDemo.setStick(1.0f);
|
|
field_0x3184 = -1;
|
|
|
|
if (checkReinRide()) {
|
|
field_0x2fab &= ~0x8;
|
|
if (mProcID != PROC_HORSE_COMEBACK) {
|
|
procHorseWaitInit();
|
|
}
|
|
} else if (!checkSpinnerRide() && mProcID != PROC_FISHING_CAST) {
|
|
if (temp_r30) {
|
|
if (checkSwimAction(1)) {
|
|
if (checkWolf()) {
|
|
procWolfSwimMoveInit();
|
|
} else {
|
|
procSwimMoveInit();
|
|
}
|
|
} else {
|
|
checkWaitAction();
|
|
}
|
|
} else if ((mLinkAcch.ChkGroundHit() && (!checkUpperReadyThrowAnime() || var_r0 == 0) &&
|
|
!checkModeFlg(0x4070C52) && mProcID != PROC_LARGE_DAMAGE_UP &&
|
|
mProcID != PROC_WOLF_LARGE_DAMAGE_UP) ||
|
|
checkMagneBootsOn())
|
|
{
|
|
if (temp_r29 && (mProcID == PROC_MOVE || mProcID == PROC_WOLF_MOVE)) {
|
|
field_0x33a8 = mDoCPd_c::getStickValue(PAD_1);
|
|
mStickAngle = mDoCPd_c::getStickAngle(PAD_1) + 0x8000;
|
|
field_0x2fe2 =
|
|
mStickAngle + dCam_getControledAngleY(dComIfGp_getCamera(field_0x317c));
|
|
mNormalSpeed = speedF;
|
|
commonCheckNextAction(0);
|
|
} else if (mProcID == PROC_HAWK_CATCH || mProcID == PROC_HAWK_SUBJECT) {
|
|
procHawkSubjectInit();
|
|
} else if (mProcID == PROC_GRASS_WHISTLE_WAIT || (mDemo.getDemoMode() != 0x2D && mProcID == PROC_WARP)) {
|
|
return;
|
|
} else if (mProcID == PROC_TALK && dComIfGp_checkPlayerStatus0(0, 0x8000000)) {
|
|
procWolfLieMoveInit(0);
|
|
} else {
|
|
checkWaitAction();
|
|
}
|
|
} else if (mProcID == PROC_CAUGHT) {
|
|
if (checkModeFlg(0x40000)) {
|
|
if (checkWolf()) {
|
|
procWolfSwimWaitInit(0);
|
|
} else {
|
|
procSwimWaitInit(0);
|
|
}
|
|
} else {
|
|
checkWaitAction();
|
|
}
|
|
} else if (mProcID == PROC_MONKEY_MOVE) {
|
|
procFallInit(1, daAlinkHIO_autoJump_c0::m.mFallInterpolation);
|
|
} else if (checkCanoeRide()) {
|
|
procCanoeWaitInit(0);
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801180EC-80118170 112A2C 0084+00 2/2 0/0 0/0 .text getDemoLookActor__9daAlink_cFv */
|
|
// NONMATCHING - weird gameinfo load
|
|
fopAc_ac_c* daAlink_c::getDemoLookActor() {
|
|
if (mDemo.getParam0() == 1) {
|
|
return dComIfGp_event_getPt1();
|
|
} else if (mDemo.getParam0() == 2) {
|
|
return dComIfGp_event_getPt2();
|
|
} else if (mDemo.getParam0() == 3) {
|
|
return fopAcM_getTalkEventPartner(this);
|
|
} else if (mDemo.getParam0() == 4) {
|
|
return getMidnaActor();
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
/* 80118170-801181A0 112AB0 0030+00 4/4 0/0 0/0 .text checkFlyAtnWait__9daAlink_cFv */
|
|
BOOL daAlink_c::checkFlyAtnWait() {
|
|
return mDemo.getDemoMode() == 0x17 && (mDemo.getParam1() == 4 || mDemo.getParam1() == 5);
|
|
}
|
|
|
|
/* 801181A0-801182D4 112AE0 0134+00 2/2 0/0 0/0 .text setGetItemFace__9daAlink_cFUs */
|
|
void daAlink_c::setGetItemFace(u16 param_0) {
|
|
if (param_0 == 7 || param_0 == 6 || param_0 == 0x21 || param_0 == 0x22 || param_0 == 0x31 ||
|
|
param_0 == 0x36 || (param_0 >= 0x40 && param_0 <= 0x47) || param_0 == 0x4A ||
|
|
param_0 == 0x56 || param_0 == 0xED || param_0 == 0x73 || param_0 == 0x75 ||
|
|
param_0 == 0xEB || param_0 == 0xA1 || param_0 == 0xA2 || param_0 == 0xA3)
|
|
{
|
|
setFaceBasicBck(0x143);
|
|
} else if (param_0 == 0x25 || param_0 == 0xEC) {
|
|
setFaceBasicTexture(FTANM_UNK_7C);
|
|
setFaceBasicBck(0x149);
|
|
} else if (param_0 == 0xF4 || param_0 == 0xF5) {
|
|
setFaceBasicBck(0x146);
|
|
}
|
|
}
|
|
|
|
/* 801182D4-80118308 112C14 0034+00 2/2 0/0 0/0 .text checkGrabTalkActor__9daAlink_cFP10fopAc_ac_c
|
|
*/
|
|
BOOL daAlink_c::checkGrabTalkActor(fopAc_ac_c* i_actor) {
|
|
s16 name = fopAcM_GetName(i_actor);
|
|
return name == PROC_NPC_KYURY || name == PROC_MYNA || name == PROC_OBJ_SSITEM ||
|
|
name == PROC_TAG_MSG;
|
|
}
|
|
|
|
/* 80118308-8011856C 112C48 0264+00 2/2 0/0 0/0 .text setTalkStartBack__9daAlink_cFP4cXyz
|
|
*/
|
|
int daAlink_c::setTalkStartBack(cXyz* param_0) {
|
|
fopAc_ac_c* partner_p = fopAcM_getTalkEventPartner(this);
|
|
if (partner_p != NULL) {
|
|
s16 partner_name = fopAcM_GetName(partner_p);
|
|
if (partner_name == PROC_MIDNA || partner_name == PROC_Tag_Wljump ||
|
|
partner_name == PROC_Tag_Mhint || partner_name == PROC_Tag_Mstop ||
|
|
partner_name == PROC_Tag_Mwait)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
cXyz sp24 = current.pos - partner_p->current.pos;
|
|
f32 var_f1 = sp24.absXZ();
|
|
if (var_f1 < 100.0f && var_f1 > 1.0f) {
|
|
f32 temp_f2_2 = 100.0f / var_f1;
|
|
param_0->x = partner_p->current.pos.x + temp_f2_2 * sp24.x;
|
|
param_0->y = current.pos.y + l_autoUpHeight;
|
|
param_0->z = partner_p->current.pos.z + temp_f2_2 * sp24.z;
|
|
mLinkGndChk.SetPos(param_0);
|
|
|
|
if (dComIfG_Bgsp().GroundCross(&mLinkGndChk) - current.pos.y >= l_autoDownHeight) {
|
|
current.angle.y = sp24.atan2sX_Z();
|
|
mNormalSpeed = 5.0f;
|
|
setSingleAnimeBaseSpeed(ANM_WALK, -daAlinkHIO_move_c0::m.mWalkAnmSpeed, 3.0f);
|
|
return 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
/* 8011856C-80118654 112EAC 00E8+00 4/4 0/0 0/0 .text setShapeAngleToTalkActor__9daAlink_cFv */
|
|
void daAlink_c::setShapeAngleToTalkActor() {
|
|
fopAc_ac_c* partner_p = fopAcM_getTalkEventPartner(this);
|
|
if (partner_p != NULL) {
|
|
s16 partner_name = fopAcM_GetName(partner_p);
|
|
|
|
if (partner_name != PROC_MYNA &&
|
|
(partner_name != PROC_Tag_Mwait ||
|
|
!static_cast<daTagMwait_c*>(partner_p)->checkEndMessage()) &&
|
|
(partner_name != PROC_Tag_Mhint ||
|
|
!static_cast<daTagMhint_c*>(partner_p)->checkNoAttention()) &&
|
|
(partner_name != PROC_Tag_Mstop ||
|
|
!static_cast<daTagMstop_c*>(partner_p)->checkNoAttention()) &&
|
|
partner_name != PROC_MIDNA)
|
|
{
|
|
s16 target;
|
|
if (partner_name == PROC_Tag_Mhint || partner_name == PROC_Tag_Mstop) {
|
|
target = cLib_targetAngleY(¤t.pos, &partner_p->eyePos);
|
|
} else {
|
|
target = fopAcM_searchActorAngleY(this, partner_p);
|
|
}
|
|
|
|
cLib_addCalcAngleS(&shape_angle.y, target, 4, 0x1000, 0x200);
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 80118654-801186D4 112F94 0080+00 2/2 0/0 0/0 .text setTalkAnime__9daAlink_cFv */
|
|
void daAlink_c::setTalkAnime() {
|
|
if (mDemo.getDemoMode() == 8 || mEquipItem == KANTERA ||
|
|
(checkNoResetFlg2(FLG2_UNK_1) && field_0x2fde == 0x48))
|
|
{
|
|
setDoubleAnime(0.0f, daAlinkHIO_move_c0::m.mWaitAnmSpeed,
|
|
daAlinkHIO_move_c0::m.mWaitAnmSpeed, ANM_WAIT, ANM_WAIT, 2, 3.0f);
|
|
} else {
|
|
setSingleAnimeBase(ANM_TALK);
|
|
}
|
|
}
|
|
|
|
/* 801186D4-80118778 113014 00A4+00 2/2 0/0 0/0 .text setTradeItemAnime__9daAlink_cFv */
|
|
u8 daAlink_c::setTradeItemAnime() {
|
|
setSingleAnimeBase(ANM_TRADE_ITEM_PULL_OUT);
|
|
offModeFlg(0x100);
|
|
|
|
if (mDemo.getParam0() != 1) {
|
|
int item_no;
|
|
if (mDemo.getParam0() == 2) {
|
|
item_no = mDemo.getParam1();
|
|
} else {
|
|
item_no = dComIfGp_event_getPreItemNo();
|
|
}
|
|
|
|
u32 partner_id = fopAcM_createItemForPresentDemo(
|
|
¤t.pos, item_no, 3, -1, fopAcM_GetRoomNo(this), &shape_angle, &scale);
|
|
dComIfGp_event_setItemPartnerId(partner_id);
|
|
}
|
|
|
|
keepItemData();
|
|
return 1;
|
|
}
|
|
|
|
/* 80118778-801187B4 1130B8 003C+00 3/3 0/0 0/0 .text setTradeItemOutHand__9daAlink_cFv
|
|
*/
|
|
void daAlink_c::setTradeItemOutHand() {
|
|
daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
|
|
|
|
if (frame_ctrl->getFrame() >= 59.0f) {
|
|
field_0x2f92 = 4;
|
|
} else if (frame_ctrl->getFrame() >= 20.0f) {
|
|
field_0x2f92 = 0;
|
|
}
|
|
}
|
|
|
|
/* 801187B4-80118840 1130F4 008C+00 5/5 0/0 0/0 .text checkEndMessage__9daAlink_cFUl */
|
|
BOOL daAlink_c::checkEndMessage(u32 param_0) {
|
|
if (mMsgClassID == -1) {
|
|
mMsgClassID = fopMsgM_messageSet(param_0, 1000);
|
|
} else {
|
|
msg_class* msg = fopMsgM_SearchByID(mMsgClassID);
|
|
|
|
if (msg != NULL) {
|
|
if (msg->mMode == 14) {
|
|
msg->mMode = 16;
|
|
} else if (msg->mMode == 0x12) {
|
|
msg->mMode = 0x13;
|
|
return 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
/* 80118840-801188B0 113180 0070+00 1/1 0/0 0/0 .text setDemoRightHandIndex__9daAlink_cFUs */
|
|
u8 daAlink_c::setDemoRightHandIndex(u16 param_0) {
|
|
if (param_0 == 0xFD) {
|
|
mProcVar4.field_0x3010 = 1;
|
|
return 6;
|
|
} else if (param_0 == 0xFC) {
|
|
field_0x2fab |= 0x10;
|
|
return 5;
|
|
} else if (param_0 == 0xFB) {
|
|
if (mpDemoHRTmpModel != NULL) {
|
|
return 0xFB;
|
|
} else {
|
|
return 0xFE;
|
|
}
|
|
} else if (param_0 != 0xFE) {
|
|
return param_0 + 5;
|
|
} else {
|
|
return param_0 & 0xFF;
|
|
}
|
|
}
|
|
|
|
/* 801188B0-8011894C 1131F0 009C+00 1/1 0/0 0/0 .text setDemoLeftHandIndex__9daAlink_cFUs
|
|
*/
|
|
u8 daAlink_c::setDemoLeftHandIndex(u16 param_0) {
|
|
if (param_0 == 0xFD) {
|
|
if (mEquipItem != 0x103) {
|
|
deleteEquipItem(FALSE, TRUE);
|
|
setSwordModel();
|
|
}
|
|
return 0;
|
|
} else if (param_0 == 0xFC) {
|
|
field_0x2fab |= 0x8;
|
|
return 0;
|
|
} else if (param_0 == 0xFB) {
|
|
if (mpDemoHLTmpModel != NULL) {
|
|
return 0xFB;
|
|
} else {
|
|
return 0xFE;
|
|
}
|
|
} else {
|
|
return param_0 & 0xFF;
|
|
}
|
|
}
|
|
|
|
/* 8011894C-801189F8 11328C 00AC+00 1/1 0/0 0/0 .text setDemoRide__9daAlink_cFUs */
|
|
void daAlink_c::setDemoRide(u16 param_0) {
|
|
daHorse_c* horse_p = dComIfGp_getHorseActor();
|
|
|
|
if (param_0 == 1) {
|
|
if (horse_p != NULL && !checkModeFlg(0x400)) {
|
|
onModeFlg(0x400);
|
|
horse_p->onRideFlg();
|
|
field_0x384c = (cXyz*)&l_horseBaseAnime;
|
|
mRideStatus = 1;
|
|
}
|
|
} else {
|
|
if (horse_p != NULL) {
|
|
horse_p->offRideFlg();
|
|
}
|
|
|
|
mRideStatus = 0;
|
|
offModeFlg(0x400);
|
|
}
|
|
}
|
|
|
|
/* 801189F8-80118AD0 113338 00D8+00 1/1 0/0 0/0 .text
|
|
* setDemoBodyBck__9daAlink_cFP13dDemo_actor_cUs */
|
|
void daAlink_c::setDemoBodyBck(dDemo_actor_c* param_0, u16 param_1) {
|
|
J3DAnmTransform* bck = (J3DAnmTransform*)mUnderAnmHeap[0].loadDataDemoRID(param_1, 0);
|
|
if (bck != NULL) {
|
|
setFrameCtrl(mUnderFrameCtrl, bck->getAttribute(), 0, bck->getFrameMax(), 1.0f, 0.0f);
|
|
mNowAnmPackUnder[0].setAnmTransform(bck);
|
|
mNowAnmPackUpper[0].setAnmTransform(bck);
|
|
|
|
dDemo_actor_c* demo_actor_p = dDemo_c::getActor(demoActorID);
|
|
if (demo_actor_p->checkEnable(0x80)) {
|
|
field_0x2060->initOldFrameMorf(demo_actor_p->getPrm_Morf(), 0, field_0x30c6);
|
|
}
|
|
|
|
field_0x2f8c = 0;
|
|
param_0->setAnmFrameMax(bck->getFrameMax());
|
|
setBasAnime(UNDER_0);
|
|
}
|
|
}
|
|
|
|
|
|
/* 80118AD0-80118B34 113410 0064+00 1/1 0/0 0/0 .text checkFinalBattle__9daAlink_cFv */
|
|
BOOL daAlink_c::checkFinalBattle() {
|
|
return checkStageName("D_MN09B") && dComIfGs_isSaveDunSwitch(1);
|
|
}
|
|
|
|
/* 80118B34-80118BF4 113474 00C0+00 3/3 0/0 0/0 .text checkRestartDead__9daAlink_cFii */
|
|
BOOL daAlink_c::checkRestartDead(int i_dmgAmount, int i_checkZoraMag) {
|
|
i_dmgAmount *= (int)damageMagnification(i_checkZoraMag, 1);
|
|
|
|
if (mProcID != PROC_DEAD && i_dmgAmount >= dComIfGs_getLife() && !checkMagicArmorNoDamage() &&
|
|
!dComIfGs_checkBottle(FAIRY))
|
|
{
|
|
onNoResetFlg2(FLG2_FORCE_GAMEOVER);
|
|
procCoDeadInit(0);
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
/* 80118BF4-80118C98 113534 00A4+00 2/2 0/0 0/0 .text setDeadRideSyncPos__9daAlink_cFv */
|
|
void daAlink_c::setDeadRideSyncPos() {
|
|
if (checkModeFlg(MODE_RIDING) && mRideAcKeep.getActor() != NULL) {
|
|
if (checkReinRide()) {
|
|
setSyncRidePos();
|
|
} else if (checkSpinnerRide()) {
|
|
s16 old_angle = shape_angle.y;
|
|
setSpinnerSyncPos();
|
|
shape_angle.y = old_angle;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 80118C98-80118D7C 1135D8 00E4+00 5/5 0/0 0/0 .text checkDeadHP__9daAlink_cFv */
|
|
BOOL daAlink_c::checkDeadHP() {
|
|
return ((dComIfGs_getLife() == 0 && !checkResetFlg0(RFLG0_UNK_400)) && !dComIfGs_checkBottle(FAIRY)) ||
|
|
checkNoResetFlg2(FLG2_FORCE_GAMEOVER) ||
|
|
(dComIfGp_getOxygenShowFlag() && dComIfGp_getNowOxygen() == 0);
|
|
}
|
|
|
|
/* 80118D7C-80118FF8 1136BC 027C+00 3/3 0/0 0/0 .text checkDeadAction__9daAlink_cFi */
|
|
BOOL daAlink_c::checkDeadAction(int param_0) {
|
|
if (!checkEventRun()) {
|
|
if (checkDeadHP() && mProcID != PROC_HORSE_RIDE && mProcID != PROC_HORSE_GETOFF && mProcID != PROC_LARGE_DAMAGE && mProcID != PROC_LARGE_DAMAGE_WALL && (param_0 || (mProcID != PROC_LARGE_DAMAGE_UP && mProcID != PROC_WOLF_LARGE_DAMAGE_UP))) {
|
|
if (mLinkAcch.i_ChkGroundHit() || checkModeFlg(0x40000) || checkBoarRide() || (checkHorseRide() && !dComIfGp_getHorseActor()->checkJump())) {
|
|
return procCoDeadInit(1);
|
|
}
|
|
|
|
if (!checkHorseRide()) {
|
|
if (checkMagneBootsOn() && !cancelMagneBootsOn()) {
|
|
return procCoDeadInit(1);
|
|
}
|
|
|
|
offCargoCarry();
|
|
|
|
int var_r29;
|
|
if (dComIfG_Bgsp().ChkPolySafe(mLinkAcch.m_gnd) && -1000000000.0f != mLinkAcch.GetGroundH()) {
|
|
var_r29 = dComIfG_Bgsp().GetExitId(mLinkAcch.m_gnd);
|
|
} else {
|
|
var_r29 = 0x3F;
|
|
}
|
|
|
|
if (((var_r29 != 0x3F || mExitID != 0x3F) && field_0x3174 == 5 && field_0x33c8 - current.pos.y > 500.0f) || ((mExitID & 0x8000) && checkModeFlg(2))) {
|
|
onNoResetFlg2(FLG2_FORCE_GAMEOVER);
|
|
return procCoDeadInit(0);
|
|
}
|
|
|
|
return commonFallInit(1);
|
|
}
|
|
} else if (dComIfGs_getLife() == 0 && !checkResetFlg0(RFLG0_UNK_400) && dComIfGs_checkBottle(FAIRY)) {
|
|
makeFairy(¤t.pos, 0);
|
|
dComIfGs_setBottleItemIn(FAIRY, EMPTY_BOTTLE);
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
/* 80118FF8-801190A4 113938 00AC+00 1/1 0/0 0/0 .text
|
|
* setHighModelBck__9daAlink_cFP13mDoExt_bckAnmUs */
|
|
void daAlink_c::setHighModelBck(mDoExt_bckAnm* i_bck, u16 i_anmID) {
|
|
if (i_bck != NULL) {
|
|
J3DAnmTransform* bck = (J3DAnmTransform*)dComIfG_getObjectIDRes(
|
|
dStage_roomControl_c::getDemoArcName(), i_anmID);
|
|
|
|
if (bck != NULL && i_bck->getBckAnm() != bck) {
|
|
if (field_0x06b4 == bck) {
|
|
mpDemoHDTmpBck->changeBckOnly(NULL);
|
|
} else {
|
|
i_bck->init(bck, TRUE, -1, 1.0f, 0, -1, true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 801190A4-80119134 1139E4 0090+00 1/1 0/0 0/0 .text setHighModelFaceBtk__9daAlink_cFUs
|
|
*/
|
|
// NONMATCHING - extra mr
|
|
void daAlink_c::setHighModelFaceBtk(u16 i_anmID) {
|
|
J3DAnmTextureSRTKey* btk = (J3DAnmTextureSRTKey*)dComIfG_getObjectIDRes(
|
|
dStage_roomControl_c::getDemoArcName(), i_anmID);
|
|
|
|
if (btk && field_0x068c != btk) {
|
|
btk->searchUpdateMaterialID(mpDemoFCTongueModel->getModelData());
|
|
mpDemoFCTongueModel->getModelData()->entryTexMtxAnimator(btk);
|
|
|
|
btk->setFrame(0.0f);
|
|
field_0x068c = btk;
|
|
}
|
|
}
|
|
|
|
/* 80119134-801191C4 113A74 0090+00 1/1 0/0 0/0 .text
|
|
* setDemoBrk__9daAlink_cFPP15J3DAnmTevRegKeyP8J3DModelUs */
|
|
// NONMATCHING - extra mr
|
|
void daAlink_c::setDemoBrk(J3DAnmTevRegKey** param_0, J3DModel* param_1, u16 i_anmID) {
|
|
J3DAnmTevRegKey* brk =
|
|
(J3DAnmTevRegKey*)dComIfG_getObjectIDRes(dStage_roomControl_c::getDemoArcName(), i_anmID);
|
|
|
|
if (brk != NULL && *param_0 != brk) {
|
|
brk->searchUpdateMaterialID(param_1->getModelData());
|
|
param_1->getModelData()->entryTevRegAnimator(brk);
|
|
|
|
brk->setFrame(0.0f);
|
|
*param_0 = brk;
|
|
}
|
|
}
|
|
|
|
/* 801191C4-80119464 113B04 02A0+00 1/1 0/0 0/0 .text
|
|
* setStickAnmData__9daAlink_cFP10J3DAnmBaseiiUsi */
|
|
f32 daAlink_c::setStickAnmData(J3DAnmBase* i_anm, int param_1, int param_2, u16 param_3,
|
|
int param_4) {
|
|
dDemo_actor_c* demo_actor_p = dDemo_c::getActor(demoActorID);
|
|
|
|
f32 var_f31;
|
|
if (i_anm != NULL) {
|
|
var_f31 = i_anm->getFrame();
|
|
} else {
|
|
var_f31 = 0.0f;
|
|
}
|
|
|
|
if (param_4 == 0 || (checkInputOnR() && param_4 == getDirectionFromAngle(mStickAngle) + 1)) {
|
|
if (param_4 != 0) {
|
|
dDemo_c::setBranchId(1, 1);
|
|
}
|
|
|
|
if (param_1 == 1) {
|
|
if (param_2 == 2) {
|
|
setDemoBodyBck(demo_actor_p, param_3);
|
|
|
|
if (param_4 == 0) {
|
|
if (demo_actor_p->checkEnable(0x40)) {
|
|
var_f31 = demo_actor_p->getAnmFrame();
|
|
} else {
|
|
var_f31 = 0.0f;
|
|
}
|
|
}
|
|
}
|
|
} else if (param_1 == 9) {
|
|
if (param_2 == 2) {
|
|
if (checkNoResetFlg1(FLG1_UNK_10)) {
|
|
setHighModelBck(mpDemoFCTmpBck, param_3);
|
|
return 0.0f;
|
|
}
|
|
|
|
setFaceDemoBck(param_3);
|
|
} else if (param_2 == 3) {
|
|
if (checkNoResetFlg1(FLG1_UNK_10)) {
|
|
setHighModelFaceBtk(param_3);
|
|
return 0.0f;
|
|
}
|
|
|
|
setFaceDemoBtk(param_3);
|
|
} else if (param_2 == 5) {
|
|
setFaceDemoBtp(param_3);
|
|
}
|
|
|
|
if (param_4 != 0 && i_anm != NULL) {
|
|
for (; var_f31 > i_anm->getFrameMax(); var_f31 -= i_anm->getFrameMax()) {
|
|
}
|
|
i_anm->setFrame(var_f31);
|
|
}
|
|
} else if (param_1 == 5) {
|
|
setHighModelBck(mpDemoHRTmpBck, param_3);
|
|
} else if (param_1 == 6) {
|
|
setHighModelBck(mpDemoHLTmpBck, param_3);
|
|
} else if (param_1 == 4) {
|
|
setHighModelBck(mpDemoHDTmpBck, param_3);
|
|
}
|
|
}
|
|
|
|
if (param_4 != 0 && i_anm != NULL) {
|
|
for (; var_f31 > i_anm->getFrameMax(); var_f31 -= i_anm->getFrameMax()) {
|
|
}
|
|
}
|
|
|
|
return var_f31;
|
|
}
|
|
|
|
/* 80119464-801195C0 113DA4 015C+00 1/1 0/0 0/0 .text
|
|
* daAlink_c_getDemoIDData__FP13dDemo_actor_cPiPiPiPUsPiPi */
|
|
static int daAlink_c_getDemoIDData(dDemo_actor_c* param_0, int* param_1, int* param_2,
|
|
int* param_3, u16* param_4, int* param_5, int* param_6) {
|
|
// NONMATCHING
|
|
static u8 dummy[20];
|
|
|
|
/* JStudio::stb::TParseData_fixed<51> sp50((void*)param_0->getPrm()->getData());
|
|
|
|
static JStudio::stb::TParseData_fixed<51> dummy;
|
|
static JGadget::binary::TValueIterator_raw<u32> it(sp50); */
|
|
|
|
return 0;
|
|
}
|
|
|
|
/* 801195C0-801195F8 113F00 0038+00 7/0 0/0 0/0 .text procDemoCommon__9daAlink_cFv */
|
|
int daAlink_c::procDemoCommon() {
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
return 1;
|
|
}
|
|
|
|
/* 801195F8-801196D8 113F38 00E0+00 1/1 0/0 0/0 .text procCoToolDemoInit__9daAlink_cFv */
|
|
int daAlink_c::procCoToolDemoInit() {
|
|
if (!commonProcInitNotSameProc(PROC_TOOL_DEMO)) {
|
|
return 1;
|
|
}
|
|
|
|
f32 tmp_0 = 0.0f;
|
|
mNormalSpeed = tmp_0;
|
|
speedF = tmp_0;
|
|
speed.y = tmp_0;
|
|
|
|
mUnderAnmHeap[0].resetArcNo();
|
|
mUnderAnmHeap[0].resetIdx();
|
|
mUpperAnmHeap[0].resetIdx();
|
|
mUnderAnmHeap[1].resetIdx();
|
|
mUpperAnmHeap[1].resetIdx();
|
|
|
|
setDoubleAnimeBlendRatio(tmp_0);
|
|
mNowAnmPackUnder[1].setAnmTransform(NULL);
|
|
mNowAnmPackUpper[1].setAnmTransform(NULL);
|
|
|
|
field_0x3198 = 0;
|
|
mProcVar4.field_0x3010 = 0;
|
|
field_0x2fab = 0;
|
|
deleteEquipItem(FALSE, TRUE);
|
|
mUnderAnmHeap[0].setBufferSize(0x10800);
|
|
mProcVar2.field_0x300c = 0;
|
|
field_0x3478 = 0.0f;
|
|
field_0x37c8 = current.pos;
|
|
|
|
onEndResetFlg1(ERFLG1_GANON_FINISH);
|
|
return 1;
|
|
}
|
|
|
|
/* 801196D8-80119D98 114018 06C0+00 1/0 0/0 0/0 .text procCoToolDemo__9daAlink_cFv */
|
|
int daAlink_c::procCoToolDemo() {
|
|
dDemo_actor_c* demo_actor_p = dDemo_c::getActor(demoActorID);
|
|
BOOL var_r29 = 0;
|
|
|
|
onEndResetFlg1(ERFLG1_GANON_FINISH);
|
|
field_0x3198 = 0;
|
|
mProcVar4.field_0x3010 = 0;
|
|
field_0x2fab = 0;
|
|
|
|
if (demo_actor_p != NULL) {
|
|
f32 var_f31 = 0.0f;
|
|
|
|
if (demo_actor_p->checkEnable(2)) {
|
|
current.pos = demo_actor_p->getTrans();
|
|
}
|
|
|
|
if (demo_actor_p->checkEnable(8)) {
|
|
shape_angle = demo_actor_p->getRatate();
|
|
current.angle = shape_angle;
|
|
}
|
|
|
|
if (demo_actor_p->checkEnable(0x40)) {
|
|
var_f31 = demo_actor_p->getAnmFrame();
|
|
}
|
|
|
|
if (demo_actor_p->checkEnable(1)) {
|
|
int sp1C;
|
|
int sp18;
|
|
int sp14;
|
|
int sp10;
|
|
int spC;
|
|
u16 sp8;
|
|
while (daAlink_c_getDemoIDData(demo_actor_p, &sp1C, &sp18, &sp14, &sp8, &sp10, &spC)) {
|
|
if (sp10 != 0 && dDemo_c::getBranchId() == -1) {
|
|
dDemo_c::setBranchId(1, 0);
|
|
}
|
|
|
|
if (sp1C == 0) {
|
|
if (sp18 == 5) {
|
|
field_0x2f93 = setDemoRightHandIndex(sp8);
|
|
} else if (sp18 == 6) {
|
|
field_0x2f92 = setDemoLeftHandIndex(sp8);
|
|
} else if (sp18 == 9) {
|
|
if (sp8 == 1 && mpDemoFCBlendModel != NULL && mpDemoFCTongueModel != NULL) {
|
|
onNoResetFlg1(FLG1_UNK_10);
|
|
var_r29 = 1;
|
|
} else {
|
|
endHighModel();
|
|
}
|
|
} else if (sp18 == 7) {
|
|
if (sp8 == 1) {
|
|
field_0x2fab |= 2;
|
|
}
|
|
} else if (sp18 == 8) {
|
|
if (sp8 == 1) {
|
|
field_0x2fab |= 1;
|
|
}
|
|
} else if (sp18 == 0) {
|
|
if (sp14 == 1) {
|
|
field_0x3198 = sp8;
|
|
} else if (sp14 == 2) {
|
|
setDemoRide(sp8);
|
|
} else if (sp14 == 4 &&
|
|
(mProcVar2.field_0x300c == 0 || (sp8 != 0 && mProcVar2.field_0x300c == 1) ||
|
|
(sp8 == 0 && mProcVar2.field_0x300c == 2)))
|
|
{
|
|
if (mProcVar2.field_0x300c == 0) {
|
|
changeWarpMaterial(WARP_MAT_MODE_0);
|
|
}
|
|
|
|
if (sp8 != 0) {
|
|
field_0x3484 = 1.0f;
|
|
field_0x3480 = -0.5f;
|
|
|
|
if (checkWolf()) {
|
|
field_0x347c = 3.5f;
|
|
} else {
|
|
field_0x347c = 5.5f;
|
|
}
|
|
|
|
mProcVar2.field_0x300c = 2;
|
|
} else {
|
|
field_0x3484 = 0.0f;
|
|
tevStr.field_0x344 = 0.0f;
|
|
field_0x347c = -0.5f;
|
|
|
|
if (checkWolf()) {
|
|
field_0x3480 = 3.5f;
|
|
} else {
|
|
field_0x3480 = 5.5f;
|
|
}
|
|
|
|
mProcVar2.field_0x300c = 1;
|
|
}
|
|
}
|
|
}
|
|
} else if (sp1C == 1) {
|
|
JUT_ASSERT(2345, 0);
|
|
} else if (sp1C == 2) {
|
|
if (sp18 == 1) {
|
|
if (sp14 == 2) {
|
|
var_f31 =
|
|
setStickAnmData(getNowAnmPackUnder(UNDER_0), sp18, sp14, sp8, sp10);
|
|
} else if (sp14 == 4) {
|
|
J3DAnmTevRegKey* btk_p = (J3DAnmTevRegKey*)dComIfG_getObjectIDRes(
|
|
dStage_roomControl_c::getDemoArcName(), sp8);
|
|
if (btk_p != NULL && field_0x06f4 != btk_p) {
|
|
btk_p->setFrame(0.0f);
|
|
field_0x06f4 = btk_p;
|
|
}
|
|
|
|
if (btk_p != NULL && spC == 0) {
|
|
btk_p->setFrame(var_f31);
|
|
}
|
|
}
|
|
} else if (sp18 == 4) {
|
|
if (sp14 == 2) {
|
|
setStickAnmData(NULL, sp18, sp14, sp8, sp10);
|
|
|
|
if (mpDemoHDTmpBck != NULL && spC == 0) {
|
|
mpDemoHDTmpBck->setFrame(var_f31);
|
|
}
|
|
}
|
|
} else if (sp18 == 6) {
|
|
if (sp14 == 2) {
|
|
setStickAnmData(NULL, sp18, sp14, sp8, sp10);
|
|
|
|
if (mpDemoHLTmpBck != NULL && spC == 0) {
|
|
mpDemoHLTmpBck->setFrame(var_f31);
|
|
}
|
|
} else if (sp14 == 4 && field_0x2f92 == 0xFB) {
|
|
setDemoBrk(&field_0x06f8, mpDemoHLTmpModel, sp8);
|
|
if (field_0x06f8 != NULL && spC == 0) {
|
|
field_0x06f8->setFrame(var_f31);
|
|
}
|
|
}
|
|
} else if (sp18 == 5) {
|
|
if (sp14 == 2) {
|
|
setStickAnmData(NULL, sp18, sp14, sp8, sp10);
|
|
|
|
if (mpDemoHRTmpBck != NULL && spC == 0) {
|
|
mpDemoHRTmpBck->setFrame(var_f31);
|
|
}
|
|
}
|
|
} else if (sp18 == 9) {
|
|
if (sp14 == 2) {
|
|
setStickAnmData(field_0x2164.getBckAnm(), sp18, sp14, sp8, sp10);
|
|
|
|
if (mpDemoFCTmpBck != NULL && spC == 0) {
|
|
mpDemoFCTmpBck->setFrame(var_f31);
|
|
}
|
|
} else if (sp14 == 3) {
|
|
setStickAnmData(mpFaceBtk, sp18, sp14, sp8, sp10);
|
|
|
|
if (mpFaceBtk != NULL && spC == 0) {
|
|
mpFaceBtk->setFrame(var_f31);
|
|
}
|
|
} else if (sp14 == 5) {
|
|
setStickAnmData(field_0x2154, sp18, sp14, sp8, sp10);
|
|
|
|
if (field_0x2154 != NULL && spC == 0) {
|
|
field_0x2154->setFrame(var_f31);
|
|
}
|
|
} else if (sp14 == 7) {
|
|
J3DAnmCluster* blk_p = (J3DAnmCluster*)dComIfG_getObjectIDRes(
|
|
dStage_roomControl_c::getDemoArcName(), sp8);
|
|
if (field_0x0698 != blk_p) {
|
|
field_0x0698 = blk_p;
|
|
field_0x069c->init(mpDemoFCTmpBls, field_0x0698, FALSE,
|
|
J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1);
|
|
field_0x069c->getBlkAnm()->setFrame(0.0f);
|
|
}
|
|
|
|
if (spC == 0) {
|
|
if (field_0x069c != NULL && field_0x069c->getBlkAnm() != NULL) {
|
|
field_0x069c->getBlkAnm()->setFrame(var_f31);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (demo_actor_p->checkEnable(0x40)) {
|
|
getNowAnmPackUnder(UNDER_0)->setFrame(var_f31);
|
|
demo_actor_p->setAnmFrameMax(getNowAnmPackUnder(UNDER_0)->getFrameMax());
|
|
mUnderFrameCtrl[0].setFrame(var_f31);
|
|
}
|
|
}
|
|
|
|
if (mProcVar2.field_0x300c != 0) {
|
|
warpModelTexScroll();
|
|
}
|
|
|
|
if (var_r29 == 0) {
|
|
endHighModel();
|
|
}
|
|
|
|
if (demo_actor_p == NULL) {
|
|
checkNextAction(0);
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
|
|
/* 80119D98-80119F64 1146D8 01CC+00 1/1 0/0 0/0 .text procCoTalkInit__9daAlink_cFv */
|
|
int daAlink_c::procCoTalkInit() {
|
|
if (mProcID == PROC_TALK) {
|
|
return 0;
|
|
}
|
|
|
|
int var_r30;
|
|
if (mProcID == PROC_WOLF_LIE_START) {
|
|
var_r30 = 1;
|
|
} else if (mProcID == PROC_WOLF_LIE_MOVE) {
|
|
var_r30 = 2;
|
|
} else {
|
|
var_r30 = 0;
|
|
}
|
|
|
|
commonProcInit(PROC_TALK);
|
|
|
|
if (mDemo.getDemoMode() == 6) {
|
|
if (mEquipItem != KANTERA && mEquipItem != NO_ITEM) {
|
|
allUnequip(1);
|
|
}
|
|
}
|
|
|
|
if (checkWolf()) {
|
|
field_0x3198 = 0;
|
|
mNormalSpeed = 0.0f;
|
|
|
|
if (var_r30 == 0) {
|
|
setBlendWolfMoveAnime(daAlinkHIO_wlMove_c0::m.field_0xBC);
|
|
} else {
|
|
if (var_r30 == 1) {
|
|
field_0x2f99 = 13;
|
|
setSingleAnimeWolfBaseSpeed(WANM_CROUCH_WALK, 0.0f,
|
|
daAlinkHIO_wlLie_c0::m.field_0x40);
|
|
} else {
|
|
field_0x2f99 = 13;
|
|
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
|
|
|
|
if (fabsf(frameCtrl_p->getFrame() - 15.0f) / 15.0f < 0.5f) {
|
|
frameCtrl_p->setFrame(15.0f);
|
|
} else {
|
|
frameCtrl_p->setFrame(0.0f);
|
|
}
|
|
|
|
frameCtrl_p->setRate(0.0f);
|
|
getNowAnmPackUnder(UNDER_0)->setFrame(frameCtrl_p->getFrame());
|
|
field_0x2060->initOldFrameMorf(3.0f, 0, 40);
|
|
}
|
|
|
|
dComIfGp_setPlayerStatus0(0, 0x8000000);
|
|
}
|
|
} else {
|
|
field_0x3198 = setTalkStartBack(&field_0x37c8);
|
|
if (!field_0x3198) {
|
|
setTalkAnime();
|
|
mNormalSpeed = 0.0f;
|
|
}
|
|
}
|
|
|
|
mProcVar0.field_0x3008 = 30;
|
|
dComIfGp_setPlayerStatus0(0, 0x10);
|
|
return 1;
|
|
}
|
|
|
|
|
|
/* 80119F64-8011A214 1148A4 02B0+00 1/0 0/0 0/0 .text procCoTalk__9daAlink_cFv */
|
|
int daAlink_c::procCoTalk() {
|
|
if (dComIfGp_checkPlayerStatus0(0, 0x8000000)) {
|
|
field_0x2f99 = 13;
|
|
}
|
|
|
|
setShapeAngleToTalkActor();
|
|
|
|
if (field_0x3198 != 0) {
|
|
cXyz sp24 = field_0x37c8 - current.pos;
|
|
int var_r30 = 0;
|
|
|
|
if (mLinkAcch.ChkWallHit()) {
|
|
dBgS_AcchCir* acchCir_p = mAcchCir;
|
|
for (int i = 0; i < 3; i++) {
|
|
if (acchCir_p->ChkWallHit()) {
|
|
var_r30 = cLib_distanceAngleS(acchCir_p->GetWallAngleY(), current.angle.y);
|
|
break;
|
|
}
|
|
acchCir_p++;
|
|
}
|
|
}
|
|
|
|
if (sp24.absXZ() < 0.001f ||
|
|
cLib_distanceAngleS(sp24.atan2sX_Z(), current.angle.y) > 0x4000 || var_r30 > 0x4000)
|
|
{
|
|
current.pos.x = field_0x37c8.x;
|
|
current.pos.z = field_0x37c8.z;
|
|
field_0x3198 = 0;
|
|
setTalkAnime();
|
|
mNormalSpeed = 0.0f;
|
|
} else if (mProcVar0.field_0x3008 != 0) {
|
|
mProcVar0.field_0x3008--;
|
|
} else {
|
|
field_0x3198 = 0;
|
|
setTalkAnime();
|
|
mNormalSpeed = 0.0f;
|
|
}
|
|
} else {
|
|
if (mEquipItem == KANTERA) {
|
|
if (mUpperAnmHeap[0].getIdx() != getMainBckData(ANM_WAIT)->m_upperID) {
|
|
setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed, 3.0f);
|
|
}
|
|
}
|
|
|
|
current.angle.y = shape_angle.y;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
|
|
/* 8011A214-8011A42C 114B54 0218+00 1/0 0/0 0/0 .text procCoOpenTreasureInit__9daAlink_cFv */
|
|
int daAlink_c::procCoOpenTreasureInit() {
|
|
if (!commonProcInitNotSameProc(PROC_OPEN_TREASURE)) {
|
|
return 1;
|
|
}
|
|
|
|
f32 var_f31;
|
|
if (checkWolf()) {
|
|
setSingleAnimeWolfBase(WANM_TRES_OPEN);
|
|
if (mDemo.getParam0() != 1) {
|
|
mUnderFrameCtrl[0].setEnd(21);
|
|
}
|
|
|
|
var_f31 = 130.0f;
|
|
field_0x3588 = l_wolfBaseAnime;
|
|
} else {
|
|
daAlink_ANM open_anm;
|
|
if (mDemo.getParam0() == 2) {
|
|
open_anm = ANM_TRES_OPEN_BIG;
|
|
var_f31 = 111.0f;
|
|
mDoAud_subBgmStart(Z2BGM_OPEN_BOX);
|
|
} else {
|
|
var_f31 = 88.0f;
|
|
|
|
if (mDemo.getParam0() == 1) {
|
|
open_anm = ANM_TRES_OPEN_KICK;
|
|
} else {
|
|
open_anm = ANM_TRES_OPEN_SMALL;
|
|
}
|
|
}
|
|
|
|
setSingleAnimeBase(open_anm);
|
|
field_0x3588 = l_waitBaseAnime;
|
|
}
|
|
|
|
mNormalSpeed = 0.0f;
|
|
|
|
fopAc_ac_c* partner_p = fopAcM_getEventPartner(this);
|
|
if (partner_p != NULL) {
|
|
shape_angle.y = partner_p->shape_angle.y + 0x8000;
|
|
current.angle.y = shape_angle.y;
|
|
|
|
current.pos.x = partner_p->current.pos.x - var_f31 * cM_ssin(shape_angle.y);
|
|
current.pos.z = partner_p->current.pos.z - var_f31 * cM_scos(shape_angle.y);
|
|
current.pos.y = partner_p->current.pos.y;
|
|
}
|
|
|
|
if (!checkWolf()) {
|
|
deleteEquipItem(FALSE, FALSE);
|
|
mDoMtx_stack_c::transS(current.pos);
|
|
mDoMtx_stack_c::YrotM(shape_angle.y);
|
|
mDoMtx_stack_c::transM(60.0f, 45.0f, 30.0f);
|
|
mpKanteraModel->setBaseTRMtx(mDoMtx_stack_c::get());
|
|
}
|
|
|
|
mProcVar2.field_0x300c = 0;
|
|
mLinkAcch.SetWallNone();
|
|
mLinkAcch.OffLineCheck();
|
|
onEndResetFlg1(ERFLG1_UNK_8);
|
|
return 1;
|
|
}
|
|
|
|
|
|
/* 8011A42C-8011A4C0 114D6C 0094+00 1/0 0/0 0/0 .text procCoOpenTreasure__9daAlink_cFv */
|
|
int daAlink_c::procCoOpenTreasure() {
|
|
onEndResetFlg1(ERFLG1_UNK_8);
|
|
|
|
if (mProcVar2.field_0x300c == 0) {
|
|
mProcVar2.field_0x300c = 1;
|
|
} else {
|
|
field_0x2f99 = 4;
|
|
}
|
|
|
|
if (checkAnmEnd(mUnderFrameCtrl)) {
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
mLinkAcch.ClrWallNone();
|
|
mLinkAcch.OnLineCheck();
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* 8011A4C0-8011A5CC 114E00 010C+00 1/0 0/0 0/0 .text procCoUnequipInit__9daAlink_cFv */
|
|
int daAlink_c::procCoUnequipInit() {
|
|
if (!commonProcInitNotSameProc(PROC_UNEQUIP)) {
|
|
return 0;
|
|
}
|
|
|
|
mNormalSpeed = 0.0f;
|
|
mProcVar2.field_0x300c = 0;
|
|
mProcVar3.field_0x300e = 0;
|
|
|
|
if (checkWolf()) {
|
|
setBlendWolfMoveAnime(daAlinkHIO_wlMove_c0::m.field_0x94);
|
|
} else {
|
|
setBlendMoveAnime(daAlinkHIO_basic_c0::m.mAnmBlendFactor);
|
|
|
|
if (mDemo.getParam1() == 0) {
|
|
if (mEquipItem != NO_ITEM) {
|
|
allUnequip(0);
|
|
}
|
|
} else if (mDemo.getParam1() == 1) {
|
|
if (mEquipItem != 0x103) {
|
|
swordEquip(0);
|
|
}
|
|
} else if (mDemo.getParam1() == 2) {
|
|
mProcVar2.field_0x300c = 1;
|
|
mProcVar3.field_0x300e = 1;
|
|
setSingleAnime(ANM_TRADE_ITEM_PULL_OUT, 1.0f, 0.0f, 39, 3.0f);
|
|
}
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
|
|
/* 8011A5CC-8011A688 114F0C 00BC+00 1/0 0/0 0/0 .text procCoUnequip__9daAlink_cFv */
|
|
int daAlink_c::procCoUnequip() {
|
|
if (mProcVar2.field_0x300c != 0) {
|
|
if (checkAnmEnd(mUnderFrameCtrl)) {
|
|
setBlendMoveAnime(3.0f);
|
|
itemEquip(COPY_ROD);
|
|
|
|
f32 tmp_6 = 6.0f;
|
|
mUpperFrameCtrl[2].setFrame(tmp_6);
|
|
getNowAnmPackUpper(UPPER_2)->setFrame(tmp_6);
|
|
commonChangeItem();
|
|
mProcVar2.field_0x300c = 0;
|
|
}
|
|
} else {
|
|
if (!checkWolf()) {
|
|
setBlendMoveAnime(-1.0f);
|
|
}
|
|
|
|
if (checkNoUpperAnime()) {
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
}
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* 8011A688-8011A6FC 114FC8 0074+00 4/4 0/0 0/0 .text setGetSubBgm__9daAlink_cFi */
|
|
void daAlink_c::setGetSubBgm(int i_seTypeIdx) {
|
|
u32 se_type = getSeType[i_seTypeIdx];
|
|
|
|
if (se_type == 3 && mProcVar4.field_0x3010 == 0) {
|
|
se_type = 7;
|
|
}
|
|
|
|
if (se_type != 8) {
|
|
mDoAud_subBgmStart(bgmLabel[se_type]);
|
|
dComIfGp_setMesgBgmOn();
|
|
}
|
|
}
|
|
|
|
/* 8011A6FC-8011A798 11503C 009C+00 1/0 0/0 0/0 .text checkTreasureRupeeReturn__9daAlink_cCFi */
|
|
BOOL daAlink_c::checkTreasureRupeeReturn(int i_itemNo) const {
|
|
if (i_itemNo == LINKS_SAVINGS) {
|
|
i_itemNo = PURPLE_RUPEE;
|
|
}
|
|
|
|
i_itemNo -= 4;
|
|
if (i_itemNo < 0 || i_itemNo >= 4) {
|
|
return false;
|
|
}
|
|
|
|
return dComIfGs_getRupeeMax() < rupeeCount[i_itemNo] + dComIfGs_getRupee();
|
|
}
|
|
|
|
/* 8011A798-8011AC28 1150D8 0490+00 2/1 0/0 0/0 .text procCoGetItemInit__9daAlink_cFv */
|
|
int daAlink_c::procCoGetItemInit() {
|
|
BOOL var_r31 = 0;
|
|
BOOL var_r30 = 0;
|
|
if (mProcID == PROC_GET_ITEM || mProcID == PROC_INSECT_CATCH ||
|
|
(mProcID == PROC_PREACTION_UNEQUIP && !checkNoUpperAnime()))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
if (mProcID == PROC_OPEN_TREASURE || mProcID == PROC_GET_READY_SIT) {
|
|
if (mProcID == PROC_OPEN_TREASURE) {
|
|
var_r31 = 1;
|
|
}
|
|
var_r30 = 1;
|
|
}
|
|
|
|
mLinkAcch.ClrWallNone();
|
|
|
|
if (!checkWolf() && mEquipItem != NO_ITEM && var_r30 == 0) {
|
|
if (checkModeFlg(0x400) || (checkStageName("D_MN05B") && mEquipItem == BOOMERANG &&
|
|
!dComIfGs_isItemFirstBit(BOOMERANG)))
|
|
{
|
|
deleteEquipItem(0, 0);
|
|
} else {
|
|
return procPreActionUnequipInit(PROC_GET_ITEM, NULL);
|
|
}
|
|
}
|
|
|
|
commonProcInit(PROC_GET_ITEM);
|
|
mNormalSpeed = 0.0f;
|
|
mProcVar1.field_0x300a = 0;
|
|
field_0x3478 = 0.0f;
|
|
|
|
if (mDemo.getParam0() != 0) {
|
|
int item_no;
|
|
if (mDemo.getParam0() != 0x100) {
|
|
item_no = mDemo.getParam0();
|
|
} else {
|
|
item_no = dComIfGp_event_getGtItm();
|
|
}
|
|
|
|
int item_partner_id = fopAcM_createItemForPresentDemo(¤t.pos, item_no, 0, -1,
|
|
fopAcM_GetRoomNo(this), NULL, NULL);
|
|
if (item_partner_id != 0xFFFFFFFF) {
|
|
dComIfGp_event_setItemPartnerId(item_partner_id);
|
|
}
|
|
|
|
mProcVar2.field_0x300c = item_no;
|
|
} else {
|
|
daItemBase_c* item_partner_p = (daItemBase_c*)fopAcM_getItemEventPartner(this);
|
|
if (item_partner_p != NULL) {
|
|
mProcVar2.field_0x300c = item_partner_p->getItemNo();
|
|
} else {
|
|
mProcVar2.field_0x300c = -1;
|
|
}
|
|
}
|
|
|
|
if (checkWolf()) {
|
|
if (var_r30 != 0) {
|
|
setSingleAnimeWolfBase(WANM_GET_A);
|
|
} else {
|
|
setSingleAnimeWolf(WANM_GET_A, 1.0f, 10.0f, -1, 3.0f);
|
|
}
|
|
|
|
field_0x2f99 = 12;
|
|
field_0x3588 = l_wolfBaseAnime;
|
|
field_0x347c = 10.0f;
|
|
field_0x3480 = 19.0f;
|
|
field_0x3484 = 0.1111111f;
|
|
} else if (checkModeFlg(0x400)) {
|
|
setSingleAnimeBase(ANM_HORSE_GET_ITEM);
|
|
|
|
if (mProcVar2.field_0x300c != -1) {
|
|
setGetItemFace(mProcVar2.field_0x300c);
|
|
}
|
|
|
|
if (checkReinRide()) {
|
|
setSyncRidePos();
|
|
if (checkBoarRide()) {
|
|
setUnderAnime(0x26E, UNDER_2, 1.0f, 0.0f, -1, -1.0f);
|
|
}
|
|
}
|
|
field_0x3478 = 9.0f;
|
|
mProcVar1.field_0x300a = 1;
|
|
} else {
|
|
if (var_r30 != 0) {
|
|
setSingleAnimeBase(ANM_GET_A);
|
|
} else {
|
|
setSingleAnimeBase(ANM_GET_A_WAIT);
|
|
|
|
if (mProcVar2.field_0x300c != -1) {
|
|
setGetItemFace(mProcVar2.field_0x300c);
|
|
}
|
|
mProcVar1.field_0x300a = -7;
|
|
}
|
|
|
|
field_0x347c = 9.0f;
|
|
field_0x3480 = 16.0f;
|
|
field_0x3484 = 0.1428571f;
|
|
field_0x2f99 = 0xC;
|
|
field_0x3588 = l_waitBaseAnime;
|
|
}
|
|
|
|
mProcVar4.field_0x3010 = 0;
|
|
|
|
if (var_r31 != 0) {
|
|
mProcVar3.field_0x300e = -0x8000;
|
|
mProcVar4.field_0x3010 = 1;
|
|
} else if (mDemo.getParam1() == 2) {
|
|
mProcVar3.field_0x300e = 0;
|
|
} else {
|
|
mProcVar3.field_0x300e =
|
|
shape_angle.y - (fopCamM_GetAngleY(dComIfGp_getCamera(field_0x317c)) + 0x8000);
|
|
s16 temp_r28 = mProcVar3.field_0x300e + 0x16C1;
|
|
s16 temp_r31 = mProcVar3.field_0x300e - 0x16C1;
|
|
|
|
if (abs(temp_r28) > abs(temp_r31)) {
|
|
mProcVar3.field_0x300e = temp_r31;
|
|
} else {
|
|
mProcVar3.field_0x300e = temp_r28;
|
|
}
|
|
}
|
|
|
|
current.angle.y = shape_angle.y;
|
|
mMsgClassID = -1;
|
|
mProcVar0.field_0x3008 = 0;
|
|
field_0x3198 = 0;
|
|
field_0x32cc = 0;
|
|
mProcVar5.field_0x3012 = 0;
|
|
dKy_Itemgetcol_chg_on();
|
|
|
|
dComIfGp_setPlayerStatus1(0, 0x4000000);
|
|
if (mProcVar4.field_0x3010 != 0) {
|
|
onEndResetFlg1(ERFLG1_UNK_8);
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
|
|
/* 8011AC28-8011B3F0 115568 07C8+00 1/0 0/0 0/0 .text procCoGetItem__9daAlink_cFv */
|
|
int daAlink_c::procCoGetItem() {
|
|
if (mProcVar4.field_0x3010 != 0) {
|
|
onEndResetFlg1(ERFLG1_UNK_8);
|
|
}
|
|
|
|
if (field_0x3198 != 0) {
|
|
if (checkModeFlg(0x400) && checkReinRide()) {
|
|
setSyncRidePos();
|
|
}
|
|
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
return 1;
|
|
}
|
|
|
|
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
|
|
|
|
if (checkModeFlg(0x400)) {
|
|
if (checkReinRide()) {
|
|
setSyncRidePos();
|
|
}
|
|
} else if (field_0x2f99 != 12) {
|
|
field_0x2f99 = 4;
|
|
}
|
|
|
|
if (mProcVar1.field_0x300a == 0 && !(frameCtrl_p->getFrame() < field_0x347c)) {
|
|
if (frameCtrl_p->getFrame() < field_0x3480) {
|
|
shape_angle.y =
|
|
current.angle.y -
|
|
(field_0x3484 * (mProcVar3.field_0x300e * (frameCtrl_p->getFrame() - field_0x347c)));
|
|
|
|
if (mProcVar4.field_0x3010 != 0 && checkWolf()) {
|
|
current.pos.x -= cM_ssin(current.angle.y) * 3.888889f;
|
|
current.pos.z -= cM_scos(current.angle.y) * 3.888889f;
|
|
}
|
|
} else {
|
|
shape_angle.y = current.angle.y - mProcVar3.field_0x300e;
|
|
}
|
|
}
|
|
|
|
daItemBase_c* item_partner_p = (daItemBase_c*)fopAcM_getItemEventPartner(this);
|
|
#ifdef DEBUG
|
|
if (item_partner_p != NULL && fopAcM_GetName(item_partner_p) != PROC_ITEM &&
|
|
fopAcM_GetName(item_partner_p) != PROC_Demo_Item)
|
|
{
|
|
// "Get Item is not an item!!! %d\n"
|
|
OSReport("ゲットするアイテムがアイテムじゃない!!! %d\n",
|
|
fopAcM_GetName(item_partner_p));
|
|
JUT_ASSERT(3415, 0);
|
|
}
|
|
#endif
|
|
|
|
if (mProcVar2.field_0x300c == -1 && item_partner_p != NULL) {
|
|
mProcVar2.field_0x300c = item_partner_p->getItemNo();
|
|
|
|
if (!checkWolf() && (checkUnderMove0BckNoArc(ANM_GET_A_WAIT) || checkModeFlg(0x400))) {
|
|
setGetItemFace(mProcVar2.field_0x300c);
|
|
}
|
|
}
|
|
|
|
field_0x3478 += 1.0f;
|
|
if (field_0x3478 > 100.0f) {
|
|
field_0x3478 = 100.0f;
|
|
}
|
|
|
|
if (field_0x3478 >= 9.0f && mProcVar0.field_0x3008 == 0 && mProcVar2.field_0x300c != -1) {
|
|
mProcVar0.field_0x3008 = 1;
|
|
|
|
int get_bgm_type = mProcVar2.field_0x300c;
|
|
if (mProcVar2.field_0x300c == 33 && (dComIfGs_getMaxLife() % 5) == 4) {
|
|
get_bgm_type = 34;
|
|
}
|
|
|
|
setGetSubBgm(get_bgm_type);
|
|
}
|
|
|
|
BOOL var_r27 = true;
|
|
if (((mProcVar1.field_0x300a == 0 && frameCtrl_p->getFrame() >= (f32)frameCtrl_p->getEnd() - 5.0f) ||
|
|
mProcVar1.field_0x300a != 0) &&
|
|
item_partner_p != NULL)
|
|
{
|
|
field_0x280c.setData(item_partner_p);
|
|
item_partner_p->show();
|
|
var_r27 = false;
|
|
}
|
|
|
|
if (checkAnmEnd(frameCtrl_p)) {
|
|
mProcVar1.field_0x300a = 1;
|
|
|
|
if (checkWolf()) {
|
|
setSingleAnimeWolfBase(WANM_GET);
|
|
} else {
|
|
setSingleAnimeBase(ANM_GET_A_WAIT);
|
|
setGetItemFace(mProcVar2.field_0x300c);
|
|
}
|
|
|
|
field_0x2f99 = 12;
|
|
if (mDemo.getParam1() == 1) {
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
}
|
|
} else if (mProcVar1.field_0x300a != 0) {
|
|
if (mDemo.getParam1() == 1 && checkModeFlg(0x400)) {
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
}
|
|
|
|
if (mProcVar1.field_0x300a < 0) {
|
|
mProcVar1.field_0x300a++;
|
|
|
|
if (mProcVar1.field_0x300a == 0) {
|
|
mProcVar1.field_0x300a = 1;
|
|
shape_angle.y = current.angle.y - mProcVar3.field_0x300e;
|
|
|
|
if (mDemo.getParam1() == 1) {
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
}
|
|
} else {
|
|
shape_angle.y =
|
|
current.angle.y - (mProcVar3.field_0x300e * (mProcVar1.field_0x300a + 7)) * (1.0f / 7.0f);
|
|
}
|
|
}
|
|
|
|
if (item_partner_p != NULL) {
|
|
if (!fpcM_IsCreating(fpcM_GetID(item_partner_p))) {
|
|
if (field_0x32cc == 0 && mProcVar2.field_0x300c != -1) {
|
|
if (mProcVar2.field_0x300c == 0x70 && checkStageName("F_SP115")) {
|
|
field_0x32cc = 0x6E;
|
|
} else if (mProcVar2.field_0x300c == 0x23 && checkStageName("D_MN11")) {
|
|
field_0x32cc = 0x5C0;
|
|
} else if (mProcVar2.field_0x300c == 0xE0) {
|
|
if (dComIfGs_getPohSpiritNum() == 20) {
|
|
field_0x32cc = 0x4CF;
|
|
} else if (dComIfGs_getPohSpiritNum() == 60) {
|
|
field_0x32cc = 0x4D0;
|
|
} else {
|
|
field_0x32cc = mProcVar2.field_0x300c + 0x65;
|
|
}
|
|
} else if (mProcVar2.field_0x300c == 0x21) {
|
|
field_0x32cc = heartPieceMessage[dComIfGs_getMaxLife() % 5];
|
|
} else if (mProcVar2.field_0x300c == 0x33 && checkStageName("D_MN07")) {
|
|
field_0x32cc = 0x151;
|
|
} else {
|
|
field_0x32cc = mProcVar2.field_0x300c + 0x65;
|
|
}
|
|
}
|
|
|
|
if (field_0x32cc != 0 && checkEndMessage(field_0x32cc)) {
|
|
if (field_0x32cc < 0x164) {
|
|
if (mProcVar2.field_0x300c >= 0xC0 && mProcVar2.field_0x300c <= 0xD7 &&
|
|
dComIfGs_isItemFirstBit(mProcVar2.field_0x300c))
|
|
{
|
|
field_0x32cc += 2000;
|
|
mMsgClassID = -1;
|
|
return 1;
|
|
}
|
|
|
|
if (mProcVar4.field_0x3010 != 0 && checkTreasureRupeeReturn(mProcVar2.field_0x300c)) {
|
|
if (mProcVar2.field_0x300c == 0xED) {
|
|
field_0x32cc = 0x6A;
|
|
}
|
|
|
|
field_0x32cc += 0x5DC;
|
|
mMsgClassID = -1;
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
item_partner_p->dead();
|
|
field_0x3198 = 1;
|
|
field_0x2f99 = 12;
|
|
|
|
if (checkWolf()) {
|
|
setBlendWolfMoveAnime(daAlinkHIO_wlMove_c0::m.field_0x94);
|
|
} else {
|
|
if (mEquipItem == KANTERA) {
|
|
field_0x2f94 = 0;
|
|
}
|
|
|
|
current.angle.y = shape_angle.y;
|
|
if (checkModeFlg(0x400)) {
|
|
setDoubleAnime(0.0f, 1.0f, 1.0f, ANM_HORSE_WAIT, ANM_HORSE_WAIT, 10,
|
|
3.0f);
|
|
field_0x2f99 = 0x60;
|
|
} else {
|
|
setBlendMoveAnime(daAlinkHIO_basic_c0::m.mAnmBlendFactor);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else if (var_r27 && item_partner_p != NULL) {
|
|
item_partner_p->hide();
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
|
|
/* 8011B3F0-8011B46C 115D30 007C+00 1/0 0/0 0/0 .text procCoTurnBackInit__9daAlink_cFv */
|
|
int daAlink_c::procCoTurnBackInit() {
|
|
if (!commonProcInitNotSameProc(PROC_TURN_BACK)) {
|
|
return 0;
|
|
}
|
|
|
|
mNormalSpeed = 0.0f;
|
|
if (checkWolf()) {
|
|
setSingleAnimeWolfBase(WANM_TURN_BACK);
|
|
} else {
|
|
setSingleAnimeBase(ANM_TURN_BACK);
|
|
}
|
|
|
|
mProcVar2.field_0x300c = 0;
|
|
return 1;
|
|
}
|
|
|
|
/* 8011B46C-8011B57C 115DAC 0110+00 1/0 0/0 0/0 .text procCoTurnBack__9daAlink_cFv */
|
|
int daAlink_c::procCoTurnBack() {
|
|
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
|
|
|
|
if (checkAnmEnd(frameCtrl_p)) {
|
|
if (mProcVar2.field_0x300c == 0) {
|
|
if (checkWolf()) {
|
|
setBlendWolfMoveAnime(5.0f);
|
|
} else {
|
|
setDoubleAnime(0.0f, daAlinkHIO_noActAtnMove_c0::m.mWaitAnmSpeed,
|
|
daAlinkHIO_noActAtnMove_c0::m.mWaitAnmSpeed, ANM_WAIT_B, ANM_WAIT_B,
|
|
2, 3.0f);
|
|
}
|
|
|
|
mProcVar2.field_0x300c = 1;
|
|
}
|
|
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
} else if (mProcVar2.field_0x300c != 0) {
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
} else if (!checkWolf() && frameCtrl_p->getFrame() >= 29.0f) {
|
|
field_0x2f92 = 1;
|
|
field_0x2f93 = 6;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
|
|
/* 8011B57C-8011B71C 115EBC 01A0+00 1/0 0/0 0/0 .text procDoorOpenInit__9daAlink_cFv */
|
|
int daAlink_c::procDoorOpenInit() {
|
|
if (!commonProcInitNotSameProc(PROC_DOOR_OPEN)) {
|
|
return 1;
|
|
}
|
|
|
|
daAlink_ANM open_anm;
|
|
f32 start_f = 0.0f;
|
|
s16 end_f = -1;
|
|
|
|
field_0x3478 = daAlinkHIO_basic_c0::m.mAnmBlendFactor;
|
|
mProcVar0.field_0x3008 = 0;
|
|
|
|
if (mDemo.getParam0() == 4) {
|
|
open_anm = ANM_DOOR_OPEN_ROLL;
|
|
mProcVar2.field_0x300c = 1;
|
|
mProcVar3.field_0x300e = 1;
|
|
mProcVar4.field_0x3010 = 0;
|
|
} else if (mDemo.getParam0() == 5) {
|
|
open_anm = ANM_DOOR_OPEN_SLIDE;
|
|
mProcVar2.field_0x300c = 1;
|
|
mProcVar3.field_0x300e = 1;
|
|
mProcVar4.field_0x3010 = 0;
|
|
} else {
|
|
mProcVar3.field_0x300e = 0;
|
|
|
|
if (mDemo.getParam0() & 1) {
|
|
open_anm = ANM_DOOR_OPEN_RIGHT;
|
|
field_0x347c = 42.0f;
|
|
} else {
|
|
open_anm = ANM_DOOR_OPEN_LEFT;
|
|
field_0x347c = 46.0f;
|
|
}
|
|
|
|
if (mDemo.getParam0() & 4) {
|
|
field_0x3478 = 10.0f;
|
|
mProcVar0.field_0x3008 = 10;
|
|
|
|
if (open_anm == ANM_DOOR_OPEN_LEFT) {
|
|
end_f = 14;
|
|
} else {
|
|
end_f = 18;
|
|
}
|
|
} else if (mDemo.getParam0() & 2) {
|
|
start_f = 38.0f;
|
|
field_0x2f99 = 5;
|
|
field_0x34d4 = l_waitBaseAnime;
|
|
}
|
|
|
|
mProcVar4.field_0x3010 = 1;
|
|
mProcVar2.field_0x300c = 0;
|
|
}
|
|
|
|
setSingleAnime(open_anm, 1.0f, start_f, end_f, 0.0f);
|
|
mNormalSpeed = 0.0f;
|
|
|
|
mLinkAcch.SetWallNone();
|
|
mLinkAcch.OnLineCheckNone();
|
|
field_0x3588 = l_waitBaseAnime;
|
|
field_0x3198 = 0;
|
|
mProcVar5.field_0x3012 = 0;
|
|
return 1;
|
|
}
|
|
|
|
|
|
/* 8011B71C-8011B914 11605C 01F8+00 1/0 0/0 0/0 .text procDoorOpen__9daAlink_cFv */
|
|
int daAlink_c::procDoorOpen() {
|
|
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
|
|
|
|
if (field_0x3198 == 0) {
|
|
if (mProcVar2.field_0x300c == 0 && mProcVar4.field_0x3010 != 0) {
|
|
if (frameCtrl_p->getFrame() >= 9.0f && frameCtrl_p->getFrame() < field_0x347c) {
|
|
field_0x2f92 = 3;
|
|
} else {
|
|
field_0x2f92 = 4;
|
|
}
|
|
} else if (frameCtrl_p->checkPass(18.0f) && mProcVar3.field_0x300e != 0) {
|
|
voiceStart(Z2SE_AL_V_PUSH_ROCK);
|
|
mProcVar3.field_0x300e = 0;
|
|
}
|
|
}
|
|
|
|
if (checkAnmEnd(frameCtrl_p)) {
|
|
if (mProcVar0.field_0x3008 != 0) {
|
|
daAlink_ANM open_anm;
|
|
if (mDemo.getParam0() & 1) {
|
|
open_anm = ANM_DOOR_OPEN_LOCK_RIGHT;
|
|
} else {
|
|
open_anm = ANM_DOOR_OPEN_LOCK_LEFT;
|
|
}
|
|
|
|
seStartMapInfo(Z2SE_OBJ_KNOB_DOOR_LOCKED);
|
|
setSingleAnimeBaseMorf(open_anm, 0.0f);
|
|
mProcVar0.field_0x3008 = 0;
|
|
field_0x2f99 = 5;
|
|
mProcVar4.field_0x3010 = 0;
|
|
} else {
|
|
mLinkAcch.ClrWallNone();
|
|
mLinkAcch.OffLineCheckNone();
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
onModeFlg(1);
|
|
offModeFlg(0x4000);
|
|
|
|
if (mProcVar2.field_0x300c == 0) {
|
|
setBlendMoveAnime(field_0x3478);
|
|
}
|
|
field_0x3198 = 1;
|
|
}
|
|
} else if (field_0x3198 == 0) {
|
|
if (mProcVar2.field_0x300c == 0) {
|
|
if (mProcVar5.field_0x3012 == 0) {
|
|
mProcVar5.field_0x3012 = 1;
|
|
} else {
|
|
field_0x2f99 = 5;
|
|
}
|
|
}
|
|
} else {
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
|
|
/* 8011B914-8011BA20 116254 010C+00 1/1 0/0 0/0 .text procCoLookWaitInit__9daAlink_cFv */
|
|
int daAlink_c::procCoLookWaitInit() {
|
|
if (!commonProcInitNotSameProc(PROC_LOOK_WAIT)) {
|
|
return 0;
|
|
}
|
|
|
|
onNoResetFlg0(FLG0_UNK_100000);
|
|
|
|
if (mGrabItemAcKeep.getActor() != NULL && (checkGrabAnime() || checkWolfGrabAnime())) {
|
|
onModeFlg(0x100000);
|
|
|
|
if (!checkWolf()) {
|
|
setWaterInAnmRate(&mUpperFrameCtrl[2], 1.0f);
|
|
}
|
|
}
|
|
|
|
mNormalSpeed = 0.0f;
|
|
|
|
if (checkWolf()) {
|
|
setBlendWolfMoveAnime(daAlinkHIO_wlMove_c0::m.field_0x94);
|
|
} else {
|
|
setBlendMoveAnime(daAlinkHIO_basic_c0::m.mAnmBlendFactor);
|
|
}
|
|
|
|
current.angle.y = shape_angle.y;
|
|
field_0x2f98 = 4;
|
|
return 1;
|
|
}
|
|
|
|
|
|
/* 8011BA20-8011BABC 116360 009C+00 1/0 0/0 0/0 .text procCoLookWait__9daAlink_cFv */
|
|
int daAlink_c::procCoLookWait() {
|
|
fopAc_ac_c* look_actor_p = getDemoLookActor();
|
|
|
|
if (look_actor_p != NULL) {
|
|
s16 target_angle;
|
|
s16 svar1 = cLib_targetAngleY(&field_0x34e0, &look_actor_p->eyePos) - shape_angle.y;
|
|
|
|
if (svar1 > 0x6000) {
|
|
target_angle = shape_angle.y + 0x6000;
|
|
} else if (svar1 < -0x6000) {
|
|
target_angle = shape_angle.y + -0x6000;
|
|
} else {
|
|
target_angle = shape_angle.y;
|
|
}
|
|
|
|
cLib_addCalcAngleS(&shape_angle.y, target_angle, 2, 0x800, 0x100);
|
|
}
|
|
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
return 1;
|
|
}
|
|
|
|
/* 8011BABC-8011BB40 1163FC 0084+00 1/0 0/0 0/0 .text procCoDemoPushPullWaitInit__9daAlink_cFv */
|
|
int daAlink_c::procCoDemoPushPullWaitInit() {
|
|
if (!commonProcInitNotSameProc(PROC_DEMO_PUSH_PULL_WAIT)) {
|
|
return 0;
|
|
}
|
|
|
|
if (checkWolf()) {
|
|
setSingleAnimeWolfBase(WANM_WAIT_PP);
|
|
} else {
|
|
setSingleAnimeBaseSpeed(ANM_WAIT_PUSH_PULL, daAlinkHIO_pushpull_c0::m.field_0x10,
|
|
daAlinkHIO_pushpull_c0::m.field_0x14);
|
|
}
|
|
|
|
mNormalSpeed = 0.0f;
|
|
return 1;
|
|
}
|
|
|
|
/* 8011BB40-8011BC14 116480 00D4+00 1/0 0/0 0/0 .text procCoDemoPushMoveInit__9daAlink_cFv */
|
|
int daAlink_c::procCoDemoPushMoveInit() {
|
|
if (!commonProcInitNotSameProc(PROC_DEMO_PUSH_MOVE)) {
|
|
return 0;
|
|
}
|
|
|
|
if (checkWolf()) {
|
|
if (mDemo.getParam0() != 0) {
|
|
setSingleAnimeWolfBase(WANM_PUSH);
|
|
} else {
|
|
setSingleAnimeWolf(WANM_PUSH_LIGHT, daAlinkHIO_wlPush_c0::m.field_0x8,
|
|
0.0f, 24, daAlinkHIO_wlPush_c0::m.field_0xC);
|
|
}
|
|
} else {
|
|
if (mDemo.getParam0() != 0) {
|
|
setSingleAnimeBase(ANM_PUSH);
|
|
} else {
|
|
setSingleAnimeBaseSpeed(ANM_PUSH_LIGHT, daAlinkHIO_pushpull_c0::m.field_0x18,
|
|
daAlinkHIO_pushpull_c0::m.field_0x1C);
|
|
}
|
|
}
|
|
|
|
mNormalSpeed = 0.0f;
|
|
return 1;
|
|
}
|
|
|
|
/* 8011BC14-8011BC74 116554 0060+00 2/2 0/0 0/0 .text setMonkeyMoveAnime__9daAlink_cFv */
|
|
void daAlink_c::setMonkeyMoveAnime() {
|
|
daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
|
|
|
|
if (mDemo.getParam0() == 0) {
|
|
field_0x2f92 = 0xFE;
|
|
field_0x2f93 = 0xFE;
|
|
frame_ctrl->setFrame(0.0f);
|
|
} else {
|
|
field_0x2f92 = 2;
|
|
field_0x2f93 = 5;
|
|
frame_ctrl->setFrame(1.0f);
|
|
}
|
|
|
|
getNowAnmPackUnder(UNDER_0)->setFrame(frame_ctrl->getFrame());
|
|
field_0x3088 = mDemo.getParam1();
|
|
shape_angle.x = field_0x3088 >> 1; // divide by 2
|
|
}
|
|
|
|
/* 8011BC74-8011BD18 1165B4 00A4+00 1/0 0/0 0/0 .text procMonkeyMoveInit__9daAlink_cFv */
|
|
int daAlink_c::procMonkeyMoveInit() {
|
|
if (!commonProcInitNotSameProc(PROC_MONKEY_MOVE)) {
|
|
return 0;
|
|
}
|
|
|
|
current.angle.y = shape_angle.y;
|
|
setSpecialGravity(0.0f, maxFallSpeed, 0);
|
|
|
|
f32 tmp_0 = 0.0f;
|
|
speed.y = tmp_0;
|
|
mNormalSpeed = tmp_0;
|
|
deleteEquipItem(FALSE, FALSE);
|
|
|
|
if (!checkWolf()) {
|
|
setSingleAnimeBaseSpeed(ANM_ROPE_SWING, 0.0f, 3.0f);
|
|
setMonkeyMoveAnime();
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* 8011BD18-8011BD6C 116658 0054+00 1/0 0/0 0/0 .text procMonkeyMove__9daAlink_cFv */
|
|
int daAlink_c::procMonkeyMove() {
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
|
|
if (!checkWolf()) {
|
|
setMonkeyMoveAnime();
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
/* 8011BD6C-8011BDF0 1166AC 0084+00 1/0 0/0 0/0 .text procDemoBoomerangCatchInit__9daAlink_cFv */
|
|
int daAlink_c::procDemoBoomerangCatchInit() {
|
|
if (!commonProcInitNotSameProc(PROC_DEMO_BOOMERANG_CATCH)) {
|
|
return 0;
|
|
}
|
|
|
|
mNormalSpeed = 0.0f;
|
|
deleteEquipItem(FALSE, FALSE);
|
|
mEquipItem = BOOMERANG;
|
|
setItemActor();
|
|
setSingleAnimeParam(ANM_BOOMERANG_CATCH, &daAlinkHIO_boom_c0::m.mCatchAnm);
|
|
return 1;
|
|
}
|
|
|
|
/* 8011BDF0-8011BE54 116730 0064+00 1/0 0/0 0/0 .text procDemoBoomerangCatch__9daAlink_cFv */
|
|
int daAlink_c::procDemoBoomerangCatch() {
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
|
|
if (checkAnmEnd(mUnderFrameCtrl)) {
|
|
setBlendMoveAnime(daAlinkHIO_basic_c0::m.mAnmBlendFactor);
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
/* 8011BE54-8011C1B4 116794 0360+00 2/2 0/0 0/0 .text procCoDeadInit__9daAlink_cFi */
|
|
int daAlink_c::procCoDeadInit(int param_0) {
|
|
if (!commonProcInitNotSameProc(PROC_DEAD)) {
|
|
return 1;
|
|
}
|
|
|
|
dComIfGp_event_compulsory(this, NULL, 0xFFFF);
|
|
mDemo.setSpecialDemoType();
|
|
mNormalSpeed = 0.0f;
|
|
mDamageTimer = 0;
|
|
|
|
if (checkWolf()) {
|
|
mProcVar4.field_0x3010 = 2;
|
|
} else {
|
|
mProcVar4.field_0x3010 = 2;
|
|
}
|
|
|
|
setDeadRideSyncPos();
|
|
|
|
if (checkNoResetFlg2(FLG2_FORCE_GAMEOVER)) {
|
|
if (param_0) {
|
|
if (checkWolf()) {
|
|
setSingleAnimeWolfBaseSpeed(WANM_WAIT, daAlinkHIO_wlMove_c0::m.field_0x70, 3.0f);
|
|
} else {
|
|
setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed, 3.0f);
|
|
}
|
|
}
|
|
|
|
field_0x3478 = 0.38f;
|
|
} else {
|
|
if (checkWolf()) {
|
|
if (checkModeFlg(0x40000)) {
|
|
setSingleAnimeWolfBase(WANM_SWIM_DIE);
|
|
setFaceBasicTexture(FTANM_UNK_9D);
|
|
dComIfGp_setPlayerStatus0(0, 0x100000);
|
|
voiceStart(Z2SE_WL_V_DIE_WATER);
|
|
} else {
|
|
setSingleAnimeWolfBase(WANM_DIE);
|
|
setFaceBasicTexture(FTANM_UNK_9C);
|
|
voiceStart(Z2SE_WL_V_DIE);
|
|
}
|
|
} else {
|
|
daAlink_ANM die_anm;
|
|
|
|
if (checkModeFlg(0x400)) {
|
|
if (checkReinRide()) {
|
|
die_anm = ANM_HORSE_DIE;
|
|
|
|
if (checkHorseUnderItemAnime()) {
|
|
resetUnderAnime(UNDER_2, -1.0f);
|
|
}
|
|
|
|
if (checkHorseRide()) {
|
|
daHorse_c* horse_p = dComIfGp_getHorseActor();
|
|
horse_p->changeOriginalDemo();
|
|
horse_p->changeDemoMode(5, 0);
|
|
} else {
|
|
mRideAcKeep.getActor()->speedF = 0.0f;
|
|
}
|
|
}
|
|
|
|
voiceStart(Z2SE_AL_V_DIE_SHORT);
|
|
} else if (checkModeFlg(0x40000)) {
|
|
die_anm = ANM_SWIM_DIE;
|
|
dComIfGp_setPlayerStatus0(0, 0x100000);
|
|
voiceStart(Z2SE_AL_V_DIE_SHORT);
|
|
|
|
if (speed.y < 0.0f) {
|
|
speed.y = 0.0f;
|
|
}
|
|
} else {
|
|
die_anm = ANM_DIE;
|
|
onModeFlg(0x2000000);
|
|
field_0x33cc = 0.0f;
|
|
voiceStart(Z2SE_AL_V_DIE);
|
|
}
|
|
|
|
setSingleAnimeBase(die_anm);
|
|
}
|
|
|
|
field_0x3478 = 1.0f;
|
|
}
|
|
|
|
mProcVar3.field_0x300e = 0;
|
|
mProcVar0.field_0x3008 = 0;
|
|
dComIfGp_setPlayerStatus0(0, 0x20000000);
|
|
mMsgClassID = 0;
|
|
setFootEffectProcType(4);
|
|
mProcVar2.field_0x300c = 0;
|
|
field_0x3080 = 0;
|
|
mProcVar5.field_0x3012 = 0x3F;
|
|
field_0x3198 = -1;
|
|
return 1;
|
|
}
|
|
|
|
|
|
/* 8011C1B4-8011C62C 116AF4 0478+00 1/0 0/0 0/0 .text procCoDead__9daAlink_cFv */
|
|
int daAlink_c::procCoDead() {
|
|
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
|
|
|
|
if (mProcVar0.field_0x3008 == 0) {
|
|
setDeadRideSyncPos();
|
|
mProcVar0.field_0x3008 = 1;
|
|
return 1;
|
|
}
|
|
|
|
if (mMsgClassID == 0) {
|
|
mMsgClassID = d_GameOver_Create(0);
|
|
if (mMsgClassID == 0) {
|
|
return 1;
|
|
}
|
|
|
|
mDoAud_bgmStart(Z2BGM_GAME_OVER);
|
|
}
|
|
|
|
if (!checkNoResetFlg2(FLG2_FORCE_GAMEOVER)) {
|
|
mProcVar3.field_0x300e++;
|
|
if (mProcVar3.field_0x300e == 2) {
|
|
dCam_getBody()->StartEventCamera(9, fopAcM_GetID(this), 0);
|
|
} else if (mProcVar3.field_0x300e > 10) {
|
|
mProcVar3.field_0x300e = 10;
|
|
}
|
|
|
|
if (!checkModeFlg(0x400)) {
|
|
if (checkModeFlg(0x40000)) {
|
|
if (checkNoResetFlg0(FLG0_UNK_80) && current.pos.y > mWaterY) {
|
|
current.pos.y = mWaterY;
|
|
onNoResetFlg0(FLG0_SWIM_UP);
|
|
}
|
|
} else {
|
|
field_0x33cc = (frameCtrl_p->getFrame() - 101.0f) / 19.0f;
|
|
|
|
if ((!checkWolf() && frameCtrl_p->checkPass(122.0f)) ||
|
|
(checkWolf() && frameCtrl_p->checkPass(114.0f)))
|
|
{
|
|
field_0x2f9d = 4;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
setDeadRideSyncPos();
|
|
|
|
if (checkAnmEnd(frameCtrl_p) || ((checkModeFlg(0x40000) && frameCtrl_p->getFrame() > 70.0f) ||
|
|
checkNoResetFlg2(FLG2_FORCE_GAMEOVER)))
|
|
{
|
|
cLib_chaseF(&field_0x3478, 0.0f, 0.01f);
|
|
if (field_0x3478 < 0.38f) {
|
|
d_GameOver_animeStart(mMsgClassID);
|
|
}
|
|
|
|
if (mProcVar2.field_0x300c == 0 && d_GameOver_CheckDelete(mMsgClassID)) {
|
|
mProcVar2.field_0x300c = 1;
|
|
}
|
|
|
|
if (mProcVar2.field_0x300c != 0 && dComIfGp_getGameoverStatus() == 2 &&
|
|
!checkNoResetFlg0(FLG0_UNK_4000))
|
|
{
|
|
dComIfGp_setItemLifeCount(-(dComIfGs_getLife() - 12), 0);
|
|
|
|
u32 var_r31;
|
|
int room_no = fopAcM_GetRoomNo(this);
|
|
if (checkStageName("F_SP102") || (checkStageName("D_MN08D") && room_no == 55)) {
|
|
var_r31 = 0;
|
|
} else {
|
|
var_r31 = 5;
|
|
}
|
|
|
|
int var_r30 = -1;
|
|
int var_r3_2;
|
|
if (checkStageName("D_MN09A") && room_no == 50 &&
|
|
(dComIfG_play_c::getLayerNo(0) == 0 || dComIfG_play_c::getLayerNo(0) == 1))
|
|
{
|
|
var_r3_2 = dComIfG_play_c::getLayerNo(0) + 1;
|
|
} else if (checkBossRoom() &&
|
|
(((room_no == 50 && !dComIfGs_isStageBossEnemy()) ||
|
|
(room_no == 51 && !dComIfGs_isStageMiddleBoss())) ||
|
|
(checkStageName("D_MN08C") && !dComIfGs_isEventBit(0x2880))))
|
|
{
|
|
var_r3_2 = 0;
|
|
} else if (mProcVar5.field_0x3012 != 0x3F) {
|
|
var_r3_2 = mProcVar5.field_0x3012;
|
|
var_r30 = field_0x3198;
|
|
} else {
|
|
startRestartRoom(var_r31, 0xC9, 0, 1);
|
|
return 1;
|
|
}
|
|
|
|
onNoResetFlg0(FLG0_UNK_4000);
|
|
dStage_changeScene(var_r3_2, 0.0f, var_r31, var_r30, shape_angle.y, -1);
|
|
}
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
|
|
/* 8011C62C-8011C760 116F6C 0134+00 1/0 0/0 0/0 .text procCoLookAroundInit__9daAlink_cFv
|
|
*/
|
|
int daAlink_c::procCoLookAroundInit() {
|
|
if (!commonProcInitNotSameProc(PROC_LOOK_AROUND)) {
|
|
return 0;
|
|
}
|
|
|
|
mProcVar3.field_0x300e = 0;
|
|
|
|
if (checkWolf()) {
|
|
setSingleAnimeWolfBase(WANM_ENTRANCE);
|
|
setFaceBasicTexture(FTANM_UNK_A0);
|
|
field_0x3588 = l_wolfBaseAnime;
|
|
voiceStart(Z2SE_WL_V_ENTRANCE);
|
|
} else {
|
|
if (mDemo.getParam0() == 1) {
|
|
setSingleAnimeBase(ANM_ODOROKU);
|
|
field_0x3588 = l_halfAtnWaitBaseAnime;
|
|
} else {
|
|
setSingleAnimeBase(ANM_ENTRANCE);
|
|
field_0x3588 = l_waitBaseAnime;
|
|
mProcVar3.field_0x300e = 1;
|
|
}
|
|
}
|
|
|
|
mNormalSpeed = 0.0f;
|
|
mProcVar2.field_0x300c = 0;
|
|
return 1;
|
|
}
|
|
|
|
/* 8011C760-8011C81C 1170A0 00BC+00 1/0 0/0 0/0 .text procCoLookAround__9daAlink_cFv */
|
|
int daAlink_c::procCoLookAround() {
|
|
daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
|
|
|
|
if (mProcVar2.field_0x300c == 0) {
|
|
mProcVar2.field_0x300c = 1;
|
|
} else {
|
|
field_0x2f99 = 4;
|
|
}
|
|
|
|
if (checkAnmEnd(frame_ctrl)) {
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
} else if (mProcVar3.field_0x300e != 0 && frame_ctrl->checkPass(5.0f)) {
|
|
voiceStart(Z2SE_AL_V_ENTRANCE);
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* 8011C81C-8011C890 11715C 0074+00 1/0 0/0 0/0 .text procBossAtnWaitInit__9daAlink_cFv
|
|
*/
|
|
int daAlink_c::procBossAtnWaitInit() {
|
|
if (!commonProcInitNotSameProc(PROC_BOSS_ATN_WAIT)) {
|
|
return 0;
|
|
}
|
|
|
|
setSingleAnimeBase(ANM_APPEARANCE);
|
|
voiceStart(Z2SE_AL_V_APPEARANCE);
|
|
mNormalSpeed = 0.0f;
|
|
return 1;
|
|
}
|
|
|
|
/* 8011C890-8011C904 1171D0 0074+00 1/0 0/0 0/0 .text procCoQuakeWaitInit__9daAlink_cFv
|
|
*/
|
|
int daAlink_c::procCoQuakeWaitInit() {
|
|
if (!commonProcInitNotSameProc(PROC_QUAKE_WAIT)) {
|
|
return 0;
|
|
}
|
|
|
|
if (checkWolf()) {
|
|
setSingleAnimeWolfBase(WANM_WAIT_WIND);
|
|
} else {
|
|
setSingleAnimeBase(ANM_WAIT_WIND);
|
|
}
|
|
|
|
mNormalSpeed = 0.0f;
|
|
return 1;
|
|
}
|
|
|
|
/* 8011C904-8011C9D0 117244 00CC+00 1/0 0/0 0/0 .text procCoCaughtInit__9daAlink_cFv */
|
|
int daAlink_c::procCoCaughtInit() {
|
|
u32 chk_40000 = checkModeFlg(0x40000);
|
|
if (!commonProcInitNotSameProc(PROC_CAUGHT)) {
|
|
return 0;
|
|
}
|
|
|
|
if (checkWolf()) {
|
|
setSingleAnimeWolfBaseMorf(WANM_WAIT_START, daAlinkHIO_wlDamCaught_c0::m.field_0x8);
|
|
} else {
|
|
setSingleAnimeBaseMorf(ANM_WAIT_START, daAlinkHIO_damCaught_c0::m.field_0x1C);
|
|
}
|
|
|
|
if (chk_40000) {
|
|
onModeFlg(0x40000);
|
|
}
|
|
|
|
f32 tmp_0 = 0.0f;
|
|
mNormalSpeed = tmp_0;
|
|
speed.y = tmp_0;
|
|
setSpecialGravity(tmp_0, maxFallSpeed, 0);
|
|
mBodyAngle.z = 0;
|
|
return 1;
|
|
}
|
|
|
|
/* 8011C9D0-8011CA4C 117310 007C+00 1/0 0/0 0/0 .text procLookUpInit__9daAlink_cFv */
|
|
int daAlink_c::procLookUpInit() {
|
|
if (!commonProcInitNotSameProc(PROC_LOOK_UP)) {
|
|
return 0;
|
|
}
|
|
|
|
setSingleAnimeBase(ANM_GET_A_WAIT2);
|
|
mNormalSpeed = 0.0f;
|
|
field_0x3588 = l_waitBaseAnime;
|
|
field_0x2f99 = 12;
|
|
return 1;
|
|
}
|
|
|
|
/* 8011CA4C-8011CA98 11738C 004C+00 1/0 0/0 0/0 .text procLookUp__9daAlink_cFv */
|
|
int daAlink_c::procLookUp() {
|
|
if (field_0x2f99 != 12) {
|
|
field_0x2f99 = 4;
|
|
}
|
|
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
return 1;
|
|
}
|
|
|
|
/* 8011CA98-8011CB20 1173D8 0088+00 1/0 0/0 0/0 .text procLookUpToGetItemInit__9daAlink_cFv */
|
|
int daAlink_c::procLookUpToGetItemInit() {
|
|
if (!commonProcInitNotSameProc(PROC_LOOK_UP_TO_GET_ITEM)) {
|
|
return 0;
|
|
}
|
|
|
|
setSingleAnimeBaseMorf(ANM_GET_HOLDOUT, 2.0f);
|
|
mProcVar2.field_0x300c = 0;
|
|
mNormalSpeed = 0.0f;
|
|
field_0x3588 = l_waitBaseAnime;
|
|
field_0x2f99 = 12;
|
|
return 1;
|
|
}
|
|
|
|
/* 8011CB20-8011CBD4 117460 00B4+00 1/0 0/0 0/0 .text procLookUpToGetItem__9daAlink_cFv
|
|
*/
|
|
int daAlink_c::procLookUpToGetItem() {
|
|
if (field_0x2f99 != 12) {
|
|
field_0x2f99 = 4;
|
|
}
|
|
|
|
if (mProcVar2.field_0x300c == 0 && checkAnmEnd(mUpperFrameCtrl)) {
|
|
mProcVar2.field_0x300c = 1;
|
|
setSingleAnimeBase(ANM_GET_A_WAIT);
|
|
setFaceBasicBck(0x133);
|
|
field_0x2f99 = 12;
|
|
} else if (mProcVar2.field_0x300c != 0) {
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* 8011CBD4-8011CCA8 117514 00D4+00 1/0 0/0 0/0 .text procHandPatInit__9daAlink_cFv */
|
|
int daAlink_c::procHandPatInit() {
|
|
if (!commonProcInitNotSameProc(PROC_HAND_PAT)) {
|
|
return 0;
|
|
}
|
|
|
|
setSingleAnime(ANM_COW_THROW_LEFT, 1.0f, 50.0f, -1, 3.0f);
|
|
field_0x2f92 = 0xFE;
|
|
field_0x2f93 = 0xFE;
|
|
field_0x2f99 = 13;
|
|
field_0x3588.set(-l_halfAtnWaitBaseAnime.x, l_halfAtnWaitBaseAnime.y,
|
|
-l_halfAtnWaitBaseAnime.z);
|
|
mNormalSpeed = 0.0f;
|
|
|
|
setOldRootQuaternion(0, -0x8000, 0);
|
|
shape_angle.y += 0x8000;
|
|
mProcVar2.field_0x300c = 0;
|
|
mProcVar3.field_0x300e = 0;
|
|
return 1;
|
|
}
|
|
|
|
/* 8011CCA8-8011CDE0 1175E8 0138+00 1/0 0/0 0/0 .text procHandPat__9daAlink_cFv */
|
|
int daAlink_c::procHandPat() {
|
|
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
|
|
|
|
if (mProcVar2.field_0x300c != 0) {
|
|
if (checkAnmEnd(frameCtrl_p)) {
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
|
|
if (mProcVar3.field_0x300e == 0) {
|
|
setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed, 3.0f);
|
|
mProcVar3.field_0x300e = 1;
|
|
}
|
|
}
|
|
} else {
|
|
if (field_0x2f99 != 13) {
|
|
field_0x2f99 = 5;
|
|
}
|
|
|
|
if (checkAnmEnd(frameCtrl_p)) {
|
|
setSingleAnimeBase(ANM_WAIT_B_TO_A);
|
|
mProcVar2.field_0x300c = 1;
|
|
shape_angle.y += 0x8000;
|
|
field_0x2fe6 = shape_angle.y;
|
|
current.angle.y = shape_angle.y;
|
|
setOldRootQuaternion(0, -0x8000, 0);
|
|
field_0x2f99 = 0x30;
|
|
} else if (frameCtrl_p->getFrame() >= 81.0f) {
|
|
field_0x2f92 = 1;
|
|
field_0x2f93 = 6;
|
|
}
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
|
|
/* 8011CDE0-8011CF60 117720 0180+00 1/0 0/0 0/0 .text procCoFogDeadInit__9daAlink_cFv */
|
|
int daAlink_c::procCoFogDeadInit() {
|
|
if (!commonProcInitNotSameProc(PROC_FOG_DEAD)) {
|
|
return 1;
|
|
}
|
|
|
|
mNormalSpeed = 0.0f;
|
|
mDamageTimer = 0;
|
|
|
|
if (mLinkAcch.ChkGroundHit()) {
|
|
if (checkWolf()) {
|
|
setSingleAnimeWolfBase(WANM_DIE);
|
|
setFaceBasicTexture(FTANM_UNK_9C);
|
|
voiceStart(Z2SE_WL_V_DIE);
|
|
} else {
|
|
setSingleAnimeBase(ANM_DIE);
|
|
voiceStart(Z2SE_AL_V_DIE);
|
|
}
|
|
} else {
|
|
setJumpMode();
|
|
|
|
if (checkWolf()) {
|
|
setSingleAnimeWolfBaseSpeed(WANM_FALL_LAND, 0.0f,
|
|
daAlinkHIO_wlDamFall_c0::m.field_0x3C);
|
|
} else {
|
|
setSingleAnimeBaseSpeed(ANM_DMG_FALL, 0.0f,
|
|
daAlinkHIO_damFall_c0::m.mFallAnmMorf);
|
|
}
|
|
}
|
|
|
|
field_0x3194 = 0;
|
|
|
|
dCam_getBody()->StartEventCamera(0x13, fopAcM_GetID(this), "Type", 1, &field_0x3194, 0);
|
|
mProcVar0.field_0x3008 = 60;
|
|
mProcVar2.field_0x300c = 0;
|
|
return 1;
|
|
}
|
|
|
|
/* 8011CF60-8011D0A0 1178A0 0140+00 1/0 0/0 0/0 .text procCoFogDead__9daAlink_cFv */
|
|
int daAlink_c::procCoFogDead() {
|
|
if (mLinkAcch.ChkGroundHit() && checkModeFlg(0x2)) {
|
|
offModeFlg(0x2);
|
|
|
|
if (checkWolf()) {
|
|
setSingleAnimeWolfBase(WANM_DIE);
|
|
setFaceBasicTexture(FTANM_UNK_9C);
|
|
voiceStart(Z2SE_WL_V_DIE);
|
|
} else {
|
|
setSingleAnimeBase(ANM_DIE);
|
|
voiceStart(Z2SE_AL_V_DIE);
|
|
}
|
|
}
|
|
|
|
if (mProcVar0.field_0x3008 > 0) {
|
|
mProcVar0.field_0x3008--;
|
|
} else if (mProcVar0.field_0x3008 == 0) {
|
|
if (dStage_changeScene(daTagMist_c::getPlayerNo(), 0.0f, 5, fopAcM_GetRoomNo(this),
|
|
shape_angle.y, -1))
|
|
{
|
|
seStartSystem(Z2SE_FORCE_BACK);
|
|
mProcVar0.field_0x3008--;
|
|
}
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
|
|
/* 8011D0A0-8011D110 1179E0 0070+00 1/0 0/0 0/0 .text procWolfSmellWaitInit__9daAlink_cFv
|
|
*/
|
|
int daAlink_c::procWolfSmellWaitInit() {
|
|
if (!commonProcInitNotSameProc(PROC_WOLF_SMELL_WAIT)) {
|
|
return 1;
|
|
}
|
|
|
|
setSingleAnimeWolfBaseSpeed(WANM_SMELL, daAlinkHIO_wlChain_c0::m.field_0x54,
|
|
daAlinkHIO_wlChain_c0::m.field_0x58);
|
|
current.angle.y = shape_angle.y;
|
|
mNormalSpeed = 0.0f;
|
|
return 1;
|
|
}
|
|
|
|
/* 8011D110-8011D1F4 117A50 00E4+00 1/0 0/0 0/0 .text procCoNodInit__9daAlink_cFv */
|
|
int daAlink_c::procCoNodInit() {
|
|
if (!commonProcInitNotSameProc(PROC_NOD)) {
|
|
return 1;
|
|
}
|
|
|
|
if (checkWolf()) {
|
|
mProcVar2.field_0x300c = 1;
|
|
} else {
|
|
if (mDemo.getParam0() == 1) {
|
|
setUpperAnimeBase(0x24E);
|
|
setFacePriBck(0x15B);
|
|
setFacePriTexture(FTANM_UNK_8A);
|
|
} else {
|
|
setUpperAnimeBase(0xD1);
|
|
setUpperAnimeBase(0xD1);
|
|
setFacePriTexture(FTANM_UNK_75);
|
|
}
|
|
|
|
field_0x2f96 = 4;
|
|
field_0x2f97 = 10;
|
|
onNoResetFlg1(FLG1_UNK_10100000);
|
|
mProcVar2.field_0x300c = 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* 8011D1F4-8011D268 117B34 0074+00 1/0 0/0 0/0 .text procCoNod__9daAlink_cFv */
|
|
int daAlink_c::procCoNod() {
|
|
if (checkAnmEnd(&mUpperFrameCtrl[2])) {
|
|
mProcVar2.field_0x300c = 1;
|
|
resetUpperAnime(UPPER_2, 3.0f);
|
|
}
|
|
|
|
if (mProcVar2.field_0x300c != 0) {
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* 8011D268-8011D304 117BA8 009C+00 1/0 0/0 0/0 .text procCoEyeAwayInit__9daAlink_cFv */
|
|
int daAlink_c::procCoEyeAwayInit() {
|
|
if (!commonProcInitNotSameProc(PROC_EYE_AWAY)) {
|
|
return 1;
|
|
}
|
|
|
|
if (!checkWolf()) {
|
|
setUpperAnimeBase(0xD3);
|
|
setFacePriTexture(FTANM_UNK_77);
|
|
setFacePriBck(0x129);
|
|
field_0x2f96 = 4;
|
|
field_0x2f97 = 10;
|
|
onNoResetFlg1(FLG1_UNK_10100000);
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* 8011D304-8011D3CC 117C44 00C8+00 1/0 0/0 0/0 .text procCoGlareInit__9daAlink_cFv */
|
|
int daAlink_c::procCoGlareInit() {
|
|
if (!commonProcInitNotSameProc(PROC_GLARE)) {
|
|
return 1;
|
|
}
|
|
|
|
if (checkWolf()) {
|
|
mProcVar2.field_0x300c = 1;
|
|
} else {
|
|
setUpperAnimeBase(0xD2);
|
|
mUpperFrameCtrl[2].setAttribute(2);
|
|
mUpperFrameCtrl[2].setLoop(45);
|
|
setFacePriTexture(FTANM_UNK_76);
|
|
setFacePriBck(0x128);
|
|
mProcVar2.field_0x300c = 0;
|
|
field_0x3478 = -1.0f;
|
|
field_0x2f96 = 4;
|
|
field_0x2f97 = 10;
|
|
onNoResetFlg1(FLG1_UNK_10100000);
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* 8011D3CC-8011D474 117D0C 00A8+00 1/0 0/0 0/0 .text procCoGlare__9daAlink_cFv */
|
|
int daAlink_c::procCoGlare() {
|
|
daPy_frameCtrl_c* frame_ctrl = &mUpperFrameCtrl[2];
|
|
|
|
if (!checkWolf()) {
|
|
if (field_0x3478 > frame_ctrl->getFrame()) {
|
|
mProcVar2.field_0x300c = 1;
|
|
} else {
|
|
field_0x3478 = frame_ctrl->getFrame();
|
|
}
|
|
}
|
|
|
|
if (mProcVar2.field_0x300c != 0) {
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
}
|
|
|
|
if (!checkWolf() && frame_ctrl->getFrame() >= 24.0f) {
|
|
field_0x2f96 = 0;
|
|
field_0x2f97 = 5;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* 8011D474-8011D4D4 117DB4 0060+00 1/0 0/0 0/0 .text procGoatStopReadyInit__9daAlink_cFv
|
|
*/
|
|
int daAlink_c::procGoatStopReadyInit() {
|
|
if (!commonProcInitNotSameProc(PROC_GOAT_STOP_READY)) {
|
|
return 1;
|
|
}
|
|
|
|
setSingleAnimeBase(ANM_ATN_COW);
|
|
mNormalSpeed = 0.0f;
|
|
mProcVar2.field_0x300c = 0;
|
|
return 1;
|
|
}
|
|
|
|
/* 8011D4D4-8011D544 117E14 0070+00 1/0 0/0 0/0 .text procGoatStopReady__9daAlink_cFv */
|
|
int daAlink_c::procGoatStopReady() {
|
|
if (checkAnmEnd(mUnderFrameCtrl)) {
|
|
setSingleAnimeBase(ANM_COW_MOVE_LEFT_RIGHT);
|
|
mProcVar2.field_0x300c = 1;
|
|
}
|
|
|
|
if (mProcVar2.field_0x300c != 0) {
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* 8011D544-8011D64C 117E84 0108+00 2/1 0/0 0/0 .text procCoGetReadySitInit__9daAlink_cFv
|
|
*/
|
|
int daAlink_c::procCoGetReadySitInit() {
|
|
if (mProcID == PROC_GET_READY_SIT ||
|
|
(mProcID == PROC_PREACTION_UNEQUIP && !checkNoUpperAnime()))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
if (mEquipItem != NO_ITEM && !checkWolf()) {
|
|
return procPreActionUnequipInit(PROC_GET_READY_SIT, NULL);
|
|
}
|
|
|
|
commonProcInit(PROC_GET_READY_SIT);
|
|
|
|
if (checkWolf()) {
|
|
setSingleAnimeWolfBaseSpeed(WANM_WAIT, daAlinkHIO_wlMove_c0::m.field_0x70, 3.0f);
|
|
mProcVar2.field_0x300c = 1;
|
|
} else {
|
|
setSingleAnime(ANM_TRES_OPEN_SMALL, 1.0f, 36.0f, -1, 3.0f);
|
|
mProcVar2.field_0x300c = 0;
|
|
field_0x3588 = l_waitBaseAnime;
|
|
field_0x2f99 = 12;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* 8011D64C-8011D6D0 117F8C 0084+00 1/0 0/0 0/0 .text procCoGetReadySit__9daAlink_cFv */
|
|
int daAlink_c::procCoGetReadySit() {
|
|
if (checkAnmEnd(mUnderFrameCtrl)) {
|
|
mProcVar2.field_0x300c = 1;
|
|
}
|
|
|
|
if (!checkWolf() && field_0x2f99 != 12) {
|
|
field_0x2f99 = 4;
|
|
}
|
|
|
|
if (mProcVar2.field_0x300c != 0) {
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* 8011D6D0-8011D7D4 118010 0104+00 1/0 0/0 0/0 .text procCoTwGateInit__9daAlink_cFv */
|
|
int daAlink_c::procCoTwGateInit() {
|
|
if (!commonProcInitNotSameProc(PROC_TW_GATE)) {
|
|
return 1;
|
|
}
|
|
|
|
if (checkWolf()) {
|
|
setSingleAnimeWolfBase(WANM_TWGATE_PULL);
|
|
field_0x3588 = l_wolfBaseAnime;
|
|
voiceStart(Z2SE_WL_V_TW_PULL);
|
|
} else {
|
|
setSingleAnimeBase(ANM_TWGATE_PULLED_IN);
|
|
field_0x3588 = l_waitBaseAnime;
|
|
voiceStart(Z2SE_AL_V_TW_PULL);
|
|
}
|
|
|
|
field_0x33b0 = field_0x3588.y;
|
|
mNormalSpeed = 0.0f;
|
|
setSpecialGravity(0.0f, maxFallSpeed, 0);
|
|
speed.y = 0.0f;
|
|
return 1;
|
|
}
|
|
|
|
|
|
/* 8011D7D4-8011D82C 118114 0058+00 1/0 0/0 0/0 .text procCoTwGate__9daAlink_cFv */
|
|
int daAlink_c::procCoTwGate() {
|
|
if (mUnderFrameCtrl[0].checkAnmEnd()) {
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
}
|
|
|
|
field_0x2f99 = 7;
|
|
return 1;
|
|
}
|
|
|
|
/* 8011D82C-8011D8F8 11816C 00CC+00 1/0 0/0 0/0 .text procWolfSnowEscapeInit__9daAlink_cFv */
|
|
int daAlink_c::procWolfSnowEscapeInit() {
|
|
if (!commonProcInitNotSameProc(PROC_WOLF_SNOW_ESCAPE)) {
|
|
return 1;
|
|
}
|
|
|
|
current.angle.y = shape_angle.y + 0x8000;
|
|
setSingleAnimeWolf(WANM_TURN, 1.0f, 5.0f, 11, 3.0f);
|
|
voiceStart(Z2SE_WL_V_BREATH_JUMP);
|
|
field_0x2f99 = 13;
|
|
field_0x3588 = l_wolfBaseAnime;
|
|
field_0x3478 = 0.14285715f;
|
|
mProcVar2.field_0x300c = 0;
|
|
mProcVar3.field_0x300e = 0;
|
|
mNormalSpeed = 30.0f;
|
|
return 1;
|
|
}
|
|
|
|
/* 8011D8F8-8011DB04 118238 020C+00 1/0 0/0 0/0 .text procWolfSnowEscape__9daAlink_cFv */
|
|
int daAlink_c::procWolfSnowEscape() {
|
|
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
|
|
|
|
if (mProcVar3.field_0x300e != 0) {
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
return 1;
|
|
}
|
|
|
|
if (field_0x2f99 != 13) {
|
|
field_0x2f99 = 5;
|
|
}
|
|
|
|
f32 var_f1 = (0.5f - field_0x3478 * (frameCtrl_p->getFrame() - frameCtrl_p->getStart())) * 2.0f;
|
|
if (var_f1 < -1.0f) {
|
|
var_f1 = -1.0f;
|
|
}
|
|
|
|
field_0x3588.x = l_wolfBaseAnime.x * var_f1;
|
|
field_0x3588.z = l_wolfBaseAnime.z * var_f1;
|
|
|
|
if (checkAnmEnd(frameCtrl_p)) {
|
|
setOldRootQuaternion(0, -0x8000, 0);
|
|
shape_angle.y += 0x8000;
|
|
field_0x2fe6 = shape_angle.y;
|
|
current.angle.y = shape_angle.y;
|
|
|
|
if (mProcVar2.field_0x300c == 0) {
|
|
mProcVar2.field_0x300c = 1;
|
|
setSingleAnimeWolfParam(WANM_SLIDE_FORWARD_START, &daAlinkHIO_wlSlide_c0::m.field_0x0);
|
|
field_0x3588 = l_wolfBaseAnime;
|
|
field_0x3478 = 1.0f / (f32)frameCtrl_p->getEnd();
|
|
field_0x2f99 = 13;
|
|
voiceStart(Z2SE_WL_V_SLIP_ROLL);
|
|
} else {
|
|
setSingleAnimeWolfBaseSpeed(WANM_WAIT, daAlinkHIO_wlMove_c0::m.field_0x70, 3.0f);
|
|
field_0x2f99 = 0x30;
|
|
mProcVar3.field_0x300e = 1;
|
|
}
|
|
} else if (frameCtrl_p->checkPass(12.0f)) {
|
|
mNormalSpeed = 0.0f;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
|
|
/* 8011DB04-8011DB9C 118444 0098+00 1/0 0/0 0/0 .text procZoraMoveInit__9daAlink_cFv */
|
|
int daAlink_c::procZoraMoveInit() {
|
|
if (!commonProcInitNotSameProc(PROC_ZORA_MOVE)) {
|
|
return 1;
|
|
}
|
|
|
|
setSingleAnimeBase(ANM_HORSE_TAME_WAIT_B);
|
|
f32 tmp_0 = 0.0f;
|
|
speed.y = tmp_0;
|
|
mNormalSpeed = tmp_0;
|
|
setSpecialGravity(tmp_0, maxFallSpeed, 0);
|
|
|
|
deleteEquipItem(FALSE, TRUE);
|
|
mProcVar4.field_0x3010 = 5000;
|
|
mProcVar5.field_0x3012 = 0;
|
|
field_0x384c = (cXyz*)&l_boarBaseAnime;
|
|
return 1;
|
|
}
|
|
|
|
/* 8011DB9C-8011DDD4 1184DC 0238+00 1/0 0/0 0/0 .text procZoraMove__9daAlink_cFv */
|
|
int daAlink_c::procZoraMove() {
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
fopAc_ac_c* temp_r29 = dComIfGp_event_getPt1();
|
|
field_0x2f99 = 0x60;
|
|
|
|
if (temp_r29 != NULL) {
|
|
cXyz sp14;
|
|
cXyz sp8;
|
|
|
|
mDoMtx_stack_c::copy(((daNpc_zrA_c*)temp_r29)->getHeadMtx());
|
|
mDoMtx_stack_c::YrotM(-0x4000);
|
|
mDoMtx_stack_c::transM(0.0f, 30.0f, -90.0f);
|
|
mDoMtx_stack_c::multVecZero(¤t.pos);
|
|
mDoMtx_stack_c::multVecSR(&cXyz::BaseZ, &sp14);
|
|
mDoMtx_stack_c::multVecSR(&cXyz::BaseZ, &sp8);
|
|
shape_angle.y = temp_r29->shape_angle.y;
|
|
|
|
if (sp8.y < 0.0f) {
|
|
shape_angle.x = cM_atan2s(-sp14.y, -sp14.absXZ());
|
|
} else {
|
|
shape_angle.x = sp14.atan2sY_XZ();
|
|
}
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* 8011DDD4-8011DED8 118714 0104+00 1/0 0/0 0/0 .text procLookAroundTurnInit__9daAlink_cFv */
|
|
int daAlink_c::procLookAroundTurnInit() {
|
|
if (!commonProcInitNotSameProc(PROC_LOOK_AROUND_TURN)) {
|
|
return 0;
|
|
}
|
|
|
|
mNormalSpeed = 0.0f;
|
|
|
|
if (mDemo.getParam0() == 3) {
|
|
setSingleAnimeBase(ANM_ASHIMOTO);
|
|
} else if (mDemo.getParam0() == 2) {
|
|
setSingleAnime(ANM_DEMO_MHOP, 1.0f, 0.0f, 89, 3.0f);
|
|
} else if (mDemo.getParam0() == 1) {
|
|
setSingleAnime(ANM_DEMO_MHOP, 1.0f, 0.0f, 93, 3.0f);
|
|
setFaceBasicBtp(0x3DC);
|
|
setFaceBasicBtk(0x340);
|
|
setFaceBasicBck(0x143);
|
|
} else {
|
|
setSingleAnimeBase(ANM_DEMO_MHOP);
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* 8011DED8-8011DF68 118818 0090+00 1/0 0/0 0/0 .text procLookAroundTurn__9daAlink_cFv */
|
|
int daAlink_c::procLookAroundTurn() {
|
|
daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
|
|
|
|
if (checkAnmEnd(frame_ctrl)) {
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
} else if (frame_ctrl->checkPass(95.0f)) {
|
|
voiceStart(Z2SE_AL_V_D_MHOP);
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* 8011DF68-8011E060 1188A8 00F8+00 1/0 0/0 0/0 .text procTradeItemOutInit__9daAlink_cFv
|
|
*/
|
|
int daAlink_c::procTradeItemOutInit() {
|
|
if (!commonProcInitNotSameProc(PROC_TRADE_ITEM_OUT)) {
|
|
return 0;
|
|
}
|
|
|
|
field_0x3198 = setTalkStartBack(&field_0x37c8);
|
|
|
|
if (field_0x3198 == 0) {
|
|
mProcVar2.field_0x300c = setTradeItemAnime();
|
|
mNormalSpeed = 0.0f;
|
|
} else {
|
|
mProcVar2.field_0x300c = 0;
|
|
}
|
|
|
|
mProcVar3.field_0x300e = 0;
|
|
dComIfGp_setPlayerStatus0(0, 0x10);
|
|
mProcVar4.field_0x3010 = 1;
|
|
|
|
if (mDemo.getParam0() != 1) {
|
|
if (mDemo.getParam0() == 2) {
|
|
if (checkLetterItem(mDemo.getParam1())) {
|
|
mProcVar4.field_0x3010 = 0;
|
|
}
|
|
} else {
|
|
if (checkLetterItem(dComIfGp_event_getPreItemNo())) {
|
|
mProcVar4.field_0x3010 = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
mProcVar0.field_0x3008 = 30;
|
|
return 1;
|
|
}
|
|
|
|
/* 8011E060-8011E3D8 1189A0 0378+00 1/0 0/0 0/0 .text procTradeItemOut__9daAlink_cFv */
|
|
int daAlink_c::procTradeItemOut() {
|
|
setShapeAngleToTalkActor();
|
|
|
|
if (field_0x3198 != 0) {
|
|
cXyz sp24 = field_0x37c8 - current.pos;
|
|
int var_r30 = 0;
|
|
|
|
if (mLinkAcch.ChkWallHit()) {
|
|
dBgS_AcchCir* acchCir_p = mAcchCir;
|
|
|
|
for (int i = 0; i < 3; i++) {
|
|
if (acchCir_p->ChkWallHit()) {
|
|
var_r30 = cLib_distanceAngleS(acchCir_p->GetWallAngleY(), current.angle.y);
|
|
break;
|
|
}
|
|
acchCir_p++;
|
|
}
|
|
}
|
|
|
|
if (sp24.absXZ() < 0.001f ||
|
|
cLib_distanceAngleS(sp24.atan2sX_Z(), current.angle.y) > 0x4000 || var_r30 > 0x4000)
|
|
{
|
|
current.pos.x = field_0x37c8.x;
|
|
current.pos.z = field_0x37c8.z;
|
|
field_0x3198 = 0;
|
|
mProcVar2.field_0x300c = setTradeItemAnime();
|
|
mNormalSpeed = 0.0f;
|
|
} else if (mProcVar0.field_0x3008 != 0) {
|
|
mProcVar0.field_0x3008--;
|
|
} else {
|
|
field_0x3198 = 0;
|
|
mProcVar2.field_0x300c = setTradeItemAnime();
|
|
mNormalSpeed = 0.0f;
|
|
}
|
|
} else {
|
|
current.angle.y = shape_angle.y;
|
|
|
|
if (mProcVar3.field_0x300e != 0) {
|
|
if (mDemo.getParam0() == 1) {
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
} else {
|
|
daItemBase_c* item_partner_p = (daItemBase_c*)fopAcM_getItemEventPartner(this);
|
|
if (item_partner_p != NULL) {
|
|
if (!fpcM_IsCreating(fpcM_GetID(item_partner_p))) {
|
|
if (fopAcM_GetName(item_partner_p) == PROC_ITEM ||
|
|
fopAcM_GetName(item_partner_p) == PROC_Demo_Item)
|
|
{
|
|
field_0x280c.setData(item_partner_p);
|
|
item_partner_p->show();
|
|
|
|
if (mProcVar4.field_0x3010 == 0) {
|
|
mProcVar4.field_0x3010 = 1;
|
|
seStartOnlyReverb(Z2SE_AL_OPEN_LETTER);
|
|
}
|
|
|
|
if (mDemo.getParam0() == 2) {
|
|
onResetFlg1(RFLG1_UNK_100);
|
|
}
|
|
}
|
|
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
}
|
|
}
|
|
}
|
|
} else if (checkAnmEnd(mUnderFrameCtrl)) {
|
|
setSingleAnimeBase(ANM_TRADE_ITEM_WAIT);
|
|
onModeFlg(0x100);
|
|
mProcVar3.field_0x300e = 1;
|
|
} else {
|
|
setTradeItemOutHand();
|
|
}
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
|
|
/* 8011E3D8-8011E448 118D18 0070+00 2/2 0/0 0/0 .text checkLetterItem__9daAlink_cFi */
|
|
BOOL daAlink_c::checkLetterItem(int i_itemNo) {
|
|
return i_itemNo == LETTER || i_itemNo == BILL || i_itemNo == RAFRELS_MEMO ||
|
|
i_itemNo == TKS_LETTER || i_itemNo == ASHS_SCRIBBLING;
|
|
}
|
|
|
|
/* 8011E448-8011E57C 118D88 0134+00 1/1 0/0 0/0 .text procNotUseItemInit__9daAlink_cFi */
|
|
int daAlink_c::procNotUseItemInit(int param_0) {
|
|
if (!dComIfGp_event_compulsory(this, NULL, 0xFFFF)) {
|
|
return 0;
|
|
}
|
|
|
|
mDemo.setSpecialDemoType();
|
|
commonProcInit(PROC_NOT_USE_ITEM);
|
|
setSingleAnimeBase(ANM_TRADE_ITEM_PULL_OUT);
|
|
|
|
mNormalSpeed = 0.0f;
|
|
mMsgClassID = -1;
|
|
field_0x3198 = param_0;
|
|
mProcVar2.field_0x300c = 0;
|
|
mProcVar3.field_0x300e = 0;
|
|
current.angle.y = shape_angle.y;
|
|
field_0x3194 = 3;
|
|
|
|
dCam_getBody()->StartEventCamera(0x12, fopAcM_GetID(this), "Type", 1, &field_0x3194, 0);
|
|
keepItemData();
|
|
dComIfGp_setPlayerStatus1(0, 0x4000800);
|
|
|
|
if (checkLetterItem(param_0)) {
|
|
mProcVar4.field_0x3010 = 0;
|
|
} else {
|
|
mProcVar4.field_0x3010 = 1;
|
|
}
|
|
return 1;
|
|
}
|
|
|
|
|
|
/* 8011E57C-8011E6E0 118EBC 0164+00 1/0 0/0 0/0 .text procNotUseItem__9daAlink_cFv */
|
|
int daAlink_c::procNotUseItem() {
|
|
if (mProcVar2.field_0x300c == 0) {
|
|
u32 item_partner_id = fopAcM_createItemForPresentDemo(
|
|
¤t.pos, field_0x3198, 5, -1, fopAcM_GetRoomNo(this), &shape_angle, &scale);
|
|
dComIfGp_event_setItemPartnerId(item_partner_id);
|
|
mProcVar2.field_0x300c = 1;
|
|
}
|
|
|
|
if (mProcVar3.field_0x300e != 0) {
|
|
daItemBase_c* item_partner_p = (daItemBase_c*)fopAcM_getItemEventPartner(this);
|
|
#ifdef DEBUG
|
|
if (item_partner_p != NULL && fopAcM_GetName(item_partner_p) != PROC_ITEM &&
|
|
fopAcM_GetName(item_partner_p) != PROC_Demo_Item)
|
|
{
|
|
// "Present Item is not this Item!!! %d\n"
|
|
OSReport("差し出すアイテムがアイテムじゃない!!! %d\n",
|
|
fopAcM_GetName(item_partner_p));
|
|
JUT_ASSERT(5506, 0);
|
|
}
|
|
#endif
|
|
if (item_partner_p != NULL) {
|
|
if (!fpcM_IsCreating(fpcM_GetID(item_partner_p))) {
|
|
field_0x280c.setData(item_partner_p);
|
|
item_partner_p->show();
|
|
|
|
if (mProcVar4.field_0x3010 == 0) {
|
|
mProcVar4.field_0x3010 = 1;
|
|
seStartOnlyReverb(Z2SE_AL_OPEN_LETTER);
|
|
}
|
|
|
|
if (checkEndMessage(0x531)) {
|
|
returnKeepItemData();
|
|
resetSpecialEvent();
|
|
return 1;
|
|
}
|
|
}
|
|
}
|
|
} else if (checkAnmEnd(mUnderFrameCtrl)) {
|
|
setSingleAnimeBase(ANM_TRADE_ITEM_WAIT);
|
|
onModeFlg(0x100);
|
|
mProcVar3.field_0x300e = 1;
|
|
} else {
|
|
setTradeItemOutHand();
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* 8011E6E0-8011E748 119020 0068+00 1/0 0/0 0/0 .text procSwordReadyInit__9daAlink_cFv */
|
|
int daAlink_c::procSwordReadyInit() {
|
|
if (!commonProcInitNotSameProc(PROC_SWORD_READY)) {
|
|
return 0;
|
|
}
|
|
|
|
mNormalSpeed = 0.0f;
|
|
current.angle.y = shape_angle.y;
|
|
setSingleAnimeBase(ANM_DEMO_KAMAE);
|
|
mProcVar2.field_0x300c = 0;
|
|
return 1;
|
|
}
|
|
|
|
/* 8011E748-8011E83C 119088 00F4+00 1/0 0/0 0/0 .text procSwordReady__9daAlink_cFv */
|
|
int daAlink_c::procSwordReady() {
|
|
daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
|
|
|
|
if (checkAnmEnd(frame_ctrl)) {
|
|
if (mProcVar2.field_0x300c == 0) {
|
|
setDoubleAnime(0.0f, daAlinkHIO_noActAtnMove_c0::m.mWaitAnmSpeed,
|
|
daAlinkHIO_noActAtnMove_c0::m.mWaitAnmSpeed, ANM_WAIT_B, ANM_WAIT_B, 2,
|
|
3.0f);
|
|
}
|
|
|
|
mProcVar2.field_0x300c = 1;
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
} else if (mProcVar2.field_0x300c != 0) {
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
} else if (frame_ctrl->checkPass(10.0f)) {
|
|
voiceStart(Z2SE_AL_V_OUGI_KAMAE);
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* 8011E83C-8011E8E0 11917C 00A4+00 2/2 0/0 0/0 .text setSwordPushAnime__9daAlink_cFv */
|
|
void daAlink_c::setSwordPushAnime() {
|
|
daAlink_ANM anm_id = (daAlink_ANM)(mDemo.getParam0() + ANM_GANON_CHANCE);
|
|
if (field_0x3198 != anm_id) {
|
|
setSingleAnimeBase(anm_id);
|
|
field_0x2f99 = 13;
|
|
field_0x3198 = anm_id;
|
|
|
|
if (anm_id == ANM_GANON_CHANCE_WIN) {
|
|
voiceStart(Z2SE_AL_V_VS_GND_TUBA_WIN);
|
|
} else if (anm_id == ANM_GANON_CHANCE_LOSE) {
|
|
voiceStart(Z2SE_AL_V_VS_GND_TUBA_LOSE);
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 8011E8E0-8011E960 119220 0080+00 1/0 0/0 0/0 .text procSwordPushInit__9daAlink_cFv */
|
|
int daAlink_c::procSwordPushInit() {
|
|
if (!commonProcInitNotSameProc(PROC_SWORD_PUSH)) {
|
|
return 1;
|
|
}
|
|
|
|
mNormalSpeed = 0.0f;
|
|
current.angle.y = shape_angle.y;
|
|
field_0x3198 = 0;
|
|
setSwordPushAnime();
|
|
field_0x3588 = l_halfAtnWaitBaseAnime;
|
|
return 1;
|
|
}
|
|
|
|
/* 8011E960-8011E9F8 1192A0 0098+00 1/0 0/0 0/0 .text procSwordPush__9daAlink_cFv */
|
|
int daAlink_c::procSwordPush() {
|
|
field_0x2f99 = 4;
|
|
onEndResetFlg0(ERFLG0_UNK_8000000);
|
|
setSwordPushAnime();
|
|
|
|
if (field_0x3198 == 0x193) {
|
|
voiceStartLevel(Z2SE_AL_V_VS_GND_TUBA_A);
|
|
} else if (field_0x3198 == 0x194) {
|
|
voiceStartLevel(Z2SE_AL_V_VS_GND_TUBA_C);
|
|
} else if (field_0x3198 == 0x192) {
|
|
voiceStartLevel(Z2SE_AL_V_VS_GND_TUBA_B);
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* 8011E9F8-8011EA78 119338 0080+00 1/0 0/0 0/0 .text procGanonFinishInit__9daAlink_cFv
|
|
*/
|
|
int daAlink_c::procGanonFinishInit() {
|
|
if (!commonProcInitNotSameProc(PROC_GANON_FINISH)) {
|
|
return 1;
|
|
}
|
|
|
|
setSingleAnimeBase(ANM_GANON_FINISH);
|
|
|
|
f32 tmp_0 = 0.0f;
|
|
mNormalSpeed = tmp_0;
|
|
speed.y = tmp_0;
|
|
|
|
field_0x37c8 = current.pos;
|
|
onEndResetFlg1(ERFLG1_GANON_FINISH);
|
|
return 1;
|
|
}
|
|
|
|
/* 8011EA78-8011EAE8 1193B8 0070+00 1/0 0/0 0/0 .text procGanonFinish__9daAlink_cFv */
|
|
int daAlink_c::procGanonFinish() {
|
|
onEndResetFlg1(ERFLG1_GANON_FINISH);
|
|
current.pos = field_0x37c8;
|
|
|
|
if (checkAnmEnd(mUnderFrameCtrl)) {
|
|
setSingleAnimeBaseMorf(ANM_GANON_FINISH_WAIT, -1.0f);
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* 8011EAE8-8011EB8C 119428 00A4+00 1/0 0/0 0/0 .text procCutFastReadyInit__9daAlink_cFv
|
|
*/
|
|
int daAlink_c::procCutFastReadyInit() {
|
|
if (!commonProcInitNotSameProc(PROC_CUT_FAST_READY)) {
|
|
return 0;
|
|
}
|
|
|
|
mNormalSpeed = 0.0f;
|
|
current.angle.y = shape_angle.y;
|
|
setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed, 3.0f);
|
|
setUpperAnime(0x255, UPPER_2, daAlinkHIO_cut_c0::m.mEquipAnm.mSpeed, 12.0f,
|
|
daAlinkHIO_cut_c0::m.mEquipAnm.mEndFrame,
|
|
daAlinkHIO_cut_c0::m.mEquipAnm.mInterpolation);
|
|
onNoResetFlg0(FLG0_UNK_1000000);
|
|
return 1;
|
|
}
|
|
|
|
/* 8011EB8C-8011EBDC 1194CC 0050+00 1/0 0/0 0/0 .text procCutFastReady__9daAlink_cFv */
|
|
int daAlink_c::procCutFastReady() {
|
|
if (checkAnmEnd(&mUpperFrameCtrl[2])) {
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* 8011EBDC-8011EC60 11951C 0084+00 1/0 0/0 0/0 .text procMasterSwordStickInit__9daAlink_cFv */
|
|
int daAlink_c::procMasterSwordStickInit() {
|
|
if (!commonProcInitNotSameProc(PROC_MASTER_SWORD_STICK)) {
|
|
return 0;
|
|
}
|
|
|
|
setSingleAnimeBase(ANM_DEMO_MASTER_SWORD_STICK);
|
|
voiceStart(Z2SE_AL_V_MSTR_SW_STICK);
|
|
mNormalSpeed = 0.0f;
|
|
current.angle.y = shape_angle.y;
|
|
mProcVar2.field_0x300c = 0;
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* 8011EC60-8011ED18 1195A0 00B8+00 1/0 0/0 0/0 .text procMasterSwordStick__9daAlink_cFv
|
|
*/
|
|
int daAlink_c::procMasterSwordStick() {
|
|
daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
|
|
|
|
if (mProcVar2.field_0x300c != 0) {
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
} else if (checkAnmEnd(frame_ctrl)) {
|
|
mProcVar2.field_0x300c = 1;
|
|
setSingleAnimeBaseMorf(ANM_DEMO_MASTER_SWORD_WAIT, -1.0f);
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
} else if (frame_ctrl->getFrame() >= 32.0f) {
|
|
field_0x2f93 = 5;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* 8011ED18-8011ED8C 119658 0074+00 1/0 0/0 0/0 .text procMasterSwordPullInit__9daAlink_cFv */
|
|
int daAlink_c::procMasterSwordPullInit() {
|
|
if (!commonProcInitNotSameProc(PROC_MASTER_SWORD_PULL)) {
|
|
return 0;
|
|
}
|
|
|
|
setSingleAnimeBase(ANM_DEMO_MASTER_SWORD_PULL);
|
|
voiceStart(Z2SE_AL_V_MSTR_SW_PULLOUT);
|
|
mProcVar4.field_0x3010 = 0;
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* 8011ED8C-8011EE40 1196CC 00B4+00 1/0 0/0 0/0 .text procMasterSwordPull__9daAlink_cFv
|
|
*/
|
|
int daAlink_c::procMasterSwordPull() {
|
|
daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
|
|
|
|
if (checkAnmEnd(frame_ctrl)) {
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
} else if (frame_ctrl->getFrame() >= 36.0f) {
|
|
field_0x2f93 = 10;
|
|
} else if (frame_ctrl->getFrame() >= 9.0f) {
|
|
mProcVar4.field_0x3010 = 0;
|
|
} else if (frame_ctrl->getFrame() >= 1.0f) {
|
|
mProcVar4.field_0x3010 = 4;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* 8011EE40-8011EE94 119780 0054+00 5/5 0/0 0/0 .text checkLv7DungeonShop__9daAlink_cFv
|
|
*/
|
|
BOOL daAlink_c::checkLv7DungeonShop() {
|
|
return checkStageName("D_MN07") && dComIfGp_roomControl_getStayNo() == 16;
|
|
}
|
|
|
|
/* 8011EE94-8011EFB8 1197D4 0124+00 1/1 0/0 0/0 .text procDungeonWarpReadyInit__9daAlink_cFv */
|
|
int daAlink_c::procDungeonWarpReadyInit() {
|
|
if (!dComIfGp_event_compulsory(this, NULL, -1)) {
|
|
return 0;
|
|
}
|
|
|
|
u32 id;
|
|
if (checkItemSetButton(DUNGEON_EXIT) != 2) {
|
|
id = fopAcM_create(PROC_OBJ_TKS, 0, ¤t.pos, fopAcM_GetRoomNo(this), &shape_angle,
|
|
NULL, -1);
|
|
} else {
|
|
id = fopAcM_create(PROC_NPC_TKC, 2, ¤t.pos, fopAcM_GetRoomNo(this), &shape_angle,
|
|
NULL, -1);
|
|
}
|
|
|
|
if (id == -1) {
|
|
return 0;
|
|
}
|
|
|
|
mDemo.setSpecialDemoType();
|
|
commonProcInit(PROC_DUNGEON_WARP_READY);
|
|
setSingleAnimeBase(ANM_TRADE_ITEM_PULL_OUT);
|
|
mNormalSpeed = 0.0f;
|
|
current.angle.y = shape_angle.y;
|
|
field_0x32cc = id;
|
|
mProcVar2.field_0x300c = 0;
|
|
keepItemData();
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* 8011EFB8-8011F084 1198F8 00CC+00 1/0 0/0 0/0 .text procDungeonWarpReady__9daAlink_cFv
|
|
*/
|
|
int daAlink_c::procDungeonWarpReady() {
|
|
if (mProcVar2.field_0x300c != 0) {
|
|
fopAc_ac_c* temp_r3 = fopAcM_SearchByID(field_0x32cc);
|
|
if (temp_r3 != NULL) {
|
|
field_0x280c.setData(temp_r3);
|
|
|
|
if (fopAcM_GetName(temp_r3) == PROC_OBJ_TKS) {
|
|
((daObjTks_c*)temp_r3)->setStart();
|
|
} else {
|
|
((daNpcTkc_c*)temp_r3)->setStart();
|
|
}
|
|
}
|
|
} else if (checkAnmEnd(&mUnderFrameCtrl[0])) {
|
|
setSingleAnimeBase(ANM_TRADE_ITEM_WAIT);
|
|
onModeFlg(0x100);
|
|
mProcVar2.field_0x300c = 1;
|
|
} else {
|
|
setTradeItemOutHand();
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* 8011F084-8011F0F4 1199C4 0070+00 1/0 0/0 0/0 .text procDungeonWarpInit__9daAlink_cFv
|
|
*/
|
|
int daAlink_c::procDungeonWarpInit() {
|
|
if (!commonProcInitNotSameProc(PROC_DUNGEON_WARP)) {
|
|
return 0;
|
|
}
|
|
|
|
mProcVar2.field_0x300c = 0;
|
|
mProcVar5.field_0x3012 = 0;
|
|
setSpecialGravity(0.0f, maxFallSpeed, 0);
|
|
mProcVar3.field_0x300e = 0;
|
|
mProcVar4.field_0x3010 = 0;
|
|
|
|
return 1;
|
|
}
|
|
|
|
/* 8011F0F4-8011F360 119A34 026C+00 1/0 0/0 0/0 .text procDungeonWarp__9daAlink_cFv */
|
|
int daAlink_c::procDungeonWarp() {
|
|
mProcVar2.field_0x300c += 0x200;
|
|
|
|
if (mProcVar2.field_0x300c > 0x4000) {
|
|
mProcVar2.field_0x300c = 0x4000;
|
|
} else {
|
|
current.pos.y += 1.0f;
|
|
}
|
|
|
|
f32 sin = cM_ssin(mProcVar2.field_0x300c);
|
|
shape_angle.y += (s16)(14336.0f * sin);
|
|
mProcVar3.field_0x300e = 8.0f * sin + 24.0f * (1.0f - scale.x);
|
|
|
|
if (mProcVar5.field_0x3012 != 0) {
|
|
return 1;
|
|
} else {
|
|
if (mProcVar2.field_0x300c == 0x4000) {
|
|
if (mProcVar4.field_0x3010 == 0) {
|
|
dComIfGp_particle_set(0xA61, ¤t.pos, &tevStr, NULL, NULL);
|
|
mProcVar4.field_0x3010 = 1;
|
|
}
|
|
|
|
cLib_addCalc(&scale.x, 0.0f, 0.5f, 0.4f, 0.005f);
|
|
cLib_addCalc(&scale.y, 2.5f, 0.5f, 0.5f, 0.1f);
|
|
|
|
if (scale.x < 0.01f) {
|
|
onNoResetFlg0(FLG0_PLAYER_NO_DRAW);
|
|
if (checkItemGet(DUNGEON_EXIT, 1)) {
|
|
int escape =
|
|
dStage_stagInfo_GetEscapeWarp(dComIfGp_getStage()->getStagInfo());
|
|
dStage_changeScene(escape, 0.0f, 12, -1, shape_angle.y, -1);
|
|
dMeter2Info_warpOutProc();
|
|
} else {
|
|
dungeonReturnWarp();
|
|
dMeter2Info_warpInProc();
|
|
}
|
|
|
|
mProcVar5.field_0x3012 = 1;
|
|
}
|
|
current.pos.y += 5.0f;
|
|
field_0x2b98 = (1.0f - scale.y) * 100.0f;
|
|
} else if (mProcVar2.field_0x300c >= 0x2000) {
|
|
cLib_chaseF(&scale.x, 0.8f, 0.01f);
|
|
}
|
|
|
|
scale.z = scale.x;
|
|
mpLinkModel->setBaseScale(scale);
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
|
|
/* 8011F360-8011F460 119CA0 0100+00 2/1 0/0 0/0 .text procDungeonWarpSceneStartInit__9daAlink_cFv
|
|
*/
|
|
int daAlink_c::procDungeonWarpSceneStartInit() {
|
|
commonProcInit(PROC_DUNGEON_WARP_SCN_START);
|
|
|
|
setSpecialGravity(0.0f, maxFallSpeed, 0);
|
|
setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed,
|
|
daAlinkHIO_basic_c0::m.mAnmBlendFactor);
|
|
|
|
if (checkDungeon() && !checkLv7DungeonShop()) {
|
|
createNpcTks(¤t.pos, fopAcM_GetRoomNo(this), 4);
|
|
}
|
|
|
|
mProcVar2.field_0x300c = 0x4000;
|
|
mProcVar3.field_0x300e = 0x20;
|
|
mProcVar4.field_0x3010 = 0;
|
|
|
|
current.pos.y += 120.0f;
|
|
shape_angle.y += 0x7F7A;
|
|
|
|
scale.set(0.0f, 1.5f, 0.0f);
|
|
mpLinkModel->setBaseScale(scale);
|
|
return 1;
|
|
}
|
|
|
|
|
|
/* 8011F460-8011F5D4 119DA0 0174+00 1/0 0/0 0/0 .text procDungeonWarpSceneStart__9daAlink_cFv */
|
|
int daAlink_c::procDungeonWarpSceneStart() {
|
|
if (mProcVar4.field_0x3010 == 0) {
|
|
mProcVar4.field_0x3010 = 1;
|
|
seStartOnlyReverb(Z2SE_TKC_WARP_OUT);
|
|
}
|
|
|
|
if (fopOvlpM_IsPeek() == true) {
|
|
return 1;
|
|
}
|
|
|
|
BOOL var_r31 = cLib_chaseF(&scale.x, 1.0f, 0.05f);
|
|
scale.z = scale.x;
|
|
cLib_chaseF(&scale.y, 1.0f, 0.025f);
|
|
mpLinkModel->setBaseScale(scale);
|
|
|
|
if (!var_r31) {
|
|
current.pos.y -= 5.0f;
|
|
} else {
|
|
mProcVar2.field_0x300c -= 0x200;
|
|
if (mProcVar2.field_0x300c < 0) {
|
|
return checkNextAction(0);
|
|
}
|
|
|
|
current.pos.y -= 1.0f;
|
|
}
|
|
|
|
f32 sin = cM_ssin(mProcVar2.field_0x300c);
|
|
shape_angle.y += (s16)(sin * 14336.0f);
|
|
mProcVar3.field_0x300e = (sin * 8.0f) + ((1.0f - scale.x) * 24.0f);
|
|
return 1;
|
|
}
|
|
|
|
|
|
/* 8011F5D4-8011F658 119F14 0084+00 2/2 0/0 0/0 .text daAlink_searchPortal__FP10fopAc_ac_cPv */
|
|
static fopAc_ac_c* daAlink_searchPortal(fopAc_ac_c* i_actor, void* i_data) {
|
|
if (fopAcM_GetName(i_actor) == PROC_KYTAG04) {
|
|
cXyz* pos = (cXyz*)i_data;
|
|
if (i_actor->current.pos.abs2XZ(*pos) < 1.0f) {
|
|
return i_actor;
|
|
}
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
|
|
/* 8011F658-8011F7D8 119F98 0180+00 1/1 0/0 0/0 .text checkAcceptWarp__9daAlink_cFv */
|
|
bool daAlink_c::checkAcceptWarp() {
|
|
cM3dGPla plane;
|
|
|
|
if (mLinkAcch.ChkGroundHit() && !checkModeFlg(MODE_PLAYER_FLY) &&
|
|
!checkNoResetFlg0(FLG0_UNDERWATER))
|
|
{
|
|
if (!getSlidePolygon(&plane) && !checkForestOldCentury()) {
|
|
if (checkMidnaRide() || ((daMidna_c*)getMidnaActor())->checkPortalObjRide()) {
|
|
if ((checkField() || checkCastleTown()) && !checkStageName("R_SP161")) {
|
|
if ((checkWolf() && (checkModeFlg(MODE_UNK_1000) ||
|
|
dComIfGp_checkPlayerStatus0(0, 0x10))) ||
|
|
(!checkWolf() &&
|
|
(checkEventRun() || getMidnaActor()->checkMetamorphoseEnable()) &&
|
|
(checkModeFlg(4) || dComIfGp_checkPlayerStatus0(0, 0x10))))
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
|
|
/* 8011F7D8-8011F8B8 11A118 00E0+00 2/2 0/0 0/0 .text dungeonReturnWarp__9daAlink_cFv */
|
|
void daAlink_c::dungeonReturnWarp() {
|
|
cXyz pos = dComIfGs_getWarpPlayerPos();
|
|
s16 angle = dComIfGs_getWarpPlayerAngleY();
|
|
s8 room = dComIfGs_getWarpRoomNo();
|
|
char name[8];
|
|
strcpy(name, dComIfGs_getWarpStageName());
|
|
|
|
dComIfGs_setRestartRoom(pos, angle, room);
|
|
dComIfGp_setNextStage(name, -1, dComIfGs_getRestartRoomNo(), -1, 0.0f, 12, 0,
|
|
0, 0, 1, 0);
|
|
u32 data = setParamData(dComIfGs_getRestartRoomNo(), 0, 0xCA, 0);
|
|
dComIfGs_setRestartRoomParam(data);
|
|
}
|
|
|
|
/* 8011F8B8-8011F9EC 11A1F8 0134+00 1/0 0/0 0/0 .text skipPortalObjWarp__9daAlink_cFv */
|
|
void daAlink_c::skipPortalObjWarp() {
|
|
if (mProcID == PROC_WARP && mProcVar3.field_0x300e <= 0) {
|
|
return;
|
|
}
|
|
|
|
if (checkNoResetFlg3(FLG3_UNK_2000000) &&
|
|
(dComIfGp_TargetWarpPt_get() == 9 && dComIfGp_TransportWarp_check()))
|
|
{
|
|
dStage_changeScene(2, 0.0f, 0, fopAcM_GetRoomNo(this), shape_angle.y, -1);
|
|
} else {
|
|
u32 data = setParamData(dMeter2Info_getWarpRoomNo(), 0, 0xCA, 0);
|
|
dComIfGs_setTurnRestart(dMeter2Info_getWarpPos(), dMeter2Info_getWarpPlayerNo(),
|
|
dMeter2Info_getWarpRoomNo(), data);
|
|
dComIfGp_setNextStage(dMeter2Info_getWarpStageName(), -4, dMeter2Info_getWarpRoomNo(), -1,
|
|
0.0f, 0, 1, 0, shape_angle.y, 1, 0);
|
|
}
|
|
|
|
if (mProcID == PROC_WARP) {
|
|
mProcVar3.field_0x300e = -1;
|
|
}
|
|
}
|
|
|
|
/* 8011F9EC-8011FBC0 11A32C 01D4+00 1/1 0/0 0/0 .text checkWarpStart__9daAlink_cFv */
|
|
void daAlink_c::checkWarpStart() {
|
|
if (dMeter2Info_getWarpStatus() != 0) {
|
|
if (dMeter2Info_getWarpStatus() == WARP_STATUS_DECIDED_e ||
|
|
dComIfGp_event_compulsory(this, 0, 0xFFFF))
|
|
{
|
|
onNoResetFlg0(FLG0_UNK_4000);
|
|
if (dMeter2Info_getWarpStatus() == WARP_STATUS_DECIDED_e) {
|
|
const char* portal;
|
|
if (!checkMidnaRide()) {
|
|
if (dComIfGp_TargetWarpPt_get() == 3) {
|
|
eventInfo.setArchiveName("Obj_kbrg");
|
|
portal = kBridgePortal;
|
|
} else if (dComIfGp_TargetWarpPt_get() == 6) {
|
|
eventInfo.setArchiveName("Obj_obrg");
|
|
portal = oBridgePortal;
|
|
} else if (dComIfGp_TargetWarpPt_get() == 9) {
|
|
eventInfo.setArchiveName("M_VolcBom");
|
|
portal = volcBomPortal;
|
|
} else if (dComIfGp_TargetWarpPt_get() == 8) {
|
|
eventInfo.setArchiveName("SCanCrs");
|
|
portal = cannonPortal;
|
|
} else {
|
|
portal = defaultPortal;
|
|
}
|
|
} else {
|
|
dComIfGp_TargetWarpPt_set(0xFF);
|
|
portal = defaultPortal;
|
|
}
|
|
fopAcM_orderOtherEvent(this, portal, 0xFFFF, 1, 1);
|
|
} else {
|
|
mDemo.setSpecialDemoType();
|
|
if (dMeter2Info_getWarpStatus() == 1) {
|
|
stage_stag_info_class* stag_info = dComIfGp_getStageStagInfo();
|
|
u32 exitID = dStage_stagInfo_GetEscapeWarp(stag_info);
|
|
dStage_changeScene(exitID, 0.0f, 0, -1, shape_angle.y, -1);
|
|
} else {
|
|
dungeonReturnWarp();
|
|
}
|
|
}
|
|
}
|
|
g_meter2_info.resetWarpStatus();
|
|
}
|
|
}
|
|
|
|
/* 8011FBC0-8011FD4C 11A500 018C+00 3/3 0/0 0/0 .text warpModelTexScroll__9daAlink_cFv */
|
|
int daAlink_c::warpModelTexScroll() {
|
|
// NONMATCHING
|
|
return 0;
|
|
}
|
|
|
|
/* 8011FD4C-80120124 11A68C 03D8+00 2/2 0/0 0/0 .text procCoWarpInit__9daAlink_cFii */
|
|
int daAlink_c::procCoWarpInit(int param_0, int param_1) {
|
|
if (!commonProcInitNotSameProc(PROC_WARP)) {
|
|
return 0;
|
|
}
|
|
|
|
changeWarpMaterial(WARP_MAT_MODE_0);
|
|
mNormalSpeed = 0.0f;
|
|
deleteEquipItem(FALSE, TRUE);
|
|
|
|
if (checkWolf()) {
|
|
setSingleAnimeWolfBaseSpeed(WANM_WAIT, daAlinkHIO_wlMove_c0::m.field_0x70, 3.0f);
|
|
} else {
|
|
setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed, 3.0f);
|
|
}
|
|
|
|
u32 var_r29;
|
|
BOOL var_r27 = param_1 == 0 && ((checkStageName("F_SP125") && fopAcM_GetRoomNo(this) == 4) ||
|
|
(checkStageName("D_MN08") && fopAcM_GetRoomNo(this) == 0));
|
|
|
|
field_0x3478 = 0.0f;
|
|
mProcVar2.field_0x300c = param_0;
|
|
mProcVar5.field_0x3012 = 1;
|
|
mProcVar1.field_0x300a = 0;
|
|
mProcVar4.field_0x3010 = 0xFF;
|
|
field_0x3488 = 1.0f;
|
|
|
|
if (mProcVar2.field_0x300c == 0) {
|
|
field_0x3480 = -0.5f;
|
|
mProcVar0.field_0x3008 = 0;
|
|
|
|
if (checkWolf()) {
|
|
field_0x347c = 3.5f;
|
|
|
|
if (var_r27) {
|
|
field_0x32cc = 0x88C8;
|
|
getMidnaActor()->onSideWarp();
|
|
var_r29 = Z2SE_WOLF_WARP_IN_YOKO;
|
|
} else {
|
|
field_0x32cc = 0x9FB;
|
|
var_r29 = Z2SE_WOLF_WARP_IN_TATE;
|
|
}
|
|
|
|
if (param_1) {
|
|
if (!checkMidnaRide()) {
|
|
onPlayerNoDraw();
|
|
}
|
|
}
|
|
} else {
|
|
field_0x347c = 5.5f;
|
|
|
|
if (var_r27) {
|
|
field_0x32cc = 0x88C7;
|
|
var_r29 = Z2SE_AL_WARP_IN_YOKO;
|
|
} else {
|
|
var_r29 = Z2SE_AL_WARP_IN_TATE;
|
|
|
|
if (checkBossRoom() && fopAcM_GetRoomNo(this) == 50) {
|
|
char sp8[32];
|
|
strcpy(sp8, dComIfGp_getStartStageName());
|
|
|
|
for (int i = 0; i < 32; i++) {
|
|
s64 value = sp8[i];
|
|
|
|
if (value == 0) {
|
|
sp8[i - 1] = 0;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (checkItemGet(DUNGEON_EXIT, 1) ||
|
|
(checkItemGet(DUNGEON_BACK, 1) &&
|
|
strcmp(sp8, dComIfGs_getWarpStageName()) == 0))
|
|
{
|
|
dComIfGs_setItem(SLOT_18, NO_ITEM);
|
|
dComIfGs_resetLastWarpAcceptStage();
|
|
}
|
|
}
|
|
|
|
field_0x32cc = 0x9F4;
|
|
}
|
|
}
|
|
field_0x3484 = 1.0f;
|
|
} else {
|
|
field_0x347c = -0.5f;
|
|
mProcVar0.field_0x3008 = 45;
|
|
|
|
if (checkWolf()) {
|
|
field_0x3480 = 3.5f;
|
|
mProcVar5.field_0x3012 = 0;
|
|
field_0x3488 = -1.0f;
|
|
} else {
|
|
field_0x3480 = 5.5f;
|
|
var_r29 = Z2SE_AL_WARP_OUT;
|
|
setEmitter(field_0x3240, 0x9F3, ¤t.pos, &shape_angle);
|
|
}
|
|
|
|
field_0x3484 = 0.0f;
|
|
if (!mLinkAcch.ChkGroundHit()) {
|
|
setSpecialGravity(0.0f, maxFallSpeed, 0);
|
|
mProcVar1.field_0x300a = 1;
|
|
}
|
|
|
|
kytag04_class* kytag04_p =
|
|
(kytag04_class*)fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchPortal, ¤t.pos);
|
|
if (kytag04_p != NULL) {
|
|
mProcVar4.field_0x3010 = kytag04_p->mNeedDropNum;
|
|
}
|
|
}
|
|
|
|
if (field_0x3488 > 0.0f) {
|
|
seStartOnlyReverb(var_r29);
|
|
}
|
|
|
|
mProcVar3.field_0x300e = param_1;
|
|
warpModelTexScroll();
|
|
return 1;
|
|
}
|
|
|
|
|
|
/* 80120124-80120440 11AA64 031C+00 1/0 0/0 0/0 .text procCoWarp__9daAlink_cFv */
|
|
int daAlink_c::procCoWarp() {
|
|
if (mProcVar1.field_0x300a != 0 && mLinkAcch.ChkGroundHit()) {
|
|
mProcVar1.field_0x300a = 0;
|
|
|
|
f32 var_f1;
|
|
if (checkWolf()) {
|
|
var_f1 = daAlinkHIO_wlAutoJump_c0::m.field_0x58;
|
|
} else {
|
|
var_f1 = daAlinkHIO_autoJump_c0::m.mGravity;
|
|
}
|
|
|
|
setSpecialGravity(var_f1, maxFallSpeed, 1);
|
|
}
|
|
|
|
if (mDemo.getDemoMode() == 0x2D) {
|
|
if (mProcVar5.field_0x3012 == 0) {
|
|
mProcVar5.field_0x3012 = 1;
|
|
}
|
|
|
|
if (checkWolf() && mProcVar2.field_0x300c != 0) {
|
|
for (int i = 0; i < 6; i++) {
|
|
setEmitter(&field_0x3240[i], effName_39419[i], ¤t.pos, &shape_angle);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (mProcVar2.field_0x300c != 0 && !checkWolf()) {
|
|
setEmitter(&field_0x3240[0], 0x9F3, ¤t.pos, &shape_angle);
|
|
}
|
|
|
|
if (mProcVar5.field_0x3012 != 0 && field_0x3488 < 0.0f) {
|
|
seStartOnlyReverb(Z2SE_WOLF_WARP_OUT);
|
|
field_0x3488 = 1.0f;
|
|
}
|
|
|
|
if (mProcVar5.field_0x3012 != 0) {
|
|
if (mProcVar0.field_0x3008 != 0) {
|
|
mProcVar0.field_0x3008--;
|
|
} else if (warpModelTexScroll()) {
|
|
if (mProcVar2.field_0x300c != 0) {
|
|
if (mDemo.getDemoMode() == 0x2D) {
|
|
if (mProcVar1.field_0x300a != 0) {
|
|
if (field_0x3174 == 4) {
|
|
dComIfGp_setNextStage(dComIfGp_getStartStageName(), mProcVar4.field_0x3010,
|
|
fopAcM_GetRoomNo(this), -1, 0.0f, 5, 1, 0,
|
|
shape_angle.y, 1, 0);
|
|
changeOriginalDemo();
|
|
changeDemoMode(1, 0, 0, 0);
|
|
} else {
|
|
resetSpecialEvent();
|
|
}
|
|
|
|
return commonFallInit(1);
|
|
}
|
|
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
} else {
|
|
return checkWaitAction();
|
|
}
|
|
} else if (mProcVar3.field_0x300e != 0) {
|
|
skipPortalObjWarp();
|
|
} else {
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
}
|
|
} else if (mProcVar2.field_0x300c == 0 && !checkNoResetFlg0(FLG0_PLAYER_NO_DRAW)) {
|
|
cXyz sp10(current.pos.x, current.pos.y + (field_0x347c - -0.5f) * 30.0f, current.pos.z);
|
|
setEmitter(&field_0x3240[0], field_0x32cc, &sp10, &shape_angle);
|
|
}
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
|
|
/* 80120440-80120474 11AD80 0034+00 1/0 0/0 0/0 .text commonWaitTurnInit__9daAlink_cFv */
|
|
int daAlink_c::commonWaitTurnInit() {
|
|
if (checkWolf()) {
|
|
return procWolfWaitTurnInit();
|
|
} else {
|
|
return procWaitTurnInit();
|
|
}
|
|
}
|
|
|
|
/* 80120474-80120500 11ADB4 008C+00 2/1 0/0 0/0 .text commonGrabPutInit__9daAlink_cFv */
|
|
int daAlink_c::commonGrabPutInit() {
|
|
if (mGrabItemAcKeep.getActor() == NULL) {
|
|
if (mProcID != PROC_GRAB_STAND &&
|
|
(mProcID != PROC_WOLF_GRAB_PUT || !(mUnderFrameCtrl[0].getFrame() < field_0x3478)))
|
|
{
|
|
dComIfGp_evmng_cutEnd(field_0x3184);
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
if (checkWolf()) {
|
|
return procWolfGrabPutInit();
|
|
}
|
|
|
|
return procGrabPutInit();
|
|
}
|
|
|
|
/* 80120500-80120534 11AE40 0034+00 3/3 0/0 0/0 .text commonLargeDamageUpInit__9daAlink_cFiiss */
|
|
int daAlink_c::commonLargeDamageUpInit(int param_0, int param_1, s16 param_2, s16 param_3) {
|
|
if (checkWolf()) {
|
|
return procWolfLargeDamageUpInit(param_0, param_1, param_2, param_3);
|
|
} else {
|
|
return procLargeDamageUpInit(param_0, param_1, param_2, param_3);
|
|
}
|
|
}
|
|
|
|
/* 80120534-80120580 11AE74 004C+00 4/4 0/0 0/0 .text commonFallInit__9daAlink_cFi */
|
|
int daAlink_c::commonFallInit(int param_0) {
|
|
if (checkWolf()) {
|
|
return procWolfFallInit(param_0, daAlinkHIO_wlAutoJump_c0::m.field_0x54);
|
|
} else {
|
|
return procFallInit(param_0, daAlinkHIO_autoJump_c0::m.mFallInterpolation);
|
|
}
|
|
}
|