mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-05-24 15:00:55 -04:00
don't change save file length and use unused slot for ghost lantern
This commit is contained in:
@@ -2386,7 +2386,6 @@ public:
|
||||
void setGroundFishingRodActor();
|
||||
int procFishingCastInit();
|
||||
int procFishingCast();
|
||||
void procLensOfTruthOn();
|
||||
int procFishingFoodInit();
|
||||
int procFishingFood();
|
||||
f32 getCrawlMoveAnmSpeed();
|
||||
|
||||
+2
-2
@@ -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();
|
||||
|
||||
@@ -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,
|
||||
|
||||
+4
-5
@@ -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 {
|
||||
|
||||
+12
-22
@@ -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) {
|
||||
|
||||
@@ -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,
|
||||
|
||||
+6
-6
@@ -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() {
|
||||
|
||||
+4
-4
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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())) {
|
||||
|
||||
@@ -451,7 +451,7 @@ std::map<int, itemInfo> 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"}},
|
||||
|
||||
@@ -28,6 +28,8 @@
|
||||
#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,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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user