From 30f4f1d71b10766f8a47c59d8262624c0f5b329c Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Fri, 10 Apr 2020 09:47:39 +0200 Subject: [PATCH] Add struct for CornerStone --- Source/drlg_l1.cpp | 4 +-- Source/gamemenu.cpp | 6 ++--- Source/inv.cpp | 62 ++++++++++++++++++++++----------------------- Source/items.cpp | 19 ++++++-------- Source/items.h | 5 +--- structs.h | 9 +++++++ 6 files changed, 54 insertions(+), 51 deletions(-) diff --git a/Source/drlg_l1.cpp b/Source/drlg_l1.cpp index 39c5c2d2b..66cda9c7b 100644 --- a/Source/drlg_l1.cpp +++ b/Source/drlg_l1.cpp @@ -2648,8 +2648,8 @@ void CreateL5Dungeon(DWORD rseed, int entry) } if ( dPiece[i][j] == 317 ) { - RowOfCornerStone = i; - ColOfCornerStone = j; + CornerStone.x = i; + CornerStone.y = j; } } } diff --git a/Source/gamemenu.cpp b/Source/gamemenu.cpp index ae9065230..f2f462d49 100644 --- a/Source/gamemenu.cpp +++ b/Source/gamemenu.cpp @@ -134,7 +134,7 @@ void gamemenu_new_game(BOOL bActivate) force_redraw = 255; scrollrt_draw_game_screen(TRUE); #ifdef HELLFIRE - dword_691CB0 = 0; + CornerStone.activated = FALSE; #endif gbRunGame = FALSE; gamemenu_off(); @@ -157,7 +157,7 @@ void gamemenu_load_game(BOOL bActivate) LoadGame(FALSE); ClrDiabloMsg(); #ifdef HELLFIRE - dword_691CB0 = 0; + CornerStone.activated = FALSE; #endif PaletteFadeOut(8); deathflag = FALSE; @@ -191,7 +191,7 @@ void gamemenu_save_game(BOOL bActivate) force_redraw = 255; SetCursor_(CURSOR_HAND); #ifdef HELLFIRE - if (dword_691CB0 != 0) { + if (CornerStone.activated) { items_427A72(); } #endif diff --git a/Source/inv.cpp b/Source/inv.cpp index d3753cd4a..e6e7befdb 100644 --- a/Source/inv.cpp +++ b/Source/inv.cpp @@ -2029,15 +2029,15 @@ void InvGetItem(int pnum, int ii) #endif dItem[item[ii]._ix][item[ii]._iy] = 0; #ifdef HELLFIRE - if (currlevel == 21 && item[ii]._ix == RowOfCornerStone && item[ii]._iy == ColOfCornerStone) { - CornerItemMaybe.IDidx = -1; - CornerItemMaybe._itype = ITYPE_MISC; - CornerItemMaybe._iSelFlag = FALSE; - CornerItemMaybe._ix = 0; - CornerItemMaybe._iy = 0; - CornerItemMaybe._iAnimFlag = FALSE; - CornerItemMaybe._iIdentified = FALSE; - CornerItemMaybe._iPostDraw = FALSE; + if (currlevel == 21 && item[ii]._ix == CornerStone.x && item[ii]._iy == CornerStone.y) { + CornerStone.item.IDidx = -1; + CornerStone.item._itype = ITYPE_MISC; + CornerStone.item._iSelFlag = FALSE; + CornerStone.item._ix = 0; + CornerStone.item._iy = 0; + CornerStone.item._iAnimFlag = FALSE; + CornerStone.item._iIdentified = FALSE; + CornerStone.item._iPostDraw = FALSE; } #endif i = 0; @@ -2175,15 +2175,15 @@ void AutoGetItem(int pnum, int ii) if (done) { dItem[item[ii]._ix][item[ii]._iy] = 0; #ifdef HELLFIRE - if (currlevel == 21 && item[ii]._ix == RowOfCornerStone && item[ii]._iy == ColOfCornerStone) { - CornerItemMaybe.IDidx = -1; - CornerItemMaybe._itype = ITYPE_MISC; - CornerItemMaybe._iSelFlag = FALSE; - CornerItemMaybe._ix = 0; - CornerItemMaybe._iy = 0; - CornerItemMaybe._iAnimFlag = FALSE; - CornerItemMaybe._iIdentified = FALSE; - CornerItemMaybe._iPostDraw = FALSE; + if (currlevel == 21 && item[ii]._ix == CornerStone.x && item[ii]._iy == CornerStone.y) { + CornerStone.item.IDidx = -1; + CornerStone.item._itype = ITYPE_MISC; + CornerStone.item._iSelFlag = FALSE; + CornerStone.item._ix = 0; + CornerStone.item._iy = 0; + CornerStone.item._iAnimFlag = FALSE; + CornerStone.item._iIdentified = FALSE; + CornerStone.item._iPostDraw = FALSE; } #endif i = 0; @@ -2267,15 +2267,15 @@ void SyncGetItem(int x, int y, int idx, WORD ci, int iseed) if (ii != -1) { dItem[item[ii]._ix][item[ii]._iy] = 0; #ifdef HELLFIRE - if (currlevel == 21 && item[ii]._ix == RowOfCornerStone && item[ii]._iy == ColOfCornerStone) { - CornerItemMaybe.IDidx = -1; - CornerItemMaybe._itype = ITYPE_MISC; - CornerItemMaybe._iSelFlag = FALSE; - CornerItemMaybe._ix = 0; - CornerItemMaybe._iy = 0; - CornerItemMaybe._iAnimFlag = FALSE; - CornerItemMaybe._iIdentified = FALSE; - CornerItemMaybe._iPostDraw = FALSE; + if (currlevel == 21 && item[ii]._ix == CornerStone.x && item[ii]._iy == CornerStone.y) { + CornerStone.item.IDidx = -1; + CornerStone.item._itype = ITYPE_MISC; + CornerStone.item._iSelFlag = FALSE; + CornerStone.item._ix = 0; + CornerStone.item._iy = 0; + CornerStone.item._iAnimFlag = FALSE; + CornerStone.item._iIdentified = FALSE; + CornerStone.item._iPostDraw = FALSE; } #endif i = 0; @@ -2459,8 +2459,8 @@ int InvPutItem(int pnum, int x, int y) RespawnItem(ii, TRUE); numitems++; #ifdef HELLFIRE - if (currlevel == 21 && x == RowOfCornerStone && y == ColOfCornerStone) { - CornerItemMaybe = item[ii]; + if (currlevel == 21 && x == CornerStone.x && y == CornerStone.y) { + CornerStone.item = item[ii]; InitQTextMsg(296); quests[Q_CORNSTN]._qlog = 0; quests[Q_CORNSTN]._qactive = 3; @@ -2559,8 +2559,8 @@ int SyncPutItem(int pnum, int x, int y, int idx, WORD icreateinfo, int iseed, in RespawnItem(ii, TRUE); numitems++; #ifdef HELLFIRE - if (currlevel == 21 && x == RowOfCornerStone && y == ColOfCornerStone) { - CornerItemMaybe = item[ii]; + if (currlevel == 21 && x == CornerStone.x && y == CornerStone.y) { + CornerStone.item = item[ii]; InitQTextMsg(296); quests[Q_CORNSTN]._qlog = 0; quests[Q_CORNSTN]._qactive = 3; diff --git a/Source/items.cpp b/Source/items.cpp index 666d2bf32..a03d52a87 100644 --- a/Source/items.cpp +++ b/Source/items.cpp @@ -16,10 +16,7 @@ ItemGetRecordStruct itemrecord[MAXITEMS]; ItemStruct item[MAXITEMS + 1]; BOOL itemhold[3][3]; #ifdef HELLFIRE -int RowOfCornerStone; -int ColOfCornerStone; -int dword_691CB0; -ItemStruct CornerItemMaybe; +CornerStoneStruct CornerStone; #endif BYTE *itemanims[ITEMTYPES]; BOOL UniqueItemFlag[128]; @@ -3055,9 +3052,9 @@ void RecreateEar(int ii, WORD ic, int iseed, int Id, int dur, int mdur, int ch, void items_427A72() { PkItemStruct id; - if (dword_691CB0) { - if (CornerItemMaybe.IDidx >= 0) { - PackItem(&id, &CornerItemMaybe); + if (CornerStone.activated) { + if (CornerStone.item.IDidx >= 0) { + PackItem(&id, &CornerStone.item); SRegSaveData(APP_NAME, off_4A5AC4, 0, (BYTE *)&id, 19); } else { SRegSaveData(APP_NAME, off_4A5AC4, 0, (BYTE *)"", 1); @@ -3071,12 +3068,12 @@ void items_427ABA(int x, int y) DWORD dwSize; PkItemStruct PkSItem; - if (dword_691CB0 || x == 0 || y == 0) { + if (CornerStone.activated || x == 0 || y == 0) { return; } - CornerItemMaybe.IDidx = 0; - dword_691CB0 = 1; + CornerStone.item.IDidx = 0; + CornerStone.activated = TRUE; if (dItem[x][y]) { ii = dItem[x][y] - 1; for (i = 0; i < numitems; i++) { @@ -3098,7 +3095,7 @@ void items_427ABA(int x, int y) item[ii]._ix = x; item[ii]._iy = y; RespawnItem(ii, FALSE); - CornerItemMaybe = item[ii]; + CornerStone.item = item[ii]; numitems++; } } diff --git a/Source/items.h b/Source/items.h index 7af2b460a..a9a2445b6 100644 --- a/Source/items.h +++ b/Source/items.h @@ -14,10 +14,7 @@ extern ItemGetRecordStruct itemrecord[MAXITEMS]; extern ItemStruct item[MAXITEMS + 1]; extern BOOL itemhold[3][3]; #ifdef HELLFIRE -extern int RowOfCornerStone; -extern int ColOfCornerStone; -extern int dword_691CB0; -extern ItemStruct CornerItemMaybe; +CornerStoneStruct CornerStone; #endif extern BYTE *itemanims[ITEMTYPES]; extern BOOL UniqueItemFlag[128]; diff --git a/structs.h b/structs.h index da98934e4..8ce4c429d 100644 --- a/structs.h +++ b/structs.h @@ -1054,6 +1054,15 @@ typedef struct QuestData { char *_qlstr; } QuestData; +#ifdef HELLFIRE +typedef struct CornerStoneStruct { + int x; + int y; + BOOL activated; + ItemStruct item; +} CornerStoneStruct; +#endif + ////////////////////////////////////////////////// // gamemenu/gmenu //////////////////////////////////////////////////