[Scummvm-git-logs] scummvm master -> 2acc735e193c37cf25d8080c4a251146bbc4a918
dreammaster
noreply at scummvm.org
Tue Nov 19 05:26:00 UTC 2024
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
35ea205634 M4: RIDDLE: Renaming and cleanups of room 305
2acc735e19 M4: RIDDLE: Fixes & cleanup for using drawer and taking turtle treats
Commit: 35ea20563450f51dc71ba0e284ba049f97ca0c08
https://github.com/scummvm/scummvm/commit/35ea20563450f51dc71ba0e284ba049f97ca0c08
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-11-18T18:23:42-08:00
Commit Message:
M4: RIDDLE: Renaming and cleanups of room 305
Changed paths:
engines/m4/riddle/rooms/section3/room305.cpp
engines/m4/riddle/rooms/section3/room305.h
diff --git a/engines/m4/riddle/rooms/section3/room305.cpp b/engines/m4/riddle/rooms/section3/room305.cpp
index 31e1614ab68..dbf5b87650c 100644
--- a/engines/m4/riddle/rooms/section3/room305.cpp
+++ b/engines/m4/riddle/rooms/section3/room305.cpp
@@ -49,15 +49,15 @@ void Room305::init() {
digi_preload("305_s02");
if (_G(game).previous_room != KERNEL_RESTORING_GAME) {
- _val1 = -1;
+ _trigger1 = -1;
_triggerMode1 = KT_DAEMON;
_triggerMode2 = KT_DAEMON;
- _val2 = 0;
- _val3 = 0;
+ _showWalker = false;
+ _unused = false;
_drawerOpen = false;
}
- _val5 = 0;
+ _hideCartoon = false;
_ripMedHigh = series_load("RIP MED HIGH REACHER POS2");
_ripLooksDown = series_load("RIP LOOKS DOWN POS1");
@@ -167,7 +167,7 @@ void Room305::init() {
_stander = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 494, 278, 73, 0xf00, 1,
triggerMachineByHashCallback, "fl stander");
sendWSMessage_10000(1, _stander, _feng3, 1, 1, 400, _feng3, 1, 6, 0);
- _val6 = _val7 = 1;
+ _fengMode = _fengShould = 1;
setShadow5(true);
} else {
hotspot_set_active("FENG LI", false);
@@ -218,7 +218,7 @@ void Room305::init() {
triggerMachineByHashCallback, "fl stander");
_G(kernel).trigger_mode = KT_DAEMON;
sendWSMessage_10000(1, _stander, _feng3, 1, 1, 400, _feng3, 1, 6, 0);
- _val6 = _val7 = 1;
+ _fengMode = _fengShould = 1;
setShadow5(true);
} else {
hotspot_set_active("FENG LI", false);
@@ -277,7 +277,7 @@ void Room305::daemon() {
triggerMachineByHashCallback, "fl stander");
_G(kernel).trigger_mode = KT_DAEMON;
sendWSMessage_10000(1, _stander, _feng3, 1, 1, 400, _feng3, 1, 6, 1);
- _val6 = _val7 = 1;
+ _fengMode = _fengShould = 1;
setShadow5(true);
_G(player).disable_hyperwalk = false;
break;
@@ -287,13 +287,13 @@ void Room305::daemon() {
break;
case 200:
- if (!_val8 && !_conv1 && _val1 != -1) {
- kernel_trigger_dispatchx(_val1);
- _val1 = -1;
+ if (!_ripleyMode && !_ripleyShould && _trigger1 != -1) {
+ kernel_trigger_dispatchx(_trigger1);
+ _trigger1 = -1;
- if (_val2) {
+ if (_showWalker) {
ws_unhide_walker();
- _val2 = 0;
+ _showWalker = 0;
}
}
@@ -301,26 +301,26 @@ void Room305::daemon() {
break;
case 201:
- switch (_val8) {
+ switch (_ripleyMode) {
case 0:
- switch (_conv1) {
+ switch (_ripleyShould) {
case 0:
sendWSMessage_10000(1, _rip6, 1, 1, 1, 200, 1, 1, 1, 0);
break;
case 1:
sendWSMessage_10000(1, _rip6, _rip3, 1, 6, 200, _rip3, 6, 6, 0);
- _val8 = 1;
+ _ripleyMode = 1;
break;
case 3:
sendWSMessage_10000(1, _rip6, _rip2, 1, 16, 200, _rip2, 16, 16, 0);
- _val8 = 3;
+ _ripleyMode = 3;
break;
case 5:
sendWSMessage_10000(1, _rip6, _rip1, 1, 12, 200, _rip1, 12, 12, 0);
- _val8 = 5;
+ _ripleyMode = 5;
break;
case 7:
@@ -336,29 +336,29 @@ void Room305::daemon() {
break;
case 1:
- if (_conv1 == 1) {
+ if (_ripleyShould == 1) {
sendWSMessage_10000(1, _rip6, _rip3, 6, 6, 200, _rip3, 6, 6, 0);
} else {
sendWSMessage_10000(1, _rip6, _rip3, 6, 1, 200, 1, 1, 1, 0);
- _val8 = 5;
+ _ripleyMode = 5;
}
break;
case 3:
- if (_conv1 == 3) {
+ if (_ripleyShould == 3) {
sendWSMessage_10000(1, _rip6, _rip2, 16, 16, 200, _rip2, 16, 16, 0);
} else {
sendWSMessage_10000(1, _rip6, _rip2, 16, 1, 200, 1, 1, 1, 0);
- _val8 = 0;
+ _ripleyMode = 0;
}
break;
case 5:
- if (_conv1 == 5) {
+ if (_ripleyShould == 5) {
sendWSMessage_10000(1, _rip6, _rip1, 12, 12, 200, _rip1, 12, 12, 0);
} else {
sendWSMessage_10000(1, _rip6, _rip1, 12, 1, 200, 1, 1, 1, 0);
- _val8 = 0;
+ _ripleyMode = 0;
}
break;
@@ -368,13 +368,13 @@ void Room305::daemon() {
break;
case 300:
- if (!_val8 && !_conv1 && _val1 != -1) {
- kernel_trigger_dispatchx(_val1);
- _val1 = -1;
+ if (!_ripleyMode && !_ripleyShould && _trigger1 != -1) {
+ kernel_trigger_dispatchx(_trigger1);
+ _trigger1 = -1;
- if (_val2) {
+ if (_showWalker) {
ws_unhide_walker();
- _val2 = 0;
+ _showWalker = false;
}
}
@@ -382,27 +382,27 @@ void Room305::daemon() {
break;
case 301:
- switch (_val8) {
+ switch (_ripleyMode) {
case 0:
- switch (_conv1) {
+ switch (_ripleyShould) {
case 0:
sendWSMessage_10000(1, _rip6, 1, 1, 1, 300, 1, 1, 1, 0);
break;
case 1:
sendWSMessage_10000(1, _rip6, _suit2, 1, 10, 300, _suit2, 10, 10, 0);
- _val8 = 1;
+ _ripleyMode = 1;
break;
case 3:
sendWSMessage_10000(1, _rip6, _suit1, 1, 17, 300, _suit1, 17, 17, 0);
- _val8 = 3;
+ _ripleyMode = 3;
break;
case 5:
case 6:
sendWSMessage_10000(1, _rip6, _suit3, 1, 14, 300, _suit3, 14, 14, 0);
- _val8 = 5;
+ _ripleyMode = 5;
break;
case 7:
@@ -418,47 +418,47 @@ void Room305::daemon() {
break;
case 1:
- if (_conv1 == 1) {
+ if (_ripleyShould == 1) {
sendWSMessage_10000(1, _rip6, _suit2, 10, 10, 300, _suit2, 10, 10, 0);
} else {
sendWSMessage_10000(1, _rip6, _suit2, 11, 18, 300, 1, 1, 1, 0);
- _val8 = 0;
+ _ripleyMode = 0;
}
break;
case 3:
- if (_conv1 == 3) {
+ if (_ripleyShould == 3) {
sendWSMessage_10000(1, _rip6, _suit1, 17, 17, 300, _suit1, 17, 17, 0);
} else {
sendWSMessage_10000(1, _rip6, _suit1, 17, 1, 300, 1, 1, 1, 0);
- _val8 = 0;
+ _ripleyMode = 0;
}
break;
case 5:
- switch (_conv1) {
+ switch (_ripleyShould) {
case 5:
sendWSMessage_10000(1, _rip6, _suit3, 14, 14, 300, _suit3, 14, 14, 0);
break;
case 6:
sendWSMessage_10000(1, _rip6, _suit3, 15, 25, 300, _suit3, 25, 25, 0);
- _val8 = 6;
+ _ripleyMode = 6;
break;
default:
sendWSMessage_10000(1, _rip6, _suit3, 14, 1, 300, 1, 1, 1, 0);
- _val8 = 0;
+ _ripleyMode = 0;
break;
}
break;
case 6:
- if (_conv1 == 6) {
+ if (_ripleyShould == 6) {
sendWSMessage_10000(1, _rip6, _suit3, 25, 25, 300, _suit3, 25, 25, 0);
} else {
sendWSMessage_10000(1, _rip6, _suit3, 25, 15, 300, _suit3, 14, 14, 0);
- _val8 = 5;
+ _ripleyMode = 5;
}
break;
@@ -468,13 +468,13 @@ void Room305::daemon() {
break;
case 400:
- if (!_val6 && !_val7 && _val1 != -1) {
- kernel_trigger_dispatchx(_val1);
- _val1 = -1;
+ if (!_fengMode && !_fengShould && _trigger1 != -1) {
+ kernel_trigger_dispatchx(_trigger1);
+ _trigger1 = -1;
- if (_val2) {
+ if (_showWalker) {
ws_unhide_walker();
- _val2 = 0;
+ _showWalker = false;
}
}
@@ -482,9 +482,9 @@ void Room305::daemon() {
break;
case 401:
- switch (_val6) {
+ switch (_fengMode) {
case 0:
- switch (_val7) {
+ switch (_fengShould) {
case 0:
sendWSMessage_10000(1, _stander, _jellyBeans, 1, 1, 400, _jellyBeans, 1, 1, 0);
break;
@@ -493,12 +493,12 @@ void Room305::daemon() {
case 2:
case 4:
sendWSMessage_10000(1, _stander, _feng1, 16, 1, 400, _feng3, 1, 6, 1);
- _val6 = 1;
+ _fengMode = 1;
break;
case 3:
sendWSMessage_10000(1, _stander, _jellyBeans, 1, 13, 400, _jellyBeans, 14, 19, 1);
- _val6 = 3;
+ _fengMode = 3;
break;
default:
@@ -507,10 +507,10 @@ void Room305::daemon() {
break;
case 1:
- switch (_val7) {
+ switch (_fengShould) {
case 0:
sendWSMessage_10000(1, _stander, _feng1, 16, 1, 400, _jellyBeans, 1, 1, 0);
- _val6 = 0;
+ _fengMode = 0;
break;
case 1:
@@ -520,45 +520,45 @@ void Room305::daemon() {
case 2:
sendWSMessage_10000(1, _stander, _feng2, 1, 18, 400, _feng2, 19, 21, 1);
- _val6 = 2;
+ _fengMode = 2;
break;
case 3:
sendWSMessage_10000(1, _stander, _feng1, 16, 1, 400, _jellyBeans, 1, 1, 0);
- _val6 = 0;
+ _fengMode = 0;
break;
case 4:
frame = imath_ranged_rand(1, 6);
sendWSMessage_10000(1, _stander, _feng3, frame, frame, 400, _feng3, frame, frame, 0);
- _val7 = 1;
+ _fengShould = 1;
break;
default:
sendWSMessage_10000(1, _stander, _feng2, 1, 18, 400, _feng2, 19, 21, 1);
- _val6 = 2;
+ _fengMode = 2;
break;
}
break;
case 2:
- if (_val7 == 2) {
+ if (_fengShould == 2) {
frame = imath_ranged_rand(19, 21);
sendWSMessage_10000(1, _stander, _feng2, frame, frame, 400, _feng2, frame, frame, 0);
} else {
sendWSMessage_10000(1, _stander, _feng2, 18, 1, 400, _feng3, 1, 6, 0);
- _val6 = 1;
+ _fengMode = 1;
break;
}
break;
case 3:
- if (_val7 == 3) {
+ if (_fengShould == 3) {
frame = imath_ranged_rand(14, 19);
sendWSMessage_10000(1, _stander, _jellyBeans, frame, frame, 400, _jellyBeans, frame, frame, 0);
} else {
sendWSMessage_10000(1, _stander, _jellyBeans, 20, 31, 400, _jellyBeans, 1, 1, 0);
- _val6 = 0;
+ _fengMode = 0;
}
break;
@@ -605,12 +605,12 @@ void Room305::pre_parser() {
if (lookFlag && player_said("cartoon"))
_G(camera_reacts_to_player) = false;
- if (_val5) {
+ if (_hideCartoon) {
_G(camera_reacts_to_player) = true;
terminateMachineAndNull(_cartoonMach);
series_unload(_cartoon);
intr_cancel_sentence();
- _val5 = 0;
+ _hideCartoon = false;
hotspot_restore_all();
interface_show();
}
@@ -639,8 +639,8 @@ void Room305::parser() {
_G(flags)[V000] == 1 ? 200 : 300,
1, 1, 1, 0);
- _val8 = 0;
- _conv1 = 0;
+ _ripleyMode = 0;
+ _ripleyShould = 0;
_G(kernel).trigger_mode = KT_PARSE;
player_set_commands_allowed(false);
@@ -667,11 +667,11 @@ void Room305::parser() {
conv_export_value_curr(_G(flags)[V141], 8);
conv_play();
- _val7 = 1;
- _conv1 = 0;
+ _fengShould = 1;
+ _ripleyShould = 0;
} else if (_G(kernel).trigger == 747) {
- _val7 = 4;
- _conv1 = 7;
+ _fengShould = 4;
+ _ripleyShould = 7;
} else if (player_said("close", "drawer")) {
switch (_G(kernel).trigger) {
case -1:
@@ -755,31 +755,8 @@ void Room305::parser() {
default:
break;
}
- } else if (takeFlag && player_said("turtle treats") && _G(kernel).trigger == -1
- && inv_object_is_here("TURTLE TREATS")) {
- terminateMachineAndNull(_openDrawerTreats);
- terminateMachineAndNull(_openDrawer);
- hotspot_restore_all();
-
- if (_G(flags)[V000])
- sendWSMessage_120000(1);
- else
- sendWSMessage_10000(1, _rip6, _rip4, 5, 1, 1, _rip4, 1, 1, 0);
-
- digi_play("305r20", 1);
-
- } else if (takeFlag && player_said("turtle treats") && _G(kernel).trigger == 1) {
- inv_give_to_player("TURTLE TREATS");
- terminateMachineAndNull(_rip6);
- terminateMachineAndNull(_rip5);
- ws_unhide_walker();
- kernel_timing_trigger(1, 2);
-
- } else if (takeFlag && player_said("turtle treats") && _G(kernel).trigger == 2) {
- series_unload(_rip4);
- player_set_commands_allowed(true);
- _drawerOpen = false;
-
+ } else if (takeFlag && player_said("turtle treats") && takeTurtleTreats()) {
+ // Handled by function
} else if (takeFlag && player_said("turtle")) {
if (_G(flags)[GLB_TEMP_12]) {
digi_play("305r55", 1);
@@ -1005,7 +982,7 @@ next4:
case 1:
player_set_commands_allowed(true);
- _val7 = 1;
+ _fengShould = 1;
break;
default:
@@ -1057,7 +1034,7 @@ next4:
digi_play(digiName.c_str(), 1);
}
- _val5 = 1;
+ _hideCartoon = true;
break;
}
@@ -1159,7 +1136,7 @@ next4:
digi_play("305r32", 1);
} else if (player_been_here(201)) {
digi_play("305f03", 1, 255, 1);
- _val7 = 2;
+ _fengShould = 2;
player_set_commands_allowed(false);
} else {
digi_play("305r15", 1);
@@ -1171,7 +1148,7 @@ next4:
case 1:
player_set_commands_allowed(true);
- _val7 = 1;
+ _fengShould = 1;
break;
default:
@@ -1341,11 +1318,11 @@ void Room305::conv305a() {
if (_G(kernel).trigger == 1) {
if (who <= 0) {
- _val7 = 1;
+ _fengShould = 1;
} else if (_G(kernel).trigger == 1) {
if (node != 1 || (entry != 0 && entry != 3 && entry != 5
&& entry != 6 && entry != 7))
- _conv1 = 0;
+ _ripleyShould = 0;
}
conv_resume();
@@ -1355,21 +1332,21 @@ void Room305::conv305a() {
} else {
if (who <= 0) {
- _val7 = 2;
+ _fengShould = 2;
} else if (who == 1) {
if ((node == 1 && entry == 0) || (node == 1 && entry == 6) ||
(node == 1 && entry == 7)) {
- _conv1 = 5;
+ _ripleyShould = 5;
} else if (node == 1 && (entry == 3 || entry == 5)) {
- _conv1 = 3;
+ _ripleyShould = 3;
} else if ((node == 7 && entry == 0) || (node == 8 && entry == 0) ||
(node == 9 && entry == 0) || (node == 10 && entry == 0) ||
(node == 12 && entry == 0)) {
- _conv1 = 0;
+ _ripleyShould = 0;
} else if (node == 1 && entry == 1) {
_G(flags)[V089] = 2;
} else {
- _conv1 = 1;
+ _ripleyShould = 1;
}
}
@@ -1396,7 +1373,7 @@ bool Room305::walkToObject() {
} else if (player_said("ROMANOV EMERALD")) {
if (_G(flags)[V090] == 3) {
digi_play("305f08", 1, 255, 6);
- _val7 = 2;
+ _fengShould = 2;
} else {
ws_walk(183, 288, 0, 1, 10, 1);
}
@@ -1488,13 +1465,16 @@ int Room305::getItemY(int seriesHash) const {
void Room305::syncGame(Common::Serializer &s) {
s.syncAsByte(_drawerOpen);
- s.syncAsUint32LE(_val1);
- s.syncAsUint32LE(_val2);
- s.syncAsUint32LE(_val3);
- s.syncAsUint32LE(_val5);
- s.syncAsUint32LE(_val6);
- s.syncAsUint32LE(_val7);
- s.syncAsUint32LE(_val8);
+ s.syncAsByte(_showWalker);
+ s.syncAsByte(_hideCartoon);
+ s.syncAsByte(_unused);
+
+ s.syncAsUint32LE(_fengMode);
+ s.syncAsUint32LE(_fengShould);
+ s.syncAsUint32LE(_ripleyMode);
+ s.syncAsUint32LE(_ripleyShould);
+ s.syncAsUint32LE(_trigger1);
+
s.syncAsUint32LE(_ripMedHigh);
s.syncAsUint32LE(_ripLooksDown);
s.syncAsUint32LE(_shrunkenHead1);
@@ -1529,11 +1509,49 @@ void Room305::syncGame(Common::Serializer &s) {
s.syncAsUint32LE(_suit1);
s.syncAsUint32LE(_suit2);
s.syncAsUint32LE(_suit3);
- s.syncAsUint32LE(_conv1);
s.syncAsUint32LE(_cartoon);
s.syncAsUint32LE(_lookUp);
}
+bool Room305::takeTurtleTreats() {
+ switch (_G(kernel).trigger) {
+ case -1:
+ if (inv_object_is_here("TURTLE TREATS")) {
+ terminateMachineAndNull(_openDrawerTreats);
+ terminateMachineAndNull(_openDrawer);
+ hotspot_restore_all();
+
+ if (_G(flags)[V000])
+ sendWSMessage_120000(1);
+ else
+ sendWSMessage_10000(1, _rip6, _rip4, 5, 1, 1, _rip4, 1, 1, 0);
+
+ digi_play("305r20", 1);
+ return true;
+ }
+ break;
+
+ case 1:
+ inv_give_to_player("TURTLE TREATS");
+ terminateMachineAndNull(_rip6);
+ terminateMachineAndNull(_rip5);
+ ws_unhide_walker();
+ kernel_timing_trigger(1, 2);
+ return true;
+
+ case 2:
+ series_unload(_rip4);
+ player_set_commands_allowed(true);
+ _drawerOpen = false;
+ return true;
+
+ default:
+ break;
+ }
+
+ return false;
+}
+
} // namespace Rooms
} // namespace Riddle
} // namespace M4
diff --git a/engines/m4/riddle/rooms/section3/room305.h b/engines/m4/riddle/rooms/section3/room305.h
index ac7ea4cbb06..2c89a35b340 100644
--- a/engines/m4/riddle/rooms/section3/room305.h
+++ b/engines/m4/riddle/rooms/section3/room305.h
@@ -30,16 +30,17 @@ namespace Rooms {
class Room305 : public Room {
private:
- int _val1 = 0;
- int _val2 = 0;
- int _val3 = 0;
- int _val5 = 0;
- int _val6 = 0;
- int _val7 = 0;
- int _val8 = 0;
+ bool _showWalker = false;
+ bool _drawerOpen = false;
+ bool _hideCartoon = false;
+ bool _unused = false;
+ int _ripleyMode = 0;
+ int _ripleyShould = 0;
+ int _fengMode = 0;
+ int _fengShould = 0;
+ int _trigger1 = -1;
KernelTriggerType _triggerMode1 = KT_DAEMON;
KernelTriggerType _triggerMode2 = KT_DAEMON;
- bool _drawerOpen = false;
int _ripMedHigh = 0;
int _ripLooksDown = 0;
machine *_turtle = nullptr;
@@ -88,7 +89,6 @@ private:
int _suit1 = 0;
int _suit2 = 0;
int _suit3 = 0;
- int _conv1 = 0;
machine *_stander = nullptr;
machine *_shadow5 = nullptr;
machine *_rip5 = nullptr;
@@ -110,6 +110,7 @@ private:
Common::String getXAreaDigi2() const;
int getItemX(int seriesHash) const;
int getItemY(int seriesHash) const;
+ bool takeTurtleTreats();
public:
Room305() : Room() {}
Commit: 2acc735e193c37cf25d8080c4a251146bbc4a918
https://github.com/scummvm/scummvm/commit/2acc735e193c37cf25d8080c4a251146bbc4a918
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-11-18T21:25:35-08:00
Commit Message:
M4: RIDDLE: Fixes & cleanup for using drawer and taking turtle treats
Changed paths:
engines/m4/riddle/rooms/section3/room305.cpp
engines/m4/riddle/rooms/section3/room305.h
diff --git a/engines/m4/riddle/rooms/section3/room305.cpp b/engines/m4/riddle/rooms/section3/room305.cpp
index dbf5b87650c..b92fb24210f 100644
--- a/engines/m4/riddle/rooms/section3/room305.cpp
+++ b/engines/m4/riddle/rooms/section3/room305.cpp
@@ -673,90 +673,11 @@ void Room305::parser() {
_fengShould = 4;
_ripleyShould = 7;
} else if (player_said("close", "drawer")) {
- switch (_G(kernel).trigger) {
- case -1:
- if (inv_object_is_here("TURTLE TREATS"))
- terminateMachineAndNull(_openDrawerTreats);
-
- terminateMachineAndNull(_openDrawer);
- hotspot_restore_all();
-
- if (_G(flags)[V000]) {
- sendWSMessage_120000(1);
- } else {
- sendWSMessage_10000(1, _rip6, _rip4, 5, 1, 1, _rip4, 1, 1, 0);
- }
- break;
-
- case 1:
- if (_G(flags)[V000]) {
- sendWSMessage_150000(-1);
- } else {
- terminateMachineAndNull(_rip6);
- terminateMachineAndNull(_rip5);
- ws_unhide_walker();
- }
- kernel_timing_trigger(1, 2);
- break;
-
- case 2:
- series_unload(_rip4);
- player_set_commands_allowed(true);
- _drawerOpen = false;
- break;
-
- default:
- break;
- }
+ closeDrawer();
} else if (useFlag && player_said("drawer")) {
- switch (_G(kernel).trigger) {
- case -1:
- player_set_commands_allowed(false);
- player_update_info();
-
- if (_G(flags)[V000]) {
- _rip4 = series_load("RIP TREK MED REACH HAND POS1");
- setGlobals1(1, 5, 5, 5, 0, 5, 1, 1, 1);
- sendWSMessage_110000(1);
- } else {
- ws_hide_walker();
- _rip4 = series_load("SUIT RIP REACHES FOR DRAWER");
- _rip5 = series_show("ripsh1", 0xf00, 128, -1, -1, 0,
- _G(player_info).scale, _G(player_info).x, _G(player_info).y);
- _rip6 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xf00, false,
- triggerMachineByHashCallback, "rip reach");
-
- sendWSMessage_10000(1, _rip6, _rip4, 1, 5, 1, _rip4, 5, 5, 0);
- }
- break;
-
- case 1:
- hotspot_hide_all();
- intr_cancel_sentence();
- mouse_set_sprite(0);
- hotspot_add_dynamic("LOOK AT", " ", 0, 0, 1500, 374, 0);
-
- if (inv_object_is_here("TURTLE TREATS")) {
- hotspot_add_dynamic("LOOK AT", "TURTLE TREATS", 1105, 208, 1175, 266, 6, true);
- hotspot_add_dynamic("LOOK AT", "TURTLE TREATS", 1052, 230, 1147, 296, 6, true);
- }
-
- _drawerOpen = true;
- _openDrawer = series_show_sprite("open drawer", 0, 0);
-
- if (inv_object_is_here("TURTLE TREATS")) {
- _openDrawerTreats = series_show_sprite("open drawer with treats", 0, 0);
- }
-
- player_set_commands_allowed(true);
- digi_play("305_s02", 2);
- break;
-
- default:
- break;
- }
- } else if (takeFlag && player_said("turtle treats") && takeTurtleTreats()) {
- // Handled by function
+ openDrawer();
+ } else if (takeFlag && player_said("turtle treats")) {
+ takeTurtleTreats();
} else if (takeFlag && player_said("turtle")) {
if (_G(flags)[GLB_TEMP_12]) {
digi_play("305r55", 1);
@@ -1513,7 +1434,94 @@ void Room305::syncGame(Common::Serializer &s) {
s.syncAsUint32LE(_lookUp);
}
-bool Room305::takeTurtleTreats() {
+void Room305::openDrawer() {
+ switch (_G(kernel).trigger) {
+ case -1:
+ player_set_commands_allowed(false);
+ player_update_info();
+
+ if (_G(flags)[V000]) {
+ _rip4 = series_load("RIP TREK MED REACH HAND POS1");
+ setGlobals1(1, 5, 5, 5, 0, 5, 1, 1, 1);
+ sendWSMessage_110000(1);
+ } else {
+ ws_hide_walker();
+ _rip4 = series_load("SUIT RIP REACHES FOR DRAWER");
+ _rip5 = series_show("ripsh1", 0xf00, 128, -1, -1, 0,
+ _G(player_info).scale, _G(player_info).x, _G(player_info).y);
+ _rip6 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xf00, false,
+ triggerMachineByHashCallback, "rip reach");
+
+ sendWSMessage_10000(1, _rip6, _rip4, 1, 5, 1, _rip4, 5, 5, 0);
+ }
+ break;
+
+ case 1:
+ hotspot_hide_all();
+ intr_cancel_sentence();
+ mouse_set_sprite(0);
+ hotspot_add_dynamic("LOOK AT", " ", 0, 0, 1500, 374, 0);
+
+ if (inv_object_is_here("TURTLE TREATS")) {
+ hotspot_add_dynamic("LOOK AT", "TURTLE TREATS", 1105, 208, 1175, 266, 6, true);
+ hotspot_add_dynamic("LOOK AT", "TURTLE TREATS", 1052, 230, 1147, 296, 6, true);
+ }
+
+ _drawerOpen = true;
+ _openDrawer = series_show_sprite("open drawer", 0, 0);
+
+ if (inv_object_is_here("TURTLE TREATS")) {
+ _openDrawerTreats = series_show_sprite("open drawer with treats", 0, 0);
+ }
+
+ player_set_commands_allowed(true);
+ digi_play("305_s02", 2);
+ break;
+
+ default:
+ break;
+ }
+}
+
+void Room305::closeDrawer() {
+ switch (_G(kernel).trigger) {
+ case -1:
+ if (inv_object_is_here("TURTLE TREATS"))
+ terminateMachineAndNull(_openDrawerTreats);
+
+ terminateMachineAndNull(_openDrawer);
+ hotspot_restore_all();
+
+ if (_G(flags)[V000]) {
+ sendWSMessage_120000(1);
+ } else {
+ sendWSMessage_10000(1, _rip6, _rip4, 5, 1, 1, _rip4, 1, 1, 0);
+ }
+ break;
+
+ case 1:
+ if (_G(flags)[V000]) {
+ sendWSMessage_150000(-1);
+ } else {
+ terminateMachineAndNull(_rip6);
+ terminateMachineAndNull(_rip5);
+ ws_unhide_walker();
+ }
+ kernel_timing_trigger(1, 2);
+ break;
+
+ case 2:
+ series_unload(_rip4);
+ player_set_commands_allowed(true);
+ _drawerOpen = false;
+ break;
+
+ default:
+ break;
+ }
+}
+
+void Room305::takeTurtleTreats() {
switch (_G(kernel).trigger) {
case -1:
if (inv_object_is_here("TURTLE TREATS")) {
@@ -1527,29 +1535,31 @@ bool Room305::takeTurtleTreats() {
sendWSMessage_10000(1, _rip6, _rip4, 5, 1, 1, _rip4, 1, 1, 0);
digi_play("305r20", 1);
- return true;
}
break;
case 1:
inv_give_to_player("TURTLE TREATS");
- terminateMachineAndNull(_rip6);
- terminateMachineAndNull(_rip5);
- ws_unhide_walker();
+
+ if (_G(flags)[V000]) {
+ sendWSMessage_150000(-1);
+ } else {
+ terminateMachineAndNull(_rip6);
+ terminateMachineAndNull(_rip5);
+ ws_unhide_walker();
+ }
kernel_timing_trigger(1, 2);
- return true;
+ break;
case 2:
series_unload(_rip4);
player_set_commands_allowed(true);
_drawerOpen = false;
- return true;
+ break;
default:
break;
}
-
- return false;
}
} // namespace Rooms
diff --git a/engines/m4/riddle/rooms/section3/room305.h b/engines/m4/riddle/rooms/section3/room305.h
index 2c89a35b340..1c3b7203438 100644
--- a/engines/m4/riddle/rooms/section3/room305.h
+++ b/engines/m4/riddle/rooms/section3/room305.h
@@ -110,7 +110,9 @@ private:
Common::String getXAreaDigi2() const;
int getItemX(int seriesHash) const;
int getItemY(int seriesHash) const;
- bool takeTurtleTreats();
+ void openDrawer();
+ void closeDrawer();
+ void takeTurtleTreats();
public:
Room305() : Room() {}
More information about the Scummvm-git-logs
mailing list