Whodunit

From Elanthipedia
Jump to navigation Jump to search

This is a script for the Taisidon Morada mystery game as of 2024. Front ends are Genie 3-4.

You must start this script at the morgue in the morada or at the coordinator. It will cycle through as many passes that you have redeemed. It will not redeem passes.

#debug 10

put #ECHO cyan ================== Will cycle through as many tickets as you have redeemed. Needs to start at the Morada morgue, or at the coordinator.

action var with cleaver when chop marks that reveal flesh and bone\.$
action var with knife when ragged edges\.$
action var with baton when soft tissue damage and internal bleeding\.$
action var with bottle when severe lacerations\.$
action var with zills when displaying clean edges\.$
action var with corkscrew when oddly curved puncture wounds\.$
action var with paintbrush when deep and lethal puncture wounds\.$
action var with logbook when displaying a large amount of damage\.$
action var with comb when criss-crossed with slashes marked by odd perforations of the skin\.$

action var who $1 when (bartender|deckhand|entertainer|boatswain|chef|director|artist|steward|beautician) says.* (?:with|while|coughing awkwardly|fingers tapping).*\.
action var ask $1 when ^You also see(?:.*)*\b(bartender|deckhand|entertainer|boatswain|chef|director|artist|steward|beautician)\b\.

start:
pause 1
var with NULL
var where NULL
var who NULL

Entrance:
if ("$roomid" = "1|0") then goto BEGIN
MATCHRE BEGIN ^A Taisidon cruise coordinator steps aside
MATCHRE NOTICK ^A Taisidon cruise coordinator checks some paperwork and frowns
send ask coor about access
matchwait 5
##goto ERROR

BEGIN:
pause 1
##if ("$roomid" = "1") then goto begin1
##matchwait 5
##goto ERROR

BEGIN1:
send study corpse
delay 1
#put #goto 462
put #ECHO ACCUSING %who, %with, in %where.
put up

FOREDECK:
pause 1
##if def("%who") then
send ask %ask about alibi
delay 1
gosub SEARCH
pause 1
if !matchre("%who|%where|%with", "NULL") then goto accuse
put #ECHO ACCUSING %who, %with, in %where.
#put #goto 463
put aft
#delay 2
#put #goto 463

PROMENADE:
pause 1
send ask %ask about alibi
delay 1
gosub SEARCH
pause 1
put #ECHO ACCUSING %who, %with, in %where.
if !matchre("%who|%where|%with", "NULL") then goto accuse
#put #goto 465
#delay 2
put port

BUFFET:
pause 1
send ask %ask about alibi
delay 1
gosub SEARCH
pause 1
put #ECHO ACCUSING %who, %with, in %where.
if !matchre("%who|%where|%with", "NULL") then goto accuse
delay 2
#put #goto 464
#delay 2
##put #goto 7
#delay 2
put starboard
pause
put up
QUARTERDECK:
pause 1
send ask %ask about alibi
pause 1
gosub SEARCH
pause 1
put #ECHO ACCUSING %who, %with, in %where.
if !matchre("%who|%where|%with", "NULL") then goto accuse
delay 2
#put #goto 466
#delay 2
#put #goto 4
#delay 2
put down
delay 1
put starboard

LOUNGE:
pause 1
send ask %ask about alibi
delay 1
gosub SEARCH
pause 1
put #ECHO ACCUSING %who, %with, in %where.
if !matchre("%who|%where|%with", "NULL") then goto accuse
#delay 2
#put #goto 467
delay 2
put aft

BAR:
pause 1
send ask %ask about alibi
delay 1
gosub SEARCH
pause 1
put #ECHO ACCUSING %who, %with, in %where.
if !matchre("%who|%where|%with", "NULL") then goto accuse
matchwait 5
goto error

SEARCH:
pause
MATCHRE NOTF fails to turn up any clues\.$
MATCHRE FOUND blood has partially dried\.$
Send search
matchwait

FOUND:
delay 0.5
if ("$roomid" = "462") then var where foredeck
if ("$roomid" = "463") then var where promenade
if ("$roomid" = "466") then var where lounge
if ("$roomid" = "467") then var where bar
if ("$roomid" = "465") then var where buffet
if ("$roomid" = "464") then var where quarterdeck
delay 0.5
return

NOTF:
return

ACCUSE:
put #ECHO ACCUSING %who, %with, in %where. 
matchwait 2

ACCUSE1:
send accuse %who with %with in %where
delay 0.5
send stow right
delay 0.5
send stow left
goto start

ERROR:
put #ECHO FOUND %who, %with, in %where.
exit

ABORT:
exit

NOTICK:
put #ECHO red GET SOME PASSES
exit