Core: Removed more operator workarounds for ACE_Singleton (missed previously because of inconsistent naming)
--HG-- branch : trunk
This commit is contained in:
@@ -158,7 +158,7 @@ m_formation(NULL)
|
||||
DisableReputationGain = false;
|
||||
//m_unit_movement_flags = MONSTER_MOVE_WALK;
|
||||
|
||||
m_SightDistance = sWorld.getFloatConfig(CONFIG_SIGHT_MONSTER);
|
||||
m_SightDistance = sWorld->getFloatConfig(CONFIG_SIGHT_MONSTER);
|
||||
m_CombatDistance = 0;//MELEE_RANGE;
|
||||
|
||||
ResetLootMode(); // restore default loot mode
|
||||
@@ -173,7 +173,7 @@ Creature::~Creature()
|
||||
i_AI = NULL;
|
||||
|
||||
//if (m_uint32Values)
|
||||
// sLog.outError("Deconstruct Creature Entry = %u", GetEntry());
|
||||
// sLog->outError("Deconstruct Creature Entry = %u", GetEntry());
|
||||
}
|
||||
|
||||
void Creature::AddToWorld()
|
||||
@@ -183,7 +183,7 @@ void Creature::AddToWorld()
|
||||
{
|
||||
if (m_zoneScript)
|
||||
m_zoneScript->OnCreatureCreate(this);
|
||||
sObjectAccessor.AddObject(this);
|
||||
sObjectAccessor->AddObject(this);
|
||||
Unit::AddToWorld();
|
||||
SearchFormation();
|
||||
AIM_Initialize();
|
||||
@@ -199,9 +199,9 @@ void Creature::RemoveFromWorld()
|
||||
if (m_zoneScript)
|
||||
m_zoneScript->OnCreatureRemove(this);
|
||||
if (m_formation)
|
||||
formation_mgr.RemoveCreatureFromGroup(m_formation, this);
|
||||
sFormationMgr->RemoveCreatureFromGroup(m_formation, this);
|
||||
Unit::RemoveFromWorld();
|
||||
sObjectAccessor.RemoveObject(this);
|
||||
sObjectAccessor->RemoveObject(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -226,7 +226,7 @@ void Creature::SearchFormation()
|
||||
|
||||
CreatureGroupInfoType::iterator frmdata = CreatureGroupMap.find(lowguid);
|
||||
if (frmdata != CreatureGroupMap.end())
|
||||
formation_mgr.AddCreatureToGroup(frmdata->second->leaderGUID, this);
|
||||
sFormationMgr->AddCreatureToGroup(frmdata->second->leaderGUID, this);
|
||||
}
|
||||
|
||||
void Creature::RemoveCorpse(bool setSpawnTime)
|
||||
@@ -260,7 +260,7 @@ bool Creature::InitEntry(uint32 Entry, uint32 /*team*/, const CreatureData *data
|
||||
CreatureInfo const *normalInfo = ObjectMgr::GetCreatureTemplate(Entry);
|
||||
if (!normalInfo)
|
||||
{
|
||||
sLog.outErrorDb("Creature::InitEntry creature entry %u does not exist.", Entry);
|
||||
sLog->outErrorDb("Creature::InitEntry creature entry %u does not exist.", Entry);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -279,7 +279,7 @@ bool Creature::InitEntry(uint32 Entry, uint32 /*team*/, const CreatureData *data
|
||||
if (!cinfo)
|
||||
{
|
||||
// maybe check such things already at startup
|
||||
sLog.outErrorDb("Creature::UpdateEntry creature difficulty %u entry %u does not exist.", diff + 1, actualEntry);
|
||||
sLog->outErrorDb("Creature::UpdateEntry creature difficulty %u entry %u does not exist.", diff + 1, actualEntry);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -298,7 +298,7 @@ bool Creature::InitEntry(uint32 Entry, uint32 /*team*/, const CreatureData *data
|
||||
// Cancel load if no model defined
|
||||
if (!(cinfo->GetFirstValidModelId()))
|
||||
{
|
||||
sLog.outErrorDb("Creature (Entry: %u) has no model defined in table `creature_template`, can't load. ",Entry);
|
||||
sLog->outErrorDb("Creature (Entry: %u) has no model defined in table `creature_template`, can't load. ",Entry);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -306,7 +306,7 @@ bool Creature::InitEntry(uint32 Entry, uint32 /*team*/, const CreatureData *data
|
||||
CreatureModelInfo const *minfo = sObjectMgr->GetCreatureModelRandomGender(display_id);
|
||||
if (!minfo) // Cancel load if no model defined
|
||||
{
|
||||
sLog.outErrorDb("Creature (Entry: %u) has no model defined in table `creature_template`, can't load. ",Entry);
|
||||
sLog->outErrorDb("Creature (Entry: %u) has no model defined in table `creature_template`, can't load. ",Entry);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -449,11 +449,11 @@ void Creature::Update(uint32 diff)
|
||||
{
|
||||
case JUST_ALIVED:
|
||||
// Don't must be called, see Creature::setDeathState JUST_ALIVED -> ALIVE promoting.
|
||||
sLog.outError("Creature (GUID: %u Entry: %u) in wrong state: JUST_ALIVED (4)",GetGUIDLow(),GetEntry());
|
||||
sLog->outError("Creature (GUID: %u Entry: %u) in wrong state: JUST_ALIVED (4)",GetGUIDLow(),GetEntry());
|
||||
break;
|
||||
case JUST_DIED:
|
||||
// Don't must be called, see Creature::setDeathState JUST_DIED -> CORPSE promoting.
|
||||
sLog.outError("Creature (GUID: %u Entry: %u) in wrong state: JUST_DEAD (1)",GetGUIDLow(),GetEntry());
|
||||
sLog->outError("Creature (GUID: %u Entry: %u) in wrong state: JUST_DEAD (1)",GetGUIDLow(),GetEntry());
|
||||
break;
|
||||
case DEAD:
|
||||
{
|
||||
@@ -500,7 +500,7 @@ void Creature::Update(uint32 diff)
|
||||
else if (m_corpseRemoveTime <= time(NULL))
|
||||
{
|
||||
RemoveCorpse(false);
|
||||
sLog.outStaticDebug("Removing corpse... %u ", GetUInt32Value(OBJECT_FIELD_ENTRY));
|
||||
sLog->outStaticDebug("Removing corpse... %u ", GetUInt32Value(OBJECT_FIELD_ENTRY));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -517,7 +517,7 @@ void Creature::Update(uint32 diff)
|
||||
if (m_corpseRemoveTime <= time(NULL))
|
||||
{
|
||||
RemoveCorpse(false);
|
||||
sLog.outStaticDebug("Removing alive corpse... %u ", GetUInt32Value(OBJECT_FIELD_ENTRY));
|
||||
sLog->outStaticDebug("Removing alive corpse... %u ", GetUInt32Value(OBJECT_FIELD_ENTRY));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -611,7 +611,7 @@ void Creature::RegenerateMana()
|
||||
{
|
||||
if (!IsUnderLastManaUseEffect())
|
||||
{
|
||||
float ManaIncreaseRate = sWorld.getRate(RATE_POWER_MANA);
|
||||
float ManaIncreaseRate = sWorld->getRate(RATE_POWER_MANA);
|
||||
float Spirit = GetStat(STAT_SPIRIT);
|
||||
|
||||
addvalue = uint32((Spirit / 5.0f + 17.0f) * ManaIncreaseRate);
|
||||
@@ -647,7 +647,7 @@ void Creature::RegenerateHealth()
|
||||
// Not only pet, but any controlled creature
|
||||
if (GetCharmerOrOwnerGUID())
|
||||
{
|
||||
float HealthIncreaseRate = sWorld.getRate(RATE_HEALTH);
|
||||
float HealthIncreaseRate = sWorld->getRate(RATE_HEALTH);
|
||||
float Spirit = GetStat(STAT_SPIRIT);
|
||||
|
||||
if (GetPower(POWER_MANA) > 0)
|
||||
@@ -676,7 +676,7 @@ void Creature::DoFleeToGetAssistance()
|
||||
if (HasAuraType(SPELL_AURA_PREVENTS_FLEEING))
|
||||
return;
|
||||
|
||||
float radius = sWorld.getFloatConfig(CONFIG_CREATURE_FAMILY_FLEE_ASSISTANCE_RADIUS);
|
||||
float radius = sWorld->getFloatConfig(CONFIG_CREATURE_FAMILY_FLEE_ASSISTANCE_RADIUS);
|
||||
if (radius >0)
|
||||
{
|
||||
Creature* pCreature = NULL;
|
||||
@@ -696,7 +696,7 @@ void Creature::DoFleeToGetAssistance()
|
||||
UpdateSpeed(MOVE_RUN, false);
|
||||
|
||||
if (!pCreature)
|
||||
//SetFeared(true, getVictim()->GetGUID(), 0 ,sWorld.getIntConfig(CONFIG_CREATURE_FAMILY_FLEE_DELAY));
|
||||
//SetFeared(true, getVictim()->GetGUID(), 0 ,sWorld->getIntConfig(CONFIG_CREATURE_FAMILY_FLEE_DELAY));
|
||||
//TODO: use 31365
|
||||
SetControlled(true, UNIT_STAT_FLEEING);
|
||||
else
|
||||
@@ -709,7 +709,7 @@ bool Creature::AIM_Initialize(CreatureAI* ai)
|
||||
// make sure nothing can change the AI during AI update
|
||||
if (m_AI_locked)
|
||||
{
|
||||
sLog.outDebug("AIM_Initialize: failed to init, locked.");
|
||||
sLog->outDebug("AIM_Initialize: failed to init, locked.");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -748,7 +748,7 @@ bool Creature::Create(uint32 guidlow, Map *map, uint32 phaseMask, uint32 Entry,
|
||||
CreatureInfo const *cinfo = ObjectMgr::GetCreatureTemplate(Entry);
|
||||
if (!cinfo)
|
||||
{
|
||||
sLog.outErrorDb("Creature entry %u does not exist.", Entry);
|
||||
sLog->outErrorDb("Creature entry %u does not exist.", Entry);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -756,7 +756,7 @@ bool Creature::Create(uint32 guidlow, Map *map, uint32 phaseMask, uint32 Entry,
|
||||
|
||||
if (!IsPositionValid())
|
||||
{
|
||||
sLog.outError("Creature (guidlow %d, entry %d) not loaded. Suggested coordinates isn't valid (X: %f Y: %f)",guidlow,Entry,x,y);
|
||||
sLog->outError("Creature (guidlow %d, entry %d) not loaded. Suggested coordinates isn't valid (X: %f Y: %f)",guidlow,Entry,x,y);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -768,19 +768,19 @@ bool Creature::Create(uint32 guidlow, Map *map, uint32 phaseMask, uint32 Entry,
|
||||
switch (GetCreatureInfo()->rank)
|
||||
{
|
||||
case CREATURE_ELITE_RARE:
|
||||
m_corpseDelay = sWorld.getIntConfig(CONFIG_CORPSE_DECAY_RARE);
|
||||
m_corpseDelay = sWorld->getIntConfig(CONFIG_CORPSE_DECAY_RARE);
|
||||
break;
|
||||
case CREATURE_ELITE_ELITE:
|
||||
m_corpseDelay = sWorld.getIntConfig(CONFIG_CORPSE_DECAY_ELITE);
|
||||
m_corpseDelay = sWorld->getIntConfig(CONFIG_CORPSE_DECAY_ELITE);
|
||||
break;
|
||||
case CREATURE_ELITE_RAREELITE:
|
||||
m_corpseDelay = sWorld.getIntConfig(CONFIG_CORPSE_DECAY_RAREELITE);
|
||||
m_corpseDelay = sWorld->getIntConfig(CONFIG_CORPSE_DECAY_RAREELITE);
|
||||
break;
|
||||
case CREATURE_ELITE_WORLDBOSS:
|
||||
m_corpseDelay = sWorld.getIntConfig(CONFIG_CORPSE_DECAY_WORLDBOSS);
|
||||
m_corpseDelay = sWorld->getIntConfig(CONFIG_CORPSE_DECAY_WORLDBOSS);
|
||||
break;
|
||||
default:
|
||||
m_corpseDelay = sWorld.getIntConfig(CONFIG_CORPSE_DECAY_NORMAL);
|
||||
m_corpseDelay = sWorld->getIntConfig(CONFIG_CORPSE_DECAY_NORMAL);
|
||||
break;
|
||||
}
|
||||
LoadCreaturesAddon();
|
||||
@@ -836,7 +836,7 @@ bool Creature::isCanTrainingOf(Player* pPlayer, bool msg) const
|
||||
|
||||
if ((!trainer_spells || trainer_spells->spellList.empty()) && GetCreatureInfo()->trainer_type != TRAINER_TYPE_PETS)
|
||||
{
|
||||
sLog.outErrorDb("Creature %u (Entry: %u) have UNIT_NPC_FLAG_TRAINER but have empty trainer spell list.",
|
||||
sLog->outErrorDb("Creature %u (Entry: %u) have UNIT_NPC_FLAG_TRAINER but have empty trainer spell list.",
|
||||
GetGUIDLow(),GetEntry());
|
||||
return false;
|
||||
}
|
||||
@@ -1037,7 +1037,7 @@ void Creature::SaveToDB()
|
||||
CreatureData const *data = sObjectMgr->GetCreatureData(m_DBTableGuid);
|
||||
if (!data)
|
||||
{
|
||||
sLog.outError("Creature::SaveToDB failed, cannot get creature data!");
|
||||
sLog->outError("Creature::SaveToDB failed, cannot get creature data!");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1186,17 +1186,17 @@ float Creature::_GetHealthMod(int32 Rank)
|
||||
switch (Rank) // define rates for each elite rank
|
||||
{
|
||||
case CREATURE_ELITE_NORMAL:
|
||||
return sWorld.getRate(RATE_CREATURE_NORMAL_HP);
|
||||
return sWorld->getRate(RATE_CREATURE_NORMAL_HP);
|
||||
case CREATURE_ELITE_ELITE:
|
||||
return sWorld.getRate(RATE_CREATURE_ELITE_ELITE_HP);
|
||||
return sWorld->getRate(RATE_CREATURE_ELITE_ELITE_HP);
|
||||
case CREATURE_ELITE_RAREELITE:
|
||||
return sWorld.getRate(RATE_CREATURE_ELITE_RAREELITE_HP);
|
||||
return sWorld->getRate(RATE_CREATURE_ELITE_RAREELITE_HP);
|
||||
case CREATURE_ELITE_WORLDBOSS:
|
||||
return sWorld.getRate(RATE_CREATURE_ELITE_WORLDBOSS_HP);
|
||||
return sWorld->getRate(RATE_CREATURE_ELITE_WORLDBOSS_HP);
|
||||
case CREATURE_ELITE_RARE:
|
||||
return sWorld.getRate(RATE_CREATURE_ELITE_RARE_HP);
|
||||
return sWorld->getRate(RATE_CREATURE_ELITE_RARE_HP);
|
||||
default:
|
||||
return sWorld.getRate(RATE_CREATURE_ELITE_ELITE_HP);
|
||||
return sWorld->getRate(RATE_CREATURE_ELITE_ELITE_HP);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1205,17 +1205,17 @@ float Creature::_GetDamageMod(int32 Rank)
|
||||
switch (Rank) // define rates for each elite rank
|
||||
{
|
||||
case CREATURE_ELITE_NORMAL:
|
||||
return sWorld.getRate(RATE_CREATURE_NORMAL_DAMAGE);
|
||||
return sWorld->getRate(RATE_CREATURE_NORMAL_DAMAGE);
|
||||
case CREATURE_ELITE_ELITE:
|
||||
return sWorld.getRate(RATE_CREATURE_ELITE_ELITE_DAMAGE);
|
||||
return sWorld->getRate(RATE_CREATURE_ELITE_ELITE_DAMAGE);
|
||||
case CREATURE_ELITE_RAREELITE:
|
||||
return sWorld.getRate(RATE_CREATURE_ELITE_RAREELITE_DAMAGE);
|
||||
return sWorld->getRate(RATE_CREATURE_ELITE_RAREELITE_DAMAGE);
|
||||
case CREATURE_ELITE_WORLDBOSS:
|
||||
return sWorld.getRate(RATE_CREATURE_ELITE_WORLDBOSS_DAMAGE);
|
||||
return sWorld->getRate(RATE_CREATURE_ELITE_WORLDBOSS_DAMAGE);
|
||||
case CREATURE_ELITE_RARE:
|
||||
return sWorld.getRate(RATE_CREATURE_ELITE_RARE_DAMAGE);
|
||||
return sWorld->getRate(RATE_CREATURE_ELITE_RARE_DAMAGE);
|
||||
default:
|
||||
return sWorld.getRate(RATE_CREATURE_ELITE_ELITE_DAMAGE);
|
||||
return sWorld->getRate(RATE_CREATURE_ELITE_ELITE_DAMAGE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1224,17 +1224,17 @@ float Creature::GetSpellDamageMod(int32 Rank)
|
||||
switch (Rank) // define rates for each elite rank
|
||||
{
|
||||
case CREATURE_ELITE_NORMAL:
|
||||
return sWorld.getRate(RATE_CREATURE_NORMAL_SPELLDAMAGE);
|
||||
return sWorld->getRate(RATE_CREATURE_NORMAL_SPELLDAMAGE);
|
||||
case CREATURE_ELITE_ELITE:
|
||||
return sWorld.getRate(RATE_CREATURE_ELITE_ELITE_SPELLDAMAGE);
|
||||
return sWorld->getRate(RATE_CREATURE_ELITE_ELITE_SPELLDAMAGE);
|
||||
case CREATURE_ELITE_RAREELITE:
|
||||
return sWorld.getRate(RATE_CREATURE_ELITE_RAREELITE_SPELLDAMAGE);
|
||||
return sWorld->getRate(RATE_CREATURE_ELITE_RAREELITE_SPELLDAMAGE);
|
||||
case CREATURE_ELITE_WORLDBOSS:
|
||||
return sWorld.getRate(RATE_CREATURE_ELITE_WORLDBOSS_SPELLDAMAGE);
|
||||
return sWorld->getRate(RATE_CREATURE_ELITE_WORLDBOSS_SPELLDAMAGE);
|
||||
case CREATURE_ELITE_RARE:
|
||||
return sWorld.getRate(RATE_CREATURE_ELITE_RARE_SPELLDAMAGE);
|
||||
return sWorld->getRate(RATE_CREATURE_ELITE_RARE_SPELLDAMAGE);
|
||||
default:
|
||||
return sWorld.getRate(RATE_CREATURE_ELITE_ELITE_SPELLDAMAGE);
|
||||
return sWorld->getRate(RATE_CREATURE_ELITE_ELITE_SPELLDAMAGE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1251,7 +1251,7 @@ bool Creature::CreateFromProto(uint32 guidlow, uint32 Entry, uint32 vehId, uint3
|
||||
CreatureInfo const *cinfo = ObjectMgr::GetCreatureTemplate(Entry);
|
||||
if (!cinfo)
|
||||
{
|
||||
sLog.outErrorDb("Creature entry %u does not exist.", Entry);
|
||||
sLog->outErrorDb("Creature entry %u does not exist.", Entry);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1277,7 +1277,7 @@ bool Creature::LoadFromDB(uint32 guid, Map *map)
|
||||
|
||||
if (!data)
|
||||
{
|
||||
sLog.outErrorDb("Creature (GUID: %u) not found in table `creature`, can't load. ",guid);
|
||||
sLog->outErrorDb("Creature (GUID: %u) not found in table `creature`, can't load. ",guid);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1392,7 +1392,7 @@ void Creature::DeleteFromDB()
|
||||
{
|
||||
if (!m_DBTableGuid)
|
||||
{
|
||||
sLog.outDebug("Trying to delete not saved creature!");
|
||||
sLog->outDebug("Trying to delete not saved creature!");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1436,7 +1436,7 @@ bool Creature::canStartAttack(Unit const* who, bool force) const
|
||||
|
||||
if (who->isInCombat())
|
||||
if (Unit *victim = who->getAttackerForHelper())
|
||||
if (IsWithinDistInMap(victim, sWorld.getFloatConfig(CONFIG_CREATURE_FAMILY_ASSISTANCE_RADIUS)))
|
||||
if (IsWithinDistInMap(victim, sWorld->getFloatConfig(CONFIG_CREATURE_FAMILY_ASSISTANCE_RADIUS)))
|
||||
force = true;
|
||||
|
||||
if (!force && (IsNeutralToAll() || !IsWithinDistInMap(who, GetAttackDistance(who) + m_CombatDistance)))
|
||||
@@ -1451,7 +1451,7 @@ bool Creature::canStartAttack(Unit const* who, bool force) const
|
||||
|
||||
float Creature::GetAttackDistance(Unit const* pl) const
|
||||
{
|
||||
float aggroRate = sWorld.getRate(RATE_CREATURE_AGGRO);
|
||||
float aggroRate = sWorld->getRate(RATE_CREATURE_AGGRO);
|
||||
if (aggroRate == 0)
|
||||
return 0.0f;
|
||||
|
||||
@@ -1471,7 +1471,7 @@ float Creature::GetAttackDistance(Unit const* pl) const
|
||||
// radius grow if playlevel < creaturelevel
|
||||
RetDistance -= (float)leveldif;
|
||||
|
||||
if (creaturelevel+5 <= sWorld.getIntConfig(CONFIG_MAX_PLAYER_LEVEL))
|
||||
if (creaturelevel+5 <= sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL))
|
||||
{
|
||||
// detect range auras
|
||||
RetDistance += GetTotalAuraModifier(SPELL_AURA_MOD_DETECT_RANGE);
|
||||
@@ -1495,7 +1495,7 @@ void Creature::setDeathState(DeathState s)
|
||||
m_respawnTime = time(NULL) + m_respawnDelay + m_corpseDelay;
|
||||
|
||||
// always save boss respawn time at death to prevent crash cheating
|
||||
if (sWorld.getBoolConfig(CONFIG_SAVE_RESPAWN_TIME_IMMEDIATELY) || isWorldBoss())
|
||||
if (sWorld->getBoolConfig(CONFIG_SAVE_RESPAWN_TIME_IMMEDIATELY) || isWorldBoss())
|
||||
SaveRespawnTime();
|
||||
}
|
||||
Unit::setDeathState(s);
|
||||
@@ -1589,7 +1589,7 @@ void Creature::Respawn(bool force)
|
||||
if (m_DBTableGuid)
|
||||
sObjectMgr->RemoveCreatureRespawnTime(m_DBTableGuid, GetInstanceId());
|
||||
|
||||
sLog.outStaticDebug("Respawning...");
|
||||
sLog->outStaticDebug("Respawning...");
|
||||
m_respawnTime = 0;
|
||||
lootForPickPocketed = false;
|
||||
lootForBody = false;
|
||||
@@ -1687,7 +1687,7 @@ SpellEntry const *Creature::reachWithSpellAttack(Unit *pVictim)
|
||||
SpellEntry const *spellInfo = sSpellStore.LookupEntry(m_spells[i]);
|
||||
if (!spellInfo)
|
||||
{
|
||||
sLog.outError("WORLD: unknown spell id %i", m_spells[i]);
|
||||
sLog->outError("WORLD: unknown spell id %i", m_spells[i]);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -1737,7 +1737,7 @@ SpellEntry const *Creature::reachWithSpellCure(Unit *pVictim)
|
||||
SpellEntry const *spellInfo = sSpellStore.LookupEntry(m_spells[i]);
|
||||
if (!spellInfo)
|
||||
{
|
||||
sLog.outError("WORLD: unknown spell id %i", m_spells[i]);
|
||||
sLog->outError("WORLD: unknown spell id %i", m_spells[i]);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -1809,7 +1809,7 @@ Unit* Creature::SelectNearestTargetInAttackDistance(float dist) const
|
||||
Unit *target = NULL;
|
||||
|
||||
if (dist > ATTACK_DISTANCE)
|
||||
sLog.outError("Creature (GUID: %u Entry: %u) SelectNearestTargetInAttackDistance called with dist > ATTACK_DISTANCE. Extra distance ignored.",GetGUIDLow(),GetEntry());
|
||||
sLog->outError("Creature (GUID: %u Entry: %u) SelectNearestTargetInAttackDistance called with dist > ATTACK_DISTANCE. Extra distance ignored.",GetGUIDLow(),GetEntry());
|
||||
|
||||
{
|
||||
Trinity::NearestHostileUnitInAttackDistanceCheck u_check(this, dist);
|
||||
@@ -1834,7 +1834,7 @@ void Creature::SendAIReaction(AiReaction reactionType)
|
||||
|
||||
((WorldObject*)this)->SendMessageToSet(&data, true);
|
||||
|
||||
sLog.outDebug("WORLD: Sent SMSG_AI_REACTION, type %u.", reactionType);
|
||||
sLog->outDebug("WORLD: Sent SMSG_AI_REACTION, type %u.", reactionType);
|
||||
}
|
||||
|
||||
void Creature::CallAssistance()
|
||||
@@ -1843,7 +1843,7 @@ void Creature::CallAssistance()
|
||||
{
|
||||
SetNoCallAssistance(true);
|
||||
|
||||
float radius = sWorld.getFloatConfig(CONFIG_CREATURE_FAMILY_ASSISTANCE_RADIUS);
|
||||
float radius = sWorld->getFloatConfig(CONFIG_CREATURE_FAMILY_ASSISTANCE_RADIUS);
|
||||
|
||||
if (radius > 0)
|
||||
{
|
||||
@@ -1872,7 +1872,7 @@ void Creature::CallAssistance()
|
||||
e->AddAssistant((*assistList.begin())->GetGUID());
|
||||
assistList.pop_front();
|
||||
}
|
||||
m_Events.AddEvent(e, m_Events.CalculateTime(sWorld.getIntConfig(CONFIG_CREATURE_FAMILY_ASSISTANCE_DELAY)));
|
||||
m_Events.AddEvent(e, m_Events.CalculateTime(sWorld->getIntConfig(CONFIG_CREATURE_FAMILY_ASSISTANCE_DELAY)));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1992,7 +1992,7 @@ bool Creature::canCreatureAttack(Unit const *pVictim, bool force) const
|
||||
return true;
|
||||
|
||||
//Use AttackDistance in distance check if threat radius is lower. This prevents creature bounce in and out of combat every update tick.
|
||||
float dist = std::max(GetAttackDistance(pVictim), sWorld.getFloatConfig(CONFIG_THREAT_RADIUS)) + m_CombatDistance;
|
||||
float dist = std::max(GetAttackDistance(pVictim), sWorld->getFloatConfig(CONFIG_THREAT_RADIUS)) + m_CombatDistance;
|
||||
|
||||
if (Unit *unit = GetCharmerOrOwner())
|
||||
return pVictim->IsWithinDist(unit, dist);
|
||||
@@ -2065,7 +2065,7 @@ bool Creature::LoadCreaturesAddon(bool reload)
|
||||
SpellEntry const *AdditionalSpellInfo = sSpellStore.LookupEntry(cAura->spell_id);
|
||||
if (!AdditionalSpellInfo)
|
||||
{
|
||||
sLog.outErrorDb("Creature (GUID: %u Entry: %u) has wrong spell %u defined in `auras` field.",GetGUIDLow(),GetEntry(),cAura->spell_id);
|
||||
sLog->outErrorDb("Creature (GUID: %u Entry: %u) has wrong spell %u defined in `auras` field.",GetGUIDLow(),GetEntry(),cAura->spell_id);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -2073,13 +2073,13 @@ bool Creature::LoadCreaturesAddon(bool reload)
|
||||
if (HasAura(cAura->spell_id))
|
||||
{
|
||||
if (!reload)
|
||||
sLog.outErrorDb("Creature (GUID: %u Entry: %u) has duplicate aura (spell %u) in `auras` field.",GetGUIDLow(),GetEntry(),cAura->spell_id);
|
||||
sLog->outErrorDb("Creature (GUID: %u Entry: %u) has duplicate aura (spell %u) in `auras` field.",GetGUIDLow(),GetEntry(),cAura->spell_id);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
AddAura(AdditionalSpellInfo, cAura->effectMask, this);
|
||||
sLog.outDebug("Spell: %u with AuraEffectMask %u added to creature (GUID: %u Entry: %u)", cAura->spell_id, cAura->effectMask,GetGUIDLow(),GetEntry());
|
||||
sLog->outDebug("Spell: %u with AuraEffectMask %u added to creature (GUID: %u Entry: %u)", cAura->spell_id, cAura->effectMask,GetGUIDLow(),GetEntry());
|
||||
}
|
||||
}
|
||||
return true;
|
||||
@@ -2092,14 +2092,14 @@ void Creature::SendZoneUnderAttackMessage(Player* attacker)
|
||||
|
||||
WorldPacket data(SMSG_ZONE_UNDER_ATTACK,4);
|
||||
data << (uint32)GetAreaId();
|
||||
sWorld.SendGlobalMessage(&data,NULL,(enemy_team == ALLIANCE ? HORDE : ALLIANCE));
|
||||
sWorld->SendGlobalMessage(&data,NULL,(enemy_team == ALLIANCE ? HORDE : ALLIANCE));
|
||||
}
|
||||
|
||||
void Creature::SetInCombatWithZone()
|
||||
{
|
||||
if (!CanHaveThreatList())
|
||||
{
|
||||
sLog.outError("Creature entry %u call SetInCombatWithZone but creature cannot have threat list.", GetEntry());
|
||||
sLog->outError("Creature entry %u call SetInCombatWithZone but creature cannot have threat list.", GetEntry());
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -2107,7 +2107,7 @@ void Creature::SetInCombatWithZone()
|
||||
|
||||
if (!pMap->IsDungeon())
|
||||
{
|
||||
sLog.outError("Creature entry %u call SetInCombatWithZone for map (id: %u) that isn't an instance.", GetEntry(), pMap->GetId());
|
||||
sLog->outError("Creature entry %u call SetInCombatWithZone for map (id: %u) that isn't an instance.", GetEntry(), pMap->GetId());
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -2238,7 +2238,7 @@ void Creature::AllLootRemovedFromCorpse()
|
||||
float decayRate;
|
||||
CreatureInfo const *cinfo = GetCreatureInfo();
|
||||
|
||||
decayRate = sWorld.getRate(RATE_CORPSE_DECAY_LOOTED);
|
||||
decayRate = sWorld->getRate(RATE_CORPSE_DECAY_LOOTED);
|
||||
uint32 diff = uint32((m_corpseRemoveTime - now) * decayRate);
|
||||
|
||||
m_respawnTime -= diff;
|
||||
@@ -2256,7 +2256,7 @@ uint8 Creature::getLevelForTarget(WorldObject const* target) const
|
||||
if (!isWorldBoss() || !target->ToUnit())
|
||||
return Unit::getLevelForTarget(target);
|
||||
|
||||
uint16 level = target->ToUnit()->getLevel() + sWorld.getIntConfig(CONFIG_WORLD_BOSS_LEVEL_DIFF);
|
||||
uint16 level = target->ToUnit()->getLevel() + sWorld->getIntConfig(CONFIG_WORLD_BOSS_LEVEL_DIFF);
|
||||
if (level < 1)
|
||||
return 1;
|
||||
if (level > 255)
|
||||
|
||||
@@ -37,13 +37,13 @@ void CreatureGroupManager::AddCreatureToGroup(uint32 groupId, Creature *member)
|
||||
//Add member to an existing group
|
||||
if (itr != map->CreatureGroupHolder.end())
|
||||
{
|
||||
sLog.outDebug("Group found: %u, inserting creature GUID: %u, Group InstanceID %u", groupId, member->GetGUIDLow(), member->GetInstanceId());
|
||||
sLog->outDebug("Group found: %u, inserting creature GUID: %u, Group InstanceID %u", groupId, member->GetGUIDLow(), member->GetInstanceId());
|
||||
itr->second->AddMember(member);
|
||||
}
|
||||
//Create new group
|
||||
else
|
||||
{
|
||||
sLog.outDebug("Group not found: %u. Creating new group.", groupId);
|
||||
sLog->outDebug("Group not found: %u. Creating new group.", groupId);
|
||||
CreatureGroup* group = new CreatureGroup(groupId);
|
||||
map->CreatureGroupHolder[groupId] = group;
|
||||
group->AddMember(member);
|
||||
@@ -52,7 +52,7 @@ void CreatureGroupManager::AddCreatureToGroup(uint32 groupId, Creature *member)
|
||||
|
||||
void CreatureGroupManager::RemoveCreatureFromGroup(CreatureGroup *group, Creature *member)
|
||||
{
|
||||
sLog.outDebug("Deleting member pointer to GUID: %u from group %u", group->GetId(), member->GetDBTableGUIDLow());
|
||||
sLog->outDebug("Deleting member pointer to GUID: %u from group %u", group->GetId(), member->GetDBTableGUIDLow());
|
||||
group->RemoveMember(member);
|
||||
|
||||
if (group->isEmpty())
|
||||
@@ -61,7 +61,7 @@ void CreatureGroupManager::RemoveCreatureFromGroup(CreatureGroup *group, Creatur
|
||||
if (!map)
|
||||
return;
|
||||
|
||||
sLog.outDebug("Deleting group with InstanceID %u", member->GetInstanceId());
|
||||
sLog->outDebug("Deleting group with InstanceID %u", member->GetInstanceId());
|
||||
map->CreatureGroupHolder.erase(group->GetId());
|
||||
delete group;
|
||||
}
|
||||
@@ -80,8 +80,8 @@ void CreatureGroupManager::LoadCreatureFormations()
|
||||
|
||||
if (!result)
|
||||
{
|
||||
sLog.outErrorDb(">> Loaded 0 creatures in formations. DB table `creature_formations` is empty!");
|
||||
sLog.outString();
|
||||
sLog->outErrorDb(">> Loaded 0 creatures in formations. DB table `creature_formations` is empty!");
|
||||
sLog->outString();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -129,14 +129,14 @@ void CreatureGroupManager::LoadCreatureFormations()
|
||||
{
|
||||
if (guidSet.find(group_member->leaderGUID) == guidSet.end())
|
||||
{
|
||||
sLog.outErrorDb("creature_formations table leader guid %u incorrect (not exist)", group_member->leaderGUID);
|
||||
sLog->outErrorDb("creature_formations table leader guid %u incorrect (not exist)", group_member->leaderGUID);
|
||||
delete group_member;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (guidSet.find(memberGUID) == guidSet.end())
|
||||
{
|
||||
sLog.outErrorDb("creature_formations table member guid %u incorrect (not exist)", memberGUID);
|
||||
sLog->outErrorDb("creature_formations table member guid %u incorrect (not exist)", memberGUID);
|
||||
delete group_member;
|
||||
continue;
|
||||
}
|
||||
@@ -147,18 +147,18 @@ void CreatureGroupManager::LoadCreatureFormations()
|
||||
}
|
||||
while (result->NextRow()) ;
|
||||
|
||||
sLog.outString(">> Loaded %u creatures in formations in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
|
||||
sLog.outString();
|
||||
sLog->outString(">> Loaded %u creatures in formations in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
|
||||
sLog->outString();
|
||||
}
|
||||
|
||||
void CreatureGroup::AddMember(Creature *member)
|
||||
{
|
||||
sLog.outDebug("CreatureGroup::AddMember: Adding unit GUID: %u.", member->GetGUIDLow());
|
||||
sLog->outDebug("CreatureGroup::AddMember: Adding unit GUID: %u.", member->GetGUIDLow());
|
||||
|
||||
//Check if it is a leader
|
||||
if (member->GetDBTableGUIDLow() == m_groupID)
|
||||
{
|
||||
sLog.outDebug("Unit GUID: %u is formation leader. Adding group.", member->GetGUIDLow());
|
||||
sLog->outDebug("Unit GUID: %u is formation leader. Adding group.", member->GetGUIDLow());
|
||||
m_leader = member;
|
||||
}
|
||||
|
||||
@@ -187,7 +187,7 @@ void CreatureGroup::MemberAttackStart(Creature *member, Unit *target)
|
||||
for (CreatureGroupMemberType::iterator itr = m_members.begin(); itr != m_members.end(); ++itr)
|
||||
{
|
||||
if (m_leader) // avoid crash if leader was killed and reset.
|
||||
sLog.outDebug("GROUP ATTACK: group instance id %u calls member instid %u", m_leader->GetInstanceId(), member->GetInstanceId());
|
||||
sLog->outDebug("GROUP ATTACK: group instance id %u calls member instid %u", m_leader->GetInstanceId(), member->GetInstanceId());
|
||||
|
||||
//Skip one check
|
||||
if (itr->first == member)
|
||||
@@ -214,7 +214,7 @@ void CreatureGroup::FormationReset(bool dismiss)
|
||||
itr->first->GetMotionMaster()->Initialize();
|
||||
else
|
||||
itr->first->GetMotionMaster()->MoveIdle(MOTION_SLOT_IDLE);
|
||||
sLog.outDebug("Set %s movement for member GUID: %u", dismiss ? "default" : "idle", itr->first->GetGUIDLow());
|
||||
sLog->outDebug("Set %s movement for member GUID: %u", dismiss ? "default" : "idle", itr->first->GetGUIDLow());
|
||||
}
|
||||
}
|
||||
m_Formed = !dismiss;
|
||||
|
||||
@@ -40,7 +40,7 @@ class CreatureGroupManager
|
||||
void LoadCreatureFormations();
|
||||
};
|
||||
|
||||
#define formation_mgr (*ACE_Singleton<CreatureGroupManager, ACE_Null_Mutex>::instance())
|
||||
#define sFormationMgr ACE_Singleton<CreatureGroupManager, ACE_Null_Mutex>::instance()
|
||||
|
||||
typedef UNORDERED_MAP<uint32/*memberDBGUID*/, FormationInfo*> CreatureGroupInfoType;
|
||||
|
||||
@@ -59,7 +59,7 @@ class CreatureGroup
|
||||
public:
|
||||
//Group cannot be created empty
|
||||
explicit CreatureGroup(uint32 id) : m_leader(NULL), m_groupID(id), m_Formed(false) {}
|
||||
~CreatureGroup() { sLog.outDebug("Destroying group"); }
|
||||
~CreatureGroup() { sLog->outDebug("Destroying group"); }
|
||||
|
||||
Creature* getLeader() const { return m_leader; }
|
||||
uint32 GetId() const { return m_groupID; }
|
||||
|
||||
@@ -198,7 +198,7 @@ void PlayerMenu::SendPointOfInterest(float X, float Y, uint32 Icon, uint32 Flags
|
||||
data << locName;
|
||||
|
||||
pSession->SendPacket(&data);
|
||||
//sLog.outDebug("WORLD: Sent SMSG_GOSSIP_POI");
|
||||
//sLog->outDebug("WORLD: Sent SMSG_GOSSIP_POI");
|
||||
}
|
||||
|
||||
void PlayerMenu::SendPointOfInterest(uint32 poi_id)
|
||||
@@ -206,7 +206,7 @@ void PlayerMenu::SendPointOfInterest(uint32 poi_id)
|
||||
PointOfInterest const* poi = sObjectMgr->GetPointOfInterest(poi_id);
|
||||
if (!poi)
|
||||
{
|
||||
sLog.outErrorDb("Request to send non-existing POI (Id: %u), ignored.",poi_id);
|
||||
sLog->outErrorDb("Request to send non-existing POI (Id: %u), ignored.",poi_id);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -226,7 +226,7 @@ void PlayerMenu::SendPointOfInterest(uint32 poi_id)
|
||||
data << icon_name;
|
||||
|
||||
pSession->SendPacket(&data);
|
||||
//sLog.outDebug("WORLD: Sent SMSG_GOSSIP_POI");
|
||||
//sLog->outDebug("WORLD: Sent SMSG_GOSSIP_POI");
|
||||
}
|
||||
|
||||
void PlayerMenu::SendTalking(uint32 textID)
|
||||
@@ -297,7 +297,7 @@ void PlayerMenu::SendTalking(uint32 textID)
|
||||
}
|
||||
pSession->SendPacket(&data);
|
||||
|
||||
sLog.outDebug("WORLD: Sent SMSG_NPC_TEXT_UPDATE ");
|
||||
sLog->outDebug("WORLD: Sent SMSG_NPC_TEXT_UPDATE ");
|
||||
}
|
||||
|
||||
void PlayerMenu::SendTalking(char const * title, char const * text)
|
||||
@@ -320,7 +320,7 @@ void PlayerMenu::SendTalking(char const * title, char const * text)
|
||||
|
||||
pSession->SendPacket(&data);
|
||||
|
||||
sLog.outDebug("WORLD: Sent SMSG_NPC_TEXT_UPDATE ");
|
||||
sLog->outDebug("WORLD: Sent SMSG_NPC_TEXT_UPDATE ");
|
||||
}
|
||||
|
||||
/*********************************************************/
|
||||
@@ -406,7 +406,7 @@ void PlayerMenu::SendQuestGiverQuestList(QEmote eEmote, const std::string& Title
|
||||
|
||||
data.put<uint8>(count_pos, count);
|
||||
pSession->SendPacket(&data);
|
||||
sLog.outDebug("WORLD: Sent SMSG_QUESTGIVER_QUEST_LIST NPC Guid=%u", GUID_LOPART(npcGUID));
|
||||
sLog->outDebug("WORLD: Sent SMSG_QUESTGIVER_QUEST_LIST NPC Guid=%u", GUID_LOPART(npcGUID));
|
||||
}
|
||||
|
||||
void PlayerMenu::SendQuestGiverStatus(uint8 questStatus, uint64 npcGUID)
|
||||
@@ -416,7 +416,7 @@ void PlayerMenu::SendQuestGiverStatus(uint8 questStatus, uint64 npcGUID)
|
||||
data << uint8(questStatus);
|
||||
|
||||
pSession->SendPacket(&data);
|
||||
sLog.outDebug("WORLD: Sent SMSG_QUESTGIVER_STATUS NPC Guid=%u, status=%u", GUID_LOPART(npcGUID), questStatus);
|
||||
sLog->outDebug("WORLD: Sent SMSG_QUESTGIVER_STATUS NPC Guid=%u, status=%u", GUID_LOPART(npcGUID), questStatus);
|
||||
}
|
||||
|
||||
void PlayerMenu::SendQuestGiverQuestDetails(Quest const *pQuest, uint64 npcGUID, bool ActivateAccept)
|
||||
@@ -497,7 +497,7 @@ void PlayerMenu::SendQuestGiverQuestDetails(Quest const *pQuest, uint64 npcGUID,
|
||||
}
|
||||
|
||||
data << uint32(pQuest->GetRewOrReqMoney());
|
||||
data << uint32(pQuest->XPValue(pSession->GetPlayer())*sWorld.getRate(RATE_XP_QUEST));
|
||||
data << uint32(pQuest->XPValue(pSession->GetPlayer())*sWorld->getRate(RATE_XP_QUEST));
|
||||
}
|
||||
|
||||
// rewarded honor points. Multiply with 10 to satisfy client
|
||||
@@ -527,7 +527,7 @@ void PlayerMenu::SendQuestGiverQuestDetails(Quest const *pQuest, uint64 npcGUID,
|
||||
}
|
||||
pSession->SendPacket(&data);
|
||||
|
||||
sLog.outDebug("WORLD: Sent SMSG_QUESTGIVER_QUEST_DETAILS NPCGuid=%u, questid=%u", GUID_LOPART(npcGUID), pQuest->GetQuestId());
|
||||
sLog->outDebug("WORLD: Sent SMSG_QUESTGIVER_QUEST_DETAILS NPCGuid=%u, questid=%u", GUID_LOPART(npcGUID), pQuest->GetQuestId());
|
||||
}
|
||||
|
||||
void PlayerMenu::SendQuestQueryResponse(Quest const *pQuest)
|
||||
@@ -667,7 +667,7 @@ void PlayerMenu::SendQuestQueryResponse(Quest const *pQuest)
|
||||
data << ObjectiveText[iI];
|
||||
|
||||
pSession->SendPacket(&data);
|
||||
sLog.outDebug("WORLD: Sent SMSG_QUEST_QUERY_RESPONSE questid=%u", pQuest->GetQuestId());
|
||||
sLog->outDebug("WORLD: Sent SMSG_QUEST_QUERY_RESPONSE questid=%u", pQuest->GetQuestId());
|
||||
}
|
||||
|
||||
void PlayerMenu::SendQuestGiverOfferReward(Quest const* pQuest, uint64 npcGUID, bool EnableNext)
|
||||
@@ -741,7 +741,7 @@ void PlayerMenu::SendQuestGiverOfferReward(Quest const* pQuest, uint64 npcGUID,
|
||||
}
|
||||
|
||||
data << uint32(pQuest->GetRewOrReqMoney());
|
||||
data << uint32(pQuest->XPValue(pSession->GetPlayer())*sWorld.getRate(RATE_XP_QUEST));
|
||||
data << uint32(pQuest->XPValue(pSession->GetPlayer())*sWorld->getRate(RATE_XP_QUEST));
|
||||
|
||||
// rewarded honor points. Multiply with 10 to satisfy client
|
||||
data << 10 * Trinity::Honor::hk_honor_at_level(pSession->GetPlayer()->getLevel(), pQuest->GetRewHonorMultiplier());
|
||||
@@ -764,7 +764,7 @@ void PlayerMenu::SendQuestGiverOfferReward(Quest const* pQuest, uint64 npcGUID,
|
||||
data << uint32(pQuest->RewRepValue[i]);
|
||||
|
||||
pSession->SendPacket(&data);
|
||||
sLog.outDebug("WORLD: Sent SMSG_QUESTGIVER_OFFER_REWARD NPCGuid=%u, questid=%u", GUID_LOPART(npcGUID), pQuest->GetQuestId());
|
||||
sLog->outDebug("WORLD: Sent SMSG_QUESTGIVER_OFFER_REWARD NPCGuid=%u, questid=%u", GUID_LOPART(npcGUID), pQuest->GetQuestId());
|
||||
}
|
||||
|
||||
void PlayerMenu::SendQuestGiverRequestItems(Quest const *pQuest, uint64 npcGUID, bool Completable, bool CloseOnCancel)
|
||||
@@ -844,5 +844,5 @@ void PlayerMenu::SendQuestGiverRequestItems(Quest const *pQuest, uint64 npcGUID,
|
||||
data << uint32(0x10);
|
||||
|
||||
pSession->SendPacket(&data);
|
||||
sLog.outDebug("WORLD: Sent SMSG_QUESTGIVER_REQUEST_ITEMS NPCGuid=%u, questid=%u", GUID_LOPART(npcGUID), pQuest->GetQuestId());
|
||||
sLog->outDebug("WORLD: Sent SMSG_QUESTGIVER_REQUEST_ITEMS NPCGuid=%u, questid=%u", GUID_LOPART(npcGUID), pQuest->GetQuestId());
|
||||
}
|
||||
|
||||
@@ -159,7 +159,7 @@ void TempSummon::Update(uint32 diff)
|
||||
}
|
||||
default:
|
||||
UnSummon();
|
||||
sLog.outError("Temporary summoned creature (entry: %u) have unknown type %u of ",GetEntry(),m_type);
|
||||
sLog->outError("Temporary summoned creature (entry: %u) have unknown type %u of ",GetEntry(),m_type);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -253,7 +253,7 @@ void TempSummon::RemoveFromWorld()
|
||||
owner->m_SummonSlot[slot] = 0;
|
||||
|
||||
//if (GetOwnerGUID())
|
||||
// sLog.outError("Unit %u has owner guid when removed from world", GetEntry());
|
||||
// sLog->outError("Unit %u has owner guid when removed from world", GetEntry());
|
||||
|
||||
Creature::RemoveFromWorld();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user