mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-11 21:01:29 +00:00
[Bug Fix] Fix Character EXP Modifiers default (#4161)
# Notes - The `-1.0f` was causing these modifiers to be set to `0.0` and when people would enable them they would get no experience. - We now use the zone based grabbed methods when setting which will default to a value of `1.0f` if there is not a value found.
This commit is contained in:
parent
ee3d02bac6
commit
2c2a8cdb63
@ -74,9 +74,11 @@ public:
|
||||
};
|
||||
}
|
||||
|
||||
const auto& m = l.front();
|
||||
|
||||
return EXPModifier{
|
||||
.aa_modifier = l[0].aa_modifier,
|
||||
.exp_modifier = l[0].exp_modifier
|
||||
.aa_modifier = m.aa_modifier,
|
||||
.exp_modifier = m.exp_modifier
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@ -3165,6 +3165,11 @@ void Zone::ClearEXPModifier(Client* c)
|
||||
exp_modifiers.erase(c->CharacterID());
|
||||
}
|
||||
|
||||
void Zone::ClearEXPModifierByCharacterID(const uint32 character_id)
|
||||
{
|
||||
exp_modifiers.erase(character_id);
|
||||
}
|
||||
|
||||
float Zone::GetAAEXPModifier(Client* c)
|
||||
{
|
||||
const auto& l = exp_modifiers.find(c->CharacterID());
|
||||
@ -3177,6 +3182,18 @@ float Zone::GetAAEXPModifier(Client* c)
|
||||
return v.aa_modifier;
|
||||
}
|
||||
|
||||
float Zone::GetAAEXPModifierByCharacterID(const uint32 character_id)
|
||||
{
|
||||
const auto& l = exp_modifiers.find(character_id);
|
||||
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());
|
||||
@ -3189,6 +3206,18 @@ float Zone::GetEXPModifier(Client* c)
|
||||
return v.exp_modifier;
|
||||
}
|
||||
|
||||
float Zone::GetEXPModifierByCharacterID(const uint32 character_id)
|
||||
{
|
||||
const auto& l = exp_modifiers.find(character_id);
|
||||
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());
|
||||
@ -3209,6 +3238,26 @@ void Zone::SetAAEXPModifier(Client* c, float aa_modifier)
|
||||
);
|
||||
}
|
||||
|
||||
void Zone::SetAAEXPModifierByCharacterID(const uint32 character_id, float aa_modifier)
|
||||
{
|
||||
auto l = exp_modifiers.find(character_id);
|
||||
if (l == exp_modifiers.end()) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto& m = l->second;
|
||||
|
||||
m.aa_modifier = aa_modifier;
|
||||
|
||||
CharacterExpModifiersRepository::SetEXPModifier(
|
||||
database,
|
||||
character_id,
|
||||
GetZoneID(),
|
||||
GetInstanceVersion(),
|
||||
m
|
||||
);
|
||||
}
|
||||
|
||||
void Zone::SetEXPModifier(Client* c, float exp_modifier)
|
||||
{
|
||||
auto l = exp_modifiers.find(c->CharacterID());
|
||||
@ -3229,6 +3278,26 @@ void Zone::SetEXPModifier(Client* c, float exp_modifier)
|
||||
);
|
||||
}
|
||||
|
||||
void Zone::SetEXPModifierByCharacterID(const uint32 character_id, float exp_modifier)
|
||||
{
|
||||
auto l = exp_modifiers.find(character_id);
|
||||
if (l == exp_modifiers.end()) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto& m = l->second;
|
||||
|
||||
m.exp_modifier = exp_modifier;
|
||||
|
||||
CharacterExpModifiersRepository::SetEXPModifier(
|
||||
database,
|
||||
character_id,
|
||||
GetZoneID(),
|
||||
GetInstanceVersion(),
|
||||
m
|
||||
);
|
||||
}
|
||||
|
||||
bool Zone::IsIdleWhenEmpty() const
|
||||
{
|
||||
return m_idle_when_empty;
|
||||
|
||||
@ -269,10 +269,15 @@ public:
|
||||
void SendReloadMessage(std::string reload_type);
|
||||
|
||||
void ClearEXPModifier(Client* c);
|
||||
void ClearEXPModifierByCharacterID(const uint32 character_id);
|
||||
float GetAAEXPModifier(Client* c);
|
||||
float GetAAEXPModifierByCharacterID(const uint32 character_id);
|
||||
float GetEXPModifier(Client* c);
|
||||
float GetEXPModifierByCharacterID(const uint32 character_id);
|
||||
void SetAAEXPModifier(Client* c, float aa_modifier);
|
||||
void SetAAEXPModifierByCharacterID(const uint32 character_id, float aa_modifier);
|
||||
void SetEXPModifier(Client* c, float exp_modifier);
|
||||
void SetEXPModifierByCharacterID(const uint32 character_id, float exp_modifier);
|
||||
|
||||
void AddAggroMob() { aggroedmobs++; }
|
||||
void AddAuth(ServerZoneIncomingClient_Struct *szic);
|
||||
|
||||
@ -4270,7 +4270,7 @@ void ZoneDatabase::SetAAEXPModifierByCharID(
|
||||
instance_version,
|
||||
EXPModifier{
|
||||
.aa_modifier = aa_modifier,
|
||||
.exp_modifier = -1.0f
|
||||
.exp_modifier = zone->GetEXPModifierByCharacterID(character_id)
|
||||
}
|
||||
);
|
||||
}
|
||||
@ -4288,7 +4288,7 @@ void ZoneDatabase::SetEXPModifierByCharID(
|
||||
zone_id,
|
||||
instance_version,
|
||||
EXPModifier{
|
||||
.aa_modifier = -1.0f,
|
||||
.aa_modifier = zone->GetAAEXPModifierByCharacterID(character_id),
|
||||
.exp_modifier = exp_modifier
|
||||
}
|
||||
);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user