aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/SpellMgr.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2018-12-31 21:35:55 +0100
committerShauren <shauren.trinity@gmail.com>2021-11-18 01:10:19 +0100
commitce794f3978e853341b2dc0c782e7bda34303b3f8 (patch)
tree328128ee2cb350ac4cc3998f1741ca9bbea64869 /src/server/game/Spells/SpellMgr.cpp
parent06b9be494a7e4d1249d11550cc0eec2e35712d25 (diff)
Core/Spells: Fixed ErrorCube spell missiles
(cherry picked from commit 3b5014fdae1b57add7fd204a9f9f10f3c2092b83)
Diffstat (limited to 'src/server/game/Spells/SpellMgr.cpp')
-rw-r--r--src/server/game/Spells/SpellMgr.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index 1dea10aee2e..50dc075c120 100644
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -3223,6 +3223,42 @@ void SpellMgr::LoadSpellInfoCustomAttributes()
}
spellInfoMutable->_InitializeExplicitTargetMask();
+
+ if (spellInfoMutable->Speed > 0.0f)
+ {
+ auto visualNeedsAmmo = [](SpellXSpellVisualEntry const* spellXspellVisual)
+ {
+ SpellVisualEntry const* spellVisual = sSpellVisualStore.LookupEntry(spellXspellVisual->SpellVisualID);
+ if (!spellVisual)
+ return false;
+
+ std::vector<SpellVisualMissileEntry const*> const* spellVisualMissiles = sDB2Manager.GetSpellVisualMissiles(spellVisual->SpellVisualMissileSetID);
+ if (!spellVisualMissiles)
+ return false;
+
+ for (SpellVisualMissileEntry const* spellVisualMissile : *spellVisualMissiles)
+ {
+ SpellVisualEffectNameEntry const* spellVisualEffectName = sSpellVisualEffectNameStore.LookupEntry(spellVisualMissile->SpellVisualEffectNameID);
+ if (!spellVisualEffectName)
+ continue;
+
+ SpellVisualEffectNameType type = SpellVisualEffectNameType(spellVisualEffectName->Type);
+ if (type == SpellVisualEffectNameType::UnitAmmoBasic || type == SpellVisualEffectNameType::UnitAmmoPreferred)
+ return true;
+ }
+
+ return false;
+ };
+
+ for (SpellXSpellVisualEntry const* spellXspellVisual : spellInfoMutable->_visuals)
+ {
+ if (visualNeedsAmmo(spellXspellVisual))
+ {
+ spellInfoMutable->AttributesCu |= SPELL_ATTR0_CU_NEEDS_AMMO_DATA;
+ break;
+ }
+ }
+ }
}
// addition for binary spells, omit spells triggering other spells