aboutsummaryrefslogtreecommitdiff
path: root/src/server/game
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game')
-rw-r--r--src/server/game/AI/CoreAI/UnitAI.h4
-rw-r--r--src/server/game/Accounts/RBAC.h5
-rw-r--r--src/server/game/Entities/Object/Object.h6
-rw-r--r--src/server/game/Entities/Player/Player.cpp5
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp3
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp3
-rw-r--r--src/server/game/Scripting/ScriptMgr.h2
-rw-r--r--src/server/game/Server/WorldSession.h10
-rw-r--r--src/server/game/Server/WorldSocket.h2
-rw-r--r--src/server/game/Spells/Spell.h3
-rw-r--r--src/server/game/World/World.h11
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;