diff options
author | Shauren <shauren.trinity@gmail.com> | 2020-06-12 01:29:18 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2020-06-12 01:29:18 +0200 |
commit | c7306439e7004288fb85890d6a5f730cf1761d71 (patch) | |
tree | a1b6fd4af385923f321ff24ef4d66d09374397b9 /src/server/game/Scripting/ScriptMgr.cpp | |
parent | 1cdd1d0249ad49c860e117e1e39d451e1a3fbe43 (diff) |
Core/Spells: Implement using different difficulty data from all spell related db2s, not just SpellEffect and SpellPower
Diffstat (limited to 'src/server/game/Scripting/ScriptMgr.cpp')
-rw-r--r-- | src/server/game/Scripting/ScriptMgr.cpp | 90 |
1 files changed, 2 insertions, 88 deletions
diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index b70f38a8970..b912f51cf9d 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -1131,7 +1131,7 @@ ScriptMgr* ScriptMgr::instance() void ScriptMgr::Initialize() { - ASSERT(sSpellMgr->GetSpellInfo(SPELL_HOTSWAP_VISUAL_SPELL_EFFECT) + ASSERT(sSpellMgr->GetSpellInfo(SPELL_HOTSWAP_VISUAL_SPELL_EFFECT, DIFFICULTY_NONE) && "Reload hotswap spell effect for creatures isn't valid!"); uint32 oldMSTime = getMSTime(); @@ -1228,8 +1228,7 @@ void ScriptMgr::Unload() { sScriptRegistryCompositum->Unload(); - delete[] SpellSummary; - delete[] UnitAI::AISpellInfo; + UnitAI::AISpellInfo.clear(); } void ScriptMgr::LoadDatabase() @@ -1241,91 +1240,6 @@ void ScriptMgr::LoadDatabase() void ScriptMgr::FillSpellSummary() { UnitAI::FillAISpellInfo(); - - SpellSummary = new TSpellSummary[sSpellMgr->GetSpellInfoStoreSize()]; - - SpellInfo const* pTempSpell; - - for (uint32 i = 0; i < sSpellMgr->GetSpellInfoStoreSize(); ++i) - { - SpellSummary[i].Effects = 0; - SpellSummary[i].Targets = 0; - - pTempSpell = sSpellMgr->GetSpellInfo(i); - // This spell doesn't exist. - if (!pTempSpell) - continue; - - for (SpellEffectInfo const* effect : pTempSpell->GetEffectsForDifficulty(DIFFICULTY_NONE)) - { - if (!effect) - continue; - - // Spell targets self. - if (effect->TargetA.GetTarget() == TARGET_UNIT_CASTER) - SpellSummary[i].Targets |= 1 << (SELECT_TARGET_SELF-1); - - // Spell targets a single enemy. - if (effect->TargetA.GetTarget() == TARGET_UNIT_TARGET_ENEMY || - effect->TargetA.GetTarget() == TARGET_DEST_TARGET_ENEMY) - SpellSummary[i].Targets |= 1 << (SELECT_TARGET_SINGLE_ENEMY-1); - - // Spell targets AoE at enemy. - if (effect->TargetA.GetTarget() == TARGET_UNIT_SRC_AREA_ENEMY || - effect->TargetA.GetTarget() == TARGET_UNIT_DEST_AREA_ENEMY || - effect->TargetA.GetTarget() == TARGET_SRC_CASTER || - effect->TargetA.GetTarget() == TARGET_DEST_DYNOBJ_ENEMY) - SpellSummary[i].Targets |= 1 << (SELECT_TARGET_AOE_ENEMY-1); - - // Spell targets an enemy. - if (effect->TargetA.GetTarget() == TARGET_UNIT_TARGET_ENEMY || - effect->TargetA.GetTarget() == TARGET_DEST_TARGET_ENEMY || - effect->TargetA.GetTarget() == TARGET_UNIT_SRC_AREA_ENEMY || - effect->TargetA.GetTarget() == TARGET_UNIT_DEST_AREA_ENEMY || - effect->TargetA.GetTarget() == TARGET_SRC_CASTER || - effect->TargetA.GetTarget() == TARGET_DEST_DYNOBJ_ENEMY) - SpellSummary[i].Targets |= 1 << (SELECT_TARGET_ANY_ENEMY-1); - - // Spell targets a single friend (or self). - if (effect->TargetA.GetTarget() == TARGET_UNIT_CASTER || - effect->TargetA.GetTarget() == TARGET_UNIT_TARGET_ALLY || - effect->TargetA.GetTarget() == TARGET_UNIT_TARGET_PARTY) - SpellSummary[i].Targets |= 1 << (SELECT_TARGET_SINGLE_FRIEND-1); - - // Spell targets AoE friends. - if (effect->TargetA.GetTarget() == TARGET_UNIT_CASTER_AREA_PARTY || - effect->TargetA.GetTarget() == TARGET_UNIT_LASTTARGET_AREA_PARTY || - effect->TargetA.GetTarget() == TARGET_SRC_CASTER) - SpellSummary[i].Targets |= 1 << (SELECT_TARGET_AOE_FRIEND-1); - - // Spell targets any friend (or self). - if (effect->TargetA.GetTarget() == TARGET_UNIT_CASTER || - effect->TargetA.GetTarget() == TARGET_UNIT_TARGET_ALLY || - effect->TargetA.GetTarget() == TARGET_UNIT_TARGET_PARTY || - effect->TargetA.GetTarget() == TARGET_UNIT_CASTER_AREA_PARTY || - effect->TargetA.GetTarget() == TARGET_UNIT_LASTTARGET_AREA_PARTY || - effect->TargetA.GetTarget() == TARGET_SRC_CASTER) - SpellSummary[i].Targets |= 1 << (SELECT_TARGET_ANY_FRIEND-1); - - // Make sure that this spell includes a damage effect. - if (effect->Effect == SPELL_EFFECT_SCHOOL_DAMAGE || - effect->Effect == SPELL_EFFECT_INSTAKILL || - effect->Effect == SPELL_EFFECT_ENVIRONMENTAL_DAMAGE || - effect->Effect == SPELL_EFFECT_HEALTH_LEECH) - SpellSummary[i].Effects |= 1 << (SELECT_EFFECT_DAMAGE-1); - - // Make sure that this spell includes a healing effect (or an apply aura with a periodic heal). - if (effect->Effect == SPELL_EFFECT_HEAL || - effect->Effect == SPELL_EFFECT_HEAL_MAX_HEALTH || - effect->Effect == SPELL_EFFECT_HEAL_MECHANICAL || - (effect->Effect == SPELL_EFFECT_APPLY_AURA && effect->ApplyAuraName == 8)) - SpellSummary[i].Effects |= 1 << (SELECT_EFFECT_HEALING-1); - - // Make sure that this spell applies an aura. - if (effect->Effect == SPELL_EFFECT_APPLY_AURA) - SpellSummary[i].Effects |= 1 << (SELECT_EFFECT_AURA-1); - } - } } template<typename T, typename F, typename O> |