Core/Conditions: Added conditions for AreaTriggers (AreaTrigger.dbc) (#27174)

Cherry-picked from 6ebd592
This commit is contained in:
ModoX
2021-10-26 22:58:49 +02:00
committed by Shauren
parent 420cbd7396
commit 7e28ee4421
3 changed files with 13 additions and 1 deletions

View File

@@ -1818,6 +1818,15 @@ bool ConditionMgr::isSourceTypeValid(Condition* cond) const
}
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.dbc, ignoring.", cond->ToString().c_str());
return false;
}
break;
}
case CONDITION_SOURCE_TYPE_TERRAIN_SWAP:
{
TC_LOG_ERROR("sql.sql", "CONDITION_SOURCE_TYPE_TERRAIN_SWAP: is only for master branch, skipped");

View File

@@ -154,7 +154,7 @@ enum ConditionSourceType
CONDITION_SOURCE_TYPE_GRAVEYARD = 27, // only master
CONDITION_SOURCE_TYPE_AREATRIGGER = 28, // only master (this refers to dynamically spawned areatriggers, not the ones from AreaTrigger.dbc/db2)
CONDITION_SOURCE_TYPE_CONVERSATION_LINE = 29, // only master
CONDITION_SOURCE_TYPE_AREATRIGGER_CLIENT_TRIGGERED = 30, // only master (TODO: cherry-pick)
CONDITION_SOURCE_TYPE_AREATRIGGER_CLIENT_TRIGGERED = 30,
CONDITION_SOURCE_TYPE_TRAINER_SPELL = 31, // only master (TODO: cherry-pick)
CONDITION_SOURCE_TYPE_OBJECT_ID_VISIBILITY = 32, // only master (TODO: cherry-pick)
CONDITION_SOURCE_TYPE_SPAWN_GROUP = 33, // only master (TODO: cherry-pick)

View File

@@ -621,6 +621,9 @@ void WorldSession::HandleAreaTriggerOpcode(WorldPacket& recvData)
if (player->isDebugAreaTriggers)
ChatHandler(player->GetSession()).PSendSysMessage(LANG_DEBUG_AREATRIGGER_REACHED, triggerId);
if (!sConditionMgr->IsObjectMeetingNotGroupedConditions(CONDITION_SOURCE_TYPE_AREATRIGGER_CLIENT_TRIGGERED, atEntry->ID, player))
return;
if (sScriptMgr->OnAreaTrigger(player, atEntry))
return;