aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAqua Deus <95978183+aquadeus@users.noreply.github.com>2022-10-30 02:29:38 +0200
committerGitHub <noreply@github.com>2022-10-30 02:29:38 +0200
commita7dbede82ad1453de1382b36434eb89819a38142 (patch)
treee05719d73dfd9e1566f95d6ccb3346ae4df3c27e /src
parent1b6695e51c75da8ac0ac80c1225d2dd9d0242843 (diff)
Core/Gossip: Add/Remove spell for disable/enable experience in group (#28414)
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: