From e20e51a3855595817df89ac69494b9fd41e1acb3 Mon Sep 17 00:00:00 2001 From: "Max Drosdo.www" Date: Mon, 6 Jul 2020 19:34:42 +0300 Subject: Core/Unit: Prevent gaining weapon and defense skillups in pvp (#24895) --- src/server/game/Entities/Player/Player.cpp | 3 +-- src/server/game/Entities/Unit/Unit.cpp | 7 ++++++- 2 files changed, 7 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index b991cb204cc..70360d82ea7 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -5816,9 +5816,8 @@ bool Player::UpdateSkillPro(uint16 SkillId, int32 Chance, uint32 step) void Player::UpdateWeaponSkill(WeaponAttackType attType) { - // no skill gain in pvp Unit* victim = GetVictim(); - if (victim && victim->GetTypeId() == TYPEID_PLAYER) + if (!victim) return; if (IsInFeralForm()) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index e2e6f564505..a7495b4e9e6 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -9995,7 +9995,12 @@ void Unit::ProcSkillsAndReactives(bool isVictim, Unit* procTarget, uint32 typeMa if (typeMask & MELEE_BASED_TRIGGER_MASK && procTarget) { // Update skills here for players - if (GetTypeId() == TYPEID_PLAYER) + // only when you are not fighting other players or their pets/totems (pvp) + if (GetTypeId() == TYPEID_PLAYER && + procTarget->GetTypeId() != TYPEID_PLAYER && + !(procTarget->IsTotem() && procTarget->ToTotem()->GetOwner()->IsPlayer()) && + !procTarget->IsPet() + ) { // On melee based hit/miss/resist need update skill (for victim and attacker) if (hitMask & (PROC_HIT_NORMAL | PROC_HIT_MISS | PROC_HIT_FULL_RESIST)) -- cgit v1.2.3