diff --git a/src/game/Objects/Object.cpp b/src/game/Objects/Object.cpp index ac14484c8..7f207e74d 100644 --- a/src/game/Objects/Object.cpp +++ b/src/game/Objects/Object.cpp @@ -1085,11 +1085,16 @@ void Object::ExecuteDelayedActions() bool WorldObject::IsWithinLootXPDist(WorldObject const * objToLoot) const { - return objToLoot && IsInMap(objToLoot) && _IsWithinDist(objToLoot, sWorld.getConfig(CONFIG_FLOAT_GROUP_XP_DISTANCE) + objToLoot->lootAndXPRangeModifier, false); + return objToLoot && IsInMap(objToLoot) && _IsWithinDist(objToLoot, sWorld.getConfig(CONFIG_FLOAT_GROUP_XP_DISTANCE) + objToLoot->m_lootAndXPRangeModifier, false); +} + +void WorldObject::SetLootAndXPModDist(float val) +{ + m_lootAndXPRangeModifier = val; } WorldObject::WorldObject() - : m_isActiveObject(false), m_currMap(nullptr), m_mapId(0), m_InstanceId(0), lootAndXPRangeModifier(0) + : m_isActiveObject(false), m_currMap(nullptr), m_mapId(0), m_InstanceId(0), m_lootAndXPRangeModifier(0) { // Phasing worldMask = WORLD_DEFAULT_OBJECT; diff --git a/src/game/Objects/Object.h b/src/game/Objects/Object.h index 0a03d18cd..715bf9fa6 100644 --- a/src/game/Objects/Object.h +++ b/src/game/Objects/Object.h @@ -908,7 +908,10 @@ m_obj->m_updateTracker.Reset(); void SetLocationInstanceId(uint32 _instanceId) { m_InstanceId = _instanceId; } bool IsWithinLootXPDist(WorldObject const* objToLoot) const; - float lootAndXPRangeModifier; + + // val is added to CONFIG_FLOAT_GROUP_XP_DISTANCE when calculating + // if player should be eligible for loot and XP from this object. + void SetLootAndXPModDist(float val); protected: explicit WorldObject(); @@ -927,6 +930,8 @@ m_obj->m_updateTracker.Reset(); ViewPoint m_viewPoint; WorldUpdateCounter m_updateTracker; + + float m_lootAndXPRangeModifier; }; #endif diff --git a/src/scripts/kalimdor/silithus/temple_of_ahnqiraj/boss_twinemperors.cpp b/src/scripts/kalimdor/silithus/temple_of_ahnqiraj/boss_twinemperors.cpp index 333b3a8f8..37dce9e54 100644 --- a/src/scripts/kalimdor/silithus/temple_of_ahnqiraj/boss_twinemperors.cpp +++ b/src/scripts/kalimdor/silithus/temple_of_ahnqiraj/boss_twinemperors.cpp @@ -187,6 +187,8 @@ struct boss_twinemperorsAI : public ScriptedAI boss_twinemperorsAI(Creature* pCreature) : ScriptedAI(pCreature) { + pCreature->SetLootAndXPModDist(150.0f); + instance_temple_of_ahnqiraj* tmpPTr = dynamic_cast(pCreature->GetInstanceData()); if (!tmpPTr) { sLog.outError("boss_twinemperorsAI attempted to cast instance to type instance_temple_of_ahnqiraj, but failed.");