From 4260d4cfcc677f4b6c48d4b4d450f894de66ee4e Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Sun, 18 Jul 2021 04:05:07 +0200 Subject: [PATCH] Add OperateObject to MouseAction For continiously operate fountains etc Fixes #1133 --- Source/diablo.cpp | 1 + Source/diablo.h | 1 + Source/track.cpp | 8 ++++++++ 3 files changed, 10 insertions(+) diff --git a/Source/diablo.cpp b/Source/diablo.cpp index fa780d0f0..c7a6637ea 100644 --- a/Source/diablo.cpp +++ b/Source/diablo.cpp @@ -250,6 +250,7 @@ bool LeftMouseCmd(bool bShift) if (pcursitem != -1 && pcurs == CURSOR_HAND && !bShift) { NetSendCmdLocParam1(true, invflag ? CMD_GOTOGETITEM : CMD_GOTOAGETITEM, { cursmx, cursmy }, pcursitem); } else if (pcursobj != -1 && (!objectIsDisabled(pcursobj)) && (!bShift || (bNear && Objects[pcursobj]._oBreak == 1))) { + LastMouseButtonAction = MouseActionType::OperateObject; NetSendCmdLocParam1(true, pcurs == CURSOR_DISARM ? CMD_DISARMXY : CMD_OPOBJXY, { cursmx, cursmy }, pcursobj); } else if (myPlayer.UsesRangedWeapon()) { if (bShift) { diff --git a/Source/diablo.h b/Source/diablo.h index 7fab020c1..b97248cce 100644 --- a/Source/diablo.h +++ b/Source/diablo.h @@ -50,6 +50,7 @@ enum class MouseActionType : int { Attack, AttackMonsterTarget, AttackPlayerTarget, + OperateObject, Other, }; diff --git a/Source/track.cpp b/Source/track.cpp index cc52723c7..1b7a60f3b 100644 --- a/Source/track.cpp +++ b/Source/track.cpp @@ -54,6 +54,14 @@ bool RepeatMouseAction() case MouseActionType::SpellOutOfMana: CheckPlrSpell(true); break; + case MouseActionType::OperateObject: + if (pcursobj != -1) { + auto &object = Objects[pcursobj]; + if (object.IsDoor()) + break; + NetSendCmdLocParam1(true, CMD_OPOBJXY, object.position, pcursobj); + } + break; case MouseActionType::Other: case MouseActionType::None: return false;