Core/Conditions: Added conditions for old areatrigger system (AreaTrigger.db2) (#27174)

This commit is contained in:
ModoX
2021-10-26 22:58:49 +02:00
committed by GitHub
parent 94b14e4f63
commit 6ebd5926fb
3 changed files with 12 additions and 1 deletions

View File

@@ -1924,6 +1924,13 @@ bool ConditionMgr::isSourceTypeValid(Condition* cond) const
return false; return false;
} }
break; 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: default:
TC_LOG_ERROR("sql.sql", "%s Invalid ConditionSourceType in `condition` table, ignoring.", cond->ToString().c_str()); TC_LOG_ERROR("sql.sql", "%s Invalid ConditionSourceType in `condition` table, ignoring.", cond->ToString().c_str());
return false; return false;

View File

@@ -170,7 +170,8 @@ enum ConditionSourceType
CONDITION_SOURCE_TYPE_GRAVEYARD = 27, CONDITION_SOURCE_TYPE_GRAVEYARD = 27,
CONDITION_SOURCE_TYPE_AREATRIGGER = 28, CONDITION_SOURCE_TYPE_AREATRIGGER = 28,
CONDITION_SOURCE_TYPE_CONVERSATION_LINE = 29, 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 enum RelationType

View File

@@ -485,6 +485,9 @@ void WorldSession::HandleAreaTriggerOpcode(WorldPackets::AreaTrigger::AreaTrigge
if (player->isDebugAreaTriggers) if (player->isDebugAreaTriggers)
ChatHandler(player->GetSession()).PSendSysMessage(packet.Entered ? LANG_DEBUG_AREATRIGGER_ENTERED : LANG_DEBUG_AREATRIGGER_LEFT, packet.AreaTriggerID); 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)) if (sScriptMgr->OnAreaTrigger(player, atEntry, packet.Entered))
return; return;