d_a_player_misc - Several matches/close matches across several files. (#736)

Co-authored-by: ‎ ‎ ‎ <‎ ‎ ‎>
This commit is contained in:
123456789758
2025-04-08 17:41:27 -04:00
committed by GitHub
parent cd777aa35b
commit 072cb3a441
9 changed files with 1090 additions and 59 deletions
+1
View File
@@ -158,6 +158,7 @@ public:
daPyRFlg0_GRAB_PUT_START = 0x00400000,
daPyRFlg0_TACT_INPUT = 0x01000000,
daPyRFlg0_FAIRY_USE = 0x02000000,
daPyRFlg0_UNK4000000 = 0x04000000,
daPyRFlg0_UNK8000000 = 0x08000000,
daPyRFlg0_UNK10000000 = 0x10000000,
daPyRFlg0_ARROW_SHOOT = 0x20000000,
+2 -2
View File
@@ -986,7 +986,7 @@ public:
void checkItemAction();
void getSlidePolygon();
BOOL checkJumpCutFromButton();
void orderTalk();
int orderTalk();
BOOL checkNextActionFromButton();
void setShieldGuard();
BOOL checkItemModeActorPointer();
@@ -1627,7 +1627,7 @@ public:
BOOL procPullMove();
int changeBottleDrinkFace(int);
void setBottleModel(u16);
void makeFairy(cXyz*, u32);
fopAc_ac_c* makeFairy(cXyz*, u32);
BOOL procBottleDrink_init(u16);
BOOL procBottleDrink();
BOOL procBottleOpen_init(u16);
+12 -1
View File
@@ -377,6 +377,9 @@ public:
void setItemBombNumCount(s16 num) { mItemBombNumCount += num; }
u16 getItemNowLife() { return mItemNowLife; }
void setItemNowLife(u16 life) { mItemNowLife = life; }
f32 getItemLifeCount() { return mItemLifeCount; }
void setItemLifeCount(f32 num) { mItemLifeCount += num; }
@@ -684,7 +687,7 @@ public:
/* 0x491E */ s16 mAuctionRupee;
/* 0x4920 */ s16 mAuctionGauge;
/* 0x4922 */ s16 mItemTimer;
/* 0x4924 */ s16 mItemNowLife;
/* 0x4924 */ u16 mItemNowLife;
/* 0x4926 */ s16 mItemNowRupee;
/* 0x4928 */ bool mItemSwimTimerStatus;
/* 0x4929 */ u8 field_0x4929;
@@ -2226,6 +2229,14 @@ inline void dComIfGp_setMessageSetNumber(s16 num) {
g_dComIfG_gameInfo.play.setMessageSetNumber(num);
}
inline u16 dComIfGp_getItemNowLife() {
return g_dComIfG_gameInfo.play.getItemNowLife();
}
inline void dComIfGp_setItemNowLife(u16 life) {
g_dComIfG_gameInfo.play.setItemNowLife(life);
}
inline f32 dComIfGp_getItemLifeCount() {
return g_dComIfG_gameInfo.play.getItemLifeCount();
}
+205 -15
View File
@@ -2,34 +2,92 @@
* d_a_player_bottle.inc
*
* Code relating to various bottled items and bottle interactions.
*
* This file is not a standalone translation unit and is instead directly
*
* This file is not a standalone translation unit and is instead directly
* included into d_a_player_main.cpp.
*
* The original name of this file is not known, but a best guess was taken
*
* The original name of this file is not known, but a best guess was taken
* based on the original names of the functions it contains.
*/
#include "d/actor/d_a_player_main.h"
#include "d/actor/d_a_player_HIO.h"
#include "d/d_camera.h"
#include "d/d_procname.h"
#include "d/actor/d_a_player_main.h"
#include "d/actor/d_a_player_HIO.h"
#include "d/d_camera.h"
#include "d/d_procname.h"
#include "JSystem/J3DGraphLoader/J3DAnmLoader.h"
/* 80151E40-80151E60 .text changeBottleDrinkFace__9daPy_lk_cFi */
int daPy_lk_c::changeBottleDrinkFace(int param_0) {
if ((param_0 == 0x55) || (param_0 == 0x54)) {
if ((param_0 == dItem_SOUP_BOTTLE_e) || (param_0 == dItem_HALF_SOUP_BOTTLE_e)) {
return true;
}
return false;
}
/* 80151E60-80152128 .text setBottleModel__9daPy_lk_cFUs */
void daPy_lk_c::setBottleModel(u16) {
/* Nonmatching */
void daPy_lk_c::setBottleModel(u16 param_0) {
mEquipItem = param_0;
JKRHeap* oldHeap = setItemHeap();
J3DModelData* tmp_modelData = initModel(&mpEquipItemModel, LINK_BDL_BOTTLEEMP, 0x37221222);
u8* buffer = new (0x20) u8[0x400];
JKRReadIdxResource(buffer, 0x400, LKANM_BTK_TBOTTLE, dComIfGp_getAnmArchive());
mpEquipItemBtk = static_cast<J3DAnmTextureSRTKey*>(J3DAnmLoaderDataBase::load(buffer));
mpEquipItemBtk->setFrame(0.0f);
mpEquipItemBtk->searchUpdateMaterialID(tmp_modelData);
tmp_modelData->entryTexMtxAnimator(mpEquipItemBtk);
if ((param_0 == dItem_RED_POTION_e) || (param_0 == dItem_GREEN_POTION_e) ||
(param_0 == dItem_BLUE_POTION_e) || (param_0 == dItem_HALF_SOUP_BOTTLE_e) ||
(param_0 == dItem_SOUP_BOTTLE_e) || (param_0 == dItem_WATER_BOTTLE_e) ||
(param_0 == dItem_FOREST_WATER_e))
{
u16 bdl;
if (param_0 == dItem_HALF_SOUP_BOTTLE_e) {
bdl = LINK_BDL_BINLIQUIDH;
} else {
bdl = LINK_BDL_BINLIQUID;
}
tmp_modelData = initModel(&mpBottleContentsModel, bdl, 0x13000022);
buffer = new (0x20) u8[0x400];
JKRReadIdxResource(buffer, 0x400, LKANM_BRK_TBINLIQUID, dComIfGp_getAnmArchive());
mpEquipItemBrk = static_cast<J3DAnmTevRegKey*>(J3DAnmLoaderDataBase::load(buffer));
if (param_0 == dItem_RED_POTION_e) {
mpEquipItemBrk->setFrame(0.0f);
} else if (param_0 == dItem_GREEN_POTION_e) {
mpEquipItemBrk->setFrame(1.0f);
} else if (param_0 == dItem_BLUE_POTION_e) {
mpEquipItemBrk->setFrame(2.0f);
} else if ((param_0 == dItem_SOUP_BOTTLE_e) || (param_0 == dItem_HALF_SOUP_BOTTLE_e)) {
mpEquipItemBrk->setFrame(4.0f);
} else {
mpEquipItemBrk->setFrame(3.0f);
}
mpEquipItemBrk->searchUpdateMaterialID(tmp_modelData);
tmp_modelData->entryTevRegAnimator(mpEquipItemBrk);
} else if (param_0 == dItem_FAIRY_BOTTLE_e) {
tmp_modelData = initModel(&mpBottleContentsModel, LINK_BDL_BINFAIRY, 0x13000022);
} else if (param_0 == dItem_FIREFLY_BOTTLE_e) {
tmp_modelData = initModel(&mpBottleContentsModel, LINK_BDL_BINHO, 0x13000022);
buffer = new (0x20) u8[0x400];
JKRReadIdxResource(buffer, 0x400, LKANM_BRK_TBINHO, dComIfGp_getAnmArchive());
mpEquipItemBrk = static_cast<J3DAnmTevRegKey*>(J3DAnmLoaderDataBase::load(buffer));
mpEquipItemBrk->searchUpdateMaterialID(tmp_modelData);
tmp_modelData->entryTevRegAnimator(mpEquipItemBrk);
m3600 = 0.0f;
}
if ((param_0 != dItem_EMPTY_BOTTLE_e) && (mCurProc != daPyProc_BOTTLE_DRINK_e)) {
tmp_modelData = initModel(&mpBottleCapModel, LINK_BDL_BOTTLECAP, 0x13000022);
m355E = 1;
}
mDoExt_setCurrentHeap(oldHeap);
if (param_0 == dItem_FOREST_WATER_e) {
m32F0.makeEmitter(dPa_name::ID_COMMON_020D, mpEquipItemModel->getBaseTRMtx(), &current.pos,
NULL);
}
return;
}
/* 80152128-801521A0 .text makeFairy__9daPy_lk_cFP4cXyzUl */
void daPy_lk_c::makeFairy(cXyz* param_0, u32 param_1) {
fopAc_ac_c* daPy_lk_c::makeFairy(cXyz* param_0, u32 param_1) {
onResetFlg0(daPyRFlg0_FAIRY_USE);
resetCurse();
fopAcM_fastCreate(PROC_NPC_FA1, param_1, param_0, fopAcM_GetRoomNo(this), &shape_angle);
@@ -67,7 +125,78 @@ BOOL daPy_lk_c::procBottleDrink_init(u16 param_0) {
/* 80152300-80152624 .text procBottleDrink__9daPy_lk_cFv */
BOOL daPy_lk_c::procBottleDrink() {
/* Nonmatching */
/* Nonmatching - sdata2 */
static const GXColor red = {0xC8, 0x00, 0x00, 0xFF};
static const GXColor green = {0x00, 0xFA, 0x00, 0xFF};
static const GXColor blue = {0x00, 0x32, 0x96, 0xFF};
setShipRidePosUseItem();
J3DFrameCtrl& frameCtrl = mFrameCtrlUnder[UNDER_MOVE0_e];
u16 uVar1 = m_anm_heap_under[UNDER_MOVE0_e].mIdx;
if (uVar1 == LKANM_BCK_BINDRINKPRE) {
if (frameCtrl.getRate() < 0.01f) {
setSingleMoveAnime(ANM_BINDRINKING, daPy_HIO_bottle_c0::m.field_0x64, 0.0f, -1, 0.0f);
if (changeBottleDrinkFace(mEquipItem)) {
setTextureAnime(0x86, 0);
}
if (mEquipItem != dItem_GREEN_POTION_e) {
dComIfGp_setItemLifeCount(dComIfGs_getMaxLife());
}
if (mEquipItem != dItem_RED_POTION_e) {
dComIfGp_setItemMagicCount(dComIfGs_getMaxMagic());
}
if ((mEquipItem == dItem_SOUP_BOTTLE_e) || (mEquipItem == dItem_HALF_SOUP_BOTTLE_e)) {
onNoResetFlg1(daPyFlg1_UNK8000);
}
resetCurse();
} else {
if (frameCtrl.checkPass(65.0f)) {
voiceStart(39);
}
}
} else if (uVar1 == LKANM_BCK_BINDRINKING) {
if ((dComIfGp_getItemNowLife() == dComIfGs_getLife()) &&
(dComIfGs_getMagic() == g_dComIfG_gameInfo.play.field_0x48da))
{
setSingleMoveAnime(ANM_BINDRINKAFTER, 1.0f, daPy_HIO_bottle_c0::m.field_0x68,
daPy_HIO_bottle_c0::m.field_0xE, daPy_HIO_bottle_c0::m.field_0x6C);
if (changeBottleDrinkFace(mEquipItem)) {
setTextureAnime(0x87, 0);
}
if (mEquipItem == dItem_SOUP_BOTTLE_e) {
setBottleModel(dItem_HALF_SOUP_BOTTLE_e);
dComIfGs_setEquipBottleItemIn(mReadyItemBtn, dItem_HALF_SOUP_BOTTLE_e);
} else {
mpBottleContentsModel = NULL;
dComIfGs_setEquipBottleItemEmpty(mReadyItemBtn);
}
const GXColor* p_Var3;
if ((mEquipItem != dItem_SOUP_BOTTLE_e) && (mEquipItem != dItem_HALF_SOUP_BOTTLE_e)) {
if (mEquipItem == dItem_RED_POTION_e) {
p_Var3 = &red;
} else if (mEquipItem == dItem_GREEN_POTION_e) {
p_Var3 = &green;
} else {
p_Var3 = &blue;
}
m33A8.makeEmitterColor(dPa_name::ID_COMMON_0057, mpCLModel->getAnmMtx(0x12),
&current.pos, &shape_angle, p_Var3, NULL);
}
} else {
if (frameCtrl.checkPass(10.0f)) {
voiceStart(39);
}
}
} else if (frameCtrl.getRate() < 0.01f) {
dComIfGp_event_reset();
dCam_getBody()->EndEventCamera(fopAcM_GetID(this));
endDemoMode();
} else {
if (frameCtrl.checkPass(8.0f)) {
voiceStart(40);
}
}
return true;
}
/* 80152624-801527CC .text procBottleOpen_init__9daPy_lk_cFUs */
@@ -132,7 +261,7 @@ BOOL daPy_lk_c::procBottleSwing_init(int param_0) {
commonProcInit(daPyProc_BOTTLE_SWING_e);
if ((int)param_0 != 0) {
deleteEquipItem(FALSE);
setBottleModel(0x50);
setBottleModel(dItem_EMPTY_BOTTLE_e);
}
current.angle.y = shape_angle.y;
mVelocity = 0.0f;
@@ -177,7 +306,68 @@ BOOL daPy_lk_c::procBottleSwing_init(int param_0) {
/* 80153064-80153338 .text procBottleSwing__9daPy_lk_cFv */
BOOL daPy_lk_c::procBottleSwing() {
/* Nonmatching */
setShipRidePosUseItem();
if (m3570 == 0) {
if (eventInfo.checkCommandCatch()) {
m3570 = 1;
u8 bVar5 = dComIfGp_event_getPreItemNo();
if (bVar5 == dItem_WATER_BOTTLE_e) {
seStartOnlyReverb(JA_SE_LK_SCOOP_WATER);
if (!strcmp(dComIfGp_getStartStageName(), "Omori")) {
bVar5 = dItem_FOREST_WATER_e;
if (dComIfGs_checkBottle(89)) {
m3628 = fpcM_ERROR_PROCESS_ID_e;
m3574 = 1;
} else {
dComIfGs_getpItemRecord()->resetTimer(36000);
}
}
}
if (m3574 == 0) {
setBottleModel(bVar5);
dComIfGs_setEquipBottleItemIn(mReadyItemBtn, mEquipItem);
m355E = 0;
}
mDemo.setDemoType(5);
} else {
if ((((mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() >= 1.0f) &&
(mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() <= 4.0f)) &&
(getReadyItem() == dItem_EMPTY_BOTTLE_e)) &&
((dComIfGp_att_getCatghTarget() != NULL) || (m35D0 > current.pos.y + 10.0f)))
{
fopAcM_orderCatchEvent(this, dComIfGp_att_getCatghTarget());
}
}
}
if ((mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) || (m34D4 != 0)) {
if (m3574 != 0) {
if (m34D4 == 0) {
offModeFlg(ModeFlg_00000400);
onModeFlg(ModeFlg_00000100);
setBlendMoveAnime(daPy_HIO_basic_c0::m.field_0xC);
m34D4 = 1;
}
if (checkEndMessage(0x14a2)) {
dComIfGp_event_reset();
endDemoMode();
}
} else {
if (m3570 != 0) {
procBottleGet_init();
} else {
if (dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) {
procShipPaddle_init();
} else {
checkNextMode(0);
}
}
}
} else if (mFrameCtrlUnder[UNDER_MOVE0_e].getFrame() > m35A0) {
if ((m3570 == 0) && (!dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e))) {
checkNextMode(1);
}
}
return true;
}
/* 80153338-80153438 .text procBottleGet_init__9daPy_lk_cFv */
+2 -2
View File
@@ -654,7 +654,7 @@ void daPy_lk_c::dProcLavaDamage_init_sub() {
speed.y = daPy_HIO_restart_c0::m.field_0x8;
m3570 = 0;
voiceStart(4);
seStartMapInfo(0x3810);
seStartMapInfo(JA_SE_LK_FALL_MAGMA);
gravity = daPy_HIO_autoJump_c0::m.field_0xC;
mDemo.setDemoType(5);
dComIfGp_setPlayerStatus0(0, daPyStts0_UNK10000000_e);
@@ -713,7 +713,7 @@ void daPy_lk_c::dProcFreezeDamage_init_sub(int param_0) {
onNoResetFlg1(daPyFlg1_FREEZE_STATE);
offNoResetFlg1(daPyFlg1_UNK40000);
mDoGph_gInf_c::fadeOut(1.0f, l_freeze_fade_color);
seStartMapInfo(0x2878);
seStartMapInfo(JA_SE_LK_FREEZE);
for (int i = 0; i < 5; i++) {
const u16* uVar1 = eff_joint;
MtxP pMVar2 = mpCLModel->getAnmMtx(uVar1[i]);
+1 -1
View File
@@ -1687,7 +1687,7 @@ BOOL daPy_lk_c::checkJumpCutFromButton() {
}
/* 8010D8B0-8010DB58 .text orderTalk__9daPy_lk_cFv */
void daPy_lk_c::orderTalk() {
int daPy_lk_c::orderTalk() {
/* Nonmatching */
}
+2 -2
View File
@@ -92,8 +92,8 @@ BOOL daPy_lk_c::procPushPullWait() {
s16 sVar1 = cLib_addCalcAngleS(&shape_angle.y, m34D4, 3, 0x800, 0x100);
current.angle.y = shape_angle.y;
f32 dVar2 = cLib_addCalc(&current.pos.x, m370C.x, 0.5f, 10.0f, 1.0f);
f32 dVar3 = cLib_addCalc(&current.pos.z, m370C.z, 0.5f, 10.0f, 1.0f);
if (((!sVar1) && ((float)(dVar2 + dVar3) < 5.0f)) && (m_anm_heap_upper[UPPER_MOVE2_e].mIdx == 0xffff)) {
dVar2 += cLib_addCalc(&current.pos.z, m370C.z, 0.5f, 10.0f, 1.0f);
if (((!sVar1) && (dVar2 < 5.0f)) && (m_anm_heap_upper[UPPER_MOVE2_e].mIdx == 0xffff)) {
current.pos.x = m370C.x;
current.pos.z = m370C.z;
m3570 = 0;
+413 -22
View File
@@ -2,21 +2,24 @@
* d_a_player_ship.inc
*
* Code relating to interacting with and controlling The King of Red Lions.
*
* This file is not a standalone translation unit and is instead directly
*
* This file is not a standalone translation unit and is instead directly
* included into d_a_player_main.cpp.
*
* The original name of this file is not known, but a best guess was taken
*
* The original name of this file is not known, but a best guess was taken
* based on the original names of the functions it contains.
*/
#include "d/actor/d_a_boomerang.h"
#include "d/actor/d_a_hookshot.h"
#include "d/actor/d_a_player_HIO.h"
#include "d/actor/d_a_player_main.h"
#include "d/actor/d_a_player_main_data.h"
#include "d/actor/d_a_player_HIO.h"
#include "d/actor/d_a_ship.h"
#include "d/d_com_inf_game.h"
#include "d/d_kankyo_wether.h"
#include "d/d_procname.h"
#include "f_op/f_op_camera_mng.h"
/* 8013F848-8013F8AC .text shipSpecialDemoStart__9daPy_lk_cFv */
BOOL daPy_lk_c::shipSpecialDemoStart() {
@@ -83,7 +86,7 @@ void daPy_lk_c::initShipRideUseItem(int param_1, int param_2) {
if (param_1 == 0) {
return;
}
dComIfGp_getShipActor()->m034D = 2; // TODO probably inline setter
dComIfGp_getShipActor()->m034D = 2; // TODO probably inline setter
gravity = 0.0f;
speed.y = 0.0f;
if (param_1 == 1) {
@@ -150,9 +153,8 @@ void daPy_lk_c::setShipRidePos(int param_0) {
if (fVar2 > 1.0f) {
fVar2 = 1.0f;
}
mFrameCtrlUpper[UPPER_MOVE2_e].setRate(
(1.0f - daPy_HIO_ship_c0::m.field_0xC) * fVar2 + daPy_HIO_ship_c0::m.field_0xC
);
mFrameCtrlUpper[UPPER_MOVE2_e].setRate((1.0f - daPy_HIO_ship_c0::m.field_0xC) * fVar2 +
daPy_HIO_ship_c0::m.field_0xC);
if ((iVar1->mStateFlag & 0x40) != 0) {
if (iVar1->m03E4 > 0.6f) {
voiceStart(6);
@@ -246,7 +248,141 @@ void daPy_lk_c::setShipAttnetionBodyAngle() {
/* 801405F0-80140C88 .text changeShipEndProc__9daPy_lk_cFv */
int daPy_lk_c::changeShipEndProc() {
/* Nonmatching */
/* Nonmatching - branching */
daBoomerang_c* pfVar4;
daShip_c* ship = (daShip_c*)dComIfGp_getShipActor();
if (ship == NULL) {
return checkNextMode(0);
}
offNoResetFlg0(daPyFlg0_SHIP_DROP);
if (doTrigger()) {
pfVar4 = (daBoomerang_c*)mActorKeepThrow.getActor();
if (pfVar4 != NULL) {
pfVar4->onCancelFlg();
}
}
if (((((mCurProc != daPyProc_SHIP_SCOPE_e) && (mCurProc != daPyProc_SHIP_BOW_e)) &&
(mCurProc != daPyProc_SHIP_HOOKSHOT_e)) &&
((mCurProc != daPyProc_SHIP_BOOMERANG_e || (mEquipItem != dItem_BOOMERANG_e)))) &&
((ship->mStateFlag & 1) == 0))
{
setTalkStatus();
if (orderTalk()) {
return true;
}
}
if ((dComIfGp_getMiniGameType() != 1) && (ship->speedF < 3.0f)) {
if (ship->m1044.absXZ() < 3.0f) {
if (((!checkShipNotNormalMode() ||
(m_anm_heap_under[UNDER_MOVE0_e].mIdx == LKANM_BCK_FREEA)) ||
(m_anm_heap_under[UNDER_MOVE0_e].mIdx == LKANM_BCK_FREEB)) ||
(m_anm_heap_under[UNDER_MOVE0_e].mIdx == LKANM_BCK_FREED))
{
if (((!dComIfGp_checkPlayerStatus0(0, daPyStts0_UNK2000_e) &&
(!spActionButton())) &&
((dComIfGp_getDoStatus() == 0 && (mCurProc == daPyProc_SHIP_PADDLE_e)))))
{
if ((!ship->checkForceMove()) && (dComIfGp_setDoStatus(29), doTrigger())) {
return procShipGetOff_init();
}
}
}
}
}
if ((mCurProc != daPyProc_SHIP_SCOPE_e) && ((ship->mStateFlag & 1) == 0)) {
if (dComIfGp_getDoStatus() == 0) {
if ((ship->mShipMode == 1) || (ship->checkForceMove()) ||
(((ship->speedF < 3.0f) && (ship->mShipMode != 0))))
{
dComIfGp_setDoStatus(8);
}
}
if (checkSetItemTrigger(NORMAL_SAIL, 1)) {
pfVar4 = (daBoomerang_c*)mActorKeepThrow.getActor();
if (pfVar4 != NULL) {
pfVar4->onCancelFlg();
}
procShipSteer_init();
} else if (checkSetItemTrigger(dItem_BOMB_BAG_e, 1)) {
pfVar4 = (daBoomerang_c*)mActorKeepThrow.getActor();
if (pfVar4 != NULL) {
pfVar4->onCancelFlg();
}
procShipCannon_init();
} else if (checkSetItemTrigger(dItem_GRAPPLING_HOOK_e, 1)) {
pfVar4 = (daBoomerang_c*)mActorKeepThrow.getActor();
if (pfVar4 != NULL) {
pfVar4->onCancelFlg();
}
procShipCrane_init();
} else if (checkSetItemTrigger(dItem_TELESCOPE_e, 1)) {
pfVar4 = (daBoomerang_c*)mActorKeepThrow.getActor();
if (pfVar4 != NULL) {
pfVar4->onCancelFlg();
}
procShipScope_init(1);
} else if (checkSetItemTrigger(daPyItem_PHOTOBOX_e, 1)) {
pfVar4 = (daBoomerang_c*)mActorKeepThrow.getActor();
if (pfVar4 != NULL) {
pfVar4->onCancelFlg();
}
procShipScope_init(0);
} else if (checkSetItemTrigger(daPyItem_BOW_e, 1)) {
pfVar4 = (daBoomerang_c*)mActorKeepThrow.getActor();
if (pfVar4 != NULL) {
pfVar4->onCancelFlg();
}
procShipBow_init();
} else if ((checkSetItemTrigger(dItem_BOOMERANG_e, 1)) &&
(mActorKeepThrow.getActor() == NULL))
{
procShipBoomerang_init();
} else if (checkSetItemTrigger(dItem_HOOKSHOT_e, 1)) {
pfVar4 = (daBoomerang_c*)mActorKeepThrow.getActor();
if (pfVar4 != NULL) {
pfVar4->onCancelFlg();
}
procShipHookshot_init();
} else if (checkSetItemTrigger(dItem_WIND_WAKER_e, 1)) {
pfVar4 = (daBoomerang_c*)mActorKeepThrow.getActor();
if (pfVar4 != NULL) {
pfVar4->onCancelFlg();
}
procTactWait_init(-1);
} else if (checkSetItemTrigger(dItem_TINGLE_TUNER_e, 1)) {
fopAcM_orderTalkEvent(this, (fopAc_ac_c*)dComIfGp_getAgb());
if (checkShipNotNormalMode()) {
setShipRidePos(0);
} else {
setShipRidePos(1);
}
return true;
} else if (checkSetItemTrigger(dItem_MAGIC_ARMOR_e, 1)) {
if (checkShipNotNormalMode()) {
setShipRidePos(0);
} else {
setShipRidePos(1);
}
changeDragonShield(1);
} else if (checkSetItemTrigger(daPyItem_DRINK_BOTTLE_e, 0)) {
procBottleDrink_init(dComIfGp_getSelectItem(mReadyItemBtn));
} else if (checkSetItemTrigger(dItem_FAIRY_BOTTLE_e, 0)) {
procBottleOpen_init(0x57);
} else if (checkSetItemTrigger(daPyItem_OPEN_BOTTLE_e, 1)) {
procBottleOpen_init(dComIfGp_getSelectItem(mReadyItemBtn));
} else if (checkSetItemTrigger(dItem_EMPTY_BOTTLE_e, 1)) {
procBottleSwing_init(1);
} else if (checkSetItemTrigger(dItem_HYOI_PEAR_e, 1)) {
procFoodSet_init();
} else if (checkSetItemTrigger(daPyItem_ESA_e, 1)) {
procFoodThrow_init();
} else if ((doTrigger()) && (dComIfGp_getDoStatus() == 8)) {
procShipPaddle_init();
}
} else {
return false;
}
}
/* 80140C88-80140D04 .text initShipBaseAnime__9daPy_lk_cFv */
@@ -280,13 +416,9 @@ BOOL daPy_lk_c::procShipReady_init() {
commonProcInit(daPyProc_SHIP_READY_e);
deleteEquipItem(TRUE);
daShip_c* iVar1 = dComIfGp_getShipActor();
setSingleMoveAnime(
ANM_VJMPCL,
daPy_HIO_wallCatch_c0::m.field_0x24,
daPy_HIO_wallCatch_c0::m.field_0x2C,
daPy_HIO_wallCatch_c0::m.field_0x4,
daPy_HIO_wallCatch_c0::m.field_0x28
);
setSingleMoveAnime(ANM_VJMPCL, daPy_HIO_wallCatch_c0::m.field_0x24,
daPy_HIO_wallCatch_c0::m.field_0x2C, daPy_HIO_wallCatch_c0::m.field_0x4,
daPy_HIO_wallCatch_c0::m.field_0x28);
gravity = 0.0f;
mVelocity = 0.0f;
s16 sVar3 = fopAcM_searchActorAngleY((fopAc_ac_c*)iVar1, this);
@@ -446,6 +578,78 @@ BOOL daPy_lk_c::procShipPaddle_init() {
/* 801413A4-801416BC .text procShipPaddle__9daPy_lk_cFv */
BOOL daPy_lk_c::procShipPaddle() {
/* Nonmatching */
bool bVar2;
int iVar3;
int iVar4;
daPy_ANM dVar5;
float dVar6;
if (changeShipEndProc()) {
return true;
}
setShipRidePos(1);
dComIfGp_setRStatus(0x2c);
if ((dComIfGp_getDoStatus() == 0) && (dComIfGp_getShipActor()->speedF >= 3.0f)) {
dComIfGp_setDoStatus(19);
}
if (dComIfGp_checkPlayerStatus0(0, daPyStts0_UNK2000_e)) {
dComIfGp_setAStatus(7);
if (checkSubjectEnd(1)) {
dComIfGp_clearPlayerStatus0(0, daPyStts0_UNK2000_e);
}
} else {
onResetFlg0(daPyRFlg0_UNK4000000);
if (((dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 0x1000))) &&
(dComIfGp_event_runCheck() == 0))
{
setSubjectMode();
}
}
daShip_c* ship = (daShip_c*)dComIfGp_getShipActor();
if ((m34D0 == -1) || (m34D0 == -2)) {
if (m34D0 == -2) {
if (mFrameCtrlUnder[UNDER_MOVE0_e].checkPass(168.0f)) {
voiceStart(48);
} else if (mFrameCtrlUnder[UNDER_MOVE0_e].checkPass(105.0f)) {
voiceStart(47);
}
}
if ((!(mStickDistance > 0.05f) && (!dComIfGp_event_runCheck())) &&
(dComIfGp_getDoStatus() == 29))
{
if ((!ship->checkForceMove()) && !(mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f))
goto LAB_801416a4;
}
initShipBaseAnime();
m34D0 = cM_rndF(150.0f) + 300.0f;
} else {
if (((!dComIfGp_event_runCheck()) && (dComIfGp_getDoStatus() == 29)) &&
(mStickDistance <= 0.05f))
{
if ((!ship->checkForceMove()) && (!checkShipNotNormalMode())) {
m34D0--;
if (m34D0 == 0) {
dVar6 = cM_rnd();
m34D0 = -1;
if (dVar6 < 0.3333f) {
dVar5 = ANM_FREEA;
} else {
if (dVar6 < 0.6666f) {
dVar5 = ANM_FREEB;
m34D0 = -2;
} else {
dVar5 = ANM_FREED;
}
}
setSingleMoveAnime(dVar5, 1.0f, 0.0f, -1, 5.0f);
}
goto LAB_801416a4;
}
}
m34D0 = cM_rndF(150.0f) + 300.0f;
}
LAB_801416a4:
return true;
}
/* 801416BC-801417EC .text procShipScope_init__9daPy_lk_cFi */
@@ -473,7 +677,24 @@ BOOL daPy_lk_c::procShipScope_init(int param_0) {
/* 801417EC-801418B4 .text procShipScope__9daPy_lk_cFv */
BOOL daPy_lk_c::procShipScope() {
/* Nonmatching */
int iVar2 = 1;
if (changeShipEndProc()) {
return true;
}
if (checkScopeEnd()) {
procShipPaddle_init();
} else {
if ((((dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 0x10))) &&
(!dComIfGp_event_runCheck())) &&
(mDemo.getDemoType() == 0))
{
shape_angle.y = fopCamM_GetAngleY(dComIfGp_getCamera(mCameraInfoIdx));
iVar2 = 0;
}
}
offNoResetFlg0(daPyFlg0_SCOPE_CANCEL);
setShipRidePos(iVar2);
return true;
}
/* 801418B4-801419B4 .text procShipBoomerang_init__9daPy_lk_cFv */
@@ -501,7 +722,61 @@ BOOL daPy_lk_c::procShipBoomerang_init() {
/* 801419B4-80141BB0 .text procShipBoomerang__9daPy_lk_cFv */
BOOL daPy_lk_c::procShipBoomerang() {
/* Nonmatching */
if (changeShipEndProc()) {
dComIfGp_clearPlayerStatus0(0, daPyStts0_BOOMERANG_WAIT_e);
return true;
} else {
setShipRidePos(0);
if (mActorKeepThrow.getActor() == NULL) {
if (m_anm_heap_upper[UPPER_MOVE2_e].mIdx != LKANM_BCK_BOOMCATCH) {
dComIfGp_setDoStatus(7);
if (doTrigger()) {
{
procShipPaddle_init();
deleteEquipItem(TRUE);
return true;
}
}
}
}
mSightPacket.offDrawFlg();
daShip_c* ship = (daShip_c*)dComIfGp_getShipActor();
if (m_anm_heap_upper[UPPER_MOVE2_e].mIdx != LKANM_BCK_BOOMCATCH) {
if (mEquipItem == dItem_BOOMERANG_e) {
if (m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_BOOMWAIT) {
setShipAttentionAnmSpeed(daPy_HIO_boom_c0::m.field_0x18);
checkNextActionBoomerangReady();
if (mpAttention->Lockon()) {
setShipAttnetionBodyAngle();
} else {
m34DA = 0;
if (setBodyAngleToCamera()) {
daBoomerang_c* this_01 = (daBoomerang_c*)mActorKeepEquip.getActor();
if (this_01 != NULL) {
{
cXyz local_28;
checkSightLine(this_01->getFlyMax(), &local_28);
mSightPacket.setPos(&local_28);
mSightPacket.onDrawFlg();
}
}
}
}
if (mpAttnActorLockOn == NULL) {
shape_angle.y += (s16)(ship->shape_angle.y - m34D4);
}
}
} else {
if (mActorKeepThrow.getActor() == NULL) {
return procShipPaddle_init();
}
setShapeAngleToAtnActor();
mFrameCtrlUnder[UNDER_MOVE0_e].setRate(daPy_HIO_atnMove_c0::m.field_0x24);
}
}
m34D4 = ship->shape_angle.y;
}
return true;
}
/* 80141BB0-80141CF8 .text procShipHookshot_init__9daPy_lk_cFv */
@@ -535,7 +810,54 @@ BOOL daPy_lk_c::procShipHookshot_init() {
/* 80141CF8-80141F2C .text procShipHookshot__9daPy_lk_cFv */
BOOL daPy_lk_c::procShipHookshot() {
/* Nonmatching */
/* Nonmatching - regalloc */
if (changeShipEndProc()) {
return true;
}
setShipRidePos(0);
dComIfGp_setDoStatus(7);
daHookshot_c* pfVar4 = (daHookshot_c*)mActorKeepEquip.getActor();
if (((doTrigger()) || (pfVar4 == NULL)) ||
((m3570 != 0) && (m355E == 0)) && (!mpAttention->Lockon()))
{
procShipPaddle_init();
deleteEquipItem(TRUE);
return true;
} else {
mSightPacket.offDrawFlg();
checkNextActionHookshotReady();
daShip_c* ship = (daShip_c*)dComIfGp_getShipActor();
if (pfVar4->checkWait()) {
setShipAttentionAnmSpeed(1.0f);
}
if (mpAttention->Lockon()) {
if (pfVar4->checkWait()) {
setShipAttnetionBodyAngle();
} else {
m34DA = 0;
}
m3570 = 1;
} else {
m34DA = 0;
setBodyAngleToCamera();
m3570 = 0;
}
if (mpAttnActorLockOn == NULL) {
shape_angle.y += (s16)(ship->shape_angle.y - m34D4);
}
if (pfVar4->checkWait()) {
if (!mpAttention->Lockon()) {
setHookshotSight();
} else {
mSightPacket.offDrawFlg();
}
dComIfGp_clearPlayerStatus0(0, daPyStts0_UNK40000_e);
} else {
dComIfGp_setPlayerStatus0(0, daPyStts0_UNK40000_e);
}
m34D4 = ship->shape_angle.y;
}
return true;
}
/* 80141F2C-80142084 .text procShipBow_init__9daPy_lk_cFv */
@@ -572,7 +894,41 @@ BOOL daPy_lk_c::procShipBow_init() {
/* 80142084-80142250 .text procShipBow__9daPy_lk_cFv */
BOOL daPy_lk_c::procShipBow() {
/* Nonmatching */
if ((mDemo.getDemoMode() != 0x44) && (changeShipEndProc())) {
return true;
}
setShipRidePos(0);
if (mDemo.getDemoMode() != 0x44) {
dComIfGp_setDoStatus(7);
if ((doTrigger()) ||
(((!mpAttention->Lockon()) && (mActorKeepEquip.getActor() == NULL)) && (m3570 != 0)))
{
procShipPaddle_init();
deleteEquipItem(TRUE);
return true;
}
} else {
dComIfGp_evmng_cutEnd(mStaffIdx);
}
daShip_c* iVar1 = (daShip_c*)dComIfGp_getShipActor();
if (m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_BOWWAIT) {
setShipAttentionAnmSpeed(1.0f);
}
if ((mpAttention->Lockon()) && (mDemo.getDemoMode() != 0x44)) {
setShipAttnetionBodyAngle();
m3570 = 1;
} else {
m34DA = 0;
setBodyAngleToCamera();
m3570 = 0;
}
if (mpAttnActorLockOn == NULL) {
shape_angle.y += (s16)(iVar1->shape_angle.y - m34D4);
}
m34D4 = iVar1->shape_angle.y;
checkNextActionBowReady();
m35EC = mFrameCtrlUpper[UPPER_MOVE2_e].getFrame();
return true;
}
/* 80142250-80142300 .text procShipCannon_init__9daPy_lk_cFv */
@@ -663,7 +1019,42 @@ BOOL daPy_lk_c::procShipGetOff_init() {
/* 80142A5C-80142C08 .text procShipGetOff__9daPy_lk_cFv */
BOOL daPy_lk_c::procShipGetOff() {
/* Nonmatching */
/* Nonmatching - branching */
daShip_c* iVar1 = dComIfGp_getShipActor();
if (iVar1 == 0) {
checkNextMode(0);
} else if (m3570 == 0) {
current.pos.y = current.pos.y + (iVar1->current.pos.y - m35A0);
cLib_chaseF(&current.pos.y, iVar1->current.pos.y + l_ship_ledge.y, 4.0f);
m35A0 = iVar1->current.pos.y;
s16 sVar3 = cLib_targetAngleY(&current.pos, &m370C);
if (cLib_distanceAngleS(sVar3, shape_angle.y) >= 0x4000) {
setSingleMoveAnime(
ANM_JMPST, daPy_HIO_autoJump_c0::m.field_0x20, daPy_HIO_autoJump_c0::m.field_0x2C,
daPy_HIO_autoJump_c0::m.field_0x2, daPy_HIO_autoJump_c0::m.field_0x30);
gravity = daPy_HIO_autoJump_c0::m.field_0xC;
mVelocity = daPy_HIO_ship_c0::m.field_0x10;
speed.y = daPy_HIO_ship_c0::m.field_0x14;
m3570 = 1;
m34C2 = 1;
iVar1->m034D = 6;
onModeFlg(ModeFlg_MIDAIR);
}
} else {
m34C2 = 1;
dComIfGp_evmng_cutEnd(mStaffIdx);
if (mAcch.ChkGroundHit()) {
changeLandProc(daPy_HIO_autoJump_c0::m.field_0x24);
} else {
if (checkFanGlideProc(0)) {
return true;
} else if (speed.y < -gravity) {
procFall_init(0, daPy_HIO_smallJump_c0::m.field_0x18);
setTextureAnime(0x37, 0);
}
}
}
return true;
}
/* 80142C08-80142C9C .text procShipRestart_init__9daPy_lk_cFv */
+452 -14
View File
@@ -2,17 +2,18 @@
* d_a_player_sword.inc
*
* Code relating using a sword item.
*
* This file is not a standalone translation unit and is instead directly
*
* This file is not a standalone translation unit and is instead directly
* included into d_a_player_main.cpp.
*
*
* The original name of this file is known because of an assert contained within
* a function from this file.
*/
#include "d/actor/d_a_player_main.h"
#include "d/actor/d_a_player_HIO.h"
#include "JSystem/J3DGraphLoader/J3DAnmLoader.h"
#include "d/actor/d_a_boko.h"
#include "d/actor/d_a_player_main.h"
#include "d/actor/d_a_player_HIO.h"
#include "JSystem/J3DGraphLoader/J3DAnmLoader.h"
/* 80154B80-80154FBC .text setSwordModel__9daPy_lk_cFi */
void daPy_lk_c::setSwordModel(BOOL r28) {
@@ -125,9 +126,110 @@ void daPy_lk_c::setSwordModel(BOOL r28) {
/* 80154FBC-80155490 .text setLightSaver__9daPy_lk_cFv */
void daPy_lk_c::setLightSaver() {
/* Nonmatching */
/* Nonmatching - floats, .sdata2, branching */
static JGeometry::TVec3<f32> d_scale(1.4f, 1.4f, 1.4f);
static JGeometry::TVec3<f32> p_scale(1.6f, 1.4f, 1.4f);
static const GXColor g_prm0 = {0x09, 0x14, 0x06, 0xFF};
static const GXColor g_env0 = {0x0C, 0x18, 0x00, 0xFF};
static const GXColor y_prm0 = {0x14, 0x12, 0x0C, 0xFF};
static const GXColor y_env0 = {0x18, 0x18, 0x00, 0xFF};
static const GXColor g_prm1 = {0x80, 0xFF, 0x64, 0xFF};
static const GXColor y_prm1 = {0xFF, 0xFF, 0xC8, 0xFF};
static const GXColor y_env1 = {0xA5, 0xA5, 0x10, 0xFF};
static const GXColor s_prm1 = {0xC8, 0xC8, 0xFF, 0xFF};
static const GXColor s_env1 = {0x60, 0x60, 0xA5, 0xFF};
JPABaseEmitter* pJVar7;
const GXColor* pbVar8;
const GXColor* pbVar9;
if ((((mEquipItem == daPyItem_SWORD_e) && (mpEquipItemBrk != NULL)) && (mpSwordBtk != NULL)) &&
((mpSwordModel1 != NULL && (mpEquipItemModel == NULL))))
{
if (checkChanceMode()) {
mpEquipItemBrk->setFrame(1.0f);
} else {
if (checkNoResetFlg1(daPyFlg1_UNK8000)) {
mpEquipItemBrk->setFrame(0.0f);
} else {
mpEquipItemBrk->setFrame(2.0f);
}
}
mpSwordModel1->setBaseTRMtx(mpEquipItemModel->getBaseTRMtx());
if ((!checkDemoSwordNoDraw(0)) &&
(((checkChanceMode() || (checkNoResetFlg1(daPyFlg1_UNK8000))) ||
(checkFinalMasterSwordEquip()))))
{
simpleAnmPlay(mpSwordBtk);
if (((m3454).mpEmitter == NULL) &&
((checkChanceMode() || (checkNoResetFlg1(daPyFlg1_UNK8000)))))
{
pJVar7 = m3454.makeEmitter(dPa_name::ID_COMMON_0309, mpSwordModel1->getAnmMtx(2),
&current.pos, NULL);
if (pJVar7 != 0) {
if (checkMasterSwordEquip()) {
pJVar7->setGlobalDynamicsScale(d_scale);
pJVar7->setGlobalParticleScale(p_scale);
}
}
} else {
if ((!checkChanceMode()) &&
((!checkNoResetFlg1(daPyFlg1_UNK8000) && (checkFinalMasterSwordEquip()))))
{
m3454.end();
}
}
if (checkChanceMode()) {
pbVar8 = &g_prm0;
pbVar9 = &g_env0;
} else {
pbVar8 = &y_prm0;
pbVar9 = &y_env0;
}
pJVar7 = (m3454).mpEmitter;
if (pJVar7 != NULL) {
pJVar7->setGlobalPrmColor(pbVar8->r, pbVar8->g, pbVar8->b);
pJVar7->setGlobalEnvColor(pbVar9->r, pbVar9->g, pbVar9->b);
}
if (((dComIfGp_getDoStatus() == 26) && (m355C == 0)) ||
(((checkNoResetFlg1(daPyFlg1_UNK8000) || (checkFinalMasterSwordEquip())) &&
(!checkNoResetFlg1(daPyFlg1_UNK200000)))))
{
if ((dComIfGp_getDoStatus() == 26) && (m355C == 0)) {
pbVar9 = &g_prm1;
pbVar8 = pbVar9;
dComIfGp_getVibration().StartShock(6, 1, cXyz(0.0f, 1.0f, 0.0f));
} else if (checkNoResetFlg1(daPyFlg1_UNK8000)) {
pbVar9 = &y_prm1;
pbVar8 = &y_env1;
} else {
pbVar9 = &s_prm1;
pbVar8 = &s_env1;
}
pJVar7 = dComIfGp_particle_setP1(dPa_name::ID_COMMON_030A, &current.pos, NULL, NULL,
0xff, NULL, -1, pbVar9, pbVar8, NULL);
if (pJVar7 != 0) {
JPASetRMtxTVecfromMtx(mpEquipItemModel->getAnmMtx(2), pJVar7->mGlobalRotation,
pJVar7->mGlobalTranslation);
if (checkMasterSwordEquip()) {
pJVar7->setGlobalDynamicsScale(d_scale);
pJVar7->setGlobalParticleScale(p_scale);
}
if (pbVar9 == &g_prm1) {
m355C = 0x1e;
} else {
onNoResetFlg1(daPyFlg1_UNK200000);
}
}
}
} else {
m3454.end();
mpSwordBtk->setFrame(0.0f);
}
if ((m355C > 0) && (!checkChanceMode())) {
m355C--;
}
}
return;
}
/* 80155490-801554C8 .text checkDemoShieldNoDraw__9daPy_lk_cFv */
@@ -356,8 +458,85 @@ int daPy_lk_c::changeCutProc() {
}
/* 80155C3C-80156034 .text changeCutReverseProc__9daPy_lk_cFQ29daPy_lk_c8daPy_ANM */
int daPy_lk_c::changeCutReverseProc(daPy_ANM) {
/* Nonmatching */
int daPy_lk_c::changeCutReverseProc(daPy_ANM param_0) {
/* Nonmatching - floats, branching */
if ((mEquipItem != dItem_SKULL_HAMMER_e) &&
(((mAtCps[0].ChkAtShieldHit() || (mAtCps[1].ChkAtShieldHit())) ||
(mAtCps[2].ChkAtShieldHit()))))
{
procCutReverse_init(param_0);
} else if (checkNoResetFlg0(daPyFlg0_CUT_AT_FLG)) {
cXyz local_24;
local_24.x = current.pos.x;
local_24.y = current.pos.y + 30.0f;
local_24.z = current.pos.z;
mLinkLinChk.Set(&local_24, &mSwordTopPos, this);
if (dComIfG_Bgsp()->LineCross(&mLinkLinChk)) {
cM3dGPla* triPla = dComIfG_Bgsp()->GetTriPla(mLinkLinChk);
if (!(triPla->GetNP()->y >= 0.5f) ||
((mCurProc == daPyProc_HAMMER_FRONT_SWING_e && triPla->GetNP()->y < 0.64278764f)))
{
if (mEquipItem != dItem_DEKU_LEAF_e) {
u32 uVar7 = dComIfG_Bgsp()->GetMtrlSndId(mLinkLinChk);
u32 uVar12;
if (mAtCps[0].GetAtType() == AT_TYPE_BOKO_STICK) {
uVar12 = JA_SE_LK_W_WEP_HIT;
} else if ((mAtCps[0].GetAtType() == AT_TYPE_STALFOS_MACE) ||
(mAtCps[0].GetAtType() == AT_TYPE_SKULL_HAMMER))
{
uVar12 = JA_SE_LK_HAMMER_HIT;
} else {
uVar12 = JA_SE_LK_SW_HIT_S;
}
if ((mAtCps[0].GetAtType() != AT_TYPE_SKULL_HAMMER) ||
(!checkNoResetFlg0(daPyFlg0_UNK10000000)))
{
mDoAud_seStart(uVar12, &mSwordTopPos, uVar7, mReverb);
}
if ((mAtCps[0].GetAtType() == AT_TYPE_SKULL_HAMMER) &&
(mCurProc != daPyProc_JUMP_CUT_e))
{
onNoResetFlg0(daPyFlg0_UNK10000000);
}
int iVar6 = dComIfG_Bgsp()->GetAttributeCode(mLinkLinChk);
if (!(iVar6 - 2U > 1) || (iVar6 == dBgS_Attr_METAL_e)) {
triPla = dComIfG_Bgsp()->GetTriPla(mLinkLinChk);
csXyz local_44;
local_44.x = cM_atan2s(-triPla->GetNP()->y, triPla->GetNP()->absXZ());
local_44.y = cM_atan2s(triPla->GetNP()->x, triPla->GetNP()->z);
local_44.z = 0;
JPABaseEmitter* emitter;
if (iVar6 == dBgS_Attr_WOOD_e) {
emitter = dComIfGp_particle_setP1(
dPa_name::ID_COMMON_002B, mLinkLinChk.GetCrossP(), &local_44, NULL,
0xff, NULL, -1, &tevStr.mColorK0, &tevStr.mColorK0);
if (emitter != 0) {
emitter->mSpread = 0.2f;
emitter->mVolumeSweep = 0.15f;
emitter->mRate = 8.0f;
emitter->mMaxFrame = 1;
}
} else {
local_44.x += 0x4000;
emitter = dComIfGp_particle_setP1(dPa_name::ID_COMMON_002C,
mLinkLinChk.GetCrossP(), &local_44);
if (emitter != 0) {
emitter->mInitialVelAxis = 20.0f;
emitter->mRate = 20.0f;
emitter->mMaxFrame = 1;
emitter->mInitialVelDir = 20.0f;
}
}
}
}
dKy_Sound_set(current.pos, 100, fopAcM_GetID(this), 5);
procCutReverse_init(param_0);
} else if (mCurProc == daPyProc_HAMMER_FRONT_SWING_e) {
return true;
}
}
}
return false;
}
/* 80156034-80156198 .text procCutA_init__9daPy_lk_cFs */
@@ -1106,23 +1285,282 @@ BOOL daPy_lk_c::procCutExB() {
}
/* 80157D3C-80158220 .text procCutTurn_init__9daPy_lk_cFi */
BOOL daPy_lk_c::procCutTurn_init(int) {
/* Nonmatching */
BOOL daPy_lk_c::procCutTurn_init(int param_0) {
/* Nonmatching - floats */
float fVar1;
commonProcInit(daPyProc_CUT_TURN_e);
if (param_0 != 0) {
fVar1 = daPy_HIO_cutTurn_c0::m.field_0xC;
} else {
fVar1 = daPy_HIO_cutTurn_c0::m.field_0x8;
}
if (mEquipItem == daPyItem_SWORD_e) {
setSingleMoveAnime(ANM_CUTTURN, daPy_HIO_cutTurn_c0::m.field_0x4, fVar1,
daPy_HIO_cutTurn_c0::m.field_0x0, daPy_HIO_cutTurn_c0::m.field_0x28);
} else {
setSingleMoveAnime(ANM_CUTTURNC, daPy_HIO_cutTurn_c0::m.field_0x4, fVar1,
daPy_HIO_cutTurn_c0::m.field_0x0, daPy_HIO_cutTurn_c0::m.field_0x28);
}
if (mEquipItem == daPyItem_SWORD_e) {
if (checkNormalSwordEquip()) {
mSwordAnim.changeBckOnly(getItemAnimeResource(LKANM_BCK_CUTTURNA));
} else {
mSwordAnim.changeBckOnly(getItemAnimeResource(LKANM_BCK_CUTTURNMS));
}
if (checkNormalSwordEquip()) {
m35A4 = daPy_HIO_cutTurn_c0::m.field_0x40;
if (checkNoResetFlg1(daPyFlg1_UNK8000)) {
mAtCyl.SetAtAtp(4);
} else {
mAtCyl.SetAtAtp(2);
}
} else {
m35A4 = daPy_HIO_cutTurn_c0::m.field_0x44;
if (checkNoResetFlg1(daPyFlg1_UNK8000)) {
mAtCyl.SetAtAtp(8);
} else {
mAtCyl.SetAtAtp(4);
}
}
setBlurPosResource(LKANM__CUTTURN_POS);
} else {
daBoko_c* boko = (daBoko_c*)mActorKeepEquip.getActor();
u32 uVar5;
if (boko == NULL) {
uVar5 = 0;
mAtCyl.SetAtAtp(1);
} else {
uVar5 = fopAcM_GetParam(boko);
mAtCyl.SetAtAtp((boko->getAtPoint()));
}
if (uVar5 == 0) {
m35A4 = daPy_HIO_cutTurn_c0::m.field_0x60;
} else if (uVar5 == 1) {
m35A4 = daPy_HIO_cutTurn_c0::m.field_0x64;
} else if (uVar5 == 2) {
m35A4 = daPy_HIO_cutTurn_c0::m.field_0x68;
} else if (uVar5 == 3) {
m35A4 = daPy_HIO_cutTurn_c0::m.field_0x6C;
} else if (uVar5 == 4) {
m35A4 = daPy_HIO_cutTurn_c0::m.field_0x70;
} else {
m35A4 = daPy_HIO_cutTurn_c0::m.field_0x74;
}
setBlurPosResource(LKANM__WEAPONTURN_POS);
}
mAtCyl.SetR(m35A4 * 0.5f);
m35EC = fVar1;
m3700 = cXyz::Zero;
m34C2 = 1;
m34D0 = daPy_HIO_cutTurn_c0::m.field_0x2;
current.angle.y = shape_angle.y;
m3578 = 0;
voiceStart(1);
dComIfGp_setPlayerStatus0(0, daPyStts0_SWORD_SWING_e);
mCutType = 8;
offResetFlg0(daPyRFlg0_UNK8000000);
mAtCyl.SetR(m35A4 * 0.5f);
if (!checkNoResetFlg0(daPyFlg0_UNK80000000)) {
m32E4.makeEmitter(dPa_name::ID_COMMON_001E, mpCLModel->getAnmMtx(0x28), &current.pos, NULL);
if (mCurrAttributeCode == dBgS_Attr_GRASS_e) {
GXColor color = {tevStr.mColorC0.r, tevStr.mColorC0.g, tevStr.mColorC0.b,
tevStr.mColorC0.a};
m32F0.makeEmitterColor(dPa_name::ID_COMMON_0021, mpCLModel->getAnmMtx(0x23),
&current.pos, &color, &tevStr.mColorK0);
m35A0 = 18.0f;
} else if (mCurrAttributeCode == dBgS_Attr_WATER_e) {
GXColor amb, dif;
dKy_get_seacolor(&amb, &dif);
m32F0.makeEmitterColor(dPa_name::ID_COMMON_0020, mpCLModel->getAnmMtx(0x23),
&current.pos, &amb, NULL);
m35A0 = 17.0f;
} else {
dComIfGp_particle_setToonP1(dPa_name::ID_COMMON_201F, &current.pos, NULL, NULL,
daPy_HIO_basic_c0::m.field_0x2, &mSmokeEcallBack, -1, NULL,
NULL, NULL);
m35A0 = 21.0f;
}
}
m3570 = 0;
if (m34C4 == 6) {
onNoResetFlg0(daPyFlg0_UNK4);
m3570 = 1;
} else {
mCutCount = 0;
}
mVelocity = 0.0f;
m34C4 = 0;
endFlameDamageEmitter();
return true;
}
/* 80158220-80158460 .text procCutTurn__9daPy_lk_cFv */
BOOL daPy_lk_c::procCutTurn() {
/* Nonmatching */
J3DFrameCtrl& frameCtrl = mFrameCtrlUnder[UNDER_MOVE0_e];
m35EC = frameCtrl.getFrame();
if (((m3570 != 0) && (swordButton())) && (m34C5 == 0)) {
onNoResetFlg0(daPyFlg0_UNK4);
} else {
offNoResetFlg0(daPyFlg0_UNK4);
}
if (frameCtrl.getRate() < 0.01f) {
if ((int)m34D0 > 0) {
m34D0--;
} else {
m34B8 = 3;
checkNextMode(0);
return true;
}
} else {
if (frameCtrl.getFrame() > daPy_HIO_cutTurn_c0::m.field_0x10) {
u8 uVar1 = m34B8;
m34B8 = 3;
if (checkNextMode(1)) {
return true;
}
m34B8 = uVar1;
} else {
if (frameCtrl.getFrame() > 17.0f) {
m32E4.end();
}
}
}
if (frameCtrl.getFrame() > m35A0) {
m32F0.end();
mSmokeEcallBack.end();
}
setSpecialBattle(1);
if ((doTrigger()) && (dComIfGp_getDoStatus() == 26)) {
changeSpecialBattle();
} else {
if ((frameCtrl.getFrame() >= daPy_HIO_cutTurn_c0::m.field_0x30) &&
(frameCtrl.getFrame() < daPy_HIO_cutTurn_c0::m.field_0x34))
{
if (!checkNoResetFlg0(daPyFlg0_CUT_AT_FLG)) {
onResetFlg0(daPyRFlg0_UNK1);
seStartSwordCut(JA_SE_LK_KAITENGIRI);
}
onResetFlg0(daPyRFlg0_UNK2);
cLib_chaseF(mAtCyl.GetRP(), m35A4, 18.0f);
}
if (frameCtrl.checkPass(daPy_HIO_cutTurn_c0::m.field_0x34)) {
m331C.field_0x4 = 0x80;
m332C.field_0x4 = 0x80;
m333C.field_0x4 = 0x80;
} else {
if (m331C.field_0x4 == 0x80) {
m331C.field_0x4 = 0;
m332C.field_0x4 = 0;
m333C.field_0x4 = 0;
}
}
m34C2 = 1;
return true;
}
}
/* 80158460-801585D8 .text procCutRoll_init__9daPy_lk_cFv */
BOOL daPy_lk_c::procCutRoll_init() {
/* Nonmatching */
commonProcInit(daPyProc_CUT_ROLL_e);
setSingleMoveAnime(ANM_CUTTURNB, daPy_HIO_cutRoll_c0::m.field_0x8,
daPy_HIO_cutRoll_c0::m.field_0xC, daPy_HIO_cutRoll_c0::m.field_0x0,
daPy_HIO_cutRoll_c0::m.field_0x10);
m3578 = 0;
seStartMapInfo(JA_SE_LK_V_KAITEN_S);
dComIfGp_setItemMagicCount(-2);
mCutType = 9;
mCutCount = 0;
offResetFlg0(daPyRFlg0_UNK8000000);
if (checkNormalSwordEquip()) {
m35A4 = daPy_HIO_cutRoll_c0::m.field_0x20;
if (checkNoResetFlg1(daPyFlg1_UNK8000)) {
mAtCyl.SetAtAtp(4);
} else {
mAtCyl.SetAtAtp(2);
}
} else {
m35A4 = daPy_HIO_cutRoll_c0::m.field_0x24;
if (checkNoResetFlg1(daPyFlg1_UNK8000)) {
mAtCyl.SetAtAtp(8);
} else {
mAtCyl.SetAtAtp(4);
}
}
mAtCyl.SetR(m35A4 * 0.5f);
m34D0 = daPy_HIO_cutRoll_c0::m.field_0x2;
current.angle.y = shape_angle.y;
m34BE = 4;
dComIfGp_setPlayerStatus0(0, daPyStts0_SPIN_ATTACK_e);
endFlameDamageEmitter();
return true;
}
/* 801585D8-801588F0 .text procCutRoll__9daPy_lk_cFv */
BOOL daPy_lk_c::procCutRoll() {
/* Nonmatching */
/* Nonmatching - regalloc, math */
s16 uVar1;
float fVar2;
short sVar3;
cXyz local_48;
cXyz local_3c;
if (mFrameCtrlUnder[UNDER_MOVE0_e].getRate() < 0.01f) {
uVar1 = current.angle.y;
if ((mAcch.ChkWallHit()) && (mDemo.getDemoMode() != 0x2b)) {
fVar2 = 25.0f + (mAcchCir[0]).GetWallR();
local_48.set(current.pos.x, current.pos.y + (mAcchCir[0]).GetWallH(), current.pos.z);
local_3c.set(local_48.x + fVar2 * cM_ssin(uVar1), local_48.y,
local_48.z + fVar2 * cM_scos(uVar1));
mLinkLinChk.Set(&local_48, &local_3c, this);
if (dComIfG_Bgsp()->LineCross(&mLinkLinChk)) {
cM3dGPla* triPla = dComIfG_Bgsp()->GetTriPla(mLinkLinChk);
shape_angle.y = cM_atan2s(-triPla->GetNP()->x, -triPla->GetNP()->z);
current.angle.y = shape_angle.y;
return procFrontRollCrash_init();
}
} else if (mStickDistance > 0.05f) {
cLib_addCalcAngleS(&current.angle.y, m34E8, daPy_HIO_move_c0::m.field_0x6,
daPy_HIO_move_c0::m.field_0x0, daPy_HIO_move_c0::m.field_0x4);
shape_angle.y = current.angle.y;
}
sVar3 = current.angle.y - uVar1;
if (dComIfGp_event_runCheck() != 0) {
if (mDemo.getDemoMode() != 0x2b) {
m34D0 = 0;
} else {
m34D0 = 5;
}
}
if (m34D0 > 0) {
m34D0--;
mVelocity = daPy_HIO_cutRoll_c0::m.field_0x14;
m34EC -= daPy_HIO_cutRoll_c0::m.field_0x4 + sVar3;
if (!checkNoResetFlg0(daPyFlg0_CUT_AT_FLG)) {
onResetFlg0(daPyRFlg0_UNK1);
}
onResetFlg0(daPyRFlg0_UNK2);
cLib_chaseF(mAtCyl.GetRP(), m35A4, 18.0f);
seStartMapInfo(JA_SE_LK_V_KAITEN_S);
} else {
if (cLib_addCalc(&mVelocity, 0.0f, 0.1f, 2.5f, 1.0f) < 0.5f) {
shape_angle.y = shape_angle.y + m34EC;
current.angle.y = shape_angle.y;
if ((dComIfGp_event_runCheck() != 0) && (mDemo.getDemoMode() != 0x2b)) {
procWait_init();
} else {
procCutRollEnd_init();
}
} else {
m34EC = (s16)(m34EC - (512.0f + sVar3 +
(daPy_HIO_cutRoll_c0::m.field_0x4 - 0x200) *
(mVelocity / daPy_HIO_cutRoll_c0::m.field_0x14)));
}
}
} else {
seStartMapInfo(JA_SE_LK_V_KAITEN_S);
}
return true;
}
/* 801588F0-80158A40 .text procCutRollEnd_init__9daPy_lk_cFv */