aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjackpoz <giacomopoz@gmail.com>2019-05-25 22:33:21 +0200
committerShauren <shauren.trinity@gmail.com>2021-12-08 21:33:58 +0100
commite9aed3e442374db74ebc98edc39ba4ee46acf123 (patch)
tree2d87e7b5818087e827bb5f69ff2915e67fa22fb4
parent6afa2fe45f9fff320013dbeca528530fcbd6b997 (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.cpp20
-rw-r--r--src/server/game/AI/SmartScripts/SmartScriptMgr.h2
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