mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-17 07:18:37 +00:00
[Character] Character EXP Modifiers in Memory (#3934)
* Cleanup * Final push. * Update zonedb.cpp * Update zone.h * Update exp.cpp * Update zonedb.cpp --------- Co-authored-by: Chris Miles <akkadius1@gmail.com>
This commit is contained in:
@@ -55,6 +55,7 @@
|
||||
#include "../common/data_verification.h"
|
||||
#include "zone_reload.h"
|
||||
#include "../common/repositories/criteria/content_filter_criteria.h"
|
||||
#include "../common/repositories/character_exp_modifiers_repository.h"
|
||||
#include "../common/repositories/merchantlist_repository.h"
|
||||
#include "../common/repositories/object_repository.h"
|
||||
#include "../common/repositories/rule_sets_repository.h"
|
||||
@@ -3160,3 +3161,72 @@ void Zone::ReloadContentFlags()
|
||||
|
||||
safe_delete(pack);
|
||||
}
|
||||
|
||||
void Zone::ClearEXPModifier(Client* c)
|
||||
{
|
||||
exp_modifiers.erase(c->CharacterID());
|
||||
}
|
||||
|
||||
float Zone::GetAAEXPModifier(Client* c)
|
||||
{
|
||||
const auto& l = exp_modifiers.find(c->CharacterID());
|
||||
if (l == exp_modifiers.end()) {
|
||||
return 1.0f;
|
||||
}
|
||||
|
||||
const auto& v = l->second;
|
||||
|
||||
return v.aa_modifier;
|
||||
}
|
||||
|
||||
float Zone::GetEXPModifier(Client* c)
|
||||
{
|
||||
const auto& l = exp_modifiers.find(c->CharacterID());
|
||||
if (l == exp_modifiers.end()) {
|
||||
return 1.0f;
|
||||
}
|
||||
|
||||
const auto& v = l->second;
|
||||
|
||||
return v.exp_modifier;
|
||||
}
|
||||
|
||||
void Zone::SetAAEXPModifier(Client* c, float aa_modifier)
|
||||
{
|
||||
auto l = exp_modifiers.find(c->CharacterID());
|
||||
if (l == exp_modifiers.end()) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto& m = l->second;
|
||||
|
||||
m.aa_modifier = aa_modifier;
|
||||
|
||||
CharacterExpModifiersRepository::SetEXPModifier(
|
||||
database,
|
||||
c->CharacterID(),
|
||||
GetZoneID(),
|
||||
GetInstanceVersion(),
|
||||
m
|
||||
);
|
||||
}
|
||||
|
||||
void Zone::SetEXPModifier(Client* c, float exp_modifier)
|
||||
{
|
||||
auto l = exp_modifiers.find(c->CharacterID());
|
||||
if (l == exp_modifiers.end()) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto& m = l->second;
|
||||
|
||||
m.exp_modifier = exp_modifier;
|
||||
|
||||
CharacterExpModifiersRepository::SetEXPModifier(
|
||||
database,
|
||||
c->CharacterID(),
|
||||
GetZoneID(),
|
||||
GetInstanceVersion(),
|
||||
m
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user