Browse Source

Add struct for CornerStone

pull/876/head
Anders Jenbo 6 years ago
parent
commit
30f4f1d71b
  1. 4
      Source/drlg_l1.cpp
  2. 6
      Source/gamemenu.cpp
  3. 62
      Source/inv.cpp
  4. 19
      Source/items.cpp
  5. 5
      Source/items.h
  6. 9
      structs.h

4
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;
}
}
}

6
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

62
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;

19
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++;
}
}

5
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];

9
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
//////////////////////////////////////////////////

Loading…
Cancel
Save