aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWyreth <32145860+Wyreth@users.noreply.github.com>2018-02-17 15:09:54 +0100
committerjackpoz <giacomopoz@gmail.com>2018-02-17 15:09:54 +0100
commit56874b44f0625f80442ea906f487e3253bdd16eb (patch)
treef14a406a147d95066ab9513ed50e87c99e338d3e
parentd3d0640a8d61e9a216876b7f1b114673893b2bc8 (diff)
Core/Entities: remove grid-wide visibility from setActive and implement another method for it (#20725)
-rw-r--r--src/server/game/Battlefield/Battlefield.cpp2
-rw-r--r--src/server/game/Entities/Object/Object.cpp14
-rw-r--r--src/server/game/Entities/Object/Object.h3
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp1
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp1
-rw-r--r--src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp1
-rw-r--r--src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp1
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletEnclave/zone_the_scarlet_enclave.cpp1
-rw-r--r--src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp1
-rw-r--r--src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp4
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp8
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp1
-rw-r--r--src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp1
-rw-r--r--src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp1
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp3
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp1
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp1
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp2
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp7
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp2
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp14
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp5
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp1
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_noth.cpp1
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp17
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp1
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp1
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp1
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp1
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp4
30 files changed, 97 insertions, 5 deletions
diff --git a/src/server/game/Battlefield/Battlefield.cpp b/src/server/game/Battlefield/Battlefield.cpp
index 3cd25af164d..f1018df29d6 100644
--- a/src/server/game/Battlefield/Battlefield.cpp
+++ b/src/server/game/Battlefield/Battlefield.cpp
@@ -790,6 +790,7 @@ Creature* Battlefield::SpawnCreature(uint32 entry, Position const& pos)
// Set creature in world
map->AddToMap(creature);
creature->setActive(true);
+ creature->SetFarVisible(true);
return creature;
}
@@ -815,6 +816,7 @@ GameObject* Battlefield::SpawnGameObject(uint32 entry, Position const& pos, Quat
// Add to world
map->AddToMap(go);
go->setActive(true);
+ go->SetFarVisible(true);
return go;
}
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index bd41de9e657..7e2f0699542 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -1027,7 +1027,7 @@ void MovementInfo::OutDebug()
}
WorldObject::WorldObject(bool isWorldObject) : WorldLocation(), LastUsedScriptID(0),
-m_name(""), m_isActive(false), m_isWorldObject(isWorldObject), m_zoneScript(nullptr),
+m_name(""), m_isActive(false), m_isFarVisible(false), m_isWorldObject(isWorldObject), m_zoneScript(nullptr),
m_transport(nullptr), m_zoneId(0), m_areaId(0), m_staticFloorZ(VMAP_INVALID_HEIGHT), m_currMap(nullptr), m_InstanceId(0),
m_phaseMask(PHASEMASK_NORMAL), m_notifyflags(0)
{
@@ -1087,6 +1087,14 @@ void WorldObject::setActive(bool on)
}
}
+void WorldObject::SetFarVisible(bool on)
+{
+ if (GetTypeId() == TYPEID_PLAYER)
+ return;
+
+ m_isFarVisible = on;
+}
+
void WorldObject::CleanupsBeforeDelete(bool /*finalCleanup*/)
{
if (IsInWorld())
@@ -1543,7 +1551,7 @@ float WorldObject::GetGridActivationRange() const
float WorldObject::GetVisibilityRange() const
{
- if (isActiveObject() && !ToPlayer())
+ if (IsFarVisible() && !ToPlayer())
return MAX_VISIBILITY_DISTANCE;
else
return GetMap()->GetVisibilityRange();
@@ -1555,7 +1563,7 @@ float WorldObject::GetSightRange(WorldObject const* target) const
{
if (ToPlayer())
{
- if (target && target->isActiveObject() && !target->ToPlayer())
+ if (target && target->IsFarVisible() && !target->ToPlayer())
return MAX_VISIBILITY_DISTANCE;
else if (ToPlayer()->GetCinematicMgr()->IsOnCinematic())
return DEFAULT_VISIBILITY_INSTANCE;
diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h
index a3311615c4f..7e44294254f 100644
--- a/src/server/game/Entities/Object/Object.h
+++ b/src/server/game/Entities/Object/Object.h
@@ -422,6 +422,8 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation
bool isActiveObject() const { return m_isActive; }
void setActive(bool isActiveObject);
+ bool IsFarVisible() const { return m_isFarVisible; }
+ void SetFarVisible(bool on);
void SetWorldObject(bool apply);
bool IsPermanentWorldObject() const { return m_isWorldObject; }
bool IsWorldObject() const;
@@ -456,6 +458,7 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation
protected:
std::string m_name;
bool m_isActive;
+ bool m_isFarVisible;
const bool m_isWorldObject;
ZoneScript* m_zoneScript;
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp
index 2a2145f9423..c5629194054 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp
@@ -353,6 +353,7 @@ public:
if (Creature* nefarian = me->SummonCreature(NPC_NEFARIAN, NefarianLoc[0]))
{
nefarian->setActive(true);
+ nefarian->SetFarVisible(true);
nefarian->SetCanFly(true);
nefarian->SetDisableGravity(true);
nefarian->CastSpell(nullptr, SPELL_SHADOWFLAME_INITIAL);
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp
index 38eb7fff204..76b25640969 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp
@@ -257,6 +257,7 @@ public:
{
nefarius->SetPhaseMask(1, true);
nefarius->setActive(true);
+ nefarius->SetFarVisible(true);
nefarius->Respawn();
nefarius->GetMotionMaster()->MoveTargetedHome();
}
diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp
index 7204f406fda..53a011a5997 100644
--- a/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp
+++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_nightbane.cpp
@@ -157,6 +157,7 @@ public:
Talk(EMOTE_SUMMON);
events.SetPhase(PHASE_INTRO);
me->setActive(true);
+ me->SetFarVisible(true);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
me->GetMotionMaster()->MoveAlongSplineChain(POINT_INTRO_START, SPLINE_CHAIN_INTRO_START, false);
HandleTerraceDoors(false);
diff --git a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp
index 1169772f369..f1502ca2ac1 100644
--- a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp
+++ b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp
@@ -559,6 +559,7 @@ public:
{
arca->GetMotionMaster()->MovePoint(0, -11010.82f, -1761.18f, 156.47f);
arca->setActive(true);
+ arca->SetFarVisible(true);
arca->InterruptNonMeleeSpells(true);
arca->SetSpeedRate(MOVE_FLIGHT, 2.0f);
}
diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/zone_the_scarlet_enclave.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/zone_the_scarlet_enclave.cpp
index 44bb222ea18..1f70792779c 100644
--- a/src/server/scripts/EasternKingdoms/ScarletEnclave/zone_the_scarlet_enclave.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/zone_the_scarlet_enclave.cpp
@@ -69,6 +69,7 @@ public:
void Reset() override
{
me->setActive(true);
+ me->SetFarVisible(true);
me->SetVisible(false);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
me->SetCanFly(true);
diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp
index 1d221606877..e2438ed9e54 100644
--- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp
+++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_brutallus.cpp
@@ -153,6 +153,7 @@ public:
{
Madrigosa->Respawn();
Madrigosa->setActive(true);
+ Madrigosa->SetFarVisible(true);
IsIntro = true;
Madrigosa->SetMaxHealth(me->GetMaxHealth());
Madrigosa->SetHealth(me->GetMaxHealth());
diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp
index bf9659bd742..0fee44d5491 100644
--- a/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp
+++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/boss_kiljaeden.cpp
@@ -265,6 +265,7 @@ public:
me->SetDisableGravity(true);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
me->setActive(true);
+ me->SetFarVisible(true);
for (uint8 i = 0; i < 4; ++i)
if (GameObject* pOrb = GetOrb(i))
@@ -312,6 +313,7 @@ public:
pOrb->CastSpell(me, SPELL_RING_OF_BLUE_FLAMES);
pOrb->SetFaction(FACTION_FRIENDLY);
pOrb->setActive(true);
+ pOrb->SetFarVisible(true);
pOrb->Refresh();
}
}
@@ -324,6 +326,7 @@ public:
pOrb->CastSpell(me, SPELL_RING_OF_BLUE_FLAMES);
pOrb->SetFaction(FACTION_FRIENDLY);
pOrb->setActive(true);
+ pOrb->SetFarVisible(true);
pOrb->Refresh();
OrbsEmpowered = (OrbsEmpowered+1)%4;
@@ -355,6 +358,7 @@ public:
{
pOrb->CastSpell(me, SPELL_RING_OF_BLUE_FLAMES);
pOrb->setActive(true);
+ pOrb->SetFarVisible(true);
pOrb->Refresh();
}
}
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp
index d9b18686f78..4d02a6d8f71 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjalAI.cpp
@@ -384,6 +384,7 @@ void hyjalAI::SummonedCreatureDespawn(Creature* summoned)
void hyjalAI::Reset()
{
me->setActive(true);
+ me->SetFarVisible(true);
Initialize();
@@ -504,6 +505,7 @@ void hyjalAI::SummonCreature(uint32 entry, float Base[4][3])
creature->SetWalk(false);
creature->setActive(true);
+ creature->SetFarVisible(true);
switch (entry)
{
case NECROMANCER:
@@ -1028,6 +1030,7 @@ void hyjalAI::DoOverrun(uint32 faction, const uint32 diff)
ENSURE_AI(hyjal_trashAI, unit->AI())->IsOverrun = true;
ENSURE_AI(hyjal_trashAI, unit->AI())->OverrunType = i;
unit->setActive(true);
+ unit->SetFarVisible(true);
}
}
for (uint8 i = 0; i < 3; ++i)//summon 3 abominations
@@ -1040,6 +1043,7 @@ void hyjalAI::DoOverrun(uint32 faction, const uint32 diff)
ENSURE_AI(hyjal_trashAI, unit->AI())->IsOverrun = true;
ENSURE_AI(hyjal_trashAI, unit->AI())->OverrunType = i;
unit->setActive(true);
+ unit->SetFarVisible(true);
}
}
for (uint8 i = 0; i < 5; ++i)//summon 5 gargoyles
@@ -1052,6 +1056,7 @@ void hyjalAI::DoOverrun(uint32 faction, const uint32 diff)
ENSURE_AI(hyjal_trashAI, unit->AI())->IsOverrun = true;
ENSURE_AI(hyjal_trashAI, unit->AI())->OverrunType = i;
unit->setActive(true);
+ unit->SetFarVisible(true);
}
}
break;
@@ -1069,6 +1074,7 @@ void hyjalAI::DoOverrun(uint32 faction, const uint32 diff)
ENSURE_AI(hyjal_trashAI, unit->AI())->IsOverrun = true;
ENSURE_AI(hyjal_trashAI, unit->AI())->OverrunType = i;
unit->setActive(true);
+ unit->SetFarVisible(true);
}
}
for (uint8 i = 0; i < 25; ++i)//summon 25 ghouls
@@ -1081,6 +1087,7 @@ void hyjalAI::DoOverrun(uint32 faction, const uint32 diff)
ENSURE_AI(hyjal_trashAI, unit->AI())->IsOverrun = true;
ENSURE_AI(hyjal_trashAI, unit->AI())->OverrunType = i;
unit->setActive(true);
+ unit->SetFarVisible(true);
}
}
for (uint8 i = 0; i < 5; ++i)//summon 5 abominations
@@ -1093,6 +1100,7 @@ void hyjalAI::DoOverrun(uint32 faction, const uint32 diff)
ENSURE_AI(hyjal_trashAI, unit->AI())->IsOverrun = true;
ENSURE_AI(hyjal_trashAI, unit->AI())->OverrunType = i;
unit->setActive(true);
+ unit->SetFarVisible(true);
}
}
break;
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp
index 92e1bf210ce..c4341464502 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp
@@ -205,6 +205,7 @@ public:
instance = creature->GetInstanceScript();
HadMount = false;
me->setActive(true);
+ me->SetFarVisible(true);
}
void Initialize()
diff --git a/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp b/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp
index 888a7ad4b21..e63f8e03453 100644
--- a/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp
+++ b/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp
@@ -184,6 +184,7 @@ public:
break;
case NPC_LAIRGUARD:
summoned->setActive(true);
+ summoned->SetFarVisible(true);
break;
}
summons.Summon(summoned);
diff --git a/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp b/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp
index 969ce3da68b..e0ef71b4de5 100644
--- a/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp
+++ b/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp
@@ -90,6 +90,7 @@ public:
currentEvent = 0;
eventProgress = 0;
me->setActive(true);
+ me->SetFarVisible(true);
me->SetImmuneToPC(false);
}
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp
index c34a4511981..2a844a5af99 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp
@@ -57,14 +57,17 @@ public:
case NPC_TENEBRON:
tenebronGUID = creature->GetGUID();
creature->setActive(true);
+ creature->SetFarVisible(true);
break;
case NPC_SHADRON:
shadronGUID = creature->GetGUID();
creature->setActive(true);
+ creature->SetFarVisible(true);
break;
case NPC_VESPERON:
vesperonGUID = creature->GetGUID();
creature->setActive(true);
+ creature->SetFarVisible(true);
break;
}
}
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp
index 05a1ce8d293..e537908586e 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp
@@ -91,6 +91,7 @@ class boss_baltharus_the_warborn : public CreatureScript
{
case ACTION_INTRO_BALTHARUS:
me->setActive(true);
+ me->SetFarVisible(true);
events.ScheduleEvent(EVENT_INTRO_TALK, Seconds(7), 0, PHASE_INTRO);
break;
case ACTION_CLONE:
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
index 0ef17388604..f13f4269ed3 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
@@ -1078,6 +1078,7 @@ class npc_meteor_strike : public CreatureScript
{
DoCastSelf(SPELL_METEOR_STRIKE_FIRE_AURA_2, true);
me->setActive(true);
+ me->SetFarVisible(true);
_events.ScheduleEvent(EVENT_SPAWN_METEOR_FLAME, Milliseconds(500));
}
}
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp
index 958800ca41e..2d899100dd5 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp
@@ -79,6 +79,7 @@ class npc_xerestrasza : public CreatureScript
if (action == ACTION_BALTHARUS_DEATH)
{
me->setActive(true);
+ me->SetFarVisible(true);
_isIntro = false;
Talk(SAY_XERESTRASZA_EVENT);
@@ -133,6 +134,7 @@ class npc_xerestrasza : public CreatureScript
me->SetFlag(UNIT_NPC_FLAGS, GOSSIP_OPTION_QUESTGIVER);
Talk(SAY_XERESTRASZA_EVENT_7);
me->setActive(false);
+ me->SetFarVisible(false);
break;
default:
break;
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
index e5264259298..e483d960db7 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp
@@ -283,6 +283,7 @@ class boss_sindragosa : public CreatureScript
instance->SetBossState(DATA_SINDRAGOSA, IN_PROGRESS);
me->SetCombatPulseDelay(5);
me->setActive(true);
+ me->SetFarVisible(true);
DoZoneInCombat();
}
@@ -320,6 +321,7 @@ class boss_sindragosa : public CreatureScript
return;
me->setActive(true);
+ me->SetFarVisible(true);
me->SetCanFly(true);
me->SetDisableGravity(true);
me->SetByteFlag(UNIT_FIELD_BYTES_1, UNIT_BYTES_1_OFFSET_ANIM_TIER, UNIT_BYTE1_FLAG_ALWAYS_STAND | UNIT_BYTE1_FLAG_HOVER);
@@ -354,6 +356,7 @@ class boss_sindragosa : public CreatureScript
{
case POINT_FROSTWYRM_LAND:
me->setActive(false);
+ me->SetFarVisible(false);
me->SetCanFly(false);
me->SetDisableGravity(false);
me->RemoveByteFlag(UNIT_FIELD_BYTES_1, UNIT_BYTES_1_OFFSET_ANIM_TIER, UNIT_BYTE1_FLAG_ALWAYS_STAND | UNIT_BYTE1_FLAG_HOVER);
@@ -716,6 +719,7 @@ class npc_spinestalker : public CreatureScript
return;
me->setActive(true);
+ me->SetFarVisible(true);
me->SetSpeedRate(MOVE_FLIGHT, 2.0f);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
float moveTime = me->GetExactDist(&SpinestalkerFlyPos) / (me->GetSpeed(MOVE_FLIGHT) * 0.001f);
@@ -734,6 +738,7 @@ class npc_spinestalker : public CreatureScript
return;
me->setActive(false);
+ me->SetFarVisible(false);
me->SetCanFly(false);
me->SetDisableGravity(false);
me->RemoveByteFlag(UNIT_FIELD_BYTES_1, UNIT_BYTES_1_OFFSET_ANIM_TIER, UNIT_BYTE1_FLAG_ALWAYS_STAND | UNIT_BYTE1_FLAG_HOVER);
@@ -853,6 +858,7 @@ class npc_rimefang : public CreatureScript
return;
me->setActive(true);
+ me->SetFarVisible(true);
me->SetSpeedRate(MOVE_FLIGHT, 2.0f);
me->SetImmuneToPC(true);
float moveTime = me->GetExactDist(&RimefangFlyPos) / (me->GetSpeed(MOVE_FLIGHT) * 0.001f);
@@ -871,6 +877,7 @@ class npc_rimefang : public CreatureScript
return;
me->setActive(false);
+ me->SetFarVisible(false);
me->SetCanFly(false);
me->SetDisableGravity(false);
me->RemoveByteFlag(UNIT_FIELD_BYTES_1, UNIT_BYTES_1_OFFSET_ANIM_TIER, UNIT_BYTE1_FLAG_ALWAYS_STAND | UNIT_BYTE1_FLAG_HOVER);
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp
index 573573965e4..6352fb71b8d 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp
@@ -1077,6 +1077,7 @@ class boss_the_lich_king : public CreatureScript
triggers.sort(Trinity::ObjectDistanceOrderPred(terenas, true));
Creature* spawner = triggers.front();
spawner->setActive(true);
+ spawner->SetFarVisible(true);
spawner->CastSpell(spawner, SPELL_SUMMON_SPIRIT_BOMB_1, true); // summons bombs randomly
spawner->CastSpell(spawner, SPELL_SUMMON_SPIRIT_BOMB_2, true); // summons bombs on players
spawner->m_Events.AddEvent(new TriggerWickedSpirit(spawner), spawner->m_Events.CalculateTime(3000));
@@ -1764,6 +1765,7 @@ class npc_terenas_menethil : public CreatureScript
{
case ACTION_FROSTMOURNE_INTRO:
me->setActive(true);
+ me->SetFarVisible(false);
if (!IsHeroic())
me->SetHealth(me->GetMaxHealth() / 2);
DoCast(me, SPELL_LIGHTS_FAVOR);
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
index ca820785719..acf05493000 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
@@ -419,12 +419,16 @@ class npc_highlord_tirion_fordring_lh : public CreatureScript
if (Creature* factionNPC = me->FindNearestCreature(_instance->GetData(DATA_TEAM_IN_INSTANCE) == HORDE ? NPC_SE_HIGH_OVERLORD_SAURFANG : NPC_SE_MURADIN_BRONZEBEARD, 50.0f))
{
me->setActive(true);
+ me->SetFarVisible(true);
_theLichKing = theLichKing->GetGUID();
theLichKing->setActive(true);
+ theLichKing->SetFarVisible(true);
_bolvarFordragon = bolvarFordragon->GetGUID();
bolvarFordragon->setActive(true);
+ bolvarFordragon->SetFarVisible(true);
_factionNPC = factionNPC->GetGUID();
factionNPC->setActive(true);
+ factionNPC->SetFarVisible(true);
}
}
}
@@ -516,6 +520,7 @@ class npc_highlord_tirion_fordring_lh : public CreatureScript
{
bolvarFordragon->AI()->Talk(SAY_BOLVAR_INTRO_1);
bolvarFordragon->setActive(false);
+ bolvarFordragon->SetFarVisible(false);
}
break;
case EVENT_LK_INTRO_5:
@@ -523,6 +528,7 @@ class npc_highlord_tirion_fordring_lh : public CreatureScript
{
theLichKing->AI()->Talk(SAY_LK_INTRO_5);
theLichKing->setActive(false);
+ theLichKing->SetFarVisible(false);
}
break;
case EVENT_SAURFANG_INTRO_1:
@@ -836,6 +842,7 @@ class boss_sister_svalna : public CreatureScript
break;
case ACTION_START_GAUNTLET:
me->setActive(true);
+ me->SetFarVisible(true);
_isEventInProgress = true;
me->SetImmuneToAll(true);
events.ScheduleEvent(EVENT_SVALNA_START, 25000);
@@ -848,6 +855,7 @@ class boss_sister_svalna : public CreatureScript
break;
case ACTION_RESET_EVENT:
me->setActive(false);
+ me->SetFarVisible(false);
Reset();
break;
default:
@@ -871,6 +879,7 @@ class boss_sister_svalna : public CreatureScript
_isEventInProgress = false;
me->setActive(false);
+ me->SetFarVisible(false);
me->SetImmuneToAll(false);
me->SetDisableGravity(false);
me->SetHover(false);
@@ -1004,6 +1013,7 @@ class npc_crok_scourgebane : public CreatureScript
_events.ScheduleEvent(EVENT_CROK_INTRO_3, 14000);
_events.ScheduleEvent(EVENT_START_PATHING, 37000);
me->setActive(true);
+ me->SetFarVisible(true);
for (uint32 i = 0; i < 4; ++i)
if (Creature* crusader = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_CAPTAIN_ARNATH + i)))
crusader->AI()->DoAction(ACTION_START_GAUNTLET);
@@ -1013,6 +1023,7 @@ class npc_crok_scourgebane : public CreatureScript
_isEventActive = false;
_isEventDone = _instance->GetBossState(DATA_SISTER_SVALNA) == DONE;
me->setActive(false);
+ me->SetFarVisible(false);
_aliveTrash.clear();
_currentWPid = 0;
}
@@ -1030,6 +1041,7 @@ class npc_crok_scourgebane : public CreatureScript
{
_isEventActive = false;
me->setActive(false);
+ me->SetFarVisible(false);
Talk(SAY_CROK_FINAL_WP);
if (Creature* svalna = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_SISTER_SVALNA)))
svalna->AI()->DoAction(ACTION_RESURRECT_CAPTAINS);
@@ -1059,6 +1071,7 @@ class npc_crok_scourgebane : public CreatureScript
{
_isEventActive = false;
me->setActive(false);
+ me->SetFarVisible(false);
Talk(SAY_CROK_FINAL_WP);
if (Creature* svalna = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_SISTER_SVALNA)))
svalna->AI()->DoAction(ACTION_RESURRECT_CAPTAINS);
@@ -1283,6 +1296,7 @@ struct npc_argent_captainAI : public ScriptedAI
}
me->setActive(true);
+ me->SetFarVisible(true);
}
else if (action == ACTION_RESET_EVENT)
{
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
index 0656b8ee334..b32824e3428 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
@@ -1002,9 +1002,10 @@ class instance_icecrown_citadel : public InstanceMapScript
// set the platform as active object to dramatically increase visibility range
// note: "active" gameobjects do not block grid unloading
if (GameObject* precipice = instance->GetGameObject(ArthasPrecipiceGUID))
- precipice->setActive(state == IN_PROGRESS);
+ precipice->SetFarVisible(state == IN_PROGRESS);
+
if (GameObject* platform = instance->GetGameObject(ArthasPlatformGUID))
- platform->setActive(state == IN_PROGRESS);
+ platform->SetFarVisible(state == IN_PROGRESS);
if (instance->IsHeroic())
{
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp b/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp
index 8b3cdfb060c..afa32ff5c70 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp
@@ -231,6 +231,7 @@ struct boss_four_horsemen_baseAI : public BossAI
cBoss->SetReactState(REACT_PASSIVE);
cBoss->AttackStop(); // clear initial target that was set on enter combat
cBoss->setActive(true);
+ cBoss->SetFarVisible(true);
for (Map::PlayerList::const_iterator it = players.begin(); it != players.end(); ++it)
{
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp
index 321ec86a80a..d18ef2a581e 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_noth.cpp
@@ -165,6 +165,7 @@ public:
{
summons.Summon(summon);
summon->setActive(true);
+ summon->SetFarVisible(true);
summon->AI()->DoZoneInCombat(nullptr, 250.0f); // specify range to cover entire room - default 50yd is not enough
}
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp
index 699a8cd3caf..31c9b2715d6 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp
@@ -208,10 +208,17 @@ struct boss_thaddius : public BossAI
{
_JustDied();
me->setActive(false);
+ me->SetFarVisible(false);
if (Creature* stalagg = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_STALAGG)))
+ {
stalagg->setActive(false);
+ stalagg->SetFarVisible(false);
+ }
if (Creature* feugen = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_FEUGEN)))
+ {
feugen->setActive(false);
+ feugen->SetFarVisible(false);
+ }
Talk(SAY_DEATH);
}
@@ -240,11 +247,18 @@ struct boss_thaddius : public BossAI
instance->SetBossState(BOSS_THADDIUS, IN_PROGRESS);
me->setActive(true);
+ me->SetFarVisible(true);
DoZoneInCombat();
if (Creature* stalagg = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_STALAGG)))
+ {
stalagg->setActive(true);
+ stalagg->SetFarVisible(true);
+ }
if (Creature* feugen = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_FEUGEN)))
+ {
feugen->setActive(true);
+ feugen->SetFarVisible(true);
+ }
break;
case ACTION_FEUGEN_DIED:
if (Creature* feugen = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_FEUGEN)))
@@ -305,6 +319,7 @@ struct boss_thaddius : public BossAI
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_STUNNED);
me->SetImmuneToPC(true);
me->setActive(false);
+ me->SetFarVisible(false);
if (Creature* feugen = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_FEUGEN)))
feugen->AI()->DoAction(ACTION_BEGIN_RESET_ENCOUNTER);
if (Creature* stalagg = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_STALAGG)))
@@ -496,6 +511,7 @@ public:
coil->SetGoState(GO_STATE_READY);
me->DespawnOrUnsummon(0, Hours(24*7)); // will be force respawned by thaddius
me->setActive(false);
+ me->SetFarVisible(false);
}
void ResetEncounter()
@@ -759,6 +775,7 @@ public:
coil->SetGoState(GO_STATE_READY);
me->DespawnOrUnsummon(0, Hours(24*7)); // will be force respawned by thaddius
me->setActive(false);
+ me->SetFarVisible(false);
}
void DoAction(int32 action) override
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp
index 71d955ecdc5..931244b95e4 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp
@@ -416,6 +416,7 @@ class boss_algalon_the_observer : public CreatureScript
brann->AI()->DoAction(ACTION_FINISH_INTRO);
me->setActive(true);
+ me->SetFarVisible(true);
DoZoneInCombat();
introDelay = 26000;
summons.DespawnEntry(NPC_AZEROTH);
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp
index 3fa37f00069..a1f06e4df48 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_razorscale.cpp
@@ -1232,6 +1232,7 @@ struct npc_razorscale_spawner : public ScriptedAI
void Reset() override
{
me->setActive(true);
+ me->SetFarVisible(true);
me->SetReactState(REACT_PASSIVE);
_scheduler.
Schedule(Seconds(1), [this](TaskContext /*context*/)
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp
index 99c5ed056a0..d8db758f8cc 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp
@@ -1142,6 +1142,7 @@ class npc_thorim_pre_phase : public CreatureScript
npc_thorim_pre_phaseAI(Creature* creature) : npc_thorim_trashAI(creature)
{
me->setActive(true); // prevent grid unload
+ me->SetFarVisible(true);
}
void Reset() override
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
index ee076761cc1..b89a15b2809 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp
@@ -365,6 +365,7 @@ public:
init.Launch();
me->setActive(true);
+ me->SetFarVisible(true);
me->SetCanFly(true);
me->SetDisableGravity(true);
me->SetByteFlag(UNIT_FIELD_BYTES_1, UNIT_BYTES_1_OFFSET_ANIM_TIER, UNIT_BYTE1_FLAG_ALWAYS_STAND | UNIT_BYTE1_FLAG_HOVER);
diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp
index 1f013868fc7..f59768ef65f 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp
@@ -189,18 +189,22 @@ class instance_serpent_shrine : public InstanceMapScript
case 184568:
ControlConsole = go->GetGUID();
go->setActive(true);
+ go->SetFarVisible(true);
break;
case 184203:
BridgePart[0] = go->GetGUID();
go->setActive(true);
+ go->SetFarVisible(true);
break;
case 184204:
BridgePart[1] = go->GetGUID();
go->setActive(true);
+ go->SetFarVisible(true);
break;
case 184205:
BridgePart[2] = go->GetGUID();
go->setActive(true);
+ go->SetFarVisible(true);
break;
default:
break;