mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-16 19:19:56 +00:00
Merge pull request #2477 from Assumeru/script-respawn
Add script for respawned creatures and NPCs with refcount 0 fixes #5123
This commit is contained in:
commit
b156be0209
3 changed files with 14 additions and 1 deletions
|
@ -120,6 +120,7 @@
|
|||
Bug #5104: Black Dart's enchantment doesn't trigger at low Enchant levels
|
||||
Bug #5105: NPCs start combat with werewolves from any distance
|
||||
Bug #5110: ModRegion with a redundant numerical argument breaks script execution
|
||||
Bug #5123: Script won't run on respawn
|
||||
Feature #1774: Handle AvoidNode
|
||||
Feature #2229: Improve pathfinding AI
|
||||
Feature #3025: Analogue gamepad movement controls
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#include "../mwworld/containerstore.hpp"
|
||||
#include "../mwphysics/physicssystem.hpp"
|
||||
#include "../mwworld/cellstore.hpp"
|
||||
#include "../mwworld/localscripts.hpp"
|
||||
|
||||
#include "../mwrender/renderinginterface.hpp"
|
||||
#include "../mwrender/objects.hpp"
|
||||
|
@ -844,7 +845,12 @@ namespace MWClass
|
|||
if (ptr.getCellRef().hasContentFile())
|
||||
{
|
||||
if (ptr.getRefData().getCount() == 0)
|
||||
{
|
||||
ptr.getRefData().setCount(1);
|
||||
const std::string& script = getScript(ptr);
|
||||
if(!script.empty())
|
||||
MWBase::Environment::get().getWorld()->getLocalScripts().add(script, ptr);
|
||||
}
|
||||
|
||||
MWBase::Environment::get().getWorld()->removeContainerScripts(ptr);
|
||||
ptr.getRefData().setCustomData(nullptr);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#include "npc.hpp"
|
||||
#include "npc.hpp"
|
||||
|
||||
#include <memory>
|
||||
|
||||
|
@ -37,6 +37,7 @@
|
|||
#include "../mwworld/customdata.hpp"
|
||||
#include "../mwphysics/physicssystem.hpp"
|
||||
#include "../mwworld/cellstore.hpp"
|
||||
#include "../mwworld/localscripts.hpp"
|
||||
|
||||
#include "../mwrender/objects.hpp"
|
||||
#include "../mwrender/renderinginterface.hpp"
|
||||
|
@ -1376,7 +1377,12 @@ namespace MWClass
|
|||
if (ptr.getCellRef().hasContentFile())
|
||||
{
|
||||
if (ptr.getRefData().getCount() == 0)
|
||||
{
|
||||
ptr.getRefData().setCount(1);
|
||||
const std::string& script = getScript(ptr);
|
||||
if (!script.empty())
|
||||
MWBase::Environment::get().getWorld()->getLocalScripts().add(script, ptr);
|
||||
}
|
||||
|
||||
MWBase::Environment::get().getWorld()->removeContainerScripts(ptr);
|
||||
ptr.getRefData().setCustomData(nullptr);
|
||||
|
|
Loading…
Reference in a new issue