aboutsummaryrefslogtreecommitdiff
path: root/engines/mutationofjb/script.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/mutationofjb/script.cpp')
-rw-r--r--engines/mutationofjb/script.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/engines/mutationofjb/script.cpp b/engines/mutationofjb/script.cpp
index d90f37e161..39c485991b 100644
--- a/engines/mutationofjb/script.cpp
+++ b/engines/mutationofjb/script.cpp
@@ -189,6 +189,23 @@ Command *ScriptExecutionContext::getMacro(const Common::String &name) const {
return cmd;
}
+Command *ScriptExecutionContext::getExtra(const Common::String &name) const {
+ Command *cmd = nullptr;
+
+ Script *const localScript = _localScriptOverride ? _localScriptOverride : _game.getLocalScript();
+ Script *const globalScript = _game.getGlobalScript();
+
+ if (localScript) {
+ cmd = localScript->getExtra(name);
+ }
+
+ if (!cmd && globalScript) {
+ cmd = globalScript->getExtra(name);
+ }
+
+ return cmd;
+}
+
bool Script::loadFromStream(Common::SeekableReadStream &stream) {
destroy();
@@ -236,6 +253,7 @@ bool Script::loadFromStream(Common::SeekableReadStream &stream) {
_macros = parseCtx._macros;
_startups = parseCtx._startups;
+ _extras = parseCtx._extras;
return true;
}
@@ -285,4 +303,13 @@ Command *Script::getStartup(uint8 startupId) const {
return it->_value;
}
+Command *Script::getExtra(const Common::String &name) const {
+ Extras::const_iterator it = _extras.find(name);
+ if (it == _extras.end()) {
+ return nullptr;
+ }
+
+ return it->_value;
+}
+
}