diff options
Diffstat (limited to 'src/server/game')
| -rw-r--r-- | src/server/game/AI/CoreAI/UnitAI.h | 4 | ||||
| -rw-r--r-- | src/server/game/Accounts/RBAC.h | 5 | ||||
| -rw-r--r-- | src/server/game/Entities/Object/Object.h | 6 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 5 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 3 | ||||
| -rw-r--r-- | src/server/game/Handlers/CharacterHandler.cpp | 3 | ||||
| -rw-r--r-- | src/server/game/Scripting/ScriptMgr.h | 2 | ||||
| -rw-r--r-- | src/server/game/Server/WorldSession.h | 10 | ||||
| -rw-r--r-- | src/server/game/Server/WorldSocket.h | 2 | ||||
| -rw-r--r-- | src/server/game/Spells/Spell.h | 3 | ||||
| -rw-r--r-- | src/server/game/World/World.h | 11 |
11 files changed, 43 insertions, 11 deletions
diff --git a/src/server/game/AI/CoreAI/UnitAI.h b/src/server/game/AI/CoreAI/UnitAI.h index 960d9f8903b..92e72dcfc53 100644 --- a/src/server/game/AI/CoreAI/UnitAI.h +++ b/src/server/game/AI/CoreAI/UnitAI.h @@ -262,6 +262,10 @@ class UnitAI virtual void sQuestReward(Player* /*player*/, Quest const* /*quest*/, uint32 /*opt*/) { } virtual bool sOnDummyEffect(Unit* /*caster*/, uint32 /*spellId*/, SpellEffIndex /*effIndex*/) { return false; } virtual void sOnGameEvent(bool /*start*/, uint16 /*eventId*/) { } + + private: + UnitAI(UnitAI const& right) DELETE_MEMBER; + UnitAI& operator=(UnitAI const& right) DELETE_MEMBER; }; class PlayerAI : public UnitAI diff --git a/src/server/game/Accounts/RBAC.h b/src/server/game/Accounts/RBAC.h index dc5a2768668..9b84d7ddb7d 100644 --- a/src/server/game/Accounts/RBAC.h +++ b/src/server/game/Accounts/RBAC.h @@ -702,7 +702,7 @@ class RBACPermission { public: RBACPermission(uint32 id = 0, std::string const& name = ""): - _id(id), _name(name) { } + _id(id), _name(name), _perms() { } /// Gets the Name of the Object std::string const& GetName() const { return _name; } @@ -737,7 +737,8 @@ class RBACData { public: RBACData(uint32 id, std::string const& name, int32 realmId, uint8 secLevel = 255): - _id(id), _name(name), _realmId(realmId), _secLevel(secLevel) { } + _id(id), _name(name), _realmId(realmId), _secLevel(secLevel), + _grantedPerms(), _deniedPerms(), _globalPerms() { } /// Gets the Name of the Object std::string const& GetName() const { return _name; } diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index cb9103d24d7..5dbdd3a513f 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -327,8 +327,8 @@ class Object // for output helpfull error messages from asserts bool PrintIndexError(uint32 index, bool set) const; - Object(const Object&); // prevent generation copy constructor - Object& operator=(Object const&); // prevent generation assigment operator + Object(Object const& right) DELETE_MEMBER; + Object& operator=(Object const& right) DELETE_MEMBER; }; struct Position @@ -571,6 +571,8 @@ template<class T> class GridObject { public: + virtual ~GridObject() { } + bool IsInGrid() const { return _gridRef.isValid(); } void AddToGrid(GridRefManager<T>& m) { ASSERT(!IsInGrid()); _gridRef.link(&m, (T*)this); } void RemoveFromGrid() { ASSERT(IsInGrid()); _gridRef.unlink(); } diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 9b54c1f104b..7717dceb431 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -5177,8 +5177,9 @@ void Player::ResurrectPlayer(float restore_percent, bool applySickness) // remove death flag + set aura SetByteValue(UNIT_FIELD_BYTES_1, 3, 0x00); - if (getRace() == RACE_NIGHTELF) - RemoveAurasDueToSpell(20584); // speed bonuses + + // This must be called always even on Players with race != RACE_NIGHTELF in case of faction change + RemoveAurasDueToSpell(20584); // RACE_NIGHTELF speed bonuses RemoveAurasDueToSpell(8326); // SPELL_AURA_GHOST if (GetSession()->IsARecruiter() || (GetSession()->GetRecruiterId() != 0)) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 6b017d8dc9d..c06e9f72868 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -7210,6 +7210,9 @@ bool Unit::HandleOverrideClassScriptAuraProc(Unit* victim, uint32 /*damage*/, Au void Unit::setPowerType(Powers new_powertype) { + if (getPowerType() == new_powertype) + return; + SetByteValue(UNIT_FIELD_BYTES_0, 3, new_powertype); if (GetTypeId() == TYPEID_PLAYER) diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index 36e2d71555b..97433fc53c3 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -1875,6 +1875,9 @@ void WorldSession::HandleCharFactionOrRaceChange(WorldPacket& recvData) } } + // resurrect the character in case he's dead + sObjectAccessor->ConvertCorpseForPlayer(guid); + CharacterDatabase.EscapeString(newname); Player::Customize(guid, gender, skin, face, hairStyle, hairColor, facialHair); SQLTransaction trans = CharacterDatabase.BeginTransaction(); diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index c9e2a5acd7a..fe3f2b3f548 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -182,6 +182,8 @@ template<class TObject> class UpdatableScript { } + virtual ~UpdatableScript() { } + public: virtual void OnUpdate(TObject* /*obj*/, uint32 /*diff*/) { } diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index b50b2a9d0ec..ce5da411756 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -145,6 +145,10 @@ public: protected: WorldSession* const m_pSession; + +private: + PacketFilter(PacketFilter const& right) DELETE_MEMBER; + PacketFilter& operator=(PacketFilter const& right) DELETE_MEMBER; }; //process only thread-safe packets in Map::Update() class MapSessionFilter : public PacketFilter @@ -1006,6 +1010,9 @@ class WorldSession typedef UNORDERED_MAP<uint16, bool> OpcodeStatusMap; OpcodeStatusMap _isOpcodeAllowed; // could be bool array, but wouldn't be practical for game versions with non-linear opcodes Policy _policy; + + DosProtection(DosProtection const& right) DELETE_MEMBER; + DosProtection& operator=(DosProtection const& right) DELETE_MEMBER; } AntiDOS; private: @@ -1062,6 +1069,9 @@ class WorldSession time_t timeLastWhoCommand; z_stream_s* _compressionStream; rbac::RBACData* _RBACData; + + WorldSession(WorldSession const& right) DELETE_MEMBER; + WorldSession& operator=(WorldSession const& right) DELETE_MEMBER; }; #endif /// @} diff --git a/src/server/game/Server/WorldSocket.h b/src/server/game/Server/WorldSocket.h index 830029c4a88..81ad56d490c 100644 --- a/src/server/game/Server/WorldSocket.h +++ b/src/server/game/Server/WorldSocket.h @@ -209,6 +209,8 @@ class WorldSocket : public WorldHandler uint32 m_Seed; + WorldSocket(WorldSocket const& right) DELETE_MEMBER; + WorldSocket& operator=(WorldSocket const& right) DELETE_MEMBER; }; #endif /* _WORLDSOCKET_H */ diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index 9cb0baea049..fe08c86cb59 100644 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -693,6 +693,9 @@ class Spell double rand_norm() { return m_caster->GetMap()->mtRand.randExc(); } double rand_chance() { return m_caster->GetMap()->mtRand.randExc(100.0); } #endif + + Spell(Spell const& right) DELETE_MEMBER; + Spell& operator=(Spell const& right) DELETE_MEMBER; }; namespace Trinity diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index 4bb7c37fb71..121b19f4b33 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -511,14 +511,15 @@ struct CliCommandHolder CommandFinished* m_commandFinished; CliCommandHolder(void* callbackArg, const char *command, Print* zprint, CommandFinished* commandFinished) - : m_callbackArg(callbackArg), m_print(zprint), m_commandFinished(commandFinished) + : m_callbackArg(callbackArg), m_command(strdup(command)), m_print(zprint), m_commandFinished(commandFinished) { - size_t len = strlen(command)+1; - m_command = new char[len]; - memcpy(m_command, command, len); } - ~CliCommandHolder() { delete[] m_command; } + ~CliCommandHolder() { free(m_command); } + +private: + CliCommandHolder(CliCommandHolder const& right) DELETE_MEMBER; + CliCommandHolder& operator=(CliCommandHolder const& right) DELETE_MEMBER; }; typedef UNORDERED_MAP<uint32, WorldSession*> SessionMap; |
