var commandError,VERSION="1.00",undoBuffer=[],objs=[],room=[],commandHistory=[],commandIndex=0,lastUserInput="",it="",somethingHappened=!1,waitInterrupt=!1,waitRemaining=0,here="Nowhere",prevRoom="Nowhere";function gameSetup(){displayIntroScreen(),here=initRooms(),initObjects(),createTopics(),awareOf("Baxter"),awareOf("Cornville"),awareOf("FranksDeath"),initClock(INITIAL_TIME),initEvents(),advanceToRoom(here,"down"),state.scrollMode=!0,updateStatusLine(),$("#game_output").scroll(scrollHandler),$("#player_input").keydown(function(e){var o=e.keyCode?e.keyCode:e.which;38==o&&($("#player_input").val(commandHistory[commandIndex]),--commandIndex<0&&(commandIndex=commandHistory.length-1)),40==o&&($("#player_input").val(commandHistory[commandIndex]),++commandIndex>=commandHistory.length&&(commandIndex=0)),13==o&&(handleUserInput(),addBlankLineIfNecessary())})}function scrollHandler(){var e=$("#game_output");e[0].scrollHeight-e.scrollTop()==e.outerHeight()?(console.log("bottom"),$("#scroll_prompt").addClass("scroll_p
rompt_invisible")):$("#scroll_prompt").removeClass("scroll_prompt_invisible")}function getYesOrNo(e){return"yes"==(e=e.trim())||"y"==e?"yes":"no"==e||"n"==e?"no":"reask"}function handleUserInput(){var e=$("#player_input").val();if(state.gameOver)getReplayOrRestore(e.toLowerCase());else{if(waitInterrupt){var o=getYesOrNo(e.toLowerCase());if("reask"==o)return void displayMessage("<br>Do you want to continue waiting? (Y/N)  ");if("no"==o)return waitInterrupt=!1,displayMessageP("N"),void $("#player_input").val("");"yes"==o&&(e="wait "+(waitRemaining-1),waitRemaining=0,waitInterrupt=!1,displayMessageP("Y"))}if(""!=e){"again"!=e.toLowerCase().trim()&&"g"!=e.toLowerCase().trim()||(e=commandHistory[commandHistory.length-1]);var s=e.split(";");if(1==s.length)commandHistory.push(e),handleCommand(e);else for(var a=0;a<s.length;a++)commandHistory.push(e),handleCommand(s[a].trim());commandIndex=commandHistory.length-1}}}function handleCommand(e){var o=0;displayMessage("<br><i> > "+e+"</i><br>"),$("#player_input").val("")
;var s=parse(e);if(s.error)return displayMessageP(s.error),commandHistory.splice(commandHistory.length-1,1),!1;if(s.cmd&&"save"==s.cmd.action)saveGame();else if(s.cmd&&"about"==s.cmd.action)displayAboutScreen();else if(s.cmd&&"version"==s.cmd.action)displayVersion();else if(s.cmd&&"credits"==s.cmd.action)displayCreditsScreen();else if(s.cmd&&"restart"==s.cmd.action)location.reload();else{if(s.cmd&&"verbose"==s.cmd.action)return state.verboseMode=!0,void displayMessageP("[verbose mode ON]");if(s.cmd&&"brief"==s.cmd.action)return state.verboseMode=!1,void displayMessageP("[verbose mode OFF]");if(s.cmd&&"restore"==s.cmd.action)return loadGame(),displayMessageP("<b>"+room[here].name+"</b>"),describeRoom("","","",""),describeRoomObjects(),updateClock(1),void updateStatusLine();if(s.cmd&&"characters"==s.cmd.action){var a=getListOfPeopleMet();if(0==a.length)return void displayMessageP("You haven't met anyone yet.");displayMessage("So far you're aware of:<ul>");for(var t=0;t<a.length;t++)displayMessage("<li>"+objs[a
[t]].hintName+"</li>");displayMessageP("</ul>")}else{if(s.cmd&&"undo"==s.cmd.action)return undoState(),displayMessageP("<b>"+room[here].name+"</b>"),describeRoom("","","",""),describeRoomObjects(),updateClock(1),void updateStatusLine();if(s.cmd&&"wait"==s.cmd.action){if(0==(o=parseInt(s.cmd.option)))return void displayMessageP("No time passes.");1==o&&(s.action.verb="V-NOP",o=0),displayMessageP("Time passes...")}if(somethingHappened=!1,commandError=!1,o<=1&&performAction(s),!commandError)do{if(saveState(),updateClock(1),updateStatusLine(),somethingHappened&&o>0)return displayMessage("Do you want to continue waiting? (Y/N)  "),waitInterrupt=!0,void(waitRemaining=o--);o--}while(o>0)}}}function advanceTime(e){for(var o=0;o<e;o++)saveState(),updateClock(1),updateStatusLine()}function updateStatusLine(){$("#game_status").html("<p>"+room[here].name+"<br>"+getClockTime()+"</p>"),$("#exit_no").html(""+getNeighbouringRoomName("north")),$("#exit_so").html(""+getNeighbouringRoomName("south")),$("#exit_ea").html(""+getN
eighbouringRoomName("east")),$("#exit_we").html(""+getNeighbouringRoomName("west")),$("#exit_nw").html(""+getNeighbouringRoomName("nw")),$("#exit_ne").html(""+getNeighbouringRoomName("ne")),$("#exit_sw").html(""+getNeighbouringRoomName("sw")),$("#exit_se").html(""+getNeighbouringRoomName("se")),$("#here").html("<b>"+room[here].name+"</b>");for(var e="<h2>Inventory</h2><h4>Capacity: "+(100-objs.Player.capacity)+"%</h4><ul>",o=0;o<objs.Player.inventory.length;o++)e+="<li>"+objs[objs.Player.inventory[o]].name+"</li>";e+="</ul>",$("#inv").html(e);var s="<h2>Dramatis personae</h2><ul>",a=getListOfPeopleMet();for(o=0;o<a.length;o++)s+="<li>"+objs[a[o]].hintName+"</li>";s+="</ul>",$("#characters").html(s)}function getNeighbouringRoomName(e){return room[here][e]&&room[here][e].nextroom?room[here][e].door?objs[room[here][e].door]?objs[room[here][e].door].name:"Door (unimplemented)":room[room[here][e].nextroom]?room[room[here][e].nextroom].name:room[here][e].nextroom+" (undefined)":""}function setStartingRoom(e){here=
e}function DebugDisplayCharLocations(){var e=getClockTime()+":";for(var o in objs)if(objs.hasOwnProperty(o)){var s=objs[o];s.person&&(e+=s.name+":"+s.getMood()+":"+s.in+" || ")}console.log(e)}var IND="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";function displayMessage(e){if(state.outputActive){var o=$("#game_output");o.append(e),state.scrollMode&&(o.length&&o.scrollTop(o[0].scrollHeight-o.height()),somethingHappened=!0)}}function displayMessageP(e){displayMessage(e+"<br><br>")}function addBlankLineIfNecessary(){var e=$("#game_output").html();"<br><br><br>"==e.substring(e.length-12,e.length)&&(e=e.substring(0,e.length-8)),"<br><br>"!=e.substring(e.length-8,e.length)&&displayMessage("<br>")}function performAction(e){var o=!1;"ascend"==e.action.name&&(e.directObject.name="up"),"descend"==e.action.name&&(e.directObject.name="down"),"V-WALK"!=e.action.verb?findObject(e)&&(e.directObject.object&&(it=e.directObject.name),e.indirectObject.name&&!e.indirectObject.object&&(displayMessageP("You don't see any "+e.indirectObject.nam
e+" here."),o=!0),o||!e.directObject.name||e.directObject.object||(displayMessageP("You don't see any "+e.directObject.name+" here."),o=!0),o||(o=handleAction(e)),o||(displayMessageP("I don't know how to "+commandHistory[commandHistory.length-1]+"."),commandHistory.splice(commandHistory.length-1,1))):handleWalk(e)}function validateObject(e){return!e.object||!e.error&&(e.object.isTouched()?e.required.take&&!e.object.takeable?(displayMessageP("You can't take the "+e.name+"."),!1):e.required.person&&!e.object.isPerson()?e.object.isCorpse()?(displayMessageP("You can't do that to a corpse."),!1):(displayMessageP("You can only do that to a person, not to a "+e.name+"."),!1):e.required.container&&!e.object.isContainer()?(displayMessageP("You can't put anything into "+e.object.article+" "+e.object.name+"."),!1):e.required.surface&&!e.object.isSurface()?(displayMessageP("You can't put anything onto "+e.object.article+" "+e.object.name+"."),!1):e.required.turnable&&!e.object.turnable?(displayMessageP("You can't do tha
t!"),!1):e.required.readable&&!e.object.readable?(displayMessageP("You can't read that."),!1):!(e.required.present&&!isAccessible(e.objectName))||(e.object.isPerson()?void displayMessageP(e.object.name+" isn't here."):(displayMessageP("You don't see that here."),!1)):("the "==e.name.substring(0,4)&&(e.name=e.name.substring(4,e.name.length)),displayMessageP("You're not aware of any "+e.name+"."),!1))}function handleWalk(e){var o=e.directObject.name,s=o.split(" ");newPhrase="";for(var a=0;a<s.length;a++)"the"!=s[a]&&(newPhrase+=s[a]+" ");for(var t in o=newPhrase.trim(),room)if(room.hasOwnProperty(t)&&room[t].synonyms)for(var n=0;n<room[t].synonyms.length;n++)if(o==room[t].synonyms[n]){if(here==t)return displayMessageP("You're already here."),void(commandError=!0);var r="You move toward "+room[t].article+" "+room[t].name+".";return displayMessageP(r=r.replace("  "," ")),void MoveCharacterTowardRoom("Player",t)}if(!room[here][o])return room[here].isIndoors()||"down"!=o?(displayMessageP("You can't go that way."),
void(commandError=!0)):(displayMessageP("You can't go that way (well maybe after you die)."),void(commandError=!0));if(room[here][o].errorMsg)return displayMessageP(room[here][o].errorMsg),void(commandError=!0);var i=objs[room[here][o].door];if(i){var l=i.name;if(i.article&&(l="The "+l),i.plural?l+=" are":l+=" is",i.isLocked())return displayMessageP(l+" locked."),void(commandError=!0);if(i.isOpen())advanceToRoom(room[here][o].nextroom,o);else{i.isPlural()&&"are",displayMessageP(l+" closed."),commandError=!0}}else advanceToRoom(room[here][o].nextroom,o)}function findObjectCandidates(e){var o=e.name;if(""==o)return"";o=o.toLowerCase(),words=o.split(" "),newPhrase="";for(var s=0;s<words.length;s++)"the"!=words[s]&&(newPhrase+=words[s]+" ");o=(o=newPhrase.trim()).replace(".","");var a=[];for(var s in objs)if(objs.hasOwnProperty(s)){var t=objs[s];if(t.synonyms)for(var n=0;n<t.synonyms.length;n++)o!=t.synonyms[n].toLowerCase()||""==t.synonyms[n]||a.push(s)}var r=[];if($.each(a,function(e,o){-1===$.inArray(o,r)&&r.
push(o)}),0!=(a=r).length){if(1==a.length)return e.objectName=a[0],void(e.object=objs[a[0]]);for(s=0;s<a.length;s++)for(var i=0;i<objs[a[s]].adjectives.length;i++)if(objs[a[s]].adjectives[i]&&o.toLowerCase().includes(objs[a[s]].adjectives[i].toLowerCase()))return e.objectName=a[s],void(e.object=objs[a[s]]);if(0!=a.length){console.log("Multiple candidate objects found for "+o);for(s=0;s<a.length;s++)console.log("  candidate: "+a[s]);for(s=a.length-1;s>=0;s--)objs[a[s]].isTouched()||a.splice(s,1);if(0==a.length)return displayMessageP("You're not aware of any "+e.name+"."),void(e.error="You're not aware of any such thing.");if(1==a.length)return e.objectName=a[0],void(e.object=objs[a[0]]);for(s=a.length-1;s>=0;s--)e.required.present&&!isAccessible(a[s])&&a.splice(s,1);for(s=a.length-1;s>=0;s--)!e.required.analyzable||objs[a[s]].isAnalyzable()||objs[a[s]].analyzed||a.splice(s,1);if(0!=a.length){if(1==a.length)return e.objectName=a[0],void(e.object=objs[a[0]]);displayMessage("You'll have to be more specific when
you say \""+o+'". Try again with "'+objs[a[0]].uniqueName+'"');for(s=1;s<a.length;s++)s==a.length-1?displayMessage(' or "'+objs[a[s]].uniqueName+'."'):displayMessage(' or "'+objs[a[s]].uniqueName+'"');return e.error="duplicate",!1}}}}function findObjectInInventory(e){for(var o=0;o<objs.Player.inventory.length;o++){var s=objs[objs.Player.inventory[o]];if(s.synonyms)for(var a=0;a<s.synonyms.length;a++)if(s.synonyms[a].toLowerCase()==e.toLowerCase())return objs.Player.inventory[o]}return""}function findObjectInRoomGlobals(e){if(room[here].globals)for(var o=0;o<room[here].globals.length;o++){var s=objs[room[here].globals[o]];if(s.synonyms)for(var a=0;a<s.synonyms.length;a++)if(s.synonyms[a].toLowerCase()==e.toLowerCase())return room[here].globals[o]}}function findObjectInGlobals(e){for(var o in objs)if(objs.hasOwnProperty(o)){var s=objs[o];if(s.synonyms)for(var a=0;a<s.synonyms.length;a++)if((s.in==here||s.isGlobalObject())&&s.synonyms[a].toLowerCase()==e.toLowerCase())return o}}function findObject(e){return"it"
==e.directObject.name&&(e.directObject.name=it),findObjectCandidates(e.actor),e.actor.object&&!e.actor.object.isPerson()?(displayMessageP("You can't do that with an inanimate object."),!1):(findObjectCandidates(e.directObject),!e.directObject.error&&(!!validateObject(e.directObject)&&(findObjectCandidates(e.indirectObject),!e.indirectObject.error&&(!!validateObject(e.indirectObject)&&!(e.directObject.error||e.indirectObject.error||e.action.error)))))}function advanceToRoom(e,o){if(room[e]){if(room[here].action)if(room[here].action("V-WALK","",o,""))return;room[e].precheck("Player",here,e)&&(prevRoom=here,displayMessageP("<b>"+room[here=e].name+"</b>"),room[here].touched&&!state.verboseMode||describeRoom("","","",""),describeRoomObjects(),room[here].touched=!0,objs.Player.in=here,updateKnownObjects(),room[prevRoom].leaveRoom("Player",prevRoom,here))}else displayMessage("Going to nonexistant room "+e)}function getProperties(e){var o={};for(var s in e)if(e.hasOwnProperty(s)){o[s]=Object.entries(e[s]);for(var a=
o[s].length-1;a>=0;a--)"function"==typeof o[s][a][1]&&o[s].splice(a,1)}return o}function saveState(){(e={objs:"",rooms:"",globals:"",events:""}).globals={it:it,here:here,prevRoom:prevRoom,PresentTime:PresentTime,ClockTime:ClockTime},e.state=Object.entries(state),e.objs=getProperties(objs),e.rooms=getProperties(room),e.goals=getProperties(Goal),e.events=getProperties(QueuedEvents);var e=JSON.parse(JSON.stringify({savedState:e}));undoBuffer.push(e),undoBuffer.length>10&&undoBuffer.splice(0,1)}function undoState(){var e=undoBuffer.length-2;if(e<0)return state.scrollMode=!0,void displayMessageP("You can't undo any further.");restoreState(undoBuffer[e].savedState),state.scrollMode=!0}function restoreState(e){it=e.globals.it,here=e.globals.here,prevRoom=e.globals.prevRoom,PresentTime=e.globals.PresentTime,ClockTime=e.globals.ClockTime;for(var s=0;s<e.state.length;s++){var a=e.state[s][0];state[a]=e.state[s][1]}for(o in e.goals)if(e.goals.hasOwnProperty(o))for(s=0;s<e.goals[o].length;s++){a=e.goals[o][s][0];Goal[o]
[a]=e.goals[o][s][1]}for(s in e.events)if(e.events.hasOwnProperty(s))for(var t=0;t<e.events[1].length;t++){"intr"!=(a=e.events[s][t][0])&&(QueuedEvents[s][a]=e.events[s][t][1])}for(o in e.objs)if(e.objs.hasOwnProperty(o))for(s=0;s<e.objs[o].length;s++){a=e.objs[o][s][0];objs[o][a]=e.objs[o][s][1]}for(o in e.rooms)if(e.rooms.hasOwnProperty(o))for(s=0;s<e.rooms[o].length;s++){a=e.rooms[o][s][0];room[o][a]=e.rooms[o][s][1]}undoBuffer.splice(undoBuffer.length-1,1)}function saveGame(){var e=undoBuffer.length-2;if(e<0)displayMessageP("You can't undo any further.");else{var o=undoBuffer[e].savedState;localStorage.setItem("HappylandGameState",JSON.stringify(o)),displayMessageP("[game state saved]")}}function loadGame(){restoreState(JSON.parse(localStorage.getItem("HappylandGameState"))),displayMessageP("[game state restored]")}function displayIntroScreen(){displayMessageP("<br>Friday. Nine am. Counting down the hours of routine police paperwork until the weekend."),displayMessageP('The phone rings. You wait for the
third ring to show the caller how busy you are. You answer, "Inspector Richard Stern."'),displayMessageP('You recognize your boss\' angry breathing on the line. "Have you heard of the Happyland hotel?" he asks.'),displayMessageP('"Nope," you respond.'),displayMessageP("\"It's a hotel out in the middle of nowhere, 'bout an hour away. There's been a fatal accident.\""),displayMessageP("\"Shouldn't that be handled by the coroner's office?\" you ask, knowing all too well where the conversation is heading."),displayMessageP('"Yes, but I promised the hotel owner we\'d get to the bottom of it. Pack that new forensic analyzer gizmo. Oh, one last thing..."'),displayMessageP('"Yes?" you fake an eager tone of voice.'),displayMessageP("\"The hotel is run by my big brother, Peter. He's always putting us down as an ineffective police force. I'm counting on you to show him what the Cornville Police Department is capable of.\""),displayMessageP('Crap. "Yes, sir!"'),displayMessageP("After an hour of highway driving past fiel
ds of corn, you arrive at the Happyland hotel. You don your latex gloves, take a deep breath, and start your case."),displayMessageP("<img class='center_img' width = '80%' src = 'img/logoLobby.png' />"),displayCreditsScreen(),displayMessageP("<p class='center'>type <b>NEWBIE</b> if you are new to interactive fiction games or <b>HELP</b> for a list of commands</p>"),displayMessageP("<hr> ")}function displayHelpScreen(){displayMessageP("\n    <h4>Basic Commands</h4>\n\n    <b>N, S, E, W, NE, SE, NW, SW, U, D</b>: move in a specific direction<br>\n    <b>GO TO room</b>:  (once you have a map, move toward the destination one turn at a time)<br>\n    <b>FOLLOW person</b>: follow someone who is leaving the room you're in<br>\n    <b>EXITS</b>: list the directions available to you<br>\n    <b>LOOK</b> (shortcut is <b>L</b>): look at the current room area<br>\n    <b>EXAMINE object</b> (shortcut is <b>X</b>): look closely at a specific object (equivalent to <b>LOOK AT object</b>)<br>\n    <b>ASK person ABOUT topic</
b>: get information about a topic from a person<br>\n    <b>ASK person WHERE object is</b>: find out the location of an object<br>\n    <b>TELL person ABOUT topic/object</b>: inform a person about a particular topic or object<br>\n    <b>person, SHOW ME THE object</b>: ask a person to show something to you<br>\n    <b>SHOW/GIVE object TO person</b>: present an object to a person<br>\n    <b>CHARACTERS</b>: list the characters you've met so far<br>\n    <b>INVENTORY</b> (shortcut is <b>i</b>): list the items you're carrying<br>\n    <b>TAKE/DROP/OPEN/CLOSE/EAT/DRINK/SMELL/TASTE/KNOCK ON/USE/READ/TURN ON/TURN OFF object</b>: self-explanatory basic commands<br> \n    <b>LOCK/UNLOCK object WITH object</b>: some objects need a key to open<br>\n      <h4>Game Commands</h4>\n    \n    <b>WAIT N</b> (shortcut is <b>Z</b>): wait N minutes, or 5 minutes, if no duration specified<br>\n    <b>WAIT UNTIL time</b> (shortcut is <b>Z</b>): wait until a specific time\n    <b>AGAIN</b> (shortcut is <b>G</b>): repeat the last
command<br>\n    <b>SAVE</b>: saves the game state (will survive quitting your browser)<br>\n    <b>RESTORE</b>: reloads the saved game state<br>\n    <b>RESTART</b>: start the game over<br>\n    <b>UNDO</b>: undoes your last comand (up to 10 turns)<br>\n    <b>VERBOSE/BRIEF</b>: toggle room description upon re-entering a room<br> \n    <b>;</b> : separate multiple commands with semicolons<br>\n    \n    <h4>Inspector's Commands</h4>\n\n    As an inspector, you have some special commands to help your investigation.<br>\n    <b>SEARCH person</b>: look for hidden objects on a person<br>\n    <b>MAGNIFY object</b> (shortcut <b>MAG</b>): look at object through your magnifying glass<br>\n    <b>FINGERPRINT object</b> (shortcut <b>FP</b>): take fingerprints of a person or object<br>\n    <b>ANALYZE object</b> (shortcut <b>ANA</b>): use your forensic analyzer on a piece of evidence<br>\n    <b>SHOW object TO person</b>: get information or confront someone with important evidence<br>\n    <b>ARREST person</b>: if yo
u believe you have enough evidence to convict someone, you can arrest them. Arresting a person usually ends the game.<br>\n    <br>\n    If you need more help, try the <b>NEWBIE</b> command.<br>\n    ")}function displayNewbieHelpScreen(){displayMessageP("<h2>Help for those new to interactive fiction</h2>\n\n <h4>Movement</h4>\n<p>You can move around. The following commands will all move you north:\n<blockquote>\n> walk north<br>\n> go north<br>\n> north<br>\n> n<br>\n</blockquote>\n<p>You can move in several directions:</p>\n<blockquote>\nnorth (n), south (s), east (e), west (w),<br>\nnorthwest (nw), northeast (ne), southwest (sw), southeast (se),<br>\nup (u), down (d)\n</blockquote>\n<p>If you have a map, you'll be able to move toward a specific room (by moving one room closer per turn)</p>\n<blockquote>\n> go toward family room\n</blockquote>\n\nYou can follow a character who just left the room/area you're in.\n<blockquote>\n> follow Joe\n</blockquote>\n\n<p>To see the directions you can go\n<blockquote>\n
> exits\n</blockquote>\n\nLooking at things\n<blockquote>\n> look (look at the current room area)<br>\n> l (shortcut for look)<br>\n> examine phone (equivalent to look at phone) <br>\n> look inside closet<br>\n> x (shortcut for examine) <br>\n\n</blockquote>\n\n<h4>Interacting with Characters</h4>\nYou can ask characters for information about things or topics:\n<blockquote>\n> ask Kendra about Joseph <br>\n> ask about Joseph (if there's only one person in the room, you don't need to specify who you're asking)<br>\n> ask Joe about football <br>\n> ask Barney where Fred is <br>\n> tell me about yourself <br>\n</blockquote>\nIf there are multiple people in the room, you need to direct your communication to a specific person\n<blockquote>\n> Thomas, how are you?<br>\n> ask George about Jerry\n</blockquote>\nYou can inform characters about things or events\n<blockquote>\n> tell Susie about the concert<br>\n</blockquote>\n\nIf there's only one person in the room or area with you, you can omit the person:\n<blockqu
ote>\n> how are you?<br>\n> hello<br>\n> ask about Jerry<br>\n</blockquote>\n\nOther interactions\n<blockquote>\n> give camera to Robert<br>\n> show pen to Scott (good for presenting evidence to someone)<br>\n> Ted, show me the painting<br>\n</blockquote>\n\nTo list the characters you've met so far\n<blockquote>\n> characters\n</blockquote>\n\n<h4>Interacting with Objects</h4>\n\nYou can carry small items with you (up to a certain weight limit)\n<blockquote>\n> take envelope<br>\n> pick up bottle cap<br>\n> take all<br>\n> drop apple<br>\n> drop all<br>\n</blockquote>\n\nTo see what you're carrying (and you can carry a lot!)\n<blockquote>\n> inventory<br>\n> i (shortcut for inventory)<br>\n</blockquote>\n\nExamples of Other Interactions\n<blockquote>\n> open pickle jar <br>\n> close cabinet <br>\n> open treasure chest with pirate's key <br>\n> eat banana <br>\n> drink tea <br>\n> read warning label <br>\n> smell lotion <br>\n> taste lemon <br>\n> knock on front door<br>\n> turn on radio <br>\n> turn off fauc
et <br>\n> use car <br>\n> jump <br>\n> kiss <br>\n> sing <br>\n</blockquote>\n\n<h4>Inspector's Commands</h4>\n\nYou may want to take a closer look at people and objects:\n<blockquote>\n> magnify fabric (look at an object throught your magnifying glass) <br>\n> mag insect (shortcut for magnify)<br>\n> search Jackie <br>\n</blockquote>\n\nYou can fingerprint people and objects. \n<blockquote>\n> fingerprint the smoking gun (fp for short)<br>\n> fp lead pipe<br>\n</blockquote>\n\nYou have access to a state-of-the-art forensic analyzer which can perform an advanced \nanalysis of fingerprints or evidence and produce a paper report with its findings. \nFor example, you can fingerprint objects and people and compare the reports to determine\nwhose fingerprints are on a given object.\n<blockquote>\n> analyze wet paint (ana for short)<br>\n> read paint analysis<br>\n</blockquote>\n\n\nFeel free to show people your evidence.\n<blockquote>\n> show Dopey the poisoned apple<br>\n> show clyde the gun's fingerprint repor
t<br>\n</blockquote> \n\nIf you believe you have enough evidence to convict someone, you can arrest them.\nArresting a person usually ends the game.\n<blockquote>\n> arrest Fred<br>\n</blockquote>\n\n<h4>Other Commands</h4>\n<blockquote>\n> wait 10 - wait for ten minutes <br>\n> wait until 2:45 - wait for a specific time (if you see something happen while you're waiting, you'll be given the option to stop waiting)<br>\n> z (shortcut for wait)<br>\n> again (shortcut is g) - repeats the last command <br>\n> save - saves the game (will survive quitting your browser)<br>\n> restore - restores the game <br>\n> undo - undoes your last turn (you can undo up to 10 turns)<br>\n> restart - start the game over<br>\n> verbose - display room descriptions every time you enter a room<br>\n> brief - only display room descriptions the first time you enter a room (you can always type look to print the room description)<br>\n</blockquote>\nMultiple commands are separated with semicolons\n<blockquote>\n> n; n; n; take all; w<br
>\n<br>\nFor a summary of the commands, try the <b>HELP</b> command.<br>\n\n</blockquote>")}function displayAboutScreen(){state.scrollMode=!1,displayMessageP("<img src = 'img/logoLobby.png' />"),displayVersion(),displayMessageP("<hr>In April 2020, a coworker posted a link to a git repo hosting the source code of several Infocom games \n    that I used to play as a kid. I was especially fond of the game Deadline and decided to port it from the obscure ZIL language \n    to Javascript. I had a few goals: <ul>\n    <li>to learn how these games worked</li>\n    <li>to learn more about OO programming in Javascript</li>\n    <li>to play Deadline again!</li>\n    <li>to create my own text adventure game (as a kid I used to write my own Choose Your Own Adventure books; now I could do that digitally!)</ul>\n    \n    After a couple of months coding on evenings and weekends, I had half of Deadline implemented, the remaining work was adding a lot of the tedious details. \n    At the same time, I begin feeling the creat
ive itch to make my own game.\n    <br><br>\n    In early June, I started sketching ideas on a whiteboard of what would become <i>Happyland</i>. Only then did I discover the \n    online Interactive Fiction communities and the hundreds of games that were available on line (including Deadline). Although there are mature authoring tools \n    available, I opted to stick with my Deadline-inspired game engine and enhance it as necessary to support new features as required. \n    <br><br>\n    In the end, I'm happy how things turned out. It was a lot of fun to make. I hope you enjoy playing it.\n    <br>\n    Happy Landings!\n    <br>\n    Rob.     \n\n    "),state.scrollMode=!0}function displayVersion(){displayMessageP("Happyland version "+VERSION)}function displayCreditsScreen(){displayMessageP("<p class='center'>\n    <b>Happyland version "+VERSION+"</b><br>\n    Written, programmed, and illustrated by Rob Fitzel<br>\n    Thank you Mike Russo, Brian Rushton, Andrew Fitzel, and Caitlin Fitzel for Beta Testing.<
/p>")}function getReplayOrRestore(e){return"undo"==e?(state.gameOver=!1,undoState(),displayMessageP("<b>"+room[here].name+"</b>"),describeRoom("","","",""),describeRoomObjects(),updateClock(1),void updateStatusLine()):"restore"==e?(state.gameOver=!1,loadGame(),displayMessageP("<b>"+room[here].name+"</b>"),describeRoom("","","",""),describeRoomObjects(),updateClock(1),void updateStatusLine()):"restart"==e?(state.gameOver=!1,void location.reload()):void displayMessageP("You can either UNDO, RESTART the game or RESTORE a saved game.")}function parse(e){var o={actor:{name:"",object:"",required:{}},action:{name:"",verb:"",adverb:""},directObject:{name:"",object:"",required:{}},indirectObject:{name:"",object:"",flags:"",required:{}},error:"",cmd:{action:"",option:""}},s=(e=e.toLowerCase()).split(",");if(2==s.length){o.actor.name=s[0],o.actor.required.person=!0,o.actor.required.present=!0;var a=e.indexOf(",");e=e.substring(a+1,e.length)}for(var t=(e=(e=(e=e.replace("?","")).replace("!","")).replace(/\./g,"")).split
(" "),n=t.length-1;n>=0;n--)adverbList.includes(t[n])&&(o.action.adverb=t[n]);for(n=t.length-1;n>=0;n--)ignoreWord[t[n]]&&t.splice(n,1),""==t[n]&&t.splice(n,1);if("save"==t[0])return o.cmd={action:"save"},o;if("restore"==t[0])return o.cmd={action:"restore"},o;if("about"==t[0])return o.cmd={action:"about"},o;if("version"==t[0])return o.cmd={action:"version"},o;if("credits"==t[0])return o.cmd={action:"credits"},o;if("restart"==t[0])return o.cmd={action:"restart"},o;if("undo"==t[0])return o.cmd={action:"undo"},o;if("characters"==t[0]||"cast"==t[0])return o.cmd={action:"characters"},o;if("verbose"==t[0])return o.cmd={action:"verbose"},o;if("brief"==t[0])return o.cmd={action:"brief"},o;if("wait"==t[0]||"z"==t[0]){var r=5;return t[1]&&(r="until"==t[1]||"til"==t[1]||"till"==t[1]?calcWaitUntil(t):t[1]),o.cmd={action:"wait",option:r},o}expandVerbs(t);var i=0,l="";for(n=0;n<t.length;n++)0==n&&vsyn[t[n]]?(o.action.name=t[n],o.action.verb=vsyn[t[n]],t[n]=vsyn[t[n]],i++,action=t[n]):dsyn[t[n]]?(t[n]=dsyn[t[n]],l=t[n]):ps
yn[t[n]]&&(t[n]=psyn[t[n]]);return 0==i?(o.error="I couldn't find a verb in there.",o):"walk"==o.action.verb&&l&&2==t.length?(o.action.verb="V-WALK",o.directObject.name=t[1],o):matchSyntax(t,o)}function calcWaitUntil(e){if(!e[2])return 5;var o=e[2].split(":");if(o[0]&&!isNumeric(o[0]))return 5;if(!o[1])return 5;if(!isNumeric(o[1]))return 5;var s=60*o[0]+1*o[1];return s<PresentTime&&(s+=720),s-PresentTime}function expandVerbs(e){"x"==e[0]&&(e[0]="examine"),"l"==e[0]&&(e[0]="look"),1==e.length&&("n"!=e[0]&&"north"!=e[0]||(e[0]="go",e[1]="north"),"s"!=e[0]&&"south"!=e[0]||(e[0]="go",e[1]="south"),"e"!=e[0]&&"east"!=e[0]||(e[0]="go",e[1]="east"),"w"!=e[0]&&"west"!=e[0]||(e[0]="go",e[1]="west"),"ne"!=e[0]&&"northeast"!=e[0]||(e[0]="go",e[1]="ne"),"se"!=e[0]&&"southeast"!=e[0]||(e[0]="go",e[1]="se"),"nw"!=e[0]&&"northwest"!=e[0]||(e[0]="go",e[1]="nw"),"sw"!=e[0]&&"southwest"!=e[0]||(e[0]="go",e[1]="sw"),"u"!=e[0]&&"up"!=e[0]||(e[0]="go",e[1]="up"),"d"!=e[0]&&"down"!=e[0]||(e[0]="go",e[1]="down"),"in"==e[0]&&(e[0]=
"go",e[1]="in"),"out"==e[0]&&(e[0]="go",e[1]="out"))}var ignoreWord=new Object;ignoreWord.a="a",ignoreWord.an="a",ignoreWord.say="a",ignoreWord.then="a",ignoreWord.one="a",ignoreWord.but="a",ignoreWord.except="a",ignoreWord["."]="a",ignoreWord[","]="a",ignoreWord[" "]="a",ignoreWord['"']="a",ignoreWord["?"]="a",ignoreWord.y="a",ignoreWord.number="a",ignoreWord.minute="a",ignoreWord.back="a",ignoreWord.page="a",ignoreWord.carefully="a",ignoreWord.quietly="a",ignoreWord.slowly="a",ignoreWord.quickly="a",ignoreWord.briefly="a",ignoreWord.do="a",ignoreWord.have="a",ignoreWord.was="a",ignoreWord.were="a",ignoreWord.your="a";var adverbList=[];adverbList.push("carefully"),adverbList.push("quietly"),adverbList.push("slowly"),adverbList.push("quickly"),adverbList.push("briefly");var vsyn=new Object;vsyn.analyze="analyze",vsyn.analyse="analyze",vsyn.ana="analyze",vsyn.answer="answer",vsyn.arrest="arrest",vsyn.apprehend="arrest",vsyn.ascend="ascend",vsyn.climb="ascend",vsyn.ask="ask",vsyn.question="ask",vsyn.inquire="a
sk",vsyn.aware="aware",vsyn.close="close",vsyn.shut="close",vsyn.cover="cover",vsyn.eat="eat",vsyn.consume="eat",vsyn.descend="descend",vsyn.did="did",vsyn.drink="drink",vsyn.imbibe="drink",vsyn.swallow="drink",vsyn.drop="drop",vsyn.release="drop",vsyn.put="drop",vsyn.set="drop",vsyn.examine="examine",vsyn.describe="examine",vsyn.inspect="examine",vsyn.exits="exits",vsyn.fingerprint="fingerprint",vsyn.fp="fingerprint",vsyn.follow="follow",vsyn.pursue="follow",vsyn.give="give",vsyn.offer="give",vsyn.goodbye="goodbye",vsyn.bye="goodbye",vsyn.hello="hello",vsyn.hi="hello",vsyn.greet="hello",vsyn.help="help",vsyn.h="help",vsyn.aid="help",vsyn.assist="help",vsyn.how="how",vsyn.inventory="inventory",vsyn.inv="inventory",vsyn.i="inventory",vsyn.jump="jump",vsyn.knock="knock",vsyn.rap="knock",vsyn.kiss="kiss",vsyn.smooch="kiss",vsyn.listen="listen",vsyn.lock="lock",vsyn.look="look",vsyn.l="look",vsyn.stare="look",vsyn.gaze="look",vsyn.watch="look",vsyn.magnify="magnify",vsyn.mag="magnify",vsyn.m="magnify",vsyn.make=
"make",vsyn.map="map",vsyn.newbie="newbie",vsyn.noob="newbie",vsyn.noobie="newbie",vsyn.nooby="newbie",vsyn["new user"]="newbie",vsyn.open="open",vsyn.push="push",vsyn.play="play",vsyn.press="push",vsyn.read="read",vsyn.skim="read",vsyn.reply="reply",vsyn.scan="scan",vsyn.swipe="swipe",vsyn.search="search",vsyn.show="show",vsyn.sing="sing",vsyn.croon="sing",vsyn.chant="sing",vsyn.smell="smell",vsyn.sniff="smell",vsyn.take="take",vsyn.get="take",vsyn.pick="take",vsyn.talk="talk",vsyn.speak="talk",vsyn.taste="taste",vsyn.tell="tell",vsyn.turn="turn",vsyn.flip="turn",vsyn.shut="turn",vsyn.unlock="unlock",vsyn.use="use",vsyn.type="type",vsyn.walk="walk",vsyn.go="walk",vsyn.run="walk",vsyn.proceed="walk",vsyn.where="where",vsyn.wish="wish",vsyn.who="who",vsyn.xyzzy="xyzzy";var dsyn=new Object;dsyn.north="north",dsyn.south="south",dsyn.east="east",dsyn.west="west",dsyn.n="north",dsyn.s="south",dsyn.e="east",dsyn.w="west",dsyn.northeast="ne",dsyn.ne="ne",dsyn.northwest="nw",dsyn.nw="nw",dsyn.southeast="se",dsyn.se=
"se",dsyn.southwest="sw",dsyn.sw="sw",dsyn.up="up",dsyn.u="up",dsyn.down="down",dsyn.d="down",dsyn.in="in",dsyn.out="out";var PresentTime,psyn=new Object;function tokenizeSyntaxTemplate(e){var o=(e=(e=e.replace("<SYNTAX","")).replace(">","")).trim().split(" ");return o}function matchSyntax(e,o){for(var s=0;s<syntaxTemplates.length;s++){var a=tokenizeSyntaxTemplate(syntaxTemplates[s]);if(e[0].toUpperCase()==a[0]){if(o.action.name=e[0],1==e.length&&3==a.length)return o.action.verb=a[2],o;for(var t=!0,n=[],r="",i=0,l=0;i<e.length;i++)if(expect=a[l],next=a[l+1],e[i].toUpperCase()!=expect){if("OBJECT"==expect&&(i<e.length-1&&e[i+1].toUpperCase()==next?(r+=" "+e[i],n.push({template:expect,phrase:r.trim()}),r="",l++):(r+=" "+e[i],i==e.length-1&&n.push({template:expect,phrase:r.trim()}))),"="==expect){t=!1;break}}else n.push({template:expect,phrase:e[i]}),l++;if(t){templateCount=0;for(i=0;i<a.length&&"="!=a[i];i++,templateCount++);if(templateCount==n.length){if(a.length<=n.length)t=!1;else for(i=0;i<a.length&&"="!=a
[i];i++)if(i>=n.length||a[i]!=n[i].template){t=!1;break}if(t){for(i=0;i<a.length;i++)if("="==a[i]){o.action.verb=a[i+1];break}for(i=0;i<n.length;i++)"OBJECT"==n[i].template&&(""==o.directObject.name?o.directObject.name=n[i].phrase:o.indirectObject.name=n[i].phrase);var h=!1,d=!1;for(i=0;i<a.length;i++)"DOBJECT-FLAGS:"!=a[i]?"IOBJECT-FLAGS:"!=a[i]?(h&&"PRESENT"==a[i]&&(o.directObject.required.present=!0),d&&"PRESENT"==a[i]&&(o.indirectObject.required.present=!0),h&&"HERE"==a[i]&&(o.directObject.required.here=!0),d&&"HERE"==a[i]&&(o.indirectObject.required.here=!0),h&&"TAKEBIT"==a[i]&&(o.directObject.required.take=!0),d&&"TAKEBIT"==a[i]&&(o.indirectObject.required.take=!0),h&&"MANY"==a[i]&&(o.directObject.required.many=!0),d&&"MANY"==a[i]&&(o.indirectObject.required.many=!0),h&&"HAVE"==a[i]&&(o.directObject.required.have=!0),d&&"HAVE"==a[i]&&(o.indirectObject.required.have=!0),h&&"IN-ROOM"==a[i]&&(o.directObject.required.inRoom=!0),d&&"IN-ROOM"==a[i]&&(o.indirectObject.required.inRoom=!0),h&&"DOORBIT"==a[i]&&(
o.directObject.required.doorBit=!0),d&&"DOORBIT"==a[i]&&(o.indirectObject.required.doorBit=!0),h&&"PERSON"==a[i]&&(o.directObject.required.person=!0),d&&"PERSON"==a[i]&&(o.indirectObject.required.person=!0),h&&"CONTAINER"==a[i]&&(o.directObject.required.container=!0),d&&"CONTAINER"==a[i]&&(o.indirectObject.required.container=!0),h&&"SURFACE"==a[i]&&(o.directObject.required.surface=!0),d&&"SURFACE"==a[i]&&(o.indirectObject.required.surface=!0),h&&"TURNBIT"==a[i]&&(o.directObject.required.turnable=!0),d&&"TURNBIT"==a[i]&&(o.indirectObject.required.turnable=!0),h&&"READBIT"==a[i]&&(o.directObject.required.readable=!0),d&&"READBIT"==a[i]&&(o.indirectObject.required.readable=!0),h&&"ANALYZABLE"==a[i]&&(o.directObject.required.analyzable=!0),d&&"ANALYZABLE"==a[i]&&(o.indirectObject.required.analyzable=!0)):(h=!1,d=!0):h=!0;return o}}}}}return o.error="I couldn't find a matching verb.",o}function handleAction(e){var o=!0,s=e.action.name,a=e.action.adverb,t=e.directObject,n=e.indirectObject,r=e.actor;switch(e.action
verb){case"V-DEBUG-AWARE-OF":break;case"V-ANALYZE":handleAnalyzeAction(s,a,t,n);break;case"V-ARREST":handleArrestAction(s,a,t,n,r);break;case"V-ASK-ABOUT":handleAskAboutAction(s,a,t,n,r);break;case"V-ASK-DID-YOU":handleAskDidYou(s,a,t,n,r);break;case"V-ASK-WHERE":handleAskWhereAction(s,a,t,n,r);break;case"V-CLOSE":handleCloseAction(s,a,t,n);break;case"V-DROP":handleDropAction(s,a,t,n);break;case"V-DROP-ALL":handleDropAllAction(s,a,t,n);break;case"V-EAT":case"V-DRINK":handleEatDrink(e);break;case"V-EXAMINE":handleExamineAction(s,a,t,n);break;case"V-EXITS":printExits();break;case"V-FOLLOW":handleFollowAction(s,a,t,n);break;case"V-FINGERPRINT":handleFingerprintAction(s,a,t,n);break;case"V-GIVE":handleGiveAction(s,a,t,n);break;case"V-GOODBYE":case"V-HELLO":handleGreetingAction(s,a,t,n,r);break;case"V-HELP":handleHelpAction(s,a,t,n,r);break;case"V-SYS-HELP":displayHelpScreen(),commandError=!0;break;case"V-HOWRU":handleHowAreYou(s,a,t,n,r);break;case"V-INVENTORY":handleInventoryAction(s,a,t,n),commandError=!0;bre
ak;case"V-JUMP":handleJumpAction(s,a,t,n);break;case"V-KISS":handleKissAction(s,a,t,n,r);break;case"V-KNOCK":handleKnockAction(s,a,t,n);break;case"V-LOCK":handleLockAction(s,a,t,n);break;case"V-LOOK":handleLookAction(s,a,t,n);break;case"V-MAGNIFY":handleMagnifyAction(s,a,t,n);break;case"V-MAP":handleMapAction(),commandError=!0;break;case"V-NEWBIE":displayNewbieHelpScreen(),commandError=!0;break;case"V-NOP":break;case"V-OPEN":handleOpenAction(s,a,t,n);break;case"V-PLAY":handlePlayAction(s,a,t,n);break;case"V-READ":handleReadAction(s,a,t,n);break;case"V-SAMPLE":handleSampleAction(s,a,t,n);break;case"V-SEARCH":handleSearchAction(s,a,t,n);break;case"V-SEARCH-ROOM":handleSearchRoomAction(s,a,t,n);break;case"V-SHOW":handleShowAction(s,a,t,n);break;case"V-SHOW-ME":handleShowMeAction(s,a,t,n,r);break;case"V-SING":handleSingAction(s,a,t,n);break;case"V-SMELL":handleSmellAction(s,a,t,n);break;case"V-SWIPE-KEY":handleSwipeAction();break;case"V-TAKE":handleTakeAction(s,a,t,n);break;case"V-TAKE-ALL":handleTakeAllAction(s
,a,t,n);break;case"V-TALK":handleTalkAction(s,a,t,n);break;case"V-TALKTO":handleTalkToAction(s,a,t,n);break;case"V-TASTE":t.object.taste();break;case"V-TELL-ABOUT":handleTellAbout(s,a,t,n,r);break;case"V-TURN-ON":handleTurn(!0,s,a,t,n);break;case"V-TURN-OFF":handleTurn(!1,s,a,t,n);break;case"V-TYPE":handleType(s,a,t,n,r);break;case"V-UNLOCK":handleUnlockAction(s,a,t,n);break;case"V-USE":handleUseAction(s,a,t,n,r);break;case"V-ASK-WHO-GAVE":handleAskWhoGave(s,a,t,n,r);break;case"V-WISH":handleMakeWish(s,a,t,n);break;case"V-XYZZY":handleXyzzy();break;default:o=!1}return o}function handleExamineAction(e,o,s,a){s.object.isGlobalObject()?CantSee(s.object):isAccessible(s.objectName)?s.object.text?handleReadAction(e,o,s,a):s.object.person?s.object.describe():s.object.examine(e,o,s,a):CantSee(s.object)}function handleFingerprintAction(e,o,s,a){s.object.fingerprint(e,o,s,a),s.object.isPerson()&&GrabAttention(s.objectName)}function handleSmell(e){e.dobj.object.smell("V-SMELL",adverb,dobj,"")}function handleLookAction(
e,o,s,a){s.name||a.name||(describeRoom(e,o,s,a),describeRoomObjects(e,o,s,a))}function describeRoom(e,o,s,a){return room[here].describe(),!0}function describeRoomObjects(e,o,s,a){var t=[];if(room[here].globals)for(var n=0;n<room[here].globals.length;n++)objs[room[here].globals[n]].isVisible()&&(t[room[here].globals[n]]=!1);for(var n in objs)if(objs.hasOwnProperty(n)){var r=objs[n];if("Player"==n)continue;r.in==here&&r.isVisible()&&(t[n]=!1),"Nowhere"!=r.in&&objs[r.in]&&objs[r.in].in==here&&objs[r.in].isSurface()&&r.isVisible()&&(t[n]=!0),r.nodesc&&(t[n]=!0),r.in==here&&r.isSample()&&!r.isTouched()&&(t[n]=!0)}for(var n in t)if(t.hasOwnProperty(n)){var i=objs[n];!t[n]&&i.person&&(t[n]=i.objdesc(),i.touch(),!0)}for(var n in t)if(t.hasOwnProperty(n)){i=objs[n];if(!t[n]){if(!0,i.isCorpse()){displayMessage("The "+i.name+" is here.<br>"),t[n]=!0;continue}if(i.isSurface()&&getListOfContents(n).length>0){printListOfContents(n,"You see "+i.article+" "+i.name+" here, on top of which is "),t[n]=!0;continue}i.plural?disp
layMessage("There are "+i.article+" "+i.name+" here.<br>"):i.article?displayMessage("There is "+i.article+" "+i.name+" here.<br>"):displayMessage("You see "+i.name+" here.<br>"),(i.isContainer()&&i.isTransparent()||i.isContainer()&&i.isOpen())&&printListOfContents(n,"It seems the "+i.name+" contains "),t[n]=!0}}}function handleDropAction(e,o,s,a){if("Player"!=s.object.in)return displayMessageP("You're not carrying the "+s.object.name),!0;if(s.object.drop)s.object.drop(e,o,s,a);else{if(a.objectName)return a.object.isContainer()||a.object.isSurface()?a.object.capacity>=s.object.weight?(s.object.moveTo(a.objectName),a.object.capacity-=s.object.weight,void(a.object.isContainer()?displayMessageP("You put the "+s.object.name+" into the "+a.object.name+"."):displayMessageP("You put the "+s.object.name+" onto the "+a.object.name+"."))):void displayMessageP("The "+s.object.name+" won't fit."):void displayMessageP("You can't put "+s.object.name+" in the "+a.object.name+".");s.object.moveTo(here),displayMessageP("Dropp
ed.")}}function handleDropAllAction(e,o,s,a){for(a=objs.Player.inventory.length-1;a>=0;a--){var t=objs.Player.inventory[a];s.object=objs[t],s.objectName=t,displayMessage(s.object.name+": "),handleDropAction(e,o,s,a)}}function handlePreTake(e,o,s,a){return!!s.object.isTakeable()&&("Player"!=s.object.in&&(!!objs.Player.possibleToCarry(s.objectName)&&(s.object.take(),!0)))}function handleTakeAction(e,o,s,a){if("Player"==s.object.in)return displayMessageP("You're already carrying the "+s.object.name+"."),!0;objs.Player.possibleToCarry(s.objectName)?(objs[s.object.in]&&objs[s.object.in].isContainer()&&(objs[s.object.in].capacity+=s.object.weight),s.object.take()):displayMessageP("It's too heavy to lift with all the other stuff you're carrying.")}function handleTakeAllAction(e,o,s,a){var t=0;for(var n in objs)if(objs.hasOwnProperty(n)){objs[n];isAccessible(n)&&objs[n].isTakeable()&&"Player"!=objs[n].in&&!objs[n].isSample()&&(s.objectName=n,s.object=objs[n],displayMessage(s.object.name+": "),handleTakeAction(e,o,s,
a),t++)}0==t&&displayMessageP("There's nothing here to take.")}function handleMapAction(){isAccessible("Map")?displayMessageP(objs.Map.text):displayMessageP("You don't have a map on you.")}function handleInventoryAction(){if(0==objs.Player.inventory.length)displayMessageP("You are empty-handed.");else{displayMessage("You are carrying:<br>");for(var e=0;e<objs.Player.inventory.length;e++)if(displayMessage("&nbsp;&nbsp"+objs[objs.Player.inventory[e]].name+"<br>"),objs[objs.Player.inventory[e]].isContainer())for(o in objs)objs.hasOwnProperty(o)&&objs[o].in==objs.Player.inventory[e]&&displayMessage("&nbsp;&nbsp;&nbsp;&nbsp;"+objs[o].name+"<br>")}}function handleListenAction(e){e.directObject.object.person||e.directObject.object.listen(e.action.name,adverb,e.directObject,e.indirectObject)}function handleUseAction(e,o,s,a,t){"MagnifyingGlass"==s.object.objectName&&a.object?handleMagnifyAction(e,o,a,s):s.object.use(e,o,s,a)}function handleOpenAction(e,o,s,a){a.object&&"none"!=a.object.unlocksDoor?s.object.unlock(e,
o,s,a):s.object.open(e,o,s,a)}function handleCloseAction(e,o,s,a){s.object.isDoor()||s.object.isContainer()?s.object.close(e,o,s,a):displayMessageP("You can't close that.")}function handleLockAction(e,o,s,a){s.object.isDoor()?s.object.lock():displayMessageP("You can't lock that.")}function handleUnlockAction(e,o,s,a){s.object.isDoor()?s.object.unlock(e,o,s,a):displayMessageP("You can't unlock that.")}function handleGreetingAction(e,o,s,a,t){if(t.object&&(s=t),!s.object){var n=whoIsOnlyPersonHere();n&&(displayMessageP("(to "+objs[n].name+")"),s.name=n,s.object=objs[n])}s.object&&s.object.isPerson()?s.object.isGlobalObject()?displayMessageP(s.object.name+" isn't here."):("hello"==e?GrabAttention(s.object.objectName):CancelAttention(s.object.objectName),s.object.hibye(e)):displayMessageP("Who are you talking to?")}function handleShowAction(e,o,s,a){a.object.isPerson()?(a.object.show(s.object.objectName),GrabAttention(a.object.objectName)):(s.object.show(a.object.objectName),GrabAttention(s.object.objectName))}f
unction handleEatDrink(e){var o=e.action.verb,s=e.directObject;if("V-EAT"==o){if(!doIHave(s.objectName))return void displayMessageP("Kinda hard to eat it from way over here.");if(s.object.isDrinkable())return void displayMessageP("How does one eat a drink?");if(!s.object.isEdible())return void displayMessageP("The "+s.name+" wouldn't agree with you.");displayMessageP("Mmm. That really hit the spot."),s.object.remove()}else{if(!doIHave(s.objectName)&&s.object.isTakeable())return void displayMessageP("Kinda hard to drink it from way over here.");if(s.object.isEdible())return void displayMessageP("How does one drink food? There's no blender around here.");if(!s.object.isDrinkable())return void displayMessageP("The "+s.name+" wouldn't agree with you.");s.object.drink()}}function handleReadAction(e,o,s,a){handlePreTake(e,o,s,a),s.object.read?s.object.read(e,o,s,a):s.object.isReadable()?(displayMessageP(s.object.text),"Newspaper"==s.objectName?(state.readNewspaper=!0,awareOf("Habitat")):"NewsArticle"==s.objectName
&&(state.readFakeArticle=!0,awareOf("Habitat"))):displayMessageP("I can't read that.")}function handleAskAboutAction(e,o,s,a,t){var n,r={name:"",object:"",required:"",objectName:""};if(t.object&&s.object)r=t,n=s;else if(s.object&&a.object)r=s,n=a;else{n=s;var i=whoAmITalkingTo(e,o,s,a,t,!0);if(!i)return void displayMessageP("I'm not sure who you're asking.");r.object=objs[i]}r.object.isPerson()?(GrabAttention(r.object.objectName),r.object.askAbout(n.object.objectName)):displayMessageP("You can't talk to "+r.object.article+" "+r.object.name+"!")}function handleAskWhereAction(e,o,s,a,t){var n,r;t.object?(n=t.object.objectName,r=s.object.objectName):a.object&&s.object?(n=s.object.objectName,r=a.object.objectName):(n=whoAmITalkingTo(e,o,s,a,t,!0),r=s.object.objectName),n?(objs[n].askWhere(r),GrabAttention(n)):displayMessageP('You need to specify who you are asking. For example: "George, where is Jerry"')}function handleLockAction(e,o,s,a){s.object.lock(e,o,s,a)}function handleUnlockAction(e,o,s,a){if(s.object.is
Door()&&!a.object){var t="";if(""!=s.object.article&&(t="the "),t+=s.object.uniqueName,!has("Player","MasterKey"))return void displayMessageP("You'll need a key to unlock "+t+".");displayMessageP("(with key)"),a.object=objs.MasterKey}s.object.unlock(e,o,s,a)}function handleKnockAction(e,o,s,a){if(s.object)if(s.object.isDoor()){var t=getRoomBeyondDoor(s.object.objectName);if(!isRoomOccupied(t))return void displayMessageP("There's no answer.");var n=getRoomOccupant(t);objs[n].knock(t,s.objectName)}else displayMessageP("Nothing happens.");else displayMessageP("You need to specify what you want to knock on.")}function handleSampleAction(e,o,s,a){s.object.takeSample?s.object.takeSample(e,o,s,a):s.object.isEdible()||s.object.isDrinkable()?s.object.taste(e,o,s,a):displayMessageP("You can't take a sample of that.")}function handleAnalyzeAction(e,o,s,a){isHere("Analyzer")||doIHave("Analyzer")?s.object.isAnalyzable()?s.object.analyze(e,o,s,a):displayMessageP("You can't analyze that."):displayMessageP("Your Forensic An
alyzer isn't here.")}function handleMagnifyAction(e,o,s,a){a.object&&s.object&&"MagnifyingGlass"==s.object.objectName&&(s=a),s.object.isPerson()?displayMessageP(s.object.name+" looks at you strangely. If you're looking for answers, just ask."):s.object.examineWithMagnifyingGlass(e,o,s,a)}function handleTalkAction(e,o,s,a){displayMessageP("You'll need to say something specific. For example: <pre>ASK JOHN ABOUT BARNEY</pre>")}function handleTalkToAction(e,o,s,a){s.object.isPerson()?s.object.isHere()?(GrabAttention(s.object.objectName),displayMessageP(s.object.name+" is listening.")):displayMessageP(s.object.name+" isn't here."):displayMessageP("The "+s.object.name+" listens most intently.")}function handleHowAreYou(e,o,s,a,t){if(t.object)return t.object.isHere()?(displayMessageP("(to "+t.object.name+")"),t.object.howAreYou(),void GrabAttention(t.object.objectName)):void displayMessageP(t.object.name+" isn't here.");var n=whoIsOnlyPersonHere();if(n)displayMessageP("(to "+objs[n].name+")"),objs[n].howAreYou(),Gr
abAttention(objs[n].objectName);else{if(state.hasPlayersAttention&&objs[state.hasPlayersAttention].isHere())return displayMessageP("(to "+objs[state.hasPlayersAttention].name+")"),void objs[state.hasPlayersAttention].howAreYou();displayMessageP("Who are you talking to?")}}function handleAskWhoGave(e,o,s,a,t){var n=whoAmITalkingTo(e,o,s,a,t,!0);n?(objs[n].askWhoGave(e,o,s,a,t),GrabAttention(n)):displayMessageP("Who are you asking?")}function handleAskDidYou(e,o,s,a,t){var n=whoAmITalkingTo(e,o,s,a,t,!0);n?(objs[n].askDidYou(e,o,s,a,t),GrabAttention(n)):displayMessageP("Who are you asking?")}function handleArrestAction(e,o,s,a,t){0==evaluateEvidenceAgainst(s.objectName)?displayMessageP("You haven't found any evidence against "+s.object.name+". Continue your investigation!"):(s.object.arrest(),"Cooper"!=s.objectName&&jigIsUp(s.objectName))}function handleKissAction(e,o,s,a,t){if("Player"==s.object.objectName&&t.object)return kissee=t,void t.object.kissMe();if(s.object.isPerson())s.object.kiss();else{displayMess
ageP("You kiss the "+s.object.name+", but it fails to turn into a prince.");var n=whoIsOnlyPersonHere();n&&displayMessageP(objs[n].name+' eyes you strangely and whispers "what are you doing?"')}}function handleTurn(e,o,s,a,t){a.object.isPerson()&&e?displayMessageP("That would be inappropriate while you're on duty."):a.object.isTurnable()?e?a.object.turnOn(o,s,a,t):a.object.turnOff(o,s,a,t):displayMessageP(e?"You can't turn that on.":"You can't turn that off.")}function handleSearchAction(e,o,s,a){if(s.object){if(s.object.isContainer()||s.object.isDoor()){s.object.setOpened();var t="";if(s.object.article&&(t="the "),printListOfContents(s.objectName,"It seems "+t+s.object.name+" contains "))return}s.object.search(e,o,s,a),s.object.searchResponse&&s.object.searchResponse()}else displayMessageP("You need to specify what you want to search.")}function handleSearchRoomAction(e,o,s,a){room[here].search?room[here].search(e,o,s,a):room[here].isIndoors()?displayMessageP("You don't find anything hidden in this room."):
displayMessageP("You don't find anything hidden in this area.")}function handleGiveAction(e,o,s,a){if(s.object&&a.object)return s.object.isPerson()&&!a.object.isPerson()?a.object.inseparable?void a.object.inseparableResponse():void s.object.give(e,o,a,s):!s.object.isPerson()&&a.object.isPerson()?s.object.inseparable?void s.object.inseparableResponse():void a.object.give(e,o,s,a):void displayMessageP("You can't do that.");if(s.object&&!a.object){var t=whoIsOnlyPersonHere();if(t)return displayMessageP("(to "+objs[t].name+")"),a.object=objs[t],a.objectName=t,objs[t].give(e,o,s,a),t}displayMessageP("It's not clear to whom you want to give.")}function handleSwipeAction(){displayMessageP("Swipe a key? No, you have to insert the key into the door's keyhole. \n    Open a door without touching it? Hahahaha! You probably also believe in self-driving \n    cars and portable telephones. This is the 1980s not the 25th century! Sheesh.")}function handleType(e,o,s,a,t){s.object?"ElectricTypewriter"==s.object.objectName||"S
tandardTypewriter"==s.object.objectName?s.object.type():displayMessageP("You can't type with that."):displayMessageP("You need to specify what you want to type on.")}function printExits(){var e;(e=getNeighbouringRoomName("north"))&&displayMessageP("North: "+e),(e=getNeighbouringRoomName("south"))&&displayMessageP("South: "+e),(e=getNeighbouringRoomName("east"))&&displayMessageP("East: "+e),(e=getNeighbouringRoomName("west"))&&displayMessageP("West: "+e),(e=getNeighbouringRoomName("nw"))&&displayMessageP("Northwest: "+e),(e=getNeighbouringRoomName("ne"))&&displayMessageP("Northeast: "+e),(e=getNeighbouringRoomName("sw"))&&displayMessageP("Southwest: "+e),(e=getNeighbouringRoomName("se"))&&displayMessageP("Southeast: "+e),(e=getNeighbouringRoomName("up"))&&displayMessageP("Up: "+e),(e=getNeighbouringRoomName("down"))&&displayMessageP("Down: "+e)}function handleSingAction(){displayMessageP("You widen your stance, puff out your chest and start singing."),displayMessage('"I\'m a little teapot short and stout."<br
>'),displayMessage("You put one hand on your hip and point the opposite arms upwards.<br>"),displayMessage('"Here is my handle and here is my spout.<br>'),displayMessage('When I get all steamed up, hear me shout,"<br>'),displayMessage("You lean sideways.<br>"),displayMessageP('"Tip me over and pour me out!"'),isHere("Ally")&&(displayMessageP('Ally giggles through your performance and applauds when you are done. She shakes her head, "You\'re such a goober!"'),objs.Ally.inform("EVENT_SING_FOR_ALLY"))}function handleSmellAction(e,o,s,a){if(s.object)s.object.smell();else{if(objs.Vomit.in==here)return void displayMessageP("The foul stench of vomit hangs in the air.");room[here].smell()}}function handleJumpAction(e,o,s,a){displayMessageP("You think about jumping: Jump? Might as well jump. Go ahead and jump. \n    Get it in, jump. Go ahead and jump. Hmmm... that has a certain ring to it. You think about \n    calling Eddie, your second-cousin musician. Maybe he can do something with those lyrics. \n    In the end,
you decide not to jump.")}function handleMakeWish(e,o,s,a){displayMessageP("GrandHall"==here?"You discover you have a penny in your pocket. You make your wish and throw the coin into the fountain.":"A wish only comes true if you wish upon a star or a wishing well.")}function handleFollowAction(e,o,s,a){if(s.object.isPerson()){if(s.object.in!=here)return s.object.previn==here?"Nowhere"!=s.object.previn?void advanceToRoom(s.object.in):void displayMessageP("You can't follow "+s.object.himher+"."):s.object.previn2==here?"Nowhere"!=s.object.previn2?void advanceToRoom(s.object.in):void displayMessageP("You can't follow "+s.object.himher+"."):void displayMessageP("You're not sure where "+s.object.name+" went.");displayMessageP(s.object.name+" is here.")}else displayMessageP("You can't follow inanimate objects.")}function handleShowMeAction(e,o,s,a,t){if(!t.object){var n=whoIsOnlyPersonHere();if(!n)return void displayMessageP("Who are you asking?");displayMessageP("(to "+objs[n].name+")"),t.name=n,t.object=objs[n]}t
object.showMe(e,o,s,a,t)}function handleTellAbout(e,o,s,a,t){s.object.tellAbout(a.object.objectName),GrabAttention(s.object.objectName)}function handlePlayAction(e,o,s,a){s.object.isPlayable()?s.object.play(e,o,s,a):displayMessageP("You can't play that.")}function handleHelpAction(e,o,s,a,t){return s.object?"Player"==s.objectName?(displayHelpScreen(),void(commandError=!0)):void(s.object.isPerson()||s.object.isCorpse()?s.object.assist():displayMessageP("Try as you might, you can't help inanimate objects.")):(displayHelpScreen(),void(commandError=!0))}function evaluateEvidenceAgainst(e){var o=0;switch(e){case"Cooper":state.cooperFingerprintsAnalyzed&&state.shearsFingerprintsAnalyzed&&o++,state.readNewspaper&&(o++,state.readFakeArticle&&o++);break;case"Davis":state.eDocs.threat.discovered&&state.eDocs.typewriter.discovered&&o++,(state.poison_found_in_vomit||state.poison_found_in_wine)&&state.hairspray_poison&&(o++,state.eDocs.strips&&state.eDocs.typewriter.discovered&&state.eDocs.fakenews.discovered&&o++),stat
e.tieMoneyToDavis&&o++;break;case"Lina":state.safe_is_empty&&o++}return o}function jigIsUp(e){state.scrollMode=!1,state.gameOver=!0,DeactivateAllEvents(),epilogue(e)}function epilogue(e){var o="",s="";switch(e){case"Cooper":o='\n            <div class="newspaper">\n            <h3>Cornville Weekly News</h3>\n            <p>SUNDAY, MAY 25 1980 | VERITAS IN ZORKUM | $1.25</p>\n            <p><b>HAPPYLAND CUSTODIAN GUILTY OF MURDER</b></p>\n        \n            \n            <table align = "center">\n            <tr>\n                <td class = "vat" >\n                <pre>',state.cooperFingerprintsAnalyzed&&state.shearsFingerprintsAnalyzed&&(o+=" Evidence was found that \nCooper cut the electrical\nwires of the Megacoaster's  safety\nsystem,  causing  Franks' \ncar  to crash, resulting \nin his death."),state.readNewspaper&&(o+="Apparently, Cooper was very passionate about the environment and \n                believed he was protecting the habitat of an endangered species from the planned \n
expansion of the Happyland resort. ",state.readFakeArticle&&(o+="Unbeknownst to him, the information he had concerning the \n                     land was falsified, possibly with the intent of motivating Cooper to \n                    try to stop the expansion."));break;case"Davis":var a=0,t="";state.eDocs.threat.discovered&&state.eDocs.typewriter.discovered&&(s="HAPPYLAND EMPLOYEE FOUND GUILTY OF THREATENING HOTEL"),(state.poison_found_in_vomit||state.poison_found_in_wine)&&state.hairspray_poison&&(s="HAPPYLAND EMPLOYEE FOUND GUILTY OF MURDERING FELLOW EMPLOYEE"),state.tieMoneyToDavis&&(s="HAPPYLAND EMPLOYEE FOUND GUILTY OF STEALING THOUSANDS FROM HOTEL"),state.discoveredWiresCut?(t+="   Markus Franks, CFO of Happy-\nland, was found dead riding the \nresort's roller coaster,  which\nwas  found  to  have been sabo-\ntaged.\n",s="HAPPYLAND EXEC MURDERED"):(t+="   Markus Franks, CFO of Happy-\nland, was found dead under sus-\npicious circumstances,  but  no \nevidence was found that pointed \nto homicide.\n
",s="HAPPYLAND EXEC KILLED ON ROLLERCOASTER"),state.cooperGivesPlayerCash&&state.cooper_arrested?(t+="  Howard  Cooper,  the resort's \nhead  custodian  confessed  and \nwas apprehended for the  crime, \nhowever, he died shortly  after\nhis arrest.\n",s="HAPPYLAND EXEC MURDERED BY EMPLOYEE"):state.cooper_arrested?(t+="  Howard  Cooper,  the resort's \nhead custodian was  apprehended\nfor the crime, however, he died\nshortly after his arrest.\n",s="HAPPYLAND EXEC MURDERED BY EMPLOYEE"):state.cooper_dead&&(t+="  Howard  Cooper,  the resort's \nhead   custodian,  mysteriously \ndied later that day.\n"),(state.poison_found_in_vomit||state.poison_found_in_wine)&&state.hairspray_poison&&(t+="  There was enough evidence  to\nconvict Ms. Davis for the  mur-\nder  of  Mr.  Cooper.   She had \nlaced  his  wine  with  a large\namount of hairspray.\n",a+=10,s="KILLINGS AT HAPPYLAND"),state.eDocs.strips&&state.eDocs.typewriter.discovered&&state.eDocs.fakenews.discovered&&(state.tieMoneyToDavis?t+="  Ms. Davis  was involv
ed in  a \ncomplex  scheme to steal  money \nfrom Happyland.   It is  likely\nthat  she   killed   Cooper  to  \ncover her tracks or to distract\nthe staff from her ongoing \ntheft.\n":t+="  Evidence  suggests  that  Ms.\nDavis  had  manipulated  Cooper \ninto  killing  Franks.  However \nher motive for doing so remains\nunclear.\n"),state.poison_found_in_wine&&(a+=1),state.safe_is_empty&&state.linaskeyFingerprintsDavisAnalyzed&&!state.tieMoneyToDavis&&(s="DEATHS AND THEFT AT HAPPYLAND",t+="  There was circumstantial evi-\ndence that Ms. Davis  had  acc- \nessed the secure cabinet  which\ncontained the company's  money,\nwhich has gone missing.    How-\never,  there  was  insufficient \nproof to tie her to the  theft.\nThe money remains unrecovered.\n",a+=2),state.tieMoneyToDavis&&(s="DEATHS AND THEFT AT HAPPYLAND",t+="  Ms. Davis was found  to  have\napproximately ten thousand dol-\nlars of the company's  money in\nher possession. Subsequent  in-\nvestigations  showed  that  she\nhad  been regularly  deposi
ting\nten  thousand dollars  into her \nbank account on a weekly basis.\nAll the  stolen  money  has now \nbeen returned.\n",a+=8),state.eDocs.threat.discovered&&state.eDocs.typewriter.discovered?state.tieMoneyToDavis?(t+="   Ms.  Davis  was  also  found\nguilty   of   sending  numerous\nthreatening letters to her emp-\nloyer.  While Ms. Davis has re-\nmained silent during her entire\ntrial,  the  assumption is that \nshe wanted to delay the hotel's\nexpansion  so  that  she  could \ncomplete her theft over several\n weeks.\n ",a+=3):(t+="   Ms.  Davis  was  also  found\nguilty   of   sending   numerous\nthreatening  letters to her emp-\nloyer.  The reason  behind those \nthreats is still not known.\n",a+=2):t+="  A series of  threatening let-\nters  had  been  mailed  to the\nhotel  in  recent  weeks.   The\ninvestigation did  not shed any \nlight on the writer or the mot- \nives   behind  the  threats  or \nthe connection, if any,  to the\ncrimes committed in this case.\n",a>0&&(t+="  Davis has been senten
ced  to<br>",t+=a+" years in prison.<br>"),a>15&&(t+="   Inspector Richard Stern, who\nsingle handedly ran the invest-\nigation has been praised by his \nsuperiors as  well as Happyland \nCEO Peter Baxter.  According to \nPolice Chief Scott Baxter, bro-\nther  of  Happyland  CEO  Peter\nBaxter, Inspector  Stern  is in \nline for a promotion.");for(var n=0,r=0;r<t.length;r++)"\n"==t[r]&&n++;var i=Math.floor(n/2);n=0;for(r=0;r<t.length;r++)if("\n"==t[r]&&n++,n==i){r;break}o='\n            <div class="newspaper">\n            <h3>Cornville Weekly News</h3>\n            <p>SUNDAY, SEPT 28 1980 | VERITAS IN ZORKUM | $1.25</p>\n            <p><b>'+s+'</b></p>\n<table align = "center">\n<tr><td class = "vat" ><pre>'+t.substr(0,r)+'</pre></td>\n<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>\n<td class = "vat" ><pre>'+t.substr(r+1,t.length)+"</pre></td></tr>\n</table></div>";break;case"Lina":state.safe_is_empty&&(o='\n                <div class="newspaper">\n                <h3>Cornville Weekly News</h3>\n
               <p>SUNDAY, JUNE 15 1980 | VERITAS IN ZORKUM | $1.25</p>\n                <p><b>HAPPYLAND EMPLOYEE RELEASED AFTER INSUFFICIENT EVIDENCE FOR THEFT</b></p>\n    <table align = "center"><tr><td>\n    <pre>\n   Ms Lina Sanchez,  an employee\nat  the  Happyland hotel was ar-\nrested for  the  theft  of  over\nninty thousand dollars of  comp-\nany funds.  A judge found insuf-\nficient  evidence to charge  her\nwith a crime. She has since been \nreleased  and the money has  not \nbeen recovered.\n\n   The  Cornville  Police  Chief \ndid  not comment on  the  rumors\nof  a  probe   into  the conduct \nof Richard Stern,  the inspector \nwho arrested Sanchez.    Several \nhotel  employees had raised con-\ncerns  to  the police department  \nregarding   Stern\'s  competence.</pre></td>\n</table></div>');break;case"Baxter":break;default:o='\n            <div class="newspaper">\n            <h3>Cornville Weekly News</h3>\n            <p>SUNDAY, JUNE 1 1980 | VERITAS IN ZORKUM | $1.25</p>\n            <p><b
>CORNVILLE POLICE INSPECTOR FIRED AFTER BUNGLING INVESTIGATION</b></p>\n<table align = "center"><tr><td>\n<pre>\n   Police Inspector Richard Stern\nwas fired  yesterday for  incomp-\netence after failing to conduct a \nproper investigation of a bizarre \nset  of  events  at the Happyland \nHotel last week.\n\n   According   to  Happyland  CEO\nPeter Baxter,  Stern failed to un-\ncover any evidence surrounding the\ndeaths  of  two   staff   members, \nincluding  Chief Financial Officer\nMarkus Franks. \n\n   Furthermore, a  large amount of\nmoney  discovered  stolen from the\nhotel\'s safe remains missing.  The\ncompany\'s  long  term  survival is\nin question.</pre></td></tr></table></div>'}displayMessageP(o+="</pre><br><hr><br>*** THE END ***<br><br>Thank you for playing."),displayVersion(),displayCreditsScreen(),displayMessageP("You can either UNDO, RESTART the game or RESTORE a saved game.")}function frontPage(e){displayMessageP('<h3>Cornville Weekly News</h3>\n        <p class="center">'+e+"| VERITAS IN
ZORKUM | $1.25</p>")}function handleXyzzy(){displayMessageP("You wait with bated breath...but nothing happens.")}psyn.using="with",psyn.inside="in",psyn.into="in",psyn.underneath="under",psyn.beneath="under";var startingTime,ClockTime={hr:"",min:""},INITIAL_TIME=600;function initClock(e){for(var o in PresentTime=startingTime=e,updateClock(0),objs)if(objs.hasOwnProperty(o)&&objs[o].person&&objs[o].movementGoals){var s=0;objs[o].attentionSpan&&(s=objs[o].attentionSpan),RegisterMovementGoals(o,objs[o].movementGoals,s)}}var DAYLIGHT_NONE=0,DAYLIGHT_DUSK=1,DAYLIGHT_BRIGHT=2,DAYLIGHT_SUNSET=3;function getDaylight(){return ClockTime.hr<5?DAYLIGHT_NONE:ClockTime.hr<7?DAYLIGHT_DUSK:ClockTime.hr<18?DAYLIGHT_BRIGHT:ClockTime.hr<21?DAYLIGHT_SUNSET:DAYLIGHT_NONE}function updateClock(e){PresentTime+=e,ClockTime.hr=Math.floor(PresentTime/60),ClockTime.min=PresentTime%60,processQueue()}function updateBackgroundColor(){$("html").css("background-color","rgb(0, 127, 255)")}function getClockTime(){var e=ClockTime.min;e<10&&(e="
0"+ClockTime.min);var o="PM";ClockTime.hr<12&&(o="AM");var s=ClockTime.hr;return ClockTime.hr>12&&(s=s-=12),s+":"+e+" "+o}var QueuedEvents=[],Goal=[];function RegisterMovementGoals(e,o,s){Goal[e]={QueuedMovements:[],CurrentDestination:"",PriorityDestination:"",AttentionSpan:s,CurrentAttention:0,Enabled:!0},objs[e].attentionSpan&&(Goal[e].AttentionSpan=objs[e].attentionSpan);var a=INITIAL_TIME;for(i=0;i<o.length;i++){var t=Math.floor(o[i][0]+Math.random()*o[i][1]-o[i][1]/2),n=a+t;a+=t;var r=o[i][2];Goal[e].QueuedMovements[i]={time:n,room:r}}}function RegisterPriorityMovementGoal(e,o){Goal[e].PriorityDestination=o}function RestoreMovementGoals(e){objs[e].alive&&(Goal[e].PriorityDestination="",Goal[e].CurrentDestination="")}function RegisterEvent(e){QueuedEvents.push({time:0,intr:e,active:!1})}function ActivateEvent(e,o){for(var s=PresentTime+o,a=0;a<QueuedEvents.length;a++)if(QueuedEvents[a].intr==e)return QueuedEvents[a].active=!0,void(QueuedEvents[a].time=s)}function DeactivateEvent(e){for(var o=0;o<QueuedEv
ents.length;o++)if(QueuedEvents[o].intr==e)return void(QueuedEvents[o].active=!1)}function isActive(e){for(var o=0;o<QueuedEvents.length;o++)if(QueuedEvents[o].intr==e)return QueuedEvents[o].active;return!1}function DeactivateAllEvents(){for(var e=0;e<QueuedEvents.length;e++)QueuedEvents[e].active=!1}function processQueue(){updatePeople(),state.process_queues&&(processQueuedEvents(),processQueuedMovements()),updateKnownObjects()}function updatePeople(){for(o in objs)objs.hasOwnProperty(o)&&objs[o].isPerson()&&"Player"!=o&&(objs[o].updateMood(),objs[o].previn2=objs[o].previn,objs[o].previn=objs[o].in)}function updateKnownObjects(){for(o in objs)objs.hasOwnProperty(o)&&objs[o].in==here&&objs[o].visible&&objs[o].touch();for(var e=0;e<room[here].globals.length;e++)objs[room[here].globals[e]].touch();var s=getListOfDoors(here);for(e=0;e<s.length;e++)objs[s[e]].touch()}function processQueuedEvents(){for(var e=0;e<QueuedEvents.length;e++)QueuedEvents[e].active&&QueuedEvents[e].time<=PresentTime&&QueuedEvents[e].int
r.func()}function processQueuedMovements(){for(var e in Goal)if(Goal.hasOwnProperty(e)){if("Nowhere"==objs[e].in)continue;if(Goal[e].CurrentAttention>0&&(Goal[e].CurrentAttention--,Goal[e].CurrentAttention>0&&(Goal[e].Enabled=!1),0==Goal[e].CurrentAttention&&(Goal[e].Enabled=!0,state.hasPlayersAttention==e&&(state.hasPlayersAttention=""))),!Goal[e].Enabled)continue;var o;if(Goal[e].PriorityDestination)o=Goal[e].PriorityDestination;else{var s=-1;if(1==Goal[e].QueuedMovements.length)s=0;else{for(var a=0;a<Goal[e].QueuedMovements.length-1;a++)if(PresentTime>=Goal[e].QueuedMovements[a].time&&PresentTime<Goal[e].QueuedMovements[a+1].time){s=a;break}if(-1==s)continue}o=Goal[e].QueuedMovements[s].room}if(objs[e].in==o)continue;MoveCharacterTowardRoom(e,o),Goal[e].CurrentDestination=o}}function MoveCharacterTowardRoom(e,o){if(objs[e].alive){console.log("Move "+e+" toward "+o);var s=objs[e].in;if(s){var a=room[s].line,t=room[o].station,n=room[o].line;if(s!=o){if(s==t)if(h=getDirectionOfRoom(s,o))return void MoveChara
cter(e,s,h);for(var r=TransitLines[a],i=!1,l=0;l<r.length;l++)if(r[l][1]==s){i=!0;break}if(i)if(a==n)MoveCharacterOnSameLine(e,s,t);else{r=TransitLines[a];var h,d="",c="",y="";for(l=0;l<r.length;l++)if(y=r[l][1],(c=room[y]).towardLine&&c.towardLine[n]){d=y;break}""==d&&console.log("No transfer station found. Missing "+n+" destination line in the transit line"+a+"!!!"),s==d?MoveCharacter(e,s,room[s].towardLine[n]):MoveCharacterOnSameLine(e,s,d)}else MoveCharacter(e,s,h=getDirectionOfRoom(s,room[s].station))}}}}function getDirectionOfRoom(e,o){var s=room[e],a="";return s.north&&s.north.nextroom==o?a="north":s.south&&s.south.nextroom==o?a="south":s.east&&s.east.nextroom==o?a="east":s.west&&s.west.nextroom==o?a="west":s.up&&s.up.nextroom==o?a="up":s.down&&s.down.nextroom==o?a="down":s.nw&&s.nw.nextroom==o?a="nw":s.sw&&s.sw.nextroom==o?a="sw":s.ne&&s.ne.nextroom==o?a="ne":s.se&&s.se.nextroom==o&&(a="se"),a}function MoveCharacterOnSameLine(e,o,s){console.log("move "+e+" on same line "+o+" -> "+s);for(var a,t,n=roo
m[o].line,r=TransitLines[n],i=0;i<r.length;i++)r[i][1]==o&&(a=i),r[i][1]==s&&(t=i);var l=!0;a>t&&(l=!1),MoveCharacter(e,o,l?r[a][2]:r[a][0])}function MoveCharacter(e,o,s){if(console.log("Move "+e+" from "+o+" "+s+"ward"),room[o][s].door){var a=objs[room[o][s].door];if(!a.isOpen())if(a.isLocked()&&"Player"==e){for(i=0;i<objs.Player.inventory.length;i++){var t=objs[objs.Player.inventory[i]];if("all"==t.unlocksDoor||t.unlocksDoor==a.objectName){a.setOpened();break}}if(a.isLocked())return void displayMessageP("The door is locked.")}else a.setOpened()}if("Player"!=e){if(room[room[o][s].nextroom].isElevator()&&!room[o].isElevator()&&!attemptElevatorEntry(e,o,room[o][s].nextroom))return;!room[room[o][s].nextroom].isElevator()&&room[o].isElevator()&&leaveElevator(e,o,room[o][s].nextroom)}if("Player"!=e){objs[e].in=room[o][s].nextroom,console.log("...now in "+objs[e].in);objs[e].in;var n=objs[e].name;if(room[o][s].nextroom==here){"up"==s&&displayMessageP(n+" is walking upstairs."),"down"==s&&displayMessageP(n+" is wa
lking downstairs.");var r=Goal[e].CurrentDestination;Goal[e].PriorityDestination&&(r=Goal[e].PriorityDestination),r==here?room[here].indoors?"Davis"==e&&state.DavisCarriesSuitcase?displayMessage(n+" steps into the room, wheeling a large suitcase.<br>"):displayMessage(n+" steps into the room.<br>"):displayMessage(n+" steps into the area.<br>"):"Davis"==e&&state.DavisCarriesSuitcase?displayMessage(n+" is walking past you, wheeling her suitcase.<br>"):displayMessage(n+" is walking past you.<br>")}else if(o==here)if("up"==s||"down"==s)displayMessageP(n+" heads "+s+".");else{var l=s;switch(l){case"ne":l="northeast";break;case"nw":l="northwest";break;case"se":l="southeast";break;case"sw":l="southwest"}displayMessage(n+" heads off to the "+l+".<br>")}else{var h=getRoomCorridor(here),d=isRoomInCorridor(room[o][s].nextroom,h),c=isRoomInCorridor(o,h);if(h!=COR_NONE&&(d||c)){var y=findRoomDirection(here,o),p=getRelativeDirection(y,s);d&&c?displayMessage(n+" is off to the "+y+", heading "+p+".<br>"):d&&!c?displayMessage
(n+", off to the "+(y=findRoomDirection(here,room[o][s].nextroom))+", steps into the corridor from the "+getOppositeDir(s)+".<br>"):!d&&c&&displayMessage(n+", off to the "+y+", leaves the corridor to the "+s+".<br>")}}}else advanceToRoom(room[o][s].nextroom,s)}function GrabAttention(e){if("Player"!=e)return(!Goal[e].PriorityDestination||Goal[e].PriorityDestination==objs[e].in)&&(Goal[e].CurrentAttention=Goal[e].AttentionSpan,state.hasPlayersAttention=e,!0)}function CancelAttention(e){Goal[e].CurrentAttention=0,Goal[e].Enabled=!0}var Dunno=['"I don\'t know what that means."','"Ummm...what do I do with this?"','"Sorry, that doesn\'t mean much to me."','"Sorry, I can\'t really help you."'],GardenActivities=["planting seeds","pulling weeds","pruning the flowers","spraying for weeds","watering the flowers"];function pickOne(e){return e[Math.floor(Math.random()*e.length)]}function doorDesc(e,o,s){var a="closed";return objs[o].openbit&&(a="open"),e+a+s}function NoTouch(){displayMessageP("You would be an impolite gu
est to fool with these things without cause.")}function CantSee(e){displayMessage("You can't see "),e.person?displayMessage(e.name):displayMessage(" that "),displayMessageP("here.")}function moveObjectToRoom(e,o){objs[e].in=o,objs[e].touched=!0}function moveObjectToContainer(e,o){objs[e].in=o,objs[e].touched=!0}function autoTakeItem(e){objs[e].in="Player",objs[e].touched=!0,objs.Player.inventory.push(e)}function inSameRoom(e,o){return loc1=objs[e].in,loc2=objs[o].in,loc1==loc2}function doIHave(e){return"Player"==objs[e].in}function has(e,o){return objs[o].in==e}function isHere(e){return isInRoom(e,here)}function isInRoom(e,o){return!(!objs[e]||objs[e].in!=o)}function isIn2Rooms(e,o,s){var a=isInRoom(e,o),t=isInRoom(e,s);return a||t}function isIn3Rooms(e,o,s,a){var t=isInRoom(e,o),n=isInRoom(e,s),r=isInRoom(e,a);return t||n||r}function isRoomInCorridor(e,o){return!(!room[e].corridor||(room[e].corridor&o)!=o)}function getRoomCorridor(e){return room[e].corridor}function isInSameCorridor(e,o){return!!(room[e].co
rridor&room[o].corridor)}function findRoomDirection(e,o){return findRoomDirectionAlongCorridor(e,o,"north")?"north":findRoomDirectionAlongCorridor(e,o,"south")?"south":findRoomDirectionAlongCorridor(e,o,"east")?"east":findRoomDirectionAlongCorridor(e,o,"west")?"west":""}function findRoomDirectionAlongCorridor(e,o,s){if(room[here][s]&&room[here][s].nextroom&&!isInSameCorridor(here,room[here][s].nextroom))return!1;for(var a=here;;){if(null==room[a][s])return!1;if(null==room[a][s].nextroom)return!1;if(room[a][s].nextroom==o)return!0;a=room[a][s].nextroom}return!1}var degrees=[];function getRelativeDirection(e,o){return e==o?"away from you":180==Math.abs(degrees[e]-degrees[o])?"toward you":o}function getOppositeDir(e){switch(e){case"north":return"south";case"south":return"north";case"east":return"west";case"west":return"east";case"ne":case"northeast":return"southwest";case"se":case"southeast":return"northwest";case"nw":case"northwest":return"southeast";case"sw":case"southwest":return"northeast";case"up":return"d
own";case"down":return"up"}}function getObjectRoom(e){return objs[e].in}function playerIsIn(e){return here==e}function thisIsIt(e){it=e}function getCurrentLine(){return room[here].line}function getRoomLine(e){return room[e].line}function currentGoal(e){return Goal[e].CurrentDestination}function inMotion(e){var o=Goal[e].CurrentDestination;return""!=o&&o!=objs[e].in}function discretion(e,o){inSameRoom(e,o)&&displayMessageP(objs[e].name+" looks briefly toward "+objs[o].name+" and then speaks in a low whisper.")}function isNumeric(e){var o=e&&e.toString();return!jQuery.isArray(e)&&o-parseFloat(o)+1>=0}function invokePerformAction(e,o,s){}function Prob(e){return 100*Math.random()<e}function capitalize(e){return e.charAt(0).toUpperCase()+e.substring(1,e.length)}function getListOfDoors(e){var o=[];return room[here].north&&room[here].north.door&&o.push(room[here].north.door),room[here].south&&room[here].south.door&&o.push(room[here].south.door),room[here].east&&room[here].east.door&&o.push(room[here].east.door),roo
m[here].west&&room[here].west.door&&o.push(room[here].west.door),room[here].nw&&room[here].nw.door&&o.push(room[here].nw.door),room[here].ne&&room[here].ne.door&&o.push(room[here].ne.door),room[here].sw&&room[here].sw.door&&o.push(room[here].sw.door),room[here].se&&room[here].se.door&&o.push(room[here].se.door),o}function isDoorHere(e){return!!objs[e].isDoor()&&(!(!room[here].north||!room[here].north.door||room[here].north.door!=e)||(!(!room[here].south||!room[here].south.door||room[here].south.door!=e)||(!(!room[here].east||!room[here].east.door||room[here].east.door!=e)||(!(!room[here].west||!room[here].west.door||room[here].west.door!=e)||(!(!room[here].nw||!room[here].nw.door||room[here].nw.door!=e)||(!(!room[here].ne||!room[here].ne.door||room[here].ne.door!=e)||(!(!room[here].sw||!room[here].sw.door||room[here].sw.door!=e)||(!(!room[here].se||!room[here].se.door||room[here].se.door!=e)||void 0))))))))}function getRoomBeyondDoor(e){return room[here].north&&room[here].north.door&&room[here].north.door==e
?room[here].north.nextroom:room[here].south&&room[here].south.door&&room[here].south.door==e?room[here].south.nextroom:room[here].east&&room[here].east.door&&room[here].east.door==e?room[here].east.nextroom:room[here].west&&room[here].west.door&&room[here].west.door==e?room[here].west.nextroom:room[here].nw&&room[here].nw.door&&room[here].nw.door==e?room[here].nw.nextroom:room[here].ne&&room[here].ne.door&&room[here].ne.door==e?room[here].ne.nextroom:room[here].sw&&room[here].sw.door&&room[here].sw.door==e?room[here].sw.nextroom:room[here].se&&room[here].se.door&&room[here].se.door==e?room[here].se.nextroom:""}function isIndoors(e){return room[objs[e].in].isIndoors()}function listObjectsInContainer(e){var o=[];for(var s in objs)objs.hasOwnProperty(s)&&objs[s].in==e&&o.push(s);return o}function printObjectList(e){for(var o=[],s=0;s<e.length;s++)o.push(objs[e[s]].article+" "+objs[e[s]].name);for(s=0;s<o.length-1;s++)o[s]+=", ";o.length>1&&(o[o.length-1]="and "+o[o.length-1]);var a="";for(s=0;s<o.length;s++)a+=
o[s];return a}function formatList(e){if(0==e.length)return"";if(1==e.length)return e[0];if(2==e.length)return e[0]+" and "+e[1];for(var o=[],s=0;s<e.length;s++)o.push(e[s]),s!=e.length-1&&o.push(", "),s==e.length-2&&o.push("and ");var a="";for(s=0;s<o.length;s++)a+=o[s];return a}function printListOfContents(e,o){var s=getListOfContents(e);if(0==s.length)return!1;if(1==s.length)return displayMessage(o+" "+objs[s[0]].article+" "+objs[s[0]].name+".<br>"),awareOf(s[0]),!0;for(var a=o,t=0;t<s.length;t++)awareOf(s[t]),t==s.length-1&&(2==s.length?a+=" and ":a+=", and "),t>0&&t!=s.length-1&&(a+=", "),a+=objs[s[t]].article+" "+objs[s[t]].name;return displayMessage((a+=".")+"<br>"),!0}function getListOfContents(e){var o=[];for(var s in objs)if(objs.hasOwnProperty(s)){var a=objs[s];a.in!=e||a.nodesc||o.push(s)}return o}function getPeopleInRoom(){var e=[];for(var o in objs)objs.hasOwnProperty(o)&&"Player"!=o&&objs[o].in==here&&objs[o].isPerson()&&e.push(o);return e}function whoIsOnlyPersonHere(){var e=[];for(var o in ob
js)objs.hasOwnProperty(o)&&"Player"!=o&&objs[o].in==here&&objs[o].isPerson()&&e.push(o);return 1==e.length?e[0]:""}function whoIsOnePersonHere(){var e=[];for(var o in objs)objs.hasOwnProperty(o)&&"Player"!=o&&objs[o].in==here&&objs[o].isPerson()&&e.push(o);return 0==e.length?"":e[e.length-1]}function whoAmITalkingTo(e,o,s,a,t,n){if(t.object&&t.object.isHere()&&"Player"!=t.object.objectName)return t.objectName;var r=whoIsOnlyPersonHere();return r?(displayMessageP("(to "+objs[r].name+")"),r):s.object&&s.object.isPerson()&&"Player"!=s.object.objectName&&isHere(s.object)?s.object.objectName:""}function isAccessible(e){if(0==objs[e].isVisible())return!1;if("Player"==objs[e].in)return!0;if(objs[e].in==here)return!0;if(objs[objs[e].in]&&objs[objs[e].in].in==here&&(objs[objs[e].in].isPerson()||objs[objs[e].in].isCorpse()))return!!objs[e].isTouched();if(objs[objs[e].in]&&objs[objs[e].in].in==here&&objs[objs[e].in].isContainer()&&objs[objs[e].in].isOpen())return!0;if(objs[objs[e].in]&&objs[objs[e].in].in==here&&objs[o
bjs[e].in].isSurface())return!0;if(objs[objs[e].in]&&"Player"==objs[objs[e].in].in)return!0;if(isDoorHere(e))return!0;if(room[here].globals)for(var o=0;o<room[here].globals.length;o++)if(room[here].globals[o]==e)return!0;return!1}function getListOfPeopleMet(){var e=[];for(o in objs)objs.hasOwnProperty(o)&&(objs[o].isPerson()||objs[o].isCorpse())&&objs[o].isTouched()&&"Player"!=o&&e.push(o);return e}function isRoomOccupied(e){for(o in objs)if(objs.hasOwnProperty(o)&&objs[o].isPerson()&&"Player"!=objs[o].name&&objs[o].in==e)return!0;return!1}function getRoomOccupant(e){for(o in objs)if(objs.hasOwnProperty(o)&&objs[o].isPerson()&&"Player"!=objs[o].name&&objs[o].in==e)return o;return""}function transferSynonyms(e,o){src=objs[e],dst=objs[o];for(var s=0;s<src.synonyms.length;s++)dst.synonyms.push(src.synonyms[s]);src.synonyms=[""]}function awareOf(e){for(var o in console.log("become aware of "+e),objs[e].touched=!0,objs)objs.hasOwnProperty(o)&&objs[o].in==e&&objs[o].isSample()&&(objs[o].touched=!0)}function telepo
rt(e,o){objs[e].in=o,objs[e].previn=o,objs[e].previn2=o}function countTypedDocs(){var e=0;return state.eDocs.fakenews.discovered&&e++,state.eDocs.threat.discovered&&e++,state.eDocs.strips.discovered&&e++,state.eDocs.typewriter.discovered&&e++,e}degrees.north=0,degrees.west=270,degrees.east=90,degrees.south=180;class GenericObject{constructor(e,o){this.name=e,this.objectName=o,this.uniqueName=e,this.synonyms=[""],this.adjectives=[""],this.article="a",this.plural=!1,this.unlocksDoor="none",this.in="Nowhere",this.visible=!0,this.nodesc=!1,this.analyzable=!1,this.aware=!1,this.cover=!1,this.container=!1,this.corpse=!1,this.door=!1,this.drinkable=!1,this.edible=!1,this.globalObject=!1,this.inseparable=!1,this.paper=!1,this.person=!1,this.playable=!1,this.readable=!1,this.sample=!1,this.sampleTaken=!1,this.surface=!1,this.takeable=!1,this.transparent=!1,this.touched=!1,this.turnable=!1,this.text="",this.weight=1}isAnalyzable(){return this.analyzable}isContainer(){return this.container}isCorpse(){return this.corpse
}isCover(){return this.cover}isDoor(){return this.door}isDrinkable(){return this.drinkable}isEdible(){return this.edible}isGlobalObject(){return this.globalObject}isPaper(){return this.paper}isPerson(){return this.person}isPlayable(){return this.playable}isPlural(){return this.plural}isReadable(){return this.readable}isSample(){return this.sample}isSampleTaken(){return this.sampleTaken}isSurface(){return this.surface}isTakeable(){return this.takeable}isTouched(){return this.touched}isTransparent(){return this.transparent}isTurnable(){return this.turnable}isVisible(){return this.visible}isHere(){return this.in==here}location(){return this.in}addSynonym(e){-1==this.synonyms.indexOf(e)&&this.synonyms.push(e)}removeSynonym(e){var o=this.synonyms.indexOf(e);-1!=o&&this.synonyms.splice(o,1)}moveTo(e){var o=this.in;e!=this.in&&(this.in=e,"Player"==e&&(objs.Player.addToInventory(this.objectName),this.visible=!0),"Player"==o&&objs.Player.removeFromInventory(this.objectName))}remove(){this.in="Nowhere",objs.Player.rem
oveFromInventory(this.objectName)}touch(){this.touched=!0}analyze(e,o,s,a){return displayMessageP("You can only analyze things that you've sampled."),!0}answer(e,o,s,a){return displayMessageP("Nobody seems to be awaiting your answer."),!0}arrest(){return displayMessageP("Imagine what the boys back at HQ would say if you arrested an inanimate object."),!0}close(e,o,s,a){return displayMessageP("You must be very clever to do that to the "+this.name+"."),!0}examine(e,o,s,a){return displayMessageP("There's nothing special about the "+this.name+"."),!0}examineWithMagnifyingGlass(e,o,s,a){return displayMessageP("A look with your magnifying glass doesn't reveal anything new."),!0}drink(){displayMessageP("You can't drink that!")}fingerprint(e,o,s,a){if(this.fingerprints){var t=getFingerprintObjectName(this.objectName);return objs[t]&&"Player"==objs[t].in?void(this.person?displayMessageP("You've already taken "+this.hisher+" fingerprints."):displayMessageP("You've already taken fingerprints of the "+this.name)):objs[t
]&&objs[t].analyzed?void(this.person?displayMessageP("You've already taken and analyzed "+this.hisher+" fingerprints."):displayMessageP("You've already taken and analyzed the fingerprints from the "+this.name+".")):(s.object.isPerson()||s.object.isCorpse()?(displayMessageP("You take out your fingerprint kit and prepare to ink "+s.object.hisher+" fingers."),s.object.fingerprintResponse&&s.object.fingerprintResponse(),objs[t].moveTo("Player")):(this.article?displayMessageP("You dust the "+this.name+" and lift some good prints."):displayMessageP("You dust "+this.name+" and lift some good prints."),objs[t].moveTo("Player")),objs[t].locationTaken=room[here].name,objs[t].time=getClockTime(),objs[t].analyze(),!0)}return this.article?displayMessageP("You dust the "+this.name+", but can't find any good fingerprints."):displayMessageP("You dust "+this.name+", but can't find any good fingerprints."),!1}give(e,o,s,a){displayMessageP("The "+this.name+" isn't capable of receiving your generous gift. Try a human next time.
")}listen(e,o,s,a){return displayMessageP("The "+this.name+" makes no sound."),!0}knock(e,o,s,a){return displayMessageP("Nothing happens."),!0}lock(e,o,s,a){var t=this.name;return this.article&&(t="The "+this.name),a.object==this?displayMessageP(t+" can't lock things."):s.object==this&&displayMessageP(t+" can't be locked."),!0}lookinside(e,o,s,a){return displayMessageP("There's nothing special about the "+this.name+"."),!0}hibye(e){return displayMessageP("Only silly people say "+e+" to "+this.article+" "+this.name+"."),!0}open(e,o,s,a){return displayMessageP("You can't open that."),!0}search(e,o,s,a){var t=[];for(var n in objs)objs.hasOwnProperty(n)&&(objs[n].in!=this.objectName||objs[n].isSample()||objs[n].nodesc||(objs[n].touch(),t.push(n)));0==t.length?displayMessageP("You find nothing."):s.object.isPerson()?printListOfContents(s.objectName,"You search "+s.object.name+" and find "):printListOfContents(s.objectName,"You find the "+s.object.name+" contains ")}show(e){displayMessageP(pickOne(Dunno))}showMe(e
,o,s,a,t){displayMessageP("You can't ask an inanimate object to show you something.")}tellAbout(e){}smell(e,o,s,a){return displayMessageP("It smells just like "+(this.article+" "+this.name)+"."),!0}taste(e,o,s,a){return displayMessageP("That's not a good idea."),!0}take(e,o,s,a){this.moveTo("Player"),displayMessageP("Taken.")}turnOn(e,o,s,a){displayMessageP("You can't turn that on.")}turnOn(e,o,s,a){displayMessageP("You can't turn that off.")}type(){displayMessageP("You can't type on that.")}unlock(e,o,s,a){var t=this.name;return this.article&&(t="The "+this.name),a.object==this?displayMessageP(t+" can't unlock things."):s.object==this&&displayMessageP(t+" can't be unlocked."),!0}use(e,o,s,a){return displayMessageP("You should be more specific with what you want to do."),!0}}class GenericContainer extends GenericObject{constructor(e,o){super(e,o),this.STATE_OPEN=0,this.STATE_CLOSED=1,this.STATE_LOCKED=2,this.container=!0,this.state=this.STATE_OPEN,this.lockable=!1,this.capacity=10}setOpened(){this.state=this
STATE_OPEN}setClosed(){this.state=this.STATE_CLOSED}setLocked(){this.state=this.STATE_LOCKED,this.lockable=!0}isLocked(){return this.state==this.STATE_LOCKED}isOpen(){return this.state==this.STATE_OPEN}openClosedOrLocked(){return this.state==this.STATE_LOCKED?"locked":this.state==this.STATE_OPEN?"open":"closed"}open(){var e=this.name;this.article&&(e="The "+e),this.plural?e+=" are":e+=" is",this.state==this.STATE_OPEN?displayMessageP(e+" already open."):this.state==this.STATE_CLOSED?(displayMessageP(e+" now open."),this.state=this.STATE_OPEN):displayMessageP(e+" locked.")}close(){var e=this.name;this.article&&(e="The "+e),this.plural?e+=" are":e+=" is",this.state==this.STATE_OPEN?(displayMessageP(e+" now closed."),this.state=this.STATE_CLOSED):this.state==this.STATE_CLOSED?displayMessageP(e+" already closed now open."):displayMessageP(e+" already closed (locked).")}lock(e,o,s,a){if(s.object==this){var t=this.name;this.article&&(t="The "+t),this.plural?t+=" are":t+=" is",this.lockable?this.state==this.STATE_
OPEN?(displayMessageP(t+" now closed and locked."),this.state=this.STATE_LOCKED):this.state==this.STATE_CLOSED?(displayMessageP(t+" now locked."),this.state,this.STATE_LOCKED):displayMessageP(t+" already locked."):displayMessageP(t+" can't be locked.")}}unlock(e,o,s,a){if(""!=a.object)if(a.object.unlocksDoor==this.objectName||"all"==a.object.unlocksDoor){if(s.object==this){var t=this.name;this.article&&(t="The "+t),this.plural?t+=" are":t+=" is",this.state==this.STATE_OPEN?displayMessageP(t+" already open."):this.state==this.STATE_CLOSED?(displayMessageP(t+" now open."),this.state=this.STATE_OPEN):(displayMessageP(t+" now unlocked and open."),this.state=this.STATE_OPEN)}}else displayMessageP("The "+a.object.name+" doesn't unlock this door.");else displayMessageP("Specify what you want to unlock it with.")}}class GenericDoor extends GenericContainer{constructor(e,o){super(e,o),this.door=!0}}class GenericCover extends GenericObject{constructor(e,o){super(e,o),this.cover=!0}}class GenericPerson extends GenericO
bject{constructor(e,o){super(e,o),this.person=!0,this.previn="",this.previn2="",this.attentionSpan=5,this.article="",this.MovementGoals=[[60,10,"Nowhere"],[60,20,"Nowhere"],[60,10,"Nowhere"],[120,20,"Nowhere"],[60,30,"Nowhere"]],this.hintName="",this.alive=!0,this.fingerprints=o,this.fingerprint_id=!1,this.fingerprint_data=[0,0,0],this.hisher="his",this.heshe="he",this.himher="him",this.seekingPrivacy=!1}arrest(){displayMessageP("You handcuff "+this.name+" and read "+this.himher+" "+this.hisher+" rights.")}assist(){displayMessageP(this.name+" politely declines your offer of help.")}hibye(e){displayMessageP(this.name+" returns the salutation.")}examineWithMagnifyingGlass(e,o,s,a){return displayMessageP("I don't think "+this.name+" would like that very much."),!0}objdesc(){return!!inMotion(this.objectName)||(displayMessage(this.name+" is here.<br>"),!0)}describe(){return displayMessageP(this.name+" looks rather ordinary."),!0}give(e,o,s,a){displayMessageP("Ummm... thanks."),s.object.moveTo(a.objectName)}kiss()
{displayMessageP("You start to make your move, but "+this.name+" backs up and glares at you. You guess "+this.heshe+" doesn't feel the same way about you.")}kissMe(){displayMessageP('"No way!"')}knock(e,o){displayMessageP("The door opens for you."),objs[o].setOpened()}open(e,o,s,a){return displayMessageP("Dammit Jim, you're an inspector, not a doctor!"),!0}showMe(e,o,s,a,t){s.object.isHere()?displayMessageP('"It\'s right here."'):displayMessageP('"I don\'t know where that is."')}tellAbout(e){displayMessageP('"Okay."')}askAbout(e){return displayMessageP('"I don\'t know much about that."'),!0}askDidYou(e,o,s,a,t){return displayMessageP("\"I don't know what you're talking about.\""),!0}askWhere(e){return obj[e].person?displayMessageP("\"I don't know where "+obj[e].heshe+' is."'):displayMessageP('"I don\'t know where that is."'),!0}howAreYou(){displayMessageP('"Fine. And you?"')}askWhoGave(e,o,s,a,t){s.object.isHere()?displayMessageP("\"I wouldn't say anyone gave it to me. It's just here.\""):displayMessageP("\"
I don't understand what you're asking.\"")}}var syntaxTemplates=[];syntaxTemplates.push("<SYNTAX NOP = V-NOP>"),syntaxTemplates.push("<SYNTAX NEWBIE = V-NEWBIE>"),syntaxTemplates.push("<SYNTAX MAKE A WISH = V-WISH>"),syntaxTemplates.push("<SYNTAX MAKE WISH = V-WISH>"),syntaxTemplates.push("<SYNTAX WISH = V-WISH>"),syntaxTemplates.push("<SYNTAX GIVE FIRST AID TO OBJECT = V-HELP ; DOBJECT-FLAGS: PRESENT >"),syntaxTemplates.push("<SYNTAX GIVE FIRSTAID TO OBJECT = V-HELP ; DOBJECT-FLAGS: PRESENT >"),syntaxTemplates.push("<SYNTAX GIVE HELP TO OBJECT = V-HELP ; DOBJECT-FLAGS: PRESENT >"),syntaxTemplates.push("<SYNTAX GIVE OBJECT HELP = V-HELP ; DOBJECT-FLAGS: PRESENT >"),syntaxTemplates.push("<SYNTAX GIVE OBJECT FIRST AID = V-HELP ; DOBJECT-FLAGS: PRESENT >"),syntaxTemplates.push("<SYNTAX GIVE OBJECT FIRSTAID = V-HELP ; DOBJECT-FLAGS: PRESENT >"),syntaxTemplates.push("<SYNTAX GIVE OBJECT TO OBJECT = V-GIVE ; DOBJECT-FLAGS: PRESENT ; IOBJECT-FLAGS: PRESENT PERSON >"),syntaxTemplates.push("<SYNTAX GIVE OBJECT THE OB
JECT = V-GIVE ; DOBJECT-FLAGS: PRESENT PERSON; IOBJECT-FLAGS: PRESENT >"),syntaxTemplates.push("<SYNTAX GIVE OBJECT = V-GIVE ; DOBJECT-FLAGS: PRESENT >"),syntaxTemplates.push("<SYNTAX EXAMINE OBJECT WITH OBJECT = V-MAGNIFY ; DOBJECT-FLAGS: PRESENT ; IOBJECT-FLAGS: PRESENT >"),syntaxTemplates.push("<SYNTAX EXAMINE OBJECT = V-EXAMINE ; DOBJECT-FLAGS: PRESENT >"),syntaxTemplates.push("<SYNTAX LOOK IN OBJECT = V-SEARCH ; DOBJECT-FLAGS: PRESENT >"),syntaxTemplates.push("<SYNTAX SEARCH ROOM = V-SEARCH-ROOM >"),syntaxTemplates.push("<SYNTAX SEARCH AREA = V-SEARCH-ROOM >"),syntaxTemplates.push("<SYNTAX SEARCH OBJECT = V-SEARCH ; DOBJECT-FLAGS: PRESENT >"),syntaxTemplates.push("<SYNTAX SEARCH = V-SEARCH ;  >"),syntaxTemplates.push("<SYNTAX LOOK AT OBJECT THROUGH OBJECT = V-MAGNIFY ; DOBJECT-FLAGS: PRESENT ; IOBJECT-FLAGS: PRESENT >"),syntaxTemplates.push("<SYNTAX LOOK AT OBJECT THRU OBJECT = V-MAGNIFY ; DOBJECT-FLAGS: PRESENT ; IOBJECT-FLAGS: PRESENT >"),syntaxTemplates.push("<SYNTAX LOOK AT OBJECT WITH OBJECT = V-MA
GNIFY ; DOBJECT-FLAGS: PRESENT ; IOBJECT-FLAGS: PRESENT >"),syntaxTemplates.push("<SYNTAX LOOK THROUGH OBJECT = V-EXAMINE ; DOBJECT-FLAGS: PRESENT >"),syntaxTemplates.push("<SYNTAX LOOK OUT OBJECT = V-EXAMINE ; DOBJECT-FLAGS: PRESENT  >"),syntaxTemplates.push("<SYNTAX LOOK AT OBJECT = V-EXAMINE ; DOBJECT-FLAGS: PRESENT >"),syntaxTemplates.push("<SYNTAX LOOK OBJECT = V-EXAMINE ; DOBJECT-FLAGS: PRESENT >"),syntaxTemplates.push("<SYNTAX LOOK = V-LOOK>"),syntaxTemplates.push("<SYNTAX MAGNIFY OBJECT = V-MAGNIFY ; DOBJECT-FLAGS: PRESENT >"),syntaxTemplates.push("<SYNTAX JUMP = V-JUMP>"),syntaxTemplates.push("<SYNTAX HELP OBJECT = V-HELP ; DOBJECT-FLAGS: PRESENT >"),syntaxTemplates.push("<SYNTAX HELP = V-SYS-HELP  >"),syntaxTemplates.push("<SYNTAX TAKE UP OBJECT = V-TAKE ; DOBJECT-FLAGS: TAKEBIT PRESENT>"),syntaxTemplates.push("<SYNTAX TAKE ALL = V-TAKE-ALL ; >"),syntaxTemplates.push("<SYNTAX TAKE OBJECT = V-TAKE ; DOBJECT-FLAGS: TAKEBIT PRESENT>"),syntaxTemplates.push("<SYNTAX COVER OBJECT WITH OBJECT = V-DROP ; D
OBJECT-FLAGS: PRESENT COVER; IOBJECT-FLAGS: PRESENT >"),syntaxTemplates.push("<SYNTAX DROP OBJECT IN OBJECT = V-DROP ; DOBJECT-FLAGS: PRESENT ; IOBJECT-FLAGS: PRESENT CONTAINER >"),syntaxTemplates.push("<SYNTAX DROP OBJECT ON OBJECT = V-DROP ; DOBJECT-FLAGS: PRESENT ; IOBJECT-FLAGS: PRESENT SURFACE >"),syntaxTemplates.push("<SYNTAX DROP ALL = V-DROP-ALL ;  >"),syntaxTemplates.push("<SYNTAX DROP OBJECT = V-DROP ; DOBJECT-FLAGS: PRESENT >"),syntaxTemplates.push("<SYNTAX ANALYZE OBJECT = V-ANALYZE ; DOBJECT-FLAGS: PRESENT ANALYZABLE>"),syntaxTemplates.push("<SYNTAX USE ANALYZER ON OBJECT = V-ANALYZE ; DOBJECT-FLAGS: PRESENT ANALYZABLE>"),syntaxTemplates.push("<SYNTAX USE ANALYZER WITH OBJECT = V-ANALYZE ; DOBJECT-FLAGS: PRESENT ANALYZABLE>"),syntaxTemplates.push("<SYNTAX SET DOWN OBJECT = V-DROP ; DOBJECT-FLAGS: PRESENT>"),syntaxTemplates.push("<SYNTAX SET OBJECT DOWN = V-DROP ; DOBJECT-FLAGS: PRESENT>"),syntaxTemplates.push("<SYNTAX INVENTORY = V-INVENTORY>"),syntaxTemplates.push("<SYNTAX XYZZY = V-XYZZY>"),sy
ntaxTemplates.push("<SYNTAX GOODBYE = V-GOODBYE>"),syntaxTemplates.push("<SYNTAX GOODBYE OBJECT = V-GOODBYE>"),syntaxTemplates.push("<SYNTAX HELLO OBJECT = V-HELLO ; DOBJECT-FLAGS: PRESENT PERSON>"),syntaxTemplates.push("<SYNTAX HELLO = V-HELLO>"),syntaxTemplates.push("<SYNTAX SAY HELLO TO OBJECT = V-HELLO ; DOBJECT-FLAGS: PRESENT PERSON>"),syntaxTemplates.push("<SYNTAX SAY HELLO = V-HELLO>"),syntaxTemplates.push("<SYNTAX SAY = V-TALK >"),syntaxTemplates.push("<SYNTAX SPEAK = V-TALK >"),syntaxTemplates.push("<SYNTAX TALK = V-TALK >"),syntaxTemplates.push("<SYNTAX EAT OBJECT = V-EAT ; DOBJECT-FLAGS:  FOODBIT PRESENT>"),syntaxTemplates.push("<SYNTAX DRINK OBJECT = V-DRINK ; DOBJECT-FLAGS:  DRINKBIT PRESENT>"),syntaxTemplates.push("<SYNTAX WALK TOWARDS OBJECT = V-WALK >"),syntaxTemplates.push("<SYNTAX WALK TOWARD OBJECT = V-WALK >"),syntaxTemplates.push("<SYNTAX WALK TO OBJECT = V-WALK >"),syntaxTemplates.push("<SYNTAX WALK OBJECT = V-WALK >"),syntaxTemplates.push("<SYNTAX ASCEND UP OBJECT = V-WALK >"),syntaxTe
mplates.push("<SYNTAX ASCEND OBJECT = V-WALK >"),syntaxTemplates.push("<SYNTAX ASCEND = V-WALK >"),syntaxTemplates.push("<SYNTAX DESCEND DOWN OBJECT = V-WALK >"),syntaxTemplates.push("<SYNTAX DESCEND OBJECT = V-WALK >"),syntaxTemplates.push("<SYNTAX DESCEND = V-WALK >"),syntaxTemplates.push("<SYNTAX ASK OBJECT ABOUT OBJECT = V-ASK-ABOUT ;  DOBJECT-FLAGS: PRESENT PERSON >"),syntaxTemplates.push("<SYNTAX ASK ABOUT OBJECT = V-ASK-ABOUT ; >"),syntaxTemplates.push("<SYNTAX TELL ME ABOUT OBJECT = V-ASK-ABOUT ; >"),syntaxTemplates.push("<SYNTAX TELL OBJECT ABOUT OBJECT = V-TELL-ABOUT ; DOBJECT-FLAGS: PRESENT PERSON >"),syntaxTemplates.push("<SYNTAX ASK OBJECT FOR OBJECT = V-ASK-FOR ;  DOBJECT-FLAGS: PRESENT PERSON>"),syntaxTemplates.push("<SYNTAX ASK OBJECT WHERE IS OBJECT = V-ASK-WHERE ;  DOBJECT-FLAGS: PRESENT PERSON>"),syntaxTemplates.push("<SYNTAX ASK OBJECT WHERE ARE OBJECT = V-ASK-WHERE ;  DOBJECT-FLAGS: PRESENT PERSON>"),syntaxTemplates.push("<SYNTAX ASK OBJECT WHERE OBJECT IS = V-ASK-WHERE ;  DOBJECT-FLAGS:
PRESENT PERSON>"),syntaxTemplates.push("<SYNTAX ASK OBJECT WHERE OBJECT ARE = V-ASK-WHERE ;  DOBJECT-FLAGS: PRESENT PERSON>"),syntaxTemplates.push("<SYNTAX WHERE IS OBJECT = V-ASK-WHERE  >"),syntaxTemplates.push("<SYNTAX WHERE ARE OBJECT = V-ASK-WHERE  >"),syntaxTemplates.push("<SYNTAX WHO GAVE YOU OBJECT = V-ASK-WHO-GAVE >"),syntaxTemplates.push("<SYNTAX DID YOU OBJECT = V-ASK-DID-YOU >"),syntaxTemplates.push("<SYNTAX READ OBJECT = V-READ ; DOBJECT-FLAGS:  READBIT PRESENT  >"),syntaxTemplates.push("<SYNTAX OPEN UP OBJECT = V-OPEN ; DOBJECT-FLAGS:  DOORBIT PRESENT >"),syntaxTemplates.push("<SYNTAX OPEN OBJECT WITH OBJECT = V-OPEN ; DOBJECT-FLAGS:  DOORBIT PRESENT ; IOBJECT-FLAGS: PRESENT>"),syntaxTemplates.push("<SYNTAX OPEN OBJECT = V-OPEN ; DOBJECT-FLAGS:  DOORBIT PRESENT >"),syntaxTemplates.push("<SYNTAX CLOSE OBJECT = V-CLOSE ; DOBJECT-FLAGS:  DOORBIT PRESENT>"),syntaxTemplates.push("<SYNTAX UNLOCK OBJECT WITH OBJECT = V-UNLOCK ; DOBJECT-FLAGS: DOORBIT PRESENT ; IOBJECT-FLAGS: PRESENT>"),syntaxTemplates
push("<SYNTAX UNLOCK OBJECT = V-UNLOCK ; DOBJECT-FLAGS: DOORBIT PRESENT >"),syntaxTemplates.push("<SYNTAX LOCK OBJECT WITH OBJECT = V-LOCK ; DOBJECT-FLAGS: PRESENT DOORBIT >"),syntaxTemplates.push("<SYNTAX LOCK OBJECT = V-LOCK ; DOBJECT-FLAGS: PRESENT DOORBIT >"),syntaxTemplates.push("<SYNTAX KNOCK ON OBJECT = V-KNOCK ; DOBJECT-FLAGS: PRESENT>"),syntaxTemplates.push("<SYNTAX KNOCK AT OBJECT = V-KNOCK ; DOBJECT-FLAGS: PRESENT>"),syntaxTemplates.push("<SYNTAX KNOCK = V-KNOCK >"),syntaxTemplates.push("<SYNTAX SMELL ROOM = V-SMELL ; "),syntaxTemplates.push("<SYNTAX SMELL AIR = V-SMELL ; "),syntaxTemplates.push("<SYNTAX SMELL OBJECT = V-SMELL ; DOBJECT-FLAGS: PRESENT>"),syntaxTemplates.push("<SYNTAX SMELL = V-SMELL ; >"),syntaxTemplates.push("<SYNTAX TASTE OBJECT = V-TASTE ; DOBJECT-FLAGS: PRESENT>"),syntaxTemplates.push("<SYNTAX USE OBJECT TO LOOK AT OBJECT = V-MAGNIFY ; IOBJECT-FLAGS: PRESENT>"),syntaxTemplates.push("<SYNTAX USE OBJECT TO EXAMINE OBJECT = V-MAGNIFY ; IOBJECT-FLAGS: PRESENT>"),syntaxTemplates.p
ush("<SYNTAX USE OBJECT ON OBJECT = V-USE ; DOBJECT-FLAGS: PRESENT ; IOBJECT-FLAGS: PRESENT >"),syntaxTemplates.push("<SYNTAX USE OBJECT = V-USE ; DOBJECT-FLAGS: PRESENT>"),syntaxTemplates.push("<SYNTAX SHOW ME OBJECT = V-SHOW-ME ; >"),syntaxTemplates.push("<SYNTAX SHOW OBJECT TO OBJECT = V-SHOW ; DOBJECT-FLAGS: PRESENT ; IOBJECT-FLAGS: PRESENT PERSON>"),syntaxTemplates.push("<SYNTAX SHOW OBJECT THE OBJECT = V-SHOW ; DOBJECT-FLAGS: PRESENT PERSON ; IOBJECT-FLAGS: PRESENT>"),syntaxTemplates.push("<SYNTAX FINGERPRINT OBJECT = V-FINGERPRINT ; DOBJECT-FLAGS: PRESENT >"),syntaxTemplates.push("<SYNTAX TALK TO OBJECT = V-TALKTO ; DOBJECT-FLAGS: PRESENT PERSON>"),syntaxTemplates.push("<SYNTAX TALK TO OBJECT ABOUT OBJECT = V-ASK-ABOUT ; DOBJECT-FLAGS: PRESENT PERSON>"),syntaxTemplates.push("<SYNTAX HOW ARE YOU = V-HOWRU>"),syntaxTemplates.push("<SYNTAX OBJECT, HOW ARE YOU = V-HOWRU>"),syntaxTemplates.push("<SYNTAX PLAY OBJECT = V-PLAY ; DOBJECT-FLAGS: PRESENT >"),syntaxTemplates.push("<SYNTAX ARREST OBJECT = V-ARREST
; DOBJECT-FLAGS: PRESENT PERSON >"),syntaxTemplates.push("<SYNTAX KISS OBJECT = V-KISS ; DOBJECT-FLAGS: PRESENT"),syntaxTemplates.push("<SYNTAX TURN ON OBJECT = V-TURN-ON ; DOBJECT-FLAGS: PRESENT TURNABLE"),syntaxTemplates.push("<SYNTAX TURN OFF OBJECT = V-TURN-OFF ; DOBJECT-FLAGS: PRESENT TURNABLE"),syntaxTemplates.push("<SYNTAX TURN OBJECT ON = V-TURN-ON ; DOBJECT-FLAGS: PRESENT TURNABLE"),syntaxTemplates.push("<SYNTAX TURN OBJECT OFF = V-TURN-OFF ; DOBJECT-FLAGS: PRESENT TURNABLE"),syntaxTemplates.push("<SYNTAX SWIPE KEY ON OBJECT = V-SWIPE-KEY ; DOBJECT-FLAGS: PRESENT >"),syntaxTemplates.push("<SYNTAX SWIPE KEY = V-SWIPE-KEY >"),syntaxTemplates.push("<SYNTAX SCAN KEY ON OBJECT = V-SWIPE-KEY ; DOBJECT-FLAGS: PRESENT >"),syntaxTemplates.push("<SYNTAX SCAN KEY OBJECT = V-SWIPE-KEY >"),syntaxTemplates.push("<SYNTAX SCAN KEY = V-SWIPE-KEY >"),syntaxTemplates.push("<SYNTAX TYPE WITH OBJECT = V-TYPE  ; DOBJECT-FLAGS: PRESENT>"),syntaxTemplates.push("<SYNTAX TYPE ON OBJECT = V-TYPE ; DOBJECT-FLAGS: PRESENT >"),
syntaxTemplates.push("<SYNTAX TYPE = V-TYPE >"),syntaxTemplates.push("<SYNTAX EXITS = V-EXITS >"),syntaxTemplates.push("<SYNTAX SING = V-SING >"),syntaxTemplates.push("<SYNTAX MAP = V-MAP >"),syntaxTemplates.push("<SYNTAX FOLLOW OBJECT = V-FOLLOW ; DOBJECT-FLAGS: PERSON >"),syntaxTemplates.push("<SYNTAX AWARE = V-DEBUG-AWARE-OF >");var seq1="n; e; w; n; n; w; nw; x franks; fingerprint franks; search body; take silver key; se; x controls; fingerprint controls",seq2="e; hello; how are you; ask ivan about himself; ask ivan about job; ask ivan about happyland; ask ivan about franks; ask ivan about ride; ask ivan about flowers; s",seq3="w; u; e; e; e; e; e; e; knock on salon c door; e; ask baxter about franks; ask baxter about crash; ask baxter about threats; read threatening letter; mag letter; bye; w; w; unlock room 206; s; hello jared; ask jared about crash; ask about safety system",seq4="n ; w; w; w; w; d; e; n; w; n ; x wires; mag wires ; e; take shears; fingerprint shears; mag shears ; x shards; analyze sha
rds; w; s; e; show ivan the shears; give ivan the shears; ask ivan about wires; fingerprint ivan; s",seq4_1="s; look; w; tell ken about the cut wires; tell ken about the shears analysis; show shears' fingerprints to ken; fp ally; fp ken ",seq5="e; read newspaper; n; e; e; n ;unlock door; n; unlock custodian's door; e; x poster; search table ; read article; mag article; w; s; u; s; w; w; w; unlock room 203; n; x paper strips; mag paper strips; s; w; w; d; e; s; w; show newspaper to ken; show news article to ken ",seq6=" e; hello cooper; fingerprint cooper; ask cooper about the shears; show cooper the fingerprints from shears; show article to cooper; show paper strips to cooper; show newspaper to cooper ; ask cooper about wires",seq1to6=seq1+";"+seq2+";"+seq3+";"+seq4+";"+seq4_1+";"+seq5+";"+seq6,seq7="w; s; s; w; n; wait until 3:00",seq9="help cooper; help cooper ; help cooper; help cooper; help cooper",seq10="analyze vomit; n ;e; e; n; n ;search fridge; take wine; x wine; fp wine; ana wine",seq11="s;s;e; x e
lectric typewriter; ask davis about electric typewriter; ask sanchez about electric typewriter; type with electric typewriter; mag poem ; type on standard typewriter; mag vow  ",seq12="take hairspray; fingerprint hairspray bottle; analyze hairspray; read vomit report; read wine report; show wine bottle to davis; show wine bottle's fingerprints to davis; show hairspray analysis to davis; show vomit analysis to davis; show wine analysis to davis",seq13="w; n ; u ; s ; e; show cash to baxter;ask baxter about secure cabinet; ask baxter about financial report; read financial report; w; unlock salon b door; s ; unlock secure cabinet with silver key; look inside secure cabinet; n; n; d; s; e; ask sanchez about financial report; show financial report to sanchez; tell sanchez about secure cabinet; w; n; u; s; s; ask sanchez about secure cabinet; show secure cabinet to baxter; ask sanchez about sanchez's key; ms sanchez, where is sanchez's key; n;n;d;s;e; search cabinet; x sanchez's key; fp sanchez's key ",seq14="w;w;
w; s; e; look at alarm panel; w; n; w; u; u; u; u; e; x box; open box; take box; w; d; d; d; d; e",seq15="fingerprint box; e; e; e; fingerprint ms davis; read fingerprint report from cardboard box",seq16="w; n; u; s; e; show stolen money to baxter; show ms sanchez's key's fingerprints to baxter; w; n; d; s; e; show  stolen money to davis; show ms sanchez's key's fingerprints to davis; show davis the fingerprint report from cardboard box; arrest davis",seq9to16=seq9+";"+seq10+";"+seq11+";"+seq12+";"+seq13+";"+seq14+";"+seq15+";"+seq16;function runTests(){for(var e=0;e<1e3;e++){handleCommand(generateRandomCommand())}}function injectCommands(e){$("#player_input").val(e)}function randomWalk(){for(var e=0;e<1e3;e++){handleCommand(getRandomGoCommand())}}function generateRandomCommand(){if(Math.random()<.1)return getRandomGoCommand();var e=Math.floor(Math.random()*syntaxTemplates.length),o=syntaxTemplates[e],s=o.indexOf("SYNTAX")+6,a=o.indexOf("="),t=o.substring(s,a),n=getRandomObject();return t=t.replace("OBJECT",
n),n=getRandomObject(),t=t.replace("OBJECT",n)}function getRandomObject(){var e=Object.keys(objs),o=objs[e[Math.floor(e.length*Math.random())]],s=Math.floor(Math.random()*o.synonyms.length);return o.synonyms[s]}function getRandomGoCommand(){var e=[];return e[0]="north",e[1]="south",e[2]="east",e[3]="west",e[4]="nw",e[5]="sw",e[6]="ne",e[7]="se",e[8]="up",e[9]="down","go "+e[Math.floor(Math.random()*e.length)]}var IvanResponses={Baxter:{type:"sequential",last:-1,phrase:["\"He's a good man. He does everything to make this a good place to visit and to work in.",'"I like him. He appreciates the importance of a nice aesthetic."','"Like I said, Mr. Baxter is a great boss. He treats all of his employees really well."','"There\'s not much more I can say."']},DontKnow:{type:"random",last:-1,phrase:['"I don\'t understand."','"What are you talking about?"',"\"I don't get what you're trying to say.\""]}};function respond(e,o,s,a){e[o]||(o="DontKnow");var t=e[o];if("random"==t.type){var n=Math.floor(Math.random()*t.phras
e.length);n==t.last&&(n++,n%=t.phrase.length),displayMessageP(t.phrase[n]),t.last=n}else t.last<t.phrase.length-1&&t.last++,displayMessageP(t.phrase[t.last])}function testResponse(){respond(IvanResponses,"Baxter",0,0)}function AMA(){for(c in DeactivateAllEvents(),state.process_queues=!1,objs)if(objs.hasOwnProperty(c)&&objs[c].isPerson()&&"Player"!=c){var e=objs[c].name;for(o in objs){if(objs.hasOwnProperty(o))handleCommand("ask "+e+" about "+objs[o].name)}}}function AMA1(){for(o in omniscience(),DeactivateAllEvents(),state.process_queues=!1,objs){if(objs.hasOwnProperty(o))handleCommand("ask about "+objs[o].uniqueName)}}function Show1(){omniscience(),DeactivateAllEvents(),state.process_queues=!1;var e=whoIsOnlyPersonHere();for(o in objs)if(objs.hasOwnProperty(o)){var s=objs[o].uniqueName;objs[o].isPerson()||(objs[o].in="Player"),handleCommand("show "+s+" to "+objs[e].uniqueName)}}function Tell1(){omniscience(),DeactivateAllEvents(),state.process_queues=!1;var e=whoIsOnlyPersonHere();for(o in objs)if(objs.hasO
wnProperty(o)){var s=objs[o].uniqueName;handleCommand("tell "+objs[e].uniqueName+" about "+s)}}function Where1(){omniscience(),DeactivateAllEvents(),state.process_queues=!1;var e=whoIsOnlyPersonHere();for(o in objs)if(objs.hasOwnProperty(o)){var s=objs[o].uniqueName;handleCommand(objs[e].uniqueName+", where is "+s)}}function omniscience(){for(o in objs)objs.hasOwnProperty(o)&&awareOf(objs[o].objectName)}class GenericRoom{constructor(e){this.name=e,this.article="the",this.fumigated=!1,this.touched=!1,this.onland=!0,this.indoors=!0,this.smell=function(){displayMessageP("You don't smell anything.")},this.globals=[],this.events=[],this.cleaned=1e3,this.corridor=COR_NONE,this.line=LINE_NONE,this.station="Nowhere",this.elevator=!1}save(){return{name:this.name,touched:this.touched}}restore(e){this.name=e.name,this.touched=e.touched}isElevator(){return this.elevator}isFumigated(){return this.fumigated}isIndoors(){return this.indoors}isOnLand(){return this.is.onland}isTouched(){return this.touched}getCorridor(){retur
n this.corridor}getLine(){return this.line}getStation(){return this.station}getElevatorLine(){return this.elevatorLine}describe(){displayMessageP("You are in the "+this.name+".")}precheck(e,o,s){return!0}leaveRoom(e,o,s){return!0}}function attemptElevatorEntry(e,o,s){return!!room[o].isElevator()||(state.elevatorOccupied?("Player"==e&&displayMessageP("The elevator is busy at the moment."),!1):(state.elevatorOccupied=!0,!0))}function leaveElevator(e,o,s){room[s].isElevator()||(state.elevatorOccupied=!1),"Player"!=e&&here==s&&displayMessageP("The elevator doors open.")}var LINE_NONE=-1,TransitLines={LineHotelFloor1Main:[[0,"FrontSteps","north"],["south","Lobby","north"],["south","GrandHall","east"],["west","Hall12","east"],["west","BallroomFoyer",0]],LineHotelFloor2Main:[[0,"BallroomStairsTop","south"],["north","Hall25","west"],["east","Hall24","west"],["east","Hall23","west"],["east","Hall22","west"],["east","Hall21","west"],["east","Elevator2",0]],LineElevator:[[0,"Hall51","west"],["east","Elevator5","down"],
["up","Elevator4","down"],["up","Elevator3","down"],["up","Elevator2","down"],["up","Elevator1",0]],LineHotelToPark:[[0,"PathToPark","west"],["east","Joyville","north"],["south","MechanicalRoom","east"],["west","AmongBushes","east"],["west","AmongBushes2",0]],LineShed:[[0,"GrassyArea","east"],["west","OutsideShed","north"],["south","Shed",0]],LineStaffQuarters:[[0,"StaffQuarters","south"],["north","BallroomStairsBottom",0]]},COR_NONE=0,COR_FRONT=1,COR_EW1=2,COR_EW2=4;function initRooms(){function e(e,o,s){var a="Room"+e,t="Room "+e;switch(room[a]=new GenericRoom(t),room[a].synonyms=["room"+e,"room "+e],room[a].article="",room[a].line="LineHotelFloor2Main",room[a].station=s,room[a].globals=["RoomCloset","TV","Window","Floor","Washroom","Sink","Toilet","Shower"],o?(room[a].south={nextroom:s,door:"Door"+e},room[a].out={nextroom:s,door:"Door"+e},room[a].facing="north",room[a].east={errorMsg:"The room's only exit is to the south."},room[a].west={errorMsg:"The room's only exit is to the south."},room[a].ne={errorM
sg:"The room's only exit is to the south."},room[a].nw={errorMsg:"The room's only exit is to the south."},room[a].se={errorMsg:"The room's only exit is to the south."},room[a].sw={errorMsg:"The room's only exit is to the south."}):(room[a].north={nextroom:s,door:"Door"+e},room[a].out={nextroom:s,door:"Door"+e},room[a].facing="south",room[a].east={errorMsg:"The room's only exit is to the north."},room[a].west={errorMsg:"The room's only exit is to the north."},room[a].ne={errorMsg:"The room's only exit is to the north."},room[a].nw={errorMsg:"The room's only exit is to the north."},room[a].se={errorMsg:"The room's only exit is to the north."},room[a].sw={errorMsg:"The room's only exit is to the north."}),e){case 201:room[a].whoseRoom="Ms. Sanchez's";break;case 202:room[a].whoseRoom="an unoccupied",room[a].smell=function(){displayMessageP("The room smells a bit stale, like it hasn't been used in days.")};break;case 203:room[a].whoseRoom="Ms. Davis'",room[a].smell=function(){displayMessageP("You detect a strong
odor of perfume in the room. Reminds you of the fragrance isle in the department store.")};break;case 204:room[a].whoseRoom="an unoccupied",room[a].smell=function(){displayMessageP("The room smells a bit stale, like it hasn't been used in days.")};break;case 205:room[a].whoseRoom="Mr. Franks'";break;case 206:room[a].whoseRoom="Jared Scott's";break;case 207:room[a].whoseRoom="Mr. Baxter's"}room[a].describe=function(){displayMessage("You are in "+this.whoseRoom+" hotel room."),"south"==this.facing&&(getDaylight()==DAYLIGHT_BRIGHT&&displayMessage(" Bright sunlight streams in from the windows bathing the room in light."),displayMessageP(" The room contains a large bed and dresser, on top of which sits a large television. A small washroom and closet are also here. The door to the hallway lies to the north.")),"north"==this.facing&&(displayMessageP("The room contains a large bed and dresser, on top of which sits a large television. A small washroom and closet are also here. The door to the hallway lies to the sout
h."),displayMessageP("Out the windows, you see the path to the park."))}}for(var o in room.Nowhere=new GenericRoom("Nowhere"),room.FrontSteps=new GenericRoom("Front Steps"),room.FrontSteps.synonyms=["front steps","front door","parking lot"],room.FrontSteps.indoors=!1,room.FrontSteps.north={nextroom:"Lobby"},room.FrontSteps.up={nextroom:"Lobby"},room.FrontSteps.south={errorMsg:"How could you even think of deserting your case? Get back in the game!"},room.FrontSteps.east={errorMsg:"How could you even think of deserting your case? Get back in the game!"},room.FrontSteps.west={errorMsg:"How could you even think of deserting your case? Get back in the game!"},room.FrontSteps.sw={errorMsg:"How could you even think of deserting your case? Get back in the game!"},room.FrontSteps.se={errorMsg:"How could you even think of deserting your case? Get back in the game!"},room.FrontSteps.line="LineHotelFloor1Main",room.FrontSteps.station="FrontSteps",room.FrontSteps.corridor=COR_NONE,room.FrontSteps.globals=["Flowers","Stai
rs","Dirt","FrontDoors"],room.FrontSteps.describe=function(){displayMessageP("You are at the front steps of the Happyland resort hotel. Large, colourful flowers attract your attention \n    to the planters along the stairs. At the top of the steps, to the north, are large sliding glass doors that will admit you into the building. \n    To the south is an empty parking lot.")},room.FrontSteps.smell=function(){displayMessageP("You smell adventure up ahead!")},room.Lobby=new GenericRoom("Lobby"),room.Lobby.synonyms=["lobby","entrance"],room.Lobby.north={nextroom:"GrandHall"},room.Lobby.south={nextroom:"FrontSteps"},room.Lobby.east={nextroom:"SecurityDesk"},room.Lobby.west={nextroom:"Reception"},room.Lobby.line="LineHotelFloor1Main",room.Lobby.station="Lobby",room.Lobby.corridor=COR_FRONT,room.Lobby.globals=["Window","Floor","ReceptionCounter","Pillars","Sofas","Chandelier","Ceiling","Nook","Lobby","FrontDoors"],room.Lobby.smell=function(){displayMessageP("You smell a freshness to the air, that's hard to place.
If buildings wore perfume, they would smell like this.")},room.Lobby.describe=function(){displayMessage("The lobby is a large room with shiny marble floors and polished stone pillars supporting a very high ceiling."),getDaylight()==DAYLIGHT_BRIGHT?displayMessage(" Sunlight floods the room from the glass doors to the south. "):displayMessageP(" A massive chandelier above brightens the room. "),displayMessage("In the middle of the room is a seating area with comfortable sofas and a coffee table. You can go west to the reception area behind a mahogany counter. "),"Lobby"==here&&displayMessageP("Off to the east, you see a nook. The lobby continues north."),isInRoom("Ally","Reception")&&isInRoom("Ken","Reception")?objs.Ally.isTouched()?displayMessage("Ally and Ken are off to the west, by the reception counter. "):displayMessage("Ken is off to the west, by the reception counter talking to a very attractive receptionist. "):isInRoom("Ally","Reception")&&objs.Ally.isTouched()&&displayMessage("Ally is off to the west
, behind the reception counter. "),isInRoom("Ken","SecurityDesk")&&isInRoom("Baxter","SecurityDesk")?displayMessage("Ken and Mr. Baxter are off to the east, in the security nook. "):isInRoom("Ken","SecurityDesk")&&objs.Ken.isTouched()&&displayMessage("Ken is off to the east, in the security nook. ")},room.GrandHall=new GenericRoom("Grand Hall"),room.GrandHall.synonyms=["grand hall"],room.GrandHall.north={nextroom:"PathToPark",door:"ParkGlassDoors"},room.GrandHall.south={nextroom:"Lobby"},room.GrandHall.west={nextroom:"Elevator1"},room.GrandHall.east={nextroom:"Hall12"},room.GrandHall.line="LineHotelFloor1Main",room.GrandHall.station="GrandHall",room.GrandHall.towardLine={LineHotelToPark:"north",LineShed:"north",LineElevator:"west"},room.GrandHall.smell=function(){displayMessageP("The flowers and fountain add a tropical scent to the room.")},room.GrandHall.corridor=COR_FRONT|COR_EW1,room.GrandHall.globals=["Water","Flowers","Floor","Dirt","Window"],room.GrandHall.describe=function(){this.isTouched()||displayM
essage("As you walk into the room, you feel the air cool and become more humid. "),displayMessageP("A fountain dominates the center of this room. The water's gurgle dampens the echoes of your\n        footsteps on the marble floor. Flowers around the edge of the fountain add a splash of color to the gray stonework.\n        You can imagine this room being a hub of activity when the resort opens. To the south lies the \n        hotel lobby. An elevator catches your eye to the west. A sign above the glass doors to the north indicates the way to the park. A long hall \n        continues eastward.")},room.BallroomFoyer=new GenericRoom("Ballroom Foyer"),room.BallroomFoyer.synonyms=["foyer","ballroom foyer","outside the ballroom"],room.BallroomFoyer.west={nextroom:"Hall12"},room.BallroomFoyer.north={nextroom:"BallroomStairsBottom"},room.BallroomFoyer.east={nextroom:"Ballroom"},room.BallroomFoyer.line="LineHotelFloor1Main",room.BallroomFoyer.station="BallroomFoyer",room.BallroomFoyer.towardLine={LineHotelFloor2Main
:"north",LineStaffQuarters:"north"},room.BallroomFoyer.corridor=COR_EW1,room.BallroomFoyer.globals=["Floor"],room.BallroomFoyer.describe=function(){displayMessageP("This is a large open space where people can schmooze and mingle with cocktails, caviar, and cigarettes. \n        A large doorway to the east invites you into the ballroom while a long hallway stretches west. Off to the north, you see a\n        large staircase that spills into the room.")},room.Ballroom=new GenericRoom("Ballroom"),room.Ballroom.synonyms=["ballroom","salon a","ball room"],room.Ballroom.west={nextroom:"BallroomFoyer"},room.Ballroom.out={nextroom:"BallroomFoyer"},room.Ballroom.line="LineHotelFloor1Main",room.Ballroom.station="BallroomFoyer",room.Ballroom.corridor=COR_NONE,room.Ballroom.globals=["Floor"],room.Ballroom.describe=function(){displayMessageP("The ballroom is a massive room suitable for weddings, conferences, and the like. \n        At the moment, it's been transformed into a modern office, complete with desks, telephones
,  \n        a filing cabinet, and a photocopier machine. The room's only exit is to the west.")},room.Ballroom.smell=function(){displayMessageP("You detect an odor of perfume.")},room.Hall12=new GenericRoom("Hallway"),room.Hall12.synonyms=["Hal12","first floor hallway"],room.Hall12.east={nextroom:"BallroomFoyer"},room.Hall12.west={nextroom:"GrandHall"},room.Hall12.north={nextroom:"Lounge"},room.Hall12.south={nextroom:"Restaurant",door:"RestaurantDoor"},room.Hall12.line="LineHotelFloor1Main",room.Hall12.station="Hall12",room.Hall12.corridor=COR_EW1,room.Hall12.globals=["Floor"],room.Hall12.describe=function(){displayMessageP("You're in the middle of a long east-west marble-floored hallway. Off to the east, you see an open area in front of a large doorway.\n        To the north is the lounge. An empty restaurant lies to the south, its lights off and doorway locked. \n        To the west you see the fountain of the Grand Hall.")},room.Restaurant=new GenericRoom("Restaurant"),room.Restaurant.synonyms=["restaura
nt","cafe","dining room"],room.Restaurant.north={nextroom:"Hall12",door:"RestaurantDoor"},room.Restaurant.line="LineHotelFloor1Main",room.Restaurant.station="Hall12",room.Restaurant.corridor=COR_NONE,room.Restaurant.globals=["Floor","LoungeTable","Chair"],room.Restaurant.describe=function(){displayMessageP("The lights are out and the stale smell tells you that this room has been unused for some time. \n        The only light is from the open door to the north. As far as you can make out the tables and chairs have all been pushed aside and stacked along the east wall.")},room.Restaurant.smell=function(){displayMessageP("The air smells stale.")},room.PathToPark=new GenericRoom("Flower Path"),room.PathToPark.synonyms=["flower path","path","path to park","walkway to park","walkway"],room.PathToPark.indoors=!1,room.PathToPark.west={nextroom:"Joyville"},room.PathToPark.ne={nextroom:"Shed"},room.PathToPark.south={nextroom:"GrandHall"},room.PathToPark.line="LineHotelToPark",room.PathToPark.station="PathToPark",room.
PathToPark.corridor=COR_NONE,room.PathToPark.towardLine={LineHotelFloor1Main:"south",LineHotelFloor2Main:"south",LineShed:"ne",LineStaffQuarters:"south",LineElevator:"south"},room.PathToPark.smell=function(){displayMessageP("The air is thick with the aroma of fresh flowers. Good thing you don't have any alergies.")},room.PathToPark.precheck=function(e,o,s){return"Player"!=e||0!=state.debrief_step||(displayMessageP("The sliding glass doors are locked."),!1)},room.PathToPark.globals=["Flowers","HedgeDoorway","Bushes","Dirt"],room.PathToPark.describe=function(){displayMessage("You are on a path between the hotel and the park. Both sides \n         of the path are lined with flower beds filled with the most vibrant colors you've ever \n         seen. The tall, trimmed hedges behind the flower beds add to the illusion that you're \n         walking down a tunnel to a magical land. Grandma would love to see this. "),displayMessage("GrandHall"==prevRoom?"The path ahead veers toward the west, although there appears
to be an open doorway inside the hedge to the northeast. You can return to the hotel by going south. ":"This path can take you south, back to the hotel or westward, toward Joyville. In addition, there appears to be an open doorway inside the hedge to the northeast. "),state.flowerTaken&&displayMessage("Some ditz has messed up one of the flower beds."),displayMessageP("")},room.Lounge=new GenericRoom("Lounge"),room.Lounge.synonyms=["lounge"],room.Lounge.south={nextroom:"Hall12"},room.Lounge.line="LineHotelFloor1Main",room.Lounge.station="Hall12",room.Lounge.corridor=COR_NONE,room.Lounge.globals=["Floor","Bar","Barstools","DisplayCabinet","LoungeTable"],room.Lounge.describe=function(){displayMessageP("The lounge is a dimly lit room with hardwood floors, wood panelled walls, and rich colored fabrics on \n        the chairs and sofas. An empty bar with barstools lies along the east wall. A baby grand piano sits quietly in the corner; the \n        hall is accessible to the south.")},room.Lounge.smell=function(){
displayMessageP("This bar doesn't smell like most of the bars you've been in. Maybe it's the lack of recent use or maybe this is a more upscale place than you're used to.")},room.Reception=new GenericRoom("Reception"),room.Reception.synonyms=["reception","front desk","front counter","reception desk","ally's desk"],room.Reception.east={nextroom:"Lobby"},room.Reception.north={errorMsg:"The only way out of the reception area is east."},room.Reception.south={errorMsg:"The only way out of the reception area is east."},room.Reception.west={errorMsg:"The only way out of the reception area is east."},room.Reception.ne={errorMsg:"The only way out of the reception area is east."},room.Reception.se={errorMsg:"The only way out of the reception area is east."},room.Reception.nw={errorMsg:"The only way out of the reception area is east."},room.Reception.se={errorMsg:"The only way out of the reception area is east."},room.Reception.line="LineHotelFloor1Main",room.Reception.station="Lobby",room.Reception.corridor=COR_NONE,r
oom.Reception.globals=["Floor","ReceptionCounter","Chandelier","Lobby"],room.Reception.describe=function(){displayMessage("A red carpet and brass posts with velvet ropes guide you to the reception desk. Here, you see \n        a long mahogany counter whose polished surface reflects "),getDaylight()==DAYLIGHT_BRIGHT?displayMessageP("the daylight streaming in from the glass lobby doors."):displayMessageP("the light from the chandelier above.")},room.Reception.smell=function(){displayMessageP("You smell a freshness to the air, that's hard to place. If buildings wore perfume, they would smell like this.")},room.SecurityDesk=new GenericRoom("Security Nook"),room.SecurityDesk.synonyms=["security nook","security area","nook"],room.SecurityDesk.west={nextroom:"Lobby"},room.SecurityDesk.north={errorMsg:"The only way out of the security area is west."},room.SecurityDesk.south={errorMsg:"The only way out of the security area is west."},room.SecurityDesk.east={errorMsg:"The only way out of the security area is west."},r
oom.SecurityDesk.ne={errorMsg:"The only way out of the security area is west."},room.SecurityDesk.se={errorMsg:"The only way out of the security area is west."},room.SecurityDesk.nw={errorMsg:"The only way out of the security area is west."},room.SecurityDesk.se={errorMsg:"The only way out of the security area is west."},room.SecurityDesk.line="LineHotelFloor1Main",room.SecurityDesk.station="Lobby",room.SecurityDesk.corridor=COR_NONE,room.SecurityDesk.globals=["Floor","Chandelier","Chair","Nook","Lobby"],room.SecurityDesk.describe=function(){displayMessageP("The security area is a nook on the east wall of the lobby. It contains a \n        table with a couple of chairs in front of an alarm panel built into the wall.")},room.Reception.smell=function(){displayMessageP("You smell a hint of cheap cologne in the air. Ken is probably not the righteous dude he thinks he is.")},room.Elevator1=new GenericRoom("Elevator (first floor)"),room.Elevator1.synonyms=["elevator"],room.Elevator1.east={nextroom:"GrandHall"},roo
m.Elevator1.out={nextroom:"GrandHall"},room.Elevator1.up={nextroom:"Elevator2"},room.Elevator1.down={errorMsg:"You're already on the ground floor."},room.Elevator1.elevator=!0,room.Elevator1.precheck=attemptElevatorEntry,room.Elevator1.leaveRoom=leaveElevator,room.Elevator1.line="LineElevator",room.Elevator1.station="Elevator1",room.Elevator1.corridor=COR_NONE,room.Elevator1.towardLine={LineHotelFloor1Main:"east",LineHotelToPark:"east",LineShed:"east",LineStaffQuarters:"east"},room.Elevator1.globals=["Floor","ElevatorButton"],room.Elevator1.describe=function(){displayMessageP("You're in the elevator, currently stopped on the first floor.<br>The walls are painted with a collage \n        of smiling faces. There's a button for each of the five floors."),state.hintFirstElevatorRide&&(state.hintFirstElevatorRide=!1,displayMessageP("HINT: type <i>up</i> or <i>down</i> to move up or down in the elevator."))},room.Elevator2=new GenericRoom("Elevator (second floor)"),room.Elevator2.synonyms=["elevator2"],room.Elevat
or2.east={nextroom:"Hall21"},room.Elevator2.out={nextroom:"Hall21"},room.Elevator2.down={nextroom:"Elevator1"},room.Elevator2.up={nextroom:"Elevator3"},room.Elevator2.elevator=!0,room.Elevator2.precheck=attemptElevatorEntry,room.Elevator2.leaveRoom=leaveElevator,room.Elevator2.line="LineElevator",room.Elevator2.station="Elevator2",room.Elevator2.corridor=COR_NONE,room.Elevator2.towardLine={LineHotelFloor2Main:"east"},room.Elevator2.globals=["Floor","ElevatorButton"],room.Elevator2.describe=function(){displayMessageP("You're in the elevator, currently stopped on the second floor.<br>The walls are painted with a collage \n        of smiling faces. There's a button for each of the five floors."),state.hintFirstElevatorRide&&(state.hintFirstElevatorRide=!1,displayMessageP("HINT: type <i>up</i> or <i>down</i> to move up or down in the elevator."))},room.Elevator3=new GenericRoom("Elevator (third floor)"),room.Elevator3.synonyms=["elevator3"],room.Elevator3.east={nextroom:"Hall31"},room.Elevator3.out={nextroom:"Ha
ll31"},room.Elevator3.down={nextroom:"Elevator2"},room.Elevator3.up={nextroom:"Elevator4"},room.Elevator3.elevator=!0,room.Elevator3.precheck=attemptElevatorEntry,room.Elevator3.leaveRoom=leaveElevator,room.Elevator3.line="LineElevator",room.Elevator3.station="Elevator3",room.Elevator3.corridor=COR_NONE,room.Elevator3.towardLine={},room.Elevator3.globals=["Floor","ElevatorButton"],room.Elevator3.describe=function(){displayMessageP("You're in the elevator, currently stopped on the third floor.<br>The walls are painted with a collage \n        of smiling faces. There's a button for each of the five floors.")},room.Elevator4=new GenericRoom("Elevator (fourth floor)"),room.Elevator4.synonyms=["elevator4"],room.Elevator4.east={nextroom:"Hall41"},room.Elevator4.out={nextroom:"Hall41"},room.Elevator4.down={nextroom:"Elevator3"},room.Elevator4.up={nextroom:"Elevator5"},room.Elevator4.elevator=!0,room.Elevator4.precheck=attemptElevatorEntry,room.Elevator4.leaveRoom=leaveElevator,room.Elevator4.line="LineElevator",roo
m.Elevator4.station="Elevato4",room.Elevator4.corridor=COR_NONE,room.Elevator4.globals=["Floor","ElevatorButton"],room.Elevator4.describe=function(){displayMessageP("You're in the elevator, currently stopped on the fourth floor.<br>The walls are painted with a collage \n        of smiling faces. There's a button for each of the five floors.")},room.Elevator5=new GenericRoom("Elevator (fifth floor)"),room.Elevator5.synonyms=["elevator5"],room.Elevator5.east={nextroom:"Hall51"},room.Elevator5.out={nextroom:"Hall51"},room.Elevator5.down={nextroom:"Elevator4"},room.Elevator5.up={errorMsg:"You're already at the top floor."},room.Elevator5.elevator=!0,room.Elevator5.precheck=attemptElevatorEntry,room.Elevator5.leaveRoom=leaveElevator,room.Elevator5.line="LineElevator",room.Elevator5.station="Elevator5",room.Elevator5.corridor=COR_NONE,room.Elevator5.globals=["Floor","ElevatorButton"],room.Elevator5.describe=function(){displayMessageP("You're in the elevator, currently stopped on the fifth floor.<br>The walls are p
ainted with a collage \n        of smiling faces. There's a button for each of the five floors.")},room.Hall31=new GenericRoom("Empty Floor"),room.Hall31.synonyms=["hall31"],room.Hall31.fumigated=!0,room.Hall31.west={nextroom:"Elevator3"},room.Hall31.east={errorMsg:"It's probably not a good idea to go into a space with toxic fumes."},room.Hall31.line="LineElevator",room.Hall31.station="Elevator3",room.Hall31.corridor=COR_NONE,room.Hall31.globals=["Floor","Wainscoting","Wallpaper","PotLights"],room.Hall31.describe=function(){displayMessageP("The light in the corridor is very dim, but enough for you to make out a large plastic sheet that blocks your way. \n        A sign on the sheet tells you to keep out because fumigation is in progress.")},room.Hall31.smell=function(){displayMessageP("The fumigation gas smells like formaldehyde.")},room.Hall41=new GenericRoom("Empty Floor"),room.Hall41.synonyms=["hall41"],room.Hall41.fumigated=!0,room.Hall41.west={nextroom:"Elevator4"},room.Hall41.east={errorMsg:"It's proba
bly not a good idea to go into a space with toxic fumes."},room.Hall41.line="LineElevator",room.Hall41.station="Elevator4",room.Hall41.corridor=COR_NONE,room.Hall41.globals=["Floor","Wainscoting","Wallpaper","PotLights"],room.Hall41.describe=function(){displayMessageP("The light in the corridor is very dim, but enough for you to make out a large plastic sheet that blocks your way. \n        A sign on the sheet tells you to keep out because fumigation is in progress.")},room.Hall41.smell=function(){displayMessageP("The fumigation gas smells like formaldehyde.")},room.Hall51=new GenericRoom("Empty Floor"),room.Hall51.synonyms=["hall51"],room.Hall51.fumigated=!0,room.Hall51.west={nextroom:"Elevator5"},room.Hall51.east={errorMsg:"It's probably not a good idea to go into a space with toxic fumes."},room.Hall51.line="LineElevator",room.Hall51.station="Hall51",room.Hall51.globals=["Floor","Wainscoting","Wallpaper","PotLights"],room.Hall51.corridor=COR_NONE,room.Hall51.describe=function(){displayMessageP("The light
in the corridor is very dim, but enough for you to make out a large plastic sheet that blocks your way. \n        A sign on the sheet tells you to keep out because fumigation is in progress.")},room.Hall51.smell=function(){displayMessageP("The fumigation gas smells like formaldehyde.")},room.BallroomStairsBottom=new GenericRoom("Bottom of the Ballroom Stairs"),room.BallroomStairsBottom.synonyms=["ballroom stairs","stairs","bottom of stairs","bottom of ballroom stairs"],room.BallroomStairsBottom.south={nextroom:"BallroomFoyer"},room.BallroomStairsBottom.up={nextroom:"BallroomStairsTop"},room.BallroomStairsBottom.north={nextroom:"StaffQuarters",door:"StaffRoomDoor"},room.BallroomStairsBottom.line="LineStaffQuarters",room.BallroomStairsBottom.towardLine={LineHotelFloor1Main:"south",LineHotelFloor2Main:"up",LineHotelToPark:"south",LineShed:"south",LineStaffQuarters:"north",LineElevator:"south"},room.BallroomStairsBottom.station="BallroomStairsBottom",room.BallroomStairsBottom.corridor=COR_NONE,room.BallroomStair
sBottom.globals=["Floor","Stairs"],room.BallroomStairsBottom.describe=function(){displayMessageP("You're at the bottom of a large red carpeted staircase that spills out into the ballroom \n        foyer to your south. The staircase curves out of view above you. You can easily picture movie stars and celebrities making a grand entrance down the stairs \n        amidst flashing cameras. There is a door under the stairs on the north wall.")},room.StaffQuarters=new GenericRoom("Staff Room"),room.StaffQuarters.synonyms=["staff quarters","staff room","staff area"],room.StaffQuarters.west={nextroom:"KensRoom",door:"KensRoomDoor"},room.StaffQuarters.north={nextroom:"IvansRoom",door:"IvansRoomDoor"},room.StaffQuarters.east={nextroom:"CoopersRoom",door:"CoopersRoomDoor"},room.StaffQuarters.ne={nextroom:"AllysRoom",door:"AllysRoomDoor"},room.StaffQuarters.south={nextroom:"BallroomStairsBottom",door:"StaffRoomDoor"},room.StaffQuarters.nw={nextroom:"EvasRoom",door:"EvasRoomDoor"},room.StaffQuarters.globals=["Floor","Sink
"],room.StaffQuarters.line="LineStaffQuarters",room.StaffQuarters.station="StaffQuarters",room.StaffQuarters.corridor=COR_NONE,room.StaffQuarters.describe=function(){displayMessageP("You're in the staff's break room. There's a fridge and sink here. The staff members' \n        bedrooms are all accessible from this room. A sign on each door indicates the occupant of each bedroom:  \n        Ivan's room is to the north; Mr. Cooper's room is to the east; \n        Ken's room is to the west, Eva's room is to the northwest; \n        Ally's room is to the northeast. The door to the south will take you back to the Ballroom Foyer.")},room.IvansRoom=new GenericRoom("Ivan's room"),room.IvansRoom.synonyms=["ivan's room","ivan's bedroom"],room.IvansRoom.south={nextroom:"StaffQuarters",door:"IvansRoomDoor"},room.IvansRoom.out={nextroom:"StaffQuarters",door:"IvansRoomDoor"},room.IvansRoom.line="LineStaffQuarters",room.IvansRoom.station="StaffQuarters",room.IvansRoom.corridor=COR_NONE,room.IvansRoom.globals=["RoomCloset",
"Floor","Window"],room.IvansRoom.describe=function(){displayMessageP("This is Ivan's small and spartan bedroom. \n        A single bed lies under a tiny window, a night table with a drawer sits next to the bed, and the door is to the south.")},room.IvansRoom.smell=function(){displayMessageP("There is a faint earthy, leafy odor.")},room.CooksRoom=new GenericRoom("Cook's room"),room.CooksRoom.synonyms=["cook's room","gaston's room","cook's bedroom","gaston's bedroom"],room.CooksRoom.sw={nextroom:"StaffQuarters",door:"CooksRoomDoor"},room.CooksRoom.out={nextroom:"StaffQuarters",door:"CooksRoomDoor"},room.CooksRoom.line="LineStaffQuarters",room.CooksRoom.station="StaffQuarters",room.CooksRoom.corridor=COR_NONE,room.CooksRoom.describe=function(){displayMessageP("These are the cook's quarters. It is a small and spartan room. \n        A single bed lies under a tiny window. A night table with a drawer sits next to the bed.")},room.CooksRoom.globals=["RoomCloset","Floor","Window"],room.CoopersRoom=new GenericRoom("C
ooper's room"),room.CoopersRoom.synonyms=["cooper's room","cooper's bedroom","mr cooper's room","mr cooper's bedroom"],room.CoopersRoom.west={nextroom:"StaffQuarters",door:"CoopersRoomDoor"},room.CoopersRoom.out={nextroom:"StaffQuarters",door:"CoopersRoomDoor"},room.CoopersRoom.line="LineStaffQuarters",room.CoopersRoom.station="StaffQuarters",room.CoopersRoom.corridor=COR_NONE,room.CoopersRoom.globals=["RoomCloset","Floor","Window"],room.CoopersRoom.describe=function(){displayMessageP("This is Mr. Cooper's small and spartan bedroom. \n        A single bed lies under a tiny window, a night table with a drawer sits next to the bed, and the door is to the west.")},room.AllysRoom=new GenericRoom("Ally's room"),room.AllysRoom.synonyms=["ally's room","ally's bedroom"],room.AllysRoom.sw={nextroom:"StaffQuarters",door:"AllysRoomDoor"},room.AllysRoom.out={nextroom:"StaffQuarters",door:"AllysRoomDoor"},room.AllysRoom.line="LineStaffQuarters",room.AllysRoom.station="StaffQuarters",room.AllysRoom.corridor=COR_NONE,room.
AllysRoom.describe=function(){displayMessageP("This is Ally's small and spartan bedroom. \n        A single bed lies under a tiny window, a night table with a drawer sits next to the bed, and the door is to the southwest.")},room.AllysRoom.globals=["RoomCloset","Floor","Window"],room.EvasRoom=new GenericRoom("Eva's room"),room.EvasRoom.synonyms=["maid's room","eva's room","maid's bedroom","eva's bedroom"],room.EvasRoom.se={nextroom:"StaffQuarters",door:"EvasRoomDoor"},room.EvasRoom.out={nextroom:"StaffQuarters",door:"EvasRoomDoor"},room.EvasRoom.line="LineStaffQuarters",room.EvasRoom.station="StaffQuarters",room.EvasRoom.corridor=COR_NONE,room.EvasRoom.describe=function(){displayMessageP("This is Eva's small and spartan bedroom. \n        A single bed lies under a tiny window, a night table with a drawer sits next to the bed, and the door is to the southeast.")},room.EvasRoom.globals=["RoomCloset","Floor","Window"],room.BartendersRoom=new GenericRoom("Bartender's room"),room.BartendersRoom.synonyms=["bartend
er's room","henry's room","bartender's bedroom","henry's bedroom"],room.BartendersRoom.east={nextroom:"StaffQuarters",door:"BartendersRoomDoor"},room.BartendersRoom.out={nextroom:"StaffQuarters",door:"BartendersRoomDoor"},room.BartendersRoom.line="LineStaffQuarters",room.BartendersRoom.station="StaffQuarters",room.BartendersRoom.corridor=COR_NONE,room.BartendersRoom.describe=function(){displayMessageP("These are the bartender's quarters. It is a small and spartan room. \n        A single bed lies under a tiny window. A night table with a drawer sits next to the bed.")},room.BartendersRoom.globals=["RoomCloset","Floor","Window"],room.KensRoom=new GenericRoom("Ken's room"),room.KensRoom.synonyms=["ken's room","ken's bedroom"],room.KensRoom.east={nextroom:"StaffQuarters",door:"KensRoomDoor"},room.KensRoom.out={nextroom:"StaffQuarters",door:"KensRoomDoor"},room.KensRoom.line="LineStaffQuarters",room.KensRoom.station="StaffQuarters",room.KensRoom.corridor=COR_NONE,room.KensRoom.describe=function(){displayMessageP
("This is Ken's small and spartan bedroom. \n        A single bed lies under a tiny window, a night table with a drawer sits next to the bed, and the door is to the east.")},room.KensRoom.globals=["RoomCloset","Floor","Window"],room.BallroomStairsTop=new GenericRoom("Top of the Ballroom Stairs"),room.BallroomStairsTop.synonyms=["top of stairs","top of ballroom stairs"],room.BallroomStairsTop.south={nextroom:"Hall25"},room.BallroomStairsTop.down={nextroom:"BallroomStairsBottom"},room.BallroomStairsTop.line="LineHotelFloor2Main",room.BallroomStairsTop.station="BallroomStairsTop",room.BallroomStairsTop.globals=["Stairs","Floor"],room.BallroomStairsTop.corridor=COR_NONE,room.BallroomStairsTop.describe=function(){room.BallroomStairsBottom.isTouched()?displayMessage("A majestic red staircase curves as it descends to the ballroom area below. "):displayMessage("A majestic red staircase curves as it descends to the floor below. "),displayMessageP("The main second-floor hallway lies to the south.")},room.Hall21=new Ge
nericRoom("West end of Hallway"),room.Hall21.synonyms=["hall21"],room.Hall21.north={nextroom:"Room201",door:"Door201"},room.Hall21.east={nextroom:"Hall22"},room.Hall21.south={nextroom:"StorageCloset2",door:"StorageCloset2Door"},room.Hall21.west={nextroom:"Elevator2"},room.Hall21.line="LineHotelFloor2Main",room.Hall21.station="Hall21",room.Hall21.corridor=COR_EW2,room.Hall21.globals=["Floor","Wainscoting","Wallpaper","PotLights"],room.Hall21.describe=function(){displayMessageP("You are at the west end of a very long corridor. A plush, patterned \n        carpet gently cushions your steps. The bottom of the walls are adorned with \n        wainscoting, the top with a beige grasscloth wallpaper. Pot lights above \n        add just the right amount of brightness to the windowless hallway. The elevator to the west will take you back downstairs. \n        Room 201 is to your north and a storage closet is to your south.")},room.Hall22=new GenericRoom("Hallway (between rooms 202 and 203)"),room.Hall22.synonyms=["hal
l22"],room.Hall22.north={nextroom:"Room203",door:"Door203"},room.Hall22.east={nextroom:"Hall23"},room.Hall22.south={nextroom:"Room202",door:"Door202"},room.Hall22.west={nextroom:"Hall21"},room.Hall22.line="LineHotelFloor2Main",room.Hall22.station="Hall22",room.Hall22.corridor=COR_EW2,room.Hall22.globals=["Floor","Wainscoting","Wallpaper","PotLights"],room.Hall22.describe=function(){displayMessageP("You are near the west end of a very long east-west corridor. A plush, patterned \n    carpet gently cushions your steps. The bottom of the walls are adorned with \n    wainscoting, the top with a beige grasscloth wallpaper. Pot lights above \n    add just the right amount of brightness to the windowless hallway. Room 202 is to your south and room 203 is to the north.")},room.Hall23=new GenericRoom("Hallway (between rooms 204 and 205)"),room.Hall23.synonyms=["hall23","upstairs hallway"],room.Hall23.north={nextroom:"Room205",door:"Door205"},room.Hall23.east={nextroom:"Hall24"},room.Hall23.south={nextroom:"Room204",d
oor:"Door204"},room.Hall23.west={nextroom:"Hall22"},room.Hall23.line="LineHotelFloor2Main",room.Hall23.station="Hall23",room.Hall23.globals=["Floor","Wainscoting","Wallpaper","PotLights"],room.Hall23.corridor=COR_EW2,room.Hall23.describe=function(){displayMessageP("You are in the middle of a very long east-west corridor. A plush, patterned \n    carpet gently cushions your steps. The bottom of the walls are adorned with \n    wainscoting, the top with a beige grasscloth wallpaper. Pot lights above  \n    add just the right amount of brightness to the windowless hallway. Room 204 is to your south and room 205 is to the north.")},room.Hall24=new GenericRoom("Hallway (between rooms 206 and 207)"),room.Hall24.synonyms=["hall24"],room.Hall24.north={nextroom:"Room207",door:"Door207"},room.Hall24.east={nextroom:"Hall25"},room.Hall24.south={nextroom:"Room206",door:"Door206"},room.Hall24.west={nextroom:"Hall23"},room.Hall24.line="LineHotelFloor2Main",room.Hall24.station="Hall24",room.Hall24.globals=["Floor","Wainscot
ing","Wallpaper","PotLights"],room.Hall24.corridor=COR_EW2,room.Hall24.describe=function(){displayMessageP("You are near the east end of a very long east-west corridor. A plush, patterned \n    carpet gently cushions your steps. The bottom of the walls are adorned with \n    wainscoting, the top with a beige grasscloth wallpaper. Pot lights above \n    add just the right amount of brightness to the windowless hallway. Room 206 is to your south and room 207 is to the north.")},room.Hall25=new GenericRoom("East end of Hallway"),room.Hall25.synonyms=["hall25"],room.Hall25.north={nextroom:"BallroomStairsTop"},room.Hall25.east={nextroom:"SalonC",door:"DoorSalonC"},room.Hall25.south={nextroom:"SalonB",door:"DoorSalonB"},room.Hall25.west={nextroom:"Hall24"},room.Hall25.line="LineHotelFloor2Main",room.Hall25.station="Hall24",room.Hall25.globals=["Floor","Wainscoting","Wallpaper","PotLights"],room.Hall25.corridor=COR_EW2,room.Hall25.describe=function(){displayMessageP('You are at the east end of a very long east-west
corridor. A plush, patterned \n    carpet gently cushions your steps. The bottom of the walls are adorned with \n    wainscoting, the top with a beige grasscloth wallpaper. An elegant stairway to the north\n    will take you downstairs. A door to the east is marked "Salon C"; a door to the south \n    is marked "Salon B."')},e(201,!0,"Hall21"),e(203,!0,"Hall22"),e(205,!0,"Hall23"),e(207,!0,"Hall24"),e(202,!1,"Hall22"),e(204,!1,"Hall23"),e(206,!1,"Hall24"),room.SalonC=new GenericRoom("Salon C"),room.SalonC.synonyms=["salon c","cfo's office"],room.SalonC.west={nextroom:"Hall25"},room.SalonC.out={nextroom:"Hall25"},room.SalonC.article="",room.SalonC.line="LineHotelFloor2Main",room.SalonC.station="Hall25",room.SalonC.corridor=COR_NONE,room.SalonC.globals=["Floor","Window","Chair"],room.SalonC.describe=function(){displayMessageP("You are in one of the hotel's conference rooms, Salon C, which \n            has been turned into an office for Mr. Baxter. A large desk sits in the middle of the \n            room and
a filing cabinet rests along the north wall. The south wall is filled with large posters depicting what \n            the Happyland theme park will look like. A large window fills the east wall and the door lies to the west.")},room.SalonB=new GenericRoom("Salon B"),room.SalonB.synonyms=["salon b","ceo's office"],room.SalonB.north={nextroom:"Hall25"},room.SalonB.out={nextroom:"Hall25"},room.SalonB.article="",room.SalonB.line="LineHotelFloor2Main",room.SalonB.station="Hall25",room.SalonB.corridor=COR_NONE,room.SalonB.globals=["Floor","Window","Chair"],room.SalonB.describe=function(){displayMessageP("You are in Salon B, which has been turned into a temporary office for Mr Franks. \n        A bare desk sits in the middle of the room. A window looks out to the south and the door is to your north.")},room.StorageCloset2=new GenericRoom("Second Floor Storage Closet"),room.StorageCloset2.synonyms=["storage closet","upstairs closet","closet"],room.StorageCloset2.north={nextroom:"Hall21"},room.StorageCloset2.out={ne
xtroom:"Hall21"},room.StorageCloset2.south={errorMsg:"The only way out is to the north."},room.StorageCloset2.east={errorMsg:"The only way out is to the north."},room.StorageCloset2.west={errorMsg:"The only way out is to the north."},room.StorageCloset2.ne={errorMsg:"The only way out is to the north."},room.StorageCloset2.nw={errorMsg:"The only way out is to the north."},room.StorageCloset2.se={errorMsg:"The only way out is to the north."},room.StorageCloset2.sw={errorMsg:"The only way out is to the north."},room.StorageCloset2.line="LineHotelFloor2Main",room.StorageCloset2.station="Hall21",room.StorageCloset2.corridor=COR_NONE,room.StorageCloset2.globals=["Floor"],room.StorageCloset2.describe=function(){displayMessageP("This small room contains some cleaning supplies, a mop, and a vacuum.")},room.Shed=new GenericRoom("Shed"),room.Shed.synonyms=["shed"],room.Shed.sw={nextroom:"PathToPark"},room.Shed.out={nextroom:"PathToPark"},room.Shed.line="LineHotelToPark",room.Shed.station="PathToPark",room.Shed.corridor
=COR_NONE,room.Shed.globals=["Floor","Bushes","HedgeDoorway"],room.Shed.describe=function(){displayMessageP("\n                    You are inside a large shed, cleverly hidden behind a hedge. A large shelving system organizes gardening supplies and tools.")},room.Shed.smell=function(){displayMessageP("The air is thick with a natural, earthy smell.")},room.Joyville=new GenericRoom("Joyville"),room.Joyville.synonyms=["joyville","theme park"],room.Joyville.indoors=!1,room.Joyville.east={nextroom:"PathToPark"},room.Joyville.nw={nextroom:"CrashSite"},room.Joyville.north={nextroom:"MechanicalRoom"},room.Joyville.article="",room.Joyville.line="LineHotelToPark",room.Joyville.station="Joyville",room.Joyville.corridor=COR_NONE,room.Joyville.globals=["Floor","Bushes"],room.Joyville.describe=function(){displayMessageP("\n                    You are in a large circular area reminiscent of a state fair. Amongst the bushes that surround the area are food stands and traditional carnival games, \n                    all of w
hich are currently closed.\n                    There are picnic tables set up under a canopy. To the northwest you spot the path to the Megacoaster. Next to the path is a little booth with \n                    a control panel, presumably used to control the ride. Going east will take you back to the flower path and the hotel."),objs.Generator.isTouched()&&!room.MechanicalRoom.isTouched()&&displayMessageP("Apparently you can go north through the bushes to the generator.")},room.Joyville.smell=function(){displayMessageP("You smell the possibility of fun in the air, or maybe it's just the lingering odor of stale junk food.")},room.MechanicalRoom=new GenericRoom("Mechanical Room"),room.MechanicalRoom.synonyms=["mechanical room","ride electrical room"],room.MechanicalRoom.south={nextroom:"Joyville"},room.MechanicalRoom.east={nextroom:"AmongBushes"},room.MechanicalRoom.line="LineHotelToPark",room.MechanicalRoom.station="MechanicalRoom",room.MechanicalRoom.globals=["Floor","Bushes"],room.MechanicalRoom.corridor=C
OR_NONE,room.MechanicalRoom.describe=function(){displayMessageP("\n                    You are in a well hidden shed which houses a generator for the roller coaster's safety system. \n                    The door was left open. A standard generator sits in the middle of the room. Along the\n                    north wall of the shed are two thick wires, both of which have been severed.")},room.MechanicalRoom.smell=function(){displayMessageP("The room has an oily, mechanical odor.")},room.CrashSite=new GenericRoom("Crash site"),room.CrashSite.synonyms=["crash site","accident","accident site","ride"],room.CrashSite.indoors=!1,room.CrashSite.out={nextroom:"Joyville"},room.CrashSite.se={nextroom:"Joyville"},room.CrashSite.line="LineHotelToPark",room.CrashSite.station="Joyville",room.CrashSite.corridor=COR_NONE,room.CrashSite.describe=function(){displayMessage("The crash site is surrounded by bushes on all sides except the southeast path back to Joyville. \n        In the center of this space you see the large tr
ack of the Megacoaster. The ride's overall structure looks normal until you spot \n                        the metal rails oddly bent in one corner. Metal fragments litter the ground while an oily, metallic smell lingers in the air."),state.franksBodyRemoved?displayMessageP(" In front of you lies the mangled ride car that Mr. Franks was riding."):displayMessageP(" In front of you lies the mangled ride car inside of which lies the equally mangled body of Mr. Franks.")},room.CrashSite.smell=function(){displayMessageP("It smells like a car repair garage with oils and metal with a hint of death.")},room.AmongBushes=new GenericRoom("Bushes near Joyville"),room.AmongBushes.synonyms=["bushes"],room.AmongBushes.indoors=!1,room.AmongBushes.west={nextroom:"MechanicalRoom"},room.AmongBushes.east={nextroom:"AmongBushes2"},room.AmongBushes.north={errorMsg:"The bushes are too thick to continue in that direction. There is a clearing to the east and the mechanical room lies to the west."},room.AmongBushes.south={errorMsg:"T
he bushes are too thick to continue in that direction. There is a clearing to the east and the mechanical room lies to the west."},room.AmongBushes.ne={errorMsg:"The bushes are too thick to continue in that direction. There is a clearing to the east and the mechanical room lies to the west."},room.AmongBushes.nw={errorMsg:"The bushes are too thick to continue in that direction. There is a clearing to the east and the mechanical room lies to the west."},room.AmongBushes.se={errorMsg:"The bushes are too thick to continue in that direction. There is a clearing to the east and the mechanical room lies to the west."},room.AmongBushes.sw={errorMsg:"The bushes are too thick to continue in that direction. There is a clearing to the east and the mechanical room lies to the west."},room.AmongBushes.line="LineHotelToPark",room.AmongBushes.article="",room.AmongBushes.globals=["Bushes"],room.AmongBushes.station="AmongBushes",room.AmongBushes.corridor=COR_NONE,room.AmongBushes.describe=function(){displayMessageP("You are
in the middle of a field of bushes.")},room.AmongBushes.smell=function(){displayMessageP("The air smells fresh.")},room.AmongBushes2=new GenericRoom("Among More Bushes"),room.AmongBushes2.synonyms=["thick bushes"],room.AmongBushes2.indoors=!1,room.AmongBushes2.west={nextroom:"AmongBushes"},room.AmongBushes2.north={errorMsg:"The bushes are too thick to continue in that direction. The only clearing lies to the west."},room.AmongBushes2.south={errorMsg:"The bushes are too thick to continue in that direction. The only clearing lies to the west."},room.AmongBushes2.east={errorMsg:"The bushes are too thick to continue in that direction. The only clearing lies to the west."},room.AmongBushes2.ne={errorMsg:"The bushes are too thick to continue in that direction. The only clearing lies to the west."},room.AmongBushes2.nw={errorMsg:"The bushes are too thick to continue in that direction. The only clearing lies to the west."},room.AmongBushes2.se={errorMsg:"The bushes are too thick to continue in that direction. The on
ly clearing lies to the west."},room.AmongBushes2.sw={errorMsg:"The bushes are too thick to continue in that direction. The only clearing lies to the west."},room.AmongBushes2.line="LineHotelToPark",room.AmongBushes2.article="",room.AmongBushes2.globals=["Bushes"],room.AmongBushes2.station="AmongBushes",room.AmongBushes2.corridor=COR_NONE,room.AmongBushes2.describe=function(){displayMessageP("\n                    You are in the middle of a field of more bushes.\n                    ")},room.AmongBushes2.smell=function(){displayMessageP("The air smells fresh.")},room)room.hasOwnProperty(o)&&(room[o].isIndoors()?room[o].globals.push("Ceiling"):room[o].globals.push("Sky"));return"FrontSteps"}var PLAYER_INVENTORY_CAPACITY=1e7;class Employee extends GenericPerson{constructor(e,o){super(e,o),this.EnneagramType=0,this.knows_FranksDied=!0,this.mood={current:{pleasure:2.5,intensity:2.5},default:{pleasure:2.5,intensity:2.5}},this.events={EVENT_FRANKS_IS_DEAD:{known:!1,delta_pleasure:-2,delta_intensity:-2},EVENT_COOPE
R_IS_DEAD:{known:!1,delta_pleasure:-2,delta_intensity:-2},EVENT_SAFE_IS_EMPTY:{known:!1,delta_pleasure:0,delta_intensity:0},EVENT_SHOWN_STOLEN_MONEY:{known:!1,delta_pleasure:0,delta_intensity:0}},this.getMood=function(){return this.mood.current.pleasure>=2.5&&this.mood.current.intensity>=2.5?MOOD_HAPPY:this.mood.current.pleasure>=2.5&&this.mood.current.intensity<2.5?MOOD_CALM:this.mood.current.pleasure<2.5&&this.mood.current.intensity<2.5?MOOD_GLOOMY:this.mood.current.pleasure<2.5&&this.mood.current.intensity>=2.5?MOOD_ANXIOUS:void 0},this.updateMood=function(){this.mood.current.pleasure>this.mood.default.pleasure&&(this.mood.current.pleasure-=.01),this.mood.current.pleasure<this.mood.default.pleasure&&(this.mood.current.pleasure+=.01),this.mood.current.intensity>this.mood.default.intensity&&(this.mood.current.intensity-=.03),this.mood.current.intensity<this.mood.default.intensity&&(this.mood.current.intensity+=.03)},this.alterMood=function(e,o){this.mood.current.pleasure+=e,this.mood.current.intensity+=o,th
is.mood.current.pleasure=Math.max(this.mood.current.pleasure,0),this.mood.current.intensity=Math.max(this.mood.current.intensity,0),this.mood.current.pleasure=Math.min(this.mood.current.pleasure,5),this.mood.current.intensity=Math.min(this.mood.current.intensity,5)},this.inform=function(e){this.events[e]&&(this.events[e].known||(this.events[e].known=!0,this.mood.current.pleasure+=this.events[e].delta_pleasure,this.mood.current.intensity+=this.events[e].delta_intensity,this.mood.current.pleasure=Math.max(this.mood.current.pleasure,0),this.mood.current.intensity=Math.max(this.mood.current.intensity,0),this.mood.current.pleasure=Math.min(this.mood.current.pleasure,5),this.mood.current.intensity=Math.min(this.mood.current.intensity,5)))},this.informed=function(e){return!(!this.events[e]||!this.events[e].known)},this.smalltalkResponses={hello:{happy:'"Good day!"',calm:'"Hello."',gloomy:'"Hi,"',anxious:'"Hi,"'},goodbye:{happy:'"See you later."',calm:'"Bye."',gloomy:'"Bye."',anxious:'"Yeah,"'},howareyou:{happy:'"I\
'm doing fantastic now!"',calm:'"I\'m doing alright."',gloomy:'"I\'m gloomy at the moment."',anxious:'"I\'ve had better days."'}},this.smalltalkRespond=function(e){switch(this.getMood()){case MOOD_HAPPY:displayMessageP(this.smalltalkResponses[e].happy);break;case MOOD_CALM:displayMessageP(this.smalltalkResponses[e].calm);break;case MOOD_GLOOMY:displayMessageP(this.smalltalkResponses[e].gloomy);break;case MOOD_ANXIOUS:displayMessageP(this.smalltalkResponses[e].anxious)}},this.respond=function(e){var o;switch(this.getMood()){case MOOD_HAPPY:o=e.happy;break;case MOOD_CALM:o=e.calm;break;case MOOD_GLOOMY:o=e.gloomy;break;case MOOD_ANXIOUS:o=e.anxious}if("random"==e.type){var s=Math.floor(Math.random()*o.phrase.length);s==o.last&&(s++,s%=o.phrase.length),displayMessageP(o.phrase[s]),o.last=s}else o.last<o.phrase.length-1&&o.last++,displayMessageP(o.phrase[o.last])}}}var MOOD_HAPPY=1,MOOD_CALM=2,MOOD_GLOOMY=3,MOOD_ANXIOUS=4;function informAllCharacters(e){for(var o in objs)objs.hasOwnProperty(o)&&objs[o].isPerson(
)&&"Player"!=o&&objs[o].inform(e)}function initCharacters(){objs.Player=new Employee("Player","Player"),objs.Player.synonyms=["me","myself","player","inspector"],objs.Player.uniqueName="me",objs.Player.in="FrontSteps",objs.Player.inventory=[],objs.Player.capacity=PLAYER_INVENTORY_CAPACITY,objs.Player.possibleToCarry=function(e){return!(objs[e].weight>this.capacity)},objs.Player.addToInventory=function(e){if(objs[e].touched=!0,objs.Player.inventory.push(e),this.recalcInventoryWeight(),objs.Player.capacity<0){var o=Math.floor(Math.random()*objs.Player.inventory.length);e=objs.Player.inventory[o];this.removeFromInventory(e),objs[e].in=here,displayMessageP("There is no weightlifting record at risk of being broken by your attempt to \n            carry all this stuff. You drop the "+objs[e].name+".")}this.recalcInventoryWeight()},objs.Player.removeFromInventory=function(e){for(var o=0;o<objs.Player.inventory.length;o++)if(objs.Player.inventory[o]==e){objs.Player.inventory.splice(o,1);break}this.recalcInventoryWei
ght()},objs.Player.recalcInventoryWeight=function(){objs.Player.capacity=PLAYER_INVENTORY_CAPACITY;for(var e=0;e<objs.Player.inventory.length;e++){var o=objs.Player.inventory[e];objs.Player.capacity-=objs[o].weight}objs.Player.inventory.sort(function(e,o){return objs[e].name>objs[o].name?1:-1})},objs.Player.describe=function(e,o,s,a){var t=evaluateEvidenceAgainst("Davis")+evaluateEvidenceAgainst("Cooper");if(displayMessage("You are Inspector Richard Stern of the Cornville Police Department, upholder of justice in this county. "),PresentTime<700)displayMessage("You're alert and eager to get to the bottom of this case. ");else switch(t){case 0:displayMessage("You're a bit discouraged that you haven't found any incriminating evidence yet. ");break;case 1:case 2:displayMessage("You feel you're getting closer to discovering what went on today. ");break;default:displayMessage("You're feeling pretty confident you'll be able to make an arrest soon. ")}state.fumeExposure>5?displayMessageP("You could really use a bath
No bedbug would come within ten feet of you."):state.fumeExposure>1&&displayMessageP("You smell like the fumigation gas.")},objs.Player.analyze=function(e,o,s,a){displayMessageP("They analyzed you at the Police Academy when you signed up. They said you \n        were principled, determined, but highly skeptical. Shrinks. What do they know?")},objs.Player.smell=function(){state.fumeExposure>0?displayMessageP("You still smell like the fumigation gas."):displayMessageP("You smell fresh and dapper, to yourself at least.")},objs.Ally=new Employee("Ally","Ally"),me=objs.Ally,me.synonyms=["Ally","Ally's","receptionist","hostess","ally burns","ms burns","mrs burns","ms ally burns","mrs ally burns"],me.in="Reception",me.name="Ally",me.hintName="Ally Burns (receptionist)",me.hisher="her",me.heshe="she",me.himher="her",me.attentionSpan=5,me.fingerprints="Ally",me.fingerprint_data=[34.115,6.973,10.882],me.movementGoals=[[5,0,"Reception"],[1e3,0,"Reception"]],me.EnneagramType=7,me.events={EVENT_FRANKS_IS_DEAD:{known:!1
,delta_pleasure:-2,delta_intensity:-2.5},EVENT_COOPER_IS_DEAD:{known:!1,delta_pleasure:-2,delta_intensity:-2.5},EVENT_SAFE_IS_EMPTY:{known:!1,delta_pleasure:-1,delta_intensity:0},EVENT_WENT_TO_WAKE:{known:!1,delta_pleasure:.5,delta_intensity:0},EVENT_WITNESS_COOPER_DIE:{known:!1,delta_pleasure:-2,delta_intensity:2},EVENT_SING_FOR_ALLY:{known:!1,delta_pleasure:1,delta_intensity:1},EVENT_GIVE_ALLY_FLOWER:{known:!1,delta_pleasure:1,delta_intensity:1},EVENT_GIVE_ALLY_POEM:{known:!1,delta_pleasure:1,delta_intensity:1},EVENT_GIVE_ALLY_POETRY_ANALYSIS:{known:!1,delta_pleasure:.5,delta_intensity:0}},me.mood={current:{pleasure:4,intensity:3},default:{pleasure:4,intensity:3}},me.smalltalkResponses={hello:{happy:'"Good day!"',calm:'Ally looks up and says "Hello."',gloomy:'"Hi," Ally utters softly.',anxious:'"Hi," Ally responds curtly.'},goodbye:{happy:'"See you later," she replies melodically.',calm:'"See you later, inspector."',gloomy:'"Bye," Ally utters softly.',anxious:'"Yeah," Ally responds curtly.'},howareyou:{hap
py:'"I\'m doing fantastic now!"',calm:'"I\'m doing alright," she says softly.',gloomy:'"I\'m gloomy at the moment."',anxious:'"I\'ve had better days."'}},me.phraseBankDunnoAsk={type:"random",happy:{last:-1,phrase:["\"Sorry, I don't know what you're talking about.\"",'Ally giggles. "Is that a joke? I don\'t get it."','"Sorry, I don\'t follow you."']},calm:{last:-1,phrase:['"Say again?"','"I don\'t think I follow."','"I don\'t understand. Can you ask that differently?"','"I don\'t know what to say."']},gloomy:{last:-1,phrase:['"Sorry, I don\'t know about that."',"Ally shrugs her shoulders.",'"I don\'t know enough about that to say anything."']},anxious:{last:-1,phrase:['"I just don\'t know about that."','"Can\'t help you."','"What\'s with all these questions?"']}},me.phraseBankDunnoTell={type:"random",happy:{last:-1,phrase:["\"Sorry, I don't know what you're talking about.\"",'Ally giggles. "Is that a joke? I don\'t get it."','"Sorry, I don\'t follow you."']},calm:{last:-1,phrase:['"Say again?"','"I don\'t thi
nk I follow."','"I don\'t understand. Can you ask that differently?"',"\"I don't get what you're telling me.\""]},gloomy:{last:-1,phrase:['"Sorry, I don\'t know how to respond to that."',"Ally shrugs her shoulders.",'"I don\'t know enough about that."']},anxious:{last:-1,phrase:['"I don\'t care about that."','"Can\'t help you."','"What\'s with all these questions?"']}},me.phraseBankDunnoShow={type:"random",happy:{last:-1,phrase:["\"Sorry, I don't know what you're talking about.\"",'Ally giggles. "Is that a joke? I don\'t get it."',"\"Sorry, I don't understand what you're showing me.\""]},calm:{last:-1,phrase:['"What? Why are you showing me this?"','"I don\'t think I follow."','"I don\'t understand what this means."','"I don\'t know what to say."']},gloomy:{last:-1,phrase:['"Sorry, I don\'t know about that."',"Ally shrugs her shoulders.",'"I don\'t know enough about that to say anything."']},anxious:{last:-1,phrase:['"Why are you showing me that?"','"Can\'t help you."','"What\'s with all these questions?"']}}
,me.describe=function(){return this.getMood()==MOOD_HAPPY?displayMessageP("Ally is a cute, bright eyed twentysomething. Her blonde shoulder-length \n        hair gently rests upon her shoulders. She's wearing a peach colored blouse -- and she just noticed you looking at her. \n        She smiles and glances back down at her desk."):displayMessageP("Ally is a cute, blonde twentysomething.  She's wearing a peach colored blouse -- and she just noticed you looking at her. \n            She breaks eye contact and looks down at her desk."),!0},me.give=function(e,o,s,a){switch(s.object.moveTo(a.objectName),s.objectName){case"Flower":displayMessageP('"Thank you! I love carnations. That was so sweet." She leans over the \n                counter and plants a quick peck on your cheek. She whispers, "we don\'t tell Ivan where you got it."'),this.inform("EVENT_GIVE_ALLY_FLOWER"),awareOf("Ivan");break;case"Poem":displayMessageP('Ally takes the paper and reads it. She bursts out laughing. \n                "This is so fun
ny. I love it. Did you write this? It\'s really good."'),this.inform("EVENT_GIVE_ALLY_POEM");break;case"PoetryAnalysis":this.informed("EVENT_GIVE_ALLY_POEM")?(displayMessageP('Ally takes the paper and reads it. "Hahaha! Well, I don\'t care what anyone else \n                    says. I love your poem."'),this.inform("EVENT_GIVE_ALLY_POETRY_ANALYSIS")):displayMessageP("\"This sounds like it's a great poem. I'd like to read it; I enjoy poetry.\"");break;case"Vow":displayMessageP('Ally takes the paper and reads it. She smiles. "I like poetry. \n                It seems you\'re drawing from your own experience to make something beautiful!"');break;default:displayMessageP('"Ummm...thanks."')}},me.hibye=function(e){GrabAttention("Ally"),"hello"!=e||this.getMood()!=MOOD_HAPPY?(this.smalltalkRespond(e),"goodbye"==e&&CancelAttention("Ally")):displayMessageP(PresentTime<720?'Ally smiles widely at you. "Good morning!':PresentTime<1080?'Ally smiles widely at you. "Good afternoon!':'Ally smiles widely at you. "Good eveni
ng!')},me.howAreYou=function(){this.getMood()!=MOOD_GLOOMY?this.smalltalkRespond("howareyou"):this.events.EVENT_COOPER_IS_DEAD.known?displayMessageP('"I\'m devastated about Mr. Cooper."'):this.events.EVENT_FRANKS_IS_DEAD.known?displayMessageP('"I\'m really upset about Mr. Franks."'):displayMessageP('"I\'m doing alright," she says softly.')},me.askAbout=function(e){switch(e){case"Ally":case"Yourself":displayMessageP('"I grew up in Cornville. Went to college in hospitality services and totally lucked out getting this job."'),awareOf("Cornville");break;case"AllysTable":displayMessageP("\"There's a night table in my room. You could have just asked me to show you my room; I'm not happy that you're snooping around my stuff.\""),this.alterMood(-.5,0);break;case"BallroomDoorway":displayMessageP("\"Oh, it's pretty fancy, isn't it?\"");break;case"Ballroom":displayMessageP('"I know it\'s set up with offices right now, but you should see how fancy it looks for special events."');break;case"Bar":displayMessageP('"I don\'
t spend much time there."');break;case"Baxter":displayMessageP("\"Oh, Mr. Baxter's sooo friendly. He's a really nice man. I have him to thank for giving me my first job.\"");break;case"BaxterCabinet":case"BaxterDesk":displayMessageP('"All I know about it is that I\'ve seen it in his office."');break;case"Brochure":displayMessageP('"That\'s just a little background info on the resort."');break;case"Building":case"Lobby":displayMessageP('"It\'s beautiful. Mr. Baxter allowed all of us to contribute to the interior design. I helped design the look and feel of the lobby," she says proudly.'),this.alterMood(.5,0);break;case"Bus":displayMessageP('"The bus to Cornville stops here around 8pm. A lot of the staff are taking it to go back home for the weekend."');break;case"Canopy":displayMessageP('"We added that recently to give our guests some shade when it gets too hot."');break;case"Car":case"Ride":displayMessageP('"I love the Megacoaster! It\'s so much--" Ally\'s excitement suddenly disappears from her face and she
resumes slowly,\n                 "Until today it was great. I\'m really upset about what happened to Mr. Franks this morning."'),awareOf("FranksBody"),this.alterMood(-.5,-.5);break;case"CauseCrash":displayMessageP('"I have no idea what caused it to crash."');break;case"Ceiling":displayMessageP('"It\'s a ceiling."');break;case"Chair":displayMessageP("\"Ummm... it's for sitting? I don't know where you're going with this.\"");break;case"Chandelier":getDaylight()==DAYLIGHT_BRIGHT?displayMessageP("\"It's beautiful isn't it? Wait till later when it's turned on, it casts the most delicious ambient light over the lobby.\""):displayMessageP("\"It's beautiful isn't it?\"");break;case"Cooper":case"CoopersBody":this.events.EVENT_COOPER_IS_DEAD.known?this.getMood()==MOOD_HAPPY?displayMessageP("\"Oh, I'm so upset by his passing. But I'm not gonna think about that anymore.\""):displayMessageP('"Oh, I\'m so upset by his passing."'):displayMessageP('"He\'s our caretaker. Kinda quiet and keeps to himself. On the bright side
, he keeps this place spotless!"');break;case"CoopersDeath":this.events.EVENT_COOPER_IS_DEAD.known?this.getMood()==MOOD_HAPPY?displayMessageP("\"Oh, I'm so upset by his passing. But I'm not gonna think about that anymore.\""):displayMessageP('"Oh, I\'m so upset by his passing."'):(displayMessageP('"You mean he\'s dead too?" I didn\'t know." She begins sobbing.'),this.alterMood(-2,-1.5));break;case"Cornville":displayMessageP('"Lived there all my life. Most of my friends wanted to move to a bigger city once they could.  \n                Not me. I love the small town feel of Cornville. Unfortunately, it\'s too far to commute, so I live at the hotel during the week and go \n                back on the weekend bus. Most of the staff does the same thing."'),awareOf("Bus");break;case"Davis":displayMessageP('"I can\'t say I really know any of the executives other than Mr Baxter. All I can say is that she dresses really fancy."');break;case"DoorSalonC":case"SalonC":displayMessageP('"Mr. Baxter spends most of his tim
e in his office. You can always knock to see if he\'s there."');break;case"Eva":displayMessageP('"Eva is the maid. I don\'t really know her."');break;case"Expansion":displayMessageP('"My understanding is that we plan to expand Joyville into a really large theme park. Mr. Baxter could tell you a lot more."'),awareOf("Joyville");break;case"FinancialReport":displayMessageP('"I don\'t know anything about financial stuff."');break;case"Floor":displayMessageP('"Mr. Cooper keeps the floors nice and tidy around here."'),awareOf("Cooper");break;case"Flower":displayMessageP('"I\'m quite partial to my beautiful carnation." She winks.');break;case"Flowers":displayMessageP('"Ivan keeps the grounds so pretty. I sometimes take a walk along the flower path, imagining that I\'m dancing along the yellow brick road."'),awareOf("Ivan"),awareOf("Path"),this.alterMood(.2,.5);break;case"Fountain":displayMessageP('"Isn\'t it beautiful? Mr. Franks found that fountain in Europe. He had it dismantled and shipped here. It fills that sp
ace perfectly!"'),awareOf("FranksBody");break;case"FranksBody":case"FranksDeath":displayMessageP('"Poor Mr. Franks. I don\'t really want to think about it anymore."');break;case"FrontDoors":displayMessageP('"They open...and they close. What more can I say?" she giggles'),this.alterMood(.1,0);break;case"Fumigation":displayMessageP("\"We shut down for one week every year to spray the guest rooms for bed bugs. I don't think we have any, Mr. Baxter just wants to be sure. Just don't go to the third floor or above.\""),awareOf("Baxter");break;case"GlassOfWater":displayMessageP('"I thought it might help you feel better."');break;case"GrandHall":displayMessageP('"It\'s one of my favourite rooms. I like to snack while sitting on the edge of the fountain. I can still watch the front door if anyone comes in."');break;case"HairSpray":displayMessageP('"Well, everyone\'s gotta look good. I just use whatever goo is cheapest," she giggles.');break;case"Happyland":displayMessageP("\"I love this place! Everyone is so friendly
It's such a fun vibrant and ...\n                        well...happy place! I'm hoping Mr. Franks' death was just an accident so we can bounce back and expand the park.\""),this.events.EVENT_COOPER_IS_DEAD.known&&(displayMessageP("\"Now I'm not sure what's going to happen. I hope you can help us.\""),this.alterMood(-1,-1)),awareOf("FranksBody");break;case"Ivan":displayMessageP('"Ivan the gardener is sweet, he sometimes brings me fresh flowers."');break;case"Jared":displayMessageP("\"He's a contractor who comes in to operate the Megacoaster. I don't know him.\""),awareOf("Ride");break;case"Job":displayMessageP("\"I'm in charge of reception. I greet people coming into the hotel, take reservations, help arrange special events. This week is a bit slow, since we're closed, but it gives me a chance to organize and prepare for when we reopen.\"");break;case"Joyville":displayMessageP('"Joyville is the mini-park here at the resort with food booths, entertainment, and the Megacoaster. Joyville is currently closed."
'),awareOf("Ride"),awareOf("FoodBooths"),awareOf("MidwayGames");break;case"Ken":discretion("Ally","Ken"),displayMessageP('"Ken is in charge of security. He comes over to flirt every now and then." Her expression turns to one of slight disgust. "But he\'s as old as our parents."');break;case"Lina":displayMessageP('"I know she helps with finances, but I don\'t know anything about her."'),awareOf("FinancialReport");break;case"LobbyTable":case"Sofas":displayMessageP('"Make yourself comfortable in the lobby if you need a quiet place to relax."');break;case"Map":displayMessageP('"The map shows you where you can go."');break;case"MasterKey":doIHave("MasterKey")?(displayMessageP('"You\'re one of a select few who have a master key. Only Mr. Baxter, Mr. Cooper, and Ken have one."'),awareOf("Cooper"),awareOf("Ken")):(displayMessageP("\"I'm sorry, I can't give you a master key. You'll have to talk to Ken.\""),awareOf("Ken"));break;case"MidwayGames":displayMessageP('"I love playing the bottle toss game, but I\'m not very
good at it. Maybe you can come visit next week and win a giant teddy bear for me!"'),this.alterMood(.5,.5);break;case"Michael":displayMessageP("\"I know he's on the executive, but I don't know anything about him.\"");break;case"Motive":displayMessageP('"As far as I know everyone is happy and friendly here."');break;case"Newspaper":displayMessage('"We have a subscription to the weekly Cornville newspaper. '),displayMessageP("Lobby"==here?'We keep the newspapers on the table right here."':'We keep the newspapers on the table in the lobby."');break;case"Nook":discretion("Ally","Ken"),displayMessageP("\"That's where Ken works when he's not patrolling or trying to flirt. It's on the east side of the lobby.\"");break;case"ParkGlassDoors":objs.ParkGlassDoors.isLocked()?(displayMessageP("\"Oh they're locked? You'll have to get Ken to open them for you.\""),awareOf("Ken")):displayMessageP("\"They're automatic doors. I don't know what else I can tell you about them.\"");break;case"ParkingLot":displayMessageP("\"That'
s where our guests park. You'll notice it's virtually empty. That's because many of us live at the hotel. Most of us are taking the bus back to Cornville for the weekend.\""),awareOf("Bus");break;case"Path":displayMessageP('"The path makes me feel like Dorothy from the Wizard of Oz walking down the yellow brick road."');break;case"Piano":displayMessageP('"Three nights a week, we have a pianist come in to play for the guests in the lounge. I love that kind of music."');break;case"PicnicTables":displayMessageP('"That\'s the eating area in Joyville."');break;case"Pillars":displayMessageP('"Umm... they hold up the roof."');break;case"Poem":this.events.EVENT_GIVE_ALLY_POEM.known?displayMessageP('"I love your poem."'):displayMessageP('"I enjoy poetry."');break;case"PoetryAnalysis":displayMessageP("\"This sounds pretty analytical. I just think it's a funny and creative poem. That's my official analysis,\" she giggles."),this.alterMood(.2,0);break;case"Posts":case"VelvetRope":displayMessageP('"We set those up to kee
p the line ups organized. You wouldn\'t believe how unruly some people can be."');break;case"ReceptionCounter":displayMessageP('"This is my home base here at Happyland. I can see everyone coming and going."');break;case"ReceptionistsBed":displayMessage("Ally gives you a coy look. \"I don't know you that well, Inspector"),this.events.EVENT_GIVE_ALLY_POEM.known&&this.events.EVENT_GIVE_ALLY_FLOWER.known?displayMessageP('...yet."'):displayMessageP('."');break;case"Stairs":displayMessageP('"Ummm... they go up and they go down?"');break;case"ThreatNote":displayMessageP("\"That's the first I've heard of any threats. You should talk to Mr. Baxter about that.\""),this.alterMood(-.5,-.5);break;case"TV":displayMessageP('"We only get one channel on the television here, but it\'s got lots of good shows."');break;case"Wake":state.wake_stage>0?displayMessageP("\"We're having a wake for Mr. Franks at three o'clock in the lounge.\""):displayMessageP('"We had a wake this afternoon for Mr. Franks in the lounge."'),awareOf("Lou
nge");break;case"Wine":state.davis_served_wine?(playerIsIn("Lounge")&&displayMessageP("\"It's tasty, isn't it?\""),displayMessageP('"I remember Ms. Davis served us some yummy wine at the wake."')):displayMessageP('"What wine?"'),awareOf("Davis");break;default:this.respond(this.phraseBankDunnoAsk)}},me.fingerprintResponse=function(e,o,s,a){displayMessageP('Ally smiles. "This is so cool. I\'ve never had my fingerprints taken before!"')},me.askWhere=function(e){if(objs[e].isHere())return objs[e].isPerson()?void displayMessageP('\n                    "Oh, '+objs[e].heshe+' is right here. Maybe I should be the inspector," she giggles.'):void displayMessageP('\n                    "Oh, it\'s right here. Maybe I should be the inspector," she giggles.');switch(e){case"Ally":displayMessageP('"I\'m right here!"');break;case"Baxter":displayMessageP('"He\'s usually in his office, Salon C on your map."');break;case"Cooper":displayMessageP('"At this time of day, he\'s usually cleaning the halls."');break;case"CoopersBody"
:displayMessageP('"How can you ask me that?"');break;case"FranksBody":displayMessageP('"My momma would say that he\'s in a much better place now."');break;case"Davis":case"Lina":displayMessageP('"The finance team spends most of their day in their office in the ballroom."'),awareOf("Ballroom");break;case"ElectricTypewriter":case"StandardTypewriter":displayMessageP('"There are some typewriters in the ballroom offices."');break;case"Flowers":displayMessageP("\"I'm sure you saw the flowers on the way in. They're nothing - check out the beautiful flower path between the hotel and the park.\""),awareOf("Path");break;case"Fumigation":displayMessageP('"We\'re fumigating the rooms on the third, fourth, and fifth floors."');break;case"Ivan":displayMessageP('"He\'s probably tending to the flowers either out front or on the flower path."'),awareOf("Path");break;case"Ken":"Reception"==here&&"SecurityDesk"==objs.Ken.in?displayMessageP('"He\'s right behind you at his desk."'):displayMessageP('"I don\'t know where he is."')
;break;case"Newspaper":displayMessageP('"Oh, there\'s one on the lobby table."');break;case"Photocopier":displayMessageP("\"I'd guess there's one in the ballroom offices.\""),awareOf("Ballroom");break;case"Ride":displayMessageP('"The ride is out in Joyville. Check your map."'),awareOf("Joyville");break;case"StaffRoomDoor":displayMessageP('"It\'s by the staff room, near the ballroom."'),awareOf("Ballroom");break;case"TV":displayMessageP('"There\'s one in each guest room."');break;default:if(room[e])return void displayMessageP('"You should be able to find that on your map."');displayMessageP('"Sorry, I don\'t know where that is."')}},me.show=function(e){switch(e){case"Analyzer":displayMessageP('"That looks pretty impressive. You must be really smart to work that machine."');break;case"Flower":displayMessageP('"Oh!" She smiles. "If Ivan finds out where you go that, you\'ll be in big trouble!"'),this.alterMood(.5,.5),awareOf("Ivan");break;case"GardenShears":case"HairSprayAnalysis":case"LinasKeyFingerprints":case
"SafetySystem":case"ShardAnalysis":case"VomitAnalysis":displayMessageP('"I\'m sorry, Inspector. All that detective stuff is may over my head."');break;case"Habitat":displayMessageP('"Those cute, fluffy wild cats, right? I heard that they found the cats don\'t live in this area after all."');break;case"NewsArticle":case"Newspaper":displayMessageP('"Okay. I don\'t follow the news much."');break;case"PileOfCash":displayMessageP('"Wow, that\'s a lot of money!"'),this.alterMood(0,1);break;case"Poem":case"PoetryAnalysis":var o={};o.objectName=e,o.object=objs[e];var s={objectName:"Ally"};this.give("","",o,s);break;case"StolenMoney":displayMessageP('Her eyes widen. "That sounds pretty important. You should tell Ken or Mr. Baxter about that."'),this.alterMood(-1,-.5);break;case"ThreatNote":displayMessageP("\"That's the first I've heard of any threats. You should talk to Mr. Baxter about that.\""),this.alterMood(-1,0);break;case"Vomit":displayMessageP("\"That's terrible. I'll see if I can go clean it.\"");break;case"V
omitSample":displayMessageP('"Ewww... gross.'),this.alterMood(-.5,-.5);break;default:this.respond(this.phraseBankDunnoShow)}},me.tellAbout=function(e){switch(e){case"Analyzer":displayMessageP('"That sounds pretty impressive. You must be really smart to work that machine."');break;case"CoopersBody":case"CoopersDeath":if(this.events.EVENT_COOPER_IS_DEAD.known)return displayMessageP('Ally looks down and whispers. "I know."'),void this.alterMood(-.5,-.5);displayMessageP("\"What? He's dead, too? Is there a killer amongst us? Please protect me, Inspector. I don't want to be the next one.\""),this.inform("EVENT_COOPER_IS_DEAD");break;case"CutWires":displayMessageP('"I don\'t fully get it but it sounds like that might be related to the crash. You should tell Ken or Mr. Baxter about that."'),this.alterMood(-.5,-.5);break;case"FranksDeath":displayMessageP('She looks down. "I know about Mr. Franks already."'),this.alterMood(-.5,-.5);break;case"Flower":displayMessageP('"Oh!" She smiles. "If Ivan finds out where you got
that, you\'ll be in big trouble!"'),this.alterMood(.5,.5),awareOf("Ivan");break;case"GardenShears":case"HairSprayAnalysis":case"LinasKeyFingerprints":case"SafetySystem":case"ShardAnalysis":case"VomitAnalysis":displayMessageP('"I\'m sorry, Inspector. All that detective stuff is may over my head."'),this.alterMood(0,-.5);break;case"Habitat":displayMessageP('"Those cute, fluffy wild cats, right? I heard about that. They found the cougars don\'t live in this area after all."');break;case"NewsArticle":case"Newspaper":displayMessageP('"Okay. I don\'t follow the news much."');break;case"PileOfCash":displayMessageP('"Wow, that\'s a lot of money!"'),this.alterMood(0,1.5);break;case"Poem":case"PoetryAnalysis":var o={};o.objectName=e,o.object=objs[e];var s={objectName:"Ally"};this.give("","",o,s);break;case"Poison":displayMessageP('Her eyes widen. "That sounds scary. You should tell Ken or Mr. Baxter about that."'),this.alterMood(-1,-1);break;case"StolenMoney":displayMessageP('Her eyes widen. "That sounds pretty import
ant. You should tell Ken or Mr. Baxter about that."'),this.alterMood(-1,-1);break;case"ThreatNote":displayMessageP("\"That's the first I've heard of any threats. You should talk to Mr. Baxter about that.\""),this.alterMood(-1,-1);break;case"Vomit":displayMessageP("\"That's terrible. I'll see if I can go clean it.\"");break;case"VomitSample":displayMessageP('"Ewww... gross.'),this.alterMood(0,-1.5);break;default:this.respond(this.phraseBankDunnoTell)}},me.askDidYou=function(e,o,s,a,t){switch(s.object.objectName){case"CauseCrash":case"CutWires":displayMessageP("Ally's eyebrows go up. \"No. I've been working right here all day.\"");break;case"ReadTheNewspaper":displayMessageP("\"No, I don't read the news. It's too depressing.\"");break;default:displayMessageP("\"No, I didn't.")}},me.unlock=function(e,o,s,a){a.name&&a.object.objectName.includes("Key")?displayMessageP("Unfortunately, this is not the key to Ally's heart."):displayMessageP("Ally in no way resembles a door.")},objs.Baxter=new Employee("Mr. Baxter","
Baxter"),me=objs.Baxter,me.synonyms=["Baxter","CEO","Baxter's","CEO's","mr baxter","peter baxter","peter"],me.in="SalonC",me.name="Mr. Baxter",me.hintName="Mr. Baxter (Happyland CEO)",me.attentionSpan=2,me.fingerprints="Baxter",me.fingerprint_data=[11.324,41.332,59.281],me.movementGoals=[[0,0,"SalonC"],[240,0,"SalonC"],[5,10,"SecurityDesk"],[120,20,"SalonC"],[60,30,"SalonC"],[1e3,0,"Reception"]],me.mood={current:{pleasure:3,intensity:1.5},default:{pleasure:3,intensity:1.5}},me.events={EVENT_FRANKS_IS_DEAD:{known:!1,delta_pleasure:-2,delta_intensity:-2.5},EVENT_COOPER_IS_DEAD:{known:!1,delta_pleasure:-2,delta_intensity:-2.5},EVENT_SAFE_IS_EMPTY:{known:!1,delta_pleasure:-2,delta_intensity:2},EVENT_WENT_TO_WAKE:{known:!1,delta_pleasure:.5,delta_intensity:0},EVENT_WITNESS_COOPER_DIE:{known:!1,delta_pleasure:-2,delta_intensity:2},EVENT_SHOWN_WAD_OF_CASH:{known:!1,delta_pleasure:-1,delta_intensity:1},EVENT_SHOWN_HAIRSPRAY_ANALYSIS:{known:!1,delta_pleasure:0,delta_intensity:0},EVENT_SHOWN_VOMIT_ANALYSIS:{known:!1,d
elta_pleasure:0,delta_intensity:0},EVENT_SHOWN_FAKE_NEWS_ARTICLE:{known:!1,delta_pleasure:-.5,delta_intensity:0},EVENT_SHOWN_NEWSPAPER:{known:!1,delta_pleasure:0,delta_intensity:0},EVENT_SHOWN_WINE_ANALYSIS:{known:!1,delta_pleasure:0,delta_intensity:0},EVENT_COOPER_SHEARS_PRINTS:{known:!1,delta_pleasure:0,delta_intensity:0},EVENT_CUTWIRES:{known:!1,delta_pleasure:0,delta_intensity:0},EVENT_SHARDS:{known:!1,delta_pleasure:0,delta_intensity:0}},me.smalltalkResponses={hello:{happy:'He shakes your hand vigorously. "So good to have you here, inspector."',calm:'"Hi."',gloomy:"Baxter nods his head.",anxious:'"Inspector."'},goodbye:{happy:'"I\'ll see you later then," Baxter says, with a smile.',calm:'"I\'ll see you later, inspector."',gloomy:"Baxter nods his head",anxious:'"Goodbye," Baxter says quickly.'},howareyou:{happy:'"I\'m doing better than earlier."',calm:'"I\'m still a bit shaken."',gloomy:'"I\'m really, really upset," he says softly.',anxious:'"I\'ve had better days."'}},me.phraseBankDunnoAsk={type:"random
",happy:{last:-1,phrase:["\"I'm sorry, Inspector. I don't know what you're talking about.\"",'"Sorry. I don\'t know anything about that."','"Sorry, I don\'t follow you, Inspector."']},calm:{last:-1,phrase:['"Say again?"','"I don\'t know about that."','"I don\'t understand. Can you ask that differently?"',"\"I don't know what you're referring to.\""]},gloomy:{last:-1,phrase:['"Sorry, I don\'t know about that."',"Mr. Baxter shrugs his shoulders.",'"I don\'t know enough about that to say anything."']},anxious:{last:-1,phrase:['"I just don\'t know about that."','"I don\'t know."','"What\'s with all these questions?"']}},me.phraseBankDunnoTell={type:"random",happy:{last:-1,phrase:["\"Sorry, I don't know what you're talking about.\"","\"Sorry, I don't understand what you're saying.\"","\"Sorry, I don't follow what you're telling me.\""]},calm:{last:-1,phrase:['"Say again?"',"Mr. Baxter looks at you like a deer in the headlights. What you've said has gone way over his head.","\"I don't understand what you're saying
\"","\"I don't understand what you're trying to tell me.\""]},gloomy:{last:-1,phrase:['"Sorry, I don\'t know how to respond to that."','"Okay."','"Alright, Inspector."']},anxious:{last:-1,phrase:['"I don\'t care about that."','"Why don\'t you focus on your case rather than than this irrelevant stuff?"','"Fine. Now tell me about something that I should care about."']}},me.phraseBankDunnoShow={type:"random",happy:{last:-1,phrase:["\"Sorry, I don't know why you're showing me this.\"",'Mr. Baxter looks at you oddly. "Why are you showing me this?"',"\"Sorry, I don't understand what you're showing me.\""]},calm:{last:-1,phrase:['"What? Why are you showing me this?"','"I don\'t think I follow."','"I don\'t understand what this means."','"I don\'t know what to say."']},gloomy:{last:-1,phrase:["\"I don't see why you're showing me this.\"","Mr. Baxter's expression of indifference tells you he doesn't really care to see that.",'Mr. Baxter sighs, "Fine."']},anxious:{last:-1,phrase:['"Why are you showing me that?"','"I
don\'t care for that."','"Why don\'t you focus on your case on more important things?"']}},me.describe=function(){displayMessageP("Mr. Baxter is a middle aged man. He has a round face, a receding hairline, \n        and many laugh lines. He has a perpetual twinkle in his eye and a slight, yet constant smile. \n        He reminds you of your favourite uncle, the one who gave enormous bear hugs. He's dressed in a light shirt, dark pants, and atie.")},me.hibye=function(e){this.smalltalkRespond(e)},me.howAreYou=function(){this.smalltalkRespond("howareyou")},me.knock=function(e,o){"SalonC"==e&&(displayMessageP("Mr. Baxter opens the door and invites you in."),objs[o].setOpened())},me.fingerprintResponse=function(e,o,s,a){displayMessageP("\"Well, I don't really think that's necessary, but anything for you, Inspector.\"")},me.askAbout=function(e){switch(e){case"AlarmPanel":displayMessageP('"You\'ll need to ask Ken about that."');break;case"Ally":displayMessageP("\"Oh, she's delightful. You know, she's the first pers
on our guests are \n                going to see here at Happyland. With her cheerful personality, she sets the right first \n                impression and starts our guests' stay with us on the right note.\""),this.alterMood(.2,0),awareOf("Ally");break;case"BallroomDoorway":displayMessageP('"Magnificent isn\'t it?"');break;case"Ballroom":displayMessageP("\"We're using the ballroom as a temporary office this week and next. Once we expand, we'll have a floor just \n                    for offices and staff.");break;case"Baxter":case"Yourself":displayMessageP('"Not much to say... I founded Happyland about six years ago with a dream \n                of building a big theme park. I teamed up with Frankie shortly after. We built this hotel, \n                then the Joyville prototype last year. Things were looking swell until...today."'),this.alterMood(-.5,-1),awareOf("FranksBody"),awareOf("FranksDeath"),awareOf("Joyville");break;case"BaxterCabinet":displayMessageP('"Oh, I keep my business papers in there."')
;break;case"BaxterDesk":displayMessageP('"Just my desk. That\'s where I work."');break;case"Building":displayMessageP("\"The resort cost us a pretty penny to build but it's very lucrative. We might be \n                in the middle of nowhere, but we're midway between three major cities with a lot of travel in between.\"");break;case"Bus":displayMessageP("\"There's a bus that will be taking most of the staff back to Cornville. It arrives here around 8 o'clock. I live here at the hotel, so I'll be staying.\"");break;case"Canopy":displayMessageP('"We added the canopy after noticing there were no shaded areas in Joyville. When people are comfortable, they\'re happy."'),awareOf("Joyville");break;case"Car":case"Ride":displayMessageP('"The Megacoaster. Frankie and I rode it every morning. Neither of us drink coffee, so the \n                    ride is how we get our energy boost in the morning. This morning started like every other. I rode first \n                    and it was the same as always. Frankie went s
econd. He started okay, but his car kept getting faster and faster.\n                        It has automatic brakes to slow it down some of the corners. It\'s as if those brakes didn\'t work and," his voice \n                        reduces to a whisper, "he took the last corner too fast."'),this.alterMood(-1,-1),awareOf("SafetySystem");break;case"CauseCrash":displayMessageP('"Well, I don\'t know what caused the crash. I suggest you talk to Jared to find out more."');break;case"Chandelier":displayMessageP('"A beautiful piece of art. During the day, the sun lights things up in the lobby, but it was missing a welcoming glow during the night. I picked out that chandelier with Ally."'),awareOf("Ally");break;case"ControlPanel":displayMessageP("\"I don't know much about that. We hire a -- okay, Jared's my friend's nephew -- to come in and \n                operate the Megacoaster. He's good with technology, so I figured he could operate it.\""),awareOf("Jared");break;case"Cooper":case"CoopersBody":this.events.EVE
NT_COOPER_IS_DEAD.known?(displayMessageP('"Mr. Cooper. He was a good man. A perfectionist. A good thing, I suppose in his \n                    line of work. He\'s been with us ever since we opened about four years ago. I was always very happy with his work."'),this.alterMood(-.5,-.5)):displayMessageP("\"Mr. Cooper. He's a perfectionist, which is good in his line of work. I don't \n                    know much about him. He's been with us ever since we opened about four years ago. Very happy with his work.\"");break;case"CoopersDeath":displayMessageP('"A tragedy. You know, he led a very simple life. Had no family or next of kin, but he spoke of friends in the environmental community."');break;case"CoopersWine":displayMessageP('"Mr. Cooper liked to drink. But it never affected his performance on the job. I supposed I looked the other way, but I saw no harm in that."');break;case"Cornville":displayMessageP('"I like Cornville. Small town. I grew up in a large city, but it was too busy and fast-paced. I like th
e small town feel, although I spend most of my time here at the hotel."');break;case"Davis":displayMessageP("\"Ms Rachel Davis. She's been on the finance team for about a year now. She's been in \n                charge of raising money to fund our expansion. I must say she's been doing well as she's lining up investors \n                left and right. Definitely a mover and shaker. I'm tempted to appoint her as the next CFO, but \n                I need her to continue her excellent work securing investors.\""),awareOf("FinancialReport");break;case"DeskBlotter":case"DeskOrganizer":displayMessageP("Mr. Baxter smiles and lowers his head. \"Frankie received the blotter and the desk organizer as a gift. He \n                    promptly gifted them to me, saying he had no use for them. He wasn't the world's most organized man.\"");break;case"ElectricTypewriter":displayMessageP("Ms. Davis brought in her own typewriter. Says she's more efficient using it than any other kinds."),awareOf("Davis");break;case"Enemie
s":displayMessageP("\"I can't think of anyone who'd want to cause harm to anyone here at Happyland. In many ways, we're one big happy family.\"");break;case"Eva":displayMessageP('"Eva is our housekeeper. She\'s ill at the moment. She should be back tomorrow."'),awareOf("Eva");break;case"Expansion":displayMessage("\"We've already purchased some land to the north of the hotel and plan to build an enormous theme park, called 'Happyland.' \n                We'll also be growing the hotel itself to accommodate about 3,000 guests. We've raised considerable money so far and are just waiting to line \n                up the next group of investors and then we'll be ready to go.\" "),isInRoom("Baxter","SalonC")&&displayMessageP('Mr. Baxter motions at the posters on the wall. "Here\'s what we expect it to look like."');break;case"FinancialReport":if(doIHave("FinancialReport"))return void displayMessageP('"I already gave you the latest one."');displayMessage("SalonC"==here?"Baxter goes to his filing cabinet and pulls o
ut a paper. ":"Baxter reaches into his jacket and pulls out a paper. "),displayMessageP('"This is the balance sheet for the company. Lina prepares it once a week. It shows we\'re swimming in cash," he says beaming.'),this.alterMood(1,1),objs.FinancialReport.in="Baxter",objs.FinancialReport.touch();break;case"Floors":displayMessageP("\"I don't know what to say. They're just floors.\"");break;case"Flowers":displayMessageP('"My mother was a botanist who kept all sorts of exotic flowers \n                around our home. When you surround yourself with the colors and perfume of flowers, how \n                can anyone not be happy? Ivan, the gardener, shares that philosophy."'),awareOf("Ivan");break;case"Fountain":displayMessageP("\"Frankie's wife fell in love with that fountain when they were vacationing in Italy. \n                He spared no expense --and I mean no expense-- to take it home with them. After his wife passed, \n                he donated it to the hotel. With the hours he put in, he'd see it
more here than at home.\"");break;case"FoodBooths":displayMessageP('"We try to cater to every kind of appetite in Joyville."'),awareOf("Joyville");break;case"FrankDesk":displayMessageP('"If you\'ve seen it, his desk is the same as mine. Except Frankie never liked oak, so his is maple."');break;case"FranksBody":case"FranksDeath":displayMessageP("Baxter looks downward and speaks softly. \"I will miss him dearly. \n                He is a -- was a good man. He was really the driving force behind the expansion. I'm \n                more the visionary, but he was a man of action. Made things happen. I'm not sure how \n                we're ever going to find someone to fill his shoes.\""),this.alterMood(-1,-1);break;case"FranksKey":displayMessageP('"Oh, yes. That would be the key to Frankie\'s secure cabinet, where he stores our cash."'),awareOf("SecurityCabinet");break;case"Fumigation":displayMessageP('In my early twenties, I spent a night at a hotel that I discovered was infested with \n                bed bug
s. Gross. I never want any of our guests experiencing that. So we shut down once a year and do a deep \n                cleaning and fumigation, whether it needs it or not."');break;case"GardenShears":case"GardenSupplies":case"GardenTools":displayMessageP('"While I appreciate the beauty of flowers, I know nothing about growing them."');break;case"Generator":displayMessageP('"I think there\'s a generator that runs the Megacoaster. Jared would know more about that."'),awareOf("Jared");break;case"GrandHall":displayMessageP('"The staff and I spent much time designing that room. We wanted to create a hub where people could just comfortably hang out. \n                    I think Frankie knocked it out of the park by adding in the fountain. It provided the needed focal point."');break;case"Happyland":displayMessageP('"Happyland has been a dream of mine since I was ten years old. We have \n                a seven year plan to build it. First we built the hotel, then the Joyville prototype. As \n                soon
as we get our funding, we\'re going ahead with a five year construction to build Happyland."'),this.alterMood(-.5,-.5),awareOf("Joyville");break;case"Habitat":case"Newspaper":displayMessageP('"There was some concern that the land we were planning to build on belonged to the  \n                habitat of some type of endangered cougar. I was very relieved when they found that the land was not used by that species \n                and it\'s okay for us to expand."'),awareOf("Habitat");break;case"HairSpray":displayMessageP('"As you can see," he smiles and slides his palm over his balding head "I don\'t have much to work with here. I don\'t use that stuff."');break;case"HedgeDoorway":displayMessageP("\"Ivan cleverly pulled that off. When our guests are here, I don't want to distract them by seeing the 'behind the scenes' stuff. I want to immerse them in the magic of Happyland.\""),awareOf("Ivan");break;case"Ivan":displayMessageP("\"Ivan is our gardener. He's an artist when it comes to arranging flowers.\n
          Wonderful, wonderful work."),awareOf("Flowers");break;case"Jared":displayMessage("\"Jared's my friend's nephew. He had some trouble at school a number of years ago and had \n                a hard time getting work. But, he's got a knack for technology, so I figured I'd give him a second chance. \n                I have a gut feel for people and I think he's a good kid."),this.informed("EVENT_CUTWIRES")?displayMessageP(" I knew he didn't cause the crash.\""):displayMessageP(" I don't think he intentionally caused the ride to crash. But if he didn't, who or what did?\""),awareOf("Ride");break;case"Job":displayMessageP("\"Technically, I'm the Chief Operating Officer, but I'm not much for titles. I see my role as finding out what \n                    my employees want and finding the things that get in their way and removing those obstacles. In many ways, I feel I work for them.\"");break;case"Joyville":displayMessageP('"Joyville is our first foray into theme parks, a prototype if you will. That wou
ld give us some practice at \n                    running a theme park before we scale up. Also, it provides us with more income to help fund the expansion."');break;case"Ken":displayMessageP("\"Ken has worked with me for the last four or five years. Extremely loyal. Fortunately, we \n                haven't had too many incidents requiring his attention. To be honest, though, I'm a bit disappointed that he \n                hasn't been able to nail down the source of these threatening letters. And if Frankie's death was not an \n                accident, how did he not see it coming?\""),awareOf("ThreatNote"),this.alterMood(-.5,-.5);break;case"Lina":displayMessageP('"Lina. Yes, she was working closely with Frankie on setting up a proper accounting system for \n                us. See, Frankie was never an accountant. He has a knack for managing money, but it was very informal. With millions of \n                dollars coming from the investors, we need a better way to organize our financial affairs. Lina\'
s much more organized than \n                Frankie ever was. She summarizes our financials in a weekly financial report."'),awareOf("FinancialReport");break;case"LinasKey":displayMessageP('"I don\'t know where Lina keeps it, but she and Frankie have the only keys to the secure cabinet."'),awareOf("SecurityCabinet");break;case"Lobby":case"ReceptionCounter":case"Posts":case"VelvetRopes":displayMessageP('"We wanted to create a grand first impression for our guests and pamper our guests. Ally helped a lot in designing it."'),awareOf("Ally");break;case"Map":displayMessageP('"It\'s a map, Inspector. I think it ought to be self-explanatory." Did he just roll his eyes at you?');break;case"MasterKey":displayMessageP("\"I'm not fond of the idea of someone using a master key to snoop around. But I'm \n                entrusting you to use it wisely, Inspector.\"");break;case"MidwayGames":case"PicnicTables":displayMessageP('"Frankie spent his summers working at the State fair. He wanted to create the same kind of atmo
sphere in Joyville with the games and food."'),awareOf("Joyville");break;case"MiscPapers1":displayMessageP('"Oh, those are just some business papers."');break;case"CleaningSupplies":case"Mop":case"Vacuum":this.events.EVENT_COOPER_IS_DEAD.known?(displayMessageP("\"That's really Mr. Cooper's domain. I guess I'll need to hire someone new to take his place.\""),this.alterMood(-.5,-.5)):displayMessageP("\"That's really Mr. Cooper's domain.\"");break;case"Motive":displayMessageP('"I really can\'t think of any."');break;case"ParkingLot":displayMessageP('"It currently has room for one hundred cars, but we\'re going to expand it for a capacity of one thousand."');break;case"Path":displayMessageP('"Isn\'t it gorgeous? I gave Ivan full control over the look and feel and smell of the path. He did a fantastic job!"'),this.alterMood(.2,0);break;case"Piano":displayMessageP('"The piano adds just the right kind of ambience to the lounge. We have a piano player come in every now and then to entertain the guests."'),awareOf("L
ounge");break;case"PileOfCash":if(this.events.EVENT_SHOWN_WAD_OF_CASH.known){displayMessageP("\"I have no idea how Mr. Cooper got that money. He has a master key \n                    to clean Frankie's office but he shouldn't have a key to the secure cabinet.\""),awareOf("SecurityCabinet");break}displayMessageP("What money?");break;case"Restaurant":case"RestaurantDoor":displayMessageP('"The restaurant is closed this week."');break;case"SafetySystem":displayMessageP('"I don\'t know how any of that tech works. Ask Jared."'),awareOf("Jared");break;case"SalonB":case"SalonC":displayMessageP("\"Frankie and I turned the two Salons on this floor into offices. We'll have to go back to \n                    working from our rooms next week. Once we expand the resort, we'll have our own dedicated offices again.\"");break;case"SecurityCabinet":displayMessageP("\"Frankie keeps the secure cabinet in his office. He always told us: <i>'It's not a safe, \n                it's a secure cabinet. Safes are in the movies, hidde
n behind paintings. A secure cabinet is where companies \n                store their money.'</i> Frankie didn't trust banks much. He preferred dealing in cash and keeping the cash close \n                at hand. Only he and Ms. Sanchez have the keys to it. I never bother to look at it, as I have a financial \n                report telling me exactly how much we have.\""),awareOf("FinancialReport"),awareOf("Lina");break;case"StolenMoney":this.events.EVENT_SAFE_IS_EMPTY.known?(displayMessageP("\"There's almost one hundred thousand dollars missing. If you can't find it, we'll be \n                    forced to file for bankrupcy.\""),this.alterMood(-2,2)):displayMessageP('"What stolen money?"');break;case"ThreatNote":displayMessage('"We started receiving threats in the mail a couple of weeks ago, demanding \n                we halt our plans to expand. Bah! There are always people who oppose progress and development. \n                Whatever. Thought they were being written by random kooks anyways. But mor
e letters followed \n                that were increasingly threatening. I chucked them all out'),state.baxterGivesThreatNote?displayMessageP(", except the one I gave you."):playerIsIn("SalonC")?(displayMessageP(', except for this one." He walks over to the filing cabinet, opens it, \n                    and gives you a sheet of paper. "It appears they may have followed through on their threat. That\'s what you \n                    need to find out."'),autoTakeItem("ThreatNote"),state.baxterGivesThreatNote=!0):displayMessageP(" except one. Come to my office sometime and I'll show it to you.");break;case"Track":displayMessageP('"As far as I could tell, the track wasn\'t damaged or broken in any way when we got on the ride."');case"Wake":state.wake_stage>0?(displayMessageP("\"We're having an informal gathering for Frankie at 3pm in the lounge. You're welcome to join us, but please respect that it may not be the best time to ask many questions. \n                        I'd rather not give the impression that
I suspect one of them might be responsible for his death.\""),state.cooper_dead&&(displayMessageP('"Oh, and I suppose we will also be celebrating Mr. Cooper\'s life as well," he adds softly.'),this.alterMood(-.5,-.5))):displayMessageP('"We had a wake this afternoon for Frankie in the lounge. We shared some old stories."');break;case"Wine":state.davis_served_wine?displayMessageP('"The only wine I\'ve had recently is the fine red that Rachel served at the wake."'):displayMessageP('"I don\'t know what wine you mean. The liquor cabinet in the lounge is all locked up. \n                    Lord knows, I could sure use some."'),awareOf("Davis");break;default:this.respond(this.phraseBankDunnoAsk)}},me.show=function(e){switch(e){case"Analyzer":case"FingerprintKit":displayMessageP("\"I don't know anything about technology, Inspector. As long as that contraption can help you \n                solve this case, I'm happy it's here.\"");break;case"ElectricTypewriter":case"StandardTypewriter":displayMessageP("\"I'm sure y
ou have a good reason to lug that heavy typewriter around. Could you please return it \n                to the ballroom as soon as you're done with it?\"");break;case"Flower":displayMessageP("\"I hope you didn't pick that here, Inspector. Ivan won't be the only one upset.\""),this.alterMood(-.2,.2),awareOf("Ivan");break;case"Fountain":displayMessageP('"Yes, it\'s a piece of art. Something Frankie donated to the resort."'),awareOf("FranksBody");break;case"FranksKey":displayMessageP('"Oh, yes. That would be the key to Frankie\'s secure cabinet, where he stores our cash."'),awareOf("SecurityCabinet");break;case"GardenShears":displayMessageP("\"Those look like something Ivan would use. I'm sure he'd appreciate it if you could return them.\""),awareOf("Ivan");break;case"HairSprayAnalysis":if(displayMessage('"From what I can gather this is a chemical report of hairspray. '),this.inform("EVENT_SHOWN_HAIRSPRAY_ANALYSIS"),this.informed("EVENT_SHOWN_WINE_ANALYSIS"))return displayMessageP("Your analysis of Mr. Cooper's
wine showed the same chemical.\""),void(this.events.EVENT_SHOWN_VOMIT_ANALYSIS.known&&(displayMessageP('"Wait a moment, I see the same chemical in the vomit analysis. A neurotoxin? Cooper drank the hairspray?"'),this.alterMood(0,2)));this.events.EVENT_SHOWN_VOMIT_ANALYSIS.known?displayMessageP('Wait a moment, I see the same chemical in the vomit analysis. A neurotoxin? Cooper drank the hairspray?"'):displayMessageP('Why is this important?"');break;case"LinasKey":displayMessageP("\"That looks like the key to Frankie's secure cabinet. Um...no, Oh, yes, that's Lina's copy.\""),awareOf("SecurityCabinet"),awareOf("FranksKey");break;case"Map":displayMessageP('Mr. Baxter sighs. "I know how to get around my own resort, Inspector."');break;case"MasterKey":displayMessageP("\"I'm not fond of the idea of someone using a master key to snoop around. But I'm \n                entrusting you to use it wisely, Inspector.\"");break;case"NewsArticle":this.inform("EVENT_SHOWN_FAKE_NEWS_ARTICLE"),displayMessageP('Baxter reads t
he paper carefully. "Hmmm...this is wrong. Normally the newspaper is \n                really good, but they got some important facts wrong here."'),(state.eDocs.typewriter||state.eDocs.strips)&&(this.alterMood(0,.5),state.cooper_dead?displayMessageP("\"You're saying you have evidence that Ms. Davis wrote this fake article and that you found it in Mr. Cooper's room. I  \n                        imagine he was very upset when he read that. He was an avid environmentalist. But why would she deliberately deceive him?\""):displayMessageP("\"You're saying you have evidence that Ms. Davis wrote this fake article and that you found it in Mr. Cooper's room. Oh, I can \n                        imagine he'd be very upset. He's an avid environmentalist. But why would she deliberately deceive him?\"")),awareOf("Habitat");break;case"Newspaper":displayMessageP('"Ah, the Cornville paper," Baxter thumbs through it briefly.'),this.informed("EVENT_SHOWN_FAKE_NEWS_ARTICLE")&&displayMessageP('"This story is accurate, unlike the
article you showed me earlier."'),this.inform("EVENT_SHOWN_NEWSPAPER"),awareOf("Habitat");break;case"PaperScraps":this.informed("EVENT_SHOWN_FAKE_NEWS_ARTICLE")?(displayMessage('Mr. Baxter scans through the paper strips. "Hmmm...I recognize some of these phrases from the news article you showed me earlier." \n                    He looks up at you. "You say you found these in Ms. Davis\' room? That means she at least had a hand in creating the news article.'),state.eDocs.typewriter.discovered?displayMessageP(" And you say the typed letters match those from Ms. Davis' typewriter. I say she forged the news article."):displayMessageP('"')):state.eDocs.typewriter.discovered?displayMessageP("You say the typed letters match those from Ms. Davis' typewriter? Okay. She typed up these words and cut the paper into pieces. To what end?"):displayMessageP('"These little strips of paper are too short to read. Did you throw something into a shredding machine?"');break;case"PileOfCash":state.cooperGivesPlayerCash?displayMe
ssageP('"That looks just like the stacks of money that Frankie stores in his \n                        secure cabinet. You say someone gave it to Cooper? Only Frankie and Lina have access to it."'):displayMessageP('"That looks just like the stacks of money that Frankie stores in his \n                        secure cabinet. How did Cooper get his hands on that? Only Frankie and Lina have access to it."'),this.inform("EVENT_SHOWN_WAD_OF_CASH"),this.alterMood(0,.5),awareOf("SecurityCabinet");break;case"Poem":switch(this.getMood()){case MOOD_HAPPY:displayMessageP('Baxter smiles. "This takes me back to when I was a kid."');break;case MOOD_CALM:displayMessageP('"Ahhh the garbage truck. I liked watching the garbage men, too."');break;case MOOD_GLOOMY:displayMessageP("\"Well, it looks like you're putting more effort into writing childish poems than solving this case! \n                        I'm going to have to call your boss to tell him what I think of your time management skills.\"");break;case MOOD_ANXIOUS:dis
playMessageP('"Bah! Not only is the poem about garbage. It is garbage." He crumples it up and throws it back to you.')}break;case"PoetryAnalysis":displayMessageP('"Inspector," Baxter says very slowly. "I\'m sure you have better things to do than showing me this."'),this.alterMood(-.2,.5);break;case"SecurityCabinet":if("SalonB"==here)return void(objs.SecurityCabinet.isOpen()?displayMessageP('"What? Where is the money?"'):displayMessageP('"Yes, here it is."'));displayMessageP('"The secure cabinet is in Frankie\'s office."');break;case"ShardAnalysis":this.tellAbout(e);break;case"StolenMoney":displayMessageP("\"That's it! That's the money that was in the secure cabinet! I recognize the elastic bands \n                around each stack. Thank you so much, Inspect-- wait! There should be a lot more money here.\""),awareOf("SecurityCabinet"),this.alterMood(1,1);break;case"ThreatNote":this.tellAbout(e);break;case"VomitAnalysis":displayMessageP("\"From what I can gather this is a chemical report of Mr. Cooper's vomit
There's a neurotoxin? He was poisoned!\""),this.inform("EVENT_SHOWN_VOMIT_ANALYSIS"),this.informed("EVENT_SHOWN_HAIRSPRAY_ANALYSIS")&&(displayMessageP('"Wait a moment, I see the same chemical in the hairspray analysis. A neurotoxin? Cooper drank the hairspray?"'),this.alterMood(-.5,.5));break;case"WineAnalysis":this.inform("EVENT_SHOWN_WINE_ANALYSIS"),this.informed("EVENT_SHOWN_HAIRSPRAY_ANALYSIS")?(displayMessageP('"Wait a moment, I see the same chemical in the hairspray analysis. A neurotoxin? There was hairspray in his wine?"'),this.alterMood(-.5,.5)):(displayMessageP('"According to this, there was poison in Mr. Cooper\'s wine. How could poison get into the wine?"'),this.alterMood(-.5,.5));break;case"Vow":displayMessageP("Baxter reads the paper. \"That's a nice little poem. Now why don't you go and act on it?\""),this.alterMood(0,.5);break;case"AllyFingerprints":case"BaxterFingerprints":case"CooperFingerprints":case"CoopersBodyFingerprints":case"DavisFingerprints":case"EvaFingerprints":case"FranksBodyFi
ngerprints":case"IvanFingerprints":case"JaredFingerprints":case"KenFingerprints":case"LinaFingerprints":displayMessageP('"Okay, so you have '+objs[objs[e].of].uniqueName+"'s fingerprints. Did you find "+objs[objs[e].of].hisher+' prints on anything else?"');break;case"NewsArticleFingerprints":case"HairSprayFingerprints":case"ControlPanelFingerprints":case"TelephoneFingerprints":case"ElectricTypewriterFingerprints":case"StandardTypewriterFingerprints":displayMessageP('"Well, that makes sense. The '+objs[objs[e].from].uniqueName+" belonged to "+objs[objs[e].of].uniqueName+'."');break;case"FranksKeyFingerprints":displayMessageP('"Well, that makes sense. The key belonged to Frankie."');break;case"CoopersWineFingerprints":if(!state.cooperWineFingerprintsAnalyzed)return void displayMessageP('"I see fingerprints on your card, but I don\'t know to whom they belong."');if(state.cooperFingerprintsAnalyzed&&state.davisFingerprintsAnalyzed)return void displayMessageP("\"It makes sense that Cooper's fingerprints are on it
, but not Ms. Davis'. As far as I know, \n                        the two of them never spent any time together.\"");if(state.davisFingerprintsAnalyzed)return void displayMessageP("\"Why would Ms. Davis' prints be on that bottle? I've never seen her interact with Mr. Cooper.\"");if(state.cooperFingerprintsAnalyzed)return void displayMessageP("\"It's obvious that Mr. Cooper's prints would be on the bottle. But to whom do the other ones belong?\"");displayMessageP('"I just see numbers, Inspector. Don\'t you need to do a further analysis to tell who left those prints?"');break;case"LinasKeyFingerprints":"Davis"==objs[e].of?(displayMessageP('"Ms. Davis\' prints were on the key? That means she could have accessed the secure cabinet!"'),this.alterMood(0,1),awareOf("SecurityCabinet")):displayMessageP('"Well, that makes sense. That key belongs to Lina.');break;case"SecurityCabinetFingerprints":state.davisFingerprintsAnalyzed?(displayMessageP("\"That's really strange. Ms. Davis' fingerprints should not be on the secu
re cabinet.\""),this.alterMood(0,.5)):displayMessageP('"I would expect those prints to belong to Frankie and Ms. Sanchez. No one else has access to the secure cabinet, not even me."');break;case"GardenShearsFingerprints":this.tellAbout(e);break;case"StolenMoneyFingerprints":state.davisFingerprintsAnalyzed&&state.stolenMoneyFingerprintsAnalyzed?(displayMessageP('"Ms. Davis stole the money? Well done inspector, it looks like you\'ve caught a thief."'),this.alterMood(0,2)):displayMessageP('"Okay, but whose fingerprints are they?"');break;default:this.respond(this.phraseBankDunnoShow)}},me.tellAbout=function(e){switch(e){case"Analyzer":displayMessageP("\"I don't care much about technology, Inspector. As long as that contraption can help you \n                solve this case, I'm happy it's here.\""),this.alterMood(.5,0);break;case"CoopersBody":if(state.cooper_dead){if(this.events.EVENT_COOPER_IS_DEAD.known)return void displayMessageP("\"Yes, I know he's gone. Why aren't you doing anything to find out who killed
him and to protect us?\"");displayMessageP('"That\'s horrible. Do you know how he died? Was it murder? Please protect us!" Baxter starts hyperventalating. \n                        "I need to lie down."'),this.inform("EVENT_COOPER_IS_DEAD"),ActivateEvent(eventBaxterChills,0)}else displayMessageP("\"I don't understand.");break;case"CoopersWineFingerprints":this.show(e);break;case"CutWires":case"SafetySystem":state.discoveredWiresCut||(displayMessageP('"Technology. I don\'t get that stuff."'),this.inform("EVENT_CUTWIRES")),displayMessageP('"So the wires were intentionally severed. That means someone intentionally wanted to crash the Megacoaster. \n                So it <i>was</i> murder. But we need evidence as to who and how."'),this.alterMood(-1,1);break;case"GardenShears":if(state.shears_discovered){if(state.shearsFingerprintsAnalyzed&&state.cooperFingerprintsAnalyzed&&state.shearsShardsAnalyzed)return displayMessageP("\"So you're saying that you've found these garden shears near the severed power cables. A
nd the blades  \n                        contain electrical wire fragments and Mr. Cooper's fingerprints are on the shears. That sounds pretty convincing to me. Arrest him!\""),void this.alterMood(1,0);if(state.shearsFingerprintsAnalyzed&&state.cooperFingerprintsAnalyzed)return displayMessageP("\"The wires appear deliberately cut and you found a pair of garden shears nearby with Mr. Cooper's prints on them. \n                        That sounds like you're pretty close, but can you prove the garden shears were used to cut the wires?\""),void this.alterMood(.5,0);if(state.shearsShardsAnalyzed)return displayMessageP('"You have evidence here that the garden shears were used to cut electrical cables. A start maybe. But which cables? And who?"'),void this.alterMood(0,1)}displayMessageP('"So the wires were intentionally severed. That means someone intentionally wanted to crash the Megacoaster. \n                So it <i>was</i> murder. But we need evidence as to who and how."'),this.alterMood(-1,1);break;case"Elec
tricTypewriter":state.eDocs.typewriter.discovered?(displayMessageP("\"So, Ms. Davis' typewriter has a little defect. Don't tell her. She paid an arm and a leg for that typewriter and she'd be most upset to hear it's not perfect.\""),state.eDocs.threat.discovered&&(displayMessageP('"Ms. Davis typed the threats, eh? I find that very unsettling. Why would she do that?"'),this.alterMood(-.5,.5)),state.eDocs.fakenews.discovered&&(displayMessage('"Ms. Davis typed this false news story and, possibly, gave it to Mr. Cooper?'),this.alterMood(-.5,.5),state.cooper_dead?displayMessage('" He was a passionate environmentalist. This fake story would surely have angered him. Angry enough to kill Frankie? I wonder...'):displayMessage("\" He's a passionate environmentalist. This fake story would surely have angered him. Angry enough to kill Frankie? I wonder..."),displayMessageP('"'))):displayMessageP("\"I'm not a big fan of technology myself. But if that typewriter makes Ms. Davis more productive, then I'm fully supportive o
f it.\"");break;case"FranksBody":case"FranksDeath":displayMessageP('"I already know he\'s dead. Get to the point!"'),this.alterMood(-.5,.5);break;case"GardenShearsFingerprints":state.shearsFingerprintsAnalyzed&&state.cooperFingerprintsAnalyzed&&state.discoveredWiresCut&&state.shearsShardsAnalyzed?(displayMessageP('"Cooper\'s fingerprints were on the shears that cut through metal wires. You say the same kind of wires that were cut at the Megacoaster? \n                        That looks like pretty conclusive proof that Cooper intentionally killed Frankie. Arrest him!"'),this.alterMood(-2,2)):state.shearsFingerprintsAnalyzed&&state.cooperFingerprintsAnalyzed&&state.discoveredWiresCut?(displayMessageP('"The fingerprints show that Cooper used the garden shears and you say the Megacoaster\'s safetey system wires were cut. I suppose they might have been cut by the shears."'),this.alterMood(-.2,.2)):state.shearsFingerprintsAnalyzed&&state.cooperFingerprintsAnalyzed?displayMessageP("\"Just because Cooper's fingerpr
ints are on the shears doesn't mean much. Maybe he just borrowed them.\""):displayMessageP('"I would expect those prints to belong to Ivan."');break;case"HairSprayAnalysis":displayMessage('"From what I can gather this is a chemical report of hairspray. '),this.inform("EVENT_SHOWN_HAIRSPRAY_ANALYSIS"),this.informed("EVENT_SHOWN_VOMIT_ANALYSIS")?(displayMessageP('Wait a moment, I see the same chemical in the vomit analysis. A neurotoxin? Cooper drank the hairspray?"'),this.alterMood(-.5,.5)):displayMessageP('Why is this important?"');break;case"NewsArticle":displayMessageP('"Can you show that to me?"');break;case"PaperScraps":displayMessageP('"Hmm... that seems strange. Can you show them to me?"');break;case"PileOfCash":displayMessageP('"What? That\'s hard to believe. Show me."');break;case"Poison":state.poison_found_in_vomit&&state.hairspray_poison?(displayMessageP('"Cooper was poisoned with hairspray!"'),this.alterMood(-.5,.5)):state.poison_found_in_vomit?(displayMessageP('"So, Cooper was poisoned."'),this.a
lterMood(-.5,.5)):displayMessageP('"This stuff looks dangerous. Why do people want to use hairspray?"');break;case"SecurityCabinet":if(!state.safe_is_empty)return void displayMessageP('"Yes, we have a secure cabinet. Many companies do. What of it?"');this.informed("EVENT_SAFE_IS_EMPTY")?(displayMessageP('Mr. Baxter glares at you. "Stop wasting my time telling \n                    me things I already know. Get cracking on the case already!"'),this.alterMood(-.5,1)):(this.inform("EVENT_SAFE_IS_EMPTY"),displayMessageP('"What do you mean? Let\'s go take a look."'),CancelAttention("Baxter"),ActivateEvent(eventBaxterShowsSafe,0));break;case"ShardAnalysis":if(state.discoveredWiresCut){if(state.shearsFingerprintsAnalyzed&&state.cooperFingerprintsAnalyzed&&state.discoveredWiresCut)return displayMessageP("\"So you're saying that you've found these garden shears near the cut power cables. And the blades  \n                            contain electrical wire fragments and Mr. Cooper's fingerprints are on the shears. Th
at sounds pretty convincing to me. Arrest him!\""),void this.alterMood(-2,3);displayMessageP('"You have evidence here that suggests the garden shears were used to cut electrical cables, like in the \n                    Megacoaster\'s safety system. Can you find out who used the shears?"'),this.alterMood(-.2,.2)}else displayMessageP('"You have evidence here that the garden shears were used to cut electrical cables. So what?"');break;case"StolenMoney":displayMessageP('"You found the missing money? Show me!"');break;case"ThreatNote":state.eDocs.threat.discovered&&state.eDocs.typewriter.discovered?(displayMessageP("\"Ah, so the threats were typed out on Ms. Davis' typewriter -- a typewriter she doesn't let anyone else use.\""),this.alterMood(-.2,.5)):displayMessageP('"What do you want to tell me about the threatening letter?"');break;case"VomitAnalysis":displayMessage("\"From what I can gather this is a chemical report of Mr. Cooper's vomit. "),this.inform("EVENT_SHOWN_VOMIT_ANALYSIS"),this.informed("EVENT_SHOW
N_HAIRSPRAY_ANALYSIS")?(displayMessageP('Wait a moment, I see the same chemical in the hairspray analysis. A neurotoxin? Cooper drank the hairspray?"'),this.alterMood(-.5,.5)):displayMessageP('Why is this relevant?"');break;default:this.respond(this.phraseBankDunnoTell)}},me.showMe=function(e,o,s,a){if(s.object.isHere())displayMessageP('"Here you go, it\'s right here."');else switch(s.object.objectName){case"SecurityCabinet":displayMessage('"The secure cabinet is in Frankie\'s office. "'),displayMessageP("Lounge"==here?'Ask me again after the wake."':"I'll take you there now.\""),ActivateEvent(eventBaxterShowsSafe,0);break;default:displayMessageP("SalonC"==here?"\"I'm sorry, Inspector. I'm too busy to show that to you in person. \n                    I'm sure you can use a map and your inspector skills to find that yourself.\"":"\"I'm not sure what you're referring to.\"")}},me.give=function(e,o,s,a){switch(s.object.moveTo(a.objectName),s.objectName){case"StolenMoney":displayMessageP("\"Thank you Inspector.
I'm going to keep this in my office for safe keeping. \n                I guess I misjudged you inspector. I guess we still don't know who stole it.\""),this.alterMood(1,1);break;default:displayMessageP('"Okay. I\'ll hold on to this for you."')}},me.askWhere=function(e){switch(e){case"AlarmPanel":displayMessageP('"There\'s an alarm panel in the Security Nook."');break;case"Ally":displayMessageP('"She should be at the reception desk."');break;case"BallroomDoorway":displayMessageP('"It\'s just outside the ballroom."');break;case"Ballroom":displayMessageP('"It\'s on the first floor of the hotel, east end."');break;case"Bar":case"Lounge":displayMessageP('"I hope you\'re not planning to drink while on duty, Inspector."');break;case"Baxter":displayMessageP('"Hello? I\'m right here."');break;case"Bus":displayMessageP('"The bus usually arrives around 8pm. It pulls up in the parking lot."');break;case"ControlPanel":displayMessageP("\"That's in Joyville.");break;case"Cooper":case"CoopersBody":this.informed("EVENT_COOP
ER_IS_DEAD")?displayMessageP('"That\'s not very darn funny."'):displayMessageP('"I assume he\'s doing his cleaning rounds."');case"Cornville":displayMessageP("\"It's about an hour west of here. Didn't you just drive here from Cornville?\"");break;case"Davis":displayMessageP("\"She's a workaholic. I'll bet you anything she's at her desk in the ballroom.\"");break;case"Fountain":displayMessageP("\"It's in the Grand Hall. I'm surprised you've forgotten.\"");break;case"FranksBody":displayMessageP('Baxter looks upward. "He\'s in a better place now."');break;case"FranksKey":displayMessageP('"He kept that key with him at all times."');break;case"Generator":displayMessageP('"It\'s somewhere around Joyville."');break;case"Habitat":displayMessageP('"Those lands lie to the north of the hotel. They\'re currently inaccessible."');break;case"Ivan":displayMessageP('"I imagine he\'s outside working his magic on his flowers."');break;case"Jared":displayMessageP('"He\'s still in room 206 in case you need to ask him any more q
uestions."');break;case"Joyville":displayMessageP('"Check your map."');break;case"Ken":displayMessageP('"He\'s usually at his desk in the lobby. If he\'s not there, he\'s likely \n                 patrolling the grounds or," shaking his head, "patrolling the women."');break;case"Lina":displayMessageP('"She\'s likely hard at work in the ballroom."');break;case"Newspaper":displayMessageP('"We usually have a copy or two in the lobby."');break;case"Ride":displayMessageP('"It\'s northwest of Joyville. Check your map."');break;case"SecurityCabinet":displayMessageP("\"That's in Frankie's office.\"");break;default:displayMessageP('"I don\'t know where that is."')}},objs.Cooper=new Employee("Mr. Cooper","Cooper"),me=objs.Cooper,objs.Cooper.synonyms=["cooper","janitor","caretaker","custodian","mr cooper","cooper's","mr cooper's"],objs.Cooper.hintName="Mr. Cooper (custodian)",objs.Cooper.fingerprint_data=[51.869,85.111,98.024],objs.Cooper.fingerprints="Cooper",objs.Cooper.in="GrandHall",objs.Cooper.guiltLevel=0,objs.Co
oper.first_aid=0,me.smalltalkResponses={hello:{happy:'Mr. Cooper smiles and nods his head, "hello."',calm:'"Hello."',gloomy:"Mr. Cooper acknowledges you.",anxious:'"Oh! Hello." You appear to have distracted Mr. Cooper out of a deep thought.'},goodbye:{happy:"Mr. Cooper smiles and nods his head.",calm:'"Goodbye."',gloomy:'"Bye."',anxious:"Mr. Cooper ignores you."},howareyou:{happy:'"I\'m fine, sir."',calm:'"I\'m alright."',gloomy:'"Fine," he says quickly.',anxious:'"I\'m fine." The tension in his face says otherwise.'}},me.phraseBankDunnoAsk={type:"random",happy:{last:-1,phrase:["\"I'm sorry, Inspector. I don't know what you're asking me.\"",'"Apologies. I don\'t know anything about that."','"Sorry, I don\'t follow you, Inspector."']},calm:{last:-1,phrase:['Mr Cooper shakes his head. "I don\'t know about that."','"I don\'t understand."',"\"I don't know what you're referring to.\""]},gloomy:{last:-1,phrase:['"I don\'t know about that."',"Mr. Cooper shrugs his shoulders.",'"I don\'t know enough about that to sa
y anything."']},anxious:{last:-1,phrase:['"I just don\'t know about that. Can I get back to work now?"','"I don\'t know."','"What\'s with all these questions? I feel you are interrogating me, Inspector."']}},me.phraseBankDunnoTell={type:"random",happy:{last:-1,phrase:["\"I don't know what you're talking about.\"","\"Sorry, I don't get what you're saying.\"","\"Sorry, I don't follow what you're trying to tell me.\""]},calm:{last:-1,phrase:['"Alright."','"Okay."',"\"I don't understand what that's all about.\""]},gloomy:{last:-1,phrase:['"Sorry, I don\'t know how to respond."','"Okay."','Mr. Cooper doesn\'t respond. "Sorry, Inspector. I had something on my mind. Can you ask again?"','"Alright, Inspector."']},anxious:{last:-1,phrase:['"I don\'t care about that."','"That\'s not important to me."','"Fine. But what does this have to do with me?"']}},me.phraseBankDunnoShow={type:"random",happy:{last:-1,phrase:["\"Sorry, I don't know why you're showing me this.\"",'Mr. Cooper looks at you strangely. "Why are you show
ing me this?"',"\"Sorry, I don't understand what you're showing me.\""]},calm:{last:-1,phrase:['"What? Why are you showing me this?"','"Why is this important?"','"I don\'t understand what this means."','"I don\'t know what to say."']},gloomy:{last:-1,phrase:['"Okay. Can I get back to my work, now?"',"Mr. Cooper seems to be tired of you showing him things.",'Mr. Cooper sighs, "Okay."']},anxious:{last:-1,phrase:['"You\'re wasting my time. I have a lot of cleaning to get to."','"I don\'t care for that."','"I don\'t care for that! I want to get back to my cleaning."']}},objs.Cooper.assist=function(){if(state.cooper_dying)switch(this.first_aid){case 0:displayMessageP("You look for a way to give first aid to Mr. Cooper. You prop him up on his side to \n                    make his breathing easier."),this.first_aid++;break;case 1:displayMessageP("His breathing is labored, you open his mouth and don't notice any obstructions."),this.first_aid++;break;case 2:displayMessageP("Mr. Cooper is clutching his stomach. You
don't see any wound or blood."),this.first_aid++;break;case 3:displayMessageP("Mr. Cooper is convulsing. You lay him back on his side to aid his breathing."),this.first_aid=1;break;default:displayMessageP("You're not sure how to help him.")}else displayMessageP("Mr. Cooper dismisses your offer to help.")},objs.Cooper.fingerprintResponse=function(e,o,s,a){displayMessageP('Mr. Cooper\'s eyes widen for a moment. "Very well, Inspector."'),this.alterMood(-2,-2)},objs.Cooper.hibye=function(e){state.cooper_dying?displayMessageP("Mr. Cooper is either unable to hear you or not able to respond."):this.smalltalkRespond(e)},objs.Cooper.howAreYou=function(){state.cooper_dying?displayMessageP("Mr. Cooper is either unable to hear you or not able to respond."):this.smalltalkRespond("howareyou")},objs.Cooper.describe=function(){return state.cooper_dying?(displayMessageP("Mr. Cooper is convulsing on the floor in visible discomfort."),!0):(displayMessageP("Mr. Cooper is the hotel custodian. He's a tall, lanky man with silver h
air. He's wearing a blue-gray uniform."),!0)},objs.Cooper.objdesc=function(){if(inMotion(this.objectName))return!0;if(state.cooper_dying)return!0;if(this.nodesc)return!0;switch(here){case"GrandHall":case"Hall12":case"BallroomFoyer":displayMessage("Mr. Cooper is here, mopping the floor.<br>");break;case"Hall21":case"Hall22":case"Hall23":case"Hall24":case"Hall25":displayMessage("Mr. Cooper is here, vacuuming.<br>");break;case"Lounge":displayMessage("Mr. Cooper is here.<br>");break;case"Ballroom":case"SalonB":case"SalonC":displayMessage("Mr. Cooper is here, emptying the trash.<br>");break;default:displayMessage("Mr. Cooper is here, tidying up.<br>")}return!0},objs.Cooper.events={EVENT_FRANKS_IS_DEAD:{known:!1,delta_pleasure:-2,delta_intensity:-2.5},EVENT_SHOWN_GARDEN_SHEARS:{known:!1,delta_pleasure:-1,delta_intensity:-1},EVENT_SHOWN_SHEARS_FINGERPRINTS:{known:!1,delta_pleasure:-2,delta_intensity:-2},EVENT_SHOWN_FAKE_NEWS_ARTICLE:{known:!1,delta_pleasure:-1,delta_intensity:-1},EVENT_SHOWN_NEWSPAPER:{known:!1,del
ta_pleasure:-1,delta_intensity:-2},EVENT_WENT_TO_WAKE:{known:!1,delta_pleasure:.5,delta_intensity:0},EVENT_DECEIVED:{known:!1,delta_pleasure:-3,delta_intensity:-3}},me.mood={current:{pleasure:2,intensity:1},default:{pleasure:3,intensity:1}},me.askAbout=function(e){if(state.cooper_dying)displayMessageP("Mr. Cooper can't hear you nor respond to you in his current state.");else switch(e){case"Ally":displayMessageP('"She\'s very friendly. One of the few people who actually talks to me."');break;case"Ballroom":displayMessageP('"It\'s a lovely room, but it takes a long time to fully clean."');break;case"Bar":case"Lounge":displayMessageP('"I quite like the lounge atmosphere. All the furniture in there means it takes a long time to clean."');break;case"Baxter":displayMessageP('"Mr. Baxter is a very kind man. He treats me well."');break;case"Building":displayMessageP('"This is a very beautiful building. Modern and easy to keep clean."');break;case"Bus":displayMessageP('"The people who live in Cornville take the bus h
ome for the weekend. I live here at the hotel."');break;case"CauseCrash":displayMessageP('"I don\'t know."');break;case"CleaningSupplies":case"Mop":case"Vacuum":displayMessageP('"Most companies force you to use the cheapest cleaning products. Mr. Baxter \n                lets me decide to use whatever cleaning products and tools I want."');break;case"Cooper":case"Yourself":displayMessageP("\"I grew up moving from foster family to foster family, I went to school for  \n                environmental studies. That's my passion, but I couldn't find work in that field. This was the \n                only work I could find. I don't mind it though, it gives me a lot of alone time to think.\"");break;case"CoopersBed":displayMessageP('"I don\'t see why my bed is important to you."');break;case"CoopersNightTable":displayMessageP('"I don\'t see why my night table is important to you."');break;case"CoopersUniform":displayMessageP('"Mr. Baxter insisted that I wear a uniform. He said it would improve my self-confidence \n
               and remind me of the importance of my job. He was right."'),this.alterMood(1,1);break;case"CoopersWine":displayMessageP('"A guilty pleasure, Inspector. I only drink after hours."'),this.alterMood(0,.2);break;case"Cornville":displayMessageP("\"I grew up in Cornville. I suppose it's as good a place as any. I like it out here better. \n                It's closer to nature. I like to take walks through the nearby forests and corn fields.\"");break;case"CutWires":if(state.shearsFingerprintsAnalyzed&&state.cooperFingerprintsAnalyzed){if(displayMessageP('Mr. Cooper is sweating. "I-I-I I did what had to be done. Someone left a newspaper article in my room saying\n                    the hotel expansion was going to wipe out the endangered cougars. I couldn\'t let them do that."'),this.alterMood(-2,-2),this.informed("EVENT_DECEIVED")){displayMessage('"Someone tricked me. They knew that could get me to--." Cooper begins sobbing. \n                        "Inspector, I have a confession to make. I cut
the Megacoaster power cables. It wasn\'t to hurt anyone. \n                        I didn\'t know anyone was riding it. I swear. I just wanted to delay the expansion so we could file another court injunction. \n                        Someone set me up. They used me! '),state.cooperGivesPlayerCash||(objs.PileOfCash.moveTo("Player"),state.cooperGivesPlayerCash=!0,displayMessage('They bribed me! Here!" He thrusts a wad of cash into your hands. "')),displayMessageP("I'm willing to pay for my sins, Inspector, but someone else is behind this.\""),this.alterMood(-5,-5);break}}else displayMessageP("\"That's a serious allegation, Inspector. You can't prove that.\""),this.alterMood(-2,-2);break;case"Davis":displayMessageP("\"I don't know her. She doesn't exactly treat the help very nicely.\"");break;case"Deception":displayMessageP('"Whoever made that fake article intended to deceive me. They know I am a nature lover and would \n                oppose any such development. Oppose it strongly enough to--" he stops shor
t.'),this.inform("EVENT_DECEIVED");break;case"Expansion":displayMessageP("\"I...ah...I've heard they want to expand the theme park. That's all I know.\"");break;case"Eva":displayMessageP("\"She's a good friend. Unfortunately, she's under the weather today but plans to be back tomorrow.\"");break;case"Floor":displayMessageP('"I hope it\'s clean enough for you, Inspector."');break;case"Flowers":displayMessageP('"Ivan does a good job making the flowers and plants look pretty."'),awareOf("Ivan");break;case"FramedPoster":displayMessageP("\"I'm a nature lover. I'm a proud member of Greenpeace.\""),this.alterMood(.5,.5);break;case"FranksBody":case"FranksDeath":this.alterMood(-2,-2),displayMessage('"A most unfortunate accident. '),displayMessageP("Lounge"==here?'As you can see, he was well liked by everyone."':"If you don't mind, Inspector, I really need to get back to cleaning.\"");break;case"Fridge":case"StaffFood":displayMessageP('"The staff is pretty good at keeping the fridge clean and not leaving their food in
there for too long."');break;case"FrontDoors":displayMessageP("\"You wouldn't believe how many fingerprints I have to wipe off those doors. I suppose people aren't used to automatic sliding doors.\"");break;case"Fumigation":displayMessageP('"I keep things really clean around here. Never seen a bed bug. I don\'t think the fumigation is needed, but \n                Mr. Baxter has his own ideas."');break;case"GardenShears":displayMessageP('"I...ah...Ivan uses the garden shears to keep the hedges well trimmed."'),this.alterMood(-2,-2),awareOf("Ivan");break;case"GardenSupplies":displayMessageP("\"That's Ivan's stuff. I keep telling him that those chemicals he uses aren't good for the land. But he says they make his flowers grow bigger.\""),awareOf("Ivan"),awareOf("Flowers");break;case"GardenTools":displayMessageP("\"That's Ivan's department.\""),awareOf("Ivan");break;case"Fountain":case"GrandHall":displayMessageP('"The Grand Hall is the room I like to clean the most because of the beautiful fountain and flowers
\n                The only part I dislike is fishing out the coins from the fountain. Mr. Baxter lets me donate that money to a nearby wild bird sanctuary."');break;case"Habitat":displayMessageP('Cooper\'s eyebrows furl ever so slightly. "I understand that they intend to expand the park into ecologically sensitive lands."'),this.alterMood(-1,-1);break;case"Happyland":displayMessageP('"I enjoy working here. The people are kind."');break;case"Ivan":displayMessageP('"He and I get along pretty well. The only thing we disagree on is his use of toxic chemicals to kill the weeds."');break;case"Jared":displayMessageP('"I don\'t know anything about the boy."');break;case"Job":displayMessageP("\"As head custodian, it's my job to ensure Happyland looks as clean and neat as possible. This is a slow week because \n                we're closed, but on a regular week, it's almost non stop cleaning. I actually enjoy it; it makes me feel good when everything is in its place.\"");break;case"Joyville":case"FoodBooths":case"M
idwayGames":case"PicnicTables":displayMessageP("\"I don't get out to Joyville very often. The food vendors and people who run the games are responsible for most of the clean up. I just \n                haul all their garbage away. As for 'fun and games,' that's not really my thing.\"");break;case"Ken":displayMessageP("\"He's okay. I often coordinate with him when we need to set up for an event. He's a real team player, always willing to help out.\"");break;case"Lina":displayMessageP('"Ms. Sanchez is very nice. She makes conversation with me when I\'m working in the ballroom. Not like that other one, Ms. Davis. She ignores me completely."');break;case"Lobby":case"ReceptionCounter":displayMessageP("\"The lobby is the room I clean the most. Not because it's dirtier or has the most traffic. Mr. Baxter says the guests' first impression is \n                extremely important. So I do my part to make sure they always see the lobby at its best.\"");break;case"MasterKey":displayMessageP('"I have a master key so I
can get into every room to clean it."');break;case"NewsArticle":displayMessageP("\"I-I found that article on my bed the other day. I don't know who left it, but it's no\n                secret that I'm a nature lover and that I would have been interested to know that the hotel plans to expand \n                onto sensitive lands.\""),awareOf("Habitat"),this.alterMood(-1,-2);break;case"Newspaper":displayMessageP('"I don\'t read the newspaper."');break;case"ParkingLot":case"Path":displayMessageP('"Ivan does all the cleaning and tidying up outdoors. I focus indoors."'),awareOf("Ivan");break;case"Piano":displayMessageP('"I don\'t play piano, but I enjoy listening to the piano player in the evenings."');break;case"PileOfCash":displayMessageP('"Someone left that money in my room after Mr Franks died. It was either a reward or \n                hush money to stay quiet. I don\'t know."');break;case"Posts":displayMessageP("\"I don't understand why people have to keep touching them and leaving their fingerprints. \
n                That drives me crazy. I'm always in the lobby polishing them.\"");break;case"Ride":displayMessageP("\"You'll never catch me on one of those rides. That's not my idea of fun.\"");break;case"SalonB":case"SalonC":displayMessageP('"I clean that office once per day. Usually when Mr. Franks or Mr. Baxter are eating so as not to disturb them."');break;case"SecurityCabinet":displayMessageP('"I don\'t touch that, not even to dust it."');break;case"TV":displayMessageP('"I enjoy some TV in the evenings to relax."');break;case"Shower":case"Sink":case"Toilet":case"Washroom":displayMessageP('"When we built the hotel, we made sure to get bathroom pieces that were easy to clean and maintain."');break;default:this.respond(this.phraseBankDunnoAsk)}},objs.Cooper.show=function(e){if(state.cooper_dying)displayMessageP("Mr. Cooper can't hear you nor respond to you in his current state.");else switch(e){case"GardenShears":this.inform("EVENT_SHOWN_GARDEN_SHEARS"),displayMessageP("Cooper's eyes widen. \"Um...ah...oh
..Those aren't mine. I think those belong to the gardener.\""),this.guiltLevel++;break;case"GardenShearsFingerprints":this.inform("EVENT_SHOWN_SHEARS_FINGERPRINTS"),state.showCooperFingerprintReport=!0,displayMessageP('"Well...um...I must have borrowed them from the gardener," he nods quickly, agreeing with himself.'),this.guiltLevel++;break;case"NewsArticle":this.inform("EVENT_SHOWN_FAKE_NEWS_ARTICLE"),state.showCooperFakeArticle=!0,displayMessageP('Cooper hangs his head and closes his eyes. He speaks in a whisper. "This made me so angry. \n                How dare we threaten an endangered species just for the sake of expanding our places of entertainment. This is \n                the problem with corporate greed."');break;case"Newspaper":this.inform("EVENT_SHOWN_NEWSPAPER"),state.showCooperNewspaper=!0,displayMessageP('"Yes, I have already read tha- wait." He silently reads the \n                article. He looks confused. "I don\'t understand. The article I read said the land <i>was</i> the habitat of
the western cougar.\n                I don\'t underst-." He looks up at you. "Someone has deceived me."'),awareOf("Deception"),this.inform("EVENT_DECEIVED");break;case"PileOfCash":displayMessageP('"Someone left that money in my room after Mr Franks died. It was either a reward or \n                hush money to stay quiet. I don\'t know."');break;case"PaperScraps":this.tellAbout("PaperScraps");break;case"ShardAnalysis":displayMessageP("\"I don't understand what this has to do with me. Those are Ivan's shears\"");break;default:this.respond(this.phraseBankDunnoShow)}},objs.Cooper.tellAbout=function(e){if(state.cooper_dying)displayMessageP("Mr. Cooper can't hear you nor respond to you in his current state.");else switch(e){case"CutWires":displayMessageP('"I don\'t know anything about that, Inspector. I only work on the inside of the hotel."');break;case"GardenShearsFingerprints":this.show(e);break;case"NewsArticle":displayMessageP('"I don\'t remember all the details in the article. Can you show it to me?"');bre
ak;case"Newspaper":displayMessageP('"I don\'t understand. Show me the newspaper."');break;case"PaperScraps":var o="";state.readNewspaper&&state.readFakeArticle&&(this.inform("EVENT_SHOWN_NEWSPAPER"),this.inform("EVENT_SHOWN_FAKE_NEWS_ARTICLE"),o="fake "),displayMessageP("\"The words on these papers look like the phrases used in the news article that was given to me. \n                You say you found these in Ms. Davis' room? Maybe she's the one who left the article in my room.\""),state.eDocs.fakenews.discovered&&state.eDocs.typewriter.discovered&&displayMessageP('"Why would she write this '+o+"article for me? I've been deceived.\""),this.inform("EVENT_DECEIVED"),awareOf("Deception");break;case"ShardAnalysis":displayMessageP("\"I don't understand what this has to do with me. Those are Ivan's shears\"");break;default:this.respond(this.phraseBankDunnoTell)}},objs.Cooper.askWhere=function(e){if(state.cooper_dying)displayMessageP("Mr. Cooper can't hear you nor respond to you in his current state.");else switch
(e){case"Ally":displayMessageP('"Probably at the front desk."');break;case"Ballroom":displayMessageP('"It\'s at the east end of the main floor."');break;case"Bar":case"Lounge":displayMessageP('"It\'s on the first floor."');break;case"Baxter":displayMessageP('"Probably in his office."');break;case"Cooper":displayMessageP('"Right here."');break;case"Cornville":displayMessageP('"It\'s a long bus ride away."');break;case"Davis":displayMessageP('"That lady is probably in the ballroom."');break;case"Fountain":displayMessageP('"The beautiful fountain is in the Grand Hall."');break;case"Ivan":displayMessageP('"Ivan\'s around here somewhere. Probably on the path between the hotel and Joyville."');break;case"Joyville":displayMessageP('"It\'s outside to the northwest."');break;case"Ken":displayMessageP('"I don\'t know, probably walking around."');break;case"Lina":displayMessageP('"I saw her earlier in the ballroom."');break;case"Ride":displayMessageP('"Outside at the west end of the grounds."');break;case"SalonB":case"
SalonC":displayMessageP("\"That's on the second floor, east end.");break;default:displayMessageP('"I\'m not sure."')}},objs.Cooper.askDidYou=function(e,o,s,a,t){if(state.cooper_dying)displayMessageP("Mr. Cooper can't hear you nor respond to you in his current state.");else switch(s.object.objectName){case"CauseCrash":case"CutWires":if(!state.rideCrashed)return void displayMessageP("\"I don't know what you're referring to.\"");this.guiltLevel<5?displayMessageP('"You have no evidence of that, Inspector!"'):displayMessageP("Cooper's voice goes soft. \"No one was supposed to be die. It was just to delay the expansion. \n                    I won't answer anything else without a lawyer.\"");break;default:displayMessageP("\"I'm not sure what you're asking.\"")}},objs.Cooper.arrest=function(e,o,s,a,t){displayMessageP("You place your handcuffs on Mr. Cooper and read him his rights."),state.cooper_dying=!0,ActivateEvent(eventCooperDies,0),state.cooper_arrested=!0},objs.Cooper.movementGoals=[[20,0,"Hall12"],[20,0,"Bal
lroomFoyer"],[20,0,"Ballroom"],[20,0,"GrandHall"],[20,0,"Lobby"],[20,0,"Hall12"],[20,0,"BallroomStairsBottom"],[20,0,"BallroomStairsTop"],[10,0,"SalonC"],[10,0,"SalonB"],[10,0,"Hall25"],[10,0,"Hall24"],[10,0,"Hall23"],[10,0,"Hall23"],[10,0,"Hall21"],[10,0,"StorageCloset2"],[20,0,"GrandHall"],[20,0,"Lobby"],[20,0,"Hall12"],[20,0,"Hall25"],[20,0,"Hall24"],[20,0,"Hall23"],[20,0,"Hall23"],[20,0,"Hall21"]],objs.Davis=new Employee("Ms. Davis","Davis"),me=objs.Davis,me.synonyms=["davis","rachel","ms davis","mrs davis","miss davis","rachel davis"],me.hintName="Ms. Rachel Davis (Happyland financial expert)",me.fingerprint_data=[54.841,87.507,84.697],me.fingerprints="Davis",me.in="Ballroom",me.hisher="her",me.heshe="she",me.himher="her",me.movementGoals=[[0,0,"Ballroom"],[10,0,"Ballroom"],[1e3,0,"Ballroom"]],me.mood={current:{pleasure:3,intensity:1},default:{pleasure:3,intensity:1}},me.events={EVENT_FRANKS_IS_DEAD:{known:!1,delta_pleasure:1,delta_intensity:0},EVENT_COOPER_IS_DEAD:{known:!1,delta_pleasure:1,delta_inten
sity:2},EVENT_SAFE_IS_EMPTY:{known:!1,delta_pleasure:-2,delta_intensity:2},EVENT_WENT_TO_WAKE:{known:!1,delta_pleasure:0,delta_intensity:0},EVENT_WITNESS_COOPER_DIE:{known:!1,delta_pleasure:0,delta_intensity:0},EVENT_SHOWN_WAD_OF_CASH:{known:!1,delta_pleasure:-1.5,delta_intensity:1.5},EVENT_SHOWN_HAIRSPRAY_ANALYSIS:{known:!1,delta_pleasure:-.5,delta_intensity:.5},EVENT_SHOWN_VOMIT_ANALYSIS:{known:!1,delta_pleasure:-.5,delta_intensity:.5},EVENT_SHOWN_WINE_ANALYSIS:{known:!1,delta_pleasure:-1,delta_intensity:.5}},me.smalltalkResponses={hello:{happy:'Ms. Davis tilts her head, flashes an award winning smile and says, "Hello, Inspector."',calm:'"Hello, Inspector."',gloomy:"Ms. Davis makes a small sound of acknowledgement.",anxious:'"Inspector," she sighs like you\'re an annoyance.'},goodbye:{happy:"Ms. Davis smiles and says goodbye. Was she just giving you the eye?",calm:'"Bye, Inspector."',gloomy:'"Later."',anxious:'"Inspector," she sighs like you\'re an annoyance.'},howareyou:{happy:'"Just fine," she says with
a twinkle of mischief in her eye."',calm:'"I\'m well."',gloomy:'"Fine," she says quickly.',anxious:"\"Sorry if I've been terse with you, Inspector. It's been a stressful day.\""}},me.phraseBankDunnoAsk={type:"random",happy:{last:-1,phrase:['"Can you ask me another time? I\'ve got a lot of work to do right now."','"Please, Inspector. I\'m too busy for all these questions."','"I don\'t know what you are asking."','"I don\'t know about that."','"Can\'t say. Can I get back to my work now?"','"What\'s with all these questions?"']},calm:{last:-1,phrase:['"I\'m too busy to answer all these questions right now."','"Can you ask me another time? I\'ve got a lot of work to do right now."','"Please, Inspector. I\'m too busy for all these questions."','"I don\'t know what you are asking."','"I don\'t know about that."','"Can\'t say. Can I get back to my work now?"','"What\'s with all these questions?"']},gloomy:{last:-1,phrase:['"I\'m really busy right now."','"Can you ask me another time? I\'ve got a lot of work to do r
ight now."','"Please, Inspector. I\'m too busy for all these questions."','"I don\'t know what you are asking."','"I don\'t know about that."','"Can\'t say. Can I get back to my work now?"','"What\'s with all these questions?"']},anxious:{last:-1,phrase:['"I\'m really busy right now."','"Can you ask me another time? I\'ve got a lot of work to do right now."','"Please, Inspector. I\'m too busy for all these questions."','"I don\'t know what you are asking."','"I don\'t know about that."','"Can\'t say. Can I get back to my work now?"','"What\'s with all these questions?"']}},me.phraseBankDunnoShow={type:"random",happy:{last:-1,phrase:['"I\'m really busy right now."','"Please, Inspector. I\'m too busy for this."',"\"I don't know anything about what you're showing me.\"",'"I don\'t know anything about that."','"What\'s with all these questions?"']},calm:{last:-1,phrase:['"I\'m really busy right now."','"Please, Inspector. I\'m too busy for all these questions."',"\"I don't know anything about what you're showing
me.\"",'"I don\'t know anything about that."','"What\'s with all these questions?"']},gloomy:{last:-1,phrase:['"I\'m really busy right now."','"Please, Inspector. I\'m too busy for all these questions."',"\"I don't know anything about what you're showing me.\"",'"I don\'t know anything about that."','"What\'s with all these questions?"']},anxious:{last:-1,phrase:['"I\'m really busy right now."','"Please, Inspector. I\'m too busy for all these questions."',"\"I don't know anything about what you're showing me.\"",'"I don\'t know anything about that."','"What\'s with all these questions?"']}},me.phraseBankDunnoTell={type:"random",happy:{last:-1,phrase:['"I\'m really busy right now."','"Can you ask me another time? I\'ve got a lot of work to do right now."','"Please, Inspector. I\'m too busy for all these questions."','"I don\'t know what you are telling me."','"I don\'t know about that."','"Can\'t say. Can I get back to my work now?"','"What\'s with all these questions?"']},calm:{last:-1,phrase:['"I\'m really
busy right now."','"Can you ask me another time? I\'ve got a lot of work to do right now."','"Please, Inspector. I\'m too busy for all these questions."','"I don\'t know what you are telling me."','"I don\'t know about that."','"Can\'t say. Can I get back to my work now?"','"What\'s with all these questions?"']},gloomy:{last:-1,phrase:['"I\'m really busy right now."','"Can you ask me another time? I\'ve got a lot of work to do right now."','"Please, Inspector. I\'m too busy for all these questions."','"I don\'t know what you are telling me."','"I don\'t know about that."','"Can\'t say. Can I get back to my work now?"','"What\'s with all these questions?"']},anxious:{last:-1,phrase:['"I\'m really busy right now."','"Can you ask me another time? I\'ve got a lot of work to do right now."','"Please, Inspector. I\'m too busy for all these questions."','"I don\'t know what you are asking."','"I don\'t know about that."','"Can\'t say. Can I get back to my work now?"','"What\'s with all these questions?"']}},me.wor
k_activities=["Ms. Davis is here, busy in her paperwork.","Ms. Davis is on the phone.","Ms. Davis is typing on her typewriter.","Ms. Davis is applying some lipstick.","Ms. Davis is eyeing you.","Ms. Davis is on the phone and taking notes."],me.work_activities2=["Ms. Davis is here, busy in her paperwork.","Ms. Davis is on the phone.","Ms. Davis is typing on her typewriter.","Ms. Davis is applying some hairspray.","Ms. Davis is eyeing you.","Ms. Davis is on the phone and taking notes."],me.objdesc=function(){return!!inMotion(this.objectName)||("Ballroom"==here?"RachelsDesk"==objs.HairSpray.in?displayMessage(pickOne(this.work_activities2)+"<br>"):displayMessage(pickOne(this.work_activities)+"<br>"):"Room203"==here?Prob(50)?displayMessageP("Ms. Davis is packing clothes into her suitcase."):displayMessageP("Ms. Davis is packing makeup into her suitcase."):displayMessage("Ms. Davis is here.<br>"),!0)},me.hibye=function(e){this.smalltalkRespond(e)},me.howAreYou=function(){this.smalltalkRespond("howareyou")},me.desc
ribe=function(){displayMessageP("Ms. Davis is a raven-haired woman, about thirty five years old. \n       Her designer clothes and perfectly applied make up command attention and the steely \n       determination in her eyes commands respect.")},me.askAbout=function(e){switch(e){case"Ally":displayMessageP('"Yeah, she\'s nice enough. Could be a lot prettier if she used more makeup and updated her wardrobe."');break;case"Baxter":displayMessageP("\"He's a good person. But I think he could be a lot more efficient as a CEO if he focused more on the \n                business and less on the happiness of his employees. I think he sometimes forgets we're here to make money.\"");break;case"BottleOfGlue":case"Scissors":case"PaperScraps":case"GlueSample":case"GlueAnalysis":displayMessageP("Ms. Davis winces. \"I don't appreciate the invasion of privacy by searching my room.\"  \n                She sighs and speaks slowly, \"If you must know, I'm into scrapbooking. I'd appreciate it if you wouldn't tell \n
  the others. I'm sure they'd ridicule my artistic hobby.\""),this.alterMood(0,.5),state.davisLiesAboutScrapbooking=!0;break;case"Bus":displayMessageP('"Me and some of the staff take a bus back to Cornville tonight. Should be here around 8pm."');break;case"Cooper":case"CoopersBody":this.events.EVENT_COOPER_IS_DEAD.known?(displayMessageP('"That was most unfortunate what happened to him."'),state.safe_is_empty&&(displayMessageP("\"You know, he has access to the entire resort. Maybe he was killed because he saw \n                        something he shouldn't have. Sorry Inspector. I don't mean to play armchair detective.\""),this.alterMood(0,1))):displayMessageP("\"He's the janitor here. That's all I know about him.\"");break;case"Cornville":displayMessageP("\"It's a necessary evil to live there in order to work here. I've discovered that I'm not much of a small town girl.\"");break;case"Davis":case"Yourself":displayMessageP('"Well, I have an MBA from the State University. Minored in chemistry. Worked at two
Fortune 500 pharmaceutical companies. \n                I was so good at it, I decided to go freelancing. That\'s where the real money is." Her voice softens and a coy smile appears. "I also enjoy aerobics, foreign films, and Italian food."');break;case"DavisDuffleBag":displayMessageP('"I had to borrow this from Ken, when I misplaced my suitcase."');break;case"DavisFingerprints":displayMessageP('"You tell me. You\'re the one who took my fingerprints."');break;case"DavisSuitcase":state.davisMoneyStage<3?displayMessageP('"A lady\'s got to look her best. I need such a large suitcase for my \n                    wardrobe and makeup."'):(displayMessageP('"These are my clothes and make up, Inspector. I\'d appreciate if you kept your \n                    dirty paws off of them."'),this.alterMood(-1,1));break;case"ElectricTypewriter":displayMessageP('"That isn\'t just any typewriter," Ms. Davis stands proudly, "it\'s my Rigel 3000. \n                I can crack 70 words per minute on this thing."'),this.alterMood(1
,1);break;case"Eva":displayMessageP("\"She's the maid here. That's all I know.\"");break;case"Expansion":displayMessageP("\"I'm in the middle of lining up investors to talk to Mr. Franks-- I guess Mr. Baxter now. If they get \n                on board, we'll be able to start our expansion in a matter of weeks. Once the new park and hotel are built, we'll start making a ton of money.\"");break;case"FinancialReport":displayMessageP('"I do the heavy lifting when it comes to securing new investors. Ms. Sanchez does the little day-to-day financial errands, including \n                writing up weekly summaries on how much money we\'ve spent."'),awareOf("Lina");break;case"Flowers":displayMessageP("\"I can't believe how much money Baxter spends on flowers. Like really, that's \n                not going to bring in additional business.\"");break;case"FranksBody":displayMessageP('"He and I worked closely together. I would line up the investors and get them to meet with \n                him so he could sell them on
the idea of Happyland."'),state.safe_is_empty&&(displayMessageP("Ms. Davis lowers her voice. \"Look, I don't want to speak ill of the dead, but he was a lot smarter than he appeared. \n                    On the outside he looked like he was pretty undisciplined with managing money, but I think that that was a \n                    ruse to cover up something deeper. I've heard rumors -- just rumors -- that he might be stealing from the \n                    company. And, again not to badmouth Mr. Franks, but he was talking about retiring soon in the Caribbean.\""),this.alterMood(0,1));break;case"HairSpray":displayMessageP('"I need it to look my best." She points at her head, "you don\'t get this gorgeous hair with washing and \n                brushing alone. You need to learn about styling, Inspector. If your hair were a bit longer I could use this to make you look amazing." \n                Ms. Davis could be a salesperson for fashion products.');break;case"Happyland":displayMessageP('"It has a really go
od chance of becoming an extremely profitable business. Once I line up more investors, \n                we\'re all going to make a lot of money."');break;case"Ivan":displayMessageP('She shrugs her shoulders. "I don\'t really know any of the little peopl- I mean the staff."');break;case"Jared":displayMessageP("\"I heard he was the one whose negligence caused the crash this morning. Kid \n                probably doesn't have too much, but still, I'd sue him for every cent he has.\"");break;case"Job":displayMessageP('"My role here is to find investors that can help fund the Happyland expansion. I spend most of my \n                time on the phone talking to venture capitalists, banks, and others lenders who have similar growth goals as us."');break;case"Ken":discretion("Davis","Ken"),displayMessage("\"He's a wannabe cop. But pretty useless. "),this.events.EVENT_COOPER_IS_DEAD.known?displayMessage("I mean, two murders in one day. Really. Good thing I have you to protect me."):displayMessage("I mean, a murder
right under his nose. Really. Good thing I have you to protect me."),displayMessageP(" Oh yeah, he's a big flirt, too. As if.\""),this.alterMood(.5,-.5);break;case"Lina":discretion("Davis","Lina"),displayMessageP("\"I'm pretty impressed by her skill. Mr. Franks had taken quite a liking to her. I wouldn't \n                be surprised if they were a thing. She strikes me as the ambitious type who won't let anything stop her career progression. Just sayin'.\""),this.alterMood(0,-.5);break;case"LinasKey":displayMessageP("\"Ms. Sanchez's key? No, I don't know anything about that.\""),this.alterMood(0,.5);break;case"MasterKey":displayMessageP("\"I don't need a master key. I only go to my office, my room, and the restaurant. \n                Work, sleep, and eat. In that order, Inspector. There's so much work to do, I don't have the time to indulge in any of the Joyville activities.\""),awareOf("Joyville");break;case"MidwayGames":displayMessageP('"I don\'t have time for those kinds of activities."');break;case"
Newspaper":displayMessageP('"I read it regularly. I need to keep up with the goings on in a busy world."');break;case"Photocopier":displayMessageP('"It\'s just a photocopier. It makes copies."');break;case"RachelsDesk":displayMessageP('"I like to call it my mission command center. My phone, my rolodex, and my typewriter all a chair swivel away."');break;case"Ride":displayMessageP('"The rides were going to be the main attraction for people to come out here. I hope the problems with the Megacoaster \n                get worked out real soon. If people hear what happened no one will want to visit, let alone invest in us."');break;case"Rolodex":displayMessageP('"That\'s where I keep all my business contacts."');break;case"SecurityCabinet":displayMessageP("\"I know that's where they keep the money, but that's all I know about it.\""),this.alterMood(-.5,-.5);break;case"StandardTypewriter":discretion("Davis","Lina"),displayMessageP("\"That's a piece of junk; mine is way better. You'd never catch me typing on anythi
ng but my very own Rigel 3000.\"");break;case"StolenMoney":state.stolenMoneyInDavisPosession?(displayMessageP('"I refuse to say anything without my lawyer present."'),this.alterMood(-5,-5)):this.respond(this.phraseBankDunnoAsk);break;case"StolenMoneyFingerprints":displayMessageP('"I refuse to say anything without my lawyer present."'),this.alterMood(-5,-5);break;case"TV":displayMessageP('"I don\'t have time for that drivel."');break;case"Wake":if(state.wake_in_progress)return void displayMessageP('"We\'re having a wake for Mr. Franks now."');state.wake_stage<2?displayMessageP("\"We're having a wake to remember Mr. Franks this afternoon in the lounge at three o'clock.\""):displayMessageP('"We had a wake for Mr. Franks this afternoon."');break;case"Wine":displayMessageP('"I served the wine at the wake."');break;default:this.respond(this.phraseBankDunnoAsk)}},me.fingerprintResponse=function(e,o,s,a){displayMessageP('Ms. Davis\' lets out an audible sigh. "Make it quick."  \n        While inking her fingers you t
ake extra care not to stain her perfect nails.'),this.alterMood(-.5,-.5)},me.show=function(e){switch(e){case"Analyzer":displayMessageP('"I also have a toy, it\'s my Rigel 3000 electric typewriter."');break;case"BottleOfGlue":case"Scissors":case"PaperScraps":displayMessageP('"I don\'t appreciate your snooping around my room inspector. Those are for my scrapbooking project."'),this.alterMood(-.5,.5),state.davisLiesAboutScrapbooking=!0;break;case"CoopersWineFingerprints":state.davisFingerprintsAnalyzed?displayMessage('"I don\'t think those could be my fingerprints."'):displayMessageP('"I-I\'m not sure how my fingerprints managed to get on that bottle. Are you sure those are mine?"'),this.alterMood(0,.5);break;case"DavisFingerprints":displayMessageP('"Okay, so those are the fingerprints you took of me. So?"');break;case"ElectricTypewriterFingerprints":displayMessageP('"Well those better by my fingerprints, because if anyone else touched my baby, I would --" \n                She looks up at you and slows down he
r speech. "I would...be angry, Inspector."');break;case"FinancialReport":displayMessageP('"That\'s the weekly report that Lina writes up."');break;case"Flower":displayMessageP('"Is that for me? May I have it?"');break;case"GardenShears":case"GardenShearsFingerprints":displayMessageP('"That\'s garden stuff. I have no interest in garden stuff."');break;case"HairSpray":displayMessageP('"I hope you\'re giving that back to me, Inspector. I really need it."');break;case"HairSprayFingerprints":displayMessageP('"Of course those are my fingerprints. That\'s my hairspray after all."');break;case"HairSprayAnalysis":this.inform("EVENT_SHOWN_HAIRSPRAY_ANALYSIS"),this.informed("EVENT_SHOWN_VOMIT_ANALYSIS")||this.informed("EVENT_SHOWN_WINE_ANALYSIS")?(displayMessageP('"Are you suggesting that Mr. Cooper drank my hairspray and died? That\'s preposterous!"'),this.alterMood(-.5,.5)):displayMessageP('"Hairspray contains chemicals. Duh!"');break;case"VomitAnalysis":this.inform("EVENT_SHOWN_VOMIT_ANALYSIS"),this.informed("EVENT_
SHOWN_HAIRSPRAY_ANALYSIS")?(displayMessageP('"Are you suggesting that Mr. Cooper drank my hairspray? That\'s pretty far fetched."'),this.alterMood(-.5,.5)):displayMessageP('"Why is this relevant?"');break;case"WineAnalysis":this.inform("EVENT_SHOWN_WINE_ANALYSIS"),this.informed("EVENT_SHOWN_HAIRSPRAY_ANALYSIS")?(displayMessageP('"Are you suggesting that Mr. Cooper drank my hairspray? Really, Inspector. That\'s ridiculous!"'),this.alterMood(-.5,.5)):displayMessageP('"I fail to see the relevance."');break;case"LinasKey":displayMessageP('Ms. Davis flinches. "I don\'t know what that key is for."');break;case"LinasKeyFingerprints":objs.LinasKeyFingerprints.analyzed&&"Davis"==objs.LinasKeyFingerprints.of&&objs.DavisFingerprints.analyzed?(this.alterMood(-2,-2),displayMessageP("\"I don't know why my fingerprints would be on that key. I don't know where that key is from. I don't even know what that key opens.\n                    Maybe Lina lent it to me. Or maybe I was looking for something in her cabinet. Maybe you
r analyzer isn't working properly.\"")):displayMessageP("\"I'm not familiar with that key. Those wouldn't be my prints.\"");break;case"Newspaper":displayMessageP("\"Thanks, but I've already read this week's newspaper.\"");break;case"NewsArticle":if(state.readNewspaper)return discretion("Davis","Cooper"),displayMessage('"I...I...I thought I\'d play a practical joke on Mr. Cooper." '),void(this.informed("EVENT_COOPER_IS_DEAD")?displayMessageP('She looks downward. "I feel really badly about it now that he\'s dead."'):displayMessageP(" "));displayMessageP('"Oh, I thought he might be interested in that story, being an environmentalist and all, \n                        so I photocopied the newspaper article for him."');break;case"PaperScraps":state.eDocs.typewriter.discovered&&state.eDocs.strips.discovered?(this.alterMood(0,1),displayMessage('"Okay, okay. I admit I wrote a fake news article to play a practical joke on Mr. Cooper. "'),this.informed("EVENT_COOPER_IS_DEAD")?displayMessageP('She looks downward. "I fe
el really badly about it now that he\'s dead."'):displayMessageP(" ")):displayMessageP('"I see you\'ve rummaged through my room and found some of my scrapbooking materials."');break;case"PileOfCash":displayMessageP("Ms. Davis' eyes widen slightly. \"Wow that's a lot of money. Are you trying to impress me?\""),this.alterMood(0,.5);break;case"Poem":displayMessageP("\"Poetry doesn't excite me, Inspector. But I'm sure you experienced pure joy while typing it on my wonderful typewriter.\"");break;case"SecurityCabinetFingerprints":displayMessageP("\"I think you're mistaken, Inspector. I don't have access to the secure cabinet.\""),this.alterMood(0,.5);break;case"StolenMoney":state.stolenMoneyInDavisPosession?(displayMessageP('"I refuse to say anything without my lawyer present."'),this.alterMood(-5,-5)):(displayMessageP("\"That's a lot of money, Inspector. I don't know what that has to do with me.\""),this.alterMood(-2,-2));break;case"StolenMoneyFingerprints":displayMessageP('"I refuse to say anything without my l
awyer present."'),this.alterMood(-5,-5);break;case"ThreatNote":state.eDocs.threat.discovered&&state.eDocs.typewriter.discovered?(displayMessage("\"You're saying that threat was typed on my typewriter. Well, I didn't have anything to do with that!"),this.alterMood(-1,-1),inSameRoom("Davis","Lina")&&displayMessage('" Ms. Davis glances over to Ms. Sanchez. "I\'ll bet Lina used it.'),displayMessageP('"')):displayMessageP("\"I haven't heard that we've been threatened. Unfortunately, it looks like someone made good on that threat.\"");break;case"VomitAnalysis":case"VomitSample":displayMessageP('"Gross. That\'s disgusting!"');break;case"Vow":displayMessageP("\"Poetry doesn't excite me, Inspector. I'm sure you can tell why I don't like that typewriter.\"");break;default:this.respond(this.phraseBankDunnoShow)}},me.tellAbout=function(e){switch(e){case"Cooper":case"CoopersBody":case"CoopersDeath":state.cooper_dead?this.informed("EVENT_COOPER_IS_DEAD")?displayMessageP('"I\'ve heard."'):displayMessageP('"Oh my. That\'s..
terrible."'):displayMessageP('"Okay."');break;case"CutWires":case"SafetySystem":displayMessageP('"I don\'t understand how any of that relates to me."'),this.alterMood(-.5,-.5);break;case"ElectricTypewriter":state.eDocs.typewriter.discovered?displayMessageP("\"Are you telling me that my Rigel 3000 electric typewriter isn't perfect? I don't believe you.\""):displayMessageP('"Well, I think this is the best typewriter, ever."');break;case"Poison":state.poison_found_in_vomit&&state.hairspray_poison?(displayMessageP('"You\'re saying the Mr. Cooper was poisoned with my hairspray. I usually keep my hairspray on my desk or in my room. I suppose he could have accessed it."'),this.alterMood(-2,-2)):state.poison_found_in_vomit?displayMessageP('"Mr. Cooper was poisoned? I don\'t have anything to do with that."'):displayMessageP('"Hairspray is for hair. It\'s not safe to use for anything else."');break;case"SecurityCabinet":if(state.safe_is_empty)return displayMessageP("\"You mean the money we've received from the initia
l investors is gone? That's terrible. \n                    I hope you can find it. If you don't, well, I don't think the company can survive.\""),void this.alterMood(-2,-2);displayMessage("\"I know there's a secure cabinet in Mr. Franks' office. But I don't have access to it.\"");break;case"CoopersWineFingerprints":case"ThreatNote":case"PaperScraps":case"LinasKey":case"LinasKeyFingerprints":case"SecurityCabinetFingerprints":this.show(e);break;default:this.respond(this.phraseBankDunnoTell)}},me.askWhere=function(e){switch(e){case"Ally":displayMessageP('"I imagine she\'s at the reception desk."');break;case"Ballroom":displayMessageP("\"I'm not a tour guide, Inspector. I'm really busy.\"");break;case"Bar":case"Lounge":displayMessageP('"Maybe this evening I can personally show you the bar." She flashes you an coy smile.');break;case"Baxter":displayMessageP('"Baxter\'s probably up in his office."');break;case"Bus":displayMessageP('"Dunno, but I expect it will be here at 8pm to take me back to Cornville."');break
;case"Cooper":this.informed("EVENT_COOPER_IS_DEAD")?displayMessageP('"He\'s dead."'):displayMessageP("\"I don't know. I don't keep track of everyone's comings and goings.\"");break;case"Cornville":displayMessageP('"It\'s about an hour west of here."');break;case"Davis":displayMessageP('"Are you getting philosophical on me, Inspector?"');break;case"Ivan":displayMessageP("\"I don't know. I don't keep track of everyone's comings and goings.\"");break;case"Joyville":displayMessageP("\"It's outside, Inspector. I'm not a tour guide.\"");break;case"Ken":isHere("Ken")?displayMessageP('"He\'s here trying to impress me."'):displayMessageP('"He\'s probably flirting with Ally."');break;case"Lina":displayMessageP("\"She's almost always in the ballroom, working. She has the second strongest \n                work ethic around here.");break;case"LinasKey":displayMessageP('"Key? No, I don\'t know where that is."');break;case"Ride":case"SalonB":case"SalonC":displayMessageP("\"Inspector, I'm not your tour guide. I'm sure you
can find it on your own.\"");break;case"SecurityCabinet":displayMessageP('"I think it\'s upstairs somewhere."');break;default:this.respond(this.phraseBankDunnoAsk)}},objs.Eva=new Employee("Maid","Eva"),objs.Eva.synonyms=["Eva","Garcia","Eva Garcia","maid","cleaner","ms garcia"],objs.Eva.name="Eva",objs.Eva.hisher="her",objs.Eva.hintName="Eva Garcia (maid)",objs.Ivan=new Employee("Ivan","Ivan"),me=objs.Ivan,objs.Ivan.adjectives=["mr"],objs.Ivan.synonyms=["Ivan","Ivan's","gardener","groundskeeper","groundkeeper","groundsman"],objs.Ivan.fingerprints="Ivan",objs.Ivan.fingerprint_data=[81.846,85.641,5.462],objs.Ivan.in="PathToPark",objs.Ivan.name="Ivan",objs.Ivan.hintName="Ivan Borowski (groundskeeper)",objs.Ivan.movementGoals=[[0,0,"PathToPark"],[120,0,"FrontSteps"],[120,0,"PathToPark"],[20,0,"Shed"],[120,0,"FrontSteps"],[120,0,"PathToPark"],[20,0,"Shed"],[20,0,"GrandHall"],[120,0,"FrontSteps"],[120,0,"PathToPark"]],me.mood={current:{pleasure:4,intensity:4},default:{pleasure:3,intensity:2}},me.events={EVENT_FRAN
KS_IS_DEAD:{known:!1,delta_pleasure:-2,delta_intensity:-2.5},EVENT_COOPER_IS_DEAD:{known:!1,delta_pleasure:-5,delta_intensity:-2.5},EVENT_SAFE_IS_EMPTY:{known:!1,delta_pleasure:-.5,delta_intensity:0},EVENT_WENT_TO_WAKE:{known:!1,delta_pleasure:.5,delta_intensity:0},EVENT_WITNESS_COOPER_DIE:{known:!1,delta_pleasure:0,delta_intensity:0},EVENT_SHOWN_WAD_OF_CASH:{known:!1,delta_pleasure:0,delta_intensity:0}},me.smalltalkResponses={hello:{happy:"\"Hello, it's a beautiful day isn't it?\"",calm:'"Hello."',gloomy:'"Hello Mr. Inspector," Ivan says softly.',anxious:'"Ah. Hello," he says quickly.'},goodbye:{happy:'"Goodbye, Mr. Inspector"',calm:'"Bye, Mr. Inspector."',gloomy:'"Bye."',anxious:'"Bye."'},howareyou:{happy:'"It\'s a beautiful day out here, Mr. Inspector. Sunshine and flowers. What more could I ask for?"',calm:'"I\'m doing well, Mr. Inspector."',gloomy:'"I\'m frustrated. I misplaced my garden shears."',anxious:'"Oh, Inspector. I\'ve lost a friend today."'}},objs.Ivan.fingerprintResponse=function(e,o,s,a){dis
playMessageP("You notice that there's so much dirt on Ivan's fingers you decide to forego the ink and press his \n        filthy fingers against the fingerprint card. It works! The fingerprints are clear as mud.")},objs.Ivan.phraseBankDunno={type:"random",happy:{last:-1,phrase:['"Sorry, Mr. Inspector I don\'t know much about that."',"Ivan smiles. \"I just don't understand what you're saying.\"",'"Mr Inspector, I don\'t understand what you are talking about."']},calm:{last:-1,phrase:['"I\'m not sure what to tell you, Mr. Inspector."','"Can you ask again, Mr. Inspector?"','"I don\'t know what you are telling me."']},gloomy:{last:-1,phrase:['"I don\'t know anything about that."',"Ivan shrugs his shoulders.",'"I don\'t understand what you are saying to me."']},anxious:{last:-1,phrase:["\"I don't understand what you're asking.\"","\"I'm sorry, Mr. Inspector. I'm too stressed right now to answer more questions.\"",'"I don\'t know."']}},objs.Ivan.objdesc=function(){return!!inMotion(this.objectName)||(isIndoors("Iva
n")?isInRoom("GrandHall")?displayMessage("Ivan is tending to the flowers around the fountain.<br>"):displayMessage("Ivan is here.<br>"):displayMessage("Ivan is here "+pickOne(GardenActivities)+".<br>"),!0)},objs.Ivan.describe=function(){return displayMessageP("Ivan is the groundskeeper. He's an older man, probably in his late fifties or \n        early sixties. He wears his gray-white hair a bit long, letting it flop wherever it wants. His dark \n        eyebrows are almost as thick as his mustache. He's wearing overalls and boots."),!0},me.hibye=function(e){this.smalltalkRespond(e)},me.howAreYou=function(){this.getMood()!=MOOD_GLOOMY?this.smalltalkRespond("howareyou"):state.shears_found?displayMessageP('"Ah, weeds, weeds, weeds. They\'re everywhere!"'):displayMessageP('"I\'m frustrated. I misplaced my garden shears."')},objs.Ivan.askAbout=function(e){switch(e){case"Ally":displayMessageP('"Nice girl. Reminds me of my daughter. I bring her flowers every now and then."'),this.alterMood(1,1);break;case"Ballroom
":displayMessageP('"A nice room to decorate for weddings and other special events."');break;case"Bar":case"Lounge":displayMessageP('"I\'ve suggested to Mr. Baxter many times that we add flowers to the lounge, but he always said no."');break;case"Baxter":displayMessageP('"He\'s a good man. He does everything to make this a good place to visit and to work in. He appreciates the importance of well kept grounds."');break;case"Building":displayMessageP('"The building is well-designed. I would like to decorate it with more flowers to make it even nicer."');break;case"Bus":displayMessageP('"There\'s a bus that comes every Friday night to take some of us back home to Cornville."');break;case"Bushes":displayMessageP('"I try to keep the grounds well maintained."');break;case"ControlPanel":displayMessageP('"Ah, I don\'t know how any of that stuff works."');break;case"Cooper":case"CoopersBody":this.informed("EVENT_COOPER_IS_DEAD")?displayMessageP('"He is...was...my good friend. We used to play cards every night in the l
ounge."'):displayMessageP('"Yes, he and I are good friends. We play cards every night in the lounge."');break;case"CoopersDeath":displayMessageP('"I don\'t know who would want to harm him."'),this.alterMood(-.5,-.5);break;case"CoopersWine":displayMessageP('Ivan looks around distractedly and then speaks slowly. "Mr. Cooper liked to drink. \n                We tried to keep it secret. But I think some of the staff knew."'),this.alterMood(-.5,-.5);break;case"Cornville":displayMessageP('"Cornville is a beautiful small town."');break;case"Eva":displayMessageP('"I don\'t know her well."');break;case"Expansion":displayMessageP('"Mr. Baxter plans to grow the park. I look forward to decorating the new grounds, but I imagine \n                the construction is going to mess up a lot of the work I\'ve already done."');break;case"Flowers":case"Path":displayMessageP('"These flowers are my pride and joy. They\'re like my little children. I\'m especially \n                fond of the path between the park and the hotel."
He looks at you with great seriousness. "I am a landscape maestro!"'),awareOf("Path"),this.alterMood(.5,0);break;case"Fountain":case"GrandHall":displayMessageP('"The fountain makes a beautiful backdrop for my flowers."');break;case"FranksBody":case"FranksDeath":displayMessageP('"A real shame. You know those roller rides aren\'t safe. And then they put \n                some young kid in charge of running it? You would never catch me on any of those crazy rides."'),awareOf("Ride");break;case"Fridge":displayMessageP('"That\'s where we keep our food."');break;case"Davis":case"Lina":displayMessageP("\"Oh, I don't know any of the executives. Only Baxter. He comes around often to chat with \n                me and the other employees. The others? I don't think they care much about the hired help.\"");break;case"GardenShears":room[here].isIndoors()?displayMessage('Ivan motions with his arm. "My trusty garden shears let me keep these bushes perfectly shaped. '):displayMessage("\"If you go outside you'll see how I'v
e perfectly shaped each hedge. "),state.shears_found?(displayMessageP('Thank you for finding them!"'),this.alterMood(.5,.5)):(displayMessageP("I can't seem to find those darn shears anywhere!\""),this.alterMood(-.5,-.5)),awareOf("Bushes");break;case"GardenSupplies":case"GardenTools":displayMessageP('"Don\'t let that fool you, Mr. Inspector. Gardening is 98% hard work. One percent tools and one percent chemicals."');break;case"Generator":displayMessageP("\"There's a small maintenance shed that stores the generator for the Megacoaster. I try to keep it hidden away from our guests. Bet you didn't even see it.\"");break;case"NewsArticle":case"Habitat":displayMessageP('"Now that you mention it, Cooper did tell me about an article he read recently. Said the hotel was planning to expand into endangered land or something."'),awareOf("Habitat");break;case"Happyland":displayMessageP('"It\'s a beautiful piece of land. I do my part to keep it beautiful."');break;case"HedgeDoorway":displayMessageP('"Oh, that\'s just some
thing I quickly did when I saw how ugly the shed looked. No need to expose our guests to that monstrosity!"');break;case"Ivan":case"Yourself":displayMessageP('"Not much to say. I immigrated here in \'62. Worked at the Cornville Nursery and ended up here about five years ago."');break;case"Jared":displayMessageP('"That young man has no respect for greenery. I caught the young punk urinating on my bushes."'),this.alterMood(-.5,1),awareOf("Bushes");break;case"Job":displayMessageP('"I\'m the gardener here. I keep all the greens green and all that blooms va-va-voom!"'),this.alterMood(1,1);break;case"Joyville":displayMessageP('"I would like to add more greenery to Joyville, but Mr. Cooper insists on keeping the grounds concrete for now."');break;case"Ken":displayMessageP('"I don\'t know him much. He patrols outdoors and leaves me and my flowers alone."');break;case"MidwayGames":case"FoodBooths":case"PicnicTables":displayMessageP('"I\'m not always happy with the set up in Joyville. The guests often litter and I hav
e to pick up their trash amongst the flowerbeds."'),this.alterMood(-.5,-.5);break;case"Motive":displayMessageP('"I have no idea."');break;case"Newspaper":displayMessageP('"I don\'t read much."');break;case"PileOfCash":displayMessageP('"Cooper did not have much money. I have no idea how he could have gotten that. He never struck me as someone who would steal."');break;case"Ride":displayMessageP("\"That's not for me. I don't think those things can ever be safe.\"");break;case"Sky":room[here].isIndoors()?displayMessageP('"I prefer working outdoors, under a tent of clouds."'):getDaylight()==DAYLIGHT_BRIGHT?displayMessageP('"A glorious spring day. Look at that beautiful shade of blue. I love the outdoors."'):displayMessageP('"A glorious spring evening, isn\'t it?"');break;case"StaffFood":room[here].isIndoors()?displayMessageP("\"That's my lunch and supper. I hope you didn't eat it. I build up a big appetite from working outside.\""):displayMessageP("\"That's my lunch and supper. I hope you didn't eat it. I build
up a big appetite out here.\"");break;case"Weeds":displayMessageP('"Ah, the endless battle of weeds against gardeners. That\'s a battle I intend to win."');break;default:this.respond(this.phraseBankDunno)}},objs.Ivan.tellAbout=function(e){switch(e){case"Analyzer":displayMessageP('"That\'s too complex for me to understand."');break;case"CauseCrash":displayMessageP('"Tell that to someone who understands that stuff. I am only a simple gardener."'),this.alterMood(-.5,0);break;case"Cooper":case"CoopersBody":case"CoopersDeath":state.cooper_dead?this.informed("EVENT_COOPER_IS_DEAD")?displayMessageP('"I know about that already. Ah, he was a good man."'):(displayMessageP('"What? He\'s dead? My good friend Cooper is dead?" Ivan begins to sob quietly.'),this.alterMood(-3,3)):displayMessageP('"What about my friend Cooper?"');break;case"CoopersWine":this.askAbout(e),this.alterMood(-.5,-.5);break;case"CutWires":displayMessageP('"I don\'t know how all that works. But that sounds serious. Tell Mr. Baxter or Ken."');break;ca
se"Poison":state.poison_found_in_vomit&&state.hairspray_poison?displayMessageP('Ivan looks stunned. "My friend was poisoned? Why would anyone harm him? He was a gentle soul. Please, Mr. Inspector, find who did this and bring him to justice." You reassure him that you will.'):state.poison_found_in_vomit?displayMessageP('"My friend was poisoned? He was a gentle soul who didn\'t deserve to die like that."'):displayMessageP('"This stuff looks dangerous. Why do people want to use hairspray?"'),this.alterMood(-2,2);break;case"ShardAnalysis":displayMessageP("\"That's strange. I only use the shears to cut vines and bushes. I wouldn't use them on metal. That would wreck the blades.\""),this.alterMood(-.5,-.5);break;default:this.respond(this.phraseBankDunno)}},objs.Ivan.show=function(e){switch(e){case"CoopersWine":this.askAbout(e);break;case"GardenShears":displayMessageP("\"Ah my shears! I thought I had lost them. Thank you, Mr. Inspector, for \n                finding them. If you're done with them, I'd like them bac
k.\""),state.shears_found=!0,this.alterMood(2,0);break;case"GardenShearsFingerprints":displayMessageP("\"I don't understand why Cooper's fingerprints are on the shears. He never asked to borrow them. And they went missing this morning. Why would he take them?\"");break;case"MagnifyingGlass":displayMessageP('"You know one of those might come in handy so I can look for small insects on my flowers."');break;case"NewsArticle":displayMessageP('"That\'s the article Cooper told me about last night. It really, really upset him."');break;case"ShardAnalysis":displayMessageP("\"That's strange. I only use the shears to cut vines and bushes. I wouldn't use them on metal. That would damage the blades.\"");break;case"StolenMoney":displayMessageP('"Where did you get that money, Mr. Inspector? Surely, Mr. Baxter didn\'t pay you that much to work on this case."');break;case"ThreatNote":displayMessageP('"That looks serious, Mr. Inspector. Tell Ken or Mr. Baxter."'),this.alterMood(-.5,-.5);break;default:this.respond(this.phrase
BankDunno)}},objs.Ivan.give=function(e,o,s,a){switch(s.object.moveTo(a.objectName),s.objectName){case"GardenShears":displayMessageP('Ivan beams like a child. "I appreciate you for returning my shears!"'),state.shears_found=!0,this.alterMood(2,2);break;default:displayMessageP('"What am I to do with this?"')}},me.askWhere=function(e){switch(e){case"AlarmPanel":case"BallroomDoorway":case"Ballroom":case"Bar":case"Lounge":case"SalonB":case"SalonC":displayMessageP('"I don\'t know much about things inside the hotel."');break;case"Ally":displayMessageP('"I almost always see her at the front desk."');break;case"Baxter":displayMessageP('"I guess he\'s somewhere inside the hotel."');break;case"ControlPanel":displayMessageP('"That\'s in Joyville."');break;case"Cooper":this.informed("EVENT_COOPER_IS_DEAD")?displayMessageP('"My friend is no longer here."'):displayMessageP('"He\'s no doubt inside the hotel cleaning."');break;case"Cornville":displayMessageP('"It\'s a long ride from here, Mr. Inspector."');break;case"Davis":
case"Lina":displayMessageP('"I don\'t know where she is."');break;case"Fountain":displayMessageP('"Oh it\'s in the middle of my flowers in the Grand Hall."');break;case"Generator":displayMessageP('"The generator is north of Joyville. I try to make it invisible behind the bushes."');break;case"GrandHall":displayMessageP('"That\'s in the hotel."');break;case"Ivan":displayMessageP('"Are you seriously asking me where I am? Is this a trick question?"');break;case"Joyville":displayMessageP('"It\'s to the west of my flower path."');break;case"Ken":displayMessageP('"I don\'t know where he is."');break;case"Ride":displayMessageP('"It\'s near Joyville."');break;case"Weeds":displayMessageP('"They\'re everywhere! But I will get them all."');break;default:displayMessageP('"I don\'t know where that is."')}},objs.Jared=new Employee("Jared","Jared"),me=objs.Jared,me.synonyms=["Jared","Jared's","ride guy","operator","ride operator","Jared Scott"],me.in="Room206",me.name="Jared Scott",me.hintName="Jared Scott (ride controller
)",me.attentionSpan=5,me.fingerprints="Jared",me.fingerprint_data=[10.565,16.945,65.128],me.fingerprintResponse=function(){displayMessageP("Jared's eyes widen. \"Does this mean I'm going to jail?\"")},me.smalltalkResponses={hello:{happy:'"Hello."',calm:'"Hello."',gloomy:'"Hello sir," Jared says softly.',anxious:'"Hi," he says quickly.'},goodbye:{happy:'"Bye."',calm:'"Bye."',gloomy:'"Bye."',anxious:'"Bye."'},howareyou:{happy:'"I\'m still pretty shaken."',calm:'"Better than earlier."',gloomy:'"I\'m scared. They think I killed Mr. Franks"',anxious:"\"I'm freakin' out.\""}},me.phraseBankDunno={type:"random",happy:{last:-1,phrase:['"Sorry. I don\'t know much about that."',"Jared smiles. \"I just don't get what you're asking.\"",'"Dude, what are you talking about?"']},calm:{last:-1,phrase:['"Say again?"','"I don\'t get it."','"Can you ask again?"','"Dude, I don\'t know what to say."']},gloomy:{last:-1,phrase:['"I don\'t know anything about that."',"Jared shrugs his shoulders.","\"Dude, I just don't get what you're
saying.\""]},anxious:{last:-1,phrase:["\"I don't understand what you're asking.\"","\"I'm sorry, Inspector. I'm too freaked out to answer many questions.\"",'"I don\'t know. Are you going to arrest me?"']}},me.hibye=function(e){this.smalltalkRespond(e)},me.howAreYou=function(){this.smalltalkRespond("howareyou")},me.objdesc=function(){return!!inMotion(this.objectName)||(!!this.nodesc||(displayMessage("Jared Scott is here.<br>"),!0))},me.EnneagramType=5,me.events={EVENT_FRANKS_IS_DEAD:{known:!1,delta_pleasure:-5,delta_intensity:-5},EVENT_COOPER_IS_DEAD:{known:!1,delta_pleasure:-2,delta_intensity:-2.5}},me.mood={current:{pleasure:0,intensity:5},default:{pleasure:2.1,intensity:2.1}},me.describe=function(){displayMessageP("Jared looks about twenty. He's thin with straight reddish-brown hair and freckles. He's\n        wearing a jean jacket and has some headphones on."),isInRoom("Jared","Room206")&&displayMessageP("He looks rather pale and is slightly quivering.")},me.movementGoals=[[60,0,"Room206"],[1e3,0,"Room2
06"]],me.askAbout=function(e){switch(e){case"Ally":displayMessageP("\"I've just said hi and bye to her. That's all we've ever said to each other.\"");break;case"Bar":case"Lounge":displayMessageP("\"No, I haven't been there. I mean I'm old enough and all, but I've had troubles in the past with alcohol.\"");break;case"Baxter":displayMessageP("\"Mr. Baxter hired me for this job, at a time when no one else would. Look, I've got a \n                checkered past, ran into some trouble at school and all, but I didn't make the ride crash.\""),awareOf("Ride");break;case"Bed206":displayMessageP('"This is way more comfortable than I\'m used to."');break;case"BottleOfGlue":displayMessageP('"Yeah, I used to have a problem with sniffing glue. Not anymore. That crap really messes up your mind."');break;case"Building":case"Lobby":displayMessageP('"I don\'t spend much time in the building. I walk straight through to Joyville."'),awareOf("Joyville");break;case"Bus":displayMessageP('"I don\'t know about any bus. My uncle usu
ally drops me off here and picks me up."');break;case"Bushes":displayMessageP('Jared turns red. "I admit it. I sometimes go in the bushes to take a leak. \n                I didn\'t think that was breaking the law."');break;case"Car":case"Ride":case"Track":case"FranksDeath":displayMessageP("\"I'm going over it again and again in my mind. The Megacoaster takes one \n                rider at a time. Mr. Baxter went first. No problem. Mr. Franks went second. For some reason, \n                his car kept speeding up. I turned on the backup safety system, but it didn't work. Even the \n                emergency shut off didn't work.\" His breathing becomes increasingly rapid and shallow. \n                I didn't do anything wrong. The safety system barfed.\""),awareOf("Baxter"),awareOf("FranksBody"),awareOf("Car"),awareOf("SafetySystem"),awareOf("Track");break;case"CleaningSupplies":case"Vacuum":case"Mop":displayMessageP('"Dude, I\'m nineteen. I have better things to do than to clean things."');break;case"Con
trolPanel":displayMessageP("\"So, the control panel is how you operate the Megacoaster. Everyone says it's complicated to \n                use, but it's really not. It lets you start and stop the ride. There's also an emergency \n                shutoff system if something goes wrong.\""),awareOf("Ride"),awareOf("SafetySystem");break;case"Cooper":case"CoopersBody":case"CoopersDeath":this.informed("EVENT_COOPER_IS_DEAD")?(displayMessageP('"This is just like the horror movies I used to watch. I guess if he died while I was \n                    locked up in here -- guess that proves I didn\'t do it."'),this.alterMood(2,0)):displayMessageP('"I think he\'s the janitor or something."');break;case"CutWires":displayMessageP('"If the safety system wires were cut, that would explain why the ride crashed."'),awareOf("SafetySystem"),this.alterMood(1,1);break;case"Davis":case"Eva":case"Lina":displayMessageP('"I don\'t know who that is."');break;case"Expansion":displayMessageP("\"Yeah, I hear they're making a bigger the
me park. I'd love to work on some of those rides. \n                Operating the one ride can get a bit boring day after day.\"");break;case"Flowers":case"Path":displayMessageP('"I guess the flowers are nice looking, but flowers just ain\'t my thing."');break;case"FranksBody":displayMessageP("\"That was grody to the max. I don't think I'll ever watch another slasher movie.\"");break;case"GardenShears":case"GardenSupplies":case"GardenTools":displayMessageP('"I don\'t know anything about gardening."');break;case"Generator":case"SafetySystem":displayMessageP("\"The ride has a safety system that's powered by its own generator. Even if the main \n                power goes out, the safety system will still work. It's in a small shed just north of Joyville.\""),awareOf("Generator"),awareOf("Joyville");break;case"Happyland":displayMessageP("\"I'm really grateful for this job. I think the Megacoaster was a great ride and if they build \n                more like it, millions of people will come. I'd like to work he
re when they expand.\""),awareOf("Ride");break;case"Ivan":displayMessageP('"He\'s the gardener. He prunes the bushes and tends to the flowers in Joyville. Never spoke to him much."'),awareOf("Ivan"),awareOf("Bushes");break;case"Jared":case"Yourself":displayMessageP("\"I'm nineteen. I'm not in school right now, but I plan to go back in September. I like working \n                with my hands. I'm helping my uncle rebuild his '57 Chevy.\"");break;case"Job":displayMessageP("\"I operate the Megacoaster. Been here for almost a year. I usually work all day, but this week, I just come \n                in the mornings as a favor to Mr. Baxter. He likes riding it to start his day. It's pretty straightforward to run. I don't understand why everyone \n                thinks it's complicated.\""),awareOf("Baxter"),awareOf("Ride");break;case"Joyville":displayMessageP("\"I think it's great. We've had a lot of visitors. Most of them love the Megacoaster. Only a few pukers.\""),awareOf("Ride");break;case"MidwayGames":case
"PicnicTables":case"FoodBooths":displayMessageP('"I like the carnival atmosphere of it all. I\'m too busy manning the Megacoaster to \n                enjoy all the other things that Joyville has to offer."'),awareOf("Joyville"),awareOf("Ride");break;case"Ken":displayMessageP('"He\'s been good at showing me around and helping me get set up here. He comes around \n                every now and then to check in with me."');break;default:this.respond(this.phraseBankDunno)}},me.show=function(e){switch(e){case"Analyzer":displayMessageP("Jared perks up. \"Awesome. That looks like one of those Sherlock units. Built in spectroscope and fingerprint analyzer. \n                I read up on technology. That's one gnarly system you've got there.\"");break;case"BottleOfGlue":case"GlueSample":displayMessageP('"Okay, keep that away from me, please. I used to have a real problem sniffing glue."');break;case"ControlPanelFingerprints":displayMessageP('"I\'m the only one who uses the control panel. Those should be my fingerpri
nts."'),awareOf("ControlPanel");break;case"FranksBlood":case"FranksBloodAnalysis":displayMessageP('"Dude, I can\'t look at that!"'),this.alterMood(-1,-1);break;case"GardenShears":displayMessageP('"I suppose those could be used to cut the safety system\'s power cables."'),awareOf("SafetySystem");break;case"ShardAnalysis":displayMessageP('"I guess that proves the shears were used to cut the safety system wires."'),this.alterMood(1,1);break;default:this.respond(this.phraseBankDunno)}},me.tellAbout=function(e){switch(e){case"Cooper":case"CoopersBody":case"CoopersDeath":state.cooper_dead?(this.inform("EVENT_COOPER_IS_DEAD"),displayMessageP('"This is just like the horror movies I used to watch. I guess if he died while I was \n                        locked up in here -- guess that proves I didn\'t do it."')):displayMessageP('"Yeah, he\'s the janitor, right?"');break;case"CutWires":displayMessageP('"If the wires were cut, that would definitely cause the ride to crash.You better tell Mr. Baxter or Ken."');break;cas
e"GardenShears":case"ShardAnalysis":this.show(e);break;default:displayMessageP('"Okay, but I don\'t see why I need to know about that."')}},me.askWhere=function(e){switch(e){case"ControlPanel":displayMessageP("\"It's in Joyville. That's where you control the Megacoaster from.\"");break;case"Generator":case"SafetySystem":displayMessageP('"Yeah, it\'s hidden in the bushes north of Joyville."');break;case"Jared":displayMessageP('"Dude, really?"');break;case"Joyville":displayMessageP('"It\'s to the north of the hotel. Just follow that pretty flower path."');break;case"Ride":displayMessageP('"Just go to Joyville. You\'ll see it from there."');break;default:displayMessageP('"Sorry, sir. I don\'t know where that is."')}},objs.Ken=new Employee("Ken","Ken"),me=objs.Ken,objs.Ken.synonyms=["Ken","Parker","Ken Parker","guard","security","security guard","mr parker","mr ken parker"],objs.Ken.fingerprints="Ken",objs.Ken.fingerprint_data=[54.618,54.684,69.152],objs.Ken.in="Lobby",objs.Ken.name="Ken",objs.Ken.hintName="Ken
Parker (security chief)",objs.Ken.attentionSpan=3,objs.Ken.movementGoals=[[1,0,"Lobby"],[10,0,"SecurityDesk"],[60,10,"Reception"],[120,20,"SecurityDesk"],[20,20,"SalonC"],[1e3,20,"SecurityDesk"]],me.flirtingActivities=["flirting with","trying to look cool for","posing for","making smalltalk with","trying to tell a joke to","telling a tall tale to impress","talking himself up to","trying to get a smile out of","complimenting"],me.objdesc=function(){return!!inMotion(this.objectName)||(inSameRoom("Ally","Ken")?(displayMessage("Ken is "+pickOne(this.flirtingActivities)+" Ally.<br>"),!0):inSameRoom("Davis","Ken")?(displayMessage("Ken is "+pickOne(this.flirtingActivities)+" Ms. Davis.<br>"),!0):(displayMessage("Ken is here.<br>"),!0))},me.mood={current:{pleasure:2,intensity:2.5},default:{pleasure:2,intensity:2.5}},me.events={EVENT_FRANKS_IS_DEAD:{known:!1,delta_pleasure:-2,delta_intensity:2},EVENT_COOPER_IS_DEAD:{known:!1,delta_pleasure:-2,delta_intensity:2},EVENT_SAFE_IS_EMPTY:{known:!1,delta_pleasure:-2,delta_in
tensity:3},EVENT_WENT_TO_WAKE:{known:!1,delta_pleasure:.5,delta_intensity:0},EVENT_WITNESS_COOPER_DIE:{known:!1,delta_pleasure:-2,delta_intensity:2},EVENT_SHOWN_WAD_OF_CASH:{known:!1,delta_pleasure:.5,delta_intensity:1},EVENT_SHOWN_HAIRSPRAY_ANALYSIS:{known:!1,delta_pleasure:0,delta_intensity:0},EVENT_SHOWN_VOMIT_ANALYSIS:{known:!1,delta_pleasure:-2,delta_intensity:-2},EVENT_SHOWN_FAKE_NEWS_ARTICLE:{known:!1,delta_pleasure:-.5,delta_intensity:.5},EVENT_SHOWN_NEWSPAPER:{known:!1,delta_pleasure:0,delta_intensity:.5},EVENT_SHOWN_WINE_ANALYSIS:{known:!1,delta_pleasure:0,delta_intensity:.5}},me.smalltalkResponses={hello:{happy:'"Hello, sir"',calm:'"Hello."',gloomy:'"Hi," Ken says softly.',anxious:'"Inspector," he says quickly.'},goodbye:{happy:'"Goodbye, sir"',calm:'"Bye, Inspector."',gloomy:'"Bye."',anxious:'"Later."'},howareyou:{happy:'"I\'m doing better now."',calm:'"Okay, Inspector."',gloomy:"\"I'm frustrated. We've got to get to the bottom of what's going on.\"",anxious:"\"How do you think I'm doing? There's
been a suspicious death on my watch.\""}},me.phraseBankDunnoAsk={type:"random",happy:{last:-1,phrase:["\"I'm sorry, Inspector. I don't know what you're talking about.\"",'"Sorry. I don\'t know anything about that."','"Sorry, I don\'t follow you."']},calm:{last:-1,phrase:['"Come again?"','"I don\'t know about that."','"I don\'t know anything about that"',"\"I don't know what you're referring to.\"","\"I don't think that's important to this case.\""]},gloomy:{last:-1,phrase:['"Sorry, I don\'t know about that."',"Ken shrugs his shoulders.",'"I don\'t know enough about that to say anything."']},anxious:{last:-1,phrase:['"I just don\'t know about that."','"I don\'t know."','"I just don\'t know."']}},me.phraseBankDunnoTell={type:"random",happy:{last:-1,phrase:["\"Sorry, I don't know what you're trying to tell me.\"","\"Sorry, I don't understand what you're saying.\"",'"Sorry, I don\'t follow."']},calm:{last:-1,phrase:['"Say again?"','"You\'re going too fast for me, Inspector. Can you start with something simpler.
"',"\"I don't understand what you're trying to tell me.\""]},gloomy:{last:-1,phrase:["\"I'm not a police inspector. I don't understand at all what you're telling me.\"",'"Okay."','"Alright, Inspector."']},anxious:{last:-1,phrase:['"I don\'t care about that."','"Can we focus on things that are relevant to the case?"','"Fine. Tell me about something that I care about."']}},me.phraseBankDunnoShow={type:"random",happy:{last:-1,phrase:["\"Sorry, I don't know why you're showing me this.\"",'Ken makes a face. "Why are you showing me this?"',"\"Sorry, I don't understand what you're showing me.\""]},calm:{last:-1,phrase:["\"I don't understand why you're showing me this?\"",'"I don\'t think I follow."','"I don\'t understand what this means."']},gloomy:{last:-1,phrase:["\"I don't get why you're showing me this.\"",'Ken shrugs. "I don\'t see the relevance."','Ken sighs, "Fine."']},anxious:{last:-1,phrase:['"Why are you showing me that?"','"I don\'t think that matters to this case."','"Why don\'t we focus on more importa
nt things?"']}},objs.Ken.describe=function(){return displayMessageP("\n                    Mr. Parker is a short burly fellow with a comb-over, but looks tough enough that you'd probably lose in a fight. \n                    He's dressed in a blue security uniform."),!0},objs.Ken.fingerprintResponse=function(){displayMessageP('Ken takes a step back at the sight of your fingerprint kit. "Whoa whoa whoa! \n       You suspect me?" He shoulders drop. "Fine take the prints...waste of time."'),this.alterMood(-1,-1)},objs.Ken.hibye=function(e){this.smalltalkRespond(e)},objs.Ken.howAreYou=function(){this.smalltalkRespond("howareyou")},objs.Ken.askAbout=function(e){switch(e){case"AlarmPanel":displayMessageP('"This alarm panel shows if there\'s been any unauthorized access to the different parts of the resort."');break;case"Ally":discretion("Ken","Ally"),displayMessageP('"Cute. Nice bod. She\'s almost ready to go out with me."'),this.alterMood(1,1);break;case"Ballroom":displayMessageP('"We currently have the ballroom
set up as offices for the finance team. They felt a \n                little cooped up working in their rooms last week. Given that we\'re closed this week, Mr. Baxter wanted to \n                give them some space."');break;case"Lounge":case"Bar":displayMessageP('"I hope you\'re not asking me out, Inspector."');break;case"Baxter":displayMessageP("\"Mr. Baxter is the CEO of Happyland. Good guy. He doesn't like titles or hierarchies. The only title he accepts is 'Mister' \n             He tries really hard to make this a happy work environment. Today's the first day I haven't seen people high-fiving or laughing a lot. \n             You're not getting the typical Happyland experience, Inspector.\"");break;case"BottleOfGlue":displayMessageP("\"You're the Inspector, but I don't see how glue fits into a suspicious death investigation.\"");break;case"Building":displayMessageP('"The building is pretty secure. Main entrance in the lobby and one exit toward the park near the back of the hotel. The \n
      alarm panel at my desk alerts me to any unauthorized access."'),awareOf("AlarmPanel");break;case"Bus":displayMessageP('"Most of the staff goes home to Cornville for the weekend. We catch the late bus around 8pm."');break;case"Car":case"Ride":case"Track":displayMessageP('"The Megacoaster was supposed to be our biggest attraction. I hope the cause was \n                something that can be easily fixed so we can confidently re-open it."');break;case"Ceiling":displayMessageP("\"It's a ceiling, man. What's the big deal?\"");break;case"Chair":displayMessageP('"Man, it\'s a chair."');break;case"Chandelier":displayMessageP('"I think it\'s pretty...in a manly kind of way."');break;case"CleaningSupplies":this.informed("EVENT_COOPER_IS_DEAD")?displayMessageP("\"I don't know about that. That was really Mr. Cooper's area of expertise.\""):displayMessageP("\"I don't know about that. That's really Mr. Cooper's area of expertise.\""),awareOf("Cooper");break;case"ControlPanel":displayMessageP("\"I don't know about t
hat. That's Jared's area of expertise. He's in room 206 if you need to question him.\""),awareOf("Jared");break;case"Cooper":this.informed("EVENT_COOPER_IS_DEAD")?displayMessageP('"He was really diligent at his work. Kept this place spotless. I don\'t see why anyone would want to hurt him."'):displayMessageP('"He\'s our custodian. Darn good one too. Keeps this place spotless."');break;case"CoopersBody":case"CoopersDeath":displayMessageP("\"I'm really uncomfortable with what happened.  \n                I'm not a wimp, but I can't stand to see dead bodies. And it's happened twice today.\"");break;case"CoopersWine":displayMessageP('"Yeah, I noticed that he drank after hours. I don\'t think that really matters."');break;case"Cornville":displayMessageP('"Lame little town. I only live there so I can be close to my mother who has a long term illness."');break;case"Davis":displayMessageP("\"She's got some bodacious curves. I've almost convinced her to go out with me.\""),this.alterMood(1,1);break;case"DisplayCabine
t":displayMessageP("\"Unfortunately, my master key doesn't open that cabinet. As far as I know only the bartender has access and he \n                doesn't come back till Monday.\""),awareOf("MasterKey");break;case"Dropcloth":displayMessageP('"I thought the man deserved some dignity and not be gawked over. But to be honest, I just couldn\'t stand looking at his body anymore."');break;case"Enemies":displayMessageP('"I can\'t think of any enemies, but we did get those threatening letters. So obviously, someone intended to do us harm."'),awareOf("ThreatNote");break;case"Eva":displayMessageP("\"She's our maid. I haven't seen her around for a couple of days.\"");break;case"Expansion":displayMessageP("\"We were planning to begin the expansion in a few weeks. I don't know what impact the Megacoaster crash will have on that.\n                    Assuming you find out what happened and we can restore confidence in the ride and our personnel, I don't see any problems.\"");break;case"FinancialReport":displayMessageP(
"\"You'll have to ask Mr. Baxter or someone on the finance team. I don't know any of that stuff.\"");break;case"Floor":displayMessageP('"It\'s a floor. Duh."');break;case"Flower":displayMessageP("\"I see you picked a flower for Ally. Just because you're about the same age as her doesn't mean much to her. \n                She likes older men.\""),awareOf("Ally"),this.alterMood(-.5,-.5);break;case"Flowers":displayMessageP('"Yeah, they\'re really pretty." He deepens his voice, "pretty beautiful, if you\'re into that kind of thing."');break;case"FoodBooths":case"MidwayGames":case"PicnicTables":displayMessageP('"All that stuff is part of the festive atmosphere out in Joyville."'),awareOf("Joyville");break;case"Fountain":displayMessageP('"Yeah, it\'s a nice fountain with all the flowers all around." He deepens his voice, "pretty fancy, if you\'re into that kind of thing."');break;case"FranksBody":case"FranksDeath":displayMessage('"Mr. Franks was a real go lucky kind of guy, a lot like Mr. Baxter. \n            Th
e two of them reminded me of a couple of kids, always playing jokes on each other and looking for fun things to do together." \n            His smile disappears, "I was really disturbed when I saw his body'),this.informed("EVENT_COOPER_IS_DEAD")&&displayMessage(" and then to see Mr. Cooper dead as well"),displayMessageP(". Man! If this is what security work is becoming, I don't know if I'm cut out for it.\"");break;case"FranksKey":displayMessageP("\"I don't know what that key is for; it's too small to be a door key.\"");break;case"Fridge":displayMessageP("\"That's where the staff can store their snacks. Usually we eat at the restaurant for free, but \n                        this week we're on our own for snacks.\""),awareOf("Restaurant");break;case"Fumigation":displayMessageP("\"We're fumigating for bed bugs. Don't go up above the second floor, the fumigation chemicals are hellacious.\"");break;case"FumigationSign":displayMessageP('"I hope you heeded the sign."');break;case"GardenShears":displayMessageP('"T
hat belongs to Ivan. He\'s pretty protective of his equipment."'),awareOf("Ivan");break;case"GardenSupplies":case"GardenTools":displayMessageP('"Those belong to Ivan. No touchie! He\'s pretty protective of his stuff."'),awareOf("Ivan");break;case"Generator":displayMessageP('"I know where it is, but I don\'t really know what it does."');break;case"GrandHall":displayMessageP('"Yeah, I can see it from my desk. It looks like that castle of Versailles and I am the king and I cast my eyes upon the fair maiden Ally all day." You suppress an eye roll.'),awareOf("Ally"),this.alterMood(.5,.5);break;case"Habitat":displayMessageP('"I heard something about that. But Mr. Baxter said that everything worked out and we can expand without any worry."');break;case"HairSpray":displayMessageP('"Dude, do you really think I could get much use out of hairspray?"');break;case"Happyland":displayMessageP("\"It's a peaceful place for the most part and an easy job. Of course we'll get the occasional \n            unruly guest who doesn'
t like that he missed his shot on the bottle toss game because he was tipsy. It's the alcohol. If \n            we wouldn't serve alcohol, I wouldn't have anything to do. That's the only kind of <i>excitement</i> I get in my job, well, until today.\"");break;case"Ivan":displayMessageP("\"Ivan's the gardener. He pretty much just keeps to his flowers all day. I tried striking up a conversation with him a few times, \n             but he didn't seem interested, so I let him be.\"");break;case"Jared":displayMessageP("\"He's a smart kid. I spent some time with him when he first started showing him around Joyville. He figured out how \n                to work the ride on his first day. He knows the ins and outs of that system. I wouldn't be surprised if he becomes a mechanic or an engineer when he grows up.\""),awareOf("Ride"),awareOf("Joyville");break;case"Job":displayMessageP("\"I've been here a bit over four years. Kinda funny. Mr. Baxter didn't think we needed security -- he thinks we're all \n            like
mean cops or something. He said it would spoil the atmosphere to see security. I made a bet with him that he'd see unruly crowds or \n            arguments in the lounge within a week. Sure enough I was right and he hired me. I try to keep a careful watch from a distance so as not to \n            spoil the guests' happy mood.\"");break;case"Joyville":displayMessageP('"Joyville has really brought lots of new people here. Lots of people make day trips from Cornville and elsewhere. \n                The carnival atmosphere is really fun. Takes me back to working at state fairs as a teenager."');break;case"Ken":case"Yourself":displayMessageP("\"I moved to Cornville many years ago to help take care of my mother, who's been ill for some time. This isn't the ideal job \n            because I'm away most of the week. But I stay because Mr. Baxter's been very good to me. I never finished my security guard certification. He hired \n            me anyway and gave me money to finish my courses. Great, great boss.\"");
break;case"Lina":displayMessageP('"She\'s one of the accountants. She works in the ballroom."'),awareOf("Ballroom");break;case"Lobby":displayMessageP("\"It's a pretty grand room. Even prettier when Ally's at the Reception desk.\""),awareOf("Ally");break;case"Map":displayMessageP('"The map I gave you shows you the whole resort."');break;case"MasterKey":displayMessageP('"The master key will open all the doors in the resort. Whatever you do, don\'t lose it."');break;case"Motive":displayMessageP('"I really can\'t think of any."');break;case"NewsArticle":displayMessageP('"I don\'t really follow the news."');break;case"Newspaper":displayMessageP("\"Mr. Baxter was telling us about his last week. There was a concern raised that our expansion was going to \n                destroy some animal's habitat, but the environmentalists were wrong, so we're allowed to use that land after all.\""),awareOf("Habitat");break;case"Nook":displayMessageP('"My nook is my little home in the Happyland castle. As much as I\'d like to s
tay in my nook all day and watch Ally, \n            I do my rounds to ensure there are no problems."');break;case"ParkGlassDoors":objs.ParkGlassDoors.isLocked()?(displayMessageP('"Yes, the doors are locked. I left them locked so no one would go and disturb the scene of the accident. \n                    I\'ve since opened them."'),objs.ParkGlassDoors.setOpened()):displayMessageP('"Those doors lead you to Joyville."'),awareOf("Joyville");break;case"Path":displayMessageP('"Yeah, the path is really pretty." He then deepens his voice. "If you\'re into that kind of thing."');break;case"Photocopier":displayMessageP('"I believe the ladies have one in the ballroom."');break;case"Piano":displayMessageP('"We have a piano in the lounge. We have a guy come in every few days to play in the evening. He\'s pretty popular."');break;case"Player":displayMessageP('"I don\'t know you well enough. I reserve my judgement."');break;case"Posts":displayMessageP("\"Dude, they're just posts. Haven't you seen something like that befo
re?\"");break;case"ReceptionCounter":displayMessageP('"It\'s a nice looking counter, the lady behind it is even nicer looking."');break;case"ReceptionistsBed":displayMessageP("\"One day soon, my friend. I'll be invited into Ally's bed.\""),awareOf("Ally"),this.alterMood(.5,.5);break;case"Restaurant":displayMessageP('"The restaurant is shut down this week."');break;case"SafetySystem":displayMessageP("\"I don't know how all that stuff works. But if there's a problem with the safety system, that might explain why the coaster car crashed.\"");break;case"SalonB":displayMessageP("\"That's Mr. Franks' office. That's also where the company's secure cabinet is located.\""),awareOf("SecurityCabinet");break;case"SalonC":displayMessageP("\"That's Mr. Baxter's office.\"");break;case"SecurityCabinet":displayMessageP("\"The secure cabinet contains the company's money. It should be locked at all times. Mr. Franks must have had a key. I don't know if anyone else does.\"");break;case"SecurityDeskTable":displayMessageP('"It\'s
just my little table."');break;case"Sofas":displayMessageP('"Those are really cozy sofas."');break;case"StaffFood":displayMessageP("\"That's the food the staff keeps for snacks. Don't eat mine!\"");break;case"TV":displayMessageP('"I like spending my evenings watching TV."');break;case"ThreatNote":displayMessageP('"Mr. Baxter has the threatening letter. We\'ve spoken about it at length, but neither of us can come up with who might have written it."');break;case"Vomit":displayMessageP('"Aw man, even thinking about barf makes me noxious."'),this.alterMood(-1,-1);break;case"Wake":if(state.wake_in_progress)return void displayMessageP('"We\'re holding a wake for Mr. Franks right now."');state.wake_stage<2?displayMessageP('"We\'re holding a wake for Mr. Franks this afternoon at three in the lounge."'):displayMessageP('"We held a wake for Mr. Franks this afternoon. Ms. Davis served wine and we all shared some stories about Mr. Franks."'),awareOf("Davis");break;case"Wine":displayMessageP('"Ms. Davis served wine at t
he wake."');break;default:this.respond(this.phraseBankDunnoAsk)}},objs.Ken.tellAbout=function(e){switch(e){case"ElectricTypewriter":state.eDocs.typewriter.discovered?(displayMessageP("\"So, Ms. Davis' typewriter has a unique defect. Like a fingerprint. I guess you'd be able to tell if she typed a specific document.\""),state.eDocs.threat.discovered&&(displayMessageP('"So Ms. Davis is the one behind the threats! But why?"'),this.alterMood(-1,-1)),state.eDocs.fakenews.discovered&&(displayMessageP("\"So you're saying that Ms. Davis made this fake news story for Mr. Cooper. But why?"),this.alterMood(-1,-1))):displayMessageP('"I hear that Ms. Davis doesn\'t allow anyone else to use her fancy typewriter."');break;case"FranksBlood":displayMessageP('Ken turns his head away, "ewww, gross."');break;case"FranksBloodAnalysis":displayMessageP('"I don\'t understand what all that means."');break;case"FranksKey":displayMessageP("\"I don't know what that key is for, it's too small to be a door key.\"");break;case"GlueSample"
:displayMessageP('"Looks like you\'ve got yourself...a sticky situation! Hee! Hee!"'),this.alterMood(1,1);break;case"GlueAnalysis":displayMessageP('"Okay, so that\'s what glue is made of. You\'ve solved a childhood mystery for me, Inspector." Your sarcasm detector is ringing. "Can you tell me how this is relevant to your case?"');break;case"LinasKeyFingerprints":"Davis"==objs[e].of?(displayMessageP("\"Ms. Davis' prints? She shouldn't have used that key. The only reason to use that key is to open the secure cabinet!\""),this.alterMood(0,1),awareOf("SecurityCabinet")):displayMessageP("\"Of course, why wouldn't Ms. Sanchez's fingerprints be on it?\"");break;case"PaperScraps":displayMessageP('"I don\'t quite follow. Can you show me the paper strips?"');break;case"PileOfCash":state.cooperGivesPlayerCash?displayMessageP('"Holy crap! You say someone bribed Cooper with that? I know he wasn\'t well off; that money would be a strong motivation."'):displayMessageP('"Holy crap! That was on Cooper? Mr. Baxter must pay hi
m a lot more than he pays me."'),this.inform("EVENT_SHOWN_WAD_OF_CASH"),this.informed("EVENT_SAFE_IS_EMPTY")&&(displayMessageP('"I\'ll bet this came from the secure cabinet."'),awareOf("SecurityCabinet"));break;case"Poem":switch(this.getMood()){case MOOD_HAPPY:displayMessageP('Ken grins. "That\'s funny. I wanted to be a garbage man when I was a kid."');break;case MOOD_CALM:displayMessageP('"Well if you don\'t solve this case, maybe you could become a writer. Ha! Ha!"');break;case MOOD_GLOOMY:displayMessageP('"I don\'t think Mr. Baxter would appreciate you wasting time like this."');break;case MOOD_ANXIOUS:displayMessageP("\"That's crap. I'd expect someone with your education to be a better writer.\"")}break;case"Poison":state.poison_found_in_vomit&&state.hairspray_poison?(displayMessageP('"So the neurotoxin in the hairspray is what killed Mr. Cooper."'),this.alterMood(-1,-1)):state.poison_found_in_vomit?(displayMessageP('"I see. Cooper was poisoned."'),this.alterMood(-1,-1)):displayMessageP('"People should o
nly put that stuff in their hair, not in their mouths."');break;case"CutWires":case"SafetySystem":this.show(e);break;case"Scissors":displayMessage('"I don\'t think the scissors were used to kill Mr. Franks"'),this.informed("EVENT_COOPER_IS_DEAD")?displayMessageP(" or Mr. Cooper."):displayMessageP(".");break;case"ShardSample":displayMessageP('"All I see are little shiny fragments. Maybe your analyzer can tell us something."');break;case"ShardAnalysis":this.show(e);break;case"SecurityCabinet":if(!state.safe_is_empty)return void displayMessageP("\"I'm aware of the secure cabinet in Mr. Franks' office. What about it?\"");this.informed("EVENT_SAFE_IS_EMPTY")?displayMessageP('"I know about the missing money. Please tell me you found it."'):(this.inform("EVENT_SAFE_IS_EMPTY"),displayMessage('"What? Someone stole the money out of the secure cabinet? You need to tell Mr. Baxter right away!"'),this.alterMood(-3,-3));break;case"StolenMoney":displayMessage('Ken\'s eyes almost bug out of his head. "Wow!" he says slowly.
'),this.alterMood(.5,.5),this.informed("EVENT_SAFE_IS_EMPTY")&&(displayMessage("That must be the missing money from the secure cabinet!"),awareOf("SecurityCabinet"),this.alterMood(1,1)),displayMessageP("");break;case"ThreatNote":case"HairSprayAnalysis":case"VomitAnalysis":case"WineAnalysis":case"WineSample":this.show(e);break;case"VomitSample":displayMessageP("Ken turns away. \"No, no. I don't want to look at any vomit. If I do I'm gonna ralph all over you.\""),this.alterMood(-1,-1);break;case"Vow":displayMessageP("\"I got my own vow: Roses are red, violets are blue, if you don't do your job, they're gonna fire you!\"");break;case"AllyFingerprints":case"BaxterFingerprints":case"CooperFingerprints":case"CoopersBodyFingerprints":case"DavisFingerprints":case"EvaFingerprints":case"FranksBodyFingerprints":case"IvanFingerprints":case"JaredFingerprints":case"KenFingerprints":case"LinaFingerprints":case"CoopersWineFingerprints":case"FranksKeyFingerprints":case"NewsArticle":case"NewsArticleFingerprints":case"HairSpra
yFingerprints":case"ControlPanelFingerprints":case"TelephoneFingerprints":case"ElectricTypewriterFingerprints":case"StandardTypewriterFingerprints":case"LinasKeyFingerprints":case"SecurityCabinetFingerprints":case"GardenShearsFingerprints":case"StolenMoneyFingerprints":this.show(e);break;default:this.respond(this.phraseBankDunnoTell)}},objs.Ken.show=function(e){switch(e){case"Analyzer":displayMessageP("\"That's a pretty hi-tech lookin' contraption you got there.\"");break;case"CutWires":case"SafetySystem":if(!state.discoveredWiresCut)return void displayMessageP("\"I don't know how all that stuff works. But if there's a problem with the safety system, that might explain why the coaster car crashed.\"");if(state.shears_discovered){if(state.shearsFingerprintsAnalyzed&&state.cooperFingerprintsAnalyzed&&state.shearsShardsAnalyzed)return displayMessage("\"So you're saying that you've found these garden shears near the severed power cables. And the blades  \n                                contain electrical wire f
ragments and Mr. Cooper's fingerprints are on the shears. That sounds pretty convincing to me.\""),void this.alterMood(1,0);if(state.shearsFingerprintsAnalyzed&&state.cooperFingerprintsAnalyzed)return displayMessage("\"The wires appear deliberately cut and you found a pair of garden shears nearby with Mr. Cooper's prints on them. \n                                That sounds like you're pretty close, but can you prove the garden shears were used to cut the wires?\""),void this.alterMood(.5,0);if(state.shearsShardsAnalyzed)return void displayMessage('"You have evidence here that the garden shears were used to cut electrical cables."')}displayMessageP('"So the wires were cut. That means someone intentionally wanted to crash the Megacoaster. \n                        So it <i>was</i> murder. But we need evidence as to who and how."');break;case"GardenShearsFingerprints":state.shearsFingerprintsAnalyzed&&state.cooperFingerprintsAnalyzed&&state.discoveredWiresCut&&state.shearsShardsAnalyzed?(displayMessageP("\"Co
oper's fingerprints were on the shears that have cut through metal wires, just like the Megacoaster's electrical wires. \n                            I'm inclined to believe that Mr. Cooper looks guilty of sabotaging the ride and killing Mr. Franks.\""),this.alterMood(2,2)):state.shearsFingerprintsAnalyzed&&state.cooperFingerprintsAnalyzed&&state.discoveredWiresCut?(displayMessageP("\"Mr. Cooper's fingerprints were on the garden shears found near the Megacoaster's severed safetey wires. \n                        I suppose they might have been cut by the shears.\""),this.alterMood(1,1)):state.shearsFingerprintsAnalyzed&&state.cooperFingerprintsAnalyzed?displayMessageP('"Okay, all that tells us is that Mr. Cooper\'s used the garden shears."'):displayMessageP('"Those should be Ivan\'s fingerprints. Can you confirm whose prints those are?"');break;case"ShardAnalysis":if(state.discoveredWiresCut){if(state.shearsFingerprintsAnalyzed&&state.cooperFingerprintsAnalyzed&&state.discoveredWiresCut)return displayMessageP
('"So your evidence shows that the garden shears have Mr. Cooper\'s fingerprints on them and they were used to cut electrical wires. \n                            Sounds to me like he used the shears to cut the Megacoaster safety cables. That should be enough evidence to arrest him."'),void this.alterMood(2,2);displayMessageP('"You have evidence here that suggests the garden shears were used to cut electrical cables, like in the \n                        Megacoaster\'s safety system. Can you find out who used the shears?"'),this.alterMood(.5,1)}else displayMessageP('"You have evidence here that the garden shears were used to cut electrical cables. So what?"');break;case"ThreatNote":state.eDocs.threat.discovered&&state.eDocs.typewriter.discovered?(displayMessageP('"So, the typed words in the threat match those from Ms. Davis\' typewriter. I suppose anyone could have used it to type out the threat."'),this.alterMood(.5,.5)):displayMessageP('"What do you want to tell me about the threatening letter?"');break;ca
se"NewsArticle":this.informed("EVENT_SHOWN_NEWSPAPER")?displayMessage("\"Whoa. Deja vu. I think I've seen this before, but this isn't quite the same."):displayMessage('Ken skims the article. "I vaguely remember Mr. Baxter talking about this last week. I thought he said there was no environmental impact to our expansion.'),state.eDocs.typewriter||state.eDocs.strips?displayMessageP(" Let me see if I have this straight: you found this in Mr. Cooper's room, but it's fake and you have proof Ms. Davis wrote it. Why would she do that?\""):displayMessageP('"'),this.inform("EVENT_SHOWN_FAKE_NEWS_ARTICLE"),awareOf("Habitat");break;case"Newspaper":displayMessageP('Ken skims the front page of the newspaper. "I recall Mr. Baxter talking about this, but he said everything turned out okay."'),this.informed("EVENT_SHOWN_FAKE_NEWS_ARTICLE")&&displayMessageP('"Deja vu...kinda. This article is a lot like the one you showed me before, but it doesn\'t quite line up."'),this.inform("EVENT_SHOWN_NEWSPAPER"),awareOf("Habitat");brea
k;case"PaperScraps":this.informed("EVENT_SHOWN_FAKE_NEWS_ARTICLE")?(displayMessage("Ken rummages through the paper strips. \"Hmmm...some of these words look familiar, but I can't quite place them. Oh, they're from that news article you showed me earlier."),state.eDocs.typewriter.discovered?displayMessage(" You believe that Ms. Davis wrote them because the letters match her typewriter. Okay. I'm not entirely sure I understand the significance.\""):displayMessageP('"')):state.eDocs.typewriter.discovered?(displayMessageP('"You say the typed letters match those from Ms. Davis\' typewriter? Okay. She typed up these words and cut the paper into pieces. But why?"'),this.alterMood(.5,.5)):displayMessageP('"Gee, these paper strips are like a jigsaw puzzle. I\'m not good at jigsaw puzzles."');break;case"AllyFingerprints":displayMessageP('"I wouldn\'t mind a copy of those, Inspector. Even her fingers have curves!"');break;case"IvanFingerprints":displayMessageP('"Gee. It looks like you just pressed his dirty fingers ont
o the paper?" Did you find his fingerprints on anything interesting?');break;case"KenFingerprints":displayMessageP('"Now those are manly fingerprints," Ken beams.'),this.alterMood(1,1);break;case"BaxterFingerprints":case"CooperFingerprints":case"CoopersBodyFingerprints":case"DavisFingerprints":case"EvaFingerprints":case"FranksBodyFingerprints":case"JaredFingerprints":case"LinaFingerprints":displayMessageP('"Okay, I see you have '+objs[objs[e].of].uniqueName+"'s fingerprints. Where else did you find "+objs[objs[e].of].hisher+' prints?"');break;case"CoopersWineFingerprints":if(state.cooperWineFingerprintsAnalyzed||displayMessageP('"I see fingerprints on your card, but I don\'t know to whom they belong."'),state.cooperFingerprintsAnalyzed&&state.davisFingerprintsAnalyzed)return void displayMessageP("\"Cooper's fingerprints make sense. But why are Ms. Davis' prints on it? There's no way they were \n                        a couple, not with how close she is to going out with me.\"");if(state.davisFingerprintsAna
lyzed)return void displayMessageP("\"Why would Ms. Davis' prints be on that bottle? I've never seen her interact with Mr. Cooper.\"");if(state.cooperFingerprintsAnalyzed)return void displayMessageP("\"It's obvious that Mr. Cooper's prints would be on the bottle. But to whom do the other ones belong?\"");displayMessageP('"I just see numbers, Inspector. Don\'t you need to do a further analysis to tell who left those prints?"');break;case"FranksKeyFingerprints":case"NewsArticleFingerprints":case"HairSprayFingerprints":case"ControlPanelFingerprints":case"TelephoneFingerprints":case"ElectricTypewriterFingerprints":case"StandardTypewriterFingerprints":displayMessageP("\"Well, duh. Who else's prints would be on the "+objs[objs[e].from].uniqueName+'."');break;case"LinasKeyFingerprints":"Davis"==objs[e].of?(displayMessageP('"If Ms. Davis\' prints are on the key, that means she could have accessed whatever that key opens."'),this.alterMood(0,.5)):displayMessageP("\"Why wouldn't Ms. Sanchez's prints be on her own key?\
"");break;case"PileOfCash":this.tellAbout(e);break;case"SecurityCabinetFingerprints":state.davisFingerprintsAnalyzed?displayMessageP('"Odd. Ms. Davis shouldn\'t have access to the secure cabinet."'):displayMessageP('"As far as I know, only Mr. Franks and Ms. Sanchez are supposed to access the secure cabinet."');break;case"StolenMoneyFingerprints":state.davisFingerprintsAnalyzed&&state.stolenMoneyFingerprintsAnalyzed?(displayMessageP("\"So, Ms. Davis took the money. I'm sure Mr. Baxter will be very happy to hear that you've found the stolen money.\""),this.alterMood(2,2)):displayMessageP('"I guess you still have to identify whose fingerprints those are."');break;case"HairSprayAnalysis":displayMessage("\"So let's take a look at your chemical report of hairspray. "),this.inform("EVENT_SHOWN_HAIRSPRAY_ANALYSIS"),this.informed("EVENT_SHOWN_VOMIT_ANALYSIS")?displayMessageP("Hmmm... the same toxic stuff was present in Cooper's puke. A neurotoxin? Does that mean he drank some hairspray?\""):displayMessageP('How is t
his relevant?"');break;case"VomitAnalysis":displayMessageP('"Okay, I get pretty grossed out from anything barf related. If I read this correctly, there was poison in Mr. Cooper\'s system."'),this.inform("EVENT_SHOWN_VOMIT_ANALYSIS"),this.informed("EVENT_SHOWN_HAIRSPRAY_ANALYSIS")&&displayMessageP('"Oooo deja vu. I think I saw the same stuff in your hairspray analysis. Does that mean he ingested some hairspray?"');break;case"WineAnalysis":this.inform("EVENT_SHOWN_WINE_ANALYSIS"),this.informed("EVENT_SHOWN_HAIRSPRAY_ANALYSIS")?displayMessageP('"That looks familiar. The same toxic chemical was in your hairspray analysis. A neurotoxin? There was hairspray in his wine?"'):displayMessageP('"Mr. Cooper\'s wine was poisoned!"');break;case"WineSample":displayMessageP("\"I prefer my wine in a glass, not a plastic baggie. Oh, don't you need to run that through your analyzer to see what's in it?\"");break;default:this.respond(this.phraseBankDunnoShow)}},me.askWhere=function(e){switch(e){case"AlarmPanel":displayMessageP(
'"It\'s in my nook, just off the lobby."');break;case"Ally":displayMessageP('"She\'s in my radar all the time." He looks at his watch. "She should be at the reception desk right now."');break;case"Ballroom":case"Bar":case"Lounge":displayMessageP('"That\'s on the map I gave you."');break;case"Baxter":displayMessageP("\"When he's not doing a walkabout to talk to the staff, he's usually in his office. \n                Feel free to knock on his door if it's locked.\"");break;case"ControlPanel":displayMessageP("\"If you're referring to the panel that controls the Megacoaster, it's in Joyville.\"");break;case"Cooper":case"CoopersBody":this.informed("EVENT_COOPER_IS_DEAD")?displayMessageP('"Gee, How can you ask me that?"'):displayMessageP("\"Cleaning. He's a cleaning machine. But where, I don't know.");break;case"Cornville":displayMessageP('"About 60 miles away. Say, didn\'t you just drive in from there?"');break;case"Davis":displayMessageP("\"I think she's surgically attached to her desk in the ballroom. When she
finally agrees to \n                go out with me, she'll see that there are better things to do than work all the time.\"");break;case"FranksBody":state.franksBodyRemoved?displayMessageP('"The coroner came by to take his body away."'):displayMessageP("\"We haven't touched his body. It's still in the Megacoaster car.\"");break;case"Generator":case"SafetySystem":displayMessageP('"It\'s in a little shed north of Joyville."');break;case"Ivan":displayMessageP('"No doubt, he\'s tending to his flowers: either on the front steps, the fountain, or \n                 on the path to Joyville."');break;case"Jared":displayMessageP('"Like I said, he\'s still in room 206 for your questioning."');break;case"Joyville":displayMessageP('"Dude, check your map."');break;case"Ken":displayMessageP('"Are you seriously asking me that?"');break;case"Lina":displayMessageP('"Probably working in the ballroom. She works pretty long hours."');break;case"Newspaper":displayMessageP('"There\'s probably an extra newspaper in the lobby."');
break;case"Ride":case"SalonB":case"SalonC":displayMessageP('"Dude. Check your map."');break;case"SecurityCabinet":displayMessageP("\"It's in Mr. Franks' office - Salon B.\"");break;default:displayMessageP("Yeah, I don't know where that is.")}},objs.Lina=new Employee("Ms. Sanchez","Lina"),me=objs.Lina,me.synonyms=["lina","sanchez","lina sanchez","ms sanchez","mrs sanchez","ms lina sanchez"],me.hintName="Ms. Lina Sanchez (Happyland financial expert)",me.fingerprint_data=[84.539,9.23,68.31],me.fingerprints="Lina",me.in="Ballroom",me.hisher="her",me.heshe="she",me.himher="her",me.mood={current:{pleasure:3,intensity:3},default:{pleasure:3,intensity:3}},me.events={EVENT_FRANKS_IS_DEAD:{known:!1,delta_pleasure:-2,delta_intensity:-2},EVENT_COOPER_IS_DEAD:{known:!1,delta_pleasure:-1,delta_intensity:-1},EVENT_SAFE_IS_EMPTY:{known:!1,delta_pleasure:-4,delta_intensity:4},EVENT_SHOWN_WAD_OF_CASH:{known:!1,delta_pleasure:-1.5,delta_intensity:-1},EVENT_SHOW_THREAT:{known:!1,delta_pleasure:-1.5,delta_intensity:2},EVENT_SHOW
N_STOLEN_MONEY:{known:!1,delta_pleasure:-4,delta_intensity:2}},me.movementGoals=[[10,0,"Ballroom"],[1e3,0,"Ballroom"]],me.smalltalkResponses={hello:{happy:'"Hello, Inspector"',calm:'"Hello, Inspector."',gloomy:'"Hello," Ms. Sanchez says softly.',anxious:'"Inspector," she says quickly.'},goodbye:{happy:'"Goodbye, Inspector"',calm:'"Adios, Inspector."',gloomy:'"Adios."',anxious:'"Later."'},howareyou:{happy:'"I\'m okay."',calm:'"Alright, I suppose."',gloomy:'"I\'m sad."',anxious:'"I\'m scared."'}},me.phraseBankDunnoAsk={type:"random",happy:{last:-1,phrase:["\"I'm sorry, Inspector. I don't know what you're talking about.\"",'"Sorry, sir. I don\'t know anything about that."','"Sorry, sir. I don\'t follow you."']},calm:{last:-1,phrase:["\"I'm afraid I don't know about that.\"",'"I don\'t know anything about that"',"\"I'm afraid I don't know to what you're referring.\"",'"I don\'t know."']},gloomy:{last:-1,phrase:['" I don\'t know about that, Inspector."','Ms. Sanchez shrugs. "I don\'t know."','"I don\'t know enoug
h about that to say anything, Inspector."']},anxious:{last:-1,phrase:['"I just don\'t know about that."','"I don\'t know."','"I can\'t help you."']}},me.phraseBankDunnoTell={type:"random",happy:{last:-1,phrase:["\"Sorry, sir. I don't know what you're trying to tell me.\"","\"Sorry, I don't understand what you're saying.\"",'"Sorry, I don\'t follow."']},calm:{last:-1,phrase:['"Say again?"',"\"I'm afraid I don't understand you.\"","\"I don't understand what you're trying to tell me, sir.\""]},gloomy:{last:-1,phrase:["\"I'm sorry, Inspector. I can't help you with that.\"",'"Okay."','"Alright, Inspector."']},anxious:{last:-1,phrase:['"I don\'t know."',"\"I don't know. Sir, I'd really like to get back to my work.\"",'"Fine. Okay. Can I get back to work now?"']}},me.phraseBankDunnoShow={type:"random",happy:{last:-1,phrase:["\"Sorry, sir. I don't know why you're showing me this.\"",'"Sir, Why are you showing me this?"',"\"Sorry, sir. I don't understand what you're showing me.\""]},calm:{last:-1,phrase:["\"I don't u
nderstand why you're showing me this.\"",'"I don\'t think I follow."','"I don\'t understand what this means."']},gloomy:{last:-1,phrase:["\"I don't get why you're showing me this.\"",'Ken shrugs. "I don\'t see the relevance."','Ken sighs, "Fine."']},anxious:{last:-1,phrase:['"Why are you showing me that?"','"I don\'t understand the relevance."','"I\'m not interested in that."']}},me.activities=["typing up reports","filing some papers","reading a document","photocopying some papers"],me.objdesc=function(){if(inMotion(this.objectName))return!0;switch(here){case"Ballroom":return displayMessageP("Ms. Sanchez is busy "+pickOne(this.activities)+".<br>"),!0;case"Room201":return displayMessage("Ms. Sanchez is here, lying on the bed.<br>"),!0;default:displayMessage("Ms. Sanchez is here.<br>")}return!0},me.hibye=function(e){this.smalltalkRespond(e)},me.howAreYou=function(){this.smalltalkRespond("howareyou")},me.describe=function(){displayMessageP("Ms. Sanchez is about thirty years old, trim, with long black hair. She'
s wearing a navy skirt with a white blazer.")},me.askAbout=function(e){switch(e){case"Ally":discretion("Lina","Ally"),displayMessageP("\"I don't know her, but I see she's a very optimistic person, always smiling and laughing. From what I've heard from Mr. Baxter, she does her job well..\"");break;case"Ballroom":displayMessageP("\"It's a nice room in which to work. Sure beats working in my hotel room. We'll have to move out next week when the hotel reopens,\" she sighs.");break;case"Lounge":case"Bar":displayMessageP('"I don\'t go there."');break;case"Baxter":discretion("Lina","Baxter"),displayMessageP("\"He's...how do I say this? He's great at promoting a culture of happyness at Happyland. But as a manager, he's very...relaxed. \n                I think he would benefit from being a bit more direct when facing difficulties.\"");break;case"Building":displayMessageP('"This is a lovely resort. I\'m glad I can work on-site and take in some of the ambience."'),this.alterMood(.5,.5);break;case"Bus":displayMessageP(
'"Some of us take a bus back to Cornville. It should be here somewhere around 8pm."');break;case"Cooper":case"CoopersBody":this.informed("EVENT_COOPER_IS_DEAD")?displayMessageP('"He was a sweet man. Quiet, but he opened up once he learned we shared a fondness of animals."'):displayMessageP('"He\'s a sweet man. Very friendly when you get to know him. He and I share a fondness for animals."');break;case"CoopersDeath":this.informed("EVENT_COOPER_IS_DEAD")?displayMessageP("\"I'm very saddened by his passing. Two deaths in one day is very troubling. I hope you're able to get to the bottom of what happened.\""):(this.inform("EVENT_COOPER_IS_DEAD"),displayMessageP('"What? He\'s dead too." Her eyes well up and she begins to sob quietly.'));break;case"Cornville":displayMessageP("\"It's okay, but I'm more of a big city girl.\"");break;case"Davis":discretion("Lina","Davis"),displayMessageP("\"She's pretty effective at securing funding for us. She's in here all the \n            time calling investors and working out th
e financials. She's very driven and works day and night. I \n            don't think she's familiar with the concept of treating yourself to a vacation or relaxing with a hobby.\"");break;case"ElectricTypewriter":discretion("Lina","Davis"),displayMessageP('"Ms. Davis is really fast on her typewriter. I once asked \n            her if I could try it out. She flat out refused. She doesn\'t let anyone touch it."');break;case"Expansion":displayMessageP('"I hope you find the crash was an accident that can be easily fixed. Otherwise, our investors might \n                get scared off. Mr. Baxter has a lot riding on his plan to grow the park."');break;case"FinancialReport":displayMessageP('"Ah yes, I prepare a weekly financial report that shows our weekly expenses, \n            and our cash on hand of about ninety thousand dollars. That\'s the money Mr. Franks keeps safely locked up in the secure cabinet."'),awareOf("Baxter"),awareOf("SecurityCabinet");break;case"Flowers":displayMessageP('"Our gardener, Ivan, do
es a really good job making the resort look beautiful."'),awareOf("Ivan");break;case"FranksBody":displayMessageP("\"I'm very sad that hes's gone. In some ways he was mentoring me on his experience as a CFO. In some ways I was \n                mentoring him on setting up accounting disciplines. We worked very closely. He entrusted me with the spare key to the secure cabinet."),awareOf("SecurityCabinet"),awareOf("LinasKey");break;case"Ride":case"FranksDeath":case"Track":discretion("Lina","Baxter"),displayMessageP("\"I'm very saddened by Mr. Franks' passing. I worked closely with him. I just think he and Mr. Baxter \n                were stupid to go out their for their little joy ride every morning. C'mon their grown men, not little children. In my opinion, \n                they should have been more mature in running the business, \n                not playing in the playground and I--\" Her shoulders slump. \"I-I guess I'm more upset about it that I realize.\""),this.alterMood(.5,1.5);break;case"FranksKey"
:displayMessageP("\"Mr. Franks has a key to the secure cabinet in his office. That's where we store the company's money. I have \n                the other key.\""),awareOf("LinasKey"),awareOf("SecurityCabinet");break;case"Fumigation":displayMessageP("\"I know there's fumigation going on upstairs. That's why we're shut down this week.\"");break;case"Habitat":displayMessageP('"Yeah, I heard there was a question of whether or not we could expand the resort. I\'m glad things \n                resolved themselves."');break;case"HairSpray":displayMessageP('"Rachel can\'t stop spraying her hair. I mean, who\'s she trying to impress?" She looks up at you. "Oh, nevermind."');break;case"Happyland":displayMessageP('"I think it\'s a great business opportunity, especially in this area, where the tourists would normally drive right by. The latest \n                financial report I put together shows the company is in really good shape."'),awareOf("FinancialReport");break;case"Ivan":displayMessageP('"I haven\'t had many
dealings with him, but he sure knows how to make the resort grounds beautiful."');break;case"Jared":displayMessageP("\"I know he runs the Megacoaster. We pay him a reasonable amount and he's pretty flexible with his work hours. I don't know \n                if he was negligent in causing the crash. I guess that's for you to determine.\""),awareOf("Ride");break;case"Job":displayMessageP('"I handle most of the day to day financial operations at Happyland. Things like salaries and purchases. I also \n                prepare the weekly financial report summarizing the financial health of the business."'),awareOf("FinancialReport");break;case"Joyville":case"MidwayGames":case"PicnicTables":displayMessageP('"I think the idea behind it was excellent. Not that I\'m a fun and games kind of person -- I\'m an accountant after all!" She laughs. \n                "It also provides a healthy income stream which has been helping to build up cash for our expansion."'),this.alterMood(.5,.5);break;case"Ken":displayMessage("\
"He's okay. Not much for him to do most of the time, so he putters around a lot looking busy.");var o=[];this.informed("EVENT_COOPER_IS_DEAD")&&o.push("Mr. Cooper dies suspiciously"),this.informed("EVENT_SAFE_IS_EMPTY")&&o.push("the company's money goes missing"),o.length>0?displayMessageP(" But then "+formatList(o)+' on the same day as Mr. Franks dies suspiciously? \n                    If anyone should be on top of things, he should."'):displayMessageP('"');break;case"Lina":case"Yourself":displayMessageP('"I grew up near Chicago. I love organization and math. Accounting seemed to be a good combination of those two skills.\n                I got my Business degree with a specialization in accounting. Worked around at a number of small companies. None of them had a good vibe, so I kept \n                looking till I found this job. Been here two years and I love it. My work relates to the day to day finances and summarizing our monetary status in \n                a financial report for Mr. Baxter."'),awar
eOf("FinancialReport");break;case"LinasCabinet":displayMessageP('"That\'s where I keep important things locked up."'),discretion("Lina","Davis"),displayMessageP('"Unfortunately, the lock broke a couple of months ago. Try getting a locksmith to drive out to the middle of nowhere."');break;case"LinasDesk":displayMessageP('"Nothing special. It\'s just a desk."');break;case"LinasKey":displayMessageP("\"That's my key for the secure cabinet, where we store the resort's money. Mr. Franks had the only other key.\""),awareOf("SecurityCabinet");break;case"Photocopier":displayMessageP('"It\'s a photocopier. It makes copies."');break;case"Piano":displayMessageP("\"I don't play, but I'm fond of Bach. Especially his Goldberg Variations.\"");break;case"SalonB":displayMessageP("\"That's -- I mean that was Mr. Franks' office. That's also where the company's secure cabinet is, where all our money is stored.\""),awareOf("SecurityCabinet");break;case"SalonC":displayMessageP("\"That's Mr. Baxter's office.\"");break;case"Security
Cabinet":displayMessageP('"Mr. Franks keeps our cash on hand in a secure cabinet in his office. \n                He and I have the only keys to it."'),awareOf("FranksBody"),awareOf("LinasKey");break;case"StandardTypewriter":discretion("Lina","Davis"),displayMessageP('"My typewriter is perfectly adequate. I don\'t need a fancy shmancy one like Rachel to get my work done."');break;case"StolenMoneyFingerprints":this.show("StolenMoneyFingerprints");break;case"ThreatNote":this.informed("EVENT_SHOW_THREAT")?displayMessageP('"This is news to me, Inspector. That makes me believe that today\'s events were no accident."'):displayMessageP('"I\'m not aware of any threats."');break;case"Wake":state.wake_stage>0?displayMessageP('"It was good to put work aside for a while and grieve together. I really needed those hugs"'):displayMessageP('"I\'m looking forward to being able to share my feelings with my coworkers."');break;default:this.respond(this.phraseBankDunnoAsk)}},me.tellAbout=function(e){switch(e){case"Cooper":case"
CoopersBody":case"CoopersDeath":state.cooper_dead?this.informed("EVENT_COOPER_IS_DEAD")?displayMessageP('"I know already," she says softly.'):displayMessageP('"What? He\'s dead, too?"'):displayMessageP('"Okay."');break;case"CutWires":displayMessageP('"That sounds important, but not the right person to tell that to. Try Mr. Baxter or Ken."'),this.alterMood(-.5,-.5);break;case"ElectricTypewriter":state.standardTypewriterIsBetter?(displayMessage("Ms. Sanchez smiles and holds back a laugh. \"That's funny. "),discretion("Lina","Davis"),displayMessageP("\"Rachel is always bragging how her typewriter is so much better than mine. Of course, \n                    I won't tell her the truth. She'll just find something else to brag about.\"")):displayMessageP('"She\'s always bragging about the superiority of her typewriter over my regular one."');break;case"FranksKey":displayMessageP('"Mr. Franks had a key for the secure cabinet in his office. I have a copy of that key. \n                 We are the only ones with acce
ss to the cabinet."'),awareOf("SecurityCabinet"),awareOf("LinasKey");break;case"LinasKey":if(state.davisFingerprintsAnalyzed){if(state.linaskeyFingerprintsDavisAnalyzed)return void(this.informed("EVENT_SAFE_IS_EMPTY")?(discretion("Lina","Davis"),displayMessageP('"That witch! She stole the money!'),this.alterMood(-.5,3)):(discretion("Lina","Davis"),displayMessageP('"Why would Rachel\'s fingerprints be on my key?"'),this.alterMood(-.5,2)));displayMessageP('"I have a key to the secure cabinet, where we store the resort\'s money. Mr. Franks had the other key. \n                        We are the only ones with access to the cabinet."'),awareOf("SecurityCabinet")}break;case"PaperScraps":discretion("Lina","Davis"),state.davisLiesAboutScrapbooking?displayMessageP("\"I'm confused. I guess I'm happy that she has a pastime to enjoy, but \n                    that seems out of character given how focused she is on her work all the time.\""):displayMessageP("\"I don't know why she'd spend the time to cut up little bits
of paper.\"");break;case"PileOfCash":displayMessageP('"I don\'t understand the significance of Mr. Cooper having a wad of cash on him. Can you show it to me?"');break;case"SecurityCabinet":if(!state.safe_is_empty)return void displayMessageP('"Yes, I know we have a secure cabinet."');this.informed("EVENT_SAFE_IS_EMPTY")?displayMessageP('"Yes, we have a secure cabinet. Many companies do. What of it?"'):(this.inform("EVENT_SAFE_IS_EMPTY"),displayMessageP('"What do you mean it\'s empty? Show me."'),this.alterMood(-2,3),CancelAttention("Lina"),ActivateEvent(eventLinaShowsSafe,0));break;case"StolenMoney":discretion("Lina","Davis"),displayMessageP('"You\'ve found the missing money? Show me."');break;case"StolenMoneyFingerprints":discretion("Lina","Davis"),displayMessageP("\"Rachel is not authorized to directly access the company's funds. That's theft!\""),this.alterMood(-2,2);break;default:this.respond(this.phraseBankDunnoTell)}},me.show=function(e){switch(e){case"FinancialReport":displayMessageP('"I prepare a week
ly financial report for Mr. Baxter. Ms. Davis provides me \n                the numbers and I type it up for him."'),isAccessible("FinancialReport")&&displayMessageP('She glances at the paper. "In summary, it shows our planned expenses, \n                    planned income from hotel guests and a current balance of $92,700 in cash."'),awareOf("Baxter");break;case"FranksKey":displayMessageP('"That looks like Mr. Franks\' key for the secure cabinet. I have a copy of that key. \n            We are the only ones with access to the cabinet."'),awareOf("SecurityCabinet");break;case"LinasKey":displayMessageP("\"That's my key for the secure cabinet, where we store the resort's money. Mr. Franks had the other key. \n            We are the only ones with access to the cabinet.\""),awareOf("SecurityCabinet");break;case"LinasKeyFingerprints":if(!objs.LinasKeyFingerprints.analyzed)return void displayMessageP('"That\'s my key. Those must be my fingerprints."');if(state.davisFingerprintsAnalyzed){if(state.linaskeyFingerpri
ntsDavisAnalyzed)return void(this.events.EVENT_SAFE_IS_EMPTY.known?(discretion("Lina","Davis"),displayMessageP('"That witch! She stole the money!"'),this.alterMood(-2,3)):(discretion("Lina","Davis"),displayMessageP('"Why would Rachel\'s fingerprints be on my key?"'),this.alterMood(-1,1)))}else displayMessageP('"That\'s my key. Those must be my fingerprints."');break;case"Newspaper":displayMessageP('"Oh, I guess we made the news. That land dispute was concerning me for a while, \n                but it turned out that we were good to go."'),awareOf("Habitat");break;case"PaperScraps":this.tellAbout(e);break;case"PileOfCash":displayMessageP('Ms. Sanchez takes a closer look. "That looks just like the stacks \n            of money that we keep in the secure cabinet. Mr. Franks and I are the only ones who can access it. And I \n            didn\'t give that money to Mr. Cooper."'),awareOf("SecurityCabinet");break;case"StandardTypewriterFingerprints":discretion("Lina","Davis"),displayMessageP("\"Well, who else's fi
ngerprints would you expect to see? There's no way the great Rachel Davis would \n                touch a commoner's typewriter like mine. No way she'd let me use hers, either.\"");break;case"StolenMoney":this.inform("EVENT_SHOWN_STOLEN_MONEY"),this.informed("EVENT_SAFE_IS_EMPTY")?displayMessageP('"Whoa! That\'s the missing money from the secure cabinet. Or at least part of it!"'):displayMessageP('"Where did you get that from? That looks like the money we keep in the secure cabinet. \n                    I can tell from the way the money is folded and wrapped in elastics."'),awareOf("SecurityCabinet");break;case"StolenMoneyFingerprints":this.tellAbout(e);break;default:this.respond(this.phraseBankDunnoShow)}},me.showMe=function(e,o,s,a,t){if(s.object.isHere())displayMessageP('"It\'s right here."');else switch(s.object.objectName){case"LinasKey":displayMessageP('Ms. Sanchez opens her cabinet, moves some papers aside and produces a \n            key ring on which is a golden key. "I keep it in here."'),objs.Lin
asCabinet.setOpened();break;case"SecurityCabinet":displayMessage("\"The secure cabinet is in Mr. Franks' office. I'll take you there.\""),"LinasCabinet"==objs.LinasKey.in&&(objs.LinasKey.in="Lina",displayMessageP(" She takes a key out of her cabinet.")),"LinasDesk"==objs.LinasKey.in&&(objs.LinasKey.in="Lina",displayMessageP(" She takes a key from her desk.")),ActivateEvent(eventLinaShowsSafe,0);break;default:displayMessageP('"I can\'t show that to you."')}},me.fingerprintResponse=function(e,o,s,a){this.events.EVENT_SAFE_IS_EMPTY.known?(displayMessageP('"Oh my God. You think I stole the money!'),this.alterMood(-2,2)):displayMessageP("Ms. Sanchez looks nervous as you take her fingerprints.")},me.askWhere=function(e){switch(e){case"Ally":displayMessageP('"No doubt at the reception desk."');break;case"Ballroom":displayMessageP("Ballroom"==here?'Ms. Sanchez raises here arms. "We\'re in the ballroom."':"\"It's where I've been working all this week. First floor all the way to the east.\"");break;case"Baxter":displa
yMessageP('"He\'s likely working in his office, Salon C."');break;case"Bus":displayMessageP("\"I don't know where it is now, but at eight o'clock, it's going to be at the front doors.\"");break;case"Cooper":case"CoopersBody":this.informed("EVENT_COOPER_IS_DEAD")?(displayMessageP('"He\'s in heaven now." She sheds a tear.'),this.alterMood(-.5,-.5)):displayMessageP('"He\'s cleaning. Somewhere around here."');break;case"Cornville":displayMessageP('"It\'s about 65 miles east of here."');break;case"Davis":isHere("Davis")?displayMessageP("Ms. Sanchez point to Ms. Davis."):displayMessageP('"She virtually lives in the ballroom."');break;case"FranksKey":displayMessageP('"I\'m not sure now. But he carried it with him wherever he went."');break;case"Ivan":displayMessageP('"Outside, I guess."');break;case"Joyville":displayMessageP('"It\'s outside somewhere."');break;case"Ken":"Ballroom"==here&&displayMessageP('"He\'s often in here trying to impress Rachel."');break;case"Lina":displayMessageP('"I\'m right here."');break;c
ase"LinasKey":displayMessageP('"I keep it in my cabinet."');break;case"SalonB":case"SalonC":displayMessageP('"It\'s on the second floor."');break;case"SecurityCabinet":displayMessageP("\"It's in Mr. Frank's office - Salon B.\"");break;default:displayMessageP("\"I'm sorry. I don't know where that is.\"")}},informAllCharacters("EVENT_FRANKS_IS_DEAD")}function initObjects(){initCharacters(),objs.CoopersBody=new GenericObject("Mr. Cooper's body","CoopersBody"),objs.CoopersBody.in="Nowhere",objs.CoopersBody.corpse=!0,objs.CoopersBody.surface=!0,objs.CoopersBody.capacity=20,objs.CoopersBody.hisher="his",objs.CoopersBody.synonyms=["mr cooper's body","body of mr cooper","body","corpse","cooper's body","corpse of mr cooper"],objs.CoopersBody.fingerprint_data=[51.869,85.111,98.024],objs.CoopersBody.fingerprints="CoopersBody",objs.CoopersBody.hintName="Mr. Cooper (custodian -- deceased)",objs.CoopersBody.searchResponse=function(e,o,s,a){state.findCashOnCooper=!0,awareOf("PileOfCash")},objs.CoopersBody.assist=function()
{displayMessageP("There's nothing you can do for Mr. Cooper. He's already dead.")},objs.CoopersBody.examine=function(){displayMessageP("Mr. Cooper's body lies sprawled on the floor, a peaceful expression on his face.\n        His blue-gray uniform is soiled with vomit.")},objs.CoopersBody.smell=function(e,o,s,a){displayMessageP("It's true that death has a distinct odor; it's strong here.")},objs.FranksBody=new GenericObject("Mr. Franks' body","FranksBody"),objs.FranksBody.in="CrashSite",objs.FranksBody.synonyms=["mr franks' body","body of mr franks","franks","body","corpse","franks' body","franks body","Frankie","CFO","mr franks","marcus","marcus franks","body of marcus","marcus' body","frank","mr frank"],objs.FranksBody.fingerprint_data=[98.154,37.546,5.544],objs.FranksBody.fingerprints="FranksBody",objs.FranksBody.hintName="Markus Franks (Happyland CFO -- deceased)",objs.FranksBody.hisher="his",objs.FranksBody.corpse=!0,objs.FranksBody.nodesc=!0,objs.FranksBody.assist=function(){displayMessageP("There's no
thing you can do for Mr. Franks. He's been dead for a while.")},objs.FranksBody.examine=function(){displayMessageP("Mr. Franks' remains lie inside the broken car of the Megacoaster.   \n        While you've seen dead bodies before, the severity of \n        the injuries leaves a pit in your stomach. The cause of death was \n        clearly sudden blunt force trauma. No one deserves to die this violently.")},objs.FranksBody.search=function(e,o,s,a){"FranksBody"==objs.FranksKey.in?(displayMessageP("You search the body and find a silver key."),awareOf("FranksKey"),objs.FranksKey.in="CrashSite",objs.FranksKey.takeable=!0):displayMessageP("You don't find anything.")},objs.FranksBody.smell=function(e,o,s,a){displayMessageP("It's true that death has a distinct odor; it's strong here.")},objs.FranksBody.fingerprintResponse=function(){displayMessageP("You pick up his hand and shudder when you feel how unnaturally cold it is. You take a deep breath and \n        fingerprint him as quickly as you can.")},objs.FranksBlo
od=new GenericObject("sample of Mr. Franks' blood","FranksBlood"),objs.FranksBlood.in="CrashSite",objs.FranksBlood.nodesc=!0,objs.FranksBlood.drinkable=!0,objs.FranksBlood.sampleOf="FranksBody",objs.FranksBlood.analyzable=!0,objs.FranksBlood.synonyms=["blood","franks blood","franks' blood","frank's blood","mr franks blood","mr franks' blood","mr frank's blood"],objs.FranksBlood.examine=function(e,o,s,a){displayMessageP("The blood is a dark red liquid.")},objs.FranksBlood.drink=function(e,o,s,a){displayMessageP("You're not a vampire.")},objs.FranksBlood.taste=function(e,o,s,a){displayMessageP("You're not a vampire.")},objs.FranksBlood.analyze=function(e,o,s,a){displayMessageP("You carefully dab some of the blood into an evidence bag and\n        insert it into the analyzer. It whirs for a few moments and then prints out the following report:"),objs.FranksBloodAnalysis.moveTo("Player"),objs.FranksBloodAnalysis.setHeader(),displayMessageP(objs.FranksBloodAnalysis.text)},objs.FranksBloodAnalysis=new GenericObjec
t("blood analysis","FranksBloodAnalysis"),objs.FranksBloodAnalysis.in="Nowhere",objs.FranksBloodAnalysis.article="a",objs.FranksBloodAnalysis.takeable=!0,objs.FranksBloodAnalysis.synonyms=["blood analysis","analysis of blood","analysis of mr franks' blood","analysis of mr frank's blood","analysis of franks' blood","analysis of franks' blood","analysis of frank's blood","blood report","report of blood"],objs.FranksBloodAnalysis.setHeader=function(){objs.FranksBloodAnalysis.text="<pre>SHERLOCK 2000 FORENSIC ANALYZER MATERIAL ANALYSIS<br>Sample of: Mr. Franks' blood <br> Location: "+room[here].name+" <br> Time: "+getClockTime()+"<br><br>"+objs.FranksBloodAnalysis.report},objs.FranksBloodAnalysis.report="Chemical Analysis\n Liquid mixture\n pH 7.4 (slightly alkaline)\n\nBlood Type \n ABO group:    B\n Rh group:     positive\n\nChemical Composition\n Sodium          137 mmol/L\t\n Potassium       3.9 mmol/L\t\n Urea            2.4 mmol/L\n Creatinine      101 umol/L\t\n Glucose         6.1 mmol/L</pre>",objs.Fran
ksKey=new GenericObject("silver key","FranksKey"),objs.FranksKey.in="FranksBody",objs.FranksKey.weight=3,objs.FranksKey.fingerprints="FranksBody",objs.FranksKey.synonyms=["silver key","key","franks' key","franks key","franks silver key","franks' silver key"],objs.FranksKey.unlocksDoor="SecurityCabinet",objs.FranksKey.examine=function(){displayMessageP("This is a simple, small, silver key.")},objs.FranksKey.unlock=function(e,o,s,a){return displayMessageP("A key can't be unlocked. For that, you would need a 'key key'."),!1},objs.FranksKey.lock=function(e,o,s,a){return displayMessageP("A key can't be locked. For that, you would need a 'key key'."),!1},objs.LinasKey=new GenericObject("Ms. Sanchez's key","LinasKey"),objs.LinasKey.in="LinasCabinet",objs.LinasKey.takeable=!0,objs.LinasKey.weight=3,objs.LinasKey.article="",objs.LinasKey.fingerprints="Davis",objs.LinasKey.synonyms=["gold key","key","golden key","spare key","sanchez's key","sanchez key","sanchez's gold key","ms sanchez's key","ms sanchez's gold key","
lina's key","linas key","linas gold key","lina's silver key"],objs.LinasKey.unlocksDoor="SecurityCabinet",objs.LinasKey.examine=function(){displayMessageP("This is a simple, small, gold key.")},objs.LinasKey.unlock=function(e,o,s,a){return displayMessageP("A key can't be unlocked. For that, you would need a 'key key'."),!1},objs.LinasKey.lock=function(e,o,s,a){return displayMessageP("A key can't be locked. For that, you would need a 'key key'."),!1},objs.LinasCabinet=new GenericContainer("Ms. Sanchez's cabinet","LinasCabinet"),objs.LinasCabinet.in="Ballroom",objs.LinasCabinet.setClosed(),objs.LinasCabinet.nodesc=!0,objs.LinasCabinet.article="",objs.LinasCabinet.synonyms=["ms sanchez's cabinet","cabinet","sanchez's cabinet","filing cabinet","lina's cabinet"],objs.LinasCabinet.examine=function(){displayMessageP("This is a standard office filing cabinet.")},objs.SecurityCabinet=new GenericContainer("secure cabinet","SecurityCabinet"),objs.SecurityCabinet.synonyms=["secure cabinet","security cabinet","securityca
binet","cabinet","safe","locker","secure locker","vault"],objs.SecurityCabinet.adjectives=["cfo","franks","frank's","franks's","franks'"],objs.SecurityCabinet.in="SalonB",objs.SecurityCabinet.fingerprints="FranksBody,Lina,Davis",objs.SecurityCabinet.setLocked(),objs.SecurityCabinet.unlock=function(e,o,s,a){""!=a.object?"MasterKey"!=a.object.objectName?"FranksKey"!=a.object.objectName&&"LinasKey"!=a.object.objectName||(this.state==this.STATE_OPEN?displayMessageP("The "+this.name+" is already opened."):this.state==this.STATE_CLOSED?(displayMessageP("The "+this.name+" is now opened."),this.state=this.STATE_OPEN,state.safe_is_empty=!0,objs.StolenMoney.visible=!0,awareOf("StolenMoney")):(displayMessageP("The "+this.name+" is now unlocked and opened."),this.state=this.STATE_OPEN,state.safe_is_empty=!0,objs.StolenMoney.visible=!0,awareOf("StolenMoney"))):displayMessageP("The secure cabinet's keyhole is much too small for the room key."):displayMessageP("Specify what you want to unlock it with.")},objs.SecurityCabin
et.lock=function(e,o,s,a){""!=a.object?"MasterKey"!=a.object.objectName?"FranksKey"!=a.object.objectName&&"LinasKey"!=a.object.objectName||(this.state==this.STATE_OPEN?(displayMessageP("The "+this.name+" is now closed and locked."),this.state=this.STATE_LOCKED):this.state==this.STATE_CLOSED?(displayMessageP("The "+this.name+" is now locked."),this.state,this.STATE_LOCKED):displayMessageP("The "+this.name+" is already locked.")):displayMessageP("The secure cabinet's keyhole is much too small for the room key."):displayMessageP("Specify what you want to unlock it with.")},objs.SecurityCabinet.examine=function(e,o,s,a){displayMessageP("The secure cabinet is a large piece of furniture, almost like a wardrobe, but it \n        has a door and keyhole on it. The police station has similar cabinets for securing rifles. \n        It's currently "+this.openClosedOrLocked()+".")},objs.SecurityCabinet.search=function(e,o,s,a){displayMessageP("It's empty."),state.safe_is_empty=!0,awareOf("StolenMoney"),objs.StolenMoney.v
isible=!0},objs.FinancialReport=new GenericObject("financial report","FinancialReport"),objs.FinancialReport.synonyms=["financial report","finances","financials","money report","ledger","balance sheet","weekly financial report","financial health"],objs.FinancialReport.in="Nowhere",objs.FinancialReport.takeable=!0,objs.FinancialReport.weight=5,objs.FinancialReport.paper=!0,objs.FinancialReport.readable=!0,objs.FinancialReport.read=function(e,o,s,a){displayMessageP("This looks like a balance sheet, but you don't know enough about accounting to make heads or tails of it.")},objs.DavisSuitcase=new GenericContainer("Ms. Davis' suitcase","DavisSuitcase"),objs.DavisSuitcase.synonyms=["ms davis' suitcase","suitcase","davis suitcase","davis' suitcase"],objs.DavisSuitcase.in="Nowhere",objs.DavisSuitcase.article="",objs.DavisSuitcase.setClosed(),objs.DavisSuitcase.takeable=!0,objs.DavisSuitcase.weight=30,objs.DavisSuitcase.examine=function(e,o,s,a){displayMessageP("Ms. Davis' suitcase is a large with a prominent design
er label.")},objs.DavisSuitcase.open=function(){"DavisSuitcase"==objs.StolenMoney.in&&(state.tieMoneyToDavis=!0),this.isOpen()?displayMessageP("The suitcase is already open."):(this.setOpened(),displayMessageP("The suitcase is now open."))},objs.DavisDuffleBag=new GenericContainer("Ms. Davis' dufflebag","DavisDuffleBag"),objs.DavisDuffleBag.synonyms=["ms davis' dufflebag","dufflebag","davis dufflebag","davis' bag","ms davis' duffle bag","duffle bag","davis duffle bag","duffle"],objs.DavisDuffleBag.in="Nowhere",objs.DavisDuffleBag.article="",objs.DavisDuffleBag.setClosed(),objs.DavisDuffleBag.takeable=!0,objs.DavisDuffleBag.weight=30,objs.DavisDuffleBag.examine=function(e,o,s,a){displayMessageP("Ms. Davis' duffle bag is a large bag. Looks like it's made to store hockey gear.")},objs.DavisDuffleBag.open=function(){"DavisDuffleBag"==objs.StolenMoney.in&&(state.tieMoneyToDavis=!0),this.isOpen()?displayMessageP("The duffle bag is already open."):(this.setOpened(),displayMessageP("The duffle bag is now open."))},o
bjs.Newspaper=new GenericObject("newspaper","Newspaper"),objs.Newspaper.synonyms=["newspaper","paper","news","magazine"],objs.Newspaper.in="LobbyTable",objs.Newspaper.takeable=!0,objs.Newspaper.weight=5,objs.Newspaper.paper=!0,objs.Newspaper.readable=!0,objs.Newspaper.text='Thumbing through the newspaper reveals the \n    usual small town announcements and gossip. The only thing that catches \n    your eye is the headline story.\n    <div class="newspaper">\n    <h3>Cornville Weekly News</h3>\n    <p>SUNDAY, MAY 25 1980 | VERITAS IN ZORKUM | $1.25</p>\n    <p><b>RESORT LAND NOT DESIGNATED ENDANGERED ANIMAL HABITAT</b></p>\n\n    \n    <table align = "center">\n    <tr>\n        <td class = "vat" >\n        <pre>\n  The disputed land  west        \nFernbrooke    Road    has\nbeen determined not to be\nthe habitat  of  the  en-\ndangered  western cougar,\naccording  to  University\nof Cornville researchers.     \n    \n  The  news  comes  as  a\nsurprise  to  many in the\ncommunity  who  have  re-\npeated thei
r claims  that\nthe large mammal has been\nobserved in the area.</pre>\n        </td>\n        <td class = "vat" >\n        <pre>\n  Unconfirmed     reports  \nthat the  Happyland hotel\nis seeking to expand into\na  theme  park  on  these\nlands  triggered  a legal\nchallenge   by   environ-\nmentalists.      \n    \n  The  land\'s designation\nclears   the   resort  to\nproceed with  its planned\nexpansion.</pre></td>\n    </tr>\n    </table>\n    </div>',objs.Newspaper.open=function(e,o,s,a){handlePreTake(e,o,s,a),displayMessageP(this.text),state.readNewspaper=!0},objs.Newspaper.search=function(e,o,s,a){handlePreTake(e,o,s,a),displayMessageP(this.text),state.readNewspaper=!0},objs.Newspaper.examineWithMagnifyingGlass=function(e,o,s,a){displayMessageP("Big News: looking at the newspaper with your magnifying glass doesn't reveal \n        anything new. Best to leave news analysis to the professionals.")},objs.Swabs=new GenericObject("swabs","Swabs"),objs.Swabs.synonyms=["swab","swabs","foam swab","foam swab
s","foam pad"],objs.Swabs.inseparable=!0,objs.Swabs.inseparableResponse=function(){this.drop()},objs.Swabs.drop=function(){displayMessageP("You need to keep the swabs so that they remain free from contamination.")},objs.Swabs.examine=function(){displayMessageP("Each swab is a short plastic stick tipped with an absorbant foam pad. Perfect for sampling any kind of \n        material -- wet or dry.")},objs.Swabs.use=function(){displayMessageP("You automatically use a swap when you take a sample. To take a sample, type <pre>sample _____</pre>")},objs.EvidenceBag=new GenericObject("evidence bags","EvidenceBag"),objs.EvidenceBag.synonyms=["evidence bag","evidence bags","baggies","bag","bags"],objs.EvidenceBag.inseparable=!0,objs.EvidenceBag.inseparableResponse=function(){this.drop()},objs.EvidenceBag.drop=function(){displayMessageP("You need to keep the evidence bags so that they remain free from contamination.")},objs.EvidenceBag.examine=function(){displayMessageP("Each evidence bag is a small, sealable, transpar
ent plastic bag.")},objs.EvidenceBag.use=function(){displayMessageP("To use an evidence bag, type <pre>take sample of _____</pre>")},objs.Gloves=new GenericObject("latex gloves (worn)","Gloves"),objs.Gloves.synonyms=["latex gloves","latex glove","latex","glove","gloves"],objs.Gloves.uniqueName="latex gloves",objs.Gloves.inseparable=!0,objs.Gloves.inseparableResponse=function(){this.drop()},objs.Gloves.examine=function(){displayMessageP("You are wearing standard issue latex gloves. Baby blue is not your color, but they do fit like a glove.")},objs.Gloves.drop=function(){displayMessage("Regulations. You're not supposed to take off your latex gloves during an investigation.")},objs.Gloves.give=function(){this.drop()},objs.FingerprintKit=new GenericObject("fingerprint kit","FingerprintKit"),objs.FingerprintKit.synonyms=["fingerprint kit","kit"],objs.FingerprintKit.inseparable=!0,objs.FingerprintKit.inseparableResponse=function(){this.drop()},objs.FingerprintKit.drop=function(){displayMessageP("You are an Inspect
or. You don't go anywhere without your fingerprint kit.")},objs.FingerprintKit.examine=function(){displayMessageP("This is a standard fingerprint kit, useful to identify people and who has touched what objects.")},objs.FingerprintKit.use=function(){displayMessageP("Try using the syntax <pre>take fingerprints from _____</pre>")},objs.MagnifyingGlass=new GenericObject("magnifying glass","MagnifyingGlass"),objs.MagnifyingGlass.uniqueName="magnifying glass",objs.MagnifyingGlass.synonyms=["magnifying glass","magnifier","looking glass","glass"],objs.MagnifyingGlass.inseparable=!0,objs.MagnifyingGlass.inseparableResponse=function(){this.drop()},objs.MagnifyingGlass.drop=function(){displayMessageP("You are an Inspector. You don't go anywhere without your handy magnifying glass.")},objs.MagnifyingGlass.examineWithMagnifyingGlass=function(){displayMessageP("You can't use the magnifying glass to look at itself.")},objs.MagnifyingGlass.examine=function(){displayMessageP("Your magnifying glass is a standard issue 4X magn
ifier. It has a black handle and loop.")},objs.MagnifyingGlass.use=function(){displayMessageP("You need to specify what you want to look at with the magnifying glass. Try: <pre>examine ____ with magnifying glass</pre>")},objs.Analyzer=new GenericObject("forensic analyzer","Analyzer"),objs.Analyzer.synonyms=["forensic analyzer","analyzer","crime","forensic","sherlock","crime analyzer"],objs.Analyzer.takeable=!0,objs.Analyzer.weight=75,objs.Analyzer.inseparable=!0,objs.Analyzer.inseparableResponse=function(){this.drop()},objs.Analyzer.drop=function(){displayMessageP("The forensic analyzer is valuable property of the Cornville Police Department. You are not allowed to let go of it.")},objs.Analyzer.examine=function(e,o,s,a){displayMessageP("The Sherlock 2000 Forensic Analyzer is a state-of-the-art (barely) portable crime lab. It analyzes fingerprints, \n        liquids, and fabrics. No inspector should be without one.")},objs.Analyzer.use=function(e,o,s,a){displayMessageP("To use the forensic analyzer, you'll f
irst need to take a sample of an item (blood, fabric, etc.). \n        Then, analyze the sample with a command like: <pre>analyze paint sample</pre> ")},objs.MasterKey=new GenericObject("master key","MasterKey"),objs.MasterKey.synonyms=["master key","key","masterkey","hotel key"],objs.MasterKey.adjectives=["room","hotel"],objs.MasterKey.takeable=!0,objs.MasterKey.article="a",objs.MasterKey.weight=3,objs.MasterKey.visible=!1,objs.MasterKey.in="Ken",objs.MasterKey.unlocksDoor="all",objs.MasterKey.unlock=function(e,o,s,a){return displayMessageP("A key can't be unlocked. For that, you would need a 'key key'."),!1},objs.MasterKey.lock=function(e,o,s,a){return displayMessageP("A key can't be locked. For that, you would need a 'key key'."),!1},objs.StorageCloset2Door=new GenericDoor("storage closet door","StorageCloset2Door"),objs.StorageCloset2Door.in="LocalGlobals",objs.StorageCloset2Door.synonyms=["storage closet door","storage closet","door","closet door","closet"],objs.StorageCloset2Door.adjectives=["storage",
"storage room"],objs.StorageCloset2Door.lockable=!0,objs.StorageCloset2Door.setLocked();for(var e=201;e<208;e++)s=void 0,a=void 0,a="room "+(o=e)+" door",objs[s="Door"+o]=new GenericDoor(a,s),objs[s].in="LocalGlobals",objs[s].synonyms=["door",""+o,o+" door","room "+o,"door "+o,"room "+o+" door","door to "+o,"door to room "+o],objs[s].adjectives=[""+o],objs[s].lockable=!0,objs[s].setLocked();var o,s,a;function t(e){var o=e+"sRoom"+"Door",s=e+"'s door";objs[o]=new GenericDoor(s,o),objs[o].in="LocalGlobals",objs[o].article="";var a=objs[e].synonyms;objs[o].synonyms=["door"];for(var t=0;t<a.length;t++)objs[o].synonyms.push(a[t]+"'s door"),objs[o].synonyms.push(a[t]+"'s room"),objs[o].synonyms.push("door to "+a[t]+"'s room");objs[o].lockable=!0,objs[o].setLocked()}t("Ken"),t("Ivan"),t("Cooper"),t("Ally"),t("Eva"),objs.RestaurantDoor=new GenericDoor("restaurant door","RestaurantDoor"),objs.RestaurantDoor.in="LocalGlobals",objs.RestaurantDoor.synonyms=["door","restaurant door","kitchen door"],objs.RestaurantDoor.lo
ckable=!0,objs.RestaurantDoor.setLocked(),objs.ParkGlassDoors=new GenericDoor("park doors","ParkGlassDoors"),objs.ParkGlassDoors.in="LocalGlobals",objs.ParkGlassDoors.synonyms=["door","doors","glass doors","park door","park doors","doors to park","door to park","sliding glass doors","window doors"],objs.ParkGlassDoors.uniqueName="park doors",objs.ParkGlassDoors.plural=!0,objs.ParkGlassDoors.article="the",objs.ParkGlassDoors.lockable=!0,objs.ParkGlassDoors.setLocked(),objs.ParkGlassDoors.examine=function(){displayMessage("These are glass doors that automatically slide aside when you approach them. "),this.isLocked()&&displayMessage(" They appear to be locked. "),displayMessageP("Looking through them, you can make out a pathway between two elaborate flowerbeds.")},objs.StaffRoomDoor=new GenericDoor("staff room door","StaffRoomDoor"),objs.StaffRoomDoor.in="LocalGlobals",objs.StaffRoomDoor.synonyms=["staff room door","door","staff room","staff door"],objs.StaffRoomDoor.lockable=!0,objs.StaffRoomDoor.setLocked(),
objs.DoorSalonC=new GenericDoor("Salon C Door","DoorSalonC"),objs.DoorSalonC.in="LocalGlobals",objs.DoorSalonC.synonyms=["salon c door","door","salonc","ceo office","ceo's office","baxter's office","mr baxter's office"],objs.DoorSalonC.lockable=!0,objs.DoorSalonC.setLocked(),objs.DoorSalonB=new GenericDoor("Salon B Door","DoorSalonB"),objs.DoorSalonB.in="LocalGlobals",objs.DoorSalonB.synonyms=["salon b door","door","salonb","cfo office","ceo's office","franks' office","mr franks' office","frankie's office"],objs.DoorSalonB.lockable=!0,objs.DoorSalonB.setLocked(),objs.Window=new GenericObject("window","Window"),objs.Window.in="LocalGlobals",objs.Window.synonyms=["window","windows","window pane"],objs.Window.nodesc=!0,objs.Window.examine=function(e,o,s,a){switch(here){case"Room201":case"Room203":case"Room205":case"Room207":switch(getDaylight()){case DAYLIGHT_BRIGHT:displayMessageP("You look down to see the flowered path to the park. \n                        Beyond that are fallow fields brightly shining in th
e sunlight.");break;case DAYLIGHT_SUNSET:displayMessageP("You look down to see the setting sun cast long shadows across the  \n                        flowered path to the park. Beyond that lie golden fallow fields.");break;default:displayMessageP("You look down to see the \n                        flowered path to the park. Beyond that lie fallow fields.")}break;case"Room202":case"Room204":case"Room206":case"SalonB":switch(getDaylight()){case DAYLIGHT_BRIGHT:displayMessageP("The bright sunshine illuminates the empty parking lot and the vast corn fields beyond.\n                        Happyland really is in the middle of nowhere.");break;case DAYLIGHT_SUNSET:displayMessageP("You can see the empty parking lot at the front of the resort and the vast corn fields beyond gilded by the setting sun.");break;default:displayMessageP("You can see the empty parking lot at the front of the resort and the vast corn fields.")}break;case"SalonC":switch(getDaylight()){case DAYLIGHT_BRIGHT:displayMessageP("The bright sunshi
ne sparkles off the leaves of the tall trees that grow outside the window.");break;case DAYLIGHT_SUNSET:displayMessageP("The setting sun paints a golden hue upon the leaves of the tall trees that quiver in the gentle wind.")}break;case"Lobby":displayMessageP("You can see the empty parking lot outside.");break;case"GrandHall":displayMessageP("You can see through the glass doors a beautful flower-lined path.");break;case"AllysRoom":case"BartendersRoom":case"CooksRoom":case"CoopersRoom":case"EvasRoom":case"IvansRoom":case"KensRoom":displayMessageP("There are thick bushes outside the window.");break;default:displayMessageP("There's no window here.")}},objs.CutWires=new GenericObject("cut wires","CutWires"),objs.CutWires.article="some",objs.CutWires.plural=!0,objs.CutWires.synonyms=["cut wires","wires","severed wires"],objs.CutWires.nodesc=!0,objs.CutWires.in="MechanicalRoom",objs.CutWires.examine=function(){displayMessageP("Two thick green wires, marked 'Safety System Power' have been cut."),state.discoveredWire
sCut=!0},objs.CutWires.examineWithMagnifyingGlass=function(){displayMessageP("The cut edge of the wires is jagged, leading you to conclude that it took several attempts to cut through them.")},objs.Generator=new GenericObject("generator","Generator"),objs.Generator.in="MechanicalRoom",objs.Generator.nodesc=!0,objs.Generator.synonyms=["generator","power system"],objs.GardenShears=new GenericObject("garden shears","GardenShears"),objs.GardenShears.article="a pair of ",objs.GardenShears.synonyms=["garden shears","gardenshears","shears","shear","wire cutters","cutters","clippers","hedge clippers"],objs.GardenShears.in="AmongBushes",objs.GardenShears.fingerprints="Cooper",objs.GardenShears.takeable=!0,objs.GardenShears.weight=20,objs.GardenShears.surface=!0,objs.GardenShears.capacity=1,objs.GardenShears.sampled=!1,objs.GardenShears.examine=function(){displayMessageP("The garden shears are large industrial strength with bright yellow handles. The blades \n             show some sign of wear."),state.shears_discove
red=!0},objs.GardenShears.examineWithMagnifyingGlass=function(e,o,s,a){displayMessageP("The magnifying glass reveals three small deformations to the otherwise smooth edge of the blade. You \n            deduce that the shears were used to cut something much harder than an ordinary branch or vine. "),this.sampled||displayMessageP("There appear to be some minute shards of a shiny foreign material embedded in the damaged area."),awareOf("Shards")},objs.Shards=new GenericObject("shards from garden shears","Shards"),objs.Shards.in="GardenShears",objs.Shards.synonyms=["material","material from shears","shard","shards","shiny foreign material","foreign material","fragments","material from garden shears","minute shards"],objs.Shards.analyzable=!0,objs.Shards.nodesc=!0,objs.Shards.analyze=function(e,o,s,a){displayMessageP("You carefully brush some of the material from the shears into an evidence bag and\n          insert it into the analyzer. It whirs for a few moments and then prints out the following report:"),objs
ShardAnalysis.moveTo("Player"),objs.ShardAnalysis.setHeader(),displayMessageP(objs.ShardAnalysis.text),state.shearsShardsAnalyzed=!0,objs.GardenShears.sampled=!0},objs.Shards.examine=function(e,o,s,a){displayMessageP("These are some tiny fragments of a shiny material. You might be able to perform a chemical analysis on it with your forensic analyzer.")},objs.ShardAnalysis=new GenericObject("shard analysis","ShardAnalysis"),objs.ShardAnalysis.in="Nowhere",objs.ShardAnalysis.article="a",objs.ShardAnalysis.synonyms=["analysis of material from garden shears","analysis","shard analysis","report","fragment report","analysis of garden shear material","shear analysis","shears analysis","garden shears analysis","analysis of garden shears","analysis of shears","analysis of material","material analysis"],objs.ShardAnalysis.readable=!0,objs.ShardAnalysis.setHeader=function(){objs.ShardAnalysis.text="<pre>SHERLOCK 2000 FORENSIC ANALYZER MATERIAL ANALYSIS<br> Sample from: garden shears <br> Location: "+room[here].name+"
<br> Time: "+getClockTime()+"<br><br>"+objs.ShardAnalysis.report},objs.ShardAnalysis.report="Chemical Analysis\n Metallic Solid\n\nChemical Composition\n Cu Copper     99.90%\n O  Oxygen      0.03%\n trace          0.07%\n\nConclusion\n Material is metallic copper. Stranding and purity \n are consistent with commercial electrical wiring.</pre>",objs.Ride=new GenericObject("MegaCoaster","Ride"),objs.Ride.in="CrashSite",objs.Ride.nodesc=!0,objs.Ride.synonyms=["megacoaster","ride","coaster","rollercoaster","roller coaster"],objs.Ride.examine=function(){displayMessageP("The Megacoaster is surprisingly small. It's made up of several small hills and valley and tight turns. \n        Unlike a gravity powered roller coaster, this ride is electrically powered. The rail at one end is torn apart and the lone car lies  \n        badly broken nearby.")},objs.Car=new GenericObject("roller coaster car","Car"),objs.Car.synonyms=["roller coaster car","megacoaster car","car","train","coaster car","cart","ride car"],objs.Car.i
n="CrashSite",objs.Car.nodesc=!0,objs.Car.examine=function(){displayMessageP("The exterior of the car is ripped and bent at odd angles; the inside is red with blood and contains the body of Mr. Franks.")},objs.Track=new GenericObject("coaster track","Track"),objs.Track.in="CrashSite",objs.Track.nodesc=!0,objs.Track.synonyms=["track","metal","fragments","twisted metal","trusses","supports","structure","megacoaster track","rail","rails"],objs.Track.uniqueName="track",objs.Track.examine=function(){displayMessageP("The track's overall structure is intact. However the rails upon it are not. At one end of the track you notice \n        the rails have pulled away from the track and been sharply bent by some great force.")},objs.HedgeDoorway=new GenericObject("hedge doorway","HedgeDoorway"),objs.HedgeDoorway.in="LocalGlobals",objs.HedgeDoorway.nodesc=!0,objs.HedgeDoorway.synonyms=["doorway","hedge doorway","door in hedge","doorway in hedge","door"],objs.HedgeDoorway.uniqueName="hedge doorway",objs.HedgeDoorway.exami
ne=function(){displayMessageP("You see that the opening in the hedges leads into a shed. Upon closer inspection, you notice that \n        the shed's door is covered in leaves so that when it is closed, the shed is completely camoflaged by foliage. Only a \n        genius gardener could have pulled this off.")},objs.Shelves=new GenericObject("shelves","Shelves"),objs.Shelves.in="Shed",objs.Shelves.synonyms=["shelves","shelf","shelving system","storage system"],objs.Shelves.nodesc=!0,objs.Shelves.examine=function(){displayMessageP("They're shelves. They hold things up.")},objs.GardenSupplies=new GenericObject("gardening supplies","GardenSupplies"),objs.GardenSupplies.in="Shed",objs.GardenSupplies.synonyms=["garden supplies","gardening supplies","supplies","seeds","fertilizer","chemicals"],objs.GardenSupplies.nodesc=!0,objs.GardenSupplies.examine=function(){displayMessageP("You see packages of a wide assortment of flower seeds (organized by color), fertilizer, and other chemicals.")},objs.GardenTools=new Gener
icObject("gardening tools","GardenTools"),objs.GardenTools.in="Shed",objs.GardenTools.synonyms=["garden tools","gardening tools","tools","shovel","rake","trowel"],objs.GardenTools.nodesc=!0,objs.GardenTools.examine=function(){displayMessageP("The gardening tools are in good shape, surprisingly clean and well organized.")},objs.CleaningSupplies=new GenericObject("cleaning supplies","CleaningSupplies"),objs.CleaningSupplies.in="StorageCloset2",objs.CleaningSupplies.synonyms=["cleaning supplies","supplies","soap","soaps","sanitizer","sanitizers","cleaners"],objs.CleaningSupplies.nodesc=!0,objs.CleaningSupplies.article="",objs.CleaningSupplies.examine=function(){displayMessageP("These are Mr. Cooper's cleaning supplies, soaps, and sanitizers.")},objs.Mop=new GenericObject("mop","Mop"),objs.Mop.in="StorageCloset2",objs.Mop.nodesc=!0,objs.Mop.synonyms=["mop","wet mop"],objs.Mop.examine=function(){displayMessageP("It's a mop, just a mop.")},objs.Vacuum=new GenericObject("vacuum cleaner","Vacuum"),objs.Vacuum.in="St
orageCloset2",objs.Vacuum.nodesc=!0,objs.Vacuum.synonyms=["vacuum","vacuum cleaner","hoover"],objs.Vacuum.examine=function(){displayMessageP("Despite the fact that it sucks, the vacuum cleaner appears to be in good working order.")},objs.Brochure=new GenericObject("brochure","Brochure"),objs.Brochure.in="Nowhere",objs.Brochure.synonyms=["brochure","pamphlet","leaflet","hotel brochure"],objs.Brochure.adjective=["hotel"],objs.Brochure.paper=!0,objs.Brochure.takeable=!0,objs.Brochure.readable=!0,objs.Brochure.text="Welcome to the Happyland Resort",objs.Dropcloth=new GenericObject("drop cloth","Dropcloth"),objs.Dropcloth.in="Nowhere",objs.Dropcloth.takeable=!0,objs.Dropcloth.weight=15,objs.Dropcloth.synonyms=["drop cloth","dropcloth","canvas","cover","covering"],objs.Dropcloth.examine=function(e,o,s,a){"Dropcloth"==objs.CoopersBody.in?displayMessageP("The drop cloth is made of a beige canvas material. It's covering Mr. Cooper's body."):displayMessageP("The drop cloth is made of a beige canvas material.")},objs.D
ropcloth.take=function(e,o,s,a){var t=[];for(d in objs)objs.hasOwnProperty(d)&&"Dropcloth"==objs[d].in&&(objs[d].in=here,t.push(objs[d].name));0==t.length?displayMessageP("You take the drop cloth."):displayMessageP("You take the drop cloth revealing "+formatList(t)+"."),this.moveTo("Player")},objs.Dropcloth.drop=function(e,o,s,a){if(""==a.object)return displayMessageP("Dropped."),void this.moveTo(here);a.object.in="Dropcloth",this.moveTo(here),displayMessageP("You place the dropcloth on the "+a.object.name+".")},objs.Map=new GenericObject("resort map","Map"),objs.Map.in="Nowhere",objs.Map.synonyms=["resort map","hotel map","park map","map","guide"],objs.Map.takeable=!0,objs.Map.paper=!0,objs.Map.weight=3,objs.Map.readable=!0,objs.Map.text="<img class='center_img' width = '90%' src = 'img/resortMap.png' />";class n extends GenericObject{constructor(e,o){super("bed",e),this.in=o,this.nodesc=!0,this.synonyms=["bed"]}examine(e,o,s,a){"Room"==here.substring(0,4)?displayMessageP("This is a beautiful queen sized be
d."):displayMessageP("This is a simple single bed.")}}objs.CoopersBed=new n("CoopersBed","CoopersRoom"),objs.GardenersBed=new n("GardenersBed","IvansRoom"),objs.CooksBed=new n("CooksBed","CooksRoom"),objs.ReceptionistsBed=new n("ReceptionistsBed","AllysRoom"),objs.MaidsBed=new n("MaidsBed","EvasRoom"),objs.BartendersBed=new n("BartendersBed","BartendersRoom"),objs.SecuritysBed=new n("SecuritysBed","KensRoom");for(var r=1;r<8;r++)objs["Bed20"+r]=new n("Bed20"+r,"Room20"+r);function i(e,o){objs[e].uniqueName=o,objs[e].synonyms.push(o.replace(".",""))}i("CoopersBed","Mr. Cooper's bed"),i("GardenersBed","Ivan's bed"),i("CooksBed","bed in cook's room"),i("ReceptionistsBed","Ally's bed"),i("MaidsBed","Eva's bed"),i("BartendersBed","bed in bartender's room"),i("SecuritysBed","Ken's bed"),i("Bed201","Ms. Sanchez's bed"),i("Bed202","bed in room 203"),i("Bed203","Ms. Davis' bed"),i("Bed204","bed in room 204"),i("Bed205","Mr. Franks' bed"),i("Bed206","bed in room 206"),i("Bed207","Mr. Baxter's bed");class l extends Gen
ericObject{constructor(e,o){super("table",e),this.in=o,this.synonyms=["table"],this.surface=!0,this.capacity=30}examine(e,o,s,a){displayMessageP("Lobby"!=here?"This is a regular looking table (the four legged variety).":"The table is a low mahogany coffee table with thick legs and a glass top.")}}for(r=1;r<8;r++)objs["Table20"+r]=new l("Table20"+r,"Room20"+r),objs["Dresser20"+r]=new GenericContainer("dresser","Dresser20"+r),objs["Dresser20"+r].synonyms=["dresser"],objs["Dresser20"+r].setClosed(),objs["Dresser20"+r].nodesc=!0,objs["Dresser20"+r].in="Room20"+r;i("Table201","table in Ms. Sanchez's room"),i("Table202","table in room 202"),i("Table203","table in Ms. Davis' room"),i("Table204","table in room 204"),i("Table205","table in Mr. Franks' room"),i("Table206","table in room 206"),i("Table207","table in Mr. Baxter's room"),i("Dresser201","Ms. Sanchez's dresser"),i("Dresser202","dresser in room 202"),i("Dresser203","Ms. Davis' dresser"),i("Dresser204","dresser in room 204"),i("Dresser205","Mr. Franks' dress
er"),i("Dresser206","dresser in room 206"),i("Dresser207","Mr. Baxter's dresser"),objs.Washroom=new GenericObject("washroom","Washroom"),objs.Washroom.in="LocalGlobals",objs.Washroom.nodesc=!0,objs.Washroom.synonyms=["washroom","wash room","bathroom","bath room","lavatory","restroom","rest room"],objs.Washroom.use=function(){displayMessageP("You try, but you don't really need to use the washroom.")},objs.Washroom.examine=function(){displayMessageP("The modest washroom contains a sink, toilet, and shower.")},objs.Sink=new GenericObject("sink","Sink"),objs.Sink.in="LocalGlobals",objs.Sink.nodesc=!0,objs.Sink.turnable=!0,objs.Sink.synonyms=["sink","washbasin","wash basin"],objs.Sink.use=function(){displayMessageP("You remove your latex gloves, wash your sweaty hands, and snap those gloves back on.")},objs.Sink.examine=function(){displayMessageP("The sink is a white ceramic washbasin.")},objs.Sink.turnOn=function(){displayMessageP("You turn the faucet and, not surprisingly, water flows out.")},objs.Sink.turnOff=
function(){displayMessageP("You turn the faucet off.")},objs.Toilet=new GenericObject("toilet","Toilet"),objs.Toilet.in="LocalGlobals",objs.Toilet.nodesc=!0,objs.Toilet.synonyms=["toilet","crapper","wc","water closet","latrine"],objs.Toilet.use=function(){displayMessageP("You didn't think you had it in you, but there you go.")},objs.Toilet.examine=function(){displayMessageP("The sink is a white ceramic washbasin.")},objs.Shower=new GenericObject("shower","Shower"),objs.Shower.in="LocalGlobals",objs.Shower.nodesc=!0,objs.Shower.synonyms=["shower","shower stall","bath","bathtub","bath tub"],objs.Shower.use=function(){displayMessageP("A quick shower and you feel refreshed and ready to continue on the case."),state.fumeExposure>0&&displayMessageP("You get rid of some of the fumigation smell, but some of it has absorbed into your clothes.")},objs.Shower.examine=function(){displayMessageP("The shower is stall is small, but adequate for a singin' in the rain.")},objs.Fridge=new GenericContainer("fridge","Fridge"),o
bjs.Fridge.in="StaffQuarters",objs.Fridge.nodesc=!0,objs.Fridge.setClosed(),objs.Fridge.synonyms=["fridge","refrigerator","icebox","ice box"],objs.Fridge.examine=function(){displayMessageP("The lime green fridge is happily humming away.")},objs.StaffFood=new GenericObject("food","StaffFood"),objs.StaffFood.in="Fridge",objs.StaffFood.edible=!0,objs.StaffFood.article="",objs.StaffFood.synonyms=["food","snack","snacks"],objs.StaffFood.examine=function(){displayMessageP("The food is parcelled into a number of snack containers, each with a staff members' name on it.")},objs.CoopersWine=new GenericObject("bottle of red wine","CoopersWine"),objs.CoopersWine.in="Nowhere",objs.CoopersWine.drinkable=!0,objs.CoopersWine.takeable=!0,objs.CoopersWine.analyzable=!0,objs.CoopersWine.fingerprints="Cooper,Davis",objs.CoopersWine.synonyms=["bottle of red wine","bottle of wine","wine","red wine","cooper's wine","mr cooper's wine","bottle","wine bottle"],objs.CoopersWine.examine=function(){displayMessageP("It looks like a cheap
bottle of red wine. The name 'Cooper' is scrawled across the label.")},objs.CoopersWine.drink=function(){displayMessageP("The last thing you need to do is to steal someone's wine and drink on the job. With your luck, \n        Baxter is likely to walk in and catch you.")},objs.CoopersWine.analyze=function(e,o,s,a){displayMessageP("You carefully pour some wine into an evidence bag and insert it into the analyzer. \n        It whirs for a few moments and then prints out the following report:"),objs.WineAnalysis.moveTo("Player"),objs.WineAnalysis.setHeader(),displayMessageP(objs.WineAnalysis.text),state.poison_found_in_wine=!0,awareOf("Poison")},objs.WineAnalysis=new GenericObject("wine analysis","WineAnalysis"),objs.WineAnalysis.in="Nowhere",objs.WineAnalysis.synonyms=["analysis of wine","analysis","wine analysis","report","wine report"],objs.WineAnalysis.readable=!0,objs.WineAnalysis.article="a",objs.WineAnalysis.setHeader=function(){objs.WineAnalysis.text="<pre>SHERLOCK 2000 FORENSIC ANALYZER MATERIAL ANALY
SIS<br>Sample from: Mr. Cooper's wine <br> Location: "+room[here].name+" <br> Time: "+getClockTime()+"<br><br>"+objs.WineAnalysis.report},objs.WineAnalysis.report="Chemical Analysis\n Liquid mixture\n pH 3.6 (moderately acidic)\n\nChemical Composition\n Water                   68.3%\n Ethanol                 12.6% \n Carboxymethylcellulose   9.8%\n Tributyl Phthalate       6.2%  \n Glycerol                 1.5%\n Organic Acids            1.1%\n Tannins and Phenolics    0.5%\n\nConclusion\n Proportion of ethanol, organic acids, and tannins is consistent with an alcoholic beverage. \n Carboxymethylcellulose is a non-toxic thickener used in ice cream, toothpaste, and other\n cosmetics. Tributyl Phthalate (a neurotoxin) is present in fatal amounts.</pre>",objs.LobbyTable=new l("LobbyTable","Lobby"),objs.LobbyTable.name="coffee table",objs.LobbyTable.uniqueName="coffee table",objs.LobbyTable.synonyms=["coffee table","table","low table","wood table","mahogany table","lobby table"],objs.SecurityDeskTable=new l("Sec
urityDeskTable","SecurityDesk"),objs.SecurityDeskTable.uniqueName="security desk",objs.SecurityDeskTable.nodesc=!0,objs.SecurityDeskTable.synonyms=["desk","security desk","table","security table"],objs.AlarmPanel=new GenericObject("alarm panel","AlarmPanel"),objs.AlarmPanel.in="SecurityDesk",objs.AlarmPanel.synonyms=["alarm panel","security panel","security alarm panel","alarm","standard alarm panel"],objs.AlarmPanel.uniqueName="security alarm panel",objs.AlarmPanel.nodesc=!0,objs.AlarmPanel.examine=function(){state.safe_is_empty?displayMessageP("This looks like a standard alarm panel indicating if any off-limits areas have been breached. All lights are green, except for a single red light corresponding to the fifth floor."):displayMessageP("This looks like a standard alarm panel indicating if any off-limits areas have been breached. All lights are green.")};class h extends GenericContainer{constructor(e,o){super("night table",e),this.in=o,this.nodesc=!0,this.setClosed(),this.synonyms=["night table","table",
"nighttable","nightstand","night stand","drawer","night table drawer"]}open(e,o,s,a){this.setOpened();var t=listObjectsInContainer(s.objectName),n="nothing";t.length>0&&(n=printObjectList(t)),displayMessageP("You open the night table drawer to reveal "+n+".");for(a=0;a<t.length;a++)objs[t[a]].visible=!0,awareOf(t[a])}close(e,o,s,a){this.setClosed();var t=listObjectsInContainer(s.objectName);for(a=0;a<t.length;a++)objs[t[a]].visible=!1;return displayMessageP("You close the night table drawer."),!0}}for(var d in objs.CoopersNightTable=new h("CoopersNightTable","CoopersRoom"),objs.GardenersNightTable=new h("GardenersNightTable","IvansRoom"),objs.CooksNightTable=new h("CooksNightTable","CooksRoom"),objs.AllysTable=new h("AllysTable","AllysRoom"),objs.MaidsNightTable=new h("MaidsNightTable","EvasRoom"),objs.BartendersNightTable=new h("BartendersNightTable","BartendersRoom"),objs.SecuritysNightTable=new h("SecuritysNightTable","KensRoom"),i("CoopersNightTable","Mr. Cooper's night table"),i("GardenersNightTable","I
van's night table"),i("CooksNightTable","table in the cook's room"),i("AllysTable","Ally's night table"),i("MaidsNightTable","Eva's night table"),i("BartendersNightTable","table in the bartender's room"),i("SecuritysNightTable","Ken's night table"),objs.PileOfCash=new GenericObject("wad of cash","PileOfCash"),objs.PileOfCash.synonyms=["wad of cash","cash","money","wad of money","wad"],objs.PileOfCash.in="CoopersBody",objs.PileOfCash.takeable=!0,objs.PileOfCash.weight=10,objs.PileOfCash.visible=!0,objs.PileOfCash.examine=function(){displayMessageP("You're holding a thick wad of ten dollar bills, folded in half, and held in place \n        with a wide elastic band. You estimate they amount to at least $800.")},objs.StolenMoney=new GenericObject("cardboard box","StolenMoney"),objs.StolenMoney.synonyms=["cardboard box","box","cash","money","stolen cash","stolen money","box of money","box of cash","box of stolen money","box of stolen cash","missing money","missing cash","wads of cash"],objs.StolenMoney.in="Hall51
",objs.StolenMoney.takeable=!0,objs.StolenMoney.fingerprints="Davis",objs.StolenMoney.weight=70,objs.StolenMoney.visible=!1,objs.StolenMoney.examine=function(){displayMessageP("It's a short, wide cardboard box whose top flaps have been interlocked to keep it closed.")},objs.StolenMoney.open=function(){state.findCashOnCooper||state.cooperGivesPlayerCash?displayMessageP("The box is full of many wads of cash, identical to the one you found on Mr. Cooper's body."):displayMessageP("The box is full of many wads of cash.")},objs.StolenMoney.search=function(){this.open()},objs.NewsArticle=new GenericObject("photocopy of a news article","NewsArticle"),objs.NewsArticle.synonyms=["photocopy of news article","photocopy of a news article","article","news article","paper","photocopy"],objs.NewsArticle.in="CoopersNightTable",objs.NewsArticle.paper=!0,objs.NewsArticle.takeable=!0,objs.NewsArticle.weight=3,objs.NewsArticle.examine=function(){displayMessageP("This paper appears to be a photocopy of a newspaper article.")},obj
s.NewsArticle.readable=!0,objs.NewsArticle.text='This paper appears to be a photocopy of a newspaper article.<br>\n    <div class="newspaper">\n    <h3>Cornville Weekly News</h3>\n    <p>SUNDAY, MAY 25 1980 | VERITAS IN ZORKUM | $1.25</p>\n    <p><b>RESORT LAND NOW DESIGNATED ENDANGERED ANIMAL HABITAT</b></p>\n    \n    <table align = "center">\n    <tr>\n        <td class = "vat" >\n        <pre>\n  The disputed land  west        \nof  Fernbrooke  Road  has\nbeen determined to be the\nhabitat    of   the   en-\ndangered  western cougar,\naccording  to  University\nof Cornville researchers.\n    \n  The  news  comes  as no\nsurprise  to  many in the\ncommunity  who  have  re-\npeated their claims  that\nthe large mammal has been\nobserved in the area.\n</pre></td>\n<td class = "vat" >\n<pre>\n  Unconfirmed     reports\nthat the  Happyland hotel\nis seeking to expand into\na  theme  park  on  these\nlands  triggered  a legal\nchallenge   by   environ-\nmentalists.\n\n  Despite    the   land\'s \ndesignation,
there is no\nlegal protection for  the\nland, clearing the resort\nto proceed with its plan-\nned expansion.\n</pre></td>\n</table>',objs.NewsArticle.fingerprints="Cooper",objs.NewsArticle.examineWithMagnifyingGlass=function(e,o,s,a){displayMessageP("Your magnifying glass reveals a number of flaws that the \n            naked eye wouldn't notice. Most notably, a few words are typed \n            in a slightly different font than the rest of the article and some of the words don't \n            quite align horizontally with the rest. You wonder if the geeks from your highschool yearbook club are\n            employed at this newspaper."),magnifyThisDoc("fakenews")},objs.FramedPoster=new GenericObject("framed poster","FramedPoster"),objs.FramedPoster.in="CoopersRoom",objs.FramedPoster.synonyms=["framed poster","framed print","nature scene","forest scene","poster"],objs.FramedPoster.examine=function(){displayMessageP("The poster depicts a beautiful image of a forest and mountains. A Greenpeace logo appears at
the bottom.")},objs.ControlPanel=new GenericObject("control panel","ControlPanel"),objs.ControlPanel.synonyms=["control panel","panel","controls","console","controls panel","ride controls","megacoaster controls","megacoaster control panel","booth","control booth","emergency stop button","stop button","control button","red button","red blinking button","button"],objs.ControlPanel.uniqueName="Megacoaster control panel",objs.ControlPanel.in="Joyville",objs.ControlPanel.fingerprints="Jared",objs.ControlPanel.examine=function(){displayMessageP("\n                    The control panel\n                    for the Megacoaster is in a small booth. There are several buttons and levers, most of which make no sense to you. \n                    Your attention is drawn to a red blinking button in\n                    the middle of the panel labelled <pre> EMERGENCY STOP </pre>\n                    As far as you can tell, the unit is mechanically sound, with no evidence of physical tampering or damage.")},objs.FoodBooths
=new GenericObject("food booths","FoodBooths"),objs.FoodBooths.in="Joyville",objs.FoodBooths.nodesc=!0,objs.FoodBooths.synonyms=["food booth","food booths","food stall","food stalls","food stand","food stands"],objs.FoodBooths.examine=function(){displayMessageP("There are many food booths, colorfully decorated advertising burgers, corn dogs, \n        ice cold drinks and more. Too bad they're closed up, they're making you hungry.")},objs.MidwayGames=new GenericObject("carnival games","MidwayGames"),objs.MidwayGames.in="Joyville",objs.MidwayGames.nodesc=!0,objs.MidwayGames.synonyms=["games","midway games","carnival games"],objs.MidwayGames.examine=function(){displayMessageP("There are many carnival games here: shooting galleries, pop the balloon with a dart, ring toss, and so on. Sadly, all of them are closed up.")},objs.PicnicTables=new GenericObject("picnic tables","PicnicTables"),objs.PicnicTables.in="Joyville",objs.PicnicTables.nodesc=!0,objs.PicnicTables.synonyms=["picnic tables","tables","outdoor tables
","outdoor table","eating area"],objs.PicnicTables.examine=function(){displayMessageP("The picnic tables are painted in bright primary colors. About fifty people could be seated, all sheltered under a large canopy.")},objs.Canopy=new GenericObject("canopy","Canopy"),objs.Canopy.in="Joyville",objs.Canopy.nodesc=!0,objs.Canopy.synonyms=["canopy","canvas","tent","canopy tent","shade"],objs.Canopy.examine=function(){displayMessageP("The tent is made of a large canvas canopy colored in red and white stripes.")},objs.ThreatNote=new GenericObject("threatening letter","ThreatNote"),objs.ThreatNote.synonyms=["threatening letter","threatening letters","note","threat","threats","threatening note","letter","letters","note","paper"],objs.ThreatNote.takeable=!0,objs.ThreatNote.weight=3,objs.ThreatNote.readable=!0,objs.ThreatNote.text="<pre>Do not expand the park. If you do, people will die.</pre>",objs.ThreatNote.examineWithMagnifyingGlass=function(e,o,s,a){magnifyThisDoc("threat")},objs.Path=new GenericObject("path","Pat
h"),objs.Path.synonyms=["path","pathway","stone path","yellow brick road","pavers","paving stones","bricks","brick road","stones"],objs.Path.in="PathToPark",objs.Path.nodesc=!0,objs.Path.examine=function(){displayMessageP("The path itself is made of paving stones, not unlike the yellow brick road.")},objs.Flowers=new GenericObject("flowers","Flowers"),objs.Flowers.synonyms=["flower","flowers","roses","geraniums","carnations","planters","flowerbed","flower bed","flowerbeds","flower beds","greenery"],objs.Flowers.adjectives=["rainbow","colorful"],objs.Flowers.in="LocalGlobals",objs.Flowers.nodesc=!0,objs.Flowers.takeable=!0,objs.Flowers.weight=5,objs.Flowers.smell=function(){displayMessageP("The flowers smell lovely.")},objs.Flowers.take=function(e,o,s,a){if(inSameRoom("Player","Ivan"))displayMessageP('As you reach out to take a flower, an angry voice startles you. "Don\'t you dare take one of \n            my flowers, Inspector! Have you no respect?" You sheepishly withdraw your hand.');else{if(state.flowerTa
ken)return void displayMessageP("You look down at the damage you've already caused and decide not to incur the wrath of Ivan.");displayMessageP("You take a single flower and realize the pattern of colors in the arrangement is no longer perfect. Even a non-garderer will quickly spot your theft."),objs.Flower.moveTo("Player"),ActivateEvent(eventIvanFlower,0),state.flowerTaken=!0,"flower"==this.synonyms[0]&&(this.synonyms.shift(),objs.Flower.synonyms.push("flower"),objs.Flower.synonyms.push("carnation"),objs.Flower.nodesc=!1)}},objs.Flowers.examine=function(e,o,s,a){switch(here){case"FrontSteps":displayMessageP("The flowers are beautifully arranged, framing the glass doors in a most inviting way. Reminds you of Grandma's front porch.");break;case"GrandHall":displayMessageP("The flowers are arranged around the fountain in such a way as to elicit a tropical scene of waterfalls and lush greenery.");break;case"PathToPark":state.flowerTaken?displayMessageP("Each flower has been meticulously positioned just right to
create a beautiful rainbow-like pattern. Some \n                    air head has removed a flower from this otherwise perfect arrangement."):displayMessageP("Each flower has been meticulously positioned just right to create a beautiful rainbow-like pattern.");default:displayMessageP("The flowers are colorful and smell lovely.")}},objs.Flower=new GenericObject("yellow flower","Flower"),objs.Flower.synonyms=[],objs.Flower.adjectives=["yellow","colorful"],objs.Flower.in="Nowhere",objs.Flower.nodesc=!0,objs.Flower.takeable=!0,objs.Flower.weight=5,objs.Flower.smell=function(){displayMessageP("The carnation smells lovely.")},objs.Flower.examine=function(e,o,s,a){displayMessageP("The flower is a freshly picked yellow carnation.")},objs.Dirt=new GenericObject("dirt","Dirt"),objs.Dirt.synonyms=["dirt","soil","earth"],objs.Dirt.nodesc=!0,objs.Dirt.examine=function(e,o,s,a){displayMessageP("The black dirt is dirty.")},objs.Bushes=new GenericObject("bushes","Bushes"),objs.Bushes.synonyms=["bushes","bush","shrub","shrubs
","hedge","hedges","shrubbery"],objs.Bushes.nodesc=!0,objs.Bushes.examine=function(e,o,s,a){displayMessageP("The bushes are green and bushy.")},objs.Fountain=new GenericObject("fountain","Fountain"),objs.Fountain.in="GrandHall",objs.Fountain.nodesc=!0,objs.Fountain.synonyms=["fountain","wishing well","stonework"],objs.Fountain.examine=function(e,o,s,a){displayMessageP("This is an ornate, three-tiered fountain made of stone. Water is cascading down the fountain, \n        adding a pleasant gurgle to the large room.")},objs.GlassOfWater=new GenericObject("glass of water","GlassOfWater"),objs.GlassOfWater.in="Nowhere",objs.GlassOfWater.drinkable=!0,objs.GlassOfWater.synonyms=["glass of water","water","glass"],objs.GlassOfWater.drinkCount=3,objs.GlassOfWater.takeable=!0,objs.GlassOfWater.weight=10,objs.GlassOfWater.examine=function(){displayMessageP("The water is cool and watery.")},objs.GlassOfWater.smell=function(e,o,s,a){displayMessageP("The water is odorless.")},objs.GlassOfWater.taste=function(e,o,s,a){this
drink(e,o,s,a)},objs.GlassOfWater.drink=function(e,o,s,a){if(this.drinkCount--,0==this.drinkCount)return displayMessageP("The water is all gone."),this.name="empty glass",void this.synonyms.push("empty glass");switch(this.drinkCount){case 2:displayMessageP("You take a big gulp of water. It hits the spot!");break;case 1:displayMessageP("You finish the water. It's very refreshing."),this.name="empty glass",this.synonyms.push("empty glass"),this.article="an";break;default:displayMessageP("The water is all gone.")}},objs.Water=new GenericObject("water","Water"),objs.Water.in="LocalGlobals",objs.Water.nodesc=!0,objs.Water.drinkable=!0,objs.Water.synonyms=["water","fountain water"],objs.Water.uniqueName="fountain water",objs.Water.article="",objs.Water.drinkCount=0,objs.Water.examine=function(){displayMessageP("The water is cool and watery.")},objs.Water.smell=function(e,o,s,a){displayMessageP("The water is odorless.")},objs.Water.taste=function(e,o,s,a){this.drink(e,o,s,a)},objs.Water.drink=function(e,o,s,a){dis
playMessage("You lean over and take a sip. It's cold, but a bit stale."),"GrandHall"==here&&displayMessage(" You've had better fountain drinks."),2==this.drinkCount++&&displayMessage(" You let out a loud burp."),displayMessageP("");var t=whoIsOnePersonHere();t&&displayMessageP(objs[t].name+" stares at you, but doesn't say anything.")},objs.WelcomeSign=new GenericObject("welcome sign","WelcomeSign"),objs.WelcomeSign.synonyms=["welcome sign","sign"],objs.WelcomeSign.in="GrandHall",objs.WelcomeSign.nodesc=!0,objs.WelcomeSign.readable=!0,objs.WelcomeSign.text="A colorful sign above the doors reads:<pre>This way to Joyville</pre>",objs.Vomit=new GenericObject("vomit","Vomit"),objs.Vomit.synonyms=["vomit","barf","puke"],objs.Vomit.article="some",objs.Vomit.in="Nowhere",objs.Vomit.examine=function(){displayMessageP("Cooper's vomit is reddish and emits a rather pungent odor.")},objs.Vomit.smell=function(){this.examine()},objs.Vomit.analyzable=!0,objs.Vomit.analyze=function(e,o,s,a){displayMessageP("You carefully swa
b some of the vomit into an evidence bag and insert it into the analyzer. \n            It whirs for a few moments and then prints out the following report:"),objs.VomitAnalysis.moveTo("Player"),objs.VomitAnalysis.setHeader(),displayMessageP(objs.VomitAnalysis.text),state.poison_found_in_vomit=!0,awareOf("Poison")},objs.VomitAnalysis=new GenericObject("vomit analysis","VomitAnalysis"),objs.VomitAnalysis.in="Nowhere",objs.VomitAnalysis.synonyms=["analysis of vomit","analysis","vomit analysis","report","vomit report","report of vomit"],objs.VomitAnalysis.readable=!0,objs.VomitAnalysis.article="a",objs.VomitAnalysis.setHeader=function(){objs.VomitAnalysis.text="<pre>SHERLOCK 2000 FORENSIC ANALYZER MATERIAL ANALYSIS<br> Sample from: Mr. Cooper's vomit <br> Location: "+room[here].name+" <br> Time: "+getClockTime()+"<br><br>"+objs.VomitAnalysis.report},objs.VomitAnalysis.report="Chemical Analysis\n Liquid mixture\n pH 2.7 (highly acidic)\n\nChemical Composition\n Stomach Acid            35%\n Water
  31%\n Ethanol                 12%                    \n Organic Acids            8%\n Tributyl Phthalate       6%\n Tolune                   4% \n Tannins and Phenolics    3%\n Glycerol                 1%\n\nConclusion\n Stomach acid concentration is consistent with \n vomit of recently consumed food or drink. Ethanol and tannins\n indicate consumption of an alcoholic beverage,\n not exceeding impairment levels. Tributyl Phthalate (a neurotoxin)\n is present in fatal amounts.</pre>",objs.HairSpray=new GenericObject("bottle of hairspray","HairSpray"),objs.HairSpray.synonyms=["bottle of hairspray","spray","hairspray","hair spray","bottle of hair spray","bottle of spray","spray bottle","hairspray bottle","hair spray bottle"],objs.HairSpray.in="Nowhere",objs.HairSpray.takeable=!0,objs.HairSpray.weight=10,objs.HairSpray.fingerprints="Davis",objs.HairSpray.analyzable=!0,objs.HairSpray.use=function(e,o,s,a){displayMessageP("Your hair is too short to get any benefit from hairspray. Let it grow for a few months an
d try again.")},objs.HairSpray.examine=function(){displayMessageP("The plastic bottle of hairspray is bright teal with neon pink and a brand you don't recognize.")},objs.HairSpray.analyze=function(e,o,s,a){displayMessageP("You squirt some hairspray into an evidence bag and insert it into the analyzer. \n            It whirs for a few moments and then prints out the following report:"),objs.HairSprayAnalysis.moveTo("Player"),objs.HairSprayAnalysis.setHeader(),displayMessageP(objs.HairSprayAnalysis.text),state.hairspray_poison=!0,awareOf("Poison")},objs.HairSprayAnalysis=new GenericObject("hairspray analysis","HairSprayAnalysis"),objs.HairSprayAnalysis.in="Nowhere",objs.HairSprayAnalysis.article="a",objs.HairSprayAnalysis.synonyms=["analysis of hair spray","analysis of hairspray","analysis","hairspray analysis","hair spray analysis","report","hairspray report","hair spray report"],objs.HairSprayAnalysis.readable=!0,objs.HairSprayAnalysis.setHeader=function(){objs.HairSprayAnalysis.text="<pre>SHERLOCK 2000 FORE
NSIC ANALYZER MATERIAL ANALYSIS<br> Sample of: hairspray <br> Location: "+room[here].name+" <br> Time: "+getClockTime()+"<br><br>"+objs.HairSprayAnalysis.report},objs.HairSprayAnalysis.report="Chemical Analysis\n Liquid mixture\n pH 7.3 (slightly alkaline)\n    \nChemical Composition\n Denatured alcohol           31%\n Carboxymethylcellulose      22%\n Tributyl Phthalate          18%\n Hydrofluorocarbon           10%\n Polyvinyl alcohol            9%\n Propylene glycol             7%\n Polyvinylpyrrolidone         3%                    \n\nConclusion\n Alcohols and Carboxymethylcellulose are indicative \n of a liquid that thickens through evaporation. Tributyl Phthalate \n (a neurotoxin) is often added as a fragrance. Most likely use is \n as a perfumed cosmetic.\n</pre>",objs.BottleOfGlue=new GenericObject("bottle of glue","BottleOfGlue"),objs.BottleOfGlue.synonyms=["bottle of glue","glue","adhesive","bottle of adhesive","glue bottle","paste","bottle of paste","paste bottle"],objs.BottleOfGlue.in="Table203"
,objs.BottleOfGlue.takeable=!0,objs.BottleOfGlue.weight=10,objs.BottleOfGlue.analyzable=!0,objs.BottleOfGlue.examine=function(){displayMessageP("This glue looks just like the stuff you used in school. Standard, non-toxic white glue.")},objs.BottleOfGlue.smell=function(){displayMessageP("The smell of glue takes you back to Mrs. Nelson's grade two class where you liked to glue the blackboard erasers together. Good times.\"")},objs.BottleOfGlue.analyze=function(e,o,s,a){displayMessageP("You squeeze some glue into an evidence bag and insert it into the analyzer. \n        It whirs for a few moments and then prints out the following report:"),objs.GlueAnalysis.moveTo("Player"),objs.GlueAnalysis.setHeader(),displayMessageP(objs.GlueAnalysis.text)},objs.GlueAnalysis=new GenericObject("glue analysis","GlueAnalysis"),objs.GlueAnalysis.in="Nowhere",objs.GlueAnalysis.synonyms=["analysis of glue","analysis","glue analysis","report","glue report","report"],objs.GlueAnalysis.readable=!0,objs.GlueAnalysis.article="a",objs.
GlueAnalysis.setHeader=function(){objs.GlueAnalysis.text="<pre>SHERLOCK 2000 FORENSIC ANALYZER MATERIAL ANALYSIS<br> Sample of: Glue <br> Location: "+room[here].name+" <br> Time: "+getClockTime()+"<br><br>"+objs.GlueAnalysis.report},objs.GlueAnalysis.report="Chemical Analysis\n Liquid water-based emulsion\n pH 5.0 (moderately acidic)\n                \nChemical Composition                    \n Water                   45%\n Polyvinyl acetate       42%                    \n Diisobutyl phthalate     8%\n Polyvinyl Alcohol        5%                 \n\n Conclusion\n  Material is consistent with consumer-grade all-purpose glue.\n            </pre>",objs.Scissors=new GenericObject("pair of scissors","Scissors"),objs.Scissors.synonyms=["pair of scissors","scissors"],objs.Scissors.in="Table203",objs.Scissors.takeable=!0,objs.Scissors.weight=10,objs.Scissors.examine=function(){displayMessageP("You're no scissor connoisseur. They look like every other pair you've seen.")},objs.PaperScraps=new GenericObject("strips of
paper","PaperScraps"),objs.PaperScraps.synonyms=["strips of paper","strips","paper strips","scraps","scraps of paper","paper scraps","papers","paper"],objs.PaperScraps.in="Table203",objs.PaperScraps.takeable=!0,objs.PaperScraps.weight=10,objs.PaperScraps.article="",objs.PaperScraps.examine=function(){displayMessageP(this.text)},objs.PaperScraps.readable=!0,objs.PaperScraps.text='There are a number of small strips of paper, each containing an incomplete typewritten phrase. \n        Three of the longer ones read "The news  comes  as  no", "designation, there are no", and "the land purchase and ex-." \n        The other strips contain what appear to be random words or individual letters.',objs.PaperScraps.examineWithMagnifyingGlass=function(){magnifyThisDoc("strips")},objs.Telephone=new GenericObject("telephone","Telephone"),objs.Telephone.synonyms=["telephone","phone","desk phone"],objs.Telephone.in="RachelsDesk",objs.Telephone.fingerprints="Davis",objs.Telephone.examine=function(){displayMessageP("This is a
standard lime green phone, with a rotary dial.")},objs.Telephone.use=function(){displayMessageP("You have no one to call.")},objs.Rolodex=new GenericObject("rolodex","Rolodex"),objs.Rolodex.synonyms=["rolodex","phonebook","phone book","contact list"],objs.Rolodex.in="RachelsDesk",objs.Rolodex.takeable=!0,objs.Rolodex.article="a",objs.Rolodex.examine=function(){displayMessageP("The rolodex is a set of index cards arranged in a rotating spindle. Flipping through the \n        cards you see the contact information for various people and companies. Ms. Davis appears have a large network of business contacts.")},objs.ElectricTypewriter=new GenericObject("electric typewriter","ElectricTypewriter"),objs.ElectricTypewriter.synonyms=["electric typewriter","typewriter","rachel's typewriter","davis' typewriter","ms davis' typewriter"],objs.ElectricTypewriter.in="RachelsDesk",objs.ElectricTypewriter.takeable=!0,objs.ElectricTypewriter.weight=40,objs.ElectricTypewriter.article="an",objs.ElectricTypewriter.fingerprints="
Davis",objs.ElectricTypewriter.examine=function(){displayMessageP("This looks like a shiny new electric typewriter.")},objs.ElectricTypewriter.analyze=function(){displayMessageP("The typewriter is too large to fit into the analyzer.")},objs.ElectricTypewriter.use=function(){objs.ElectricTypewriter.type()},objs.ElectricTypewriter.type=function(){if(isAccessible("BlankPaper"))return displayMessageP("You find a sheet of blank paper and eagerly start typing a poem you composed as a sixth grader:"),displayMessageP(objs.Poem.text),displayMessageP("The machine clicks loudly as you press each key. You only get about halfway through before you remember you have a case to solve."),isHere("Davis")&&displayMessageP("Ms. Davis is clearly miffed that you are using her precious typewriter."),void(objs.Poem.in=here);displayMessageP("You'll need to specify what you want to type on.")},objs.StandardTypewriter=new GenericObject("standard typewriter","StandardTypewriter"),objs.StandardTypewriter.synonyms=["standard typewriter",
"typewriter","lina's typewriter","sanchez's typewriter","ms sanchez' typewriter","regular typewriter"],objs.StandardTypewriter.in="LinasDesk",objs.StandardTypewriter.takeable=!0,objs.StandardTypewriter.weight=30,objs.StandardTypewriter.fingerprints="Lina",objs.StandardTypewriter.examine=function(){displayMessageP("This looks like an everyday black office typewriter.")},objs.StandardTypewriter.analyze=function(){displayMessageP("The typewriter is too large to fit into the analyzer.")},objs.StandardTypewriter.use=function(){objs.StandardTypewriter.type()},objs.StandardTypewriter.type=function(){if(isAccessible("BlankPaper"))return displayMessageP("You find a sheet of blank paper, insert it into the typewriter, and \n            start typing what's on your mind. In a surprisingly short amount of time, you've succinctly \n            reaffirmed your vow to solve this case:"),objs.Vow.read(),void(objs.Vow.in=here);displayMessageP("You'll need to specify what you want to type on.")},objs.BlankPaper=new GenericObje
ct("blank paper","BlankPaper"),objs.BlankPaper.synonyms=["blank paper","paper","typing paper"],objs.BlankPaper.in="Ballroom",objs.BlankPaper.nodesc=!0,objs.BlankPaper.takeable=!0,objs.BlankPaper.weight=3,objs.BlankPaper.paper=!0,objs.BlankPaper.examine=function(){displayMessageP("The paper is as white as freshly fallen snow.")},objs.Poem=new GenericObject("typed poem","Poem"),objs.Poem.synonyms=["typed poem","poem","my poem","typed paper","my masterpiece","paper","poetry"],objs.Poem.in="Nowhere",objs.Poem.takeable=!0,objs.Poem.weight=3,objs.Poem.paper=!0,objs.Poem.analyzable=!0,objs.Poem.readable=!0,objs.Poem.text="<pre>\n    ODE TO THE GARBAGE MAN\n                            by Richie Stern\n\nWhen I would hear the rumble I would dash\nto my secret spot behind the curtain\nand look outside to the big pile of trash\nwhere great things would happen, I was certain!\n\nHe drove into view and the brakes would squeak,\nA belch from the flue; the air sure did reek!\nHe descended with smile down to the curb\neyein
g the pile he was 'bout to disturb.\n</pre>",objs.Poem.analyze=function(){displayMessageP("You insert the poem into the Forensic Analyzer. It whirs for a moment and \n        prints out a report."),objs.PoetryAnalysis.moveTo("Player"),displayMessageP(objs.PoetryAnalysis.text)},objs.Poem.examineWithMagnifyingGlass=function(){magnifyThisDoc("typewriter")},objs.PoetryAnalysis=new GenericObject("poetry analysis","PoetryAnalysis"),objs.PoetryAnalysis.synonyms=["analysis of poetry","analysis","report","poetry analysis","poetry report","poem analysis","poem report"],objs.PoetryAnalysis.in="Nowhere",objs.PoetryAnalysis.takeable=!0,objs.PoetryAnalysis.weight=3,objs.PoetryAnalysis.text="<pre>POETRY ANALYSIS of ODE TO THE GARBAGE MAN\n\n    The first verse, in the style of T.S Eliot, builds suspense to a\n    great, but untold, event through a long pentameter scheme, casting \n    the gentle hue of tradition through familiar childhood memory. The \n    second verse provides a multi-sensory introduction of the hero. The
\n    change in rhyming scheme, similar in style to Robert Service, \n    instills a faster pace mirroring the protagonist's anticipation \n    of the final conflict between garbage and garbage man. In the  \n    great battle to come, the clandestine eyewitness is the victor.</pre>",objs.Vow=new GenericObject("typed vow","Vow"),objs.Vow.synonyms=["typed vow","vow","my vow","typed paper","my masterpiece","paper"],objs.Vow.in="Nowhere",objs.Vow.takeable=!0,objs.Vow.weight=3,objs.Vow.paper=!0,objs.Vow.readable=!0,objs.Vow.read=function(){displayMessage("<pre>       MY VOW     \n                   by Inspector Richard Stern\n\nIt started with a death in Happyland,\nthat a few suspected must have been planned.</pre>"),(state.findCashOnCooper||state.cooperGivesPlayerCash)&&displayMessage("<pre>The prime suspect killed with much cash on hand,\nthinking he was protecting anim'l land.</pre>"),displayMessageP("<bre><pre>My police smarts give me the upper hand\nto find a suspect for the witness stand.<pre>")},objs.Vow
examineWithMagnifyingGlass=function(){displayMessageP("Your magnifying glass reveals that all the letters are perfectly formed."),state.eDocs.typewriter.discovered&&(displayMessageP("Looks like the cheaper standard typewriter produces a higher quality output \n            than the fancy electric one."),state.standardTypewriterIsBetter=!0)},objs.Photocopier=new GenericObject("photocopier","Photocopier"),objs.Photocopier.synonyms=["photocopier","photocopy machine","machine","xerox machine","photostat","photostat machine","copier","copy machine"],objs.Photocopier.in="Ballroom",objs.Photocopier.nodesc=!0,objs.Photocopier.examine=function(){displayMessageP("This looks like a everyday office photocopy machine.")},objs.Photocopier.analyze=function(){displayMessageP("The photocopier is too large to fit into the analyzer.")},objs.Photocopier.use=function(){displayMessageP("A quaint idea, but you've got a case to solve.")},objs.FrankDesk=new GenericObject("desk","FrankDesk"),objs.FrankDesk.synonyms=["mr franks' desk"
,"desk","franks' desk","frankie's desk","franks's desk","cfo desk","cfo's desk"],objs.FrankDesk.in="SalonB",objs.FrankDesk.uniqueName="Mr. Franks' desk",objs.FrankDesk.surface=!0,objs.FrankDesk.capacity=90,objs.FrankDesk.examine=function(e,o,s,a){displayMessageP("Mr. Franks's desk is large and made of maple.")},objs.FrankDesk.open=function(){displayMessageP("There are a few miscellaneous items, but nothing of note inside the desk.")},objs.BaxterDesk=new GenericObject("desk","BaxterDesk"),objs.BaxterDesk.synonyms=["mr baxter's desk","desk","baxter's desk","peter baxter's desk","peter's desk","ceo desk","ceo's desk"],objs.BaxterDesk.in="SalonC",objs.BaxterDesk.uniqueName="Mr. Baxter's desk",objs.BaxterDesk.surface=!0,objs.BaxterDesk.capacity=90,objs.BaxterDesk.examine=function(e,o,s,a){displayMessageP("Mr. Baxter's desk is large, made of solid oak, and covered in a forest green desk blotter. A desk organizer keeps the mail sorted.")},objs.BaxterDesk.open=function(){displayMessageP("There are a few miscellaneou
s items, but nothing of note inside the desk.")},objs.DeskBlotter=new GenericObject("desk blotter","DeskBlotter"),objs.DeskBlotter.in="BaxterDesk",objs.DeskBlotter.synonyms=["desk blotter","blotter","baxter's desk blotter","mr baxter's desk blotter"],objs.DeskBlotter.examine=function(){displayMessageP("The desk blotter is a dark green with leather corners.")},objs.DeskOrganizer=new GenericObject("desk organizer","DeskOrganizer"),objs.DeskOrganizer.in="BaxterDesk",objs.DeskOrganizer.synonyms=["desk organizer","organizer","mail organizer"],objs.DeskOrganizer.examine=function(){displayMessageP("The desk organizer is made of oak and contains slots for papers and mail.")},objs.BaxterCabinet=new GenericContainer("filing cabinet","BaxterCabinet"),objs.BaxterCabinet.in="SalonC",objs.BaxterCabinet.uniqueName="Mr. Baxter's filing cabinet",objs.BaxterCabinet.synonyms=["cabinet","baxter's cabinet","mr baxter's cabinet","ceo's cabinet","filing cabinet","baxter's filing cabinet","mr baxter's filing cabinet","ceo's filing
cabinet"],objs.BaxterCabinet.nodesc=!0,objs.BaxterCabinet.setClosed(),objs.BaxterCabinet.examine=function(){displayMessageP("This is a standard office filing cabinet.")},objs.MiscPapers1=new GenericObject("miscellaneous papers","MiscPapers1"),objs.MiscPapers1.in="BaxterCabinet",objs.MiscPapers1.article="",objs.MiscPapers1.synonyms=["papers","miscellaneous papers","papers from baxter's filing cabinet"],objs.MiscPapers1.examine=function(){displayMessageP("There's nothing remarkable about these papers.")},objs.Posters=new GenericObject("Happyland posters","Posters"),objs.Posters.in="SalonC",objs.Posters.synonyms=["posters","happyland posters","artists' conception"],objs.Posters.nodesc=!0,objs.Posters.examine=function(){displayMessageP("The posters are an artist's conception of what the Happyland theme park will look like when complete. \n        There are several sections of the park with names like Funderdome, Punnsylvania, and HaHawaii. Each section contains\n        rides, food areas, and other entertainment
You'd like to pay a visit when the park opens.")},objs.LinasDesk=new GenericObject("Ms. Sanchez's desk","LinasDesk"),objs.LinasDesk.synonyms=["Ms Sanchez's desk","lina's desk","desk","workstation"],objs.LinasDesk.uniqueName="Ms. Sanchez's desk",objs.LinasDesk.in="Ballroom",objs.LinasDesk.article="",objs.LinasDesk.surface=!0,objs.LinasDesk.capacity=90,objs.LinasDesk.examine=function(e,o,s,a){displayMessageP("This is a standard office desk.")},objs.RachelsDesk=new GenericObject("Ms. Davis' desk","RachelsDesk"),objs.RachelsDesk.synonyms=["ms Davis' desk","rachel's desk","ms davis's desk","ms davis' desk","desk","workstation","Davis's desk","Davis' desk","Davis desk"],objs.RachelsDesk.uniqueName="Ms. Davis' desk",objs.RachelsDesk.in="Ballroom",objs.RachelsDesk.article="",objs.RachelsDesk.surface=!0,objs.RachelsDesk.capacity=90,objs.RachelsDesk.examine=function(e,o,s,a){displayMessageP("This is a standard office desk.")},objs.FumigationSign=new GenericObject("fumigation warning","FumigationSign"),objs.Fumigatio
nSign.synonyms=["fumigation warning","sign","warning","fumigation sign"],objs.FumigationSign.in="Hall31",objs.FumigationSign.nodesc=!0,objs.FumigationSign.readable=!0,objs.FumigationSign.text="<pre>\n    WARNING!\n    Fumigation in progress\n    DO NOT ENTER",objs.PlasticSheet=new GenericObject("plastic sheet","PlasticSheet"),objs.PlasticSheet.synonyms=["plastic sheet","sheet","fumigation sheet","plastic"],objs.PlasticSheet.in="Hall31",objs.PlasticSheet.nodesc=!0,objs.Wine=new GenericObject("glass of wine","Wine"),objs.Wine.synonyms=["glass of wine","wine","red wine","glass of red wine","wine at wake","wine at the wake"],objs.Wine.in="Nowhere",objs.Wine.takeable=!0,objs.Wine.weight=10,objs.Wine.nodesc=!0,objs.Wine.drinkable=!0,objs.Wine.sips=4,objs.Wine.drink=function(){this.sips-- >0?displayMessageP("You take a sip of the red wine. It's not bad."):displayMessageP("You drank it all. You hope no one reports you for drinking while on duty.")},objs.Wine.taste=function(){this.drink()},objs.Stairs=new GenericObje
ct("steps","Stairs"),objs.Stairs.synonyms=["steps","stairs","front steps","front stairs","ballroom steps","ballroom stairs","ballroom stair case","ballroom staircase","staircase","stair case"],objs.Stairs.in="LocalGlobals",objs.Stairs.nodesc=!0,objs.Stairs.examine=function(){displayMessageP("FrontSteps"==here?"You look at the steps and they just stair back at you.":"The ballroom staircase is a large flight of stairs, carpeted in a plush red velvet softer than your bed.")},objs.FrontDoors=new GenericDoor("front doors","FrontDoors"),objs.FrontDoors.in="LocalGlobals",objs.FrontDoors.synonyms=["door","doors","glass doors","hotel doors","front doors","front glass doors","front door","sliding doors","sliding glass doors","glass lobby doors"],objs.FrontDoors.uniqueName="front doors",objs.FrontDoors.plural=!0,objs.FrontDoors.article="The",objs.FrontDoors.nodesc=!0,objs.FrontDoors.examine=function(){displayMessage("The front glass doors automatically slide aside when you approach them. "),"Lobby"==here?getDaylight()=
=DAYLIGHT_SUNSET?displayMessageP("You can see the empty parking lot at the front of the resort and the vast corn fields beyond gilded by the setting sun."):displayMessageP("You can see the empty parking lot at the front of the resort and the vast corn fields."):displayMessageP("Their reflective nature makes it hard to see inside.")},objs.FrontDoors.open=function(){displayMessageP("These doors are those new high tech ones that automatically open when you are near them.")},objs.FrontDoors.close=function(){displayMessageP("These doors are those new high tech ones that automatically close after you've walked through.")},objs.ParkingLot=new GenericObject("parking lot","ParkingLot"),objs.ParkingLot.synonyms=["parking lot","parking area","pavement"],objs.ParkingLot.nodesc=!0,objs.ParkingLot.in="FrontSteps",objs.ParkingLot.examine=function(){getDaylight()!=DAYLIGHT_BRIGHT?displayMessageP("The parking lot is large, but empty."):displayMessageP("The parking lot is large, but empty. The bright sun is heating up the pav
ement.")},objs.Building=new GenericObject("hotel building","Building"),objs.Building.synonyms=["hotel building","building","hotel","glass doors","happyland hotel"],objs.Building.nodesc=!0,objs.Building.in="FrontSteps",objs.Building.examine=function(){displayMessageP("The Happyland hotel building is a modern looking glass and concrete style building. From here it looks like it has four or five floors.")},objs.Floor=new GenericObject("floor","Floor"),objs.Floor.synonyms=["floor","floors","flooring","carpet","marble","marble floor","marble floors"],objs.Floor.in="Nowhere",objs.Floor.nodesc=!0,objs.Floor.touched=!0,objs.Floor.examine=function(){if(room[here].isIndoors())if(isRoomInCorridor(here,COR_FRONT)||isRoomInCorridor(here,COR_EW1))displayMessageP("The floor is a cream colored marble.");else if(isRoomInCorridor(here,COR_EW2))displayMessageP("The carpet has one of those maze like patterns in neutral colors.");else switch(here){case"BallroomStairsBottom":case"BallroomStairsTop":displayMessageP("Your shoes sin
k a bit into the plush red velvet. Either it's really, really soft or you've gained some weight.");break;case"Shed":displayMessageP("For a garden shed, the floor is kept surprisingly clean.");break;case"MechanicalRoom":displayMessageP("The floor is a plain concrete slab.");break;case"Ballroom":displayMessageP("The ballroom floor is light colored hardwood, arranged in a herringbone pattern. You recall helping your father install a similar pattern in the dining room when you were young. It didn't turn out as well as this one.");break;case"Lounge":displayMessageP("The lounge floor is a dark colored hardwood.");break;case"Lobby":displayMessageP("There is a dark red carpet laid out in front of the reception counter.");break;default:displayMessageP("The floor is covered in a neutral colored carpet.")}else displayMessageP("The floor looks like the ground.")},objs.ReceptionCounter=new GenericObject("counter","ReceptionCounter"),objs.ReceptionCounter.synonyms=["counter","reception counter","reception desk","desk"],ob
js.ReceptionCounter.in="LocalGlobals",objs.ReceptionCounter.nodesc=!0,objs.ReceptionCounter.touched=!0,objs.ReceptionCounter.examine=function(){if("Lobby"!=here)return"Reception"==here?(displayMessage("The counter is made of mahogany and shiny brass. "),void(isHere("Ally")?displayMessageP("Ally stands behind the counter."):displayMessageP("No one is here. Too bad there's no ding ding bell here."))):void displayMessageP("You don't see any counter here.");displayMessageP("From here you can tell the counter is made of mahogany wood.")},objs.Posts=new GenericObject("posts","Posts"),objs.Posts.in="Reception",objs.Posts.synonyms=["post","posts","stanchion","brass post","brass posts"],objs.Posts.nodesc=!0,objs.Posts.examine=function(){displayMessageP("The posts appear to be made of brass and support a velvet rope. \n        You suppose they will need such crowd control measures once the park opens up.")},objs.VelvetRope=new GenericObject("rope","VelvetRope"),objs.VelvetRope.in="Reception",objs.VelvetRope.synonyms=[
"rope","velvet rope","ropes","velvet ropes","velvet","crowd barrier","crowd control","rope line","ropeline"],objs.VelvetRope.nodesc=!0,objs.VelvetRope.examine=function(){displayMessageP("The rope is a plush, red velvet rope suspended between two posts.")},objs.Nook=new GenericObject("nook","Nook"),objs.Nook.synonyms=["nook","security nook","security area"],objs.Nook.in="LocalGlobals",objs.Nook.nodesc=!0,objs.Nook.touched=!0,objs.Nook.examine=function(){"Lobby"==here?displayMessage("From here you see an opening along the east wall in which is inset a desk and two chairs."):"SecurityDesk"==here&&room.SecurityDesk.describe()},objs.Chandelier=new GenericObject("chandelier","Chandelier"),objs.Chandelier.synonyms=["chandelier","lamp","light"],objs.Chandelier.nodesc=!0,objs.Chandelier.examine=function(){displayMessage("The chandelier above must have about a hundred bulbs in it."),getDaylight()!=DAYLIGHT_BRIGHT?displayMessageP(" It casts a beautiful warm light upon the entire lobby area."):displayMessageP(" It is cu
rrently turned off, the sunlight from outside is more than enough to brighten the lobby area.")},objs.Pillars=new GenericObject("pillars","Pillars"),objs.Pillars.synonyms=["pillars","pillar","column","columns","stone pillars","stone pillar","stone column","stone columns"],objs.Pillars.nodesc=!0,objs.Pillars.examine=function(){displayMessageP("The pillars are made of stone that's smooth and cold to the touch.")},objs.Sofas=new GenericObject("sofas","Sofas"),objs.Sofas.synonyms=["sofa","sofas","seats","seat","loveseat","loveseats","couch","couches","chesterfield","chesterfields","seating area"],objs.Sofas.nodesc=!0,objs.Sofas.examine=function(){displayMessageP("The oversized sofas are made of soft, black leather."),getDaylight()==DAYLIGHT_BRIGHT&&displayMessageP("The sunlight from the lobby windows is shining directly on the black sofas, heating them up. If you were a cat, you'd spend all day lounging here.")},objs.Sofas.smell=function(){displayMessageP("The sofas emit that subtle, yet distinctive smell that t
ells you this is genuine leather.")},objs.Wainscoting=new GenericObject("wainscoting","Wainscoting"),objs.Wainscoting.synonyms=["wainscoting","wainscotting","moulding","molding","millwork","chairrail","chair rail","baseboards","base boards"],objs.Wainscoting.nodesc=!0,objs.Wainscoting.examine=function(){displayMessageP("The wainscoting shows fine craftsmanship with a mitre saw.")},objs.Wallpaper=new GenericObject("wallpaper","Wallpaper"),objs.Wallpaper.synonyms=["wallpaper","wall paper","grasscloth wallpaper","grasscloth wall paper","grass cloth wall paper","grass cloth wallpaper","wallcovering","wall","walls"],objs.Wallpaper.nodesc=!0,objs.Wallpaper.examine=function(){displayMessageP("The wallpaper is beige with a grasscloth texture. The lack of seams is pretty impressive.")},objs.PotLights=new GenericObject("pot lights","PotLights"),objs.PotLights.synonyms=["pot lights","potlights","lights","light"],objs.PotLights.nodesc=!0,objs.PotLights.article="",objs.PotLights.examine=function(){isIn3Rooms("Player","Ha
ll31","Hall41","Hall51")?displayMessageP("The potlights have been dimmed. It appears this floor is not occupied."):displayMessageP("They're lights. Nothing special.")},objs.Piano=new GenericObject("piano","Piano"),objs.Piano.synonyms=["piano","grand piano","baby grand","baby grand piano","grandpiano"],objs.Piano.nodesc=!0,objs.Piano.playable=!0,objs.Piano.in="Lounge",objs.Piano.examine=function(){displayMessageP("The black Steinway is gleaming from the pot lights above. You look at it longingly, remembering the \n        arguments you had with your mother about practicing when you were young. If only you had listened to her, you \n        might be able to play some music on it. Sigh.")},objs.Piano.use=function(){displayMessageP("You regret that you don't remember how to play the piano anymore.")},objs.Piano.play=function(){displayMessage("You try to play chopsticks, but you butcher the notes. ");var e=getPeopleInRoom();0==e.length?displayMessageP("Fortunately no one is here to plug their ears."):e.includes("
Ally")&&displayMessageP("Ally smiles and claps.")},objs.Bar=new GenericObject("bar","Bar"),objs.Bar.synonyms=["bar"],objs.Bar.nodesc=!0,objs.Bar.in="Lounge",objs.Bar.examine=function(){displayMessageP("The bar itself looks clean, clearly hasn't been used in a while. A number of bottles are on display, \n        locked behind a display cabinet,")},objs.Barstools=new GenericObject("bar stool","Barstools"),objs.Barstools.synonyms=["bar stool","barstool","bar stools","barstools"],objs.Barstools.nodesc=!0,objs.Barstools.in="Lounge",objs.Barstools.examine=function(){displayMessageP("The barstools are wooden with leather seats.")},objs.LoungeWall=new GenericObject("lounge wall","LoungeWall"),objs.LoungeWall.synonyms=["wall","walls","lounge wall","lounge walls","wood panelling","wood panels"],objs.LoungeWall.nodesc=!0,objs.LoungeWall.in="Lounge",objs.LoungeWall.examine=function(){displayMessageP("The walls are panelled in oak.")},objs.DisplayCabinet=new GenericObject("display cabinet","DisplayCabinet"),objs.DisplayC
abinet.synonyms=["display cabinet","cabinet","liquor cabinet","wine bottles","drink cabinet","bottles","booze"],objs.DisplayCabinet.nodesc=!0,objs.DisplayCabinet.in="Lounge",objs.DisplayCabinet.examine=function(){displayMessageP("You can see a wide assortment of bottles inside the cabinet.")},objs.DisplayCabinet.open=function(){displayMessageP("You can't see how the cabinet opens. Clearly it was designed to keep out prying people like you.")},objs.DisplayCabinet.unlock=function(){this.open()},objs.LoungeChair=new GenericObject("chair","LoungeChair"),objs.LoungeChair.synonyms=["chair","chairs","seat","seats","seating","lounge chairs","lounge chair"],objs.LoungeChair.uniqueName="lounge chair",objs.LoungeChair.in="Lounge",objs.LoungeChair.nodesc=!0,objs.LoungeChair.examine=function(){displayMessageP("The lounge chairs look comfortable with colorful fabrics.")},objs.LoungeTable=new GenericObject("table","LoungeTable"),objs.LoungeTable.synonyms=["table","tables","lounge tables","lounge table","restaurant tables"]
,objs.LoungeTable.in="Nowhere",objs.LoungeTable.uniqueName="lounge table",objs.LoungeTable.nodesc=!0,objs.LoungeTable.examine=function(){displayMessageP("Lounge"==here?"A number of round tables dot the room. Each is made of oak, matching the wall panelling.":"You can't make out any detail of the tables in the dim light.")},objs.Chair=new GenericObject("chair","Chair"),objs.Chair.synonyms=["chair","chairs","seat","seats","seating","plastic chair"],objs.Chair.uniqueName="plastic chair",objs.Chair.nodesc=!0,objs.Chair.examine=function(){displayMessageP("Restaurant"==here?"You can't make out any detail in the dim light but touching the \n            chairs reveals a metal frame with a fabric seat and backrest.":"The chair is metal with a plastic seat and backrest.")},objs.BallroomDoorway=new GenericObject("ballroom doorway","BallroomDoorway"),objs.BallroomDoorway.synonyms=["doorway","ballroom doorway","architrave","molding","moulding"],objs.BallroomDoorway.in="BallroomFoyer",objs.BallroomDoorway.nodesc=!0,objs.B
allroomDoorway.examine=function(){displayMessageP('The grand doorway is made of oak. The words "SALON A - BALLROOM" are carved into the architrave above.')},objs.RoomCloset=new GenericObject("closet","RoomCloset"),objs.RoomCloset.synonyms=["closet","room closet"],objs.RoomCloset.nodesc=!0,objs.RoomCloset.examine=function(){switch(here){case"Room201":case"Room204":displayMessageP("The closet is empty.");break;case"Room202":displayMessageP("The closet is empty. You didn't bring any clothes to store in it.");break;case"Room203":displayMessageP("\n                Ms. Davis is somewhat of a fashionista: her closet is full of expensive designer clothes.You might ask her\n                for advice on fixing up your drab wardrobe.\n                ");break;case"Room205":displayMessageP("Mr. Franks' closet contains a number of suits. ");break;case"Room206":displayMessageP("The closet contains one suite and an number of semi-formal shirts and pants.");break;case"Room207":displayMessageP("Mr. Baxter's closet contains
a diverse set of clothes, ranging from formal \n                    suits to very casual attire.");break;default:displayMessageP("The closet contains the kinds of clothes you'd expect.")}},objs.TV=new GenericObject("television","TV"),objs.TV.synonyms=["tv","television","boob tube"],objs.TV.nodesc=!0,objs.TV.turnable=!0,objs.TV.takeable=!1,objs.TV.turnedOn=[],objs.TV.touched=!0,objs.TV.turnOn=function(){if(objs.TV.turnedOn[here])return displayMessageP("It's already on."),void objs.TV.examine();displayMessageP("You turn on the TV and wait a moment for the picture to warm up."),objs.TV.turnedOn[here]=!0,objs.TV.examine()},objs.TV.turnOff=function(){objs.TV.turnedOn[here]?(displayMessageP("You turn the TV off."),delete objs.TV.turnedOn[here]):displayMessageP("It's already off.")},objs.TV.examine=function(){if(objs.TV.turnedOn[here]){if(Prob(30))return Prob(20)?void displayMessageP("There's a commerical playing that's repeatedly asking you to \"Get a little closer, don't be shy.\""):Prob(20)?void displayMessageP(
"There's a commerical playing showing twins telling you double pleasure is waiting for you \n                (if you eat their chewing gum).\""):Prob(20)?void displayMessageP("There's a commerical playing showing two kids not wanting to eat their cereal so the decide to give it to Mikey instead."):Prob(20)?void displayMessageP("There's a commerical playing showing a red headed clown dressed in a yellow suit going for a picnic with a walking purple blob who sports a grimace.\n                A short burglar in black is trying to steal their hamburgers. Silly commercials are a waste of money.  \n                That company will never survive."):void displayMessageP("There's a commerical playing showing a red headed clown dressed in yellow going for a picnic with a walking purple blob who sports a grimace.\n                A short burglar in black is trying to steal their hamburgers. Silly commercials are a waste of money.  \n                That company will never survive.");displayMessage("There's only one c
hannel available in this small town."),displayMessageP(PresentTime<540?" The current show is a local current events program. The host \n            is interviewing a farmer whose cow has spots that look like the Mona Lisa.":PresentTime<570?" The current show is about a Black family, one of whom is apparently named 'Wheezy.'":PresentTime<600?' The current show takes place in a diner called "Mel\'s." The characters \n            are spending an excessive amount of time arguing about the chili.':PresentTime<660?" A goofy man is arguing with his pretty blonde roommate about going to \n            some place called 'The Regal Beagle.'":PresentTime<720?' The current show is some kind of game show where two families are feuding for \n            points and the host keeps yelling "survey says!"':PresentTime<780?' The current show is some kind of game show where two families are feuding for \n            points and the host keeps yelling "survey says!"':PresentTime<1020?" The current show is some kind of soap opera w
here James and Trish are trying to \n            find a way for Trish's cousin's dentist's son to kill James' step-mother's boss. How are Dr. Sam and \n            Jennifer supposed to get out of the cave? And speaking of Fernando, how is he going to reconcile with \n            his twin brother? Your head starts to hurt.":PresentTime<1050?" How can that Schneider guy be the building superintendent? He's always talking to \n            the tenants. Shouldn't he be busy superintending?":PresentTime<1140?" News news news news news news news.":PresentTime<1200?' This show features a knife juggler, someone who can drive his car \n            on two wheels for long stretches, and other amazing stunts that make you think \n            "that\'s incredible!"':PresentTime<1260?" A goofy man is arguing with his pretty blonde roommate about going to \n            some place called 'The Regal Beagle.'":" News news news news news news news.")}else displayMessageP("Just like the unexamined life is not worth living, a TV \
n            turned off is not worth watching.")},objs.Ceiling=new GenericObject("ceiling","Ceiling"),objs.Ceiling.synonyms=["ceiling","roof"],objs.Ceiling.nodesc=!0,objs.Ceiling.examine=function(){displayMessageP("You see a plain white ceiling.")},objs.Sky=new GenericObject("sky","Sky"),objs.Sky.synonyms=["sky","sun","clouds"],objs.Sky.nodesc=!0,objs.Sky.examine=function(){getDaylight()==DAYLIGHT_BRIGHT?displayMessageP("The sky is a beautiful cerulean shade of blue dotted with a few lazy white clouds. The sun shines brightly."):displayMessageP("The sun is low on the horizon tinting the sky a beautiful shade of orange.")},objs.ElevatorButton=new GenericObject("button","ElevatorButton"),objs.ElevatorButton.synonyms=["button","elevator button","buttons","elevator buttons","button 1","button 2","button 3","button 4","button 5"],objs.ElevatorButton.uniqueName="elevator buttons",objs.ElevatorButton.nodesc=!0,objs.ElevatorButton.examine=function(){displayMessageP("There are five buttons, one for each floor. HINT:
type up or down to move up or down in the elevator.")},objs)objs.hasOwnProperty(d)&&objs[d].fingerprints&&createFingerprintCard(d);objs.Analyzer.moveTo("Player"),objs.FingerprintKit.moveTo("Player"),objs.MagnifyingGlass.moveTo("Player"),objs.Swabs.moveTo("Player"),objs.EvidenceBag.moveTo("Player"),objs.Gloves.moveTo("Player")}function countEdocs(){return count=0,state.eDocs.fakenews.discovered&&count++,state.eDocs.threat.discovered&&count++,state.eDocs.strips.discovered&&count++,count}function letterEDocs(e){var o=[];return"fakenews"!=e&&state.eDocs.fakenews.discovered&&o.push(state.eDocs.fakenews.txt),"threat"!=e&&state.eDocs.threat.discovered&&o.push(state.eDocs.threat.txt),"typewriter"!=e&&state.eDocs.typewriter.discovered&&o.push(state.eDocs.typewriter.txt),"strips"!=e&&state.eDocs.strips.discovered&&o.push(state.eDocs.strips.txt),formatList(o)}function magnifyThisDoc(e){switch(e){case"fakenews":state.eDocs.fakenews.discovered=!0;break;case"threat":state.eDocs.threat.discovered=!0;break;case"strips":stat
e.eDocs.strips.discovered=!0;break;case"typewriter":state.eDocs.typewriter.discovered=!0}if(1!=countTypedDocs()){switch(e){case"fakenews":displayMessage("The magnifying glass reveals a curious oddity with the letter e. \n            In one font the letter appears normally, in the second font, you notice a small gap at the top of the letter. \n            This is the same imperfection you observed in "),state.eDocs.fakenews.discovered=!0;break;case"threat":displayMessage("The magnifying glass reveals the same imperfection with the letter e that you observed in "),state.eDocs.threat.discovered=!0;break;case"strips":displayMessage("The magnifying glass reveals the same imperfection with the letter e that you observed in "),state.eDocs.strips.discovered=!0;break;case"typewriter":displayMessage("The magnifying glass reveals that the poem has a slight defect in the letter e, causing a \n            barely perceptible gap in the top of the letter. This is the same imperfection you observed in "),state.eDocs.typewri
ter.discovered=!0}displayMessageP(letterEDocs(e)+"."),state.eDocs.typewriter.discovered&&displayMessageP("You conclude that these documents were created with Ms. Davis' typewriter.")}else switch(e){case"fakenews":displayMessageP("The magnifying glass reveals a curious oddity with the letter e. \n                In one font the letter appears normally, in the second font, you notice a small gap at the top of the letter. "),state.eDocs.fakenews.discovered=!0;break;case"threat":displayMessageP("The magnifying glass reveals a curious oddity with the letter e. You notice a small gap at \n                the top of the letter."),state.eDocs.threat.discovered=!0;break;case"strips":displayMessageP("The magnifying glass reveals a curious oddity with the letter e. You notice a small gap at \n                the top of the letter."),state.eDocs.strips.discovered=!0;break;case"typewriter":displayMessageP("The magnifying glass reveals a curious oddity with the letter e. You notice a small gap at \n                the top
of the letter. There's clearly a slight defect in Ms. Davis' typewriter."),state.eDocs.typewriter.discovered=!0}}function printDiscoveredEdocs2(e){var o=countEdocs();if("typewriter"!=e||0!=o){if(0!=o)if(1!=o){var s;s="typewriter"==e||state.eDocs.typewriter.discovered?". These documents must have been created by Ms. Davis' typewriter.":". These documents must have been created by the same typewriter.";var a=letterEDocs(e);a&&displayMessageP("The magnifying glass reveals the same imperfection with the letter e \n                        that you observed in "+a+s)}else"fakenews"==e?(displayMessage("The magnifying glass reveals a curious oddity with the letter e. \n            In one font the letter appears normally, in the second font, you notice a small gap at the top of the letter. "),state.eDocs.typewriter.discovered?displayMessageP("This is the same defect you noticed in Ms. Davis' electric typewriter."):displayMessageP("There must have been a minute defect in the typewriter used to make this text.")):(dis
playMessage("The magnifying glass reveals a curious oddity with the letter e. You notice a small gap at \n        the top of the letter."),state.eDocs.typewriter.discovered?displayMessageP("This is the same defect you noticed in Ms. Davis' electric typewriter."):displayMessageP("There must have been a minute defect in the typewriter used to make this text."))}else displayMessageP("The magnifying glass reveals a curious oddity with the letter e. You notice a small gap at \n        the top of the letter. There's clearly a slight defect in Ms. Davis' typewriter.")}function getFingerprintObjectName(e){return e+"Fingerprints"}function createFingerprintCard(e){var o,s=getFingerprintObjectName(e),a=objs[e].name.substring(objs[e].name.length-1,objs[e].name.length);if(o="s"==a?objs[e].name+"' fingerprints":objs[e].name+"'s fingerprints",objs[s])return!1;objs[s]=new GenericObject(o,s),objs[s].synonyms=["prints","fingerprints"];for(var t=0;t<objs[objs[e].objectName].synonyms.length;t++){var n=objs[objs[e].objectName].s
ynonyms[t];objs[s].synonyms.push("fingerprints of "+n),objs[s].synonyms.push("fingerprints from "+n),objs[s].synonyms.push(n+" fingerprints"),objs[s].synonyms.push(n+"'s fingerprints"),objs[s].synonyms.push(n+" prints"),objs[s].synonyms.push(n+"'s prints"),"s"==(a=n.substring(n.length-1,n.length))&&(objs[s].synonyms.push(n+"' prints"),objs[s].synonyms.push(n+"' fingerprints"))}return objs[s].adjectives=[objs[e].name,objs[e].name+"'s"],objs[s].from=e,objs[s].of=objs[e].fingerprints,objs[s].article="",objs[s].analyzable=!0,objs[s].locationTaken="",objs[s].time="",objs[s].takeable=!0,objs[s].in="Nowhere",objs[s].analyzed=!1,objs[s].examine=function(e,o,a,t){objs[s].analyzed?displayMessageP(objs[s].text):displayMessageP("It's hard to tell one set of fingerprints from another. If only you had a high tech crime \n            fighting analysis machine with which to analyze them.")},objs[s].createMultiFingerprintReport=function(){for(var e=this.of.split(","),o="SHERLOCK 2000 FORENSIC ANALYZER FINGERPRINT ANALYSIS <b
r> Taken from: "+objs[objs[s].from].name+" <br> Location: "+objs[s].locationTaken+" <br> Time: "+objs[s].time+" <br><br>Fingerprints found from "+e.length+" individuals:<br><br>",a=0;a<e.length;a++){var t=objs[e[a]].fingerprint_data;o+="<br>Individual "+(a+1)+" Unique Metrics<br> Dominant whorl "+t[0]+"<br> Dominant arch "+t[1]+"<br> Dominant loop "+t[2]+"<br>"}objs[s].text="<pre>"+o+"</pre>",displayMessageP(objs[s].text)},objs[s].analyze=function(o,a,t,n){switch(objs[objs[s].from].isPerson()?displayMessage("You feed "+objs[objs[s].from].hisher+" fingerprints into the Forensic Analyzer. After a moment, it prints out a report:"):displayMessage("You feed the fingerprints into the Forensic Analyzer. After a moment, it prints out a report:"),objs[s].analyzed=!0,objs[s].synonyms.push("fingerprint report from "+objs[e].name.replace(".","")),objs[s].synonyms.push("fingerprint report of "+objs[e].name.replace(".","")),objs[s].synonyms.push("fingerprint report"),objs[s].readable=!0,objs[s].weight=5,objs[s].from){case
"Cooper":state.cooperFingerprintsAnalyzed=!0;break;case"CoopersWine":state.cooperWineFingerprintsAnalyzed=!0;break;case"Davis":state.davisFingerprintsAnalyzed=!0,state.stolenMoneyFingerprintsAnalyzed&&(state.tieMoneyToDavis=!0);break;case"GardenShears":state.shearsFingerprintsAnalyzed=!0;break;case"LinasKey":"Davis"==objs.LinasKey.fingerprints&&(state.linaskeyFingerprintsDavisAnalyzed=!0);break;case"HairSpray":state.hairsprayFingerprintsAnalyzed=!0;break;case"SecurityCabinet":state.safeFingerprintsAnalyzed=!0;break;case"StolenMoney":state.stolenMoneyFingerprintsAnalyzed=!0,state.davisFingerprintsAnalyzed&&(state.tieMoneyToDavis=!0)}if(this.of.includes(","))this.createMultiFingerprintReport();else{var r=objs[objs[s].of].fingerprint_data,i="SHERLOCK 2000 FORENSIC ANALYZER FINGERPRINT ANALYSIS<br> Taken from: "+objs[objs[s].from].name+" <br> Location: "+objs[s].locationTaken+" <br> Time: "+objs[s].time+" <br><br>Unique Metrics<br> Dominant whorl "+r[0]+"<br> Dominant arch "+r[1]+"<br> Dominant loop "+r[2]+"<br>
";objs[s].text="<pre>"+i+"</pre>",displayMessageP(objs[s].text)}},!0}function createTopics(){objs.Bus=new GenericObject("bus","Bus"),objs.Bus.globalObject=!0,objs.Bus.synonyms=["bus","grayhound","grayhound bus"],objs.Bus.touched=!1,objs.CauseCrash=new GenericObject("cause the crash","CauseCrash"),objs.CauseCrash.globalObject=!0,objs.CauseCrash.synonyms=["cause crash","cause ride to crash","sabotage ride","sabotage megacoaster","crash megacoaster","break megacoaster","cut safety wires"],objs.CoopersDeath=new GenericObject("Cooper's death","CoopersDeath"),objs.CoopersDeath.globalObject=!0,objs.CoopersDeath.uniqueName="death of Mr. Cooper",objs.CoopersDeath.synonyms=["death","cooper's death","mr cooper's death","janitor's death","custodian's death","caretaker's death","death of cooper","death of mr cooper","death of janitor","death of custodian","death of caretaker"],objs.Cornville=new GenericObject("cornville","Cornville"),objs.Cornville.globalObject=!0,objs.Cornville.synonyms=["cornville","town"],objs.Cornvil
le.touched=!0,objs.Deception=new GenericObject("deception","Deception"),objs.Deception.globalObject=!0,objs.Deception.synonyms=["deceived","decieved","deception","tricked","lied","lie"],objs.Enemies=new GenericObject("enemies","Enemies"),objs.Enemies.globalObject=!0,objs.Enemies.synonyms=["enemy","enemies"],objs.Enemies.touched=!0,objs.Expansion=new GenericObject("expansion","Expansion"),objs.Expansion.globalObject=!0,objs.Expansion.synonyms=["expansion","growth","new theme park","enlargement","construction"],objs.Expansion.touched=!0,objs.FranksDeath=new GenericObject("Franks' death","FranksDeath"),objs.FranksDeath.uniqueName="death of Mr. Franks",objs.FranksDeath.globalObject=!0,objs.FranksDeath.touched=!0,objs.FranksDeath.synonyms=["franks' death","frankie's death","mr franks' death","franks's death","mr franks's death","markus franks' death","marcus franks's death","mr franks' death","death of markus","death of mr franks","death of franks","death of frankie","death of markus franks","death","accident","c
rash","megacoaster crash"],objs.Fumigation=new GenericObject("fumigation","Fumigation"),objs.Fumigation.globalObject=!0,objs.Fumigation.synonyms=["fumigation","spraying","bug spraying","bedbugs","bed bugs","spraying for bed bugs","spraying for bedbugs"],objs.Habitat=new GenericObject("disputed lands","Habitat"),objs.Habitat.globalObject=!0,objs.Habitat.synonyms=["disputed land","disputed lands","habitat","animal habitat","endangered animal habitat","cougar","cougar land","cougar lands","cougar habitat","endangered cougar land","western cougar","western cougar lands","western courgar habitat"],objs.Happyland=new GenericObject("Happyland","Happyland"),objs.Happyland.globalObject=!0,objs.Happyland.synonyms=["resort","happyland","happy land","park","theme park"],objs.Happyland.adjectives=["happy"],objs.Happyland.touched=!0,objs.Job=new GenericObject("job","Job"),objs.Job.globalObject=!0,objs.Job.synonyms=["job","career","position","role","your job","your career","your position","what you do here"],objs.Job.touch
ed=!0,objs.Joyville=new GenericObject("joyville","Joyville"),objs.Joyville.globalObject=!0,objs.Joyville.synonyms=["joyville","joy ville","mini park"],objs.Motive=new GenericObject("motive","Motive"),objs.Motive.globalObject=globalObject=!0,objs.Motive.synonyms=["motive","motives","motivation","motivation","reason to kill","reason for murder"],objs.Motive.touched=!0,objs.Poison=new GenericObject("poison","Poison"),objs.Poison.globalObject=!0,objs.Poison.synonyms=["poison","neurotoxin","neuro toxin","tributyl phthalate","tributylphthalate","tributyl","phthalate"],objs.ReadTheNewspaper=new GenericObject("read news","ReadTheNewspaper"),objs.ReadTheNewspaper.globalObject=!0,objs.ReadTheNewspaper.synonyms=["read news","read the paper","read newspaper","read the newspaper"],objs.SafetySystem=new GenericObject("safety system","SafetySystem"),objs.SafetySystem.globalObject=!0,objs.SafetySystem.synonyms=["safety system","backup system","safety mechanism","safety override","emergency shutoff","emergency shut off","bra
ke","brakes","braking system","stopping system"],objs.CoopersUniform=new GenericObject("uniform","CoopersUniform"),objs.CoopersUniform.synonyms=["uniform","cooper's uniform","cooper's clothing"],objs.CoopersUniform.nodesc=!0,objs.CoopersUniform.in="Cooper",objs.CoopersUniform.examine=function(){displayMessageP("Mr. Cooper is is wearing gray pants, a light blue shirt colored shirt and a navy vest.")},objs.Wake=new GenericObject("wake","Wake"),objs.Wake.globalObject=!0,objs.Wake.synonyms=["wake","tribute","funeral"],objs.Weeds=new GenericObject("weeds","Weeds"),objs.Weeds.globalObject=!0,objs.Weeds.synonyms=["weed","weeds","dandelions"],objs.Yourself=new GenericObject("yourself","Yourself"),objs.Yourself.globalObject=!0,objs.Yourself.synonyms=["yourself","you","himself","herself"],objs.Yourself.touched=!0,makeRoomObject("Lobby"),makeRoomObject("GrandHall"),makeRoomObject("Ballroom"),makeRoomObject("SalonB"),makeRoomObject("SalonC"),makeRoomObject("Room202"),makeRoomObject("Restaurant"),makeRoomObject("Lounge")
,objs.Lobby.in="Nowhere",objs.Lobby.nodesc=!0,objs.Lobby.touched=!0,objs.Lobby.examine=function(){room.Lobby.describe()}}function makeRoomObject(e){objs[e]=new GenericObject(room[e].name,e),objs[e].in="Nowhere",objs[e].nodesc=!0,objs[e].touched=!0,objs[e].synonyms=room[e].synonyms,awareOf(e)}function initEvents(){eventDebrief=new evDebrief,eventCoroner=new evCoroner,eventCoroner2=new evCoroner2,eventSnap=new evSnap,eventIvanFlower=new evIvanFlower,eventWake=new evWake,eventCooperDies=new evCooperDies,eventLinaShowsSafe=new evLinaShowsSafe,eventBaxterShowsSafe=new evBaxterShowsSafe,eventDavisCollectMoney=new evDavisCollectMoney,eventKenGetsTarp=new evKenGetsTarp,eventInformAllAboutCooper=new evInformAllAboutCooper,eventKenInformPlayerAboutCooper=new evKenInformPlayerAboutCooper,eventBaxterChills=new evBaxterChills,eventFumeExposure=new evFumeExposure,eventAllyReadyForLeaving=new evAllyReadyForLeaving,eventIvanReadyForLeaving=new evIvanReadyForLeaving,eventKenReadyForLeaving=new evKenReadyForLeaving,eventLinaR
eadyForLeaving=new evLinaReadyForLeaving,eventBusComes=new evBusComes,eventBaxterTheEnd=new evBaxterTheEnd,RegisterEvent(eventDebrief),RegisterEvent(eventCoroner),RegisterEvent(eventCoroner2),RegisterEvent(eventSnap),RegisterEvent(eventIvanFlower),RegisterEvent(eventWake),RegisterEvent(eventCooperDies),RegisterEvent(eventKenInformPlayerAboutCooper),RegisterEvent(eventKenGetsTarp),RegisterEvent(eventInformAllAboutCooper),RegisterEvent(eventBaxterChills),RegisterEvent(eventLinaShowsSafe),RegisterEvent(eventBaxterShowsSafe),RegisterEvent(eventDavisCollectMoney),RegisterEvent(eventFumeExposure),RegisterEvent(eventAllyReadyForLeaving),RegisterEvent(eventIvanReadyForLeaving),RegisterEvent(eventKenReadyForLeaving),RegisterEvent(eventLinaReadyForLeaving),RegisterEvent(eventBusComes),RegisterEvent(eventBaxterTheEnd),ActivateEvent(eventDebrief,0),ActivateEvent(eventSnap,0),ActivateEvent(eventWake,295),ActivateEvent(eventDavisCollectMoney,550),ActivateEvent(eventFumeExposure,0),ActivateEvent(eventAllyReadyForLeaving,56
8),ActivateEvent(eventIvanReadyForLeaving,570),ActivateEvent(eventKenReadyForLeaving,560),ActivateEvent(eventLinaReadyForLeaving,571)}function evDebrief(){this.func=function(){switch(state.debrief_count++>100&&DeactivateEvent(this),state.debrief_step){case 0:inSameRoom("Player","Ken")&&playerIsIn("Lobby")&&(displayMessageP('"Ah, inspector. I\'m Ken Parker, head of security. Thank you for coming so quickly."'),displayMessageP('"We\'ve had a --" he glances across the lobby and lowers his voice, "suspicious death on the resort this morning. \n                    Our Chief Financial Officer, Mr. Franks, was killed while riding on our roller coaster. We think it might be related to some recent \n                    threats made against the resort."'),displayMessageP("\"We've left the scene intact for your inspection. The coroner will be here in an hour or so to take the body. I'll take you \n                    there now.\""),displayMessageP('"Before we go, I have some things for you. Follow me."'),awareOf("Frank
sBody"),awareOf("FranksDeath"),awareOf("ThreatNote"),awareOf("Ride"),ActivateEvent(eventCoroner,60),state.debrief_step++,RegisterPriorityMovementGoal("Ken","SecurityDesk"));break;case 1:inSameRoom("Player","Ken")&&(displayMessageP('Ken picks up some things off his desk and hands them to you. "Here you go. Here\'s a map of \n                    the resort and a master key to give you access to all the rooms."'),objs.MasterKey.moveTo("Player"),objs.Map.moveTo("Player"),state.debrief_step++,RegisterPriorityMovementGoal("Ken","Lobby"));break;case 2:inSameRoom("Player","Ken")&&(displayMessageP("Ken continues. \"The hotel is closed this week while we fumigate the rooms for bed bugs.  \n                    The CEO, Mr. Baxter, is adamant that we keep quiet about all this and open as planned on Monday. Although I'm head of security, I'm no \n                    crime investigator -- that's why we need you to figure out who's behind all this. If you find any evidence, please show it to me or \n                    Mr.
Baxter, we might be able to give you more information or context.\""),awareOf("Baxter"),awareOf("Fumigation"),state.debrief_step++,RegisterPriorityMovementGoal("Ken","GrandHall"));break;case 3:inSameRoom("Player","Ken")&&(displayMessageP("\"The ummm...'incident' happened around nine am. You'll have to ask Mr. Baxter for the details.\" He takes \n                    out a key and unlocks the glass doors on the north wall."),state.debrief_step++,RegisterPriorityMovementGoal("Ken","PathToPark"));break;case 4:inSameRoom("Player","Ken")&&(displayMessageP('"We suspect the ride operator, Jared, had something to do with it. We\'ve locked him in room 206 until he \n                    has a chance to talk with you."'),awareOf("Jared"),state.debrief_step++,RegisterPriorityMovementGoal("Ken","Joyville"));break;case 5:inSameRoom("Player","Ken")&&(displayMessageP("\"This is our mini theme park called 'Joyville.' Mr. Baxter has big plans to expand the resort into a much larger theme park, called 'Happyland.'\n
        Right now, we just have the one ride, although it's in shambles now.\""),state.debrief_step++,RegisterPriorityMovementGoal("Ken","CrashSite"));break;case 6:isInRoom("Player","CrashSite")&&(displayMessageP('"Mr. Baxter informed the entire staff about Mr. Franks a short time ago. He asked everyone to lend you their full \n                    cooperation. We\'re having a wake for Mr. Franks at three pm in the lounge. Most of the staff are leaving at eight o\'clock tonight to take the bus back to Cornville for the weekend. Once people leave any evidence may be lost." \n                    He pauses, catching his breath. "I realize I\'ve just dumped a ton of information on you. Do you have any questions for me before I return \n                    to my desk?"'),awareOf("Bus"),RestoreMovementGoals("Ken"),GrabAttention("Ken"),DeactivateEvent(this))}}}function evCoroner(){this.func=function(){inSameRoom("Player","FranksBody")||(objs.FranksBody.remove(),state.franksBodyRemoved=!0,DeactivateEvent(this))}}fun
ction evCoroner2(){this.func=function(){inSameRoom("Player","CoopersBody")||(objs.CoopersBody.remove(),objs.Dropcloth.remove(),DeactivateEvent(this))}}function evSnap(){this.func=function(){PresentTime-INITIAL_TIME>60&&DeactivateEvent(this),isInRoom("Player","MechanicalRoom")&&0==--state.snapTimer&&displayMessageP("SNAP! You startle at a loud noise, like a twig being broken to the east."),isInRoom("Player","AmongBushes")&&--state.movementTimer>0&&(displayMessageP("Your eye catches some movement to the east."),DeactivateEvent(this))}}function evIvanFlower(){this.func=function(){inSameRoom("Player","Ivan")&&has("Player","Flower")&&(displayMessageP('Ivan spots the flower you\'re holding. "I knew it! I knew you were the one who messed with my flowers. Why would you \n            do such a thing?" He grabs the flower from you and storms off.'),objs.Player.removeFromInventory("Flower"),objs.Flower.in="Nowhere",RegisterPriorityMovementGoal("Ivan","Shed"),state.IvanAngerTimer=10),isInRoom("Ivan","Shed")&&0==state.Iv
anAngerTimer--&&RestoreMovementGoals("Ivan"),"PathToPark"==here&&has("Player","Flower")&&objs.Flowers.removeSynonym("flower"),"PathToPark"==prevRoom&&has("Player","Flower")&&objs.Flowers.addSynonym("flower")}}function evWake(){this.func=function(){switch(state.wake_stage>1&&"Lounge"==here&&(state.player_attended_wake=!0),state.wake_stage){case 0:RegisterPriorityMovementGoal("Ally","Lounge"),RegisterPriorityMovementGoal("Baxter","Lounge"),RegisterPriorityMovementGoal("Cooper","Lounge"),RegisterPriorityMovementGoal("Davis","Lounge"),RegisterPriorityMovementGoal("Ivan","Lounge"),RegisterPriorityMovementGoal("Ken","Lounge"),RegisterPriorityMovementGoal("Lina","Lounge"),state.wake_stage++;break;case 1:isInRoom("Ally","Lounge")&&isInRoom("Baxter","Lounge")&&isInRoom("Davis","Lounge")&&isInRoom("Ken","Lounge")&&isInRoom("Lina","Lounge")&&(state.wake_stage++,state.wake_in_progress=!0),isInRoom("Player","Lounge")||(inSameRoom("Player","Ally")&&!state.AllyInvitedMeToWake&&(objs.Ally.events.EVENT_COOPER_IS_DEAD.known?d
isplayMessageP("Ally says, \"Oh, Inspector, we're all going to an informal wake for Mr. Franks and now Mr. Cooper. I don't think Mr. Baxter would mind if you joined us.\""):displayMessageP("Ally says, \"Oh, Inspector, we're all going to an informal wake for Mr. Franks. I don't think Mr. Baxter would mind if you joined us.\""),state.AllyInvitedMeToWake=!0),inSameRoom("Player","Baxter")&&!state.BaxterInvitedMeToWake&&(objs.Baxter.events.EVENT_COOPER_IS_DEAD.known?displayMessageP("Mr. Baxter speaks. \"Inspector, we're having an informal gathering for Frankie and Mr. Cooper. You're welcome to join us, but please respect that it may not be the best time to ask many questions.\""):displayMessageP("Mr. Baxter speaks. \"Inspector, we're having an informal gathering for Frankie. You're welcome to join us, but please respect that it may not be the best time to ask many questions.\""),state.BaxterInvitedMeToWake=!0));break;case 2:if(state.wakeStarted=!0,state.cooper_dying){state.wake_stage=3,state.wake_mingle_timer=5;b
reak}objs.HairSpray.in="Davis",isInRoom("Player","Lounge")&&(displayMessageP("Ms. Davis moves behind the bar and  \n                    returns a moment later with a large tray of wine glasses. The staff gathers round and she hands everyone \n                    a glass."),displayMessageP("Mr. Baxter stands and gently calls everyone to attention. \n                    He spends a few moments talking about the life of Mr. Franks and praising his contribution to the business. \n                    He concludes with a toast to his departed friend."),state.cooper_dead&&displayMessageP("He adds a few short words about Mr. Cooper as well."),awareOf("Wine")),"Lounge"==objs.Cooper.in&&(state.cooper_drinks_poison=!0),state.davis_served_wine=!0,state.wake_stage++;break;case 3:state.wake_mingle_timer--,!isInRoom("Player","Lounge")||state.cooper_dying||state.cooper_died_during_wake||displayMessageP("The Happyland employees are quietly mingling. You overhear some \n                    funny stories as they sip their wine
and reminisce about their time with Mr. Franks."),7==state.wake_mingle_timer&&(!isInRoom("Player","Lounge")||state.cooper_dying||state.cooper_died_during_wake||displayMessageP("It's feeling a little awkward as you're surrounded by strangers \n                        exchange laughs, tears, and hugs.")),2==state.wake_mingle_timer&&(RestoreMovementGoals("Ally"),RestoreMovementGoals("Davis"),state.wake_in_progress=!1),1==state.wake_mingle_timer&&(RestoreMovementGoals("Cooper"),RestoreMovementGoals("Ivan"),RestoreMovementGoals("Ken")),0==state.wake_mingle_timer&&(RestoreMovementGoals("Baxter"),RestoreMovementGoals("Lina"),0==state.coopdie_stage&&ActivateEvent(eventCooperDies,10),objs.HairSpray.in="RachelsDesk",DeactivateEvent(this))}}}function evCooperDies(){this.func=function(){switch(GrabAttention("Cooper"),Goal.Cooper.Enabled=!1,state.coopdie_stage){case 0:inSameRoom("Player","Cooper")?(displayMessageP('"Aaagh!" Mr. Cooper stumbles to the floor. He is clutching his stomach and is in obvious distress.'),Regis
terPriorityMovementGoal("Ken",objs.Cooper.in)):isInSameCorridor(here,objs.Cooper.in)?(dir=findRoomDirection(here,objs.Cooper.in),displayMessageP("Off to the "+dir+" you see Mr. Cooper clutch his stomach and collapse."),RegisterPriorityMovementGoal("Ken",objs.Cooper.in)):(displayMessageP('Ken appears out of nowhere, out of breath. \n                    "Inspector! Inspector! Something\'s happening to Mr. Cooper! Follow me!"'),objs.Ken.in=here,objs.Ken.previn=here,objs.Ken.previn2=here,RegisterPriorityMovementGoal("Ken",objs.Cooper.in)),state.coopdie_stage++,state.cooper_dying=!0;for(var e=getPeopleInRoom(),o=0;o<e.length;o++)objs[e[o]].inform("EVENT_WITNESS_COOPER_DIE");break;case 1:case 2:case 3:case 4:for(e=getPeopleInRoom(),o=0;o<e.length;o++)objs[e[o]].inform("EVENT_WITNESS_COOPER_DIE");inSameRoom("Player","Cooper")&&(displayMessageP("Mr. Cooper is on the ground writhing in discomfort."),inSameRoom("Player","Ken")&&(state.AllyCalledAmbulance||(state.AllyCalledAmbulance=!0,displayMessageP('"Ally\'s called
for an ambulance," Ken says.')))),(inSameRoom("Ken","Cooper")||inSameRoom("Player","Cooper"))&&state.coopdie_stage++;break;case 5:inSameRoom("Player","Cooper")?(displayMessageP('Cooper\'s face contorts in pain and you lean down over him \n                    looking for a way to ease his suffering. Between his gasps for air you make out the words "betrayal" and \n                    "poisoned me." He vomits twice and then his body goes still. You check his pulse. There is none.'),state.player_witnessed_cooper_die=!0,ActivateEvent(eventKenGetsTarp,0),awareOf("CoopersBody"),awareOf("Vomit")):ActivateEvent(eventKenInformPlayerAboutCooper,0),state.cooper_dying=!1,state.cooper_dead=!0,"Davis"!=objs.HairSpray.in&&"RachelsDesk"!=objs.HairSpray.in&&(objs.HairSpray.in="RachelsDesk"),state.wake_in_progress&&(state.cooper_died_during_wake=!0),objs.Vomit.in=objs.Cooper.in,objs.CoopersBody.in=objs.Cooper.in,objs.Cooper.remove(),objs.Cooper.alive=!1,transferSynonyms("Cooper","CoopersBody"),objs.Cooper.touched=!1,Deactivat
eEvent(this),state.coopdie_stage++;for(e=getPeopleInRoom(),o=0;o<e.length;o++)objs[e[o]].inform("EVENT_WITNESS_COOPER_DIE"),objs[e[o]].inform("EVENT_COOPER_IS_DEAD");if(ActivateEvent(eventInformAllAboutCooper,20),state.wake_stage>0)return;objs.StaffFood.isTouched()?objs.NewsArticle.isTouched()?room.StorageCloset2.isTouched()?objs.CoopersWine.in="CoopersRoom":objs.CoopersWine.in="StorageCloset2":objs.CoopersWine.in="CoopersNightTable":objs.CoopersWine.in="Fridge"}}}function evKenGetsTarp(){this.func=function(){switch(0==state.ken_gets_tarp_stage&&inSameRoom("Ken","CoopersBody")&&(displayMessageP("Ken looks away, his expression one of disgust."),state.ken_gets_tarp_stage=1,state.ken_gets_tarp_timer=1),state.ken_gets_tarp_stage){case 1:0==state.ken_gets_tarp_timer--&&(RegisterPriorityMovementGoal("Ken","Shed"),state.ken_gets_tarp_stage++,inSameRoom("Player","Ken")&&displayMessageP('Keeping his head turned away, Ken says, "I\'m going to get something to cover him up with."'));break;case 2:"Shed"==objs.Ken.in&&(o
bjs.Dropcloth.in="Ken",state.ken_gets_tarp_stage++,RegisterPriorityMovementGoal("Ken",objs.CoopersBody.in));break;case 3:inSameRoom("Ken","CoopersBody")&&(inSameRoom("Player","Ken")&&(displayMessage("Ken produces a dropcloth and covers Mr. Cooper's body. "),displayMessageP('"There, we\'ll give him some dignity. \n                        The ambulance is still on its way." He glances at his watch, "about half an hour. Guess you better do \n                        whatever examination you need to before they take him away."')),objs.Dropcloth.in=objs.CoopersBody.in,objs.CoopersBody.in="Dropcloth",RestoreMovementGoals("Ken"),GrabAttention("Ken"),DeactivateEvent(this),ActivateEvent(eventCoroner2,30))}}}function evInformAllAboutCooper(){this.func=function(){informAllCharacters("EVENT_COOPER_IS_DEAD"),DeactivateEvent(this)}}function evKenInformPlayerAboutCooper(){this.func=function(){RegisterPriorityMovementGoal("Ken",objs.Player.in),inSameRoom("Player","Ken")&&(displayMessageP("\"Inspector, I've been looking all o
ver for you. Mr. Cooper just died. Right in front of me. He was \n            clutching his stomach and gasping for air. He was trying to talk; I could only make out the words poison and betrayal. \n            An ambulance is on the way, but I'm afraid it's too late. He's lying on the floor in the "+room[objs.CoopersBody.in].name+'."'),DeactivateEvent(this),ActivateEvent(eventKenGetsTarp,0),state.ken_gets_tarp_stage=1,state.ken_gets_tarp_timer=0)}}function evBaxterChills(){this.func=function(){switch(state.baxter_chill_stage){case 0:RegisterPriorityMovementGoal("Baxter","Room205"),state.baxter_chill_stage++;break;case 1:isInRoom("Baxter","Room205")&&state.baxter_chill_stage++,inSameRoom("Player","Baxter")&&displayMessageP('"I\'m sorry, Inspector, I really need some alone time right now. Excuse me."');break;case 2:0==state.baxter_chill_timer--?(RestoreMovementGoals("Baxter"),DeactivateEvent(this)):inSameRoom("Player","Baxter")&&displayMessageP('Mr. Baxter is sitting on his bed. His face is red and puffy. "I\
'm sorry, Inspector. I really want to be alone right now."')}}}function evLinaShowsSafe(){this.func=function(){switch(state.linaSafeStage){case 0:RegisterPriorityMovementGoal("Lina","SalonB"),CancelAttention("Lina"),state.linaSafeStage++;break;case 1:inSameRoom("Player","Lina")&&displayMessageP('"Mr. Franks was a bit odd in that he preferred to keep all the company\'s money \n                    in cash and on the premises."'),state.linaSafeStage++;break;case 2:case 1:inSameRoom("Player","Lina")&&displayMessageP('"He was rather relaxed with tracking money, but he had two simple rules. First, he and I have the only two keys \n                    to the secure cabinet and we had to both be present whenever either of us opened it."'),state.linaSafeStage++;break;case 3:inSameRoom("Player","Lina")&&displayMessageP('"His second rule was that whenever we opened the cabinet, we had to recount all the \n                    money inside."'),state.linaSafeStage++;break;case 4:inSameRoom("Player","Lina")&&displayMessage
P('"The last recount we did was about two months ago, when we received a sizable deposit from a \n                    new investor."'),state.linaSafeStage++;break;case 5:if(inSameRoom("Lina","SecurityCabinet")){if(inSameRoom("Player","Lina"))if(objs.SecurityCabinet.isLocked()){if("Lina"!=objs.LinasKey.in)return void displayMessageP('"I think you took my key. Either open the cabinet yourself or give me the key, please."');objs.LinasKey.fingerprints="Lina",displayMessageP('Ms. Sanchez inserts her key into the cabinet and pauses, \n                                "I\'ve never opened this before without Mr. Franks being present." She turns the \n                                key and opens the door.'),displayMessageP("Her mouth opens wide. \"It's gone. All of it. It's gone!\"")}else displayMessageP("Her mouth opens wide. \"It's gone. All of it. It's gone!\"");state.safe_is_empty=!0,awareOf("StolenMoney"),objs.StolenMoney.visible=!0,objs.Lina.inform("EVENT_SAFE_IS_EMPTY"),objs.SecurityCabinet.setOpened(),state.l
inaSafeStage++,RegisterPriorityMovementGoal("Baxter","SalonB")}break;case 6:inSameRoom("Player","Lina")&&displayMessageP('Ms. Sanchez stares blankly at the empty cabinet. "I-I have to tell Mr. Baxter," she whispers. \n                    She looks toward the door, but it appears she\'s unable to move toward it.'),state.linaSafeStage++;break;case 7:inSameRoom("Player","Lina")&&displayMessageP("Ms. Sanchez turns to you. \"Mr. Franks and I are the only ones who \n                    have access to this cabinet. Either he stole it or I did. For what it's worth, I \n                    didn't. But I can't prove that.\""),state.linaSafeStage++;break;case 8:0==state.linaSafeTime&&displayMessageP("Ms. Sanchez puts her hand on her forehead. \"I'm sorry \n                    Inspector I'm really not feeling well now. I'll stay a bit longer but, \n                    I think I'm going to have to lie down soon.\""),state.linaSafeTimer++>3&&(RegisterPriorityMovementGoal("Lina","Room201"),DeactivateEvent(this))}state.lina
SafeStage>5&&isInRoom("Player","SalonB")&&isInRoom("Baxter","SalonB")&&(displayMessage("Ms. Sanchez \n                slowly points to the empty safe. Baxter's gaze follows her finger. His smile melts away as does the color in his face."),displayMessage(' Baxter raises his voice. "Someone is trying to destroy our business. '),state.cooper_dead?displayMessageP('First threats, then Frankie and Cooper die, now this?"'):displayMessageP('First threats, then Frankie dead, now this?"'),displayMessageP('Baxter spins around and points at you, glaring at you. "You! Find out who\'s behind this NOW!" \n                He storms out of the room.'),objs.Baxter.alterMood(-3,2),objs.Baxter.in="SalonC",RestoreMovementGoals("Baxter"),objs.Baxter.inform("EVENT_SAFE_IS_EMPTY"),objs.Lina.inform("EVENT_SAFE_IS_EMPTY"))}}function evBaxterShowsSafe(){this.func=function(){switch(0==state.baxterSafeStage&&"SalonB"==objs.Baxter.in&&(state.baxterSafeStage=1),state.baxterSafeStage){case 0:RegisterPriorityMovementGoal("Baxter","SalonB"),
CancelAttention("Baxter"),state.baxterSafeStage++;break;case 1:isInRoom("Baxter","SalonB")&&(isInRoom("Player","SalonB")&&(objs.SecurityCabinet.isOpen()?(displayMessageP('Baxter looks at the open secure cabinet. "What? Where is the money? Inspector, all the company funds were in this here. Someone has stolen our money!"'),objs.Baxter.alterMood(-4,2)):displayMessageP('"Here it is, inspector."')),state.baxterSafeStage++);break;case 2:DeactivateEvent(this),RestoreMovementGoals("Baxter"),GrabAttention("Baxter"),state.baxterSafeStage=0}}}function evDavisCollectMoney(){this.func=function(){switch(state.davisMoneyStage){case 0:RegisterPriorityMovementGoal("Davis","Room203"),state.davisMoneyStage++,"RachelsDesk"!=objs.HairSpray.in&&"Davis"!=objs.HairSpray.in||(objs.HairSpray.in="Davis");break;case 1:isInRoom("Davis","Room203")&&0==state.davisMoneyInRoomTimer--&&(state.davisMoneyStage++,RegisterPriorityMovementGoal("Davis","Hall51"),"Davis"==objs.HairSpray.in&&(objs.HairSpray.in="DavisSuitcase",objs.DavisSuitcase.in=
"Davis"));break;case 2:if(state.DavisCarriesSuitcase=!0,isInRoom("Davis","Elevator5")&&isInRoom("Player","Hall51"))return RegisterPriorityMovementGoal("Davis","Lobby"),state.davisMoneyStage++,displayMessageP('The elevator doors open, revealing Ms. Davis. Her eyes open wide \n                    when she spots you. "Oh, I must have pushed the wrong button on the elevator," she says quickly. \n                    "Excuse me." She smiles widely as the elevator doors close.'),state.sawDavisGetMoney=!0,void(objs.StolenMoney.isTouched()&&(state.tieMoneyToDavis=!0));isInRoom("Davis","Hall51")&&(RegisterPriorityMovementGoal("Davis","Lobby"),state.davisMoneyStage++,"Hall51"==objs.StolenMoney.in&&(objs.StolenMoney.in="DavisSuitcase",objs.DavisSuitcase.weight=90,state.stolenMoneyInDavisPosession=!0),objs.StolenMoney.visible=!0);break;case 3:isInRoom("Davis","Lobby")&&(DeactivateEvent(this),state.DavisCarriesSuitcase=!1),isInRoom("Davis","GrandHall")&&(objs.DavisSuitcase.in="Lobby"),isInRoom("Davis","Hall51")&&isInRoom(
"Player","Hall51")&&(displayMessageP("The elevator doors open, revealing Ms. Davis. Her eyes open wide \n                        when she spots you. She pushes you aside and scrambles into the elevator with her suitcase. \n                        She smiles widely as the elevator doors close."),teleport("Davis","Elevator5"),state.elevatorOccupied=!0)}}}function evFumeExposure(){this.func=function(){room[here].isFumigated()?(state.fumeExposure++,state.fumeExposure>=.7*state.toxicFumeExposure?displayMessageP("The fumes are giving you a headache and your vision is blurry."):state.fumeExposure>=.3*state.toxicFumeExposure?displayMessageP("These fumes are making you light headed."):displayMessageP("The smell from the fumigation gas is really strong. It would probably clear out people as well as it clears out bugs.")):(state.fumeExposure-=.3,state.fumeExposure<0&&(state.fumeExposure=0),state.fumeExposure>=.7*state.toxicFumeExposure?displayMessageP("The fresh air feels good, but your head still aches and your eyes a
re still watering."):state.fumeExposure>=.5*state.toxicFumeExposure?displayMessageP("The fresh air feels good, but those fumes have given you a lingering headache."):state.fumeExposure>=.25*state.toxicFumeExposure&&displayMessageP("The fresh air feels good, but you can still smell that darn fumigation gas.")),state.fumeExposure>state.toxicFumeExposure&&(displayMessageP("<br><br> *** You have passed out. ***<br><br><br>"),DeactivateEvent(this),state.outputActive=!1,advanceTime(43),state.outputActive=!0,ActivateEvent(this),here="Room202",state.fumeExposure=3,state.overcomeByFumes=!0,displayMessageP("When you come to, you're lying in your hotel room bed, your clothes reeking of the fumigation gas."),displayMessageP("The door opens and Ally comes in, a smile evaporating the concern on her face. \n            \"Oh, good you're awake. Ken found you while doing his rounds. You shouldn't be on the top floors; they're being fumigated. \n            Anyways, I brought you some water. Glad to see you're okay.\""),objs.
Ally.in=here,objs.Ally.previn=here,objs.Ally.previn2=here,RestoreMovementGoals("Ally"),GrabAttention("Ally"),objs.GlassOfWater.in="Table202",awareOf("GlassOfWater"),awareOf("Ally"))}}function evAllyReadyForLeaving(){this.func=function(){switch(state.ally_leave_stage){case 0:RegisterPriorityMovementGoal("Ally","AllysRoom"),state.ally_leave_stage++;break;case 1:"AllysRoom"==objs.Ally.in&&(0==state.ally_pack_timer--&&(RegisterPriorityMovementGoal("Ally","Lobby"),state.ally_leave_stage++),inSameRoom("Player","Ally")&&displayMessageP("Ally is busy packing clothes into her backpack."));break;case 2:"Lobby"==objs.Ally.in&&(ActivateEvent(eventBusComes,0),RegisterPriorityMovementGoal("Baxter","Lobby"),DeactivateEvent(this))}}}function evIvanReadyForLeaving(){this.func=function(){switch(state.ivan_leave_stage){case 0:RegisterPriorityMovementGoal("Ivan","IvansRoom"),state.ivan_leave_stage++;break;case 1:"IvansRoom"==objs.Ivan.in&&(0==state.ivan_pack_timer--&&(RegisterPriorityMovementGoal("Ivan","Lobby"),state.ivan_leav
e_stage++),inSameRoom("Player","Ivan")&&displayMessageP("Ivan is busy packing clothes into a duffle bag."));break;case 2:"Lobby"==objs.Ivan.in&&DeactivateEvent(this)}}}function evLinaReadyForLeaving(){this.func=function(){switch(state.lina_leave_stage){case 0:RegisterPriorityMovementGoal("Lina","Room201"),state.lina_leave_stage++;break;case 1:"Room201"==objs.Lina.in&&(0==state.lina_pack_timer--&&(RegisterPriorityMovementGoal("Lina","Lobby"),state.lina_leave_stage++),inSameRoom("Player","Lina")&&displayMessageP("Lina is busy packing clothes into a garment bag."));break;case 2:"Lobby"==objs.Lina.in&&DeactivateEvent(this)}}}function evKenReadyForLeaving(){this.func=function(){switch(state.ken_leave_stage){case 0:RegisterPriorityMovementGoal("Ken","KensRoom"),state.ken_leave_stage++;break;case 1:"KensRoom"==objs.Ken.in&&(0==state.ken_pack_timer--&&(RegisterPriorityMovementGoal("Ken","Lobby"),state.ken_leave_stage++),inSameRoom("Player","Ken")&&displayMessageP("Ken is busy packing clothes into his travel bag."));
break;case 2:"Lobby"==objs.Ken.in&&DeactivateEvent(this)}}}function evBusComes(){this.func=function(){switch(state.bus_stage){case 0:isInRoom("Ally","Lobby")&&isInRoom("Baxter","Lobby")&&isInRoom("Davis","Lobby")&&isInRoom("Ivan","Lobby")&&isInRoom("Ken","Lobby")&&isInRoom("Lina","Lobby")&&state.bus_stage++;break;case 1:0==state.bus_timer--&&state.bus_stage++,isInRoom("Player","Lobby")&&displayMessageP("Mr. Baxter is talking to each of his employees one on one. You can overhear him \n                        wishing them the best for the weekend and to take it easy after such a horrible day.");break;case 2:switch(here){case"Lobby":case"FrontSteps":displayMessageP("A bus pulls up to the front steps. The employees file out the doors and board the bus. It drives off into the sunset.");break;case"Reception":case"SecurityDesk":case"GrandHall":displayMessageP("You see the employees filing out the lobby doors and into a bus parked outside. The bus departs a moment later.")}objs.Ally.in="Nowhere",objs.Davis.in="Nowhe
re",objs.DavisSuitcase.in="Nowhere",objs.Ivan.in="Nowhere",objs.Ken.in="Nowhere",objs.Jared.in="Nowhere",objs.Lina.in="Nowhere",ActivateEvent(eventBaxterTheEnd,0),DeactivateEvent(this)}}}function evBaxterTheEnd(){this.func=function(){RegisterPriorityMovementGoal("Baxter",here),inSameRoom("Player","Baxter")&&(displayMessageP("Mr. Baxter turns to you. \"Well, Inspector, you've had plenty of time to \n            investigate here and still no arrest. I'm very disappointed in you; I'm calling your boss.\""),"Lobby"==here&&displayMessageP("He flops onto one of the couches with an audible sigh."),jigIsUp(""),DeactivateEvent(this))}}var state={outputActive:!0,scrollMode:!1,verboseMode:!1,gameOver:!1,process_queues:!0,welcome_stage:0,debrief_step:0,debrief_count:0,rideCrashed:!0,baxterGivesThreatNote:!1,playerHasMasterKey:!1,elevatorOccupied:!1,franksBodyRemoved:!1,eDocs:{fakenews:{discovered:!1,txt:"the news article photocopy"},threat:{discovered:!1,txt:"the threatening letter"},strips:{discovered:!1,txt:"the paper
strips from Ms. Davis' room"},typewriter:{discovered:!1,txt:"your poem"}},standardTypewriterIsBetter:!1,readNewspaper:!1,readFakeArticle:!1,discoveredWiresCut:!1,cooperFingerprintsAnalyzed:!1,davisFingerprintsAnalyzed:!1,shearsFingerprintsAnalyzed:!1,linaskeyFingerprintsDavisAnalyzed:!1,hairsprayFingerprintsAnalyzed:!1,stolenMoneyFingerprintsAnalyzed:!1,shearsShardsAnalyzed:!1,cooperWineFingerprintsAnalyzed:!1,hintFirstFingerprintsTaken:!0,hintFirstElevatorRide:!0,showCooperFakeArticle:!1,showCooperNewspaper:!1,showCooperFingerprintReport:!1,cooperConfession:!1,linaSafeStage:0,baxterSafeStage:0,davisMoneyStage:0,davisMoneyInRoomTimer:10,shears_discovered:!1,shears_found:!1,fumeExposure:0,toxicFumeExposure:10,overcomeByFumes:!0,snapTimer:Math.floor(3*Math.random()+2),movementTimer:2,IvanAngerTimer:10,flowerTaken:!1,davisLiesAboutScrapbooking:!1,wake_in_progress:!1,wake_stage:0,wake_mingle_timer:15,AllyInvitedMeToWake:!1,BaxterInvitedMeToWake:!1,cooper_drinks_poison:!1,davis_served_wine:!1,hairspray_poison:!1
,player_attended_wake:!1,coopdie_stage:0,cooper_dying:!1,poison_found_in_vomit:!1,poison_found_in_wine:!1,AllyCalledAmbulance:!1,cooper_dead:!1,cooper_died_during_wake:!1,ken_gets_tarp_stage:0,ken_gets_tarp_timer:5,baxter_chill_stage:0,baxter_chill_timer:10,player_witnessed_cooper_die:!1,cooper_arrested:!1,cooperGivesPlayerCash:!1,findCashOnCooper:!1,safe_is_empty:!1,linaSafeTimer:0,tieMoneyToDavis:!1,sawDavisGetMoney:!1,DavisCarriesSuitcase:!1,stolenMoneyInDavisPosession:!1,ally_leave_stage:0,ally_pack_timer:10,ivan_leave_stage:0,ivan_pack_timer:5,ken_leave_stage:0,ken_pack_timer:9,lina_leave_stage:0,lina_pack_timer:9,bus_stage:0,bus_timer:3};