diff options
| author | Jeremy <Golrag@users.noreply.github.com> | 2023-06-01 02:33:46 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-06-01 02:33:46 +0200 |
| commit | c1df555e1691d788918845f95252358f25e54bb5 (patch) | |
| tree | 81d3d1ee68e1bde92495e59b6fa3b30294593eaa /src/server/game/Conditions | |
| parent | b8b416f85d50cc9849e4cba7d62681f6ae60be31 (diff) | |
Core/Graveyards: Drop Faction column and replace it with conditions (#28965)
Diffstat (limited to 'src/server/game/Conditions')
| -rw-r--r-- | src/server/game/Conditions/ConditionMgr.cpp | 20 | ||||
| -rw-r--r-- | src/server/game/Conditions/ConditionMgr.h | 1 |
2 files changed, 19 insertions, 2 deletions
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index 5156a33ff13..0ebf2c0f807 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -1033,6 +1033,7 @@ bool ConditionMgr::CanHaveSourceGroupSet(ConditionSourceType sourceType) sourceType == CONDITION_SOURCE_TYPE_SMART_EVENT || sourceType == CONDITION_SOURCE_TYPE_NPC_VENDOR || sourceType == CONDITION_SOURCE_TYPE_PHASE || + sourceType == CONDITION_SOURCE_TYPE_GRAVEYARD || sourceType == CONDITION_SOURCE_TYPE_AREATRIGGER || sourceType == CONDITION_SOURCE_TYPE_TRAINER_SPELL || sourceType == CONDITION_SOURCE_TYPE_OBJECT_ID_VISIBILITY); @@ -1457,6 +1458,9 @@ void ConditionMgr::LoadConditions(bool isReload) case CONDITION_SOURCE_TYPE_PHASE: valid = addToPhases(cond); break; + case CONDITION_SOURCE_TYPE_GRAVEYARD: + valid = addToGraveyardData(cond); + break; case CONDITION_SOURCE_TYPE_AREATRIGGER: { AreaTriggerConditionContainerStore[{ cond->SourceGroup, cond->SourceEntry }].push_back(cond); @@ -1715,6 +1719,18 @@ bool ConditionMgr::addToPhases(Condition* cond) const return false; } +bool ConditionMgr::addToGraveyardData(Condition* cond) const +{ + if (GraveyardData* graveyard = const_cast<GraveyardData*>(sObjectMgr->FindGraveyardData(cond->SourceEntry, cond->SourceGroup))) + { + graveyard->Conditions.push_back(cond); + return true; + } + + TC_LOG_ERROR("sql.sql", "{}, Graveyard {} does not have ghostzone {}.", cond->ToString(), cond->SourceEntry, cond->SourceGroup); + return false; +} + bool ConditionMgr::isSourceTypeValid(Condition* cond) const { switch (cond->SourceType) @@ -2088,9 +2104,9 @@ bool ConditionMgr::isSourceTypeValid(Condition* cond) const case CONDITION_SOURCE_TYPE_SMART_EVENT: break; case CONDITION_SOURCE_TYPE_GRAVEYARD: - if (!sObjectMgr->GetWorldSafeLoc(cond->SourceEntry)) + if (!sObjectMgr->FindGraveyardData(cond->SourceEntry, cond->SourceGroup)) { - TC_LOG_ERROR("sql.sql", "{} SourceEntry in `condition` table, does not exist in WorldSafeLocs.db2, ignoring.", cond->ToString()); + TC_LOG_ERROR("sql.sql", "{} SourceEntry in `condition` table, does not exist in `graveyard_zone`, ignoring.", cond->ToString()); return false; } break; diff --git a/src/server/game/Conditions/ConditionMgr.h b/src/server/game/Conditions/ConditionMgr.h index 5c37213cb7c..b9766aa8268 100644 --- a/src/server/game/Conditions/ConditionMgr.h +++ b/src/server/game/Conditions/ConditionMgr.h @@ -328,6 +328,7 @@ class TC_GAME_API ConditionMgr bool addToGossipMenuItems(Condition* cond) const; bool addToSpellImplicitTargetConditions(Condition* cond) const; bool addToPhases(Condition* cond) const; + bool addToGraveyardData(Condition* cond) const; bool IsObjectMeetToConditionList(ConditionSourceInfo& sourceInfo, ConditionContainer const& conditions) const; static void LogUselessConditionValue(Condition* cond, uint8 index, uint32 value); |
