Core/Scripts: Expose calculated spell value variance to scripts
Port From (https://github.com/TrinityCore/TrinityCore/commit/701532f9f033547a5fc2d0b594d04f6349cb441b)
This commit is contained in:
@@ -914,6 +914,28 @@ namespace Game.Scripting
|
||||
m_spell.damage = value;
|
||||
}
|
||||
|
||||
public float GetEffectVariance()
|
||||
{
|
||||
if (!IsInEffectHook())
|
||||
{
|
||||
Log.outError(LogFilter.Scripts, $"Script: `{m_scriptName}` Spell: `{m_scriptSpellId}`: function SpellScript::GetEffectVariance was called, but function has no effect in current hook!");
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
return m_spell.variance;
|
||||
}
|
||||
|
||||
public void SetEffectVariance(float variance)
|
||||
{
|
||||
if (!IsInEffectHook())
|
||||
{
|
||||
Log.outError(LogFilter.Scripts, $"Script: `{m_scriptName}` Spell: `{m_scriptSpellId}`: function SpellScript::SetEffectVariance was called, but function has no effect in current hook!");
|
||||
return;
|
||||
}
|
||||
|
||||
m_spell.variance = variance;
|
||||
}
|
||||
|
||||
// returns: cast item if present.
|
||||
public Item GetCastItem() { return m_spell.m_CastItem; }
|
||||
|
||||
|
||||
@@ -4587,7 +4587,7 @@ namespace Game.Spells
|
||||
destTarget = m_destTargets[spellEffectInfo.EffectIndex].Position;
|
||||
effectInfo = spellEffectInfo;
|
||||
|
||||
damage = CalculateDamage(spellEffectInfo, unitTarget, out _variance);
|
||||
damage = CalculateDamage(spellEffectInfo, unitTarget, out variance);
|
||||
|
||||
bool preventDefault = CallScriptEffectHandlers(spellEffectInfo.EffectIndex, mode);
|
||||
|
||||
@@ -8001,7 +8001,7 @@ namespace Game.Spells
|
||||
public WorldLocation destTarget;
|
||||
public int damage;
|
||||
public SpellMissInfo targetMissInfo;
|
||||
float _variance;
|
||||
public float variance;
|
||||
SpellEffectHandleMode effectHandleMode;
|
||||
public SpellEffectInfo effectInfo;
|
||||
// used in effects handlers
|
||||
|
||||
@@ -168,7 +168,7 @@ namespace Game.Spells
|
||||
if (unitCaster != null && apply_direct_bonus)
|
||||
{
|
||||
uint bonus = unitCaster.SpellDamageBonusDone(unitTarget, m_spellInfo, (uint)damage, DamageEffectType.SpellDirect, effectInfo);
|
||||
damage = (int)(bonus + (bonus * _variance));
|
||||
damage = (int)(bonus + (bonus * variance));
|
||||
damage = (int)unitTarget.SpellDamageBonusTaken(unitCaster, m_spellInfo, (uint)damage, DamageEffectType.SpellDirect);
|
||||
}
|
||||
|
||||
@@ -688,7 +688,7 @@ namespace Game.Spells
|
||||
if (unitCaster != null)
|
||||
{
|
||||
uint bonus = unitCaster.SpellDamageBonusDone(unitTarget, m_spellInfo, (uint)damage, DamageEffectType.SpellDirect, effectInfo);
|
||||
damage = (int)(bonus + (bonus * _variance));
|
||||
damage = (int)(bonus + (bonus * variance));
|
||||
damage = (int)unitTarget.SpellDamageBonusTaken(unitCaster, m_spellInfo, (uint)damage, DamageEffectType.SpellDirect);
|
||||
}
|
||||
|
||||
@@ -810,7 +810,7 @@ namespace Game.Spells
|
||||
else
|
||||
{
|
||||
uint bonus = unitCaster.SpellHealingBonusDone(unitTarget, m_spellInfo, (uint)addhealth, DamageEffectType.Heal, effectInfo);
|
||||
addhealth = (int)(bonus + (uint)(bonus * _variance));
|
||||
addhealth = (int)(bonus + (uint)(bonus * variance));
|
||||
}
|
||||
|
||||
addhealth = (int)unitTarget.SpellHealingBonusTaken(unitCaster, m_spellInfo, (uint)addhealth, DamageEffectType.Heal);
|
||||
@@ -856,7 +856,7 @@ namespace Game.Spells
|
||||
if (unitCaster)
|
||||
heal = unitCaster.SpellHealingBonusDone(unitTarget, m_spellInfo, heal, DamageEffectType.Heal, effectInfo);
|
||||
|
||||
heal += (uint)(heal * _variance);
|
||||
heal += (uint)(heal * variance);
|
||||
if (unitCaster)
|
||||
heal = unitTarget.SpellHealingBonusTaken(unitCaster, m_spellInfo, heal, DamageEffectType.Heal);
|
||||
|
||||
@@ -877,7 +877,7 @@ namespace Game.Spells
|
||||
if (unitCaster != null)
|
||||
unitCaster.SpellDamageBonusDone(unitTarget, m_spellInfo, (uint)damage, DamageEffectType.SpellDirect, effectInfo);
|
||||
|
||||
damage = (int)(bonus + (bonus * _variance));
|
||||
damage = (int)(bonus + (bonus * variance));
|
||||
|
||||
if (unitCaster != null)
|
||||
damage = (int)unitTarget.SpellDamageBonusTaken(unitCaster, m_spellInfo, (uint)damage, DamageEffectType.SpellDirect);
|
||||
|
||||
Reference in New Issue
Block a user