aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server')
-rw-r--r--src/server/game/Entities/Creature/Creature.cpp129
-rw-r--r--src/server/game/Entities/Creature/Creature.h11
-rw-r--r--src/server/game/Entities/Creature/CreatureData.h2
-rw-r--r--src/server/game/Entities/Pet/Pet.cpp2
-rw-r--r--src/server/game/Entities/Unit/StatSystem.cpp2
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp2
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp4
-rw-r--r--src/server/game/Miscellaneous/Formulas.h2
-rw-r--r--src/server/game/Miscellaneous/SharedDefines.h18
-rw-r--r--src/server/game/Spells/SpellEffects.cpp2
-rw-r--r--src/server/game/World/World.cpp75
-rw-r--r--src/server/game/World/World.h42
-rw-r--r--src/server/worldserver/worldserver.conf.dist163
13 files changed, 256 insertions, 198 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index 884d48f6f7e..48be8874ff8 100644
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -192,7 +192,7 @@ WorldPacket CreatureTemplate::BuildQueryData(LocaleConstant loc, Difficulty diff
stats.CreatureType = type;
stats.CreatureFamily = family;
- stats.Classification = rank;
+ stats.Classification = uint32(Classification);
for (uint32 i = 0; i < MAX_KILL_CREDIT; ++i)
stats.ProxyCreatureID[i] = KillCredit[i];
@@ -1114,19 +1114,25 @@ bool Creature::Create(ObjectGuid::LowType guidlow, Map* map, uint32 entry, Posit
if (cinfo->flags_extra & CREATURE_FLAG_EXTRA_DUNGEON_BOSS && map->IsDungeon())
m_respawnDelay = 0; // special value, prevents respawn for dungeon bosses unless overridden
- switch (cinfo->rank)
+ switch (GetCreatureClassification())
{
- case CREATURE_ELITE_RARE:
- m_corpseDelay = sWorld->getIntConfig(CONFIG_CORPSE_DECAY_RARE);
- break;
- case CREATURE_ELITE_ELITE:
+ case CreatureClassifications::Elite:
m_corpseDelay = sWorld->getIntConfig(CONFIG_CORPSE_DECAY_ELITE);
break;
- case CREATURE_ELITE_RAREELITE:
+ case CreatureClassifications::RareElite:
m_corpseDelay = sWorld->getIntConfig(CONFIG_CORPSE_DECAY_RAREELITE);
break;
- case CREATURE_ELITE_WORLDBOSS:
- m_corpseDelay = sWorld->getIntConfig(CONFIG_CORPSE_DECAY_WORLDBOSS);
+ case CreatureClassifications::Obsolete:
+ m_corpseDelay = sWorld->getIntConfig(CONFIG_CORPSE_DECAY_OBSOLETE);
+ break;
+ case CreatureClassifications::Rare:
+ m_corpseDelay = sWorld->getIntConfig(CONFIG_CORPSE_DECAY_RARE);
+ break;
+ case CreatureClassifications::Trivial:
+ m_corpseDelay = sWorld->getIntConfig(CONFIG_CORPSE_DECAY_TRIVIAL);
+ break;
+ case CreatureClassifications::MinusMob:
+ m_corpseDelay = sWorld->getIntConfig(CONFIG_CORPSE_DECAY_MINUSMOB);
break;
default:
m_corpseDelay = sWorld->getIntConfig(CONFIG_CORPSE_DECAY_NORMAL);
@@ -1574,12 +1580,12 @@ void Creature::SelectLevel()
void Creature::UpdateLevelDependantStats()
{
CreatureTemplate const* cInfo = GetCreatureTemplate();
- uint32 rank = IsPet() ? 0 : cInfo->rank;
+ CreatureClassifications classification = IsPet() ? CreatureClassifications::Normal : cInfo->Classification;
uint8 level = GetLevel();
CreatureBaseStats const* stats = sObjectMgr->GetCreatureBaseStats(level, cInfo->unit_class);
// health
- float healthmod = _GetHealthMod(rank);
+ float healthmod = GetHealthMod(classification);
uint32 basehp = GetMaxHealthByLevel(level);
uint32 health = uint32(basehp * healthmod);
@@ -1641,22 +1647,26 @@ void Creature::SelectWildBattlePetLevel()
}
}
-float Creature::_GetHealthMod(int32 Rank)
+float Creature::GetHealthMod(CreatureClassifications classification)
{
- switch (Rank) // define rates for each elite rank
+ switch (classification)
{
- case CREATURE_ELITE_NORMAL:
- return sWorld->getRate(RATE_CREATURE_NORMAL_HP);
- case CREATURE_ELITE_ELITE:
- return sWorld->getRate(RATE_CREATURE_ELITE_ELITE_HP);
- case CREATURE_ELITE_RAREELITE:
- return sWorld->getRate(RATE_CREATURE_ELITE_RAREELITE_HP);
- case CREATURE_ELITE_WORLDBOSS:
- return sWorld->getRate(RATE_CREATURE_ELITE_WORLDBOSS_HP);
- case CREATURE_ELITE_RARE:
- return sWorld->getRate(RATE_CREATURE_ELITE_RARE_HP);
+ case CreatureClassifications::Normal:
+ return sWorld->getRate(RATE_CREATURE_HP_NORMAL);
+ case CreatureClassifications::Elite:
+ return sWorld->getRate(RATE_CREATURE_HP_ELITE);
+ case CreatureClassifications::RareElite:
+ return sWorld->getRate(RATE_CREATURE_HP_RAREELITE);
+ case CreatureClassifications::Obsolete:
+ return sWorld->getRate(RATE_CREATURE_HP_OBSOLETE);
+ case CreatureClassifications::Rare:
+ return sWorld->getRate(RATE_CREATURE_HP_RARE);
+ case CreatureClassifications::Trivial:
+ return sWorld->getRate(RATE_CREATURE_HP_TRIVIAL);
+ case CreatureClassifications::MinusMob:
+ return sWorld->getRate(RATE_CREATURE_HP_MINUSMOB);
default:
- return sWorld->getRate(RATE_CREATURE_ELITE_ELITE_HP);
+ return sWorld->getRate(RATE_CREATURE_HP_ELITE);
}
}
@@ -1666,41 +1676,49 @@ void Creature::LowerPlayerDamageReq(uint64 unDamage)
m_PlayerDamageReq > unDamage ? m_PlayerDamageReq -= unDamage : m_PlayerDamageReq = 0;
}
-float Creature::_GetDamageMod(int32 Rank)
-{
- switch (Rank) // define rates for each elite rank
- {
- case CREATURE_ELITE_NORMAL:
- return sWorld->getRate(RATE_CREATURE_NORMAL_DAMAGE);
- case CREATURE_ELITE_ELITE:
- return sWorld->getRate(RATE_CREATURE_ELITE_ELITE_DAMAGE);
- case CREATURE_ELITE_RAREELITE:
- return sWorld->getRate(RATE_CREATURE_ELITE_RAREELITE_DAMAGE);
- case CREATURE_ELITE_WORLDBOSS:
- return sWorld->getRate(RATE_CREATURE_ELITE_WORLDBOSS_DAMAGE);
- case CREATURE_ELITE_RARE:
- return sWorld->getRate(RATE_CREATURE_ELITE_RARE_DAMAGE);
+float Creature::GetDamageMod(CreatureClassifications classification)
+{
+ switch (classification)
+ {
+ case CreatureClassifications::Normal:
+ return sWorld->getRate(RATE_CREATURE_DAMAGE_NORMAL);
+ case CreatureClassifications::Elite:
+ return sWorld->getRate(RATE_CREATURE_DAMAGE_ELITE);
+ case CreatureClassifications::RareElite:
+ return sWorld->getRate(RATE_CREATURE_DAMAGE_RAREELITE);
+ case CreatureClassifications::Obsolete:
+ return sWorld->getRate(RATE_CREATURE_DAMAGE_OBSOLETE);
+ case CreatureClassifications::Rare:
+ return sWorld->getRate(RATE_CREATURE_DAMAGE_RARE);
+ case CreatureClassifications::Trivial:
+ return sWorld->getRate(RATE_CREATURE_DAMAGE_TRIVIAL);
+ case CreatureClassifications::MinusMob:
+ return sWorld->getRate(RATE_CREATURE_DAMAGE_MINUSMOB);
default:
- return sWorld->getRate(RATE_CREATURE_ELITE_ELITE_DAMAGE);
+ return sWorld->getRate(RATE_CREATURE_DAMAGE_ELITE);
}
}
-float Creature::GetSpellDamageMod(int32 Rank) const
+float Creature::GetSpellDamageMod(CreatureClassifications classification) const
{
- switch (Rank) // define rates for each elite rank
+ switch (classification)
{
- case CREATURE_ELITE_NORMAL:
- return sWorld->getRate(RATE_CREATURE_NORMAL_SPELLDAMAGE);
- case CREATURE_ELITE_ELITE:
- return sWorld->getRate(RATE_CREATURE_ELITE_ELITE_SPELLDAMAGE);
- case CREATURE_ELITE_RAREELITE:
- return sWorld->getRate(RATE_CREATURE_ELITE_RAREELITE_SPELLDAMAGE);
- case CREATURE_ELITE_WORLDBOSS:
- return sWorld->getRate(RATE_CREATURE_ELITE_WORLDBOSS_SPELLDAMAGE);
- case CREATURE_ELITE_RARE:
- return sWorld->getRate(RATE_CREATURE_ELITE_RARE_SPELLDAMAGE);
+ case CreatureClassifications::Normal:
+ return sWorld->getRate(RATE_CREATURE_SPELLDAMAGE_NORMAL);
+ case CreatureClassifications::Elite:
+ return sWorld->getRate(RATE_CREATURE_SPELLDAMAGE_ELITE);
+ case CreatureClassifications::RareElite:
+ return sWorld->getRate(RATE_CREATURE_SPELLDAMAGE_RAREELITE);
+ case CreatureClassifications::Obsolete:
+ return sWorld->getRate(RATE_CREATURE_SPELLDAMAGE_OBSOLETE);
+ case CreatureClassifications::Rare:
+ return sWorld->getRate(RATE_CREATURE_SPELLDAMAGE_RARE);
+ case CreatureClassifications::Trivial:
+ return sWorld->getRate(RATE_CREATURE_SPELLDAMAGE_TRIVIAL);
+ case CreatureClassifications::MinusMob:
+ return sWorld->getRate(RATE_CREATURE_SPELLDAMAGE_MINUSMOB);
default:
- return sWorld->getRate(RATE_CREATURE_ELITE_ELITE_SPELLDAMAGE);
+ return sWorld->getRate(RATE_CREATURE_SPELLDAMAGE_ELITE);
}
}
@@ -1948,7 +1966,7 @@ void Creature::SetSpawnHealth()
curhealth = m_creatureData->curhealth;
if (curhealth)
{
- curhealth = uint32(curhealth*_GetHealthMod(GetCreatureTemplate()->rank));
+ curhealth = uint32(curhealth*GetHealthMod(GetCreatureTemplate()->Classification));
if (curhealth < 1)
curhealth = 1;
}
@@ -2444,13 +2462,12 @@ bool Creature::IsImmunedToSpellEffect(SpellInfo const* spellInfo, SpellEffectInf
return Unit::IsImmunedToSpellEffect(spellInfo, spellEffectInfo, caster, requireImmunityPurgesEffectAttribute);
}
-bool Creature::isElite() const
+bool Creature::IsElite() const
{
if (IsPet())
return false;
- uint32 rank = GetCreatureTemplate()->rank;
- return rank != CREATURE_ELITE_NORMAL && rank != CREATURE_ELITE_RARE;
+ return HasClassification(CreatureClassifications::Elite) || HasClassification(CreatureClassifications::RareElite);
}
bool Creature::isWorldBoss() const
diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h
index 46aa837a386..8c77b6dd3eb 100644
--- a/src/server/game/Entities/Creature/Creature.h
+++ b/src/server/game/Entities/Creature/Creature.h
@@ -129,6 +129,9 @@ class TC_GAME_API Creature : public Unit, public GridObject<Creature>, public Ma
MovementGeneratorType GetDefaultMovementType() const override { return m_defaultMovementType; }
void SetDefaultMovementType(MovementGeneratorType mgt) { m_defaultMovementType = mgt; }
+ CreatureClassifications GetCreatureClassification() const { return GetCreatureTemplate()->Classification; }
+ bool HasClassification(CreatureClassifications classification) const { return GetCreatureTemplate()->Classification == classification; }
+
bool IsDungeonBoss() const { return (GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_DUNGEON_BOSS) != 0; }
bool IsAffectedByDiminishingReturns() const override { return Unit::IsAffectedByDiminishingReturns() || (GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_ALL_DIMINISH) != 0; }
@@ -157,7 +160,7 @@ class TC_GAME_API Creature : public Unit, public GridObject<Creature>, public Ma
bool CanCreatureAttack(Unit const* victim, bool force = true) const;
void LoadTemplateImmunities();
bool IsImmunedToSpellEffect(SpellInfo const* spellInfo, SpellEffectInfo const& spellEffectInfo, WorldObject const* caster, bool requireImmunityPurgesEffectAttribute = false) const override;
- bool isElite() const;
+ bool IsElite() const;
bool isWorldBoss() const;
bool HasScalableLevels() const;
@@ -208,7 +211,7 @@ class TC_GAME_API Creature : public Unit, public GridObject<Creature>, public Ma
uint8 GetCurrentEquipmentId() const { return m_equipmentId; }
void SetCurrentEquipmentId(uint8 id) { m_equipmentId = id; }
- float GetSpellDamageMod(int32 Rank) const;
+ float GetSpellDamageMod(CreatureClassifications classification) const;
VendorItemData const* GetVendorItems() const;
uint32 GetVendorItemCurrentCount(VendorItem const* vItem);
@@ -366,7 +369,7 @@ class TC_GAME_API Creature : public Unit, public GridObject<Creature>, public Ma
void SetRespawnCompatibilityMode(bool mode = true) { m_respawnCompatibilityMode = mode; }
bool GetRespawnCompatibilityMode() { return m_respawnCompatibilityMode; }
- static float _GetDamageMod(int32 Rank);
+ static float GetDamageMod(CreatureClassifications classification);
float m_SightDistance, m_CombatDistance;
@@ -436,7 +439,7 @@ class TC_GAME_API Creature : public Unit, public GridObject<Creature>, public Ma
// vendor items
VendorItemCounts m_vendorItemCounts;
- static float _GetHealthMod(int32 Rank);
+ static float GetHealthMod(CreatureClassifications classification);
GuidUnorderedSet m_tapList;
bool m_dontClearTapListOnEvade;
diff --git a/src/server/game/Entities/Creature/CreatureData.h b/src/server/game/Entities/Creature/CreatureData.h
index 31961aa04c9..1f706e5c8d2 100644
--- a/src/server/game/Entities/Creature/CreatureData.h
+++ b/src/server/game/Entities/Creature/CreatureData.h
@@ -518,7 +518,7 @@ struct TC_GAME_API CreatureTemplate
float speed_walk;
float speed_run;
float scale;
- uint32 rank;
+ CreatureClassifications Classification;
uint32 dmgschool;
uint32 BaseAttackTime;
uint32 RangeAttackTime;
diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp
index 067b2f6b74f..35da121270d 100644
--- a/src/server/game/Entities/Pet/Pet.cpp
+++ b/src/server/game/Entities/Pet/Pet.cpp
@@ -908,7 +908,7 @@ bool Guardian::InitStatsForLevel(uint8 petlevel)
ApplyLevelScaling();
CreatureDifficulty const* creatureDifficulty = GetCreatureDifficulty();
- SetCreateHealth(std::max(sDB2Manager.EvaluateExpectedStat(ExpectedStatType::CreatureHealth, petlevel, creatureDifficulty->GetHealthScalingExpansion(), m_unitData->ContentTuningID, Classes(cinfo->unit_class), 0) * creatureDifficulty->HealthModifier * _GetHealthMod(cinfo->rank), 1.0f));
+ SetCreateHealth(std::max(sDB2Manager.EvaluateExpectedStat(ExpectedStatType::CreatureHealth, petlevel, creatureDifficulty->GetHealthScalingExpansion(), m_unitData->ContentTuningID, Classes(cinfo->unit_class), 0) * creatureDifficulty->HealthModifier * GetHealthMod(cinfo->Classification), 1.0f));
SetCreateMana(stats->BaseMana);
SetCreateStat(STAT_STRENGTH, 22);
SetCreateStat(STAT_AGILITY, 22);
diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp
index 3373462cba6..5f97bb49a7c 100644
--- a/src/server/game/Entities/Unit/StatSystem.cpp
+++ b/src/server/game/Entities/Unit/StatSystem.cpp
@@ -1034,7 +1034,7 @@ void Creature::CalculateMinMaxDamage(WeaponAttackType attType, bool normalized,
float basePct = GetPctModifierValue(unitMod, BASE_PCT) * attackSpeedMulti;
float totalValue = GetFlatModifierValue(unitMod, TOTAL_VALUE);
float totalPct = addTotalPct ? GetPctModifierValue(unitMod, TOTAL_PCT) : 1.0f;
- float dmgMultiplier = GetCreatureDifficulty()->DamageModifier; // = DamageModifier * _GetDamageMod(rank);
+ float dmgMultiplier = GetCreatureDifficulty()->DamageModifier; // = DamageModifier * GetDamageMod(rank);
minDamage = ((weaponMinDamage + baseValue) * dmgMultiplier * basePct + totalValue) * totalPct;
maxDamage = ((weaponMaxDamage + baseValue) * dmgMultiplier * basePct + totalValue) * totalPct;
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index a6742b85860..c805ba9025e 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -6635,7 +6635,7 @@ float Unit::SpellDamagePctDone(Unit* victim, SpellInfo const* spellProto, Damage
// Pet damage?
if (GetTypeId() == TYPEID_UNIT && !IsPet())
- DoneTotalMod *= ToCreature()->GetSpellDamageMod(ToCreature()->GetCreatureTemplate()->rank);
+ DoneTotalMod *= ToCreature()->GetSpellDamageMod(ToCreature()->GetCreatureTemplate()->Classification);
// Versatility
if (Player* modOwner = GetSpellModOwner())
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index 27456a6e6d3..f75ea583546 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -427,7 +427,7 @@ void ObjectMgr::LoadCreatureTemplate(Field* fields)
creatureTemplate.speed_walk = fields[12].GetFloat();
creatureTemplate.speed_run = fields[13].GetFloat();
creatureTemplate.scale = fields[14].GetFloat();
- creatureTemplate.rank = uint32(fields[15].GetUInt8());
+ creatureTemplate.Classification = CreatureClassifications(fields[15].GetUInt8());
creatureTemplate.dmgschool = uint32(fields[16].GetInt8());
creatureTemplate.BaseAttackTime = fields[17].GetUInt32();
creatureTemplate.RangeAttackTime = fields[18].GetUInt32();
@@ -973,7 +973,7 @@ void ObjectMgr::LoadCreatureTemplateDifficulty()
CreatureStaticFlags6(fields[23].GetUInt32()), CreatureStaticFlags7(fields[24].GetUInt32()), CreatureStaticFlags8(fields[25].GetUInt32()));
// TODO: Check if this still applies
- creatureDifficulty.DamageModifier *= Creature::_GetDamageMod(itr->second.rank);
+ creatureDifficulty.DamageModifier *= Creature::GetDamageMod(itr->second.Classification);
if (creatureDifficulty.HealthScalingExpansion < EXPANSION_LEVEL_CURRENT || creatureDifficulty.HealthScalingExpansion >= MAX_EXPANSIONS)
{
diff --git a/src/server/game/Miscellaneous/Formulas.h b/src/server/game/Miscellaneous/Formulas.h
index 6630602b026..6a1f5d1540a 100644
--- a/src/server/game/Miscellaneous/Formulas.h
+++ b/src/server/game/Miscellaneous/Formulas.h
@@ -191,7 +191,7 @@ namespace Trinity
if ((uint32(creature->GetCreatureDifficulty()->GetHealthScalingExpansion()) < GetExpansionForLevel(player->GetLevel())))
gain = uint32(round(gain / 10.0f));
- if (creature->isElite())
+ if (creature->IsElite())
{
// Elites in instances have a 2.75x XP bonus instead of the regular 2x world bonus.
if (u->GetMap()->IsDungeon())
diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h
index 71dd99198c4..8573ddc7527 100644
--- a/src/server/game/Miscellaneous/SharedDefines.h
+++ b/src/server/game/Miscellaneous/SharedDefines.h
@@ -4727,15 +4727,15 @@ enum CreatureTypeFlags2
CREATURE_TYPE_FLAG_2_UNK8 = 0x00000080
};
-enum CreatureEliteType
-{
- CREATURE_ELITE_NORMAL = 0,
- CREATURE_ELITE_ELITE = 1,
- CREATURE_ELITE_RAREELITE = 2,
- CREATURE_ELITE_WORLDBOSS = 3,
- CREATURE_ELITE_RARE = 4,
- CREATURE_ELITE_TRIVIAL = 5, // found in 2.2.3 for 2 mobs
- CREATURE_WEAK = 6
+enum class CreatureClassifications : uint32
+{
+ Normal = 0,
+ Elite = 1,
+ RareElite = 2,
+ Obsolete = 3,
+ Rare = 4,
+ Trivial = 5,
+ MinusMob = 6
};
// Holidays.dbc (9.0.2.37176)
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 1895edd06b1..3a538372a0b 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -3832,7 +3832,7 @@ void Spell::EffectSkinning()
if (uint32 pureSkillValue = player->GetPureSkillValue(skinningSkill))
{
// Double chances for elites
- player->UpdateGatherSkill(skinningSkill, pureSkillValue, reqValue, creature->isElite() ? 2 : 1);
+ player->UpdateGatherSkill(skinningSkill, pureSkillValue, reqValue, creature->IsElite() ? 2 : 1);
}
}
}
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index 2b1a74ffeac..7fdb816ffbc 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -659,36 +659,42 @@ void World::LoadConfigSettings(bool reload)
TC_LOG_ERROR("server.loading", "Rate.RepairCost ({}) must be >=0. Using 0.0 instead.", rate_values[RATE_REPAIRCOST]);
rate_values[RATE_REPAIRCOST] = 0.0f;
}
- rate_values[RATE_REPUTATION_GAIN] = sConfigMgr->GetFloatDefault("Rate.Reputation.Gain", 1.0f);
- rate_values[RATE_REPUTATION_LOWLEVEL_KILL] = sConfigMgr->GetFloatDefault("Rate.Reputation.LowLevel.Kill", 1.0f);
- rate_values[RATE_REPUTATION_LOWLEVEL_QUEST] = sConfigMgr->GetFloatDefault("Rate.Reputation.LowLevel.Quest", 1.0f);
+ rate_values[RATE_REPUTATION_GAIN] = sConfigMgr->GetFloatDefault("Rate.Reputation.Gain", 1.0f);
+ rate_values[RATE_REPUTATION_LOWLEVEL_KILL] = sConfigMgr->GetFloatDefault("Rate.Reputation.LowLevel.Kill", 1.0f);
+ rate_values[RATE_REPUTATION_LOWLEVEL_QUEST] = sConfigMgr->GetFloatDefault("Rate.Reputation.LowLevel.Quest", 1.0f);
rate_values[RATE_REPUTATION_RECRUIT_A_FRIEND_BONUS] = sConfigMgr->GetFloatDefault("Rate.Reputation.RecruitAFriendBonus", 0.1f);
- rate_values[RATE_CREATURE_NORMAL_DAMAGE] = sConfigMgr->GetFloatDefault("Rate.Creature.Normal.Damage", 1.0f);
- rate_values[RATE_CREATURE_ELITE_ELITE_DAMAGE] = sConfigMgr->GetFloatDefault("Rate.Creature.Elite.Elite.Damage", 1.0f);
- rate_values[RATE_CREATURE_ELITE_RAREELITE_DAMAGE] = sConfigMgr->GetFloatDefault("Rate.Creature.Elite.RAREELITE.Damage", 1.0f);
- rate_values[RATE_CREATURE_ELITE_WORLDBOSS_DAMAGE] = sConfigMgr->GetFloatDefault("Rate.Creature.Elite.WORLDBOSS.Damage", 1.0f);
- rate_values[RATE_CREATURE_ELITE_RARE_DAMAGE] = sConfigMgr->GetFloatDefault("Rate.Creature.Elite.RARE.Damage", 1.0f);
- rate_values[RATE_CREATURE_NORMAL_HP] = sConfigMgr->GetFloatDefault("Rate.Creature.Normal.HP", 1.0f);
- rate_values[RATE_CREATURE_ELITE_ELITE_HP] = sConfigMgr->GetFloatDefault("Rate.Creature.Elite.Elite.HP", 1.0f);
- rate_values[RATE_CREATURE_ELITE_RAREELITE_HP] = sConfigMgr->GetFloatDefault("Rate.Creature.Elite.RAREELITE.HP", 1.0f);
- rate_values[RATE_CREATURE_ELITE_WORLDBOSS_HP] = sConfigMgr->GetFloatDefault("Rate.Creature.Elite.WORLDBOSS.HP", 1.0f);
- rate_values[RATE_CREATURE_ELITE_RARE_HP] = sConfigMgr->GetFloatDefault("Rate.Creature.Elite.RARE.HP", 1.0f);
- rate_values[RATE_CREATURE_NORMAL_SPELLDAMAGE] = sConfigMgr->GetFloatDefault("Rate.Creature.Normal.SpellDamage", 1.0f);
- rate_values[RATE_CREATURE_ELITE_ELITE_SPELLDAMAGE] = sConfigMgr->GetFloatDefault("Rate.Creature.Elite.Elite.SpellDamage", 1.0f);
- rate_values[RATE_CREATURE_ELITE_RAREELITE_SPELLDAMAGE] = sConfigMgr->GetFloatDefault("Rate.Creature.Elite.RAREELITE.SpellDamage", 1.0f);
- rate_values[RATE_CREATURE_ELITE_WORLDBOSS_SPELLDAMAGE] = sConfigMgr->GetFloatDefault("Rate.Creature.Elite.WORLDBOSS.SpellDamage", 1.0f);
- rate_values[RATE_CREATURE_ELITE_RARE_SPELLDAMAGE] = sConfigMgr->GetFloatDefault("Rate.Creature.Elite.RARE.SpellDamage", 1.0f);
- rate_values[RATE_CREATURE_AGGRO] = sConfigMgr->GetFloatDefault("Rate.Creature.Aggro", 1.0f);
- rate_values[RATE_REST_INGAME] = sConfigMgr->GetFloatDefault("Rate.Rest.InGame", 1.0f);
- rate_values[RATE_REST_OFFLINE_IN_TAVERN_OR_CITY] = sConfigMgr->GetFloatDefault("Rate.Rest.Offline.InTavernOrCity", 1.0f);
- rate_values[RATE_REST_OFFLINE_IN_WILDERNESS] = sConfigMgr->GetFloatDefault("Rate.Rest.Offline.InWilderness", 1.0f);
- rate_values[RATE_DAMAGE_FALL] = sConfigMgr->GetFloatDefault("Rate.Damage.Fall", 1.0f);
- rate_values[RATE_AUCTION_TIME] = sConfigMgr->GetFloatDefault("Rate.Auction.Time", 1.0f);
- rate_values[RATE_AUCTION_DEPOSIT] = sConfigMgr->GetFloatDefault("Rate.Auction.Deposit", 1.0f);
- rate_values[RATE_AUCTION_CUT] = sConfigMgr->GetFloatDefault("Rate.Auction.Cut", 1.0f);
- rate_values[RATE_HONOR] = sConfigMgr->GetFloatDefault("Rate.Honor", 1.0f);
- rate_values[RATE_INSTANCE_RESET_TIME] = sConfigMgr->GetFloatDefault("Rate.InstanceResetTime", 1.0f);
- rate_values[RATE_TALENT] = sConfigMgr->GetFloatDefault("Rate.Talent", 1.0f);
+ rate_values[RATE_CREATURE_HP_NORMAL] = sConfigMgr->GetFloatDefault("Rate.Creature.HP.Normal", 1.0f);
+ rate_values[RATE_CREATURE_HP_ELITE] = sConfigMgr->GetFloatDefault("Rate.Creature.HP.Elite", 1.0f);
+ rate_values[RATE_CREATURE_HP_RAREELITE] = sConfigMgr->GetFloatDefault("Rate.Creature.HP.RareElite", 1.0f);
+ rate_values[RATE_CREATURE_HP_OBSOLETE] = sConfigMgr->GetFloatDefault("Rate.Creature.HP.Obsolete", 1.0f);
+ rate_values[RATE_CREATURE_HP_RARE] = sConfigMgr->GetFloatDefault("Rate.Creature.HP.Rare", 1.0f);
+ rate_values[RATE_CREATURE_HP_TRIVIAL] = sConfigMgr->GetFloatDefault("Rate.Creature.HP.Trivial", 1.0f);
+ rate_values[RATE_CREATURE_HP_MINUSMOB] = sConfigMgr->GetFloatDefault("Rate.Creature.HP.MinusMob", 1.0f);
+ rate_values[RATE_CREATURE_DAMAGE_NORMAL] = sConfigMgr->GetFloatDefault("Rate.Creature.Damage.Normal", 1.0f);
+ rate_values[RATE_CREATURE_DAMAGE_ELITE] = sConfigMgr->GetFloatDefault("Rate.Creature.Damage.Elite", 1.0f);
+ rate_values[RATE_CREATURE_DAMAGE_RAREELITE] = sConfigMgr->GetFloatDefault("Rate.Creature.Damage.RareElite", 1.0f);
+ rate_values[RATE_CREATURE_DAMAGE_OBSOLETE] = sConfigMgr->GetFloatDefault("Rate.Creature.Damage.Obsolete", 1.0f);
+ rate_values[RATE_CREATURE_DAMAGE_RARE] = sConfigMgr->GetFloatDefault("Rate.Creature.Damage.Rare", 1.0f);
+ rate_values[RATE_CREATURE_DAMAGE_TRIVIAL] = sConfigMgr->GetFloatDefault("Rate.Creature.Damage.Trivial", 1.0f);
+ rate_values[RATE_CREATURE_DAMAGE_MINUSMOB] = sConfigMgr->GetFloatDefault("Rate.Creature.Damage.MinusMob", 1.0f);
+ rate_values[RATE_CREATURE_SPELLDAMAGE_NORMAL] = sConfigMgr->GetFloatDefault("Rate.Creature.SpellDamage.Normal", 1.0f);
+ rate_values[RATE_CREATURE_SPELLDAMAGE_ELITE] = sConfigMgr->GetFloatDefault("Rate.Creature.SpellDamage.Elite", 1.0f);
+ rate_values[RATE_CREATURE_SPELLDAMAGE_RAREELITE] = sConfigMgr->GetFloatDefault("Rate.Creature.SpellDamage.RareElite", 1.0f);
+ rate_values[RATE_CREATURE_SPELLDAMAGE_OBSOLETE] = sConfigMgr->GetFloatDefault("Rate.Creature.SpellDamage.Obsolete", 1.0f);
+ rate_values[RATE_CREATURE_SPELLDAMAGE_RARE] = sConfigMgr->GetFloatDefault("Rate.Creature.SpellDamage.Rare", 1.0f);
+ rate_values[RATE_CREATURE_SPELLDAMAGE_TRIVIAL] = sConfigMgr->GetFloatDefault("Rate.Creature.SpellDamage.Trivial", 1.0f);
+ rate_values[RATE_CREATURE_SPELLDAMAGE_MINUSMOB] = sConfigMgr->GetFloatDefault("Rate.Creature.SpellDamage.MinusMob", 1.0f);
+ rate_values[RATE_CREATURE_AGGRO] = sConfigMgr->GetFloatDefault("Rate.Creature.Aggro", 1.0f);
+ rate_values[RATE_REST_INGAME] = sConfigMgr->GetFloatDefault("Rate.Rest.InGame", 1.0f);
+ rate_values[RATE_REST_OFFLINE_IN_TAVERN_OR_CITY] = sConfigMgr->GetFloatDefault("Rate.Rest.Offline.InTavernOrCity", 1.0f);
+ rate_values[RATE_REST_OFFLINE_IN_WILDERNESS] = sConfigMgr->GetFloatDefault("Rate.Rest.Offline.InWilderness", 1.0f);
+ rate_values[RATE_DAMAGE_FALL] = sConfigMgr->GetFloatDefault("Rate.Damage.Fall", 1.0f);
+ rate_values[RATE_AUCTION_TIME] = sConfigMgr->GetFloatDefault("Rate.Auction.Time", 1.0f);
+ rate_values[RATE_AUCTION_DEPOSIT] = sConfigMgr->GetFloatDefault("Rate.Auction.Deposit", 1.0f);
+ rate_values[RATE_AUCTION_CUT] = sConfigMgr->GetFloatDefault("Rate.Auction.Cut", 1.0f);
+ rate_values[RATE_HONOR] = sConfigMgr->GetFloatDefault("Rate.Honor", 1.0f);
+ rate_values[RATE_INSTANCE_RESET_TIME] = sConfigMgr->GetFloatDefault("Rate.InstanceResetTime", 1.0f);
+ rate_values[RATE_TALENT] = sConfigMgr->GetFloatDefault("Rate.Talent", 1.0f);
if (rate_values[RATE_TALENT] < 0.0f)
{
TC_LOG_ERROR("server.loading", "Rate.Talent ({}) must be > 0. Using 1 instead.", rate_values[RATE_TALENT]);
@@ -1291,11 +1297,12 @@ void World::LoadConfigSettings(bool reload)
m_int_configs[CONFIG_CHAT_STRICT_LINK_CHECKING_SEVERITY] = sConfigMgr->GetIntDefault("ChatStrictLinkChecking.Severity", 0);
m_int_configs[CONFIG_CHAT_STRICT_LINK_CHECKING_KICK] = sConfigMgr->GetIntDefault("ChatStrictLinkChecking.Kick", 0);
- m_int_configs[CONFIG_CORPSE_DECAY_NORMAL] = sConfigMgr->GetIntDefault("Corpse.Decay.NORMAL", 60);
- m_int_configs[CONFIG_CORPSE_DECAY_RARE] = sConfigMgr->GetIntDefault("Corpse.Decay.RARE", 300);
- m_int_configs[CONFIG_CORPSE_DECAY_ELITE] = sConfigMgr->GetIntDefault("Corpse.Decay.ELITE", 300);
- m_int_configs[CONFIG_CORPSE_DECAY_RAREELITE] = sConfigMgr->GetIntDefault("Corpse.Decay.RAREELITE", 300);
- m_int_configs[CONFIG_CORPSE_DECAY_WORLDBOSS] = sConfigMgr->GetIntDefault("Corpse.Decay.WORLDBOSS", 3600);
+ m_int_configs[CONFIG_CORPSE_DECAY_NORMAL] = sConfigMgr->GetIntDefault("Corpse.Decay.Normal", 60);
+ m_int_configs[CONFIG_CORPSE_DECAY_ELITE] = sConfigMgr->GetIntDefault("Corpse.Decay.Elite", 300);
+ m_int_configs[CONFIG_CORPSE_DECAY_RAREELITE] = sConfigMgr->GetIntDefault("Corpse.Decay.RareElite", 300);
+ m_int_configs[CONFIG_CORPSE_DECAY_OBSOLETE] = sConfigMgr->GetIntDefault("Corpse.Decay.Obsolete", 3600);
+ m_int_configs[CONFIG_CORPSE_DECAY_TRIVIAL] = sConfigMgr->GetIntDefault("Corpse.Decay.Trivial", 300);
+ m_int_configs[CONFIG_CORPSE_DECAY_MINUSMOB] = sConfigMgr->GetIntDefault("Corpse.Decay.MinusMob", 150);
m_int_configs[CONFIG_DEATH_SICKNESS_LEVEL] = sConfigMgr->GetIntDefault ("Death.SicknessLevel", 11);
m_bool_configs[CONFIG_DEATH_CORPSE_RECLAIM_DELAY_PVP] = sConfigMgr->GetBoolDefault("Death.CorpseReclaimDelay.PvP", true);
diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h
index e71cccbf1cf..14fcb7e8966 100644
--- a/src/server/game/World/World.h
+++ b/src/server/game/World/World.h
@@ -326,10 +326,12 @@ enum WorldIntConfigs
CONFIG_AUCTION_LEVEL_REQ,
CONFIG_MAIL_LEVEL_REQ,
CONFIG_CORPSE_DECAY_NORMAL,
- CONFIG_CORPSE_DECAY_RARE,
CONFIG_CORPSE_DECAY_ELITE,
CONFIG_CORPSE_DECAY_RAREELITE,
- CONFIG_CORPSE_DECAY_WORLDBOSS,
+ CONFIG_CORPSE_DECAY_OBSOLETE,
+ CONFIG_CORPSE_DECAY_RARE,
+ CONFIG_CORPSE_DECAY_TRIVIAL,
+ CONFIG_CORPSE_DECAY_MINUSMOB,
CONFIG_DEATH_SICKNESS_LEVEL,
CONFIG_INSTANT_LOGOUT,
CONFIG_DISABLE_BREATHING,
@@ -486,21 +488,27 @@ enum Rates
RATE_REPUTATION_LOWLEVEL_KILL,
RATE_REPUTATION_LOWLEVEL_QUEST,
RATE_REPUTATION_RECRUIT_A_FRIEND_BONUS,
- RATE_CREATURE_NORMAL_HP,
- RATE_CREATURE_ELITE_ELITE_HP,
- RATE_CREATURE_ELITE_RAREELITE_HP,
- RATE_CREATURE_ELITE_WORLDBOSS_HP,
- RATE_CREATURE_ELITE_RARE_HP,
- RATE_CREATURE_NORMAL_DAMAGE,
- RATE_CREATURE_ELITE_ELITE_DAMAGE,
- RATE_CREATURE_ELITE_RAREELITE_DAMAGE,
- RATE_CREATURE_ELITE_WORLDBOSS_DAMAGE,
- RATE_CREATURE_ELITE_RARE_DAMAGE,
- RATE_CREATURE_NORMAL_SPELLDAMAGE,
- RATE_CREATURE_ELITE_ELITE_SPELLDAMAGE,
- RATE_CREATURE_ELITE_RAREELITE_SPELLDAMAGE,
- RATE_CREATURE_ELITE_WORLDBOSS_SPELLDAMAGE,
- RATE_CREATURE_ELITE_RARE_SPELLDAMAGE,
+ RATE_CREATURE_HP_NORMAL,
+ RATE_CREATURE_HP_ELITE,
+ RATE_CREATURE_HP_RAREELITE,
+ RATE_CREATURE_HP_OBSOLETE,
+ RATE_CREATURE_HP_RARE,
+ RATE_CREATURE_HP_TRIVIAL,
+ RATE_CREATURE_HP_MINUSMOB,
+ RATE_CREATURE_DAMAGE_NORMAL,
+ RATE_CREATURE_DAMAGE_ELITE,
+ RATE_CREATURE_DAMAGE_RAREELITE,
+ RATE_CREATURE_DAMAGE_OBSOLETE,
+ RATE_CREATURE_DAMAGE_RARE,
+ RATE_CREATURE_DAMAGE_TRIVIAL,
+ RATE_CREATURE_DAMAGE_MINUSMOB,
+ RATE_CREATURE_SPELLDAMAGE_NORMAL,
+ RATE_CREATURE_SPELLDAMAGE_ELITE,
+ RATE_CREATURE_SPELLDAMAGE_RAREELITE,
+ RATE_CREATURE_SPELLDAMAGE_OBSOLETE,
+ RATE_CREATURE_SPELLDAMAGE_RARE,
+ RATE_CREATURE_SPELLDAMAGE_TRIVIAL,
+ RATE_CREATURE_SPELLDAMAGE_MINUSMOB,
RATE_CREATURE_AGGRO,
RATE_REST_INGAME,
RATE_REST_OFFLINE_IN_TAVERN_OR_CITY,
diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist
index 20ad5bef124..d239a0857b5 100644
--- a/src/server/worldserver/worldserver.conf.dist
+++ b/src/server/worldserver/worldserver.conf.dist
@@ -1787,23 +1787,29 @@ CreatureFamilyFleeDelay = 7000
WorldBossLevelDiff = 3
#
-# Corpse.Decay.NORMAL
-# Corpse.Decay.RARE
-# Corpse.Decay.ELITE
-# Corpse.Decay.RAREELITE
-# Corpse.Decay.WORLDBOSS
+# Corpse.Decay.Normal
+# Corpse.Decay.Elite
+# Corpse.Decay.RareElite
+# Corpse.Decay.Obsolete
+# Corpse.Decay.Rare
+# Corpse.Decay.Trivial
+# Corpse.Decay.MinusMob
# Description: Time (in seconds) until creature corpse will decay if not looted or skinned.
-# Default: 300 - (5 Minutes, Corpse.Decay.NORMAL)
-# 300 - (5 Minutes, Corpse.Decay.RARE)
-# 300 - (5 Minutes, Corpse.Decay.ELITE)
-# 300 - (5 Minutes, Corpse.Decay.RAREELITE)
-# 3600 - (1 Hour, Corpse.Decay.WORLDBOSS)
-
-Corpse.Decay.NORMAL = 300
-Corpse.Decay.RARE = 300
-Corpse.Decay.ELITE = 300
-Corpse.Decay.RAREELITE = 300
-Corpse.Decay.WORLDBOSS = 3600
+# Default: 300 - (5 Minutes, Corpse.Decay.Normal)
+# 300 - (5 Minutes, Corpse.Decay.Elite)
+# 300 - (5 Minutes, Corpse.Decay.RareElite)
+# 3600 - (1 Hour, Corpse.Decay.Obsolete)
+# 300 - (5 Minutes, Corpse.Decay.Rare)
+# 300 - (5 Minutes, Corpse.Decay.Trivial)
+# 150 - (2.5 Minutes, Corpse.Decay.MinusMob)
+
+Corpse.Decay.Normal = 300
+Corpse.Decay.Elite = 300
+Corpse.Decay.RareElite = 300
+Corpse.Decay.Obsolete = 3600
+Corpse.Decay.Rare = 300
+Corpse.Decay.Trivial = 300
+Corpse.Decay.MinusMob = 150
#
# Rate.Corpse.Decay.Looted
@@ -1814,62 +1820,79 @@ Corpse.Decay.WORLDBOSS = 3600
Rate.Corpse.Decay.Looted = 0.5
#
-# Rate.Creature.Normal.Damage
-# Rate.Creature.Elite.Elite.Damage
-# Rate.Creature.Elite.RARE.Damage
-# Rate.Creature.Elite.RAREELITE.Damage
-# Rate.Creature.Elite.WORLDBOSS.Damage
+# Rate.Creature.Damage.Normal
+# Rate.Creature.Damage.Elite
+# Rate.Creature.Damage.RareElite
+# Rate.Creature.Damage.Obsolete
+# Rate.Creature.Damage.Rare
+# Rate.Creature.Damage.Trivial
+# Rate.Creature.Damage.MinusMob
# Description: Multiplier for creature melee damage.
-# Default: 1 - (Rate.Creature.Normal.Damage)
-# 1 - (Rate.Creature.Elite.Elite.Damage)
-# 1 - (Rate.Creature.Elite.RARE.Damage)
-# 1 - (Rate.Creature.Elite.RAREELITE.Damage)
-# 1 - (Rate.Creature.Elite.WORLDBOSS.Damage)
-#
-
-Rate.Creature.Normal.Damage = 1
-Rate.Creature.Elite.Elite.Damage = 1
-Rate.Creature.Elite.RARE.Damage = 1
-Rate.Creature.Elite.RAREELITE.Damage = 1
-Rate.Creature.Elite.WORLDBOSS.Damage = 1
-
-#
-# Rate.Creature.Normal.SpellDamage
-# Rate.Creature.Elite.Elite.SpellDamage
-# Rate.Creature.Elite.RARE.SpellDamage
-# Rate.Creature.Elite.RAREELITE.SpellDamage
-# Rate.Creature.Elite.WORLDBOSS.SpellDamage
+# Default: 1 - (Rate.Creature.Damage.Normal)
+# 1 - (Rate.Creature.Damage.Elite)
+# 1 - (Rate.Creature.Damage.RareElite)
+# 1 - (Rate.Creature.Damage.Obsolete)
+# 1 - (Rate.Creature.Damage.Rare)
+# 1 - (Rate.Creature.Damage.Trivial)
+# 1 - (Rate.Creature.Damage.MinusMob)
+
+Rate.Creature.Damage.Normal = 1
+Rate.Creature.Damage.Elite = 1
+Rate.Creature.Damage.RareElite = 1
+Rate.Creature.Damage.Obsolete = 1
+Rate.Creature.Damage.Rare = 1
+Rate.Creature.Damage.Trivial = 1
+Rate.Creature.Damage.MinusMob = 1
+
+#
+# Rate.Creature.SpellDamage.Normal
+# Rate.Creature.SpellDamage.Elite
+# Rate.Creature.SpellDamage.RareElite
+# Rate.Creature.SpellDamage.Obsolete
+# Rate.Creature.SpellDamage.Rare
+# Rate.Creature.SpellDamage.Trivial
+# Rate.Creature.SpellDamage.MinusMob
+# Description: Multiplier for creature spell damage.
+# Default: 1 - (Rate.Creature.SpellDamage.Normal)
+# 1 - (Rate.Creature.SpellDamage.Elite)
+# 1 - (Rate.Creature.SpellDamage.RareElite)
+# 1 - (Rate.Creature.SpellDamage.Obsolete)
+# 1 - (Rate.Creature.SpellDamage.Rare)
+# 1 - (Rate.Creature.SpellDamage.Trivial)
+# 1 - (Rate.Creature.SpellDamage.MinusMob)
+
+Rate.Creature.SpellDamage.Normal = 1
+Rate.Creature.SpellDamage.Elite = 1
+Rate.Creature.SpellDamage.RareElite = 1
+Rate.Creature.SpellDamage.Obsolete = 1
+Rate.Creature.SpellDamage.Rare = 1
+Rate.Creature.SpellDamage.Trivial = 1
+Rate.Creature.SpellDamage.MinusMob = 1
+
+#
+# Rate.Creature.HP.Normal
+# Rate.Creature.HP.Elite
+# Rate.Creature.HP.RareElite
+# Rate.Creature.HP.Obsolete
+# Rate.Creature.HP.Rare
+# Rate.Creature.HP.Trivial
+# Rate.Creature.HP.MinusMob
# Description: Multiplier for creature spell damage.
-# Default: 1 - (Rate.Creature.Normal.SpellDamage)
-# 1 - (Rate.Creature.Elite.Elite.SpellDamage)
-# 1 - (Rate.Creature.Elite.RARE.SpellDamage)
-# 1 - (Rate.Creature.Elite.RAREELITE.SpellDamage)
-# 1 - (Rate.Creature.Elite.WORLDBOSS.SpellDamage)
-
-Rate.Creature.Normal.SpellDamage = 1
-Rate.Creature.Elite.Elite.SpellDamage = 1
-Rate.Creature.Elite.RARE.SpellDamage = 1
-Rate.Creature.Elite.RAREELITE.SpellDamage = 1
-Rate.Creature.Elite.WORLDBOSS.SpellDamage = 1
-
-#
-# Rate.Creature.Normal.HP
-# Rate.Creature.Elite.Elite.HP
-# Rate.Creature.Elite.RARE.HP
-# Rate.Creature.Elite.RAREELITE.HP
-# Rate.Creature.Elite.WORLDBOSS.HP
-# Description: Multiplier for creature health.
-# Default: 1 - (Rate.Creature.Normal.HP)
-# 1 - (Rate.Creature.Elite.Elite.HP)
-# 1 - (Rate.Creature.Elite.RARE.HP)
-# 1 - (Rate.Creature.Elite.RAREELITE.HP)
-# 1 - (Rate.Creature.Elite.WORLDBOSS.HP)
-
-Rate.Creature.Normal.HP = 1
-Rate.Creature.Elite.Elite.HP = 1
-Rate.Creature.Elite.RARE.HP = 1
-Rate.Creature.Elite.RAREELITE.HP = 1
-Rate.Creature.Elite.WORLDBOSS.HP = 1
+# Default: 1 - (Rate.Creature.HP.Normal)
+# 1 - (Rate.Creature.HP.Elite)
+# 1 - (Rate.Creature.HP.RareElite)
+# 1 - (Rate.Creature.HP.Obsolete)
+# 1 - (Rate.Creature.HP.Rare)
+# 1 - (Rate.Creature.HP.Trivial)
+# 1 - (Rate.Creature.HP.MinusMob)
+
+Rate.Creature.HP.Normal = 1
+Rate.Creature.HP.Elite = 1
+Rate.Creature.HP.RareElite = 1
+Rate.Creature.HP.Obsolete = 1
+Rate.Creature.HP.Rare = 1
+Rate.Creature.HP.Trivial = 1
+Rate.Creature.HP.MinusMob = 1
#
# Creature.PickPocketRefillDelay