aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp11
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: