leisuresuitlarry/RM0.CG

2301 lines
32 KiB
Plaintext

[logics for room 0 -- executed before room logics
[ "Leisure Suit Larry in the Land of the Lounge Lizards"
[ by Al Lowe
%include "rm0.msg"
%include "gamedefs.h"
%include "iv_views.h"
%include "contrlrs.h"
%include "colors.h"
if (errorNumber)
{
Call( lgcError);
}
if (restoreInProgress)
{
Set( enableMenu);
DisableItem( cDummy);
}
if (!currentRoom)
{
[ Set( debugging); [ REMOVE LATER
if (!restartInProgress)
{
ScriptSize( 144);
SetMenu( 60); [ "Sierra"
SetMenuItem( 61, cAbout); [ "About"
SetMenuItem( 62, cHelp); [ "Help"
SetMenuItem( 63, cDummy); [ "--------
SetMenuItem( 64, cCalculator); [ "Calculator"
SetMenuItem( 65, cPuzzle); [ "Puzzle
SetMenu( 66); [ "File
SetMenuItem( 67, cSave); [ "Save"
SetMenuItem( 68, cRestore); [ "Restore"
SetMenuItem( 69, cDummy); [ "--------
SetMenuItem( 70, cRestart); [ "Restart"
SetMenuItem( 69, cDummy); [ "--------
SetMenuItem( 71, cQuit); [ "Quit"
SetMenu( 72); [ "Action
SetMenuItem( 73, cStatus); [ "Inventory"
SetMenuItem( 74, cShowObj); [ "Look at Object
SetMenuItem( 75, cBodilyFunction); [ "Bodily
SetMenu( 76); [ "Special
SetMenuItem( 77, cSoundToggle); [ "Sound"
if (machineType == PC &&
monitorType != MONO &&
monitorType != EGA)
{
SetMenuItem( 78, cToggleMonitor); [ "RGB Monitor
}
if (machineType == ST)
{
SetMenuItem( 97, cInitJoy); [ "Joystick/Mouse"
}
else {
SetMenuItem( 79, cInitJoy); [ "Joystick"
}
SetMenuItem( 80, cClock); [ "Clock
SetMenuItem( 96, cBoss); [ "Boss Key
SetMenuItem( 81, cPause); [ "Pause"
if (machineType != AMIGA)
{
SetMenu( 82); [ "Speed
SetMenuItem( 83, cSpeedNormal); [ "Normal
SetMenuItem( 84, cSpeedSlow); [ "Slow
SetMenuItem( 85, cSpeedFast); [ "Fast
SetMenuItem( 86, cSpeedFastest); [ "Fastest
SetMenuItem( 69, cDummy); [ "--------
SetMenuItem( 87, cSpeed); [ "Slower
}
[ if (debugging)
[ {
[ SetMenu( 88); [ "Debug
[ SetMenuItem( 89, cShowEgo); [ "Ego Info
[ SetMenuItem( 90, cShowPriority); [ "Priority Screen
[ SetMenuItem( 91, cShowMem); [ "Memory Usage
[ SetMenuItem( 92, cObjInfo); [ "Obj info
[ SetMenuItem( 93, cXY); [ "X/Y Display
[ SetMenuItem( 94, cGimme); [ "Get All Objects
[ SetMenuItem( 95, cInvNumbers); [ "Object Numbers
[ }
SubmitMenu();
}
Call( lgcStartup);
if (testRoom)
{
NewRoomV( testRoom);
}
if (restartInProgress)
{
NewRoom( rmRestart);
}
NewRoom( rmTitle);
}
if (clockOn &&
(updateClock || initLog))
{
Reset( updateClock);
SetTextAttribute( 0, 15);
Display( 0, 20, 30);
SetTextAttribute( TEXT_COLOR, BG_COLOR);
}
if (initLog)
{
Call( lgcRm0InitLog); [ call and toss initLog Resets
if (debugging)
{
LoadLogics( lgcDebug);
LoadLogics( lgcTrace);
Set( enableTrace);
}
LoadViewV( currentEgoView);
SetViewV( ego, currentEgoView);
CallV( currentRoom);
[ DO NOT Return(); here.
} [ end initLogs
[*****
[ FIRST, A LITTLE HOUSEKEEPING
[*****
GetPosn( ego, egoX, egoY);
CurrentView( ego, currentEgoView);
Reset( nearPerson);
if (ignoreSpecial)
{
Reset( hitSpecial);
}
if (ignoreWater)
{
Reset( onWater);
}
if (preventNewRoom)
{
edgeEgoHit = 0;
}
[*****
[ CONTROLLER STUFF
[*****
if (Controller( cMenu)) {MenuInput();}
if (Controller( cSkipTest)) {Set( passedTest);}
if (Controller( cToggleMonitor)) {ToggleMonitor();}
if (Controller( cInitJoy)) {InitJoy();}
if (Controller( cSoundToggle))
{
Toggle( soundOn);
Set( updateClock);
}
if (machineType == TANDY)
{
if (attenuation < 15 &&
Controller( cDecrescendo)) {++attenuation;}
if (Controller( cCrescendo)) {--attenuation;}
}
if (passedTest)
{
if (Controller( cEchoLine)) {EchoLine();}
if (Controller( cCancelLine)) {CancelLine();}
if ((Said( pause) ||
controller( cPause)))
{
Pause();
}
if (passedTest &&
(Said( restart) ||
Said( restart, game) ||
Said( start, over) ||
Controller( cRestart)))
{
RestartGame();
}
if (passedTest &&
(Said( restore, game) ||
Said( restore) ||
Controller( cRestore)))
{
RestoreGame();
}
if (Controller( cVersion))
{
Print( 11);
Version();
}
if ((Said( quit) ||
Controller( cQuit)))
{
StopSound();
if (debugging)
{
Quit( 1);
}
else
{
Quit( 0);
}
}
if ((Said( status) ||
Said( inventory) ||
Controller( cStatus)))
{
Status();
}
if (Controller( cClock))
{
Toggle( clockOn);
if (clockOn)
{
Set( updateClock);
}
else
{
StatusLineOff();
StatusLineOn();
}
}
if (Controller( cDebug))
{
Toggle( debugging);
if (!debugging)
{
Reset( enableTrace);
}
else
{
LoadLogics( lgcDebug);
LoadLogics( lgcTrace);
Set( enableTrace);
Print( 11);
Version();
AcceptInput();
NormalMotion( ego);
Reset( programControl);
}
}
if (Controller( cHelp))
{
if (handsOff)
{
Print( 105);
}
else
{
Call( lgcHelp);
}
}
}
if (Controller( cShowObj))
{
Set( enableObjectSelect);
Status();
if (selectedObject != ERROR)
{
work = selectedObject;
work += 100;
ShowObjV( work);
}
Reset( enableObjectSelect);
}
if (Controller( cAbout))
{
if (gameHours)
{
Print( 18);
}
else
{
Print( 19);
}
}
Reset( myHaveMatch); [ speed stuff
if (Controller( cSpeed))
{
Set( myHaveMatch);
++animationInterval;
if (animationInterval > SLOW_SPEED)
{
animationInterval = FASTEST_SPEED;
}
}
if ((Controller( cSpeedSlow) ||
Said( slow)))
{
Set( myHaveMatch);
animationInterval = SLOW_SPEED;
}
if ((Controller( cSpeedNormal) ||
Said( normal)))
{
Set( myHaveMatch);
animationInterval = NORMAL_SPEED;
}
if ((Controller( cSpeedFast) ||
Said( fast)))
{
Set( myHaveMatch);
animationInterval = FAST_SPEED;
}
if ((Controller( cSpeedFastest) ||
Said( fastest)))
{
Set( myHaveMatch);
animationInterval = FASTEST_SPEED;
}
if (myHaveMatch)
{
Reset( myHaveMatch);
if (monitorType != MONO)
{
message = 32;
message += animationInterval;
ClearTextRect( 24, 0, 24, 15, BG_COLOR);
y = 24;
x = 0;
DisplayV( y, x, message);
clearStatusSeconds = 6;
}
}
[*****
[ DEAD EGO
[*****
if (certainDeath)
{
Reset( certainDeath);
Set( handsOff);
currentStatus = DEAD;
LoadSound( mWhoops);
StopMotion( ego);
StopCycling( ego);
ProgramControl(); [ keepCycling won't work here
AcceptInput();
deathTimer = CYCLES_BEFORE_DEATH;
DisableItem( cSave);
DisableItem( cBodilyFunction);
DisableItem( cBoss);
DisableItem( cCalculator);
DisableItem( cPuzzle);
DisableItem( cHelp);
}
if (currentStatus == DEAD)
{
--deathTimer;
if (deathTimer == 1)
{
StopSound();
Sound( mWhoops,done);
Print( 13);
}
if (haveInput && !haveMatch)
{
Print( 14);
}
if (currentRoom == rmBoss)
{
CallV( currentRoom);
}
if (debugging)
{
Call( lgcDebug);
}
Return();
}
if ((Said( save) ||
Said( save, game) ||
requestedASaveGame ||
Controller( cSave)))
{
if (preventSaveGame)
{
if (!requestedASaveGame)
{
Set( requestedASaveGame);
Print( 109);
}
}
else
{
Reset( requestedASaveGame);
SaveGame();
}
}
if (Controller( cBoss))
{
if (handsOff)
{
Print( 105);
}
else
{
NewRoom( rmBoss);
}
}
if (Controller( cBodilyFunction))
{
if (handsOff)
{
Print( 105);
}
else
{
CancelLine();
PreventInput();
SetString( 11, 185); [ a NULL string.
SetString( 12, 185);
GetString( 11, 122, 23, 0, 23); [string#, prompt, row, col, max length
if (CompareStrings( 11, 12))
{
SetString( 11, 125);
}
Print( 123);
SetString( 11, 185);
SetString( 12, 185);
AcceptInput();
}
}
if ((Controller( cPuzzle) ||
Controller( cCalculator)))
{
if (handsOff)
{
Print( 105);
}
else
{
PreventInput();
StatusLineOff();
SetTextAttribute( BLACK, WHITE);
TextScreen();
lastChar = 0;
if (Controller( cPuzzle))
{
Display( 6, 9, 115); [ display puzzle
Display( 7, 9, 116);
Display( 8, 9, 120);
Display( 9, 9, 117);
Display( 10, 9, 120);
Display( 11, 9, 118);
Display( 12, 9, 120);
Display( 13, 9, 119);
Display( 14, 9, 115);
Display( 21, 1, 121);
}
else
{
Display( 8, 19, 110); [ display calc screen
Display( 9, 17, 111);
Display( 10, 17, 112);
Display( 11, 17, 113);
Display( 21, 6, 114);
}
:check.kb.3
if (!HaveKey())
{
goto check.kb.3;
}
AcceptInput();
StatusLineOn();
SetTextAttribute( TEXT_COLOR, BG_COLOR);
Graphics();
Set( haveMatch);
}
}
[*****
[ EGO CYCLING
[*****
if (egoDir == oldEgoDir &&
egoX == oldEgoX &&
egoY == oldEgoY)
{
StopCycling( ego);
}
else
{
StartCycling( ego);
}
if ((!egoDir || noCycling))
{
StopCycling( ego);
}
if (keepCycling)
{
StartCycling( ego);
}
[*****
[ TIMERS
[*****
if (lastChar != oldLastChar)
{
Set( typing);
secondsSinceKeystroke = 0;
oldLastChar = lastChar;
}
if (lastChar == 13)
{
Reset( typing);
}
--scriptCycles;
if (scriptCycles == 1)
{
Set( scriptDone);
}
if (elapsedSeconds != oldSeconds)
{
oldSeconds = elapsedSeconds;
Set( aSecondPassed); [ inform all logics
Set( updateClock);
--clearStatusSeconds;
--spraySeconds;
--breathSpraySeconds;
--scriptTimer;
++secondsInRoom;
++gameSeconds;
if (scriptTimer == 1)
{
Set( scriptDone);
}
if (clearStatusSeconds == 1) [ Can't be, if MONO.
{
ClearTextRect( 24, 0, 24, 15, BG_COLOR);
}
if (currentRoom != rmTitle &&
currentRoom != rmSunrise &&
currentRoom != rmAgeTest)
{
if (gameSeconds == 60)
{
gameSeconds = 0;
++gameMinutes;
if (gameMinutes == 60)
{
gameMinutes = 0;
++gameHours;
[ if (gameHours == 25)
[ {
[ gameHours = 0;
[ ++gameDays;
[ }
++watchHours;
if (watchHours == 13)
{
watchHours = 1;
}
}
}
if (breathSpraySeconds == 1)
{
Reset( handsOff);
Reset( keepCycling);
SetView( ego, vEgo);
StartMotion( ego);
Reset( programControl);
AcceptInput( );
Set( sprayDone);
}
if (sprayMinutes && !spraySeconds)
{
--sprayMinutes;
spraySeconds = 60;
}
if (spraySeconds == 1 && !sprayMinutes)
{
Reset( mouthOK);
Set( mouthSmellsBad);
PrintV( mouthMessage);
++mouthMessage;
if (mouthMessage > 160)
{
mouthMessage = 157;
}
}
}
if (typing)
{
++secondsSinceKeystroke;
if (secondsSinceKeystroke > 1)
{
Reset( typing);
}
}
} [ end of "aSecondPassed"
[****************************************************************************]
[******************** PREPARE TO CALL LOCAL ROOMS **********************]
[****************************************************************************]
if (!initLog)
{
CallV( currentRoom);
}
if (debugging)
{
Call( lgcDebug);
}
[****************************************************************************]
[******************** AFTER CALLING LOCAL ROOMS **********************]
[****************************************************************************]
[*****
[ NO INPUT
[*****
if (OK)
{
Reset( OK);
Print( 57);
}
if (notCloseEnough)
{
Reset( notCloseEnough);
Print( 55);
}
if (alreadyGotIt)
{
Reset( alreadyGotIt);
Print( 56);
}
if (dontHaveIt)
{
Reset( dontHaveIt);
Print( 16);
}
if (sprayDone)
{
Reset( sprayDone);
Print( 102);
++sprayCount;
if (sprayCount > 9)
{
Print( 170);
Drop( iBreathSpray);
}
if (nearPerson)
{
Print( 168);
}
}
if (nearPerson && !mouthOK && mouthSmellsBad)
{
Reset( mouthSmellsBad);
Print( 145);
}
if (nearPerson && smellsLikeDogPiss)
{
Reset( smellsLikeDogPiss);
Print( 108);
}
if (nearPerson && toiletPaperOnShoe)
{
Reset( toiletPaperOnShoe)
Print( 107);
Print( 128);
}
if (!dollars && !preventSaveGame && !betInProgress)
{
Print( 129);
Print( 130);
Erase( ego);
Set( certainDeath);
}
if (demo && HaveKey())
{
Reset( demo);
NewRoom( rmAgeTest);
}
[*****
[ HANDLE PREVIOUSLY UNHANDLED INPUT
[*****
if ((haveMatch ||
!haveInput ||
currentStatus == SLEEPING ||
currentStatus == DEAD))
{
goto exit;
}
[ if (!unknownWord && debugging)
[ {
[ Log( 21);
[ }
if (Said( thanks, rol))
{
Print( 28);
}
if ((Said( bye, rol) ||
Said( anyword, bye, rol)))
{
Print( 31);
}
if (Said( hi, rol))
{
Print( 26);
}
if (Said( laugh))
{
Print( 174);
}
if ((Said( lie, rol) ||
Said( rest, rol)))
{
Print( 175);
}
[*****
[ HANDLE INVENTORY THINGS
[*****
if ((Said( look, money) ||
Said( count, dollars)))
{
Print( 15);
}
if ((Said( drop, wallet, rol) ||
Said( drop, my, wallet, rol)))
{
Print( 25);
}
if (Said( use, wallet, rol))
{
Print( 51);
}
if ((Said( open, wallet) ||
Said( look$in, wallet) ||
Said( show, wallet)))
{
ShowObj( ivWallet);
}
if ((Said( give, wallet, anyword) ||
Said( give, wallet) ||
Said( give, anyword, wallet)))
{
if (!nearPerson)
{
Print( 45);
}
else
{
Print( 178);
Print( 179);
Drop( iWallet);
dollars = 0;
}
}
if (Said( drop, spray, rol))
{
Print( 25);
}
if (Said( show, spray, rol))
{
ShowObj( ivBreathSpray);
}
if ((Said( give, spray, anyword) ||
Said( give, spray) ||
Said( give, anyword, spray)))
{
if ((!nearPerson || !Has( iBreathSpray)))
{
Print( 45);
}
else
{
Print( 183);
Print( 184);
}
}
if ((Said( spray, spray) ||
Said( spray, spray, mouth) ||
Said( spray, mouth) ||
Said( spray, breath) ||
Said( use, spray)))
{
if (!Has( iBreathSpray))
{
Print( 171);
}
else
{
sprayMinutes = SPRAY_INIT_MINUTES;
Set( mouthOK);
Print( 101);
if ((handsOff || currentEgoView != NORMAL))
{
Set( sprayDone);
}
else
{
LoadView( vEgoBreathSpray);
SetView( ego, vEgoBreathSpray);
ForceUpdate( ego);
breathSpraySeconds = 5;
Set( handsOff);
Set( keepCycling);
StopMotion( ego);
Set( programControl);
PreventInput();
}
}
}
if (Said( drop, lint, rol))
{
Print( 25);
}
if (Said( use, lint, rol))
{
Print( 132);
}
if (Said( show, lint))
{
ShowObj( ivPocketLint);
}
if ((Said( give, lint, anyword) ||
Said( give, lint) ||
Said( give, anyword, lint)))
{
if (!nearPerson)
{
Print( 45);
}
else
{
Print( 183);
Print( 184);
}
}
if (Said( drop, watch, rol))
{
Print( 25);
}
if (Said( use, watch, rol))
{
Print( 51);
}
if (Said( show, watch))
{
ShowObj( ivWatch);
}
if (Said( set, watch))
{
Print( 17);
}
if ((Said( give, watch, anyword) ||
Said( give, watch) ||
Said( give, anyword, watch)))
{
if (!nearPerson)
{
Print( 45);
}
else
{
Print( 183);
Print( 184);
}
}
if (Said( drop, apple, rol))
{
if (Has( iApple))
{
Print( 25);
}
else
{
Set( dontHaveIt);
}
}
if (Said( use, apple, rol))
{
if (Has( iApple))
{
Print( 51);
}
else
{
Set( dontHaveIt);
}
}
if ((Said( take, bite, apple, rol) ||
Said( eat, apple, rol)))
{
if (Has( iApple))
{
Print( 153);
Drop( iApple);
}
else
{
Set( dontHaveIt);
}
}
if (Said( show, apple))
{
if (Has( iApple))
{
ShowObj( ivApple);
}
else
{
Set( dontHaveIt);
}
}
if ((Said( give, apple, anyword) ||
Said( give, apple) ||
Said( give, anyword, apple)))
{
if ((!nearPerson || !Has( iApple)))
{
Print( 45);
}
else
{
Print( 178);
Print( 179);
Drop( iApple);
}
}
if (Said( drop, ring, rol))
{
if (Has( iRing))
{
Print( 25);
}
else
{
Set( dontHaveIt);
}
}
if (Said( use, ring, rol))
{
if (Has( iRing))
{
Print( 51);
}
else
{
Set( dontHaveIt);
}
}
if ((Said( put, ring, me) ||
Said( put, ring, on, me) ||
Said( put, ring, finger) ||
Said( put, ring, on, finger) ||
Said( wear, ring, rol)))
{
if (Has( iRing))
{
Print( 57);
Print( 140);
Print( 141);
}
else
{
Set( dontHaveIt);
}
}
if (Said( show, ring))
{
if (Has( iRing))
{
ShowObj( ivRing);
}
else
{
Set( dontHaveIt);
}
}
if ((Said( give, ring, anyword) ||
Said( give, ring) ||
Said( give, anyword, ring)))
{
if ((!nearPerson || !Has( iRing)))
{
Print( 45);
}
else
{
Print( 178);
Print( 179);
Drop( iRing);
}
}
if (Said( drop, whiskey, rol))
{
if (Has( iWhiskey))
{
Print( 25);
}
else
{
Set( dontHaveIt);
}
}
if (Said( use, whiskey, rol))
{
if (Has( iWhiskey))
{
Print( 51);
}
else
{
Set( dontHaveIt);
}
}
if (Said( drink, whiskey))
{
if (Has( iWhiskey))
{
Drop( iWhiskey);
sprayMinutes = 0;
spraySeconds = 4;
Print( 9);
Print( 142);
}
else
{
Set( dontHaveIt);
}
}
if (Said( show, whiskey))
{
if (Has( iWhiskey))
{
ShowObj( ivWhiskey);
}
else
{
Set( dontHaveIt);
}
}
if ((Said( give, whiskey, anyword) ||
Said( give, whiskey) ||
Said( give, anyword, whiskey)))
{
if ((!nearPerson || !Has( iWhiskey)))
{
Print( 45);
}
else
{
Print( 178);
Print( 179);
Drop( iWhiskey);
}
}
if (Said( drop, remote, rol))
{
if (Has( iRemoteControl))
{
Print( 25);
}
else
{
Set( dontHaveIt);
}
}
if ((Said( use, remote, rol) ||
Said( press, button, remote, rol) ||
Said( press, button, on, remote, rol) ||
Said( press, remote, rol)))
{
if (Has( iRemoteControl))
{
Print( 138);
Print( 139);
}
else
{
Set( dontHaveIt);
}
}
if (Said( show, remote))
{
if (Has( iRemoteControl))
{
ShowObj( ivRemoteControl);
}
else
{
Set( dontHaveIt);
}
}
if ((Said( give, remote, anyword) ||
Said( give, remote) ||
Said( give, anyword, remote)))
{
if ((!nearPerson || !Has( iRemoteControl)))
{
Print( 45);
}
else
{
Print( 178);
Print( 179);
Drop( iRemoteControl);
}
}
if (Said( drop, rose, rol))
{
if (Has( iRose))
{
Print( 25);
}
else
{
Set( dontHaveIt);
}
}
if (Said( use, rose, rol))
{
if (Has( iRose))
{
Print( 51);
}
else
{
Set( dontHaveIt);
}
}
if (Said( smell, rose, rol))
{
if (Has( iRose))
{
Print( 143);
}
else
{
Set( dontHaveIt);
}
}
if (Said( show, rose))
{
if (Has( iRose))
{
ShowObj( ivRose);
}
else
{
Set( dontHaveIt);
}
}
if ((Said( give, rose, anyword) ||
Said( give, rose) ||
Said( give, anyword, rose)))
{
if ((!nearPerson || !Has( iRose)))
{
Print( 45);
}
else
{
Print( 178);
Print( 179);
Drop( iRose);
}
}
if (Said( drop, rubber, rol))
{
if ((Has( iUsedRubber) || Has( iRubber)))
{
Print( 25);
}
else
{
Set( dontHaveIt);
}
}
if ((Said( use, rubber, rol) ||
Said( use, used, rubber, rol) ||
Said( wear, used, rubber, rol) ||
Said( wear, rubber, rol)))
{
if ((Has( iUsedRubber) || Has( iRubber)))
{
Print( 105);
}
else
{
Set( dontHaveIt);
}
}
if (wearingRubber &&
(Said( remove, rubber, rol) ||
Said( remove, used, rubber, rol) ||
Said( take, used, rubber, off, rol) ||
Said( take, rubber, off, rol)))
{
Reset( wearingRubber);
Drop( iUsedRubber);
currentScore += 1;
Print( 127);
}
if ((Said( show, used, rubber) ||
Said( show, rubber)))
{
if (Has( iRubber))
{
ShowObj( ivRubber);
}
else
{
if (Has( iUsedRubber))
{
ShowObj( ivUsedRubber);
}
else
{
Set( dontHaveIt);
}
}
}
if ((Said( give, used, rubber, anyword) ||
Said( give, used, rubber) ||
Said( give, anyword, used, rubber)))
{
if ((!nearPerson || !Has( iUsedRubber)))
{
Print( 45);
}
else
{
Print( 183);
Print( 184);
}
}
if ((Said( give, rubber, anyword) ||
Said( give, rubber) ||
Said( give, anyword, rubber)))
{
if ((!nearPerson || !Has( iRubber)))
{
Print( 45);
}
else
{
Print( 183);
Print( 184);
}
}
if (Said( drop, candy, rol))
{
if (Has( iCandy))
{
Print( 25);
}
else
{
Set( dontHaveIt);
}
}
if ((Said( use, candy, rol) ||
Said( use, anyword, candy, rol) ||
Said( eat, anyword, candy, rol) ||
Said( eat, candy, rol)))
{
if (Has( iCandy))
{
Print( 162);
Drop( iCandy);
}
else
{
Set( dontHaveIt);
}
}
if (Said( show, candy))
{
if (Has( iCandy))
{
ShowObj( ivCandy);
}
else
{
Set( dontHaveIt);
}
}
if ((Said( give, candy, anyword) ||
Said( give, candy) ||
Said( give, anyword, candy)))
{
if ((!nearPerson || !Has( iCandy)))
{
Print( 45);
}
else
{
Print( 178);
Print( 179);
Drop( iCandy);
}
}
[ Inflatable doll handled entirely in room 45
if (Said( drop, pass, rol))
{
if (Has( iDiscoPass))
{
Print( 25);
}
else
{
Set( dontHaveIt);
}
}
if (Said( use, pass, rol))
{
if (Has( iDiscoPass))
{
Print( 51);
}
else
{
Set( dontHaveIt);
}
}
if ((Said( show, disco, pass) || Said( show, pass)))
{
if (Has( iDiscoPass))
{
ShowObj( ivDiscoPass);
}
else
{
Set( dontHaveIt);
}
}
if ((Said( give, card, anyword) ||
Said( give, card) ||
Said( give, anyword, card)))
{
if ((!nearPerson || !Has( iDiscoPass)))
{
Print( 45);
}
else
{
Print( 178);
Print( 179);
Drop( iDiscoPass);
}
}
if (Said( drop, knife, rol))
{
if (Has( iPocketKnife))
{
Print( 25);
}
else
{
Set( dontHaveIt);
}
}
if (Said( use, knife, rol))
{
if (Has( iPocketKnife))
{
Print( 51);
}
else
{
Set( dontHaveIt);
}
}
if (Said( show, knife))
{
if (Has( iPocketKnife))
{
ShowObj( ivPocketKnife);
}
else
{
Set( dontHaveIt);
}
}
if ((Said( give, knife, anyword) ||
Said( give, knife) ||
Said( give, anyword, knife)))
{
if ((!nearPerson || !Has( iPocketKnife)))
{
Print( 45);
}
else
{
Print( 178);
Print( 179);
Drop( iPocketKnife);
}
}
if (Said( drop, wine, rol))
{
if (Has( iWine))
{
Print( 25);
}
else
{
Set( dontHaveIt);
}
}
if ((Said( drink, wine) ||
Said( use, wine)))
{
if (Has( iWine))
{
Drop( iWine);
sprayMinutes = 0;
spraySeconds = 4;
Print( 106);
}
else
{
Set( dontHaveIt);
}
}
if (Said( show, wine))
{
if (Has( iWine))
{
ShowObj( ivWine);
}
else
{
Set( dontHaveIt);
}
}
if ((Said( give, wine, anyword) ||
Said( give, wine) ||
Said( give, anyword, wine)))
{
if ((!nearPerson || !Has( iWine)))
{
Print( 45);
}
else
{
Print( 178);
Print( 179);
Drop( iWine);
}
}
if (Said( drop, magazine, rol))
{
if (Has( iMagazine))
{
Print( 25);
}
else
{
Set( dontHaveIt);
}
}
if (Said( use, magazine))
{
if (Has( iMagazine))
{
Print( 51);
}
else
{
Set( dontHaveIt);
}
}
if ((Said( open, magazine) ||
Said( show, magazine)))
{
if (Has( iMagazine))
{
Print( 169);
ShowObj( ivMagazine);
if (!readMagazine)
{
Set( readMagazine);
currentScore += 1;
}
}
else
{
Set( dontHaveIt);
}
}
if ((Said( give, magazine, anyword) ||
Said( give, magazine) ||
Said( give, anyword, magazine)))
{
if ((!nearPerson || !Has( iMagazine)))
{
Print( 45);
}
else
{
Print( 178);
Print( 179);
Drop( iMagazine);
}
}
if (Said( drop, hammer, rol))
{
if (Has( iHammer))
{
Print( 25);
}
else
{
Print( 181);
}
}
if (Said( use, hammer))
{
if (Has( iHammer))
{
Print( 51);
}
else
{
Print( 181);
}
}
if (Said( throw, hammer, rol))
{
if (Has( iHammer))
{
Print( 177);
Drop( iHammer);
}
else
{
Print( 181);
}
}
if ((Said( hit, anyword, with, hammer) ||
Said( use, hammer, hit, anyword)))
{
if (Has( iHammer))
{
Print( 176);
}
else
{
Print( 181);
}
}
if (Said( show, hammer))
{
if (Has( iHammer))
{
ShowObj( ivHammer);
}
else
{
Print( 181);
}
}
if ((Said( give, hammer, anyword) ||
Said( give, hammer) ||
Said( give, anyword, hammer)))
{
if ((!nearPerson || !Has( iHammer)))
{
Print( 45);
}
else
{
Print( 178);
Print( 179);
Drop( iHammer);
}
}
if ((Said( tie, rope, hammer) ||
Said( tie, hammer, rope)))
{
if (Has( iHammer) && Has( iRope))
{
Print( 176);
}
if (!Has( iRope))
{
Print( 180);
}
if (!Has( iHammer))
{
Print( 181);
}
}
if (Said( drop, pills, rol))
{
if (Has( iPills))
{
Print( 25);
}
else
{
Set( dontHaveIt);
}
}
if ((Said( use, pills) ||
Said( take, pills) ||
Said( open, pills) ||
Said( eat, pills)))
{
if (Has( iPills))
{
Print( 38);
Print( 27);
Erase( ego);
Set( certainDeath);
}
else
{
Set( dontHaveIt);
}
}
if (Said( show, pills))
{
if (Has( iPills))
{
ShowObj( ivPills);
}
else
{
Set( dontHaveIt);
}
}
if ((Said( give, pills, anyword) ||
Said( give, pills) ||
Said( give, anyword, pills)))
{
if ((!nearPerson || !Has( iPills)))
{
Print( 45);
}
else
{
Print( 178);
Print( 179);
Drop( iPills);
}
}
if (Said( drop, rope, rol))
{
if (Has( iRope))
{
Print( 25);
}
else
{
Print( 180);
}
}
if (Said( throw, rope, rol))
{
if (Has( iRope))
{
Print( 177);
Drop( iRope);
}
else
{
Print( 180);
}
}
if (Said( use, rope, rol))
{
if (Has( iRope))
{
Print( 51);
}
else
{
Print( 180);
}
}
if ((Said( tie, rope, rol) ||
Said( tie, anyword, rope)))
{
if (Has( iRope))
{
Print( 176);
}
else
{
Print( 180);
}
}
if (Said( show, rope))
{
if (Has( iRope))
{
ShowObj( ivRope);
}
else
{
Print( 180);
}
}
if ((Said( give, rope, anyword) ||
Said( give, rope) ||
Said( give, anyword, rope)))
{
if ((!nearPerson || !Has( iRope)))
{
Print( 45);
}
else
{
Print( 178);
Print( 179);
Drop( iRope);
}
}
[*****
[ HANDLE WHATEVER'S LEFT
[*****
if (!haveMatch && haveInput && [ First, discard unknown words.
unknownWord)
{
Set( haveMatch);
PrintV( unknownWord); [ prints messages #1 - 9
}
if ((Said( anyword, credit$card) ||
Said( anyword, credit$card, wallet) ||
Said( anyword, credit$card, from, wallet)))
{
Print( 172);
}
if ((Said( read, notes) ||
Said( read, notes, wallet)))
{
Print( 147);
}
if ((Said( anyword, business$card) ||
Said( anyword, business$card, wallet) ||
Said( anyword, business$card, from, wallet)))
{
Print( 152);
}
if ((Said( anyword, notes) ||
Said( anyword, notes, wallet) ||
Said( anyword, notes, from, wallet)))
{
Print( 148);
}
[ Handle potty-mouths.
if ((Said( fuck$you, rol) ||
Said( anyword, fuck$you, rol)))
{
Print( 133);
}
if ((Said( hump, rol) ||
Said( anyword, hump, rol) ||
Said( anyword, anyword, hump, rol) ||
Said( anyword, anyword, anyword, hump, rol)))
{
Print( 135);
}
if (Said( masturbate, rol))
{
Print( 124);
}
if ((Said( touch, pussy, rol) ||
Said( stroke, pussy, rol) ||
Said( kiss, pussy, rol) ||
Said( lick, pussy, rol) ||
Said( look, pussy, rol)))
{
Print( 173);
}
[ Misc. looks.
if ((Said( look, suit) ||
Said( look$in, suit) ||
Said( search, suit)))
{
Print( 20);
}
if ((Said( look, man) ||
Said( look, girl)))
{
Print( 24);
}
if ((Said( look, wall) ||
Said( look, building)))
{
Print( 149);
}
if ((Said( look, ground) ||
Said( look, down)))
{
Print( 151);
}
if (Said( look, door))
{
Print( 103);
}
if ((Said( look, sky) ||
Said( look, ceiling)))
{
Print( 161);
}
if (Said( look, rol))
{
Random( 42, 44, work);
PrintV( work);
}
if (Said( jump))
{
Print( 163);
}
if (Said( talk))
{
Print( 126);
}
if (Said( talk, rol))
{
Print( 41);
}
if (Said( yell))
{
Print( 167);
}
if ((Said( climb, wall) ||
Said( climb, building)))
{
Print( 150);
}
if (Said( smell, anyword, rol))
{
Print( 131);
}
if (Said( take, anyword, rol))
{
Random( 46, 48, work);
PrintV( work);
}
if (Said( go, anyword, rol))
{
Print( 49);
}
if (Said( use, anyword, rol))
{
Print( 54);
}
if (Said( get, anyword, rol))
{
Print( 23);
}
if (Said( lick, girl, rol))
{
Print( 59);
}
if (Said( eat, anyword, rol))
{
Print( 37);
}
if (Said( kiss, anyword, rol))
{
Print( 39);
}
if (Said( laugh, anyword, rol))
{
Print( 165);
}
if ((Said( kill, anyword, rol) ||
Said( hit, anyword, rol)))
{
Print( 50);
}
if ((Said( look$in, man, rol) ||
Said( look$in, person, rol) ||
Said( look$in, woman, rol) ||
Said( look$in, clothes, rol) ||
Said( search, clothes, rol) ||
Said( search, man, rol) ||
Said( search, person, rol) ||
Said( search, woman, rol)))
{
if (!nearPerson)
{
Set( notCloseEnough);
}
else
{
Print( 155);
}
}
if (Said( search, rol))
{
Print( 166);
}
if (Said( drop, anyword, rol))
{
Print( 156);
}
if ((Said( unlock, door, rol) ||
Said( use, key, rol)))
{
Print( 144);
}
if ((Said( knock, door) ||
Said( knock, on, door)))
{
Print( 164);
}
if ((Said( help, man, rol) ||
Said( help, woman, rol) ||
Said( help, person, rol)))
{
Print( 154);
}
if (Said( help, rol))
{
Print( 40);
}
if ((Said( crack, rol) ||
Said( crap, rol) ||
Said( pee, rol) ||
Said( lay, rol) ||
Said( cut$one, rol) ||
Said( asshole, rol) ||
Said( boob, rol) ||
Said( butt, rol) ||
Said( cunnilingus, rol) ||
Said( suck$me, rol)))
{
Print( 136);
}
if ((Said( anyword, crack, rol) ||
Said( anyword, crap, rol) ||
Said( anyword, pee, rol) ||
Said( anyword, lay, rol) ||
Said( anyword, cut$one, rol) ||
Said( anyword, asshole, rol) ||
Said( anyword, boob, rol) ||
Said( anyword, butt, rol) ||
Said( anyword, cunnilingus, rol) ||
Said( anyword, suck$me, rol)))
{
Print( 137);
}
if ((Said( anyword, lady) ||
Said( anyword, anyword, lady) ||
Said( anyword, lady, anyword)))
{
Print( 104);
}
if (Said( sierra, rol))
{
Print( 186);
}
if (!haveMatch && haveInput)
{
Print( 45);
[ if (debugging)
[ {
[ Log( 146);
[ }
}
[*****
:exit
[*****
GetPosn( ego, oldEgoX, oldEgoY); [ Clean up, fix up for next pass.
oldEgoDir = egoDir;
Reset( aSecondPassed);
++passInRoom;
if (oldCurrentScore != currentScore)
{
oldCurrentScore = currentScore;
Set( updateClock);
}
if (programControl)
{
ProgramControl();
}
else
{
PlayerControl();
}
if (newRoom)
{
if (handsOff)
{
newRoom = 0;
}
else
{
oldEdgeEgoHit = edgeEgoHit;
Reset( noScript);
NewRoomV( newRoom);
}
}