Core/Spells: Moved loading aoe target caps out of SpellMgr::LoadSpellInfoCorrections
Port From (https://github.com/TrinityCore/TrinityCore/commit/38eee2f034398e77335ec97228b931aaca5579bd)
This commit is contained in:
@@ -2265,35 +2265,48 @@ namespace Game.Spells
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _LoadSqrtTargetLimit(int maxTargets, int numNonDiminishedTargets, uint? maxTargetsEffectValueHolder, uint? numNonDiminishedTargetsEffectValueHolder)
|
public void _LoadSqrtTargetLimit(int maxTargets, int numNonDiminishedTargets, uint? maxTargetsValueHolderSpell, uint? maxTargetsValueHolderEffect,
|
||||||
|
uint? numNonDiminishedTargetsValueHolderSpell, uint? numNonDiminishedTargetsValueHolderEffect)
|
||||||
{
|
{
|
||||||
SqrtDamageAndHealingDiminishing.MaxTargets = maxTargets;
|
SqrtDamageAndHealingDiminishing.MaxTargets = maxTargets;
|
||||||
SqrtDamageAndHealingDiminishing.NumNonDiminishedTargets = numNonDiminishedTargets;
|
SqrtDamageAndHealingDiminishing.NumNonDiminishedTargets = numNonDiminishedTargets;
|
||||||
|
|
||||||
if (maxTargetsEffectValueHolder.HasValue)
|
if (maxTargetsValueHolderEffect.HasValue)
|
||||||
{
|
{
|
||||||
if (maxTargetsEffectValueHolder < GetEffects().Count)
|
SpellInfo maxTargetValueHolder = this;
|
||||||
|
if (maxTargetsValueHolderSpell.HasValue)
|
||||||
|
maxTargetValueHolder = Global.SpellMgr.GetSpellInfo(maxTargetsValueHolderSpell.Value, Difficulty);
|
||||||
|
|
||||||
|
if (maxTargetValueHolder == null)
|
||||||
|
Log.outError(LogFilter.Spells, $"SpellInfo::_LoadSqrtTargetLimit(maxTargets): Spell {maxTargetsValueHolderSpell} does not exist");
|
||||||
|
else if (maxTargetsValueHolderEffect >= maxTargetValueHolder.GetEffects().Count)
|
||||||
|
Log.outError(LogFilter.Spells, $"SpellInfo::_LoadSqrtTargetLimit(maxTargets): Spell {maxTargetValueHolder.Id} does not have effect {maxTargetsValueHolderEffect.Value}");
|
||||||
|
else
|
||||||
{
|
{
|
||||||
SpellEffectInfo valueHolder = GetEffect(maxTargetsEffectValueHolder.Value);
|
SpellEffectInfo valueHolder = maxTargetValueHolder.GetEffect(maxTargetsValueHolderEffect.Value);
|
||||||
int expectedValue = valueHolder.CalcBaseValue(null, null, 0, -1);
|
int expectedValue = valueHolder.CalcBaseValue(null, null, 0, -1);
|
||||||
if (maxTargets != expectedValue)
|
if (maxTargets != expectedValue)
|
||||||
Log.outError(LogFilter.Spells, $"SpellInfo::_LoadSqrtTargetLimit(maxTargets): Spell {Id} has different value in effect {maxTargetsEffectValueHolder.Value} than expected, recheck target caps (expected {maxTargets}, got {expectedValue})");
|
Log.outError(LogFilter.Spells, $"SpellInfo::_LoadSqrtTargetLimit(maxTargets): Spell {maxTargetValueHolder.Id} has different value in effect {maxTargetsValueHolderEffect.Value} than expected, recheck target caps (expected {maxTargets}, got {expectedValue})");
|
||||||
}
|
}
|
||||||
else
|
|
||||||
Log.outError(LogFilter.Spells, $"SpellInfo::_LoadSqrtTargetLimit(maxTargets): Spell {Id} does not have effect {maxTargetsEffectValueHolder.Value}");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (numNonDiminishedTargetsEffectValueHolder.HasValue)
|
if (numNonDiminishedTargetsValueHolderEffect.HasValue)
|
||||||
{
|
{
|
||||||
if (numNonDiminishedTargetsEffectValueHolder < GetEffects().Count)
|
SpellInfo numNonDiminishedTargetsValueHolder = this;
|
||||||
|
if (numNonDiminishedTargetsValueHolderSpell.HasValue)
|
||||||
|
numNonDiminishedTargetsValueHolder = Global.SpellMgr.GetSpellInfo(numNonDiminishedTargetsValueHolderSpell.Value, Difficulty);
|
||||||
|
|
||||||
|
if (numNonDiminishedTargetsValueHolder == null)
|
||||||
|
Log.outError(LogFilter.Spells, $"SpellInfo::_LoadSqrtTargetLimit(numNonDiminishedTargets): Spell {maxTargetsValueHolderSpell} does not exist");
|
||||||
|
else if (numNonDiminishedTargetsValueHolderEffect >= numNonDiminishedTargetsValueHolder.GetEffects().Count)
|
||||||
|
Log.outError(LogFilter.Spells, $"SpellInfo::_LoadSqrtTargetLimit(numNonDiminishedTargets): Spell {numNonDiminishedTargetsValueHolder.Id} does not have effect {maxTargetsValueHolderEffect.Value}");
|
||||||
|
else
|
||||||
{
|
{
|
||||||
SpellEffectInfo valueHolder = GetEffect(numNonDiminishedTargetsEffectValueHolder.Value);
|
SpellEffectInfo valueHolder = numNonDiminishedTargetsValueHolder.GetEffect(numNonDiminishedTargetsValueHolderEffect.Value);
|
||||||
int expectedValue = valueHolder.CalcBaseValue(null, null, 0, -1);
|
int expectedValue = valueHolder.CalcBaseValue(null, null, 0, -1);
|
||||||
if (numNonDiminishedTargets != expectedValue)
|
if (numNonDiminishedTargets != expectedValue)
|
||||||
Log.outError(LogFilter.Spells, $"SpellInfo::_LoadSqrtTargetLimit(numNonDiminishedTargets): Spell {Id} has different value in effect {numNonDiminishedTargetsEffectValueHolder.Value} than expected, recheck target caps (expected {numNonDiminishedTargets}, got {expectedValue})");
|
Log.outError(LogFilter.Spells, $"SpellInfo::_LoadSqrtTargetLimit(numNonDiminishedTargets): Spell {numNonDiminishedTargetsValueHolder.Id} has different value in effect {numNonDiminishedTargetsValueHolderEffect.Value} than expected, recheck target caps (expected {numNonDiminishedTargets}, got {expectedValue})");
|
||||||
}
|
}
|
||||||
else
|
|
||||||
Log.outError(LogFilter.Spells, $"SpellInfo::_LoadSqrtTargetLimit(numNonDiminishedTargets): Spell {Id} does not have effect {numNonDiminishedTargetsEffectValueHolder.Value}");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4627,7 +4627,26 @@ namespace Game.Entities
|
|||||||
spellInfo._LoadImmunityInfo();
|
spellInfo._LoadImmunityInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.outInfo(LogFilter.ServerLoading, "Loaded SpellInfo immunity infos in {0} ms", Time.GetMSTimeDiffToNow(oldMSTime));
|
Log.outInfo(LogFilter.ServerLoading, $"Loaded SpellInfo immunity infos in {Time.GetMSTimeDiffToNow(oldMSTime)} ms");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void LoadSpellInfoTargetCaps()
|
||||||
|
{
|
||||||
|
uint oldMSTime = Time.GetMSTime();
|
||||||
|
|
||||||
|
// Eye Beam
|
||||||
|
ApplySpellFix([198030], spellInfo =>
|
||||||
|
{
|
||||||
|
spellInfo._LoadSqrtTargetLimit(5, 0, 198013, 4, null, null);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Volatile Agony
|
||||||
|
ApplySpellFix([453035], spellInfo =>
|
||||||
|
{
|
||||||
|
spellInfo._LoadSqrtTargetLimit(8, 0, 453034, 1, null, null);
|
||||||
|
});
|
||||||
|
|
||||||
|
Log.outInfo(LogFilter.ServerLoading, $"Loaded SpellInfo target caps in {Time.GetMSTimeDiffToNow(oldMSTime)} ms");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LoadPetFamilySpellsStore()
|
public void LoadPetFamilySpellsStore()
|
||||||
|
|||||||
@@ -492,6 +492,9 @@ namespace Game
|
|||||||
Log.outInfo(LogFilter.ServerLoading, "Loading SpellInfo immunity infos...");
|
Log.outInfo(LogFilter.ServerLoading, "Loading SpellInfo immunity infos...");
|
||||||
Global.SpellMgr.LoadSpellInfoImmunities();
|
Global.SpellMgr.LoadSpellInfoImmunities();
|
||||||
|
|
||||||
|
Log.outInfo(LogFilter.ServerLoading, "Loading SpellInfo target caps...");
|
||||||
|
Global.SpellMgr.LoadSpellInfoTargetCaps();
|
||||||
|
|
||||||
Log.outInfo(LogFilter.ServerLoading, "Loading PetFamilySpellsStore Data...");
|
Log.outInfo(LogFilter.ServerLoading, "Loading PetFamilySpellsStore Data...");
|
||||||
Global.SpellMgr.LoadPetFamilySpellsStore();
|
Global.SpellMgr.LoadPetFamilySpellsStore();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user