Skip to content

Commit c9025a7

Browse files
committed
M4: RIDDLE: Finish the implementation of room 805
1 parent a1f043e commit c9025a7

File tree

2 files changed

+237
-8
lines changed

2 files changed

+237
-8
lines changed

engines/m4/riddle/rooms/section8/room805.cpp

Lines changed: 233 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -522,7 +522,7 @@ void Room805::parser() {
522522
case -1:
523523
player_set_commands_allowed(false);
524524
ws_hide_walker(_G(my_walker));
525-
_unkSeries4 = series_load("805 RIP LOOKS UP", -1, nullptr);
525+
_ripLooksUpSeries = series_load("805 RIP LOOKS UP", -1, nullptr);
526526
_ripSiftsDirtMach = series_play("805 RIP LOOKS UP", 256, 16, 2, 5, 0, 100, 0, 0, 0, 11);
527527
digi_stop(1);
528528

@@ -544,7 +544,7 @@ void Room805::parser() {
544544
break;
545545

546546
case 4:
547-
series_unload(_unkSeries4);
547+
series_unload(_ripLooksUpSeries);
548548
sendWSMessage_140000(_G(my_walker), 5);
549549
ws_turn_to_face(_mcMach, 4, -1);
550550

@@ -880,10 +880,239 @@ void Room805::parser() {
880880
}
881881
} // if (gearFl && player_said("CHARIOT"))
882882

883-
warning("STUB - Room805::parser");
883+
else if (player_said("SOLDIER'S SHIELD", "SOLDIER") || player_said("TWO SOLDIERS' SHIELDS", "SOLDIER")) {
884+
switch (_G(kernel).trigger) {
885+
case -1:
886+
if (_G(flags[V257])) {
887+
player_set_commands_allowed(false);
888+
setGlobals1(_unkSeries5, 1, 13, 13, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
889+
sendWSMessage_110000(_G(my_walker), 10);
890+
digi_stop(1);
891+
} else {
892+
return;
893+
}
884894

885-
_G(player).command_ready = false;
895+
break;
896+
897+
case 2:
898+
hotspot_set_active("SHIELD", true);
899+
player_set_commands_allowed(true);
900+
break;
901+
902+
case 10:
903+
_G(flags[V257]) = 0;
904+
if (_G(flags[V258])) {
905+
inv_put_thing_in("TWO SOLDIERS' SHIELDS", 999);
906+
inv_give_to_player("SOLDIER'S SHIELD");
907+
} else {
908+
inv_put_thing_in("TWO SOLDIERS' SHIELDS", 805);
909+
inv_put_thing_in("SOLDIER'S SHIELD", 999);
910+
}
911+
912+
_farSoldiersShieldMach = series_play("805 FAR SOLDIERS SHIELD", 2304, 0, -1, 0, -1, 100, 0, 0, 0, -1);
913+
sendWSMessage_140000(_G(my_walker), 2);
914+
915+
break;
916+
917+
default:
918+
break;
919+
}
920+
} // if (player_said("SOLDIER'S SHIELD", "SOLDIER") || player_said("TWO SOLDIERS' SHIELDS", "SOLDIER"))
921+
922+
else if (player_said("SOLDIER'S SHIELD", "SOLDIER ") || player_said("TWO SOLDIERS' SHIELDS", "SOLDIER ")) {
923+
switch (_G(kernel).trigger) {
924+
case -1:
925+
if (_G(flags[V258])) {
926+
player_set_commands_allowed(false);
927+
setGlobals1(_unkSeries6, 1, 12, 12, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
928+
sendWSMessage_110000(_G(my_walker), 10);
929+
digi_stop(1);
930+
} else {
931+
return;
932+
}
933+
934+
break;
935+
936+
case 2:
937+
hotspot_set_active("SHIELD ", true);
938+
player_set_commands_allowed(true);
939+
break;
940+
941+
case 10:
942+
_G(flags[V258]) = 0;
943+
if (_G(flags[V257])) {
944+
inv_put_thing_in("TWO SOLDIERS' SHIELDS", 999);
945+
inv_give_to_player("SOLDIER'S SHIELD");
946+
} else {
947+
inv_put_thing_in("TWO SOLDIERS' SHIELDS", 805);
948+
inv_put_thing_in("SOLDIER'S SHIELD", 999);
949+
}
950+
951+
_nearSoldiersShieldMach = series_play("805 NEAR SOLDIERS SHIELD", 1280, 0, -1, 0, -1, 100, 0, 0, 0, -1);
952+
sendWSMessage_140000(_G(my_walker), 2);
953+
954+
break;
955+
default:
956+
break;
957+
}
958+
} // if (player_said("SOLDIER'S SHIELD", "SOLDIER ") || player_said("TWO SOLDIERS' SHIELDS", "SOLDIER "))
959+
960+
else if (gearFl && (player_said("URN") || player_said("URN ")))
961+
parserSub1("COM072", 1, 255, 1, 997);
962+
963+
else if (gearFl && player_said("UNLIT URN"))
964+
parserSub1("COM073", 1, 255, 1, 997);
965+
966+
else if (gearFl && (player_said("SHIELD") || player_said("SHIELD ") || player_said("SOLDIER'S SHIELD")))
967+
parserSub1("805R23", 1, 255, 1, -1);
968+
969+
else if (gearFl && (player_said("WOODEN POST") || player_said("WOODEN BEAM")))
970+
parserSub1("805R24", 1, 255, 1, -1);
971+
972+
else if (gearFl && player_said("MEI CHEN"))
973+
parserSub1("COM017", 1, 255, 1, 997);
974+
975+
else if ((player_said("WOODEN POST", "JADE DOOR") && inv_player_has("WOODEN POST") && !_G(flags[V272]))
976+
|| (player_said("WOODEN POST", "JADE DOOR ") && inv_player_has("WOODEN POST") && !_G(flags[V272]))
977+
|| (player_said("WOODEN BEAN", "JADE DOOR") && inv_player_has("WOODEN BEAN"))
978+
|| (player_said("WOODEN BEAN", "JADE DOOR ") && inv_player_has("WOODEN BEAN")))
979+
parserSub1("805r25", 1, 255, 1, -1);
980+
981+
else if (player_said("journal") && !takeFl && !lookFl && !inv_player_has(_G(player).noun))
982+
parserSub1("com042", 1, 255, 1, 997);
983+
984+
else if (player_said("Fifth Door")) {
985+
switch (_G(kernel).trigger) {
986+
case -1:
987+
player_set_commands_allowed(false);
988+
disable_player_commands_and_fade_init(10);
989+
990+
break;
991+
992+
case 10:
993+
adv_kill_digi_between_rooms(false);
994+
digi_play_loop("950_s29", 3, 180, -1, 950);
995+
_G(game).new_room = 844;
996+
997+
break;
998+
999+
default:
1000+
break;
1001+
}
1002+
} // if (player_said("Fifth Door"))
1003+
1004+
else if (player_said("Fourth Door")) {
1005+
switch (_G(kernel).trigger) {
1006+
case -1:
1007+
player_set_commands_allowed(false);
1008+
disable_player_commands_and_fade_init(10);
1009+
1010+
break;
1011+
1012+
case 10:
1013+
adv_kill_digi_between_rooms(false);
1014+
digi_play_loop("950_s29", 3, 180, -1, 950);
1015+
_G(game).new_room = 834;
1016+
1017+
break;
1018+
1019+
default:
1020+
break;
1021+
}
1022+
} // if (player_said("Fourth Door"))
1023+
1024+
else if (player_said("Third Door")) {
1025+
switch (_G(kernel).trigger) {
1026+
case -1:
1027+
player_set_commands_allowed(false);
1028+
disable_player_commands_and_fade_init(10);
1029+
1030+
break;
1031+
1032+
case 10:
1033+
adv_kill_digi_between_rooms(false);
1034+
digi_play_loop("950_s29", 3, 180, -1, 950);
1035+
_G(game).new_room = 814;
1036+
1037+
break;
1038+
1039+
default:
1040+
break;
1041+
}
1042+
} // if (player_said("Third Door"))
1043+
1044+
else if (player_said("Second Door")) {
1045+
switch (_G(kernel).trigger) {
1046+
case -1:
1047+
player_set_commands_allowed(false);
1048+
disable_player_commands_and_fade_init(10);
1049+
1050+
break;
1051+
1052+
case 10:
1053+
adv_kill_digi_between_rooms(false);
1054+
digi_play_loop("950_s29", 3, 180, -1, 950);
1055+
_G(game).new_room = 824;
1056+
1057+
break;
1058+
1059+
default:
1060+
break;
1061+
}
1062+
} // if (player_said("Second Door"))
1063+
1064+
else if (player_said("First Door")) {
1065+
switch (_G(kernel).trigger) {
1066+
case -1:
1067+
kernel_timing_trigger(15, 10, nullptr);
1068+
1069+
break;
1070+
1071+
case 2:
1072+
adv_kill_digi_between_rooms(false);
1073+
digi_play_loop("950_s29", 3, 180, -1, 950);
1074+
_G(game).new_room = 804;
1075+
1076+
break;
1077+
1078+
case 10:
1079+
player_set_commands_allowed(false);
1080+
disable_player_commands_and_fade_init(2);
1081+
1082+
break;
1083+
1084+
default:
1085+
break;
1086+
}
1087+
} // if (player_said("First Door"))
1088+
1089+
else if (goFl && (player_said("Jade Door") || player_said("Jade Door "))) {
1090+
switch (_G(kernel).trigger) {
1091+
case -1:
1092+
if (_G(flags[V272])) {
1093+
player_set_commands_allowed(false);
1094+
disable_player_commands_and_fade_init(3);
1095+
} else if (_G(flags[V271])) {
1096+
parserSub1("805r34", 1, 255, 1, -1);
1097+
}
1098+
1099+
break;
1100+
case 3:
1101+
adv_kill_digi_between_rooms(false);
1102+
digi_play_loop("950_s29", 3, 180, -1, 950);
1103+
_G(game).new_room = 806;
8861104

1105+
break;
1106+
1107+
default:
1108+
break;
1109+
}
1110+
} // if (goFl && (player_said("Jade Door") || player_said("Jade Door ")))
1111+
1112+
else
1113+
return;
1114+
1115+
_G(player).command_ready = false;
8871116
}
8881117

8891118
void Room805::daemon() {

engines/m4/riddle/rooms/section8/room805.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,17 +44,17 @@ class Room805 : public Room {
4444
int32 _meiSpookedPos2 = 0;
4545
int32 _meiTalkPos3 = 0;
4646
int32 _meiTrekTalkerSeries = 0;
47-
int32 _ripPos3LookAround = 0;
4847
int32 _ripHeadTurnPos3 = 0;
4948
int32 _ripLookDownPos3 = 0;
49+
int32 _ripLooksUpSeries = 0;
5050
int32 _ripLowReachPos2 = 0;
51-
int32 _ripSiftsDirtSeries = 0;
52-
int32 _ripTalkerPos3 = 0;
5351
int32 _ripMedHiReachPos2 = 0;
5452
int32 _ripMedHiReachPos3 = 0;
53+
int32 _ripPos3LookAround = 0;
54+
int32 _ripSiftsDirtSeries = 0;
55+
int32 _ripTalkerPos3 = 0;
5556

5657
int32 _unkSeries1 = 0;
57-
int32 _unkSeries4 = 0;
5858
int32 _unkSeries5 = 0;
5959
int32 _unkSeries6 = 0;
6060
int32 _unkSeries7 = 0;

0 commit comments

Comments
 (0)