mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-13 01:08:35 +00:00
fix(Core/Entities): Use lifetime PvP rank rather than current title for PvP credit message. (#23961)
Co-authored-by: Shauren <shauren.trinity@gmail.com>
This commit is contained in:
@@ -6165,7 +6165,7 @@ bool Player::RewardHonor(Unit* uVictim, uint32 groupsize, int32 honor, bool awar
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
ObjectGuid victim_guid;
|
ObjectGuid victim_guid;
|
||||||
uint32 victim_rank = 0;
|
int32 victim_rank = 0;
|
||||||
|
|
||||||
// need call before fields update to have chance move yesterday data to appropriate fields before today data change.
|
// need call before fields update to have chance move yesterday data to appropriate fields before today data change.
|
||||||
UpdateHonorFields();
|
UpdateHonorFields();
|
||||||
@@ -6198,28 +6198,11 @@ bool Player::RewardHonor(Unit* uVictim, uint32 groupsize, int32 honor, bool awar
|
|||||||
if (v_level <= k_grey)
|
if (v_level <= k_grey)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// PLAYER_CHOSEN_TITLE VALUES DESCRIPTION
|
victim_rank = victim->GetByteValue(PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_LIFETIME_MAX_PVP_RANK);
|
||||||
// [0] Just name
|
|
||||||
// [1..14] Alliance honor titles and player name
|
uint32 killer_title = GetUInt32Value(PLAYER_CHOSEN_TITLE);
|
||||||
// [15..28] Horde honor titles and player name
|
|
||||||
// [29..38] Other title and player name
|
sScriptMgr->OnPlayerVictimRewardBefore(this, victim, killer_title, victim_rank);
|
||||||
// [39+] Nothing
|
|
||||||
uint32 victim_title = victim->GetUInt32Value(PLAYER_CHOSEN_TITLE);
|
|
||||||
uint32 killer_title = 0;
|
|
||||||
sScriptMgr->OnPlayerVictimRewardBefore(this, victim, killer_title, victim_title);
|
|
||||||
// Get Killer titles, CharTitlesEntry::bit_index
|
|
||||||
// Ranks:
|
|
||||||
// title[1..14] -> rank[5..18]
|
|
||||||
// title[15..28] -> rank[5..18]
|
|
||||||
// title[other] -> 0
|
|
||||||
if (victim_title == 0)
|
|
||||||
victim_guid.Clear(); // Don't show HK: <rank> message, only log.
|
|
||||||
else if (victim_title < 15)
|
|
||||||
victim_rank = victim_title + 4;
|
|
||||||
else if (victim_title < 29)
|
|
||||||
victim_rank = victim_title - 14 + 4;
|
|
||||||
else
|
|
||||||
victim_guid.Clear(); // Don't show HK: <rank> message, only log.
|
|
||||||
|
|
||||||
honor_f = std::ceil(Acore::Honor::hk_honor_at_level_f(k_level) * (v_level - k_grey) / (k_level - k_grey));
|
honor_f = std::ceil(Acore::Honor::hk_honor_at_level_f(k_level) * (v_level - k_grey) / (k_level - k_grey));
|
||||||
|
|
||||||
|
|||||||
@@ -599,12 +599,12 @@ bool ScriptMgr::OnPlayerCanAreaExploreAndOutdoor(Player* player)
|
|||||||
CALL_ENABLED_BOOLEAN_HOOKS(PlayerScript, PLAYERHOOK_CAN_AREA_EXPLORE_AND_OUTDOOR, !script->OnPlayerCanAreaExploreAndOutdoor(player));
|
CALL_ENABLED_BOOLEAN_HOOKS(PlayerScript, PLAYERHOOK_CAN_AREA_EXPLORE_AND_OUTDOOR, !script->OnPlayerCanAreaExploreAndOutdoor(player));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScriptMgr::OnPlayerVictimRewardBefore(Player* player, Player* victim, uint32& killer_title, uint32& victim_title)
|
void ScriptMgr::OnPlayerVictimRewardBefore(Player* player, Player* victim, uint32& killer_title, int32& victim_rank)
|
||||||
{
|
{
|
||||||
CALL_ENABLED_HOOKS(PlayerScript, PLAYERHOOK_ON_VICTIM_REWARD_BEFORE, script->OnPlayerVictimRewardBefore(player, victim, killer_title, victim_title));
|
CALL_ENABLED_HOOKS(PlayerScript, PLAYERHOOK_ON_VICTIM_REWARD_BEFORE, script->OnPlayerVictimRewardBefore(player, victim, killer_title, victim_rank));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScriptMgr::OnPlayerVictimRewardAfter(Player* player, Player* victim, uint32& killer_title, uint32& victim_rank, float& honor_f)
|
void ScriptMgr::OnPlayerVictimRewardAfter(Player* player, Player* victim, uint32& killer_title, int32& victim_rank, float& honor_f)
|
||||||
{
|
{
|
||||||
CALL_ENABLED_HOOKS(PlayerScript, PLAYERHOOK_ON_VICTIM_REWARD_AFTER, script->OnPlayerVictimRewardAfter(player, victim, killer_title, victim_rank, honor_f));
|
CALL_ENABLED_HOOKS(PlayerScript, PLAYERHOOK_ON_VICTIM_REWARD_AFTER, script->OnPlayerVictimRewardAfter(player, victim, killer_title, victim_rank, honor_f));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -535,9 +535,9 @@ public:
|
|||||||
|
|
||||||
[[nodiscard]] virtual bool OnPlayerCanAreaExploreAndOutdoor(Player* /*player*/) { return true; }
|
[[nodiscard]] virtual bool OnPlayerCanAreaExploreAndOutdoor(Player* /*player*/) { return true; }
|
||||||
|
|
||||||
virtual void OnPlayerVictimRewardBefore(Player* /*player*/, Player* /*victim*/, uint32& /*killer_title*/, uint32& /*victim_title*/) { }
|
virtual void OnPlayerVictimRewardBefore(Player* /*player*/, Player* /*victim*/, uint32& /*killer_title*/, int32& /*victim_rank*/) { }
|
||||||
|
|
||||||
virtual void OnPlayerVictimRewardAfter(Player* /*player*/, Player* /*victim*/, uint32& /*killer_title*/, uint32& /*victim_rank*/, float& /*honor_f*/) { }
|
virtual void OnPlayerVictimRewardAfter(Player* /*player*/, Player* /*victim*/, uint32& /*killer_title*/, int32& /*victim_rank*/, float& /*honor_f*/) { }
|
||||||
|
|
||||||
virtual void OnPlayerCustomScalingStatValueBefore(Player* /*player*/, ItemTemplate const* /*proto*/, uint8 /*slot*/, bool /*apply*/, uint32& /*CustomScalingStatValue*/) { }
|
virtual void OnPlayerCustomScalingStatValueBefore(Player* /*player*/, ItemTemplate const* /*proto*/, uint8 /*slot*/, bool /*apply*/, uint32& /*CustomScalingStatValue*/) { }
|
||||||
|
|
||||||
|
|||||||
@@ -403,8 +403,8 @@ public: /* PlayerScript */
|
|||||||
void OnPlayerUpdateCraftingSkill(Player* player, SkillLineAbilityEntry const* skill, uint32 currentLevel, uint32& gain);
|
void OnPlayerUpdateCraftingSkill(Player* player, SkillLineAbilityEntry const* skill, uint32 currentLevel, uint32& gain);
|
||||||
bool OnPlayerUpdateFishingSkill(Player* player, int32 skill, int32 zone_skill, int32 chance, int32 roll);
|
bool OnPlayerUpdateFishingSkill(Player* player, int32 skill, int32 zone_skill, int32 chance, int32 roll);
|
||||||
bool OnPlayerCanAreaExploreAndOutdoor(Player* player);
|
bool OnPlayerCanAreaExploreAndOutdoor(Player* player);
|
||||||
void OnPlayerVictimRewardBefore(Player* player, Player* victim, uint32& killer_title, uint32& victim_title);
|
void OnPlayerVictimRewardBefore(Player* player, Player* victim, uint32& killer_title, int32& victim_rank);
|
||||||
void OnPlayerVictimRewardAfter(Player* player, Player* victim, uint32& killer_title, uint32& victim_rank, float& honor_f);
|
void OnPlayerVictimRewardAfter(Player* player, Player* victim, uint32& killer_title, int32& victim_rank, float& honor_f);
|
||||||
void OnPlayerCustomScalingStatValueBefore(Player* player, ItemTemplate const* proto, uint8 slot, bool apply, uint32& CustomScalingStatValue);
|
void OnPlayerCustomScalingStatValueBefore(Player* player, ItemTemplate const* proto, uint8 slot, bool apply, uint32& CustomScalingStatValue);
|
||||||
void OnPlayerCustomScalingStatValue(Player* player, ItemTemplate const* proto, uint32& statType, int32& val, uint8 itemProtoStatNumber, uint32 ScalingStatValue, ScalingStatValuesEntry const* ssv);
|
void OnPlayerCustomScalingStatValue(Player* player, ItemTemplate const* proto, uint32& statType, int32& val, uint8 itemProtoStatNumber, uint32 ScalingStatValue, ScalingStatValuesEntry const* ssv);
|
||||||
void OnPlayerApplyItemModsBefore(Player* player, uint8 slot, bool apply, uint8 itemProtoStatNumber, uint32 statType, int32& val);
|
void OnPlayerApplyItemModsBefore(Player* player, uint8 slot, bool apply, uint8 itemProtoStatNumber, uint32 statType, int32& val);
|
||||||
|
|||||||
Reference in New Issue
Block a user