mirror of
https://github.com/mangosfour/server.git
synced 2025-12-14 16:37:01 +00:00
[6966] Fix bug adding XP in DK trigger aura
Use MaNGOS::XP::GetGrayLevel for honor target gray level Signed-off-by: DiSlord <dislord@nomail.com>
This commit is contained in:
parent
27175a9ad8
commit
53127cd6d9
4 changed files with 24 additions and 8 deletions
|
|
@ -6035,12 +6035,7 @@ bool Player::RewardHonor(Unit *uVictim, uint32 groupsize, float honor)
|
|||
victim_guid = 0; // Don't show HK: <rank> message, only log.
|
||||
}
|
||||
|
||||
if(k_level <= 5)
|
||||
k_grey = 0;
|
||||
else if( k_level <= 39 )
|
||||
k_grey = k_level - 5 - k_level/10;
|
||||
else
|
||||
k_grey = k_level - 1 - k_level/5;
|
||||
k_grey = MaNGOS::XP::GetGrayLevel(k_level);
|
||||
|
||||
if(v_level<=k_grey)
|
||||
return false;
|
||||
|
|
@ -18463,6 +18458,26 @@ uint32 Player::GetResurrectionSpellId()
|
|||
return spell_id;
|
||||
}
|
||||
|
||||
// Used in triggers for check "Only to targets that grant experience or honor" req
|
||||
bool Player::isHonorOrXPTarget(Unit* pVictim)
|
||||
{
|
||||
uint32 v_level = pVictim->getLevel();
|
||||
uint32 k_grey = MaNGOS::XP::GetGrayLevel(getLevel());
|
||||
|
||||
// Victim level less gray level
|
||||
if(v_level<=k_grey)
|
||||
return false;
|
||||
|
||||
if(pVictim->GetTypeId() == TYPEID_UNIT)
|
||||
{
|
||||
if (((Creature*)pVictim)->isTotem() ||
|
||||
((Creature*)pVictim)->isPet() ||
|
||||
((Creature*)pVictim)->GetCreatureInfo()->flags_extra & CREATURE_FLAG_EXTRA_NO_XP_AT_KILL)
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Player::RewardPlayerAndGroupAtKill(Unit* pVictim)
|
||||
{
|
||||
bool PvP = pVictim->isCharmedOwnedByPlayerOrPlayer();
|
||||
|
|
|
|||
|
|
@ -1760,6 +1760,7 @@ class MANGOS_DLL_SPEC Player : public Unit
|
|||
|
||||
bool IsAtGroupRewardDistance(WorldObject const* pRewardSource) const;
|
||||
bool RewardPlayerAndGroupAtKill(Unit* pVictim);
|
||||
bool isHonorOrXPTarget(Unit* pVictim);
|
||||
|
||||
FactionStateList m_factions;
|
||||
ForcedReactions m_forcedReactions;
|
||||
|
|
|
|||
|
|
@ -5874,7 +5874,7 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, Aura* triggeredB
|
|||
{
|
||||
if (GetTypeId() != TYPEID_PLAYER)
|
||||
return false;
|
||||
if (!((Player*)this)->RewardPlayerAndGroupAtKill(pVictim))
|
||||
if (!((Player*)this)->isHonorOrXPTarget(pVictim))
|
||||
return false;
|
||||
trigger_spell_id = 50475;
|
||||
basepoints0 = damage * triggerAmount / 100;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#ifndef __REVISION_NR_H__
|
||||
#define __REVISION_NR_H__
|
||||
#define REVISION_NR "6965"
|
||||
#define REVISION_NR "6966"
|
||||
#endif // __REVISION_NR_H__
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue