fix for implicit references

openmw-33
Marc Zinnschlag 10 years ago
parent 8afdf0f46b
commit 984b586bb1

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

@ -217,7 +217,7 @@ namespace MWScript
virtual void execute (Interpreter::Runtime& runtime) virtual void execute (Interpreter::Runtime& runtime)
{ {
int peek = runtime[0].mInteger; int peek = R::implicit ? 0 : runtime[0].mInteger;
MWWorld::Ptr ptr = R()(runtime); MWWorld::Ptr ptr = R()(runtime);
@ -225,7 +225,8 @@ namespace MWScript
runtime.pop(); runtime.pop();
// workaround broken endgame scripts that kill dagoth ur // 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); runtime.push (peek);

Loading…
Cancel
Save