Skip to content

Commit

Permalink
Include more ReputationSources
Browse files Browse the repository at this point in the history
  • Loading branch information
Tondorian committed Feb 4, 2025
1 parent 92e91ee commit 59fefdf
Show file tree
Hide file tree
Showing 6 changed files with 29 additions and 8 deletions.
4 changes: 4 additions & 0 deletions src/server/game/Battlegrounds/Battleground.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -744,7 +744,11 @@ 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);

}
}
}

Expand Down
7 changes: 5 additions & 2 deletions src/server/game/Handlers/CharacterHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1017,11 +1017,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);
}
};

Expand Down
2 changes: 2 additions & 0 deletions src/server/game/Reputation/ReputationSource.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
6 changes: 4 additions & 2 deletions src/server/scripts/Commands/cs_modify.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ EndScriptData */
#include "Pet.h"
#include "Player.h"
#include "ReputationMgr.h"
#include "ScriptMgr.h"
#include "StringConvert.h"

using namespace Acore::ChatCommands;
Expand Down Expand Up @@ -826,8 +827,9 @@ class modify_commandscript : public CommandScript
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,
Expand Down
9 changes: 7 additions & 2 deletions src/server/scripts/Commands/cs_quest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ EndScriptData */
#include "ObjectMgr.h"
#include "Player.h"
#include "ReputationMgr.h"
#include "ScriptMgr.h"

using namespace Acore::ChatCommands;

Expand Down Expand Up @@ -309,7 +310,9 @@ class quest_commandscript : public CommandScript
{
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);
}
}
}
Expand All @@ -323,7 +326,9 @@ class quest_commandscript : public CommandScript
{
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);
}
}
}
Expand Down
9 changes: 7 additions & 2 deletions src/server/scripts/OutdoorPvP/OutdoorPvPSI.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -114,7 +115,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);
}
Expand All @@ -140,7 +143,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);
}
Expand Down

0 comments on commit 59fefdf

Please sign in to comment.