Compare commits

..

2 Commits

Author SHA1 Message Date
MelonSpeedruns 0cdcd71b6a fix spinner on z 2026-05-14 10:19:19 -04:00
MelonSpeedruns 318ad2a00f third item, missing visuals 2026-05-14 10:14:35 -04:00
24 changed files with 103 additions and 367 deletions
+1 -24
View File
@@ -1733,9 +1733,6 @@ public:
int checkNewItemChange(u8 i_selItemIdx);
void deleteEquipItem(BOOL i_isPlaySound, BOOL i_isDeleteKantera);
void setLight();
#if TARGET_PC
void setGhostLanternLight();
#endif
void setFrontRollCrashShock(u8);
void changeWarpMaterial(daAlink_c::daAlink_WARP_MAT_MODE i_matMode);
void commonProcInit(daAlink_c::daAlink_PROC i_procID);
@@ -2659,14 +2656,8 @@ public:
void checkWaterInKandelaar(f32);
void offKandelaarModel();
int kandelaarModelCallBack();
int ghostLanternModelCallBack();
BOOL checkKandelaarEquipAnime() const;
void preKandelaarDraw();
void preGhostLanternDraw();
static void* srchPoe(void*, void*);
#if TARGET_PC
void setGhostLanternModel();
#endif
void setKandelaarModel();
void resetOilBottleModel();
void commonKandelaarPourInit();
@@ -3986,9 +3977,6 @@ public:
/* 0x006FC */ J3DModel* mpKanteraModel;
/* 0x00700 */ J3DModel* mpKanteraGlowModel;
/* 0x00704 */ J3DAnmTextureSRTKey* mpKanteraGlowBtk;
/* 0x006FC */ J3DModel* mpGhostLanternModel;
/* 0x00700 */ J3DModel* mpGhostLanternGlowModel;
/* 0x00704 */ J3DAnmTextureSRTKey* mpGhostLanternGlowBtk;
/* 0x00708 */ J3DModel* mHeldItemModel;
/* 0x0070C */ J3DModel* mpHookTipModel; // related to held item
/* 0x00710 */ J3DModel* field_0x0710; // related to held item
@@ -4071,7 +4059,7 @@ public:
/* 0x02180 */ daAlink_matAnm_c* field_0x2180[2];
/* 0x02188 */ dEyeHL_c mEyeHL1;
/* 0x0219C */ dEyeHL_c mEyeHL2;
/* 0x021B0 */ daPy_anmHeap_c mItemHeap[2];
/* 0x021B0 */ daPy_anmHeap_c mItemHeap[3];
/* 0x021D8 */ daPy_anmHeap_c mAnmHeap9;
/* 0x021EC */ daAlinkHIO_c* mpHIO;
/* 0x021F0 */ daAlink_blur_c m_swordBlur;
@@ -4385,7 +4373,6 @@ public:
/* 0x03194 */ int field_0x3194;
/* 0x03198 */ int field_0x3198;
/* 0x0319C */ int field_0x319c;
/* 0x0319C */ s32 ghostLanternFlameEffect[2];
/* 0x031A0 */ u32 mModeFlg;
/* 0x031A4 */ int field_0x31a4;
/* 0x031A8 */ u32 field_0x31a8[2];
@@ -4455,9 +4442,6 @@ public:
/* 0x033F4 */ f32 field_0x33f4;
/* 0x033F8 */ f32 field_0x33f8;
/* 0x033FC */ f32 field_0x33fc;
#if TARGET_PC
/* 0x033FC */ f32 current_ghost_lantern_light_power;
#endif
/* 0x03400 */ f32 field_0x3400;
/* 0x03404 */ f32 field_0x3404;
/* 0x03408 */ f32 field_0x3408;
@@ -4525,13 +4509,9 @@ public:
/* 0x035F4 */ cXyz mMidnaAtnPos;
/* 0x03600 */ cXyz mMidnaHairAtnPos;
/* 0x0360C */ cXyz mKandelaarFlamePos;
/* 0x0360C */ cXyz mGhostLanternFlamePos;
/* 0x03618 */ cXyz field_0x3618;
/* 0x03624 */ cXyz field_0x3624;
/* 0x03630 */ cXyz field_0x3630;
/* 0x03618 */ cXyz ghost_lantern_0x3618;
/* 0x03624 */ cXyz ghost_lantern_0x3624;
/* 0x03630 */ cXyz ghost_lantern_0x3630;
/* 0x0363C */ cXyz field_0x363c[4];
/* 0x0366C */ cXyz field_0x366c[4];
/* 0x0369C */ cXyz field_0x369c;
@@ -6841,9 +6821,6 @@ public:
static daAlinkHIO_boom_c0 const mBoomerang;
static daAlinkHIO_bomb_c0 const mBomb;
static daAlinkHIO_huLight_c0 const mLanternPL;
#if TARGET_PC
static daAlinkHIO_huLight_c0 const mGhostLanternPL;
#endif
static daAlinkHIO_kandelaar_c0 const mLantern;
static daAlinkHIO_fmChain_c0 const mFmChain;
static daAlinkHIO_magneBoots_c0 const mIronBoots;
+1
View File
@@ -47,6 +47,7 @@ enum dEvt_type_e {
/* 0x5 */ dEvt_type_ITEM_e,
/* 0x6 */ dEvt_type_SHOWITEM_X_e,
/* 0x7 */ dEvt_type_SHOWITEM_Y_e,
/* 0x8 */ dEvt_type_SHOWITEM_Z_e,
/* 0xA */ dEvt_type_CATCH_e = 10,
/* 0xB */ dEvt_type_TREASURE_e,
};
-2
View File
@@ -71,7 +71,6 @@ void item_func_WOOD_STICK();
void item_func_BOOMERANG();
void item_func_SPINNER();
void item_func_IRONBALL();
void item_func_GHOST_LANTERN();
void item_func_BOW();
void item_func_HOOKSHOT();
void item_func_HVY_BOOTS();
@@ -261,7 +260,6 @@ int item_getcheck_func_WOOD_STICK();
int item_getcheck_func_BOOMERANG();
int item_getcheck_func_SPINNER();
int item_getcheck_func_IRONBALL();
int item_getcheck_func_GHOST_LANTERN();
int item_getcheck_func_BOW();
int item_getcheck_func_HOOKSHOT();
int item_getcheck_func_HVY_BOOTS();
+1 -1
View File
@@ -317,7 +317,7 @@ enum {
/* 0xDE */ dItemNo_NOENTRY_222_e,
/* 0xDF */ dItemNo_NOENTRY_223_e,
/* 0xE0 */ dItemNo_POU_SPIRIT_e,
/* 0xE1 */ dItemNo_GHOST_LANTERN_e,
/* 0xE1 */ dItemNo_NOENTRY_225_e,
/* 0xE2 */ dItemNo_NOENTRY_226_e,
/* 0xE3 */ dItemNo_NOENTRY_227_e,
/* 0xE4 */ dItemNo_NOENTRY_228_e,
+1 -1
View File
@@ -172,7 +172,7 @@ private:
/* 0x6A9 */ u8 field_0x6a9; // unused
/* 0x6AA */ u8 mXButtonSlot;
/* 0x6AB */ u8 mYButtonSlot;
/* 0x6AC */ u8 field_0x6ac;
/* 0x6AC */ u8 mZButtonSlot;
/* 0x6AD */ u8 field_0x6ad;
/* 0x6AE */ u8 mItemsTotal; // Contains the amount of items which are actually obtained and in
// the item wheel
+2 -2
View File
@@ -86,8 +86,8 @@ public:
/* 0x047 */ u8 field_0x47;
/* 0x048 */ u8 mPoes;
/* 0x049 */ u8 mPoesCopy;
/* 0x04A */ u8 mItems[25];
/* 0x062 */ u8 mItemsCopy[25];
/* 0x04A */ u8 mItems[24];
/* 0x062 */ u8 mItemsCopy[24];
/* 0x07A */ u8 field_0x7a[24];
/* 0x092 */ u8 mSwords[4];
/* 0x096 */ u8 mShields[3];
+1 -1
View File
@@ -160,7 +160,7 @@ private:
/* 0x078 */ J2DScreen* mpScreen;
/* 0x07C */ J2DScreen* mpKanteraScreen;
/* 0x080 */ J2DScreen* mpPikariScreen;
/* 0x084 */ J2DPicture* mpItemNumTex[2][3];
/* 0x084 */ J2DPicture* mpItemNumTex[3][3];
/* 0x09C */ CPaneMgr* field_0x9c[3];
/* 0x0A8 */ int field_0xa8;
/* 0x0AC */ dKantera_icon_c* mpKanteraMeter[2];
+2 -1
View File
@@ -12,7 +12,7 @@
static const int DEFAULT_SELECT_ITEM_INDEX = 0;
static const int MAX_SELECT_ITEM = 4;
static const int SELECT_ITEM_NUM = 2;
static const int SELECT_ITEM_NUM = 3;
static const int MAX_EQUIPMENT = 6;
static const int MAX_EVENTS = 256;
static const int MAX_ITEM_SLOTS = 24;
@@ -123,6 +123,7 @@ enum {
/* 0x3 */ SELECT_ITEM_B,
/* 0x0 */ SELECT_ITEM_X = SELECT_ITEM_LEFT,
/* 0x1 */ SELECT_ITEM_Y = SELECT_ITEM_RIGHT,
/* 0x2 */ SELECT_ITEM_Z = SELECT_ITEM_DOWN,
};
enum {
+24 -135
View File
@@ -4552,7 +4552,7 @@ void daAlink_c::playerInit() {
PLAYER_CREATE_ANM_HEAP(mFaceBtkHeap, daPy_anmHeap_c::HEAP_TYPE_2, "daAlink_c::mFaceBtkHeap");
PLAYER_CREATE_ANM_HEAP(mFaceBckHeap, daPy_anmHeap_c::HEAP_TYPE_3, "daAlink_c::mFaceBckHeap");
for (i = 0; i < 2; i++) {
for (i = 0; i < SELECT_ITEM_NUM; i++) {
mItemHeap[i].setBufferSize(0x13200);
PLAYER_CREATE_ANM_HEAP_F(mItemHeap[i], daPy_anmHeap_c::HEAP_TYPE_4, "daAlink_c::mItemHeap[%d]", i);
}
@@ -6100,21 +6100,6 @@ void daAlink_c::setItemMatrix(int param_0) {
modelCalc(mpKanteraGlowModel);
}
if (mEquipItem == dItemNo_GHOST_LANTERN_e) {
simpleAnmPlay(mpGhostLanternGlowBtk);
mDoMtx_stack_c::copy(mpLinkModel->getAnmMtx(mLeftItemJntNo));
mDoMtx_stack_c::transM(-2.0f, -0.1f, -0.7f);
mDoMtx_stack_c::XYZrotM(cM_deg2s(100.0f), cM_deg2s(9.3f), cM_deg2s(183.0f));
mDoMtx_stack_c::scaleM(0.75f, 0.75f, 0.75f);
mpGhostLanternModel->setBaseTRMtx(mDoMtx_stack_c::get());
modelCalc(mpGhostLanternModel);
mDoMtx_stack_c::transS(mGhostLanternFlamePos);
mpGhostLanternGlowModel->setBaseTRMtx(mDoMtx_stack_c::get());
modelCalc(mpGhostLanternGlowModel);
}
setSwordPos();
simpleAnmPlay(m_mSwordBtk);
simpleAnmPlay(m_mSwordBrk);
@@ -6935,7 +6920,7 @@ const daAlink_BckData* daAlink_c::getMainBckData(daAlink_c::daAlink_ANM i_anmID)
{dRes_ID_ALANM_BCK_WAITHS_e, dRes_ID_ALANM_BCK_WAITHK_e},
};
if (mEquipItem == dItemNo_KANTERA_e || mEquipItem == dItemNo_GHOST_LANTERN_e) {
if (mEquipItem == dItemNo_KANTERA_e) {
if (i_anmID == ANM_WAIT) {
return &kandelaarAnm[0];
}
@@ -9509,7 +9494,7 @@ void daAlink_c::setStickData() {
if (mDoCPd_c::getTrigY(PAD_1)) {
mItemTrigger |= (daAlink_ITEM_BTN)BTN_Y;
}
if (mDoCPd_c::getTrigZ(PAD_1)) {
if (mDoCPd_c::getTrigZ(PAD_1) && !mDoCPd_c::getHoldR(PAD_1)) {
mItemTrigger |= (daAlink_ITEM_BTN)BTN_Z;
}
if (mDoCPd_c::getTrigL(PAD_1)) {
@@ -11312,8 +11297,8 @@ BOOL daAlink_c::checkUpperItemActionFly() {
void daAlink_c::checkItemButtonChange() {
if (mProcID != PROC_CANOE_PADDLE_PUT && mEquipItem != dItemNo_NONE_e && !checkEquipAnime()) {
u8 temp_r0;
for (u8 i = 0; i < 2; i++) {
temp_r0 = (i + 1) % 2;
for (u8 i = 0; i < SELECT_ITEM_NUM; i++) {
temp_r0 = (i + 1) % SELECT_ITEM_NUM;
if (mEquipItem == dComIfGp_getSelectItem(i) &&
(mEquipItem != dComIfGp_getSelectItem(temp_r0) || mSelectItemId != temp_r0))
{
@@ -11483,8 +11468,8 @@ int daAlink_c::orderTalk(int i_checkZTalk) {
}
if (!checkWolf() && checkRequestTalkActor(mAttList2, field_0x27f8)) {
for (int i = 0; i < 2; i++) {
// check if pressed X or Y and if item on button is a trade item
for (int i = 0; i < 3; i++) {
// check if pressed X or Y or Z and if item on button is a trade item
if (checkTradeItem(dComIfGp_getSelectItem(i)) && itemTriggerCheck(1 << i)) {
fopAcM_orderTalkItemBtnEvent(itemTalkType[i], this, field_0x27f8, 0, 0);
return 1;
@@ -12082,8 +12067,7 @@ void daAlink_c::itemUnequip(u16 i_itemID, f32 i_playSpeed) {
u16 anm_id;
const daAlinkHIO_anm_c* anm_data;
if (i_itemID == dItemNo_BOOMERANG_e || i_itemID == dItemNo_COPY_ROD_e ||
i_itemID == dItemNo_KANTERA_e || i_itemID == dItemNo_GHOST_LANTERN_e ||
if (i_itemID == dItemNo_BOOMERANG_e || i_itemID == dItemNo_COPY_ROD_e || i_itemID == dItemNo_KANTERA_e ||
i_itemID == dItemNo_HOOKSHOT_e || checkBottleItem(i_itemID))
{
anm_id = dRes_ID_ALANM_BCK_TAKEL_e;
@@ -12123,7 +12107,7 @@ void daAlink_c::allUnequip(BOOL param_0) {
if (checkNoResetFlg2(FLG2_UNK_1) && param_0 && !checkCanoeRide() &&
mEquipItem != dItemNo_KANTERA_e)
{
for (u8 i = 0; i < 2; i++) {
for (u8 i = 0; i < SELECT_ITEM_NUM; i++) {
if (dComIfGp_getSelectItem(i) == dItemNo_KANTERA_e) {
mSelectItemId = i;
}
@@ -12175,7 +12159,7 @@ BOOL daAlink_c::checkItemChangeFromButton() {
itemEquip(0x105);
} else {
u8 i;
for (i = 0; i < 2; i++) {
for (i = 0; i < SELECT_ITEM_NUM; i++) {
int proc_type = checkNewItemChange(i);
if (proc_type != 0 && itemTriggerCheck(1 << i)) {
BOOL var_r27 = changeItemTriggerKeepProc(i, proc_type);
@@ -12196,7 +12180,7 @@ BOOL daAlink_c::checkItemChangeFromButton() {
} else if (mEquipItem == dItemNo_NONE_e && mThrowBoomerangAcKeep.getActor() == NULL &&
!checkCanoeRide() && checkNoUpperAnime() && checkNoResetFlg2(FLG2_UNK_1))
{
for (i = 0; i < 2; i++) {
for (i = 0; i < SELECT_ITEM_NUM; i++) {
if (dComIfGp_getSelectItem(i) == dItemNo_KANTERA_e) {
mSelectItemId = i;
}
@@ -12208,7 +12192,7 @@ BOOL daAlink_c::checkItemChangeFromButton() {
mEquipItem != 0x102 && (!checkCanoeRide() || !checkFisingRodLure()))
{
if (!checkEventRun() || strcmp(dComIfGp_getEventManager().getRunEventName(), "ANGER") != 0) {
if (strcmp(dComIfGp_getEventManager().getRunEventName(), "ANGER2") != 0 && checkItemSetButton(mEquipItem) == 2) {
if (strcmp(dComIfGp_getEventManager().getRunEventName(), "ANGER2") != 0 && checkItemSetButton(mEquipItem) == 3) {
allUnequip(1);
}
}
@@ -14173,11 +14157,6 @@ BOOL daAlink_c::setItemModel() {
}
}
if (mEquipItem == dItemNo_GHOST_LANTERN_e) {
setGhostLanternModel();
return 1;
}
if (mEquipItem == dItemNo_KANTERA_e) {
setKandelaarModel();
return 1;
@@ -14407,7 +14386,7 @@ BOOL daAlink_c::checkGroupItem(int i_itemNo, int i_selItem) const {
}
int daAlink_c::checkSetItemTrigger(int i_itemNo) {
for (u8 i = 0; i < 2; i++) {
for (u8 i = 0; i < SELECT_ITEM_NUM; i++) {
if (checkGroupItem(i_itemNo, dComIfGp_getSelectItem(i)) && itemTriggerCheck(1 << i)) {
if (i_itemNo != dItemNo_HVY_BOOTS_e) {
mSelectItemId = i;
@@ -14420,13 +14399,13 @@ int daAlink_c::checkSetItemTrigger(int i_itemNo) {
}
int daAlink_c::checkItemSetButton(int i_itemNo) {
for (u8 i = 0; i < 2; i++) {
for (u8 i = 0; i < SELECT_ITEM_NUM; i++) {
if (checkGroupItem(i_itemNo, dComIfGp_getSelectItem(i))) {
return i;
}
}
return 2;
return 3;
}
bool daAlink_c::checkField() {
@@ -14519,7 +14498,6 @@ enum daAlink_ItemProc {
/* 13 */ ITEM_PROC_BOTTLE_SWING,
/* 14 */ ITEM_PROC_NOT_USE_ITEM,
/* 15 */ ITEM_PROC_GRASS_WHISTLE,
/* 16 */ ITEM_PROC_GHOST_LANTERN,
};
int daAlink_c::changeItemTriggerKeepProc(u8 i_selItemIdx, int i_procType) {
@@ -14544,8 +14522,7 @@ int daAlink_c::changeItemTriggerKeepProc(u8 i_selItemIdx, int i_procType) {
} else {
procKandelaarPourInit();
}
}
else if (i_procType == ITEM_PROC_FISHING_FOOD) {
} else if (i_procType == ITEM_PROC_FISHING_FOOD) {
procFishingFoodInit();
} else if (i_procType == ITEM_PROC_BOOTS_EQUIP) {
procBootsEquipInit();
@@ -14628,7 +14605,7 @@ int daAlink_c::checkNewItemChange(u8 i_selItemIdx) {
return ITEM_PROC_BOTTLE_DRINK;
}
if (checkOilBottleItem(sel_item) && checkItemSetButton(dItemNo_KANTERA_e) != 2) {
if (checkOilBottleItem(sel_item) && checkItemSetButton(dItemNo_KANTERA_e) != 3) {
return ITEM_PROC_KANDELAAR_POUR;
}
} else if (sel_item == dItemNo_HVY_BOOTS_e) {
@@ -14673,7 +14650,7 @@ int daAlink_c::checkNewItemChange(u8 i_selItemIdx) {
return ITEM_PROC_SPINNER_READY;
} else if (checkDungeonWarpItem(sel_item)) {
return ITEM_PROC_DUNGEON_WARP_READY;
} else if (checkItemSetButton(0x108) != 2 &&
} else if (checkItemSetButton(0x108) != 3 &&
(sel_item == dItemNo_WORM_e || sel_item == dItemNo_BEE_CHILD_e))
{
int itemNo = dComIfGp_getSelectItem(checkItemSetButton(0x108));
@@ -14697,7 +14674,7 @@ int daAlink_c::checkNewItemChange(u8 i_selItemIdx) {
return ITEM_PROC_NOT_USE_ITEM;
} else if (sel_item == dItemNo_HORSE_FLUTE_e) {
return ITEM_PROC_GRASS_WHISTLE;
} else if (checkOilBottleItem(sel_item) && checkItemSetButton(0x48) != 2) {
} else if (checkOilBottleItem(sel_item) && checkItemSetButton(0x48) != 3) {
return ITEM_PROC_KANDELAAR_POUR;
} else if (sel_item == dItemNo_HAWK_EYE_e) {
if (acceptSubjectModeChange()) {
@@ -14850,43 +14827,6 @@ void daAlink_c::deleteEquipItem(BOOL i_isPlaySound, BOOL i_isDeleteKantera) {
}
}
#if TARGET_PC
void daAlink_c::setGhostLanternLight() {
const daAlinkHIO_huLight_c1* light_m = &mpHIO->mItem.mGhostLanternPL.m;
BOOL var_r28 = false;
f32 lightPower = 0.0f;
daE_HP_c* foundPoe = (daE_HP_c*)fopAcM_Search(srchPoe, this);
if (mEquipItem == dItemNo_GHOST_LANTERN_e && foundPoe != NULL) {
lightPower = 1.0f;
}
cLib_chaseF(&current_ghost_lantern_light_power, lightPower, 0.25f);
cXyz spB8;
f32 var_f27;
if (current_ghost_lantern_light_power > 0.0f) {
GXColor sp30 = {(u8)light_m->mColorR, (u8)light_m->mColorG, (u8)light_m->mColorB, 0xFF};
sp30.r = 120;
sp30.g = 150;
sp30.b = 150;
Vec sp5C = {0.0f, light_m->mYOffset, light_m->mZOffset};
f32 var_f26;
spB8 = mGhostLanternFlamePos;
var_f27 = 0.0f;
var_f26 = cM_sht2d(-shape_angle.y);
dKy_WolfEyeLight_set(&spB8, var_f27 + light_m->mXAngle, var_f26,
(light_m->mWidth * current_ghost_lantern_light_power) / light_m->mPower, &sp30, current_ghost_lantern_light_power,
light_m->mAngleAttenuationType,
light_m->mDistanceAttenuationType);
}
}
#endif
void daAlink_c::setLight() {
const daAlinkHIO_huLight_c1* light_m = &mpHIO->mItem.mLanternPL.m;
BOOL var_r28 = false;
@@ -17886,7 +17826,7 @@ int daAlink_c::execute() {
if (checkNoResetFlg2(FLG2_UNK_1) != FALSE &&
mEquipItem != dItemNo_KANTERA_e &&
checkItemSetButton(dItemNo_KANTERA_e) == 2) {
checkItemSetButton(dItemNo_KANTERA_e) == 3) {
offKandelaarModel();
}
@@ -18275,7 +18215,7 @@ int daAlink_c::execute() {
if (checkEquipHeavyBoots()) {
int itemButton = checkItemSetButton(dItemNo_HVY_BOOTS_e);
if (itemButton == 2 || checkNotHeavyBootsStage()) {
if (itemButton == 3 || checkNotHeavyBootsStage()) {
if (!dComIfGp_checkPlayerStatus1(0, 0x10000) || !checkHookshotRoofLv7Boss()) {
setHeavyBoots(0);
}
@@ -18325,8 +18265,7 @@ int daAlink_c::execute() {
resetUpperAnime(UPPER_2, 5.0f);
}
if ((mEquipItem == dItemNo_KANTERA_e || mEquipItem == dItemNo_GHOST_LANTERN_e) &&
checkNoUpperAnime() && !checkKandelaarEquipAnime() &&
if (mEquipItem == dItemNo_KANTERA_e && checkNoUpperAnime() && !checkKandelaarEquipAnime() &&
(checkModeFlg(MODE_UNK_1000) || mProcID == PROC_CROUCH))
{
if (checkReinRide()) {
@@ -18677,29 +18616,8 @@ int daAlink_c::execute() {
setCollision();
setAttentionPos();
setLight();
#if TARGET_PC
setGhostLanternLight();
#endif
setEffect();
if (mEquipItem == dItemNo_GHOST_LANTERN_e) {
cXyz effscale(0.75f, 0.75f, 0.75f);
static u16 particleNmaeDt[2] = {
0x8789,
0x878A,
};
for (s32 i = 0; i < 2; i++) {
ghostLanternFlameEffect[i] = dComIfGp_particle_set(ghostLanternFlameEffect[i], particleNmaeDt[i],
&mGhostLanternFlamePos, 0, &effscale);
}
} else {
for (s32 i = 0; i < 2; i++) {
stopDrawParticle(ghostLanternFlameEffect[i]);
}
}
if (mClothesChangeWaitTimer != 0) {
mDoMtx_stack_c::copy(mpLinkModel->getBaseTRMtx());
@@ -18819,7 +18737,7 @@ int daAlink_c::execute() {
if (!checkWolf()) {
u8 tmp;
for (u8 i = 0; i < 2; i++) {
for (u8 i = 0; i < SELECT_ITEM_NUM; i++) {
tmp = (i + 1) % 2;
if (dComIfGp_getSelectItem(i) == dItemNo_EMPTY_BOTTLE_e && (mUseButtonFlags & (1 << i)) &&
dComIfGp_getSelectItem(tmp) == dItemNo_EMPTY_BOTTLE_e)
@@ -18829,7 +18747,7 @@ int daAlink_c::execute() {
}
}
for (int i = 0; i < 2; i++) {
for (int i = 0; i < SELECT_ITEM_NUM; i++) {
if (!(mUseButtonFlags & (1 << i)) && !(field_0x2faf & (1 << i))) {
dMeter2Info_offUseButton(METER2_USEBUTTON_X << i);
}
@@ -19401,10 +19319,6 @@ void daAlink_c::shadowDraw() {
dComIfGd_addRealShadow(shadowID, mpKanteraModel);
}
if (mEquipItem == dItemNo_GHOST_LANTERN_e) {
dComIfGd_addRealShadow(shadowID, mpGhostLanternModel);
}
if (checkEquipHeavyBoots()) {
for (int i = 0; i < 2; i++) {
dComIfGd_addRealShadow(shadowID, mpLinkBootModels[i]);
@@ -19565,22 +19479,6 @@ int daAlink_c::draw() {
}
}
if (mEquipItem == dItemNo_GHOST_LANTERN_e) {
daE_HP_c* foundPoe = (daE_HP_c*)fopAcM_Search(srchPoe, this);
for (s32 i = 0; i < 2; i++) {
JPABaseEmitter* emitter_gl = dComIfGp_particle_getEmitter(ghostLanternFlameEffect[i]);
if (emitter_gl != NULL) {
emitter_gl->setLocalTranslation({2.5f, -15.0f, 0.0f});
if (checkPlayerNoDraw() || foundPoe == NULL) {
emitter_gl->stopDrawParticle();
} else {
emitter_gl->playDrawParticle();
}
}
}
}
if (mClothesChangeWaitTimer != 0) {
if (mProcID == PROC_METAMORPHOSE) {
if (mProcVar3.field_0x300e > 0) {
@@ -19906,15 +19804,6 @@ int daAlink_c::draw() {
basicModelDraw(mpKanteraGlowModel);
}
if (mEquipItem == dItemNo_GHOST_LANTERN_e) {
daE_HP_c* foundPoe = (daE_HP_c*)fopAcM_Search(srchPoe, this);
modelDraw(mpGhostLanternModel, isPlayerNoDraw);
if (foundPoe != NULL) {
preGhostLanternDraw();
modelDraw(mpGhostLanternGlowModel, isPlayerNoDraw);
}
}
if (checkEquipHeavyBoots()) {
GXColorS10 color = tevStr.TevColor;
for (int i = 0; i < 2; i++) {
+2 -2
View File
@@ -2184,7 +2184,7 @@ void daAlink_c::setGetSubBgm(int i_itemNo) {
/* dItemNo_NOENTRY_222_e */ SETYPE_NONE,
/* dItemNo_NOENTRY_223_e */ SETYPE_NONE,
/* dItemNo_POU_SPIRIT_e */ SETYPE_ITEM_GET_POU,
/* dItemNo_GHOST_LANTERN_e */ SETYPE_ITEM_GET,
/* dItemNo_NOENTRY_225_e */ SETYPE_NONE,
/* dItemNo_NOENTRY_226_e */ SETYPE_NONE,
/* dItemNo_NOENTRY_227_e */ SETYPE_NONE,
/* dItemNo_NOENTRY_228_e */ SETYPE_NONE,
@@ -4121,7 +4121,7 @@ int daAlink_c::procDungeonWarpReadyInit() {
}
fpc_ProcID id;
if (checkItemSetButton(dItemNo_DUNGEON_EXIT_e) != 2) {
if (checkItemSetButton(dItemNo_DUNGEON_EXIT_e) != 3) {
id = fopAcM_create(fpcNm_OBJ_TKS_e, 0, &current.pos, fopAcM_GetRoomNo(this), &shape_angle,
NULL, -1);
} else {
-121
View File
@@ -9,7 +9,6 @@
#include "d/actor/d_a_tag_ss_drink.h"
#include "m_Do/m_Do_lib.h"
#include "SSystem/SComponent/c_math.h"
#include "d/actor/d_a_e_hp.h"
static fopAc_ac_c* daAlink_searchTagKandelaar(fopAc_ac_c* i_actor, void* i_data) {
UNUSED(i_data);
@@ -139,50 +138,6 @@ int daAlink_c::kandelaarModelCallBack() {
return 1;
}
int daAlink_c::ghostLanternModelCallBack() {
cXyz sp44;
mDoMtx_multVecZero(J3DSys::mCurrentMtx, &sp44);
ghost_lantern_0x3630 = ghost_lantern_0x3624;
ghost_lantern_0x3624 = mGhostLanternFlamePos;
cXyz sp38 = (mGhostLanternFlamePos - sp44) + ghost_lantern_0x3618;
sp38.y -= 3.0f;
cXyz sp2C;
mDoMtx_multVec(J3DSys::mCurrentMtx, &cXyz::BaseZ, &sp2C);
s16 var_r29 = sp2C.atan2sX_Z();
mDoMtx_stack_c::YrotS(-var_r29);
mDoMtx_stack_c::multVec(&sp38, &sp38);
s16 var_r28 = cLib_minMaxLimit<s16>(cM_atan2s(-sp38.z, -sp38.y), -0x1800, 0x1800);
s16 var_r27 = cLib_minMaxLimit<s16>(cM_atan2s(sp38.x, JMAFastSqrt(SQUARE(sp38.y) + SQUARE(sp38.z))), -0x1800, 0x1800);
mDoMtx_stack_c::transS(sp44);
if (mProcID != PROC_OPEN_TREASURE && (mProcID != PROC_GET_ITEM || mProcVar4.field_0x3010 == 0)) {
mDoMtx_stack_c::ZXYrotM(var_r28, var_r29, var_r27);
}
static Vec const ghostLanternOffset = {0.0f, -20.0f, 0.0f};
mDoMtx_stack_c::multVec(&ghostLanternOffset, &mGhostLanternFlamePos);
ghost_lantern_0x3618 = (mGhostLanternFlamePos - ghost_lantern_0x3624) * 0.9f;
if (!checkEndResetFlg1(ERFLG1_UNK_8) && mpGhostLanternModel != nullptr) {
f32 scale = JMAFastSqrt(SQUARE(J3DSys::mCurrentMtx[0][0]) + SQUARE(J3DSys::mCurrentMtx[1][0]) + SQUARE(J3DSys::mCurrentMtx[2][0]));
mDoMtx_stack_c::transS(J3DSys::mCurrentMtx[0][3], J3DSys::mCurrentMtx[1][3], J3DSys::mCurrentMtx[2][3]);
mDoMtx_stack_c::ZXYrotM(var_r28, var_r29, var_r27);
mDoMtx_stack_c::ZXYrotM(0, 0, -16384);
mDoMtx_stack_c::scaleM(scale, scale, scale);
mpGhostLanternModel->setAnmMtx(1, mDoMtx_stack_c::get());
cMtx_copy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx);
}
return 1;
}
static int daAlink_kandelaarModelCallBack(J3DJoint* i_joint, int param_1) {
UNUSED(i_joint);
@@ -195,18 +150,6 @@ static int daAlink_kandelaarModelCallBack(J3DJoint* i_joint, int param_1) {
return 1;
}
static int daAlink_ghostLanternModelCallBack(J3DJoint* i_joint, int param_1) {
UNUSED(i_joint);
daAlink_c* player_p = (daAlink_c*)j3dSys.getModel()->getUserArea();
if (param_1 == 0) {
player_p->ghostLanternModelCallBack();
}
return 1;
}
cXyz* daAlink_c::getKandelaarFlamePos() {
if ((!checkNoResetFlg2(daPy_FLG2(FLG2_UNK_20000 | FLG2_UNK_1)) && !checkEndResetFlg1(ERFLG1_UNK_4)) ||
checkWolf() || !checkNoResetFlg1(FLG1_UNK_80))
@@ -221,60 +164,6 @@ BOOL daAlink_c::checkKandelaarEquipAnime() const {
return checkUpperAnime(dRes_ID_ALANM_BCK_WAITHK_e) || checkUpperAnime(dRes_ID_ALANM_BCK_WAITK_e);
}
void* daAlink_c::srchPoe(void* i_actor, void* i_this) {
if (i_actor != NULL && i_actor != i_this) {
if (fopAcM_IsExecuting(fopAcM_GetID(i_actor)) && fopAcM_GetName(i_actor) == fpcNm_E_HP_e) {
return i_actor;
}
}
return NULL;
}
void daAlink_c::preGhostLanternDraw() {
J3DMaterial* mat_p = mpGhostLanternGlowModel->getModelData()->getMaterialNodePointer(0);
J3DGXColorS10 color;
color.r = 120;
color.g = 150;
color.b = 150;
color.a = 255;
mat_p->setTevColor(1, &color);
color.r = 0;
color.g = 60;
color.b = 101;
mat_p->setTevColor(2, &color);
cXyz proj;
mDoLib_project(&mGhostLanternFlamePos, &proj);
camera_process_class* camera_p = dComIfGp_getCamera(0);
f32 trimHeight;
if (camera_p != NULL) {
trimHeight = camera_p->mCamera.TrimHeight();
} else {
trimHeight = 0.0f;
}
if (proj.x > 0.0f && proj.x < FB_WIDTH && proj.y > trimHeight && proj.y < FB_HEIGHT - trimHeight) {
dComIfGd_peekZ(proj.x, proj.y, &field_0x32c8);
} else {
field_0x32c8 = 0;
}
f32 near_ = dComIfGd_getView()->near_;
f32 far_ = dComIfGd_getView()->far_;
mDoLib_pos2camera(&mGhostLanternFlamePos, &proj);
proj.z += 30.0f;
if (proj.z > -0.01f) {
proj.z = -0.01f;
}
field_0x344c = ((near_ + (far_ * near_) / proj.z) / (far_ - near_) + 1.0f) * 1.6777215E7f;
}
void daAlink_c::preKandelaarDraw() {
J3DMaterial* mat_p = mpKanteraGlowModel->getModelData()->getMaterialNodePointer(0);
@@ -319,16 +208,6 @@ void daAlink_c::preKandelaarDraw() {
field_0x344c = ((near_ + (far_ * near_) / proj.z) / (far_ - near_) + 1.0f) * 1.6777215E7f;
}
void daAlink_c::setGhostLanternModel() {
field_0x2f94 = 0;
mDoMtx_multVecZero(mpLinkModel->getAnmMtx(mLeftItemJntNo), &mGhostLanternFlamePos);
ghost_lantern_0x3630 = ghost_lantern_0x3624;
ghost_lantern_0x3624 = mGhostLanternFlamePos;
ghost_lantern_0x3618 = cXyz::Zero;
}
void daAlink_c::setKandelaarModel() {
field_0x2f94 = 0;
+1 -1
View File
@@ -211,7 +211,7 @@ int daAlink_c::procSpinnerWait() {
mProcVar3.field_0x300e = shape_angle.y;
}
} else {
if (checkSetItemTrigger(dItemNo_SPINNER_e) || swordSwingTrigger() || itemSetBtn == 2) {
if (checkSetItemTrigger(dItemNo_SPINNER_e) || swordSwingTrigger() || itemSetBtn == SELECT_ITEM_NUM) {
if (swordSwingTrigger()) {
swordEquip(0);
}
+1 -14
View File
@@ -300,7 +300,6 @@ void daAlink_c::changeWolf() {
mAtSph.SetR(40.0f);
mpKanteraModel = NULL;
mpGhostLanternModel = NULL;
mpLinkHatModel = NULL;
mpLinkFaceModel = NULL;
mpLinkHandModel = NULL;
@@ -407,20 +406,12 @@ void daAlink_c::changeLink(int param_0) {
modelData = static_cast<J3DModelData*>(dComIfG_getObjectRes(mArcName, "ef_ktGlow.bmd"));
mpKanteraGlowModel = initModel(modelData, 0x200);
mpKanteraGlowBtk = static_cast<J3DAnmTextureSRTKey*>(dComIfG_getObjectRes(mArcName, "ef_ktGlow.btk"));
mpKanteraGlowBtk->setFrame(0.0f);
mpKanteraGlowBtk->searchUpdateMaterialID(modelData);
modelData->entryTexMtxAnimator(mpKanteraGlowBtk);
mpGhostLanternModel = initModelEnv(static_cast<J3DModelData*>(dComIfG_getObjectRes("E_HP", "hp_ori.bmd")), 0);
modelData = static_cast<J3DModelData*>(dComIfG_getObjectRes(mArcName, "ef_ktGlow.bmd"));
mpGhostLanternGlowModel = initModel(modelData, 0x200);
mpGhostLanternGlowBtk = static_cast<J3DAnmTextureSRTKey*>(dComIfG_getObjectRes(mArcName, "ef_ktGlow.btk"));
mpGhostLanternGlowBtk->setFrame(0.0f);
mpGhostLanternGlowBtk->searchUpdateMaterialID(modelData);
modelData->entryTexMtxAnimator(mpGhostLanternGlowBtk);
mWoodSwordModel = initModel(static_cast<J3DModelData*>(dComIfG_getObjectRes(mArcName, "al_SWB.bmd")), 0);
mDoExt_setCurrentHeap(current_heap);
@@ -513,10 +504,6 @@ void daAlink_c::changeLink(int param_0) {
mpKanteraModel->setUserArea((uintptr_t)this);
mpKanteraModel->getModelData()->getJointNodePointer(1)->setCallBack(daAlink_kandelaarModelCallBack);
mpGhostLanternModel->setUserArea((uintptr_t)this);
mpGhostLanternModel->getModelData()->getJointNodePointer(1)->setCallBack(daAlink_ghostLanternModelCallBack);
mZ2Link.setLinkState(var_r27);
#if VERSION != VERSION_SHIELD_DEBUG
+3 -13
View File
@@ -1952,18 +1952,7 @@ u8 dComIfGs_getMixItemIndex(int i_no) {
}
void dComIfGp_setSelectItem(int i_selItemIdx) {
if (i_selItemIdx == SELECT_ITEM_DOWN) {
if (dComIfGs_getSelectItemIndex(i_selItemIdx) != 0xFF) {
u8 selItem_slotNo = dComIfGs_getSelectItemIndex(i_selItemIdx);
g_dComIfG_gameInfo.play.setSelectItem(i_selItemIdx, selItem_slotNo);
if (selItem_slotNo == 0xFF) {
dComIfGs_setSelectItemIndex(i_selItemIdx, 0xFF);
}
} else {
g_dComIfG_gameInfo.play.setSelectItem(i_selItemIdx, dItemNo_NONE_e);
}
} else if (dComIfGs_getSelectItemIndex(i_selItemIdx) != 0xFF) {
if (dComIfGs_getSelectItemIndex(i_selItemIdx) != 0xFF) {
u8 item = dComIfGs_getItem(dComIfGs_getSelectItemIndex(i_selItemIdx), false);
g_dComIfG_gameInfo.play.setSelectItem(i_selItemIdx, item);
@@ -1978,7 +1967,8 @@ void dComIfGp_setSelectItem(int i_selItemIdx) {
u8 dComIfGp_getSelectItem(int i_selItemIdx) {
u8 playItem = g_dComIfG_gameInfo.play.getSelectItem(i_selItemIdx);
if ((i_selItemIdx == SELECT_ITEM_X || i_selItemIdx == SELECT_ITEM_Y) &&
if ((i_selItemIdx == SELECT_ITEM_X || i_selItemIdx == SELECT_ITEM_Y ||
i_selItemIdx == SELECT_ITEM_Z) &&
dComIfGs_getMixItemIndex(i_selItemIdx) != 0xFF)
{
u8 saveItem = dComIfGs_getItem(dComIfGs_getMixItemIndex(i_selItemIdx), false);
+4
View File
@@ -287,6 +287,10 @@ int dEvt_control_c::talkXyCheck(dEvt_order_c* order) {
mTalkXyType = 2;
itemIndex = SELECT_ITEM_Y;
break;
case dEvt_type_SHOWITEM_Z_e:
mTalkXyType = 3;
itemIndex = SELECT_ITEM_Z;
break;
#if PLATFORM_WII || PLATFORM_SHIELD
case 8:
mTalkXyType = 3;
+2 -10
View File
@@ -236,7 +236,7 @@ static void (*item_func_ptr[256])() = {
item_func_noentry,
item_func_noentry,
item_func_POU_SPIRIT,
item_func_GHOST_LANTERN,
item_func_noentry,
item_func_noentry,
item_func_noentry,
item_func_noentry,
@@ -504,7 +504,7 @@ static int (*item_getcheck_func_ptr[256])() = {
item_getcheck_func_noentry,
item_getcheck_func_noentry,
item_getcheck_func_POU_SPIRIT,
item_getcheck_func_GHOST_LANTERN,
item_getcheck_func_noentry,
item_getcheck_func_noentry,
item_getcheck_func_noentry,
item_getcheck_func_noentry,
@@ -791,10 +791,6 @@ void item_func_IRONBALL() {
dComIfGs_setItem(SLOT_6, dItemNo_IRONBALL_e);
}
void item_func_GHOST_LANTERN() {
dComIfGs_setItem(SLOT_7, dItemNo_GHOST_LANTERN_e);
}
void item_func_BOW() {
dComIfGs_setItem(SLOT_4, dItemNo_BOW_e);
dComIfGs_setArrowNum(30);
@@ -1457,10 +1453,6 @@ int item_getcheck_func_IRONBALL() {
return dComIfGs_getItem(SLOT_6, true) == dItemNo_IRONBALL_e ? TRUE : FALSE;
}
int item_getcheck_func_GHOST_LANTERN() {
return dComIfGs_getItem(SLOT_7, true) == dItemNo_GHOST_LANTERN_e ? TRUE : FALSE;
}
int item_getcheck_func_BOW() {
return dComIfGs_getItem(SLOT_4, false) == dItemNo_BOW_e ? TRUE : FALSE;
}
+3 -1
View File
@@ -446,7 +446,7 @@ void dMenu_ItemExplain_c::move_proc() {
if (field_0xe7 == 0) {
return;
}
if (!mDoCPd_c::getTrigX(PAD_1) && !mDoCPd_c::getTrigY(PAD_1)) {
if (!mDoCPd_c::getTrigX(PAD_1) && !mDoCPd_c::getTrigY(PAD_1) && !mDoCPd_c::getTrigZ(PAD_1)) {
return;
}
}
@@ -460,6 +460,8 @@ void dMenu_ItemExplain_c::move_proc() {
mEndButton = 3;
} else if (mDoCPd_c::getTrigY(PAD_1)) {
mEndButton = 4;
} else if (mDoCPd_c::getTrigZ(PAD_1)) {
mEndButton = 5;
}
mStatus = 5;
Z2GetAudioMgr()->seStart(Z2SE_SY_EXP_WIN_CLOSE, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
+45 -15
View File
@@ -134,7 +134,7 @@ dMenu_Ring_c::dMenu_Ring_c(JKRExpHeap* i_heap, STControl* i_stick, CSTControl* i
field_0x6a9 = 0;
mXButtonSlot = 0xff;
mYButtonSlot = 0xff;
field_0x6ac = 0xff;
mZButtonSlot = 0xff;
field_0x6ad = 0xff;
field_0x670 = 0;
field_0x67e = 0;
@@ -244,8 +244,8 @@ dMenu_Ring_c::dMenu_Ring_c(JKRExpHeap* i_heap, STControl* i_stick, CSTControl* i
if (dComIfGs_getSelectItemIndex(1) == dComIfGs_getLineUpItem(i)) {
mYButtonSlot = i;
}
if (dComIfGs_getSelectItemIndex(2) == dComIfGs_getWolfAbility(i)) {
field_0x6ac = i;
if (dComIfGs_getSelectItemIndex(2) == dComIfGs_getLineUpItem(i)) {
mZButtonSlot = i;
}
}
mRingRadiusH = g_ringHIO.mRingRadiusH;
@@ -259,7 +259,7 @@ dMenu_Ring_c::dMenu_Ring_c(JKRExpHeap* i_heap, STControl* i_stick, CSTControl* i
}
}
field_0x6be[i] = 0;
if (i == 2) {
if (i == MAX_SELECT_ITEM) {
setSelectItem(i, 0);
} else {
setSelectItem(i, 0x43);
@@ -977,8 +977,8 @@ void dMenu_Ring_c::setItem() {
} else {
uVar2 = dItemNo_NONE_e;
}
if (field_0x6ac != dItemNo_NONE_e) {
uVar3 = mItemSlots[field_0x6ac];
if (mZButtonSlot != dItemNo_NONE_e) {
uVar3 = mItemSlots[mZButtonSlot];
} else {
uVar3 = dItemNo_NONE_e;
}
@@ -1058,6 +1058,9 @@ void dMenu_Ring_c::setItem() {
mixItemIndex1 = dItemNo_NONE_e;
}
}
} else if (field_0x6b3 == 2) {
mZButtonSlot = mCurrentSlot;
uVar3 = mItemSlots[mZButtonSlot];
}
field_0x6b4[0] = uVar1;
field_0x6b4[1] = uVar2;
@@ -1073,7 +1076,7 @@ void dMenu_Ring_c::setItem() {
void dMenu_Ring_c::setJumpItem(bool i_useVibrationM) {
for (int i = 0; i < 4; i++) {
if (i == 2) {
if (i == 4) {
setSelectItem(i, field_0x6b4[i]);
} else if (i == field_0x6cd) {
setSelectItem(i, getItem(field_0x6cb, 0));
@@ -1089,9 +1092,9 @@ void dMenu_Ring_c::setJumpItem(bool i_useVibrationM) {
field_0x518[1] = mItemSlotPosX[mYButtonSlot];
field_0x528[1] = mItemSlotPosY[mYButtonSlot];
}
if (field_0x6ac != dItemNo_NONE_e) {
field_0x518[2] = mItemSlotPosX[field_0x6ac];
field_0x528[2] = mItemSlotPosY[field_0x6ac];
if (mZButtonSlot != dItemNo_NONE_e) {
field_0x518[2] = mItemSlotPosX[mZButtonSlot];
field_0x528[2] = mItemSlotPosY[mZButtonSlot];
}
if (field_0x6ad != dItemNo_NONE_e) {
field_0x518[3] = mItemSlotPosX[field_0x6ad];
@@ -1117,9 +1120,21 @@ void dMenu_Ring_c::setJumpItem(bool i_useVibrationM) {
field_0x674[1] = 1;
#if TARGET_PC
mSelectItemSlideElapsed[1] = 0.0f;
#endif
}
} else if (field_0x6b3 == 2) {
field_0x538[0] = g_ringHIO.mUnselectItemScale;
field_0x538[1] = g_ringHIO.mSelectItemScale;
if (field_0x6b4[2] != dComIfGs_getSelectItemIndex(2) ||
field_0x6b8[2] != dComIfGs_getMixItemIndex(2))
{
field_0x674[2] = 1;
#if TARGET_PC
mSelectItemSlideElapsed[2] = 0.0f;
#endif
}
}
if (field_0x674[0] == 1) {
if (i_useVibrationM) {
dMeter2Info_set2DVibrationM();
@@ -1160,7 +1175,7 @@ void dMenu_Ring_c::setScale() {
}
setNameString(itemId);
setItemScale(i, g_ringHIO.mUnselectItemScale);
for (int j = 0; j < 2; j++) {
for (int j = 0; j < SELECT_ITEM_NUM; j++) {
if (j == field_0x6cf) {
setButtonScale(j, g_ringHIO.mSelectButtonScale);
} else {
@@ -1180,7 +1195,7 @@ void dMenu_Ring_c::setScale() {
} else {
setItemScale(i, g_ringHIO.mUnselectItemScale);
}
for (int j = 0; j < 2; j++) {
for (int j = 0; j < SELECT_ITEM_NUM; j++) {
setButtonScale(j, g_ringHIO.mUnselectButtonScale);
}
}
@@ -1214,6 +1229,7 @@ void dMenu_Ring_c::setNameString(u32 i_stringID) {
void dMenu_Ring_c::setActiveCursor() {
u8 item = dComIfGs_getItem(mItemSlots[mCurrentSlot], false);
if (mStatus == STATUS_WAIT && mOldStatus != STATUS_EXPLAIN_FORCE && mOldStatus != STATUS_EXPLAIN && mpItemExplain->getStatus() == 0) {
if (mDoCPd_c::getTrigR(PAD_1) && !mPlayerIsWolf && item != dItemNo_NONE_e) {
for (int i = 0; i < MAX_SELECT_ITEM; i++) {
@@ -1244,7 +1260,21 @@ void dMenu_Ring_c::setActiveCursor() {
(this->*stick_init[mStatus])();
}
}
} else if (mDoCPd_c::getTrigX(PAD_1) || mDoCPd_c::getTrigY(PAD_1)) {
} else if (mDoCPd_c::getTrigZ(PAD_1) && !mPlayerIsWolf && item != dItemNo_NONE_e) {
for (int i = 0; i < MAX_SELECT_ITEM; i++) {
setSelectItemForce(i);
}
field_0x6b3 = 2;
if (!checkCombineBomb(field_0x6b3)) {
setItem();
if (mpItemExplain->getStatus() == 0) {
setStatus(STATUS_WAIT);
(this->*stick_init[mStatus])();
}
}
} else if (mDoCPd_c::getTrigX(PAD_1) || mDoCPd_c::getTrigY(PAD_1) ||
mDoCPd_c::getTrigZ(PAD_1))
{
// If the player is a wolf or somehow manages to access an item slot with no item, error
Z2GetAudioMgr()->seStart(Z2SE_SYS_ERROR, NULL, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
}
@@ -1660,7 +1690,7 @@ void dMenu_Ring_c::drawSelectItem() {
}
void dMenu_Ring_c::setSelectItemForce(int i_idx) {
if (i_idx == 2) {
if (i_idx == SELECT_ITEM_NUM) {
if (field_0x674[i_idx] != 0) {
dComIfGs_setSelectItemIndex(i_idx, field_0x6b4[i_idx]);
field_0x674[i_idx] = 0;
@@ -1669,7 +1699,7 @@ void dMenu_Ring_c::setSelectItemForce(int i_idx) {
#endif
}
} else if (field_0x674[i_idx] != 0) {
for (int i = 0; i < 2; i++) {
for (int i = 0; i < SELECT_ITEM_NUM; i++) {
dComIfGs_setMixItemIndex(i, field_0x6b8[i]);
dComIfGs_setSelectItemIndex(i, field_0x6b4[i]);
}
+2
View File
@@ -1533,6 +1533,8 @@ void dMeter2Info_c::setMiniGameItem(u8 i_minigameFlag) {
if (mMiniGameItemSetFlag != 3) {
dComIfGs_setItem(SLOT_4, dItemNo_BOW_e);
dComIfGp_setItem(SLOT_4, dItemNo_BOW_e);
dComIfGs_setMixItemIndex(SELECT_ITEM_Z, 0xFF);
dComIfGs_setSelectItemIndex(SELECT_ITEM_Z, 0xFF);
dComIfGs_setMixItemIndex(SELECT_ITEM_Y, 0xFF);
dComIfGs_setSelectItemIndex(SELECT_ITEM_Y, 0xFF);
dComIfGs_setMixItemIndex(SELECT_ITEM_X, SLOT_4);
-3
View File
@@ -1481,9 +1481,6 @@ void dScnLogo_c::dvdDataLoad() {
OS_REPORT("\x1b[32m%d archiveHeap->getTotalFreeSize %08x\n\x1b[m", 2421, archiveHeap->getTotalFreeSize());
archiveHeap->dump_sort();
rt = dComIfG_setObjectRes("E_HP", (u8)0, NULL);
JUT_ASSERT(2425, rt == 1);
rt = dComIfG_setObjectRes("Alink", (u8)0, NULL);
JUT_ASSERT(2429, rt == 1);
+5 -5
View File
@@ -432,11 +432,11 @@ u8 dSv_player_item_c::getItem(int i_slotNo, bool i_checkCombo) const {
}
void dSv_player_item_c::setLineUpItem() {
static u8 i_item_lst[24] = {
static u8 i_item_lst[23] = {
10, 8, 6, 2, 9, 4, 3,
0, 1, 7, 23, 20, 5, 15,
16, 17, 11, 12, 13, 14, 19,
18, 22, 21
0, 1, 23, 20, 5, 15, 16,
17, 11, 12, 13, 14, 19, 18,
22, 21
};
int slot_idx = 0;
@@ -445,7 +445,7 @@ void dSv_player_item_c::setLineUpItem() {
mItemSlots[i] = dItemNo_NONE_e;
}
for (int i = 0; i < 24; i++) {
for (int i = 0; i < 23; i++) {
u8 current = i_item_lst[i];
if (mItems[current] != dItemNo_NONE_e) {
mItemSlots[slot_idx] = current;
+1 -2
View File
@@ -251,7 +251,7 @@ namespace dusk {
{ dItemNo_NOENTRY_222_e, {"Reserved"} },
{ dItemNo_NOENTRY_223_e, {"Reserved"} },
{ dItemNo_POU_SPIRIT_e, {"Poe Soul"} },
{ dItemNo_GHOST_LANTERN_e, {"Ghost Lantern", ITEMTYPE_EQUIP_e} },
{ dItemNo_NOENTRY_225_e, {"Reserved"} },
{ dItemNo_NOENTRY_226_e, {"Reserved"} },
{ dItemNo_NOENTRY_227_e, {"Reserved"} },
{ dItemNo_NOENTRY_228_e, {"Reserved"} },
@@ -393,7 +393,6 @@ namespace dusk {
{ SLOT_4, dItemNo_BOW_e },
{ SLOT_5, dItemNo_HAWK_EYE_e },
{ SLOT_6, dItemNo_IRONBALL_e },
{ SLOT_7, dItemNo_GHOST_LANTERN_e},
{ SLOT_8, dItemNo_COPY_ROD_e },
{ SLOT_9, dItemNo_HOOKSHOT_e },
{ SLOT_10, dItemNo_W_HOOKSHOT_e },
+1 -1
View File
@@ -450,7 +450,7 @@ std::map<int, itemInfo> itemMap = {
{dItemNo_NOENTRY_222_e, {"Reserved"}},
{dItemNo_NOENTRY_223_e, {"Reserved"}},
{dItemNo_POU_SPIRIT_e, {"Poe Soul"}},
{dItemNo_GHOST_LANTERN_e, {"Reserved"}},
{dItemNo_NOENTRY_225_e, {"Reserved"}},
{dItemNo_NOENTRY_226_e, {"Reserved"}},
{dItemNo_NOENTRY_227_e, {"Reserved"}},
{dItemNo_NOENTRY_228_e, {"Reserved"}},
-12
View File
@@ -29,8 +29,6 @@
#include "tracy/Tracy.hpp"
#include <dusk/gamepad_color.h>
#include <dusk/autosave.h>
#include <d/actor/d_a_npc.h>
#include <d/d_item.h>
#endif
fapGm_HIO_c::fapGm_HIO_c() {
@@ -743,21 +741,11 @@ static void fapGm_AfterRecord() {
}
BOOL isRecording = false;
BOOL gotGhostLantern = false;
static void duskExecute() {
handleGamepadColor();
updateAutoSave();
if (daNpcT_chkEvtBit(0x2B6) && !gotGhostLantern) {
execItemGet(dItemNo_GHOST_LANTERN_e);
gotGhostLantern = true;
} else if (!daNpcT_chkEvtBit(0x2B6) && gotGhostLantern) {
dComIfGs_offItemFirstBit(dItemNo_GHOST_LANTERN_e);
dComIfGp_setItem(SLOT_7, dItemNo_NONE_e);
gotGhostLantern = false;
}
if (dusk::getSettings().game.recordingMode) {
Z2GetSoundMgr()->getSeqMgr()->getParams()->moveVolume(0.0f, 0);
Z2GetSoundMgr()->getStreamMgr()->getParams()->moveVolume(0.0f, 0);