aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorModoX <moardox@gmail.com>2021-10-26 22:58:49 +0200
committerGitHub <noreply@github.com>2021-10-26 22:58:49 +0200
commit6ebd5926fb61a5457d7048504d2f92bc3c9318ab (patch)
tree3e1dff9f496bf0307203a9544fc78c691af30667
parent94b14e4f6355a7bab8004dcc2ecadadbc52833de (diff)
Core/Conditions: Added conditions for old areatrigger system (AreaTrigger.db2) (#27174)
-rw-r--r--src/server/game/Conditions/ConditionMgr.cpp7
-rw-r--r--src/server/game/Conditions/ConditionMgr.h3
-rw-r--r--src/server/game/Handlers/MiscHandler.cpp3
3 files changed, 12 insertions, 1 deletions
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp
index 9a8abba5482..93ee5c2625c 100644
--- a/src/server/game/Conditions/ConditionMgr.cpp
+++ b/src/server/game/Conditions/ConditionMgr.cpp
@@ -1924,6 +1924,13 @@ bool ConditionMgr::isSourceTypeValid(Condition* cond) const
return false;
}
break;
+ case CONDITION_SOURCE_TYPE_AREATRIGGER_CLIENT_TRIGGERED:
+ if (!sAreaTriggerStore.LookupEntry(cond->SourceEntry))
+ {
+ TC_LOG_ERROR("sql.sql", "%s SourceEntry in `condition` table, does not exists in AreaTrigger.db2, ignoring.", cond->ToString().c_str());
+ return false;
+ }
+ break;
default:
TC_LOG_ERROR("sql.sql", "%s Invalid ConditionSourceType in `condition` table, ignoring.", cond->ToString().c_str());
return false;
diff --git a/src/server/game/Conditions/ConditionMgr.h b/src/server/game/Conditions/ConditionMgr.h
index 3ce9b8564e2..496bd43974a 100644
--- a/src/server/game/Conditions/ConditionMgr.h
+++ b/src/server/game/Conditions/ConditionMgr.h
@@ -170,7 +170,8 @@ enum ConditionSourceType
CONDITION_SOURCE_TYPE_GRAVEYARD = 27,
CONDITION_SOURCE_TYPE_AREATRIGGER = 28,
CONDITION_SOURCE_TYPE_CONVERSATION_LINE = 29,
- CONDITION_SOURCE_TYPE_MAX = 30 // MAX
+ CONDITION_SOURCE_TYPE_AREATRIGGER_CLIENT_TRIGGERED = 30,
+ CONDITION_SOURCE_TYPE_MAX = 31 // MAX
};
enum RelationType
diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp
index e7431a92e9a..bad9721eb72 100644
--- a/src/server/game/Handlers/MiscHandler.cpp
+++ b/src/server/game/Handlers/MiscHandler.cpp
@@ -485,6 +485,9 @@ void WorldSession::HandleAreaTriggerOpcode(WorldPackets::AreaTrigger::AreaTrigge
if (player->isDebugAreaTriggers)
ChatHandler(player->GetSession()).PSendSysMessage(packet.Entered ? LANG_DEBUG_AREATRIGGER_ENTERED : LANG_DEBUG_AREATRIGGER_LEFT, packet.AreaTriggerID);
+ if (!sConditionMgr->IsObjectMeetingNotGroupedConditions(CONDITION_SOURCE_TYPE_AREATRIGGER_CLIENT_TRIGGERED, atEntry->ID, player))
+ return;
+
if (sScriptMgr->OnAreaTrigger(player, atEntry, packet.Entered))
return;