Browse Source

make PosOkPlayer bin exact

pull/4/head
Andrew Dunstan 8 years ago
parent
commit
ae703ea7b0
  1. 77
      Source/player.cpp

77
Source/player.cpp

@ -3565,54 +3565,51 @@ void __fastcall ClrPlrPath(int pnum)
BOOL __fastcall PosOkPlayer(int pnum, int px, int py) BOOL __fastcall PosOkPlayer(int pnum, int px, int py)
{ {
if ( px < 0 || px >= MAXDUNX || py < 0 || py >= MAXDUNY ) { BOOL PosOK = FALSE;
return FALSE; if ( px >= 0 && px < MAXDUNX && py >= 0 && py < MAXDUNY &&
} !SolidLoc(px, py) && dPiece[px][py] ) {
if ( SolidLoc(px, py) ) { if ( dPlayer[px][py] ) {
return FALSE; DWORD p;
} if ( dPlayer[px][py] > 0 ) {
p = dPlayer[px][py] - 1;
if ( !dPiece[px][py] ) {
return FALSE;
}
if ( dPlayer[px][py] ) {
DWORD p;
if ( dPlayer[px][py] > 0 ) {
p = dPlayer[px][py] - 1;
} else { } else {
p = -(dPlayer[px][py] + 1); p = -(dPlayer[px][py] + 1);
} }
if ( p != pnum && p < MAX_PLRS && plr[p]._pHitPoints ) { if ( p != pnum && p < MAX_PLRS && plr[p]._pHitPoints ) {
return FALSE; return FALSE;
}
} }
}
if ( dMonster[px][py] ) { if ( dMonster[px][py] ) {
if ( !currlevel ) { if ( !currlevel ) {
return FALSE; return FALSE;
} }
if ( dMonster[px][py] <= 0 ) { if ( dMonster[px][py] <= 0 ) {
return FALSE; return FALSE;
} }
if ( (monster[dMonster[px][py] - 1]._mhitpoints >> 6) > 0 ) { if ( (monster[dMonster[px][py] - 1]._mhitpoints >> 6) > 0 ) {
return FALSE; return FALSE;
} }
} }
if ( dObject[px][py] ) { if ( dObject[px][py] ) {
char bv; char bv;
if ( dObject[px][py] > 0 ) { if ( dObject[px][py] > 0 ) {
bv = dObject[px][py] - 1; bv = dObject[px][py] - 1;
} else { } else {
bv = -(dObject[px][py] + 1); bv = -(dObject[px][py] + 1);
} }
if ( object[bv]._oSolidFlag ) { if ( object[bv]._oSolidFlag ) {
return FALSE; return FALSE;
}
} }
PosOK = TRUE;
} }
if ( !PosOK )
return FALSE;
return TRUE; return TRUE;
} }

Loading…
Cancel
Save