[Scummvm-git-logs] scummvm master -> fbd4e4c92b61d5f5ee4e4026832683c512a847d7
dreammaster
noreply at scummvm.org
Sat Sep 14 05:52:36 UTC 2024
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
fbd4e4c92b M4: RIDDLE: Bulk of the remainder of room 504 daemon
Commit: fbd4e4c92b61d5f5ee4e4026832683c512a847d7
https://github.com/scummvm/scummvm/commit/fbd4e4c92b61d5f5ee4e4026832683c512a847d7
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-09-13T22:52:27-07:00
Commit Message:
M4: RIDDLE: Bulk of the remainder of room 504 daemon
Changed paths:
engines/m4/riddle/rooms/section5/room504.cpp
engines/m4/riddle/rooms/section5/room504.h
diff --git a/engines/m4/riddle/rooms/section5/room504.cpp b/engines/m4/riddle/rooms/section5/room504.cpp
index 0ad9e69a88c..77f0dd68abe 100644
--- a/engines/m4/riddle/rooms/section5/room504.cpp
+++ b/engines/m4/riddle/rooms/section5/room504.cpp
@@ -393,6 +393,190 @@ void Room504::daemon() {
}
break;
+ case 505:
+ _trigger4 = -1;
+ _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x900, 0,
+ triggerMachineByHashCallbackNegative, "Rip Delta Machine State");
+ player_update_info();
+ _ripKneels = series_load("504 rip kneels talks");
+ ws_hide_walker();
+ sendWSMessage_10000(1, _ripley, _ripKneels, 1, 17, 506, _ripKneels, 17, 17, 0);
+ _convState2 = 1;
+ _convState3 = 1;
+ break;
+
+ case 506:
+ if (_trigger1 != -1 && _convState3 == 1 && _convState2 == 1) {
+ kernel_trigger_dispatchx(_trigger1);
+ _trigger1 = -1;
+ }
+ if (_trigger4 != -1 && _convState3 == 4 && _convState2 == 4) {
+ kernel_trigger_dispatchx(_trigger4);
+ _trigger4 = -1;
+ }
+ if (_trigger4 != -1 && _convState3 == 5 && _convState2 == 5) {
+ kernel_trigger_dispatchx(_trigger4);
+ _trigger4 = -1;
+ }
+ if (_trigger4 != -1 && _convState3 == 7 && _convState2 == 7) {
+ kernel_trigger_dispatchx(_trigger4);
+ _trigger4 = -1;
+ }
+ if (_trigger4 != -1 && _convState3 == 11 && _convState2 == 11) {
+ kernel_trigger_dispatchx(_trigger4);
+ _trigger4 = -1;
+ }
+ if (_trigger4 != -1 && _convState3 == 13 && _convState2 == 13) {
+ kernel_trigger_dispatchx(_trigger4);
+ _trigger4 = -1;
+ }
+ if (_trigger4 != -1 && _convState3 == 8 && _convState2 == 8) {
+ kernel_trigger_dispatchx(_trigger4);
+ _trigger4 = -1;
+ }
+
+ kernel_timing_trigger(1, 507);
+ break;
+
+ case 507:
+ switch (_convState3) {
+ case 1:
+ switch (_convState2) {
+ case 1:
+ sendWSMessage_10000(1, _ripley, _ripKneels, 17, 17, 506,
+ _ripKneels, 17, 17, 0);
+ break;
+
+ case 3:
+ frame = imath_ranged_rand(17, 29);
+ sendWSMessage_10000(1, _ripley, _ripKneels, frame, frame, 506,
+ _ripKneels, frame, frame, 0);
+ break;
+
+ case 4:
+ _ripShrunkenHead = series_load("504 rip gets shrunken head");
+ sendWSMessage_10000(1, _ripley, _ripShrunkenHead, 1, 6, 506,
+ _ripShrunkenHead, 6, 6, 0);
+ _convState3 = 4;
+ break;
+
+ case 5:
+ _ripGivesMoneyEmerald = series_load("504 rip gives money emerald");
+ sendWSMessage_10000(1, _ripley, _ripGivesMoneyEmerald, 1, 11, 506,
+ _ripGivesMoneyEmerald, 11, 11, 0);
+ _convState3 = 5;
+ break;
+
+ case 7:
+ case 9:
+ _ripGetsUp = series_load("504 rip gets up");
+ sendWSMessage_10000(1, _ripley, _ripGetsUp, 1, 46, 506,
+ _ripGetsUp, 46, 46, 0);
+ sendWSMessage_190000(_ripley, 5);
+ series_unload(_ripKneels);
+ _convState3 = 7;
+ break;
+
+ case 8:
+ sendWSMessage_10000(1, _ripley, _ripLeansBack, 1, 11, 506,
+ _ripLeansBack, 12, 12, 0);
+ _convState3 = 8;
+ break;
+
+ default:
+ break;
+ }
+ break;
+
+ case 4:
+ switch (_convState2) {
+ case 1:
+ sendWSMessage_10000(1, _ripley, _ripShrunkenHead, 7, 28, 506,
+ _ripShrunkenHead, 28, 28, 0);
+ _convState2 = 2;
+ break;
+
+ case 2:
+ sendWSMessage_10000(1, _ripley, _ripKneels, 17, 17, 506,
+ _ripKneels, 17, 17, 0);
+ series_unload(_ripShrunkenHead);
+ _convState2 = 1;
+ _convState3 = 1;
+ break;
+
+ case 4:
+ sendWSMessage_10000(1, _ripley, _ripShrunkenHead, 6, 6, 506,
+ _ripShrunkenHead, 6, 6, 0);
+ break;
+
+ default:
+ break;
+ }
+ break;
+
+ case 5:
+ switch (_convState2) {
+ case 1:
+ sendWSMessage_10000(1, _ripley, _ripGivesMoneyEmerald, 12, 20, 506,
+ _ripKneels, 17, 17, 0);
+ _convState2 = 2;
+ break;
+
+ case 2:
+ sendWSMessage_10000(1, _ripley, _ripKneels, 17, 17, 506, _ripKneels, 17, 17, 0);
+ series_unload(_ripGivesMoneyEmerald);
+ _convState2 = 1;
+ _convState3 = 1;
+ break;
+
+ case 5:
+ sendWSMessage_10000(1, _ripley, _ripGivesMoneyEmerald, 11, 11, 506,
+ _ripGivesMoneyEmerald, 11, 11, 0);
+ break;
+
+ case 6:
+ frame = imath_ranged_rand(9, 10);
+ sendWSMessage_10000(1, _ripley, _ripGivesMoneyEmerald, frame, frame, 506,
+ _ripGivesMoneyEmerald, frame, frame, 0);
+ break;
+
+ default:
+ break;
+ }
+ break;
+
+ case 7:
+ switch (_convState2) {
+ case 7:
+ sendWSMessage_10000(1, _ripley, _ripGetsUp, 46, 46, 506, _ripGetsUp, 46, 46, 0);
+ break;
+
+ case 9:
+ terminateMachineAndNull(_ripley);
+ ws_unhide_walker();
+ series_unload(_ripGetsUp);
+ player_set_commands_allowed(true);
+ break;
+
+ case 11:
+ sendWSMessage_10000(1, _ripley, _ripGetsUp, 69, 83, 506,
+ _ripGetsUp, 83, 83, 0);
+ _convState3 = 11;
+ break;
+
+ default:
+ break;
+ }
+ break;
+
+ case 8:
+ // TODO: Rest of case 508's subsections
+
+ default:
+ break;
+ }
+ break;
+
case 508:
_G(kernel).trigger_mode = KT_PARSE;
conv_load("con504a", 10, 10, 747);
@@ -449,6 +633,13 @@ void Room504::daemon() {
_convState1 = 6;
break;
+ case 517:
+ inv_move_object("ROMANOV EMERALD", 504);
+ _convState2 = 1;
+ sendWSMessage_10000(1, _mzMachine, _mzTakesEmerald, 13, 20, 518,
+ _mzTakesEmerald, 20, 20, 0);
+ break;
+
case 518:
sendWSMessage_10000(1, _mzMachine, _mzTakesEmerald, 20, 21, -1,
_mzTakesEmerald, 20, 20, 4);
@@ -498,6 +689,12 @@ void Room504::daemon() {
digi_play("504Z15", 1, 255, 526);
break;
+ case 526:
+ _convState2 = 1;
+ digi_preload("504_S06");
+ sendWSMessage_10000(1, _mzMachine, _mzMenancesClimbs, 22, 52, 527, \
+ _mzMenancesClimbs, 52, 52, 0);
+ break;
case 527:
digi_play("504_S06", 1, 255, 528);
@@ -523,6 +720,20 @@ void Room504::daemon() {
digi_play("504Z17", 1, 255, 531);
break;
+ case 531:
+ _convState2 = 7;
+ digi_preload("504_S07");
+ sendWSMessage_10000(1, _mzMachine, _mzMenancesClimbs, 62, 76, 532,
+ _mzMenancesClimbs, 77, 77, 0);
+ break;
+
+ case 532:
+ _convState2 = 11;
+ digi_preload("504_S07");
+ sendWSMessage_10000(1, _mzMachine, _mzMenancesClimbs, 78, 140, 533,
+ _mzMenancesClimbs, 140, 140, 0);
+ break;
+
case 533:
_shovel = series_place_sprite("504shov", 0, 0, 0, 100, 0xf00);
_trigger4 = kernel_trigger_create(534);
@@ -729,6 +940,24 @@ void Room504::daemon() {
_ripWipe, 6, 6, 0);
break;
+ case 568:
+ digi_play("COM125", 1);
+ sendWSMessage_10000(1, _ripley, _ripWipe, 7, 18, 569, _ripWipe, 18, 18, 0);
+ break;
+
+ case 569:
+ ws_unhide_walker();
+ terminateMachineAndNull(_ripley);
+ series_unload(_ripWipe);
+ digi_unload("COM125");
+ digi_unload("504_S05");
+
+ if (_flag3)
+ kernel_timing_trigger(1, inv_player_has("ROPE") ? 746 : 749);
+
+ player_set_commands_allowed(true);
+ break;
+
case 570:
player_set_commands_allowed(false);
digi_preload("504_S05");
@@ -764,6 +993,14 @@ void Room504::daemon() {
digi_play("COM125", 1);
break;
+ case 578:
+ ws_unhide_walker();
+ ws_demand_location(532, 165, 3);
+ _flag1 = true;
+ digi_unload("504_S05");
+ player_set_commands_allowed(true);
+ break;
+
case 580:
player_set_commands_allowed(false);
_ripMedReach = series_load("RIP TREK MED REACH HAND POS1");
@@ -805,6 +1042,13 @@ void Room504::daemon() {
terminateMachineAndNull(_vineMachine2);
break;
+ case 584:
+ setVinesRope();
+ series_unload(_vineTie);
+ series_unload(_ripMedReach);
+ player_set_commands_allowed(true);
+ break;
+
case 586:
player_set_commands_allowed(false);
kernel_timing_trigger(30, 587);
@@ -826,6 +1070,10 @@ void Room504::daemon() {
sendWSMessage_120000(589);
break;
+ case 589:
+ sendWSMessage_150000(590);
+ break;
+
case 590:
setGlobals1(_ripLowReach, 1, 24, 24, 24, 0, 24, 1, 1, 1);
sendWSMessage_110000(591);
@@ -860,6 +1108,100 @@ void Room504::daemon() {
sendWSMessage_120000(593);
break;
+ case 593:
+ sendWSMessage_150000(594);
+ break;
+
+ case 594:
+ setVinesRope();
+ series_unload(_ripMedReach);
+ series_unload(_ripLowReach);
+ player_set_commands_allowed(true);
+ break;
+
+ case 595:
+ player_set_commands_allowed(false);
+ _ripStepUpRight = series_load("RIP STEP UP TO R PLATFORM");
+ _ripThrowFromRight = series_load("RIP THROW FROM R");
+ digi_preload("504_S04");
+ digi_preload("504_S04A");
+ ws_hide_walker();
+
+ _ripley = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0x300, 0,
+ triggerMachineByHashCallbackNegative, "Rip Crossing");
+ sendWSMessage_10000(1, _ripley, _ripStepUpRight, 1, 33, 596,
+ _ripStepUpRight, 33, 33, 0);
+ break;
+
+ case 596:
+ switch (_val1) {
+ case 1:
+ _G(flags)[V154] = 3;
+ break;
+ case 2:
+ _G(flags)[V152] = 3;
+ break;
+ case 3:
+ _G(flags)[V153] = 3;
+ break;
+ case 4:
+ _G(flags)[V171] = 3;
+ break;
+ default:
+ break;
+ }
+
+ sendWSMessage_10000(1, _ripley, _ripThrowFromRight, 1, 38, 597,
+ _ripThrowFromRight, 38, 38, 0);
+ break;
+
+ case 597:
+ digi_play("504_S04", 1);
+ sendWSMessage_10000(1, _ripley, _ripThrowFromRight, 39, 50, 598,
+ _ripThrowFromRight, 50, 50, 0);
+ break;
+
+ case 598:
+ digi_play("504_S04A", 1);
+ sendWSMessage_10000(1, _ripley, _ripThrowFromRight, 51, 59, 599,
+ _ripThrowFromRight, 59, 59, 0);
+ break;
+
+ case 599:
+ switch (_val1) {
+ case 1:
+ _G(flags)[V154] = 4;
+ break;
+ case 2:
+ _G(flags)[V152] = 4;
+ break;
+ case 3:
+ _G(flags)[V153] = 4;
+ break;
+ case 4:
+ _G(flags)[V171] = 4;
+ break;
+ default:
+ break;
+ }
+
+ setVines();
+ sendWSMessage_10000(1, _ripley, _ripStepUpRight, 33, 1, 600,
+ _ripStepUpRight, 1, 1, 0);
+ break;
+
+ case 600:
+ ws_demand_location(528, 168, 8);
+ ws_unhide_walker();
+ terminateMachineAndNull(_ripley);
+ setVinesRope();
+ series_unload(_ripStepUpRight);
+ series_unload(_ripThrowFromRight);
+ digi_unload("504_S04");
+ digi_unload("504_S04A");
+ player_set_commands_allowed(true);
+ break;
+
case 603:
player_set_commands_allowed(false);
kernel_timing_trigger(30, 604);
@@ -877,6 +1219,14 @@ void Room504::daemon() {
}
break;
+ case 605:
+ setVines();
+ _vineMachine2 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xe00, 0,
+ triggerMachineByHashCallbackNegative, "Rope Being Slurped Up from right");
+ sendWSMessage_10000(1, _vineMachine2, _ropeRSlurpsUp, 1, 14, 606,
+ _ropeRSlurpsUp, 14, 14, 0);
+
+
case 606:
terminateMachineAndNull(_vineMachine2);
sendWSMessage_120000(607);
@@ -913,6 +1263,74 @@ void Room504::daemon() {
}
break;
+ case 608:
+ sendWSMessage_150000(609);
+ break;
+
+ case 609:
+ setVinesRope();
+ series_unload(_ropeRSlurpsUp);
+ series_unload(_ripMedReach);
+ player_set_commands_allowed(true);
+ break;
+
+ case 611:
+ player_set_commands_allowed(false);
+ _ripHiReach2Handed = series_load("RIP TREK HI REACH 2HND");
+ _rightVineTie = series_load("504 R VINE TIE TO L SIDE");
+
+ switch (_val1) {
+ case 1:
+ _G(flags)[V154] = 3;
+ break;
+ case 2:
+ _G(flags)[V152] = 3;
+ break;
+ case 3:
+ _G(flags)[V153] = 3;
+ break;
+ case 4:
+ _G(flags)[V171] = 3;
+ break;
+ default:
+ break;
+ }
+
+ setVines();
+ _vineMachine2 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xe00, 0,
+ triggerMachineByHashCallbackNegative, "Tie Thrown Coil to tree");
+ sendWSMessage_10000(1, _vineMachine2, _rightVineTie, 1, 10, -1,
+ _rightVineTie, 10, 10, 0);
+ setGlobals1(_ripHiReach2Handed, 1, 13, 13, 13, 0, 13, 1, 1, 1);
+ sendWSMessage_110000(612);
+ break;
+
+ case 612:
+ switch (_val1) {
+ case 1:
+ _G(flags)[V154] = 2;
+ break;
+ case 2:
+ _G(flags)[V152] = 2;
+ break;
+ case 3:
+ _G(flags)[V153] = 2;
+ break;
+ case 4:
+ _G(flags)[V171] = 2;
+ break;
+ default:
+ break;
+ }
+
+ if (_val1 == 4) {
+ kernel_timing_trigger(1, 613);
+ } else {
+ setVines();
+ sendWSMessage_120000(615);
+ }
+ break;
+
case 613:
_vineUnrolling = series_load("VINE UNROLLING AS TIED");
_vineMachine1 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xe00, 0,
@@ -921,6 +1339,25 @@ void Room504::daemon() {
_vineUnrolling, 6, 6, 0);
break;
+ case 614:
+ sendWSMessage_120000(615);
+ setVines();
+ terminateMachineAndNull(_vineMachine1);
+ series_unload(_vineUnrolling);
+ break;
+
+ case 615:
+ sendWSMessage_150000(616);
+ break;
+
+ case 616:
+ terminateMachineAndNull(_vineMachine2);
+ series_unload(_ripHiReach2Handed);
+ series_unload(_rightVineTie);
+ setVinesRope();
+ player_set_commands_allowed(true);
+ break;
+
case 620:
player_set_commands_allowed(false);
_ripStepUpLeft = series_load("RIP STEP UP ON LEFT");
@@ -935,6 +1372,75 @@ void Room504::daemon() {
_ripStepUpLeft, 25, 25, 0);
break;
+ case 622:
+ switch (_val1) {
+ case 1:
+ _G(flags)[V154] = 3;
+ break;
+ case 2:
+ _G(flags)[V152] = 3;
+ break;
+ case 3:
+ _G(flags)[V153] = 3;
+ break;
+ case 4:
+ _G(flags)[V171] = 3;
+ break;
+ default:
+ break;
+ }
+
+ sendWSMessage_10000(1, _ripley, _ripThrowFromRight, 1, 34, 623,
+ _ripThrowFromRight, 34, 34, 0);
+ break;
+
+ case 623:
+ digi_play("504_S04", 1);
+ sendWSMessage_10000(1, _ripley, _ripThrowFromLeft, 35, 44, 624,
+ _ripThrowFromLeft, 44, 44, 0);
+ break;
+
+ case 624:
+ digi_play("504_S04A", 1);
+ sendWSMessage_10000(1, _ripley, _ripThrowFromLeft, 45, 57, 625,
+ _ripThrowFromLeft, 57, 57, 0);
+ break;
+
+ case 625:
+ switch (_val1) {
+ case 1:
+ _G(flags)[V154] = 5;
+ break;
+ case 2:
+ _G(flags)[V152] = 5;
+ break;
+ case 3:
+ _G(flags)[V153] = 5;
+ break;
+ case 4:
+ _G(flags)[V171] = 5;
+ break;
+ default:
+ break;
+ }
+
+ setVines();
+ sendWSMessage_10000(1, _ripley, _ripStepUpLeft, 25, 1, 626,
+ _ripStepUpLeft, 1, 1, 0);
+ break;
+
+ case 626:
+ ws_unhide_walker();
+ ws_demand_location(200, 153, 3);
+ terminateMachineAndNull(_ripley);
+ series_unload(_ripStepUpLeft);
+ series_unload(_ripThrowFromLeft);
+ digi_unload("504_S04");
+ digi_unload("504_S04A");
+ setVinesRope();
+ player_set_commands_allowed(true);
+ break;
+
case 630:
player_set_commands_allowed(false);
_ripHiReach2Handed = series_load("RIP TREK HI REACH 2HND");
@@ -982,6 +1488,13 @@ void Room504::daemon() {
terminateMachineAndNull(_vineMachine2);
break;
+ case 635:
+ setVinesRope();
+ series_unload(_ripHiReach2Handed);
+ series_unload(_vineUnrolling);
+ player_set_commands_allowed(true);
+ break;
+
case 638:
player_set_commands_allowed(false);
_ripLowReach = series_load("RIP LOW REACH POS1");
@@ -1014,6 +1527,32 @@ void Room504::daemon() {
sendWSMessage_120000(640);
break;
+ case 640:
+ switch (_val1) {
+ case 1:
+ _G(flags)[V154] = 2;
+ break;
+ case 2:
+ _G(flags)[V152] = 2;
+ break;
+ case 3:
+ _G(flags)[V153] = 2;
+ break;
+ case 4:
+ _G(flags)[V171] = 2;
+ break;
+ default:
+ break;
+ }
+
+ if (_val1 == 4) {
+ kernel_timing_trigger(1, 641);
+ } else {
+ setVines();
+ sendWSMessage_150000(643);
+ }
+ break;
+
case 641:
_vineTie = series_load("504 R VINE TIE BEFORE THROW");
_vine = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xe00, 0,
@@ -1021,6 +1560,32 @@ void Room504::daemon() {
sendWSMessage_10000(1, _vine, _vineTie, 1, 6, 642, _vineTie, 6, 6, 0);
break;
+ case 642:
+ setVines();
+ terminateMachineAndNull(_vineMachine1);
+ series_unload(_vineTie);
+ sendWSMessage_150000(643);
+ break;
+
+ case 643:
+ setVines();
+ series_unload(_ripLowReach);
+ setVinesRope();
+ player_set_commands_allowed(true);
+ break;
+
+ case 644:
+ terminateMachineAndNull(_vineMachine2);
+ series_unload(_leftVineTie);
+ break;
+
+ case 647:
+ terminateMachineAndNull(_ripley);
+ ws_unhide_walker();
+ series_unload(_downSteps);
+ player_set_commands_allowed(true);
+ break;
+
case 655:
digi_play("504R01", 1, 255, 762);
break;
@@ -1106,6 +1671,70 @@ void Room504::daemon() {
_trigger2 = kernel_trigger_create(674);
break;
+ case 675:
+ player_set_commands_allowed(false);
+ _ripLowReach = series_load("RIP LOW REACH POS1");
+ _leftVineTie = series_load("VINE PULLS TIGHT FROM L TO R");
+ setGlobals1(_ripLowReach, 1, 10, 10, 10);
+ sendWSMessage_110000(676);
+
+ switch (_val1) {
+ case 1:
+ _G(flags)[V154] = 3;
+ break;
+ case 2:
+ _G(flags)[V152] = 3;
+ break;
+ case 3:
+ _G(flags)[V153] = 3;
+ break;
+ case 4:
+ _G(flags)[V171] = 3;
+ break;
+ default:
+ break;
+ }
+
+ setVines();
+ _vineMachine2 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xe00, 0,
+ triggerMachineByHashCallbackNegative, "Rope Falling");
+ sendWSMessage_10000(1, _vineMachine2, _leftVineTie, 9, 1, 677,
+ _leftVineTie, 1, 1, 0);
+ break;
+
+ case 676:
+ sendWSMessage_140000(678);
+ break;
+
+ case 677:
+ switch (_val1) {
+ case 1:
+ _G(flags)[V154] = 5;
+ break;
+ case 2:
+ _G(flags)[V152] = 5;
+ break;
+ case 3:
+ _G(flags)[V153] = 5;
+ break;
+ case 4:
+ _G(flags)[V171] = 5;
+ break;
+ default:
+ break;
+ }
+
+ setVines();
+ setVinesRope();
+ terminateMachineAndNull(_vineMachine2);
+ series_unload(_leftVineTie);
+ break;
+
+ case 678:
+ series_unload(_ripLowReach);
+ player_set_commands_allowed(true);
+ break;
+
case 684:
player_set_commands_allowed(false);
_ripHiReach2Handed = series_load("RIP TREK HI REACH 2HND");
@@ -1114,6 +1743,68 @@ void Room504::daemon() {
sendWSMessage_110000(685);
break;
+ case 685:
+ sendWSMessage_120000(687);
+
+ switch (_val1) {
+ case 1:
+ _G(flags)[V154] = 3;
+ break;
+ case 2:
+ _G(flags)[V152] = 3;
+ break;
+ case 3:
+ _G(flags)[V153] = 3;
+ break;
+ case 4:
+ _G(flags)[V171] = 3;
+ break;
+ default:
+ break;
+ }
+
+ setVines();
+ _vineMachine2 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xe00, 0,
+ triggerMachineByHashCallbackNegative, "Tie Thrown Coil to tree");
+ sendWSMessage_10000(1, _vineMachine2, _rightVineTie, 10, 1, 686,
+ _rightVineTie, 1, 1, 0);
+ break;
+
+
+ case 686:
+ switch (_val1) {
+ case 1:
+ _G(flags)[V154] = 4;
+ break;
+ case 2:
+ _G(flags)[V152] = 4;
+ break;
+ case 3:
+ _G(flags)[V153] = 4;
+ break;
+ case 4:
+ _G(flags)[V171] = 4;
+ break;
+ default:
+ break;
+ }
+
+ setVines();
+ setVinesRope();
+ terminateMachineAndNull(_vineMachine2);
+ series_unload(_rightVineTie);
+ break;
+
+ case 687:
+ sendWSMessage_150000(688);
+ break;
+
+ case 688:
+ case 752:
+ case 762:
+ player_set_commands_allowed(true);
+ break;
+
case 693:
player_set_commands_allowed(false);
_ripHiReach2Handed = series_load("RIP TREK HI REACH 2HND");
@@ -1122,6 +1813,37 @@ void Room504::daemon() {
sendWSMessage_110000(694);
break;
+ case 694:
+ switch (_val1) {
+ case 1:
+ _G(flags)[V154] = 3;
+ break;
+ case 2:
+ _G(flags)[V152] = 3;
+ break;
+ case 3:
+ _G(flags)[V153] = 3;
+ break;
+ case 4:
+ _G(flags)[V171] = 3;
+ break;
+ default:
+ break;
+ }
+
+ setVines();
+ setVinesRope();
+ _vineMachine2 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xe00, 0,
+ triggerMachineByHashCallbackNegative, "Vine Untied ");
+ sendWSMessage_10000(1, _vineMachine2, _vineUnrolling, 6, 1, 695,
+ _vineUnrolling, 1, 1, 0);
+
+ case 695:
+ terminateMachineAndNull(_vineMachine2);
+ series_unload(_vineUnrolling);
+ sendWSMessage_140000(696);
+ break;
+
case 696:
switch (_val1) {
case 1:
@@ -1153,6 +1875,12 @@ void Room504::daemon() {
}
break;
+ case 697:
+ case 704:
+ series_unload(_ripHiReach2Handed);
+ player_set_commands_allowed(true);
+ break;
+
case 700:
player_set_commands_allowed(false);
_ripHiReach2Handed = series_load("RIP TREK HI REACH 2HND");
@@ -1161,6 +1889,38 @@ void Room504::daemon() {
sendWSMessage_110000(701);
break;
+ case 701:
+ switch (_val1) {
+ case 1:
+ _G(flags)[V154] = 3;
+ break;
+ case 2:
+ _G(flags)[V152] = 3;
+ break;
+ case 3:
+ _G(flags)[V153] = 3;
+ break;
+ case 4:
+ _G(flags)[V171] = 3;
+ break;
+ default:
+ break;
+ }
+
+ setVines();
+ setVinesRope();
+ _vineMachine2 = TriggerMachineByHash(1, 1, 0, 0, 0, 0, 0, 0, 100, 0xe00, 0,
+ triggerMachineByHashCallbackNegative, "Left Slurp");
+ sendWSMessage_10000(1, _vineMachine2, _ropeLSlurpsUp, 1, 11, 702,
+ _ropeLSlurpsUp, 11, 11, 0);
+ break;
+
+ case 702:
+ terminateMachineAndNull(_vineMachine2);
+ series_unload(_ropeLSlurpsUp);
+ sendWSMessage_140000(703);
+ break;
+
case 703:
switch (_val1) {
case 1:
@@ -1208,6 +1968,17 @@ void Room504::daemon() {
sendWSMessage_110000(710);
break;
+ case 710:
+ if (inv_player_has("DRIFTWOOD STUMP"))
+ inv_move_object("DRIFTWOOD STUMP", 504);
+ if (inv_player_has("POLE"))
+ inv_move_object("POLE", 504);
+
+ setMiscItems();
+ sendWSMessage_140000(711);
+ break;
+
+
case 711:
series_unload(_ripLowReach);
ws_walk(200, 153, nullptr, _flag2 ? 570 : 714, 3);
@@ -1272,13 +2043,41 @@ void Room504::daemon() {
ws_walk(530, 161, nullptr, 727, 11);
break;
- case 728:
+ case 727:
player_set_commands_allowed(false);
_ripMedReach = series_load("RIP TREK MED REACH HAND POS1");
setGlobals1(_ripHiReach2Handed, 1, 10, 10, 10);
sendWSMessage_110000(728);
break;
+ case 728:
+ if (inv_player_has("WOODEN LADDER"))
+ inv_move_object("WOODEN LADDER", 504);
+ if (inv_player_has("LADDER/ROPE")) {
+ inv_move_object("LADDER/ROPE", NOWHERE);
+ inv_give_to_player("ROPE");
+ inv_move_object("WOODEN LADDER", 504);
+ }
+ if (inv_player_has("LADDER/GREEN VINE")) {
+ inv_move_object("LADDER/GREEN VINE", NOWHERE);
+ inv_give_to_player("GREEN VINE");
+ inv_move_object("WOODEN LADDER", 504);
+ }
+ if (inv_player_has("LADDER/VINES")) {
+ inv_move_object("LADDER/VINES", NOWHERE);
+ inv_give_to_player("VINES");
+ inv_move_object("WOODEN LADDER", 504);
+ }
+ if (inv_player_has("LADDER/BROWN VINE")) {
+ inv_move_object("LADDER/BROWN VINE", NOWHERE);
+ inv_give_to_player("BROWN VINE");
+ inv_move_object("WOODEN LADDER", 504);
+ }
+
+ setMiscItems();
+ sendWSMessage_140000(729);
+ break;
+
case 729:
series_unload(_ripMedReach);
@@ -1337,6 +2136,11 @@ void Room504::daemon() {
interface_hide();
break;
+ case 745:
+ series_unload(NORMAL_DIRS[0]);
+ series_unload(SHADOW_DIRS[0]);
+ break;
+
case 746:
player_set_commands_allowed(false);
ws_walk(50, 226, nullptr, 747, 9);
@@ -1386,13 +2190,18 @@ void Room504::daemon() {
sendWSMessage_110000(758);
break;
+ case 758:
+ terminateMachineAndNull(_shovel);
+ inv_move_object("SHOVEL", 504);
+ setMiscItems();
+ sendWSMessage_140000(759);
+ break;
+
case 759:
series_unload(_ripLowReach);
ws_walk(528, 168, nullptr, _flag2 ? 558 : 734, 8);
break;
- // TODO: Various switch cases
-
default:
break;
}
diff --git a/engines/m4/riddle/rooms/section5/room504.h b/engines/m4/riddle/rooms/section5/room504.h
index 4e7e33d1211..20fbe576499 100644
--- a/engines/m4/riddle/rooms/section5/room504.h
+++ b/engines/m4/riddle/rooms/section5/room504.h
@@ -38,6 +38,7 @@ private:
int _volume2 = 0;
int _convState1 = 0;
int _convState2 = 0;
+ int _convState3 = 0;
int _ripSketching = 0;
int _ripLowReach = 0;
int _ripMedReach = 0;
@@ -46,6 +47,12 @@ private:
int _ripThrowFromLeft = 0;
int _ripHiReach2Handed = 0;
int _ripLeansBack = 0;
+ int _ripStepUpRight = 0;
+ int _ripThrowFromRight = 0;
+ int _ripKneels = 0;
+ int _ripShrunkenHead = 0;
+ int _ripGivesMoneyEmerald = 0;
+ int _ripGetsUp = 0;
int _mzDigs = 0;
int _mzStandsTalks = 0;
int _mzTakesEmerald = 0;
More information about the Scummvm-git-logs
mailing list