diff options
| author | Shauren <shauren.trinity@gmail.com> | 2021-06-06 14:10:23 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2021-06-06 14:10:23 +0200 |
| commit | 9f852c27b9a03d599f85a806cdae0c2d48427e53 (patch) | |
| tree | c5321764736c0db500e73c38f720aa13f57fb435 /src/server/game | |
| parent | af815e991d3dc407846fcd05000b4e356d7336ed (diff) | |
Core/Players: Add PlayerExtraFlags for tracking race change, and raf level grant usage
Diffstat (limited to 'src/server/game')
| -rw-r--r-- | src/server/game/Entities/Player/Player.h | 25 | ||||
| -rw-r--r-- | src/server/game/Handlers/CharacterHandler.cpp | 3 | ||||
| -rw-r--r-- | src/server/game/Handlers/ReferAFriendHandler.cpp | 1 |
3 files changed, 21 insertions, 8 deletions
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 7a0aef3c5c5..69fc386e4d0 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -437,15 +437,20 @@ enum MirrorTimerType enum PlayerExtraFlags { // gm abilities - PLAYER_EXTRA_GM_ON = 0x0001, - PLAYER_EXTRA_ACCEPT_WHISPERS = 0x0004, - PLAYER_EXTRA_TAXICHEAT = 0x0008, - PLAYER_EXTRA_GM_INVISIBLE = 0x0010, - PLAYER_EXTRA_GM_CHAT = 0x0020, // Show GM badge in chat messages - PLAYER_EXTRA_HAS_310_FLYER = 0x0040, // Marks if player already has 310% speed flying mount + PLAYER_EXTRA_GM_ON = 0x0001, + PLAYER_EXTRA_ACCEPT_WHISPERS = 0x0004, + PLAYER_EXTRA_TAXICHEAT = 0x0008, + PLAYER_EXTRA_GM_INVISIBLE = 0x0010, + PLAYER_EXTRA_GM_CHAT = 0x0020, // Show GM badge in chat messages + PLAYER_EXTRA_HAS_310_FLYER = 0x0040, // Marks if player already has 310% speed flying mount // other states - PLAYER_EXTRA_PVP_DEATH = 0x0100 // store PvP death status until corpse creating. + PLAYER_EXTRA_PVP_DEATH = 0x0100, // store PvP death status until corpse creating. + + // Character services markers + PLAYER_EXTRA_HAS_RACE_CHANGED = 0x0200, + PLAYER_EXTRA_GRANTED_LEVELS_FROM_RAF = 0x0400, + PLAYER_EXTRA_LEVEL_BOOSTED = 0x0800, // reserved for master branch }; // 2^n values @@ -966,6 +971,12 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> bool Has310Flyer(bool checkAllSpells, uint32 excludeSpellId = 0); void SetHas310Flyer(bool on) { if (on) m_ExtraFlags |= PLAYER_EXTRA_HAS_310_FLYER; else m_ExtraFlags &= ~PLAYER_EXTRA_HAS_310_FLYER; } void SetPvPDeath(bool on) { if (on) m_ExtraFlags |= PLAYER_EXTRA_PVP_DEATH; else m_ExtraFlags &= ~PLAYER_EXTRA_PVP_DEATH; } + bool HasRaceChanged() const { return (m_ExtraFlags & PLAYER_EXTRA_HAS_RACE_CHANGED) != 0; } + void SetHasRaceChanged() { m_ExtraFlags |= PLAYER_EXTRA_HAS_RACE_CHANGED; } + bool HasBeenGrantedLevelsFromRaF() const { return (m_ExtraFlags & PLAYER_EXTRA_GRANTED_LEVELS_FROM_RAF) != 0; } + void SetBeenGrantedLevelsFromRaF() { m_ExtraFlags |= PLAYER_EXTRA_GRANTED_LEVELS_FROM_RAF; } + bool HasLevelBoosted() const { return (m_ExtraFlags & PLAYER_EXTRA_LEVEL_BOOSTED) != 0; } + void SetHasLevelBoosted() { m_ExtraFlags |= PLAYER_EXTRA_LEVEL_BOOSTED; } uint32 GetXP() const { return GetUInt32Value(PLAYER_XP); } uint32 GetXPForNextLevel() const { return GetUInt32Value(PLAYER_NEXT_LEVEL_XP); } diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index 0d8b6760f14..2da23b5d4e2 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -1774,7 +1774,8 @@ void WorldSession::HandleCharFactionOrRaceChangeCallback(std::shared_ptr<Charact { stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_CHAR_RACE); stmt->setUInt8(0, factionChangeInfo->Race); - stmt->setUInt32(1, lowGuid); + stmt->setUInt16(1, PLAYER_EXTRA_HAS_RACE_CHANGED); + stmt->setUInt32(2, lowGuid); trans->Append(stmt); } diff --git a/src/server/game/Handlers/ReferAFriendHandler.cpp b/src/server/game/Handlers/ReferAFriendHandler.cpp index e29b9ff04be..c631f5852fa 100644 --- a/src/server/game/Handlers/ReferAFriendHandler.cpp +++ b/src/server/game/Handlers/ReferAFriendHandler.cpp @@ -84,5 +84,6 @@ void WorldSession::HandleAcceptGrantLevel(WorldPacket& recvData) else return; + _player->SetBeenGrantedLevelsFromRaF(); _player->GiveLevel(_player->GetLevel() + 1); } |
