[Base Data] Remove from shared memory and simplify (#4045)

* [Base Data] Remove from shared memory and simplify

- Removes Base Data loading from shared memory and puts it into zone.
- Changes type of `level` and `class` to `uint8_t` from `uint32_t` for consistency since we're renaming fields here anyway.
- Renames `unk1` to `hp_regen` in `base_data` table.
- Renames `unk2` to `end_regen` in `base_data` table.
- These changed fields were already mapped, we just hadn't renamed them for whatever reason.
- Regenerates Base Data repository.
- Adds `#reload base_data` to reload base data in real time.

* Cleanup

* Update shareddb.h

* Cleanup.

* Update shareddb.cpp

* Update main.cpp
This commit is contained in:
Alex King
2024-02-05 18:11:20 -05:00
committed by GitHub
parent b6b779723e
commit 8edf7a07e3
24 changed files with 213 additions and 381 deletions
+19 -20
View File
@@ -237,9 +237,10 @@ int64 Client::CalcHPRegen(bool bCombat)
item_regen += aabonuses.HPRegen;
int64 base = 0;
auto base_data = database.GetBaseData(GetLevel(), GetClass());
if (base_data)
base = static_cast<int>(base_data->hp_regen);
auto base_data = zone->GetBaseData(GetLevel(), GetClass());
if (base_data.level == GetLevel()) {
base = static_cast<int>(base_data.hp_regen);
}
auto level = GetLevel();
bool skip_innate = false;
@@ -486,9 +487,9 @@ int64 Client::CalcBaseHP()
stats += 255;
}
base_hp = 5;
auto base_data = database.GetBaseData(GetLevel(), GetClass());
if (base_data) {
base_hp += base_data->base_hp + (base_data->hp_factor * stats);
auto base_data = zone->GetBaseData(GetLevel(), GetClass());
if (base_data.level == GetLevel()) {
base_hp += base_data.hp + (base_data.hp_fac * stats);
base_hp += itembonuses.heroic_max_hp;
}
}
@@ -575,10 +576,9 @@ int64 Client::CalcBaseMana()
}
ConvertedWisInt = (3 * over200 - 300) / 2 + over200;
}
auto base_data = database.GetBaseData(GetLevel(), GetClass());
if (base_data) {
max_m = base_data->base_mana +
(ConvertedWisInt * base_data->mana_factor) + itembonuses.heroic_max_mana;
auto base_data = zone->GetBaseData(GetLevel(), GetClass());
if (base_data.level == GetLevel()) {
max_m = base_data.mana + (ConvertedWisInt * base_data.mana_fac) + itembonuses.heroic_max_mana;
}
}
else {
@@ -608,10 +608,9 @@ int64 Client::CalcBaseMana()
}
ConvertedWisInt = (3 * over200 - 300) / 2 + over200;
}
auto base_data = database.GetBaseData(GetLevel(), GetClass());
if (base_data) {
max_m = base_data->base_mana +
(ConvertedWisInt * base_data->mana_factor) + itembonuses.heroic_max_mana;
auto base_data = zone->GetBaseData(GetLevel(), GetClass());
if (base_data.level == GetLevel()) {
max_m = base_data.mana + (ConvertedWisInt * base_data.mana_fac) + itembonuses.heroic_max_mana;
}
}
else {
@@ -1639,9 +1638,9 @@ int64 Client::CalcBaseEndurance()
else if (stats > 100.0f) {
stats = 2.5f * (stats - 100.0f) + 100.0f;
}
auto base_data = database.GetBaseData(GetLevel(), GetClass());
if (base_data) {
base_end = base_data->base_end + itembonuses.heroic_max_end + (base_data->endurance_factor * static_cast<int>(stats));
auto base_data = zone->GetBaseData(GetLevel(), GetClass());
if (base_data.level == GetLevel()) {
base_end = base_data.end + itembonuses.heroic_max_end + (base_data.end_fac * static_cast<int>(stats));
}
}
else {
@@ -1676,9 +1675,9 @@ int64 Client::CalcEnduranceRegen(bool bCombat)
{
int64 base = 0;
if (!IsStarved()) {
auto base_data = database.GetBaseData(GetLevel(), GetClass());
if (base_data) {
base = static_cast<int>(base_data->end_regen);
auto base_data = zone->GetBaseData(GetLevel(), GetClass());
if (base_data.level == GetLevel()) {
base = static_cast<int>(base_data.end_regen);
if (!auto_attack && base > 0)
base += base / 2;
}