refactor(Core/Hook): OnPlayerReputationChange (#10471)

This commit is contained in:
Nefertumm
2022-02-02 13:05:47 -03:00
committed by GitHub
parent dfa28e4f7d
commit db09b11524
3 changed files with 36 additions and 26 deletions
+5 -2
View File
@@ -380,6 +380,8 @@ bool ReputationMgr::SetOneFactionReputation(FactionEntry const* factionEntry, in
ReputationRank old_rank = ReputationToRank(itr->second.Standing + BaseRep);
ReputationRank new_rank = ReputationToRank(standing);
if (sScriptMgr->OnPlayerReputationChange(_player, factionEntry->ID, standing, incremental))
{
itr->second.Standing = standing - BaseRep;
itr->second.needSend = true;
itr->second.needSave = true;
@@ -392,10 +394,10 @@ bool ReputationMgr::SetOneFactionReputation(FactionEntry const* factionEntry, in
if (new_rank > old_rank)
_sendFactionIncreased = true;
sScriptMgr->OnPlayerReputationChange(_player, factionEntry->ID, standing, incremental);
if (new_rank != old_rank)
{
sScriptMgr->OnPlayerReputationRankChange(_player, factionEntry->ID, new_rank, old_rank, _sendFactionIncreased);
}
UpdateRankCounters(old_rank, new_rank);
@@ -408,6 +410,7 @@ bool ReputationMgr::SetOneFactionReputation(FactionEntry const* factionEntry, in
return true;
}
}
return false;
}
@@ -154,12 +154,19 @@ void ScriptMgr::OnGivePlayerXP(Player* player, uint32& amount, Unit* victim)
});
}
void ScriptMgr::OnPlayerReputationChange(Player* player, uint32 factionID, int32& standing, bool incremental)
bool ScriptMgr::OnPlayerReputationChange(Player* player, uint32 factionID, int32& standing, bool incremental)
{
ExecuteScript<PlayerScript>([&](PlayerScript* script)
auto ret = IsValidBoolScript<PlayerScript>([&](PlayerScript* script)
{
script->OnReputationChange(player, factionID, standing, incremental);
return !script->OnReputationChange(player, factionID, standing, incremental);
});
if (ret && *ret)
{
return false;
}
return true;
}
void ScriptMgr::OnPlayerReputationRankChange(Player* player, uint32 factionID, ReputationRank newRank, ReputationRank oldRank, bool increased)
+2 -2
View File
@@ -1005,7 +1005,7 @@ public:
virtual void OnGiveXP(Player* /*player*/, uint32& /*amount*/, Unit* /*victim*/) { }
// Called when a player's reputation changes (before it is actually changed)
virtual void OnReputationChange(Player* /*player*/, uint32 /*factionId*/, int32& /*standing*/, bool /*incremental*/) { }
virtual bool OnReputationChange(Player* /*player*/, uint32 /*factionID*/, int32& /*standing*/, bool /*incremental*/) { return true; }
// Called when a player's reputation rank changes (before it is actually changed)
virtual void OnReputationRankChange(Player* /*player*/, uint32 /*factionID*/, ReputationRank /*newRank*/, ReputationRank /*olRank*/, bool /*increased*/) { }
@@ -2168,7 +2168,7 @@ public: /* PlayerScript */
void OnPlayerTalentsReset(Player* player, bool noCost);
void OnPlayerMoneyChanged(Player* player, int32& amount);
void OnGivePlayerXP(Player* player, uint32& amount, Unit* victim);
void OnPlayerReputationChange(Player* player, uint32 factionID, int32& standing, bool incremental);
bool OnPlayerReputationChange(Player* player, uint32 factionID, int32& standing, bool incremental);
void OnPlayerReputationRankChange(Player* player, uint32 factionID, ReputationRank newRank, ReputationRank oldRank, bool increased);
void OnPlayerLearnSpell(Player* player, uint32 spellID);
void OnPlayerForgotSpell(Player* player, uint32 spellID);