Core/Items: Implemented corruption and corruption resistance stats
Port From (https://github.com/TrinityCore/TrinityCore/commit/6533de31005fc9680d9f2b61a4d8ea4958fc8edc)
This commit is contained in:
@@ -1810,6 +1810,15 @@ namespace Game.Entities
|
||||
public int GetItemStatValue(uint index, Player owner)
|
||||
{
|
||||
Cypher.Assert(index < ItemConst.MaxStats);
|
||||
switch ((ItemModType)GetItemStatType(index))
|
||||
{
|
||||
case ItemModType.Corruption:
|
||||
case ItemModType.CorruptionResistance:
|
||||
return _bonusData.ItemStatAllocation[index];
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
uint itemLevel = GetItemLevel(owner);
|
||||
uint randomPropPoints = ItemEnchantmentManager.GetRandomPropertyPoints(itemLevel, GetQuality(), GetTemplate().GetInventoryType(), GetTemplate().GetSubClass());
|
||||
if (randomPropPoints != 0)
|
||||
|
||||
@@ -4183,14 +4183,11 @@ namespace Game.Entities
|
||||
case ItemModType.PvpPower:
|
||||
ApplyRatingMod(CombatRating.PvpPower, val, apply);
|
||||
break;
|
||||
case ItemModType.CrAmplify:
|
||||
ApplyRatingMod(CombatRating.Amplify, val, apply);
|
||||
case ItemModType.Corruption:
|
||||
ApplyRatingMod(CombatRating.Corruption, val, apply);
|
||||
break;
|
||||
case ItemModType.CrMultistrike:
|
||||
ApplyRatingMod(CombatRating.Multistrike, val, apply);
|
||||
break;
|
||||
case ItemModType.CrReadiness:
|
||||
ApplyRatingMod(CombatRating.Readiness, (int)(val * combatRatingMultiplier), apply);
|
||||
case ItemModType.CorruptionResistance:
|
||||
ApplyRatingMod(CombatRating.CorruptionResistance, val, apply);
|
||||
break;
|
||||
case ItemModType.CrSpeed:
|
||||
ApplyRatingMod(CombatRating.Speed, (int)(val * combatRatingMultiplier), apply);
|
||||
@@ -4204,15 +4201,6 @@ namespace Game.Entities
|
||||
case ItemModType.CrSturdiness:
|
||||
ApplyRatingMod(CombatRating.Studiness, (int)(val * combatRatingMultiplier), apply);
|
||||
break;
|
||||
case ItemModType.CrUnused7:
|
||||
ApplyRatingMod(CombatRating.Unused7, val, apply);
|
||||
break;
|
||||
case ItemModType.CrCleave:
|
||||
ApplyRatingMod(CombatRating.Cleave, val, apply);
|
||||
break;
|
||||
case ItemModType.CrUnused12:
|
||||
ApplyRatingMod(CombatRating.Unused12, val, apply);
|
||||
break;
|
||||
case ItemModType.AgiStrInt:
|
||||
HandleStatFlatModifier(UnitMods.StatAgility, UnitModifierFlatType.Base, val, apply);
|
||||
HandleStatFlatModifier(UnitMods.StatStrength, UnitModifierFlatType.Base, val, apply);
|
||||
|
||||
@@ -1377,6 +1377,10 @@ namespace Game.Entities
|
||||
if (affectStats)
|
||||
UpdateSpellCritChance();
|
||||
break;
|
||||
case CombatRating.Corruption:
|
||||
case CombatRating.CorruptionResistance:
|
||||
UpdateCorruption();
|
||||
break;
|
||||
case CombatRating.HasteMelee:
|
||||
case CombatRating.HasteRanged:
|
||||
case CombatRating.HasteSpell:
|
||||
@@ -1489,6 +1493,34 @@ namespace Game.Entities
|
||||
SetUpdateFieldStatValue(m_values.ModifyValue(m_activePlayerData).ModifyValue(m_activePlayerData.ModHealingDonePercent), value);
|
||||
}
|
||||
|
||||
void UpdateCorruption()
|
||||
{
|
||||
float effectiveCorruption = GetRatingBonusValue(CombatRating.Corruption) - GetRatingBonusValue(CombatRating.CorruptionResistance);
|
||||
foreach (var corruptionEffect in CliDB.CorruptionEffectsStorage.Values)
|
||||
{
|
||||
if (((CorruptionEffectsFlag)corruptionEffect.Flags).HasAnyFlag(CorruptionEffectsFlag.Disabled))
|
||||
continue;
|
||||
|
||||
if (effectiveCorruption < corruptionEffect.MinCorruption)
|
||||
{
|
||||
RemoveAura(corruptionEffect.Aura);
|
||||
continue;
|
||||
}
|
||||
|
||||
PlayerConditionRecord playerCondition = CliDB.PlayerConditionStorage.LookupByKey(corruptionEffect.PlayerConditionID);
|
||||
if (playerCondition != null)
|
||||
{
|
||||
if (!ConditionManager.IsPlayerMeetingCondition(this, playerCondition))
|
||||
{
|
||||
RemoveAura(corruptionEffect.Aura);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
CastSpell(this, corruptionEffect.Aura, true);
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateArmorPenetration(int amount)
|
||||
{
|
||||
// Store Rating Value
|
||||
@@ -1702,10 +1734,10 @@ namespace Game.Entities
|
||||
return row.CritRanged;
|
||||
case CombatRating.CritSpell:
|
||||
return row.CritSpell;
|
||||
case CombatRating.Multistrike:
|
||||
return row.MultiStrike;
|
||||
case CombatRating.Readiness:
|
||||
return row.Readiness;
|
||||
case CombatRating.Corruption:
|
||||
return row.Corruption;
|
||||
case CombatRating.CorruptionResistance:
|
||||
return row.CorruptionResistance;
|
||||
case CombatRating.Speed:
|
||||
return row.Speed;
|
||||
case CombatRating.ResilienceCritTaken:
|
||||
|
||||
Reference in New Issue
Block a user