aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2014-03-22 19:40:36 +0100
committerShauren <shauren.trinity@gmail.com>2014-03-22 19:40:36 +0100
commit529cabea68ab90e34ccafa276fc40a8f2723902b (patch)
tree12f2478d236046bb9e639e78fb9b81891a7e9afa
parent0758c474918534569e0d2ca4501db2f3bb7c8ce2 (diff)
Core/Map: Save weather, light and music overrides in map to send them to players logging in
-rw-r--r--src/server/game/DataStores/DBCStores.cpp17
-rw-r--r--src/server/game/DataStores/DBCStores.h2
-rw-r--r--src/server/game/DataStores/DBCStructure.h18
-rw-r--r--src/server/game/DataStores/DBCfmt.h1
-rw-r--r--src/server/game/Maps/Map.cpp103
-rw-r--r--src/server/game/Maps/Map.h22
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp70
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h16
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp10
-rw-r--r--src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp33
10 files changed, 198 insertions, 94 deletions
diff --git a/src/server/game/DataStores/DBCStores.cpp b/src/server/game/DataStores/DBCStores.cpp
index a4b3ded80e5..37f4f4c1930 100644
--- a/src/server/game/DataStores/DBCStores.cpp
+++ b/src/server/game/DataStores/DBCStores.cpp
@@ -123,6 +123,7 @@ DBCStorage <ItemRandomSuffixEntry> sItemRandomSuffixStore(ItemRandomSuffixfmt);
DBCStorage <ItemSetEntry> sItemSetStore(ItemSetEntryfmt);
DBCStorage <LFGDungeonEntry> sLFGDungeonStore(LFGDungeonEntryfmt);
+DBCStorage <LightEntry> sLightStore(LightEntryfmt);
DBCStorage <LiquidTypeEntry> sLiquidTypeStore(LiquidTypefmt);
DBCStorage <LockEntry> sLockStore(LockEntryfmt);
@@ -371,6 +372,7 @@ void LoadDBCStores(const std::string& dataPath)
LoadDBC(availableDbcLocales, bad_dbc_files, sItemSetStore, dbcPath, "ItemSet.dbc");
LoadDBC(availableDbcLocales, bad_dbc_files, sLFGDungeonStore, dbcPath, "LFGDungeons.dbc");
+ LoadDBC(availableDbcLocales, bad_dbc_files, sLightStore, dbcPath, "Light.dbc");
LoadDBC(availableDbcLocales, bad_dbc_files, sLiquidTypeStore, dbcPath, "LiquidType.dbc");
LoadDBC(availableDbcLocales, bad_dbc_files, sLockStore, dbcPath, "Lock.dbc");
@@ -944,3 +946,18 @@ LFGDungeonEntry const* GetLFGDungeon(uint32 mapId, Difficulty difficulty)
return NULL;
}
+
+uint32 GetDefaultMapLight(uint32 mapId)
+{
+ for (int32 i = sLightStore.GetNumRows(); i >= 0; --i)
+ {
+ LightEntry const* light = sLightStore.LookupEntry(uint32(i));
+ if (!light)
+ continue;
+
+ if (light->MapId == mapId && light->X == 0.0f && light->Y == 0.0f && light->Z == 0.0f)
+ return light->Id;
+ }
+
+ return 0;
+}
diff --git a/src/server/game/DataStores/DBCStores.h b/src/server/game/DataStores/DBCStores.h
index fe8fb35220b..39747141322 100644
--- a/src/server/game/DataStores/DBCStores.h
+++ b/src/server/game/DataStores/DBCStores.h
@@ -72,6 +72,8 @@ CharStartOutfitEntry const* GetCharStartOutfitEntry(uint8 race, uint8 class_, ui
LFGDungeonEntry const* GetLFGDungeon(uint32 mapId, Difficulty difficulty);
+uint32 GetDefaultMapLight(uint32 mapId);
+
extern DBCStorage <AchievementEntry> sAchievementStore;
extern DBCStorage <AchievementCriteriaEntry> sAchievementCriteriaStore;
extern DBCStorage <AreaTableEntry> sAreaStore;// recommend access using functions
diff --git a/src/server/game/DataStores/DBCStructure.h b/src/server/game/DataStores/DBCStructure.h
index d1db4fb634d..8efc32cc9b2 100644
--- a/src/server/game/DataStores/DBCStructure.h
+++ b/src/server/game/DataStores/DBCStructure.h
@@ -1230,6 +1230,24 @@ struct LFGDungeonEntry
uint32 Entry() const { return ID + (type << 24); }
};
+struct LightEntry
+{
+ uint32 Id;
+ uint32 MapId;
+ float X;
+ float Y;
+ float Z;
+ //float FalloffStart;
+ //float FalloffEnd;
+ //uint32 SkyAndFog;
+ //uint32 WaterSettings;
+ //uint32 SunsetParams;
+ //uint32 OtherParams;
+ //uint32 DeathParams;
+ //uint32 Unknown;
+ //uint32 Unknown;
+ //uint32 Unknown;
+};
struct LiquidTypeEntry
{
diff --git a/src/server/game/DataStores/DBCfmt.h b/src/server/game/DataStores/DBCfmt.h
index be4369399d4..a1587dd6087 100644
--- a/src/server/game/DataStores/DBCfmt.h
+++ b/src/server/game/DataStores/DBCfmt.h
@@ -79,6 +79,7 @@ char const ItemRandomPropertiesfmt[] = "nxiiixxssssssssssssssssx";
char const ItemRandomSuffixfmt[] = "nssssssssssssssssxxiiixxiiixx";
char const ItemSetEntryfmt[] = "dssssssssssssssssxiiiiiiiiiixxxxxxxiiiiiiiiiiiiiiiiii";
char const LFGDungeonEntryfmt[] = "nssssssssssssssssxiiiiiiiiixxixixxxxxxxxxxxxxxxxx";
+char const LightEntryfmt[] = "nifffxxxxxxxxxx";
char const LiquidTypefmt[] = "nxxixixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
char const LockEntryfmt[] = "niiiiiiiiiiiiiiiiiiiiiiiixxxxxxxx";
char const MailTemplateEntryfmt[] = "nxxxxxxxxxxxxxxxxxssssssssssssssssx";
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp
index 9c8f4977b78..9a26f0ae0e4 100644
--- a/src/server/game/Maps/Map.cpp
+++ b/src/server/game/Maps/Map.cpp
@@ -223,7 +223,7 @@ m_unloadTimer(0), m_VisibleDistance(DEFAULT_VISIBILITY_DISTANCE),
m_VisibilityNotifyPeriod(DEFAULT_VISIBILITY_NOTIFY_PERIOD),
m_activeNonPlayersIter(m_activeNonPlayers.end()), _transportsUpdateIter(_transports.end()),
i_gridExpiry(expiry),
-i_scriptLock(false)
+i_scriptLock(false), _defaultLight(GetDefaultMapLight(id))
{
m_parentMap = (_parent ? _parent : this);
for (unsigned int idx=0; idx < MAX_NUMBER_OF_GRIDS; ++idx)
@@ -477,6 +477,7 @@ bool Map::AddPlayerToMap(Player* player)
SendInitSelf(player);
SendInitTransports(player);
+ SendZoneDynamicInfo(player);
player->m_clientGUIDs.clear();
player->UpdateObjectVisibility(false);
@@ -3433,3 +3434,103 @@ time_t Map::GetLinkedRespawnTime(uint64 guid) const
return time_t(0);
}
+void Map::SendZoneDynamicInfo(Player* player)
+{
+ uint32 zoneId = GetZoneId(player->GetPositionX(), player->GetPositionY(), player->GetPositionZ());
+ ZoneDynamicInfoMap::const_iterator itr = _zoneDynamicInfo.find(zoneId);
+ if (itr == _zoneDynamicInfo.end())
+ return;
+
+ if (uint32 music = itr->second.MusicId)
+ {
+ WorldPacket data(SMSG_PLAY_MUSIC, 4);
+ data << uint32(music);
+ player->SendDirectMessage(&data);
+ }
+
+ if (uint32 weather = itr->second.WeatherId)
+ {
+ WorldPacket data(SMSG_WEATHER, 4 + 4 + 1);
+ data << uint32(weather);
+ data << float(itr->second.WeatherGrade);
+ data << uint8(0);
+ player->SendDirectMessage(&data);
+ }
+
+ if (uint32 overrideLight = itr->second.OverrideLightId)
+ {
+ WorldPacket data(SMSG_OVERRIDE_LIGHT, 4 + 4 + 1);
+ data << uint32(_defaultLight);
+ data << uint32(overrideLight);
+ data << uint32(itr->second.LightFadeInTime);
+ player->SendDirectMessage(&data);
+ }
+}
+
+void Map::SetZoneMusic(uint32 zoneId, uint32 musicId)
+{
+ if (_zoneDynamicInfo.find(zoneId) == _zoneDynamicInfo.end())
+ _zoneDynamicInfo.insert(ZoneDynamicInfoMap::value_type(zoneId, ZoneDynamicInfo()));
+
+ _zoneDynamicInfo[zoneId].MusicId = musicId;
+
+ Map::PlayerList const& players = GetPlayers();
+ if (!players.isEmpty())
+ {
+ WorldPacket data(SMSG_PLAY_MUSIC, 4);
+ data << uint32(musicId);
+
+ for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
+ if (Player* player = itr->GetSource())
+ if (player->GetZoneId() == zoneId)
+ player->SendDirectMessage(&data);
+ }
+}
+
+void Map::SetZoneWeather(uint32 zoneId, uint32 weatherId, float weatherGrade)
+{
+ if (_zoneDynamicInfo.find(zoneId) == _zoneDynamicInfo.end())
+ _zoneDynamicInfo.insert(ZoneDynamicInfoMap::value_type(zoneId, ZoneDynamicInfo()));
+
+ ZoneDynamicInfo& info = _zoneDynamicInfo[zoneId];
+ info.WeatherId = weatherId;
+ info.WeatherGrade = weatherGrade;
+ Map::PlayerList const& players = GetPlayers();
+
+ if (!players.isEmpty())
+ {
+ WorldPacket data(SMSG_WEATHER, 4 + 4 + 1);
+ data << uint32(weatherId);
+ data << float(weatherGrade);
+ data << uint8(0);
+
+ for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
+ if (Player* player = itr->GetSource())
+ if (player->GetZoneId() == zoneId)
+ player->SendDirectMessage(&data);
+ }
+}
+
+void Map::SetZoneOverrideLight(uint32 zoneId, uint32 lightId, uint32 fadeInTime)
+{
+ if (_zoneDynamicInfo.find(zoneId) == _zoneDynamicInfo.end())
+ _zoneDynamicInfo.insert(ZoneDynamicInfoMap::value_type(zoneId, ZoneDynamicInfo()));
+
+ ZoneDynamicInfo& info = _zoneDynamicInfo[zoneId];
+ info.OverrideLightId = lightId;
+ info.LightFadeInTime = fadeInTime;
+ Map::PlayerList const& players = GetPlayers();
+
+ if (!players.isEmpty())
+ {
+ WorldPacket data(SMSG_OVERRIDE_LIGHT, 4 + 4 + 1);
+ data << uint32(_defaultLight);
+ data << uint32(lightId);
+ data << uint32(fadeInTime);
+
+ for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
+ if (Player* player = itr->GetSource())
+ if (player->GetZoneId() == zoneId)
+ player->SendDirectMessage(&data);
+ }
+}
diff --git a/src/server/game/Maps/Map.h b/src/server/game/Maps/Map.h
index 3d376d16c3d..4daeebe43d1 100644
--- a/src/server/game/Maps/Map.h
+++ b/src/server/game/Maps/Map.h
@@ -229,6 +229,18 @@ enum LevelRequirementVsMode
LEVELREQUIREMENT_HEROIC = 70
};
+struct ZoneDynamicInfo
+{
+ ZoneDynamicInfo() : MusicId(0), WeatherId(0), WeatherGrade(0.0f),
+ OverrideLightId(0), LightFadeInTime(0) { }
+
+ uint32 MusicId;
+ uint32 WeatherId;
+ float WeatherGrade;
+ uint32 OverrideLightId;
+ uint32 LightFadeInTime;
+};
+
#if defined(__GNUC__)
#pragma pack()
#else
@@ -243,6 +255,8 @@ enum LevelRequirementVsMode
typedef std::map<uint32/*leaderDBGUID*/, CreatureGroup*> CreatureGroupHolderType;
+typedef UNORDERED_MAP<uint32 /*zoneId*/, ZoneDynamicInfo> ZoneDynamicInfoMap;
+
class Map : public GridRefManager<NGridType>
{
friend class MapReference;
@@ -490,6 +504,11 @@ class Map : public GridRefManager<NGridType>
void SendInitTransports(Player* player);
void SendRemoveTransports(Player* player);
+ void SendZoneDynamicInfo(Player* player);
+
+ void SetZoneMusic(uint32 zoneId, uint32 musicId);
+ void SetZoneWeather(uint32 zoneId, uint32 weatherId, float weatherGrade);
+ void SetZoneOverrideLight(uint32 zoneId, uint32 lightId, uint32 fadeInTime);
private:
void LoadMapAndVMap(int gx, int gy);
@@ -634,6 +653,9 @@ class Map : public GridRefManager<NGridType>
UNORDERED_MAP<uint32 /*dbGUID*/, time_t> _creatureRespawnTimes;
UNORDERED_MAP<uint32 /*dbGUID*/, time_t> _goRespawnTimes;
+
+ ZoneDynamicInfoMap _zoneDynamicInfo;
+ uint32 _defaultLight;
};
enum InstanceResetMethod
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 30d520ce7bf..b76e217fbf5 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp
@@ -560,7 +560,7 @@ class boss_the_lich_king : public CreatureScript
me->VisitNearbyGridObject(333.0f, worker);
// Reset any light override
- SendLightOverride(0, 5000);
+ me->GetMap()->SetZoneOverrideLight(AREA_THE_FROZEN_THRONE, 0, 5000);
}
bool CanAIAttack(Unit const* target) const OVERRIDE
@@ -593,7 +593,7 @@ class boss_the_lich_king : public CreatureScript
case ACTION_START_ENCOUNTER:
instance->SetBossState(DATA_THE_LICH_KING, IN_PROGRESS);
Talk(SAY_LK_INTRO_1);
- SendMusicToPlayers(MUSIC_FROZEN_THRONE);
+ me->GetMap()->SetZoneMusic(AREA_THE_FROZEN_THRONE, MUSIC_FROZEN_THRONE);
// schedule talks
me->SetStandState(UNIT_STAND_STATE_STAND);
events.ScheduleEvent(EVENT_INTRO_MOVE_1, 4000);
@@ -602,10 +602,10 @@ class boss_the_lich_king : public CreatureScript
events.ScheduleEvent(EVENT_START_ATTACK, 5000);
break;
case ACTION_PLAY_MUSIC:
- SendMusicToPlayers(MUSIC_FINAL);
+ me->GetMap()->SetZoneMusic(AREA_THE_FROZEN_THRONE, MUSIC_FINAL);
break;
case ACTION_RESTORE_LIGHT:
- SendLightOverride(0, 5000);
+ me->GetMap()->SetZoneOverrideLight(AREA_THE_FROZEN_THRONE, 0, 5000);
break;
case ACTION_BREAK_FROSTMOURNE:
me->CastSpell((Unit*)NULL, SPELL_SUMMON_BROKEN_FROSTMOURNE, TRIGGERED_IGNORE_CAST_IN_PROGRESS);
@@ -687,7 +687,7 @@ class boss_the_lich_king : public CreatureScript
events.Reset();
events.SetPhase(PHASE_OUTRO);
summons.DespawnAll();
- SendMusicToPlayers(MUSIC_FURY_OF_FROSTMOURNE);
+ me->GetMap()->SetZoneMusic(AREA_THE_FROZEN_THRONE, MUSIC_FURY_OF_FROSTMOURNE);
me->InterruptNonMeleeSpells(true);
me->CastSpell((Unit*)NULL, SPELL_FURY_OF_FROSTMOURNE, TRIGGERED_NONE);
me->SetWalk(true);
@@ -739,8 +739,8 @@ class boss_the_lich_king : public CreatureScript
{
summon->CastSpell((Unit*)NULL, SPELL_BROKEN_FROSTMOURNE, true);
- SendLightOverride(LIGHT_SOULSTORM, 10000);
- SendWeather(WEATHER_STATE_BLACKSNOW);
+ me->GetMap()->SetZoneOverrideLight(AREA_THE_FROZEN_THRONE, LIGHT_SOULSTORM, 10000);
+ me->GetMap()->SetZoneWeather(AREA_THE_FROZEN_THRONE, WEATHER_STATE_BLACKSNOW, 0.5f);
events.ScheduleEvent(EVENT_OUTRO_SOUL_BARRAGE, 5000, 0, PHASE_OUTRO);
return;
@@ -792,8 +792,8 @@ class boss_the_lich_king : public CreatureScript
{
if (spell->Id == REMORSELESS_WINTER_1 || spell->Id == REMORSELESS_WINTER_2)
{
- SendLightOverride(LIGHT_SNOWSTORM, 5000);
- SendWeather(WEATHER_STATE_LIGHT_SNOW);
+ me->GetMap()->SetZoneOverrideLight(AREA_THE_FROZEN_THRONE, LIGHT_SNOWSTORM, 5000);
+ me->GetMap()->SetZoneWeather(AREA_THE_FROZEN_THRONE, WEATHER_STATE_LIGHT_SNOW, 0.5f);
}
}
@@ -819,7 +819,7 @@ class boss_the_lich_king : public CreatureScript
case POINT_CENTER_1:
me->SetFacingTo(0.0f);
Talk(SAY_LK_REMORSELESS_WINTER);
- SendMusicToPlayers(MUSIC_SPECIAL);
+ me->GetMap()->SetZoneMusic(AREA_THE_FROZEN_THRONE, MUSIC_SPECIAL);
DoCast(me, SPELL_REMORSELESS_WINTER_1);
events.DelayEvents(62500, EVENT_GROUP_BERSERK); // delay berserk timer, its not ticking during phase transitions
events.ScheduleEvent(EVENT_QUAKE, 62500, 0, PHASE_TRANSITION);
@@ -834,7 +834,7 @@ class boss_the_lich_king : public CreatureScript
case POINT_CENTER_2:
me->SetFacingTo(0.0f);
Talk(SAY_LK_REMORSELESS_WINTER);
- SendMusicToPlayers(MUSIC_SPECIAL);
+ me->GetMap()->SetZoneMusic(AREA_THE_FROZEN_THRONE, MUSIC_SPECIAL);
DoCast(me, SPELL_REMORSELESS_WINTER_2);
summons.DespawnEntry(NPC_VALKYR_SHADOWGUARD);
events.DelayEvents(62500, EVENT_GROUP_BERSERK); // delay berserk timer, its not ticking during phase transitions
@@ -920,7 +920,7 @@ class boss_the_lich_king : public CreatureScript
break;
case EVENT_SUMMON_SHAMBLING_HORROR:
DoCast(me, SPELL_SUMMON_SHAMBLING_HORROR);
- SendMusicToPlayers(MUSIC_SPECIAL);
+ me->GetMap()->SetZoneMusic(AREA_THE_FROZEN_THRONE, MUSIC_SPECIAL);
events.ScheduleEvent(EVENT_SUMMON_SHAMBLING_HORROR, 60000, 0, PHASE_ONE);
break;
case EVENT_SUMMON_DRUDGE_GHOUL:
@@ -980,18 +980,18 @@ class boss_the_lich_king : public CreatureScript
events.SetPhase(PHASE_TWO);
me->ClearUnitState(UNIT_STATE_CASTING); // clear state to ensure check in DoCastAOE passes
DoCastAOE(SPELL_QUAKE);
- SendMusicToPlayers(MUSIC_SPECIAL);
+ me->GetMap()->SetZoneMusic(AREA_THE_FROZEN_THRONE, MUSIC_SPECIAL);
Talk(SAY_LK_QUAKE);
break;
case EVENT_QUAKE_2:
events.SetPhase(PHASE_THREE);
me->ClearUnitState(UNIT_STATE_CASTING); // clear state to ensure check in DoCastAOE passes
DoCastAOE(SPELL_QUAKE);
- SendMusicToPlayers(MUSIC_SPECIAL);
+ me->GetMap()->SetZoneMusic(AREA_THE_FROZEN_THRONE, MUSIC_SPECIAL);
Talk(SAY_LK_QUAKE);
break;
case EVENT_SUMMON_VALKYR:
- SendMusicToPlayers(MUSIC_SPECIAL);
+ me->GetMap()->SetZoneMusic(AREA_THE_FROZEN_THRONE, MUSIC_SPECIAL);
Talk(SAY_LK_SUMMON_VALKYR);
DoCastAOE(SUMMON_VALKYR);
events.ScheduleEvent(EVENT_SUMMON_VALKYR, urand(45000, 50000), 0, PHASE_TWO);
@@ -1002,7 +1002,7 @@ class boss_the_lich_king : public CreatureScript
events.SetPhase(PHASE_THREE);
break;
case EVENT_VILE_SPIRITS:
- SendMusicToPlayers(MUSIC_SPECIAL);
+ me->GetMap()->SetZoneMusic(AREA_THE_FROZEN_THRONE, MUSIC_SPECIAL);
DoCastAOE(SPELL_VILE_SPIRITS);
events.ScheduleEvent(EVENT_VILE_SPIRITS, urand(35000, 40000), EVENT_GROUP_VILE_SPIRITS, PHASE_THREE);
break;
@@ -1073,7 +1073,7 @@ class boss_the_lich_king : public CreatureScript
case EVENT_OUTRO_RAISE_DEAD:
DoCastAOE(SPELL_RAISE_DEAD);
me->ClearUnitState(UNIT_STATE_CASTING);
- SendMusicToPlayers(MUSIC_FINAL);
+ me->GetMap()->SetZoneMusic(AREA_THE_FROZEN_THRONE, MUSIC_FINAL);
break;
case EVENT_OUTRO_TALK_5:
Talk(SAY_LK_OUTRO_5);
@@ -1114,42 +1114,6 @@ class boss_the_lich_king : public CreatureScript
}
private:
- void SendMusicToPlayers(uint32 musicId) const
- {
- WorldPacket data(SMSG_PLAY_MUSIC, 4);
- data << uint32(musicId);
- SendPacketToPlayers(&data);
- }
-
- void SendLightOverride(uint32 overrideId, uint32 fadeInTime) const
- {
- WorldPacket data(SMSG_OVERRIDE_LIGHT, 12);
- data << uint32(2488); // Light.dbc entry (map default)
- data << uint32(overrideId); // Light.dbc entry (override)
- data << uint32(fadeInTime);
- SendPacketToPlayers(&data);
- }
-
- void SendWeather(WeatherState weather) const
- {
- WorldPacket data(SMSG_WEATHER, 9);
- data << uint32(weather);
- data << float(0.5f);
- data << uint8(0);
- SendPacketToPlayers(&data);
- }
-
- // Send packet to all players in The Frozen Throne
- void SendPacketToPlayers(WorldPacket const* data) const
- {
- Map::PlayerList const& players = me->GetMap()->GetPlayers();
- if (!players.isEmpty())
- for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
- if (Player* player = itr->GetSource())
- if (player->GetAreaId() == AREA_THE_FROZEN_THRONE)
- player->GetSession()->SendPacket(data);
- }
-
uint32 _necroticPlagueStack;
uint32 _vileSpiritExplosions;
};
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h
index 8e529ba0ee9..56a8a46811c 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h
+++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h
@@ -68,7 +68,7 @@ enum TeleporterSpells
DEATHBRINGER_S_RISE_TELEPORT = 70858,
UPPER_SPIRE_TELEPORT = 70859,
FROZEN_THRONE_TELEPORT = 70860,
- SINDRAGOSA_S_LAIR_TELEPORT = 70861,
+ SINDRAGOSA_S_LAIR_TELEPORT = 70861
};
enum DataTypes
@@ -285,7 +285,7 @@ enum CreaturesIds
NPC_FROSTMOURNE_TRIGGER = 38584,
// Generic
- NPC_INVISIBLE_STALKER = 30298,
+ NPC_INVISIBLE_STALKER = 30298
};
enum GameObjectsIds
@@ -368,7 +368,7 @@ enum GameObjectsIds
GO_DOODAD_ICECROWN_SNOWEDGEWARNING01 = 202190,
GO_FROZEN_LAVAMAN = 202436,
GO_LAVAMAN_PILLARS_CHAINED = 202437,
- GO_LAVAMAN_PILLARS_UNCHAINED = 202438,
+ GO_LAVAMAN_PILLARS_UNCHAINED = 202438
};
enum AchievementCriteriaIds
@@ -403,7 +403,7 @@ enum AchievementCriteriaIds
CRITERIA_ONCE_BITTEN_TWICE_SHY_10N = 12780,
CRITERIA_ONCE_BITTEN_TWICE_SHY_25N = 13012,
CRITERIA_ONCE_BITTEN_TWICE_SHY_10V = 13011,
- CRITERIA_ONCE_BITTEN_TWICE_SHY_25V = 13013,
+ CRITERIA_ONCE_BITTEN_TWICE_SHY_25V = 13013
};
enum SharedActions
@@ -431,7 +431,7 @@ enum SharedActions
// The Lich King
ACTION_RESTORE_LIGHT = -72262,
- ACTION_FROSTMOURNE_INTRO = -36823,
+ ACTION_FROSTMOURNE_INTRO = -36823
};
enum WeekliesICC
@@ -445,7 +445,7 @@ enum WeekliesICC
QUEST_BLOOD_QUICKENING_10 = 24874,
QUEST_BLOOD_QUICKENING_25 = 24879,
QUEST_RESPITE_FOR_A_TORNMENTED_SOUL_10 = 24872,
- QUEST_RESPITE_FOR_A_TORNMENTED_SOUL_25 = 24880,
+ QUEST_RESPITE_FOR_A_TORNMENTED_SOUL_25 = 24880
};
enum WorldStatesICC
@@ -454,12 +454,12 @@ enum WorldStatesICC
WORLDSTATE_EXECUTION_TIME = 4904,
WORLDSTATE_SHOW_ATTEMPTS = 4940,
WORLDSTATE_ATTEMPTS_REMAINING = 4941,
- WORLDSTATE_ATTEMPTS_MAX = 4942,
+ WORLDSTATE_ATTEMPTS_MAX = 4942
};
enum AreaIds
{
- AREA_THE_FROZEN_THRONE = 4859,
+ AREA_THE_FROZEN_THRONE = 4859
};
class spell_trigger_spell_from_caster : public SpellScriptLoader
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
index edd80377d68..e2234fa5a20 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
@@ -31,7 +31,7 @@ enum EventIds
{
EVENT_QUAKE = 23437,
EVENT_SECOND_REMORSELESS_WINTER = 23507,
- EVENT_TELEPORT_TO_FROSMOURNE = 23617,
+ EVENT_TELEPORT_TO_FROSTMOURNE = 23617
};
enum TimedEvents
@@ -68,7 +68,7 @@ DoorData const doorData[] =
{GO_SINDRAGOSA_SHORTCUT_EXIT_DOOR, DATA_SINDRAGOSA, DOOR_TYPE_PASSAGE, BOUNDARY_NONE},
{GO_ICE_WALL, DATA_SINDRAGOSA, DOOR_TYPE_ROOM, BOUNDARY_SE },
{GO_ICE_WALL, DATA_SINDRAGOSA, DOOR_TYPE_ROOM, BOUNDARY_SW },
- {0, 0, DOOR_TYPE_ROOM, BOUNDARY_NONE}, // END
+ {0, 0, DOOR_TYPE_ROOM, BOUNDARY_NONE} // END
};
// this doesnt have to only store questgivers, also can be used for related quest spawns
@@ -89,7 +89,7 @@ WeeklyQuest const WeeklyQuestData[WeeklyNPCs] =
{NPC_ALRIN_THE_AGILE, {QUEST_BLOOD_QUICKENING_10, QUEST_BLOOD_QUICKENING_25 }}, // Blood Quickening
{NPC_INFILTRATOR_MINCHAR_BQ, {QUEST_BLOOD_QUICKENING_10, QUEST_BLOOD_QUICKENING_25 }}, // Blood Quickening
{NPC_MINCHAR_BEAM_STALKER, {QUEST_BLOOD_QUICKENING_10, QUEST_BLOOD_QUICKENING_25 }}, // Blood Quickening
- {NPC_VALITHRIA_DREAMWALKER_QUEST, {QUEST_RESPITE_FOR_A_TORNMENTED_SOUL_10, QUEST_RESPITE_FOR_A_TORNMENTED_SOUL_25}}, // Respite for a Tormented Soul
+ {NPC_VALITHRIA_DREAMWALKER_QUEST, {QUEST_RESPITE_FOR_A_TORNMENTED_SOUL_10, QUEST_RESPITE_FOR_A_TORNMENTED_SOUL_25}} // Respite for a Tormented Soul
};
class instance_icecrown_citadel : public InstanceMapScript
@@ -335,7 +335,7 @@ class instance_icecrown_citadel : public InstanceMapScript
{
uint8 diffIndex = uint8(instance->GetSpawnMode() & 1);
if (!sPoolMgr->IsSpawnedObject<Quest>(WeeklyQuestData[questIndex].questId[diffIndex]))
- entry = 0;
+ return 0;
break;
}
}
@@ -1235,7 +1235,7 @@ class instance_icecrown_citadel : public InstanceMapScript
Events.ScheduleEvent(EVENT_REBUILD_PLATFORM, 1500);
}
break;
- case EVENT_TELEPORT_TO_FROSMOURNE: // Harvest Soul (normal mode)
+ case EVENT_TELEPORT_TO_FROSTMOURNE: // Harvest Soul (normal mode)
if (Creature* terenas = instance->SummonCreature(NPC_TERENAS_MENETHIL_FROSTMOURNE, TerenasSpawn, NULL, 63000))
{
terenas->AI()->DoAction(ACTION_FROSTMOURNE_INTRO);
diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
index 7ae9ce3faa6..1df92618a3a 100644
--- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
+++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
@@ -584,7 +584,7 @@ public:
{
instance->SetBossState(DATA_MALYGOS_EVENT, FAIL);
- SendLightOverride(LIGHT_GET_DEFAULT_FOR_MAP, 1*IN_MILLISECONDS);
+ me->GetMap()->SetZoneOverrideLight(AREA_EYE_OF_ETERNITY, LIGHT_GET_DEFAULT_FOR_MAP, 1*IN_MILLISECONDS);
if (_phase == PHASE_THREE)
me->SetControlled(false, UNIT_STATE_ROOT);
@@ -725,8 +725,8 @@ public:
me->SetDisableGravity(true);
if (Creature* alexstraszaBunny = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_ALEXSTRASZA_BUNNY_GUID)))
me->SetFacingToObject(alexstraszaBunny);
- SendLightOverride(LIGHT_ARCANE_RUNES, 5*IN_MILLISECONDS);
- events.ScheduleEvent(EVENT_FLY_OUT_OF_PLATFORM, 18*IN_MILLISECONDS, 0, PHASE_TWO);
+ me->GetMap()->SetZoneOverrideLight(AREA_EYE_OF_ETERNITY, LIGHT_ARCANE_RUNES, 5 * IN_MILLISECONDS);
+ events.ScheduleEvent(EVENT_FLY_OUT_OF_PLATFORM, 18 * IN_MILLISECONDS, 0, PHASE_TWO);
break;
case POINT_SURGE_OF_POWER_P_TWO:
if (!_performingDestroyPlatform)
@@ -737,7 +737,7 @@ public:
}
break;
case POINT_DESTROY_PLATFORM_P_TWO:
- SendLightOverride(LIGHT_OBSCURE_SPACE, 1*IN_MILLISECONDS);
+ me->GetMap()->SetZoneOverrideLight(AREA_EYE_OF_ETERNITY, LIGHT_OBSCURE_SPACE, 1 * IN_MILLISECONDS);
DoCast(me, SPELL_DESTROY_PLATFORM_CHANNEL);
events.ScheduleEvent(EVENT_MOVE_TO_P_THREE_POINT, 11*IN_MILLISECONDS, 0, PHASE_TWO);
break;
@@ -929,7 +929,7 @@ public:
}
break;
case EVENT_LIGHT_DIMENSION_CHANGE:
- SendLightOverride(LIGHT_CHANGE_DIMENSIONS, 2*IN_MILLISECONDS);
+ me->GetMap()->SetZoneOverrideLight(AREA_EYE_OF_ETERNITY, LIGHT_CHANGE_DIMENSIONS, 2 * IN_MILLISECONDS);
break;
case EVENT_DELAY_MOVE_TO_DESTROY_P:
me->GetMotionMaster()->MovePoint(POINT_DESTROY_PLATFORM_P_TWO, MalygosPositions[0]);
@@ -939,7 +939,7 @@ public:
me->GetMotionMaster()->MovePoint(POINT_IDLE_P_THREE, MalygosPositions[4]);
break;
case EVENT_START_P_THREE:
- SendLightOverride(LIGHT_OBSCURE_ARCANE_RUNES, 1*IN_MILLISECONDS);
+ me->GetMap()->SetZoneOverrideLight(AREA_EYE_OF_ETERNITY, LIGHT_OBSCURE_ARCANE_RUNES, 1 * IN_MILLISECONDS);
DoCast(me, SPELL_CLEAR_ALL_DEBUFFS);
DoCast(me, SPELL_IMMUNE_CURSES);
_canAttack = true;
@@ -1026,27 +1026,6 @@ public:
}
}
- // Function that will change lights of map for all players on map.
- void SendLightOverride(uint32 overrideId, uint32 fadeInTime) const
- {
- WorldPacket data(SMSG_OVERRIDE_LIGHT, 12);
- data << uint32(1773); // Light.dbc entry (map default)
- data << uint32(overrideId); // Light.dbc entry (override)
- data << uint32(fadeInTime);
- SendPacketToPlayers(&data);
- }
-
- // Send packet to all players in Eye of Eternity
- void SendPacketToPlayers(WorldPacket const* data) const
- {
- Map::PlayerList const& players = me->GetMap()->GetPlayers();
- if (!players.isEmpty())
- for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
- if (Player* player = itr->GetSource())
- if (player->GetAreaId() == AREA_EYE_OF_ETERNITY)
- player->GetSession()->SendPacket(data);
- }
-
uint8 _phase; // Counter for phases used with a getter.
uint8 _summonDeaths; // Keeps count of arcane trash.
uint8 _preparingPulsesChecker; // In retail they use 2 preparing pulses with 7 sec CD, after they pass 2 seconds.