Browse Source

Clean up PM_DoDeath (#317)

* Clean up PM_DoDeath

* Add enum for dFlags
pull/4/head
Anders Jenbo 8 years ago committed by Robin Eklind
parent
commit
7da6f4d08a
  1. 2
      Source/automap.cpp
  2. 32
      Source/cursor.cpp
  3. 4
      Source/debug.cpp
  4. 4
      Source/diablo.cpp
  5. 8
      Source/drlg_l2.cpp
  6. 2
      Source/drlg_l3.cpp
  7. 6
      Source/drlg_l4.cpp
  8. 12
      Source/gendung.cpp
  9. 2
      Source/items.cpp
  10. 14
      Source/lighting.cpp
  11. 4
      Source/loadsave.cpp
  12. 8
      Source/missiles.cpp
  13. 51
      Source/monster.cpp
  14. 2
      Source/msg.cpp
  15. 2
      Source/multi.cpp
  16. 6
      Source/objects.cpp
  17. 65
      Source/player.cpp
  18. 2
      Source/portal.cpp
  19. 52
      Source/scrollrt.cpp
  20. 4
      Source/themes.cpp
  21. 24
      Source/town.cpp
  22. 2
      Source/trigs.cpp
  23. 12
      enums.h

2
Source/automap.cpp

@ -111,7 +111,7 @@ void __cdecl InitAutomap()
v15 = 112; v15 = 112;
do do
{ {
*v14 &= 0x7Fu; *v14 &= ~DFLAG_EXPLORED;
v14 += 112; v14 += 112;
--v15; --v15;
} }

32
Source/cursor.cpp

@ -843,7 +843,7 @@ LABEL_223:
pcursplr = v52; pcursplr = v52;
} }
} }
if ( dFlags[0][v27 + v8] & 4 ) if ( dFlags[0][v27 + v8] & DFLAG_DEAD_PLAYER )
{ {
v53 = 0; v53 = 0;
v54 = &plr[0].WorldY; v54 = &plr[0].WorldY;
@ -870,7 +870,7 @@ LABEL_223:
v55 = v8 - 1; v55 = v8 - 1;
do do
{ {
if ( v77[v80] & 4 ) if ( v77[v80] & DFLAG_DEAD_PLAYER )
{ {
v82 = 0; v82 = 0;
v56 = &plr[0].WorldY; v56 = &plr[0].WorldY;
@ -1047,7 +1047,7 @@ LABEL_296:
v15 = dMonster[1][v14 + 2]; v15 = dMonster[1][v14 + 2];
if ( !v15 ) if ( !v15 )
goto LABEL_74; goto LABEL_74;
v16 = (dFlags[1][v12 + 2] & 0x40) == 0; v16 = (dFlags[1][v12 + 2] & DFLAG_LIT) == 0;
} }
else else
{ {
@ -1055,7 +1055,7 @@ LABEL_296:
v15 = dMonster[2][v14 + 1]; v15 = dMonster[2][v14 + 1];
if ( !v15 ) if ( !v15 )
goto LABEL_74; goto LABEL_74;
v16 = (dFlags[2][v12 + 1] & 0x40) == 0; v16 = (dFlags[2][v12 + 1] & DFLAG_LIT) == 0;
} }
if ( !v16 ) if ( !v16 )
{ {
@ -1072,7 +1072,7 @@ LABEL_296:
} }
LABEL_74: LABEL_74:
v18 = dMonster[2][v14 + 2]; v18 = dMonster[2][v14 + 2];
if ( v18 && dFlags[2][v81 + 2] & 0x40 ) if ( v18 && dFlags[2][v81 + 2] & DFLAG_LIT )
{ {
v19 = v18 <= 0 ? -1 - v18 : v18 - 1; v19 = v18 <= 0 ? -1 - v18 : v18 - 1;
if ( v19 == dword_4B8CCC if ( v19 == dword_4B8CCC
@ -1088,7 +1088,7 @@ LABEL_74:
if ( v83 ) if ( v83 )
{ {
v22 = dMonster[0][v14 + 1]; v22 = dMonster[0][v14 + 1];
if ( v22 && dFlags[0][v81 + 1] & 0x40 ) if ( v22 && dFlags[0][v81 + 1] & DFLAG_LIT )
{ {
v21 = v22 <= 0 ? -1 - v22 : v22 - 1; v21 = v22 <= 0 ? -1 - v22 : v22 - 1;
if ( v21 == dword_4B8CCC if ( v21 == dword_4B8CCC
@ -1104,7 +1104,7 @@ LABEL_74:
else else
{ {
v20 = dMonster[1][v14]; v20 = dMonster[1][v14];
if ( v20 && dFlags[1][v81] & 0x40 ) if ( v20 && dFlags[1][v81] & DFLAG_LIT )
{ {
v21 = v20 <= 0 ? -1 - v20 : v20 - 1; v21 = v20 <= 0 ? -1 - v20 : v20 - 1;
if ( v21 == dword_4B8CCC if ( v21 == dword_4B8CCC
@ -1122,7 +1122,7 @@ LABEL_102:
} }
LABEL_103: LABEL_103:
v23 = dMonster[0][v14]; v23 = dMonster[0][v14];
if ( v23 && dFlags[0][v81] & 0x40 ) if ( v23 && dFlags[0][v81] & DFLAG_LIT )
{ {
v24 = v23 <= 0 ? -1 - v23 : v23 - 1; v24 = v23 <= 0 ? -1 - v23 : v23 - 1;
if ( v24 == dword_4B8CCC if ( v24 == dword_4B8CCC
@ -1136,7 +1136,7 @@ LABEL_103:
} }
} }
v25 = dMonster[1][v14 + 1]; v25 = dMonster[1][v14 + 1];
if ( v25 && dFlags[1][v81 + 1] & 0x40 ) if ( v25 && dFlags[1][v81 + 1] & DFLAG_LIT )
{ {
v26 = v25 <= 0 ? -1 - v25 : v25 - 1; v26 = v25 <= 0 ? -1 - v25 : v25 - 1;
if ( v26 == dword_4B8CCC if ( v26 == dword_4B8CCC
@ -1174,7 +1174,7 @@ LABEL_128:
{ {
v28 = v27 + v8; v28 = v27 + v8;
v32 = dMonster[1][v28 + 2]; v32 = dMonster[1][v28 + 2];
if ( v32 && dFlags[1][v27 + 2 + v8] & 0x40 ) if ( v32 && dFlags[1][v27 + 2 + v8] & DFLAG_LIT )
{ {
v30 = v32 <= 0 ? -1 - v32 : v32 - 1; v30 = v32 <= 0 ? -1 - v32 : v32 - 1;
if ( (signed int)(monster[v30]._mhitpoints & 0xFFFFFFC0) > 0 && monster[v30].MData->mSelFlag & 4 ) if ( (signed int)(monster[v30]._mhitpoints & 0xFFFFFFC0) > 0 && monster[v30].MData->mSelFlag & 4 )
@ -1189,7 +1189,7 @@ LABEL_128:
{ {
v28 = v27 + v8; v28 = v27 + v8;
v29 = dMonster[2][v28 + 1]; v29 = dMonster[2][v28 + 1];
if ( v29 && dFlags[2][v27 + 1 + v8] & 0x40 ) if ( v29 && dFlags[2][v27 + 1 + v8] & DFLAG_LIT )
{ {
v30 = v29 <= 0 ? -1 - v29 : v29 - 1; v30 = v29 <= 0 ? -1 - v29 : v29 - 1;
if ( (signed int)(monster[v30]._mhitpoints & 0xFFFFFFC0) > 0 && monster[v30].MData->mSelFlag & 4 ) if ( (signed int)(monster[v30]._mhitpoints & 0xFFFFFFC0) > 0 && monster[v30].MData->mSelFlag & 4 )
@ -1205,7 +1205,7 @@ LABEL_145:
} }
LABEL_146: LABEL_146:
v33 = dMonster[2][v28 + 2]; v33 = dMonster[2][v28 + 2];
if ( v33 && dFlags[2][v27 + 2 + v8] & 0x40 ) if ( v33 && dFlags[2][v27 + 2 + v8] & DFLAG_LIT )
{ {
v34 = v33 <= 0 ? -1 - v33 : v33 - 1; v34 = v33 <= 0 ? -1 - v33 : v33 - 1;
if ( (signed int)(monster[v34]._mhitpoints & 0xFFFFFFC0) > 0 && monster[v34].MData->mSelFlag & 4 ) if ( (signed int)(monster[v34]._mhitpoints & 0xFFFFFFC0) > 0 && monster[v34].MData->mSelFlag & 4 )
@ -1218,7 +1218,7 @@ LABEL_146:
if ( v83 ) if ( v83 )
{ {
v37 = dMonster[0][v28 + 1]; v37 = dMonster[0][v28 + 1];
if ( v37 && dFlags[0][v27 + 1 + v8] & 0x40 ) if ( v37 && dFlags[0][v27 + 1 + v8] & DFLAG_LIT )
{ {
v36 = v37 <= 0 ? -1 - v37 : v37 - 1; v36 = v37 <= 0 ? -1 - v37 : v37 - 1;
if ( (signed int)(monster[v36]._mhitpoints & 0xFFFFFFC0) > 0 && monster[v36].MData->mSelFlag & 2 ) if ( (signed int)(monster[v36]._mhitpoints & 0xFFFFFFC0) > 0 && monster[v36].MData->mSelFlag & 2 )
@ -1232,7 +1232,7 @@ LABEL_146:
else else
{ {
v35 = dMonster[1][v28]; v35 = dMonster[1][v28];
if ( v35 && dFlags[1][v27 + v8] & 0x40 ) if ( v35 && dFlags[1][v27 + v8] & DFLAG_LIT )
{ {
v36 = v35 <= 0 ? -1 - v35 : v35 - 1; v36 = v35 <= 0 ? -1 - v35 : v35 - 1;
if ( (signed int)(monster[v36]._mhitpoints & 0xFFFFFFC0) > 0 && monster[v36].MData->mSelFlag & 2 ) if ( (signed int)(monster[v36]._mhitpoints & 0xFFFFFFC0) > 0 && monster[v36].MData->mSelFlag & 2 )
@ -1247,7 +1247,7 @@ LABEL_171:
} }
LABEL_172: LABEL_172:
v38 = dMonster[0][v28]; v38 = dMonster[0][v28];
if ( v38 && dFlags[0][v27 + v8] & 0x40 ) if ( v38 && dFlags[0][v27 + v8] & DFLAG_LIT )
{ {
v39 = v38 <= 0 ? -1 - v38 : v38 - 1; v39 = v38 <= 0 ? -1 - v38 : v38 - 1;
if ( (signed int)(monster[v39]._mhitpoints & 0xFFFFFFC0) > 0 && monster[v39].MData->mSelFlag & 1 ) if ( (signed int)(monster[v39]._mhitpoints & 0xFFFFFFC0) > 0 && monster[v39].MData->mSelFlag & 1 )
@ -1258,7 +1258,7 @@ LABEL_172:
} }
} }
v40 = dMonster[1][v28 + 1]; v40 = dMonster[1][v28 + 1];
if ( v40 && dFlags[1][v27 + 1 + v8] & 0x40 ) if ( v40 && dFlags[1][v27 + 1 + v8] & DFLAG_LIT )
{ {
v41 = v40 <= 0 ? -1 - v40 : v40 - 1; v41 = v40 <= 0 ? -1 - v40 : v40 - 1;
if ( (signed int)(monster[v41]._mhitpoints & 0xFFFFFFC0) > 0 && monster[v41].MData->mSelFlag & 2 ) if ( (signed int)(monster[v41]._mhitpoints & 0xFFFFFFC0) > 0 && monster[v41].MData->mSelFlag & 2 )

4
Source/debug.cpp

@ -36,8 +36,8 @@ void __cdecl CheckDungeonClear()
if ( dPlayer[i][j] ) if ( dPlayer[i][j] )
TermMsg("Players not cleared"); TermMsg("Players not cleared");
dMonsDbg[currlevel][i][j] = dFlags[i][j] & 2; dMonsDbg[currlevel][i][j] = dFlags[i][j] & DFLAG_VISIBLE;
dFlagDbg[currlevel][i][j] = dFlags[i][j] & 8; dFlagDbg[currlevel][i][j] = dFlags[i][j] & DFLAG_POPULATED;
} }
} }
} }

4
Source/diablo.cpp

@ -2047,7 +2047,7 @@ LABEL_55:
for(i = 0; i < 112; i++) for(i = 0; i < 112; i++)
{ {
for(j = 0; j < 112; j++) for(j = 0; j < 112; j++)
dFlags[i][j] |= 0x40; dFlags[i][j] |= DFLAG_LIT;
} }
InitTowners(); InitTowners();
@ -2113,7 +2113,7 @@ LABEL_72:
if ( plr[i].plractive && plr[i].plrlevel == currlevel && (!plr[i]._pLvlChanging || i == myplr) ) if ( plr[i].plractive && plr[i].plrlevel == currlevel && (!plr[i]._pLvlChanging || i == myplr) )
{ {
if ( plr[i]._pHitPoints <= 0 ) if ( plr[i]._pHitPoints <= 0 )
dFlags[plr[i].WorldX][plr[i].WorldY] |= 4; dFlags[plr[i].WorldX][plr[i].WorldY] |= DFLAG_DEAD_PLAYER;
else if ( gbMaxPlayers == 1 ) else if ( gbMaxPlayers == 1 )
dPlayer[plr[i].WorldX][plr[i].WorldY] = i + 1; dPlayer[plr[i].WorldX][plr[i].WorldY] = i + 1;
else else

8
Source/drlg_l2.cpp

@ -468,7 +468,7 @@ void __fastcall LoadL2Dungeon(char *sFileName, int vx, int vy)
v14 = *v12; v14 = *v12;
if ( *v12 ) if ( *v12 )
{ {
dflags[0][v13] |= 0x80u; dflags[0][v13] |= DFLAG_EXPLORED;
dungeon[0][v13] = v14; dungeon[0][v13] = v14;
} }
else else
@ -717,7 +717,7 @@ void __fastcall LoadPreL2Dungeon(char *sFileName, int vx, int vy)
v12 = *v10; v12 = *v10;
if ( *v10 ) if ( *v10 )
{ {
dflags[0][v11] |= 0x80u; dflags[0][v11] |= DFLAG_EXPLORED;
dungeon[0][v11] = v12; dungeon[0][v11] = v12;
} }
else else
@ -1582,7 +1582,7 @@ void __fastcall DRLG_L2SetRoom(int rx1, int ry1)
v5 = *v7; v5 = *v7;
if ( *v7 ) if ( *v7 )
{ {
dflags[0][v4] |= 0x80u; dflags[0][v4] |= DFLAG_EXPLORED;
dungeon[0][v4] = v5; dungeon[0][v4] = v5;
} }
else else
@ -2014,7 +2014,7 @@ void __fastcall DefineRoom(int nX1, int nY1, int nX2, int nY2, int ForceHW)
i = nY2; i = nY2;
do do
{ {
*ForceHWa |= 0x80u; *ForceHWa |= DFLAG_EXPLORED;
v9 = v14-- == 1; v9 = v14-- == 1;
ForceHWa += 40; ForceHWa += 40;
} }

2
Source/drlg_l3.cpp

@ -267,7 +267,7 @@ int __cdecl DRLG_L3Anvil()
v11 = L3ANVIL[v7]; v11 = L3ANVIL[v7];
if ( v11 ) if ( v11 )
dungeon[0][v9] = v11; dungeon[0][v9] = v11;
dflags[0][v9] |= 0x80u; dflags[0][v9] |= DFLAG_EXPLORED;
++v7; ++v7;
v9 += 40; v9 += 40;
--v10; --v10;

6
Source/drlg_l4.cpp

@ -352,7 +352,7 @@ void __fastcall DRLG_L4SetSPRoom(int rx1, int ry1)
v5 = *v7; v5 = *v7;
if ( *v7 ) if ( *v7 )
{ {
dflags[0][v4] |= 0x80u; dflags[0][v4] |= DFLAG_EXPLORED;
dungeon[0][v4] = v5; dungeon[0][v4] = v5;
} }
else else
@ -451,7 +451,7 @@ void __fastcall DRLG_L4SetRoom(unsigned char *pSetPiece, int rx1, int ry1)
v7 = *v5; v7 = *v5;
if ( *v5 ) if ( *v5 )
{ {
dflags[0][v6] |= 0x80u; dflags[0][v6] |= DFLAG_EXPLORED;
dungeon[0][v6] = v7; dungeon[0][v6] = v7;
} }
else else
@ -2963,7 +2963,7 @@ bool __fastcall DRLG_L4PlaceMiniSet(const unsigned char *miniset, int tmin, int
v21 = v23[j]; v21 = v23[j];
if ( v21 ) if ( v21 )
{ {
dflags[0][v20] |= 8u; dflags[0][v20] |= DFLAG_POPULATED;
dungeon[0][v20] = v21; dungeon[0][v20] = v21;
} }
++j; ++j;

12
Source/gendung.cpp

@ -834,7 +834,7 @@ void __cdecl DRLG_SetPC()
v6 = &dFlags[v3][v0 + i]; v6 = &dFlags[v3][v0 + i];
do do
{ {
*v6 |= 8u; *v6 |= DFLAG_POPULATED;
v6 += 112; v6 += 112;
--v5; --v5;
} }
@ -867,7 +867,7 @@ void __fastcall Make_SetPC(int x, int y, int w, int h)
v9 = &dFlags[v6][wa + i]; v9 = &dFlags[v6][wa + i];
do do
{ {
*v9 |= 8u; *v9 |= DFLAG_POPULATED;
v9 += 112; v9 += 112;
--v8; --v8;
} }
@ -1379,10 +1379,10 @@ void __cdecl DRLG_HoldThemeRooms()
{ {
v6 = v3 + v4; v6 = v3 + v4;
v4 += 224; v4 += 224;
dFlags[0][v6] |= 8u; dFlags[0][v6] |= DFLAG_POPULATED;
dFlags[1][v6] |= 8u; dFlags[1][v6] |= DFLAG_POPULATED;
dFlags[0][v6 + 1] |= 8u; dFlags[0][v6 + 1] |= DFLAG_POPULATED;
dFlags[1][v6 + 1] |= 8u; dFlags[1][v6 + 1] |= DFLAG_POPULATED;
--v5; --v5;
} }
while ( v5 ); while ( v5 );

2
Source/items.cpp

@ -658,7 +658,7 @@ bool __fastcall ItemPlace(int xp, int yp)
v2 = xp; v2 = xp;
v3 = v2 * 112 + yp; v3 = v2 * 112 + yp;
if ( dMonster[0][v3] || dPlayer[v2][yp] || dItem[v2][yp] || dObject[v2][yp] || dFlags[v2][yp] & 8 ) if ( dMonster[0][v3] || dPlayer[v2][yp] || dItem[v2][yp] || dObject[v2][yp] || dFlags[v2][yp] & DFLAG_POPULATED )
result = 0; result = 0;
else else
result = nSolidTable[dPiece[0][v3]] == 0; result = nSolidTable[dPiece[0][v3]] == 0;

14
Source/lighting.cpp

@ -835,7 +835,7 @@ void __fastcall DoUnVision(int nXPos, int nYPos, int nRadius)
do do
{ {
for ( j = y1; j < y2; ++j ) for ( j = y1; j < y2; ++j )
v7[j] &= 0xBDu; v7[j] &= ~(DFLAG_VISIBLE | DFLAG_LIT);
v7 += 112; v7 += 112;
--i; --i;
} }
@ -886,11 +886,11 @@ void __fastcall DoVision(int nXPos, int nYPos, int nRadius, unsigned char doauto
nYPos = v28; nYPos = v28;
nXPos = v29; nXPos = v29;
} }
*v5 |= 0x80u; *v5 |= DFLAG_EXPLORED;
} }
if ( visible ) if ( visible )
dFlags[nXPos][nYPos] |= 0x40u; dFlags[nXPos][nYPos] |= DFLAG_LIT;
dFlags[nXPos][nYPos] |= 2u; dFlags[nXPos][nYPos] |= DFLAG_VISIBLE;
} }
v27 = 0; v27 = 0;
v6 = doautomap; v6 = doautomap;
@ -982,11 +982,11 @@ void __fastcall DoVision(int nXPos, int nYPos, int nRadius, unsigned char doauto
v16 = v7 + 112 * v6; v16 = v7 + 112 * v6;
v8 = v19; v8 = v19;
} }
dFlags[0][v16] |= 0x80u; dFlags[0][v16] |= DFLAG_EXPLORED;
} }
if ( visible ) if ( visible )
dFlags[0][v16] |= 0x40u; dFlags[0][v16] |= DFLAG_LIT;
dFlags[0][v16] |= 2u; dFlags[0][v16] |= DFLAG_VISIBLE;
if ( !v21 ) if ( !v21 )
{ {
v17 = dung_map[0][v16]; v17 = dung_map[0][v16];

4
Source/loadsave.cpp

@ -713,7 +713,7 @@ void __cdecl SaveGame()
v47 = 112; v47 = 112;
do do
{ {
BSave(*v23 & 0xF8); BSave(*v23 & (DFLAG_POPULATED | DFLAG_MONSTER | DFLAG_PLAYER | DFLAG_LIT | DFLAG_EXPLORED));
v23 += 112; v23 += 112;
--v47; --v47;
} }
@ -1045,7 +1045,7 @@ void __cdecl SaveLevel()
{ {
for(j = 0; j < 112; j++) for(j = 0; j < 112; j++)
{ {
BSave(dFlags[j][i] & 0xF8); BSave(dFlags[j][i] & (DFLAG_POPULATED | DFLAG_MONSTER | DFLAG_PLAYER | DFLAG_LIT | DFLAG_EXPLORED));
} }
} }

8
Source/missiles.cpp

@ -1131,7 +1131,7 @@ void __fastcall PutMissile(int i)
if ( !missile[v1]._miDelFlag ) if ( !missile[v1]._miDelFlag )
{ {
v4 = v3 + 112 * v2; v4 = v3 + 112 * v2;
dFlags[0][v4] |= 1u; dFlags[0][v4] |= DFLAG_MISSILE;
v5 = (unsigned char *)dMissile + v4; v5 = (unsigned char *)dMissile + v4;
if ( *v5 ) if ( *v5 )
*v5 = -1; *v5 = -1;
@ -2337,7 +2337,7 @@ void __cdecl InitMissiles()
v8 = 112; v8 = 112;
do do
{ {
*v7 &= 0xFEu; *v7 &= ~DFLAG_MISSILE;
v7 += 112; v7 += 112;
--v8; --v8;
} }
@ -7368,7 +7368,7 @@ void __cdecl ProcessMissiles()
for ( i = 0; i < v0; dMissile[0][v2] = 0 ) for ( i = 0; i < v0; dMissile[0][v2] = 0 )
{ {
v2 = 112 * missile[missileactive[i]]._mix + missile[missileactive[i]]._miy; v2 = 112 * missile[missileactive[i]]._mix + missile[missileactive[i]]._miy;
dFlags[0][v2] &= 0xFEu; dFlags[0][v2] &= ~DFLAG_MISSILE;
++i; ++i;
} }
v3 = 0; v3 = 0;
@ -7490,6 +7490,6 @@ void __cdecl missiles_process_charge()
void __fastcall ClearMissileSpot(int mi) void __fastcall ClearMissileSpot(int mi)
{ {
dFlags[missile[mi]._mix][missile[mi]._miy] &= 0xFE; dFlags[missile[mi]._mix][missile[mi]._miy] &= ~DFLAG_MISSILE;
dMissile[missile[mi]._mix][missile[mi]._miy] = 0; dMissile[missile[mi]._mix][missile[mi]._miy] = 0;
} }

51
Source/monster.cpp

@ -833,8 +833,8 @@ void __cdecl ClrAllMonsters()
BOOL __fastcall MonstPlace(int xp, int yp) BOOL __fastcall MonstPlace(int xp, int yp)
{ {
if ( xp < 0 || xp >= 112 if ( xp < 0 || xp >= MAXDUNX
|| yp < 0 || yp >= 112 || yp < 0 || yp >= MAXDUNY
|| dMonster[xp][yp] || dMonster[xp][yp]
|| dPlayer[xp][yp] ) || dPlayer[xp][yp] )
{ {
@ -843,13 +843,12 @@ BOOL __fastcall MonstPlace(int xp, int yp)
char f = dFlags[xp][yp]; char f = dFlags[xp][yp];
// TODO: Add enum values here if ( f & DFLAG_VISIBLE )
if ( f & 2 )
{ {
return FALSE; return FALSE;
} }
if ( f & 8 ) if ( f & DFLAG_POPULATED )
{ {
return FALSE; return FALSE;
} }
@ -2053,7 +2052,7 @@ void __fastcall M_StartWalk3(int i, int xvel, int yvel, int xoff, int yoff, int
monster[v10]._moldy = monster[v10]._my; monster[v10]._moldy = monster[v10]._my;
monster[v10]._mfutx = a6a; monster[v10]._mfutx = a6a;
monster[v10]._mxvel = v17; monster[v10]._mxvel = v17;
dFlags[v13][v14] |= 0x10u; dFlags[v13][v14] |= DFLAG_MONSTER;
v16 = monster[v10].MType; v16 = monster[v10].MType;
monster[v10]._myvel = yvel; monster[v10]._myvel = yvel;
monster[v10]._mfuty = a7a; monster[v10]._mfuty = a7a;
@ -2245,9 +2244,9 @@ void __fastcall M_ClearSquares(int i)
while ( v4 <= v2 + 1 ); while ( v4 <= v2 + 1 );
} }
if ( v1 + 1 < 112 ) if ( v1 + 1 < 112 )
dFlags[v1 + 1][v2] &= 0xEFu; dFlags[v1 + 1][v2] &= ~DFLAG_MONSTER;
if ( v5 < 112 ) if ( v5 < 112 )
dFlags[v1][v2 + 1] &= 0xEFu; dFlags[v1][v2 + 1] &= ~DFLAG_MONSTER;
} }
void __fastcall M_GetKnockback(int i) void __fastcall M_GetKnockback(int i)
@ -2998,7 +2997,7 @@ int __fastcall M_DoWalk3(int i)
v7 = monster[v2]._mVar1; v7 = monster[v2]._mVar1;
monster[v2]._mx = v7; monster[v2]._mx = v7;
v8 = &dFlags[monster[v2]._mVar4][v6]; v8 = &dFlags[monster[v2]._mVar4][v6];
*v8 &= 0xEFu; *v8 &= ~DFLAG_MONSTER;
v9 = monster[v2]._uniqtype == 0; v9 = monster[v2]._uniqtype == 0;
dMonster[0][v4 + 112 * v7] = v1 + 1; dMonster[0][v4 + 112 * v7] = v1 + 1;
if ( !v9 ) if ( !v9 )
@ -4485,7 +4484,7 @@ void __fastcall MAI_Zombie(int i)
if ( v3->_mmode == MM_STAND ) if ( v3->_mmode == MM_STAND )
{ {
v4 = v3->_my; v4 = v3->_my;
if ( dFlags[v3->_mx][v4] & 2 ) if ( dFlags[v3->_mx][v4] & DFLAG_VISIBLE )
{ {
v5 = v3->_mx - (unsigned char)v3->_menemyx; v5 = v3->_mx - (unsigned char)v3->_menemyx;
v6 = v4 - (unsigned char)v3->_menemyy; v6 = v4 - (unsigned char)v3->_menemyy;
@ -6836,13 +6835,13 @@ void __fastcall MAI_Garbud(int i)
v5 = monster[v2].mtalkmsg; v5 = monster[v2].mtalkmsg;
if ( v5 < (signed int)QUEST_GARBUD4 if ( v5 < (signed int)QUEST_GARBUD4
&& v5 >(signed int)QUEST_DOOM10 && v5 >(signed int)QUEST_DOOM10
&& !(dFlags[v4][v3] & 2) && !(dFlags[v4][v3] & DFLAG_VISIBLE)
&& _LOBYTE(monster[v2]._mgoal) == 7 ) && _LOBYTE(monster[v2]._mgoal) == 7 )
{ {
_LOBYTE(monster[v2]._mgoal) = 6; _LOBYTE(monster[v2]._mgoal) = 6;
monster[v2].mtalkmsg = v5 + 1; monster[v2].mtalkmsg = v5 + 1;
} }
if ( dFlags[v4][v3] & 2 ) if ( dFlags[v4][v3] & DFLAG_VISIBLE )
{ {
if ( monster[v2].mtalkmsg == QUEST_GARBUD4 ) if ( monster[v2].mtalkmsg == QUEST_GARBUD4 )
{ {
@ -6888,12 +6887,12 @@ void __fastcall MAI_Zhar(int i)
v3 = monster[v2]._my; v3 = monster[v2]._my;
v4 = monster[v2]._mx; v4 = monster[v2]._mx;
v11 = M_GetDir(v1); v11 = M_GetDir(v1);
if ( monster[v2].mtalkmsg == QUEST_ZHAR1 && !(dFlags[v4][v3] & 2) && _LOBYTE(monster[v2]._mgoal) == 7 ) if ( monster[v2].mtalkmsg == QUEST_ZHAR1 && !(dFlags[v4][v3] & DFLAG_VISIBLE) && _LOBYTE(monster[v2]._mgoal) == 7 )
{ {
monster[v2].mtalkmsg = QUEST_ZHAR2; monster[v2].mtalkmsg = QUEST_ZHAR2;
_LOBYTE(monster[v2]._mgoal) = 6; _LOBYTE(monster[v2]._mgoal) = 6;
} }
if ( dFlags[v4][v3] & 2 ) if ( dFlags[v4][v3] & DFLAG_VISIBLE )
{ {
v5 = monster[v2]._mx - (unsigned char)monster[v2]._menemyx; v5 = monster[v2]._mx - (unsigned char)monster[v2]._menemyx;
v6 = monster[v2]._my - (unsigned char)monster[v2]._menemyy; v6 = monster[v2]._my - (unsigned char)monster[v2]._menemyy;
@ -6943,7 +6942,7 @@ void __fastcall MAI_SnotSpil(int i)
v3 = monster[v2]._my; v3 = monster[v2]._my;
v4 = monster[v2]._mx; v4 = monster[v2]._mx;
v5 = M_GetDir(v1); v5 = M_GetDir(v1);
if ( monster[v2].mtalkmsg == QUEST_BANNER10 && !(dFlags[v4][v3] & 2) && _LOBYTE(monster[v2]._mgoal) == 7 ) if ( monster[v2].mtalkmsg == QUEST_BANNER10 && !(dFlags[v4][v3] & DFLAG_VISIBLE) && _LOBYTE(monster[v2]._mgoal) == 7 )
{ {
monster[v2].mtalkmsg = QUEST_BANNER11; monster[v2].mtalkmsg = QUEST_BANNER11;
_LOBYTE(monster[v2]._mgoal) = 6; _LOBYTE(monster[v2]._mgoal) = 6;
@ -6953,7 +6952,7 @@ void __fastcall MAI_SnotSpil(int i)
monster[v2].mtalkmsg = 0; monster[v2].mtalkmsg = 0;
_LOBYTE(monster[v2]._mgoal) = 1; _LOBYTE(monster[v2]._mgoal) = 1;
} }
if ( dFlags[v4][v3] & 2 ) if ( dFlags[v4][v3] & DFLAG_VISIBLE )
{ {
if ( monster[v2].mtalkmsg == QUEST_BANNER12 ) if ( monster[v2].mtalkmsg == QUEST_BANNER12 )
{ {
@ -7005,7 +7004,7 @@ void __fastcall MAI_Lazurus(int i)
v3 = monster[v2]._my; v3 = monster[v2]._my;
v4 = monster[v2]._mx; v4 = monster[v2]._mx;
v5 = M_GetDir(v1); v5 = M_GetDir(v1);
if ( dFlags[v4][v3] & 2 ) if ( dFlags[v4][v3] & DFLAG_VISIBLE )
{ {
if ( gbMaxPlayers != 1 ) if ( gbMaxPlayers != 1 )
goto LABEL_29; goto LABEL_29;
@ -7071,7 +7070,7 @@ void __fastcall MAI_Lazhelp(int i)
v3 = monster[v2]._my; v3 = monster[v2]._my;
v4 = monster[v2]._mx; v4 = monster[v2]._mx;
v5 = M_GetDir(ia); v5 = M_GetDir(ia);
if ( dFlags[v4][v3] & 2 ) if ( dFlags[v4][v3] & DFLAG_VISIBLE )
{ {
if ( gbMaxPlayers == 1 ) if ( gbMaxPlayers == 1 )
{ {
@ -7112,12 +7111,12 @@ void __fastcall MAI_Lachdanan(int i)
v3 = monster[v2]._my; v3 = monster[v2]._my;
v4 = monster[v2]._mx; v4 = monster[v2]._mx;
v6 = M_GetDir(v1); v6 = M_GetDir(v1);
if ( monster[v2].mtalkmsg == QUEST_VEIL9 && !(dFlags[v4][v3] & 2) && _LOBYTE(monster[v2]._mgoal) == 7 ) if ( monster[v2].mtalkmsg == QUEST_VEIL9 && !(dFlags[v4][v3] & DFLAG_VISIBLE) && _LOBYTE(monster[v2]._mgoal) == 7 )
{ {
monster[v2].mtalkmsg = QUEST_VEIL10; monster[v2].mtalkmsg = QUEST_VEIL10;
_LOBYTE(monster[v2]._mgoal) = 6; _LOBYTE(monster[v2]._mgoal) = 6;
} }
if ( dFlags[v4][v3] & 2 ) if ( dFlags[v4][v3] & DFLAG_VISIBLE )
{ {
if ( monster[v2].mtalkmsg == QUEST_VEIL11 ) if ( monster[v2].mtalkmsg == QUEST_VEIL11 )
{ {
@ -7157,7 +7156,7 @@ void __fastcall MAI_Warlord(int i)
v3 = monster[v2]._my; v3 = monster[v2]._my;
v4 = monster[v2]._mx; v4 = monster[v2]._mx;
v5 = M_GetDir(v1); v5 = M_GetDir(v1);
if ( dFlags[v4][v3] & 2 && monster[v2].mtalkmsg == QUEST_WARLRD9 ) if ( dFlags[v4][v3] & DFLAG_VISIBLE && monster[v2].mtalkmsg == QUEST_WARLRD9 )
{ {
if ( _LOBYTE(monster[v2]._mgoal) == 6 ) if ( _LOBYTE(monster[v2]._mgoal) == 6 )
monster[v2]._mmode = MM_TALK; monster[v2]._mmode = MM_TALK;
@ -7270,7 +7269,7 @@ void __cdecl ProcessMonsters()
} }
} }
v4 = &dFlags[monster[v1]._mx][monster[v1]._my]; v4 = &dFlags[monster[v1]._mx][monster[v1]._my];
if ( *v4 & 2 && !monster[v1]._msquelch && monster[v1].MType->mtype == MT_CLEAVER ) if ( *v4 & DFLAG_VISIBLE && !monster[v1]._msquelch && monster[v1].MType->mtype == MT_CLEAVER )
PlaySFX(USFX_CLEAVER); PlaySFX(USFX_CLEAVER);
if ( monster[v1]._mFlags & 0x10 ) if ( monster[v1]._mFlags & 0x10 )
{ {
@ -7291,7 +7290,7 @@ void __cdecl ProcessMonsters()
if ( v9 >= MAX_PLRS ) if ( v9 >= MAX_PLRS )
TermMsg("Illegal enemy player %d for monster \"%s\"", v9, monster[v1].mName); TermMsg("Illegal enemy player %d for monster \"%s\"", v9, monster[v1].mName);
v10 = monster[v1]._menemy; v10 = monster[v1]._menemy;
v11 = (*v4 & 2) == 0; v11 = (*v4 & DFLAG_VISIBLE) == 0;
v12 = (char *)&plr[v10]._px; v12 = (char *)&plr[v10]._px;
v13 = (char *)&plr[v10]._py; v13 = (char *)&plr[v10]._py;
monster[v1]._menemyx = *v12; monster[v1]._menemyx = *v12;
@ -7499,7 +7498,7 @@ bool __fastcall DirOK(int i, int mdir)
{ {
if ( !SolidLoc(v6, v7 + 1) ) if ( !SolidLoc(v6, v7 + 1) )
{ {
v8 = (dFlags[v6][v7 + 1] & 0x10) == 0; v8 = (dFlags[v6][v7 + 1] & DFLAG_MONSTER) == 0;
goto LABEL_18; goto LABEL_18;
} }
return 0; return 0;
@ -7508,7 +7507,7 @@ bool __fastcall DirOK(int i, int mdir)
{ {
if ( SolidLoc(v6 + 1, v7) ) if ( SolidLoc(v6 + 1, v7) )
return 0; return 0;
v8 = (dFlags[v6 + 1][v7] & 0x10) == 0; v8 = (dFlags[v6 + 1][v7] & DFLAG_MONSTER) == 0;
} }
else else
{ {
@ -7591,7 +7590,7 @@ LABEL_24:
BOOL __fastcall PosOkMissile(int x, int y) BOOL __fastcall PosOkMissile(int x, int y)
{ {
return !nMissileTable[dPiece[x][y]] && !(dFlags[x][y] & 0x10); return !nMissileTable[dPiece[x][y]] && !(dFlags[x][y] & DFLAG_MONSTER);
} }
BOOL __fastcall CheckNoSolid(int x, int y) BOOL __fastcall CheckNoSolid(int x, int y)

2
Source/msg.cpp

@ -3478,7 +3478,7 @@ int __fastcall On_PLAYER_JOINLEVEL(struct TCmdLocParam1 *pCmd, int pnum)
plr[v4]._pVar8 = 2 * v8; plr[v4]._pVar8 = 2 * v8;
v10 = plr[v4].WorldX; v10 = plr[v4].WorldX;
plr[v4]._pAnimFrame = v9; plr[v4]._pAnimFrame = v9;
dFlags[v10][plr[v4].WorldY] |= 4u; dFlags[v10][plr[v4].WorldY] |= DFLAG_DEAD_PLAYER;
} }
else else
{ {

2
Source/multi.cpp

@ -1142,7 +1142,7 @@ void __fastcall multi_player_joins(int pnum, TCmdPlrInfoHdr *cmd, int a3)
plr[v6]._pVar8 = 2 * v11; plr[v6]._pVar8 = 2 * v11;
v13 = plr[v6].WorldX; v13 = plr[v6].WorldX;
plr[v6]._pAnimFrame = v12; plr[v6]._pAnimFrame = v12;
dFlags[v13][plr[v6].WorldY] |= 4u; dFlags[v13][plr[v6].WorldY] |= DFLAG_DEAD_PLAYER;
} }
else else
{ {

6
Source/objects.cpp

@ -449,7 +449,7 @@ bool __fastcall RndLocOk(int xp, int yp)
v2 = xp; v2 = xp;
v3 = v2 * 112 + yp; v3 = v2 * 112 + yp;
result = 0; result = 0;
if ( !dMonster[0][v3] && !dPlayer[v2][yp] && !dObject[v2][yp] && !(dFlags[v2][yp] & 8) ) if ( !dMonster[0][v3] && !dPlayer[v2][yp] && !dObject[v2][yp] && !(dFlags[v2][yp] & DFLAG_POPULATED) )
{ {
v4 = dPiece[0][v3]; v4 = dPiece[0][v3];
if ( !nSolidTable[v4] && (leveltype != 1 || v4 <= 126 || v4 >= 144) ) if ( !nSolidTable[v4] && (leveltype != 1 || v4 <= 126 || v4 >= 144) )
@ -932,7 +932,7 @@ void __fastcall AddL3Objs(int x1, int y1, int x2, int y2)
bool __fastcall WallTrapLocOk(int xp, int yp) bool __fastcall WallTrapLocOk(int xp, int yp)
{ {
return (~dFlags[xp][yp] & 8u) >> 3; return (~dFlags[xp][yp] & DFLAG_POPULATED) >> 3;
} }
void __cdecl AddL2Torches() void __cdecl AddL2Torches()
@ -999,7 +999,7 @@ bool __fastcall TorchLocOK(int xp, int yp)
bool result; // al bool result; // al
v2 = xp; v2 = xp;
if ( dFlags[v2][yp] & 8 ) if ( dFlags[v2][yp] & DFLAG_POPULATED )
result = 0; result = 0;
else else
result = nTrapTable[dPiece[0][yp + v2 * 112]] != 0; result = nTrapTable[dPiece[0][yp + v2 * 112]] != 0;

65
Source/player.cpp

@ -1008,11 +1008,11 @@ BOOL __fastcall PlrDirOK(int pnum, int dir)
BOOL isOk = TRUE; BOOL isOk = TRUE;
if ( dir == DIR_E ) { if ( dir == DIR_E ) {
isOk = !SolidLoc(px, py + 1) && !(dFlags[px][py + 1] & 32); isOk = !SolidLoc(px, py + 1) && !(dFlags[px][py + 1] & DFLAG_PLAYER);
} }
if ( isOk && dir == DIR_W ) { if ( isOk && dir == DIR_W ) {
isOk = !SolidLoc(px + 1, py) && !(dFlags[px + 1][py] & 32); isOk = !SolidLoc(px + 1, py) && !(dFlags[px + 1][py] & DFLAG_PLAYER);
} }
return isOk; return isOk;
@ -1373,7 +1373,7 @@ void __fastcall StartWalk3(int pnum, int xvel, int yvel, int xoff, int yoff, int
dPlayer[px][py] = -1 - pnum; dPlayer[px][py] = -1 - pnum;
plr[pnum]._pVar4 = x; plr[pnum]._pVar4 = x;
plr[pnum]._pVar5 = y; plr[pnum]._pVar5 = y;
dFlags[x][y] |= 0x20; dFlags[x][y] |= DFLAG_PLAYER;
plr[pnum]._pxoff = xoff; plr[pnum]._pxoff = xoff;
plr[pnum]._pyoff = yoff; plr[pnum]._pyoff = yoff;
@ -1554,8 +1554,8 @@ void __fastcall FixPlrWalkTags(int pnum)
} }
if ( dx >= 0 && dx < MAXDUNX - 1 && dy >= 0 && dy < MAXDUNY -1 ) { if ( dx >= 0 && dx < MAXDUNX - 1 && dy >= 0 && dy < MAXDUNY -1 ) {
dFlags[dx + 1][dy] &= 0xDF; dFlags[dx + 1][dy] &= ~DFLAG_PLAYER;
dFlags[dx][dy + 1] &= 0xDF; dFlags[dx][dy + 1] &= ~DFLAG_PLAYER;
} }
} }
@ -1585,7 +1585,7 @@ void __fastcall RemovePlrFromMap(int pnum)
{ {
v5 = dFlags[1][v3]; v5 = dFlags[1][v3];
if ( v5 & 0x20 ) if ( v5 & 0x20 )
dFlags[1][v3] = v5 & 0xDF; dFlags[1][v3] = v5 & ~DFLAG_PLAYER;
} }
v3 += 112; v3 += 112;
--v4; --v4;
@ -1766,7 +1766,7 @@ LABEL_18:
FixPlayerLocation(v2, plr[v3 / 0x54D8]._pdir); FixPlayerLocation(v2, plr[v3 / 0x54D8]._pdir);
RemovePlrFromMap(v2); RemovePlrFromMap(v2);
v10 = &dFlags[plr[v3 / 0x54D8].WorldX][plr[v3 / 0x54D8].WorldY]; v10 = &dFlags[plr[v3 / 0x54D8].WorldX][plr[v3 / 0x54D8].WorldY];
*v10 |= 4u; *v10 |= DFLAG_DEAD_PLAYER;
SetPlayerOld(v2); SetPlayerOld(v2);
if ( v2 == myplr ) if ( v2 == myplr )
{ {
@ -2409,7 +2409,7 @@ BOOL __fastcall PM_DoWalk3(int pnum)
if ( plr[pnum]._pVar8 == vel ) { if ( plr[pnum]._pVar8 == vel ) {
dPlayer[plr[pnum].WorldX][plr[pnum].WorldY] = 0; dPlayer[plr[pnum].WorldX][plr[pnum].WorldY] = 0;
dFlags[plr[pnum]._pVar4][plr[pnum]._pVar5] &= 0xDF; dFlags[plr[pnum]._pVar4][plr[pnum]._pVar5] &= ~DFLAG_PLAYER;
plr[pnum].WorldX = plr[pnum]._pVar1; plr[pnum].WorldX = plr[pnum]._pVar1;
plr[pnum].WorldY = plr[pnum]._pVar2; plr[pnum].WorldY = plr[pnum]._pVar2;
dPlayer[plr[pnum]._pVar1][plr[pnum]._pVar2] = pnum + 1; dPlayer[plr[pnum]._pVar1][plr[pnum]._pVar2] = pnum + 1;
@ -3235,34 +3235,31 @@ LABEL_23:
BOOL __fastcall PM_DoDeath(int pnum) BOOL __fastcall PM_DoDeath(int pnum)
{ {
int v1; // edi if ( (DWORD)pnum >= MAX_PLRS ) {
int v2; // esi
int v3; // ecx
int v4; // eax
int v5; // eax
v1 = pnum;
if ( (unsigned int)pnum >= MAX_PLRS )
TermMsg("PM_DoDeath: illegal player %d", pnum); TermMsg("PM_DoDeath: illegal player %d", pnum);
v2 = v1; }
if ( plr[v1]._pVar8 >= 2 * plr[v1]._pDFrames )
{ if ( plr[pnum]._pVar8 >= 2 * plr[pnum]._pDFrames ) {
if ( deathdelay > 1 && v1 == myplr && --deathdelay == 1 ) if ( deathdelay > 1 && pnum == myplr ) {
{ deathdelay--;
deathflag = 1; if ( deathdelay == 1 ) {
if ( gbMaxPlayers == 1 ) deathflag = 1;
gamemenu_previous(); if ( gbMaxPlayers == 1 ) {
gamemenu_previous();
}
}
} }
v3 = plr[v2].WorldY;
plr[v2]._pAnimFrame = plr[v2]._pAnimLen; plr[pnum]._pAnimFrame = plr[pnum]._pAnimLen;
v4 = plr[v2].WorldX; plr[pnum]._pAnimDelay = 10000;
plr[v2]._pAnimDelay = 10000; dFlags[plr[pnum].WorldX][plr[pnum].WorldY] |= DFLAG_DEAD_PLAYER;
dFlags[v4][v3] |= 4u; }
}
v5 = plr[v2]._pVar8; if ( plr[pnum]._pVar8 < 100 ) {
if ( v5 < 100 ) plr[pnum]._pVar8++;
plr[v2]._pVar8 = v5 + 1; }
return 0;
return FALSE;
} }
// 679660: using guessed type char gbMaxPlayers; // 679660: using guessed type char gbMaxPlayers;
// 69B7C4: using guessed type int deathdelay; // 69B7C4: using guessed type int deathdelay;

2
Source/portal.cpp

@ -124,7 +124,7 @@ void __fastcall RemovePortalMissile(int id)
mi = missileactive[i]; mi = missileactive[i];
if ( missile[mi]._mitype == MIS_TOWN && missile[mi]._misource == id ) if ( missile[mi]._mitype == MIS_TOWN && missile[mi]._misource == id )
{ {
dFlags[missile[mi]._mix][missile[mi]._miy] &= 0xFE; dFlags[missile[mi]._mix][missile[mi]._miy] &= ~DFLAG_MISSILE;
dMissile[missile[mi]._mix][missile[mi]._miy] = 0; dMissile[missile[mi]._mix][missile[mi]._miy] = 0;
if ( portal[id].level ) if ( portal[id].level )

52
Source/scrollrt.cpp

@ -297,7 +297,7 @@ void __fastcall DrawDeadPlayer(int x, int y, int sx, int sy, int a5, int a6, boo
DrawPlrProc = (int (__fastcall *)(int, int, int, int, int, void *, int, int, int, int))DrawPlayer; DrawPlrProc = (int (__fastcall *)(int, int, int, int, int, void *, int, int, int, int))DrawPlayer;
v8 = &plr[0]._pHitPoints; v8 = &plr[0]._pHitPoints;
v9 = &dFlags[x][y]; v9 = &dFlags[x][y];
*v9 &= 0xFBu; *v9 &= ~DFLAG_DEAD_PLAYER;
player_num = 0; player_num = 0;
do do
{ {
@ -309,7 +309,7 @@ void __fastcall DrawDeadPlayer(int x, int y, int sx, int sy, int a5, int a6, boo
v11 = *(v8 - 67); v11 = *(v8 - 67);
if ( v11 < 1 || (unsigned int)*v10 > 0x32 || v11 > *v10 ) if ( v11 < 1 || (unsigned int)*v10 > 0x32 || v11 > *v10 )
break; break;
*v9 |= 4u; *v9 |= DFLAG_DEAD_PLAYER;
DrawPlrProc(player_num, xa, v7, sx + *(v8 - 78) - *(v8 - 65), sy + *(v8 - 77), v10, v11, *(v8 - 66), a5, a6); DrawPlrProc(player_num, xa, v7, sx + *(v8 - 78) - *(v8 - 65), sy + *(v8 - 77), v10, v11, *(v8 - 66), a5, a6);
LABEL_14: LABEL_14:
++player_num; ++player_num;
@ -331,7 +331,7 @@ void __fastcall DrawPlayer(int pnum, int x, int y, int px, int py, unsigned char
v11 = myplr; v11 = myplr;
v13 = pnum; v13 = pnum;
ya = (int)v10; ya = (int)v10;
if ( *v10 & 0x40 || plr[myplr]._pInfraFlag || !setlevel && !currlevel ) if ( *v10 & DFLAG_LIT || plr[myplr]._pInfraFlag || !setlevel && !currlevel )
{ {
v12 = (char *)animdata; v12 = (char *)animdata;
if ( animdata ) if ( animdata )
@ -358,7 +358,7 @@ void __fastcall DrawPlayer(int pnum, int x, int y, int px, int py, unsigned char
a9, a9,
a10); a10);
} }
else if ( !(*v10 & 0x40) || plr[v11]._pInfraFlag && light_table_index > 8 ) else if ( !(*v10 & DFLAG_LIT) || plr[v11]._pInfraFlag && light_table_index > 8 )
{ {
Cl2DecodeFrm3(px, py, v12, animframe, animwidth, a9, a10, 1); Cl2DecodeFrm3(px, py, v12, animframe, animwidth, a9, a10, 1);
if ( plr[v13].pManaShield ) if ( plr[v13].pManaShield )
@ -412,7 +412,7 @@ void __fastcall DrawClippedPlayer(int pnum, int x, int y, int px, int py, unsign
v11 = myplr; v11 = myplr;
v13 = pnum; v13 = pnum;
ya = (int)v10; ya = (int)v10;
if ( *v10 & 0x40 || plr[myplr]._pInfraFlag ) if ( *v10 & DFLAG_LIT || plr[myplr]._pInfraFlag )
{ {
v12 = (char *)animdata; v12 = (char *)animdata;
if ( animdata ) if ( animdata )
@ -439,7 +439,7 @@ void __fastcall DrawClippedPlayer(int pnum, int x, int y, int px, int py, unsign
a9, a9,
a10); a10);
} }
else if ( !(*v10 & 0x40) || plr[v11]._pInfraFlag && light_table_index > 8 ) else if ( !(*v10 & DFLAG_LIT) || plr[v11]._pInfraFlag && light_table_index > 8 )
{ {
Cl2DecodeFrm5(px, py, v12, animframe, animwidth, a9, a10, 1); Cl2DecodeFrm5(px, py, v12, animframe, animwidth, a9, a10, 1);
if ( plr[v13].pManaShield ) if ( plr[v13].pManaShield )
@ -969,9 +969,9 @@ void __fastcall scrollrt_draw_clipped_dungeon(char *a1, int sx, int sy, int a4,
v45 = v8; v45 = v8;
v40 = *v10; v40 = *v10;
v41 = *(v10 - 1); v41 = *(v10 - 1);
if ( visiondebug && v50 & 0x40 ) if ( visiondebug && v50 & DFLAG_LIT )
Cel2DecodeHdrOnly(dst_buf, (char *)pSquareCel, 1, 64, 0, 8); Cel2DecodeHdrOnly(dst_buf, (char *)pSquareCel, 1, 64, 0, 8);
if ( MissilePreFlag && v50 & 1 ) if ( MissilePreFlag && v50 & DFLAG_MISSILE )
DrawClippedMissile(a1a, sy, a4, a5, 0, 8, 1); DrawClippedMissile(a1a, sy, a4, a5, 0, 8, 1);
if ( light_table_index < lightmax ) if ( light_table_index < lightmax )
{ {
@ -1015,7 +1015,7 @@ void __fastcall scrollrt_draw_clipped_dungeon(char *a1, int sx, int sy, int a4,
} }
} }
} }
if ( v50 & 0x20 ) if ( v50 & DFLAG_PLAYER )
{ {
v20 = -1 - v45; v20 = -1 - v45;
if ( v20 < 4 ) if ( v20 < 4 )
@ -1044,7 +1044,7 @@ void __fastcall scrollrt_draw_clipped_dungeon(char *a1, int sx, int sy, int a4,
} }
} }
} }
if ( v50 & 0x10 && (v50 & 0x40 || plr[myplr]._pInfraFlag) && v41 < 0 ) if ( v50 & DFLAG_MONSTER && (v50 & DFLAG_LIT || plr[myplr]._pInfraFlag) && v41 < 0 )
{ {
v23 = -1 - v41; v23 = -1 - v41;
draw_monster_num = -1 - v41; draw_monster_num = -1 - v41;
@ -1192,7 +1192,7 @@ void __fastcall DrawClippedMonster(int x, int y, int a3, int a4, int mon_id, int
v9 = monster[v7]._mAnimFrame; v9 = monster[v7]._mAnimFrame;
if ( v9 >= 1 && (unsigned int)*v8 <= 0x32 && v9 <= *v8 ) if ( v9 >= 1 && (unsigned int)*v8 <= 0x32 && v9 <= *v8 )
{ {
if ( dFlags[x][y] & 0x40 ) if ( dFlags[x][y] & DFLAG_LIT )
{ {
v10 = 0; v10 = 0;
mon_ida = 0; mon_ida = 0;
@ -1635,9 +1635,9 @@ void __fastcall scrollrt_draw_clipped_dungeon_2(char *buffer, int x, int y, int
v48 = v10; v48 = v10;
v43 = *v12; v43 = *v12;
v44 = *(v12 - 1); v44 = *(v12 - 1);
if ( visiondebug && v53 & 0x40 ) if ( visiondebug && v53 & DFLAG_LIT )
Cel2DecodeHdrOnly(dst_buf, (char *)pSquareCel, 1, 64, a5, 8); Cel2DecodeHdrOnly(dst_buf, (char *)pSquareCel, 1, 64, a5, 8);
if ( MissilePreFlag && v53 & 1 ) if ( MissilePreFlag && v53 & DFLAG_MISSILE )
{ {
v13 = sx; v13 = sx;
DrawClippedMissile(a1, y, sx, sy, a5, 8, 1); DrawClippedMissile(a1, y, sx, sy, a5, 8, 1);
@ -1688,7 +1688,7 @@ void __fastcall scrollrt_draw_clipped_dungeon_2(char *buffer, int x, int y, int
} }
} }
} }
if ( v53 & 0x20 ) if ( v53 & DFLAG_PLAYER )
{ {
v23 = -1 - v48; v23 = -1 - v48;
if ( v23 < 4 ) if ( v23 < 4 )
@ -1717,7 +1717,7 @@ void __fastcall scrollrt_draw_clipped_dungeon_2(char *buffer, int x, int y, int
} }
} }
} }
if ( v53 & 0x10 && (v53 & 0x40 || plr[myplr]._pInfraFlag) && v44 < 0 ) if ( v53 & DFLAG_MONSTER && (v53 & DFLAG_LIT || plr[myplr]._pInfraFlag) && v44 < 0 )
{ {
v26 = -1 - v44; v26 = -1 - v44;
draw_monster_num = -1 - v44; draw_monster_num = -1 - v44;
@ -1744,7 +1744,7 @@ void __fastcall scrollrt_draw_clipped_dungeon_2(char *buffer, int x, int y, int
} }
} }
} }
if ( v53 & 4 ) if ( v53 & DFLAG_DEAD_PLAYER )
DrawDeadPlayer(a1, y, v13, sy, a5, 8, 1); DrawDeadPlayer(a1, y, v13, sy, a5, 8, 1);
if ( v51 > 0 ) if ( v51 > 0 )
{ {
@ -1775,7 +1775,7 @@ void __fastcall scrollrt_draw_clipped_dungeon_2(char *buffer, int x, int y, int
} }
} }
} }
if ( v43 > 0 && (v53 & 0x40 || plr[myplr]._pInfraFlag) ) if ( v43 > 0 && (v53 & DFLAG_LIT || plr[myplr]._pInfraFlag) )
{ {
v34 = v43 - 1; v34 = v43 - 1;
draw_monster_num = v43 - 1; draw_monster_num = v43 - 1;
@ -1802,7 +1802,7 @@ void __fastcall scrollrt_draw_clipped_dungeon_2(char *buffer, int x, int y, int
} }
} }
} }
if ( v53 & 1 ) if ( v53 & DFLAG_MISSILE )
DrawClippedMissile(a1, y, v13, sy, a5, 8, 0); DrawClippedMissile(a1, y, v13, sy, a5, 8, 0);
if ( v50 && light_table_index < lightmax ) if ( v50 && light_table_index < lightmax )
DrawClippedObject(a1, y, v13, sy, 0, a5, 8); DrawClippedObject(a1, y, v13, sy, 0, a5, 8);
@ -2244,9 +2244,9 @@ void __fastcall scrollrt_draw_dungeon(char *buffer, int x, int y, int a4, int a5
v47 = v10; v47 = v10;
v42 = *v12; v42 = *v12;
v43 = *(v12 - 1); v43 = *(v12 - 1);
if ( visiondebug && v52 & 0x40 ) if ( visiondebug && v52 & DFLAG_LIT )
CelDecodeHdrOnly(dst_buf, (char *)pSquareCel, 1, 64, 0, a5); CelDecodeHdrOnly(dst_buf, (char *)pSquareCel, 1, 64, 0, a5);
if ( MissilePreFlag && v52 & 1 ) if ( MissilePreFlag && v52 & DFLAG_MISSILE )
DrawMissile(xa, y, sx, sy, 0, a5, 1); DrawMissile(xa, y, sx, sy, 0, a5, 1);
if ( light_table_index < lightmax ) if ( light_table_index < lightmax )
{ {
@ -2290,7 +2290,7 @@ void __fastcall scrollrt_draw_dungeon(char *buffer, int x, int y, int a4, int a5
} }
} }
} }
if ( v52 & 0x20 ) if ( v52 & DFLAG_PLAYER )
{ {
v22 = -1 - v47; v22 = -1 - v47;
if ( v22 < 4 ) if ( v22 < 4 )
@ -2319,7 +2319,7 @@ void __fastcall scrollrt_draw_dungeon(char *buffer, int x, int y, int a4, int a5
} }
} }
} }
if ( v52 & 0x10 && (v52 & 0x40 || plr[myplr]._pInfraFlag) && v43 < 0 ) if ( v52 & DFLAG_MONSTER && (v52 & DFLAG_LIT || plr[myplr]._pInfraFlag) && v43 < 0 )
{ {
v25 = -1 - v43; v25 = -1 - v43;
draw_monster_num = -1 - v43; draw_monster_num = -1 - v43;
@ -2345,7 +2345,7 @@ void __fastcall scrollrt_draw_dungeon(char *buffer, int x, int y, int a4, int a5
} }
} }
} }
if ( v52 & 4 ) if ( v52 & DFLAG_DEAD_PLAYER )
DrawDeadPlayer(xa, y, sx, sy, 0, a5, 0); DrawDeadPlayer(xa, y, sx, sy, 0, a5, 0);
if ( v50 > 0 ) if ( v50 > 0 )
{ {
@ -2376,7 +2376,7 @@ void __fastcall scrollrt_draw_dungeon(char *buffer, int x, int y, int a4, int a5
} }
} }
} }
if ( v42 > 0 && (v52 & 0x40 || plr[myplr]._pInfraFlag) ) if ( v42 > 0 && (v52 & DFLAG_LIT || plr[myplr]._pInfraFlag) )
{ {
v33 = v42 - 1; v33 = v42 - 1;
draw_monster_num = v42 - 1; draw_monster_num = v42 - 1;
@ -2402,7 +2402,7 @@ void __fastcall scrollrt_draw_dungeon(char *buffer, int x, int y, int a4, int a5
} }
} }
} }
if ( v52 & 1 ) if ( v52 & DFLAG_MISSILE )
DrawMissile(xa, y, sx, sy, 0, a5, 0); DrawMissile(xa, y, sx, sy, 0, a5, 0);
if ( v49 && light_table_index < lightmax ) if ( v49 && light_table_index < lightmax )
DrawObject(xa, y, sx, sy, 0, 0, a5); DrawObject(xa, y, sx, sy, 0, 0, a5);
@ -2467,7 +2467,7 @@ void __fastcall DrawMonster(int x, int y, int a3, int a4, int mon_id, int a6, in
v9 = monster[v7]._mAnimFrame; v9 = monster[v7]._mAnimFrame;
if ( v9 >= 1 && (unsigned int)*v8 <= 0x32 && v9 <= *v8 ) if ( v9 >= 1 && (unsigned int)*v8 <= 0x32 && v9 <= *v8 )
{ {
if ( dFlags[x][y] & 0x40 ) if ( dFlags[x][y] & DFLAG_LIT )
{ {
v10 = 0; v10 = 0;
mon_ida = 0; mon_ida = 0;

4
Source/themes.cpp

@ -481,7 +481,7 @@ LABEL_5:
{ {
if ( dung_map[0][v6] == tv ) if ( dung_map[0][v6] == tv )
{ {
if ( dFlags[0][v6] & 8 ) if ( dFlags[0][v6] & DFLAG_POPULATED )
return 0; return 0;
++v3; ++v3;
} }
@ -690,7 +690,7 @@ void __cdecl HoldThemeRooms()
do do
{ {
if ( dung_map[0][v4] == v2 ) if ( dung_map[0][v4] == v2 )
dFlags[0][v4] |= 8u; dFlags[0][v4] |= DFLAG_POPULATED;
v4 += 112; v4 += 112;
--v5; --v5;
} }

24
Source/town.cpp

@ -178,7 +178,7 @@ void __fastcall town_draw_clipped_town(void *unused, int x, int y, int sx, int s
8); 8);
Cel2DrawHdrOnly(v11, sy, (char *)item[v10]._iAnimData, item[v10]._iAnimFrame, item[v10]._iAnimWidth, 0, 8); Cel2DrawHdrOnly(v11, sy, (char *)item[v10]._iAnimData, item[v10]._iAnimFrame, item[v10]._iAnimWidth, 0, 8);
} }
if ( dFlags[0][v7] & 0x10 ) if ( dFlags[0][v7] & DFLAG_MONSTER )
{ {
v12 = -1 - dMonster[x][y-1]; // -1 - *(&dword_52D204 + v7); /* check */ v12 = -1 - dMonster[x][y-1]; // -1 - *(&dword_52D204 + v7); /* check */
v13 = sx - towner[v12]._tAnimWidth2; v13 = sx - towner[v12]._tAnimWidth2;
@ -212,7 +212,7 @@ void __fastcall town_draw_clipped_town(void *unused, int x, int y, int sx, int s
8); 8);
Cel2DrawHdrOnly(v17, sy, (char *)towner[v16]._tAnimData, towner[v16]._tAnimFrame, towner[v16]._tAnimWidth, 0, 8); Cel2DrawHdrOnly(v17, sy, (char *)towner[v16]._tAnimData, towner[v16]._tAnimFrame, towner[v16]._tAnimWidth, 0, 8);
} }
if ( dFlags[0][v7] & 0x20 ) if ( dFlags[0][v7] & DFLAG_PLAYER )
{ {
v18 = -1 - dPlayer[x][y-1]; // -1 - *((_BYTE *)&themeLoc[49].height + v7 + 3); v18 = -1 - dPlayer[x][y-1]; // -1 - *((_BYTE *)&themeLoc[49].height + v7 + 3);
v19 = v18; v19 = v18;
@ -225,7 +225,7 @@ void __fastcall town_draw_clipped_town(void *unused, int x, int y, int sx, int s
town_draw_clipped_e_flag(v27 - 64, xa - 1, y + 1, sx - 64, sy); town_draw_clipped_e_flag(v27 - 64, xa - 1, y + 1, sx - 64, sy);
v7 = v29; v7 = v29;
} }
if ( dFlags[0][v7] & 4 ) if ( dFlags[0][v7] & DFLAG_DEAD_PLAYER )
DrawDeadPlayer(xa, y, sx, sy, 0, 8, 1); DrawDeadPlayer(xa, y, sx, sy, 0, 8, 1);
v22 = dPlayer[0][v7]; v22 = dPlayer[0][v7];
if ( v22 > 0 ) if ( v22 > 0 )
@ -241,7 +241,7 @@ void __fastcall town_draw_clipped_town(void *unused, int x, int y, int sx, int s
town_draw_clipped_e_flag(v27 - 64, xa - 1, y + 1, sx - 64, sy); town_draw_clipped_e_flag(v27 - 64, xa - 1, y + 1, sx - 64, sy);
v7 = v29; v7 = v29;
} }
if ( dFlags[0][v7] & 1 ) if ( dFlags[0][v7] & DFLAG_MISSILE )
DrawClippedMissile(xa, y, sx, sy, 0, 8, 0); DrawClippedMissile(xa, y, sx, sy, 0, 8, 0);
} }
// 4B8CC0: using guessed type char pcursitem; // 4B8CC0: using guessed type char pcursitem;
@ -478,7 +478,7 @@ void __fastcall town_draw_clipped_town_2(int x, int y, int a3, int a4, int a5, i
8); 8);
Cel2DrawHdrOnly(v13, sy, (char *)item[v12]._iAnimData, item[v12]._iAnimFrame, item[v12]._iAnimWidth, a5, 8); Cel2DrawHdrOnly(v13, sy, (char *)item[v12]._iAnimData, item[v12]._iAnimFrame, item[v12]._iAnimWidth, a5, 8);
} }
if ( dFlags[0][v9] & 0x10 ) if ( dFlags[0][v9] & DFLAG_MONSTER )
{ {
v14 = -1 - dMonster[x][y-1]; // -1 - *(&dword_52D204 + v9); /* check */ v14 = -1 - dMonster[x][y-1]; // -1 - *(&dword_52D204 + v9); /* check */
v15 = sx - towner[v14]._tAnimWidth2; v15 = sx - towner[v14]._tAnimWidth2;
@ -512,7 +512,7 @@ void __fastcall town_draw_clipped_town_2(int x, int y, int a3, int a4, int a5, i
8); 8);
Cel2DrawHdrOnly(v19, sy, (char *)towner[v18]._tAnimData, towner[v18]._tAnimFrame, towner[v18]._tAnimWidth, a5, 8); Cel2DrawHdrOnly(v19, sy, (char *)towner[v18]._tAnimData, towner[v18]._tAnimFrame, towner[v18]._tAnimWidth, a5, 8);
} }
if ( dFlags[0][v9] & 0x20 ) if ( dFlags[0][v9] & DFLAG_PLAYER )
{ {
v20 = -1 - dPlayer[x][y-1]; // -1 - *((_BYTE *)&themeLoc[49].height + v9 + 3); v20 = -1 - dPlayer[x][y-1]; // -1 - *((_BYTE *)&themeLoc[49].height + v9 + 3);
v21 = v20; v21 = v20;
@ -525,7 +525,7 @@ void __fastcall town_draw_clipped_town_2(int x, int y, int a3, int a4, int a5, i
town_draw_clipped_e_flag_2((void *)(v29 - 64), xa - 1, a3 + 1, a4, a5, sx - 64, sy); town_draw_clipped_e_flag_2((void *)(v29 - 64), xa - 1, a3 + 1, a4, a5, sx - 64, sy);
v9 = v31; v9 = v31;
} }
if ( dFlags[0][v9] & 4 ) if ( dFlags[0][v9] & DFLAG_DEAD_PLAYER )
DrawDeadPlayer(xa, a3, sx, sy, a5, 8, 1); DrawDeadPlayer(xa, a3, sx, sy, a5, 8, 1);
v24 = dPlayer[0][v9]; v24 = dPlayer[0][v9];
if ( v24 > 0 ) if ( v24 > 0 )
@ -541,7 +541,7 @@ void __fastcall town_draw_clipped_town_2(int x, int y, int a3, int a4, int a5, i
town_draw_clipped_e_flag_2((void *)(v29 - 64), xa - 1, a3 + 1, a4, a5, sx - 64, sy); town_draw_clipped_e_flag_2((void *)(v29 - 64), xa - 1, a3 + 1, a4, a5, sx - 64, sy);
v9 = v31; v9 = v31;
} }
if ( dFlags[0][v9] & 1 ) if ( dFlags[0][v9] & DFLAG_MISSILE )
DrawClippedMissile(xa, a3, sx, sy, a5, 8, 0); DrawClippedMissile(xa, a3, sx, sy, a5, 8, 0);
} }
// 4B8CC0: using guessed type char pcursitem; // 4B8CC0: using guessed type char pcursitem;
@ -763,7 +763,7 @@ void __fastcall town_draw_town_all(void *buffer, int x, int y, int a4, int dir,
CelDecodeClr(181, xx, sy, (char *)item[id]._iAnimData, item[id]._iAnimFrame, item[id]._iAnimWidth, 0, dir); CelDecodeClr(181, xx, sy, (char *)item[id]._iAnimData, item[id]._iAnimFrame, item[id]._iAnimWidth, 0, dir);
CelDrawHdrOnly(xx, sy, (char *)item[id]._iAnimData, item[id]._iAnimFrame, item[id]._iAnimWidth, 0, dir); CelDrawHdrOnly(xx, sy, (char *)item[id]._iAnimData, item[id]._iAnimFrame, item[id]._iAnimWidth, 0, dir);
} }
if ( dFlags[x][y] & 0x10 ) if ( dFlags[x][y] & DFLAG_MONSTER )
{ {
id = -1 - dMonster[x][y-1]; // -1 - *(&dword_52D204 + v9); /* check */ id = -1 - dMonster[x][y-1]; // -1 - *(&dword_52D204 + v9); /* check */
xx = sx - towner[id]._tAnimWidth2; xx = sx - towner[id]._tAnimWidth2;
@ -779,7 +779,7 @@ void __fastcall town_draw_town_all(void *buffer, int x, int y, int a4, int dir,
CelDecodeClr(166, xx, sy, (char *)towner[id]._tAnimData, towner[id]._tAnimFrame, towner[id]._tAnimWidth, 0, dir); CelDecodeClr(166, xx, sy, (char *)towner[id]._tAnimData, towner[id]._tAnimFrame, towner[id]._tAnimWidth, 0, dir);
CelDrawHdrOnly(xx, sy, (char *)towner[id]._tAnimData, towner[id]._tAnimFrame, towner[id]._tAnimWidth, 0, dir); CelDrawHdrOnly(xx, sy, (char *)towner[id]._tAnimData, towner[id]._tAnimFrame, towner[id]._tAnimWidth, 0, dir);
} }
if ( dFlags[x][y] & 0x20 ) if ( dFlags[x][y] & DFLAG_PLAYER )
{ {
id = -1 - dPlayer[x][y-1]; // -1 - *((_BYTE *)&themeLoc[49].height + v9 + 3); id = -1 - dPlayer[x][y-1]; // -1 - *((_BYTE *)&themeLoc[49].height + v9 + 3);
yy = sy + plr[id]._pyoff; yy = sy + plr[id]._pyoff;
@ -790,7 +790,7 @@ void __fastcall town_draw_town_all(void *buffer, int x, int y, int a4, int dir,
if ( some_flag && plr[id]._peflag ) if ( some_flag && plr[id]._peflag )
town_draw_e_flag((char *)buffer - 64, x - 1, y + 1, a4, dir, sx - 64, sy); town_draw_e_flag((char *)buffer - 64, x - 1, y + 1, a4, dir, sx - 64, sy);
} }
if ( dFlags[x][y] & 4 ) if ( dFlags[x][y] & DFLAG_DEAD_PLAYER )
DrawDeadPlayer(x, y, sx, sy, 0, dir, 0); DrawDeadPlayer(x, y, sx, sy, 0, dir, 0);
if ( dPlayer[x][y] > 0 ) if ( dPlayer[x][y] > 0 )
{ {
@ -803,7 +803,7 @@ void __fastcall town_draw_town_all(void *buffer, int x, int y, int a4, int dir,
if ( some_flag && plr[id]._peflag ) if ( some_flag && plr[id]._peflag )
town_draw_e_flag((char *)buffer - 64, x - 1, y + 1, a4, dir, sx - 64, sy); town_draw_e_flag((char *)buffer - 64, x - 1, y + 1, a4, dir, sx - 64, sy);
} }
if ( dFlags[x][y] & 1 ) if ( dFlags[x][y] & DFLAG_MISSILE )
DrawMissile(x, y, sx, sy, 0, dir, 0); DrawMissile(x, y, sx, sy, 0, dir, 0);
} }
// 4B8CC0: using guessed type char pcursitem; // 4B8CC0: using guessed type char pcursitem;

2
Source/trigs.cpp

@ -1101,7 +1101,7 @@ void __cdecl Freeupstairs()
v5 = 5; v5 = 5;
do do
{ {
*v4 |= 8u; *v4 |= DFLAG_POPULATED;
v4 += 112; v4 += 112;
--v5; --v5;
} }

12
enums.h

@ -1652,6 +1652,18 @@ enum dungeon_type
DTYPE_NONE = 0xFF, DTYPE_NONE = 0xFF,
}; };
enum dflag
{
DFLAG_MISSILE = 0x01,
DFLAG_VISIBLE = 0x02,
DFLAG_DEAD_PLAYER = 0x04,
DFLAG_POPULATED = 0x08,
DFLAG_MONSTER = 0x10,
DFLAG_PLAYER = 0x20,
DFLAG_LIT = 0x40,
DFLAG_EXPLORED = 0x80,
};
enum magic_type enum magic_type
{ {
STYPE_FIRE = 0x0, STYPE_FIRE = 0x0,

Loading…
Cancel
Save