diff --git a/include/d/actor/d_a_alink.h b/include/d/actor/d_a_alink.h index f69ce6e875..f101b39d57 100644 --- a/include/d/actor/d_a_alink.h +++ b/include/d/actor/d_a_alink.h @@ -2386,7 +2386,6 @@ public: void setGroundFishingRodActor(); int procFishingCastInit(); int procFishingCast(); - void procLensOfTruthOn(); int procFishingFoodInit(); int procFishingFood(); f32 getCrawlMoveAnmSpeed(); diff --git a/include/d/d_item.h b/include/d/d_item.h index 7a0d6cb92d..7bf8e12ea5 100644 --- a/include/d/d_item.h +++ b/include/d/d_item.h @@ -71,7 +71,7 @@ void item_func_WOOD_STICK(); void item_func_BOOMERANG(); void item_func_SPINNER(); void item_func_IRONBALL(); -void item_func_LENS_OF_TRUTH(); +void item_func_GHOST_LANTERN(); void item_func_BOW(); void item_func_HOOKSHOT(); void item_func_HVY_BOOTS(); @@ -261,7 +261,7 @@ 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_LENS_OF_TRUTH(); +int item_getcheck_func_GHOST_LANTERN(); int item_getcheck_func_BOW(); int item_getcheck_func_HOOKSHOT(); int item_getcheck_func_HVY_BOOTS(); diff --git a/include/d/d_item_data.h b/include/d/d_item_data.h index 9177d07458..c0e43e762e 100644 --- a/include/d/d_item_data.h +++ b/include/d/d_item_data.h @@ -317,7 +317,7 @@ enum { /* 0xDE */ dItemNo_NOENTRY_222_e, /* 0xDF */ dItemNo_NOENTRY_223_e, /* 0xE0 */ dItemNo_POU_SPIRIT_e, - /* 0xE1 */ dItemNo_LENS_OF_TRUTH_e, + /* 0xE1 */ dItemNo_GHOST_LANTERN_e, /* 0xE2 */ dItemNo_NOENTRY_226_e, /* 0xE3 */ dItemNo_NOENTRY_227_e, /* 0xE4 */ dItemNo_NOENTRY_228_e, diff --git a/include/d/d_save.h b/include/d/d_save.h index 0f9eb2c51f..0e9a4b37cd 100644 --- a/include/d/d_save.h +++ b/include/d/d_save.h @@ -15,7 +15,7 @@ static const int MAX_SELECT_ITEM = 4; static const int SELECT_ITEM_NUM = 2; static const int MAX_EQUIPMENT = 6; static const int MAX_EVENTS = 256; -static const int MAX_ITEM_SLOTS = 25; +static const int MAX_ITEM_SLOTS = 24; static const int LIGHT_DROP_STAGE = 4; static const int LETTER_INFO_BIT = 64; static const int MAX_INSECT_NUM = 24; @@ -75,8 +75,7 @@ enum ItemSlots { /* 0x14 */ SLOT_20, /* 0x15 */ SLOT_21, /* 0x16 */ SLOT_22, - /* 0x17 */ SLOT_23, - /* 0x18 */ SLOT_24, + /* 0x17 */ SLOT_23 }; enum CollectItem { @@ -350,8 +349,8 @@ public: static const int BOMB_BAG_MAX = 3; static const int BOTTLE_MAX = 4; - /* 0x00 */ u8 mItems[25]; - /* 0x18 */ u8 mItemSlots[25]; + /* 0x00 */ u8 mItems[24]; + /* 0x18 */ u8 mItemSlots[24]; }; // Size: 0x30 class dSv_player_get_item_c { diff --git a/src/d/actor/d_a_alink.cpp b/src/d/actor/d_a_alink.cpp index 31cd2a8062..602804de22 100644 --- a/src/d/actor/d_a_alink.cpp +++ b/src/d/actor/d_a_alink.cpp @@ -6096,7 +6096,7 @@ void daAlink_c::setItemMatrix(int param_0) { modelCalc(mpKanteraGlowModel); } - if (mEquipItem == dItemNo_LENS_OF_TRUTH_e) { + if (mEquipItem == dItemNo_GHOST_LANTERN_e) { simpleAnmPlay(mpGhostLanternGlowBtk); mDoMtx_stack_c::copy(mpLinkModel->getAnmMtx(mLeftItemJntNo)); @@ -6931,7 +6931,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_LENS_OF_TRUTH_e) { + if (mEquipItem == dItemNo_KANTERA_e || mEquipItem == dItemNo_GHOST_LANTERN_e) { if (i_anmID == ANM_WAIT) { return &kandelaarAnm[0]; } @@ -12073,7 +12073,7 @@ void daAlink_c::itemUnequip(u16 i_itemID, f32 i_playSpeed) { 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_LENS_OF_TRUTH_e || + i_itemID == dItemNo_KANTERA_e || i_itemID == dItemNo_GHOST_LANTERN_e || i_itemID == dItemNo_HOOKSHOT_e || checkBottleItem(i_itemID)) { anm_id = dRes_ID_ALANM_BCK_TAKEL_e; @@ -14163,7 +14163,7 @@ BOOL daAlink_c::setItemModel() { } } - if (mEquipItem == dItemNo_LENS_OF_TRUTH_e) { + if (mEquipItem == dItemNo_GHOST_LANTERN_e) { setGhostLanternModel(); return 1; } @@ -14509,17 +14509,9 @@ enum daAlink_ItemProc { /* 13 */ ITEM_PROC_BOTTLE_SWING, /* 14 */ ITEM_PROC_NOT_USE_ITEM, /* 15 */ ITEM_PROC_GRASS_WHISTLE, - /* 16 */ ITEM_PROC_LENS_OF_TRUTH, + /* 16 */ ITEM_PROC_GHOST_LANTERN, }; -void daAlink_c::procLensOfTruthOn() { - if (!checkWolfEyeUp()) { - onWolfEyeUp(); - } else { - offWolfEyeUp(); - } -} - int daAlink_c::changeItemTriggerKeepProc(u8 i_selItemIdx, int i_procType) { u32 sel_item = dComIfGp_getSelectItem(i_selItemIdx); mSelectItemId = i_selItemIdx; @@ -14543,9 +14535,7 @@ int daAlink_c::changeItemTriggerKeepProc(u8 i_selItemIdx, int i_procType) { procKandelaarPourInit(); } } - else if (i_procType == ITEM_PROC_LENS_OF_TRUTH) { - procLensOfTruthOn(); - } 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(); @@ -14854,7 +14844,7 @@ void daAlink_c::setGhostLanternLight() { f32 lightPower = 0.0f; daE_HP_c* foundPoe = (daE_HP_c*)fopAcM_Search(srchPoe, this); - if (mEquipItem == dItemNo_LENS_OF_TRUTH_e && foundPoe != NULL) { + if (mEquipItem == dItemNo_GHOST_LANTERN_e && foundPoe != NULL) { lightPower = 1.0f; } @@ -18282,7 +18272,7 @@ int daAlink_c::execute() { resetUpperAnime(UPPER_2, 5.0f); } - if ((mEquipItem == dItemNo_KANTERA_e || mEquipItem == dItemNo_LENS_OF_TRUTH_e) && + if ((mEquipItem == dItemNo_KANTERA_e || mEquipItem == dItemNo_GHOST_LANTERN_e) && checkNoUpperAnime() && !checkKandelaarEquipAnime() && (checkModeFlg(MODE_UNK_1000) || mProcID == PROC_CROUCH)) { @@ -18639,7 +18629,7 @@ int daAlink_c::execute() { #endif setEffect(); - if (mEquipItem == dItemNo_LENS_OF_TRUTH_e) { + if (mEquipItem == dItemNo_GHOST_LANTERN_e) { cXyz effscale(0.75f, 0.75f, 0.75f); static u16 particleNmaeDt[2] = { @@ -19358,7 +19348,7 @@ void daAlink_c::shadowDraw() { dComIfGd_addRealShadow(shadowID, mpKanteraModel); } - if (mEquipItem == dItemNo_LENS_OF_TRUTH_e) { + if (mEquipItem == dItemNo_GHOST_LANTERN_e) { dComIfGd_addRealShadow(shadowID, mpGhostLanternModel); } @@ -19522,7 +19512,7 @@ int daAlink_c::draw() { } } - if (mEquipItem == dItemNo_LENS_OF_TRUTH_e) { + if (mEquipItem == dItemNo_GHOST_LANTERN_e) { daE_HP_c* foundPoe = (daE_HP_c*)fopAcM_Search(srchPoe, this); for (s32 i = 0; i < 2; i++) { @@ -19842,7 +19832,7 @@ int daAlink_c::draw() { basicModelDraw(mpKanteraGlowModel); } - if (mEquipItem == dItemNo_LENS_OF_TRUTH_e) { + if (mEquipItem == dItemNo_GHOST_LANTERN_e) { daE_HP_c* foundPoe = (daE_HP_c*)fopAcM_Search(srchPoe, this); modelDraw(mpGhostLanternModel, isPlayerNoDraw); if (foundPoe != NULL) { diff --git a/src/d/actor/d_a_alink_demo.inc b/src/d/actor/d_a_alink_demo.inc index 13ec1f2136..c90e6c14d0 100644 --- a/src/d/actor/d_a_alink_demo.inc +++ b/src/d/actor/d_a_alink_demo.inc @@ -2183,7 +2183,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_LENS_OF_TRUTH_e */ SETYPE_NONE, + /* dItemNo_GHOST_LANTERN_e */ SETYPE_ITEM_GET, /* dItemNo_NOENTRY_226_e */ SETYPE_NONE, /* dItemNo_NOENTRY_227_e */ SETYPE_NONE, /* dItemNo_NOENTRY_228_e */ SETYPE_NONE, diff --git a/src/d/d_item.cpp b/src/d/d_item.cpp index 7993760af6..d2b2c3f366 100644 --- a/src/d/d_item.cpp +++ b/src/d/d_item.cpp @@ -236,7 +236,7 @@ static void (*item_func_ptr[256])() = { item_func_noentry, item_func_noentry, item_func_POU_SPIRIT, - item_func_LENS_OF_TRUTH, + item_func_GHOST_LANTERN, 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_LENS_OF_TRUTH, + item_getcheck_func_GHOST_LANTERN, item_getcheck_func_noentry, item_getcheck_func_noentry, item_getcheck_func_noentry, @@ -791,8 +791,8 @@ void item_func_IRONBALL() { dComIfGs_setItem(SLOT_6, dItemNo_IRONBALL_e); } -void item_func_LENS_OF_TRUTH() { - dComIfGs_setItem(SLOT_24, dItemNo_LENS_OF_TRUTH_e); +void item_func_GHOST_LANTERN() { + dComIfGs_setItem(SLOT_7, dItemNo_GHOST_LANTERN_e); } void item_func_BOW() { @@ -1457,8 +1457,8 @@ int item_getcheck_func_IRONBALL() { return dComIfGs_getItem(SLOT_6, true) == dItemNo_IRONBALL_e ? TRUE : FALSE; } -int item_getcheck_func_LENS_OF_TRUTH() { - return dComIfGs_getItem(SLOT_24, true) == dItemNo_LENS_OF_TRUTH_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() { diff --git a/src/d/d_save.cpp b/src/d/d_save.cpp index 0708c59716..cdb0030a5c 100644 --- a/src/d/d_save.cpp +++ b/src/d/d_save.cpp @@ -434,14 +434,14 @@ 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] = { 10, 8, 6, 2, 9, 4, 3, - 0, 1, 23, 20, 5, 15, 16, - 17, 11, 12, 13, 14, 19, 18, - 22, 21, 24 + 0, 1, 7, 23, 20, 5, 15, + 16, 17, 11, 12, 13, 14, 19, + 18, 22, 21 }; int slot_idx = 0; - for (int i = 0; i < 25; i++) { + for (int i = 0; i < 24; i++) { mItemSlots[i] = dItemNo_NONE_e; } diff --git a/src/dusk/imgui/ImGuiSaveEditor.cpp b/src/dusk/imgui/ImGuiSaveEditor.cpp index 641bcffe7a..195651c6c8 100644 --- a/src/dusk/imgui/ImGuiSaveEditor.cpp +++ b/src/dusk/imgui/ImGuiSaveEditor.cpp @@ -251,7 +251,7 @@ namespace dusk { { dItemNo_NOENTRY_222_e, {"Reserved"} }, { dItemNo_NOENTRY_223_e, {"Reserved"} }, { dItemNo_POU_SPIRIT_e, {"Poe Soul"} }, - { dItemNo_LENS_OF_TRUTH_e, {"Lens of Truth", ITEMTYPE_EQUIP_e} }, + { dItemNo_GHOST_LANTERN_e, {"Ghost Lantern", ITEMTYPE_EQUIP_e} }, { dItemNo_NOENTRY_226_e, {"Reserved"} }, { dItemNo_NOENTRY_227_e, {"Reserved"} }, { dItemNo_NOENTRY_228_e, {"Reserved"} }, @@ -393,6 +393,7 @@ 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 }, @@ -408,7 +409,6 @@ namespace dusk { { SLOT_21, dItemNo_HORSE_FLUTE_e }, { SLOT_22, dItemNo_ANCIENT_DOCUMENT_e }, { SLOT_23, dItemNo_PACHINKO_e }, - { SLOT_24, dItemNo_LENS_OF_TRUTH_e}, }; ImGuiSaveEditor::ImGuiSaveEditor() {} @@ -534,7 +534,7 @@ namespace dusk { selectItemData = 0xFF; } - for (int i = 0; i < 25; i++) { + for (int i = 0; i < 24; i++) { u8 itemNo = item.mItems[i]; if (ImGui::Selectable(fmt::format("Slot {0} ({1})", i, itemMap.find(itemNo)->second.m_name).c_str())) { selectItemData = i; @@ -821,19 +821,19 @@ namespace dusk { if (ImGui::TreeNode("Item Wheel")) { if (ImGui::Button("Default All##inv_default_all")) { - for (int slot = 0; slot < 25; slot++) { + for (int slot = 0; slot < 24; slot++) { dComIfGs_setItem(slot, getSlotDefault(slot)); } } ImGui::SameLine(); if (ImGui::Button("Clear All##inv_clear_all")) { - for (int slot = 0; slot < 25; slot++) { + for (int slot = 0; slot < 24; slot++) { dComIfGs_setItem(slot, dItemNo_NONE_e); } } ImGuiBeginGroupPanel("Items", { 200, 100 }); - for (int slot = 0; slot < 25; slot++) { + for (int slot = 0; slot < 24; slot++) { ImGui::Text("Slot %02d (%s): ", slot, itemMap.find(getSlotDefault(slot))->second.m_name.c_str()); ImGui::SameLine(240.0f); if (ImGui::BeginCombo(fmt::format("##ItemComboBox{}", slot).c_str(), itemMap.find(item.mItems[slot])->second.m_name.c_str())) { diff --git a/src/dusk/ui/editor.cpp b/src/dusk/ui/editor.cpp index 09216a3b8a..e50893546f 100644 --- a/src/dusk/ui/editor.cpp +++ b/src/dusk/ui/editor.cpp @@ -451,7 +451,7 @@ std::map itemMap = { {dItemNo_NOENTRY_222_e, {"Reserved"}}, {dItemNo_NOENTRY_223_e, {"Reserved"}}, {dItemNo_POU_SPIRIT_e, {"Poe Soul"}}, - {dItemNo_NOENTRY_225_e, {"Reserved"}}, + {dItemNo_GHOST_LANTERN_e, {"Reserved"}}, {dItemNo_NOENTRY_226_e, {"Reserved"}}, {dItemNo_NOENTRY_227_e, {"Reserved"}}, {dItemNo_NOENTRY_228_e, {"Reserved"}}, diff --git a/src/f_ap/f_ap_game.cpp b/src/f_ap/f_ap_game.cpp index 68d244ef72..8317d09490 100644 --- a/src/f_ap/f_ap_game.cpp +++ b/src/f_ap/f_ap_game.cpp @@ -28,6 +28,8 @@ #include "tracy/Tracy.hpp" #include #include +#include +#include #endif fapGm_HIO_c::fapGm_HIO_c() { @@ -743,6 +745,13 @@ static void duskExecute() { handleGamepadColor(); updateAutoSave(); + if (daNpcT_chkEvtBit(0x2B6)) { + execItemGet(dItemNo_GHOST_LANTERN_e); + } else { + dComIfGs_offItemFirstBit(dItemNo_GHOST_LANTERN_e); + dComIfGp_setItem(SLOT_7, dItemNo_NONE_e); + } + if (dusk::getSettings().game.recordingMode) { Z2GetSeqMgr()->bgmAllMute(0, 0); }