aboutsummaryrefslogtreecommitdiff
path: root/engines/supernova/supernova1
diff options
context:
space:
mode:
authorJaromir Wysoglad2019-07-01 16:13:58 +0200
committerThierry Crozat2019-07-28 15:09:14 +0100
commit61975aa2e2cb8f432b58d7c1c4af6110fbf9d81d (patch)
treef05830950de3dc3d876eeba7632d6beab45028ac /engines/supernova/supernova1
parentc1317bb9c7b8c3d3164919de31f064d54de78994 (diff)
downloadscummvm-rg350-61975aa2e2cb8f432b58d7c1c4af6110fbf9d81d.tar.gz
scummvm-rg350-61975aa2e2cb8f432b58d7c1c4af6110fbf9d81d.tar.bz2
scummvm-rg350-61975aa2e2cb8f432b58d7c1c4af6110fbf9d81d.zip
SUPERNOVA: Add improved mode
Diffstat (limited to 'engines/supernova/supernova1')
-rw-r--r--engines/supernova/supernova1/rooms.cpp21
1 files changed, 19 insertions, 2 deletions
diff --git a/engines/supernova/supernova1/rooms.cpp b/engines/supernova/supernova1/rooms.cpp
index 77d0eac244..6d2fdd5316 100644
--- a/engines/supernova/supernova1/rooms.cpp
+++ b/engines/supernova/supernova1/rooms.cpp
@@ -1339,10 +1339,26 @@ bool ShipAirlock::interact(Action verb, Object &obj1, Object &obj2) {
}
void ShipAirlock::onEntrance() {
- if (!hasSeen())
+ if (!isSectionVisible(kMaxSection - 1)) {
_vm->renderMessage(kStringShipAirlock4);
+ setSectionVisible(kMaxSection -1, kShownTrue);
+ }
+ if (_vm->_improved && isSectionVisible(kMaxSection - 2)) {
+ if (_objectState[0].hasProperty(OPENED)) {
+ _objectState[4].setProperty(WORN);
+ _objectState[5].setProperty(WORN);
+ _objectState[6].setProperty(WORN);
+ interact(ACTION_PRESS, _objectState[2], _gm->_nullObject);
+ interact(ACTION_PRESS, _objectState[3], _gm->_nullObject);
+ } else {
+ _objectState[4].disableProperty(WORN);
+ _objectState[5].disableProperty(WORN);
+ _objectState[6].disableProperty(WORN);
+ interact(ACTION_PRESS, _objectState[3], _gm->_nullObject);
+ interact(ACTION_PRESS, _objectState[2], _gm->_nullObject);
+ }
+ }
- setRoomSeen(true);
}
ShipHold::ShipHold(SupernovaEngine *vm, GameManager1 *gm) {
@@ -1419,6 +1435,7 @@ bool ShipHold::interact(Action verb, Object &obj1, Object &obj2) {
void ShipHold::onEntrance() {
if (!hasSeen())
_vm->renderMessage(kStringShipHold2);
+ _gm->_rooms[AIRLOCK]->setSectionVisible(kMaxSection - 2, kShownTrue);
setRoomSeen(true);
_gm->_rooms[COCKPIT]->setRoomSeen(true);
}