fix for implicit references

This commit is contained in:
Marc Zinnschlag 2014-10-15 16:27:03 +02:00
parent 8afdf0f46b
commit 984b586bb1
2 changed files with 7 additions and 2 deletions

View file

@ -16,6 +16,8 @@ namespace MWScript
{
struct ExplicitRef
{
static const bool implicit = false;
MWWorld::Ptr operator() (Interpreter::Runtime& runtime, bool required=true,
bool activeOnly = false) const
{
@ -31,6 +33,8 @@ namespace MWScript
struct ImplicitRef
{
static const bool implicit = true;
MWWorld::Ptr operator() (Interpreter::Runtime& runtime, bool required=true,
bool activeOnly = false) const
{

View file

@ -217,7 +217,7 @@ namespace MWScript
virtual void execute (Interpreter::Runtime& runtime)
{
int peek = runtime[0].mInteger;
int peek = R::implicit ? 0 : runtime[0].mInteger;
MWWorld::Ptr ptr = R()(runtime);
@ -225,7 +225,8 @@ namespace MWScript
runtime.pop();
// workaround broken endgame scripts that kill dagoth ur
if (Misc::StringUtils::ciEqual(ptr.getCellRef().getRefId(), "dagoth_ur_1"))
if (!R::implicit &&
Misc::StringUtils::ciEqual(ptr.getCellRef().getRefId(), "dagoth_ur_1"))
{
runtime.push (peek);