Browse Source

Add door state enum

pull/5159/head
Anders Jenbo 4 years ago
parent
commit
70683bf9de
  1. 134
      Source/objects.cpp

134
Source/objects.cpp

@ -91,6 +91,14 @@ enum shrine_type : uint8_t {
NumberOfShrineTypes NumberOfShrineTypes
}; };
enum {
// clang-format off
DOOR_CLOSED = 0,
DOOR_OPEN = 1,
DOOR_BLOCKED = 2,
// clang-format on
};
int trapid; int trapid;
int trapdir; int trapdir;
std::unique_ptr<byte[]> pObjCels[40]; std::unique_ptr<byte[]> pObjCels[40];
@ -1398,7 +1406,7 @@ void ObjectStopAnim(Object &object)
void UpdateDoor(Object &door) void UpdateDoor(Object &door)
{ {
if (door._oVar4 == 0) { if (door._oVar4 == DOOR_CLOSED) {
door._oSelFlag = 3; door._oSelFlag = 3;
door._oMissFlag = false; door._oMissFlag = false;
return; return;
@ -1411,7 +1419,7 @@ void UpdateDoor(Object &door)
dok = dok && dCorpse[dx][dy] == 0; dok = dok && dCorpse[dx][dy] == 0;
dok = dok && dPlayer[dx][dy] == 0; dok = dok && dPlayer[dx][dy] == 0;
door._oSelFlag = 2; door._oSelFlag = 2;
door._oVar4 = dok ? 1 : 2; door._oVar4 = dok ? DOOR_OPEN : DOOR_BLOCKED;
door._oMissFlag = true; door._oMissFlag = true;
} }
@ -1708,13 +1716,13 @@ inline bool IsDoorClear(const Point &doorPosition)
void OperateL1RDoor(Object &door, bool sendflag) void OperateL1RDoor(Object &door, bool sendflag)
{ {
if (door._oVar4 == 2) { if (door._oVar4 == DOOR_BLOCKED) {
if (!deltaload) if (!deltaload)
PlaySfxLoc(IS_DOORCLOS, door.position); PlaySfxLoc(IS_DOORCLOS, door.position);
return; return;
} }
if (door._oVar4 == 0) { if (door._oVar4 == DOOR_CLOSED) {
if (sendflag) if (sendflag)
NetSendCmdLoc(MyPlayerId, true, CMD_OPENDOOR, door.position); NetSendCmdLoc(MyPlayerId, true, CMD_OPENDOOR, door.position);
if (!deltaload) if (!deltaload)
@ -1724,7 +1732,7 @@ void OperateL1RDoor(Object &door, bool sendflag)
door._oAnimFrame += 2; door._oAnimFrame += 2;
door._oPreFlag = true; door._oPreFlag = true;
DoorSet(door.position + Direction::NorthWest, false); DoorSet(door.position + Direction::NorthWest, false);
door._oVar4 = 1; door._oVar4 = DOOR_OPEN;
door._oSelFlag = 2; door._oSelFlag = 2;
RedoPlayerVision(); RedoPlayerVision();
return; return;
@ -1735,7 +1743,7 @@ void OperateL1RDoor(Object &door, bool sendflag)
if (!deltaload && IsDoorClear(door.position)) { if (!deltaload && IsDoorClear(door.position)) {
if (sendflag) if (sendflag)
NetSendCmdLoc(MyPlayerId, true, CMD_CLOSEDOOR, door.position); NetSendCmdLoc(MyPlayerId, true, CMD_CLOSEDOOR, door.position);
door._oVar4 = 0; door._oVar4 = DOOR_CLOSED;
door._oSelFlag = 3; door._oSelFlag = 3;
ObjSetMicro(door.position, door._oVar1 - 1); ObjSetMicro(door.position, door._oVar1 - 1);
@ -1751,19 +1759,19 @@ void OperateL1RDoor(Object &door, bool sendflag)
door._oPreFlag = false; door._oPreFlag = false;
RedoPlayerVision(); RedoPlayerVision();
} else { } else {
door._oVar4 = 2; door._oVar4 = DOOR_BLOCKED;
} }
} }
void OperateL1LDoor(Object &door, bool sendflag) void OperateL1LDoor(Object &door, bool sendflag)
{ {
if (door._oVar4 == 2) { if (door._oVar4 == DOOR_BLOCKED) {
if (!deltaload) if (!deltaload)
PlaySfxLoc(IS_DOORCLOS, door.position); PlaySfxLoc(IS_DOORCLOS, door.position);
return; return;
} }
if (door._oVar4 == 0) { if (door._oVar4 == DOOR_CLOSED) {
if (sendflag) if (sendflag)
NetSendCmdLoc(MyPlayerId, true, CMD_OPENDOOR, door.position); NetSendCmdLoc(MyPlayerId, true, CMD_OPENDOOR, door.position);
if (!deltaload) if (!deltaload)
@ -1776,7 +1784,7 @@ void OperateL1LDoor(Object &door, bool sendflag)
door._oAnimFrame += 2; door._oAnimFrame += 2;
door._oPreFlag = true; door._oPreFlag = true;
DoorSet(door.position + Direction::NorthEast, true); DoorSet(door.position + Direction::NorthEast, true);
door._oVar4 = 1; door._oVar4 = DOOR_OPEN;
door._oSelFlag = 2; door._oSelFlag = 2;
RedoPlayerVision(); RedoPlayerVision();
return; return;
@ -1787,7 +1795,7 @@ void OperateL1LDoor(Object &door, bool sendflag)
if (IsDoorClear(door.position)) { if (IsDoorClear(door.position)) {
if (sendflag) if (sendflag)
NetSendCmdLoc(MyPlayerId, true, CMD_CLOSEDOOR, door.position); NetSendCmdLoc(MyPlayerId, true, CMD_CLOSEDOOR, door.position);
door._oVar4 = 0; door._oVar4 = DOOR_CLOSED;
door._oSelFlag = 3; door._oSelFlag = 3;
ObjSetMicro(door.position, door._oVar1 - 1); ObjSetMicro(door.position, door._oVar1 - 1);
@ -1803,19 +1811,19 @@ void OperateL1LDoor(Object &door, bool sendflag)
door._oPreFlag = false; door._oPreFlag = false;
RedoPlayerVision(); RedoPlayerVision();
} else { } else {
door._oVar4 = 2; door._oVar4 = DOOR_BLOCKED;
} }
} }
void OperateL2RDoor(Object &door, bool sendflag) void OperateL2RDoor(Object &door, bool sendflag)
{ {
if (door._oVar4 == 2) { if (door._oVar4 == DOOR_BLOCKED) {
if (!deltaload) if (!deltaload)
PlaySfxLoc(IS_DOORCLOS, door.position); PlaySfxLoc(IS_DOORCLOS, door.position);
return; return;
} }
if (door._oVar4 == 0) { if (door._oVar4 == DOOR_CLOSED) {
if (sendflag) if (sendflag)
NetSendCmdLoc(MyPlayerId, true, CMD_OPENDOOR, door.position); NetSendCmdLoc(MyPlayerId, true, CMD_OPENDOOR, door.position);
if (!deltaload) if (!deltaload)
@ -1824,7 +1832,7 @@ void OperateL2RDoor(Object &door, bool sendflag)
dSpecial[door.position.x][door.position.y] = 6; dSpecial[door.position.x][door.position.y] = 6;
door._oAnimFrame += 2; door._oAnimFrame += 2;
door._oPreFlag = true; door._oPreFlag = true;
door._oVar4 = 1; door._oVar4 = DOOR_OPEN;
door._oSelFlag = 2; door._oSelFlag = 2;
RedoPlayerVision(); RedoPlayerVision();
return; return;
@ -1836,7 +1844,7 @@ void OperateL2RDoor(Object &door, bool sendflag)
if (IsDoorClear(door.position)) { if (IsDoorClear(door.position)) {
if (sendflag) if (sendflag)
NetSendCmdLoc(MyPlayerId, true, CMD_CLOSEDOOR, door.position); NetSendCmdLoc(MyPlayerId, true, CMD_CLOSEDOOR, door.position);
door._oVar4 = 0; door._oVar4 = DOOR_CLOSED;
door._oSelFlag = 3; door._oSelFlag = 3;
ObjSetMicro(door.position, 539); ObjSetMicro(door.position, 539);
dSpecial[door.position.x][door.position.y] = 0; dSpecial[door.position.x][door.position.y] = 0;
@ -1844,19 +1852,19 @@ void OperateL2RDoor(Object &door, bool sendflag)
door._oPreFlag = false; door._oPreFlag = false;
RedoPlayerVision(); RedoPlayerVision();
} else { } else {
door._oVar4 = 2; door._oVar4 = DOOR_BLOCKED;
} }
} }
void OperateL2LDoor(Object &door, bool sendflag) void OperateL2LDoor(Object &door, bool sendflag)
{ {
if (door._oVar4 == 2) { if (door._oVar4 == DOOR_BLOCKED) {
if (!deltaload) if (!deltaload)
PlaySfxLoc(IS_DOORCLOS, door.position); PlaySfxLoc(IS_DOORCLOS, door.position);
return; return;
} }
if (door._oVar4 == 0) { if (door._oVar4 == DOOR_CLOSED) {
if (sendflag) if (sendflag)
NetSendCmdLoc(MyPlayerId, true, CMD_OPENDOOR, door.position); NetSendCmdLoc(MyPlayerId, true, CMD_OPENDOOR, door.position);
if (!deltaload) if (!deltaload)
@ -1865,7 +1873,7 @@ void OperateL2LDoor(Object &door, bool sendflag)
dSpecial[door.position.x][door.position.y] = 5; dSpecial[door.position.x][door.position.y] = 5;
door._oAnimFrame += 2; door._oAnimFrame += 2;
door._oPreFlag = true; door._oPreFlag = true;
door._oVar4 = 1; door._oVar4 = DOOR_OPEN;
door._oSelFlag = 2; door._oSelFlag = 2;
RedoPlayerVision(); RedoPlayerVision();
return; return;
@ -1877,7 +1885,7 @@ void OperateL2LDoor(Object &door, bool sendflag)
if (IsDoorClear(door.position)) { if (IsDoorClear(door.position)) {
if (sendflag) if (sendflag)
NetSendCmdLoc(MyPlayerId, true, CMD_CLOSEDOOR, door.position); NetSendCmdLoc(MyPlayerId, true, CMD_CLOSEDOOR, door.position);
door._oVar4 = 0; door._oVar4 = DOOR_CLOSED;
door._oSelFlag = 3; door._oSelFlag = 3;
ObjSetMicro(door.position, 537); ObjSetMicro(door.position, 537);
dSpecial[door.position.x][door.position.y] = 0; dSpecial[door.position.x][door.position.y] = 0;
@ -1885,19 +1893,19 @@ void OperateL2LDoor(Object &door, bool sendflag)
door._oPreFlag = false; door._oPreFlag = false;
RedoPlayerVision(); RedoPlayerVision();
} else { } else {
door._oVar4 = 2; door._oVar4 = DOOR_BLOCKED;
} }
} }
void OperateL3RDoor(Object &door, bool sendflag) void OperateL3RDoor(Object &door, bool sendflag)
{ {
if (door._oVar4 == 2) { if (door._oVar4 == DOOR_BLOCKED) {
if (!deltaload) if (!deltaload)
PlaySfxLoc(IS_DOORCLOS, door.position); PlaySfxLoc(IS_DOORCLOS, door.position);
return; return;
} }
if (door._oVar4 == 0) { if (door._oVar4 == DOOR_CLOSED) {
if (sendflag) if (sendflag)
NetSendCmdLoc(MyPlayerId, true, CMD_OPENDOOR, door.position); NetSendCmdLoc(MyPlayerId, true, CMD_OPENDOOR, door.position);
if (!deltaload) if (!deltaload)
@ -1905,7 +1913,7 @@ void OperateL3RDoor(Object &door, bool sendflag)
ObjSetMicro(door.position, 540); ObjSetMicro(door.position, 540);
door._oAnimFrame += 2; door._oAnimFrame += 2;
door._oPreFlag = true; door._oPreFlag = true;
door._oVar4 = 1; door._oVar4 = DOOR_OPEN;
door._oSelFlag = 2; door._oSelFlag = 2;
RedoPlayerVision(); RedoPlayerVision();
return; return;
@ -1917,26 +1925,26 @@ void OperateL3RDoor(Object &door, bool sendflag)
if (IsDoorClear(door.position)) { if (IsDoorClear(door.position)) {
if (sendflag) if (sendflag)
NetSendCmdLoc(MyPlayerId, true, CMD_CLOSEDOOR, door.position); NetSendCmdLoc(MyPlayerId, true, CMD_CLOSEDOOR, door.position);
door._oVar4 = 0; door._oVar4 = DOOR_CLOSED;
door._oSelFlag = 3; door._oSelFlag = 3;
ObjSetMicro(door.position, 533); ObjSetMicro(door.position, 533);
door._oAnimFrame -= 2; door._oAnimFrame -= 2;
door._oPreFlag = false; door._oPreFlag = false;
RedoPlayerVision(); RedoPlayerVision();
} else { } else {
door._oVar4 = 2; door._oVar4 = DOOR_BLOCKED;
} }
} }
void OperateL3LDoor(Object &door, bool sendflag) void OperateL3LDoor(Object &door, bool sendflag)
{ {
if (door._oVar4 == 2) { if (door._oVar4 == DOOR_BLOCKED) {
if (!deltaload) if (!deltaload)
PlaySfxLoc(IS_DOORCLOS, door.position); PlaySfxLoc(IS_DOORCLOS, door.position);
return; return;
} }
if (door._oVar4 == 0) { if (door._oVar4 == DOOR_CLOSED) {
if (sendflag) if (sendflag)
NetSendCmdLoc(MyPlayerId, true, CMD_OPENDOOR, door.position); NetSendCmdLoc(MyPlayerId, true, CMD_OPENDOOR, door.position);
if (!deltaload) if (!deltaload)
@ -1944,7 +1952,7 @@ void OperateL3LDoor(Object &door, bool sendflag)
ObjSetMicro(door.position, 537); ObjSetMicro(door.position, 537);
door._oAnimFrame += 2; door._oAnimFrame += 2;
door._oPreFlag = true; door._oPreFlag = true;
door._oVar4 = 1; door._oVar4 = DOOR_OPEN;
door._oSelFlag = 2; door._oSelFlag = 2;
RedoPlayerVision(); RedoPlayerVision();
return; return;
@ -1956,26 +1964,26 @@ void OperateL3LDoor(Object &door, bool sendflag)
if (IsDoorClear(door.position)) { if (IsDoorClear(door.position)) {
if (sendflag) if (sendflag)
NetSendCmdLoc(MyPlayerId, true, CMD_CLOSEDOOR, door.position); NetSendCmdLoc(MyPlayerId, true, CMD_CLOSEDOOR, door.position);
door._oVar4 = 0; door._oVar4 = DOOR_CLOSED;
door._oSelFlag = 3; door._oSelFlag = 3;
ObjSetMicro(door.position, 530); ObjSetMicro(door.position, 530);
door._oAnimFrame -= 2; door._oAnimFrame -= 2;
door._oPreFlag = false; door._oPreFlag = false;
RedoPlayerVision(); RedoPlayerVision();
} else { } else {
door._oVar4 = 2; door._oVar4 = DOOR_BLOCKED;
} }
} }
void OperateL5RDoor(Object &door, bool sendflag) void OperateL5RDoor(Object &door, bool sendflag)
{ {
if (door._oVar4 == 2) { if (door._oVar4 == DOOR_BLOCKED) {
if (!deltaload) if (!deltaload)
PlaySfxLoc(IS_DOORCLOS, door.position); PlaySfxLoc(IS_DOORCLOS, door.position);
return; return;
} }
if (door._oVar4 == 0) { if (door._oVar4 == DOOR_CLOSED) {
if (sendflag) if (sendflag)
NetSendCmdLoc(MyPlayerId, true, CMD_OPENDOOR, door.position); NetSendCmdLoc(MyPlayerId, true, CMD_OPENDOOR, door.position);
if (!deltaload) if (!deltaload)
@ -1985,7 +1993,7 @@ void OperateL5RDoor(Object &door, bool sendflag)
door._oAnimFrame += 2; door._oAnimFrame += 2;
door._oPreFlag = true; door._oPreFlag = true;
CryptDoorSet(door.position + Direction::NorthWest, false); CryptDoorSet(door.position + Direction::NorthWest, false);
door._oVar4 = 1; door._oVar4 = DOOR_OPEN;
door._oSelFlag = 2; door._oSelFlag = 2;
RedoPlayerVision(); RedoPlayerVision();
return; return;
@ -1996,7 +2004,7 @@ void OperateL5RDoor(Object &door, bool sendflag)
if (!deltaload && IsDoorClear(door.position)) { if (!deltaload && IsDoorClear(door.position)) {
if (sendflag) if (sendflag)
NetSendCmdLoc(MyPlayerId, true, CMD_CLOSEDOOR, door.position); NetSendCmdLoc(MyPlayerId, true, CMD_CLOSEDOOR, door.position);
door._oVar4 = 0; door._oVar4 = DOOR_CLOSED;
door._oSelFlag = 3; door._oSelFlag = 3;
ObjSetMicro(door.position, door._oVar1 - 1); ObjSetMicro(door.position, door._oVar1 - 1);
@ -2012,19 +2020,19 @@ void OperateL5RDoor(Object &door, bool sendflag)
door._oPreFlag = false; door._oPreFlag = false;
RedoPlayerVision(); RedoPlayerVision();
} else { } else {
door._oVar4 = 2; door._oVar4 = DOOR_BLOCKED;
} }
} }
void OperateL5LDoor(Object &door, bool sendflag) void OperateL5LDoor(Object &door, bool sendflag)
{ {
if (door._oVar4 == 2) { if (door._oVar4 == DOOR_BLOCKED) {
if (!deltaload) if (!deltaload)
PlaySfxLoc(IS_DOORCLOS, door.position); PlaySfxLoc(IS_DOORCLOS, door.position);
return; return;
} }
if (door._oVar4 == 0) { if (door._oVar4 == DOOR_CLOSED) {
if (sendflag) if (sendflag)
NetSendCmdLoc(MyPlayerId, true, CMD_OPENDOOR, door.position); NetSendCmdLoc(MyPlayerId, true, CMD_OPENDOOR, door.position);
if (!deltaload) if (!deltaload)
@ -2034,7 +2042,7 @@ void OperateL5LDoor(Object &door, bool sendflag)
door._oAnimFrame += 2; door._oAnimFrame += 2;
door._oPreFlag = true; door._oPreFlag = true;
CryptDoorSet(door.position + Direction::NorthEast, true); CryptDoorSet(door.position + Direction::NorthEast, true);
door._oVar4 = 1; door._oVar4 = DOOR_OPEN;
door._oSelFlag = 2; door._oSelFlag = 2;
RedoPlayerVision(); RedoPlayerVision();
return; return;
@ -2045,7 +2053,7 @@ void OperateL5LDoor(Object &door, bool sendflag)
if (IsDoorClear(door.position)) { if (IsDoorClear(door.position)) {
if (sendflag) if (sendflag)
NetSendCmdLoc(MyPlayerId, true, CMD_CLOSEDOOR, door.position); NetSendCmdLoc(MyPlayerId, true, CMD_CLOSEDOOR, door.position);
door._oVar4 = 0; door._oVar4 = DOOR_CLOSED;
door._oSelFlag = 3; door._oSelFlag = 3;
ObjSetMicro(door.position, door._oVar1 - 1); ObjSetMicro(door.position, door._oVar1 - 1);
@ -2061,7 +2069,7 @@ void OperateL5LDoor(Object &door, bool sendflag)
door._oPreFlag = false; door._oPreFlag = false;
RedoPlayerVision(); RedoPlayerVision();
} else { } else {
door._oVar4 = 2; door._oVar4 = DOOR_BLOCKED;
} }
} }
@ -3654,9 +3662,9 @@ void OperateLazStand(Object &stand)
void SyncOpL1Door(int cmd, Object &door) void SyncOpL1Door(int cmd, Object &door)
{ {
bool doSync = false; bool doSync = false;
if (cmd == CMD_OPENDOOR && door._oVar4 == 0) if (cmd == CMD_OPENDOOR && door._oVar4 == DOOR_CLOSED)
doSync = true; doSync = true;
if (cmd == CMD_CLOSEDOOR && door._oVar4 == 1) if (cmd == CMD_CLOSEDOOR && door._oVar4 == DOOR_OPEN)
doSync = true; doSync = true;
if (!doSync) if (!doSync)
return; return;
@ -3670,9 +3678,9 @@ void SyncOpL1Door(int cmd, Object &door)
void SyncOpL2Door(int cmd, Object &door) void SyncOpL2Door(int cmd, Object &door)
{ {
bool doSync = false; bool doSync = false;
if (cmd == CMD_OPENDOOR && door._oVar4 == 0) if (cmd == CMD_OPENDOOR && door._oVar4 == DOOR_CLOSED)
doSync = true; doSync = true;
if (cmd == CMD_CLOSEDOOR && door._oVar4 == 1) if (cmd == CMD_CLOSEDOOR && door._oVar4 == DOOR_OPEN)
doSync = true; doSync = true;
if (!doSync) if (!doSync)
return; return;
@ -3686,9 +3694,9 @@ void SyncOpL2Door(int cmd, Object &door)
void SyncOpL3Door(int cmd, Object &door) void SyncOpL3Door(int cmd, Object &door)
{ {
bool doSync = false; bool doSync = false;
if (cmd == CMD_OPENDOOR && door._oVar4 == 0) if (cmd == CMD_OPENDOOR && door._oVar4 == DOOR_CLOSED)
doSync = true; doSync = true;
if (cmd == CMD_CLOSEDOOR && door._oVar4 == 1) if (cmd == CMD_CLOSEDOOR && door._oVar4 == DOOR_OPEN)
doSync = true; doSync = true;
if (!doSync) if (!doSync)
return; return;
@ -3702,9 +3710,9 @@ void SyncOpL3Door(int cmd, Object &door)
void SyncOpL5Door(int cmd, Object &door) void SyncOpL5Door(int cmd, Object &door)
{ {
bool doSync = false; bool doSync = false;
if (cmd == CMD_OPENDOOR && door._oVar4 == 0) if (cmd == CMD_OPENDOOR && door._oVar4 == DOOR_CLOSED)
doSync = true; doSync = true;
if (cmd == CMD_CLOSEDOOR && door._oVar4 == 1) if (cmd == CMD_CLOSEDOOR && door._oVar4 == DOOR_OPEN)
doSync = true; doSync = true;
if (!doSync) if (!doSync)
return; return;
@ -3864,7 +3872,7 @@ void SyncPedestal(const Object &pedestal, Point origin, int width)
void SyncL1Doors(Object &door) void SyncL1Doors(Object &door)
{ {
if (door._oVar4 == 0) { if (door._oVar4 == DOOR_CLOSED) {
door._oMissFlag = false; door._oMissFlag = false;
return; return;
} }
@ -3887,18 +3895,18 @@ void SyncL1Doors(Object &door)
void SyncL2Doors(Object &door) void SyncL2Doors(Object &door)
{ {
door._oMissFlag = door._oVar4 != 0; door._oMissFlag = door._oVar4 != DOOR_CLOSED;
door._oSelFlag = 2; door._oSelFlag = 2;
bool isLeftDoor = door._otype == _object_id::OBJ_L2LDOOR; // otherwise the door is type OBJ_L2RDOOR bool isLeftDoor = door._otype == _object_id::OBJ_L2LDOOR; // otherwise the door is type OBJ_L2RDOOR
switch (door._oVar4) { switch (door._oVar4) {
case 0: case DOOR_CLOSED:
ObjSetMicro(door.position, isLeftDoor ? 537 : 539); ObjSetMicro(door.position, isLeftDoor ? 537 : 539);
dSpecial[door.position.x][door.position.y] = 0; dSpecial[door.position.x][door.position.y] = 0;
break; break;
case 1: case DOOR_OPEN:
case 2: case DOOR_BLOCKED:
ObjSetMicro(door.position, isLeftDoor ? 12 : 16); ObjSetMicro(door.position, isLeftDoor ? 12 : 16);
dSpecial[door.position.x][door.position.y] = isLeftDoor ? 5 : 6; dSpecial[door.position.x][door.position.y] = isLeftDoor ? 5 : 6;
break; break;
@ -3913,11 +3921,11 @@ void SyncL3Doors(Object &door)
bool isLeftDoor = door._otype == _object_id::OBJ_L3LDOOR; // otherwise the door is type OBJ_L3RDOOR bool isLeftDoor = door._otype == _object_id::OBJ_L3LDOOR; // otherwise the door is type OBJ_L3RDOOR
switch (door._oVar4) { switch (door._oVar4) {
case 0: case DOOR_CLOSED:
ObjSetMicro(door.position, isLeftDoor ? 530 : 533); ObjSetMicro(door.position, isLeftDoor ? 530 : 533);
break; break;
case 1: case DOOR_OPEN:
case 2: case DOOR_BLOCKED:
ObjSetMicro(door.position, isLeftDoor ? 537 : 540); ObjSetMicro(door.position, isLeftDoor ? 537 : 540);
break; break;
} }
@ -3925,7 +3933,7 @@ void SyncL3Doors(Object &door)
void SyncL5Doors(Object &door) void SyncL5Doors(Object &door)
{ {
if (door._oVar4 == 0) { if (door._oVar4 == DOOR_CLOSED) {
door._oMissFlag = false; door._oMissFlag = false;
return; return;
} }
@ -4659,7 +4667,7 @@ void MonstCheckDoors(const Monster &monster)
Object &door = *object; Object &door = *object;
// Doors use _oVar4 to track open/closed state, non-zero values indicate an open door // Doors use _oVar4 to track open/closed state, non-zero values indicate an open door
// we don't use Object::isDoor since the later conditions will check the object is actually a door anyway. // we don't use Object::isDoor since the later conditions will check the object is actually a door anyway.
if (door._oVar4 != 0) if (door._oVar4 != DOOR_CLOSED)
continue; continue;
// Strictly speaking these checks shouldn't be required, they're guarding against monsters // Strictly speaking these checks shouldn't be required, they're guarding against monsters
@ -5180,11 +5188,11 @@ void GetObjectStr(const Object &object)
case OBJ_L3RDOOR: case OBJ_L3RDOOR:
case OBJ_L5LDOOR: case OBJ_L5LDOOR:
case OBJ_L5RDOOR: case OBJ_L5RDOOR:
if (object._oVar4 == 1) if (object._oVar4 == DOOR_OPEN)
InfoString = _("Open Door"); InfoString = _("Open Door");
if (object._oVar4 == 0) if (object._oVar4 == DOOR_CLOSED)
InfoString = _("Closed Door"); InfoString = _("Closed Door");
if (object._oVar4 == 2) if (object._oVar4 == DOOR_BLOCKED)
InfoString = _("Blocked Door"); InfoString = _("Blocked Door");
break; break;
case OBJ_BOOK2L: case OBJ_BOOK2L:

Loading…
Cancel
Save