mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/Scripting: Fix loading of spell/aurascripts
* Broken since9cc97f226d* There is still a crash when using lazy unloading which I will fix in a later commit (this commit should fix at least the static build and normal usage of the dynamic build). * Closes #16948 (cherry picked from commit410cf0dd05)
This commit is contained in:
@@ -296,7 +296,7 @@ public:
|
||||
virtual void BeforeReleaseContext(std::string const& /*context*/) { }
|
||||
|
||||
/// Called before SwapContext
|
||||
virtual void BeforeSwapContext() { }
|
||||
virtual void BeforeSwapContext(bool /*initialize*/) { }
|
||||
|
||||
/// Called before Unload
|
||||
virtual void BeforeUnload() { }
|
||||
@@ -482,8 +482,12 @@ public:
|
||||
ids_removed_.insert(ids_to_remove.begin(), ids_to_remove.end());
|
||||
}
|
||||
|
||||
void BeforeSwapContext() final override
|
||||
void BeforeSwapContext(bool initialize) override
|
||||
{
|
||||
// Never swap creature or gameobject scripts when initializing
|
||||
if (initialize)
|
||||
return;
|
||||
|
||||
// Add the recently added scripts to the deleted scripts to replace
|
||||
// default AI's with recently added core scripts.
|
||||
ids_removed_.insert(static_cast<Base*>(this)->GetRecentlyAddedScriptIDs().begin(),
|
||||
@@ -566,9 +570,10 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void BeforeSwapContext() final override
|
||||
void BeforeSwapContext(bool initialize) override
|
||||
{
|
||||
if (swapped)
|
||||
// Never swap outdoor pvp scripts when initializing
|
||||
if ((!initialize) && swapped)
|
||||
{
|
||||
sOutdoorPvPMgr->InitOutdoorPvP();
|
||||
swapped = false;
|
||||
@@ -599,7 +604,7 @@ public:
|
||||
swapped = true;
|
||||
}
|
||||
|
||||
void BeforeSwapContext() final override
|
||||
void BeforeSwapContext(bool initialize) override
|
||||
{
|
||||
swapped = false;
|
||||
}
|
||||
@@ -629,7 +634,7 @@ public:
|
||||
swapped = true;
|
||||
}
|
||||
|
||||
void BeforeSwapContext() final override
|
||||
void BeforeSwapContext(bool initialize) override
|
||||
{
|
||||
if (swapped)
|
||||
{
|
||||
@@ -683,8 +688,7 @@ public:
|
||||
|
||||
void SwapContext(bool initialize) final override
|
||||
{
|
||||
if (!initialize)
|
||||
this->BeforeSwapContext();
|
||||
this->BeforeSwapContext(initialize);
|
||||
|
||||
_recently_added_ids.clear();
|
||||
}
|
||||
@@ -813,7 +817,7 @@ public:
|
||||
ChatHandler::invalidateCommandTable();
|
||||
}
|
||||
|
||||
void BeforeSwapContext() final override
|
||||
void BeforeSwapContext(bool /*initialize*/) override
|
||||
{
|
||||
ChatHandler::invalidateCommandTable();
|
||||
}
|
||||
@@ -846,9 +850,9 @@ public:
|
||||
_scripts.erase(context);
|
||||
}
|
||||
|
||||
void SwapContext(bool) final override
|
||||
void SwapContext(bool initialize) final override
|
||||
{
|
||||
this->BeforeSwapContext();
|
||||
this->BeforeSwapContext(initialize);
|
||||
}
|
||||
|
||||
void RemoveUsedScriptsFromContainer(std::unordered_set<std::string>& scripts) final override
|
||||
@@ -1161,10 +1165,10 @@ void CreateSpellOrAuraScripts(uint32 spellId, std::list<T*>& scriptVector, F&& e
|
||||
for (SpellScriptsContainer::iterator itr = bounds.first; itr != bounds.second; ++itr)
|
||||
{
|
||||
// When the script is disabled continue with the next one
|
||||
if (itr->second.second)
|
||||
if (!itr->second.second)
|
||||
continue;
|
||||
|
||||
SpellScriptLoader* tmpscript = ScriptRegistry<SpellScriptLoader>::Instance()->GetScriptById(itr->second.first);
|
||||
SpellScriptLoader* tmpscript = sScriptMgr->GetSpellScriptLoader(itr->second.first);
|
||||
if (!tmpscript)
|
||||
continue;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user