diff options
| author | Shauren <shauren.trinity@gmail.com> | 2018-12-31 21:35:55 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2021-11-18 01:10:19 +0100 |
| commit | ce794f3978e853341b2dc0c782e7bda34303b3f8 (patch) | |
| tree | 328128ee2cb350ac4cc3998f1741ca9bbea64869 /src/server/game/Spells/SpellMgr.cpp | |
| parent | 06b9be494a7e4d1249d11550cc0eec2e35712d25 (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.cpp | 36 |
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 |
