From 37ad8a438ae7f5f3a9222c65d08c053d9738db8b Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Mon, 1 Aug 2022 14:21:28 +0200 Subject: [PATCH] Remove some redundant door logic --- Source/objects.cpp | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/Source/objects.cpp b/Source/objects.cpp index 6127f283c..5256c716b 100644 --- a/Source/objects.cpp +++ b/Source/objects.cpp @@ -1161,6 +1161,9 @@ void SetDoorStateOpen(Object &door) switch (door._otype) { case OBJ_L1LDOOR: + // 214: blood splater + // 407: blood pool + // 392: open door (no frame) ObjSetMicro(door.position, door._oVar1 == 214 ? 407 : 392); dSpecial[door.position.x][door.position.y] = 7; DoorSet(door.position + Direction::NorthEast, true); @@ -1208,6 +1211,8 @@ void SetDoorStateClosed(Object &door) switch (door._otype) { case OBJ_L1LDOOR: { + // Clear overlapping arches + dSpecial[door.position.x][door.position.y] = 0; ObjSetMicro(door.position, door._oVar1 - 1); // Restore the normal tile where the open door used to be @@ -1216,11 +1221,11 @@ void SetDoorStateClosed(Object &door) ObjSetMicro(openPosition, 411); else ObjSetMicro(openPosition, door._oVar2 - 1); - - dSpecial[door.position.x][door.position.y] = 0; break; } break; case OBJ_L1RDOOR: { + // Clear overlapping arches + dSpecial[door.position.x][door.position.y] = 0; ObjSetMicro(door.position, door._oVar1 - 1); // Restore the normal tile where the open door used to be @@ -1229,17 +1234,17 @@ void SetDoorStateClosed(Object &door) ObjSetMicro(openPosition, 410); else ObjSetMicro(openPosition, door._oVar2 - 1); - - dSpecial[door.position.x][door.position.y] = 0; break; } break; case OBJ_L2LDOOR: - ObjSetMicro(door.position, 537); + // Clear overlapping arches dSpecial[door.position.x][door.position.y] = 0; + ObjSetMicro(door.position, 537); break; case OBJ_L2RDOOR: - ObjSetMicro(door.position, 539); + // Clear overlapping arches dSpecial[door.position.x][door.position.y] = 0; + ObjSetMicro(door.position, 539); break; case OBJ_L3LDOOR: ObjSetMicro(door.position, 530); @@ -1627,13 +1632,9 @@ inline bool IsDoorClear(const Object &door) void UpdateDoor(Object &door) { if (door._oVar4 == DOOR_CLOSED) { - door._oMissFlag = false; - door._oSelFlag = 3; return; } - door._oMissFlag = true; - door._oSelFlag = 2; door._oVar4 = IsDoorClear(door) ? DOOR_OPEN : DOOR_BLOCKED; } @@ -4358,7 +4359,7 @@ bool UpdateTrapState(Object &trap) case OBJ_L3RDOOR: case OBJ_L5LDOOR: case OBJ_L5RDOOR: - if (trigger._oVar4 == 0) + if (trigger._oVar4 == DOOR_CLOSED) return false; break; case OBJ_LEVER: