feat(Core/Conf): handle custom creatures IDs and exclude them from checks (#10367)

This commit is contained in:
Bogir[rus]
2022-02-04 21:52:23 +05:00
committed by GitHub
parent 3401f9f185
commit 0b4d483783
2 changed files with 23 additions and 3 deletions

View File

@@ -22,6 +22,7 @@
#include "CharacterCache.h"
#include "Chat.h"
#include "Common.h"
#include "Config.h"
#include "DatabaseEnv.h"
#include "DisableMgr.h"
#include "GameEventMgr.h"
@@ -1173,11 +1174,20 @@ void ObjectMgr::CheckCreatureTemplate(CreatureTemplate const* cInfo)
const_cast<CreatureTemplate*>(cInfo)->DamageModifier *= Creature::_GetDamageMod(cInfo->rank);
// Hack for modules
switch (cInfo->Entry)
std::vector<uint32> CustomCreatures;
std::string stringCreatureIds(sConfigMgr->GetOption<std::string>("Creatures.CustomIDs", ""));
for (std::string_view id : Acore::Tokenize(stringCreatureIds, ',', false))
{
case 190010: // Transmog Module
return;
uint32 entry = Acore::StringTo<uint32>(id).value_or(0);
CustomCreatures.emplace_back(entry);
}
for (auto const& itr : CustomCreatures)
{
if (cInfo->Entry == itr)
return;
}
if (cInfo->GossipMenuId && !(cInfo->npcflag & UNIT_NPC_FLAG_GOSSIP))
{
LOG_ERROR("sql.sql", "Creature (Entry: {}) has assigned gossip menu {}, but npcflag does not include UNIT_NPC_FLAG_GOSSIP (1).", cInfo->Entry, cInfo->GossipMenuId);

View File

@@ -1796,6 +1796,16 @@ NpcRegenHPIfTargetIsUnreachable = 1
NpcRegenHPTimeIfTargetIsUnreachable = 10
# Creatures.CustomIDs
# Description: The list of custom creatures with gossip dialogues hardcoded in core,
# divided by "," without spaces.
# It is implied that you do not use for these NPC dialogs data from "gossip_menu" table.
# Server will skip these IDs during the definitions validation process.
# Example: Creatures.CustomIDs = "190010,55005,999991" - Npc for Transmog, Guild-zone and 1v1-arena modules
# Default: ""
Creatures.CustomIDs = "190010"
#
###################################################################################################