From 4ff0ccd143df7b6e96e8846de249cce987083b10 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Fri, 2 Feb 2024 14:46:09 -0500 Subject: [PATCH] Core/Spells: Store BasePoints as float in SpellEffectInfo Port From (https://github.com/TrinityCore/TrinityCore/commit/e9b0d347a4f5f51cda083a4dc7ed328530f0b5f6) --- Source/Game/Entities/Unit/Unit.Spells.cs | 4 ++-- Source/Game/Spells/Spell.cs | 4 ++-- Source/Game/Spells/SpellInfo.cs | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Source/Game/Entities/Unit/Unit.Spells.cs b/Source/Game/Entities/Unit/Unit.Spells.cs index a2918841a..591655450 100644 --- a/Source/Game/Entities/Unit/Unit.Spells.cs +++ b/Source/Game/Entities/Unit/Unit.Spells.cs @@ -2652,7 +2652,7 @@ namespace Game.Entities { int[] bp = new int[SpellConst.MaxEffects]; foreach (var spellEffectInfo in spellEntry.GetEffects()) - bp[spellEffectInfo.EffectIndex] = spellEffectInfo.BasePoints; + bp[spellEffectInfo.EffectIndex] = (int)spellEffectInfo.BasePoints; bp[i] = seatId; @@ -4079,7 +4079,7 @@ namespace Game.Entities if (createInfo.BaseAmount != null) bp = createInfo.BaseAmount[spellEffectInfo.EffectIndex]; else - bp = spellEffectInfo.BasePoints; + bp = (int)spellEffectInfo.BasePoints; auraEff.m_baseAmount = bp; } diff --git a/Source/Game/Spells/Spell.cs b/Source/Game/Spells/Spell.cs index bc1fcd003..056a6e681 100644 --- a/Source/Game/Spells/Spell.cs +++ b/Source/Game/Spells/Spell.cs @@ -5744,7 +5744,7 @@ namespace Game.Spells if (spellEffectInfo.Effect == SpellEffectName.ChangeBattlepetQuality) { - var qualityRecord = CliDB.BattlePetBreedQualityStorage.Values.FirstOrDefault(a1 => a1.MaxQualityRoll < spellEffectInfo.BasePoints); + var qualityRecord = CliDB.BattlePetBreedQualityStorage.Values.FirstOrDefault(a1 => a1.MaxQualityRoll < spellEffectInfo.CalcBaseValue(m_caster, creature, m_castItemEntry, m_castItemLevel)); BattlePetBreedQuality quality = BattlePetBreedQuality.Poor; if (qualityRecord != null) @@ -6230,7 +6230,7 @@ namespace Game.Spells break; case SpellGroupStackRule.ExclusiveSameEffect: // this one has further checks, but i don't think they're necessary for autocast logic case SpellGroupStackRule.ExclusiveHighest: - if (Math.Abs(spellEffectInfo.BasePoints) <= Math.Abs(eff.GetAmount())) + if (Math.Abs(spellEffectInfo.CalcBaseValue(m_caster, target, 0, -1)) <= Math.Abs(eff.GetAmount())) return false; break; case SpellGroupStackRule.Default: diff --git a/Source/Game/Spells/SpellInfo.cs b/Source/Game/Spells/SpellInfo.cs index 48a8196b2..58effc70b 100644 --- a/Source/Game/Spells/SpellInfo.cs +++ b/Source/Game/Spells/SpellInfo.cs @@ -4911,7 +4911,7 @@ namespace Game.Spells public SpellEffectName Effect; public AuraType ApplyAuraName; public uint ApplyAuraPeriod; - public int BasePoints; + public float BasePoints; public float RealPointsPerLevel; public float PointsPerResource; public float Amplitude;