aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/common/Utilities/Util.cpp7
-rw-r--r--src/common/Utilities/Util.h3
-rw-r--r--src/server/game/Entities/Player/Player.cpp22
-rw-r--r--src/server/game/Entities/Player/Player.h3
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp12
-rw-r--r--src/server/game/Entities/Unit/Unit.h2
-rw-r--r--src/server/game/Miscellaneous/SharedDefines.h84
-rw-r--r--src/server/game/PrecompiledHeaders/gamePCH.h1
-rw-r--r--src/server/game/Server/Packets/AllPackets.h74
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp48
-rw-r--r--src/server/game/Spells/Auras/SpellAuraDefines.h4
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/zone_western_plaguelands.cpp140
-rw-r--r--src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp5
14 files changed, 166 insertions, 243 deletions
diff --git a/src/common/Utilities/Util.cpp b/src/common/Utilities/Util.cpp
index ec67968f11e..0488978ae17 100644
--- a/src/common/Utilities/Util.cpp
+++ b/src/common/Utilities/Util.cpp
@@ -59,6 +59,13 @@ uint32 urand(uint32 min, uint32 max)
return GetRng()->URandom(min, max);
}
+uint32 urandms(uint32 min, uint32 max)
+{
+ ASSERT(max >= min);
+ ASSERT(INT_MAX/IN_MILLISECONDS >= max);
+ return GetRng()->URandom(min * IN_MILLISECONDS, max * IN_MILLISECONDS);
+}
+
float frand(float min, float max)
{
ASSERT(max >= min);
diff --git a/src/common/Utilities/Util.h b/src/common/Utilities/Util.h
index a48a3e42f3b..468b0201680 100644
--- a/src/common/Utilities/Util.h
+++ b/src/common/Utilities/Util.h
@@ -84,6 +84,9 @@ int32 irand(int32 min, int32 max);
/* Return a random number in the range min..max (inclusive). */
uint32 urand(uint32 min, uint32 max);
+/* Return a random millisecond value between min and max seconds. Functionally equivalent to urand(min*IN_MILLISECONDS, max*IN_MILLISECONDS). */
+uint32 urandms(uint32 min, uint32 max);
+
/* Return a random number in the range 0 .. UINT32_MAX. */
uint32 rand32();
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 7f1306665e0..b44609d2c50 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -2267,6 +2267,11 @@ void Player::SetGameMaster(bool on)
UpdateObjectVisibility();
}
+bool Player::CanBeGameMaster() const
+{
+ return m_session && m_session->HasPermission(rbac::RBAC_PERM_COMMAND_GM);
+}
+
void Player::SetGMVisible(bool on)
{
if (on)
@@ -18326,17 +18331,28 @@ bool Player::CheckInstanceLoginValid(Map* map)
{
// cannot be in raid instance without a group
if (!GetGroup())
- return false;
+ return IsInstanceLoginGameMasterException();
}
else
{
// cannot be in normal instance without a group and more players than 1 in instance
if (!GetGroup() && map->GetPlayersCountExceptGMs() > 1)
- return false;
+ return IsInstanceLoginGameMasterException();
}
// do checks for satisfy accessreqs, instance full, encounter in progress (raid), perm bind group != perm bind player
- return sMapMgr->CanPlayerEnter(map->GetId(), this, true);
+ return sMapMgr->CanPlayerEnter(map->GetId(), this, true) || IsInstanceLoginGameMasterException();
+}
+
+bool Player::IsInstanceLoginGameMasterException() const
+{
+ if (CanBeGameMaster())
+ {
+ ChatHandler(GetSession()).PSendSysMessage("You didn't get kicked out of the instance even if Player::CheckInstanceLoginValid() returned false and without .gm on flag");
+ return true;
+ }
+ else
+ return false;
}
bool Player::CheckInstanceCount(uint32 instanceId) const
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index d28d870a777..ad212bbfc76 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -1244,6 +1244,7 @@ class Player : public Unit, public GridObject<Player>
bool isAcceptWhispers() const { return (m_ExtraFlags & PLAYER_EXTRA_ACCEPT_WHISPERS) != 0; }
void SetAcceptWhispers(bool on) { if (on) m_ExtraFlags |= PLAYER_EXTRA_ACCEPT_WHISPERS; else m_ExtraFlags &= ~PLAYER_EXTRA_ACCEPT_WHISPERS; }
bool IsGameMaster() const { return (m_ExtraFlags & PLAYER_EXTRA_GM_ON) != 0; }
+ bool CanBeGameMaster() const;
void SetGameMaster(bool on);
bool isGMChat() const { return (m_ExtraFlags & PLAYER_EXTRA_GM_CHAT) != 0; }
void SetGMChat(bool on) { if (on) m_ExtraFlags |= PLAYER_EXTRA_GM_CHAT; else m_ExtraFlags &= ~PLAYER_EXTRA_GM_CHAT; }
@@ -2771,6 +2772,8 @@ class Player : public Unit, public GridObject<Player>
bool IsHasDelayedTeleport() const { return m_bHasDelayedTeleport; }
void SetDelayedTeleportFlag(bool setting) { m_bHasDelayedTeleport = setting; }
void ScheduleDelayedOperation(uint32 operation) { if (operation < DELAYED_END) m_DelayedOperations |= operation; }
+
+ bool IsInstanceLoginGameMasterException() const;
MapReference m_mapRef;
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 8a3e1191260..5d8a02bb4bd 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -11900,7 +11900,7 @@ void CharmInfo::InitPossessCreateSpells()
break;
}
- for (uint32 i = 0; i < CREATURE_MAX_SPELLS; ++i)
+ for (uint8 i = 0; i < CREATURE_MAX_SPELLS; ++i)
{
uint32 spellId = _unit->ToCreature()->m_spells[i];
SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellId);
@@ -11909,7 +11909,7 @@ void CharmInfo::InitPossessCreateSpells()
if (spellInfo->IsPassive())
_unit->CastSpell(_unit, spellInfo, true);
else
- AddSpellToActionBar(spellInfo, ACT_PASSIVE);
+ AddSpellToActionBar(spellInfo, ACT_PASSIVE, i % MAX_UNIT_ACTION_BAR_INDEX);
}
}
}
@@ -11967,11 +11967,12 @@ void CharmInfo::InitCharmCreateSpells()
}
}
-bool CharmInfo::AddSpellToActionBar(SpellInfo const* spellInfo, ActiveStates newstate)
+bool CharmInfo::AddSpellToActionBar(SpellInfo const* spellInfo, ActiveStates newstate, uint8 preferredSlot)
{
uint32 spell_id = spellInfo->Id;
uint32 first_id = spellInfo->GetFirstRankSpell()->Id;
+ ASSERT(preferredSlot < MAX_UNIT_ACTION_BAR_INDEX);
// new spell rank can be already listed
for (uint8 i = 0; i < MAX_UNIT_ACTION_BAR_INDEX; ++i)
{
@@ -11988,9 +11989,10 @@ bool CharmInfo::AddSpellToActionBar(SpellInfo const* spellInfo, ActiveStates new
// or use empty slot in other case
for (uint8 i = 0; i < MAX_UNIT_ACTION_BAR_INDEX; ++i)
{
- if (!PetActionBar[i].GetAction() && PetActionBar[i].IsActionBarForSpell())
+ uint8 j = (preferredSlot + i) % MAX_UNIT_ACTION_BAR_INDEX;
+ if (!PetActionBar[j].GetAction() && PetActionBar[j].IsActionBarForSpell())
{
- SetActionBar(i, spell_id, newstate == ACT_DECIDE ? spellInfo->IsAutocastable() ? ACT_DISABLED : ACT_PASSIVE : newstate);
+ SetActionBar(j, spell_id, newstate == ACT_DECIDE ? spellInfo->IsAutocastable() ? ACT_DISABLED : ACT_PASSIVE : newstate);
return true;
}
}
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index 606e00d4474..232e5029ac6 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -1209,7 +1209,7 @@ struct CharmInfo
void InitEmptyActionBar(bool withAttack = true);
//return true if successful
- bool AddSpellToActionBar(SpellInfo const* spellInfo, ActiveStates newstate = ACT_DECIDE);
+ bool AddSpellToActionBar(SpellInfo const* spellInfo, ActiveStates newstate = ACT_DECIDE, uint8 preferredSlot = 0);
bool RemoveSpellFromActionBar(uint32 spell_id);
void LoadPetActionBar(const std::string& data);
void BuildActionBar(WorldPacket* data);
diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h
index 2cfdbcd4918..b9cce1018b3 100644
--- a/src/server/game/Miscellaneous/SharedDefines.h
+++ b/src/server/game/Miscellaneous/SharedDefines.h
@@ -4671,32 +4671,32 @@ enum SpellFamilyNames
enum TradeStatus
{
- TRADE_STATUS_CURRENCY_NOT_TRADABLE = 0,
- TRADE_STATUS_PROPOSED = 1,
- TRADE_STATUS_COMPLETE = 2,
- TRADE_STATUS_INITIATED = 3,
- TRADE_STATUS_DEAD = 4,
- TRADE_STATUS_RESTRICTED_ACCOUNT = 5,
- TRADE_STATUS_TOO_FAR_AWAY = 6,
- TRADE_STATUS_LOGGING_OUT = 7,
- TRADE_STATUS_ACCEPTED = 8,
- TRADE_STATUS_ALREADY_TRADING = 9,
- TRADE_STATUS_PETITION = 10,
- TRADE_STATUS_TARGET_DEAD = 11,
- TRADE_STATUS_STATE_CHANGED = 12,
- TRADE_STATUS_NOT_ON_TAPLIST = 14,
- TRADE_STATUS_TARGET_LOGGING_OUT = 15,
- TRADE_STATUS_WRONG_REALM = 17,
- TRADE_STATUS_PLAYER_IGNORED = 18,
- TRADE_STATUS_UNACCEPTED = 19,
- TRADE_STATUS_TARGET_STUNNED = 21,
- TRADE_STATUS_NO_TARGET = 22,
- TRADE_STATUS_NOT_ENOUGH_CURRENCY = 23,
- TRADE_STATUS_FAILED = 24,
- TRADE_STATUS_CANCELLED = 25,
- TRADE_STATUS_PLAYER_BUSY = 28,
- TRADE_STATUS_WRONG_FACTION = 30,
- TRADE_STATUS_STUNNED = 31,
+ TRADE_STATUS_LOGGING_OUT = 0,
+ TRADE_STATUS_CURRENCY_NOT_TRADABLE = 1,
+ TRADE_STATUS_RESTRICTED_ACCOUNT = 2,
+ TRADE_STATUS_DEAD = 3,
+ TRADE_STATUS_TARGET_LOGGING_OUT = 4,
+ TRADE_STATUS_UNACCEPTED = 5,
+ TRADE_STATUS_ALREADY_TRADING = 6,
+ TRADE_STATUS_FAILED = 10,
+ TRADE_STATUS_CANCELLED = 11,
+ TRADE_STATUS_TARGET_STUNNED = 12,
+ TRADE_STATUS_TARGET_DEAD = 15,
+ TRADE_STATUS_WRONG_REALM = 16,
+ TRADE_STATUS_ACCEPTED = 17,
+ TRADE_STATUS_NOT_ENOUGH_CURRENCY = 18,
+ TRADE_STATUS_NOT_ON_TAPLIST = 19,
+ TRADE_STATUS_WRONG_FACTION = 20,
+ TRADE_STATUS_STATE_CHANGED = 22,
+ TRADE_STATUS_PROPOSED = 23,
+ TRADE_STATUS_STUNNED = 24,
+ TRADE_STATUS_INITIATED = 25,
+ TRADE_STATUS_PLAYER_IGNORED = 26,
+ TRADE_STATUS_PETITION = 27,
+ TRADE_STATUS_COMPLETE = 28,
+ TRADE_STATUS_PLAYER_BUSY = 29,
+ TRADE_STATUS_TOO_FAR_AWAY = 30,
+ TRADE_STATUS_NO_TARGET = 31,
};
enum XPColorChar
@@ -4718,27 +4718,27 @@ enum RemoveMethod
enum ActivateTaxiReply
{
- ERR_TAXINOVENDORNEARBY = 0,
- ERR_TAXIPLAYERMOVING = 1,
- ERR_TAXIPLAYERALREADYMOUNTED = 2,
- ERR_TAXIPLAYERBUSY = 3,
- ERR_TAXINOTENOUGHMONEY = 5,
- ERR_TAXINOTSTANDING = 6,
- ERR_TAXIPLAYERSHAPESHIFTED = 8,
- ERR_TAXIUNSPECIFIEDSERVERERROR = 9,
- ERR_TAXINOSUCHPATH = 11,
- ERR_TAXIOK = 12,
- ERR_TAXISAMENODE = 13,
- ERR_TAXITOOFARAWAY = 14,
- ERR_TAXINOTVISITED = 15
+ ERR_TAXINOVENDORNEARBY = 13,
+ ERR_TAXIPLAYERMOVING = 10,
+ ERR_TAXIPLAYERALREADYMOUNTED = 5,
+ ERR_TAXIPLAYERBUSY = 14,
+ ERR_TAXINOTENOUGHMONEY = 2,
+ ERR_TAXINOTSTANDING = 11,
+ ERR_TAXIPLAYERSHAPESHIFTED = 4,
+ ERR_TAXIUNSPECIFIEDSERVERERROR = 1,
+ ERR_TAXINOSUCHPATH = 3,
+ ERR_TAXIOK = 8,
+ ERR_TAXISAMENODE = 12,
+ ERR_TAXITOOFARAWAY = 7,
+ ERR_TAXINOTVISITED = 9
};
enum TaxiNodeStatus
{
- TAXISTATUS_NOT_ELIGIBLE = 0,
+ TAXISTATUS_NOT_ELIGIBLE = 2,
TAXISTATUS_UNLEARNED = 1,
- TAXISTATUS_LEARNED = 2,
- TAXISTATUS_NONE = 3
+ TAXISTATUS_LEARNED = 3,
+ TAXISTATUS_NONE = 0
};
enum ProfessionUI
diff --git a/src/server/game/PrecompiledHeaders/gamePCH.h b/src/server/game/PrecompiledHeaders/gamePCH.h
index c7c6ca5d2d6..8a407de3a82 100644
--- a/src/server/game/PrecompiledHeaders/gamePCH.h
+++ b/src/server/game/PrecompiledHeaders/gamePCH.h
@@ -8,3 +8,4 @@
#include "Opcodes.h"
#include "SharedDefines.h"
#include "ObjectMgr.h"
+#include "Packets/AllPackets.h"
diff --git a/src/server/game/Server/Packets/AllPackets.h b/src/server/game/Server/Packets/AllPackets.h
new file mode 100644
index 00000000000..9fffcd2c58f
--- /dev/null
+++ b/src/server/game/Server/Packets/AllPackets.h
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef AllPackets_h__
+#define AllPackets_h__
+
+#include "AchievementPackets.h"
+#include "AuctionHousePackets.h"
+#include "AuthenticationPackets.h"
+#include "BankPackets.h"
+#include "BattlefieldPackets.h"
+#include "BattlegroundPackets.h"
+#include "BattlePetPackets.h"
+#include "BlackMarketPackets.h"
+#include "CalendarPackets.h"
+#include "ChannelPackets.h"
+#include "CharacterPackets.h"
+#include "ChatPackets.h"
+#include "ClientConfigPackets.h"
+#include "CombatLogPackets.h"
+#include "CombatPackets.h"
+#include "DuelPackets.h"
+#include "EquipmentSetPackets.h"
+#include "GameObjectPackets.h"
+#include "GarrisonPackets.h"
+#include "GuildFinderPackets.h"
+#include "GuildPackets.h"
+#include "InspectPackets.h"
+#include "InstancePackets.h"
+#include "ItemPackets.h"
+#include "LFGPackets.h"
+#include "LootPackets.h"
+#include "MailPackets.h"
+#include "MiscPackets.h"
+#include "MovementPackets.h"
+#include "NPCPackets.h"
+#include "PacketUtilities.h"
+#include "PartyPackets.h"
+#include "PetitionPackets.h"
+#include "QueryPackets.h"
+#include "QuestPackets.h"
+#include "ReferAFriendPackets.h"
+#include "ReputationPackets.h"
+#include "ScenePackets.h"
+#include "SocialPackets.h"
+#include "SpellPackets.h"
+#include "SystemPackets.h"
+#include "TalentPackets.h"
+#include "TaxiPackets.h"
+#include "TicketPackets.h"
+#include "TokenPackets.h"
+#include "TotemPackets.h"
+#include "ToyPackets.h"
+#include "TradePackets.h"
+#include "VehiclePackets.h"
+#include "VoidStoragePackets.h"
+#include "WhoPackets.h"
+#include "WorldStatePackets.h"
+
+#endif // AllPackets_h__
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index e37d9c7818c..972438a3f36 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -18,51 +18,7 @@
#include "Opcodes.h"
#include "WorldSession.h"
-#include "Packets/AchievementPackets.h"
-#include "Packets/AuctionHousePackets.h"
-#include "Packets/BankPackets.h"
-#include "Packets/BattlefieldPackets.h"
-#include "Packets/BattlegroundPackets.h"
-#include "Packets/BattlePetPackets.h"
-#include "Packets/BlackMarketPackets.h"
-#include "Packets/CalendarPackets.h"
-#include "Packets/ChannelPackets.h"
-#include "Packets/CharacterPackets.h"
-#include "Packets/ChatPackets.h"
-#include "Packets/ClientConfigPackets.h"
-#include "Packets/CombatPackets.h"
-#include "Packets/DuelPackets.h"
-#include "Packets/EquipmentSetPackets.h"
-#include "Packets/GameObjectPackets.h"
-#include "Packets/GarrisonPackets.h"
-#include "Packets/GuildPackets.h"
-#include "Packets/GuildFinderPackets.h"
-#include "Packets/PartyPackets.h"
-#include "Packets/InspectPackets.h"
-#include "Packets/InstancePackets.h"
-#include "Packets/ItemPackets.h"
-#include "Packets/LootPackets.h"
-#include "Packets/MailPackets.h"
-#include "Packets/MiscPackets.h"
-#include "Packets/MovementPackets.h"
-#include "Packets/NPCPackets.h"
-#include "Packets/PetitionPackets.h"
-#include "Packets/QueryPackets.h"
-#include "Packets/QuestPackets.h"
-#include "Packets/ReferAFriendPackets.h"
-#include "Packets/ReputationPackets.h"
-#include "Packets/ScenePackets.h"
-#include "Packets/SocialPackets.h"
-#include "Packets/TalentPackets.h"
-#include "Packets/TaxiPackets.h"
-#include "Packets/TicketPackets.h"
-#include "Packets/TokenPackets.h"
-#include "Packets/TotemPackets.h"
-#include "Packets/ToyPackets.h"
-#include "Packets/TradePackets.h"
-#include "Packets/VehiclePackets.h"
-#include "Packets/VoidStoragePackets.h"
-#include "Packets/WhoPackets.h"
+#include "Packets/AllPackets.h"
template<class PacketClass, void(WorldSession::*HandlerFunction)(PacketClass&)>
class PacketHandler : public ClientOpcodeHandler
@@ -717,7 +673,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_SET_ACTIVE_MOVER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Movement::SetActiveMover, &WorldSession::HandleSetActiveMoverOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_ACTIVE_VOICE_CHANNEL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetActiveVoiceChannel );
DEFINE_HANDLER(CMSG_SET_ADVANCED_COMBAT_LOGGING, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::ClientConfig::SetAdvancedCombatLogging, &WorldSession::HandleSetAdvancedCombatLogging);
- DEFINE_HANDLER(CMSG_SET_ASSISTANT_LEADER, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Party::SetAssistantLeader, &WorldSession::HandleSetAssistantLeaderOpcode);
+ DEFINE_HANDLER(CMSG_SET_ASSISTANT_LEADER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Party::SetAssistantLeader, &WorldSession::HandleSetAssistantLeaderOpcode);
DEFINE_HANDLER(CMSG_SET_BACKPACK_AUTOSORT_DISABLED, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SET_BANK_AUTOSORT_DISABLED, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SET_BANK_BAG_SLOT_FLAG, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h
index 784dc432f2a..b19cb7eeb40 100644
--- a/src/server/game/Spells/Auras/SpellAuraDefines.h
+++ b/src/server/game/Spells/Auras/SpellAuraDefines.h
@@ -473,8 +473,8 @@ enum AuraType
SPELL_AURA_413 = 413,
SPELL_AURA_414 = 414,
SPELL_AURA_415 = 415,
- SPELL_AURA_416 = 416,
- SPELL_AURA_417 = 417,
+ SPELL_AURA_MOD_COOLDOWN_BY_HASTE_EFFECTS = 416, // NYI
+ SPELL_AURA_MOD_GLOBAL_COOLDOWN_BY_HASTE_EFFECTS = 417, // NYI
SPELL_AURA_MOD_MAX_POWER = 418, // NYI
SPELL_AURA_MOD_BASE_MANA_PCT = 419,
SPELL_AURA_MOD_BATTLE_PET_XP_PCT = 420, // NYI
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index 07a2c0227c2..a312616d403 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -475,8 +475,8 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]=
&AuraEffect::HandleNULL, //413
&AuraEffect::HandleNULL, //414
&AuraEffect::HandleNULL, //415
- &AuraEffect::HandleNULL, //416
- &AuraEffect::HandleNULL, //417
+ &AuraEffect::HandleNULL, //416 SPELL_AURA_MOD_COOLDOWN_BY_HASTE_EFFECTS
+ &AuraEffect::HandleNULL, //417 SPELL_AURA_MOD_GLOBAL_COOLDOWN_BY_HASTE_EFFECTS
&AuraEffect::HandleNULL, //418 SPELL_AURA_MOD_MAX_POWER
&AuraEffect::HandleAuraModIncreaseBaseManaPercent, //419 SPELL_AURA_MOD_BASE_MANA_PCT
&AuraEffect::HandleNULL, //420 SPELL_AURA_MOD_BATTLE_PET_XP_PCT
diff --git a/src/server/scripts/EasternKingdoms/zone_western_plaguelands.cpp b/src/server/scripts/EasternKingdoms/zone_western_plaguelands.cpp
index 9cecbc31665..9af23f17dca 100644
--- a/src/server/scripts/EasternKingdoms/zone_western_plaguelands.cpp
+++ b/src/server/scripts/EasternKingdoms/zone_western_plaguelands.cpp
@@ -277,145 +277,6 @@ public:
};
/*######
-## npc_anchorite_truuen
-######*/
-
-enum Truuen
-{
- NPC_GHOST_UTHER = 17233,
- NPC_THEL_DANIS = 1854,
- NPC_GHOUL = 1791, //ambush
-
- QUEST_TOMB_LIGHTBRINGER = 9446,
-
- SAY_WP_0 = 0, //Beware! We are attacked!
- SAY_WP_1 = 1, //It must be the purity of the Mark of the Lightbringer that is drawing forth the Scourge to attack us. We must proceed with caution lest we be overwhelmed!
- SAY_WP_2 = 2, //This land truly needs to be cleansed by the Light! Let us continue on to the tomb. It isn't far now...
- SAY_WP_3 = 0, //Be welcome, friends!
- SAY_WP_4 = 0, //Thank you for coming here in remembrance of me. Your efforts in recovering that symbol, while unnecessary, are certainly touching to an old man's heart.
- SAY_WP_5 = 1, //Please, rise my friend. Keep the Blessing as a symbol of the strength of the Light and how heroes long gone might once again rise in each of us to inspire.
- SAY_WP_6 = 2 //Thank you my friend for making this possible. This is a day that I shall never forget! I think I will stay a while. Please return to High Priestess MacDonnell at the camp. I know that she'll be keenly interested to know of what has transpired here.
-};
-
-class npc_anchorite_truuen : public CreatureScript
-{
-public:
- npc_anchorite_truuen() : CreatureScript("npc_anchorite_truuen") { }
-
- bool OnQuestAccept(Player* player, Creature* creature, Quest const* quest) override
- {
- if (quest->GetQuestId() == QUEST_TOMB_LIGHTBRINGER)
- {
- npc_escortAI* pEscortAI = ENSURE_AI(npc_anchorite_truuen::npc_anchorite_truuenAI, creature->AI());
- pEscortAI->Start(true, true, player->GetGUID());
- }
- return false;
- }
-
- CreatureAI* GetAI(Creature* creature) const override
- {
- return new npc_anchorite_truuenAI(creature);
- }
-
- struct npc_anchorite_truuenAI : public npc_escortAI
- {
- npc_anchorite_truuenAI(Creature* creature) : npc_escortAI(creature)
- {
- Initialize();
- }
-
- void Initialize()
- {
- m_uiChatTimer = 7000;
- }
-
- uint32 m_uiChatTimer;
-
- ObjectGuid UghostGUID;
-
- void Reset() override
- {
- Initialize();
- }
-
- void JustSummoned(Creature* summoned) override
- {
- if (summoned->GetEntry() == NPC_GHOUL)
- summoned->AI()->AttackStart(me);
- }
-
- void WaypointReached(uint32 waypointId) override
- {
- Player* player = GetPlayerForEscort();
-
- switch (waypointId)
- {
- case 8:
- Talk(SAY_WP_0);
- me->SummonCreature(NPC_GHOUL, me->GetPositionX()+7.0f, me->GetPositionY()+7.0f, me->GetPositionZ(), 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 90000);
- me->SummonCreature(NPC_GHOUL, me->GetPositionX()+5.0f, me->GetPositionY()+5.0f, me->GetPositionZ(), 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 90000);
- break;
- case 9:
- Talk(SAY_WP_1);
- break;
- case 14:
- me->SummonCreature(NPC_GHOUL, me->GetPositionX()+7.0f, me->GetPositionY()+7.0f, me->GetPositionZ(), 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 90000);
- me->SummonCreature(NPC_GHOUL, me->GetPositionX()+5.0f, me->GetPositionY()+5.0f, me->GetPositionZ(), 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 90000);
- me->SummonCreature(NPC_GHOUL, me->GetPositionX()+10.0f, me->GetPositionY()+10.0f, me->GetPositionZ(), 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 90000);
- me->SummonCreature(NPC_GHOUL, me->GetPositionX()+8.0f, me->GetPositionY()+8.0f, me->GetPositionZ(), 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 90000);
- break;
- case 15:
- Talk(SAY_WP_2);
- break;
- case 21:
- if (Creature* Theldanis = GetClosestCreatureWithEntry(me, NPC_THEL_DANIS, 150))
- Theldanis->AI()->Talk(SAY_WP_3);
- break;
- case 23:
- if (Creature* Ughost = me->SummonCreature(NPC_GHOST_UTHER, 971.86f, -1825.42f, 81.99f, 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000))
- {
- UghostGUID = Ughost->GetGUID();
- Ughost->SetDisableGravity(true);
- Ughost->AI()->Talk(SAY_WP_4, me);
- }
- m_uiChatTimer = 4000;
- break;
- case 24:
- if (Creature* Ughost = ObjectAccessor::GetCreature(*me, UghostGUID))
- Ughost->AI()->Talk(SAY_WP_5, me);
- m_uiChatTimer = 4000;
- break;
- case 25:
- if (Creature* Ughost = ObjectAccessor::GetCreature(*me, UghostGUID))
- Ughost->AI()->Talk(SAY_WP_6, me);
- m_uiChatTimer = 4000;
- break;
- case 26:
- if (player)
- player->GroupEventHappens(QUEST_TOMB_LIGHTBRINGER, me);
- break;
- }
- }
-
- void EnterCombat(Unit* /*who*/) override { }
-
- void JustDied(Unit* /*killer*/) override
- {
- if (Player* player = GetPlayerForEscort())
- player->FailQuest(QUEST_TOMB_LIGHTBRINGER);
- }
-
- void UpdateAI(uint32 uiDiff) override
- {
- npc_escortAI::UpdateAI(uiDiff);
- DoMeleeAttackIfReady();
- if (HasEscortState(STATE_ESCORT_ESCORTING))
- m_uiChatTimer = 6000;
- }
- };
-};
-
-/*######
##
######*/
@@ -425,5 +286,4 @@ void AddSC_western_plaguelands()
new npc_myranda_the_hag();
new npc_the_scourge_cauldron();
new npc_andorhal_tower();
- new npc_anchorite_truuen();
}
diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
index 899dcc79a06..03ef46c204c 100644
--- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
+++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp
@@ -1244,8 +1244,9 @@ public:
++_wpCount;
}
else if (Vehicle* hoverDisk = me->GetVehicleKit())
- if (Unit* lordPassenger = hoverDisk->GetPassenger(0))
- lordPassenger->ToCreature()->AI()->DoAction(ACTION_SET_DISK_VICTIM_CHASE);
+ if (Unit* passenger = hoverDisk->GetPassenger(0))
+ if (Creature* lordPassenger = passenger->ToCreature())
+ lordPassenger->AI()->DoAction(ACTION_SET_DISK_VICTIM_CHASE);
}
private: