Whodunit

From Elanthipedia
Revision as of 14:25, 22 September 2024 by HIATUS (talk | contribs) (Updated script for current mapper issues, cleaned up script.)
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

BEGIN:
pause 0.5

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

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


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

BUFFET:
pause 0.5
send ask %ask about alibi
delay 0.5
gosub SEARCH
pause 0.5
put #ECHO ACCUSING %who, %with, in %where.
if !matchre("%who|%where|%with", "NULL") then goto accuse
delay 0.5
put starboard
pause
put up

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

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

BAR:
pause 0.5
send ask %ask about alibi
delay 0.5
gosub SEARCH
pause 0.5
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|0") 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