aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server')
-rw-r--r--src/server/bnetserver/Packets/ConnectionPackets.h2
-rw-r--r--src/server/collision/Management/VMapManager2.cpp2
-rw-r--r--src/server/collision/Models/GameObjectModel.cpp49
-rw-r--r--src/server/collision/Models/GameObjectModel.h41
-rw-r--r--src/server/game/AI/CoreAI/GuardAI.cpp3
-rw-r--r--src/server/game/AI/CoreAI/PassiveAI.cpp1
-rw-r--r--src/server/game/AI/CoreAI/PetAI.cpp2
-rw-r--r--src/server/game/AI/CoreAI/ReactorAI.cpp4
-rw-r--r--src/server/game/AI/CoreAI/TotemAI.cpp2
-rw-r--r--src/server/game/AI/CreatureAI.h2
-rw-r--r--src/server/game/AI/CreatureAISelector.cpp1
-rw-r--r--src/server/game/AI/ScriptedAI/ScriptedCreature.cpp2
-rw-r--r--src/server/game/AI/ScriptedAI/ScriptedEscortAI.h8
-rw-r--r--src/server/game/AI/SmartScripts/SmartAI.cpp4
-rw-r--r--src/server/game/AI/SmartScripts/SmartAI.h2
-rw-r--r--src/server/game/AI/SmartScripts/SmartScript.cpp10
-rw-r--r--src/server/game/AI/SmartScripts/SmartScriptMgr.cpp6
-rw-r--r--src/server/game/AI/SmartScripts/SmartScriptMgr.h2
-rw-r--r--src/server/game/Accounts/RBAC.h2
-rw-r--r--src/server/game/Battlefield/Battlefield.h24
-rw-r--r--src/server/game/Battlefield/BattlefieldMgr.cpp1
-rw-r--r--src/server/game/Battlefield/Zones/BattlefieldWG.h2
-rw-r--r--src/server/game/Battlegrounds/ArenaTeamMgr.cpp2
-rw-r--r--src/server/game/Battlegrounds/Battleground.cpp3
-rw-r--r--src/server/game/Battlegrounds/Battleground.h2
-rw-r--r--src/server/game/Battlegrounds/BattlegroundMgr.cpp5
-rw-r--r--src/server/game/Battlegrounds/BattlegroundQueue.cpp1
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp2
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp2
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundBFG.cpp10
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundDS.cpp1
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp2
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp1
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp1
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundTP.cpp10
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp3
-rw-r--r--src/server/game/Calendar/CalendarMgr.cpp284
-rw-r--r--src/server/game/Calendar/CalendarMgr.h105
-rw-r--r--src/server/game/Chat/Channels/ChannelMgr.cpp1
-rw-r--r--src/server/game/Chat/Chat.cpp5
-rw-r--r--src/server/game/Combat/HostileRefManager.cpp1
-rw-r--r--src/server/game/Combat/ThreatManager.cpp1
-rw-r--r--src/server/game/Conditions/ConditionMgr.cpp1
-rw-r--r--src/server/game/DataStores/DB2Stores.cpp1
-rw-r--r--src/server/game/DataStores/DBCStores.cpp4
-rw-r--r--src/server/game/DungeonFinding/LFGMgr.cpp1
-rw-r--r--src/server/game/DungeonFinding/LFGQueue.cpp3
-rw-r--r--src/server/game/Entities/Corpse/Corpse.cpp3
-rw-r--r--src/server/game/Entities/Creature/Creature.cpp6
-rw-r--r--src/server/game/Entities/Creature/Creature.h10
-rw-r--r--src/server/game/Entities/Creature/GossipDef.cpp3
-rw-r--r--src/server/game/Entities/Creature/TemporarySummon.h2
-rw-r--r--src/server/game/Entities/DynamicObject/DynamicObject.cpp1
-rw-r--r--src/server/game/Entities/GameObject/GameObject.cpp28
-rw-r--r--src/server/game/Entities/GameObject/GameObject.h5
-rw-r--r--src/server/game/Entities/Item/ItemEnchantmentMgr.cpp8
-rw-r--r--src/server/game/Entities/Object/Object.cpp8
-rw-r--r--src/server/game/Entities/Object/Object.h2
-rw-r--r--src/server/game/Entities/Object/ObjectGuid.cpp45
-rw-r--r--src/server/game/Entities/Object/ObjectGuid.h17
-rw-r--r--src/server/game/Entities/Object/Position.cpp3
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateData.cpp4
-rw-r--r--src/server/game/Entities/Pet/Pet.cpp4
-rw-r--r--src/server/game/Entities/Pet/Pet.h4
-rw-r--r--src/server/game/Entities/Player/Player.cpp60
-rw-r--r--src/server/game/Entities/Player/Player.h22
-rw-r--r--src/server/game/Entities/Totem/Totem.cpp25
-rw-r--r--src/server/game/Entities/Transport/Transport.cpp5
-rw-r--r--src/server/game/Entities/Unit/StatSystem.cpp1
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp3
-rw-r--r--src/server/game/Entities/Vehicle/Vehicle.cpp4
-rw-r--r--src/server/game/Events/GameEventMgr.cpp1
-rw-r--r--src/server/game/Garrison/Garrison.cpp21
-rw-r--r--src/server/game/Globals/ObjectAccessor.cpp13
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp5
-rw-r--r--src/server/game/Grids/Notifiers/GridNotifiers.cpp3
-rw-r--r--src/server/game/Grids/ObjectGridLoader.cpp1
-rw-r--r--src/server/game/Groups/Group.cpp3
-rw-r--r--src/server/game/Guilds/Guild.cpp18
-rw-r--r--src/server/game/Guilds/Guild.h4
-rw-r--r--src/server/game/Handlers/ArenaTeamHandler.cpp8
-rw-r--r--src/server/game/Handlers/AuctionHouseHandler.cpp1
-rw-r--r--src/server/game/Handlers/BankHandler.cpp1
-rw-r--r--src/server/game/Handlers/CalendarHandler.cpp477
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp1
-rw-r--r--src/server/game/Handlers/ChatHandler.cpp2
-rw-r--r--src/server/game/Handlers/CombatHandler.cpp3
-rw-r--r--src/server/game/Handlers/DuelHandler.cpp2
-rw-r--r--src/server/game/Handlers/GroupHandler.cpp5
-rw-r--r--src/server/game/Handlers/GuildHandler.cpp2
-rw-r--r--src/server/game/Handlers/ItemHandler.cpp7
-rw-r--r--src/server/game/Handlers/LootHandler.cpp2
-rw-r--r--src/server/game/Handlers/MiscHandler.cpp20
-rw-r--r--src/server/game/Handlers/MovementHandler.cpp1
-rw-r--r--src/server/game/Handlers/PetitionsHandler.cpp3
-rw-r--r--src/server/game/Handlers/QueryHandler.cpp4
-rw-r--r--src/server/game/Handlers/QuestHandler.cpp1
-rw-r--r--src/server/game/Handlers/ReferAFriendHandler.cpp1
-rw-r--r--src/server/game/Handlers/SkillHandler.cpp3
-rw-r--r--src/server/game/Handlers/SpellHandler.cpp35
-rw-r--r--src/server/game/Handlers/TaxiHandler.cpp1
-rw-r--r--src/server/game/Handlers/TicketHandler.cpp3
-rw-r--r--src/server/game/Handlers/TokenHandler.cpp1
-rw-r--r--src/server/game/Handlers/TradeHandler.cpp1
-rw-r--r--src/server/game/Handlers/VehicleHandler.cpp1
-rw-r--r--src/server/game/Handlers/VoiceChatHandler.cpp2
-rw-r--r--src/server/game/Instances/InstanceSaveMgr.cpp11
-rw-r--r--src/server/game/Instances/InstanceSaveMgr.h6
-rw-r--r--src/server/game/Mails/Mail.cpp2
-rw-r--r--src/server/game/Maps/Map.cpp12
-rw-r--r--src/server/game/Maps/Map.h2
-rw-r--r--src/server/game/Maps/MapManager.cpp2
-rw-r--r--src/server/game/Maps/MapUpdater.cpp5
-rw-r--r--src/server/game/Maps/TransportMgr.cpp1
-rw-r--r--src/server/game/Movement/MotionMaster.cpp1
-rwxr-xr-xsrc/server/game/Movement/MovementGenerator.h2
-rwxr-xr-xsrc/server/game/Movement/MovementGenerators/ConfusedMovementGenerator.cpp2
-rwxr-xr-xsrc/server/game/Movement/MovementGenerators/ConfusedMovementGenerator.h2
-rw-r--r--src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.cpp1
-rwxr-xr-xsrc/server/game/Movement/MovementGenerators/FleeingMovementGenerator.h4
-rw-r--r--src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp1
-rw-r--r--src/server/game/Movement/MovementGenerators/HomeMovementGenerator.h2
-rwxr-xr-xsrc/server/game/Movement/MovementGenerators/IdleMovementGenerator.h8
-rw-r--r--src/server/game/Movement/MovementGenerators/PointMovementGenerator.h6
-rw-r--r--src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp2
-rw-r--r--src/server/game/Movement/MovementGenerators/RandomMovementGenerator.h2
-rwxr-xr-xsrc/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h4
-rwxr-xr-xsrc/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp1
-rwxr-xr-xsrc/server/game/Movement/MovementGenerators/WaypointMovementGenerator.h4
-rw-r--r--src/server/game/Movement/Spline/MoveSpline.cpp3
-rw-r--r--src/server/game/Movement/Spline/MoveSplineInit.cpp3
-rw-r--r--src/server/game/OutdoorPvP/OutdoorPvP.h2
-rw-r--r--src/server/game/Quests/QuestDef.cpp1
-rw-r--r--src/server/game/Scripting/MapScripts.cpp4
-rw-r--r--src/server/game/Server/Packet.cpp2
-rw-r--r--src/server/game/Server/Packets/CalendarPackets.cpp461
-rw-r--r--src/server/game/Server/Packets/CalendarPackets.h562
-rw-r--r--src/server/game/Server/Packets/InstancePackets.cpp13
-rw-r--r--src/server/game/Server/Packets/InstancePackets.h20
-rw-r--r--src/server/game/Server/Packets/ItemPackets.cpp22
-rw-r--r--src/server/game/Server/Packets/ItemPackets.h14
-rw-r--r--src/server/game/Server/Packets/QuestPackets.h8
-rw-r--r--src/server/game/Server/Packets/SpellPackets.cpp21
-rw-r--r--src/server/game/Server/Packets/SpellPackets.h27
-rw-r--r--src/server/game/Server/Packets/TotemPackets.cpp43
-rw-r--r--src/server/game/Server/Packets/TotemPackets.h66
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp110
-rw-r--r--src/server/game/Server/Protocol/Opcodes.h2
-rw-r--r--src/server/game/Server/WorldSession.cpp7
-rw-r--r--src/server/game/Server/WorldSession.h63
-rw-r--r--src/server/game/Server/WorldSocket.cpp3
-rw-r--r--src/server/game/Server/WorldSocketMgr.cpp1
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp4
-rw-r--r--src/server/game/Spells/Spell.cpp56
-rw-r--r--src/server/game/Spells/Spell.h1
-rw-r--r--src/server/game/Spells/SpellEffects.cpp11
-rw-r--r--src/server/game/Spells/SpellMgr.cpp4
-rw-r--r--src/server/game/Spells/SpellScript.cpp4
-rw-r--r--src/server/game/Support/SupportMgr.h12
-rw-r--r--src/server/game/Warden/Warden.cpp5
-rw-r--r--src/server/game/Warden/WardenCheckMgr.cpp1
-rw-r--r--src/server/game/Warden/WardenMac.cpp3
-rw-r--r--src/server/game/Warden/WardenWin.cpp4
-rw-r--r--src/server/game/Weather/Weather.cpp2
-rw-r--r--src/server/game/Weather/WeatherMgr.cpp2
-rw-r--r--src/server/game/World/World.cpp4
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp79
-rw-r--r--src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp1
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp15
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp4
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp18
-rw-r--r--src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp16
-rw-r--r--src/server/shared/Database/AdhocStatement.h2
-rw-r--r--src/server/shared/Database/Implementation/CharacterDatabase.cpp8
-rw-r--r--src/server/shared/Debugging/WheatyExceptionReport.h1
-rw-r--r--src/server/shared/Packets/ByteBuffer.h2
-rw-r--r--src/server/shared/Utilities/EventMap.h1
177 files changed, 2061 insertions, 1294 deletions
diff --git a/src/server/bnetserver/Packets/ConnectionPackets.h b/src/server/bnetserver/Packets/ConnectionPackets.h
index c02221fa39b..9d49b7c26fb 100644
--- a/src/server/bnetserver/Packets/ConnectionPackets.h
+++ b/src/server/bnetserver/Packets/ConnectionPackets.h
@@ -64,7 +64,7 @@ namespace Battlenet
std::string ToString() const override;
void CallHandler(Session* session) override;
uint8* GetRemainingData() { return _stream.GetBuffer() + (((_stream.GetReadPos() + 7) & ~7) / 8); }
- size_t GetRemainingSize() { return _stream.GetSize() - (((_stream.GetReadPos() + 7) & ~7) / 8); }
+ size_t GetRemainingSize() const { return _stream.GetSize() - (((_stream.GetReadPos() + 7) & ~7) / 8); }
};
class LogoutRequest final : public ClientPacket
diff --git a/src/server/collision/Management/VMapManager2.cpp b/src/server/collision/Management/VMapManager2.cpp
index b44611e0574..b2085382725 100644
--- a/src/server/collision/Management/VMapManager2.cpp
+++ b/src/server/collision/Management/VMapManager2.cpp
@@ -107,7 +107,7 @@ namespace VMAP
}
// load one tile (internal use only)
- bool VMapManager2::_loadMap(unsigned int mapId, const std::string& basePath, uint32 tileX, uint32 tileY)
+ bool VMapManager2::_loadMap(uint32 mapId, const std::string& basePath, uint32 tileX, uint32 tileY)
{
InstanceTreeMap::iterator instanceTree = iInstanceMapTrees.find(mapId);
if (instanceTree == iInstanceMapTrees.end())
diff --git a/src/server/collision/Models/GameObjectModel.cpp b/src/server/collision/Models/GameObjectModel.cpp
index 607460a2784..dbdc0554e06 100644
--- a/src/server/collision/Models/GameObjectModel.cpp
+++ b/src/server/collision/Models/GameObjectModel.cpp
@@ -20,15 +20,9 @@
#include "VMapManager2.h"
#include "VMapDefinitions.h"
#include "WorldModel.h"
-
#include "GameObjectModel.h"
#include "Log.h"
-#include "GameObject.h"
-#include "Creature.h"
-#include "TemporarySummon.h"
-#include "Object.h"
-#include "DBCStores.h"
-#include "World.h"
+#include "Timer.h"
using G3D::Vector3;
using G3D::Ray;
@@ -46,13 +40,13 @@ struct GameobjectModelData
typedef std::unordered_map<uint32, GameobjectModelData> ModelList;
ModelList model_list;
-void LoadGameObjectModelList()
+void LoadGameObjectModelList(std::string const& dataPath)
{
#ifndef NO_CORE_FUNCS
uint32 oldMSTime = getMSTime();
#endif
- FILE* model_list_file = fopen((sWorld->GetDataPath() + "vmaps/" + VMAP::GAMEOBJECT_MODELS).c_str(), "rb");
+ FILE* model_list_file = fopen((dataPath + "vmaps/" + VMAP::GAMEOBJECT_MODELS).c_str(), "rb");
if (!model_list_file)
{
VMAP_ERROR_LOG("misc", "Unable to open '%s' file.", VMAP::GAMEOBJECT_MODELS);
@@ -86,7 +80,7 @@ void LoadGameObjectModelList()
model_list.insert
(
- ModelList::value_type( displayId, GameobjectModelData(std::string(buff, name_length), AABox(v1, v2)) )
+ ModelList::value_type(displayId, GameobjectModelData(std::string(buff, name_length), AABox(v1, v2)))
);
}
@@ -100,9 +94,9 @@ GameObjectModel::~GameObjectModel()
((VMAP::VMapManager2*)VMAP::VMapFactory::createOrGetVMapManager())->releaseModelInstance(name);
}
-bool GameObjectModel::initialize(const GameObject& go, const GameObjectDisplayInfoEntry& info)
+bool GameObjectModel::initialize(std::unique_ptr<GameObjectModelOwnerBase> modelOwner, std::string const& dataPath)
{
- ModelList::const_iterator it = model_list.find(info.ID);
+ ModelList::const_iterator it = model_list.find(modelOwner->GetDisplayId());
if (it == model_list.end())
return false;
@@ -114,21 +108,18 @@ bool GameObjectModel::initialize(const GameObject& go, const GameObjectDisplayIn
return false;
}
- iModel = ((VMAP::VMapManager2*)VMAP::VMapFactory::createOrGetVMapManager())->acquireModelInstance(sWorld->GetDataPath() + "vmaps/", it->second.name);
+ iModel = ((VMAP::VMapManager2*)VMAP::VMapFactory::createOrGetVMapManager())->acquireModelInstance(dataPath + "vmaps/", it->second.name);
if (!iModel)
return false;
name = it->second.name;
- //flags = VMAP::MOD_M2;
- //adtId = 0;
- //ID = 0;
- iPos = Vector3(go.GetPositionX(), go.GetPositionY(), go.GetPositionZ());
- phasemask = go.GetPhaseMask();
- iScale = go.GetObjectScale();
+ iPos = modelOwner->GetPosition();
+ phasemask = modelOwner->GetPhaseMask();
+ iScale = modelOwner->GetScale();
iInvScale = 1.f / iScale;
- G3D::Matrix3 iRotation = G3D::Matrix3::fromEulerAnglesZYX(go.GetOrientation(), 0, 0);
+ G3D::Matrix3 iRotation = G3D::Matrix3::fromEulerAnglesZYX(modelOwner->GetOrientation(), 0, 0);
iInvRot = iRotation.inverse();
// transform bounding box:
mdl_box = AABox(mdl_box.low() * iScale, mdl_box.high() * iScale);
@@ -142,22 +133,18 @@ bool GameObjectModel::initialize(const GameObject& go, const GameObjectDisplayIn
for (int i = 0; i < 8; ++i)
{
Vector3 pos(iBound.corner(i));
- go.SummonCreature(1, pos.x, pos.y, pos.z, 0, TEMPSUMMON_MANUAL_DESPAWN);
+ modelOwner->DebugVisualizeCorner(pos);
}
#endif
- owner = &go;
+ owner = std::move(modelOwner);
return true;
}
-GameObjectModel* GameObjectModel::Create(const GameObject& go)
+GameObjectModel* GameObjectModel::Create(std::unique_ptr<GameObjectModelOwnerBase> modelOwner, std::string const& dataPath)
{
- const GameObjectDisplayInfoEntry* info = sGameObjectDisplayInfoStore.LookupEntry(go.GetDisplayId());
- if (!info)
- return NULL;
-
GameObjectModel* mdl = new GameObjectModel();
- if (!mdl->initialize(go, *info))
+ if (!mdl->initialize(std::move(modelOwner), dataPath))
{
delete mdl;
return NULL;
@@ -168,7 +155,7 @@ GameObjectModel* GameObjectModel::Create(const GameObject& go)
bool GameObjectModel::intersectRay(const G3D::Ray& ray, float& MaxDist, bool StopAtFirstHit, uint32 ph_mask) const
{
- if (!(phasemask & ph_mask) || !owner->isSpawned())
+ if (!(phasemask & ph_mask) || !owner->IsSpawned())
return false;
float time = ray.intersectionTime(iBound);
@@ -205,7 +192,7 @@ bool GameObjectModel::UpdatePosition()
return false;
}
- iPos = Vector3(owner->GetPositionX(), owner->GetPositionY(), owner->GetPositionZ());
+ iPos = owner->GetPosition();
G3D::Matrix3 iRotation = G3D::Matrix3::fromEulerAnglesZYX(owner->GetOrientation(), 0, 0);
iInvRot = iRotation.inverse();
@@ -221,7 +208,7 @@ bool GameObjectModel::UpdatePosition()
for (int i = 0; i < 8; ++i)
{
Vector3 pos(iBound.corner(i));
- owner->SummonCreature(1, pos.x, pos.y, pos.z, 0, TEMPSUMMON_MANUAL_DESPAWN);
+ owner->DebugVisualizeCorner(pos);
}
#endif
diff --git a/src/server/collision/Models/GameObjectModel.h b/src/server/collision/Models/GameObjectModel.h
index 43d299d6d8f..17669189af5 100644
--- a/src/server/collision/Models/GameObjectModel.h
+++ b/src/server/collision/Models/GameObjectModel.h
@@ -25,6 +25,7 @@
#include <G3D/Ray.h>
#include "Define.h"
+#include <memory>
namespace VMAP
{
@@ -34,21 +35,21 @@ namespace VMAP
class GameObject;
struct GameObjectDisplayInfoEntry;
-class GameObjectModel /*, public Intersectable*/
+class GameObjectModelOwnerBase
{
- uint32 phasemask;
- G3D::AABox iBound;
- G3D::Matrix3 iInvRot;
- G3D::Vector3 iPos;
- //G3D::Vector3 iRot;
- float iInvScale;
- float iScale;
- VMAP::WorldModel* iModel;
- GameObject const* owner;
-
- GameObjectModel() : phasemask(0), iInvScale(0), iScale(0), iModel(NULL), owner(NULL) { }
- bool initialize(const GameObject& go, const GameObjectDisplayInfoEntry& info);
+public:
+ virtual bool IsSpawned() const { return false; }
+ virtual uint32 GetDisplayId() const { return 0; }
+ virtual uint32 GetPhaseMask() const { return 0; }
+ virtual G3D::Vector3 GetPosition() const { return G3D::Vector3::zero(); }
+ virtual float GetOrientation() const { return 0.0f; }
+ virtual float GetScale() const { return 1.0f; }
+ virtual void DebugVisualizeCorner(G3D::Vector3 const& /*corner*/) const { }
+};
+class GameObjectModel /*, public Intersectable*/
+{
+ GameObjectModel() : phasemask(0), iInvScale(0), iScale(0), iModel(NULL) { }
public:
std::string name;
@@ -66,9 +67,21 @@ public:
bool intersectRay(const G3D::Ray& Ray, float& MaxDist, bool StopAtFirstHit, uint32 ph_mask) const;
- static GameObjectModel* Create(const GameObject& go);
+ static GameObjectModel* Create(std::unique_ptr<GameObjectModelOwnerBase> modelOwner, std::string const& dataPath);
bool UpdatePosition();
+
+private:
+ bool initialize(std::unique_ptr<GameObjectModelOwnerBase> modelOwner, std::string const& dataPath);
+
+ uint32 phasemask;
+ G3D::AABox iBound;
+ G3D::Matrix3 iInvRot;
+ G3D::Vector3 iPos;
+ float iInvScale;
+ float iScale;
+ VMAP::WorldModel* iModel;
+ std::unique_ptr<GameObjectModelOwnerBase> owner;
};
#endif // _GAMEOBJECT_MODEL_H
diff --git a/src/server/game/AI/CoreAI/GuardAI.cpp b/src/server/game/AI/CoreAI/GuardAI.cpp
index 14e5faaf723..7fd1493cbde 100644
--- a/src/server/game/AI/CoreAI/GuardAI.cpp
+++ b/src/server/game/AI/CoreAI/GuardAI.cpp
@@ -19,9 +19,6 @@
#include "GuardAI.h"
#include "Errors.h"
#include "Player.h"
-#include "ObjectAccessor.h"
-#include "World.h"
-#include "CreatureAIImpl.h"
int GuardAI::Permissible(Creature const* creature)
{
diff --git a/src/server/game/AI/CoreAI/PassiveAI.cpp b/src/server/game/AI/CoreAI/PassiveAI.cpp
index afd198aea02..f88e13bb31d 100644
--- a/src/server/game/AI/CoreAI/PassiveAI.cpp
+++ b/src/server/game/AI/CoreAI/PassiveAI.cpp
@@ -18,7 +18,6 @@
#include "PassiveAI.h"
#include "Creature.h"
-#include "TemporarySummon.h"
PassiveAI::PassiveAI(Creature* c) : CreatureAI(c) { me->SetReactState(REACT_PASSIVE); }
PossessedAI::PossessedAI(Creature* c) : CreatureAI(c) { me->SetReactState(REACT_PASSIVE); }
diff --git a/src/server/game/AI/CoreAI/PetAI.cpp b/src/server/game/AI/CoreAI/PetAI.cpp
index 7d36fd9de67..152ecd6c86c 100644
--- a/src/server/game/AI/CoreAI/PetAI.cpp
+++ b/src/server/game/AI/CoreAI/PetAI.cpp
@@ -20,12 +20,10 @@
#include "Errors.h"
#include "Pet.h"
#include "Player.h"
-#include "DBCStores.h"
#include "Spell.h"
#include "ObjectAccessor.h"
#include "SpellMgr.h"
#include "Creature.h"
-#include "World.h"
#include "Util.h"
#include "Group.h"
#include "SpellInfo.h"
diff --git a/src/server/game/AI/CoreAI/ReactorAI.cpp b/src/server/game/AI/CoreAI/ReactorAI.cpp
index ebb57038737..9ab86047dc8 100644
--- a/src/server/game/AI/CoreAI/ReactorAI.cpp
+++ b/src/server/game/AI/CoreAI/ReactorAI.cpp
@@ -18,10 +18,6 @@
#include "ByteBuffer.h"
#include "ReactorAI.h"
-#include "Errors.h"
-#include "Log.h"
-#include "ObjectAccessor.h"
-#include "CreatureAIImpl.h"
int ReactorAI::Permissible(const Creature* creature)
{
diff --git a/src/server/game/AI/CoreAI/TotemAI.cpp b/src/server/game/AI/CoreAI/TotemAI.cpp
index 2fbd6406b2f..d9afc61056d 100644
--- a/src/server/game/AI/CoreAI/TotemAI.cpp
+++ b/src/server/game/AI/CoreAI/TotemAI.cpp
@@ -19,10 +19,8 @@
#include "TotemAI.h"
#include "Totem.h"
#include "Creature.h"
-#include "DBCStores.h"
#include "ObjectAccessor.h"
#include "SpellMgr.h"
-
#include "GridNotifiers.h"
#include "GridNotifiersImpl.h"
#include "CellImpl.h"
diff --git a/src/server/game/AI/CreatureAI.h b/src/server/game/AI/CreatureAI.h
index 33616d076e7..a205ef16833 100644
--- a/src/server/game/AI/CreatureAI.h
+++ b/src/server/game/AI/CreatureAI.h
@@ -122,7 +122,7 @@ class CreatureAI : public UnitAI
// Called when the creature is target of hostile action: swing, hostile spell landed, fear/etc)
virtual void AttackedBy(Unit* /*attacker*/) { }
- virtual bool IsEscorted() { return false; }
+ virtual bool IsEscorted() const { return false; }
// Called when creature is spawned or respawned (for reseting variables)
virtual void JustRespawned() { Reset(); }
diff --git a/src/server/game/AI/CreatureAISelector.cpp b/src/server/game/AI/CreatureAISelector.cpp
index 8a37186d0af..ddb5ba3508b 100644
--- a/src/server/game/AI/CreatureAISelector.cpp
+++ b/src/server/game/AI/CreatureAISelector.cpp
@@ -21,7 +21,6 @@
#include "PassiveAI.h"
#include "MovementGenerator.h"
-#include "Pet.h"
#include "TemporarySummon.h"
#include "CreatureAIFactory.h"
#include "ScriptMgr.h"
diff --git a/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp b/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp
index f1a3afcb8fe..b38ddcf11bc 100644
--- a/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp
+++ b/src/server/game/AI/ScriptedAI/ScriptedCreature.cpp
@@ -17,14 +17,12 @@
*/
#include "ScriptedCreature.h"
-#include "Item.h"
#include "Spell.h"
#include "GridNotifiers.h"
#include "GridNotifiersImpl.h"
#include "Cell.h"
#include "CellImpl.h"
#include "ObjectMgr.h"
-#include "TemporarySummon.h"
// Spell summary for ScriptedAI::SelectSpell
struct TSpellSummary
diff --git a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.h b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.h
index 75ff1b8dfc9..1d71652c948 100644
--- a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.h
+++ b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.h
@@ -94,16 +94,16 @@ struct npc_escortAI : public ScriptedAI
void SetEscortPaused(bool on);
bool HasEscortState(uint32 escortState) { return (m_uiEscortState & escortState) != 0; }
- virtual bool IsEscorted() override { return (m_uiEscortState & STATE_ESCORT_ESCORTING); }
+ virtual bool IsEscorted() const override { return (m_uiEscortState & STATE_ESCORT_ESCORTING); }
void SetMaxPlayerDistance(float newMax) { MaxPlayerDistance = newMax; }
- float GetMaxPlayerDistance() { return MaxPlayerDistance; }
+ float GetMaxPlayerDistance() const { return MaxPlayerDistance; }
void SetDespawnAtEnd(bool despawn) { DespawnAtEnd = despawn; }
void SetDespawnAtFar(bool despawn) { DespawnAtFar = despawn; }
- bool GetAttack() { return m_bIsActiveAttacker; }//used in EnterEvadeMode override
+ bool GetAttack() const { return m_bIsActiveAttacker; }//used in EnterEvadeMode override
void SetCanAttack(bool attack) { m_bIsActiveAttacker = attack; }
- ObjectGuid GetEventStarterGUID() { return m_uiPlayerGUID; }
+ ObjectGuid GetEventStarterGUID() const { return m_uiPlayerGUID; }
protected:
Player* GetPlayerForEscort() { return ObjectAccessor::GetPlayer(*me, m_uiPlayerGUID); }
diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp
index 3157ea4ecd4..c6a16e1b2fd 100644
--- a/src/server/game/AI/SmartScripts/SmartAI.cpp
+++ b/src/server/game/AI/SmartScripts/SmartAI.cpp
@@ -21,11 +21,7 @@
#include "GridDefines.h"
#include "GridNotifiers.h"
#include "SpellMgr.h"
-#include "GridNotifiersImpl.h"
#include "Cell.h"
-#include "CellImpl.h"
-#include "InstanceScript.h"
-#include "ScriptedCreature.h"
#include "Group.h"
#include "SmartAI.h"
#include "ScriptMgr.h"
diff --git a/src/server/game/AI/SmartScripts/SmartAI.h b/src/server/game/AI/SmartScripts/SmartAI.h
index 145c74faf9f..1e287cd5b9e 100644
--- a/src/server/game/AI/SmartScripts/SmartAI.h
+++ b/src/server/game/AI/SmartScripts/SmartAI.h
@@ -214,7 +214,7 @@ class SmartAI : public CreatureAI
uint32 mWPPauseTimer;
WayPoint* mLastWP;
Position mLastOOCPos;//set on enter combat
- uint32 GetWPCount() { return mWayPoints ? uint32(mWayPoints->size()) : 0; }
+ uint32 GetWPCount() const { return mWayPoints ? uint32(mWayPoints->size()) : 0; }
bool mCanRepeatPath;
bool mRun;
bool mCanAutoAttack;
diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp
index 5605d8f4c00..5a60291ab4c 100644
--- a/src/server/game/AI/SmartScripts/SmartScript.cpp
+++ b/src/server/game/AI/SmartScripts/SmartScript.cpp
@@ -35,7 +35,6 @@
#include "SmartScript.h"
#include "SpellMgr.h"
#include "Vehicle.h"
-#include "MoveSplineInit.h"
#include "GameEventMgr.h"
SmartScript::SmartScript()
@@ -788,6 +787,15 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
player->GroupEventHappens(e.action.quest.quest, GetBaseObject());
break;
}
+ case SMART_ACTION_COMBAT_STOP:
+ {
+ if (!me)
+ break;
+
+ me->CombatStop(true);
+ TC_LOG_DEBUG("scripts.ai", "SmartScript::ProcessAction:: SMART_ACTION_COMBAT_STOP: %s CombatStop", me->GetGUID().ToString().c_str());
+ break;
+ }
case SMART_ACTION_REMOVEAURASFROMSPELL:
{
ObjectList* targets = GetTargets(e, unit);
diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp
index d6db543d4d8..c86255f6d4a 100644
--- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp
+++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp
@@ -21,14 +21,9 @@
#include "GridDefines.h"
#include "GridNotifiers.h"
#include "SpellMgr.h"
-#include "GridNotifiersImpl.h"
#include "Cell.h"
-#include "CellImpl.h"
-#include "InstanceScript.h"
-#include "ScriptedCreature.h"
#include "GameEventMgr.h"
#include "CreatureTextMgr.h"
-#include "SpellMgr.h"
#include "SpellInfo.h"
#include "SmartScriptMgr.h"
@@ -1178,6 +1173,7 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
case SMART_ACTION_STORE_TARGET_LIST:
case SMART_ACTION_EVADE:
case SMART_ACTION_FLEE_FOR_ASSIST:
+ case SMART_ACTION_COMBAT_STOP:
case SMART_ACTION_DIE:
case SMART_ACTION_SET_IN_COMBAT_WITH_ZONE:
case SMART_ACTION_SET_ACTIVE:
diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h
index 0c16b02c33a..66829db812f 100644
--- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h
+++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h
@@ -453,7 +453,7 @@ enum SMART_ACTION
SMART_ACTION_EVADE = 24, // No Params
SMART_ACTION_FLEE_FOR_ASSIST = 25, // With Emote
SMART_ACTION_CALL_GROUPEVENTHAPPENS = 26, // QuestID
- // none = 27,
+ SMART_ACTION_COMBAT_STOP = 27, //
SMART_ACTION_REMOVEAURASFROMSPELL = 28, // Spellid (0 removes all auras), charges (0 removes aura)
SMART_ACTION_FOLLOW = 29, // Distance (0 = default), Angle (0 = default), EndCreatureEntry, credit, creditType (0monsterkill, 1event)
SMART_ACTION_RANDOM_PHASE = 30, // PhaseId1, PhaseId2, PhaseId3...
diff --git a/src/server/game/Accounts/RBAC.h b/src/server/game/Accounts/RBAC.h
index fb5927e9e91..9baa4caeea7 100644
--- a/src/server/game/Accounts/RBAC.h
+++ b/src/server/game/Accounts/RBAC.h
@@ -923,7 +923,7 @@ class RBACData
*/
void CalculateNewPermissions();
- int32 GetRealmId() { return _realmId; }
+ int32 GetRealmId() const { return _realmId; }
// Auxiliar private functions - defined to allow to maintain same code even
// if internal structure changes.
diff --git a/src/server/game/Battlefield/Battlefield.h b/src/server/game/Battlefield/Battlefield.h
index 0eebeee6939..42d27ed35cf 100644
--- a/src/server/game/Battlefield/Battlefield.h
+++ b/src/server/game/Battlefield/Battlefield.h
@@ -101,7 +101,7 @@ class BfCapturePoint
GameObject* GetCapturePointGo();
uint32 GetCapturePointEntry() const { return m_capturePointEntry; }
- TeamId GetTeamId() { return m_team; }
+ TeamId GetTeamId() const { return m_team; }
protected:
bool DelCapturePoint();
@@ -222,19 +222,19 @@ class Battlefield : public ZoneScript
/// Called when a Unit is kill in battlefield zone
virtual void HandleKill(Player* /*killer*/, Unit* /*killed*/) { };
- uint32 GetTypeId() { return m_TypeId; }
- uint32 GetZoneId() { return m_ZoneId; }
- ObjectGuid GetGUID() { return m_Guid; }
+ uint32 GetTypeId() const { return m_TypeId; }
+ uint32 GetZoneId() const { return m_ZoneId; }
+ ObjectGuid GetGUID() const { return m_Guid; }
void TeamApplyBuff(TeamId team, uint32 spellId, uint32 spellId2 = 0);
/// Return true if battle is start, false if battle is not started
- bool IsWarTime() { return m_isActive; }
+ bool IsWarTime() const { return m_isActive; }
/// Enable or Disable battlefield
void ToggleBattlefield(bool enable) { m_IsEnabled = enable; }
/// Return if battlefield is enable
- bool IsEnabled() { return m_IsEnabled; }
+ bool IsEnabled() const { return m_IsEnabled; }
/**
* \brief Kick player from battlefield and teleport him to kick-point location
@@ -257,9 +257,9 @@ class Battlefield : public ZoneScript
virtual void UpdateData(uint32 index, int32 pad) { m_Data32[index] += pad; }
// Battlefield - generic methods
- TeamId GetDefenderTeam() { return m_DefenderTeam; }
- TeamId GetAttackerTeam() { return TeamId(1 - m_DefenderTeam); }
- TeamId GetOtherTeam(TeamId team) { return (team == TEAM_HORDE ? TEAM_ALLIANCE : TEAM_HORDE); }
+ TeamId GetDefenderTeam() const { return m_DefenderTeam; }
+ TeamId GetAttackerTeam() const { return TeamId(1 - m_DefenderTeam); }
+ TeamId GetOtherTeam(TeamId team) const { return (team == TEAM_HORDE ? TEAM_ALLIANCE : TEAM_HORDE); }
void SetDefenderTeam(TeamId team) { m_DefenderTeam = team; }
// Group methods
@@ -311,7 +311,7 @@ class Battlefield : public ZoneScript
void PlayerAcceptInviteToQueue(Player* player);
void PlayerAcceptInviteToWar(Player* player);
- uint32 GetBattleId() { return m_BattleId; }
+ uint32 GetBattleId() const { return m_BattleId; }
void AskToLeaveQueue(Player* player);
virtual void DoCompleteOrIncrementAchievement(uint32 /*achievement*/, Player* /*player*/, uint8 /*incrementNumber = 1*/) { }
@@ -331,9 +331,9 @@ class Battlefield : public ZoneScript
void HideNpc(Creature* creature);
void ShowNpc(Creature* creature, bool aggressive);
- GraveyardVect GetGraveyardVector() { return m_GraveyardList; }
+ GraveyardVect GetGraveyardVector() const { return m_GraveyardList; }
- uint32 GetTimer() { return m_Timer; }
+ uint32 GetTimer() const { return m_Timer; }
void SetTimer(uint32 timer) { m_Timer = timer; }
void DoPlaySoundToAll(uint32 SoundID);
diff --git a/src/server/game/Battlefield/BattlefieldMgr.cpp b/src/server/game/Battlefield/BattlefieldMgr.cpp
index 93fdb75c8bb..0ce7d3a685c 100644
--- a/src/server/game/Battlefield/BattlefieldMgr.cpp
+++ b/src/server/game/Battlefield/BattlefieldMgr.cpp
@@ -17,7 +17,6 @@
#include "BattlefieldMgr.h"
#include "BattlefieldWG.h"
-#include "ObjectMgr.h"
#include "Player.h"
BattlefieldMgr::BattlefieldMgr()
diff --git a/src/server/game/Battlefield/Zones/BattlefieldWG.h b/src/server/game/Battlefield/Zones/BattlefieldWG.h
index 6c39e30059d..40c8d00143a 100644
--- a/src/server/game/Battlefield/Zones/BattlefieldWG.h
+++ b/src/server/game/Battlefield/Zones/BattlefieldWG.h
@@ -149,7 +149,7 @@ class BfGraveyardWG : public BfGraveyard
BfGraveyardWG(BattlefieldWG* Bf);
void SetTextId(uint32 textId) { m_GossipTextId = textId; }
- uint32 GetTextId() { return m_GossipTextId; }
+ uint32 GetTextId() const { return m_GossipTextId; }
protected:
uint32 m_GossipTextId;
diff --git a/src/server/game/Battlegrounds/ArenaTeamMgr.cpp b/src/server/game/Battlegrounds/ArenaTeamMgr.cpp
index c97eb5383bd..fce32a928c5 100644
--- a/src/server/game/Battlegrounds/ArenaTeamMgr.cpp
+++ b/src/server/game/Battlegrounds/ArenaTeamMgr.cpp
@@ -20,8 +20,6 @@
#include "World.h"
#include "Log.h"
#include "DatabaseEnv.h"
-#include "Language.h"
-#include "ObjectAccessor.h"
#include "Player.h"
ArenaTeamMgr::ArenaTeamMgr()
diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp
index 2b5c335bce0..3bec1fd89b3 100644
--- a/src/server/game/Battlegrounds/Battleground.cpp
+++ b/src/server/game/Battlegrounds/Battleground.cpp
@@ -22,18 +22,15 @@
#include "BattlegroundScore.h"
#include "Creature.h"
#include "CreatureTextMgr.h"
-#include "Chat.h"
#include "Formulas.h"
#include "GridNotifiersImpl.h"
#include "Group.h"
#include "GuildMgr.h"
#include "Guild.h"
-#include "MapManager.h"
#include "Object.h"
#include "ObjectMgr.h"
#include "Player.h"
#include "ReputationMgr.h"
-#include "SpellAuraEffects.h"
#include "SpellAuras.h"
#include "Util.h"
#include "WorldPacket.h"
diff --git a/src/server/game/Battlegrounds/Battleground.h b/src/server/game/Battlegrounds/Battleground.h
index 51769ecdaac..7fef94ba752 100644
--- a/src/server/game/Battlegrounds/Battleground.h
+++ b/src/server/game/Battlegrounds/Battleground.h
@@ -259,7 +259,7 @@ class Battleground
/* Battleground */
// Get methods:
std::string const& GetName() const { return m_Name; }
- uint64 GetQueueId() { return m_queueId; }
+ uint64 GetQueueId() const { return m_queueId; }
BattlegroundTypeId GetTypeID(bool GetRandom = false) const { return GetRandom ? m_RandomTypeID : m_TypeID; }
BattlegroundBracketId GetBracketId() const { return m_BracketId; }
uint32 GetInstanceID() const { return m_InstanceID; }
diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.cpp b/src/server/game/Battlegrounds/BattlegroundMgr.cpp
index a227dc1a07b..bbd7acacf12 100644
--- a/src/server/game/Battlegrounds/BattlegroundMgr.cpp
+++ b/src/server/game/Battlegrounds/BattlegroundMgr.cpp
@@ -18,11 +18,9 @@
#include "Common.h"
#include "ObjectMgr.h"
-#include "ArenaTeamMgr.h"
#include "World.h"
#include "WorldPacket.h"
-#include "ArenaTeam.h"
#include "BattlegroundMgr.h"
#include "BattlegroundAV.h"
#include "BattlegroundAB.h"
@@ -37,17 +35,14 @@
#include "BattlegroundIC.h"
#include "BattlegroundTP.h"
#include "BattlegroundBFG.h"
-#include "Chat.h"
#include "Map.h"
#include "MapInstanced.h"
#include "MapManager.h"
#include "Player.h"
#include "GameEventMgr.h"
#include "SharedDefines.h"
-#include "Formulas.h"
#include "DisableMgr.h"
#include "Opcodes.h"
-#include "MiscPackets.h"
/*********************************************************/
/*** BATTLEGROUND MANAGER ***/
diff --git a/src/server/game/Battlegrounds/BattlegroundQueue.cpp b/src/server/game/Battlegrounds/BattlegroundQueue.cpp
index d888485887e..c0938eacd37 100644
--- a/src/server/game/Battlegrounds/BattlegroundQueue.cpp
+++ b/src/server/game/Battlegrounds/BattlegroundQueue.cpp
@@ -24,7 +24,6 @@
#include "Group.h"
#include "Log.h"
#include "Language.h"
-#include "ObjectMgr.h"
#include "Player.h"
/*********************************************************/
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp
index 3e9e7e5e5cb..11729b014a4 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundAB.cpp
@@ -17,9 +17,7 @@
*/
#include "BattlegroundAB.h"
-#include "World.h"
#include "WorldPacket.h"
-#include "ObjectMgr.h"
#include "BattlegroundMgr.h"
#include "Creature.h"
#include "Language.h"
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp
index f559463260f..768a19ae963 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp
@@ -21,12 +21,10 @@
#include "ObjectMgr.h"
#include "WorldPacket.h"
-#include "Formulas.h"
#include "GameObject.h"
#include "Language.h"
#include "Player.h"
#include "ScriptedCreature.h"
-#include "SpellAuras.h"
#include "WorldSession.h"
BattlegroundAV::BattlegroundAV()
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundBFG.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundBFG.cpp
index 0d143966190..1e77eac3c82 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundBFG.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundBFG.cpp
@@ -15,17 +15,7 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "Battleground.h"
#include "BattlegroundBFG.h"
-#include "Creature.h"
-#include "GameObject.h"
-#include "Language.h"
-#include "Object.h"
-#include "ObjectMgr.h"
-#include "BattlegroundMgr.h"
-#include "Player.h"
-#include "World.h"
-#include "WorldPacket.h"
BattlegroundBFG::BattlegroundBFG()
{
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundDS.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundDS.cpp
index 0acfd287372..f9caeb9ca08 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundDS.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundDS.cpp
@@ -18,7 +18,6 @@
#include "BattlegroundDS.h"
#include "Creature.h"
-#include "GameObject.h"
#include "Player.h"
#include "WorldPacket.h"
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp
index 4a96c6a99c0..75ecd1226e1 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundEY.cpp
@@ -17,8 +17,6 @@
*/
#include "BattlegroundEY.h"
-#include "ObjectMgr.h"
-#include "World.h"
#include "WorldPacket.h"
#include "BattlegroundMgr.h"
#include "Creature.h"
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp
index 8a3fbbb42d9..846a4bf0540 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp
@@ -25,7 +25,6 @@
#include "ObjectMgr.h"
#include "Vehicle.h"
#include "Transport.h"
-#include "WorldSession.h"
#include "ScriptedCreature.h"
BattlegroundIC::BattlegroundIC()
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp
index ca52807afee..fc7ace9d3ac 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp
@@ -23,7 +23,6 @@
#include "Player.h"
#include "ScriptedCreature.h"
#include "WorldPacket.h"
-#include "WorldSession.h"
BattlegroundSA::BattlegroundSA()
{
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundTP.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundTP.cpp
index e8f65c75aac..514f5189fb2 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundTP.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundTP.cpp
@@ -15,17 +15,7 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "Battleground.h"
#include "BattlegroundTP.h"
-#include "Creature.h"
-#include "GameObject.h"
-#include "Language.h"
-#include "Object.h"
-#include "ObjectMgr.h"
-#include "BattlegroundMgr.h"
-#include "Player.h"
-#include "World.h"
-#include "WorldPacket.h"
BattlegroundTP::BattlegroundTP()
{
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp
index be9ca9352de..b250e55bf01 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundWS.cpp
@@ -17,14 +17,11 @@
*/
#include "BattlegroundWS.h"
-#include "Creature.h"
#include "GameObject.h"
#include "Language.h"
#include "Object.h"
-#include "ObjectMgr.h"
#include "BattlegroundMgr.h"
#include "Player.h"
-#include "World.h"
#include "WorldPacket.h"
// these variables aren't used outside of this file, so declare them only here
diff --git a/src/server/game/Calendar/CalendarMgr.cpp b/src/server/game/Calendar/CalendarMgr.cpp
index c22709b843b..e31b9739654 100644
--- a/src/server/game/Calendar/CalendarMgr.cpp
+++ b/src/server/game/Calendar/CalendarMgr.cpp
@@ -22,6 +22,7 @@
#include "GuildMgr.h"
#include "ObjectAccessor.h"
#include "Opcodes.h"
+#include "CalendarPackets.h"
CalendarInvite::~CalendarInvite()
{
@@ -51,30 +52,30 @@ void CalendarMgr::LoadFromDB()
_maxEventId = 0;
_maxInviteId = 0;
- // 0 1 2 3 4 5 6 7 8
- if (QueryResult result = CharacterDatabase.Query("SELECT id, creator, title, description, type, dungeon, eventtime, flags, time2 FROM calendar_events"))
+ // 0 1 2 3 4 5 6 7 8
+ if (QueryResult result = CharacterDatabase.Query("SELECT EventID, Owner, Title, Description, EventType, TextureID, Date, Flags, LockDate FROM calendar_events"))
do
{
Field* fields = result->Fetch();
- uint64 eventId = fields[0].GetUInt64();
- ObjectGuid creatorGUID = ObjectGuid::Create<HighGuid::Player>(fields[1].GetUInt64());
+ uint64 eventID = fields[0].GetUInt64();
+ ObjectGuid ownerGUID = ObjectGuid::Create<HighGuid::Player>(fields[1].GetUInt64());
std::string title = fields[2].GetString();
std::string description = fields[3].GetString();
CalendarEventType type = CalendarEventType(fields[4].GetUInt8());
- int32 dungeonId = fields[5].GetInt32();
- uint32 eventTime = fields[6].GetUInt32();
+ int32 textureID = fields[5].GetInt32();
+ uint32 date = fields[6].GetUInt32();
uint32 flags = fields[7].GetUInt32();
- uint32 timezoneTime = fields[8].GetUInt32();
- ObjectGuid::LowType guildId = UI64LIT(0);
+ uint32 lockDate = fields[8].GetUInt32();
+ ObjectGuid::LowType guildID = UI64LIT(0);
if (flags & CALENDAR_FLAG_GUILD_EVENT || flags & CALENDAR_FLAG_WITHOUT_INVITES)
- guildId = Player::GetGuildIdFromDB(creatorGUID);
+ guildID = Player::GetGuildIdFromDB(ownerGUID);
- CalendarEvent* calendarEvent = new CalendarEvent(eventId, creatorGUID, guildId, type, dungeonId, time_t(eventTime), flags, time_t(timezoneTime), title, description);
+ CalendarEvent* calendarEvent = new CalendarEvent(eventID, ownerGUID, guildID, type, textureID, time_t(date), flags, title, description, time_t(lockDate));
_events.insert(calendarEvent);
- _maxEventId = std::max(_maxEventId, eventId);
+ _maxEventId = std::max(_maxEventId, eventID);
++count;
}
@@ -83,8 +84,8 @@ void CalendarMgr::LoadFromDB()
TC_LOG_INFO("server.loading", ">> Loaded %u calendar events", count);
count = 0;
- // 0 1 2 3 4 5 6 7
- if (QueryResult result = CharacterDatabase.Query("SELECT id, event, invitee, sender, status, statustime, rank, text FROM calendar_invites"))
+ // 0 1 2 3 4 5 6 7
+ if (QueryResult result = CharacterDatabase.Query("SELECT InviteID, EventID, Invitee, Sender, Status, ResponseTime, ModerationRank, Note FROM calendar_invites"))
do
{
Field* fields = result->Fetch();
@@ -94,11 +95,11 @@ void CalendarMgr::LoadFromDB()
ObjectGuid invitee = ObjectGuid::Create<HighGuid::Player>(fields[2].GetUInt64());
ObjectGuid senderGUID = ObjectGuid::Create<HighGuid::Player>(fields[3].GetUInt64());
CalendarInviteStatus status = CalendarInviteStatus(fields[4].GetUInt8());
- uint32 statusTime = fields[5].GetUInt32();
+ uint32 responseTime = fields[5].GetUInt32();
CalendarModerationRank rank = CalendarModerationRank(fields[6].GetUInt8());
- std::string text = fields[7].GetString();
+ std::string note = fields[7].GetString();
- CalendarInvite* invite = new CalendarInvite(inviteId, eventId, invitee, senderGUID, time_t(statusTime), status, rank, text);
+ CalendarInvite* invite = new CalendarInvite(inviteId, eventId, invitee, senderGUID, time_t(responseTime), status, rank, note);
_invites[eventId].push_back(invite);
_maxInviteId = std::max(_maxInviteId, inviteId);
@@ -122,7 +123,7 @@ void CalendarMgr::AddEvent(CalendarEvent* calendarEvent, CalendarSendEventType s
{
_events.insert(calendarEvent);
UpdateEvent(calendarEvent);
- SendCalendarEvent(calendarEvent->GetCreatorGUID(), *calendarEvent, sendType);
+ SendCalendarEvent(calendarEvent->GetOwnerGUID(), *calendarEvent, sendType);
}
void CalendarMgr::AddInvite(CalendarEvent* calendarEvent, CalendarInvite* invite)
@@ -133,10 +134,10 @@ void CalendarMgr::AddInvite(CalendarEvent* calendarEvent, CalendarInvite* invite
void CalendarMgr::AddInvite(CalendarEvent* calendarEvent, CalendarInvite* invite, SQLTransaction& trans)
{
- if (!calendarEvent->IsGuildAnnouncement())
+ if (!calendarEvent->IsGuildAnnouncement() && calendarEvent->GetOwnerGUID() != invite->GetInviteeGUID())
SendCalendarEventInvite(*invite);
- if (!calendarEvent->IsGuildEvent() || invite->GetInviteeGUID() == calendarEvent->GetCreatorGUID())
+ if (!calendarEvent->IsGuildEvent() || invite->GetInviteeGUID() == calendarEvent->GetOwnerGUID())
SendCalendarEventInviteAlert(*calendarEvent, *invite);
if (!calendarEvent->IsGuildAnnouncement())
@@ -228,14 +229,14 @@ void CalendarMgr::UpdateEvent(CalendarEvent* calendarEvent)
{
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_REP_CALENDAR_EVENT);
stmt->setUInt64(0, calendarEvent->GetEventId());
- stmt->setUInt64(1, calendarEvent->GetCreatorGUID().GetCounter());
+ stmt->setUInt64(1, calendarEvent->GetOwnerGUID().GetCounter());
stmt->setString(2, calendarEvent->GetTitle());
stmt->setString(3, calendarEvent->GetDescription());
stmt->setUInt8(4, calendarEvent->GetType());
- stmt->setInt32(5, calendarEvent->GetDungeonId());
- stmt->setUInt32(6, uint32(calendarEvent->GetEventTime()));
+ stmt->setInt32(5, calendarEvent->GetTextureId());
+ stmt->setUInt32(6, uint32(calendarEvent->GetDate()));
stmt->setUInt32(7, calendarEvent->GetFlags());
- stmt->setUInt32(8, calendarEvent->GetTimeZoneTime()); // correct?
+ stmt->setUInt32(8, uint32(calendarEvent->GetLockDate()));
CharacterDatabase.Execute(stmt);
}
@@ -253,16 +254,16 @@ void CalendarMgr::UpdateInvite(CalendarInvite* invite, SQLTransaction& trans)
stmt->setUInt64(2, invite->GetInviteeGUID().GetCounter());
stmt->setUInt64(3, invite->GetSenderGUID().GetCounter());
stmt->setUInt8(4, invite->GetStatus());
- stmt->setUInt32(5, uint32(invite->GetStatusTime()));
+ stmt->setUInt32(5, uint32(invite->GetResponseTime()));
stmt->setUInt8(6, invite->GetRank());
- stmt->setString(7, invite->GetText());
+ stmt->setString(7, invite->GetNote());
CharacterDatabase.ExecuteOrAppend(trans, stmt);
}
void CalendarMgr::RemoveAllPlayerEventsAndInvites(ObjectGuid guid)
{
for (CalendarEventStore::const_iterator itr = _events.begin(); itr != _events.end(); ++itr)
- if ((*itr)->GetCreatorGUID() == guid)
+ if ((*itr)->GetOwnerGUID() == guid)
RemoveEvent((*itr)->GetEventId(), ObjectGuid::Empty); // don't send mail if removing a character
CalendarInviteStore playerInvites = GetPlayerInvites(guid);
@@ -273,7 +274,7 @@ void CalendarMgr::RemoveAllPlayerEventsAndInvites(ObjectGuid guid)
void CalendarMgr::RemovePlayerGuildEventsAndSignups(ObjectGuid guid, ObjectGuid::LowType guildId)
{
for (CalendarEventStore::const_iterator itr = _events.begin(); itr != _events.end(); ++itr)
- if ((*itr)->GetCreatorGUID() == guid && ((*itr)->IsGuildEvent() || (*itr)->IsGuildAnnouncement()))
+ if ((*itr)->GetOwnerGUID() == guid && ((*itr)->IsGuildEvent() || (*itr)->IsGuildAnnouncement()))
RemoveEvent((*itr)->GetEventId(), guid);
CalendarInviteStore playerInvites = GetPlayerInvites(guid);
@@ -411,7 +412,7 @@ std::string CalendarEvent::BuildCalendarMailBody() const
std::ostringstream strm;
// we are supposed to send PackedTime so i used WorldPacket to pack it
- data.AppendPackedTime(_eventTime);
+ data.AppendPackedTime(_date);
data >> time;
strm << time;
return strm.str();
@@ -420,130 +421,123 @@ std::string CalendarEvent::BuildCalendarMailBody() const
void CalendarMgr::SendCalendarEventInvite(CalendarInvite const& invite)
{
CalendarEvent* calendarEvent = GetEvent(invite.GetEventId());
- time_t statusTime = invite.GetStatusTime();
- bool hasStatusTime = statusTime != 946684800; // 01/01/2000 00:00:00
ObjectGuid invitee = invite.GetInviteeGUID();
Player* player = ObjectAccessor::FindConnectedPlayer(invitee);
uint8 level = player ? player->getLevel() : Player::GetLevelFromDB(invitee);
- WorldPacket data(SMSG_CALENDAR_EVENT_INVITE, 8 + 8 + 8 + 1 + 1 + 1 + (statusTime ? 4 : 0) + 1);
- data << invitee.WriteAsPacked();
- data << uint64(invite.GetEventId());
- data << uint64(invite.GetInviteId());
- data << uint8(level);
- data << uint8(invite.GetStatus());
- data << uint8(hasStatusTime);
- if (hasStatusTime)
- data.AppendPackedTime(statusTime);
- data << uint8(invite.GetSenderGUID() != invite.GetInviteeGUID()); // false only if the invite is sign-up
+ WorldPackets::Calendar::SCalendarEventInvite packet;
+ packet.EventID = calendarEvent ? calendarEvent->GetEventId() : 0;
+ packet.InviteGuid = invitee;
+ packet.InviteID = calendarEvent ? invite.GetInviteId() : 0;
+ packet.Level = level;
+ packet.ResponseTime = invite.GetResponseTime();
+ packet.Status = invite.GetStatus();
+ packet.Type = calendarEvent ? calendarEvent->IsGuildEvent() : 0; // Correct ?
+ packet.ClearPending = calendarEvent ? !calendarEvent->IsGuildEvent() : true; // Correct ?
if (!calendarEvent) // Pre-invite
{
if (Player* playerSender = ObjectAccessor::FindConnectedPlayer(invite.GetSenderGUID()))
- playerSender->SendDirectMessage(&data);
+ playerSender->SendDirectMessage(packet.Write());
}
else
{
- if (calendarEvent->GetCreatorGUID() != invite.GetInviteeGUID()) // correct?
- SendPacketToAllEventRelatives(data, *calendarEvent);
+ if (calendarEvent->GetOwnerGUID() != invite.GetInviteeGUID()) // correct?
+ SendPacketToAllEventRelatives(packet.Write(), *calendarEvent);
}
}
-void CalendarMgr::SendCalendarEventUpdateAlert(CalendarEvent const& calendarEvent, time_t oldEventTime)
+void CalendarMgr::SendCalendarEventUpdateAlert(CalendarEvent const& calendarEvent, time_t originalDate)
{
- WorldPacket data(SMSG_CALENDAR_EVENT_UPDATED_ALERT, 1 + 8 + 4 + 4 + 4 + 1 + 4 +
- calendarEvent.GetTitle().size() + calendarEvent.GetDescription().size() + 1 + 4 + 4);
- data << uint8(1); // unk
- data << uint64(calendarEvent.GetEventId());
- data.AppendPackedTime(oldEventTime);
- data << uint32(calendarEvent.GetFlags());
- data.AppendPackedTime(calendarEvent.GetEventTime());
- data << uint8(calendarEvent.GetType());
- data << int32(calendarEvent.GetDungeonId());
- data << calendarEvent.GetTitle();
- data << calendarEvent.GetDescription();
- data << uint8(CALENDAR_REPEAT_NEVER); // repeatable
- data << uint32(CALENDAR_MAX_INVITES);
- data << uint32(0); // unk
+ WorldPackets::Calendar::CalendarEventUpdatedAlert packet;
+ packet.ClearPending = true; // FIXME
+ packet.Date = calendarEvent.GetDate();
+ packet.Description = calendarEvent.GetDescription();
+ packet.EventID = calendarEvent.GetEventId();
+ packet.EventName = calendarEvent.GetTitle();
+ packet.EventType = calendarEvent.GetType();
+ packet.Flags = calendarEvent.GetFlags();
+ packet.LockDate = calendarEvent.GetLockDate(); // Always 0 ?
+ packet.OriginalDate = originalDate;
+ packet.TextureID = calendarEvent.GetTextureId();
- SendPacketToAllEventRelatives(data, calendarEvent);
+ SendPacketToAllEventRelatives(packet.Write(), calendarEvent);
}
void CalendarMgr::SendCalendarEventStatus(CalendarEvent const& calendarEvent, CalendarInvite const& invite)
{
- WorldPacket data(SMSG_CALENDAR_EVENT_INVITE_STATUS, 8 + 8 + 4 + 4 + 1 + 1 + 4);
- data << invite.GetInviteeGUID().WriteAsPacked();
- data << uint64(calendarEvent.GetEventId());
- data.AppendPackedTime(calendarEvent.GetEventTime());
- data << uint32(calendarEvent.GetFlags());
- data << uint8(invite.GetStatus());
- data << uint8(invite.GetRank());
- data.AppendPackedTime(invite.GetStatusTime());
+ WorldPackets::Calendar::CalendarEventInviteStatus packet;
+ packet.ClearPending = true; // FIXME
+ packet.Date = calendarEvent.GetDate();
+ packet.EventID = calendarEvent.GetEventId();
+ packet.Flags = calendarEvent.GetFlags();
+ packet.InviteGuid = invite.GetInviteeGUID();
+ packet.ResponseTime = invite.GetResponseTime();
+ packet.Status = invite.GetStatus();
- SendPacketToAllEventRelatives(data, calendarEvent);
+ SendPacketToAllEventRelatives(packet.Write(), calendarEvent);
}
void CalendarMgr::SendCalendarEventRemovedAlert(CalendarEvent const& calendarEvent)
{
- WorldPacket data(SMSG_CALENDAR_EVENT_REMOVED_ALERT, 1 + 8 + 1);
- data << uint8(1); // FIXME: If true does not SignalEvent(EVENT_CALENDAR_ACTION_PENDING)
- data << uint64(calendarEvent.GetEventId());
- data.AppendPackedTime(calendarEvent.GetEventTime());
+ WorldPackets::Calendar::CalendarEventRemovedAlert packet;
+ packet.ClearPending = true; // FIXME
+ packet.Date = calendarEvent.GetDate();
+ packet.EventID = calendarEvent.GetEventId();
- SendPacketToAllEventRelatives(data, calendarEvent);
+ SendPacketToAllEventRelatives(packet.Write(), calendarEvent);
}
void CalendarMgr::SendCalendarEventInviteRemove(CalendarEvent const& calendarEvent, CalendarInvite const& invite, uint32 flags)
{
- WorldPacket data(SMSG_CALENDAR_EVENT_INVITE_REMOVED, 8 + 4 + 4 + 1);
- data << invite.GetInviteeGUID().WriteAsPacked();
- data << uint64(invite.GetEventId());
- data << uint32(flags);
- data << uint8(1); // FIXME
+ WorldPackets::Calendar::CalendarEventInviteRemoved packet;
+ packet.ClearPending = true; // FIXME
+ packet.EventID = calendarEvent.GetEventId();
+ packet.Flags = flags;
+ packet.InviteGuid = invite.GetInviteeGUID();
- SendPacketToAllEventRelatives(data, calendarEvent);
+ SendPacketToAllEventRelatives(packet.Write(), calendarEvent);
}
void CalendarMgr::SendCalendarEventModeratorStatusAlert(CalendarEvent const& calendarEvent, CalendarInvite const& invite)
{
- WorldPacket data(SMSG_CALENDAR_EVENT_INVITE_MODERATOR_STATUS, 8 + 8 + 1 + 1);
- data << invite.GetInviteeGUID().WriteAsPacked();
- data << uint64(invite.GetEventId());
- data << uint8(invite.GetRank());
- data << uint8(1); // Unk boolean - Display to client?
+ WorldPackets::Calendar::CalendarEventInviteModeratorStatus packet;
+ packet.ClearPending = true; // FIXME
+ packet.EventID = calendarEvent.GetEventId();
+ packet.InviteGuid = invite.GetInviteeGUID();
+ packet.Status = invite.GetStatus();
- SendPacketToAllEventRelatives(data, calendarEvent);
+ SendPacketToAllEventRelatives(packet.Write(), calendarEvent);
}
void CalendarMgr::SendCalendarEventInviteAlert(CalendarEvent const& calendarEvent, CalendarInvite const& invite)
{
- WorldPacket data(SMSG_CALENDAR_EVENT_INVITE_ALERT);
- data << uint64(calendarEvent.GetEventId());
- data << calendarEvent.GetTitle();
- data.AppendPackedTime(calendarEvent.GetEventTime());
- data << uint32(calendarEvent.GetFlags());
- data << uint32(calendarEvent.GetType());
- data << int32(calendarEvent.GetDungeonId());
- data << uint64(invite.GetInviteId());
+ WorldPackets::Calendar::CalendarEventInviteAlert packet;
+ packet.Date = calendarEvent.GetDate();
+ packet.EventID = calendarEvent.GetEventId();
+ packet.EventName = calendarEvent.GetTitle();
+ packet.EventType = calendarEvent.GetType();
+ packet.Flags = calendarEvent.GetFlags();
+ packet.InviteID = invite.GetInviteId();
+ packet.InvitedByGuid = invite.GetSenderGUID();
+ packet.ModeratorStatus = invite.GetRank();
+ packet.OwnerGuid = calendarEvent.GetOwnerGUID();
+ packet.Status = invite.GetStatus();
+ packet.TextureID = calendarEvent.GetTextureId();
Guild* guild = sGuildMgr->GetGuildById(calendarEvent.GetGuildId());
- data << (guild ? guild->GetGUID() : ObjectGuid::Empty);
-
- data << uint8(invite.GetStatus());
- data << uint8(invite.GetRank());
- data << calendarEvent.GetCreatorGUID().WriteAsPacked();
- data << invite.GetSenderGUID().WriteAsPacked();
+ packet.EventGuildID = guild ? guild->GetGUID() : ObjectGuid::Empty;
if (calendarEvent.IsGuildEvent() || calendarEvent.IsGuildAnnouncement())
{
if (guild)
- guild->BroadcastPacket(&data);
+ guild->BroadcastPacket(packet.Write());
}
else
if (Player* player = ObjectAccessor::FindConnectedPlayer(invite.GetInviteeGUID()))
- player->SendDirectMessage(&data);
+ player->SendDirectMessage(packet.Write());
}
void CalendarMgr::SendCalendarEvent(ObjectGuid guid, CalendarEvent const& calendarEvent, CalendarSendEventType sendType)
@@ -554,105 +548,99 @@ void CalendarMgr::SendCalendarEvent(ObjectGuid guid, CalendarEvent const& calend
CalendarInviteStore const& eventInviteeList = _invites[calendarEvent.GetEventId()];
- WorldPacket data(SMSG_CALENDAR_SEND_EVENT, 60 + eventInviteeList.size() * 32);
- data << uint8(sendType);
- data << calendarEvent.GetCreatorGUID().WriteAsPacked();
- data << uint64(calendarEvent.GetEventId());
- data << calendarEvent.GetTitle();
- data << calendarEvent.GetDescription();
- data << uint8(calendarEvent.GetType());
- data << uint8(CALENDAR_REPEAT_NEVER); // repeatable
- data << uint32(CALENDAR_MAX_INVITES);
- data << int32(calendarEvent.GetDungeonId());
- data << uint32(calendarEvent.GetFlags());
- data.AppendPackedTime(calendarEvent.GetEventTime());
- data.AppendPackedTime(calendarEvent.GetTimeZoneTime());
+ WorldPackets::Calendar::CalendarSendEvent packet;
+ packet.Date = calendarEvent.GetDate();
+ packet.Description = calendarEvent.GetDescription();
+ packet.EventID = calendarEvent.GetEventId();
+ packet.EventName = calendarEvent.GetTitle();
+ packet.EventType = sendType;
+ packet.Flags = calendarEvent.GetFlags();
+ packet.GetEventType = calendarEvent.GetType();
+ packet.LockDate = calendarEvent.GetLockDate(); // Always 0 ?
+ packet.OwnerGuid = calendarEvent.GetOwnerGUID();
+ packet.TextureID = calendarEvent.GetTextureId();
Guild* guild = sGuildMgr->GetGuildById(calendarEvent.GetGuildId());
- data << (guild ? guild->GetGUID() : ObjectGuid::Empty);
+ packet.EventGuildID = (guild ? guild->GetGUID() : ObjectGuid::Empty);
- data << uint32(eventInviteeList.size());
- for (CalendarInviteStore::const_iterator itr = eventInviteeList.begin(); itr != eventInviteeList.end(); ++itr)
+ for (auto const& calendarInvite : eventInviteeList)
{
- CalendarInvite const* calendarInvite = (*itr);
ObjectGuid inviteeGuid = calendarInvite->GetInviteeGUID();
Player* invitee = ObjectAccessor::FindPlayer(inviteeGuid);
uint8 inviteeLevel = invitee ? invitee->getLevel() : Player::GetLevelFromDB(inviteeGuid);
ObjectGuid::LowType inviteeGuildId = invitee ? invitee->GetGuildId() : Player::GetGuildIdFromDB(inviteeGuid);
- data << inviteeGuid.WriteAsPacked();
- data << uint8(inviteeLevel);
- data << uint8(calendarInvite->GetStatus());
- data << uint8(calendarInvite->GetRank());
- data << uint8(calendarEvent.IsGuildEvent() && calendarEvent.GetGuildId() == inviteeGuildId);
- data << uint64(calendarInvite->GetInviteId());
- data.AppendPackedTime(calendarInvite->GetStatusTime());
- data << calendarInvite->GetText();
+ WorldPackets::Calendar::CalendarEventInviteInfo inviteInfo;
+ inviteInfo.Guid = inviteeGuid;
+ inviteInfo.Level = inviteeLevel;
+ inviteInfo.Status = calendarInvite->GetStatus();
+ inviteInfo.Moderator = calendarInvite->GetRank();
+ inviteInfo.InviteType = calendarEvent.IsGuildEvent() && calendarEvent.GetGuildId() == inviteeGuildId;
+ inviteInfo.InviteID = calendarInvite->GetInviteId();
+ inviteInfo.ResponseTime = calendarInvite->GetResponseTime();
+ inviteInfo.Notes = calendarInvite->GetNote();
+
+ packet.Invites.push_back(inviteInfo);
}
- player->SendDirectMessage(&data);
+ player->SendDirectMessage(packet.Write());
}
void CalendarMgr::SendCalendarEventInviteRemoveAlert(ObjectGuid guid, CalendarEvent const& calendarEvent, CalendarInviteStatus status)
{
if (Player* player = ObjectAccessor::FindConnectedPlayer(guid))
{
- WorldPacket data(SMSG_CALENDAR_EVENT_INVITE_REMOVED_ALERT, 8 + 4 + 4 + 1);
- data << uint64(calendarEvent.GetEventId());
- data.AppendPackedTime(calendarEvent.GetEventTime());
- data << uint32(calendarEvent.GetFlags());
- data << uint8(status);
+ WorldPackets::Calendar::CalendarEventInviteRemovedAlert packet;
+ packet.Date = calendarEvent.GetDate();
+ packet.EventID = calendarEvent.GetEventId();
+ packet.Flags = calendarEvent.GetFlags();
+ packet.Status = status;
- player->SendDirectMessage(&data);
+ player->SendDirectMessage(packet.Write());
}
}
void CalendarMgr::SendCalendarClearPendingAction(ObjectGuid guid)
{
if (Player* player = ObjectAccessor::FindConnectedPlayer(guid))
- {
- WorldPacket data(SMSG_CALENDAR_CLEAR_PENDING_ACTION, 0);
- player->SendDirectMessage(&data);
- }
+ player->SendDirectMessage(WorldPackets::Calendar::CalendarClearPendingAction().Write());
}
void CalendarMgr::SendCalendarCommandResult(ObjectGuid guid, CalendarError err, char const* param /*= NULL*/)
{
if (Player* player = ObjectAccessor::FindConnectedPlayer(guid))
{
- WorldPacket data(SMSG_CALENDAR_COMMAND_RESULT, 0);
- data << uint32(0);
- data << uint8(0);
+ WorldPackets::Calendar::CalendarCommandResult packet;
+ packet.Command = 1; // FIXME
+ packet.Result = err;
+
switch (err)
{
case CALENDAR_ERROR_OTHER_INVITES_EXCEEDED:
case CALENDAR_ERROR_ALREADY_INVITED_TO_EVENT_S:
case CALENDAR_ERROR_IGNORING_YOU_S:
- data << param;
+ packet.Name = param;
break;
default:
- data << uint8(0);
break;
}
- data << uint32(err);
-
- player->SendDirectMessage(&data);
+ player->SendDirectMessage(packet.Write());
}
}
-void CalendarMgr::SendPacketToAllEventRelatives(WorldPacket& packet, CalendarEvent const& calendarEvent)
+void CalendarMgr::SendPacketToAllEventRelatives(WorldPacket const* packet, CalendarEvent const& calendarEvent)
{
// Send packet to all guild members
if (calendarEvent.IsGuildEvent() || calendarEvent.IsGuildAnnouncement())
if (Guild* guild = sGuildMgr->GetGuildById(calendarEvent.GetGuildId()))
- guild->BroadcastPacket(&packet);
+ guild->BroadcastPacket(packet);
// Send packet to all invitees if event is non-guild, in other case only to non-guild invitees (packet was broadcasted for them)
CalendarInviteStore invites = _invites[calendarEvent.GetEventId()];
for (CalendarInviteStore::iterator itr = invites.begin(); itr != invites.end(); ++itr)
if (Player* player = ObjectAccessor::FindConnectedPlayer((*itr)->GetInviteeGUID()))
if (!calendarEvent.IsGuildEvent() || (calendarEvent.IsGuildEvent() && player->GetGuildId() != calendarEvent.GetGuildId()))
- player->SendDirectMessage(&packet);
+ player->SendDirectMessage(packet);
}
diff --git a/src/server/game/Calendar/CalendarMgr.h b/src/server/game/Calendar/CalendarMgr.h
index 8122f41c0f5..5449c9c739f 100644
--- a/src/server/game/Calendar/CalendarMgr.h
+++ b/src/server/game/Calendar/CalendarMgr.h
@@ -123,9 +123,10 @@ enum CalendarError
CALENDAR_ERROR_NO_MODERATOR = 40
};
-#define CALENDAR_MAX_EVENTS 30
-#define CALENDAR_MAX_GUILD_EVENTS 100
-#define CALENDAR_MAX_INVITES 100
+#define CALENDAR_MAX_EVENTS 30
+#define CALENDAR_MAX_GUILD_EVENTS 100
+#define CALENDAR_MAX_INVITES 100
+#define CALENDAR_DEFAULT_RESPONSE_TIME 946684800 // 01/01/2000 00:00:00
struct CalendarInvite
{
@@ -136,19 +137,19 @@ struct CalendarInvite
_eventId = eventId;
_invitee = calendarInvite.GetInviteeGUID();
_senderGUID = calendarInvite.GetSenderGUID();
- _statusTime = calendarInvite.GetStatusTime();
+ _responseTime = calendarInvite.GetResponseTime();
_status = calendarInvite.GetStatus();
_rank = calendarInvite.GetRank();
- _text = calendarInvite.GetText();
+ _note = calendarInvite.GetNote();
}
- CalendarInvite() : _inviteId(1), _eventId(0), _invitee(), _senderGUID(), _statusTime(time(NULL)),
- _status(CALENDAR_STATUS_INVITED), _rank(CALENDAR_RANK_PLAYER), _text("") { }
+ CalendarInvite() : _inviteId(1), _eventId(0), _invitee(), _senderGUID(), _responseTime(0),
+ _status(CALENDAR_STATUS_INVITED), _rank(CALENDAR_RANK_PLAYER), _note("") { }
- CalendarInvite(uint64 inviteId, uint64 eventId, ObjectGuid invitee, ObjectGuid senderGUID, time_t statusTime,
- CalendarInviteStatus status, CalendarModerationRank rank, std::string text) :
- _inviteId(inviteId), _eventId(eventId), _invitee(invitee), _senderGUID(senderGUID), _statusTime(statusTime),
- _status(status), _rank(rank), _text(text) { }
+ CalendarInvite(uint64 inviteId, uint64 eventId, ObjectGuid invitee, ObjectGuid senderGUID, time_t responseTime,
+ CalendarInviteStatus status, CalendarModerationRank rank, std::string note) :
+ _inviteId(inviteId), _eventId(eventId), _invitee(invitee), _senderGUID(senderGUID), _responseTime(responseTime),
+ _status(status), _rank(rank), _note(note) { }
~CalendarInvite();
@@ -164,11 +165,11 @@ struct CalendarInvite
void SetInvitee(ObjectGuid guid) { _invitee = guid; }
ObjectGuid GetInviteeGUID() const { return _invitee; }
- void SetStatusTime(time_t statusTime) { _statusTime = statusTime; }
- time_t GetStatusTime() const { return _statusTime; }
+ void SetResponseTime(time_t responseTime) { _responseTime = responseTime; }
+ time_t GetResponseTime() const { return _responseTime; }
- void SetText(std::string const& text) { _text = text; }
- std::string GetText() const { return _text; }
+ void SetNote(std::string const& note) { _note = note; }
+ std::string GetNote() const { return _note; }
void SetStatus(CalendarInviteStatus status) { _status = status; }
CalendarInviteStatus GetStatus() const { return _status; }
@@ -181,10 +182,10 @@ struct CalendarInvite
uint64 _eventId;
ObjectGuid _invitee;
ObjectGuid _senderGUID;
- time_t _statusTime;
+ time_t _responseTime;
CalendarInviteStatus _status;
CalendarModerationRank _rank;
- std::string _text;
+ std::string _note;
};
struct CalendarEvent
@@ -193,36 +194,35 @@ struct CalendarEvent
CalendarEvent(CalendarEvent const& calendarEvent, uint64 eventId)
{
_eventId = eventId;
- _creatorGUID = calendarEvent.GetCreatorGUID();
- _guildId = calendarEvent.GetGuildId();
- _type = calendarEvent.GetType();
- _dungeonId = calendarEvent.GetDungeonId();
- _eventTime = calendarEvent.GetEventTime();
+ _ownerGUID = calendarEvent.GetOwnerGUID();
+ _eventGuildId = calendarEvent.GetGuildId();
+ _eventType = calendarEvent.GetType();
+ _textureId = calendarEvent.GetTextureId();
+ _date = calendarEvent.GetDate();
_flags = calendarEvent.GetFlags();
- _timezoneTime = calendarEvent.GetTimeZoneTime();
_title = calendarEvent.GetTitle();
_description = calendarEvent.GetDescription();
+ _lockDate = calendarEvent.GetLockDate();
}
- CalendarEvent(uint64 eventId, ObjectGuid creatorGUID, ObjectGuid::LowType guildId, CalendarEventType type, int32 dungeonId,
- time_t eventTime, uint32 flags, time_t timezoneTime, std::string title, std::string description) :
- _eventId(eventId), _creatorGUID(creatorGUID), _guildId(guildId), _type(type), _dungeonId(dungeonId),
- _eventTime(eventTime), _flags(flags), _timezoneTime(timezoneTime), _title(title),
- _description(description) { }
+ CalendarEvent(uint64 eventId, ObjectGuid ownerGUID, ObjectGuid::LowType guildId, CalendarEventType type, int32 textureId,
+ time_t date, uint32 flags, std::string title, std::string description, time_t lockDate) :
+ _eventId(eventId), _ownerGUID(ownerGUID), _eventGuildId(guildId), _eventType(type), _textureId(textureId),
+ _date(date), _flags(flags), _title(title), _description(description), _lockDate(lockDate) { }
- CalendarEvent() : _eventId(1), _creatorGUID(), _guildId(UI64LIT(0)), _type(CALENDAR_TYPE_OTHER), _dungeonId(-1), _eventTime(0),
- _flags(0), _timezoneTime(0), _title(""), _description("") { }
+ CalendarEvent() : _eventId(1), _ownerGUID(), _eventGuildId(UI64LIT(0)), _eventType(CALENDAR_TYPE_OTHER), _textureId(-1), _date(0),
+ _flags(0), _title(""), _description(""), _lockDate(0) { }
~CalendarEvent();
void SetEventId(uint64 eventId) { _eventId = eventId; }
uint64 GetEventId() const { return _eventId; }
- void SetCreatorGUID(ObjectGuid guid) { _creatorGUID = guid; }
- ObjectGuid GetCreatorGUID() const { return _creatorGUID; }
+ void SetOwnerGUID(ObjectGuid guid) { _ownerGUID = guid; }
+ ObjectGuid GetOwnerGUID() const { return _ownerGUID; }
- void SetGuildId(ObjectGuid::LowType guildId) { _guildId = guildId; }
- ObjectGuid::LowType GetGuildId() const { return _guildId; }
+ void SetGuildId(ObjectGuid::LowType guildId) { _eventGuildId = guildId; }
+ ObjectGuid::LowType GetGuildId() const { return _eventGuildId; }
void SetTitle(std::string const& title) { _title = title; }
std::string GetTitle() const { return _title; }
@@ -230,42 +230,43 @@ struct CalendarEvent
void SetDescription(std::string const& description) { _description = description; }
std::string GetDescription() const { return _description; }
- void SetType(CalendarEventType type) { _type = type; }
- CalendarEventType GetType() const { return _type; }
+ void SetType(CalendarEventType eventType) { _eventType = eventType; }
+ CalendarEventType GetType() const { return _eventType; }
- void SetDungeonId(int32 dungeonId) { _dungeonId = dungeonId; }
- int32 GetDungeonId() const { return _dungeonId; }
+ void SetTextureId(int32 textureId) { _textureId = textureId; }
+ int32 GetTextureId() const { return _textureId; }
- void SetEventTime(time_t eventTime) { _eventTime = eventTime; }
- time_t GetEventTime() const { return _eventTime; }
+ void SetDate(time_t date) { _date = date; }
+ time_t GetDate() const { return _date; }
void SetFlags(uint32 flags) { _flags = flags; }
uint32 GetFlags() const { return _flags; }
- void SetTimeZoneTime(time_t timezoneTime) { _timezoneTime = timezoneTime; }
- time_t GetTimeZoneTime() const { return _timezoneTime; }
-
bool IsGuildEvent() const { return (_flags & CALENDAR_FLAG_GUILD_EVENT) != 0; }
bool IsGuildAnnouncement() const { return (_flags & CALENDAR_FLAG_WITHOUT_INVITES) != 0; }
+ bool IsLocked() const { return (_flags & CALENDAR_FLAG_INVITES_LOCKED) != 0; }
+
+ void SetLockDate(time_t lockDate) { _lockDate = lockDate; }
+ time_t GetLockDate() const { return _lockDate; }
std::string BuildCalendarMailSubject(ObjectGuid remover) const;
std::string BuildCalendarMailBody() const;
private:
uint64 _eventId;
- ObjectGuid _creatorGUID;
- ObjectGuid::LowType _guildId;
- CalendarEventType _type;
- int32 _dungeonId;
- time_t _eventTime;
+ ObjectGuid _ownerGUID;
+ ObjectGuid::LowType _eventGuildId;
+ CalendarEventType _eventType;
+ int32 _textureId;
+ time_t _date;
uint32 _flags;
- time_t _timezoneTime;
std::string _title;
std::string _description;
+ time_t _lockDate;
};
typedef std::vector<CalendarInvite*> CalendarInviteStore;
typedef std::set<CalendarEvent*> CalendarEventStore;
-typedef std::map<uint64 /* eventId */, CalendarInviteStore > CalendarEventInviteStore;
+typedef std::map<uint64 /* eventID */, CalendarInviteStore > CalendarEventInviteStore;
class CalendarMgr
{
@@ -324,14 +325,14 @@ class CalendarMgr
void SendCalendarEventInviteAlert(CalendarEvent const& calendarEvent, CalendarInvite const& invite);
void SendCalendarEventInviteRemove(CalendarEvent const& calendarEvent, CalendarInvite const& invite, uint32 flags);
void SendCalendarEventInviteRemoveAlert(ObjectGuid guid, CalendarEvent const& calendarEvent, CalendarInviteStatus status);
- void SendCalendarEventUpdateAlert(CalendarEvent const& calendarEvent, time_t oldEventTime);
+ void SendCalendarEventUpdateAlert(CalendarEvent const& calendarEvent, time_t originalDate);
void SendCalendarEventStatus(CalendarEvent const& calendarEvent, CalendarInvite const& invite);
void SendCalendarEventRemovedAlert(CalendarEvent const& calendarEvent);
void SendCalendarEventModeratorStatusAlert(CalendarEvent const& calendarEvent, CalendarInvite const& invite);
void SendCalendarClearPendingAction(ObjectGuid guid);
void SendCalendarCommandResult(ObjectGuid guid, CalendarError err, char const* param = NULL);
- void SendPacketToAllEventRelatives(WorldPacket& packet, CalendarEvent const& calendarEvent);
+ void SendPacketToAllEventRelatives(WorldPacket const* packet, CalendarEvent const& calendarEvent);
};
#define sCalendarMgr CalendarMgr::instance()
diff --git a/src/server/game/Chat/Channels/ChannelMgr.cpp b/src/server/game/Chat/Channels/ChannelMgr.cpp
index fdf0285dee6..bb6fb069055 100644
--- a/src/server/game/Chat/Channels/ChannelMgr.cpp
+++ b/src/server/game/Chat/Channels/ChannelMgr.cpp
@@ -20,7 +20,6 @@
#include "ChannelPackets.h"
#include "Player.h"
#include "World.h"
-#include "WorldSession.h"
ChannelMgr::~ChannelMgr()
{
diff --git a/src/server/game/Chat/Chat.cpp b/src/server/game/Chat/Chat.cpp
index 0c4c621bff2..a262ab42870 100644
--- a/src/server/game/Chat/Chat.cpp
+++ b/src/server/game/Chat/Chat.cpp
@@ -19,7 +19,6 @@
#include "Common.h"
#include "ObjectMgr.h"
#include "World.h"
-#include "WorldPacket.h"
#include "WorldSession.h"
#include "DatabaseEnv.h"
@@ -29,13 +28,9 @@
#include "GridNotifiersImpl.h"
#include "Language.h"
#include "Log.h"
-#include "Opcodes.h"
#include "Player.h"
-#include "UpdateMask.h"
-#include "SpellMgr.h"
#include "ScriptMgr.h"
#include "ChatLink.h"
-#include "Guild.h"
#include "Group.h"
bool ChatHandler::load_command_table = true;
diff --git a/src/server/game/Combat/HostileRefManager.cpp b/src/server/game/Combat/HostileRefManager.cpp
index 40aa6ccfad1..6dfb95d7979 100644
--- a/src/server/game/Combat/HostileRefManager.cpp
+++ b/src/server/game/Combat/HostileRefManager.cpp
@@ -20,7 +20,6 @@
#include "ThreatManager.h"
#include "Unit.h"
#include "DBCStructure.h"
-#include "SpellMgr.h"
#include "SpellInfo.h"
HostileRefManager::~HostileRefManager()
diff --git a/src/server/game/Combat/ThreatManager.cpp b/src/server/game/Combat/ThreatManager.cpp
index 18ead47c490..18cb93fcf69 100644
--- a/src/server/game/Combat/ThreatManager.cpp
+++ b/src/server/game/Combat/ThreatManager.cpp
@@ -19,7 +19,6 @@
#include "ThreatManager.h"
#include "Unit.h"
#include "Creature.h"
-#include "CreatureAI.h"
#include "Map.h"
#include "Player.h"
#include "ObjectAccessor.h"
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp
index c8ccc15019d..7cae9ee2221 100644
--- a/src/server/game/Conditions/ConditionMgr.cpp
+++ b/src/server/game/Conditions/ConditionMgr.cpp
@@ -27,7 +27,6 @@
#include "ScriptMgr.h"
#include "SpellAuras.h"
#include "SpellMgr.h"
-#include "Spell.h"
char const* ConditionMgr::StaticSourceTypeData[CONDITION_SOURCE_TYPE_MAX] =
{
diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp
index 59249b02612..5233af5abc9 100644
--- a/src/server/game/DataStores/DB2Stores.cpp
+++ b/src/server/game/DataStores/DB2Stores.cpp
@@ -23,7 +23,6 @@
#include "Log.h"
#include "TransportMgr.h"
#include "World.h"
-#include <functional>
DB2Storage<AreaGroupEntry> sAreaGroupStore("AreaGroup.db2", AreaGroupFormat, HOTFIX_SEL_AREA_GROUP);
DB2Storage<AreaGroupMemberEntry> sAreaGroupMemberStore("AreaGroupMember.db2", AreaGroupMemberFormat, HOTFIX_SEL_AREA_GROUP_MEMBER);
diff --git a/src/server/game/DataStores/DBCStores.cpp b/src/server/game/DataStores/DBCStores.cpp
index 04285b02851..f819341a04a 100644
--- a/src/server/game/DataStores/DBCStores.cpp
+++ b/src/server/game/DataStores/DBCStores.cpp
@@ -17,15 +17,11 @@
*/
#include "DBCStores.h"
-#include "Containers.h"
#include "Log.h"
#include "SharedDefines.h"
#include "SpellInfo.h"
-#include "SpellMgr.h"
#include "DBCfmt.h"
-#include "ItemTemplate.h"
#include "Timer.h"
-#include "ObjectDefines.h"
#include "DB2Stores.h"
#include <map>
diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp
index ba21168086e..0c89465fc60 100644
--- a/src/server/game/DungeonFinding/LFGMgr.cpp
+++ b/src/server/game/DungeonFinding/LFGMgr.cpp
@@ -21,7 +21,6 @@
#include "DisableMgr.h"
#include "ObjectMgr.h"
#include "SocialMgr.h"
-#include "Language.h"
#include "LFGMgr.h"
#include "LFGScripts.h"
#include "LFGGroupData.h"
diff --git a/src/server/game/DungeonFinding/LFGQueue.cpp b/src/server/game/DungeonFinding/LFGQueue.cpp
index 30e9a587353..20aeaa4ea6e 100644
--- a/src/server/game/DungeonFinding/LFGQueue.cpp
+++ b/src/server/game/DungeonFinding/LFGQueue.cpp
@@ -23,9 +23,6 @@
#include "LFGQueue.h"
#include "LFGMgr.h"
#include "Log.h"
-#include "ObjectMgr.h"
-#include "World.h"
-#include "GroupMgr.h"
namespace lfg
{
diff --git a/src/server/game/Entities/Corpse/Corpse.cpp b/src/server/game/Entities/Corpse/Corpse.cpp
index 15e560a8e7e..1265a82f89d 100644
--- a/src/server/game/Entities/Corpse/Corpse.cpp
+++ b/src/server/game/Entities/Corpse/Corpse.cpp
@@ -22,9 +22,6 @@
#include "UpdateMask.h"
#include "ObjectAccessor.h"
#include "DatabaseEnv.h"
-#include "Opcodes.h"
-#include "GossipDef.h"
-#include "World.h"
Corpse::Corpse(CorpseType type) : WorldObject(type != CORPSE_BONES), m_type(type)
{
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index 81b29cdd400..c1e7ec2fa6c 100644
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -34,12 +34,7 @@
#include "InstanceScript.h"
#include "Log.h"
#include "LootMgr.h"
-#include "MapManager.h"
-#include "MoveSpline.h"
-#include "MoveSplineInit.h"
#include "ObjectMgr.h"
-#include "Opcodes.h"
-#include "OutdoorPvPMgr.h"
#include "Player.h"
#include "PoolMgr.h"
#include "QuestDef.h"
@@ -48,7 +43,6 @@
#include "TemporarySummon.h"
#include "Util.h"
#include "Vehicle.h"
-#include "WaypointMovementGenerator.h"
#include "World.h"
#include "WorldPacket.h"
#include "CombatPackets.h"
diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h
index 17cef733e6c..0683725cab8 100644
--- a/src/server/game/Entities/Creature/Creature.h
+++ b/src/server/game/Entities/Creature/Creature.h
@@ -494,7 +494,7 @@ class Creature : public Unit, public GridObject<Creature>, public MapObject
bool CanFly() const override { return (GetCreatureTemplate()->InhabitType & INHABIT_AIR) != 0; }
void SetReactState(ReactStates st) { m_reactState = st; }
- ReactStates GetReactState() { return m_reactState; }
+ ReactStates GetReactState() const { return m_reactState; }
bool HasReactState(ReactStates state) const { return (m_reactState == state); }
void InitializeReactState();
@@ -538,7 +538,7 @@ class Creature : public Unit, public GridObject<Creature>, public MapObject
void SetCanDualWield(bool value) override;
int8 GetOriginalEquipmentId() const { return m_originalEquipmentId; }
- uint8 GetCurrentEquipmentId() { return m_equipmentId; }
+ uint8 GetCurrentEquipmentId() const { return m_equipmentId; }
void SetCurrentEquipmentId(uint8 id) { m_equipmentId = id; }
float GetSpellDamageMod(int32 Rank) const;
@@ -583,7 +583,7 @@ class Creature : public Unit, public GridObject<Creature>, public MapObject
void SetLootRecipient (Unit* unit);
void AllLootRemovedFromCorpse();
- uint16 GetLootMode() { return m_LootMode; }
+ uint16 GetLootMode() const { return m_LootMode; }
bool HasLootMode(uint16 lootMode) { return (m_LootMode & lootMode) != 0; }
void SetLootMode(uint16 lootMode) { m_LootMode = lootMode; }
void AddLootMode(uint16 lootMode) { m_LootMode |= lootMode; }
@@ -611,7 +611,7 @@ class Creature : public Unit, public GridObject<Creature>, public MapObject
void CallAssistance();
void SetNoCallAssistance(bool val) { m_AlreadyCallAssistance = val; }
void SetNoSearchAssistance(bool val) { m_AlreadySearchedAssistance = val; }
- bool HasSearchedAssistance() { return m_AlreadySearchedAssistance; }
+ bool HasSearchedAssistance() const { return m_AlreadySearchedAssistance; }
bool CanAssistTo(const Unit* u, const Unit* enemy, bool checkfaction = true) const;
bool _IsTargetAcceptable(const Unit* target) const;
@@ -675,7 +675,7 @@ class Creature : public Unit, public GridObject<Creature>, public MapObject
Unit* SelectVictim();
void SetDisableReputationGain(bool disable) { DisableReputationGain = disable; }
- bool IsReputationGainDisabled() { return DisableReputationGain; }
+ bool IsReputationGainDisabled() const { return DisableReputationGain; }
bool IsDamageEnoughForLootingAndReward() const { return m_PlayerDamageReq == 0; }
void LowerPlayerDamageReq(uint32 unDamage);
void ResetPlayerDamageReq() { m_PlayerDamageReq = GetHealth() / 2; }
diff --git a/src/server/game/Entities/Creature/GossipDef.cpp b/src/server/game/Entities/Creature/GossipDef.cpp
index 0fd001de69f..ec1e7050732 100644
--- a/src/server/game/Entities/Creature/GossipDef.cpp
+++ b/src/server/game/Entities/Creature/GossipDef.cpp
@@ -19,13 +19,10 @@
#include "QuestDef.h"
#include "GossipDef.h"
#include "ObjectMgr.h"
-#include "Opcodes.h"
-#include "WorldPacket.h"
#include "WorldSession.h"
#include "Formulas.h"
#include "QuestPackets.h"
#include "NPCPackets.h"
-#include "WorldPacket.h"
GossipMenu::GossipMenu()
{
diff --git a/src/server/game/Entities/Creature/TemporarySummon.h b/src/server/game/Entities/Creature/TemporarySummon.h
index 378061d2905..83778b66191 100644
--- a/src/server/game/Entities/Creature/TemporarySummon.h
+++ b/src/server/game/Entities/Creature/TemporarySummon.h
@@ -53,7 +53,7 @@ class TempSummon : public Creature
Creature* GetSummonerCreatureBase() const;
ObjectGuid GetSummonerGUID() const { return m_summonerGUID; }
TempSummonType const& GetSummonType() { return m_type; }
- uint32 GetTimer() { return m_timer; }
+ uint32 GetTimer() const { return m_timer; }
const SummonPropertiesEntry* const m_Properties;
private:
diff --git a/src/server/game/Entities/DynamicObject/DynamicObject.cpp b/src/server/game/Entities/DynamicObject/DynamicObject.cpp
index a90d2832de9..b22eb8739eb 100644
--- a/src/server/game/Entities/DynamicObject/DynamicObject.cpp
+++ b/src/server/game/Entities/DynamicObject/DynamicObject.cpp
@@ -23,7 +23,6 @@
#include "ObjectAccessor.h"
#include "DatabaseEnv.h"
#include "GridNotifiers.h"
-#include "CellImpl.h"
#include "GridNotifiersImpl.h"
#include "ScriptMgr.h"
#include "Transport.h"
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp
index 84dea103df3..ac2ab48c242 100644
--- a/src/server/game/Entities/GameObject/GameObject.cpp
+++ b/src/server/game/Entities/GameObject/GameObject.cpp
@@ -20,7 +20,6 @@
#include "Battleground.h"
#include "CellImpl.h"
#include "CreatureAISelector.h"
-#include "DynamicTree.h"
#include "GameObjectModel.h"
#include "GameObjectPackets.h"
#include "GridNotifiersImpl.h"
@@ -35,7 +34,6 @@
#include "UpdateFieldFlags.h"
#include "World.h"
#include "Transport.h"
-#include <G3D/Quat.h>
GameObject::GameObject() : WorldObject(false), MapObject(),
m_model(NULL), m_goValue(), m_AI(NULL)
@@ -235,7 +233,7 @@ bool GameObject::Create(ObjectGuid::LowType guidlow, uint32 name_id, Map* map, u
SetDisplayId(goinfo->displayId);
- m_model = GameObjectModel::Create(*this);
+ m_model = CreateModel();
// GAMEOBJECT_BYTES_1, index at 0, 1, 2 and 3
SetGoType(GameobjectTypes(goinfo->type));
SetGoState(go_state);
@@ -2212,7 +2210,7 @@ void GameObject::UpdateModel()
if (GetMap()->ContainsGameObjectModel(*m_model))
GetMap()->RemoveGameObjectModel(*m_model);
delete m_model;
- m_model = GameObjectModel::Create(*this);
+ m_model = CreateModel();
if (m_model)
GetMap()->InsertGameObjectModel(*m_model);
}
@@ -2427,3 +2425,25 @@ void GameObject::UpdateModelPosition()
GetMap()->InsertGameObjectModel(*m_model);
}
}
+
+class GameObjectModelOwnerImpl : public GameObjectModelOwnerBase
+{
+public:
+ explicit GameObjectModelOwnerImpl(GameObject const* owner) : _owner(owner) { }
+
+ virtual bool IsSpawned() const override { return _owner->isSpawned(); }
+ virtual uint32 GetDisplayId() const override { return _owner->GetDisplayId(); }
+ virtual uint32 GetPhaseMask() const override { return _owner->GetPhaseMask(); }
+ virtual G3D::Vector3 GetPosition() const override { return G3D::Vector3(_owner->GetPositionX(), _owner->GetPositionY(), _owner->GetPositionZ()); }
+ virtual float GetOrientation() const override { return _owner->GetOrientation(); }
+ virtual float GetScale() const override { return _owner->GetObjectScale(); }
+ virtual void DebugVisualizeCorner(G3D::Vector3 const& corner) const override { _owner->SummonCreature(1, corner.x, corner.y, corner.z, 0, TEMPSUMMON_MANUAL_DESPAWN); }
+
+private:
+ GameObject const* _owner;
+};
+
+GameObjectModel* GameObject::CreateModel()
+{
+ return GameObjectModel::Create(Trinity::make_unique<GameObjectModelOwnerImpl>(this), sWorld->GetDataPath());
+}
diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h
index efd2eba2d00..53c52f9ec5b 100644
--- a/src/server/game/Entities/GameObject/GameObject.h
+++ b/src/server/game/Entities/GameObject/GameObject.h
@@ -982,8 +982,8 @@ class GameObject : public WorldObject, public GridObject<GameObject>, public Map
// Note: unit is only used when s = GO_ACTIVATED
void SetLootState(LootState s, Unit* unit = NULL);
- uint16 GetLootMode() { return m_LootMode; }
- bool HasLootMode(uint16 lootMode) { return (m_LootMode & lootMode) != 0; }
+ uint16 GetLootMode() const { return m_LootMode; }
+ bool HasLootMode(uint16 lootMode) const { return (m_LootMode & lootMode) != 0; }
void SetLootMode(uint16 lootMode) { m_LootMode = lootMode; }
void AddLootMode(uint16 lootMode) { m_LootMode |= lootMode; }
void RemoveLootMode(uint16 lootMode) { m_LootMode &= ~lootMode; }
@@ -1085,6 +1085,7 @@ class GameObject : public WorldObject, public GridObject<GameObject>, public Map
protected:
bool AIM_Initialize();
+ GameObjectModel* CreateModel();
void UpdateModel(); // updates model in case displayId were changed
uint32 m_spellId;
time_t m_respawnTime; // (secs) time of next respawn (or despawn if GO have owner()),
diff --git a/src/server/game/Entities/Item/ItemEnchantmentMgr.cpp b/src/server/game/Entities/Item/ItemEnchantmentMgr.cpp
index 1c0a64c17da..531dd136c1f 100644
--- a/src/server/game/Entities/Item/ItemEnchantmentMgr.cpp
+++ b/src/server/game/Entities/Item/ItemEnchantmentMgr.cpp
@@ -16,17 +16,17 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include <stdlib.h>
-#include <functional>
#include "ItemEnchantmentMgr.h"
#include "DatabaseEnv.h"
#include "Log.h"
#include "ObjectMgr.h"
-#include <list>
-#include <vector>
#include "Util.h"
#include "DBCStores.h"
+#include <list>
+#include <vector>
+#include <stdlib.h>
+
struct EnchStoreItem
{
uint32 ench;
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index fcbab4e8ab4..95a2485bc7a 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -30,12 +30,8 @@
#include "UpdateData.h"
#include "UpdateMask.h"
#include "Util.h"
-#include "MapManager.h"
#include "ObjectAccessor.h"
-#include "Log.h"
#include "Transport.h"
-#include "TargetedMovementGenerator.h"
-#include "WaypointMovementGenerator.h"
#include "VMapFactory.h"
#include "CellImpl.h"
#include "GridNotifiers.h"
@@ -46,12 +42,8 @@
#include "Totem.h"
#include "MovementPackets.h"
#include "OutdoorPvPMgr.h"
-#include "DynamicTree.h"
#include "Unit.h"
-#include "Group.h"
#include "BattlefieldMgr.h"
-#include "Battleground.h"
-#include "Chat.h"
#include "GameObjectPackets.h"
#include "MiscPackets.h"
diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h
index 717410164b2..9be3dddf456 100644
--- a/src/server/game/Entities/Object/Object.h
+++ b/src/server/game/Entities/Object/Object.h
@@ -498,7 +498,7 @@ class WorldObject : public Object, public WorldLocation
std::set<uint32> const& GetPhases() const { return _phases; }
std::set<uint32> const& GetTerrainSwaps() const { return _terrainSwaps; }
std::set<uint32> const& GetWorldMapAreaSwaps() const { return _worldMapAreaSwaps; }
- int32 GetDBPhase() { return _dbPhase; }
+ int32 GetDBPhase() const { return _dbPhase; }
// if negative it is used as PhaseGroupId
void SetDBPhase(int32 p) { _dbPhase = p; }
diff --git a/src/server/game/Entities/Object/ObjectGuid.cpp b/src/server/game/Entities/Object/ObjectGuid.cpp
index 4d607e59d1b..05ef5d7dc32 100644
--- a/src/server/game/Entities/Object/ObjectGuid.cpp
+++ b/src/server/game/Entities/Object/ObjectGuid.cpp
@@ -18,7 +18,7 @@
#include "ObjectGuid.h"
#include "World.h"
-#include "ObjectMgr.h"
+
#include <sstream>
#include <iomanip>
@@ -121,31 +121,37 @@ void ObjectGuid::SetRawValue(std::vector<uint8> const& guid)
void PackedGuid::Set(ObjectGuid const& guid)
{
+ _packedGuid.clear();
+ _packedGuid << guid;
+}
+
+ByteBuffer& operator<<(ByteBuffer& buf, ObjectGuid const& guid)
+{
uint8 lowMask = 0;
uint8 highMask = 0;
- _packedGuid.clear();
- _packedGuid << uint8(lowMask);
- _packedGuid << uint8(highMask);
+ buf.FlushBits(); // flush any unwritten bits to make wpos return a meaningful value
+ std::size_t pos = buf.wpos();
+ buf << uint8(lowMask);
+ buf << uint8(highMask);
uint8 packed[8];
- if (size_t packedSize = _packedGuid.PackUInt64(guid._low, &lowMask, packed))
- _packedGuid.append(packed, packedSize);
- if (size_t packedSize = _packedGuid.PackUInt64(guid._high, &highMask, packed))
- _packedGuid.append(packed, packedSize);
+ if (size_t packedSize = ByteBuffer::PackUInt64(guid._low, &lowMask, packed))
+ buf.append(packed, packedSize);
+ if (size_t packedSize = ByteBuffer::PackUInt64(guid._high, &highMask, packed))
+ buf.append(packed, packedSize);
- _packedGuid.put(0, lowMask);
- _packedGuid.put(1, highMask);
-}
+ buf.put(pos, lowMask);
+ buf.put(pos + 1, highMask);
-ByteBuffer& operator<<(ByteBuffer& buf, ObjectGuid const& guid)
-{
- buf << guid.WriteAsPacked();
return buf;
}
ByteBuffer& operator>>(ByteBuffer& buf, ObjectGuid& guid)
{
- buf >> guid.ReadAsPacked();
+ uint8 lowMask, highMask;
+ buf >> lowMask >> highMask;
+ buf.ReadPackedUInt64(lowMask, guid._low);
+ buf.ReadPackedUInt64(highMask, guid._high);
return buf;
}
@@ -155,15 +161,6 @@ ByteBuffer& operator<<(ByteBuffer& buf, PackedGuid const& guid)
return buf;
}
-ByteBuffer& operator>>(ByteBuffer& buf, PackedGuidReader const& guid)
-{
- uint8 lowMask, highMask;
- buf >> lowMask >> highMask;
- buf.ReadPackedUInt64(lowMask, guid.GuidPtr->_low);
- buf.ReadPackedUInt64(highMask, guid.GuidPtr->_high);
- return buf;
-}
-
std::ostream& operator<<(std::ostream& stream, ObjectGuid const& guid)
{
std::ostringstream tmp;
diff --git a/src/server/game/Entities/Object/ObjectGuid.h b/src/server/game/Entities/Object/ObjectGuid.h
index 281bc170c3a..23d6b4f4dde 100644
--- a/src/server/game/Entities/Object/ObjectGuid.h
+++ b/src/server/game/Entities/Object/ObjectGuid.h
@@ -180,19 +180,13 @@ GUID_TRAIT_MAP_SPECIFIC(HighGuid::AILockTicket)
class ObjectGuid;
class PackedGuid;
-struct PackedGuidReader
-{
- explicit PackedGuidReader(ObjectGuid& guid) : GuidPtr(&guid) { }
- ObjectGuid* GuidPtr;
-};
-
#pragma pack(push, 1)
class ObjectGuid
{
friend std::ostream& operator<<(std::ostream& stream, ObjectGuid const& guid);
- friend ByteBuffer& operator>>(ByteBuffer& buf, PackedGuidReader const& guid);
- friend class PackedGuid;
+ friend ByteBuffer& operator<<(ByteBuffer& buf, ObjectGuid const& guid);
+ friend ByteBuffer& operator>>(ByteBuffer& buf, ObjectGuid& guid);
public:
static ObjectGuid const Empty;
@@ -212,15 +206,11 @@ class ObjectGuid
ObjectGuid() : _low(0), _high(0) { }
ObjectGuid(ObjectGuid const&) = default;
- PackedGuidReader ReadAsPacked() { return PackedGuidReader(*this); }
-
std::vector<uint8> GetRawValue() const;
void SetRawValue(std::vector<uint8> const& guid);
void SetRawValue(uint64 high, uint64 low) { _high = high; _low = low; }
void Clear() { _high = 0; _low = 0; }
- PackedGuid WriteAsPacked() const;
-
HighGuid GetHigh() const { return HighGuid((_high >> 58) & 0x3F); }
uint32 GetRealmId() const { return uint32((_high >> 42) & 0x1FFF); }
uint32 GetMapId() const { return uint32((_high >> 29) & 0x1FFF); }
@@ -393,12 +383,9 @@ ByteBuffer& operator<<(ByteBuffer& buf, ObjectGuid const& guid);
ByteBuffer& operator>>(ByteBuffer& buf, ObjectGuid& guid);
ByteBuffer& operator<<(ByteBuffer& buf, PackedGuid const& guid);
-ByteBuffer& operator>>(ByteBuffer& buf, PackedGuidReader const& guid);
std::ostream& operator<<(std::ostream& stream, ObjectGuid const& guid);
-inline PackedGuid ObjectGuid::WriteAsPacked() const { return PackedGuid(*this); }
-
namespace std
{
template<>
diff --git a/src/server/game/Entities/Object/Position.cpp b/src/server/game/Entities/Object/Position.cpp
index 530e51cd8f5..8f8e5743f8c 100644
--- a/src/server/game/Entities/Object/Position.cpp
+++ b/src/server/game/Entities/Object/Position.cpp
@@ -17,9 +17,10 @@
#include "Position.h"
#include "ByteBuffer.h"
-#include "G3D/g3dmath.h"
#include "GridDefines.h"
+#include <G3D/g3dmath.h>
+
bool Position::operator==(Position const &a)
{
return (G3D::fuzzyEq(a.m_positionX, m_positionX) &&
diff --git a/src/server/game/Entities/Object/Updates/UpdateData.cpp b/src/server/game/Entities/Object/Updates/UpdateData.cpp
index 98c3c428b6e..54c915a640b 100644
--- a/src/server/game/Entities/Object/Updates/UpdateData.cpp
+++ b/src/server/game/Entities/Object/Updates/UpdateData.cpp
@@ -20,9 +20,7 @@
#include "ByteBuffer.h"
#include "WorldPacket.h"
#include "UpdateData.h"
-#include "Log.h"
#include "Opcodes.h"
-#include "World.h"
UpdateData::UpdateData(uint32 map) : m_map(map), m_blockCount(0) { }
@@ -56,7 +54,7 @@ bool UpdateData::BuildPacket(WorldPacket* packet)
*packet << uint32(m_outOfRangeGUIDs.size());
for (GuidSet::const_iterator i = m_outOfRangeGUIDs.begin(); i != m_outOfRangeGUIDs.end(); ++i)
- *packet << i->WriteAsPacked();
+ *packet << *i;
}
*packet << uint32(m_data.size());
diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp
index 20a431d2331..7e7e41703c7 100644
--- a/src/server/game/Entities/Pet/Pet.cpp
+++ b/src/server/game/Entities/Pet/Pet.cpp
@@ -24,11 +24,9 @@
#include "ObjectMgr.h"
#include "SpellMgr.h"
#include "Pet.h"
-#include "Formulas.h"
#include "SpellAuras.h"
#include "SpellAuraEffects.h"
#include "SpellHistory.h"
-#include "CreatureAI.h"
#include "Unit.h"
#include "Util.h"
#include "Group.h"
@@ -1718,7 +1716,7 @@ void Pet::InitTalentForLevel()
*/
}
-uint8 Pet::GetMaxTalentPointsForLevel(uint8 level)
+uint8 Pet::GetMaxTalentPointsForLevel(uint8 level) const
{
uint8 points = (level >= 20) ? ((level - 16) / 4) : 0;
// Mod points from owner SPELL_AURA_MOD_PET_TALENT_POINTS
diff --git a/src/server/game/Entities/Pet/Pet.h b/src/server/game/Entities/Pet/Pet.h
index 70f14fbd7ca..23931338c4f 100644
--- a/src/server/game/Entities/Pet/Pet.h
+++ b/src/server/game/Entities/Pet/Pet.h
@@ -128,8 +128,8 @@ class Pet : public Guardian
static void resetTalentsForAllPetsOf(Player* owner, Pet* online_pet = nullptr);
void InitTalentForLevel();
- uint8 GetMaxTalentPointsForLevel(uint8 level);
- uint8 GetFreeTalentPoints() { return GetByteValue(UNIT_FIELD_BYTES_1, 1); }
+ uint8 GetMaxTalentPointsForLevel(uint8 level) const;
+ uint8 GetFreeTalentPoints() const { return GetByteValue(UNIT_FIELD_BYTES_1, 1); }
void SetFreeTalentPoints(uint8 points) { SetByteValue(UNIT_FIELD_BYTES_1, 1, points); }
uint32 m_usedTalentCount;
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 2f699894c1e..cb9957f3be6 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -92,7 +92,6 @@
#include "UpdateFieldFlags.h"
#include "UpdateMask.h"
#include "Util.h"
-#include "Vehicle.h"
#include "VehiclePackets.h"
#include "Weather.h"
#include "WeatherMgr.h"
@@ -100,7 +99,6 @@
#include "WorldPacket.h"
#include "WorldSession.h"
#include "WorldStatePackets.h"
-#include "InstancePackets.h"
#define ZONE_UPDATE_INTERVAL (1*IN_MILLISECONDS)
@@ -890,6 +888,9 @@ Player::Player(WorldSession* session): Unit(true)
m_achievementMgr = new AchievementMgr<Player>(this);
m_reputationMgr = new ReputationMgr(this);
+
+ for (uint8 i = 0; i < MAX_CUF_PROFILES; ++i)
+ _CUFProfiles[i] = nullptr;
}
Player::~Player()
@@ -13682,7 +13683,6 @@ void Player::SendNewItem(Item* item, uint32 quantity, bool pushed, bool created,
if (!item) // prevent crash
return;
- /// @todo: fix 6.x implementation
WorldPackets::Item::ItemPushResult packet;
packet.PlayerGUID = GetGUID();
@@ -13692,20 +13692,22 @@ void Player::SendNewItem(Item* item, uint32 quantity, bool pushed, bool created,
packet.Item.Initialize(item);
- //packet.ReadUInt32("WodUnk");
+ //packet.QuestLogItemID;
packet.Quantity = quantity;
packet.QuantityInInventory = GetItemCount(item->GetEntry());
- //packet.ReadUInt32("BattlePetBreedID");
- //packet.ReadUInt32("BattlePetBreedQuality");
- //packet.ReadUInt32("BattlePetSpeciesID");
- //packet.ReadUInt32("BattlePetLevel");
+ //packet.DungeonEncounterID;
+ //packet.BattlePetBreedID;
+ //packet.BattlePetBreedQuality;
+ //packet.BattlePetSpeciesID;
+ //packet.BattlePetLevel;
packet.ItemGUID = item->GetGUID();
packet.Pushed = pushed;
- packet.DisplayText = true;
+ packet.DisplayText = WorldPackets::Item::ItemPushResult::DISPLAY_TYPE_NORMAL;
packet.Created = created;
- //packet.ReadBit("IsBonusRoll");
+ //packet.IsBonusRoll;
+ //packet.IsEncounterLoot;
if (broadcast && GetGroup())
GetGroup()->BroadcastPacket(packet.Write(), true);
@@ -14999,8 +15001,8 @@ bool Player::SatisfyQuestLog(bool msg)
if (msg)
{
- WorldPacket data(SMSG_QUEST_LOG_FULL, 0);
- GetSession()->SendPacket(&data);
+ WorldPackets::Quest::QuestLogFull data;
+ GetSession()->SendPacket(data.Write());
TC_LOG_DEBUG("network", "WORLD: Sent SMSG_QUESTLOG_FULL");
}
return false;
@@ -18565,12 +18567,14 @@ void Player::BindToInstance()
if (!mapSave) //it seems sometimes mapSave is NULL, but I did not check why
return;
- WorldPacket data(SMSG_INSTANCE_SAVE_CREATED, 4);
- data << uint32(0);
- GetSession()->SendPacket(&data);
- BindToInstance(mapSave, true);
-
- GetSession()->SendCalendarRaidLockout(mapSave, true);
+ WorldPackets::Instance::InstanceSaveCreated data;
+ data.Gm = IsGameMaster();
+ GetSession()->SendPacket(data.Write());
+ if (!IsGameMaster())
+ {
+ BindToInstance(mapSave, true);
+ GetSession()->SendCalendarRaidLockout(mapSave, true);
+ }
}
void Player::SetPendingBind(uint32 instanceId, uint32 bindTimer)
@@ -24521,22 +24525,24 @@ void Player::ConvertRune(uint8 index, RuneType newType)
{
SetCurrentRune(index, newType);
- WorldPacket data(SMSG_CONVERT_RUNE, 2);
- data << uint8(index);
- data << uint8(newType);
- GetSession()->SendPacket(&data);
+ WorldPackets::Spells::ConvertRune data;
+ data.Index = index;
+ data.Rune = newType;
+ GetSession()->SendPacket(data.Write());
}
void Player::ResyncRunes(uint8 count)
{
- WorldPacket data(SMSG_RESYNC_RUNES, 4 + count * 2);
- data << uint32(count);
+ WorldPackets::Spells::ResyncRunes data(count);
+
for (uint32 i = 0; i < count; ++i)
{
- data << uint8(GetCurrentRune(i)); // rune type
- data << uint8(255 - (GetRuneCooldown(i) * 51)); // passed cooldown time (0-255)
+ WorldPackets::Spells::ResyncRunes::ResyncRune rune;
+ rune.RuneType = GetCurrentRune(i); // rune type
+ rune.Cooldown = uint8(255 - (GetRuneCooldown(i) * 51)); // passed cooldown time (0-255)
+ data.Runes.push_back(rune);
}
- GetSession()->SendPacket(&data);
+ GetSession()->SendPacket(data.Write());
}
void Player::AddRunePower(uint8 index)
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 2455fc54646..6147090a0ff 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -1417,8 +1417,8 @@ class Player : public Unit, public GridObject<Player>
time_t m_logintime;
time_t m_Last_tick;
uint32 m_Played_time[MAX_PLAYED_TIME_INDEX];
- uint32 GetTotalPlayedTime() { return m_Played_time[PLAYED_TIME_TOTAL]; }
- uint32 GetLevelPlayedTime() { return m_Played_time[PLAYED_TIME_LEVEL]; }
+ uint32 GetTotalPlayedTime() const { return m_Played_time[PLAYED_TIME_TOTAL]; }
+ uint32 GetLevelPlayedTime() const { return m_Played_time[PLAYED_TIME_LEVEL]; }
void setDeathState(DeathState s) override; // overwrite Unit::setDeathState
@@ -1834,7 +1834,7 @@ class Player : public Unit, public GridObject<Player>
void RemoveMail(uint32 id);
void AddMail(Mail* mail) { m_mail.push_front(mail);}// for call from WorldSession::SendMailTo
- uint32 GetMailSize() { return uint32(m_mail.size()); }
+ uint32 GetMailSize() const { return uint32(m_mail.size()); }
Mail* GetMail(uint32 id);
PlayerMails const& GetMails() const { return m_mail; }
@@ -1951,7 +1951,7 @@ class Player : public Unit, public GridObject<Player>
void SetSpellModTakingSpell(Spell* spell, bool apply);
void RemoveArenaSpellCooldowns(bool removeActivePetCooldowns = false);
- uint32 GetLastPotionId() { return m_lastPotionId; }
+ uint32 GetLastPotionId() const { return m_lastPotionId; }
void SetLastPotionId(uint32 item_id) { m_lastPotionId = item_id; }
void UpdatePotionCooldown(Spell* spell = NULL);
@@ -2016,14 +2016,14 @@ class Player : public Unit, public GridObject<Player>
void SetRank(uint8 rankId) { SetUInt32Value(PLAYER_GUILDRANK, rankId); }
uint8 GetRank() const { return uint8(GetUInt32Value(PLAYER_GUILDRANK)); }
void SetGuildLevel(uint32 level) { SetUInt32Value(PLAYER_GUILDLEVEL, level); }
- uint32 GetGuildLevel() { return GetUInt32Value(PLAYER_GUILDLEVEL); }
+ uint32 GetGuildLevel() const { return GetUInt32Value(PLAYER_GUILDLEVEL); }
void SetGuildIdInvited(ObjectGuid::LowType GuildId) { m_GuildIdInvited = GuildId; }
ObjectGuid::LowType GetGuildId() const { return GetUInt64Value(OBJECT_FIELD_DATA); /* return only lower part */ }
Guild* GetGuild();
Guild const* GetGuild() const;
static ObjectGuid::LowType GetGuildIdFromDB(ObjectGuid guid);
static uint8 GetRankFromDB(ObjectGuid guid);
- ObjectGuid::LowType GetGuildIdInvited() { return m_GuildIdInvited; }
+ ObjectGuid::LowType GetGuildIdInvited() const { return m_GuildIdInvited; }
static void RemovePetitionsAndSigns(ObjectGuid guid);
// Arena Team
@@ -2034,7 +2034,7 @@ class Player : public Unit, public GridObject<Player>
uint32 GetArenaTeamId(uint8 slot) const { return GetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (slot * ARENA_TEAM_END) + ARENA_TEAM_ID); }
uint32 GetArenaPersonalRating(uint8 slot) const { return GetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (slot * ARENA_TEAM_END) + ARENA_TEAM_PERSONAL_RATING); }
void SetArenaTeamIdInvited(uint32 ArenaTeamId) { m_ArenaTeamIdInvited = ArenaTeamId; }
- uint32 GetArenaTeamIdInvited() { return m_ArenaTeamIdInvited; }
+ uint32 GetArenaTeamIdInvited() const { return m_ArenaTeamIdInvited; }
uint32 GetRBGPersonalRating() const { return 0; }
Difficulty GetDifficultyID(MapEntry const* mapEntry) const;
@@ -2216,7 +2216,7 @@ class Player : public Unit, public GridObject<Player>
bool isHonorOrXPTarget(Unit const* victim) const;
bool GetsRecruitAFriendBonus(bool forXP);
- uint8 GetGrantableLevels() { return m_grantableLevels; }
+ uint8 GetGrantableLevels() const { return m_grantableLevels; }
void SetGrantableLevels(uint8 val) { m_grantableLevels = val; }
ReputationMgr& GetReputationMgr() { return *m_reputationMgr; }
@@ -2357,7 +2357,7 @@ class Player : public Unit, public GridObject<Player>
bool isTotalImmune();
bool CanCaptureTowerPoint();
- bool GetRandomWinner() { return m_IsBGRandomWinner; }
+ bool GetRandomWinner() const { return m_IsBGRandomWinner; }
void SetRandomWinner(bool isWinner);
/*********************************************************/
@@ -2554,7 +2554,7 @@ class Player : public Unit, public GridObject<Player>
uint32 GetRuneBaseCooldown(uint8 index) const { return GetRuneTypeBaseCooldown(GetBaseRune(index)); }
uint32 GetRuneTypeBaseCooldown(RuneType runeType) const;
bool IsBaseRuneSlotsOnCooldown(RuneType runeType) const;
- RuneType GetLastUsedRune() { return m_runes->lastUsedRune; }
+ RuneType GetLastUsedRune() const { return m_runes->lastUsedRune; }
void SetLastUsedRune(RuneType type) { m_runes->lastUsedRune = type; }
void SetBaseRune(uint8 index, RuneType baseRune) { m_runes->runes[index].BaseRune = baseRune; }
void SetCurrentRune(uint8 index, RuneType currentRune) { m_runes->runes[index].CurrentRune = currentRune; }
@@ -2912,7 +2912,7 @@ class Player : public Unit, public GridObject<Player>
uint8 m_grantableLevels;
- std::array<std::unique_ptr<CUFProfile>, MAX_CUF_PROFILES> _CUFProfiles = {};
+ std::array<std::unique_ptr<CUFProfile>, MAX_CUF_PROFILES> _CUFProfiles;
private:
// internal common parts for CanStore/StoreItem functions
diff --git a/src/server/game/Entities/Totem/Totem.cpp b/src/server/game/Entities/Totem/Totem.cpp
index 724c1a3c3d9..3dea9368bf8 100644
--- a/src/server/game/Entities/Totem/Totem.cpp
+++ b/src/server/game/Entities/Totem/Totem.cpp
@@ -17,15 +17,13 @@
*/
#include "Totem.h"
-#include "Log.h"
#include "Group.h"
#include "ObjectMgr.h"
-#include "Opcodes.h"
#include "Player.h"
#include "SpellHistory.h"
#include "SpellMgr.h"
#include "SpellInfo.h"
-#include "WorldPacket.h"
+#include "TotemPackets.h"
Totem::Totem(SummonPropertiesEntry const* properties, Unit* owner) : Minion(properties, owner, false)
{
@@ -56,19 +54,20 @@ void Totem::Update(uint32 time)
void Totem::InitStats(uint32 duration)
{
// client requires SMSG_TOTEM_CREATED to be sent before adding to world and before removing old totem
- if (GetOwner()->GetTypeId() == TYPEID_PLAYER
- && m_Properties->Slot >= SUMMON_SLOT_TOTEM
- && m_Properties->Slot < MAX_TOTEM_SLOT)
+ if (Player* owner = GetOwner()->ToPlayer())
{
- WorldPacket data(SMSG_TOTEM_CREATED, 1 + 8 + 4 + 4);
- data << uint8(m_Properties->Slot - 1);
- data << GetGUID();
- data << uint32(duration);
- data << uint32(GetUInt32Value(UNIT_CREATED_BY_SPELL));
- GetOwner()->ToPlayer()->SendDirectMessage(&data);
+ if (m_Properties->Slot >= SUMMON_SLOT_TOTEM && m_Properties->Slot < MAX_TOTEM_SLOT)
+ {
+ WorldPackets::Totem::TotemCreated data;
+ data.Totem = GetGUID();
+ data.Slot = m_Properties->Slot - SUMMON_SLOT_TOTEM;
+ data.Duration = duration;
+ data.SpellID = GetUInt32Value(UNIT_CREATED_BY_SPELL);
+ owner->SendDirectMessage(data.Write());
+ }
// set display id depending on caster's race
- SetDisplayId(GetOwner()->GetModelForTotem(PlayerTotemType(m_Properties->ID)));
+ SetDisplayId(owner->GetModelForTotem(PlayerTotemType(m_Properties->ID)));
}
Minion::InitStats(duration);
diff --git a/src/server/game/Entities/Transport/Transport.cpp b/src/server/game/Entities/Transport/Transport.cpp
index 1e6ee06e661..0be9a205e5b 100644
--- a/src/server/game/Entities/Transport/Transport.cpp
+++ b/src/server/game/Entities/Transport/Transport.cpp
@@ -22,12 +22,9 @@
#include "ObjectMgr.h"
#include "Path.h"
#include "ScriptMgr.h"
-#include "WorldPacket.h"
#include "DBCStores.h"
-#include "World.h"
#include "GameObjectAI.h"
#include "Vehicle.h"
-#include "MapReference.h"
#include "Player.h"
#include "Cell.h"
#include "CellImpl.h"
@@ -98,7 +95,7 @@ bool Transport::Create(ObjectGuid::LowType guidlow, uint32 entry, uint32 mapid,
SetName(goinfo->name);
UpdateRotationFields(0.0f, 1.0f);
- m_model = GameObjectModel::Create(*this);
+ m_model = CreateModel();
return true;
}
diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp
index 7cc25c5a5a1..59053abe46d 100644
--- a/src/server/game/Entities/Unit/StatSystem.cpp
+++ b/src/server/game/Entities/Unit/StatSystem.cpp
@@ -23,7 +23,6 @@
#include "SharedDefines.h"
#include "SpellAuras.h"
#include "SpellAuraEffects.h"
-#include "SpellMgr.h"
#include "World.h"
inline bool _ModifyUInt32(bool apply, uint32& baseValue, int32& amount)
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index cd80fbb587f..9a69f3b35ff 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -35,7 +35,6 @@
#include "InstanceSaveMgr.h"
#include "InstanceScript.h"
#include "Log.h"
-#include "MapManager.h"
#include "MoveSpline.h"
#include "ObjectAccessor.h"
#include "ObjectMgr.h"
@@ -54,8 +53,8 @@
#include "SpellHistory.h"
#include "SpellMgr.h"
#include "TemporarySummon.h"
-#include "Totem.h"
#include "Transport.h"
+#include "Totem.h"
#include "UpdateFieldFlags.h"
#include "Util.h"
#include "Vehicle.h"
diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp
index 08efa9b9cae..e8311a0befd 100644
--- a/src/server/game/Entities/Vehicle/Vehicle.cpp
+++ b/src/server/game/Entities/Vehicle/Vehicle.cpp
@@ -22,12 +22,8 @@
#include "Vehicle.h"
#include "Unit.h"
#include "Util.h"
-#include "WorldPacket.h"
#include "ScriptMgr.h"
#include "CreatureAI.h"
-#include "ZoneScript.h"
-#include "SpellMgr.h"
-#include "SpellInfo.h"
#include "MoveSplineInit.h"
#include "TemporarySummon.h"
#include "EventProcessor.h"
diff --git a/src/server/game/Events/GameEventMgr.cpp b/src/server/game/Events/GameEventMgr.cpp
index 0d6b971ec15..39e0e1b1bb3 100644
--- a/src/server/game/Events/GameEventMgr.cpp
+++ b/src/server/game/Events/GameEventMgr.cpp
@@ -23,7 +23,6 @@
#include "Language.h"
#include "Log.h"
#include "MapManager.h"
-#include "GossipDef.h"
#include "Player.h"
#include "BattlegroundMgr.h"
#include "UnitAI.h"
diff --git a/src/server/game/Garrison/Garrison.cpp b/src/server/game/Garrison/Garrison.cpp
index d86252cdfb8..b52ebdd9808 100644
--- a/src/server/game/Garrison/Garrison.cpp
+++ b/src/server/game/Garrison/Garrison.cpp
@@ -277,18 +277,27 @@ void Garrison::Upgrade()
void Garrison::Enter() const
{
- WorldLocation loc(_siteLevel->MapID);
- loc.Relocate(_owner);
- _owner->TeleportTo(loc, TELE_TO_SEAMLESS);
+ if (MapEntry const* map = sMapStore.LookupEntry(_siteLevel->MapID))
+ {
+ if (int32(_owner->GetMapId()) == map->ParentMapID)
+ {
+ WorldLocation loc(_siteLevel->MapID);
+ loc.Relocate(_owner);
+ _owner->TeleportTo(loc, TELE_TO_SEAMLESS);
+ }
+ }
}
void Garrison::Leave() const
{
if (MapEntry const* map = sMapStore.LookupEntry(_siteLevel->MapID))
{
- WorldLocation loc(map->ParentMapID);
- loc.Relocate(_owner);
- _owner->TeleportTo(loc, TELE_TO_SEAMLESS);
+ if (_owner->GetMapId() == _siteLevel->MapID)
+ {
+ WorldLocation loc(map->ParentMapID);
+ loc.Relocate(_owner);
+ _owner->TeleportTo(loc, TELE_TO_SEAMLESS);
+ }
}
}
diff --git a/src/server/game/Globals/ObjectAccessor.cpp b/src/server/game/Globals/ObjectAccessor.cpp
index 474b608a846..733e61876ad 100644
--- a/src/server/game/Globals/ObjectAccessor.cpp
+++ b/src/server/game/Globals/ObjectAccessor.cpp
@@ -16,32 +16,23 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include <boost/thread/shared_mutex.hpp>
-#include <boost/thread/locks.hpp>
-
#include "ObjectAccessor.h"
-#include "CellImpl.h"
#include "Corpse.h"
#include "Creature.h"
#include "DynamicObject.h"
#include "GameObject.h"
#include "GridNotifiers.h"
-#include "GridNotifiersImpl.h"
#include "Item.h"
#include "Map.h"
-#include "MapInstanced.h"
-#include "MapManager.h"
#include "ObjectDefines.h"
#include "ObjectMgr.h"
-#include "Opcodes.h"
#include "Pet.h"
#include "Player.h"
#include "Transport.h"
-#include "Vehicle.h"
#include "World.h"
-#include "WorldPacket.h"
-#include <cmath>
+#include <boost/thread/shared_mutex.hpp>
+#include <boost/thread/locks.hpp>
ObjectAccessor::ObjectAccessor() { }
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index 635f2804a22..84b87d93de5 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -27,7 +27,6 @@
#include "DB2Structure.h"
#include "DB2Stores.h"
#include "DisableMgr.h"
-#include "GameEventMgr.h"
#include "GossipDef.h"
#include "GroupMgr.h"
#include "GuildMgr.h"
@@ -38,19 +37,15 @@
#include "MapManager.h"
#include "Object.h"
#include "ObjectMgr.h"
-#include "Pet.h"
#include "PoolMgr.h"
#include "ReputationMgr.h"
#include "ScriptMgr.h"
#include "SpellAuras.h"
-#include "Spell.h"
#include "SpellMgr.h"
#include "SpellScript.h"
-#include "Transport.h"
#include "UpdateMask.h"
#include "Util.h"
#include "Vehicle.h"
-#include "WaypointManager.h"
#include "World.h"
ScriptMapMap sSpellScripts;
diff --git a/src/server/game/Grids/Notifiers/GridNotifiers.cpp b/src/server/game/Grids/Notifiers/GridNotifiers.cpp
index 8f0090b6ec1..8b01f67127a 100644
--- a/src/server/game/Grids/Notifiers/GridNotifiers.cpp
+++ b/src/server/game/Grids/Notifiers/GridNotifiers.cpp
@@ -21,12 +21,9 @@
#include "WorldPacket.h"
#include "WorldSession.h"
#include "UpdateData.h"
-#include "Item.h"
-#include "Map.h"
#include "Transport.h"
#include "ObjectAccessor.h"
#include "CellImpl.h"
-#include "SpellInfo.h"
using namespace Trinity;
diff --git a/src/server/game/Grids/ObjectGridLoader.cpp b/src/server/game/Grids/ObjectGridLoader.cpp
index 398077e3a22..365cfb63e08 100644
--- a/src/server/game/Grids/ObjectGridLoader.cpp
+++ b/src/server/game/Grids/ObjectGridLoader.cpp
@@ -20,7 +20,6 @@
#include "ObjectAccessor.h"
#include "ObjectMgr.h"
#include "Creature.h"
-#include "Vehicle.h"
#include "GameObject.h"
#include "DynamicObject.h"
#include "Corpse.h"
diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp
index ceb09344182..2391f152ab3 100644
--- a/src/server/game/Groups/Group.cpp
+++ b/src/server/game/Groups/Group.cpp
@@ -32,7 +32,6 @@
#include "BattlegroundMgr.h"
#include "MapManager.h"
#include "InstanceSaveMgr.h"
-#include "MapInstanced.h"
#include "Util.h"
#include "LFGMgr.h"
#include "UpdateFieldFlags.h"
@@ -935,7 +934,7 @@ void Group::SendLooter(Creature* creature, Player* groupLooter)
data << creature->GetGUID();
if (GetLootMethod() == MASTER_LOOT && creature->loot.hasOverThresholdItem())
- data << GetMasterLooterGuid().WriteAsPacked();
+ data << GetMasterLooterGuid();
else
data << uint8(0);
diff --git a/src/server/game/Guilds/Guild.cpp b/src/server/game/Guilds/Guild.cpp
index 4083a07523c..e93a1da83b3 100644
--- a/src/server/game/Guilds/Guild.cpp
+++ b/src/server/game/Guilds/Guild.cpp
@@ -31,6 +31,7 @@
#include "SocialMgr.h"
#include "Opcodes.h"
#include "ChatPackets.h"
+#include "CalendarPackets.h"
#define MAX_GUILD_BANK_TAB_TEXT_LEN 500
#define EMBLEM_PRICE 10 * GOLD
@@ -2533,15 +2534,12 @@ void Guild::BroadcastPacketIfTrackingAchievement(WorldPacket const* packet, uint
void Guild::MassInviteToEvent(WorldSession* session, uint32 minLevel, uint32 maxLevel, uint32 minRank)
{
- uint32 count = 0;
-
- WorldPacket data(SMSG_CALENDAR_EVENT_INITIAL_INVITES);
- data << uint32(count); // count placeholder
+ WorldPackets::Calendar::CalendarEventInitialInvites packet;
for (Members::const_iterator itr = m_members.begin(); itr != m_members.end(); ++itr)
{
// not sure if needed, maybe client checks it as well
- if (count >= CALENDAR_MAX_INVITES)
+ if (packet.Invites.size() >= CALENDAR_MAX_INVITES)
{
if (Player* player = session->GetPlayer())
sCalendarMgr->SendCalendarCommandResult(player->GetGUID(), CALENDAR_ERROR_INVITES_EXCEEDED);
@@ -2552,16 +2550,10 @@ void Guild::MassInviteToEvent(WorldSession* session, uint32 minLevel, uint32 max
uint32 level = Player::GetLevelFromDB(member->GetGUID());
if (member->GetGUID() != session->GetPlayer()->GetGUID() && level >= minLevel && level <= maxLevel && member->IsRankNotLower(minRank))
- {
- data << member->GetGUID().WriteAsPacked();
- data << uint8(level);
- ++count;
- }
+ packet.Invites.emplace_back(member->GetGUID(), level);
}
- data.put<uint32>(0, count);
-
- session->SendPacket(&data);
+ session->SendPacket(packet.Write());
}
// Members handling
diff --git a/src/server/game/Guilds/Guild.h b/src/server/game/Guilds/Guild.h
index 777147f2595..805e35f0eb3 100644
--- a/src/server/game/Guilds/Guild.h
+++ b/src/server/game/Guilds/Guild.h
@@ -385,7 +385,7 @@ private:
void SetTrackedCriteriaIds(std::set<uint32> criteriaIds) { m_trackedCriteriaIds.swap(criteriaIds); }
bool IsTrackingCriteriaId(uint32 criteriaId) const { return m_trackedCriteriaIds.find(criteriaId) != m_trackedCriteriaIds.end(); }
- bool IsOnline() { return (m_flags & GUILDMEMBER_STATUS_ONLINE); }
+ bool IsOnline() const { return (m_flags & GUILDMEMBER_STATUS_ONLINE); }
void ChangeRank(uint8 newRank);
@@ -857,7 +857,7 @@ public:
void DeleteMember(ObjectGuid guid, bool isDisbanding = false, bool isKicked = false, bool canDeleteGuild = false);
bool ChangeMemberRank(ObjectGuid guid, uint8 newRank);
bool IsMember(ObjectGuid guid) const;
- uint32 GetMembersCount() { return uint32(m_members.size()); }
+ uint32 GetMembersCount() const { return uint32(m_members.size()); }
// Bank
void SwapItems(Player* player, uint8 tabId, uint8 slotId, uint8 destTabId, uint8 destSlotId, uint32 splitedAmount);
diff --git a/src/server/game/Handlers/ArenaTeamHandler.cpp b/src/server/game/Handlers/ArenaTeamHandler.cpp
index f4fb9dcd1b2..4fee5e6aeb5 100644
--- a/src/server/game/Handlers/ArenaTeamHandler.cpp
+++ b/src/server/game/Handlers/ArenaTeamHandler.cpp
@@ -17,16 +17,8 @@
*/
#include "Player.h"
-#include "World.h"
#include "WorldPacket.h"
#include "WorldSession.h"
-#include "DatabaseEnv.h"
-
-#include "ArenaTeam.h"
-#include "Log.h"
-#include "ObjectMgr.h"
-#include "SocialMgr.h"
-#include "ArenaTeamMgr.h"
#include "Opcodes.h"
void WorldSession::SendNotInArenaTeamPacket(uint8 type)
diff --git a/src/server/game/Handlers/AuctionHouseHandler.cpp b/src/server/game/Handlers/AuctionHouseHandler.cpp
index 88f45056187..3b0a8fc8913 100644
--- a/src/server/game/Handlers/AuctionHouseHandler.cpp
+++ b/src/server/game/Handlers/AuctionHouseHandler.cpp
@@ -24,7 +24,6 @@
#include "AuctionHouseMgr.h"
#include "Log.h"
#include "Language.h"
-#include "Opcodes.h"
#include "UpdateMask.h"
#include "Util.h"
#include "AccountMgr.h"
diff --git a/src/server/game/Handlers/BankHandler.cpp b/src/server/game/Handlers/BankHandler.cpp
index 8879b4e2532..a67f61d2c2a 100644
--- a/src/server/game/Handlers/BankHandler.cpp
+++ b/src/server/game/Handlers/BankHandler.cpp
@@ -17,7 +17,6 @@
#include "BankPackets.h"
#include "NPCPackets.h"
-#include "ObjectMgr.h"
#include "Opcodes.h"
#include "Player.h"
#include "WorldPacket.h"
diff --git a/src/server/game/Handlers/CalendarHandler.cpp b/src/server/game/Handlers/CalendarHandler.cpp
index debbec88e34..36d04d6772a 100644
--- a/src/server/game/Handlers/CalendarHandler.cpp
+++ b/src/server/game/Handlers/CalendarHandler.cpp
@@ -19,10 +19,10 @@
/*
----- Opcodes Not Used yet -----
-SMSG_CALENDAR_EVENT_INVITE_NOTES [ packguid(Invitee), uint64(inviteId), string(Text), Boolean(Unk) ]
-?CMSG_CALENDAR_EVENT_INVITE_NOTES [ uint32(unk1), uint32(unk2), uint32(unk3), uint32(unk4), uint32(unk5) ]
-SMSG_CALENDAR_EVENT_INVITE_NOTES_ALERT [ uint64(inviteId), string(Text) ]
-SMSG_CALENDAR_EVENT_INVITE_STATUS_ALERT [ uint64(eventId), uint32(eventTime), uint32(unkFlag), uint8(deletePending) ]
+SMSG_CALENDAR_EVENT_INVITE_NOTES [ ObjectGuid(InviteGuid), bool(ClearPending), std::string(Notes), uint64(EventID) ]
+?CMSG_CALENDAR_EVENT_INVITE_NOTES [ ObjectGuid(Guid), uint64(EventID), uint64(InviteID), uint64(ModeratorID), std::string(Notes) ]
+SMSG_CALENDAR_EVENT_INVITE_NOTES_ALERT [ uint64(EventID), std::string(Notes) ]
+SMSG_CALENDAR_EVENT_INVITE_STATUS_ALERT [ uint64(EventID), uint32(Date), uint32(Flags), uint8(Status) ]
SMSG_CALENDAR_RAID_LOCKOUT_UPDATED SendCalendarRaidLockoutUpdated(InstanceSave const* save)
@todo
@@ -45,198 +45,120 @@ Copied events should probably have a new owner
#include "ObjectAccessor.h"
#include "DatabaseEnv.h"
#include "GuildMgr.h"
-#include "ArenaTeamMgr.h"
#include "WorldSession.h"
+#include "CalendarPackets.h"
-void WorldSession::HandleCalendarGetCalendar(WorldPacket& /*recvData*/)
+void WorldSession::HandleCalendarGetCalendar(WorldPackets::Calendar::CalendarGetCalendar& /*calendarGetCalendar*/)
{
ObjectGuid guid = _player->GetGUID();
- TC_LOG_DEBUG("network", "CMSG_CALENDAR_GET [%s]", guid.ToString().c_str());
-
time_t currTime = time(NULL);
- WorldPacket data(SMSG_CALENDAR_SEND_CALENDAR, 1000); // Average size if no instance
+ WorldPackets::Calendar::CalendarSendCalendar packet;
+ packet.ServerNow = currTime;
+ packet.RaidOrigin = 1135753200; // Constant date, unk (28.12.2005 07:00)
+ packet.ServerTime = currTime;
- CalendarInviteStore invites = sCalendarMgr->GetPlayerInvites(guid);
- data << uint32(invites.size());
- for (CalendarInviteStore::const_iterator itr = invites.begin(); itr != invites.end(); ++itr)
+ CalendarInviteStore playerInvites = sCalendarMgr->GetPlayerInvites(guid);
+ for (auto const& invite : playerInvites)
{
- data << uint64((*itr)->GetEventId());
- data << uint64((*itr)->GetInviteId());
- data << uint8((*itr)->GetStatus());
- data << uint8((*itr)->GetRank());
-
- if (CalendarEvent* calendarEvent = sCalendarMgr->GetEvent((*itr)->GetEventId()))
- {
- data << uint8(calendarEvent->IsGuildEvent());
- data << calendarEvent->GetCreatorGUID().WriteAsPacked();
- }
- else
- {
- data << uint8(0);
- data << (*itr)->GetSenderGUID().WriteAsPacked();
- }
+ WorldPackets::Calendar::CalendarSendCalendarInviteInfo inviteInfo;
+ inviteInfo.EventID = invite->GetEventId();
+ inviteInfo.InviteID = invite->GetInviteId();
+ inviteInfo.InviterGuid = invite->GetSenderGUID();
+ inviteInfo.Status = invite->GetStatus();
+ inviteInfo.Moderator = invite->GetRank();
+ if (CalendarEvent* calendarEvent = sCalendarMgr->GetEvent(invite->GetEventId()))
+ inviteInfo.InviteType = calendarEvent->IsGuildEvent() && calendarEvent->GetGuildId() == _player->GetGuildId();
+
+ packet.Invites.push_back(inviteInfo);
}
CalendarEventStore playerEvents = sCalendarMgr->GetPlayerEvents(guid);
- data << uint32(playerEvents.size());
- for (CalendarEventStore::const_iterator itr = playerEvents.begin(); itr != playerEvents.end(); ++itr)
+ for (auto const& event : playerEvents)
{
- CalendarEvent* calendarEvent = *itr;
-
- data << uint64(calendarEvent->GetEventId());
- data << calendarEvent->GetTitle();
- data << uint32(calendarEvent->GetType());
- data.AppendPackedTime(calendarEvent->GetEventTime());
- data << uint32(calendarEvent->GetFlags());
- data << int32(calendarEvent->GetDungeonId());
-
- Guild* guild = sGuildMgr->GetGuildById(calendarEvent->GetGuildId());
- data << (guild ? guild->GetGUID() : ObjectGuid::Empty);
-
- data << calendarEvent->GetCreatorGUID().WriteAsPacked();
+ WorldPackets::Calendar::CalendarSendCalendarEventInfo eventInfo;
+ eventInfo.EventID = event->GetEventId();
+ eventInfo.Date = event->GetDate();
+ Guild* guild = sGuildMgr->GetGuildById(event->GetGuildId());
+ eventInfo.EventGuildID = guild ? guild->GetGUID() : ObjectGuid::Empty;
+ eventInfo.EventName = event->GetTitle();
+ eventInfo.EventType = event->GetType();
+ eventInfo.Flags = event->GetFlags();
+ eventInfo.OwnerGuid = event->GetOwnerGUID();
+ eventInfo.TextureID = event->GetTextureId();
+
+ packet.Events.push_back(eventInfo);
}
- data << uint32(currTime); // server time
- data.AppendPackedTime(currTime); // zone time
-
- ByteBuffer dataBuffer;
- uint32 boundCounter = 0;
for (uint8 i = 0; i < MAX_DIFFICULTY; ++i)
{
Player::BoundInstancesMap boundInstances = _player->GetBoundInstances(Difficulty(i));
- for (Player::BoundInstancesMap::const_iterator itr = boundInstances.begin(); itr != boundInstances.end(); ++itr)
+ for (auto const& boundInstance : boundInstances)
{
- if (itr->second.perm)
+ if (boundInstance.second.perm)
{
- InstanceSave const* save = itr->second.save;
- dataBuffer << uint32(save->GetMapId());
- dataBuffer << uint32(save->GetDifficultyID());
- dataBuffer << uint32(save->GetResetTime() - currTime);
- dataBuffer << uint64(save->GetInstanceId()); // instance save id as unique instance copy id
- ++boundCounter;
+ WorldPackets::Calendar::CalendarSendCalendarRaidLockoutInfo lockoutInfo;
+
+ InstanceSave const* save = boundInstance.second.save;
+ lockoutInfo.MapID = save->GetMapId();
+ lockoutInfo.DifficultyID = save->GetDifficultyID();
+ lockoutInfo.ExpireTime = save->GetResetTime() - currTime;
+ lockoutInfo.InstanceID = save->GetInstanceId(); // instance save id as unique instance copy id
+
+ packet.RaidLockouts.push_back(lockoutInfo);
}
}
}
- data << uint32(boundCounter);
- data.append(dataBuffer);
-
- data << uint32(1135753200); // Constant date, unk (28.12.2005 07:00)
-
- // Reuse variables
- boundCounter = 0;
std::set<uint32> sentMaps;
- dataBuffer.clear();
-
ResetTimeByMapDifficultyMap const& resets = sInstanceSaveMgr->GetResetTimeMap();
- for (ResetTimeByMapDifficultyMap::const_iterator itr = resets.begin(); itr != resets.end(); ++itr)
+ for (auto const& reset : resets)
{
- uint32 mapId = PAIR32_LOPART(itr->first);
- if (sentMaps.find(mapId) != sentMaps.end())
+ uint32 mapID = PAIR64_LOPART(reset.first);
+ if (sentMaps.find(mapID) != sentMaps.end())
continue;
- MapEntry const* mapEntry = sMapStore.LookupEntry(mapId);
+ MapEntry const* mapEntry = sMapStore.LookupEntry(mapID);
if (!mapEntry || !mapEntry->IsRaid())
continue;
- sentMaps.insert(mapId);
-
- dataBuffer << int32(mapId);
- dataBuffer << int32(itr->second - currTime);
- dataBuffer << int32(0); // Never seen anything else in sniffs - still unknown
- ++boundCounter;
- }
-
- data << uint32(boundCounter);
- data.append(dataBuffer);
+ sentMaps.insert(mapID);
+ WorldPackets::Calendar::CalendarSendCalendarRaidResetInfo resetInfo;
+ resetInfo.MapID = mapID;
+ resetInfo.Duration = reset.second - currTime;
+ resetInfo.Offset = 0; // Never seen anything else in sniffs - still unknown
- /// @todo Fix this, how we do know how many and what holidays to send?
- uint32 holidayCount = 0;
- data << uint32(holidayCount);
- for (uint32 i = 0; i < holidayCount; ++i)
- {
- HolidaysEntry const* holiday = sHolidaysStore.LookupEntry(666);
-
- data << uint32(holiday->ID); // m_ID
- data << uint32(holiday->Region); // m_region, might be looping
- data << uint32(holiday->Looping); // m_looping, might be region
- data << uint32(holiday->Priority); // m_priority
- data << uint32(holiday->CalendarFilterType); // m_calendarFilterType
-
- for (uint8 j = 0; j < MAX_HOLIDAY_DATES; ++j)
- data << uint32(holiday->Date[j]); // 26 * m_date -- WritePackedTime ?
-
- for (uint8 j = 0; j < MAX_HOLIDAY_DURATIONS; ++j)
- data << uint32(holiday->Duration[j]); // 10 * m_duration
-
- for (uint8 j = 0; j < MAX_HOLIDAY_FLAGS; ++j)
- data << uint32(holiday->CalendarFlags[j]); // 10 * m_calendarFlags
-
- data << holiday->TextureFilename->Str[sWorld->GetDefaultDbcLocale()]; // m_textureFilename (holiday name)
+ packet.RaidResets.push_back(resetInfo);
}
- SendPacket(&data);
+ SendPacket(packet.Write());
}
-void WorldSession::HandleCalendarGetEvent(WorldPacket& recvData)
+void WorldSession::HandleCalendarGetEvent(WorldPackets::Calendar::CalendarGetEvent& calendarGetEvent)
{
- uint64 eventId;
- recvData >> eventId;
-
- TC_LOG_DEBUG("network", "CMSG_CALENDAR_GET_EVENT. Player [%s] Event [" UI64FMTD "]", _player->GetGUID().ToString().c_str(), eventId);
-
- if (CalendarEvent* calendarEvent = sCalendarMgr->GetEvent(eventId))
+ if (CalendarEvent* calendarEvent = sCalendarMgr->GetEvent(calendarGetEvent.EventID))
sCalendarMgr->SendCalendarEvent(_player->GetGUID(), *calendarEvent, CALENDAR_SENDTYPE_GET);
else
sCalendarMgr->SendCalendarCommandResult(_player->GetGUID(), CALENDAR_ERROR_EVENT_INVALID);
}
-void WorldSession::HandleCalendarGuildFilter(WorldPacket& recvData)
+void WorldSession::HandleCalendarGuildFilter(WorldPackets::Calendar::CalendarGuildFilter& calendarGuildFilter)
{
- TC_LOG_DEBUG("network", "CMSG_CALENDAR_GUILD_FILTER [%s]", _player->GetGUID().ToString().c_str());
-
- uint32 minLevel;
- uint32 maxLevel;
- uint32 minRank;
-
- recvData >> minLevel >> maxLevel >> minRank;
-
if (Guild* guild = sGuildMgr->GetGuildById(_player->GetGuildId()))
- guild->MassInviteToEvent(this, minLevel, maxLevel, minRank);
-
- TC_LOG_DEBUG("network", "CMSG_CALENDAR_GUILD_FILTER: Min level [%d], Max level [%d], Min rank [%d]", minLevel, maxLevel, minRank);
+ guild->MassInviteToEvent(this, calendarGuildFilter.MinLevel, calendarGuildFilter.MaxLevel, calendarGuildFilter.MaxRankOrder);
}
-void WorldSession::HandleCalendarAddEvent(WorldPacket& recvData)
+void WorldSession::HandleCalendarAddEvent(WorldPackets::Calendar::CalendarAddEvent& calendarAddEvent)
{
ObjectGuid guid = _player->GetGUID();
- std::string title;
- std::string description;
- uint8 type;
- uint8 repeatable;
- uint32 maxInvites;
- int32 dungeonId;
- uint32 eventPackedTime;
- uint32 unkPackedTime;
- uint32 flags;
-
- recvData >> title >> description >> type >> repeatable >> maxInvites >> dungeonId;
- recvData.ReadPackedTime(eventPackedTime);
- recvData.ReadPackedTime(unkPackedTime);
- recvData >> flags;
-
// prevent events in the past
// To Do: properly handle timezones and remove the "- time_t(86400L)" hack
- if (time_t(eventPackedTime) < (time(NULL) - time_t(86400L)))
- {
- recvData.rfinish();
+ if (calendarAddEvent.EventInfo.Time < (time(NULL) - time_t(86400L)))
return;
- }
- CalendarEvent* calendarEvent = new CalendarEvent(sCalendarMgr->GetFreeEventId(), guid, UI64LIT(0), CalendarEventType(type), dungeonId,
- time_t(eventPackedTime), flags, time_t(unkPackedTime), title, description);
+ CalendarEvent* calendarEvent = new CalendarEvent(sCalendarMgr->GetFreeEventId(), guid, UI64LIT(0), CalendarEventType(calendarAddEvent.EventInfo.EventType), calendarAddEvent.EventInfo.TextureID,
+ calendarAddEvent.EventInfo.Time, calendarAddEvent.EventInfo.Flags, calendarAddEvent.EventInfo.Title, calendarAddEvent.EventInfo.Description, time_t(0));
if (calendarEvent->IsGuildEvent() || calendarEvent->IsGuildAnnouncement())
if (Player* creator = ObjectAccessor::FindPlayer(guid))
@@ -244,8 +166,7 @@ void WorldSession::HandleCalendarAddEvent(WorldPacket& recvData)
if (calendarEvent->IsGuildAnnouncement())
{
- // 946684800 is 01/01/2000 00:00:00 - default response time
- CalendarInvite invite(0, calendarEvent->GetEventId(), ObjectGuid::Empty, guid, 946684800, CALENDAR_STATUS_NOT_SIGNED_UP, CALENDAR_RANK_PLAYER, "");
+ CalendarInvite invite(0, calendarEvent->GetEventId(), ObjectGuid::Empty, guid, CALENDAR_DEFAULT_RESPONSE_TIME, CALENDAR_STATUS_NOT_SIGNED_UP, CALENDAR_RANK_PLAYER, "");
// WARNING: By passing pointer to a local variable, the underlying method(s) must NOT perform any kind
// of storage of the pointer as it will lead to memory corruption
sCalendarMgr->AddInvite(calendarEvent, &invite);
@@ -253,24 +174,19 @@ void WorldSession::HandleCalendarAddEvent(WorldPacket& recvData)
else
{
// client limits the amount of players to be invited to 100
- const uint32 MaxPlayerInvites = 100;
-
- uint32 inviteCount;
- ObjectGuid invitee[MaxPlayerInvites];
- uint8 status[MaxPlayerInvites];
- uint8 rank[MaxPlayerInvites];
+ ObjectGuid invitee[CALENDAR_MAX_INVITES];
+ uint8 status[CALENDAR_MAX_INVITES];
+ uint8 rank[CALENDAR_MAX_INVITES];
memset(status, 0, sizeof(status));
memset(rank, 0, sizeof(rank));
-
try
{
- recvData >> inviteCount;
-
- for (uint32 i = 0; i < inviteCount && i < MaxPlayerInvites; ++i)
+ for (uint32 i = 0; i < calendarAddEvent.EventInfo.Invites.size() && i < CALENDAR_MAX_INVITES; ++i)
{
- recvData >> invitee[i].ReadAsPacked();
- recvData >> status[i] >> rank[i];
+ invitee[i] = calendarAddEvent.EventInfo.Invites[i].Guid;
+ status[i] = calendarAddEvent.EventInfo.Invites[i].Status;
+ rank[i] = calendarAddEvent.EventInfo.Invites[i].Moderator;
}
}
catch (ByteBufferException const&)
@@ -281,71 +197,42 @@ void WorldSession::HandleCalendarAddEvent(WorldPacket& recvData)
}
SQLTransaction trans;
- if (inviteCount > 1)
+ if (calendarAddEvent.EventInfo.Invites.size() > 1)
trans = CharacterDatabase.BeginTransaction();
- for (uint32 i = 0; i < inviteCount && i < MaxPlayerInvites; ++i)
+ for (uint32 i = 0; i < calendarAddEvent.EventInfo.Invites.size() && i < CALENDAR_MAX_INVITES; ++i)
{
- // 946684800 is 01/01/2000 00:00:00 - default response time
- CalendarInvite* invite = new CalendarInvite(sCalendarMgr->GetFreeInviteId(), calendarEvent->GetEventId(), invitee[i], guid, 946684800, CalendarInviteStatus(status[i]), CalendarModerationRank(rank[i]), "");
+ CalendarInvite* invite = new CalendarInvite(sCalendarMgr->GetFreeInviteId(), calendarEvent->GetEventId(), invitee[i], guid, CALENDAR_DEFAULT_RESPONSE_TIME, CalendarInviteStatus(status[i]), CalendarModerationRank(rank[i]), "");
sCalendarMgr->AddInvite(calendarEvent, invite, trans);
}
- if (inviteCount > 1)
+ if (calendarAddEvent.EventInfo.Invites.size() > 1)
CharacterDatabase.CommitTransaction(trans);
}
sCalendarMgr->AddEvent(calendarEvent, CALENDAR_SENDTYPE_ADD);
}
-void WorldSession::HandleCalendarUpdateEvent(WorldPacket& recvData)
+void WorldSession::HandleCalendarUpdateEvent(WorldPackets::Calendar::CalendarUpdateEvent& calendarUpdateEvent)
{
ObjectGuid guid = _player->GetGUID();
- time_t oldEventTime;
-
- uint64 eventId;
- uint64 inviteId;
- std::string title;
- std::string description;
- uint8 type;
- uint8 repetitionType;
- uint32 maxInvites;
- int32 dungeonId;
- uint32 eventPackedTime;
- uint32 timeZoneTime;
- uint32 flags;
-
- recvData >> eventId >> inviteId >> title >> description >> type >> repetitionType >> maxInvites >> dungeonId;
- recvData.ReadPackedTime(eventPackedTime);
- recvData.ReadPackedTime(timeZoneTime);
- recvData >> flags;
+ time_t oldEventTime = time_t(0);
// prevent events in the past
// To Do: properly handle timezones and remove the "- time_t(86400L)" hack
- if (time_t(eventPackedTime) < (time(NULL) - time_t(86400L)))
- {
- recvData.rfinish();
+ if (calendarUpdateEvent.EventInfo.Time < (time(NULL) - time_t(86400L)))
return;
- }
-
- TC_LOG_DEBUG("network", "CMSG_CALENDAR_UPDATE_EVENT [%s] EventId [" UI64FMTD
- "], InviteId [" UI64FMTD "] Title %s, Description %s, type %u "
- "Repeatable %u, MaxInvites %u, Dungeon ID %d, Time %u "
- "Time2 %u, Flags %u", guid.ToString().c_str(), eventId, inviteId, title.c_str(),
- description.c_str(), type, repetitionType, maxInvites, dungeonId,
- eventPackedTime, timeZoneTime, flags);
- if (CalendarEvent* calendarEvent = sCalendarMgr->GetEvent(eventId))
+ if (CalendarEvent* calendarEvent = sCalendarMgr->GetEvent(calendarUpdateEvent.EventInfo.EventID))
{
- oldEventTime = calendarEvent->GetEventTime();
+ oldEventTime = calendarEvent->GetDate();
- calendarEvent->SetType(CalendarEventType(type));
- calendarEvent->SetFlags(flags);
- calendarEvent->SetEventTime(time_t(eventPackedTime));
- calendarEvent->SetTimeZoneTime(time_t(timeZoneTime)); // Not sure, seems constant from the little sniffs we have
- calendarEvent->SetDungeonId(dungeonId);
- calendarEvent->SetTitle(title);
- calendarEvent->SetDescription(description);
+ calendarEvent->SetType(CalendarEventType(calendarUpdateEvent.EventInfo.EventType));
+ calendarEvent->SetFlags(calendarUpdateEvent.EventInfo.Flags);
+ calendarEvent->SetDate(calendarUpdateEvent.EventInfo.Time);
+ calendarEvent->SetTextureId(calendarUpdateEvent.EventInfo.TextureID);
+ calendarEvent->SetTitle(calendarUpdateEvent.EventInfo.Title);
+ calendarEvent->SetDescription(calendarUpdateEvent.EventInfo.Description);
sCalendarMgr->UpdateEvent(calendarEvent);
sCalendarMgr->SendCalendarEventUpdateAlert(*calendarEvent, oldEventTime);
@@ -354,44 +241,28 @@ void WorldSession::HandleCalendarUpdateEvent(WorldPacket& recvData)
sCalendarMgr->SendCalendarCommandResult(guid, CALENDAR_ERROR_EVENT_INVALID);
}
-void WorldSession::HandleCalendarRemoveEvent(WorldPacket& recvData)
+void WorldSession::HandleCalendarRemoveEvent(WorldPackets::Calendar::CalendarRemoveEvent& calendarRemoveEvent)
{
ObjectGuid guid = _player->GetGUID();
- uint64 eventId;
-
- recvData >> eventId;
- recvData.rfinish(); // Skip flags & invite ID, we don't use them
-
- sCalendarMgr->RemoveEvent(eventId, guid);
+ sCalendarMgr->RemoveEvent(calendarRemoveEvent.EventID, guid);
}
-void WorldSession::HandleCalendarCopyEvent(WorldPacket& recvData)
+void WorldSession::HandleCalendarCopyEvent(WorldPackets::Calendar::CalendarCopyEvent& calendarCopyEvent)
{
ObjectGuid guid = _player->GetGUID();
- uint64 eventId;
- uint64 inviteId;
- uint32 eventTime;
-
- recvData >> eventId >> inviteId;
- recvData.ReadPackedTime(eventTime);
- TC_LOG_DEBUG("network", "CMSG_CALENDAR_COPY_EVENT [%s], EventId [" UI64FMTD
- "] inviteId [" UI64FMTD "] Time: %u", guid.ToString().c_str(), eventId, inviteId, eventTime);
// prevent events in the past
// To Do: properly handle timezones and remove the "- time_t(86400L)" hack
- if (time_t(eventTime) < (time(NULL) - time_t(86400L)))
- {
- recvData.rfinish();
+ if (calendarCopyEvent.Date < (time(NULL) - time_t(86400L)))
return;
- }
- if (CalendarEvent* oldEvent = sCalendarMgr->GetEvent(eventId))
+ if (CalendarEvent* oldEvent = sCalendarMgr->GetEvent(calendarCopyEvent.EventID))
{
CalendarEvent* newEvent = new CalendarEvent(*oldEvent, sCalendarMgr->GetFreeEventId());
- newEvent->SetEventTime(time_t(eventTime));
+ newEvent->SetDate(calendarCopyEvent.Date);
sCalendarMgr->AddEvent(newEvent, CALENDAR_SENDTYPE_COPY);
- CalendarInviteStore invites = sCalendarMgr->GetEventInvites(eventId);
+ CalendarInviteStore invites = sCalendarMgr->GetEventInvites(calendarCopyEvent.EventID);
SQLTransaction trans;
if (invites.size() > 1)
trans = CharacterDatabase.BeginTransaction();
@@ -401,31 +272,21 @@ void WorldSession::HandleCalendarCopyEvent(WorldPacket& recvData)
if (invites.size() > 1)
CharacterDatabase.CommitTransaction(trans);
- // should we change owner when somebody makes a copy of event owned by another person?
+ // Should we change owner when somebody makes a copy of event owned by another person?
}
else
sCalendarMgr->SendCalendarCommandResult(guid, CALENDAR_ERROR_EVENT_INVALID);
}
-void WorldSession::HandleCalendarEventInvite(WorldPacket& recvData)
+void WorldSession::HandleCalendarEventInvite(WorldPackets::Calendar::CalendarEventInvite& calendarEventInvite)
{
- TC_LOG_DEBUG("network", "CMSG_CALENDAR_EVENT_INVITE");
-
ObjectGuid playerGuid = _player->GetGUID();
- uint64 eventId;
- uint64 inviteId;
- std::string name;
- bool isPreInvite;
- bool isGuildEvent;
-
ObjectGuid inviteeGuid;
uint32 inviteeTeam = 0;
ObjectGuid::LowType inviteeGuildId = UI64LIT(0);
- recvData >> eventId >> inviteId >> name >> isPreInvite >> isGuildEvent;
-
- if (Player* player = ObjectAccessor::FindConnectedPlayerByName(name))
+ if (Player* player = ObjectAccessor::FindConnectedPlayerByName(calendarEventInvite.Name))
{
// Invitee is online
inviteeGuid = player->GetGUID();
@@ -436,7 +297,7 @@ void WorldSession::HandleCalendarEventInvite(WorldPacket& recvData)
{
// Invitee offline, get data from database
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_GUID_RACE_ACC_BY_NAME);
- stmt->setString(0, name);
+ stmt->setString(0, calendarEventInvite.Name);
if (PreparedQueryResult result = CharacterDatabase.Query(stmt))
{
Field* fields = result->Fetch();
@@ -463,14 +324,14 @@ void WorldSession::HandleCalendarEventInvite(WorldPacket& recvData)
Field* fields = result->Fetch();
if (fields[0].GetUInt8() & SOCIAL_FLAG_IGNORED)
{
- sCalendarMgr->SendCalendarCommandResult(playerGuid, CALENDAR_ERROR_IGNORING_YOU_S, name.c_str());
+ sCalendarMgr->SendCalendarCommandResult(playerGuid, CALENDAR_ERROR_IGNORING_YOU_S, calendarEventInvite.Name.c_str());
return;
}
}
- if (!isPreInvite)
+ if (!calendarEventInvite.Creating)
{
- if (CalendarEvent* calendarEvent = sCalendarMgr->GetEvent(eventId))
+ if (CalendarEvent* calendarEvent = sCalendarMgr->GetEvent(calendarEventInvite.EventID))
{
if (calendarEvent->IsGuildEvent() && calendarEvent->GetGuildId() == inviteeGuildId)
{
@@ -479,8 +340,7 @@ void WorldSession::HandleCalendarEventInvite(WorldPacket& recvData)
return;
}
- // 946684800 is 01/01/2000 00:00:00 - default response time
- CalendarInvite* invite = new CalendarInvite(sCalendarMgr->GetFreeInviteId(), eventId, inviteeGuid, playerGuid, 946684800, CALENDAR_STATUS_INVITED, CALENDAR_RANK_PLAYER, "");
+ CalendarInvite* invite = new CalendarInvite(sCalendarMgr->GetFreeInviteId(), calendarEventInvite.EventID, inviteeGuid, playerGuid, CALENDAR_DEFAULT_RESPONSE_TIME, CALENDAR_STATUS_INVITED, CALENDAR_RANK_PLAYER, "");
sCalendarMgr->AddInvite(calendarEvent, invite);
}
else
@@ -488,28 +348,24 @@ void WorldSession::HandleCalendarEventInvite(WorldPacket& recvData)
}
else
{
- if (isGuildEvent && inviteeGuildId == _player->GetGuildId())
+ if (calendarEventInvite.IsSignUp && inviteeGuildId == _player->GetGuildId())
{
sCalendarMgr->SendCalendarCommandResult(playerGuid, CALENDAR_ERROR_NO_GUILD_INVITES);
return;
}
- // 946684800 is 01/01/2000 00:00:00 - default response time
- CalendarInvite invite(inviteId, 0, inviteeGuid, playerGuid, 946684800, CALENDAR_STATUS_INVITED, CALENDAR_RANK_PLAYER, "");
+ CalendarInvite invite(sCalendarMgr->GetFreeInviteId(), NULL, inviteeGuid, playerGuid, CALENDAR_DEFAULT_RESPONSE_TIME, CALENDAR_STATUS_INVITED, CALENDAR_RANK_PLAYER, "");
sCalendarMgr->SendCalendarEventInvite(invite);
}
}
-void WorldSession::HandleCalendarEventSignup(WorldPacket& recvData)
+void WorldSession::HandleCalendarEventSignup(WorldPackets::Calendar::CalendarEventSignUp& calendarEventSignUp)
{
ObjectGuid guid = _player->GetGUID();
- uint64 eventId;
- bool tentative;
- recvData >> eventId >> tentative;
- TC_LOG_DEBUG("network", "CMSG_CALENDAR_EVENT_SIGNUP [%s] EventId [" UI64FMTD "] Tentative %u", guid.ToString().c_str(), eventId, tentative);
+ TC_LOG_DEBUG("network", "CMSG_CALENDAR_EVENT_SIGNUP [%s] EventId [" UI64FMTD "] Tentative %u", guid.ToString().c_str(), calendarEventSignUp.EventID, calendarEventSignUp.Tentative);
- if (CalendarEvent* calendarEvent = sCalendarMgr->GetEvent(eventId))
+ if (CalendarEvent* calendarEvent = sCalendarMgr->GetEvent(calendarEventSignUp.EventID))
{
if (calendarEvent->IsGuildEvent() && calendarEvent->GetGuildId() != _player->GetGuildId())
{
@@ -517,8 +373,8 @@ void WorldSession::HandleCalendarEventSignup(WorldPacket& recvData)
return;
}
- CalendarInviteStatus status = tentative ? CALENDAR_STATUS_TENTATIVE : CALENDAR_STATUS_SIGNED_UP;
- CalendarInvite* invite = new CalendarInvite(sCalendarMgr->GetFreeInviteId(), eventId, guid, guid, time(NULL), status, CALENDAR_RANK_PLAYER, "");
+ CalendarInviteStatus status = calendarEventSignUp.Tentative ? CALENDAR_STATUS_TENTATIVE : CALENDAR_STATUS_SIGNED_UP;
+ CalendarInvite* invite = new CalendarInvite(sCalendarMgr->GetFreeInviteId(), calendarEventSignUp.EventID, guid, guid, time(NULL), status, CALENDAR_RANK_PLAYER, "");
sCalendarMgr->AddInvite(calendarEvent, invite);
sCalendarMgr->SendCalendarClearPendingAction(guid);
}
@@ -526,31 +382,23 @@ void WorldSession::HandleCalendarEventSignup(WorldPacket& recvData)
sCalendarMgr->SendCalendarCommandResult(guid, CALENDAR_ERROR_EVENT_INVALID);
}
-void WorldSession::HandleCalendarEventRsvp(WorldPacket& recvData)
+void WorldSession::HandleCalendarEventRsvp(WorldPackets::Calendar::CalendarEventRSVP& calendarEventRSVP)
{
ObjectGuid guid = _player->GetGUID();
- uint64 eventId;
- uint64 inviteId;
- uint32 status;
-
- recvData >> eventId >> inviteId >> status;
- TC_LOG_DEBUG("network", "CMSG_CALENDAR_EVENT_RSVP [%s] EventId ["
- UI64FMTD "], InviteId [" UI64FMTD "], status %u", guid.ToString().c_str(), eventId,
- inviteId, status);
- if (CalendarEvent* calendarEvent = sCalendarMgr->GetEvent(eventId))
+ if (CalendarEvent* calendarEvent = sCalendarMgr->GetEvent(calendarEventRSVP.EventID))
{
- // i think we still should be able to remove self from locked events
- if (status != CALENDAR_STATUS_REMOVED && calendarEvent->GetFlags() & CALENDAR_FLAG_INVITES_LOCKED)
+ // I think we still should be able to remove self from locked events
+ if (calendarEventRSVP.Status != CALENDAR_STATUS_REMOVED && calendarEvent->IsLocked())
{
sCalendarMgr->SendCalendarCommandResult(guid, CALENDAR_ERROR_EVENT_LOCKED);
return;
}
- if (CalendarInvite* invite = sCalendarMgr->GetInvite(inviteId))
+ if (CalendarInvite* invite = sCalendarMgr->GetInvite(calendarEventRSVP.InviteID))
{
- invite->SetStatus(CalendarInviteStatus(status));
- invite->SetStatusTime(time(NULL));
+ invite->SetStatus(CalendarInviteStatus(calendarEventRSVP.Status));
+ invite->SetResponseTime(time(NULL));
sCalendarMgr->UpdateInvite(invite);
sCalendarMgr->SendCalendarEventStatus(*calendarEvent, *invite);
@@ -563,61 +411,45 @@ void WorldSession::HandleCalendarEventRsvp(WorldPacket& recvData)
sCalendarMgr->SendCalendarCommandResult(guid, CALENDAR_ERROR_EVENT_INVALID);
}
-void WorldSession::HandleCalendarEventRemoveInvite(WorldPacket& recvData)
+void WorldSession::HandleCalendarEventRemoveInvite(WorldPackets::Calendar::CalendarRemoveInvite& calendarRemoveInvite)
{
ObjectGuid guid = _player->GetGUID();
- ObjectGuid invitee;
- uint64 eventId;
- uint64 ownerInviteId; // isn't it sender's inviteId?
- uint64 inviteId;
-
- recvData >> invitee.ReadAsPacked();
- recvData >> inviteId >> ownerInviteId >> eventId;
TC_LOG_DEBUG("network", "CMSG_CALENDAR_REMOVE_INVITE [%s] EventId [" UI64FMTD
"], ownerInviteId [" UI64FMTD "], Invitee ([%s] id: [" UI64FMTD "])",
- guid.ToString().c_str(), eventId, ownerInviteId, invitee.ToString().c_str(), inviteId);
+ guid.ToString().c_str(), calendarRemoveInvite.EventID, calendarRemoveInvite.ModeratorID, calendarRemoveInvite.Guid.ToString().c_str(), calendarRemoveInvite.InviteID);
- if (CalendarEvent* calendarEvent = sCalendarMgr->GetEvent(eventId))
+ if (CalendarEvent* calendarEvent = sCalendarMgr->GetEvent(calendarRemoveInvite.EventID))
{
- if (calendarEvent->GetCreatorGUID() == invitee)
+ if (calendarEvent->GetOwnerGUID() == calendarRemoveInvite.Guid)
{
sCalendarMgr->SendCalendarCommandResult(guid, CALENDAR_ERROR_DELETE_CREATOR_FAILED);
return;
}
- sCalendarMgr->RemoveInvite(inviteId, eventId, guid);
+ sCalendarMgr->RemoveInvite(calendarRemoveInvite.InviteID, calendarRemoveInvite.EventID, guid);
}
else
sCalendarMgr->SendCalendarCommandResult(guid, CALENDAR_ERROR_NO_INVITE);
}
-void WorldSession::HandleCalendarEventStatus(WorldPacket& recvData)
+void WorldSession::HandleCalendarEventStatus(WorldPackets::Calendar::CalendarEventStatus& calendarEventStatus)
{
ObjectGuid guid = _player->GetGUID();
- ObjectGuid invitee;
- uint64 eventId;
- uint64 inviteId;
- uint64 ownerInviteId; // isn't it sender's inviteId?
- uint8 status;
- recvData >> invitee.ReadAsPacked();
- recvData >> eventId >> inviteId >> ownerInviteId >> status;
TC_LOG_DEBUG("network", "CMSG_CALENDAR_EVENT_STATUS [%s] EventId ["
UI64FMTD "] ownerInviteId [" UI64FMTD "], Invitee ([%s] id: ["
- UI64FMTD "], status %u", guid.ToString().c_str(), eventId, ownerInviteId, invitee.ToString().c_str(), inviteId, status);
+ UI64FMTD "], status %u", guid.ToString().c_str(), calendarEventStatus.EventID, calendarEventStatus.ModeratorID, calendarEventStatus.Guid.ToString().c_str(), calendarEventStatus.InviteID, calendarEventStatus.Status);
- if (CalendarEvent* calendarEvent = sCalendarMgr->GetEvent(eventId))
+ if (CalendarEvent* calendarEvent = sCalendarMgr->GetEvent(calendarEventStatus.EventID))
{
- if (CalendarInvite* invite = sCalendarMgr->GetInvite(inviteId))
+ if (CalendarInvite* invite = sCalendarMgr->GetInvite(calendarEventStatus.InviteID))
{
- invite->SetStatus((CalendarInviteStatus)status);
- // not sure if we should set response time when moderator changes invite status
- //invite->SetStatusTime(time(NULL));
+ invite->SetStatus((CalendarInviteStatus)calendarEventStatus.Status);
sCalendarMgr->UpdateInvite(invite);
sCalendarMgr->SendCalendarEventStatus(*calendarEvent, *invite);
- sCalendarMgr->SendCalendarClearPendingAction(invitee);
+ sCalendarMgr->SendCalendarClearPendingAction(calendarEventStatus.Guid);
}
else
sCalendarMgr->SendCalendarCommandResult(guid, CALENDAR_ERROR_NO_INVITE); // correct?
@@ -626,26 +458,19 @@ void WorldSession::HandleCalendarEventStatus(WorldPacket& recvData)
sCalendarMgr->SendCalendarCommandResult(guid, CALENDAR_ERROR_EVENT_INVALID);
}
-void WorldSession::HandleCalendarEventModeratorStatus(WorldPacket& recvData)
+void WorldSession::HandleCalendarEventModeratorStatus(WorldPackets::Calendar::CalendarEventModeratorStatus& calendarEventModeratorStatus)
{
ObjectGuid guid = _player->GetGUID();
- ObjectGuid invitee;
- uint64 eventId;
- uint64 inviteId;
- uint64 ownerInviteId; // isn't it sender's inviteId?
- uint8 rank;
- recvData >> invitee.ReadAsPacked();
- recvData >> eventId >> inviteId >> ownerInviteId >> rank;
- TC_LOG_DEBUG("network", "CMSG_CALENDAR_EVENT_MODERATOR_STATUS [%s] EventId ["
- UI64FMTD "] ownerInviteId [" UI64FMTD "], Invitee ([%s] id: ["
- UI64FMTD "], rank %u", guid.ToString().c_str(), eventId, ownerInviteId, invitee.ToString().c_str(), inviteId, rank);
+ TC_LOG_DEBUG("network", "CMSG_CALENDAR_EVENT_MODERATOR_STATUS [%s] EventID ["
+ UI64FMTD "] ModeratorID [" UI64FMTD "], Invitee ([%s] InviteID: ["
+ UI64FMTD "], Status %u", guid.ToString().c_str(), calendarEventModeratorStatus.EventID, calendarEventModeratorStatus.ModeratorID, calendarEventModeratorStatus.Guid.ToString().c_str(), calendarEventModeratorStatus.InviteID, calendarEventModeratorStatus.Status);
- if (CalendarEvent* calendarEvent = sCalendarMgr->GetEvent(eventId))
+ if (CalendarEvent* calendarEvent = sCalendarMgr->GetEvent(calendarEventModeratorStatus.EventID))
{
- if (CalendarInvite* invite = sCalendarMgr->GetInvite(inviteId))
+ if (CalendarInvite* invite = sCalendarMgr->GetInvite(calendarEventModeratorStatus.InviteID))
{
- invite->SetRank(CalendarModerationRank(rank));
+ invite->SetRank(CalendarModerationRank(calendarEventModeratorStatus.Status));
sCalendarMgr->UpdateInvite(invite);
sCalendarMgr->SendCalendarEventModeratorStatusAlert(*calendarEvent, *invite);
}
@@ -670,27 +495,22 @@ void WorldSession::HandleCalendarComplain(WorldPacket& recvData)
// what to do with complains?
}
-void WorldSession::HandleCalendarGetNumPending(WorldPacket& /*recvData*/)
+void WorldSession::HandleCalendarGetNumPending(WorldPackets::Calendar::CalendarGetNumPending& /*calendarGetNumPending*/)
{
ObjectGuid guid = _player->GetGUID();
uint32 pending = sCalendarMgr->GetPlayerNumPending(guid);
TC_LOG_DEBUG("network", "CMSG_CALENDAR_GET_NUM_PENDING: [%s] Pending: %u", guid.ToString().c_str(), pending);
- WorldPacket data(SMSG_CALENDAR_SEND_NUM_PENDING, 4);
- data << uint32(pending);
- SendPacket(&data);
+ SendPacket(WorldPackets::Calendar::CalendarSendNumPending(pending).Write());
}
-void WorldSession::HandleSetSavedInstanceExtend(WorldPacket& recvData)
+void WorldSession::HandleSetSavedInstanceExtend(WorldPackets::Calendar::SetSavedInstanceExtend& setSavedInstanceExtend)
{
- uint32 mapId, difficulty;
- uint8 toggleExtend;
- recvData >> mapId >> difficulty>> toggleExtend;
- TC_LOG_DEBUG("network", "CMSG_SET_SAVED_INSTANCE_EXTEND - MapId: %u, Difficulty: %u, ToggleExtend: %s", mapId, difficulty, toggleExtend ? "On" : "Off");
+ TC_LOG_DEBUG("network", "CMSG_SET_SAVED_INSTANCE_EXTEND - MapId: %u, Difficulty: %u, ToggleExtend: %s", setSavedInstanceExtend.MapID, setSavedInstanceExtend.DifficultyID, setSavedInstanceExtend.Extend ? "On" : "Off");
/*
- InstancePlayerBind* instanceBind = _player->GetBoundInstance(mapId, Difficulty(difficulty));
+ InstancePlayerBind* instanceBind = _player->GetBoundInstance(setSavedInstanceExtend.MapID, Difficulty(setSavedInstanceExtend.DifficultyID));
if (!instanceBind || !instanceBind->save)
return;
@@ -727,16 +547,15 @@ void WorldSession::SendCalendarRaidLockoutUpdated(InstanceSave const* save)
return;
ObjectGuid guid = _player->GetGUID();
- TC_LOG_DEBUG("network", "SMSG_CALENDAR_RAID_LOCKOUT_UPDATED [%s] Map: %u, Difficulty %u",
- guid.ToString().c_str(), save->GetMapId(), save->GetDifficultyID());
+ TC_LOG_DEBUG("network", "SMSG_CALENDAR_RAID_LOCKOUT_UPDATED [%s] Map: %u, Difficulty %u", guid.ToString().c_str(), save->GetMapId(), save->GetDifficultyID());
time_t currTime = time(NULL);
- WorldPacket data(SMSG_CALENDAR_RAID_LOCKOUT_UPDATED, 4 + 4 + 4 + 4 + 8);
- data.AppendPackedTime(currTime);
- data << uint32(save->GetMapId());
- data << uint32(save->GetDifficultyID());
- data << uint32(0); // Amount of seconds that has changed to the reset time
- data << uint32(save->GetResetTime() - currTime);
- SendPacket(&data);
+ WorldPackets::Calendar::CalendarRaidLockoutUpdated packet;
+ packet.DifficultyID = save->GetDifficultyID();
+ packet.MapID = save->GetMapId();
+ packet.NewTimeRemaining = 0; // FIXME
+ packet.OldTimeRemaining = save->GetResetTime() - currTime;
+
+ SendPacket(packet.Write());
}
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp
index 8fc2b540a94..c3bc704314f 100644
--- a/src/server/game/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Handlers/CharacterHandler.cpp
@@ -34,7 +34,6 @@
#include "GuildFinderMgr.h"
#include "GuildMgr.h"
#include "Language.h"
-#include "LFGMgr.h"
#include "Log.h"
#include "MiscPackets.h"
#include "ObjectAccessor.h"
diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp
index b9fd383b19d..49922edafd7 100644
--- a/src/server/game/Handlers/ChatHandler.cpp
+++ b/src/server/game/Handlers/ChatHandler.cpp
@@ -24,7 +24,6 @@
#include "WorldPacket.h"
#include "WorldSession.h"
#include "DatabaseEnv.h"
-#include "CellImpl.h"
#include "Chat.h"
#include "ChannelMgr.h"
#include "GridNotifiersImpl.h"
@@ -34,7 +33,6 @@
#include "Log.h"
#include "Opcodes.h"
#include "Player.h"
-#include "SpellAuras.h"
#include "SpellAuraEffects.h"
#include "Util.h"
#include "ScriptMgr.h"
diff --git a/src/server/game/Handlers/CombatHandler.cpp b/src/server/game/Handlers/CombatHandler.cpp
index 9b9a32b2c2a..ab401ced1ad 100644
--- a/src/server/game/Handlers/CombatHandler.cpp
+++ b/src/server/game/Handlers/CombatHandler.cpp
@@ -22,11 +22,8 @@
#include "WorldSession.h"
#include "ObjectAccessor.h"
#include "CreatureAI.h"
-#include "ObjectDefines.h"
#include "Vehicle.h"
-#include "VehicleDefines.h"
#include "Player.h"
-#include "Opcodes.h"
#include "CombatPackets.h"
void WorldSession::HandleAttackSwingOpcode(WorldPackets::Combat::AttackSwing& packet)
diff --git a/src/server/game/Handlers/DuelHandler.cpp b/src/server/game/Handlers/DuelHandler.cpp
index eedfe578b4b..40d6f469c9e 100644
--- a/src/server/game/Handlers/DuelHandler.cpp
+++ b/src/server/game/Handlers/DuelHandler.cpp
@@ -20,8 +20,6 @@
#include "DuelPackets.h"
#include "WorldSession.h"
#include "Log.h"
-#include "Opcodes.h"
-#include "UpdateData.h"
#include "Player.h"
#include "ObjectAccessor.h"
diff --git a/src/server/game/Handlers/GroupHandler.cpp b/src/server/game/Handlers/GroupHandler.cpp
index 9df20126790..8db7afbfa35 100644
--- a/src/server/game/Handlers/GroupHandler.cpp
+++ b/src/server/game/Handlers/GroupHandler.cpp
@@ -22,17 +22,12 @@
#include "GroupMgr.h"
#include "Log.h"
#include "ObjectMgr.h"
-#include "Opcodes.h"
-#include "Pet.h"
#include "Player.h"
#include "SocialMgr.h"
-#include "SpellAuras.h"
#include "Util.h"
-#include "Vehicle.h"
#include "World.h"
#include "WorldPacket.h"
#include "WorldSession.h"
-#include "SpellAuraEffects.h"
#include "MiscPackets.h"
#include "LootPackets.h"
#include "PartyPackets.h"
diff --git a/src/server/game/Handlers/GuildHandler.cpp b/src/server/game/Handlers/GuildHandler.cpp
index fbd1d5a7183..ae2ec7b2fca 100644
--- a/src/server/game/Handlers/GuildHandler.cpp
+++ b/src/server/game/Handlers/GuildHandler.cpp
@@ -25,8 +25,6 @@
#include "Log.h"
#include "Opcodes.h"
#include "Guild.h"
-#include "GossipDef.h"
-#include "SocialMgr.h"
#include "GuildPackets.h"
void WorldSession::HandleGuildQueryOpcode(WorldPackets::Guild::QueryGuildInfo& query)
diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp
index e6aecff9137..9c1afcc3785 100644
--- a/src/server/game/Handlers/ItemHandler.cpp
+++ b/src/server/game/Handlers/ItemHandler.cpp
@@ -24,9 +24,6 @@
#include "ObjectMgr.h"
#include "Player.h"
#include "Item.h"
-#include "UpdateData.h"
-#include "ObjectAccessor.h"
-#include "SpellInfo.h"
#include "DB2Stores.h"
#include "NPCPackets.h"
#include "ItemPackets.h"
@@ -707,8 +704,8 @@ void WorldSession::HandleAutoStoreBagItemOpcode(WorldPackets::Item::AutoStoreBag
void WorldSession::SendEnchantmentLog(ObjectGuid target, ObjectGuid caster, uint32 itemId, uint32 enchantId)
{
WorldPacket data(SMSG_ENCHANTMENT_LOG, (8+8+4+4));
- data << target.WriteAsPacked();
- data << caster.WriteAsPacked();
+ data << target;
+ data << caster;
data << uint32(itemId);
data << uint32(enchantId);
GetPlayer()->SendMessageToSet(&data, true);
diff --git a/src/server/game/Handlers/LootHandler.cpp b/src/server/game/Handlers/LootHandler.cpp
index d53c20329b3..fe6cb4674bc 100644
--- a/src/server/game/Handlers/LootHandler.cpp
+++ b/src/server/game/Handlers/LootHandler.cpp
@@ -26,9 +26,7 @@
#include "LootMgr.h"
#include "ObjectAccessor.h"
#include "Object.h"
-#include "Opcodes.h"
#include "Player.h"
-#include "World.h"
#include "WorldPacket.h"
#include "LootPackets.h"
#include "WorldSession.h"
diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp
index 0aa941de4e2..75c582df890 100644
--- a/src/server/game/Handlers/MiscHandler.cpp
+++ b/src/server/game/Handlers/MiscHandler.cpp
@@ -28,36 +28,25 @@
#include "ObjectMgr.h"
#include "GuildMgr.h"
#include "WorldSession.h"
-#include "BigNumber.h"
-#include "SHA1.h"
-#include "UpdateData.h"
-#include "LootMgr.h"
#include "Chat.h"
#include "zlib.h"
#include "ObjectAccessor.h"
#include "Object.h"
#include "Battleground.h"
#include "OutdoorPvP.h"
-#include "Pet.h"
-#include "CellImpl.h"
#include "AccountMgr.h"
-#include "Vehicle.h"
-#include "CreatureAI.h"
#include "DBCEnums.h"
#include "ScriptMgr.h"
#include "MapManager.h"
-#include "InstanceScript.h"
#include "Group.h"
-#include "AccountMgr.h"
#include "Spell.h"
#include "SpellPackets.h"
-#include "BattlegroundMgr.h"
-#include "DB2Stores.h"
#include "CharacterPackets.h"
#include "ClientConfigPackets.h"
#include "MiscPackets.h"
#include "AchievementPackets.h"
#include "WhoPackets.h"
+#include "InstancePackets.h"
void WorldSession::HandleRepopRequest(WorldPackets::Misc::RepopRequest& /*packet*/)
{
@@ -1122,11 +1111,8 @@ void WorldSession::SendSetPhaseShift(std::set<uint32> const& phaseIds, std::set<
SendPacket(phaseShift.Write());
}
-void WorldSession::HandleInstanceLockResponse(WorldPacket& recvPacket)
+void WorldSession::HandleInstanceLockResponse(WorldPackets::Instance::InstanceLockResponse& packet)
{
- uint8 accept;
- recvPacket >> accept;
-
if (!_player->HasPendingBind())
{
TC_LOG_INFO("network", "InstanceLockResponse: Player %s (%s) tried to bind himself/teleport to graveyard without a pending bind!",
@@ -1134,7 +1120,7 @@ void WorldSession::HandleInstanceLockResponse(WorldPacket& recvPacket)
return;
}
- if (accept)
+ if (packet.AcceptLock)
_player->BindToInstance();
else
_player->RepopAtGraveyard();
diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp
index 597ddc296cd..4256a41f80f 100644
--- a/src/server/game/Handlers/MovementHandler.cpp
+++ b/src/server/game/Handlers/MovementHandler.cpp
@@ -24,7 +24,6 @@
#include "Corpse.h"
#include "Player.h"
#include "Garrison.h"
-#include "SpellAuras.h"
#include "MapManager.h"
#include "Transport.h"
#include "Battleground.h"
diff --git a/src/server/game/Handlers/PetitionsHandler.cpp b/src/server/game/Handlers/PetitionsHandler.cpp
index 2e5c4c14424..5563905a325 100644
--- a/src/server/game/Handlers/PetitionsHandler.cpp
+++ b/src/server/game/Handlers/PetitionsHandler.cpp
@@ -17,7 +17,6 @@
*/
#include "Common.h"
-#include "Language.h"
#include "WorldPacket.h"
#include "WorldSession.h"
#include "World.h"
@@ -26,8 +25,6 @@
#include "Log.h"
#include "Opcodes.h"
#include "Guild.h"
-#include "GossipDef.h"
-#include "SocialMgr.h"
#include "PetitionPackets.h"
#define CHARTER_DISPLAY_ID 16161
diff --git a/src/server/game/Handlers/QueryHandler.cpp b/src/server/game/Handlers/QueryHandler.cpp
index a991e0fafea..c1818638a56 100644
--- a/src/server/game/Handlers/QueryHandler.cpp
+++ b/src/server/game/Handlers/QueryHandler.cpp
@@ -17,20 +17,16 @@
*/
#include "Common.h"
-#include "Language.h"
#include "DatabaseEnv.h"
#include "WorldPacket.h"
#include "WorldSession.h"
-#include "Opcodes.h"
#include "Log.h"
#include "World.h"
#include "ObjectMgr.h"
#include "Player.h"
#include "UpdateMask.h"
#include "NPCHandler.h"
-#include "Pet.h"
#include "MapManager.h"
-#include "CharacterPackets.h"
#include "QueryPackets.h"
void WorldSession::SendNameQueryOpcode(ObjectGuid guid)
diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp
index c2e4b4e2604..9665a41034e 100644
--- a/src/server/game/Handlers/QuestHandler.cpp
+++ b/src/server/game/Handlers/QuestHandler.cpp
@@ -20,7 +20,6 @@
#include "Log.h"
#include "WorldPacket.h"
#include "WorldSession.h"
-#include "Opcodes.h"
#include "World.h"
#include "ObjectMgr.h"
#include "Player.h"
diff --git a/src/server/game/Handlers/ReferAFriendHandler.cpp b/src/server/game/Handlers/ReferAFriendHandler.cpp
index b4c9513a238..4fad9f01cc6 100644
--- a/src/server/game/Handlers/ReferAFriendHandler.cpp
+++ b/src/server/game/Handlers/ReferAFriendHandler.cpp
@@ -18,7 +18,6 @@
#include "WorldSession.h"
#include "Player.h"
#include "ObjectMgr.h"
-#include "Opcodes.h"
#include "Log.h"
#include "ReferAFriendPackets.h"
diff --git a/src/server/game/Handlers/SkillHandler.cpp b/src/server/game/Handlers/SkillHandler.cpp
index 870fdea69ac..206deeca305 100644
--- a/src/server/game/Handlers/SkillHandler.cpp
+++ b/src/server/game/Handlers/SkillHandler.cpp
@@ -17,13 +17,10 @@
*/
#include "Common.h"
-#include "DatabaseEnv.h"
#include "Log.h"
#include "ObjectAccessor.h"
-#include "Opcodes.h"
#include "Player.h"
#include "Pet.h"
-#include "UpdateMask.h"
#include "WorldPacket.h"
#include "WorldSession.h"
#include "TalentPackets.h"
diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp
index 8b2c0c587cb..ce6abe2fdd5 100644
--- a/src/server/game/Handlers/SpellHandler.cpp
+++ b/src/server/game/Handlers/SpellHandler.cpp
@@ -16,27 +16,23 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#include "WorldSession.h"
#include "Common.h"
+#include "Config.h"
#include "DBCStores.h"
-#include "WorldPacket.h"
-#include "WorldSession.h"
-#include "ObjectMgr.h"
+#include "GameObjectAI.h"
+#include "GameObjectPackets.h"
#include "GuildMgr.h"
-#include "SpellMgr.h"
#include "Log.h"
-#include "Opcodes.h"
-#include "Spell.h"
-#include "Totem.h"
-#include "TemporarySummon.h"
-#include "SpellAuras.h"
-#include "CreatureAI.h"
+#include "Player.h"
+#include "ObjectMgr.h"
#include "ScriptMgr.h"
-#include "GameObjectAI.h"
+#include "Spell.h"
#include "SpellAuraEffects.h"
-#include "Player.h"
-#include "Config.h"
+#include "SpellMgr.h"
#include "SpellPackets.h"
-#include "GameObjectPackets.h"
+#include "Totem.h"
+#include "TotemPackets.h"
void WorldSession::HandleUseItemOpcode(WorldPackets::Spells::UseItem& packet)
{
@@ -446,18 +442,15 @@ void WorldSession::HandleCancelChanneling(WorldPacket& recvData)
mover->InterruptSpell(CURRENT_CHANNELED_SPELL);
}
-void WorldSession::HandleTotemDestroyed(WorldPacket& recvPacket)
+void WorldSession::HandleTotemDestroyed(WorldPackets::Totem::TotemDestroyed& totemDestroyed)
{
// ignore for remote control state
if (_player->m_mover != _player)
return;
- uint8 slotId;
- ObjectGuid guid;
- recvPacket >> slotId;
- recvPacket >> guid;
+ uint8 slotId = totemDestroyed.Slot;
+ slotId += SUMMON_SLOT_TOTEM;
- ++slotId;
if (slotId >= MAX_TOTEM_SLOT)
return;
@@ -465,7 +458,7 @@ void WorldSession::HandleTotemDestroyed(WorldPacket& recvPacket)
return;
Creature* totem = GetPlayer()->GetMap()->GetCreature(_player->m_SummonSlot[slotId]);
- if (totem && totem->IsTotem() && totem->GetGUID() == guid)
+ if (totem && totem->IsTotem() && totem->GetGUID() == totemDestroyed.TotemGUID)
totem->ToTotem()->UnSummon();
}
diff --git a/src/server/game/Handlers/TaxiHandler.cpp b/src/server/game/Handlers/TaxiHandler.cpp
index 0fde16f1be9..20a8ba70f76 100644
--- a/src/server/game/Handlers/TaxiHandler.cpp
+++ b/src/server/game/Handlers/TaxiHandler.cpp
@@ -24,7 +24,6 @@
#include "Log.h"
#include "ObjectMgr.h"
#include "Player.h"
-#include "UpdateMask.h"
#include "Path.h"
#include "WaypointMovementGenerator.h"
diff --git a/src/server/game/Handlers/TicketHandler.cpp b/src/server/game/Handlers/TicketHandler.cpp
index f9c1f1c6989..59a7ceb0efc 100644
--- a/src/server/game/Handlers/TicketHandler.cpp
+++ b/src/server/game/Handlers/TicketHandler.cpp
@@ -16,16 +16,13 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "zlib.h"
#include "Common.h"
-#include "Language.h"
#include "ObjectMgr.h"
#include "Opcodes.h"
#include "Player.h"
#include "SupportMgr.h"
#include "TicketPackets.h"
#include "Util.h"
-#include "World.h"
#include "WorldPacket.h"
#include "WorldSession.h"
diff --git a/src/server/game/Handlers/TokenHandler.cpp b/src/server/game/Handlers/TokenHandler.cpp
index ed724a0b3e8..1c9d3a48dfc 100644
--- a/src/server/game/Handlers/TokenHandler.cpp
+++ b/src/server/game/Handlers/TokenHandler.cpp
@@ -15,7 +15,6 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "Common.h"
#include "TokenPackets.h"
#include "WorldSession.h"
diff --git a/src/server/game/Handlers/TradeHandler.cpp b/src/server/game/Handlers/TradeHandler.cpp
index ddfc0cef55c..32ed156b226 100644
--- a/src/server/game/Handlers/TradeHandler.cpp
+++ b/src/server/game/Handlers/TradeHandler.cpp
@@ -22,7 +22,6 @@
#include "World.h"
#include "ObjectAccessor.h"
#include "Log.h"
-#include "Opcodes.h"
#include "Player.h"
#include "Item.h"
#include "Spell.h"
diff --git a/src/server/game/Handlers/VehicleHandler.cpp b/src/server/game/Handlers/VehicleHandler.cpp
index 6e78ee62c18..03ae55b001d 100644
--- a/src/server/game/Handlers/VehicleHandler.cpp
+++ b/src/server/game/Handlers/VehicleHandler.cpp
@@ -17,7 +17,6 @@
#include "WorldPacket.h"
#include "WorldSession.h"
-#include "Opcodes.h"
#include "Vehicle.h"
#include "Player.h"
#include "Log.h"
diff --git a/src/server/game/Handlers/VoiceChatHandler.cpp b/src/server/game/Handlers/VoiceChatHandler.cpp
index b84f91373da..36e7cd136f7 100644
--- a/src/server/game/Handlers/VoiceChatHandler.cpp
+++ b/src/server/game/Handlers/VoiceChatHandler.cpp
@@ -19,8 +19,6 @@
#include "Common.h"
#include "WorldPacket.h"
#include "WorldSession.h"
-#include "Opcodes.h"
-#include "Log.h"
void WorldSession::HandleVoiceSessionEnableOpcode(WorldPacket& recvData)
{
diff --git a/src/server/game/Instances/InstanceSaveMgr.cpp b/src/server/game/Instances/InstanceSaveMgr.cpp
index 91dc817e717..957a9eb32fa 100644
--- a/src/server/game/Instances/InstanceSaveMgr.cpp
+++ b/src/server/game/Instances/InstanceSaveMgr.cpp
@@ -21,15 +21,12 @@
#include "GridNotifiers.h"
#include "Log.h"
#include "GridStates.h"
-#include "CellImpl.h"
#include "Map.h"
#include "MapManager.h"
#include "MapInstanced.h"
#include "InstanceSaveMgr.h"
#include "Timer.h"
-#include "GridNotifiersImpl.h"
#include "Config.h"
-#include "Transport.h"
#include "ObjectMgr.h"
#include "World.h"
#include "Group.h"
@@ -666,19 +663,19 @@ void InstanceSaveManager::_ResetOrWarnAll(uint32 mapid, Difficulty difficulty, b
/// @todo delete creature/gameobject respawn times even if the maps are not loaded
}
-uint32 InstanceSaveManager::GetNumBoundPlayersTotal()
+uint32 InstanceSaveManager::GetNumBoundPlayersTotal() const
{
uint32 ret = 0;
- for (InstanceSaveHashMap::iterator itr = m_instanceSaveById.begin(); itr != m_instanceSaveById.end(); ++itr)
+ for (InstanceSaveHashMap::const_iterator itr = m_instanceSaveById.begin(); itr != m_instanceSaveById.end(); ++itr)
ret += itr->second->GetPlayerCount();
return ret;
}
-uint32 InstanceSaveManager::GetNumBoundGroupsTotal()
+uint32 InstanceSaveManager::GetNumBoundGroupsTotal() const
{
uint32 ret = 0;
- for (InstanceSaveHashMap::iterator itr = m_instanceSaveById.begin(); itr != m_instanceSaveById.end(); ++itr)
+ for (InstanceSaveHashMap::const_iterator itr = m_instanceSaveById.begin(); itr != m_instanceSaveById.end(); ++itr)
ret += itr->second->GetGroupCount();
return ret;
diff --git a/src/server/game/Instances/InstanceSaveMgr.h b/src/server/game/Instances/InstanceSaveMgr.h
index 5c5722dbaa9..8739e6eff13 100644
--- a/src/server/game/Instances/InstanceSaveMgr.h
+++ b/src/server/game/Instances/InstanceSaveMgr.h
@@ -222,9 +222,9 @@ class InstanceSaveManager
InstanceSave* GetInstanceSave(uint32 InstanceId);
/* statistics */
- uint32 GetNumInstanceSaves() { return uint32(m_instanceSaveById.size()); }
- uint32 GetNumBoundPlayersTotal();
- uint32 GetNumBoundGroupsTotal();
+ uint32 GetNumInstanceSaves() const { return uint32(m_instanceSaveById.size()); }
+ uint32 GetNumBoundPlayersTotal() const;
+ uint32 GetNumBoundGroupsTotal() const;
protected:
static uint16 ResetTimeDelay[];
diff --git a/src/server/game/Mails/Mail.cpp b/src/server/game/Mails/Mail.cpp
index 37e22638c1c..1a0d572970a 100644
--- a/src/server/game/Mails/Mail.cpp
+++ b/src/server/game/Mails/Mail.cpp
@@ -22,8 +22,6 @@
#include "World.h"
#include "ObjectMgr.h"
#include "Player.h"
-#include "Unit.h"
-#include "BattlegroundMgr.h"
#include "Item.h"
#include "AuctionHouseMgr.h"
#include "CalendarMgr.h"
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp
index 6e333f03bfa..1fdd92de91c 100644
--- a/src/server/game/Maps/Map.cpp
+++ b/src/server/game/Maps/Map.cpp
@@ -26,9 +26,9 @@
#include "GridNotifiersImpl.h"
#include "GridStates.h"
#include "Group.h"
+#include "InstancePackets.h"
#include "InstanceScript.h"
#include "MapInstanced.h"
-#include "MapManager.h"
#include "MiscPackets.h"
#include "ObjectAccessor.h"
#include "ObjectMgr.h"
@@ -3221,11 +3221,11 @@ void InstanceMap::PermBindAllPlayers(Player* source)
if (!bind || !bind->perm)
{
player->BindToInstance(save, true);
- WorldPacket data(SMSG_INSTANCE_SAVE_CREATED, 4);
- data << uint32(0);
- player->GetSession()->SendPacket(&data);
-
- player->GetSession()->SendCalendarRaidLockout(save, true);
+ WorldPackets::Instance::InstanceSaveCreated data;
+ data.Gm = player->IsGameMaster();
+ player->GetSession()->SendPacket(data.Write());
+ if (!player->IsGameMaster())
+ player->GetSession()->SendCalendarRaidLockout(save, true);
}
// if the leader is not in the instance the group will not get a perm bind
diff --git a/src/server/game/Maps/Map.h b/src/server/game/Maps/Map.h
index fb1ac3cc62d..9331815bb39 100644
--- a/src/server/game/Maps/Map.h
+++ b/src/server/game/Maps/Map.h
@@ -732,7 +732,7 @@ class InstanceMap : public Map
void Update(const uint32) override;
void CreateInstanceData(bool load);
bool Reset(uint8 method);
- uint32 GetScriptId() { return i_script_id; }
+ uint32 GetScriptId() const { return i_script_id; }
InstanceScript* GetInstanceScript() { return i_data; }
void PermBindAllPlayers(Player* source);
void UnloadAll() override;
diff --git a/src/server/game/Maps/MapManager.cpp b/src/server/game/Maps/MapManager.cpp
index e18a98e8429..a708556fe64 100644
--- a/src/server/game/Maps/MapManager.cpp
+++ b/src/server/game/Maps/MapManager.cpp
@@ -27,10 +27,8 @@
#include "InstanceScript.h"
#include "Config.h"
#include "World.h"
-#include "CellImpl.h"
#include "Corpse.h"
#include "ObjectMgr.h"
-#include "Language.h"
#include "WorldPacket.h"
#include "Group.h"
#include "Player.h"
diff --git a/src/server/game/Maps/MapUpdater.cpp b/src/server/game/Maps/MapUpdater.cpp
index 8ac6226b570..ac97c16a305 100644
--- a/src/server/game/Maps/MapUpdater.cpp
+++ b/src/server/game/Maps/MapUpdater.cpp
@@ -16,12 +16,11 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include <mutex>
-#include <condition_variable>
-
#include "MapUpdater.h"
#include "Map.h"
+#include <mutex>
+
class MapUpdateRequest
{
diff --git a/src/server/game/Maps/TransportMgr.cpp b/src/server/game/Maps/TransportMgr.cpp
index 8f9d65e749b..8c7442a8ae5 100644
--- a/src/server/game/Maps/TransportMgr.cpp
+++ b/src/server/game/Maps/TransportMgr.cpp
@@ -18,7 +18,6 @@
#include "TransportMgr.h"
#include "Transport.h"
#include "InstanceScript.h"
-#include "MoveSpline.h"
#include "MapManager.h"
TransportTemplate::~TransportTemplate()
diff --git a/src/server/game/Movement/MotionMaster.cpp b/src/server/game/Movement/MotionMaster.cpp
index 5177bf5c9de..0a4deebbbfc 100644
--- a/src/server/game/Movement/MotionMaster.cpp
+++ b/src/server/game/Movement/MotionMaster.cpp
@@ -30,7 +30,6 @@
#include "RandomMovementGenerator.h"
#include "MoveSpline.h"
#include "MoveSplineInit.h"
-#include <cassert>
inline bool isStatic(MovementGenerator *mv)
{
diff --git a/src/server/game/Movement/MovementGenerator.h b/src/server/game/Movement/MovementGenerator.h
index 879b8aea537..45fd252ddb9 100755
--- a/src/server/game/Movement/MovementGenerator.h
+++ b/src/server/game/Movement/MovementGenerator.h
@@ -39,7 +39,7 @@ class MovementGenerator
virtual bool Update(Unit*, uint32 time_diff) = 0;
- virtual MovementGeneratorType GetMovementGeneratorType() = 0;
+ virtual MovementGeneratorType GetMovementGeneratorType() const = 0;
virtual void unitSpeedChanged() { }
diff --git a/src/server/game/Movement/MovementGenerators/ConfusedMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/ConfusedMovementGenerator.cpp
index cbfc181fe9f..f0c0311280f 100755
--- a/src/server/game/Movement/MovementGenerators/ConfusedMovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerators/ConfusedMovementGenerator.cpp
@@ -17,10 +17,8 @@
*/
#include "Creature.h"
-#include "MapManager.h"
#include "ConfusedMovementGenerator.h"
#include "PathGenerator.h"
-#include "VMapFactory.h"
#include "MoveSplineInit.h"
#include "MoveSpline.h"
#include "Player.h"
diff --git a/src/server/game/Movement/MovementGenerators/ConfusedMovementGenerator.h b/src/server/game/Movement/MovementGenerators/ConfusedMovementGenerator.h
index 4cc4baa081f..5b6d6c96482 100755
--- a/src/server/game/Movement/MovementGenerators/ConfusedMovementGenerator.h
+++ b/src/server/game/Movement/MovementGenerators/ConfusedMovementGenerator.h
@@ -33,7 +33,7 @@ class ConfusedMovementGenerator : public MovementGeneratorMedium< T, ConfusedMov
void DoReset(T*);
bool DoUpdate(T*, uint32);
- MovementGeneratorType GetMovementGeneratorType() { return CONFUSED_MOTION_TYPE; }
+ MovementGeneratorType GetMovementGeneratorType() const override { return CONFUSED_MOTION_TYPE; }
private:
TimeTracker i_nextMoveTime;
float i_x, i_y, i_z;
diff --git a/src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.cpp
index cea25fefbda..fa17846a1ff 100644
--- a/src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.cpp
@@ -18,7 +18,6 @@
#include "Creature.h"
#include "CreatureAI.h"
-#include "MapManager.h"
#include "FleeingMovementGenerator.h"
#include "PathGenerator.h"
#include "ObjectAccessor.h"
diff --git a/src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.h b/src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.h
index d7cb956e541..dc42dc74991 100755
--- a/src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.h
+++ b/src/server/game/Movement/MovementGenerators/FleeingMovementGenerator.h
@@ -32,7 +32,7 @@ class FleeingMovementGenerator : public MovementGeneratorMedium< T, FleeingMovem
void DoReset(T*);
bool DoUpdate(T*, uint32);
- MovementGeneratorType GetMovementGeneratorType() { return FLEEING_MOTION_TYPE; }
+ MovementGeneratorType GetMovementGeneratorType() const override { return FLEEING_MOTION_TYPE; }
private:
void _setTargetLocation(T*);
@@ -49,7 +49,7 @@ class TimedFleeingMovementGenerator : public FleeingMovementGenerator<Creature>
FleeingMovementGenerator<Creature>(fright),
i_totalFleeTime(time) { }
- MovementGeneratorType GetMovementGeneratorType() override { return TIMED_FLEEING_MOTION_TYPE; }
+ MovementGeneratorType GetMovementGeneratorType() const override { return TIMED_FLEEING_MOTION_TYPE; }
bool Update(Unit*, uint32) override;
void Finalize(Unit*) override;
diff --git a/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp
index ff28f3855a6..4245bffb864 100644
--- a/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp
@@ -19,7 +19,6 @@
#include "HomeMovementGenerator.h"
#include "Creature.h"
#include "CreatureAI.h"
-#include "WorldPacket.h"
#include "MoveSplineInit.h"
#include "MoveSpline.h"
diff --git a/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.h b/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.h
index 099d81ff54e..cbb6f279c6d 100644
--- a/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.h
+++ b/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.h
@@ -38,7 +38,7 @@ class HomeMovementGenerator<Creature> : public MovementGeneratorMedium< Creature
void DoFinalize(Creature*);
void DoReset(Creature*);
bool DoUpdate(Creature*, const uint32);
- MovementGeneratorType GetMovementGeneratorType() override { return HOME_MOTION_TYPE; }
+ MovementGeneratorType GetMovementGeneratorType() const override { return HOME_MOTION_TYPE; }
private:
void _setTargetLocation(Creature*);
diff --git a/src/server/game/Movement/MovementGenerators/IdleMovementGenerator.h b/src/server/game/Movement/MovementGenerators/IdleMovementGenerator.h
index e4ea99e00cb..30a8b9b868e 100755
--- a/src/server/game/Movement/MovementGenerators/IdleMovementGenerator.h
+++ b/src/server/game/Movement/MovementGenerators/IdleMovementGenerator.h
@@ -29,7 +29,7 @@ class IdleMovementGenerator : public MovementGenerator
void Finalize(Unit*) override { }
void Reset(Unit*) override;
bool Update(Unit*, uint32) override { return true; }
- MovementGeneratorType GetMovementGeneratorType() override { return IDLE_MOTION_TYPE; }
+ MovementGeneratorType GetMovementGeneratorType() const override { return IDLE_MOTION_TYPE; }
};
extern IdleMovementGenerator si_idleMovement;
@@ -43,7 +43,7 @@ class RotateMovementGenerator : public MovementGenerator
void Finalize(Unit*) override;
void Reset(Unit* owner) override { Initialize(owner); }
bool Update(Unit*, uint32) override;
- MovementGeneratorType GetMovementGeneratorType() override { return ROTATE_MOTION_TYPE; }
+ MovementGeneratorType GetMovementGeneratorType() const override { return ROTATE_MOTION_TYPE; }
private:
uint32 m_duration, m_maxDuration;
@@ -59,7 +59,7 @@ class DistractMovementGenerator : public MovementGenerator
void Finalize(Unit*) override;
void Reset(Unit* owner) override { Initialize(owner); }
bool Update(Unit*, uint32) override;
- MovementGeneratorType GetMovementGeneratorType() override { return DISTRACT_MOTION_TYPE; }
+ MovementGeneratorType GetMovementGeneratorType() const override { return DISTRACT_MOTION_TYPE; }
private:
uint32 m_timer;
@@ -71,7 +71,7 @@ class AssistanceDistractMovementGenerator : public DistractMovementGenerator
AssistanceDistractMovementGenerator(uint32 timer) :
DistractMovementGenerator(timer) { }
- MovementGeneratorType GetMovementGeneratorType() override { return ASSISTANCE_DISTRACT_MOTION_TYPE; }
+ MovementGeneratorType GetMovementGeneratorType() const override { return ASSISTANCE_DISTRACT_MOTION_TYPE; }
void Finalize(Unit*) override;
};
diff --git a/src/server/game/Movement/MovementGenerators/PointMovementGenerator.h b/src/server/game/Movement/MovementGenerators/PointMovementGenerator.h
index e967bd7f0ba..f143e19b24b 100644
--- a/src/server/game/Movement/MovementGenerators/PointMovementGenerator.h
+++ b/src/server/game/Movement/MovementGenerators/PointMovementGenerator.h
@@ -38,7 +38,7 @@ class PointMovementGenerator : public MovementGeneratorMedium< T, PointMovementG
void unitSpeedChanged() { i_recalculateSpeed = true; }
- MovementGeneratorType GetMovementGeneratorType() { return POINT_MOTION_TYPE; }
+ MovementGeneratorType GetMovementGeneratorType() const override { return POINT_MOTION_TYPE; }
void GetDestination(float& x, float& y, float& z) const { x = i_x; y = i_y; z = i_z; }
private:
@@ -55,7 +55,7 @@ class AssistanceMovementGenerator : public PointMovementGenerator<Creature>
AssistanceMovementGenerator(float _x, float _y, float _z) :
PointMovementGenerator<Creature>(0, _x, _y, _z, true) { }
- MovementGeneratorType GetMovementGeneratorType() override { return ASSISTANCE_MOTION_TYPE; }
+ MovementGeneratorType GetMovementGeneratorType() const override { return ASSISTANCE_MOTION_TYPE; }
void Finalize(Unit*) override;
};
@@ -68,7 +68,7 @@ class EffectMovementGenerator : public MovementGenerator
void Finalize(Unit*) override;
void Reset(Unit*) override { }
bool Update(Unit*, uint32) override;
- MovementGeneratorType GetMovementGeneratorType() override { return EFFECT_MOTION_TYPE; }
+ MovementGeneratorType GetMovementGeneratorType() const override { return EFFECT_MOTION_TYPE; }
private:
uint32 m_Id;
};
diff --git a/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp
index 0341af299be..86f0e6e20eb 100644
--- a/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp
@@ -17,9 +17,7 @@
*/
#include "Creature.h"
-#include "MapManager.h"
#include "RandomMovementGenerator.h"
-#include "ObjectAccessor.h"
#include "Map.h"
#include "Util.h"
#include "CreatureGroups.h"
diff --git a/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.h b/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.h
index 175e512c35d..763e3294613 100644
--- a/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.h
+++ b/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.h
@@ -33,7 +33,7 @@ class RandomMovementGenerator : public MovementGeneratorMedium< T, RandomMovemen
void DoReset(T*);
bool DoUpdate(T*, const uint32);
bool GetResetPos(T*, float& x, float& y, float& z);
- MovementGeneratorType GetMovementGeneratorType() { return RANDOM_MOTION_TYPE; }
+ MovementGeneratorType GetMovementGeneratorType() const override { return RANDOM_MOTION_TYPE; }
private:
TimeTrackerSmall i_nextMoveTime;
diff --git a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h
index 44d64909a3c..77a669e0738 100755
--- a/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h
+++ b/src/server/game/Movement/MovementGenerators/TargetedMovementGenerator.h
@@ -73,7 +73,7 @@ class ChaseMovementGenerator : public TargetedMovementGeneratorMedium<T, ChaseMo
: TargetedMovementGeneratorMedium<T, ChaseMovementGenerator<T> >(target, offset, angle) { }
~ChaseMovementGenerator() { }
- MovementGeneratorType GetMovementGeneratorType() { return CHASE_MOTION_TYPE; }
+ MovementGeneratorType GetMovementGeneratorType() const override { return CHASE_MOTION_TYPE; }
void DoInitialize(T*);
void DoFinalize(T*);
@@ -97,7 +97,7 @@ class FollowMovementGenerator : public TargetedMovementGeneratorMedium<T, Follow
: TargetedMovementGeneratorMedium<T, FollowMovementGenerator<T> >(target, offset, angle) { }
~FollowMovementGenerator() { }
- MovementGeneratorType GetMovementGeneratorType() { return FOLLOW_MOTION_TYPE; }
+ MovementGeneratorType GetMovementGeneratorType() const override { return FOLLOW_MOTION_TYPE; }
void DoInitialize(T*);
void DoFinalize(T*);
diff --git a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp
index 47e8f18810c..46ccd8638da 100755
--- a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.cpp
@@ -19,7 +19,6 @@
#include "WaypointMovementGenerator.h"
//Extended headers
#include "ObjectMgr.h"
-#include "World.h"
#include "Transport.h"
//Flightmaster grid preloading
#include "MapManager.h"
diff --git a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.h b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.h
index f65af3fb73d..eb8533159a9 100755
--- a/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.h
+++ b/src/server/game/Movement/MovementGenerators/WaypointMovementGenerator.h
@@ -72,7 +72,7 @@ class WaypointMovementGenerator<Creature> : public MovementGeneratorMedium< Crea
void MovementInform(Creature*);
- MovementGeneratorType GetMovementGeneratorType() override { return WAYPOINT_MOTION_TYPE; }
+ MovementGeneratorType GetMovementGeneratorType() const override { return WAYPOINT_MOTION_TYPE; }
// now path movement implmementation
void LoadPath(Creature*);
@@ -126,7 +126,7 @@ class FlightPathMovementGenerator : public MovementGeneratorMedium< Player, Flig
void DoReset(Player*);
void DoFinalize(Player*);
bool DoUpdate(Player*, uint32);
- MovementGeneratorType GetMovementGeneratorType() override { return FLIGHT_MOTION_TYPE; }
+ MovementGeneratorType GetMovementGeneratorType() const override { return FLIGHT_MOTION_TYPE; }
TaxiPathNodeList const& GetPath() { return *i_path; }
uint32 GetPathAtMapEnd() const;
diff --git a/src/server/game/Movement/Spline/MoveSpline.cpp b/src/server/game/Movement/Spline/MoveSpline.cpp
index 05e22b6a34a..c0faf1867b7 100644
--- a/src/server/game/Movement/Spline/MoveSpline.cpp
+++ b/src/server/game/Movement/Spline/MoveSpline.cpp
@@ -17,10 +17,11 @@
*/
#include "MoveSpline.h"
-#include <sstream>
#include "Log.h"
#include "Creature.h"
+#include <sstream>
+
namespace Movement{
Location MoveSpline::ComputePosition() const
diff --git a/src/server/game/Movement/Spline/MoveSplineInit.cpp b/src/server/game/Movement/Spline/MoveSplineInit.cpp
index 973f348c2bb..114f683b601 100644
--- a/src/server/game/Movement/Spline/MoveSplineInit.cpp
+++ b/src/server/game/Movement/Spline/MoveSplineInit.cpp
@@ -20,9 +20,6 @@
#include "MoveSpline.h"
#include "Unit.h"
#include "Transport.h"
-#include "Vehicle.h"
-#include "WorldPacket.h"
-#include "Opcodes.h"
#include "MovementPackets.h"
namespace Movement
diff --git a/src/server/game/OutdoorPvP/OutdoorPvP.h b/src/server/game/OutdoorPvP/OutdoorPvP.h
index cb86f1e9056..3763597ae93 100644
--- a/src/server/game/OutdoorPvP/OutdoorPvP.h
+++ b/src/server/game/OutdoorPvP/OutdoorPvP.h
@@ -236,7 +236,7 @@ class OutdoorPvP : public ZoneScript
// awards rewards for player kill
virtual void AwardKillBonus(Player* /*player*/) { }
- uint32 GetTypeId() {return m_TypeId;}
+ uint32 GetTypeId() const {return m_TypeId;}
virtual bool HandleDropFlag(Player* player, uint32 spellId);
diff --git a/src/server/game/Quests/QuestDef.cpp b/src/server/game/Quests/QuestDef.cpp
index c1098b4cf52..5036e5cde1a 100644
--- a/src/server/game/Quests/QuestDef.cpp
+++ b/src/server/game/Quests/QuestDef.cpp
@@ -19,7 +19,6 @@
#include "QuestDef.h"
#include "Player.h"
#include "World.h"
-#include "ObjectMgr.h"
#include "QuestPackets.h"
Quest::Quest(Field* questRecord)
diff --git a/src/server/game/Scripting/MapScripts.cpp b/src/server/game/Scripting/MapScripts.cpp
index 225ab7386c6..2c814a956c1 100644
--- a/src/server/game/Scripting/MapScripts.cpp
+++ b/src/server/game/Scripting/MapScripts.cpp
@@ -18,13 +18,11 @@
#include "CellImpl.h"
#include "GridNotifiers.h"
-#include "GridNotifiersImpl.h"
#include "GossipDef.h"
#include "Map.h"
-#include "MapManager.h"
-#include "MapRefManager.h"
#include "ObjectMgr.h"
#include "Pet.h"
+#include "Item.h"
#include "ScriptedCreature.h"
#include "ScriptMgr.h"
#include "Transport.h"
diff --git a/src/server/game/Server/Packet.cpp b/src/server/game/Server/Packet.cpp
index 10e935e87c7..38be5fc3bf7 100644
--- a/src/server/game/Server/Packet.cpp
+++ b/src/server/game/Server/Packet.cpp
@@ -15,4 +15,4 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "Packet.h"
+//#include "Packet.h"
diff --git a/src/server/game/Server/Packets/CalendarPackets.cpp b/src/server/game/Server/Packets/CalendarPackets.cpp
new file mode 100644
index 00000000000..655d33da73d
--- /dev/null
+++ b/src/server/game/Server/Packets/CalendarPackets.cpp
@@ -0,0 +1,461 @@
+/*
+ * 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/>.
+ */
+
+#include "CalendarPackets.h"
+#include "CalendarMgr.h"
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Calendar::CalendarSendCalendarEventInfo const& eventInfo)
+{
+ data << uint64(eventInfo.EventID);
+ data << uint8(eventInfo.EventType);
+ data.AppendPackedTime(eventInfo.Date);
+ data << uint32(eventInfo.Flags);
+ data << int32(eventInfo.TextureID);
+ data << eventInfo.EventGuildID;
+ data << eventInfo.OwnerGuid;
+
+ data.WriteBits(eventInfo.EventName.size(), 8);
+ data.FlushBits();
+ data.WriteString(eventInfo.EventName);
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Calendar::CalendarSendCalendarRaidResetInfo const& resetInfo)
+{
+ data << int32(resetInfo.MapID);
+ data << uint32(resetInfo.Duration);
+ data << int32(resetInfo.Offset);
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Calendar::CalendarSendCalendarRaidLockoutInfo const& lockoutInfo)
+{
+ data << uint64(lockoutInfo.InstanceID);
+ data << int32(lockoutInfo.MapID);
+ data << uint32(lockoutInfo.DifficultyID);
+ data << uint32(lockoutInfo.ExpireTime);
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Calendar::CalendarSendCalendarInviteInfo const& inviteInfo)
+{
+ data << uint64(inviteInfo.EventID);
+ data << uint64(inviteInfo.InviteID);
+ data << uint8(inviteInfo.Status);
+ data << uint8(inviteInfo.Moderator);
+ data << uint8(inviteInfo.InviteType);
+ data << inviteInfo.InviterGuid;
+
+ return data;
+}
+
+ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Calendar::CalendarEventInviteInfo const& inviteInfo)
+{
+ data << inviteInfo.Guid;
+ data << uint64(inviteInfo.InviteID);
+
+ data << uint8(inviteInfo.Level);
+ data << uint8(inviteInfo.Status);
+ data << uint8(inviteInfo.Moderator);
+ data << uint8(inviteInfo.InviteType);
+
+ data.AppendPackedTime(inviteInfo.ResponseTime);
+
+ data.WriteBits(inviteInfo.Notes.size(), 8);
+ data.FlushBits();
+ data.WriteString(inviteInfo.Notes);
+
+ return data;
+}
+
+void WorldPackets::Calendar::CalendarGetEvent::Read()
+{
+ _worldPacket >> EventID;
+}
+
+void WorldPackets::Calendar::CalendarGuildFilter::Read()
+{
+ _worldPacket >> MinLevel;
+ _worldPacket >> MaxLevel;
+ _worldPacket >> MaxRankOrder;
+}
+
+void WorldPackets::Calendar::CalendarAddEvent::Read()
+{
+ uint8 titleLength = _worldPacket.ReadBits(8);
+ uint16 descriptionLength = _worldPacket.ReadBits(11);
+
+ _worldPacket >> EventInfo.EventType;
+ _worldPacket >> EventInfo.TextureID;
+ EventInfo.Time = _worldPacket.ReadPackedTime();
+ _worldPacket >> EventInfo.Flags;
+ uint32 count = _worldPacket.read<uint32>();
+
+ EventInfo.Title = _worldPacket.ReadString(titleLength);
+ EventInfo.Description = _worldPacket.ReadString(descriptionLength);
+
+ for (uint32 i = 0; i < count && i < CALENDAR_MAX_INVITES; i++)
+ {
+ WorldPackets::Calendar::CalendarAddEventInviteInfo invite;
+ _worldPacket >> invite.Guid;
+ _worldPacket >> invite.Status;
+ _worldPacket >> invite.Moderator;
+
+ EventInfo.Invites.push_back(invite);
+ }
+
+ _worldPacket >> MaxSize;
+}
+
+void WorldPackets::Calendar::CalendarUpdateEvent::Read()
+{
+ _worldPacket >> EventInfo.EventID;
+ _worldPacket >> EventInfo.ModeratorID;
+ _worldPacket >> EventInfo.EventType;
+ _worldPacket >> EventInfo.TextureID;
+ EventInfo.Time = _worldPacket.ReadPackedTime();
+ _worldPacket >> EventInfo.Flags;
+
+ uint8 titleLen = _worldPacket.ReadBits(8);
+ uint16 descLen = _worldPacket.ReadBits(11);
+
+ EventInfo.Title = _worldPacket.ReadString(titleLen);
+ EventInfo.Description = _worldPacket.ReadString(descLen);
+ _worldPacket >> MaxSize;
+}
+
+void WorldPackets::Calendar::CalendarRemoveEvent::Read()
+{
+ _worldPacket >> EventID;
+ _worldPacket >> ModeratorID;
+ _worldPacket >> Flags;
+}
+
+void WorldPackets::Calendar::CalendarCopyEvent::Read()
+{
+ _worldPacket >> EventID;
+ _worldPacket >> ModeratorID;
+ Date = _worldPacket.ReadPackedTime();
+}
+
+void WorldPackets::Calendar::CalendarEventRSVP::Read()
+{
+ _worldPacket >> EventID;
+ _worldPacket >> InviteID;
+ _worldPacket >> Status;
+}
+
+void WorldPackets::Calendar::CalendarEventInvite::Read()
+{
+ _worldPacket >> EventID;
+ _worldPacket >> ModeratorID;
+
+ uint16 nameLen = _worldPacket.ReadBits(9);
+ Creating = _worldPacket.ReadBit();
+ IsSignUp = _worldPacket.ReadBit();
+
+ Name = _worldPacket.ReadString(nameLen);
+}
+
+void WorldPackets::Calendar::CalendarEventSignUp::Read()
+{
+ _worldPacket >> EventID;
+ Tentative = _worldPacket.ReadBit();
+}
+
+void WorldPackets::Calendar::CalendarRemoveInvite::Read()
+{
+ _worldPacket >> Guid;
+ _worldPacket >> InviteID;
+ _worldPacket >> ModeratorID;
+ _worldPacket >> EventID;
+}
+
+void WorldPackets::Calendar::CalendarEventStatus::Read()
+{
+ _worldPacket >> Guid;
+ _worldPacket >> EventID;
+ _worldPacket >> InviteID;
+ _worldPacket >> ModeratorID;
+ _worldPacket >> Status;
+}
+
+void WorldPackets::Calendar::SetSavedInstanceExtend::Read()
+{
+ _worldPacket >> MapID;
+ _worldPacket >> DifficultyID;
+ Extend = _worldPacket.ReadBit();
+}
+
+void WorldPackets::Calendar::CalendarEventModeratorStatus::Read()
+{
+ _worldPacket >> Guid;
+ _worldPacket >> EventID;
+ _worldPacket >> InviteID;
+ _worldPacket >> ModeratorID;
+ _worldPacket >> Status;
+}
+
+WorldPacket const* WorldPackets::Calendar::SCalendarEventInvite::Write()
+{
+ _worldPacket << InviteGuid;
+ _worldPacket << uint64(EventID);
+ _worldPacket << uint64(InviteID);
+ _worldPacket << uint8(Level);
+ _worldPacket << uint8(Status);
+ _worldPacket << uint8(Type);
+ _worldPacket.AppendPackedTime(ResponseTime);
+
+ _worldPacket.WriteBit(ClearPending);
+ _worldPacket.FlushBits();
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Calendar::CalendarSendCalendar::Write()
+{
+ _worldPacket << uint32(ServerNow);
+ _worldPacket.AppendPackedTime(ServerTime);
+ _worldPacket << uint32(RaidOrigin);
+ _worldPacket << uint32(Invites.size());
+ _worldPacket << uint32(Events.size());
+ _worldPacket << uint32(RaidLockouts.size());
+ _worldPacket << uint32(RaidResets.size());
+
+ for (auto const& invite : Invites)
+ _worldPacket << invite;
+
+ for (auto const& event : Events)
+ _worldPacket << event;
+
+ for (auto const& lockout : RaidLockouts)
+ _worldPacket << lockout;
+
+ for (auto const& reset : RaidResets)
+ _worldPacket << reset;
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Calendar::CalendarSendEvent::Write()
+{
+ _worldPacket << uint8(EventType);
+ _worldPacket << OwnerGuid;
+ _worldPacket << uint64(EventID);
+ _worldPacket << uint8(GetEventType);
+ _worldPacket << int32(TextureID);
+ _worldPacket << uint32(Flags);
+ _worldPacket.AppendPackedTime(Date);
+ _worldPacket << uint32(LockDate);
+ _worldPacket << EventGuildID;
+
+ _worldPacket << uint32(Invites.size());
+ for (auto const& invite : Invites)
+ _worldPacket << invite;
+
+ _worldPacket.WriteBits(EventName.size(), 8);
+ _worldPacket.WriteBits(Description.size(), 11);
+ _worldPacket.FlushBits();
+
+ _worldPacket.WriteString(EventName);
+ _worldPacket.WriteString(Description);
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Calendar::CalendarEventInviteAlert::Write()
+{
+ _worldPacket << uint64(EventID);
+ _worldPacket.AppendPackedTime(Date);
+ _worldPacket << uint32(Flags);
+ _worldPacket << uint8(EventType);
+ _worldPacket << int32(TextureID);
+ _worldPacket << EventGuildID;
+ _worldPacket << uint64(InviteID);
+ _worldPacket << uint8(Status);
+ _worldPacket << uint8(ModeratorStatus);
+
+ // Todo: check order
+ _worldPacket << InvitedByGuid;
+ _worldPacket << OwnerGuid;
+
+ _worldPacket.WriteBits(EventName.size(), 8);
+ _worldPacket.FlushBits();
+ _worldPacket.WriteString(EventName);
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Calendar::CalendarEventInviteStatus::Write()
+{
+ _worldPacket << InviteGuid;
+ _worldPacket << uint64(EventID);
+ _worldPacket.AppendPackedTime(Date);
+ _worldPacket << uint32(Flags);
+ _worldPacket << uint8(Status);
+ _worldPacket.AppendPackedTime(ResponseTime);
+
+ _worldPacket.WriteBit(ClearPending);
+ _worldPacket.FlushBits();
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Calendar::CalendarEventInviteRemoved::Write()
+{
+ _worldPacket << InviteGuid;
+ _worldPacket << uint64(EventID);
+ _worldPacket << uint32(Flags);
+
+ _worldPacket.WriteBit(ClearPending);
+ _worldPacket.FlushBits();
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Calendar::CalendarEventInviteModeratorStatus::Write()
+{
+ _worldPacket << InviteGuid;
+ _worldPacket << uint64(EventID);
+ _worldPacket << uint8(Status);
+
+ _worldPacket.WriteBit(ClearPending);
+ _worldPacket.FlushBits();
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Calendar::CalendarEventInviteRemovedAlert::Write()
+{
+ _worldPacket << uint64(EventID);
+ _worldPacket.AppendPackedTime(Date);
+ _worldPacket << uint32(Flags);
+ _worldPacket << uint8(Status);
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Calendar::CalendarEventUpdatedAlert::Write()
+{
+ _worldPacket << uint64(EventID);
+
+ _worldPacket.AppendPackedTime(OriginalDate);
+ _worldPacket.AppendPackedTime(Date);
+ _worldPacket << uint32(LockDate);
+ _worldPacket << uint32(Flags);
+ _worldPacket << uint32(TextureID);
+ _worldPacket << uint8(EventType);
+
+ _worldPacket.WriteBits(EventName.size(), 8);
+ _worldPacket.WriteBits(Description.size(), 11);
+ _worldPacket.WriteBit(ClearPending);
+ _worldPacket.FlushBits();
+
+ _worldPacket.WriteString(EventName);
+ _worldPacket.WriteString(Description);
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Calendar::CalendarEventRemovedAlert::Write()
+{
+ _worldPacket << uint64(EventID);
+ _worldPacket.AppendPackedTime(Date);
+
+ _worldPacket.WriteBit(ClearPending);
+ _worldPacket.FlushBits();
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Calendar::CalendarSendNumPending::Write()
+{
+ _worldPacket << uint32(NumPending);
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Calendar::CalendarCommandResult::Write()
+{
+ _worldPacket << uint8(Command);
+ _worldPacket << uint8(Result);
+
+ _worldPacket.WriteBits(Name.size(), 9);
+ _worldPacket.FlushBits();
+ _worldPacket.WriteString(Name);
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Calendar::CalendarRaidLockoutUpdated::Write()
+{
+ _worldPacket << uint32(ServerTime);
+ _worldPacket << int32(MapID);
+ _worldPacket << uint32(DifficultyID);
+ _worldPacket << int32(NewTimeRemaining);
+ _worldPacket << int32(OldTimeRemaining);
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Calendar::CalendarEventInitialInvites::Write()
+{
+ _worldPacket << uint32(Invites.size());
+ for (auto const& invite : Invites)
+ {
+ _worldPacket << invite.InviteGuid;
+ _worldPacket << uint8(invite.Level);
+ }
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Calendar::CalendarEventInviteStatusAlert::Write()
+{
+ _worldPacket << uint64(EventID);
+ _worldPacket.AppendPackedTime(Date);
+ _worldPacket << uint32(Flags);
+ _worldPacket << uint8(Status);
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Calendar::CalendarEventInviteNotesAlert::Write()
+{
+ _worldPacket << uint64(EventID);
+
+ _worldPacket.WriteBits(Notes.size(), 8);
+ _worldPacket.FlushBits();
+ _worldPacket.WriteString(Notes);
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Calendar::CalendarEventInviteNotes::Write()
+{
+ _worldPacket << InviteGuid;
+ _worldPacket << uint64(EventID);
+
+ _worldPacket.WriteBits(Notes.size(), 8);
+ _worldPacket.WriteBit(ClearPending);
+ _worldPacket.FlushBits();
+ _worldPacket.WriteString(Notes);
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/CalendarPackets.h b/src/server/game/Server/Packets/CalendarPackets.h
new file mode 100644
index 00000000000..023041d427f
--- /dev/null
+++ b/src/server/game/Server/Packets/CalendarPackets.h
@@ -0,0 +1,562 @@
+/*
+ * 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/>.
+ */
+/*
+ * 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 CalendarPackets_h__
+#define CalendarPackets_h__
+
+#include "ObjectGuid.h"
+#include "Packet.h"
+
+namespace WorldPackets
+{
+ namespace Calendar
+ {
+ class CalendarGetCalendar final : public ClientPacket
+ {
+ public:
+ CalendarGetCalendar(WorldPacket&& packet) : ClientPacket(CMSG_CALENDAR_GET, std::move(packet)) { }
+
+ void Read() override { }
+ };
+
+ class CalendarGetEvent final : public ClientPacket
+ {
+ public:
+ CalendarGetEvent(WorldPacket&& packet) : ClientPacket(CMSG_CALENDAR_GET_EVENT, std::move(packet)) { }
+
+ void Read() override;
+
+ uint64 EventID = 0;
+ };
+
+ class CalendarGuildFilter final : public ClientPacket
+ {
+ public:
+ CalendarGuildFilter(WorldPacket&& packet) : ClientPacket(CMSG_CALENDAR_GUILD_FILTER, std::move(packet)) { }
+
+ void Read() override;
+
+ uint8 MinLevel = 1;
+ uint8 MaxLevel = 100;
+ uint8 MaxRankOrder = 0;
+ };
+
+ struct CalendarAddEventInviteInfo
+ {
+ ObjectGuid Guid;
+ uint8 Status = 0;
+ uint8 Moderator = 0;
+ };
+
+ struct CalendarAddEventInfo
+ {
+ std::string Title;
+ std::string Description;
+ uint8 EventType = 0;
+ int32 TextureID = 0;
+ time_t Time = time_t(0);
+ uint32 Flags = 0;
+ std::vector<CalendarAddEventInviteInfo> Invites;
+ };
+
+ class CalendarAddEvent final : public ClientPacket
+ {
+ public:
+ CalendarAddEvent(WorldPacket&& packet) : ClientPacket(CMSG_CALENDAR_ADD_EVENT, std::move(packet)) { }
+
+ void Read() override;
+
+ uint32 MaxSize = 100;
+ CalendarAddEventInfo EventInfo;
+ };
+
+ struct CalendarUpdateEventInfo
+ {
+ uint64 EventID = 0;
+ uint64 ModeratorID = 0;
+ std::string Title;
+ std::string Description;
+ uint8 EventType = 0;
+ uint32 TextureID = 0;
+ time_t Time = time_t(0);
+ uint32 Flags = 0;
+ };
+
+ class CalendarUpdateEvent final : public ClientPacket
+ {
+ public:
+ CalendarUpdateEvent(WorldPacket&& packet) : ClientPacket(CMSG_CALENDAR_UPDATE_EVENT, std::move(packet)) { }
+
+ void Read() override;
+
+ uint32 MaxSize = 0;
+ CalendarUpdateEventInfo EventInfo;
+ };
+
+ class CalendarRemoveEvent final : public ClientPacket
+ {
+ public:
+ CalendarRemoveEvent(WorldPacket&& packet) : ClientPacket(CMSG_CALENDAR_REMOVE_EVENT, std::move(packet)) { }
+
+ void Read() override;
+
+ uint64 ModeratorID = 0;
+ uint64 EventID = 0;
+ uint32 Flags = 0;
+ };
+
+ class CalendarCopyEvent final : public ClientPacket
+ {
+ public:
+ CalendarCopyEvent(WorldPacket&& packet) : ClientPacket(CMSG_CALENDAR_COPY_EVENT, std::move(packet)) { }
+
+ void Read() override;
+
+ uint64 ModeratorID = 0;
+ uint64 EventID = 0;
+ time_t Date = time_t(0);
+ };
+
+ class SCalendarEventInvite final : public ServerPacket
+ {
+ public:
+ SCalendarEventInvite() : ServerPacket(SMSG_CALENDAR_EVENT_INVITE, 43) { }
+
+ WorldPacket const* Write() override;
+
+ uint64 InviteID = 0;
+ time_t ResponseTime = time_t(0);
+ uint8 Level = 100;
+ ObjectGuid InviteGuid;
+ uint64 EventID = 0;
+ uint8 Type = 0;
+ bool ClearPending = false;
+ uint8 Status = 0;
+ };
+
+ struct CalendarSendCalendarInviteInfo
+ {
+ uint64 EventID = 0;
+ uint64 InviteID = 0;
+ ObjectGuid InviterGuid;
+ uint8 Status = 0;
+ uint8 Moderator = 0;
+ uint8 InviteType = 0;
+ };
+
+ struct CalendarSendCalendarRaidLockoutInfo
+ {
+ uint64 InstanceID = 0;
+ int32 MapID = 0;
+ uint32 DifficultyID = 0;
+ time_t ExpireTime = time_t(0);
+ };
+
+ struct CalendarSendCalendarRaidResetInfo
+ {
+ int32 MapID = 0;
+ uint32 Duration = 0;
+ int32 Offset = 0;
+ };
+
+ struct CalendarSendCalendarEventInfo
+ {
+ uint64 EventID = 0;
+ std::string EventName;
+ uint8 EventType = 0;
+ time_t Date = time_t(0);
+ uint32 Flags = 0;
+ int32 TextureID = 0;
+ ObjectGuid EventGuildID;
+ ObjectGuid OwnerGuid;
+ };
+
+ class CalendarSendCalendar final : public ServerPacket
+ {
+ public:
+ CalendarSendCalendar() : ServerPacket(SMSG_CALENDAR_SEND_CALENDAR, 338) { }
+
+ WorldPacket const* Write() override;
+
+ time_t RaidOrigin = time_t(0);
+ time_t ServerTime = time_t(0);
+ time_t ServerNow = time_t(0);
+ std::vector<CalendarSendCalendarInviteInfo> Invites;
+ std::vector<CalendarSendCalendarRaidLockoutInfo> RaidLockouts;
+ std::vector<CalendarSendCalendarRaidResetInfo> RaidResets;
+ std::vector<CalendarSendCalendarEventInfo> Events;
+ };
+
+ struct CalendarEventInviteInfo
+ {
+ ObjectGuid Guid;
+ uint64 InviteID = 0;
+ time_t ResponseTime = time_t(0);
+ uint8 Level = 1;
+ uint8 Status = 0;
+ uint8 Moderator = 0;
+ uint8 InviteType = 0;
+ std::string Notes;
+ };
+
+ class CalendarSendEvent final : public ServerPacket
+ {
+ public:
+ CalendarSendEvent() : ServerPacket(SMSG_CALENDAR_SEND_EVENT, 93) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid OwnerGuid;
+ ObjectGuid EventGuildID;
+ uint64 EventID = 0;
+ time_t Date = time_t(0);
+ time_t LockDate = time_t(0);
+ uint32 Flags = 0;
+ int32 TextureID = 0;
+ uint8 GetEventType = 0;
+ uint8 EventType = 0;
+ std::string Description;
+ std::string EventName;
+ std::vector<CalendarEventInviteInfo> Invites;
+ };
+
+ class CalendarEventInviteAlert final : public ServerPacket
+ {
+ public:
+ CalendarEventInviteAlert() : ServerPacket(SMSG_CALENDAR_EVENT_INVITE_ALERT, 80) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid OwnerGuid;
+ ObjectGuid EventGuildID;
+ ObjectGuid InvitedByGuid;
+ uint64 InviteID = 0;
+ uint64 EventID = 0;
+ uint32 Flags = 0;
+ time_t Date = time_t(0);
+ int32 TextureID = 0;
+ uint8 Status = 0;
+ uint8 EventType = 0;
+ uint8 ModeratorStatus = 0;
+ std::string EventName;
+ };
+
+ class CalendarEventInvite final : public ClientPacket
+ {
+ public:
+ CalendarEventInvite(WorldPacket&& packet) : ClientPacket(CMSG_CALENDAR_EVENT_INVITE, std::move(packet)) { }
+
+ void Read() override;
+
+ uint64 ModeratorID = 0;
+ bool IsSignUp = false;
+ bool Creating = true;
+ uint64 EventID = 0;
+ std::string Name;
+ };
+
+ class CalendarEventRSVP final : public ClientPacket
+ {
+ public:
+ CalendarEventRSVP(WorldPacket&& packet) : ClientPacket(CMSG_CALENDAR_EVENT_RSVP, std::move(packet)) { }
+
+ void Read() override;
+
+ uint64 InviteID = 0;
+ uint64 EventID = 0;
+ uint8 Status = 0;
+ };
+
+ class CalendarEventInviteStatus final : public ServerPacket
+ {
+ public:
+ CalendarEventInviteStatus() : ServerPacket(SMSG_CALENDAR_EVENT_INVITE_STATUS, 41) { }
+
+ WorldPacket const* Write() override;
+
+ uint32 Flags = 0;
+ uint64 EventID = 0;
+ uint8 Status = 0;
+ bool ClearPending = false;
+ time_t ResponseTime = time_t(0);
+ time_t Date = time_t(0);
+ ObjectGuid InviteGuid;
+ };
+
+ class CalendarEventInviteRemoved final : public ServerPacket
+ {
+ public:
+ CalendarEventInviteRemoved() : ServerPacket(SMSG_CALENDAR_EVENT_INVITE_REMOVED, 29) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid InviteGuid;
+ uint64 EventID = 0;
+ uint32 Flags = 0;
+ bool ClearPending = false;
+ };
+
+ class CalendarEventInviteModeratorStatus final : public ServerPacket
+ {
+ public:
+ CalendarEventInviteModeratorStatus() : ServerPacket(SMSG_CALENDAR_EVENT_INVITE_MODERATOR_STATUS, 26) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid InviteGuid;
+ uint64 EventID = 0;
+ uint8 Status = 0;
+ bool ClearPending = false;
+ };
+
+ class CalendarEventInviteRemovedAlert final : public ServerPacket
+ {
+ public:
+ CalendarEventInviteRemovedAlert() : ServerPacket(SMSG_CALENDAR_EVENT_INVITE_REMOVED_ALERT, 17) { }
+
+ WorldPacket const* Write() override;
+
+ uint64 EventID = 0;
+ time_t Date = time_t(0);
+ uint32 Flags = 0;
+ uint8 Status = 0;
+ };
+
+ class CalendarClearPendingAction final : public ServerPacket
+ {
+ public:
+ CalendarClearPendingAction() : ServerPacket(SMSG_CALENDAR_CLEAR_PENDING_ACTION, 0) { }
+
+ WorldPacket const* Write() override { return &_worldPacket; }
+ };
+
+ class CalendarEventUpdatedAlert final : public ServerPacket
+ {
+ public:
+ CalendarEventUpdatedAlert() : ServerPacket(SMSG_CALENDAR_EVENT_UPDATED_ALERT, 32) { }
+
+ WorldPacket const* Write() override;
+
+ uint64 EventID = 0;
+ time_t Date = time_t(0);
+ uint32 Flags = 0;
+ time_t LockDate = time_t(0);
+ time_t OriginalDate = time_t(0);
+ int32 TextureID = 0;
+ uint8 EventType = 0;
+ bool ClearPending = false;
+ std::string Description;
+ std::string EventName;
+ };
+
+ class CalendarEventRemovedAlert final : public ServerPacket
+ {
+ public:
+ CalendarEventRemovedAlert() : ServerPacket(SMSG_CALENDAR_EVENT_REMOVED_ALERT, 13) { }
+
+ WorldPacket const* Write() override;
+
+ uint64 EventID = 0;
+ time_t Date = time_t(0);
+ bool ClearPending = false;
+ };
+
+ class CalendarSendNumPending final : public ServerPacket
+ {
+ public:
+ CalendarSendNumPending() : ServerPacket(SMSG_CALENDAR_SEND_NUM_PENDING, 4) { }
+ CalendarSendNumPending(uint32 numPending) : ServerPacket(SMSG_CALENDAR_SEND_NUM_PENDING, 4), NumPending(numPending) { }
+
+ WorldPacket const* Write() override;
+
+ uint32 NumPending = 0;
+ };
+
+ class CalendarGetNumPending final : public ClientPacket
+ {
+ public:
+ CalendarGetNumPending(WorldPacket&& packet) : ClientPacket(CMSG_CALENDAR_GET_NUM_PENDING, std::move(packet)) { }
+
+ void Read() override { }
+ };
+
+ class CalendarEventSignUp final : public ClientPacket
+ {
+ public:
+ CalendarEventSignUp(WorldPacket&& packet) : ClientPacket(CMSG_CALENDAR_EVENT_SIGN_UP, std::move(packet)) { }
+
+ void Read() override;
+
+ bool Tentative = false;
+ uint64 EventID = 0;
+ };
+
+ class CalendarRemoveInvite final : public ClientPacket
+ {
+ public:
+ CalendarRemoveInvite(WorldPacket&& packet) : ClientPacket(CMSG_CALENDAR_REMOVE_INVITE, std::move(packet)) { }
+
+ void Read() override;
+
+ ObjectGuid Guid;
+ uint64 EventID = 0;
+ uint64 ModeratorID = 0;
+ uint64 InviteID = 0;
+ };
+
+ class CalendarEventStatus final : public ClientPacket
+ {
+ public:
+ CalendarEventStatus(WorldPacket&& packet) : ClientPacket(CMSG_CALENDAR_EVENT_STATUS, std::move(packet)) { }
+
+ void Read() override;
+
+ ObjectGuid Guid;
+ uint64 EventID = 0;
+ uint64 ModeratorID = 0;
+ uint64 InviteID = 0;
+ uint8 Status = 0;
+ };
+
+ class SetSavedInstanceExtend final : public ClientPacket
+ {
+ public:
+ SetSavedInstanceExtend(WorldPacket&& packet) : ClientPacket(CMSG_SET_SAVED_INSTANCE_EXTEND, std::move(packet)) { }
+
+ void Read() override;
+
+ int32 MapID = 0;
+ bool Extend = false;
+ uint32 DifficultyID = 0;
+ };
+
+ class CalendarEventModeratorStatus final : public ClientPacket
+ {
+ public:
+ CalendarEventModeratorStatus(WorldPacket&& packet) : ClientPacket(CMSG_CALENDAR_EVENT_MODERATOR_STATUS, std::move(packet)) { }
+
+ void Read() override;
+
+ ObjectGuid Guid;
+ uint64 EventID = 0;
+ uint64 InviteID = 0;
+ uint64 ModeratorID = 0;
+ uint8 Status = 0;
+ };
+
+ class CalendarCommandResult final : public ServerPacket
+ {
+ public:
+ CalendarCommandResult() : ServerPacket(SMSG_CALENDAR_COMMAND_RESULT, 3) { }
+ CalendarCommandResult(uint8 command, uint8 result, std::string const& name) : ServerPacket(SMSG_CALENDAR_COMMAND_RESULT, 3), Command(command), Result(result), Name(name) { }
+
+ WorldPacket const* Write() override;
+
+ uint8 Command = 0;
+ uint8 Result = 0;
+ std::string Name;
+ };
+
+ class CalendarRaidLockoutUpdated final : public ServerPacket
+ {
+ public:
+ CalendarRaidLockoutUpdated() : ServerPacket(SMSG_CALENDAR_RAID_LOCKOUT_UPDATED, 20) { }
+
+ WorldPacket const* Write() override;
+
+ int32 MapID = 0;
+ int32 OldTimeRemaining = 0;
+ time_t ServerTime = 0;
+ uint32 DifficultyID = 0;
+ int32 NewTimeRemaining = 0;
+ };
+
+ struct CalendarEventInitialInviteInfo
+ {
+ CalendarEventInitialInviteInfo(ObjectGuid inviteGuid, uint8 level) : InviteGuid(inviteGuid), Level(level) { }
+
+ ObjectGuid InviteGuid;
+ uint8 Level = 100;
+ };
+
+ class CalendarEventInitialInvites final : public ServerPacket
+ {
+ public:
+ CalendarEventInitialInvites() : ServerPacket(SMSG_CALENDAR_EVENT_INITIAL_INVITES, 17) { }
+
+ WorldPacket const* Write() override;
+
+ std::vector<CalendarEventInitialInviteInfo> Invites;
+ };
+
+ class CalendarEventInviteStatusAlert final : public ServerPacket
+ {
+ public:
+ CalendarEventInviteStatusAlert() : ServerPacket(SMSG_CALENDAR_EVENT_INVITE_STATUS_ALERT, 5) { }
+
+ WorldPacket const* Write() override;
+
+ uint64 EventID = 0;
+ uint32 Flags = 0;
+ time_t Date = time_t(0);
+ uint8 Status = 0;
+ };
+
+ class CalendarEventInviteNotesAlert final : public ServerPacket
+ {
+ public:
+ CalendarEventInviteNotesAlert() : ServerPacket(SMSG_CALENDAR_EVENT_INVITE_NOTES_ALERT, 9) { }
+ CalendarEventInviteNotesAlert(uint64 eventID, std::string const& notes) : ServerPacket(SMSG_CALENDAR_EVENT_INVITE_NOTES_ALERT, 8 + notes.size()), EventID(eventID), Notes(notes) { }
+
+ WorldPacket const* Write() override;
+
+ uint64 EventID = 0;
+ std::string Notes;
+ };
+
+ class CalendarEventInviteNotes final : public ServerPacket
+ {
+ public:
+ CalendarEventInviteNotes() : ServerPacket(SMSG_CALENDAR_EVENT_INVITE_NOTES, 26) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid InviteGuid;
+ uint64 EventID = 0;
+ std::string Notes;
+ bool ClearPending = false;
+ };
+ }
+}
+
+#endif // CalendarPackets_h__
diff --git a/src/server/game/Server/Packets/InstancePackets.cpp b/src/server/game/Server/Packets/InstancePackets.cpp
index 7cf46454533..5e85e961a21 100644
--- a/src/server/game/Server/Packets/InstancePackets.cpp
+++ b/src/server/game/Server/Packets/InstancePackets.cpp
@@ -72,3 +72,16 @@ WorldPacket const* WorldPackets::Instance::InstanceResetFailed::Write()
return &_worldPacket;
}
+
+WorldPacket const* WorldPackets::Instance::InstanceSaveCreated::Write()
+{
+ _worldPacket.WriteBit(Gm);
+ _worldPacket.FlushBits();
+
+ return &_worldPacket;
+}
+
+void WorldPackets::Instance::InstanceLockResponse::Read()
+{
+ AcceptLock = _worldPacket.ReadBit();
+}
diff --git a/src/server/game/Server/Packets/InstancePackets.h b/src/server/game/Server/Packets/InstancePackets.h
index bfc14dddc5b..b137afd7383 100644
--- a/src/server/game/Server/Packets/InstancePackets.h
+++ b/src/server/game/Server/Packets/InstancePackets.h
@@ -105,6 +105,26 @@ namespace WorldPackets
WorldPacket const* Write() override { return &_worldPacket; }
};
+
+ class InstanceSaveCreated final : public ServerPacket
+ {
+ public:
+ InstanceSaveCreated() : ServerPacket(SMSG_INSTANCE_SAVE_CREATED, 1) { }
+
+ WorldPacket const* Write() override;
+
+ bool Gm = false;
+ };
+
+ class InstanceLockResponse final : public ClientPacket
+ {
+ public:
+ InstanceLockResponse(WorldPacket&& packet) : ClientPacket(CMSG_INSTANCE_LOCK_RESPONSE, std::move(packet)) { }
+
+ void Read() override;
+
+ bool AcceptLock = false;
+ };
}
}
diff --git a/src/server/game/Server/Packets/ItemPackets.cpp b/src/server/game/Server/Packets/ItemPackets.cpp
index 8b0bec535b3..6d7fdffc73b 100644
--- a/src/server/game/Server/Packets/ItemPackets.cpp
+++ b/src/server/game/Server/Packets/ItemPackets.cpp
@@ -316,25 +316,27 @@ WorldPacket const* WorldPackets::Item::ItemPushResult::Write()
{
_worldPacket << PlayerGUID;
- _worldPacket << Slot;
- _worldPacket << SlotInBag;
+ _worldPacket << uint8(Slot);
+ _worldPacket << int32(SlotInBag);
_worldPacket << Item;
- _worldPacket << WodUnk;
- _worldPacket << Quantity;
- _worldPacket << QuantityInInventory;
- _worldPacket << BattlePetBreedID;
- _worldPacket << BattlePetBreedQuality;
- _worldPacket << BattlePetSpeciesID;
- _worldPacket << BattlePetLevel;
+ _worldPacket << uint32(QuestLogItemID);
+ _worldPacket << int32(Quantity);
+ _worldPacket << int32(QuantityInInventory);
+ _worldPacket << uint32(DungeonEncounterID);
+ _worldPacket << int32(BattlePetBreedID);
+ _worldPacket << int32(BattlePetBreedQuality);
+ _worldPacket << int32(BattlePetSpeciesID);
+ _worldPacket << int32(BattlePetLevel);
_worldPacket << ItemGUID;
_worldPacket.WriteBit(Pushed);
_worldPacket.WriteBit(Created);
- _worldPacket.WriteBit(DisplayText);
+ _worldPacket.WriteBits(DisplayText, 2);
_worldPacket.WriteBit(IsBonusRoll);
+ _worldPacket.WriteBit(IsEncounterLoot);
_worldPacket.FlushBits();
diff --git a/src/server/game/Server/Packets/ItemPackets.h b/src/server/game/Server/Packets/ItemPackets.h
index e73f42bcaf2..69a6c5ab997 100644
--- a/src/server/game/Server/Packets/ItemPackets.h
+++ b/src/server/game/Server/Packets/ItemPackets.h
@@ -288,6 +288,13 @@ namespace WorldPackets
class ItemPushResult final : public ServerPacket
{
public:
+ enum DisplayType
+ {
+ DISPLAY_TYPE_ENCOUNTER_LOOT = 1,
+ DISPLAY_TYPE_NORMAL = 2,
+ DISPLAY_TYPE_HIDDEN = 3
+ };
+
ItemPushResult() : ServerPacket(SMSG_ITEM_PUSH_RESULT, 16 + 1 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 16 + 1 + 1 + 1 + 1) { }
WorldPacket const* Write() override;
@@ -296,18 +303,21 @@ namespace WorldPackets
uint8 Slot = 0;
int32 SlotInBag = 0;
ItemInstance Item;
- uint32 WodUnk = 0;
+ uint32 QuestLogItemID = 0; // Item ID used for updating quest progress
+ // only set if different than real ID (similar to CreatureTemplate.KillCredit)
int32 Quantity = 0;
int32 QuantityInInventory = 0;
+ uint32 DungeonEncounterID = 0;
int32 BattlePetBreedID = 0;
uint32 BattlePetBreedQuality = 0;
int32 BattlePetSpeciesID = 0;
int32 BattlePetLevel = 0;
ObjectGuid ItemGUID;
bool Pushed = false;
- bool DisplayText = false;
+ DisplayType DisplayText = DISPLAY_TYPE_HIDDEN;
bool Created = false;
bool IsBonusRoll = false;
+ bool IsEncounterLoot = false;
};
class ReadItem final : public ClientPacket
diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h
index 377f0ca6a64..ef5817fccd8 100644
--- a/src/server/game/Server/Packets/QuestPackets.h
+++ b/src/server/game/Server/Packets/QuestPackets.h
@@ -495,6 +495,14 @@ namespace WorldPackets
ObjectGuid SenderGUID;
uint8 Result = 0;
};
+
+ class QuestLogFull final : public ServerPacket
+ {
+ public:
+ QuestLogFull() : ServerPacket(SMSG_QUEST_LOG_FULL, 0) { }
+
+ WorldPacket const* Write() override { return &_worldPacket; }
+ };
}
}
diff --git a/src/server/game/Server/Packets/SpellPackets.cpp b/src/server/game/Server/Packets/SpellPackets.cpp
index 00ce2593287..91821780575 100644
--- a/src/server/game/Server/Packets/SpellPackets.cpp
+++ b/src/server/game/Server/Packets/SpellPackets.cpp
@@ -16,7 +16,6 @@
*/
#include "SpellPackets.h"
-#include "SpellAuraEffects.h"
#include "MovementPackets.h"
void WorldPackets::Spells::CancelAura::Read()
@@ -745,3 +744,23 @@ void WorldPackets::Spells::SpellClick::Read()
_worldPacket >> SpellClickUnitGuid;
TryAutoDismount = _worldPacket.ReadBit();
}
+
+WorldPacket const* WorldPackets::Spells::ConvertRune::Write()
+{
+ _worldPacket << uint8(Index);
+ _worldPacket << uint8(Rune);
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Spells::ResyncRunes::Write()
+{
+ _worldPacket << uint32(Runes.size());
+ for (auto const& rune : Runes)
+ {
+ _worldPacket << uint8(rune.RuneType);
+ _worldPacket << uint8(rune.Cooldown);
+ }
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/SpellPackets.h b/src/server/game/Server/Packets/SpellPackets.h
index b9388c02116..f5df5e32da0 100644
--- a/src/server/game/Server/Packets/SpellPackets.h
+++ b/src/server/game/Server/Packets/SpellPackets.h
@@ -749,6 +749,33 @@ namespace WorldPackets
ObjectGuid SpellClickUnitGuid;
bool TryAutoDismount = false;
};
+
+ class ConvertRune final : public ServerPacket
+ {
+ public:
+ ConvertRune() : ServerPacket(SMSG_CONVERT_RUNE, 1 + 1) { }
+
+ WorldPacket const* Write() override;
+
+ uint8 Index = 0;
+ uint8 Rune = 0;
+ };
+
+ class ResyncRunes final : public ServerPacket
+ {
+ public:
+ struct ResyncRune
+ {
+ uint8 RuneType = 0;
+ uint8 Cooldown = 0;
+ };
+
+ ResyncRunes(size_t size) : ServerPacket(SMSG_RESYNC_RUNES, 4 + 2 * size) { }
+
+ WorldPacket const* Write() override;
+
+ std::vector<ResyncRune> Runes;
+ };
}
}
diff --git a/src/server/game/Server/Packets/TotemPackets.cpp b/src/server/game/Server/Packets/TotemPackets.cpp
new file mode 100644
index 00000000000..150e88812ed
--- /dev/null
+++ b/src/server/game/Server/Packets/TotemPackets.cpp
@@ -0,0 +1,43 @@
+/*
+ * 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/>.
+ */
+
+#include "TotemPackets.h"
+
+void WorldPackets::Totem::TotemDestroyed::Read()
+{
+ _worldPacket >> Slot;
+ _worldPacket >> TotemGUID;
+}
+
+WorldPacket const* WorldPackets::Totem::TotemCreated::Write()
+{
+ _worldPacket << Slot;
+ _worldPacket << Totem;
+ _worldPacket << int32(Duration);
+ _worldPacket << int32(SpellID);
+
+ return &_worldPacket;
+}
+
+WorldPacket const* WorldPackets::Totem::TotemMoved::Write()
+{
+ _worldPacket << uint8(Slot);
+ _worldPacket << uint8(NewSlot);
+ _worldPacket << Totem;
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/TotemPackets.h b/src/server/game/Server/Packets/TotemPackets.h
new file mode 100644
index 00000000000..519025d4cba
--- /dev/null
+++ b/src/server/game/Server/Packets/TotemPackets.h
@@ -0,0 +1,66 @@
+/*
+ * 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 TotemPackets_h__
+#define TotemPackets_h__
+
+#include "Packet.h"
+#include "ObjectGuid.h"
+
+namespace WorldPackets
+{
+ namespace Totem
+ {
+ class TotemDestroyed final : public ClientPacket
+ {
+ public:
+ TotemDestroyed(WorldPacket&& packet) : ClientPacket(CMSG_TOTEM_DESTROYED, std::move(packet)) { }
+
+ void Read() override;
+
+ ObjectGuid TotemGUID;
+ uint8 Slot = 0;
+ };
+
+ class TotemCreated final : public ServerPacket
+ {
+ public:
+ TotemCreated() : ServerPacket(SMSG_TOTEM_CREATED, 25) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid Totem;
+ int32 SpellID = 0;
+ int32 Duration = 0;
+ int8 Slot = 0;
+ };
+
+ class TotemMoved final : public ServerPacket
+ {
+ public:
+ TotemMoved() : ServerPacket(SMSG_TOTEM_MOVED, 18) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid Totem;
+ uint8 Slot = 0;
+ uint8 NewSlot = 0;
+ };
+ }
+}
+
+#endif // TotemPackets_h__
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 38248b9daf6..661b1cdf9db 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -23,6 +23,7 @@
#include "Packets/BankPackets.h"
#include "Packets/BattlegroundPackets.h"
#include "Packets/BlackMarketPackets.h"
+#include "Packets/CalendarPackets.h"
#include "Packets/ChannelPackets.h"
#include "Packets/CharacterPackets.h"
#include "Packets/ChatPackets.h"
@@ -52,6 +53,7 @@
#include "Packets/TalentPackets.h"
#include "Packets/TicketPackets.h"
#include "Packets/TokenPackets.h"
+#include "Packets/TotemPackets.h"
#include "Packets/TradePackets.h"
#include "Packets/VehiclePackets.h"
#include "Packets/VoidStoragePackets.h"
@@ -229,21 +231,21 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_BUY_WOW_TOKEN_CONFIRM, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_BUY_WOW_TOKEN_START, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CAGE_BATTLE_PET, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_CALENDAR_ADD_EVENT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarAddEvent );
+ DEFINE_HANDLER(CMSG_CALENDAR_ADD_EVENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Calendar::CalendarAddEvent, &WorldSession::HandleCalendarAddEvent);
DEFINE_OPCODE_HANDLER_OLD(CMSG_CALENDAR_COMPLAIN, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarComplain );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_CALENDAR_COPY_EVENT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarCopyEvent );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_CALENDAR_EVENT_INVITE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarEventInvite );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_CALENDAR_EVENT_MODERATOR_STATUS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarEventModeratorStatus);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_CALENDAR_EVENT_RSVP, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarEventRsvp );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_CALENDAR_EVENT_SIGN_UP, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarEventSignup );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_CALENDAR_EVENT_STATUS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarEventStatus );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_CALENDAR_GET, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarGetCalendar );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_CALENDAR_GET_EVENT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarGetEvent );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_CALENDAR_GET_NUM_PENDING, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarGetNumPending );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_CALENDAR_GUILD_FILTER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarGuildFilter );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_CALENDAR_REMOVE_EVENT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarRemoveEvent );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_CALENDAR_REMOVE_INVITE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarEventRemoveInvite );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_CALENDAR_UPDATE_EVENT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCalendarUpdateEvent );
+ DEFINE_HANDLER(CMSG_CALENDAR_COPY_EVENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Calendar::CalendarCopyEvent, &WorldSession::HandleCalendarCopyEvent);
+ DEFINE_HANDLER(CMSG_CALENDAR_EVENT_INVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Calendar::CalendarEventInvite, &WorldSession::HandleCalendarEventInvite);
+ DEFINE_HANDLER(CMSG_CALENDAR_EVENT_MODERATOR_STATUS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Calendar::CalendarEventModeratorStatus, &WorldSession::HandleCalendarEventModeratorStatus);
+ DEFINE_HANDLER(CMSG_CALENDAR_EVENT_RSVP, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Calendar::CalendarEventRSVP, &WorldSession::HandleCalendarEventRsvp);
+ DEFINE_HANDLER(CMSG_CALENDAR_EVENT_SIGN_UP, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Calendar::CalendarEventSignUp, &WorldSession::HandleCalendarEventSignup);
+ DEFINE_HANDLER(CMSG_CALENDAR_EVENT_STATUS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Calendar::CalendarEventStatus, &WorldSession::HandleCalendarEventStatus);
+ DEFINE_HANDLER(CMSG_CALENDAR_GET, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Calendar::CalendarGetCalendar, &WorldSession::HandleCalendarGetCalendar);
+ DEFINE_HANDLER(CMSG_CALENDAR_GET_EVENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Calendar::CalendarGetEvent, &WorldSession::HandleCalendarGetEvent);
+ DEFINE_HANDLER(CMSG_CALENDAR_GET_NUM_PENDING, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Calendar::CalendarGetNumPending, &WorldSession::HandleCalendarGetNumPending);
+ DEFINE_HANDLER(CMSG_CALENDAR_GUILD_FILTER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Calendar::CalendarGuildFilter, &WorldSession::HandleCalendarGuildFilter);
+ DEFINE_HANDLER(CMSG_CALENDAR_REMOVE_EVENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Calendar::CalendarRemoveEvent, &WorldSession::HandleCalendarRemoveEvent);
+ DEFINE_HANDLER(CMSG_CALENDAR_REMOVE_INVITE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Calendar::CalendarRemoveInvite, &WorldSession::HandleCalendarEventRemoveInvite);
+ DEFINE_HANDLER(CMSG_CALENDAR_UPDATE_EVENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Calendar::CalendarUpdateEvent, &WorldSession::HandleCalendarUpdateEvent);
DEFINE_HANDLER(CMSG_CANCEL_AURA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Spells::CancelAura, &WorldSession::HandleCancelAuraOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_CANCEL_AUTO_REPEAT_SPELL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleCancelAutoRepeatSpellOpcode);
DEFINE_HANDLER(CMSG_CANCEL_CAST, STATUS_LOGGEDIN, PROCESS_THREADSAFE, WorldPackets::Spells::CancelCast, &WorldSession::HandleCancelCastOpcode);
@@ -255,7 +257,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_CANCEL_QUEUED_SPELL, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CANCEL_TEMP_ENCHANTMENT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Item::CancelTempEnchantment, &WorldSession::HandleCancelTempEnchantmentOpcode);
DEFINE_HANDLER(CMSG_CANCEL_TRADE, STATUS_LOGGEDIN_OR_RECENTLY_LOGGOUT, PROCESS_THREADUNSAFE, WorldPackets::Trade::CancelTrade, &WorldSession::HandleCancelTradeOpcode);
- DEFINE_HANDLER(CMSG_CAN_DUEL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Duel::CanDuel, &WorldSession::HandleCanDuel);
+ DEFINE_HANDLER(CMSG_CAN_DUEL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Duel::CanDuel, &WorldSession::HandleCanDuel);
DEFINE_HANDLER(CMSG_CAST_SPELL, STATUS_LOGGEDIN, PROCESS_THREADSAFE, WorldPackets::Spells::CastSpell, &WorldSession::HandleCastSpellOpcode);
DEFINE_HANDLER(CMSG_CHALLENGE_MODE_REQUEST_LEADERS, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CHALLENGE_MODE_REQUEST_MAP_STATS, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
@@ -313,13 +315,13 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_CHAT_REGISTER_ADDON_PREFIXES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Chat::ChatRegisterAddonPrefixes, &WorldSession::HandleAddonRegisteredPrefixesOpcode);
DEFINE_HANDLER(CMSG_CHAT_REPORT_FILTERED, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_OPCODE_HANDLER_OLD(CMSG_CHAT_REPORT_IGNORED, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleChatIgnoredOpcode );
- DEFINE_HANDLER(CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Chat::ChatUnregisterAllAddonPrefixes, &WorldSession::HandleUnregisterAllAddonPrefixesOpcode);
+ DEFINE_HANDLER(CMSG_CHAT_UNREGISTER_ALL_ADDON_PREFIXES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Chat::ChatUnregisterAllAddonPrefixes, &WorldSession::HandleUnregisterAllAddonPrefixesOpcode);
DEFINE_HANDLER(CMSG_CHECK_RAF_EMAIL_ENABLED, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CHECK_WOW_TOKEN_VETERAN_ELIGIBILITY, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CHOICE_RESPONSE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_CLEAR_RAID_MARKER, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Party::ClearRaidMarker, &WorldSession::HandleClearRaidMarker);
DEFINE_HANDLER(CMSG_CLEAR_TRADE_ITEM, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Trade::ClearTradeItem, &WorldSession::HandleClearTradeItemOpcode);
- DEFINE_HANDLER(CMSG_CLIENT_PORT_GRAVEYARD, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Misc::PortGraveyard, &WorldSession::HandlePortGraveyard);
+ DEFINE_HANDLER(CMSG_CLIENT_PORT_GRAVEYARD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::PortGraveyard, &WorldSession::HandlePortGraveyard);
DEFINE_HANDLER(CMSG_CLOSE_INTERACTION, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_COMMENTATOR_ENABLE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_COMMENTATOR_ENTER_INSTANCE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
@@ -456,7 +458,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_INITIATE_TRADE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Trade::InitiateTrade, &WorldSession::HandleInitiateTradeOpcode);
DEFINE_HANDLER(CMSG_INSPECT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Inspect::Inspect, &WorldSession::HandleInspectOpcode);
DEFINE_HANDLER(CMSG_INSPECT_PVP, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Inspect::InspectPVPRequest, &WorldSession::HandleInspectPVP);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_INSTANCE_LOCK_RESPONSE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleInstanceLockResponse);
+ DEFINE_HANDLER(CMSG_INSTANCE_LOCK_RESPONSE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Instance::InstanceLockResponse, &WorldSession::HandleInstanceLockResponse);
DEFINE_OPCODE_HANDLER_OLD(CMSG_ITEM_PURCHASE_REFUND, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleItemRefund );
DEFINE_HANDLER(CMSG_ITEM_TEXT_QUERY, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Query::ItemTextQuery, &WorldSession::HandleItemTextQuery);
DEFINE_HANDLER(CMSG_JOIN_PET_BATTLE_QUEUE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
@@ -661,7 +663,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_REPOP_REQUEST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::RepopRequest, &WorldSession::HandleRepopRequest);
DEFINE_HANDLER(CMSG_REPORT_PVP_PLAYER_AFK, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Battleground::ReportPvPPlayerAFK, &WorldSession::HandleReportPvPAFK);
DEFINE_HANDLER(CMSG_REQUEST_ACCOUNT_DATA, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::ClientConfig::RequestAccountData, &WorldSession::HandleRequestAccountData);
- DEFINE_HANDLER(CMSG_REQUEST_BATTLEFIELD_STATUS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Battleground::RequestBattlefieldStatus, &WorldSession::HandleRequestBattlefieldStatusOpcode);
+ DEFINE_HANDLER(CMSG_REQUEST_BATTLEFIELD_STATUS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Battleground::RequestBattlefieldStatus, &WorldSession::HandleRequestBattlefieldStatusOpcode);
DEFINE_HANDLER(CMSG_REQUEST_CATEGORY_COOLDOWNS, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Spells::RequestCategoryCooldowns, &WorldSession::HandleRequestCategoryCooldowns);
DEFINE_HANDLER(CMSG_REQUEST_CEMETERY_LIST, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Misc::RequestCemeteryList, &WorldSession::HandleRequestCemeteryList);
DEFINE_HANDLER(CMSG_REQUEST_CONQUEST_FORMULA_CONSTANTS, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
@@ -673,9 +675,9 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_REQUEST_PARTY_JOIN_UPDATES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Party::RequestPartyJoinUpdates, &WorldSession::HandleRequestPartyJoinUpdates);
DEFINE_HANDLER(CMSG_REQUEST_PARTY_MEMBER_STATS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Party::RequestPartyMemberStats, &WorldSession::HandleRequestPartyMemberStatsOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_PET_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestPetInfoOpcode );
- DEFINE_HANDLER(CMSG_REQUEST_PLAYED_TIME, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Character::RequestPlayedTime, &WorldSession::HandlePlayedTime);
+ DEFINE_HANDLER(CMSG_REQUEST_PLAYED_TIME, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Character::RequestPlayedTime, &WorldSession::HandlePlayedTime);
DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_PVP_REWARDS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::HandleRequestPvpReward );
- DEFINE_HANDLER(CMSG_REQUEST_RAID_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Party::RequestRaidInfo, &WorldSession::HandleRequestRaidInfoOpcode);
+ DEFINE_HANDLER(CMSG_REQUEST_RAID_INFO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Party::RequestRaidInfo, &WorldSession::HandleRequestRaidInfoOpcode);
DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_RATED_BATTLEFIELD_INFO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestRatedBattlefieldInfo);
DEFINE_HANDLER(CMSG_REQUEST_RESEARCH_HISTORY, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_OPCODE_HANDLER_OLD(CMSG_REQUEST_STABLED_PETS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleListStabledPetsOpcode );
@@ -734,7 +736,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_SET_PVP, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SET_RAID_DIFFICULTY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::SetRaidDifficulty, &WorldSession::HandleSetRaidDifficultyOpcode);
DEFINE_HANDLER(CMSG_SET_ROLE, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Party::SetRole, &WorldSession::HandleSetRoleOpcode);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_SAVED_INSTANCE_EXTEND, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetSavedInstanceExtend );
+ DEFINE_HANDLER(CMSG_SET_SAVED_INSTANCE_EXTEND, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Calendar::SetSavedInstanceExtend, &WorldSession::HandleSetSavedInstanceExtend);
DEFINE_HANDLER(CMSG_SET_SELECTION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::SetSelection, &WorldSession::HandleSetSelectionOpcode);
DEFINE_HANDLER(CMSG_SET_SHEATHED, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Combat::SetSheathed, &WorldSession::HandleSetSheathedOpcode);
DEFINE_HANDLER(CMSG_SET_SORT_BAGS_RIGHT_TO_LEFT, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
@@ -783,7 +785,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_TIME_SYNC_RESPONSE_FAILED, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_TOGGLE_DIFFICULTY, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_OPCODE_HANDLER_OLD(CMSG_TOGGLE_PVP, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleTogglePvP );
- DEFINE_OPCODE_HANDLER_OLD(CMSG_TOTEM_DESTROYED, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleTotemDestroyed );
+ DEFINE_HANDLER(CMSG_TOTEM_DESTROYED, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Totem::TotemDestroyed, &WorldSession::HandleTotemDestroyed);
DEFINE_HANDLER(CMSG_TOY_SET_FAVORITE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_TRAINER_BUY_SPELL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::NPC::TrainerBuySpell, &WorldSession::HandleTrainerBuySpellOpcode);
DEFINE_HANDLER(CMSG_TRAINER_LIST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::NPC::Hello, &WorldSession::HandleTrainerListOpcode);
@@ -946,26 +948,26 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BUY_FAILED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_BUY_SUCCEEDED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CACHE_VERSION, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_CLEAR_PENDING_ACTION, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_COMMAND_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_EVENT_INITIAL_INVITES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_EVENT_INVITE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_EVENT_INVITE_ALERT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_EVENT_INVITE_MODERATOR_STATUS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_EVENT_INVITE_NOTES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_EVENT_INVITE_NOTES_ALERT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_EVENT_INVITE_REMOVED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_EVENT_INVITE_REMOVED_ALERT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_EVENT_INVITE_STATUS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_EVENT_INVITE_STATUS_ALERT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_EVENT_REMOVED_ALERT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_EVENT_UPDATED_ALERT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_CLEAR_PENDING_ACTION, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_COMMAND_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_EVENT_INITIAL_INVITES, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_EVENT_INVITE, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_EVENT_INVITE_ALERT, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_EVENT_INVITE_MODERATOR_STATUS, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_EVENT_INVITE_NOTES, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_EVENT_INVITE_NOTES_ALERT, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_EVENT_INVITE_REMOVED, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_EVENT_INVITE_REMOVED_ALERT, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_EVENT_INVITE_STATUS, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_EVENT_INVITE_STATUS_ALERT, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_EVENT_REMOVED_ALERT, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_EVENT_UPDATED_ALERT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_RAID_LOCKOUT_ADDED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_RAID_LOCKOUT_REMOVED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_RAID_LOCKOUT_UPDATED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_SEND_CALENDAR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_SEND_EVENT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_SEND_NUM_PENDING, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_SEND_CALENDAR, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_SEND_EVENT, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CALENDAR_SEND_NUM_PENDING, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CAMERA_SHAKE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_AUTO_REPEAT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CANCEL_COMBAT, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1033,7 +1035,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONSOLE_WRITE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONTACT_LIST, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONTROL_UPDATE, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONVERT_RUNE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_CONVERT_RUNE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_COOLDOWN_CHEAT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_COOLDOWN_EVENT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_CORPSE_LOCATION, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1079,7 +1081,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENCOUNTER_END, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENCOUNTER_START, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENUM_CHARACTERS_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENVIRONMENTAL_DAMAGE_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ENVIRONMENTAL_DAMAGE_LOG, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_EQUIPMENT_SET_ID, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_EXPECTED_SPAM_RECORDS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_EXPLORATION_EXPERIENCE, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1246,7 +1248,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_INFO, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_RESET, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_RESET_FAILED, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_SAVE_CREATED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_INSTANCE_SAVE_CREATED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INVALIDATE_PLAYER, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INVALID_PROMOTION_CODE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_INVENTORY_CHANGE_FAILURE, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1256,7 +1258,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_ENCHANT_TIME_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_EXPIRE_PURCHASE_REFUND, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_PURCHASE_REFUND_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_PUSH_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_PUSH_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ITEM_TIME_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_KICK_REASON, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_LEARNED_SPELLS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1521,7 +1523,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_GIVER_REQUEST_ITEMS, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_GIVER_STATUS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_GIVER_STATUS_MULTIPLE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_LOG_FULL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_LOG_FULL, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_POI_QUERY_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_PUSH_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_UPDATE_ADD_CREDIT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1566,7 +1568,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESUME_COMMS, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESUME_TOKEN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESURRECT_REQUEST, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESYNC_RUNES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESYNC_RUNES, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ROLE_CHANGED_INFORM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ROLE_CHOSEN, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_ROLE_POLL_INFORM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1574,7 +1576,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENARIO_BOOT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENARIO_COMPLETED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENARIO_OUT_OF_BOUNDS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENARIO_PO_IS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENARIO_POIS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENARIO_PROGRESS_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENARIO_STATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SCENE_OBJECT_EVENT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1640,7 +1642,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_DELAYED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_DISPELL_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_ENERGIZE_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_EXECUTE_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_EXECUTE_LOG, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_FAILED_OTHER, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_FAILURE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_GO, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -1649,9 +1651,9 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_INTERRUPT_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_MISS_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_MULTISTRIKE_EFFECT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_NON_MELEE_DAMAGE_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_NON_MELEE_DAMAGE_LOG, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_OR_DAMAGE_IMMUNE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_PERIODIC_AURA_LOG, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_PERIODIC_AURA_LOG, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_START, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPELL_UPDATE_CHAIN_TARGETS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SPIRIT_HEALER_CONFIRM, STATUS_NEVER, CONNECTION_TYPE_REALM);
@@ -1662,7 +1664,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_START_MIRROR_TIMER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_START_TIMER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_STOP_ELAPSED_TIMER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_STOP_MIRROR_TIMER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_STOP_MIRROR_TIMER, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_STOP_SPEAKERBOT_SOUND, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_STREAMING_MOVIES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SUMMON_CANCEL, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
@@ -1682,15 +1684,15 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TIME_SYNC_REQUEST, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TITLE_EARNED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TITLE_LOST, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_TOTEM_CREATED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_TOTEM_MOVED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_TOTEM_CREATED, STATUS_NEVER, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_TOTEM_MOVED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRADE_STATUS, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRADE_UPDATED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRAINER_BUY_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRAINER_LIST, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRANSFER_ABORTED, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRANSFER_PENDING, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRIGGER_CINEMATIC, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRIGGER_CINEMATIC, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRIGGER_MOVIE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TURN_IN_PETITION_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TUTORIAL_FLAGS, STATUS_NEVER, CONNECTION_TYPE_REALM);
diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h
index 590eab83d44..a82116e9daa 100644
--- a/src/server/game/Server/Protocol/Opcodes.h
+++ b/src/server/game/Server/Protocol/Opcodes.h
@@ -1462,7 +1462,7 @@ enum OpcodeServer : uint32
SMSG_SCENARIO_BOOT = 0x00B6,
SMSG_SCENARIO_COMPLETED = 0x0EA2,
SMSG_SCENARIO_OUT_OF_BOUNDS = 0x0410,
- SMSG_SCENARIO_PO_IS = 0x00CC,
+ SMSG_SCENARIO_POIS = 0x00CC,
SMSG_SCENARIO_PROGRESS_UPDATE = 0x0AA5,
SMSG_SCENARIO_STATE = 0x0E35,
SMSG_SCENE_OBJECT_EVENT = 0x0644,
diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp
index ab7b0552ff2..d9bd2d8ecc6 100644
--- a/src/server/game/Server/WorldSession.cpp
+++ b/src/server/game/Server/WorldSession.cpp
@@ -21,7 +21,6 @@
*/
#include "WorldSocket.h"
-#include <zlib.h>
#include "Config.h"
#include "Common.h"
#include "DatabaseEnv.h"
@@ -40,13 +39,9 @@
#include "ObjectAccessor.h"
#include "BattlegroundMgr.h"
#include "OutdoorPvPMgr.h"
-#include "MapManager.h"
#include "SocialMgr.h"
-#include "zlib.h"
#include "ScriptMgr.h"
-#include "Transport.h"
#include "WardenWin.h"
-#include "WardenMac.h"
#include "BattlenetServerManager.h"
#include "AuthenticationPackets.h"
#include "CharacterPackets.h"
@@ -54,6 +49,8 @@
#include "MiscPackets.h"
#include "ChatPackets.h"
+#include <zlib.h>
+
namespace {
std::string const DefaultPlayerName = "<none>";
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index d2efc15521c..e47019357c7 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -28,10 +28,8 @@
#include "AddonMgr.h"
#include "DatabaseEnv.h"
#include "World.h"
-#include "Opcodes.h"
#include "Packet.h"
#include "Cryptography/BigNumber.h"
-#include "Opcodes.h"
#include "AccountMgr.h"
#include <unordered_set>
@@ -124,6 +122,25 @@ namespace WorldPackets
class BlackMarketOpen;
}
+ namespace Calendar
+ {
+ class CalendarAddEvent;
+ class CalendarCopyEvent;
+ class CalendarEventInvite;
+ class CalendarEventModeratorStatus;
+ class CalendarEventRSVP;
+ class CalendarEventSignUp;
+ class CalendarEventStatus;
+ class CalendarGetCalendar;
+ class CalendarGetEvent;
+ class CalendarGetNumPending;
+ class CalendarGuildFilter;
+ class CalendarRemoveEvent;
+ class CalendarRemoveInvite;
+ class CalendarUpdateEvent;
+ class SetSavedInstanceExtend;
+ }
+
namespace Character
{
struct CharacterCreateInfo;
@@ -280,6 +297,7 @@ namespace WorldPackets
namespace Instance
{
class InstanceInfo;
+ class InstanceLockResponse;
class ResetInstances;
}
@@ -525,6 +543,11 @@ namespace WorldPackets
class RequestWowTokenMarketPrice;
}
+ namespace Totem
+ {
+ class TotemDestroyed;
+ }
+
namespace Trade
{
class AcceptTrade;
@@ -782,7 +805,7 @@ class WorldSession
std::string GetPlayerInfo() const;
void SetSecurity(AccountTypes security) { _security = security; }
- std::string const& GetRemoteAddress() { return m_Address; }
+ std::string const& GetRemoteAddress() const { return m_Address; }
void SetPlayer(Player* player);
uint8 GetExpansion() const { return m_expansion; }
@@ -1350,7 +1373,7 @@ class WorldSession
void HandleSetActionBarToggles(WorldPackets::Character::SetActionBarToggles& packet);
- void HandleTotemDestroyed(WorldPacket& recvData);
+ void HandleTotemDestroyed(WorldPackets::Totem::TotemDestroyed& totemDestroyed);
void HandleDismissCritter(WorldPacket& recvData);
//Battleground
@@ -1393,7 +1416,7 @@ class WorldSession
void HandleTimeSyncResponse(WorldPackets::Misc::TimeSyncResponse& packet);
void HandleWhoIsOpcode(WorldPackets::Who::WhoIsRequest& packet);
void HandleResetInstancesOpcode(WorldPackets::Instance::ResetInstances& packet);
- void HandleInstanceLockResponse(WorldPacket& recvPacket);
+ void HandleInstanceLockResponse(WorldPackets::Instance::InstanceLockResponse& packet);
// Looking for Dungeon/Raid
void HandleLfgSetCommentOpcode(WorldPacket& recvData);
@@ -1457,25 +1480,25 @@ class WorldSession
void HandleAcceptGrantLevel(WorldPackets::RaF::AcceptLevelGrant& acceptLevelGrant);
// Calendar
- void HandleCalendarGetCalendar(WorldPacket& recvData);
- void HandleCalendarGetEvent(WorldPacket& recvData);
- void HandleCalendarGuildFilter(WorldPacket& recvData);
- void HandleCalendarAddEvent(WorldPacket& recvData);
- void HandleCalendarUpdateEvent(WorldPacket& recvData);
- void HandleCalendarRemoveEvent(WorldPacket& recvData);
- void HandleCalendarCopyEvent(WorldPacket& recvData);
- void HandleCalendarEventInvite(WorldPacket& recvData);
- void HandleCalendarEventRsvp(WorldPacket& recvData);
- void HandleCalendarEventRemoveInvite(WorldPacket& recvData);
- void HandleCalendarEventStatus(WorldPacket& recvData);
- void HandleCalendarEventModeratorStatus(WorldPacket& recvData);
+ void HandleCalendarGetCalendar(WorldPackets::Calendar::CalendarGetCalendar& calendarGetCalendar);
+ void HandleCalendarGetEvent(WorldPackets::Calendar::CalendarGetEvent& calendarGetEvent);
+ void HandleCalendarGuildFilter(WorldPackets::Calendar::CalendarGuildFilter& calendarGuildFilter);
+ void HandleCalendarAddEvent(WorldPackets::Calendar::CalendarAddEvent& calendarAddEvent);
+ void HandleCalendarUpdateEvent(WorldPackets::Calendar::CalendarUpdateEvent& calendarUpdateEvent);
+ void HandleCalendarRemoveEvent(WorldPackets::Calendar::CalendarRemoveEvent& calendarRemoveEvent);
+ void HandleCalendarCopyEvent(WorldPackets::Calendar::CalendarCopyEvent& calendarCopyEvent);
+ void HandleCalendarEventInvite(WorldPackets::Calendar::CalendarEventInvite& calendarEventInvite);
+ void HandleCalendarEventRsvp(WorldPackets::Calendar::CalendarEventRSVP& calendarEventRSVP);
+ void HandleCalendarEventRemoveInvite(WorldPackets::Calendar::CalendarRemoveInvite& calendarRemoveInvite);
+ void HandleCalendarEventStatus(WorldPackets::Calendar::CalendarEventStatus& calendarEventStatus);
+ void HandleCalendarEventModeratorStatus(WorldPackets::Calendar::CalendarEventModeratorStatus& calendarEventModeratorStatus);
void HandleCalendarComplain(WorldPacket& recvData);
- void HandleCalendarGetNumPending(WorldPacket& recvData);
- void HandleCalendarEventSignup(WorldPacket& recvData);
+ void HandleCalendarGetNumPending(WorldPackets::Calendar::CalendarGetNumPending& calendarGetNumPending);
+ void HandleCalendarEventSignup(WorldPackets::Calendar::CalendarEventSignUp& calendarEventSignUp);
void SendCalendarRaidLockout(InstanceSave const* save, bool add);
void SendCalendarRaidLockoutUpdated(InstanceSave const* save);
- void HandleSetSavedInstanceExtend(WorldPacket& recvData);
+ void HandleSetSavedInstanceExtend(WorldPackets::Calendar::SetSavedInstanceExtend& setSavedInstanceExtend);
// Void Storage
void HandleVoidStorageUnlock(WorldPackets::VoidStorage::UnlockVoidStorage& unlockVoidStorage);
diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp
index 372f31d1e97..321a7635e4e 100644
--- a/src/server/game/Server/WorldSocket.cpp
+++ b/src/server/game/Server/WorldSocket.cpp
@@ -21,12 +21,11 @@
#include "BigNumber.h"
#include "CharacterPackets.h"
#include "Opcodes.h"
-#include "Player.h"
#include "ScriptMgr.h"
#include "SHA1.h"
#include "PacketLog.h"
-#include "BattlenetAccountMgr.h"
#include "World.h"
+
#include <zlib.h>
#include <memory>
diff --git a/src/server/game/Server/WorldSocketMgr.cpp b/src/server/game/Server/WorldSocketMgr.cpp
index 673c96717ff..9f0f56c484f 100644
--- a/src/server/game/Server/WorldSocketMgr.cpp
+++ b/src/server/game/Server/WorldSocketMgr.cpp
@@ -21,6 +21,7 @@
#include "ScriptMgr.h"
#include "WorldSocket.h"
#include "WorldSocketMgr.h"
+
#include <boost/system/error_code.hpp>
static void OnSocketAccept(tcp::socket&& sock)
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index 92a29dd5c73..473b3a98c56 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -25,15 +25,13 @@
#include "Player.h"
#include "Unit.h"
#include "ObjectAccessor.h"
+#include "CellImpl.h"
#include "Util.h"
#include "Spell.h"
#include "SpellAuraEffects.h"
#include "Battleground.h"
#include "OutdoorPvPMgr.h"
-#include "Formulas.h"
#include "GridNotifiers.h"
-#include "GridNotifiersImpl.h"
-#include "CellImpl.h"
#include "ScriptMgr.h"
#include "Vehicle.h"
#include "Battlefield.h"
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index b16d6893175..945580b0ee3 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -31,13 +31,10 @@
#include "Player.h"
#include "Pet.h"
#include "Unit.h"
-#include "Totem.h"
#include "Spell.h"
#include "DynamicObject.h"
#include "Guild.h"
-#include "Group.h"
#include "UpdateData.h"
-#include "MapManager.h"
#include "ObjectAccessor.h"
#include "CellImpl.h"
#include "SharedDefines.h"
@@ -157,59 +154,6 @@ SpellCastTargets::SpellCastTargets(Unit* caster, WorldPackets::Spells::SpellCast
SpellCastTargets::~SpellCastTargets() { }
-void SpellCastTargets::Read(ByteBuffer& data, Unit* caster)
-{
- data >> m_targetMask;
-
- if (m_targetMask == TARGET_FLAG_NONE)
- return;
-
- if (m_targetMask & (TARGET_FLAG_UNIT | TARGET_FLAG_UNIT_MINIPET | TARGET_FLAG_GAMEOBJECT | TARGET_FLAG_CORPSE_ENEMY | TARGET_FLAG_CORPSE_ALLY))
- data >> m_objectTargetGUID.ReadAsPacked();
-
- if (m_targetMask & (TARGET_FLAG_ITEM | TARGET_FLAG_TRADE_ITEM))
- data >> m_itemTargetGUID.ReadAsPacked();
-
- if (m_targetMask & TARGET_FLAG_SOURCE_LOCATION)
- {
- data >> m_src._transportGUID.ReadAsPacked();
- if (!m_src._transportGUID.IsEmpty())
- data >> m_src._transportOffset.PositionXYZStream();
- else
- data >> m_src._position.PositionXYZStream();
- }
- else
- {
- m_src._transportGUID = caster->GetTransGUID();
- if (!m_src._transportGUID.IsEmpty())
- m_src._transportOffset.Relocate(caster->GetTransOffsetX(), caster->GetTransOffsetY(), caster->GetTransOffsetZ(), caster->GetTransOffsetO());
- else
- m_src._position.Relocate(caster);
- }
-
- if (m_targetMask & TARGET_FLAG_DEST_LOCATION)
- {
- data >> m_dst._transportGUID.ReadAsPacked();
- if (!m_dst._transportGUID.IsEmpty())
- data >> m_dst._transportOffset.PositionXYZStream();
- else
- data >> m_dst._position.PositionXYZStream();
- }
- else
- {
- m_dst._transportGUID = caster->GetTransGUID();
- if (!m_dst._transportGUID.IsEmpty())
- m_dst._transportOffset.Relocate(caster->GetTransOffsetX(), caster->GetTransOffsetY(), caster->GetTransOffsetZ(), caster->GetTransOffsetO());
- else
- m_dst._position.Relocate(caster);
- }
-
- if (m_targetMask & TARGET_FLAG_STRING)
- data >> m_strTarget;
-
- Update(caster);
-}
-
void SpellCastTargets::Write(WorldPackets::Spells::SpellTargetData& data)
{
data.Flags = m_targetMask;
diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h
index 1b370c8fa28..183f4039711 100644
--- a/src/server/game/Spells/Spell.h
+++ b/src/server/game/Spells/Spell.h
@@ -149,7 +149,6 @@ class SpellCastTargets
SpellCastTargets(Unit* caster, WorldPackets::Spells::SpellCastRequest const& spellCastRequest);
~SpellCastTargets();
- void Read(ByteBuffer& data, Unit* caster);
void Write(WorldPackets::Spells::SpellTargetData& data);
uint32 GetTargetMask() const { return m_targetMask; }
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 75610d2e911..23d183330f2 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -34,9 +34,6 @@
#include "SpellAuraEffects.h"
#include "SpellHistory.h"
#include "Group.h"
-#include "UpdateData.h"
-#include "MapManager.h"
-#include "ObjectAccessor.h"
#include "SharedDefines.h"
#include "Pet.h"
#include "GameObject.h"
@@ -50,21 +47,13 @@
#include "Language.h"
#include "SocialMgr.h"
#include "Util.h"
-#include "VMapFactory.h"
#include "TemporarySummon.h"
-#include "CellImpl.h"
-#include "GridNotifiers.h"
-#include "GridNotifiersImpl.h"
-#include "SkillDiscovery.h"
-#include "Formulas.h"
-#include "Vehicle.h"
#include "ScriptMgr.h"
#include "GameObjectAI.h"
#include "AccountMgr.h"
#include "InstanceScript.h"
#include "PathGenerator.h"
#include "Guild.h"
-#include "GuildMgr.h"
#include "ReputationMgr.h"
#include "AreaTrigger.h"
#include "Garrison.h"
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index 0c79c966826..e893ab1b7f8 100644
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -19,15 +19,11 @@
#include "SpellMgr.h"
#include "SpellInfo.h"
#include "ObjectMgr.h"
-#include "SpellAuras.h"
#include "SpellAuraDefines.h"
#include "SharedDefines.h"
#include "DBCStores.h"
-#include "World.h"
#include "Chat.h"
-#include "Spell.h"
#include "BattlegroundMgr.h"
-#include "MapManager.h"
#include "BattlefieldWG.h"
#include "BattlefieldMgr.h"
#include "Player.h"
diff --git a/src/server/game/Spells/SpellScript.cpp b/src/server/game/Spells/SpellScript.cpp
index 12fed61b9e9..fe0f4117ffa 100644
--- a/src/server/game/Spells/SpellScript.cpp
+++ b/src/server/game/Spells/SpellScript.cpp
@@ -15,11 +15,11 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include <string>
#include "Spell.h"
#include "SpellAuras.h"
#include "SpellScript.h"
-#include "SpellMgr.h"
+
+#include <string>
bool _SpellScript::_Validate(SpellInfo const* entry)
{
diff --git a/src/server/game/Support/SupportMgr.h b/src/server/game/Support/SupportMgr.h
index fd251f50110..405e1372fb3 100644
--- a/src/server/game/Support/SupportMgr.h
+++ b/src/server/game/Support/SupportMgr.h
@@ -77,7 +77,7 @@ public:
return name;
}
- std::string const& GetComment() { return _comment; }
+ std::string const& GetComment() const { return _comment; }
virtual void SetAssignedTo(ObjectGuid guid, bool /*isAdmin*/ = false) { _assignedTo = guid; }
virtual void SetUnassigned() { _assignedTo.Clear(); }
@@ -225,11 +225,11 @@ public:
void Initialize();
- bool GetSupportSystemStatus() { return _supportSystemStatus; }
- bool GetTicketSystemStatus() { return _supportSystemStatus && _ticketSystemStatus; }
- bool GetBugSystemStatus() { return _supportSystemStatus && _bugSystemStatus; }
- bool GetComplaintSystemStatus() { return _supportSystemStatus && _complaintSystemStatus; }
- bool GetSuggestionSystemStatus() { return _supportSystemStatus && _suggestionSystemStatus; }
+ bool GetSupportSystemStatus() const { return _supportSystemStatus; }
+ bool GetTicketSystemStatus() const { return _supportSystemStatus && _ticketSystemStatus; }
+ bool GetBugSystemStatus() const { return _supportSystemStatus && _bugSystemStatus; }
+ bool GetComplaintSystemStatus() const { return _supportSystemStatus && _complaintSystemStatus; }
+ bool GetSuggestionSystemStatus() const { return _supportSystemStatus && _suggestionSystemStatus; }
uint64 GetLastChange() const { return _lastChange; }
template<typename T>
uint32 GetOpenTicketCount() const;
diff --git a/src/server/game/Warden/Warden.cpp b/src/server/game/Warden/Warden.cpp
index c6192c94fda..b09bfe7f0f7 100644
--- a/src/server/game/Warden/Warden.cpp
+++ b/src/server/game/Warden/Warden.cpp
@@ -22,14 +22,13 @@
#include "Log.h"
#include "Opcodes.h"
#include "ByteBuffer.h"
-#include <openssl/md5.h>
-#include <openssl/sha.h>
#include "World.h"
-#include "Player.h"
#include "Util.h"
#include "Warden.h"
#include "AccountMgr.h"
+#include <openssl/sha.h>
+
Warden::Warden() : _session(NULL), _inputCrypto(16), _outputCrypto(16), _checkTimer(10000/*10 sec*/), _clientResponseTimer(0),
_dataSent(false), _previousTimestamp(0), _module(NULL), _initialized(false)
{
diff --git a/src/server/game/Warden/WardenCheckMgr.cpp b/src/server/game/Warden/WardenCheckMgr.cpp
index c2d095e6530..df9cd4786ad 100644
--- a/src/server/game/Warden/WardenCheckMgr.cpp
+++ b/src/server/game/Warden/WardenCheckMgr.cpp
@@ -21,7 +21,6 @@
#include "WorldSession.h"
#include "Log.h"
#include "Database/DatabaseEnv.h"
-#include "Util.h"
#include "WardenCheckMgr.h"
#include "Warden.h"
diff --git a/src/server/game/Warden/WardenMac.cpp b/src/server/game/Warden/WardenMac.cpp
index 2eccd4c46ff..8abd48bd3f7 100644
--- a/src/server/game/Warden/WardenMac.cpp
+++ b/src/server/game/Warden/WardenMac.cpp
@@ -23,13 +23,14 @@
#include "Log.h"
#include "Opcodes.h"
#include "ByteBuffer.h"
-#include <openssl/md5.h>
#include "World.h"
#include "Player.h"
#include "Util.h"
#include "WardenMac.h"
#include "WardenModuleMac.h"
+#include <openssl/md5.h>
+
WardenMac::WardenMac() : Warden() { }
WardenMac::~WardenMac() { }
diff --git a/src/server/game/Warden/WardenWin.cpp b/src/server/game/Warden/WardenWin.cpp
index 6e96fc51f2c..82aff5c7a1b 100644
--- a/src/server/game/Warden/WardenWin.cpp
+++ b/src/server/game/Warden/WardenWin.cpp
@@ -24,7 +24,6 @@
#include "Log.h"
#include "Opcodes.h"
#include "ByteBuffer.h"
-#include <openssl/md5.h>
#include "Database/DatabaseEnv.h"
#include "World.h"
#include "Player.h"
@@ -32,7 +31,8 @@
#include "WardenWin.h"
#include "WardenModuleWin.h"
#include "WardenCheckMgr.h"
-#include "AccountMgr.h"
+
+#include <openssl/md5.h>
WardenWin::WardenWin() : Warden(), _serverTicks(0) {}
diff --git a/src/server/game/Weather/Weather.cpp b/src/server/game/Weather/Weather.cpp
index 348a98aa8b2..b4b0bd6fcec 100644
--- a/src/server/game/Weather/Weather.cpp
+++ b/src/server/game/Weather/Weather.cpp
@@ -25,10 +25,8 @@
#include "Player.h"
#include "World.h"
#include "Log.h"
-#include "ObjectMgr.h"
#include "Util.h"
#include "ScriptMgr.h"
-#include "Opcodes.h"
#include "WorldSession.h"
#include "MiscPackets.h"
diff --git a/src/server/game/Weather/WeatherMgr.cpp b/src/server/game/Weather/WeatherMgr.cpp
index 883e622bf50..8ab122a82bb 100644
--- a/src/server/game/Weather/WeatherMgr.cpp
+++ b/src/server/game/Weather/WeatherMgr.cpp
@@ -25,8 +25,6 @@
#include "Log.h"
#include "ObjectMgr.h"
#include "Player.h"
-#include "WorldPacket.h"
-#include "Opcodes.h"
#include "WorldSession.h"
#include "MiscPackets.h"
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index 2fdb8a52aa2..96c5f2eff1b 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -1391,7 +1391,7 @@ void World::LoadConfigSettings(bool reload)
sScriptMgr->OnConfigLoad(reload);
}
-extern void LoadGameObjectModelList();
+extern void LoadGameObjectModelList(std::string const& dataPath);
/// Initialize the World
void World::SetInitialWorldSettings()
@@ -1495,7 +1495,7 @@ void World::SetInitialWorldSettings()
sSpellMgr->LoadSpellInfoCustomAttributes();
TC_LOG_INFO("server.loading", "Loading GameObject models...");
- LoadGameObjectModelList();
+ LoadGameObjectModelList(m_dataPath);
TC_LOG_INFO("server.loading", "Loading Script Names...");
sObjectMgr->LoadScriptNames();
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
index a4a0b46ceb7..71232530505 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
@@ -104,7 +104,7 @@ enum Spells
SPELL_LEAVE_TWILIGHT_REALM = 74812,
SPELL_TWILIGHT_PHASING = 74808, // Phase spell from phase 1 to phase 2
SPELL_SUMMON_TWILIGHT_PORTAL = 74809, // Summons go 202794
- SPELL_SUMMON_EXIT_PORTALS = 74805, // Custom spell created in spell_dbc.
+ SPELL_SUMMON_EXIT_PORTALS = 74805, // Custom spell created in spell_dbc. // Used in Cataclysm, need a sniff of cata and up
SPELL_TWILIGHT_MENDING = 75509,
SPELL_TWILIGHT_REALM = 74807,
SPELL_DUSK_SHROUD = 75476,
@@ -123,20 +123,20 @@ enum Events
EVENT_TAIL_LASH = 6,
// Twilight Halion
- EVENT_SOUL_CONSUMPTION = 8,
+ EVENT_SOUL_CONSUMPTION = 7,
// Meteor Strike
- EVENT_SPAWN_METEOR_FLAME = 9,
+ EVENT_SPAWN_METEOR_FLAME = 8,
// Halion Controller
- EVENT_START_INTRO = 10,
- EVENT_INTRO_PROGRESS_1 = 11,
- EVENT_INTRO_PROGRESS_2 = 12,
- EVENT_INTRO_PROGRESS_3 = 13,
- EVENT_CHECK_CORPOREALITY = 14,
- EVENT_SHADOW_PULSARS_SHOOT = 15,
- EVENT_TRIGGER_BERSERK = 16,
- EVENT_TWILIGHT_MENDING = 17,
+ EVENT_START_INTRO = 9,
+ EVENT_INTRO_PROGRESS_1 = 10,
+ EVENT_INTRO_PROGRESS_2 = 11,
+ EVENT_INTRO_PROGRESS_3 = 12,
+ EVENT_CHECK_CORPOREALITY = 13,
+ EVENT_SHADOW_PULSARS_SHOOT = 14,
+ EVENT_TRIGGER_BERSERK = 15,
+ EVENT_TWILIGHT_MENDING = 16
};
enum Actions
@@ -149,13 +149,7 @@ enum Actions
ACTION_MONITOR_CORPOREALITY = 3,
// Orb Carrier
- ACTION_SHOOT = 4,
-
- // Living Inferno
- ACTION_SUMMON_LIVING_EMBERS = 5,
-
- // Meteor Flame
- ACTION_SUMMON_FLAME = 6
+ ACTION_SHOOT = 4
};
enum Phases
@@ -1005,8 +999,7 @@ class npc_meteor_strike_initial : public CreatureScript
if (HalionAI* halionAI = CAST_AI(HalionAI, owner->AI()))
{
Position const* ownerPos = halionAI->GetMeteorStrikePosition();
- // Adjust randomness between 0 and pi.
- float randomAdjustment = frand(static_cast<float>(M_PI / 14), static_cast<float>(13 * M_PI / 14));
+ float randomAdjustment = frand(0.0f, static_cast<float>(M_PI / 5.0f));
float angle[4];
angle[0] = me->GetAngle(ownerPos);
angle[1] = angle[0] + randomAdjustment;
@@ -1087,16 +1080,12 @@ class npc_meteor_strike : public CreatureScript
void UpdateAI(uint32 diff) override
{
_events.Update(diff);
+
if (_events.ExecuteEvent() == EVENT_SPAWN_METEOR_FLAME)
{
- Position pos = me->GetNearPosition(5.0f, 0.0f);
+ Position pos = me->GetNearPosition(5.0f, frand(-static_cast<float>(M_PI / 6.0f), static_cast<float>(M_PI / 6.0f)));
if (Creature* flame = me->SummonCreature(NPC_METEOR_STRIKE_FLAME, pos, TEMPSUMMON_TIMED_DESPAWN, 25000))
- {
- flame->SetOrientation(me->GetOrientation());
-
- flame->AI()->SetGUID(GetGUID());
- flame->AI()->DoAction(ACTION_SUMMON_FLAME);
- }
+ flame->AI()->SetGUID(me->GetGUID());
}
}
@@ -1128,43 +1117,43 @@ class npc_meteor_strike_flame : public CreatureScript
void SetGUID(ObjectGuid guid, int32 /*id = 0 */) override
{
_rootOwnerGuid = guid;
+ _events.ScheduleEvent(EVENT_SPAWN_METEOR_FLAME, 800);
}
- void DoAction(int32 action) override
+ void IsSummonedBy(Unit* /*summoner*/) override
+ {
+ // Let Halion Controller count as summoner.
+ if (Creature* controller = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_HALION_CONTROLLER)))
+ controller->AI()->JustSummoned(me);
+ }
+
+ void UpdateAI(uint32 diff) override
{
- if (action != ACTION_SUMMON_FLAME || _rootOwnerGuid.IsEmpty())
+ _events.Update(diff);
+ if (_events.ExecuteEvent() != EVENT_SPAWN_METEOR_FLAME)
return;
me->CastSpell(me, SPELL_METEOR_STRIKE_FIRE_AURA_2, true);
Creature* meteorStrike = ObjectAccessor::GetCreature(*me, _rootOwnerGuid);
- if (!meteorStrike || meteorStrike->AI()->GetData(DATA_SPAWNED_FLAMES) > 5)
+ if (!meteorStrike)
return;
- me->SetOrientation(me->GetOrientation() + frand(static_cast<float>(-M_PI / 16), static_cast<float>(M_PI / 16)));
- Position pos = me->GetNearPosition(5.0f, 0.0f);
+ meteorStrike->AI()->SetData(DATA_SPAWNED_FLAMES, 1);
+ if (meteorStrike->AI()->GetData(DATA_SPAWNED_FLAMES) > 5)
+ return;
+ Position pos = me->GetNearPosition(5.0f, frand(-static_cast<float>(M_PI / 6.0f), static_cast<float>(M_PI / 6.0f)));
if (Creature* flame = me->SummonCreature(NPC_METEOR_STRIKE_FLAME, pos, TEMPSUMMON_TIMED_DESPAWN, 25000))
- {
flame->AI()->SetGUID(_rootOwnerGuid);
- meteorStrike->AI()->SetData(DATA_SPAWNED_FLAMES, 1);
- }
- }
-
- void IsSummonedBy(Unit* /*summoner*/) override
- {
- // Let Halion Controller count as summoner.
- if (Creature* controller = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_HALION_CONTROLLER)))
- controller->AI()->JustSummoned(me);
}
- void UpdateAI(uint32 /*diff*/) override { }
void EnterEvadeMode() override { }
private:
InstanceScript* _instance;
EventMap _events;
- ObjectGuid _rootOwnerGuid = ObjectGuid::Empty;
+ ObjectGuid _rootOwnerGuid;
};
CreatureAI* GetAI(Creature* creature) const override
@@ -1361,7 +1350,7 @@ class go_twilight_portal : public GameObjectScript
_spellId = gameobject->GetGOInfo()->goober.spell;
break;
case GO_HALION_PORTAL_1:
- case GO_HALION_PORTAL_2: // Not used, not seen in sniffs. Just in case.
+ case GO_HALION_PORTAL_2:
gameobject->SetPhaseMask(0x1, true);
/// Because WDB template has non-existent spell ID, not seen in sniffs either, meh
_spellId = SPELL_TWILIGHT_REALM;
diff --git a/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp b/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp
index f10c108c00c..5111247b84c 100644
--- a/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp
+++ b/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp
@@ -20,6 +20,7 @@
#include "ScriptMgr.h"
#include "WorldSession.h"
#include "gundrak.h"
+#include "EventMap.h"
DoorData const doorData[] =
{
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp
index 816895684f1..5368dde12c6 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp
@@ -19,6 +19,7 @@
#include "CreatureTextMgr.h"
#include "GridNotifiersImpl.h"
#include "GossipDef.h"
+#include "MovementPackets.h"
#include "MoveSpline.h"
#include "MoveSplineInit.h"
#include "PassiveAI.h"
@@ -2083,7 +2084,7 @@ class spell_igb_overheat : public SpellScriptLoader
return GetUnitOwner()->IsVehicle();
}
- void SendClientControl(uint8 value)
+ void SendClientControl(bool value)
{
if (Vehicle* vehicle = GetUnitOwner()->GetVehicleKit())
{
@@ -2091,10 +2092,10 @@ class spell_igb_overheat : public SpellScriptLoader
{
if (Player* player = passenger->ToPlayer())
{
- WorldPacket data(SMSG_CONTROL_UPDATE, GetUnitOwner()->GetPackGUID().size() + 1);
- data << GetUnitOwner()->GetPackGUID();
- data << uint8(value);
- player->GetSession()->SendPacket(&data);
+ WorldPackets::Movement::ControlUpdate data;
+ data.Guid = GetUnitOwner()->GetGUID();
+ data.On = value;
+ player->GetSession()->SendPacket(data.Write());
}
}
}
@@ -2102,12 +2103,12 @@ class spell_igb_overheat : public SpellScriptLoader
void HandleApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
- SendClientControl(0);
+ SendClientControl(false);
}
void HandleRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
- SendClientControl(1);
+ SendClientControl(true);
}
void Register() override
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
index 5f5c944ee6c..b1a816b896b 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
@@ -594,8 +594,8 @@ class boss_freya : public CreatureScript
const uint32 summonSpell[2][4] =
{
/* 0Elder, 1Elder, 2Elder, 3Elder */
- /* 10N */ {62950, 62953, 62955, 62957},
- /* 25N */ {62952, 62954, 62956, 62958}
+ /* 10N */ {62950, 62952, 62953, 62954},
+ /* 25N */ {62955, 62956, 62957, 62958}
};
me->CastSpell((Unit*)NULL, summonSpell[me->GetMap()->GetDifficultyID() - DIFFICULTY_10_N][elderCount], true);
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
index 5dcf4854943..e3ee2928fdf 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
@@ -120,7 +120,7 @@ enum Spells
SPELL_SUMMON_ROCKET_STRIKE = 63036,
SPELL_SCRIPT_EFFECT_ROCKET_STRIKE = 63681, // Cast by Rocket (Mimiron Visual)
SPELL_ROCKET_STRIKE = 64064, // Added in creature_template_addon
- SPELL_ROCKET_STRIKE_LEFT = 64402, // Cast by VX-001
+ SPELL_ROCKET_STRIKE_SINGLE = 64402, // Cast by VX-001
SPELL_ROCKET_STRIKE_BOTH = 65034, // Cast by VX-001
// Flames
@@ -320,6 +320,12 @@ enum Waypoints
WP_AERIAL_P4_POS
};
+enum SeatIds : int8
+{
+ ROCKET_SEAT_LEFT = 5,
+ ROCKET_SEAT_RIGHT = 6
+};
+
uint32 const RepairSpells[4] =
{
SPELL_SEAT_1,
@@ -1043,18 +1049,18 @@ class boss_vx_001 : public CreatureScript
events.RescheduleEvent(EVENT_RAPID_BURST, 3000, 0, PHASE_VX_001);
break;
case EVENT_ROCKET_STRIKE:
- DoCastAOE(events.IsInPhase(PHASE_VX_001) ? SPELL_ROCKET_STRIKE_LEFT : SPELL_ROCKET_STRIKE_BOTH);
+ DoCastAOE(events.IsInPhase(PHASE_VX_001) ? SPELL_ROCKET_STRIKE_SINGLE : SPELL_ROCKET_STRIKE_BOTH);
events.ScheduleEvent(EVENT_RELOAD, 10000);
events.RescheduleEvent(EVENT_ROCKET_STRIKE, urand(20000, 25000));
break;
case EVENT_RELOAD:
- for (uint8 seat = 6; seat <= 7; seat++)
+ for (int8 seat = ROCKET_SEAT_LEFT; seat <= ROCKET_SEAT_RIGHT; ++seat)
if (Unit* rocket = me->GetVehicleKit()->GetPassenger(seat))
rocket->SetDisplayId(rocket->GetNativeDisplayId());
break;
case EVENT_HAND_PULSE:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 120, true))
- DoCast(target, urand(0, 1) == 0 ? SPELL_HAND_PULSE_LEFT : SPELL_HAND_PULSE_RIGHT);
+ DoCast(target, RAND(SPELL_HAND_PULSE_LEFT, SPELL_HAND_PULSE_RIGHT));
events.RescheduleEvent(EVENT_HAND_PULSE, urand(1500, 3000), 0, PHASE_VOL7RON);
break;
case EVENT_FROST_BOMB:
@@ -2187,8 +2193,8 @@ class spell_mimiron_rocket_strike : public SpellScriptLoader
if (targets.empty())
return;
- if (m_scriptSpellId == SPELL_ROCKET_STRIKE_LEFT && GetCaster()->IsVehicle())
- if (WorldObject* target = GetCaster()->GetVehicleKit()->GetPassenger(6))
+ if (m_scriptSpellId == SPELL_ROCKET_STRIKE_SINGLE && GetCaster()->IsVehicle())
+ if (WorldObject* target = GetCaster()->GetVehicleKit()->GetPassenger(RAND(ROCKET_SEAT_LEFT, ROCKET_SEAT_RIGHT)))
{
targets.clear();
targets.push_back(target);
diff --git a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp
index fef04ac5c07..fe0f161cc27 100644
--- a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp
+++ b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp
@@ -220,14 +220,14 @@ public:
DoCast(SPELL_SUMMON_ETHEREAL_SPHERE_2);
break;
case EVENT_SUMMON_PLAYERS:
- {
- Creature* sphere = me->FindNearestCreature(NPC_ETHEREAL_SPHERE, 150.0f);
- if (!sphere)
- sphere = me->FindNearestCreature(NPC_ETHEREAL_SPHERE2, 150.0f);
- if (sphere)
- sphere->GetAI()->DoAction(ACTION_SUMMON);
- break;
- }
+ {
+ Creature* sphere = me->FindNearestCreature(NPC_ETHEREAL_SPHERE, 150.0f);
+ if (!sphere)
+ sphere = me->FindNearestCreature(NPC_ETHEREAL_SPHERE2, 150.0f);
+ if (sphere)
+ sphere->GetAI()->DoAction(ACTION_SUMMON);
+ break;
+ }
default:
break;
}
diff --git a/src/server/shared/Database/AdhocStatement.h b/src/server/shared/Database/AdhocStatement.h
index 8195d9add98..c449e0f6e59 100644
--- a/src/server/shared/Database/AdhocStatement.h
+++ b/src/server/shared/Database/AdhocStatement.h
@@ -32,7 +32,7 @@ class BasicStatementTask : public SQLOperation
~BasicStatementTask();
bool Execute() override;
- QueryResultFuture GetFuture() { return m_result->get_future(); }
+ QueryResultFuture GetFuture() const { return m_result->get_future(); }
private:
const char* m_sql; //- Raw query to be executed
diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.cpp b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
index 233ec96bab8..5b92a105e1e 100644
--- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp
+++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
@@ -612,10 +612,10 @@ void CharacterDatabaseConnection::DoPrepareStatements()
PrepareStatement(CHAR_INS_ITEMCONTAINER_MONEY, "INSERT INTO item_loot_money (container_id, money) VALUES (?, ?)", CONNECTION_ASYNC);
// Calendar
- PrepareStatement(CHAR_REP_CALENDAR_EVENT, "REPLACE INTO calendar_events (id, creator, title, description, type, dungeon, eventtime, flags, time2) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC);
- PrepareStatement(CHAR_DEL_CALENDAR_EVENT, "DELETE FROM calendar_events WHERE id = ?", CONNECTION_ASYNC);
- PrepareStatement(CHAR_REP_CALENDAR_INVITE, "REPLACE INTO calendar_invites (id, event, invitee, sender, status, statustime, rank, text) VALUES (?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC);
- PrepareStatement(CHAR_DEL_CALENDAR_INVITE, "DELETE FROM calendar_invites WHERE id = ?", CONNECTION_ASYNC);
+ PrepareStatement(CHAR_REP_CALENDAR_EVENT, "REPLACE INTO calendar_events (EventID, Owner, Title, Description, EventType, TextureID, Date, Flags, LockDate) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC);
+ PrepareStatement(CHAR_DEL_CALENDAR_EVENT, "DELETE FROM calendar_events WHERE EventID = ?", CONNECTION_ASYNC);
+ PrepareStatement(CHAR_REP_CALENDAR_INVITE, "REPLACE INTO calendar_invites (InviteID, EventID, Invitee, Sender, Status, ResponseTime, ModerationRank, Note) VALUES (?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC);
+ PrepareStatement(CHAR_DEL_CALENDAR_INVITE, "DELETE FROM calendar_invites WHERE InviteID = ?", CONNECTION_ASYNC);
// Pet
PrepareStatement(CHAR_SEL_PET_SLOTS, "SELECT owner, slot FROM character_pet WHERE owner = ? AND slot >= ? AND slot <= ? ORDER BY slot", CONNECTION_ASYNC);
diff --git a/src/server/shared/Debugging/WheatyExceptionReport.h b/src/server/shared/Debugging/WheatyExceptionReport.h
index ef6334add16..8c2479d5232 100644
--- a/src/server/shared/Debugging/WheatyExceptionReport.h
+++ b/src/server/shared/Debugging/WheatyExceptionReport.h
@@ -7,6 +7,7 @@
#include <set>
#include <stdlib.h>
#include <stack>
+#include <mutex>
#define countof _countof
#define WER_MAX_ARRAY_ELEMENTS_COUNT 10
diff --git a/src/server/shared/Packets/ByteBuffer.h b/src/server/shared/Packets/ByteBuffer.h
index 0fa500c7c65..417e2f4b7b4 100644
--- a/src/server/shared/Packets/ByteBuffer.h
+++ b/src/server/shared/Packets/ByteBuffer.h
@@ -658,7 +658,7 @@ class ByteBuffer
put<uint8>(pos, mask);
}
- size_t PackUInt64(uint64 value, uint8* mask, uint8* result) const
+ static size_t PackUInt64(uint64 value, uint8* mask, uint8* result)
{
size_t resultSize = 0;
*mask = 0;
diff --git a/src/server/shared/Utilities/EventMap.h b/src/server/shared/Utilities/EventMap.h
index 790a25a0b63..021dffc4940 100644
--- a/src/server/shared/Utilities/EventMap.h
+++ b/src/server/shared/Utilities/EventMap.h
@@ -20,6 +20,7 @@
#include "Common.h"
#include "Duration.h"
+#include "Util.h"
class EventMap
{