aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Scripting/ScriptMgr.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2020-06-12 01:29:18 +0200
committerShauren <shauren.trinity@gmail.com>2020-06-12 01:29:18 +0200
commitc7306439e7004288fb85890d6a5f730cf1761d71 (patch)
treea1b6fd4af385923f321ff24ef4d66d09374397b9 /src/server/game/Scripting/ScriptMgr.cpp
parent1cdd1d0249ad49c860e117e1e39d451e1a3fbe43 (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.cpp90
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>