Include more ReputationSources

This commit is contained in:
Patrick Müssig 2025-02-04 16:39:20 +01:00
parent 61bd3bb922
commit d306f36882
No known key found for this signature in database
GPG Key ID: 90FF3D8009D9BEC3
6 changed files with 28 additions and 8 deletions

View File

@ -748,7 +748,10 @@ void Battleground::RewardReputationToTeam(uint32 factionId, uint32 reputation, T
AddPct(repGain, itr->second->GetTotalAuraModifier(SPELL_AURA_MOD_REPUTATION_GAIN));
AddPct(repGain, itr->second->GetTotalAuraModifierByMiscValue(SPELL_AURA_MOD_FACTION_REPUTATION_GAIN, realFactionId));
if (FactionEntry const* factionEntry = sFactionStore.LookupEntry(realFactionId))
{
ScriptMgr::instance()->OnBeforePlayerReputationChange(itr->second, factionId, repGain, ReputationSource::PvP);
itr->second->GetReputationMgr().ModifyReputation(factionEntry, repGain);
}
}
}

View File

@ -1018,11 +1018,14 @@ void WorldSession::HandlePlayerLoginFromDB(LoginQueryHolder const& holder)
{
ReputationMgr& repMgr = pCurrChar->GetReputationMgr();
auto SendFullReputation = [&repMgr](std::initializer_list<uint32> factionsList)
auto SendFullReputation = [&repMgr, pCurrChar](std::initializer_list<uint32> factionsList)
{
for (auto const& itr : factionsList)
{
repMgr.SetOneFactionReputation(sFactionStore.LookupEntry(itr), 42999.f, false);
auto faction = sFactionStore.LookupEntry(itr);
float reputation = 42999.f;
ScriptMgr::instance()->OnBeforePlayerReputationChange(pCurrChar, faction->ID, reputation, ReputationSource::Config);
repMgr.SetOneFactionReputation(sFactionStore.LookupEntry(itr), reputation, false);
}
};

View File

@ -20,6 +20,8 @@ enum class ReputationSource : uint8 {
RepeatableQuest,
/// The player used a spell
Spell,
// The player get reputation by doing PvP related tasks
PvP,
/// The player get reputation by a console command
Console,
/// The player get some reputation by server configuration

View File

@ -29,6 +29,7 @@ EndScriptData */
#include "Pet.h"
#include "Player.h"
#include "ReputationMgr.h"
#include "ScriptMgr.h"
#include "StringConvert.h"
using namespace Acore::ChatCommands;
@ -826,8 +827,9 @@ public:
handler->SendErrorMessage(LANG_COMMAND_FACTION_NOREP_ERROR, factionEntry->name[handler->GetSessionDbcLocale()], factionId);
return false;
}
target->GetReputationMgr().SetOneFactionReputation(factionEntry, float(amount), false);
float rep = target->GetReputationMgr().GetReputation(factionId) - float(amount);
ScriptMgr::instance()->OnBeforePlayerReputationChange(target, factionId, rep, ReputationSource::Console);
target->GetReputationMgr().SetOneFactionReputation(factionEntry, rep, false);
target->GetReputationMgr().SendState(target->GetReputationMgr().GetState(factionEntry));
handler->PSendSysMessage(LANG_COMMAND_MODIFY_REP, factionEntry->name[handler->GetSessionDbcLocale()], factionId,

View File

@ -28,6 +28,7 @@ EndScriptData */
#include "ObjectMgr.h"
#include "Player.h"
#include "ReputationMgr.h"
#include "ScriptMgr.h"
using namespace Acore::ChatCommands;
@ -309,7 +310,9 @@ public:
{
if (FactionEntry const* factionEntry = sFactionStore.LookupEntry(repFaction))
{
player->GetReputationMgr().SetReputation(factionEntry, static_cast<float>(repValue));
auto repDiv = static_cast<float>(repValue - curRep);
ScriptMgr::instance()->OnBeforePlayerReputationChange(player, repFaction, repDiv, ReputationSource::Console);
player->GetReputationMgr().SetReputation(factionEntry, repDiv + curRep);
}
}
}
@ -323,7 +326,9 @@ public:
{
if (FactionEntry const* factionEntry = sFactionStore.LookupEntry(repFaction))
{
player->GetReputationMgr().SetReputation(factionEntry, static_cast<float>(repValue2));
auto repDiv = static_cast<float>(repValue2 - curRep);
ScriptMgr::instance()->OnBeforePlayerReputationChange(player, repFaction, repDiv, ReputationSource::Console);
player->GetReputationMgr().SetReputation(factionEntry, repDiv + curRep);
}
}
}

View File

@ -25,6 +25,7 @@
#include "OutdoorPvPScript.h"
#include "Player.h"
#include "ReputationMgr.h"
#include "ScriptMgr.h"
#include "Transport.h"
#include "World.h"
#include "WorldPacket.h"
@ -115,7 +116,9 @@ bool OutdoorPvPSI::HandleAreaTrigger(Player* player, uint32 trigger)
// add 19 honor
player->RewardHonor(nullptr, 1, 19);
// add 20 cenarion circle repu
player->GetReputationMgr().ModifyReputation(sFactionStore.LookupEntry(609), 20.f);
float reputation = 20.f;
ScriptMgr::instance()->OnBeforePlayerReputationChange(player, 609, reputation, ReputationSource::PvP);
player->GetReputationMgr().ModifyReputation(sFactionStore.LookupEntry(609), reputation);
// complete quest
player->KilledMonsterCredit(SI_TURNIN_QUEST_CM_A);
}
@ -141,7 +144,9 @@ bool OutdoorPvPSI::HandleAreaTrigger(Player* player, uint32 trigger)
// add 19 honor
player->RewardHonor(nullptr, 1, 19);
// add 20 cenarion circle repu
player->GetReputationMgr().ModifyReputation(sFactionStore.LookupEntry(609), 20.f);
float reputation = 20.f;
ScriptMgr::instance()->OnBeforePlayerReputationChange(player, 609, reputation, ReputationSource::PvP);
player->GetReputationMgr().ModifyReputation(sFactionStore.LookupEntry(609), reputation);
// complete quest
player->KilledMonsterCredit(SI_TURNIN_QUEST_CM_H);
}