aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Globals/ObjectMgr.cpp
diff options
context:
space:
mode:
authorsilinoron <none@none>2010-08-23 15:13:20 -0700
committersilinoron <none@none>2010-08-23 15:13:20 -0700
commit8bebc56b8f4ca872198e7d44c6efbdb8e24e2d8f (patch)
tree72b7a5d8919ada388368d2da9759e4021329592a /src/server/game/Globals/ObjectMgr.cpp
parentc09528a6bf1cee9dbbf45bfd564f52a3a4e4a1b7 (diff)
parent07a3a1254b78a42a7836efee99dc3d821c726d28 (diff)
merge
--HG-- branch : trunk
Diffstat (limited to 'src/server/game/Globals/ObjectMgr.cpp')
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp32
1 files changed, 26 insertions, 6 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index 31fce16b114..52915b27f90 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -5103,18 +5103,38 @@ void ObjectMgr::ValidateSpellScripts()
for (SpellScriptsMap::iterator itr = mSpellScripts.begin(); itr != mSpellScripts.end();)
{
SpellEntry const * spellEntry = sSpellStore.LookupEntry(itr->first);
- std::vector<std::pair<SpellScript *, SpellScriptsMap::iterator> > spellScripts;
- sScriptMgr.CreateSpellScripts(itr->first, spellScripts);
+ std::vector<std::pair<SpellScriptLoader *, SpellScriptsMap::iterator> > SpellScriptLoaders;
+ sScriptMgr.CreateSpellScriptLoaders(itr->first, SpellScriptLoaders);
SpellScriptsMap::iterator bitr;
itr = mSpellScripts.upper_bound(itr->first);
- for (std::vector<std::pair<SpellScript *, SpellScriptsMap::iterator> >::iterator sitr = spellScripts.begin(); sitr != spellScripts.end(); ++sitr)
+ for (std::vector<std::pair<SpellScriptLoader *, SpellScriptsMap::iterator> >::iterator sitr = SpellScriptLoaders.begin(); sitr != SpellScriptLoaders.end(); ++sitr)
{
bar.step();
- sitr->first->Register();
- if (!sitr->first->_Validate(spellEntry, sObjectMgr.GetScriptName(sitr->second->second)))
+ SpellScript * spellScript = sitr->first->GetSpellScript();
+ AuraScript * auraScript = sitr->first->GetAuraScript();
+ bool valid = true;
+ if (!spellScript && !auraScript)
+ {
+ sLog.outError("TSCR: Functions GetSpellScript() and GetAuraScript() of script `%s` do not return objects - script skipped", GetScriptName(sitr->second->second));
+ valid = false;
+ }
+ if (spellScript)
+ {
+ spellScript->Register();
+ if (!spellScript->_Validate(spellEntry, sObjectMgr.GetScriptName(sitr->second->second)))
+ valid = false;
+ delete spellScript;
+ }
+ if (auraScript)
+ {
+ auraScript->Register();
+ if (!auraScript->_Validate(spellEntry, sObjectMgr.GetScriptName(sitr->second->second)))
+ valid = false;
+ delete auraScript;
+ }
+ if (!valid)
mSpellScripts.erase(sitr->second);
- delete sitr->first;
}
}