From 2d9531f692e4445d905daf065c01df673e34b24e Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Mon, 1 Aug 2022 05:56:59 +0200 Subject: [PATCH] Remove redundant check for distance when operating doors IsPlayerAdjacentToObject() is checked before calling OperateObject(). Previously teleFlag would ignore sendmsg which was likely a bug causing the event to fire multiple times. --- Source/objects.cpp | 4 ++-- Source/objects.h | 2 +- Source/player.cpp | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Source/objects.cpp b/Source/objects.cpp index 29d186d31..6e04f81c3 100644 --- a/Source/objects.cpp +++ b/Source/objects.cpp @@ -4321,7 +4321,7 @@ int ItemMiscIdIdx(item_misc_id imiscid) return i; } -void OperateObject(Player &player, int i, bool teleFlag) +void OperateObject(Player &player, int i) { Object &object = Objects[i]; bool sendmsg = &player == MyPlayer; @@ -4335,7 +4335,7 @@ void OperateObject(Player &player, int i, bool teleFlag) case OBJ_L3RDOOR: case OBJ_L5LDOOR: case OBJ_L5RDOOR: - if (teleFlag || (sendmsg && abs(object.position.x - player.position.tile.x) <= 1 && abs(object.position.y - player.position.tile.y) <= 1)) + if (sendmsg) OperateDoor(object, sendmsg); break; case OBJ_LEVER: diff --git a/Source/objects.h b/Source/objects.h index 747435b79..9fd99d8eb 100644 --- a/Source/objects.h +++ b/Source/objects.h @@ -314,7 +314,7 @@ void MonstCheckDoors(const Monster &monster); void ObjChangeMap(int x1, int y1, int x2, int y2); void ObjChangeMapResync(int x1, int y1, int x2, int y2); int ItemMiscIdIdx(item_misc_id imiscid); -void OperateObject(Player &player, int i, bool TeleFlag); +void OperateObject(Player &player, int i); void SyncOpObject(Player &player, int cmd, Object &object); void BreakObjectMissile(Object &object); void BreakObject(const Player &player, Object &object); diff --git a/Source/player.cpp b/Source/player.cpp index 914edcbd6..212dc48b9 100644 --- a/Source/player.cpp +++ b/Source/player.cpp @@ -1480,7 +1480,7 @@ void CheckNewPath(Player &player, bool pmWillBeCalled) d = GetDirection(player.position.tile, object->position); StartAttack(player, d); } else { - OperateObject(player, targetId, false); + OperateObject(player, targetId); } } break; @@ -1491,13 +1491,13 @@ void CheckNewPath(Player &player, bool pmWillBeCalled) StartAttack(player, d); } else { TryDisarm(player, *object); - OperateObject(player, targetId, false); + OperateObject(player, targetId); } } break; case ACTION_OPERATETK: if (object->_oBreak != 1) { - OperateObject(player, targetId, true); + OperateObject(player, targetId); } break; case ACTION_PICKUPITEM: