diff options
-rw-r--r-- | engines/director/director.cpp | 2 | ||||
-rw-r--r-- | engines/director/lingo/lingo-code.cpp | 16 |
2 files changed, 13 insertions, 5 deletions
diff --git a/engines/director/director.cpp b/engines/director/director.cpp index 4e3b1f3024..8c07214268 100644 --- a/engines/director/director.cpp +++ b/engines/director/director.cpp @@ -102,7 +102,7 @@ if par1 = 3 then\n\ else\n\ put 9\n\ end if\n\ -\n\ +shipx\n\ ", kMovieScript, 1); return Common::kNoError; diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp index cc5777a50d..d7cbe8108d 100644 --- a/engines/director/lingo/lingo-code.cpp +++ b/engines/director/lingo/lingo-code.cpp @@ -408,11 +408,19 @@ int Lingo::codeId(Common::String &s) { return g_lingo->codeId_(s); } -int Lingo::codeId_(Common::String &s) { - int ret = code1(c_varpush); +int Lingo::codeId_(Common::String &name) { + int ret; - codeString(s.c_str()); - code1(c_eval); + if (!_handlers.contains(name)) { // This is a call + ret = code1(c_call); + codeString(name.c_str()); + code1((inst)0); // Zero arguments + } else { + ret = code1(c_varpush); + + codeString(name.c_str()); + code1(c_eval); + } return ret; } |