diff options
author | jackpoz <giacomopoz@gmail.com> | 2019-05-25 22:33:21 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-12-08 21:33:58 +0100 |
commit | e9aed3e442374db74ebc98edc39ba4ee46acf123 (patch) | |
tree | 2d87e7b5818087e827bb5f69ff2915e67fa22fb4 | |
parent | 6afa2fe45f9fff320013dbeca528530fcbd6b997 (diff) |
Core/SmartAI: Improve SMART_EVENT_GOSSIP_HELLO
Add another value to event_param1 for SMART_EVENT_GOSSIP_HELLO to support all cases of OnGossipHello/OnReportUse in GameObjects:
- event_param1 set to 0: execute the action for both OnGossipHello and OnReportUse. This might result in the action being executed twice when clicking the GameObject
- event_param1 set to 1: execute the action for only OnGossipHello
- event_param1 set to 2: execute the action for only OnReportUse
(cherry picked from commit 9e58ef6940c78d92f1553cf7ab75e87a6e2cf112)
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartScript.cpp | 20 | ||||
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartScriptMgr.h | 2 |
2 files changed, 19 insertions, 3 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index fb074fd69c2..172fa70eb4a 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -3245,8 +3245,24 @@ void SmartScript::ProcessEvent(SmartScriptHolder& e, Unit* unit, uint32 var0, ui ProcessAction(e, unit, var0, var1, bvar, spell, gob); break; case SMART_EVENT_GOSSIP_HELLO: - if (e.event.gossipHello.noReportUse && var0) - return; + switch (e.event.gossipHello.filter) + { + case 0: + // no filter set, always execute action + break; + case 1: + // OnGossipHello only filter set, skip action if OnReportUse + if (var0) + return; + case 2: + // OnReportUse only filter set, skip action if OnGossipHello + if (!var0) + return; + default: + // Ignore any other value + break; + } + ProcessAction(e, unit, var0, var1, bvar, spell, gob); break; case SMART_EVENT_IS_BEHIND_TARGET: diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index 7822e8d554d..d442dfd5469 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -366,7 +366,7 @@ struct SmartEvent struct { - uint32 noReportUse; + uint32 filter; } gossipHello; struct |