Core/Creatures: Refactor CreatureEliteType

Port From (https://github.com/TrinityCore/TrinityCore/commit/bfbda8dcce8d19dda0ee3d8f96d176901902e102)
This commit is contained in:
hondacrx
2024-02-04 14:42:40 -05:00
parent 85d4043217
commit a46f98642b
10 changed files with 218 additions and 160 deletions
+4 -3
View File
@@ -22,14 +22,15 @@ namespace Framework.Constants
Destory = 4 // used on object destroy (NOT used in client packet handler)
}
public enum CreatureEliteType
public enum CreatureClassifications
{
Normal = 0,
Elite = 1,
RareElite = 2,
WorldBoss = 3,
Obsolete = 3,
Rare = 4,
EliteTrivial = 5 // found in 2.2.3 for 2 mobs
Trivial = 5,
MinusMob = 6
}
[Flags]
+24 -16
View File
@@ -1583,10 +1583,12 @@ namespace Framework.Constants
CommunityClubsEnabled,
Compression,
CorpseDecayElite,
CorpseDecayMinusMob,
CorpseDecayNormal,
CorpseDecayObsolete,
CorpseDecayRare,
CorpseDecayRareelite,
CorpseDecayWorldboss,
CorpseDecayTrivial,
CreatureCheckInvalidPostion,
CreatureFamilyAssistanceDelay,
CreatureFamilyAssistanceRadius,
@@ -1713,21 +1715,27 @@ namespace Framework.Constants
RateAuctionTime,
RateCorpseDecayLooted,
RateCreatureAggro,
RateCreatureEliteEliteDamage,
RateCreatureEliteEliteHp,
RateCreatureEliteEliteSpelldamage,
RateCreatureEliteRareDamage,
RateCreatureEliteRareHp,
RateCreatureEliteRareSpelldamage,
RateCreatureEliteRareeliteDamage,
RateCreatureEliteRareeliteHp,
RateCreatureEliteRareeliteSpelldamage,
RateCreatureEliteWorldbossDamage,
RateCreatureEliteWorldbossHp,
RateCreatureEliteWorldbossSpelldamage,
RateCreatureNormalDamage,
RateCreatureNormalHp,
RateCreatureNormalSpelldamage,
RateCreatureDamageElite,
RateCreatureDamageMinusmob,
RateCreatureDamageNormal,
RateCreatureDamageObsolete,
RateCreatureDamageRare,
RateCreatureDamageRareelite,
RateCreatureDamageTrivial,
RateCreatureHpElite,
RateCreatureHpMinusmob,
RateCreatureHpNormal,
RateCreatureHpObsolete,
RateCreatureHpRare,
RateCreatureHpRareelite,
RateCreatureHpTrivial,
RateCreatureSpelldamageElite,
RateCreatureSpelldamageMinusmob,
RateCreatureSpelldamageNormal,
RateCreatureSpelldamageObsolete,
RateCreatureSpelldamageRare,
RateCreatureSpelldamageRareelite,
RateCreatureSpelldamageTrivial,
RateDamageFall,
RateDropItemArtifact,
RateDropItemEpic,
@@ -45,7 +45,7 @@ namespace Framework.Database
PrepareStatement(WorldStatements.SEL_CREATURE_ADDON_BY_GUID, "SELECT guid FROM creature_addon WHERE guid = ?");
PrepareStatement(WorldStatements.DEL_CREATURE, "DELETE FROM creature WHERE guid = ?");
PrepareStatement(WorldStatements.SEL_COMMANDS, "SELECT name, help FROM command");
PrepareStatement(WorldStatements.SEL_CREATURE_TEMPLATE, "SELECT entry, KillCredit1, KillCredit2, name, femaleName, subname, TitleAlt, IconName, RequiredExpansion, VignetteID, faction, npcflag, speed_walk, speed_run, scale, `rank`, dmgschool, BaseAttackTime, RangeAttackTime, BaseVariance, RangeVariance, unit_class, unit_flags, unit_flags2, unit_flags3, family, trainer_class, type, VehicleId, AIName, MovementType, ctm.Ground, ctm.Swim, ctm.Flight, ctm.Rooted, ctm.Chase, ctm.Random, ctm.InteractionPauseTimer, ExperienceModifier, RacialLeader, movementId, WidgetSetID, WidgetSetUnitConditionID, RegenHealth, mechanic_immune_mask, spell_school_immune_mask, flags_extra, ScriptName, StringId FROM creature_template ct LEFT JOIN creature_template_movement ctm ON ct.entry = ctm.CreatureId WHERE entry = ? OR 1 = ?");
PrepareStatement(WorldStatements.SEL_CREATURE_TEMPLATE, "SELECT entry, KillCredit1, KillCredit2, name, femaleName, subname, TitleAlt, IconName, RequiredExpansion, VignetteID, faction, npcflag, speed_walk, speed_run, scale, Classification, dmgschool, BaseAttackTime, RangeAttackTime, BaseVariance, RangeVariance, unit_class, unit_flags, unit_flags2, unit_flags3, family, trainer_class, type, VehicleId, AIName, MovementType, ctm.Ground, ctm.Swim, ctm.Flight, ctm.Rooted, ctm.Chase, ctm.Random, ctm.InteractionPauseTimer, ExperienceModifier, RacialLeader, movementId, WidgetSetID, WidgetSetUnitConditionID, RegenHealth, mechanic_immune_mask, spell_school_immune_mask, flags_extra, ScriptName, StringId FROM creature_template ct LEFT JOIN creature_template_movement ctm ON ct.entry = ctm.CreatureId WHERE entry = ? OR 1 = ?");
PrepareStatement(WorldStatements.SEL_CREATURE_BY_ID, "SELECT guid FROM creature WHERE id = ?");
PrepareStatement(WorldStatements.SEL_GAMEOBJECT_NEAREST, "SELECT guid, id, position_x, position_y, position_z, map, (POW(position_x - ?, 2) + POW(position_y - ?, 2) + POW(position_z - ?, 2)) AS order_ FROM gameobject WHERE map = ? AND (POW(position_x - ?, 2) + POW(position_y - ?, 2) + POW(position_z - ?, 2)) <= ? ORDER BY order_");
PrepareStatement(WorldStatements.SEL_CREATURE_NEAREST, "SELECT guid, id, position_x, position_y, position_z, map, (POW(position_x - ?, 2) + POW(position_y - ?, 2) + POW(position_z - ?, 2)) AS order_ FROM creature WHERE map = ? AND (POW(position_x - ?, 2) + POW(position_y - ?, 2) + POW(position_z - ?, 2)) <= ? ORDER BY order_");
+71 -54
View File
@@ -833,22 +833,25 @@ namespace Game.Entities
if (cinfo.FlagsExtra.HasAnyFlag(CreatureFlagsExtra.DungeonBoss) && map.IsDungeon())
m_respawnDelay = 0; // special value, prevents respawn for dungeon bosses unless overridden
switch (cinfo.Rank)
switch (GetCreatureClassification())
{
case CreatureEliteType.Rare:
m_corpseDelay = WorldConfig.GetUIntValue(WorldCfg.CorpseDecayRare);
break;
case CreatureEliteType.Elite:
case CreatureClassifications.Elite:
m_corpseDelay = WorldConfig.GetUIntValue(WorldCfg.CorpseDecayElite);
break;
case CreatureEliteType.RareElite:
case CreatureClassifications.RareElite:
m_corpseDelay = WorldConfig.GetUIntValue(WorldCfg.CorpseDecayRareelite);
break;
case CreatureEliteType.WorldBoss:
m_corpseDelay = WorldConfig.GetUIntValue(WorldCfg.CorpseDecayWorldboss);
case CreatureClassifications.Obsolete:
m_corpseDelay = WorldConfig.GetUIntValue(WorldCfg.CorpseDecayObsolete);
break;
default:
m_corpseDelay = WorldConfig.GetUIntValue(WorldCfg.CorpseDecayNormal);
case CreatureClassifications.Rare:
m_corpseDelay = WorldConfig.GetUIntValue(WorldCfg.CorpseDecayRare);
break;
case CreatureClassifications.Trivial:
m_corpseDelay = WorldConfig.GetUIntValue(WorldCfg.CorpseDecayTrivial);
break;
case CreatureClassifications.MinusMob:
m_corpseDelay = WorldConfig.GetUIntValue(WorldCfg.CorpseDecayMinusMob);
break;
}
@@ -1458,12 +1461,12 @@ namespace Game.Entities
void UpdateLevelDependantStats()
{
CreatureTemplate cInfo = GetCreatureTemplate();
CreatureEliteType rank = IsPet() ? 0 : cInfo.Rank;
CreatureClassifications classification = IsPet() ? CreatureClassifications.Normal : cInfo.Classification;
uint level = GetLevel();
CreatureBaseStats stats = Global.ObjectMgr.GetCreatureBaseStats(level, cInfo.UnitClass);
// health
float healthmod = GetHealthMod(rank);
float healthmod = GetHealthMod(classification);
uint basehp = (uint)GetMaxHealthByLevel(level);
uint health = (uint)(basehp * healthmod);
@@ -1526,22 +1529,26 @@ namespace Game.Entities
}
}
public float GetHealthMod(CreatureEliteType Rank)
public float GetHealthMod(CreatureClassifications classification)
{
switch (Rank) // define rates for each elite rank
switch (classification) // define rates for each elite rank
{
case CreatureEliteType.Normal:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureNormalHp);
case CreatureEliteType.Elite:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureEliteEliteHp);
case CreatureEliteType.RareElite:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureEliteRareeliteHp);
case CreatureEliteType.WorldBoss:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureEliteWorldbossHp);
case CreatureEliteType.Rare:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureEliteRareHp);
case CreatureClassifications.Normal:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureHpNormal);
case CreatureClassifications.Elite:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureHpElite);
case CreatureClassifications.RareElite:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureHpRareelite);
case CreatureClassifications.Obsolete:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureHpObsolete);
case CreatureClassifications.Rare:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureHpRare);
case CreatureClassifications.Trivial:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureHpTrivial);
case CreatureClassifications.MinusMob:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureHpMinusmob);
default:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureEliteRareeliteHp);
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureHpElite);
}
}
@@ -1556,41 +1563,49 @@ namespace Game.Entities
}
}
public static float _GetDamageMod(CreatureEliteType Rank)
public static float GetDamageMod(CreatureClassifications classification)
{
switch (Rank) // define rates for each elite rank
switch (classification)
{
case CreatureEliteType.Normal:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureNormalDamage);
case CreatureEliteType.Elite:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureEliteEliteDamage);
case CreatureEliteType.RareElite:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureEliteRareeliteDamage);
case CreatureEliteType.WorldBoss:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureEliteWorldbossDamage);
case CreatureEliteType.Rare:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureEliteRareDamage);
case CreatureClassifications.Normal:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureDamageNormal);
case CreatureClassifications.Elite:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureDamageElite);
case CreatureClassifications.RareElite:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureDamageRareelite);
case CreatureClassifications.Obsolete:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureDamageObsolete);
case CreatureClassifications.Rare:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureDamageRare);
case CreatureClassifications.Trivial:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureDamageTrivial);
case CreatureClassifications.MinusMob:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureDamageMinusmob);
default:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureEliteEliteDamage);
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureDamageElite);
}
}
public float GetSpellDamageMod(CreatureEliteType Rank)
public float GetSpellDamageMod(CreatureClassifications classification)
{
switch (Rank) // define rates for each elite rank
switch (classification) // define rates for each elite rank
{
case CreatureEliteType.Normal:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureNormalSpelldamage);
case CreatureEliteType.Elite:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureEliteEliteSpelldamage);
case CreatureEliteType.RareElite:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureEliteRareeliteSpelldamage);
case CreatureEliteType.WorldBoss:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureEliteWorldbossSpelldamage);
case CreatureEliteType.Rare:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureEliteRareSpelldamage);
case CreatureClassifications.Normal:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureSpelldamageNormal);
case CreatureClassifications.Elite:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureSpelldamageElite);
case CreatureClassifications.RareElite:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureSpelldamageRareelite);
case CreatureClassifications.Obsolete:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureSpelldamageObsolete);
case CreatureClassifications.Rare:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureSpelldamageRare);
case CreatureClassifications.Trivial:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureSpelldamageTrivial);
case CreatureClassifications.MinusMob:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureSpelldamageMinusmob);
default:
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureEliteEliteSpelldamage);
return WorldConfig.GetFloatValue(WorldCfg.RateCreatureSpelldamageElite);
}
}
@@ -1729,7 +1744,7 @@ namespace Game.Entities
curhealth = m_creatureData.curhealth;
if (curhealth != 0)
{
curhealth = (uint)(curhealth * GetHealthMod(GetCreatureTemplate().Rank));
curhealth = (uint)(curhealth * GetHealthMod(GetCreatureTemplate().Classification));
if (curhealth < 1)
curhealth = 1;
}
@@ -2205,8 +2220,7 @@ namespace Game.Entities
if (IsPet())
return false;
var rank = GetCreatureTemplate().Rank;
return rank != CreatureEliteType.Elite && rank != CreatureEliteType.RareElite;
return HasClassification(CreatureClassifications.Elite) || HasClassification(CreatureClassifications.RareElite);
}
public bool IsWorldBoss()
@@ -3449,6 +3463,9 @@ namespace Game.Entities
public override MovementGeneratorType GetDefaultMovementType() { return DefaultMovementType; }
public void SetDefaultMovementType(MovementGeneratorType mgt) { DefaultMovementType = mgt; }
public CreatureClassifications GetCreatureClassification() { return GetCreatureTemplate().Classification; }
public bool HasClassification(CreatureClassifications classification) { return GetCreatureTemplate().Classification == classification; }
public long GetRespawnTime() { return m_respawnTime; }
public void SetRespawnTime(uint respawn) { m_respawnTime = respawn != 0 ? GameTime.GetGameTime() + respawn : 0; }
@@ -30,7 +30,7 @@ namespace Game.Entities
public float SpeedWalk;
public float SpeedRun;
public float Scale;
public CreatureEliteType Rank;
public CreatureClassifications Classification;
public uint DmgSchool;
public uint BaseAttackTime;
public uint RangeAttackTime;
@@ -165,7 +165,7 @@ namespace Game.Entities
stats.CreatureType = (int)CreatureType;
stats.CreatureFamily = (int)Family;
stats.Classification = (int)Rank;
stats.Classification = (int)Classification;
for (uint i = 0; i < SharedConst.MaxCreatureKillCredit; ++i)
stats.ProxyCreatureID[i] = KillCredit[i];
+1 -1
View File
@@ -654,7 +654,7 @@ namespace Game.Entities
ApplyLevelScaling();
CreatureDifficulty creatureDifficulty = GetCreatureDifficulty();
SetCreateHealth((uint)Math.Max(Global.DB2Mgr.EvaluateExpectedStat(ExpectedStatType.CreatureHealth, petlevel, creatureDifficulty.GetHealthScalingExpansion(), m_unitData.ContentTuningID, (Class)cinfo.UnitClass, 0) * creatureDifficulty.HealthModifier * GetHealthMod(cinfo.Rank), 1.0f));
SetCreateHealth((uint)Math.Max(Global.DB2Mgr.EvaluateExpectedStat(ExpectedStatType.CreatureHealth, petlevel, creatureDifficulty.GetHealthScalingExpansion(), m_unitData.ContentTuningID, (Class)cinfo.UnitClass, 0) * creatureDifficulty.HealthModifier * GetHealthMod(cinfo.Classification), 1.0f));
SetCreateMana(stats.BaseMana);
SetCreateStat(Stats.Strength, 22);
+1 -1
View File
@@ -176,7 +176,7 @@ namespace Game.Entities
// Pet damage?
if (IsTypeId(TypeId.Unit) && !IsPet())
DoneTotalMod *= ToCreature().GetSpellDamageMod(ToCreature().GetCreatureTemplate().Rank);
DoneTotalMod *= ToCreature().GetSpellDamageMod(ToCreature().GetCreatureTemplate().Classification);
// Versatility
Player modOwner = GetSpellModOwner();
+2 -2
View File
@@ -1791,7 +1791,7 @@ namespace Game
creature.SpeedWalk = fields.Read<float>(12);
creature.SpeedRun = fields.Read<float>(13);
creature.Scale = fields.Read<float>(14);
creature.Rank = (CreatureEliteType)fields.Read<uint>(15);
creature.Classification = (CreatureClassifications)fields.Read<uint>(15);
creature.DmgSchool = fields.Read<uint>(16);
creature.BaseAttackTime = fields.Read<uint>(17);
creature.RangeAttackTime = fields.Read<uint>(18);
@@ -2727,7 +2727,7 @@ namespace Game
creatureDifficulty.StaticFlags = new(result.Read<uint>(18), result.Read<uint>(19), result.Read<uint>(20), result.Read<uint>(21), result.Read<uint>(22), result.Read<uint>(23), result.Read<uint>(24), result.Read<uint>(25));
// TODO: Check if this still applies
creatureDifficulty.DamageModifier *= Creature._GetDamageMod(template.Rank);
creatureDifficulty.DamageModifier *= Creature.GetDamageMod(template.Classification);
if (creatureDifficulty.HealthScalingExpansion < (int)Expansion.LevelCurrent || creatureDifficulty.HealthScalingExpansion >= (int)Expansion.Max)
{
+28 -20
View File
@@ -86,21 +86,27 @@ namespace Game
Values[WorldCfg.RateReputationLowLevelKill] = GetDefaultValue("Rate.Reputation.LowLevel.Kill", 1.0f);
Values[WorldCfg.RateReputationLowLevelQuest] = GetDefaultValue("Rate.Reputation.LowLevel.Quest", 1.0f);
Values[WorldCfg.RateReputationRecruitAFriendBonus] = GetDefaultValue("Rate.Reputation.RecruitAFriendBonus", 0.1f);
Values[WorldCfg.RateCreatureNormalDamage] = GetDefaultValue("Rate.Creature.Normal.Damage", 1.0f);
Values[WorldCfg.RateCreatureEliteEliteDamage] = GetDefaultValue("Rate.Creature.Elite.Elite.Damage", 1.0f);
Values[WorldCfg.RateCreatureEliteRareeliteDamage] = GetDefaultValue("Rate.Creature.Elite.RAREELITE.Damage", 1.0f);
Values[WorldCfg.RateCreatureEliteWorldbossDamage] = GetDefaultValue("Rate.Creature.Elite.WORLDBOSS.Damage", 1.0f);
Values[WorldCfg.RateCreatureEliteRareDamage] = GetDefaultValue("Rate.Creature.Elite.RARE.Damage", 1.0f);
Values[WorldCfg.RateCreatureNormalHp] = GetDefaultValue("Rate.Creature.Normal.HP", 1.0f);
Values[WorldCfg.RateCreatureEliteEliteHp] = GetDefaultValue("Rate.Creature.Elite.Elite.HP", 1.0f);
Values[WorldCfg.RateCreatureEliteRareeliteHp] = GetDefaultValue("Rate.Creature.Elite.RAREELITE.HP", 1.0f);
Values[WorldCfg.RateCreatureEliteWorldbossHp] = GetDefaultValue("Rate.Creature.Elite.WORLDBOSS.HP", 1.0f);
Values[WorldCfg.RateCreatureEliteRareHp] = GetDefaultValue("Rate.Creature.Elite.RARE.HP", 1.0f);
Values[WorldCfg.RateCreatureNormalSpelldamage] = GetDefaultValue("Rate.Creature.Normal.SpellDamage", 1.0f);
Values[WorldCfg.RateCreatureEliteEliteSpelldamage] = GetDefaultValue("Rate.Creature.Elite.Elite.SpellDamage", 1.0f);
Values[WorldCfg.RateCreatureEliteRareeliteSpelldamage] = GetDefaultValue("Rate.Creature.Elite.RAREELITE.SpellDamage", 1.0f);
Values[WorldCfg.RateCreatureEliteWorldbossSpelldamage] = GetDefaultValue("Rate.Creature.Elite.WORLDBOSS.SpellDamage", 1.0f);
Values[WorldCfg.RateCreatureEliteRareSpelldamage] = GetDefaultValue("Rate.Creature.Elite.RARE.SpellDamage", 1.0f);
Values[WorldCfg.RateCreatureHpNormal] = GetDefaultValue("Rate.Creature.HP.Normal", 1.0f);
Values[WorldCfg.RateCreatureHpElite] = GetDefaultValue("Rate.Creature.HP.Elite", 1.0f);
Values[WorldCfg.RateCreatureHpRareelite] = GetDefaultValue("Rate.Creature.HP.RareElite", 1.0f);
Values[WorldCfg.RateCreatureHpObsolete] = GetDefaultValue("Rate.Creature.HP.Obsolete", 1.0f);
Values[WorldCfg.RateCreatureHpRare] = GetDefaultValue("Rate.Creature.HP.Rare", 1.0f);
Values[WorldCfg.RateCreatureHpTrivial] = GetDefaultValue("Rate.Creature.HP.Trivial", 1.0f);
Values[WorldCfg.RateCreatureHpMinusmob] = GetDefaultValue("Rate.Creature.HP.MinusMob", 1.0f);
Values[WorldCfg.RateCreatureDamageNormal] = GetDefaultValue("Rate.Creature.Damage.Normal", 1.0f);
Values[WorldCfg.RateCreatureDamageElite] = GetDefaultValue("Rate.Creature.Damage.Elite", 1.0f);
Values[WorldCfg.RateCreatureDamageRareelite] = GetDefaultValue("Rate.Creature.Damage.RareElite", 1.0f);
Values[WorldCfg.RateCreatureDamageObsolete] = GetDefaultValue("Rate.Creature.Damage.Obsolete", 1.0f);
Values[WorldCfg.RateCreatureDamageRare] = GetDefaultValue("Rate.Creature.Damage.Rare", 1.0f);
Values[WorldCfg.RateCreatureDamageTrivial] = GetDefaultValue("Rate.Creature.Damage.Trivial", 1.0f);
Values[WorldCfg.RateCreatureDamageMinusmob] = GetDefaultValue("Rate.Creature.Damage.MinusMob", 1.0f);
Values[WorldCfg.RateCreatureSpelldamageNormal] = GetDefaultValue("Rate.Creature.SpellDamage.Normal", 1.0f);
Values[WorldCfg.RateCreatureSpelldamageElite] = GetDefaultValue("Rate.Creature.SpellDamage.Elite", 1.0f);
Values[WorldCfg.RateCreatureSpelldamageRareelite] = GetDefaultValue("Rate.Creature.SpellDamage.RareElite", 1.0f);
Values[WorldCfg.RateCreatureSpelldamageObsolete] = GetDefaultValue("Rate.Creature.SpellDamage.Obsolete", 1.0f);
Values[WorldCfg.RateCreatureSpelldamageRare] = GetDefaultValue("Rate.Creature.SpellDamage.Rare", 1.0f);
Values[WorldCfg.RateCreatureSpelldamageTrivial] = GetDefaultValue("Rate.Creature.SpellDamage.Trivial", 1.0f);
Values[WorldCfg.RateCreatureSpelldamageMinusmob] = GetDefaultValue("Rate.Creature.SpellDamage.MinusMob", 1.0f);
Values[WorldCfg.RateCreatureAggro] = GetDefaultValue("Rate.Creature.Aggro", 1.0f);
Values[WorldCfg.RateRestIngame] = GetDefaultValue("Rate.Rest.InGame", 1.0f);
Values[WorldCfg.RateRestOfflineInTavernOrCity] = GetDefaultValue("Rate.Rest.Offline.InTavernOrCity", 1.0f);
@@ -688,11 +694,13 @@ namespace Game
Values[WorldCfg.ChatStrictLinkCheckingSeverity] = GetDefaultValue("ChatStrictLinkChecking.Severity", 0);
Values[WorldCfg.ChatStrictLinkCheckingKick] = GetDefaultValue("ChatStrictLinkChecking.Kick", 0);
Values[WorldCfg.CorpseDecayNormal] = GetDefaultValue("Corpse.Decay.NORMAL", 60);
Values[WorldCfg.CorpseDecayRare] = GetDefaultValue("Corpse.Decay.RARE", 300);
Values[WorldCfg.CorpseDecayElite] = GetDefaultValue("Corpse.Decay.ELITE", 300);
Values[WorldCfg.CorpseDecayRareelite] = GetDefaultValue("Corpse.Decay.RAREELITE", 300);
Values[WorldCfg.CorpseDecayWorldboss] = GetDefaultValue("Corpse.Decay.WORLDBOSS", 3600);
Values[WorldCfg.CorpseDecayNormal] = GetDefaultValue("Corpse.Decay.Normal", 60);
Values[WorldCfg.CorpseDecayElite] = GetDefaultValue("Corpse.Decay.Elite", 300);
Values[WorldCfg.CorpseDecayRareelite] = GetDefaultValue("Corpse.Decay.RareElite", 300);
Values[WorldCfg.CorpseDecayObsolete] = GetDefaultValue("Corpse.Decay.Obsolete", 3600);
Values[WorldCfg.CorpseDecayRare] = GetDefaultValue("Corpse.Decay.Rare", 300);
Values[WorldCfg.CorpseDecayTrivial] = GetDefaultValue("Corpse.Decay.Trivial", 300);
Values[WorldCfg.CorpseDecayMinusMob] = GetDefaultValue("Corpse.Decay.MinusMob", 150);
Values[WorldCfg.DeathSicknessLevel] = GetDefaultValue("Death.SicknessLevel", 11);
Values[WorldCfg.DeathCorpseReclaimDelayPvp] = GetDefaultValue("Death.CorpseReclaimDelay.PvP", true);
+84 -60
View File
@@ -1665,23 +1665,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 Minute, 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)
# 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.RARE = 300
Corpse.Decay.ELITE = 300
Corpse.Decay.RAREELITE = 300
Corpse.Decay.WORLDBOSS = 3600
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
@@ -1692,62 +1698,80 @@ 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)
# 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.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.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.Normal.SpellDamage
# Rate.Creature.Elite.Elite.SpellDamage
# Rate.Creature.Elite.RARE.SpellDamage
# Rate.Creature.Elite.RAREELITE.SpellDamage
# Rate.Creature.Elite.WORLDBOSS.SpellDamage
# 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.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)
# 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.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.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.Normal.HP
# Rate.Creature.Elite.Elite.HP
# Rate.Creature.Elite.RARE.HP
# Rate.Creature.Elite.RAREELITE.HP
# Rate.Creature.Elite.WORLDBOSS.HP
# 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 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)
# 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.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
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