diff options
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index e717f644369..6ca76288d1f 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -137,6 +137,11 @@ #define DEATH_EXPIRE_STEP (5*MINUTE) #define MAX_DEATH_COUNT 3 +enum PlayerSpells +{ + SPELL_EXPERIENCE_ELIMINATED = 206662 +}; + static uint32 copseReclaimDelay[MAX_DEATH_COUNT] = { 30, 60, 120 }; uint64 const MAX_MONEY_AMOUNT = 99999999999ULL; @@ -13667,11 +13672,11 @@ void Player::PrepareGossipMenu(WorldObject* source, uint32 menuId, bool showQues canTalk = false; break; case GossipOptionNpc::DisableXPGain: - if (HasPlayerFlag(PLAYER_FLAGS_NO_XP_GAIN)) + if (HasPlayerFlag(PLAYER_FLAGS_NO_XP_GAIN) || IsMaxLevel()) canTalk = false; break; case GossipOptionNpc::EnableXPGain: - if (!HasPlayerFlag(PLAYER_FLAGS_NO_XP_GAIN)) + if (!HasPlayerFlag(PLAYER_FLAGS_NO_XP_GAIN) || IsMaxLevel()) canTalk = false; break; case GossipOptionNpc::None: @@ -13910,10 +13915,12 @@ void Player::OnGossipSelect(WorldObject* source, uint32 gossipListId, uint32 men break; case GossipOptionNpc::DisableXPGain: PlayerTalkClass->SendCloseGossip(); + CastSpell(nullptr, SPELL_EXPERIENCE_ELIMINATED, true); SetPlayerFlag(PLAYER_FLAGS_NO_XP_GAIN); break; case GossipOptionNpc::EnableXPGain: PlayerTalkClass->SendCloseGossip(); + RemoveAurasDueToSpell(SPELL_EXPERIENCE_ELIMINATED); RemovePlayerFlag(PLAYER_FLAGS_NO_XP_GAIN); break; case GossipOptionNpc::Mailbox: |