mirror of https://github.com/zeldaret/tp.git
daAlink bottle / sumou done (#1996)
* link_bottle done * link_sumou done * remove asm
This commit is contained in:
parent
334a1111d5
commit
a6d621e0c3
|
|
@ -2032,7 +2032,7 @@ public:
|
|||
/* 800EA4CC */ int procGoronMove();
|
||||
/* 800EA844 */ BOOL checkSumouVsActor();
|
||||
/* 800EA8D0 */ void cancelSumouMode();
|
||||
/* 800EA908 */ void sumouPunchTrigger();
|
||||
/* 800EA908 */ BOOL sumouPunchTrigger();
|
||||
/* 800EA92C */ void setSumouPunchStatus();
|
||||
/* 800EA950 */ int procSumouReadyInit();
|
||||
/* 800EAA28 */ int procSumouReady();
|
||||
|
|
@ -2040,7 +2040,7 @@ public:
|
|||
/* 800EAD84 */ int procSumouMove();
|
||||
/* 800EB208 */ int procSumouSideMoveInit();
|
||||
/* 800EB2BC */ int procSumouSideMove();
|
||||
/* 800EB624 */ int procSumouActionInit(int, int, int);
|
||||
/* 800EB624 */ int procSumouActionInit(BOOL i_doTrigger, BOOL i_punchTrigger, int unused);
|
||||
/* 800EBCE0 */ int procSumouAction();
|
||||
/* 800EC0F8 */ int procSumouStaggerInit();
|
||||
/* 800EC170 */ int procSumouStagger();
|
||||
|
|
@ -3206,7 +3206,7 @@ public:
|
|||
daPy_actorKeep_c* getThrowBoomerangAcKeep() { return &mThrowBoomerangAcKeep; }
|
||||
s32 getStartRoomNo() { return fopAcM_GetParam(this) & 0x3F; }
|
||||
bool checkFisingRodLure() const { return mEquipItem == noentry73; }
|
||||
bool doTrigger() const { return mItemTrigger & BTN_A; }
|
||||
BOOL doTrigger() const { return mItemTrigger & BTN_A; }
|
||||
bool swordTrigger() { return itemTriggerCheck(BTN_B); }
|
||||
bool peepSubjectCancelTrigger() { return itemTriggerCheck(0x8); }
|
||||
u32 getStartMode() { return (fopAcM_GetParam(this) >> 0xC) & 0x1F; }
|
||||
|
|
@ -3448,11 +3448,11 @@ private:
|
|||
/* 0x00710 */ J3DModel* field_0x0710; // related to held item
|
||||
/* 0x00714 */ J3DModel* field_0x0714; // related to held item
|
||||
/* 0x00718 */ J3DAnmTextureSRTKey* field_0x0718;
|
||||
/* 0x0071C */ J3DAnmBase* field_0x071c;
|
||||
/* 0x00720 */ J3DAnmBase* field_0x0720;
|
||||
/* 0x0071C */ J3DAnmTextureSRTKey* field_0x071c;
|
||||
/* 0x00720 */ J3DAnmTextureSRTKey* field_0x0720;
|
||||
/* 0x00724 */ J3DAnmTevRegKey* field_0x0724;
|
||||
/* 0x00728 */ J3DAnmBase* field_0x0728;
|
||||
/* 0x0072C */ J3DAnmBase* field_0x072c;
|
||||
/* 0x0072C */ J3DAnmTexPattern* field_0x072c;
|
||||
/* 0x00730 */ mDoExt_bckAnm mItemBck;
|
||||
/* 0x0074C */ mDoExt_bckAnm mHookTipBck;
|
||||
/* 0x00768 */ J3DModelData* mpHookKusariModelData;
|
||||
|
|
@ -3703,7 +3703,10 @@ private:
|
|||
} /* 0x0300E */ mProcVar3;
|
||||
/* 0x03014 */ s16 mFallVoiceInit;
|
||||
/* 0x03016 */ u8 field_0x3016[2];
|
||||
/* 0x03018 */ s16 field_0x3018;
|
||||
union {
|
||||
s16 field_0x3018;
|
||||
s16 mBottleItemHealAmount;
|
||||
} /* 0x03018 */ mItemVar0;
|
||||
/* 0x0301A */ s16 mItemMode;
|
||||
/* 0x0301C */ s16 field_0x301c;
|
||||
/* 0x0301E */ s16 field_0x301e;
|
||||
|
|
@ -6020,7 +6023,7 @@ public:
|
|||
/* 0x50 */ daAlinkHIO_anm_c mSwingDownAnm;
|
||||
/* 0x64 */ daAlinkHIO_anm_c mSwingSideAnm;
|
||||
/* 0x78 */ daAlinkHIO_anm_c mGetAnm;
|
||||
/* 0x8C */ daAlinkHIO_anm_c field_0x8C;
|
||||
/* 0x8C */ daAlinkHIO_anm_c mDrinkNastyAnm;
|
||||
/* 0xA0 */ daAlinkHIO_anm_c mScoopAnm;
|
||||
}; // Size: 0xB4
|
||||
|
||||
|
|
|
|||
|
|
@ -370,6 +370,7 @@ public:
|
|||
}
|
||||
|
||||
u8& getItemLifeCountType() { return mItemLifeCountType; }
|
||||
u16 getItemNowLife() { return mItemNowLife; }
|
||||
s16 getItemPachinkoNumCount() { return mItemPachinkoNumCount; }
|
||||
void clearItemPachinkoNumCount() { mItemPachinkoNumCount = 0; }
|
||||
u8 getNeedLightDropNum() { return mNeedLightDropNum; }
|
||||
|
|
@ -1780,6 +1781,14 @@ inline void dComIfGs_setTransformStatus(u8 i_status) {
|
|||
g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().setTransformStatus(i_status);
|
||||
}
|
||||
|
||||
inline void dComIfGs_setEquipBottleItemIn(u8 i_curItem, u8 i_newItem) {
|
||||
g_dComIfG_gameInfo.info.getPlayer().getItem().setEquipBottleItemIn(i_curItem, i_newItem);
|
||||
}
|
||||
|
||||
inline void dComIfGs_setEquipBottleItemEmpty(u8 i_curItem) {
|
||||
g_dComIfG_gameInfo.info.getPlayer().getItem().setEquipBottleItemEmpty(i_curItem);
|
||||
}
|
||||
|
||||
void dComIfGp_setSelectItem(int index);
|
||||
s32 dComIfGp_offHeapLockFlag(int flag);
|
||||
void dComIfGp_createSubExpHeap2D();
|
||||
|
|
@ -1825,6 +1834,7 @@ static u8 dComIfGp_getRStatus();
|
|||
static dAttCatch_c* dComIfGp_att_getCatghTarget();
|
||||
static void dComIfGp_setBottleStatus(u8 param_0, u8 param_1);
|
||||
bool dComIfGp_getMapTrans(int i_roomNo, f32* o_transX, f32* o_transY, s16* o_angle);
|
||||
void dComIfGp_setSelectItemNum(int i_selItemIdx, s16 i_num);
|
||||
|
||||
inline void dComIfGp_itemDataInit() {
|
||||
g_dComIfG_gameInfo.play.itemInit();
|
||||
|
|
@ -1862,6 +1872,10 @@ inline u8 dComIfGp_att_getCatchChgItem() {
|
|||
return dComIfGp_getAttention().getCatchChgItem();
|
||||
}
|
||||
|
||||
inline fopAc_ac_c* i_dComIfGp_att_getCatghTarget() {
|
||||
return dComIfGp_getAttention().getCatghTarget();
|
||||
}
|
||||
|
||||
inline int dComIfGp_att_ZHintRequest(fopAc_ac_c* param_1, int param_2) {
|
||||
return dComIfGp_getAttention().ZHintRequest(param_1, param_2);
|
||||
}
|
||||
|
|
@ -1874,8 +1888,8 @@ inline void dComIfGp_att_LookRequest(fopAc_ac_c* param_0, f32 i_horizontalDist,
|
|||
|
||||
inline void dComIfGp_att_CatchRequest(fopAc_ac_c* param_0, u8 param_1, f32 i_horizontalDist,
|
||||
f32 i_upDist, f32 i_downDist, s16 i_angle, int param_5) {
|
||||
dComIfGp_getAttention().getCatghTarget().request(param_0, param_1, i_horizontalDist, i_upDist,
|
||||
i_downDist, i_angle, param_5);
|
||||
dComIfGp_getAttention().CatchRequest(param_0, param_1, i_horizontalDist, i_upDist,
|
||||
i_downDist, i_angle, param_5);
|
||||
}
|
||||
|
||||
inline J2DGrafContext* dComIfGp_getCurrentGrafPort() {
|
||||
|
|
@ -2755,6 +2769,10 @@ inline u8 dComIfGp_getItemLifeCountType() {
|
|||
return g_dComIfG_gameInfo.play.getItemLifeCountType();
|
||||
}
|
||||
|
||||
inline u16 dComIfGp_getItemNowLife() {
|
||||
return g_dComIfG_gameInfo.play.getItemNowLife();
|
||||
}
|
||||
|
||||
inline int dComIfGp_getMessageCountNumber() {
|
||||
return g_dComIfG_gameInfo.play.getMessageCountNumber();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -205,7 +205,7 @@ public:
|
|||
/* 80182AD0 */ void keepLock(int);
|
||||
/* 8014B010 */ static dist_entry& getDistTable(int);
|
||||
|
||||
dAttCatch_c& getCatghTarget() { return mCatghTarget; }
|
||||
fopAc_ac_c* getCatghTarget() { return mCatghTarget.getCatghTarget(); }
|
||||
u8 getCatchChgItem() { return mCatghTarget.getChangeItem(); }
|
||||
BOOL chkFlag(u32 flag) { return (mFlags & flag) ? TRUE : FALSE; }
|
||||
void setFlag(u32 flag) { mFlags |= flag; }
|
||||
|
|
@ -222,6 +222,12 @@ public:
|
|||
mLookTarget.request(param_0, i_horizontalDist, i_upDist, i_downDist, i_angle, param_5);
|
||||
}
|
||||
|
||||
void CatchRequest(fopAc_ac_c* param_0, u8 param_1, f32 i_horizontalDist, f32 i_upDist,
|
||||
f32 i_downDist, s16 i_angle, int param_5) {
|
||||
mCatghTarget.request(param_0, param_1, i_horizontalDist, i_upDist, i_downDist, i_angle,
|
||||
param_5);
|
||||
}
|
||||
|
||||
static dist_entry& i_getDistTable(int i_no) { return dist_table[i_no]; }
|
||||
|
||||
static type_tbl_entry loc_type_tbl[3];
|
||||
|
|
|
|||
|
|
@ -157,6 +157,7 @@ public:
|
|||
void setItemExplainWindowStatus(u8 i_value) { mItemExplainWindowStatus = i_value; }
|
||||
void resetDirectUseItem() { mDirectUseItem = 0; }
|
||||
u16 getFloatingFlowID() { return mFloatingFlowID; }
|
||||
void onBlinkButton(int i_flag) { mBlinkButton |= i_flag; }
|
||||
void setCollectCursorPosXY(u8 x, u8 y) {
|
||||
mCollectCursorPosX = x;
|
||||
mCollectCursorPosY = y;
|
||||
|
|
@ -609,6 +610,10 @@ inline void dMeter2Info_setCollectCursorPosXY(u8 x, u8 y) {
|
|||
g_meter2_info.setCollectCursorPosXY(x, y);
|
||||
}
|
||||
|
||||
inline void dMeter2Info_onBlinkButton(int i_flag) {
|
||||
g_meter2_info.onBlinkButton(i_flag);
|
||||
}
|
||||
|
||||
const char* dMeter2Info_getNumberTextureName(int pIndex);
|
||||
void dMeter2Info_recieveLetter();
|
||||
u8 dMeter2Info_getNewLetterNum();
|
||||
|
|
|
|||
|
|
@ -1,6 +1,92 @@
|
|||
#ifndef D_A_NPC_WRESTLER_H
|
||||
#define D_A_NPC_WRESTLER_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
#include "d/a/d_a_npc.h"
|
||||
|
||||
class daNpcWrestler_c : public daNpcF_c {
|
||||
public:
|
||||
/* 80B2F28C */ daNpcWrestler_c();
|
||||
/* 80B2F688 */ void Create();
|
||||
/* 80B2F974 */ void CreateHeap();
|
||||
/* 80B2FDB0 */ void Delete();
|
||||
/* 80B2FDE4 */ void Execute();
|
||||
/* 80B2FE1C */ void Draw();
|
||||
/* 80B2FE84 */ void ctrlJoint(J3DJoint*, J3DModel*);
|
||||
/* 80B30150 */ void createHeapCallBack(fopAc_ac_c*);
|
||||
/* 80B30170 */ void ctrlJointCallBack(J3DJoint*, int);
|
||||
/* 80B301BC */ void checkStartUp();
|
||||
/* 80B308B0 */ void reset();
|
||||
/* 80B30AD8 */ void setAction(bool (daNpcWrestler_c::*)(void*));
|
||||
/* 80B30BEC */ void checkArenaInfo();
|
||||
/* 80B30CA4 */ void checkArenaSub(fopAc_ac_c*);
|
||||
/* 80B30D48 */ void setOnToArena(f32);
|
||||
/* 80B30F00 */ void wait(void*);
|
||||
/* 80B316F4 */ void talk(void*);
|
||||
/* 80B31EB0 */ void demo(void*);
|
||||
/* 80B32058 */ void gotoArena(void*);
|
||||
/* 80B32444 */ void gotoLiving(void*);
|
||||
/* 80B32850 */ void sumouReady(void*);
|
||||
/* 80B331CC */ void sumouWait(void*);
|
||||
/* 80B339EC */ void checkOutOfArenaP();
|
||||
/* 80B33B3C */ void setNextAction();
|
||||
/* 80B34654 */ void sumouPunchHit(void*);
|
||||
/* 80B34CD0 */ void sumouPunchChaseHit(void*);
|
||||
/* 80B35364 */ void sumouPunchMiss(void*);
|
||||
/* 80B35780 */ void checkOutOfArenaW();
|
||||
/* 80B358F0 */ void getJointPos(int);
|
||||
/* 80B35968 */ void sumouPunchDraw(void*);
|
||||
/* 80B3606C */ void sumouTackleHit(void*);
|
||||
/* 80B36908 */ void sumouTackleMiss(void*);
|
||||
/* 80B36C8C */ void sumouTackleDraw(void*);
|
||||
/* 80B37270 */ void sumouSideStep(void*);
|
||||
/* 80B378F4 */ void sumouLostBalance(void*);
|
||||
/* 80B37C30 */ void sumouPunchShock(void*);
|
||||
/* 80B37FB8 */ void sumouPunchChaseShock(void*);
|
||||
/* 80B38518 */ void sumouPunchStagger(void*);
|
||||
/* 80B389A4 */ void sumouTackleShock(void*);
|
||||
/* 80B38C90 */ void sumouTackleStagger(void*);
|
||||
/* 80B39334 */ void sumouTackleStaggerRelease(void*);
|
||||
/* 80B39554 */ void sumouTacklePush(void*);
|
||||
/* 80B39C18 */ void sumouTackleRelease(void*);
|
||||
/* 80B39F88 */ void demoSumouReady(void*);
|
||||
/* 80B3AE24 */ void demoSumouWin(void*);
|
||||
/* 80B3B4B4 */ void demoSumouLose(void*);
|
||||
/* 80B3BC84 */ void demoSumouWin2(void*);
|
||||
/* 80B3C278 */ void demoSumouLose2(void*);
|
||||
/* 80B3CA2C */ void demoSumouUnilateralWin(void*);
|
||||
/* 80B3D0C0 */ void demoTalkAfterLose(void*);
|
||||
/* 80B3D584 */ void EvCut_grDSEntry(int);
|
||||
/* 80B3DB50 */ void EvCut_grDSEntry2(int);
|
||||
/* 80B3DCE8 */ void EvCut_grDSEntry3_4(int);
|
||||
/* 80B3E0FC */ void EvCut_grDSEntry5(int);
|
||||
/* 80B3E584 */ void EvCut_grDSLose(int);
|
||||
/* 80B3EF10 */ void setWrestlerVoice();
|
||||
/* 80B3FCE8 */ void playMotion();
|
||||
/* 80B40B3C */ void lookat();
|
||||
|
||||
/* 80B2F4A0 */ virtual ~daNpcWrestler_c();
|
||||
/* 80B3EAE4 */ virtual void setParam();
|
||||
/* 80B3EB94 */ virtual BOOL main();
|
||||
/* 80B404FC */ virtual BOOL ctrlBtk();
|
||||
/* 80B4166C */ virtual void adjustShapeAngle();
|
||||
/* 80B405E8 */ virtual void setAttnPos();
|
||||
/* 80B3023C */ virtual bool setExpressionAnm(int, bool);
|
||||
/* 80B30654 */ virtual bool setExpressionBtp(int);
|
||||
/* 80B316C8 */ virtual void setExpression(int, f32);
|
||||
/* 80B3074C */ virtual void setMotionAnm(int, f32);
|
||||
/* 80B31680 */ virtual void setMotion(int, f32, int);
|
||||
/* 80B40D1C */ virtual BOOL drawDbgInfo();
|
||||
/* 80B40D24 */ virtual void drawOtherMdls();
|
||||
|
||||
int getWrestlerAction() { return mWrestlerAction; }
|
||||
u8 getType() { return mSubtype & 0x7F; }
|
||||
u8 getWrestlerType() { return getType(); }
|
||||
|
||||
static u8 mEvtSeqList[84];
|
||||
|
||||
/* 0xB48 */ u8 field_0xb48[0xE74 - 0xB48];
|
||||
/* 0xE74 */ int mWrestlerAction;
|
||||
};
|
||||
|
||||
#endif /* D_A_NPC_WRESTLER_H */
|
||||
|
|
|
|||
|
|
@ -3,7 +3,8 @@
|
|||
// Translation Unit: d_a_npc_wrestler
|
||||
//
|
||||
|
||||
#include "rel/d/a/npc/d_a_npc_wrestler/d_a_npc_wrestler.h"
|
||||
// #include "rel/d/a/npc/d_a_npc_wrestler/d_a_npc_wrestler.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "dol2asm.h"
|
||||
|
||||
//
|
||||
|
|
|
|||
|
|
@ -5814,8 +5814,8 @@ SECTION_RODATA static Vec const hookRoot = {
|
|||
COMPILER_STRIP_GATE(0x80391A08, &hookRoot);
|
||||
|
||||
/* 80391A14-80391A20 01E074 000C+00 1/1 0/0 0/0 .rodata bottleTop$32160 */
|
||||
SECTION_RODATA static u8 const bottleTop[12] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x41, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
SECTION_RODATA static Vec const bottleTop = {
|
||||
0.0f, 25.0f, 0.0f,
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x80391A14, &bottleTop);
|
||||
|
||||
|
|
@ -16253,7 +16253,7 @@ int daAlink_c::cancelUpperItemReadyAnime(int param_0) {
|
|||
seStartSystem(0x6F);
|
||||
|
||||
if (mEquipItem == IRONBALL) {
|
||||
field_0x3018 = 8;
|
||||
mItemVar0.field_0x3018 = 8;
|
||||
procIronBallReturnInit();
|
||||
} else {
|
||||
resetUpperAnime(UPPER_2, 3.0f);
|
||||
|
|
|
|||
|
|
@ -110,7 +110,7 @@ BOOL daAlink_c::checkBoomerangCarry(fopAc_ac_c* i_grabActor) {
|
|||
if (i_checkNoResetFlg0(FLG0_UNK_20) && !checkEventRun() && !i_checkWolf() &&
|
||||
i_checkModeFlg(0x10000000) &&
|
||||
(checkHorseNoUpperAnime() || checkHorseTurnAnime() || checkBoomerangThrowAnime())) {
|
||||
deleteEquipItem(0, 0);
|
||||
deleteEquipItem(FALSE, FALSE);
|
||||
seStartOnlyReverb(JA_SE_LK_BOOM_CATCH);
|
||||
i_offNoResetFlg0(FLG0_UNK_20);
|
||||
|
||||
|
|
@ -156,7 +156,7 @@ void daAlink_c::setBoomerangReadyQuake() {
|
|||
dComIfGp_getVibration().StartQuake(1, 1, cXyz(tmp_0, lit_6040, tmp_0));
|
||||
|
||||
i_onNoResetFlg3(FLG3_UNK_4);
|
||||
field_0x3018 = daAlinkHIO_boom_c0::m.mChargeTime;
|
||||
mItemVar0.field_0x3018 = daAlinkHIO_boom_c0::m.mChargeTime;
|
||||
}
|
||||
|
||||
/* 800E055C-800E05E8 0DAE9C 008C+00 2/2 0/0 0/0 .text setBoomerangReadyAnime__9daAlink_cFv */
|
||||
|
|
@ -283,10 +283,10 @@ int daAlink_c::returnBoomerang(int param_0) {
|
|||
/* 800E0A9C-800E0B58 0DB3DC 00BC+00 2/2 0/0 0/0 .text checkUpperItemActionBoomerang__9daAlink_cFv
|
||||
*/
|
||||
int daAlink_c::checkUpperItemActionBoomerang() {
|
||||
if (field_0x3018 != 0) {
|
||||
field_0x3018--;
|
||||
if (mItemVar0.field_0x3018 != 0) {
|
||||
mItemVar0.field_0x3018--;
|
||||
|
||||
if (field_0x3018 == 0) {
|
||||
if (mItemVar0.field_0x3018 == 0) {
|
||||
cancelItemUseQuake(0);
|
||||
}
|
||||
}
|
||||
|
|
@ -367,7 +367,7 @@ int daAlink_c::checkBoomerangCatchAction() {
|
|||
i_offNoResetFlg0(FLG0_UNK_20);
|
||||
}
|
||||
|
||||
return 0;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* 800E0E64-800E0F10 0DB7A4 00AC+00 3/3 0/0 0/0 .text setBoomerangSight__9daAlink_cFv */
|
||||
|
|
@ -506,4 +506,4 @@ int daAlink_c::procBoomerangCatch() {
|
|||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@
|
|||
* Player Bottle action handling
|
||||
*/
|
||||
|
||||
#include "d/a/d_a_alink.h"
|
||||
#include "d/com/d_com_inf_game.h"
|
||||
#include "d/d_insect.h"
|
||||
|
||||
/* 8010E48C-8010E52C 108DCC 00A0+00 1/1 0/0 0/0 .text bottleModelCallBack__9daAlink_cFv
|
||||
|
|
@ -20,10 +22,10 @@ int daAlink_c::bottleModelCallBack() {
|
|||
|
||||
/* 8010E52C-8010E568 108E6C 003C+00 1/1 0/0 0/0 .text daAlink_bottleModelCallBack__FP8J3DJointi */
|
||||
static int daAlink_bottleModelCallBack(J3DJoint* i_joint, int param_1) {
|
||||
daAlink_c* link = (daAlink_c*)j3dSys.getModel()->getUserArea();
|
||||
daAlink_c* player_p = (daAlink_c*)j3dSys.getModel()->getUserArea();
|
||||
|
||||
if (param_1 == 0) {
|
||||
link->bottleModelCallBack();
|
||||
player_p->bottleModelCallBack();
|
||||
}
|
||||
|
||||
return 1;
|
||||
|
|
@ -45,6 +47,103 @@ BOOL daAlink_c::checkOilBottleItemNotGet(u16 i_itemNo) {
|
|||
}
|
||||
|
||||
/* 8010E5D8-8010EAC4 108F18 04EC+00 7/7 0/0 0/0 .text setBottleModel__9daAlink_cFUs */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
void daAlink_c::setBottleModel(u16 i_itemNo) {
|
||||
JKRHeap* prev_heap = setItemHeap();
|
||||
mHeldItemModel = initModelEnv(loadAramBmd(0x310, 0x5C00), 0x1020200);
|
||||
field_0x072c = loadAramItemBtp(0x3AE, mHeldItemModel);
|
||||
field_0x0724 = loadAramItemBrk(0x322, mHeldItemModel);
|
||||
|
||||
if (checkDrinkBottleItem(i_itemNo) || checkOilBottleItemNotGet(i_itemNo)) {
|
||||
field_0x071c = loadAramItemBtk(0x328, mHeldItemModel);
|
||||
field_0x0720 = loadAramItemBtk(0x327, mHeldItemModel);
|
||||
} else {
|
||||
field_0x071c = loadAramItemBtk(0x32A, mHeldItemModel);
|
||||
field_0x0720 = loadAramItemBtk(0x329, mHeldItemModel);
|
||||
}
|
||||
|
||||
field_0x0718 = loadAramItemBtk(0x32B, mHeldItemModel);
|
||||
|
||||
if (i_itemNo == FAIRY) {
|
||||
J3DAnmTransform* bck = (J3DAnmTransform*)loadAram(0x1E8, 0xC00);
|
||||
mpHookTipModel = initModel(loadAramBmd(0x31D, 0x1400), 0);
|
||||
if (!mHookTipBck.init(bck, FALSE, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, false)) {
|
||||
JUT_ASSERT(142, 0);
|
||||
}
|
||||
mHookTipBck.entry(mpHookTipModel->getModelData(), 0.0f);
|
||||
} else if (i_itemNo == WORM) {
|
||||
J3DAnmTransform* bck = (J3DAnmTransform*)loadAram(0x1E9, 0xC00);
|
||||
mpHookTipModel = initModel(loadAramBmd(0x31E, 0x2400), 0);
|
||||
if (!mHookTipBck.init(bck, FALSE, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, false)) {
|
||||
JUT_ASSERT(151, 0);
|
||||
}
|
||||
mHookTipBck.entry(mpHookTipModel->getModelData(), 0.0f);
|
||||
} else if (i_itemNo == BEE_CHILD) {
|
||||
mpHookTipModel = initModel(loadAramBmd(0x31C, 0x1000), 0);
|
||||
}
|
||||
|
||||
mDoExt_setCurrentHeap(prev_heap);
|
||||
|
||||
J3DModelData* item_model_data = mHeldItemModel->getModelData();
|
||||
mEquipItem = i_itemNo;
|
||||
|
||||
if (checkOilBottleItemNotGet(i_itemNo)) {
|
||||
item_model_data->getJointNodePointer(1)->setCallBack(NULL);
|
||||
field_0x2f95 = 9;
|
||||
} else {
|
||||
item_model_data->getJointNodePointer(1)->setCallBack(daAlink_bottleModelCallBack);
|
||||
mHeldItemModel->setUserArea((u32)this);
|
||||
field_0x2f94 = 3;
|
||||
mItemMode = 0;
|
||||
}
|
||||
|
||||
if ((checkDrinkBottleItem(i_itemNo) && i_itemNo != BEE_CHILD) || checkOilBottleItem(i_itemNo)) {
|
||||
item_model_data->getMaterialNodePointer(0)->getShape()->hide();
|
||||
|
||||
if (i_itemNo == RED_BOTTLE || i_itemNo == CHUCHU_RED || i_itemNo == RED_BOTTLE_2) {
|
||||
field_0x0724->setFrame(0.0f);
|
||||
} else if (i_itemNo == GREEN_BOTTLE || i_itemNo == CHUCHU_GREEN) {
|
||||
field_0x0724->setFrame(1.0f);
|
||||
} else if (i_itemNo == BLUE_BOTTLE || i_itemNo == CHUCHU_BLUE) {
|
||||
field_0x0724->setFrame(2.0f);
|
||||
} else if (checkOilBottleItem(i_itemNo)) {
|
||||
field_0x0724->setFrame(4.0f);
|
||||
} else if (i_itemNo == HOT_SPRING) {
|
||||
field_0x0724->setFrame(5.0f);
|
||||
} else if (i_itemNo == CHUCHU_PURPLE) {
|
||||
field_0x0724->setFrame(6.0f);
|
||||
} else if (i_itemNo == CHUCHU_RARE) {
|
||||
field_0x0724->setFrame(7.0f);
|
||||
} else if (i_itemNo == UGLY_SOUP || i_itemNo == CHUCHU_BLACK) {
|
||||
field_0x0724->setFrame(8.0f);
|
||||
} else if (i_itemNo == LV1_SOUP) {
|
||||
field_0x0724->setFrame(9.0f);
|
||||
} else if (i_itemNo == LV2_SOUP || i_itemNo == LV3_SOUP) {
|
||||
field_0x0724->setFrame(10.0f);
|
||||
} else if (i_itemNo == FAIRY_DROP) {
|
||||
field_0x0724->setFrame(11.0f);
|
||||
} else {
|
||||
field_0x0724->setFrame(3.0f);
|
||||
|
||||
if (i_itemNo == HALF_MILK_BOTTLE) {
|
||||
field_0x072c->setFrame(1.0f);
|
||||
}
|
||||
}
|
||||
} else if (checkOpenBottleItem(i_itemNo)) {
|
||||
if (i_itemNo == WATER_BOTTLE) {
|
||||
field_0x0724->setFrame(5.0f);
|
||||
} else {
|
||||
field_0x072c->setFrame(2.0f);
|
||||
}
|
||||
|
||||
item_model_data->getMaterialNodePointer(0)->getShape()->show();
|
||||
} else {
|
||||
field_0x072c->setFrame(2.0f);
|
||||
item_model_data->getMaterialNodePointer(0)->getShape()->hide();
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -53,8 +152,200 @@ asm void daAlink_c::setBottleModel(u16 param_0) {
|
|||
#include "asm/d/a/d_a_alink/setBottleModel__9daAlink_cFUs.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 8010EAC4-8010F45C 109404 0998+00 3/3 0/0 0/0 .text commonBottleDrink__9daAlink_cFi */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
int daAlink_c::commonBottleDrink(int param_0) {
|
||||
simpleAnmPlay(field_0x0718);
|
||||
simpleAnmPlay(field_0x071c);
|
||||
|
||||
daPy_frameCtrl_c* frameCtrl_p;
|
||||
u16 current_anm;
|
||||
if (param_0 || mUpperAnmHeap[2].getIdx() == 0x247) {
|
||||
frameCtrl_p = &mUpperFrameCtrl[2];
|
||||
current_anm = mUpperAnmHeap[2].getIdx();
|
||||
} else {
|
||||
frameCtrl_p = &mUnderFrameCtrl[0];
|
||||
current_anm = mUnderAnmHeap[0].getIdx();
|
||||
}
|
||||
|
||||
if (current_anm == getMainBckData(ANM_BOTTLE_DRINK_START)->m_underID) {
|
||||
if (checkAnmEnd(frameCtrl_p)) {
|
||||
if (param_0) {
|
||||
setUpperAnimeBaseMorf(getMainBckData(ANM_BOTTLE_DRINK)->m_upperID, 0.0f);
|
||||
setFacePriAnime(ANM_BOTTLE_DRINK);
|
||||
} else {
|
||||
setSingleAnimeBaseMorf(ANM_BOTTLE_DRINK, 0.0f);
|
||||
}
|
||||
|
||||
mItemVar0.mBottleItemHealAmount = 0;
|
||||
|
||||
if (mEquipItem != UGLY_SOUP && mEquipItem != CHUCHU_BLACK &&
|
||||
mEquipItem != CHUCHU_PURPLE)
|
||||
{
|
||||
if (mEquipItem == LV1_SOUP) {
|
||||
i_dComIfGp_setItemLifeCount(8, 0);
|
||||
} else if (mEquipItem == LV2_SOUP) {
|
||||
i_dComIfGp_setItemLifeCount(16, 0);
|
||||
} else if (mEquipItem == LV3_SOUP) {
|
||||
i_dComIfGp_setItemLifeCount(32, 0);
|
||||
} else if (mEquipItem == BEE_CHILD) {
|
||||
field_0x2fd3 = 3;
|
||||
i_dComIfGp_setItemLifeCount(dComIfGp_getSelectItemNum(mSelectItemId), 0);
|
||||
} else if (mEquipItem == RED_BOTTLE || mEquipItem == CHUCHU_RED ||
|
||||
mEquipItem == RED_BOTTLE_2)
|
||||
{
|
||||
i_dComIfGp_setItemLifeCount(32, 0);
|
||||
} else if (mEquipItem == MILK_BOTTLE || mEquipItem == HALF_MILK_BOTTLE) {
|
||||
i_dComIfGp_setItemLifeCount(12, 0);
|
||||
} else if (mEquipItem == BLUE_BOTTLE || mEquipItem == CHUCHU_BLUE ||
|
||||
mEquipItem == HOT_SPRING)
|
||||
{
|
||||
i_dComIfGp_setItemLifeCount(dComIfGs_getMaxLifeGauge(), 0);
|
||||
} else if (mEquipItem == CHUCHU_RARE || mEquipItem == FAIRY_DROP) {
|
||||
i_dComIfGp_setItemLifeCount(dComIfGs_getMaxLifeGauge(), 0);
|
||||
}
|
||||
}
|
||||
voiceStart(Z2SE_AL_V_DRINK);
|
||||
} else if (frameCtrl_p->checkPass(50.0f)) {
|
||||
field_0x071c->setFrame(0.0f);
|
||||
mHeldItemModel->getModelData()->entryTexMtxAnimator(field_0x071c);
|
||||
}
|
||||
} else if (current_anm == getMainBckData(ANM_BOTTLE_DRINK)->m_underID) {
|
||||
if (dComIfGp_getItemNowLife() == i_dComIfGs_getLife()) {
|
||||
mpHookTipModel = NULL;
|
||||
|
||||
if (mEquipItem == MILK_BOTTLE) {
|
||||
if (param_0) {
|
||||
setUpperAnimeParam(getMainBckData(ANM_BOTTLE_DRINK_END)->m_upperID, UPPER_2,
|
||||
&daAlinkHIO_bottle_c0::m.mEndDrinkAnm);
|
||||
setFacePriAnime(ANM_BOTTLE_DRINK_END);
|
||||
} else {
|
||||
setSingleAnimeParam(ANM_BOTTLE_DRINK_END,
|
||||
&daAlinkHIO_bottle_c0::m.mEndDrinkAnm);
|
||||
}
|
||||
|
||||
field_0x072c->setFrame(1.0f);
|
||||
if (mDemo.getDemoType() == 5) {
|
||||
dComIfGs_setEquipBottleItemIn(mSelectItemId, HALF_MILK_BOTTLE);
|
||||
}
|
||||
} else if (mProcVar2.field_0x300c == 0) {
|
||||
mProcVar2.field_0x300c = 1;
|
||||
mHeldItemModel->getModelData()->entryTexMtxAnimator(field_0x0720);
|
||||
} else if (simpleAnmPlay(field_0x0720)) {
|
||||
if (mEquipItem == UGLY_SOUP) {
|
||||
if (i_dComIfGs_getLife() <= 2) {
|
||||
mItemVar0.mBottleItemHealAmount = dComIfGs_getMaxLifeGauge();
|
||||
} else if (i_dComIfGs_getLife() <= 4) {
|
||||
mItemVar0.mBottleItemHealAmount =
|
||||
(dComIfGs_getMaxLifeGauge() / 2) - i_dComIfGs_getLife();
|
||||
} else if (i_dComIfGs_getLife() == dComIfGs_getMaxLifeGauge() ||
|
||||
cM_rnd() < 0.5f)
|
||||
{
|
||||
mItemVar0.mBottleItemHealAmount = -4;
|
||||
} else {
|
||||
mItemVar0.mBottleItemHealAmount = 4;
|
||||
}
|
||||
} else if (mEquipItem == CHUCHU_PURPLE) {
|
||||
f32 rnd = cM_rndF(6.0f);
|
||||
|
||||
if (rnd < 1.0f) {
|
||||
mItemVar0.mBottleItemHealAmount = dComIfGs_getMaxLifeGauge();
|
||||
} else if (rnd < 2.0f) {
|
||||
mItemVar0.mBottleItemHealAmount = -(i_dComIfGs_getLife() - 1);
|
||||
if (mItemVar0.mBottleItemHealAmount == 0) {
|
||||
mItemVar0.mBottleItemHealAmount = -1;
|
||||
}
|
||||
} else if (rnd < 4.0f) {
|
||||
mItemVar0.mBottleItemHealAmount = -4;
|
||||
} else {
|
||||
mItemVar0.mBottleItemHealAmount = 4;
|
||||
}
|
||||
} else if (mEquipItem == CHUCHU_BLACK) {
|
||||
mItemVar0.mBottleItemHealAmount = -4;
|
||||
}
|
||||
|
||||
if (mItemVar0.mBottleItemHealAmount < 0 || mEquipItem == BEE_CHILD) {
|
||||
if (param_0) {
|
||||
setUpperAnimeParam(getMainBckData(ANM_BOTTLE_DRINK_NASTY)->m_upperID,
|
||||
UPPER_2, &daAlinkHIO_bottle_c0::m.mDrinkNastyAnm);
|
||||
setFacePriAnime(ANM_BOTTLE_DRINK_NASTY);
|
||||
} else {
|
||||
setSingleAnimeParam(ANM_BOTTLE_DRINK_NASTY,
|
||||
&daAlinkHIO_bottle_c0::m.mDrinkNastyAnm);
|
||||
}
|
||||
} else if (param_0) {
|
||||
setUpperAnimeParam(getMainBckData(ANM_BOTTLE_DRINK_END)->m_upperID, UPPER_2,
|
||||
&daAlinkHIO_bottle_c0::m.mEndDrinkAnm);
|
||||
setFacePriAnime(ANM_BOTTLE_DRINK_END);
|
||||
} else {
|
||||
setSingleAnimeParam(ANM_BOTTLE_DRINK_END,
|
||||
&daAlinkHIO_bottle_c0::m.mEndDrinkAnm);
|
||||
}
|
||||
|
||||
field_0x072c->setFrame(2.0f);
|
||||
if (mDemo.getDemoType() == 5) {
|
||||
dComIfGs_setEquipBottleItemEmpty(mSelectItemId);
|
||||
}
|
||||
|
||||
if (mEquipItem == CHUCHU_RARE || mEquipItem == FAIRY_DROP) {
|
||||
mSwordUpTimer = 510;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (current_anm == getMainBckData(ANM_BOTTLE_DRINK_END)->m_underID ||
|
||||
current_anm == getMainBckData(ANM_BOTTLE_DRINK_NASTY)->m_underID)
|
||||
{
|
||||
if (checkAnmEnd(frameCtrl_p)) {
|
||||
if (mDemo.getDemoMode() == 0x2A) {
|
||||
setSingleAnimeParam(ANM_PICK_UP, &daAlinkHIO_pickUp_c0::m.field_0x14);
|
||||
} else {
|
||||
allUnequip(mKeepItem == KANTERA);
|
||||
}
|
||||
} else if (frameCtrl_p->checkPass(11.0f)) {
|
||||
mHeldItemModel->getModelData()->entryTexMtxAnimator(field_0x0718);
|
||||
} else if (mItemVar0.mBottleItemHealAmount >= 0 && frameCtrl_p->checkPass(21.0f)) {
|
||||
if (mItemVar0.mBottleItemHealAmount > 0) {
|
||||
i_dComIfGp_setItemLifeCount(mItemVar0.mBottleItemHealAmount, 0);
|
||||
}
|
||||
|
||||
voiceStart(Z2SE_AL_V_DRINK_2);
|
||||
} else if (mItemVar0.mBottleItemHealAmount < 0) {
|
||||
if (frameCtrl_p->checkPass(25.0f)) {
|
||||
voiceStart(Z2SE_AL_V_DRINK_DAMAGE);
|
||||
} else if (frameCtrl_p->checkPass(17.0f)) {
|
||||
mDoAud_seStart(Z2SE_AL_DAMAGE_SMALL, NULL, 0, 0);
|
||||
|
||||
if (i_dComIfGs_getLife() <= -mItemVar0.mBottleItemHealAmount) {
|
||||
i_dComIfGp_setItemLifeCount(-(i_dComIfGs_getLife() - 1), 0);
|
||||
} else {
|
||||
i_dComIfGp_setItemLifeCount(mItemVar0.mBottleItemHealAmount, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (current_anm == getMainBckData(ANM_PICK_UP)->m_underID) {
|
||||
if (checkAnmEnd(frameCtrl_p)) {
|
||||
resetUpperAnime(UPPER_2, 3.0f);
|
||||
dCam_getBody()->EndEventCamera(fopAcM_GetID(this));
|
||||
return 1;
|
||||
} else if (frameCtrl_p->checkPass(9.0f)) {
|
||||
returnKeepItemData();
|
||||
}
|
||||
} else if (mEquipItem == NO_ITEM || mEquipItem == KANTERA) {
|
||||
resetUpperAnime(UPPER_2, 3.0f);
|
||||
if (mEquipItem == NO_ITEM) {
|
||||
returnKeepItemData();
|
||||
}
|
||||
|
||||
resetSpecialEvent();
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -63,6 +354,7 @@ asm int daAlink_c::commonBottleDrink(int param_0) {
|
|||
#include "asm/d/a/d_a_alink/commonBottleDrink__9daAlink_cFi.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 8010F45C-8010F54C 109D9C 00F0+00 2/2 0/0 0/0 .text makeFairy__9daAlink_cFP4cXyzUl */
|
||||
fopAc_ac_c* daAlink_c::makeFairy(cXyz* i_pos, u32 i_params) {
|
||||
|
|
@ -96,7 +388,7 @@ fopAc_ac_c* daAlink_c::makeFairy(cXyz* i_pos, u32 i_params) {
|
|||
|
||||
/* 8010F54C-8010F698 109E8C 014C+00 2/2 0/0 0/0 .text procBottleDrinkInit__9daAlink_cFUs
|
||||
*/
|
||||
int daAlink_c::procBottleDrinkInit(u16 param_0) {
|
||||
int daAlink_c::procBottleDrinkInit(u16 i_itemNo) {
|
||||
if (mDemo.getDemoMode() == 0x2A) {
|
||||
if (mProcID == PROC_BOTTLE_DRINK) {
|
||||
return 1;
|
||||
|
|
@ -116,7 +408,7 @@ int daAlink_c::procBottleDrinkInit(u16 param_0) {
|
|||
|
||||
setSingleAnimeParam(ANM_BOTTLE_DRINK_START, &daAlinkHIO_bottle_c0::m.mStartDrinkAnm);
|
||||
keepItemData();
|
||||
setBottleModel(param_0);
|
||||
setBottleModel(i_itemNo);
|
||||
dComIfGp_setPlayerStatus1(0, 0x2000);
|
||||
field_0x3194 = 1;
|
||||
mProcVar0.field_0x3008 = 0;
|
||||
|
|
@ -141,7 +433,7 @@ int daAlink_c::procBottleDrink() {
|
|||
|
||||
/* 8010F6F4-8010F8E4 10A034 01F0+00 1/1 0/0 0/0 .text procBottleOpenInit__9daAlink_cFUs
|
||||
*/
|
||||
// literals
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
int daAlink_c::procBottleOpenInit(u16 param_0) {
|
||||
if (!dComIfGp_event_compulsory(this, 0, 0xFFFF)) {
|
||||
|
|
@ -202,6 +494,91 @@ asm int daAlink_c::procBottleOpenInit(u16 param_0) {
|
|||
#endif
|
||||
|
||||
/* 8010F8E4-8010FC38 10A224 0354+00 1/0 0/0 0/0 .text procBottleOpen__9daAlink_cFv */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
int daAlink_c::procBottleOpen() {
|
||||
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
|
||||
|
||||
if (mProcVar2.field_0x300c == 0) {
|
||||
simpleAnmPlay(field_0x0718);
|
||||
} else if (mProcVar2.field_0x300c == 2) {
|
||||
if (simpleAnmPlay(field_0x0720)) {
|
||||
field_0x072c->setFrame(2.0f);
|
||||
}
|
||||
} else if (simpleAnmPlay(field_0x071c)) {
|
||||
mHeldItemModel->getModelData()->entryTexMtxAnimator(field_0x0718);
|
||||
mProcVar2.field_0x300c = 0;
|
||||
}
|
||||
|
||||
if (checkUnderMove0BckNoArc(ANM_BOTTLE_OPEN)) {
|
||||
if (checkAnmEnd(frameCtrl_p)) {
|
||||
if (mEquipItem == FAIRY) {
|
||||
setSingleAnimeBaseMorf(ANM_BOTTLE_FAIRY, -1.0f);
|
||||
} else {
|
||||
setSingleAnimeParam(ANM_BOTTLE_POUR, &daAlinkHIO_bottle_c0::m.mPourAnm);
|
||||
|
||||
if (mEquipItem == WATER_BOTTLE) {
|
||||
if (mWaterY > mLeftHandPos.y) {
|
||||
mProcVar3.field_0x300e.x = 0;
|
||||
} else {
|
||||
mProcVar3.field_0x300e.x = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (frameCtrl_p->checkPass(30.0f)) {
|
||||
mItemMode = 1;
|
||||
mProcVar2.field_0x300c = 1;
|
||||
mHeldItemModel->getModelData()->entryTexMtxAnimator(field_0x071c);
|
||||
|
||||
if (mEquipItem == FAIRY) {
|
||||
cXyz spC;
|
||||
mDoMtx_multVec(mHeldItemModel->getBaseTRMtx(), &bottleTop, &spC);
|
||||
|
||||
if (makeFairy(&spC, 0)) {
|
||||
onModeFlg(0x8000000);
|
||||
mpHookTipModel = NULL;
|
||||
resetFairyEffect();
|
||||
}
|
||||
}
|
||||
} else if (frameCtrl_p->getFrame() >= 18.0f) {
|
||||
field_0x2f93 = 5;
|
||||
}
|
||||
} else {
|
||||
if (checkAnmEnd(frameCtrl_p) && mProcVar0.field_0x3008 != 0) {
|
||||
returnKeepItemData();
|
||||
resetSpecialEvent();
|
||||
} else if (frameCtrl_p->checkPass(11.0f)) {
|
||||
mHeldItemModel->getModelData()->entryTexMtxAnimator(field_0x0720);
|
||||
mProcVar2.field_0x300c = 2;
|
||||
dComIfGs_setEquipBottleItemEmpty(mSelectItemId);
|
||||
|
||||
if (mEquipItem == WATER_BOTTLE && mProcVar3.field_0x300e.x != 0) {
|
||||
seStartOnlyReverb(Z2SE_LK_SPRINKLE_WATER);
|
||||
}
|
||||
} else if (frameCtrl_p->getFrame() > 16.0f && frameCtrl_p->getFrame() < 31.0f) {
|
||||
mProcVar3.field_0x300e.y = 1;
|
||||
} else {
|
||||
mProcVar3.field_0x300e.y = 0;
|
||||
}
|
||||
|
||||
if (mProcVar0.field_0x3008 == 0 && frameCtrl_p->getFrame() >= 25.0f) {
|
||||
dInsect_c* insect_p = (dInsect_c*)fopAcM_SearchByID(field_0x32cc);
|
||||
if (insect_p != NULL) {
|
||||
mpHookTipModel = NULL;
|
||||
mProcVar0.field_0x3008 = 1;
|
||||
mDoMtx_multVec(mHeldItemModel->getBaseTRMtx(), &bottleTop, &insect_p->current.pos);
|
||||
fopAcM_OnStatus(insect_p, 0x800);
|
||||
|
||||
if (mProcVar1.field_0x300a != 0) {
|
||||
insect_p->Insect_Release();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -210,9 +587,99 @@ asm int daAlink_c::procBottleOpen() {
|
|||
#include "asm/d/a/d_a_alink/procBottleOpen__9daAlink_cFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 8010FC38-8010FF58 10A578 0320+00 4/4 0/0 0/0 .text
|
||||
* procBottleSwingInit__9daAlink_cFP10fopAc_ac_ci */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
int daAlink_c::procBottleSwingInit(fopAc_ac_c* param_0, int param_1) {
|
||||
fopAc_ac_c* var_r31 = param_0;
|
||||
if (var_r31 != NULL && mEquipItem != KANTERA) {
|
||||
return procPreActionUnequipInit(PROC_BOTTLE_SWING, NULL);
|
||||
}
|
||||
|
||||
if (var_r31 == NULL && getReadyItem() != EMPTY_BOTTLE) {
|
||||
return checkWaitAction();
|
||||
}
|
||||
|
||||
commonProcInit(PROC_BOTTLE_SWING);
|
||||
current.angle.y = shape_angle.y;
|
||||
mNormalSpeed = 0.0f;
|
||||
field_0x2f98 = 4;
|
||||
mProcVar3.field_0x300e.y = param_1;
|
||||
|
||||
if (var_r31 != NULL) {
|
||||
field_0x280c.setData(var_r31);
|
||||
} else {
|
||||
var_r31 = i_dComIfGp_att_getCatghTarget();
|
||||
}
|
||||
|
||||
BOOL temp_r3;
|
||||
s16 temp_r30;
|
||||
if (var_r31 != NULL) {
|
||||
if (var_r31->mAttentionInfo.mPosition.y > field_0x3834.y - 30.0f) {
|
||||
temp_r3 = false;
|
||||
} else {
|
||||
temp_r3 = true;
|
||||
}
|
||||
|
||||
temp_r30 = fopAcM_GetName(var_r31);
|
||||
} else {
|
||||
if (field_0x2fbc != 11 && field_0x2fbc != 6 && mWaterY > current.pos.y + 10.0f) {
|
||||
temp_r3 = true;
|
||||
} else {
|
||||
temp_r3 = false;
|
||||
}
|
||||
|
||||
temp_r30 = PROC_ALINK;
|
||||
}
|
||||
|
||||
if (temp_r30 == PROC_OBJ_OILTUBO || temp_r30 == PROC_TAG_SSDRINK ||
|
||||
temp_r30 == PROC_TAG_BTLITM || mEquipItem == KANTERA)
|
||||
{
|
||||
setSingleAnimeParam(ANM_BOTTLE_SCOOP, &daAlinkHIO_bottle_c0::m.mScoopAnm);
|
||||
|
||||
if (mEquipItem == KANTERA) {
|
||||
i_onNoResetFlg2(FLG2_UNK_10000000);
|
||||
|
||||
JPABaseEmitter* emitter_p = dComIfGp_particle_getEmitter(field_0x31c4);
|
||||
if (emitter_p != NULL) {
|
||||
emitter_p->stopDrawParticle();
|
||||
}
|
||||
}
|
||||
|
||||
field_0x3478 = daAlinkHIO_bottle_c0::m.mScoopAnm.mCheckFrame;
|
||||
field_0x347c = 14.0f;
|
||||
|
||||
if (var_r31 != NULL) {
|
||||
shape_angle.y = cLib_targetAngleY(¤t.pos, &var_r31->current.pos);
|
||||
current.angle.y = shape_angle.y;
|
||||
|
||||
current.pos.x = var_r31->current.pos.x - cM_ssin(shape_angle.y) * 70.0f;
|
||||
current.pos.z = var_r31->current.pos.z - cM_scos(shape_angle.y) * 70.0f;
|
||||
}
|
||||
|
||||
if (temp_r30 == PROC_OBJ_OILTUBO) {
|
||||
onModeFlg(0x2000);
|
||||
}
|
||||
} else if (temp_r3) {
|
||||
setSingleAnimeParam(ANM_BOTTLE_SWING_DOWN, &daAlinkHIO_bottle_c0::m.mSwingDownAnm);
|
||||
field_0x3478 = daAlinkHIO_bottle_c0::m.mSwingDownAnm.mCheckFrame;
|
||||
field_0x347c = 8.0f;
|
||||
} else {
|
||||
setSingleAnimeParam(ANM_BOTTLE_SWING, &daAlinkHIO_bottle_c0::m.mSwingSideAnm);
|
||||
field_0x3478 = daAlinkHIO_bottle_c0::m.mSwingSideAnm.mCheckFrame;
|
||||
field_0x347c = 4.0f;
|
||||
}
|
||||
|
||||
mProcVar2.field_0x300c = 0;
|
||||
voiceStart(Z2SE_AL_V_SWING_BOTTLE);
|
||||
seStartOnlyReverb(Z2SE_AL_SWING_BOTTLE);
|
||||
mProcVar3.field_0x300e.x = 0;
|
||||
return 1;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -221,8 +688,90 @@ asm int daAlink_c::procBottleSwingInit(fopAc_ac_c* param_0, int param_1) {
|
|||
#include "asm/d/a/d_a_alink/procBottleSwingInit__9daAlink_cFP10fopAc_ac_ci.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 8010FF58-801102D0 10A898 0378+00 1/0 0/0 0/0 .text procBottleSwing__9daAlink_cFv */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
int daAlink_c::procBottleSwing() {
|
||||
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
|
||||
|
||||
if (mProcVar2.field_0x300c == 0) {
|
||||
if (mEvtInfo.i_checkCommandCatch()) {
|
||||
if (mProcVar3.field_0x300e.x == 0) {
|
||||
dComIfGp_getVibration().StartShock(1, 1, cXyz(0.0f, 1.0f, 0.0f));
|
||||
mProcVar3.field_0x300e.x = 1;
|
||||
}
|
||||
|
||||
dComIfGp_setPlayerStatus1(0, 0x4000000);
|
||||
|
||||
if (i_dComIfGp_att_getCatghTarget() != NULL) {
|
||||
fopAcM_OnStatus(i_dComIfGp_att_getCatghTarget(), 0x800);
|
||||
} else if (field_0x280c.getActor() != NULL) {
|
||||
fopAcM_OnStatus(field_0x280c.getActor(), 0x800);
|
||||
}
|
||||
|
||||
if (frameCtrl_p->getFrame() > field_0x347c) {
|
||||
mProcVar2.field_0x300c = 1;
|
||||
offModeFlg(4);
|
||||
|
||||
if (mEquipItem != KANTERA) {
|
||||
u16 bottle_item = dComIfGp_event_getPreItemNo();
|
||||
|
||||
if (bottle_item == WATER_BOTTLE &&
|
||||
getMoveBGActorName(mLinkAcch.m_wtr, 0) == PROC_Obj_Onsen)
|
||||
{
|
||||
bottle_item = HOT_SPRING;
|
||||
}
|
||||
|
||||
dComIfGs_setEquipBottleItemIn(mSelectItemId, bottle_item);
|
||||
|
||||
if (bottle_item == BEE_CHILD) {
|
||||
dComIfGp_setSelectItemNum(mSelectItemId, dComIfGs_getBottleMax());
|
||||
} else if (bottle_item == WATER_BOTTLE) {
|
||||
seStartOnlyReverb(Z2SE_LK_SCOOP_WATER);
|
||||
} else if (checkOilBottleItem(bottle_item)) {
|
||||
seStartOnlyReverb(Z2SE_AL_SCOOP_OIL);
|
||||
} else if (bottle_item == LV1_SOUP || bottle_item == LV2_SOUP ||
|
||||
bottle_item == LV3_SOUP)
|
||||
{
|
||||
seStartOnlyReverb(Z2SE_AL_SCOOP_SOUP);
|
||||
}
|
||||
|
||||
setBottleModel(bottle_item);
|
||||
mHeldItemModel->getModelData()->getMaterialNodePointer(0)->getShape()->hide();
|
||||
}
|
||||
|
||||
mDemo.i_setSpecialDemoType();
|
||||
}
|
||||
} else if (frameCtrl_p->getFrame() <= field_0x347c) {
|
||||
if (getReadyItem() == EMPTY_BOTTLE &&
|
||||
(i_dComIfGp_att_getCatghTarget() != NULL ||
|
||||
(field_0x2fbc != 11 && field_0x2fbc != 6 && mWaterY > current.pos.y + 10.0f)))
|
||||
{
|
||||
fopAcM_orderCatchEvent(this, i_dComIfGp_att_getCatghTarget(), 0, 0);
|
||||
} else if (mEquipItem == KANTERA) {
|
||||
if (field_0x280c.getActor() != NULL) {
|
||||
fopAcM_orderCatchEvent(this, field_0x280c.getActor(), 0, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (checkAnmEnd(frameCtrl_p)) {
|
||||
if (mProcVar2.field_0x300c != 0) {
|
||||
procBottleGetInit(mProcVar3.field_0x300e.y);
|
||||
} else {
|
||||
checkNextAction(0);
|
||||
}
|
||||
} else if (frameCtrl_p->getFrame() > field_0x3478 && mProcVar2.field_0x300c == 0) {
|
||||
onModeFlg(4);
|
||||
checkNextAction(1);
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -231,6 +780,7 @@ asm int daAlink_c::procBottleSwing() {
|
|||
#include "asm/d/a/d_a_alink/procBottleSwing__9daAlink_cFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 801102D0-80110518 10AC10 0248+00 2/2 0/0 0/0 .text procBottleGetInit__9daAlink_cFi */
|
||||
int daAlink_c::procBottleGetInit(int param_0) {
|
||||
|
|
@ -304,7 +854,7 @@ int daAlink_c::procBottleGet() {
|
|||
if (frameCtrl->checkAnmEnd() && checkEndMessage(field_0x32cc)) {
|
||||
resetFairyEffect();
|
||||
if (mEquipItem != KANTERA) {
|
||||
deleteEquipItem(0, 0);
|
||||
deleteEquipItem(FALSE, FALSE);
|
||||
}
|
||||
|
||||
resetSpecialEvent();
|
||||
|
|
|
|||
|
|
@ -125,7 +125,7 @@ void daAlink_c::makeArrow() {
|
|||
mItemAcKeep.setData(arrow_actor);
|
||||
}
|
||||
|
||||
field_0x3018 = 0;
|
||||
mItemVar0.field_0x3018 = 0;
|
||||
}
|
||||
|
||||
/* 800DEAE4-800DEB8C 0D9424 00A8+00 3/3 0/0 0/0 .text deleteArrow__9daAlink_cFv */
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ BOOL daAlink_c::checkFishingRodAndLureItem() const {
|
|||
void daAlink_c::initFishingRodHand() {
|
||||
field_0x2f94 = 0x65;
|
||||
field_0x2f95 = 0x65;
|
||||
field_0x3018 = 1;
|
||||
mItemVar0.field_0x3018 = 1;
|
||||
|
||||
if (mEquipItem == JEWEL_WORM_ROD || mEquipItem == WORM_ROD) {
|
||||
mItemMode = 0x74;
|
||||
|
|
|
|||
|
|
@ -196,8 +196,8 @@ int daAlink_c::returnCopyRod() {
|
|||
|
||||
/* 800E1ADC-800E1BB4 0DC41C 00D8+00 2/2 0/0 0/0 .text checkUpperItemActionCopyRod__9daAlink_cFv */
|
||||
BOOL daAlink_c::checkUpperItemActionCopyRod() {
|
||||
if (field_0x3018 != 0) {
|
||||
field_0x3018--;
|
||||
if (mItemVar0.field_0x3018 != 0) {
|
||||
mItemVar0.field_0x3018--;
|
||||
}
|
||||
|
||||
if (checkReadyItem() && !itemButton() && checkCopyRodReadyAnime()) {
|
||||
|
|
|
|||
|
|
@ -2961,7 +2961,7 @@ int daAlink_c::procCoDead() {
|
|||
}
|
||||
|
||||
if (!i_checkNoResetFlg2(FLG2_UNK_40000)) {
|
||||
mProcVar3.field_0x300e.x++;
|
||||
mProcVar3.field_0x300e++;
|
||||
if (mProcVar3.field_0x300e.x == 2) {
|
||||
dCam_getBody()->StartEventCamera(9, fopAcM_GetID(this), 0);
|
||||
} else if (mProcVar3.field_0x300e.x > 10) {
|
||||
|
|
|
|||
|
|
@ -435,7 +435,7 @@ void daAlink_c::initHookshotReady() {
|
|||
|
||||
dComIfGp_getVibration().StartShock(1, 1, cXyz(tmp_0, lit_6040, tmp_0));
|
||||
|
||||
field_0x3018 = 3;
|
||||
mItemVar0.field_0x3018 = 3;
|
||||
field_0x3494 = lit_6041;
|
||||
}
|
||||
|
||||
|
|
@ -462,7 +462,7 @@ int daAlink_c::checkUpperItemActionHookshot() {
|
|||
}
|
||||
|
||||
if (mItemMode == HS_MODE_READY_e) {
|
||||
if (!itemButton() && field_0x3018 == 0 && checkReadyItem()) {
|
||||
if (!itemButton() && mItemVar0.field_0x3018 == 0 && checkReadyItem()) {
|
||||
mItemMode = 2;
|
||||
field_0x3026 = 0;
|
||||
field_0x3494 = lit_6041;
|
||||
|
|
@ -543,8 +543,8 @@ int daAlink_c::checkUpperItemActionHookshot() {
|
|||
return procHookshotFlyInit();
|
||||
}
|
||||
|
||||
if (field_0x3018 > 0) {
|
||||
field_0x3018--;
|
||||
if (mItemVar0.field_0x3018 > 0) {
|
||||
mItemVar0.field_0x3018--;
|
||||
}
|
||||
|
||||
return cancelUpperItemReadyAnime(0);
|
||||
|
|
@ -803,7 +803,7 @@ void daAlink_c::setHookshotPos() {
|
|||
if (checkHookshotWait() || mItemMode == 2) {
|
||||
csXyz* var_r28;
|
||||
if (mProcID == PROC_HOOKSHOT_WALL_SHOOT || mProcID == PROC_HOOKSHOT_ROOF_SHOOT) {
|
||||
var_r28 = &mProcVar3.field_0x300e;
|
||||
var_r28 = &mProcVar3.field_0x300e.x;
|
||||
} else {
|
||||
var_r28 = &mBodyAngle;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,38 +25,38 @@ s16 daAlink_c::getIronBallBgHit() const {
|
|||
/* 80112474-801124B4 10CDB4 0040+00 0/0 2/2 1/1 .text checkIronBallThrowMode__9daAlink_cCFv */
|
||||
bool daAlink_c::checkIronBallThrowMode() const {
|
||||
return mEquipItem == IRONBALL &&
|
||||
(field_0x3018 == 4 || field_0x3018 == 5 || field_0x3018 == 6 || field_0x3018 == 3);
|
||||
(mItemVar0.field_0x3018 == 4 || mItemVar0.field_0x3018 == 5 || mItemVar0.field_0x3018 == 6 || mItemVar0.field_0x3018 == 3);
|
||||
}
|
||||
|
||||
/* 801124B4-801124FC 10CDF4 0048+00 0/0 1/1 1/1 .text checkIronBallThrowReturnMode__9daAlink_cCFv
|
||||
*/
|
||||
bool daAlink_c::checkIronBallThrowReturnMode() const {
|
||||
return mEquipItem == IRONBALL && (field_0x3018 == 4 || field_0x3018 == 5 || field_0x3018 == 6 ||
|
||||
field_0x3018 == 7 || field_0x3018 == 3);
|
||||
return mEquipItem == IRONBALL && (mItemVar0.field_0x3018 == 4 || mItemVar0.field_0x3018 == 5 || mItemVar0.field_0x3018 == 6 ||
|
||||
mItemVar0.field_0x3018 == 7 || mItemVar0.field_0x3018 == 3);
|
||||
}
|
||||
|
||||
/* 801124FC-80112524 10CE3C 0028+00 1/0 0/0 0/0 .text checkIronBallReturn__9daAlink_cCFv
|
||||
*/
|
||||
bool daAlink_c::checkIronBallReturn() const {
|
||||
return mEquipItem == IRONBALL && field_0x3018 == 7;
|
||||
return mEquipItem == IRONBALL && mItemVar0.field_0x3018 == 7;
|
||||
}
|
||||
|
||||
/* 80112524-80112568 10CE64 0044+00 1/0 0/0 0/0 .text checkIronBallGroundStop__9daAlink_cCFv */
|
||||
bool daAlink_c::checkIronBallGroundStop() const {
|
||||
return mEquipItem == IRONBALL && field_0x3018 != 0 && field_0x3018 != 8 && field_0x301e == 0 &&
|
||||
return mEquipItem == IRONBALL && mItemVar0.field_0x3018 != 0 && mItemVar0.field_0x3018 != 8 && field_0x301e == 0 &&
|
||||
field_0x301e < 10;
|
||||
}
|
||||
|
||||
/* 80112568-80112628 10CEA8 00C0+00 5/5 0/0 0/0 .text setIronBallWaitUpperAnime__9daAlink_cFi */
|
||||
void daAlink_c::setIronBallWaitUpperAnime(int param_0) {
|
||||
if (!checkIronBallWaitAnime() && !checkIronBallPreSwingAnime() &&
|
||||
(field_0x3018 == 0 || field_0x3018 == 8) && (param_0 || checkNoUpperAnime())) {
|
||||
(mItemVar0.field_0x3018 == 0 || mItemVar0.field_0x3018 == 8) && (param_0 || checkNoUpperAnime())) {
|
||||
setUpperAnimeBaseSpeed(0x19C, daAlinkHIO_ironBall_c0::m.mWaitAnmSpeed,
|
||||
daAlinkHIO_basic_c0::m.mAnmBlendFactor);
|
||||
setFacePriBck(0xE8);
|
||||
field_0x2f96 = 254;
|
||||
field_0x2f97 = 5;
|
||||
field_0x3018 = 0;
|
||||
mItemVar0.field_0x3018 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -68,8 +68,8 @@ void daAlink_c::checkIronBallDelete() {
|
|||
return;
|
||||
}
|
||||
|
||||
if (field_0x3018 == 1 || field_0x3018 == 2 || field_0x3018 == 3 ||
|
||||
((field_0x3018 == 0 || field_0x3018 == 8) && !checkIronBallWaitAnime() &&
|
||||
if (mItemVar0.field_0x3018 == 1 || mItemVar0.field_0x3018 == 2 || mItemVar0.field_0x3018 == 3 ||
|
||||
((mItemVar0.field_0x3018 == 0 || mItemVar0.field_0x3018 == 8) && !checkIronBallWaitAnime() &&
|
||||
!checkEquipAnime() &&
|
||||
(!i_checkModeFlg(4) || i_checkModeFlg(0x70C52) || !mLinkAcch.ChkGroundHit()))) {
|
||||
deleteEquipItem(1, 0);
|
||||
|
|
@ -80,8 +80,8 @@ void daAlink_c::checkIronBallDelete() {
|
|||
void daAlink_c::setIronBallReturn(int param_0) {
|
||||
if (param_0 && field_0x301e != 0) {
|
||||
field_0x301e--;
|
||||
} else if (field_0x3018 != 7) {
|
||||
field_0x3018 = 7;
|
||||
} else if (mItemVar0.field_0x3018 != 7) {
|
||||
mItemVar0.field_0x3018 = 7;
|
||||
field_0x301e = 0;
|
||||
seStartOnlyReverb(Z2SE_AL_IB_PULLBACK);
|
||||
}
|
||||
|
|
@ -214,13 +214,13 @@ BOOL daAlink_c::checkUpperItemActionIronBall() {
|
|||
|
||||
u16 upperId = getMainBckData(ANM_IRONBALL_TURN)->m_upperID;
|
||||
setUpperAnimeBaseSpeed(upperId, daAlinkHIO_ironBall_c0::m.mTurnAnmSpeed, daAlinkHIO_ironBall_c0::m.mTurnInterpolation);
|
||||
field_0x3018 = 2;
|
||||
mItemVar0.field_0x3018 = 2;
|
||||
seStartOnlyReverb(Z2SE_AL_IB_SWING);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (frameCtrl->getFrame() > lit_8781) {
|
||||
field_0x3018 = 1;
|
||||
mItemVar0.field_0x3018 = 1;
|
||||
}
|
||||
} else {
|
||||
daPy_frameCtrl_c* frameCtrl = &mUpperFrameCtrl[2];
|
||||
|
|
@ -283,7 +283,7 @@ int daAlink_c::procIronBallSubject() {
|
|||
|
||||
setShapeAngleToAtnActor(0);
|
||||
|
||||
if (!checkNextAction(0) && itemButton() && field_0x3018 == 2) {
|
||||
if (!checkNextAction(0) && itemButton() && mItemVar0.field_0x3018 == 2) {
|
||||
setBodyAngleToCamera();
|
||||
}
|
||||
|
||||
|
|
@ -357,7 +357,7 @@ int daAlink_c::procIronBallThrowInit() {
|
|||
mNormalSpeed = FLOAT_LABEL(lit_6108);
|
||||
current.angle.y = shape_angle.y;
|
||||
mProcVar2.field_0x300c = 0;
|
||||
field_0x3018 = 3;
|
||||
mItemVar0.field_0x3018 = 3;
|
||||
field_0x3024 = 0;
|
||||
field_0x3026 = 0;
|
||||
|
||||
|
|
@ -381,7 +381,7 @@ asm int daAlink_c::procIronBallThrow() {
|
|||
int daAlink_c::procIronBallReturnInit() {
|
||||
commonProcInit(PROC_IRON_BALL_RETURN);
|
||||
|
||||
if (field_0x3018 == 8) {
|
||||
if (mItemVar0.field_0x3018 == 8) {
|
||||
mProcVar2.field_0x300c = 1;
|
||||
setSingleAnimeParam(ANM_IRONBALL_CATCH, &daAlinkHIO_ironBall_c0::m.mCatchAnm);
|
||||
field_0x2f99 = 12;
|
||||
|
|
@ -405,7 +405,7 @@ int daAlink_c::procIronBallReturn() {
|
|||
|
||||
field_0x2f99 = 4;
|
||||
|
||||
if (field_0x3018 == 8 && mProcVar2.field_0x300c == 0) {
|
||||
if (mItemVar0.field_0x3018 == 8 && mProcVar2.field_0x300c == 0) {
|
||||
mProcVar2.field_0x300c = 1;
|
||||
setSingleAnimeParam(ANM_IRONBALL_CATCH, &daAlinkHIO_ironBall_c0::m.mCatchAnm);
|
||||
field_0x2f99 = 12;
|
||||
|
|
@ -414,17 +414,17 @@ int daAlink_c::procIronBallReturn() {
|
|||
f32 tmp_0 = FLOAT_LABEL(lit_6108);
|
||||
dComIfGp_getVibration().StartShock(3, 1, cXyz(tmp_0, lit_6040, tmp_0));
|
||||
} else if (frameCtrl->checkAnmEnd()) {
|
||||
if (field_0x3018 == 8) {
|
||||
field_0x3018 = 0;
|
||||
if (mItemVar0.field_0x3018 == 8) {
|
||||
mItemVar0.field_0x3018 = 0;
|
||||
setIronBallWaitUpperAnime(1);
|
||||
checkNextAction(0);
|
||||
}
|
||||
} else if (field_0x3018 == 8 && frameCtrl->getFrame() > daAlinkHIO_ironBall_c0::m.mCatchAnm.mCheckFrame) {
|
||||
field_0x3018 = 0;
|
||||
} else if (mItemVar0.field_0x3018 == 8 && frameCtrl->getFrame() > daAlinkHIO_ironBall_c0::m.mCatchAnm.mCheckFrame) {
|
||||
mItemVar0.field_0x3018 = 0;
|
||||
setIronBallWaitUpperAnime(1);
|
||||
|
||||
if (!checkNextAction(1)) {
|
||||
field_0x3018 = 8;
|
||||
mItemVar0.field_0x3018 = 8;
|
||||
resetUpperAnime(UPPER_2, FLOAT_LABEL(lit_6108));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3711,7 +3711,7 @@ int daAlink_c::draw() {
|
|||
|
||||
if (mClothesChangeWaitTimer != 0) {
|
||||
if (mProcID == PROC_METAMORPHOSE) {
|
||||
if (mProcVar3.field_0x300e > 0) {
|
||||
if (mProcVar3.field_0x300e.x > 0) {
|
||||
mTevStr.mFogColor.r = 255;
|
||||
} else {
|
||||
mTevStr.mFogColor.r = -255;
|
||||
|
|
|
|||
|
|
@ -3,6 +3,10 @@
|
|||
* Player Sumo action handling
|
||||
*/
|
||||
|
||||
#include "d/a/d_a_alink.h"
|
||||
#include "d/com/d_com_inf_game.h"
|
||||
#include "rel/d/a/npc/d_a_npc_wrestler/d_a_npc_wrestler.h"
|
||||
|
||||
/* 800EA844-800EA8D0 0E5184 008C+00 5/5 0/0 0/0 .text checkSumouVsActor__9daAlink_cFv */
|
||||
BOOL daAlink_c::checkSumouVsActor() {
|
||||
mCargoCarryAcKeep.setActor();
|
||||
|
|
@ -28,8 +32,8 @@ void daAlink_c::cancelSumouMode() {
|
|||
}
|
||||
|
||||
/* 800EA908-800EA92C 0E5248 0024+00 2/2 0/0 0/0 .text sumouPunchTrigger__9daAlink_cFv */
|
||||
void daAlink_c::sumouPunchTrigger() {
|
||||
itemTriggerCheck(BTN_B);
|
||||
BOOL daAlink_c::sumouPunchTrigger() {
|
||||
return itemTriggerCheck(BTN_B);
|
||||
}
|
||||
|
||||
/* 800EA92C-800EA950 0E526C 0024+00 5/5 0/0 0/0 .text setSumouPunchStatus__9daAlink_cFv
|
||||
|
|
@ -53,7 +57,7 @@ int daAlink_c::procSumouReadyInit() {
|
|||
mSpecialMode = 1;
|
||||
mProcVar2.field_0x300c = 0;
|
||||
mProcVar3.field_0x300e.x = 0;
|
||||
deleteEquipItem(0, 1);
|
||||
deleteEquipItem(FALSE, TRUE);
|
||||
|
||||
if (mThrowBoomerangAcKeep.getActor() != NULL) {
|
||||
static_cast<daBoomerang_c*>(mThrowBoomerangAcKeep.getActor())->onForceDelete();
|
||||
|
|
@ -63,6 +67,73 @@ int daAlink_c::procSumouReadyInit() {
|
|||
}
|
||||
|
||||
/* 800EAA28-800EAC4C 0E5368 0224+00 1/0 0/0 0/0 .text procSumouReady__9daAlink_cFv */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
int daAlink_c::procSumouReady() {
|
||||
field_0x2f99 = 4;
|
||||
|
||||
if (!checkSumouVsActor()) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (mSpecialMode == 2 || mSpecialMode == 3 || mSpecialMode == 4) {
|
||||
setSumouPunchStatus();
|
||||
setDoStatusEmphasys(0x15);
|
||||
dComIfGp_setAdvanceDirection(5);
|
||||
|
||||
if (doTrigger()) {
|
||||
mProcVar2.field_0x300c = 1;
|
||||
}
|
||||
|
||||
if (sumouPunchTrigger()) {
|
||||
mProcVar3.field_0x300e.x = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (mUnderAnmHeap[0].getIdx() == getMainBckData(ANM_SUMOU_HAKEYOI)->m_underID &&
|
||||
mUnderFrameCtrl[0].checkPass(7.0f))
|
||||
{
|
||||
field_0x2f92 = 0xFE;
|
||||
field_0x2f93 = 0xFE;
|
||||
}
|
||||
|
||||
if (mSpecialMode == 3) {
|
||||
setSingleAnimeBase(ANM_SUMOU_HAKEYOI);
|
||||
field_0x2f99 = 12;
|
||||
mSpecialMode = 4;
|
||||
dComIfGp_clearPlayerStatus0(0, 0x2000);
|
||||
} else if (checkAnmEnd(mUnderFrameCtrl)) {
|
||||
if (checkInputOnR()) {
|
||||
s16 temp_r29 = (s16)(field_0x2fe2 - shape_angle.y);
|
||||
int var_r30 = abs(temp_r29);
|
||||
cLib_distanceAngleS(field_0x2fe2, shape_angle.y);
|
||||
|
||||
if (var_r30 > 0x800 && var_r30 < 0x7800) {
|
||||
mNormalSpeed = 1.0f;
|
||||
|
||||
if (temp_r29 > 0) {
|
||||
field_0x2f98 = 2;
|
||||
} else {
|
||||
field_0x2f98 = 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (mSpecialMode == 0x1C || mSpecialMode == 0x1B || mProcVar2.field_0x300c != 0 ||
|
||||
mProcVar3.field_0x300e.x != 0 ||
|
||||
(static_cast<daNpcWrestler_c*>(mCargoCarryAcKeep.getActor())->getWrestlerAction() ==
|
||||
3 &&
|
||||
!checkZeroSpeedF()))
|
||||
{
|
||||
procSumouActionInit(mProcVar2.field_0x300c, mProcVar3.field_0x300e.x, 0);
|
||||
} else {
|
||||
procSumouSideMoveInit();
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -71,8 +142,58 @@ asm int daAlink_c::procSumouReady() {
|
|||
#include "asm/d/a/d_a_alink/procSumouReady__9daAlink_cFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 800EAC4C-800EAD84 0E558C 0138+00 1/1 0/0 0/0 .text procSumouMoveInit__9daAlink_cFv */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
int daAlink_c::procSumouMoveInit() {
|
||||
daNpcWrestler_c* wrestler_p = (daNpcWrestler_c*)mCargoCarryAcKeep.getActor();
|
||||
commonProcInit(PROC_SUMOU_MOVE);
|
||||
|
||||
field_0x2f99 = 12;
|
||||
field_0x3478 = 1000.0f;
|
||||
|
||||
daAlink_ANM anm;
|
||||
if (mSpecialMode == 15 || mSpecialMode == 16) {
|
||||
if (wrestler_p->getWrestlerType() != 0) {
|
||||
anm = ANM_SUMOU_TACKLE_WAIT_GORON;
|
||||
} else {
|
||||
anm = ANM_SUMOU_TACKLE_WAIT;
|
||||
}
|
||||
|
||||
setSingleAnimeBase(anm);
|
||||
mSpeedModifier = 1.0f;
|
||||
mSpecialMode = 7;
|
||||
mProcVar2.field_0x300c = 0xFFFF;
|
||||
mProcVar0.field_0x3008 = 10;
|
||||
field_0x3478 = 5.0f;
|
||||
field_0x32cc = Z2SE_AL_V_SUMO_PUSH;
|
||||
} else {
|
||||
if (wrestler_p->getWrestlerType() != 0) {
|
||||
anm = ANM_SUMOU_TACKLE_STAGGER_GORON;
|
||||
} else {
|
||||
anm = ANM_SUMOU_TACKLE_STAGGER;
|
||||
}
|
||||
|
||||
setSingleAnimeBase(anm);
|
||||
mSpeedModifier = -1.0f;
|
||||
mSpecialMode = 8;
|
||||
mProcVar2.field_0x300c = 10;
|
||||
mProcVar0.field_0x3008 = 15;
|
||||
field_0x2f9d = 0x60;
|
||||
}
|
||||
|
||||
field_0x3198 = anm;
|
||||
current.angle.y = shape_angle.y;
|
||||
mProcVar3.field_0x300e.x = 0;
|
||||
mProcVar3.field_0x300e.y = 0;
|
||||
mNormalSpeed = 0.0f;
|
||||
mProcVar1.field_0x300a = 0x4B;
|
||||
setFootEffectProcType(5);
|
||||
return 1;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -81,8 +202,147 @@ asm int daAlink_c::procSumouMoveInit() {
|
|||
#include "asm/d/a/d_a_alink/procSumouMoveInit__9daAlink_cFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 800EAD84-800EB208 0E56C4 0484+00 1/0 0/0 0/0 .text procSumouMove__9daAlink_cFv */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
int daAlink_c::procSumouMove() {
|
||||
field_0x2f99 = 4;
|
||||
|
||||
if (!checkSumouVsActor()) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
daNpcWrestler_c* wrestler_p = (daNpcWrestler_c*)mCargoCarryAcKeep.getActor();
|
||||
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
|
||||
f32 sp8;
|
||||
|
||||
if (frameCtrl_p->checkPass(field_0x3478)) {
|
||||
voiceStart(field_0x32cc);
|
||||
}
|
||||
|
||||
if (mSpecialMode == 9 || mSpecialMode == 10) {
|
||||
if (mProcVar1.field_0x300a != 0) {
|
||||
mProcVar1.field_0x300a--;
|
||||
}
|
||||
|
||||
sp8 = frameCtrl_p->getRate();
|
||||
if (mProcVar0.field_0x3008 != 0) {
|
||||
if (doTrigger()) {
|
||||
mProcVar0.field_0x3008--;
|
||||
}
|
||||
|
||||
f32 var_f1;
|
||||
if (mSpecialMode == 10 && mProcVar1.field_0x300a == 0) {
|
||||
var_f1 = 1.5f;
|
||||
} else {
|
||||
var_f1 = 0.2f;
|
||||
}
|
||||
|
||||
cLib_chaseF(&sp8, var_f1, 0.3f);
|
||||
frameCtrl_p->setRate(sp8);
|
||||
} else if (mSpecialMode == 9) {
|
||||
cLib_chaseF(&sp8, 1.5f, 0.3f);
|
||||
} else {
|
||||
setSingleAnimeBase(ANM_SUMOU_PUSH_BACK);
|
||||
mSpecialMode = 0x23;
|
||||
mSpeedModifier = 0.0f;
|
||||
field_0x3478 = 13.0f;
|
||||
field_0x32cc = Z2SE_AL_V_SUMO_HOLD_BACK;
|
||||
field_0x3198 = ANM_SUMOU_PUSH_BACK;
|
||||
}
|
||||
} else if (mProcVar3.field_0x300e.x == 0) {
|
||||
if (mProcVar2.field_0x300c > 0 && doTrigger()) {
|
||||
mProcVar2.field_0x300c--;
|
||||
}
|
||||
|
||||
setDoStatusContinuation(0x64);
|
||||
if (mSpeedModifier > 0.0f) {
|
||||
sp8 = frameCtrl_p->getRate();
|
||||
|
||||
if (doTrigger()) {
|
||||
cLib_chaseF(&sp8, 1.5f, 0.1f);
|
||||
} else {
|
||||
cLib_addCalc(&sp8, 1.0f, 0.5f, 0.05f, 0.02f);
|
||||
}
|
||||
|
||||
frameCtrl_p->setRate(sp8);
|
||||
}
|
||||
|
||||
dMeter2Info_onBlinkButton(1);
|
||||
|
||||
if (mSpecialMode == 0x24 || (mSpeedModifier < 0.0f && mProcVar2.field_0x300c == 0)) {
|
||||
mProcVar3.field_0x300e.x = 1;
|
||||
field_0x2f99 = 12;
|
||||
|
||||
if (mSpeedModifier > 0.0f) {
|
||||
daAlink_ANM anm;
|
||||
if (wrestler_p->getWrestlerType() != 0) {
|
||||
anm = ANM_SUMOU_PULL_BACK_GORON;
|
||||
} else {
|
||||
anm = ANM_SUMOU_PULL_BACK;
|
||||
}
|
||||
|
||||
setSingleAnimeBase(anm);
|
||||
mSpecialMode = 0x24;
|
||||
field_0x3478 = 13.0f;
|
||||
field_0x32cc = Z2SE_AL_V_SUMO_PUSHED_BACK;
|
||||
field_0x3198 = anm;
|
||||
} else {
|
||||
setSingleAnimeBase(ANM_SUMOU_PUSH_BACK);
|
||||
mSpecialMode = 0x23;
|
||||
field_0x3478 = 13.0f;
|
||||
field_0x32cc = Z2SE_AL_V_SUMO_HOLD_BACK;
|
||||
field_0x3198 = ANM_SUMOU_PUSH_BACK;
|
||||
}
|
||||
|
||||
mSpeedModifier = 0.0f;
|
||||
} else {
|
||||
s16 var_r31 = 0;
|
||||
|
||||
if (mSpeedModifier > 0.0f && checkInputOnR()) {
|
||||
int direction = getDirectionFromAngle(mStickAngle);
|
||||
if (direction == DIR_LEFT || direction == DIR_RIGHT) {
|
||||
var_r31 = field_0x33ac * (daAlinkHIO_pushpull_c0::m.field_0xE * field_0x33ac);
|
||||
|
||||
if (direction == DIR_RIGHT) {
|
||||
var_r31 = -var_r31;
|
||||
}
|
||||
}
|
||||
} else if (mSpeedModifier < 0.0f) {
|
||||
var_r31 = mProcVar3.field_0x300e.y;
|
||||
mProcVar3.field_0x300e.y = 0;
|
||||
}
|
||||
|
||||
if (var_r31 != 0) {
|
||||
f32 temp_f3 = current.pos.x + cM_ssin(shape_angle.y) * 40.0f;
|
||||
f32 temp_f1 = current.pos.z + cM_scos(shape_angle.y) * 40.0f;
|
||||
|
||||
shape_angle.y += var_r31;
|
||||
current.angle.y = shape_angle.y;
|
||||
current.pos.x = temp_f3 - (cM_ssin(shape_angle.y) * 40.0f);
|
||||
current.pos.z = temp_f1 - (cM_scos(shape_angle.y) * 40.0f);
|
||||
}
|
||||
}
|
||||
} else if (checkAnmEnd(frameCtrl_p)) {
|
||||
return procSumouSideMoveInit();
|
||||
}
|
||||
|
||||
if (field_0x3198 == ANM_SUMOU_TACKLE_STAGGER ||
|
||||
field_0x3198 == ANM_SUMOU_TACKLE_STAGGER_GORON ||
|
||||
field_0x3198 == ANM_SUMOU_TACKLE_WAIT_GORON || field_0x3198 == ANM_SUMOU_TACKLE_WAIT)
|
||||
{
|
||||
field_0x2f9d = 0x60;
|
||||
} else if ((field_0x3198 == ANM_SUMOU_PULL_BACK || field_0x3198 == ANM_SUMOU_PULL_BACK_GORON) &&
|
||||
frameCtrl_p->getFrame() >= 16.0f && frameCtrl_p->getFrame() < 28.0f)
|
||||
{
|
||||
field_0x2f9d = 0x60;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -91,6 +351,7 @@ asm int daAlink_c::procSumouMove() {
|
|||
#include "asm/d/a/d_a_alink/procSumouMove__9daAlink_cFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 800EB208-800EB2BC 0E5B48 00B4+00 4/4 0/0 0/0 .text procSumouSideMoveInit__9daAlink_cFv
|
||||
*/
|
||||
|
|
@ -115,6 +376,107 @@ int daAlink_c::procSumouSideMoveInit() {
|
|||
}
|
||||
|
||||
/* 800EB2BC-800EB624 0E5BFC 0368+00 1/0 0/0 0/0 .text procSumouSideMove__9daAlink_cFv */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
int daAlink_c::procSumouSideMove() {
|
||||
field_0x2f99 = 4;
|
||||
|
||||
if (!checkSumouVsActor()) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (mProcVar0.field_0x3008 != 0) {
|
||||
mProcVar0.field_0x3008--;
|
||||
}
|
||||
|
||||
cLib_addCalcAngleS(&shape_angle.y,
|
||||
cLib_targetAngleY(¤t.pos, &mCargoCarryAcKeep.getActor()->current.pos),
|
||||
2, 0x2000, 0x800);
|
||||
|
||||
if (field_0x2f98 == 3) {
|
||||
current.angle.y = shape_angle.y - 0x4000;
|
||||
} else {
|
||||
current.angle.y = shape_angle.y + 0x4000;
|
||||
}
|
||||
|
||||
int temp_r30_2 = cLib_distanceAngleS(field_0x2fe2, shape_angle.y);
|
||||
if (mSpecialMode == 0x1C || mSpecialMode == 0x1B || doTrigger() || sumouPunchTrigger() ||
|
||||
(static_cast<daNpcWrestler_c*>(mCargoCarryAcKeep.getActor())->getWrestlerAction() == 3 &&
|
||||
!checkZeroSpeedF()))
|
||||
{
|
||||
return procSumouActionInit(doTrigger(), sumouPunchTrigger(), mProcVar0.field_0x3008);
|
||||
}
|
||||
|
||||
setSumouPunchStatus();
|
||||
setDoStatusEmphasys(0x15);
|
||||
dComIfGp_setAdvanceDirection(5);
|
||||
|
||||
f32 var_f1;
|
||||
if (checkInputOnR() && temp_r30_2 > 0x800 && temp_r30_2 < 0x7800) {
|
||||
if (abs((s16)(field_0x2fe2 - current.angle.y)) > 0x4000) {
|
||||
current.angle.y += 0x8000;
|
||||
mNormalSpeed *= -1.0f;
|
||||
|
||||
if (field_0x2f98 == 3) {
|
||||
field_0x2f98 = 2;
|
||||
} else {
|
||||
field_0x2f98 = 3;
|
||||
}
|
||||
}
|
||||
|
||||
if (field_0x33ac > (1.0f - fabsf(mNormalSpeed / field_0x594)) * 0.3f) {
|
||||
var_f1 = daAlinkHIO_atnMove_c0::m.mAcceleration * field_0x33ac;
|
||||
} else {
|
||||
var_f1 = 0.0f;
|
||||
}
|
||||
} else {
|
||||
var_f1 = 0.0f;
|
||||
}
|
||||
|
||||
setNormalSpeedF(var_f1, daAlinkHIO_atnMove_c0::m.mDeceleration);
|
||||
|
||||
if (checkZeroSpeedF()) {
|
||||
onModeFlg(1);
|
||||
mSpecialMode = 0x16;
|
||||
field_0x2f98 = 3;
|
||||
current.angle.y = shape_angle.y - 0x4000;
|
||||
|
||||
if (mUnderAnmHeap[0].getIdx() != (getMainBckData(ANM_SUMOU_FIGHT_WAIT)->m_underID & 0xFFF))
|
||||
{
|
||||
setSingleAnimeBase(ANM_SUMOU_FIGHT_WAIT);
|
||||
mSpeedModifier = 0.0f;
|
||||
field_0x3198 = 0x141;
|
||||
}
|
||||
} else {
|
||||
offModeFlg(1);
|
||||
|
||||
daAlink_ANM anm;
|
||||
if (field_0x2f98 == 3) {
|
||||
anm = ANM_SUMOU_FIGHT_STEP_RIGHT;
|
||||
} else {
|
||||
anm = ANM_SUMOU_FIGHT_STEP_LEFT;
|
||||
}
|
||||
|
||||
if (mUnderAnmHeap[0].getIdx() != (getMainBckData(anm)->m_underID & 0xFFF)) {
|
||||
setSingleAnime(anm, 1.0f, 0.0f, 24, 3.0f);
|
||||
field_0x3198 = anm;
|
||||
mSpeedModifier = 1.0f;
|
||||
}
|
||||
|
||||
if (field_0x2f98 == 3) {
|
||||
mSpecialMode = 0x18;
|
||||
} else {
|
||||
mSpecialMode = 0x17;
|
||||
}
|
||||
|
||||
mUnderFrameCtrl[0].setRate(mNormalSpeed / field_0x594);
|
||||
initBasAnime();
|
||||
field_0x2f9d = 0x60;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -123,19 +485,317 @@ asm int daAlink_c::procSumouSideMove() {
|
|||
#include "asm/d/a/d_a_alink/procSumouSideMove__9daAlink_cFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 800EB624-800EBCE0 0E5F64 06BC+00 4/4 0/0 0/0 .text procSumouActionInit__9daAlink_cFiii
|
||||
*/
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
int daAlink_c::procSumouActionInit(BOOL i_doTrigger, BOOL i_punchTrigger, int unused) {
|
||||
commonProcInit(PROC_SUMOU_ACTION);
|
||||
|
||||
daNpcWrestler_c* wrestler_p = (daNpcWrestler_c*)mCargoCarryAcKeep.getActor();
|
||||
int wrestler_action = wrestler_p->getWrestlerAction();
|
||||
mProcVar3.field_0x300e.z = 0;
|
||||
|
||||
daAlink_ANM anm;
|
||||
if (mSpecialMode == 0x21) {
|
||||
mSpecialMode = 0x22;
|
||||
anm = ANM_SUMOU_PUNCH_SHOCK;
|
||||
} else if (mSpecialMode == 0x1C) {
|
||||
i_doTrigger = FALSE;
|
||||
i_punchTrigger = FALSE;
|
||||
mSpecialMode = 0x1E;
|
||||
|
||||
if (!checkZeroSpeedF()) {
|
||||
daAlink_ANM var_r0;
|
||||
if (field_0x2f98 == 2) {
|
||||
var_r0 = ANM_SUMOU_FIGHT_STEP_LEFT;
|
||||
} else {
|
||||
var_r0 = ANM_SUMOU_FIGHT_STEP_RIGHT;
|
||||
}
|
||||
|
||||
anm = var_r0;
|
||||
mProcVar3.field_0x300e.z = 1;
|
||||
} else {
|
||||
anm = ANM_SUMOU_PUNCH_SHOCK;
|
||||
}
|
||||
} else if (mSpecialMode == 0x1B) {
|
||||
i_doTrigger = FALSE;
|
||||
i_punchTrigger = FALSE;
|
||||
mSpecialMode = 0x1D;
|
||||
anm = ANM_SUMOU_TACKLE_SHOCK;
|
||||
} else if (wrestler_action == 2) {
|
||||
if (i_doTrigger) {
|
||||
mSpecialMode = 0x10;
|
||||
anm = ANM_SUMOU_DODGE_TACKLE;
|
||||
} else if (i_punchTrigger) {
|
||||
mSpecialMode = 0x15;
|
||||
anm = ANM_SUMOU_PUNCH_MISS_SHOCK_RETURN;
|
||||
} else {
|
||||
mSpecialMode = 0x1E;
|
||||
|
||||
if (!checkZeroSpeedF()) {
|
||||
daAlink_ANM var_r0_2;
|
||||
if (field_0x2f98 == 2) {
|
||||
var_r0_2 = ANM_SUMOU_FIGHT_STEP_LEFT;
|
||||
} else {
|
||||
var_r0_2 = ANM_SUMOU_FIGHT_STEP_RIGHT;
|
||||
}
|
||||
|
||||
anm = var_r0_2;
|
||||
mProcVar3.field_0x300e.z = 1;
|
||||
} else {
|
||||
anm = ANM_SUMOU_PUNCH_SHOCK;
|
||||
}
|
||||
}
|
||||
} else if (wrestler_action == 3) {
|
||||
if (i_doTrigger) {
|
||||
mSpecialMode = 0x12;
|
||||
anm = ANM_SUMOU_TACKLE_SHOCK_RETURN;
|
||||
} else if (i_punchTrigger) {
|
||||
mSpecialMode = 0x14;
|
||||
anm = ANM_SUMOU_PUNCH_MISS_SHOCK;
|
||||
} else if (!checkZeroSpeedF()) {
|
||||
if (field_0x2f98 == 3) {
|
||||
mSpecialMode = 0x1A;
|
||||
anm = ANM_SUMOU_FIGHT_STEP_RIGHT;
|
||||
} else {
|
||||
mSpecialMode = 0x19;
|
||||
anm = ANM_SUMOU_FIGHT_STEP_LEFT;
|
||||
}
|
||||
} else {
|
||||
mSpecialMode = 0x1D;
|
||||
anm = ANM_SUMOU_TACKLE_SHOCK;
|
||||
}
|
||||
} else if (wrestler_action == 1) {
|
||||
if (i_doTrigger) {
|
||||
mSpecialMode = 0x11;
|
||||
anm = ANM_SUMOU_TACKLE_MISS;
|
||||
} else {
|
||||
mSpecialMode = 0x13;
|
||||
anm = ANM_SUMOU_PUNCH;
|
||||
}
|
||||
} else if (wrestler_p->getWrestlerType() != 0 && !i_checkEquipHeavyBoots()) {
|
||||
if (i_doTrigger) {
|
||||
mSpecialMode = 0x12;
|
||||
anm = ANM_SUMOU_TACKLE_SHOCK_RETURN;
|
||||
} else {
|
||||
mSpecialMode = 0x15;
|
||||
anm = ANM_SUMOU_PUNCH_MISS_SHOCK_RETURN;
|
||||
}
|
||||
} else if (i_doTrigger) {
|
||||
mSpecialMode = 0xF;
|
||||
if (wrestler_p->getWrestlerType() == 0) {
|
||||
anm = ANM_SUMOU_TACKLE;
|
||||
} else {
|
||||
anm = ANM_SUMOU_TACKLE_GORON;
|
||||
}
|
||||
} else {
|
||||
mSpecialMode = 0x13;
|
||||
anm = ANM_SUMOU_PUNCH;
|
||||
}
|
||||
|
||||
mDoMtx_stack_c::transS(current.pos);
|
||||
mDoMtx_stack_c::YrotM(shape_angle.y);
|
||||
mProcVar3.field_0x300e.x = 0x82;
|
||||
|
||||
if (mSpecialMode == 0x19) {
|
||||
dComIfGp_setAdvanceDirection(1);
|
||||
mProcVar3.field_0x300e.y = shape_angle.y - 0x2800;
|
||||
field_0x2f98 = 2;
|
||||
} else if (mSpecialMode == 0x1A) {
|
||||
field_0x2f98 = 3;
|
||||
dComIfGp_setAdvanceDirection(4);
|
||||
mProcVar3.field_0x300e.y = shape_angle.y + 0x2800;
|
||||
} else if (i_doTrigger) {
|
||||
setDoStatusEmphasys(0x15);
|
||||
mProcVar3.field_0x300e.x = 0x15;
|
||||
field_0x2f98 = 4;
|
||||
} else if (i_punchTrigger) {
|
||||
setSumouPunchStatus();
|
||||
mProcVar3.field_0x300e.x = 0x44;
|
||||
field_0x2f98 = 4;
|
||||
} else if (!checkZeroSpeedF()) {
|
||||
if (field_0x2f98 == 2) {
|
||||
mProcVar3.field_0x300e.y = shape_angle.y - 0x2800;
|
||||
} else {
|
||||
mProcVar3.field_0x300e.y = shape_angle.y + 0x2800;
|
||||
}
|
||||
} else {
|
||||
field_0x2f98 = 4;
|
||||
}
|
||||
|
||||
f32 var_f31;
|
||||
if ((anm == ANM_SUMOU_FIGHT_STEP_RIGHT || anm == ANM_SUMOU_FIGHT_STEP_LEFT) &&
|
||||
mUnderAnmHeap[0].getIdx() != (getMainBckData(anm)->m_underID & 0xFFF))
|
||||
{
|
||||
var_f31 = mUnderFrameCtrl[0].getFrame();
|
||||
} else {
|
||||
var_f31 = 0.0f;
|
||||
}
|
||||
|
||||
mProcVar2.field_0x300c = 0;
|
||||
field_0x3198 = anm;
|
||||
|
||||
int end_frame;
|
||||
if (anm == ANM_SUMOU_FIGHT_STEP_LEFT) {
|
||||
end_frame = 24;
|
||||
} else {
|
||||
end_frame = -1;
|
||||
}
|
||||
|
||||
setSingleAnime(anm, 1.0f, 0.0f, end_frame, 3.0f);
|
||||
mUnderFrameCtrl[0].setFrame(var_f31);
|
||||
getNowAnmPackUnder(UNDER_0)->setFrame(var_f31);
|
||||
|
||||
cLib_addCalcAngleS(&shape_angle.y,
|
||||
cLib_targetAngleY(¤t.pos, &mCargoCarryAcKeep.getActor()->current.pos),
|
||||
2, 0x2000, 0x800);
|
||||
current.angle.y = shape_angle.y;
|
||||
mNormalSpeed = 0.0f;
|
||||
|
||||
field_0x3478 = current.pos.absXZ(wrestler_p->current.pos);
|
||||
field_0x37c8 = wrestler_p->current.pos;
|
||||
field_0x2f99 = 0xC;
|
||||
field_0x347c = 1000.0f;
|
||||
field_0x3480 = 1000.0f;
|
||||
|
||||
if (anm == ANM_SUMOU_PUNCH_SHOCK || anm == ANM_SUMOU_PUNCH_MISS_SHOCK_RETURN) {
|
||||
field_0x347c = 12.0f;
|
||||
field_0x32cc = Z2SE_AL_V_SUMO_HARITE_DMG;
|
||||
} else if (anm == ANM_SUMOU_PUNCH_MISS_SHOCK) {
|
||||
field_0x347c = 11.0f;
|
||||
field_0x32cc = Z2SE_AL_V_SUMO_HARITE_ATK;
|
||||
field_0x3480 = 35.0f;
|
||||
} else if (anm == ANM_SUMOU_PUNCH) {
|
||||
field_0x347c = 11.0f;
|
||||
field_0x32cc = Z2SE_AL_V_SUMO_HARITE_ATK;
|
||||
} else if (anm == ANM_SUMOU_TACKLE || anm == ANM_SUMOU_TACKLE_GORON ||
|
||||
anm == ANM_SUMOU_TACKLE_MISS)
|
||||
{
|
||||
field_0x347c = 2.0f;
|
||||
field_0x32cc = Z2SE_AL_V_SUMO_TUCKLE_ATK;
|
||||
} else if (anm == ANM_SUMOU_DODGE_TACKLE) {
|
||||
field_0x347c = 32.0f;
|
||||
field_0x32cc = Z2SE_AL_V_SUMO_TUCKLE_ATK;
|
||||
} else if (anm == ANM_SUMOU_TACKLE_SHOCK || anm == ANM_SUMOU_TACKLE_SHOCK_RETURN) {
|
||||
field_0x347c = 7.0f;
|
||||
field_0x32cc = Z2SE_AL_V_SUMO_HOLDED;
|
||||
}
|
||||
|
||||
setFootEffectProcType(5);
|
||||
|
||||
if (field_0x3198 == ANM_SUMOU_FIGHT_STEP_LEFT || field_0x3198 == ANM_SUMOU_FIGHT_STEP_RIGHT) {
|
||||
field_0x2f9d = 0x60;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm int daAlink_c::procSumouActionInit(int param_0, int param_1, int param_2) {
|
||||
asm int daAlink_c::procSumouActionInit(BOOL i_doTrigger, BOOL i_punchTrigger, int param_2) {
|
||||
nofralloc
|
||||
#include "asm/d/a/d_a_alink/procSumouActionInit__9daAlink_cFiii.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 800EBCE0-800EC0F8 0E6620 0418+00 1/0 0/0 0/0 .text procSumouAction__9daAlink_cFv */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
int daAlink_c::procSumouAction() {
|
||||
field_0x2f99 = 4;
|
||||
|
||||
if (!checkSumouVsActor()) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (field_0x2f98 == 2) {
|
||||
dComIfGp_setAdvanceDirection(1);
|
||||
} else if (field_0x2f98 == 3) {
|
||||
dComIfGp_setAdvanceDirection(4);
|
||||
}
|
||||
|
||||
mProcVar2.field_0x300c++;
|
||||
|
||||
if (mSpecialMode == 0x1C || mSpecialMode == 0x1B) {
|
||||
return procSumouActionInit(FALSE, FALSE, 0);
|
||||
}
|
||||
|
||||
if (mSpecialMode == 0x19 || mSpecialMode == 0x1A) {
|
||||
cLib_addCalcAngleS(&shape_angle.y, mProcVar3.field_0x300e.y, 2, 0x400, 0x40);
|
||||
current.angle.y = shape_angle.y;
|
||||
|
||||
current.pos.set(field_0x37c8.x - field_0x3478 * cM_ssin(current.angle.y), field_0x37c8.y,
|
||||
field_0x37c8.z - field_0x3478 * cM_scos(current.angle.y));
|
||||
if (mProcVar2.field_0x300c >= 29 || shape_angle.y == mProcVar3.field_0x300e.y) {
|
||||
procSumouSideMoveInit();
|
||||
}
|
||||
} else {
|
||||
if (mSpecialMode == 0x13) {
|
||||
cLib_addCalcAngleS(
|
||||
&shape_angle.y,
|
||||
cLib_targetAngleY(¤t.pos, &mCargoCarryAcKeep.getActor()->current.pos), 2,
|
||||
0x2000, 0x800);
|
||||
current.angle.y = shape_angle.y;
|
||||
} else if (mSpecialMode == 0x1E && mProcVar3.field_0x300e.z != 0) {
|
||||
cLib_addCalcAngleS(&shape_angle.y, mProcVar3.field_0x300e.y, 2, 0x400, 0x40);
|
||||
current.angle.y = shape_angle.y;
|
||||
|
||||
current.pos.set(field_0x37c8.x - field_0x3478 * cM_ssin(current.angle.y),
|
||||
field_0x37c8.y,
|
||||
field_0x37c8.z - field_0x3478 * cM_scos(current.angle.y));
|
||||
} else if (mSpecialMode == 0x1E || mSpecialMode == 0x1D) {
|
||||
cLib_addCalcAngleS(
|
||||
&shape_angle.y,
|
||||
cLib_targetAngleY(¤t.pos, &mCargoCarryAcKeep.getActor()->current.pos), 2,
|
||||
0x600, 0x40);
|
||||
current.angle.y = shape_angle.y;
|
||||
}
|
||||
|
||||
if (mProcVar3.field_0x300e.x == 0x15) {
|
||||
setDoStatusEmphasys(0x15);
|
||||
} else if (mProcVar3.field_0x300e.x == 0x44) {
|
||||
setSumouPunchStatus();
|
||||
}
|
||||
|
||||
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
|
||||
if (checkAnmEnd(frameCtrl_p)) {
|
||||
if (mSpecialMode == 0x1E) {
|
||||
procSumouStaggerInit();
|
||||
} else if (mSpecialMode == 0x12 || mSpecialMode == 0x22 || mSpecialMode == 0x13 ||
|
||||
mSpecialMode == 0x1A || mSpecialMode == 0x19 || mSpecialMode == 0x11 ||
|
||||
mSpecialMode == 0x15)
|
||||
{
|
||||
procSumouSideMoveInit();
|
||||
} else {
|
||||
procSumouMoveInit();
|
||||
}
|
||||
} else if (mProcVar3.field_0x300e.z != 0) {
|
||||
if (mProcVar2.field_0x300c > 12.0f) {
|
||||
setSingleAnime(ANM_SUMOU_PUNCH_SHOCK, 1.0f, mProcVar2.field_0x300c, -1, 3.0f);
|
||||
field_0x2f99 = 12;
|
||||
mProcVar3.field_0x300e.z = 0;
|
||||
voiceStart(Z2SE_AL_V_SUMO_HARITE_DMG);
|
||||
field_0x3198 = 0x152;
|
||||
}
|
||||
} else if (frameCtrl_p->checkPass(field_0x347c)) {
|
||||
voiceStart(field_0x32cc);
|
||||
} else if (frameCtrl_p->checkPass(field_0x3480)) {
|
||||
voiceStart(Z2SE_AL_V_SUMO_HOLDED);
|
||||
}
|
||||
}
|
||||
|
||||
if (field_0x3198 == 0x142 || field_0x3198 == 0x143) {
|
||||
field_0x2f9d = 0x60;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -144,12 +804,13 @@ asm int daAlink_c::procSumouAction() {
|
|||
#include "asm/d/a/d_a_alink/procSumouAction__9daAlink_cFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 800EC0F8-800EC170 0E6A38 0078+00 1/1 0/0 0/0 .text procSumouStaggerInit__9daAlink_cFv
|
||||
*/
|
||||
int daAlink_c::procSumouStaggerInit() {
|
||||
commonProcInit(PROC_SUMOU_STAGGER);
|
||||
|
||||
|
||||
if (mSpecialMode == 0x11) {
|
||||
mSpecialMode = 0x20;
|
||||
} else {
|
||||
|
|
@ -183,6 +844,67 @@ int daAlink_c::procSumouStagger() {
|
|||
|
||||
/* 800EC20C-800EC3D8 0E6B4C 01CC+00 1/1 0/0 0/0 .text procSumouWinLoseInit__9daAlink_cFv
|
||||
*/
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
int daAlink_c::procSumouWinLoseInit() {
|
||||
if (mSpecialMode == 0xB && mUnderFrameCtrl[0].getAttribute() == 2) {
|
||||
cancelSumouMode();
|
||||
return procWaitInit();
|
||||
}
|
||||
|
||||
daNpcWrestler_c* wrestler_p = (daNpcWrestler_c*)mCargoCarryAcKeep.getActor();
|
||||
commonProcInit(PROC_SUMOU_WIN_LOSE);
|
||||
field_0x3478 = 1000.0f;
|
||||
|
||||
daAlink_ANM anm = ANM_WAIT;
|
||||
if (mSpecialMode == 0xB) {
|
||||
mProcVar2.field_0x300c = 1;
|
||||
} else if (mSpecialMode == 0xD) {
|
||||
field_0x2f99 = 12;
|
||||
if (wrestler_p->getWrestlerType() != 0) {
|
||||
anm = ANM_SUMOU_WIN_GORON;
|
||||
} else {
|
||||
anm = ANM_SUMOU_WIN;
|
||||
}
|
||||
|
||||
setSingleAnimeBase(anm);
|
||||
mProcVar2.field_0x300c = 1;
|
||||
field_0x3478 = 10.0f;
|
||||
field_0x32cc = Z2SE_AL_V_SUMO_PUSH_LAST;
|
||||
field_0x3198 = 13;
|
||||
} else {
|
||||
f32 start_frame;
|
||||
if (mSpecialMode == 12) {
|
||||
start_frame = 24.0f;
|
||||
voiceStart(Z2SE_AL_V_SUMO_FALL_LOSE);
|
||||
} else {
|
||||
start_frame = 0.0f;
|
||||
field_0x3478 = 23.0f;
|
||||
field_0x32cc = Z2SE_AL_V_SUMO_FALL_LOSE;
|
||||
}
|
||||
|
||||
if (wrestler_p->getWrestlerType() != 0) {
|
||||
anm = ANM_SUMOU_LOSE_GORON;
|
||||
} else {
|
||||
anm = ANM_SUMOU_LOSE;
|
||||
}
|
||||
|
||||
setSingleAnime(anm, 1.0f, start_frame, -1, 3.0f);
|
||||
field_0x2f99 = 15;
|
||||
mProcVar2.field_0x300c = 0;
|
||||
current.pos.y += 70.0f;
|
||||
}
|
||||
|
||||
field_0x3198 = anm;
|
||||
mNormalSpeed = 0.0f;
|
||||
setSpecialGravity(0.0f, mMaxFallSpeed, 0);
|
||||
speed.y = 0.0f;
|
||||
setFootEffectProcType(5);
|
||||
mProcVar3.field_0x300e.x = 0;
|
||||
field_0x33b0 = 20.0f;
|
||||
return 1;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -191,8 +913,52 @@ asm int daAlink_c::procSumouWinLoseInit() {
|
|||
#include "asm/d/a/d_a_alink/procSumouWinLoseInit__9daAlink_cFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 800EC3D8-800EC538 0E6D18 0160+00 1/0 0/0 0/0 .text procSumouWinLose__9daAlink_cFv */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
int daAlink_c::procSumouWinLose() {
|
||||
if (mProcVar3.field_0x300e.x == 0) {
|
||||
if (mProcVar2.field_0x300c != 0) {
|
||||
field_0x2f99 = 4;
|
||||
} else {
|
||||
field_0x2f99 = 7;
|
||||
}
|
||||
}
|
||||
|
||||
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
|
||||
|
||||
if (frameCtrl_p->checkPass(field_0x3478)) {
|
||||
voiceStart(field_0x32cc);
|
||||
}
|
||||
|
||||
if (checkAnmEnd(frameCtrl_p)) {
|
||||
if (mProcVar2.field_0x300c != 0 || mProcVar3.field_0x300e.x != 0) {
|
||||
cancelSumouMode();
|
||||
procWaitInit();
|
||||
} else {
|
||||
setSingleAnimeBase(ANM_SUMOU_KNOCKED_DOWN);
|
||||
field_0x2f99 = 12;
|
||||
field_0x3478 = 1000.0f;
|
||||
field_0x3198 = ANM_SUMOU_KNOCKED_DOWN;
|
||||
}
|
||||
} else if (mProcVar3.field_0x300e.x == 0 && mSpecialMode == 0x25) {
|
||||
setSingleAnimeBase(ANM_SUMOU_GET_UP);
|
||||
mProcVar3.field_0x300e.x = 1;
|
||||
field_0x3478 = 1000.0f;
|
||||
field_0x3198 = ANM_SUMOU_GET_UP;
|
||||
}
|
||||
|
||||
if ((field_0x3198 == ANM_SUMOU_LOSE || field_0x3198 == ANM_SUMOU_LOSE_GORON) &&
|
||||
frameCtrl_p->checkPass(37.0f))
|
||||
{
|
||||
field_0x2f9d = 4;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -201,6 +967,7 @@ asm int daAlink_c::procSumouWinLose() {
|
|||
#include "asm/d/a/d_a_alink/procSumouWinLose__9daAlink_cFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 800EC538-800EC5F4 0E6E78 00BC+00 1/0 0/0 0/0 .text procSumouShikoInit__9daAlink_cFv */
|
||||
int daAlink_c::procSumouShikoInit() {
|
||||
|
|
@ -218,11 +985,42 @@ int daAlink_c::procSumouShikoInit() {
|
|||
|
||||
setFootEffectProcType(5);
|
||||
deleteEquipItem(0, 1);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 800EC5F4-800EC724 0E6F34 0130+00 1/0 0/0 0/0 .text procSumouShiko__9daAlink_cFv */
|
||||
// matches with literals
|
||||
#ifdef NONMATCHING
|
||||
int daAlink_c::procSumouShiko() {
|
||||
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
|
||||
if (field_0x2f99 != 12) {
|
||||
field_0x2f99 = 4;
|
||||
}
|
||||
|
||||
if (mSpecialMode == 1) {
|
||||
return procSumouReadyInit();
|
||||
}
|
||||
|
||||
if (mProcVar2.field_0x300c == 0) {
|
||||
if (checkAnmEnd(frameCtrl_p)) {
|
||||
setSingleAnimeBaseMorf(ANM_SUMOU_SHIKO_WAIT, -1.0f);
|
||||
field_0x2f99 = 12;
|
||||
mProcVar2.field_0x300c = 1;
|
||||
} else if (frameCtrl_p->checkPass(127.0f)) {
|
||||
field_0x2f9d = 0x20;
|
||||
} else if (frameCtrl_p->checkPass(65.0f)) {
|
||||
voiceStart(Z2SE_AL_V_SUMO_SHIKO);
|
||||
} else if (frameCtrl_p->checkPass(9.0f)) {
|
||||
field_0x2f92 = 0xFE;
|
||||
field_0x2f93 = 0xFE;
|
||||
}
|
||||
} else {
|
||||
dComIfGp_evmng_cutEnd(field_0x3184);
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -230,4 +1028,5 @@ asm int daAlink_c::procSumouShiko() {
|
|||
nofralloc
|
||||
#include "asm/d/a/d_a_alink/procSumouShiko__9daAlink_cFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#pragma pop
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -809,7 +809,7 @@ int daAlink_c::procSwimHookshotMoveInit() {
|
|||
field_0x3198 = -1;
|
||||
field_0x2f98 = 5;
|
||||
|
||||
if (field_0x3018 == 0) {
|
||||
if (mItemVar0.field_0x3018 == 0) {
|
||||
setSwimMoveAnime();
|
||||
}
|
||||
|
||||
|
|
@ -842,7 +842,7 @@ int daAlink_c::procSwimHookshotMove() {
|
|||
setDoStatus(0x12);
|
||||
}
|
||||
|
||||
if (field_0x3018 == 0) {
|
||||
if (mItemVar0.field_0x3018 == 0) {
|
||||
setSpeedAndAngleSwim();
|
||||
setSwimMoveAnime();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5496,7 +5496,7 @@ void daAlink_c::setWolfLockDomeModel() {
|
|||
mDoExt_setCurrentHeap(prev_heap);
|
||||
|
||||
mEquipItem = 0x109;
|
||||
field_0x3018 = 0;
|
||||
mItemVar0.field_0x3018 = 0;
|
||||
mSearchBallScale = daAlinkHIO_wlAtLock_c0::m.field_0x28.mSpeed;
|
||||
|
||||
dComIfGp_setPlayerStatus1(0, 0x800000);
|
||||
|
|
@ -5894,7 +5894,7 @@ int daAlink_c::procWolfRollAttackMove() {
|
|||
cLib_chaseF(&mSearchBallScale, daAlinkHIO_wlAtLock_c0::m.field_0x28.mStartFrame,
|
||||
daAlinkHIO_wlAtLock_c0::m.field_0x28.mInterpolation))
|
||||
{
|
||||
field_0x3018 = 1;
|
||||
mItemVar0.field_0x3018 = 1;
|
||||
}
|
||||
|
||||
if (mWolfLockNum < 10) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue