diff options
| author | Meji <alvaro.megias@outlook.com> | 2024-03-30 20:21:28 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-03-30 20:21:28 +0100 |
| commit | def601b4ff82ec8a90af60408a87cac92fdf070d (patch) | |
| tree | 4e5de744a4712a49b1126b8270ac02d842d56e32 /src/server/game/Entities/Creature | |
| parent | d8a82ab909543259be7632bb1e1b256ed6bfa4c2 (diff) | |
Core/Creatures: Changed the spawn health field in creature table to a percentage (#29801)
Diffstat (limited to 'src/server/game/Entities/Creature')
| -rw-r--r-- | src/server/game/Entities/Creature/Creature.cpp | 40 | ||||
| -rw-r--r-- | src/server/game/Entities/Creature/CreatureData.h | 3 |
2 files changed, 6 insertions, 37 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 18343779978..fedad2a592d 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -1492,8 +1492,7 @@ void Creature::SaveToDB(uint32 mapid, std::vector<Difficulty> const& spawnDiffic // prevent add data integrity problems data.wander_distance = GetDefaultMovementType() == IDLE_MOTION_TYPE ? 0.0f : m_wanderDistance; data.currentwaypoint = 0; - data.curhealth = GetHealth(); - data.curmana = GetPower(POWER_MANA); + data.curHealthPct = uint32(GetHealthPct()); // prevent add data integrity problems data.movementType = !m_wanderDistance && GetDefaultMovementType() == RANDOM_MOTION_TYPE ? IDLE_MOTION_TYPE : GetDefaultMovementType(); @@ -1546,8 +1545,7 @@ void Creature::SaveToDB(uint32 mapid, std::vector<Difficulty> const& spawnDiffic stmt->setUInt32(index++, m_respawnDelay); stmt->setFloat(index++, m_wanderDistance); stmt->setUInt32(index++, 0); - stmt->setUInt32(index++, GetHealth()); - stmt->setUInt32(index++, GetPower(POWER_MANA)); + stmt->setUInt32(index++, uint32(GetHealthPct())); stmt->setUInt8(index++, uint8(GetDefaultMovementType())); if (npcflag.has_value()) stmt->setUInt64(index++, *npcflag); @@ -1608,15 +1606,7 @@ void Creature::UpdateLevelDependantStats() Powers powerType = CalculateDisplayPowerType(); SetCreateMana(stats->BaseMana); SetStatPctModifier(UnitMods(UNIT_MOD_POWER_START + AsUnderlyingType(powerType)), BASE_PCT, GetCreatureDifficulty()->ManaModifier); - SetPowerType(powerType); - - if (PowerTypeEntry const* powerTypeEntry = sDB2Manager.GetPowerTypeEntry(powerType)) - { - if (powerTypeEntry->GetFlags().HasFlag(PowerTypeFlags::UnitsUseDefaultPowerOnInit)) - SetPower(powerType, powerTypeEntry->DefaultPower); - else - SetFullPower(powerType); - } + SetPowerType(powerType, true, true); // damage float basedamage = GetBaseDamageForLevel(level); @@ -1968,28 +1958,8 @@ void Creature::LoadEquipment(int8 id, bool force /*= true*/) void Creature::SetSpawnHealth() { - if (_staticFlags.HasFlag(CREATURE_STATIC_FLAG_5_NO_HEALTH_REGEN)) - return; - - uint32 curhealth; - if (m_creatureData && !_regenerateHealth) - { - curhealth = m_creatureData->curhealth; - if (curhealth) - { - curhealth = uint32(curhealth*GetHealthMod(GetCreatureTemplate()->Classification)); - if (curhealth < 1) - curhealth = 1; - } - SetPower(POWER_MANA, m_creatureData->curmana); - } - else - { - curhealth = GetMaxHealth(); - SetFullPower(POWER_MANA); - } - - SetHealth((m_deathState == ALIVE || m_deathState == JUST_RESPAWNED) ? curhealth : 0); + SetHealth(CountPctFromMaxHealth(m_creatureData ? m_creatureData->curHealthPct : 100)); + SetInitialPowerValue(GetPowerType()); } bool Creature::hasQuest(uint32 quest_id) const diff --git a/src/server/game/Entities/Creature/CreatureData.h b/src/server/game/Entities/Creature/CreatureData.h index 976244a8f85..dea0e4be37b 100644 --- a/src/server/game/Entities/Creature/CreatureData.h +++ b/src/server/game/Entities/Creature/CreatureData.h @@ -592,8 +592,7 @@ struct CreatureData : public SpawnData int8 equipmentId = 0; float wander_distance = 0.0f; uint32 currentwaypoint = 0; - uint32 curhealth = 0; - uint32 curmana = 0; + uint32 curHealthPct = 0; uint8 movementType = 0; Optional<uint64> npcflag; Optional<uint32> unit_flags; // enum UnitFlags mask values |
