aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/sci.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sci/sci.cpp')
-rw-r--r--engines/sci/sci.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/engines/sci/sci.cpp b/engines/sci/sci.cpp
index ebe157ef04..717d6786b7 100644
--- a/engines/sci/sci.cpp
+++ b/engines/sci/sci.cpp
@@ -311,11 +311,7 @@ Common::Error SciEngine::run() {
_kernel->init();
_features = new GameFeatures(segMan, _kernel);
- // Only SCI0, SCI01 and SCI1 EGA games used a parser
- _vocabulary = (getSciVersion() <= SCI_VERSION_1_EGA_ONLY) ? new Vocabulary(_resMan, false) : NULL;
- // Also, XMAS1990 apparently had a parser too. Refer to https://forums.scummvm.org/viewtopic.php?t=9135
- if (getGameId() == GID_CHRISTMAS1990)
- _vocabulary = new Vocabulary(_resMan, false);
+ _vocabulary = hasParser() ? new Vocabulary(_resMan, false) : NULL;
_gamestate = new EngineState(segMan);
_guestAdditions = new GuestAdditions(_gamestate, _features, _kernel);
@@ -779,6 +775,13 @@ bool SciEngine::isBE() const{
}
}
+bool SciEngine::hasParser() const {
+ // Only SCI0, SCI01 and SCI1 EGA games used a parser, along with
+ // multilingual LSL3 and SQ3 Amiga which are SCI_VERSION_1_MIDDLE
+ return getSciVersion() <= SCI_VERSION_1_EGA_ONLY ||
+ getGameId() == GID_LSL3 || getGameId() == GID_SQ3;
+}
+
bool SciEngine::hasMacIconBar() const {
return _resMan->isSci11Mac() && getSciVersion() == SCI_VERSION_1_1 &&
(getGameId() == GID_KQ6 || getGameId() == GID_FREDDYPHARKAS);