mirror of
https://github.com/EQEmu/Server.git
synced 2026-05-16 22:58:34 +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:
@@ -16,6 +16,7 @@
|
||||
#include "../../strings.h"
|
||||
#include <ctime>
|
||||
|
||||
|
||||
class BaseCharacterExpModifiersRepository {
|
||||
public:
|
||||
struct CharacterExpModifiers {
|
||||
|
||||
@@ -44,7 +44,61 @@ public:
|
||||
*/
|
||||
|
||||
// Custom extended repository methods here
|
||||
static EXPModifier GetEXPModifier(
|
||||
Database& db,
|
||||
uint32 character_id,
|
||||
uint32 zone_id,
|
||||
int16 instance_version
|
||||
)
|
||||
{
|
||||
const auto& l = CharacterExpModifiersRepository::GetWhere(
|
||||
db,
|
||||
fmt::format(
|
||||
SQL(
|
||||
`character_id` = {} AND
|
||||
(`zone_id` = {} OR `zone_id` = 0) AND
|
||||
(`instance_version` = {} OR `instance_version` = -1)
|
||||
ORDER BY `zone_id`, `instance_version` DESC
|
||||
LIMIT 1
|
||||
),
|
||||
character_id,
|
||||
zone_id,
|
||||
instance_version
|
||||
)
|
||||
);
|
||||
|
||||
if (l.empty()) {
|
||||
return EXPModifier{
|
||||
.aa_modifier = 1.0f,
|
||||
.exp_modifier = 1.0f
|
||||
};
|
||||
}
|
||||
|
||||
return EXPModifier{
|
||||
.aa_modifier = l[0].aa_modifier,
|
||||
.exp_modifier = l[0].exp_modifier
|
||||
};
|
||||
}
|
||||
|
||||
static void SetEXPModifier(
|
||||
Database& db,
|
||||
uint32 character_id,
|
||||
uint32 zone_id,
|
||||
int16 instance_version,
|
||||
EXPModifier m
|
||||
)
|
||||
{
|
||||
CharacterExpModifiersRepository::ReplaceOne(
|
||||
db,
|
||||
CharacterExpModifiersRepository::CharacterExpModifiers{
|
||||
.character_id = static_cast<int32_t>(character_id),
|
||||
.zone_id = static_cast<int32_t>(zone_id),
|
||||
.instance_version = instance_version,
|
||||
.aa_modifier = m.aa_modifier,
|
||||
.exp_modifier = m.exp_modifier
|
||||
}
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
#endif //EQEMU_CHARACTER_EXP_MODIFIERS_REPOSITORY_H
|
||||
|
||||
Reference in New Issue
Block a user