|
|
|
|
@ -282,11 +282,11 @@ void FreeObjectGFX()
|
|
|
|
|
|
|
|
|
|
DIABOOL RndLocOk(int xp, int yp) |
|
|
|
|
{ |
|
|
|
|
if (dMonster[xp][yp]) |
|
|
|
|
if (dMonster[xp][yp] != 0) |
|
|
|
|
return FALSE; |
|
|
|
|
if (dPlayer[xp][yp]) |
|
|
|
|
if (dPlayer[xp][yp] != 0) |
|
|
|
|
return FALSE; |
|
|
|
|
if (dObject[xp][yp]) |
|
|
|
|
if (dObject[xp][yp] != 0) |
|
|
|
|
return FALSE; |
|
|
|
|
if (dFlags[xp][yp] & BFLAG_POPULATED) |
|
|
|
|
return FALSE; |
|
|
|
|
@ -1971,10 +1971,10 @@ void Obj_Door(int i)
|
|
|
|
|
} else { |
|
|
|
|
dx = object[i]._ox; |
|
|
|
|
dy = object[i]._oy; |
|
|
|
|
dok = !dMonster[dx][dy]; |
|
|
|
|
dok = dok HFAND !dItem[dx][dy]; |
|
|
|
|
dok = dok HFAND !dDead[dx][dy]; |
|
|
|
|
dok = dok HFAND !dPlayer[dx][dy]; |
|
|
|
|
dok = dMonster[dx][dy] == 0; |
|
|
|
|
dok = dok HFAND (dItem[dx][dy] == 0); |
|
|
|
|
dok = dok HFAND (dDead[dx][dy] == 0); |
|
|
|
|
dok = dok HFAND (dPlayer[dx][dy] == 0); |
|
|
|
|
object[i]._oSelFlag = 2; |
|
|
|
|
object[i]._oVar4 = dok ? 1 : 2; |
|
|
|
|
object[i]._oMissFlag = TRUE; |
|
|
|
|
@ -2022,7 +2022,7 @@ void Obj_FlameTrap(int i)
|
|
|
|
|
x = object[i]._ox - 2; |
|
|
|
|
y = object[i]._oy; |
|
|
|
|
for (j = 0; j < 5; j++) { |
|
|
|
|
if (dPlayer[x][y] || dMonster[x][y]) |
|
|
|
|
if (dPlayer[x][y] != 0 || dMonster[x][y] != 0) |
|
|
|
|
object[i]._oVar4 = 1; |
|
|
|
|
x++; |
|
|
|
|
} |
|
|
|
|
@ -2030,7 +2030,7 @@ void Obj_FlameTrap(int i)
|
|
|
|
|
x = object[i]._ox; |
|
|
|
|
y = object[i]._oy - 2; |
|
|
|
|
for (k = 0; k < 5; k++) { |
|
|
|
|
if (dPlayer[x][y] || dMonster[x][y]) |
|
|
|
|
if (dPlayer[x][y] != 0 || dMonster[x][y] != 0) |
|
|
|
|
object[i]._oVar4 = 1; |
|
|
|
|
y++; |
|
|
|
|
} |
|
|
|
|
@ -2082,7 +2082,7 @@ void Obj_Trap(int i)
|
|
|
|
|
dy = object[oti]._oy; |
|
|
|
|
for (y = dy - 1; y <= object[oti]._oy + 1; y++) { |
|
|
|
|
for (x = object[oti]._ox - 1; x <= object[oti]._ox + 1; x++) { |
|
|
|
|
if (dPlayer[x][y]) { |
|
|
|
|
if (dPlayer[x][y] != 0) { |
|
|
|
|
dx = x; |
|
|
|
|
dy = y; |
|
|
|
|
} |
|
|
|
|
@ -2542,9 +2542,9 @@ void OperateL1RDoor(int pnum, int oi, DIABOOL sendflag)
|
|
|
|
|
if (!deltaload) |
|
|
|
|
PlaySfxLoc(IS_CRCLOS, xp, object[oi]._oy); |
|
|
|
|
} |
|
|
|
|
BOOLEAN dok = !dMonster[xp][yp]; |
|
|
|
|
dok = dok && !dItem[xp][yp]; |
|
|
|
|
dok = dok && !dDead[xp][yp]; |
|
|
|
|
BOOLEAN dok = dMonster[xp][yp] == 0; |
|
|
|
|
dok = dok && dItem[xp][yp] == 0; |
|
|
|
|
dok = dok && dDead[xp][yp] == 0; |
|
|
|
|
if (dok) { |
|
|
|
|
#else |
|
|
|
|
if (!deltaload) |
|
|
|
|
@ -2650,9 +2650,9 @@ void OperateL1LDoor(int pnum, int oi, DIABOOL sendflag)
|
|
|
|
|
if (!deltaload) |
|
|
|
|
PlaySfxLoc(IS_CRCLOS, xp, object[oi]._oy); |
|
|
|
|
} |
|
|
|
|
BOOLEAN dok = !dMonster[xp][yp]; |
|
|
|
|
dok = dok && !dItem[xp][yp]; |
|
|
|
|
dok = dok && !dDead[xp][yp]; |
|
|
|
|
BOOLEAN dok = dMonster[xp][yp] == 0; |
|
|
|
|
dok = dok && dItem[xp][yp] == 0; |
|
|
|
|
dok = dok && dDead[xp][yp] == 0; |
|
|
|
|
if (dok) { |
|
|
|
|
#else |
|
|
|
|
if (!deltaload) |
|
|
|
|
@ -2723,9 +2723,9 @@ void OperateL2RDoor(int pnum, int oi, DIABOOL sendflag)
|
|
|
|
|
|
|
|
|
|
if (!deltaload) |
|
|
|
|
PlaySfxLoc(IS_DOORCLOS, object[oi]._ox, yp); |
|
|
|
|
dok = !dMonster[xp][yp]; |
|
|
|
|
dok = dok HFAND !dItem[xp][yp]; |
|
|
|
|
dok = dok HFAND !dDead[xp][yp]; |
|
|
|
|
dok = dMonster[xp][yp] == 0; |
|
|
|
|
dok = dok HFAND (dItem[xp][yp] == 0); |
|
|
|
|
dok = dok HFAND (dDead[xp][yp] == 0); |
|
|
|
|
if (dok) { |
|
|
|
|
if (pnum == myplr && sendflag) |
|
|
|
|
NetSendCmdParam1(TRUE, CMD_CLOSEDOOR, oi); |
|
|
|
|
@ -2768,9 +2768,9 @@ void OperateL2LDoor(int pnum, int oi, BOOL sendflag)
|
|
|
|
|
|
|
|
|
|
if (!deltaload) |
|
|
|
|
PlaySfxLoc(IS_DOORCLOS, object[oi]._ox, yp); |
|
|
|
|
dok = !dMonster[xp][yp]; |
|
|
|
|
dok = dok HFAND !dItem[xp][yp]; |
|
|
|
|
dok = dok HFAND !dDead[xp][yp]; |
|
|
|
|
dok = dMonster[xp][yp] == 0; |
|
|
|
|
dok = dok HFAND (dItem[xp][yp] == 0); |
|
|
|
|
dok = dok HFAND (dDead[xp][yp] == 0); |
|
|
|
|
if (dok) { |
|
|
|
|
if (pnum == myplr && sendflag) |
|
|
|
|
NetSendCmdParam1(TRUE, CMD_CLOSEDOOR, oi); |
|
|
|
|
@ -2814,9 +2814,9 @@ void OperateL3RDoor(int pnum, int oi, DIABOOL sendflag)
|
|
|
|
|
|
|
|
|
|
if (!deltaload) |
|
|
|
|
PlaySfxLoc(IS_DOORCLOS, object[oi]._ox, yp); |
|
|
|
|
dok = !dMonster[xp][yp]; |
|
|
|
|
dok = dok HFAND !dItem[xp][yp]; |
|
|
|
|
dok = dok HFAND !dDead[xp][yp]; |
|
|
|
|
dok = dMonster[xp][yp] == 0; |
|
|
|
|
dok = dok HFAND (dItem[xp][yp] == 0); |
|
|
|
|
dok = dok HFAND (dDead[xp][yp] == 0); |
|
|
|
|
if (dok) { |
|
|
|
|
if (pnum == myplr && sendflag) |
|
|
|
|
NetSendCmdParam1(TRUE, CMD_CLOSEDOOR, oi); |
|
|
|
|
@ -2860,9 +2860,9 @@ void OperateL3LDoor(int pnum, int oi, DIABOOL sendflag)
|
|
|
|
|
|
|
|
|
|
if (!deltaload) |
|
|
|
|
PlaySfxLoc(IS_DOORCLOS, object[oi]._ox, yp); |
|
|
|
|
dok = !dMonster[xp][yp]; |
|
|
|
|
dok = dok HFAND !dItem[xp][yp]; |
|
|
|
|
dok = dok HFAND !dDead[xp][yp]; |
|
|
|
|
dok = dMonster[xp][yp] == 0; |
|
|
|
|
dok = dok HFAND (dItem[xp][yp] == 0); |
|
|
|
|
dok = dok HFAND (dDead[xp][yp] == 0); |
|
|
|
|
if (dok) { |
|
|
|
|
if (pnum == myplr && sendflag) |
|
|
|
|
NetSendCmdParam1(TRUE, CMD_CLOSEDOOR, oi); |
|
|
|
|
@ -2884,14 +2884,14 @@ void MonstCheckDoors(int m)
|
|
|
|
|
|
|
|
|
|
mx = monster[m]._mx; |
|
|
|
|
my = monster[m]._my; |
|
|
|
|
if (dObject[mx - 1][my - 1] |
|
|
|
|
|| dObject[mx][my - 1] |
|
|
|
|
|| dObject[mx + 1][my - 1] |
|
|
|
|
|| dObject[mx - 1][my] |
|
|
|
|
|| dObject[mx + 1][my] |
|
|
|
|
|| dObject[mx - 1][my + 1] |
|
|
|
|
|| dObject[mx][my + 1] |
|
|
|
|
|| dObject[mx + 1][my + 1]) { |
|
|
|
|
if (dObject[mx - 1][my - 1] != 0 |
|
|
|
|
|| dObject[mx][my - 1] != 0 |
|
|
|
|
|| dObject[mx + 1][my - 1] != 0 |
|
|
|
|
|| dObject[mx - 1][my] != 0 |
|
|
|
|
|| dObject[mx + 1][my] != 0 |
|
|
|
|
|| dObject[mx - 1][my + 1] != 0 |
|
|
|
|
|| dObject[mx][my + 1] != 0 |
|
|
|
|
|| dObject[mx + 1][my + 1] != 0) { |
|
|
|
|
for (i = 0; i < nobjects; ++i) { |
|
|
|
|
oi = objectactive[i]; |
|
|
|
|
if ((object[oi]._otype == OBJ_L1LDOOR || object[oi]._otype == OBJ_L1RDOOR) && object[oi]._oVar4 == 0) { |
|
|
|
|
@ -3908,7 +3908,7 @@ void OperateShrine(int pnum, int i, int sType)
|
|
|
|
|
if (j > MAXDUNX * 112) |
|
|
|
|
break; |
|
|
|
|
lv = dPiece[xx][yy]; |
|
|
|
|
} while (nSolidTable[lv] || dObject[xx][yy] || dMonster[xx][yy]); |
|
|
|
|
} while (nSolidTable[lv] || dObject[xx][yy] != 0 || dMonster[xx][yy] != 0); |
|
|
|
|
AddMissile(plr[pnum]._px, plr[pnum]._py, xx, yy, plr[pnum]._pdir, MIS_RNDTELEPORT, -1, pnum, 0, 2 * leveltype); |
|
|
|
|
if (pnum != myplr) |
|
|
|
|
return; |
|
|
|
|
|