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_prompt_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("
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
"),$("#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(""+room[here].name+""),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:");for(var t=0;t
")}else{if(s.cmd&&"undo"==s.cmd.action)return undoState(),displayMessageP(""+room[here].name+""),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
"+getClockTime()+"
type NEWBIE if you are new to interactive fiction games or HELP for a list of commands
"),displayMessageP("You can move around. The following commands will all move you north:\n
\n> walk north\n
\n> go north
\n> north
\n> n
\n
You can move in several directions:
\n\nnorth (n), south (s), east (e), west (w),\n
\nnorthwest (nw), northeast (ne), southwest (sw), southeast (se),
\nup (u), down (d)\n
If you have a map, you'll be able to move toward a specific room (by moving one room closer per turn)
\n\n> go toward family room\n\n\nYou can follow a character who just left the room/area you're in.\n
\n> follow Joe\n\n\n
To see the directions you can go\n
\n> exits\n\n\nLooking at things\n
\n> look (look at the current room area)\n\n
\n> l (shortcut for look)
\n> examine phone (equivalent to look at phone)
\n> look inside closet
\n> x (shortcut for examine)
\n\n
\n> ask Kendra about Joseph\nIf there are multiple people in the room, you need to direct your communication to a specific person\n
\n> ask about Joseph (if there's only one person in the room, you don't need to specify who you're asking)
\n> ask Joe about football
\n> ask Barney where Fred is
\n> tell me about yourself
\n
\n> Thomas, how are you?\nYou can inform characters about things or events\n
\n> ask George about Jerry\n
\n> tell Susie about the concert\n\nIf there's only one person in the room or area with you, you can omit the person:\n
\n
\n> how are you?\n\nOther interactions\n
\n> hello
\n> ask about Jerry
\n
\n> give camera to Robert\n\nTo list the characters you've met so far\n
\n> show pen to Scott (good for presenting evidence to someone)
\n> Ted, show me the painting
\n
\n> characters\n\n\n
\n> take envelope\n\nTo see what you're carrying (and you can carry a lot!)\n
\n> pick up bottle cap
\n> take all
\n> drop apple
\n> drop all
\n
\n> inventory\n\nExamples of Other Interactions\n
\n> i (shortcut for inventory)
\n
\n> open pickle jar\n\n
\n> close cabinet
\n> open treasure chest with pirate's key
\n> eat banana
\n> drink tea
\n> read warning label
\n> smell lotion
\n> taste lemon
\n> knock on front door
\n> turn on radio
\n> turn off faucet
\n> use car
\n> jump
\n> kiss
\n> sing
\n
\n> magnify fabric (look at an object throught your magnifying glass)\n\nYou can fingerprint people and objects. \n
\n> mag insect (shortcut for magnify)
\n> search Jackie
\n
\n> fingerprint the smoking gun (fp for short)\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
\n> fp lead pipe
\n
\n> analyze wet paint (ana for short)\n\n\nFeel free to show people your evidence.\n
\n> read paint analysis
\n
\n> show Dopey the poisoned apple\n\nIf you believe you have enough evidence to convict someone, you can arrest them.\nArresting a person usually ends the game.\n
\n> show clyde the gun's fingerprint report
\n
\n> arrest Fred\n\n
\n
\n> wait 10 - wait for ten minutes\nMultiple commands are separated with semicolons\n
\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)
\n> z (shortcut for wait)
\n> again (shortcut is g) - repeats the last command
\n> save - saves the game (will survive quitting your browser)
\n> restore - restores the game
\n> undo - undoes your last turn (you can undo up to 10 turns)
\n> restart - start the game over
\n> verbose - display room descriptions every time you enter a room
\n> brief - only display room descriptions the first time you enter a room (you can always type look to print the room description)
\n
\n> n; n; n; take all; w")}function displayAboutScreen(){state.scrollMode=!1,displayMessageP(""),displayVersion(),displayMessageP("
\n
\nFor a summary of the commands, try the HELP command.
\n\n
\n Happyland version "+VERSION+"
\n Written, programmed, and illustrated by Rob Fitzel
\n Thank you Mike Russo, Brian Rushton, Andrew Fitzel, and Caitlin Fitzel for Beta Testing.
ASK JOHN ABOUT BARNEY")}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(),GrabAttention(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{displayMessageP("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||"StandardTypewriter"==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."
SUNDAY, MAY 25 1980 | VERITAS IN ZORKUM | $1.25
\nHAPPYLAND CUSTODIAN GUILTY OF MURDER
\n \n \n\n ',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 involved 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 depositing\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 sentenced to *** THE END *** Thank you for playing."),displayVersion(),displayCreditsScreen(),displayMessageP("You can either UNDO, RESTART the game or RESTORE a saved game.")}function frontPage(e){displayMessageP(' Cornville Weekly News\n'+e+"| VERITAS IN ZORKUM | $1.25 ")}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"):displayMessage(n+" steps into the area. "):"Davis"==e&&state.DavisCarriesSuitcase?displayMessage(n+" is walking past you, wheeling her suitcase. "):displayMessage(n+" is walking past you. ")}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+". ")}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+". "):d&&!c?displayMessage(n+", off to the "+(y=findRoomDirection(here,room[o][s].nextroom))+", steps into the corridor from the "+getOppositeDir(s)+". "):!d&&c&&displayMessage(n+", off to the "+y+", leaves the corridor to the "+s+". ")}}}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 guest 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].corridor&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"down";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() "),!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 objs)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[objs[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 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 up or down 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:"Hall31"},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. 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",room.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. 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. The walls are painted 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 probably 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.BallroomStairsBottom.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("Cooper'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=["bartender'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 GenericRoom("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=["hall22"],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",door:"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","Wainscoting","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={nextroom:"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 which 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=COR_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 track 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:"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.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 only 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_COOPER_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 ");break;case"Hall21":case"Hall22":case"Hall23":case"Hall24":case"Hall25":displayMessage("Mr. Cooper is here, vacuuming. ");break;case"Lounge":displayMessage("Mr. Cooper is here. ");break;case"Ballroom":case"SalonB":case"SalonC":displayMessage("Mr. Cooper is here, emptying the trash. ");break;default:displayMessage("Mr. Cooper is here, tidying up. ")}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,delta_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 home 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 short.'),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"MidwayGames":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 was 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?"');break;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,"BallroomFoyer"],[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_intensity: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 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?"']},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.work_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)+" "):displayMessage(pickOne(this.work_activities)+" "):"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. "),!0)},me.hibye=function(e){this.smalltalkRespond(e)},me.howAreYou=function(){this.smalltalkRespond("howareyou")},me.describe=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 good 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 anything 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 take 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 her 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 your 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 feel 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 lawyer 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 initial 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_FRANKS_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){displayMessageP("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("Ivan")?isInRoom("GrandHall")?displayMessage("Ivan is tending to the flowers around the fountain. "):displayMessage("Ivan is here. "):displayMessage("Ivan is here "+pickOne(GardenActivities)+". "),!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 lounge."'):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've 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 something 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 have 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;case"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 back.\""),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.phraseBankDunno)}},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. "),!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,"Room206"]],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 usually 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"ControlPanel":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 theme 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 here 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 fingerprints."'),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;case"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. "),!0):inSameRoom("Davis","Ken")?(displayMessage("Ken is "+pickOne(this.flirtingActivities)+" Ms. Davis. "),!0):(displayMessage("Ken is here. "),!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_intensity: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 important 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 that. 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"DisplayCabinet":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 The 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('"That 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 excitement 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 stay 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 before?\"");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 the 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 him 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 only 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"HairSprayFingerprints":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 fragments 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 was murder. But we need evidence as to who and how."');break;case"GardenShearsFingerprints":state.shearsFingerprintsAnalyzed&&state.cooperFingerprintsAnalyzed&&state.discoveredWiresCut&&state.shearsShardsAnalyzed?(displayMessageP("\"Cooper'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;case"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");break;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 onto 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.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"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 this 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_SHOWN_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 enough 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 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 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)+". "),!0;case"Room201":return displayMessage("Ms. Sanchez is here, lying on the bed. "),!0;default:displayMessage("Ms. Sanchez is here. ")}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 the 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, does 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."'),awareOf("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"SecurityCabinet":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 access 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 weekly 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.linaskeyFingerprintsDavisAnalyzed)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 fingerprints 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.LinasCabinet.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":displayMessageP('"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;case"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 nothing 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.FranksBlood=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 GenericObject("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=" SHERLOCK 2000 FORENSIC ANALYZER MATERIAL ANALYSIS",objs.FranksKey=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","securitycabinet","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.SecurityCabinet.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.visible=!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 designer 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."))},objs.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 \n ',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 swabs","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 Cornville Weekly News\nSUNDAY, MAY 25 1980 | VERITAS IN ZORKUM | $1.25 \nRESORT LAND NOT DESIGNATED ENDANGERED ANIMAL HABITAT \n\n \n
sample _____")},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, transparent plastic bag.")},objs.EvidenceBag.use=function(){displayMessageP("To use an evidence bag, type take sample of _____")},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 Inspector. 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 take fingerprints from _____")},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 magnifier. 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: examine ____ with magnifying glass")},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 first need to take a sample of an item (blood, fabric, etc.). \n Then, analyze the sample with a command like: analyze paint sample")},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 Sample from: garden shears Location: "+room[here].name+" Time: "+getClockTime()+" "+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.",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.in="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.examine=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 GenericObject("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="StorageCloset2",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.Dropcloth.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="";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 bed."):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 GenericObject{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' dresser"),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"),objs.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=" SHERLOCK 2000 FORENSIC ANALYZER MATERIAL ANALYSIS",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("SecurityDeskTable","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 \n Cornville Weekly News\nSUNDAY, MAY 25 1980 | VERITAS IN ZORKUM | $1.25 \nRESORT LAND NOW DESIGNATED ENDANGERED ANIMAL HABITAT \n \n
EMERGENCY STOP\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=" Do not expand the park. If you do, people will die.",objs.ThreatNote.examineWithMagnifyingGlass=function(e,o,s,a){magnifyThisDoc("threat")},objs.Path=new GenericObject("path","Path"),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.flowerTaken)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){displayMessage("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: This way to Joyville",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 swab 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=" SHERLOCK 2000 FORENSIC ANALYZER MATERIAL ANALYSIS",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 and 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=" SHERLOCK 2000 FORENSIC ANALYZER MATERIAL ANALYSIS",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=" SHERLOCK 2000 FORENSIC ANALYZER MATERIAL ANALYSIS",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 GenericObject("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=" \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\neyeing the pile he was 'bout to disturb.\n",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=" 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.",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(" MY VOW \n by Inspector Richard Stern\n\nIt started with a death in Happyland,\nthat a few suspected must have been planned."),(state.findCashOnCooper||state.cooperGivesPlayerCash)&&displayMessage(" The prime suspect killed with much cash on hand,\nthinking he was protecting anim'l land."),displayMessageP(" My police smarts give me the upper hand\nto find a suspect for the witness stand.")},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 miscellaneous 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.FumigationSign.synonyms=["fumigation warning","sign","warning","fumigation sign"],objs.FumigationSign.in="Hall31",objs.FumigationSign.nodesc=!0,objs.FumigationSign.readable=!0,objs.FumigationSign.text="\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 GenericObject("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 pavement.")},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 sink 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"],objs.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 currently 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 tells 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","Hall31","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.DisplayCabinet.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.BallroomDoorway.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 channel 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 where 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":state.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.typewriter.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.")):(displayMessage("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 |