Core/Creatures: Refactor CreatureEliteType
Port From (https://github.com/TrinityCore/TrinityCore/commit/bfbda8dcce8d19dda0ee3d8f96d176901902e102)
This commit is contained in:
@@ -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]
|
||||
|
||||
@@ -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_");
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user