1414 lines
23 KiB
Plaintext
1414 lines
23 KiB
Plaintext
[logics for room 42 -- rmSecurityDesk
|
|
[ "Leisure Suit Larry in the Land of the Lounge Lizards"
|
|
[ by Al Lowe
|
|
|
|
%include "rm42.msg"
|
|
%include "gamedefs.h"
|
|
|
|
|
|
|
|
[ Must give Faith at the security desk the spanish fly pills to enter the
|
|
[elevator to get to the penthouse above.
|
|
|
|
[ Must "look faith" before talking to her. Shows the picFaithCloseup.
|
|
|
|
|
|
|
|
%define L_EYES 1
|
|
%define L_MOUTH 0
|
|
#define C_NORMAL 0 [ mouth cells
|
|
#define C_SMILE 1
|
|
#define C_FROWN 2
|
|
#define DONE 255
|
|
|
|
%define L_SITTING 0
|
|
%define L_LEAVING 1
|
|
%define L_WALKING 2
|
|
|
|
|
|
%define nearDesk lf0
|
|
%define nearEmployee'sExit lf1
|
|
%define pentDoorsOpen lf2
|
|
%define doorDone lf3
|
|
%define inElevator lf4
|
|
%define elevatorMoving lf5
|
|
%define lookingAtFaith lf6
|
|
%define eyesCycling lf7
|
|
%define nearPentElevator lf8
|
|
%define inPentElevator lf9
|
|
%define wasInPentElevator lf10
|
|
%define cutToLongShot lf11
|
|
%define cutToCloseup lf12
|
|
|
|
|
|
%define eyeCycles lv0
|
|
%define breathLineTimer lv1
|
|
%define lookCount lv4
|
|
%define talkCount lv5
|
|
%define mouthTimer lv6
|
|
%define mouth lv7
|
|
|
|
|
|
%object aElevator 1
|
|
%object aFaith 2
|
|
%object aDoor 3
|
|
%object aFloor 4
|
|
%object aMouth 5
|
|
%object aEyes 6
|
|
%object aPentElevator 7
|
|
%object aNumber 8
|
|
|
|
|
|
|
|
if (initLog)
|
|
{
|
|
SetHorizon( 1);
|
|
|
|
LoadView( vElevator);
|
|
LoadView( vElevatorDoors);
|
|
LoadView( vElevatorNumbers);
|
|
LoadView( vEgoPushingElevator);
|
|
LoadView( vEgo);
|
|
|
|
if (!faithGone)
|
|
{
|
|
LoadView( vReceptionist);
|
|
LoadView( vReceptionistFace);
|
|
|
|
picture = picFaithCloseup;
|
|
LoadPic( picture);
|
|
}
|
|
|
|
LoadPic( currentRoom);
|
|
DrawPic( currentRoom);
|
|
[ DON'T DiscardPic( currentRoom);
|
|
|
|
|
|
AnimateObj( aPentElevator);
|
|
IgnoreBlocks( aPentElevator);
|
|
IgnoreObjs( aPentElevator);
|
|
SetPriority( aPentElevator, 10);
|
|
SetView( aPentElevator, vElevatorDoors);
|
|
SetCel( aPentElevator, 0);
|
|
Position( aPentElevator, 137, 120);
|
|
Draw( aPentElevator);
|
|
StopUpdate( aPentElevator);
|
|
work = DOOR_CYCLE_TIME;
|
|
CycleTime( aPentElevator, work);
|
|
|
|
|
|
if (!faithGone)
|
|
{
|
|
AnimateObj( aFaith);
|
|
IgnoreHorizon( aFaith);
|
|
IgnoreBlocks( aFaith);
|
|
IgnoreObjs( aFaith);
|
|
SetView( aFaith, vReceptionist);
|
|
SetLoop( aFaith, L_SITTING);
|
|
SetPriority( aFaith, 13);
|
|
StepSize( aFaith, two);
|
|
Position( aFaith, 128, 132);
|
|
Draw( aFaith);
|
|
StopUpdate( aFaith);
|
|
}
|
|
|
|
|
|
AnimateObj( aNumber);
|
|
IgnoreBlocks( aNumber);
|
|
IgnoreObjs( aNumber);
|
|
SetView( aNumber, vElevatorNumbers);
|
|
SetPriority( aNumber, 5);
|
|
Position( aNumber, 73, 100);
|
|
SetCel( aNumber, 8);
|
|
StopCycling( aNumber);
|
|
|
|
AnimateObj( aDoor);
|
|
IgnoreBlocks( aDoor);
|
|
IgnoreObjs( aDoor);
|
|
SetView( aDoor, vElevator);
|
|
SetLoop( aDoor, L_DOORS);
|
|
FixLoop( aDoor);
|
|
SetPriority( aDoor, 4);
|
|
Position( aDoor, 73, 120);
|
|
work = DOOR_CYCLE_TIME;
|
|
CycleTime( aDoor, work);
|
|
|
|
AnimateObj( aFloor);
|
|
IgnoreBlocks( aFloor);
|
|
IgnoreObjs( aFloor);
|
|
SetView( aFloor, vElevator);
|
|
SetLoop( aFloor, L_FLOOR);
|
|
FixLoop( aFloor);
|
|
Position( aFloor, 73, 129);
|
|
SetPriority( aFloor, 5);
|
|
|
|
AnimateObj( aElevator);
|
|
IgnoreBlocks( aElevator);
|
|
IgnoreObjs( aElevator);
|
|
SetView( aElevator, vElevator);
|
|
SetPriority( aElevator, 12);
|
|
FixLoop( aElevator);
|
|
StepSize( aElevator, two);
|
|
|
|
|
|
if (previousRoom == rmElevators)
|
|
{
|
|
Set( elevatorMoving);
|
|
|
|
SetLoop( aElevator, L_WITH_EGO);
|
|
LastCel( aElevator, work);
|
|
SetCelV( aElevator, work);
|
|
StopCycling( aElevator);
|
|
Position( aElevator, 73, 167);
|
|
Draw( aElevator);
|
|
MoveObj( aElevator, 73, 129, 2, scriptDone);
|
|
script = 100;
|
|
|
|
Draw( aDoor);
|
|
StopUpdate( aDoor);
|
|
|
|
Draw( aNumber);
|
|
|
|
SetView( ego, vEgo);
|
|
SetLoop( ego, FACING_FRONT);
|
|
SetPriority( ego, 11);
|
|
egoX = 76;
|
|
egoY = 127;
|
|
PositionV( ego, egoX, egoY);
|
|
[ Don't Draw ego!
|
|
}
|
|
else
|
|
{
|
|
Draw( aFloor);
|
|
StopUpdate( aFloor);
|
|
|
|
SetLoop( aElevator, L_EMPTY);
|
|
SetCel( aElevator, 0);
|
|
Position( aElevator, 73, 129);
|
|
Draw( aElevator);
|
|
StopUpdate( aElevator);
|
|
|
|
StopMotion( ego);
|
|
Set( programControl);
|
|
Set( wasInPentElevator);
|
|
SetLoop( ego, FACING_LEFT);
|
|
IgnoreBlocks( ego);
|
|
egoX = 145;
|
|
egoY = 117;
|
|
PositionV( ego, egoX, egoY);
|
|
Draw( ego);
|
|
|
|
script = 240;
|
|
Set( scriptDone);
|
|
}
|
|
IgnoreObjs( ego);
|
|
|
|
ShowPic( );
|
|
|
|
Return( );
|
|
|
|
} [ end initLOG
|
|
|
|
|
|
|
|
Reset( nearEmployee'sExit);
|
|
if (Posn( ego, 0, 140, 20, 167))
|
|
{
|
|
Set( nearEmployee'sExit);
|
|
}
|
|
|
|
Reset( nearDesk);
|
|
if (Posn( ego, 117, 133, 141, 156))
|
|
{
|
|
Set( nearDesk);
|
|
}
|
|
|
|
if (nearDesk && !faithGone)
|
|
{
|
|
Set( nearPerson);
|
|
}
|
|
|
|
|
|
Reset( inElevator);
|
|
if (Posn( ego, 73, 121, 83, 127))
|
|
{
|
|
Set( inElevator);
|
|
}
|
|
|
|
if (inElevator)
|
|
{
|
|
SetPriority( ego, 11);
|
|
}
|
|
else
|
|
{
|
|
ReleasePriority( ego);
|
|
}
|
|
|
|
Reset( nearPentElevator);
|
|
if (Posn( ego, 126, 112, 150, 127))
|
|
{
|
|
Set( nearPentElevator);
|
|
}
|
|
|
|
Reset( inPentElevator);
|
|
if (Posn( ego, 146, 111, 149, 120))
|
|
{
|
|
Set( inPentElevator);
|
|
Set( wasInPentElevator);
|
|
}
|
|
|
|
if (pentDoorsOpen)
|
|
{
|
|
if (nearPentElevator)
|
|
{
|
|
IgnoreBlocks( ego);
|
|
}
|
|
else
|
|
{
|
|
ObserveBlocks( ego);
|
|
if (wasInPentElevator) [ This closes the doors.
|
|
{
|
|
Reset( wasInPentElevator);
|
|
Set( scriptDone);
|
|
script = 242;
|
|
}
|
|
}
|
|
|
|
if (inPentElevator)
|
|
{
|
|
Set( scriptDone); [ Let's go upstairs.
|
|
script = 250;
|
|
}
|
|
}
|
|
|
|
|
|
[*****
|
|
:handleInput
|
|
[*****
|
|
|
|
if (!haveInput) {goto noInput;}
|
|
|
|
[ First, do the general stuff.
|
|
|
|
[ First, we'll do all the stuff pertaining to the penthouse elevator.
|
|
|
|
if (nearPentElevator &&
|
|
(Said( push, button) ||
|
|
Said( use, elevator) ||
|
|
Said( enter, elevator) ||
|
|
Said( open, elevator)))
|
|
{
|
|
Print( 22);
|
|
}
|
|
|
|
if (faithGone &&
|
|
(Said( look, behind, counter) ||
|
|
Said( look, behind, desk) ||
|
|
Said( look, counter) ||
|
|
Said( look, desk) ||
|
|
Said( look, button)))
|
|
{
|
|
if (!nearDesk)
|
|
{
|
|
Set( notCloseEnough);
|
|
}
|
|
else
|
|
{
|
|
Print( 12);
|
|
}
|
|
}
|
|
|
|
if (Said( look, elevator))
|
|
{
|
|
if (inElevator)
|
|
{
|
|
Print( 9);
|
|
}
|
|
else
|
|
{
|
|
Print( 58);
|
|
}
|
|
}
|
|
|
|
|
|
if ((Said( look, counter) ||
|
|
Said( look, behind, counter) ||
|
|
Said( look, behind, desk) ||
|
|
Said( look, desk)))
|
|
{
|
|
if (!nearDesk)
|
|
{
|
|
Set( notCloseEnough);
|
|
}
|
|
else
|
|
{
|
|
if (!faithGone)
|
|
{
|
|
Print( 11);
|
|
}
|
|
else
|
|
{
|
|
Print( 12);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
if (!inElevator && [ Otherwise, let the elevator code below grab it.
|
|
(Said( press, button) ||
|
|
Said( open, elevator, door) ||
|
|
Said( open, elevator)))
|
|
{
|
|
if (!nearDesk)
|
|
{
|
|
Set( notCloseEnough);
|
|
}
|
|
else
|
|
{
|
|
if (!faithGone)
|
|
{
|
|
Print( 19);
|
|
}
|
|
else
|
|
{
|
|
Print( 21);
|
|
StartUpdate( aPentElevator);
|
|
EndOfLoop( aPentElevator, doorDone);
|
|
Set( pentDoorsOpen);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
[ Ok, Faith, baby, here it comes:
|
|
|
|
|
|
if (!faithGone)
|
|
{
|
|
if (lookingAtFaith)
|
|
{
|
|
if (Said( use, spray, rol))
|
|
{
|
|
Reset( haveMatch);
|
|
mouth = C_SMILE;
|
|
eyeCycles = 3;
|
|
Reset( eyesCycling); [ Start 'em flappin'.
|
|
}
|
|
|
|
if ((Said( stop, looking, faith) ||
|
|
Said( look, away) ||
|
|
Said( look, room) ||
|
|
Said( look, away, from, faith) ||
|
|
Said( leave, rol)))
|
|
{
|
|
Set( cutToLongShot);
|
|
Set( OK);
|
|
}
|
|
}
|
|
|
|
if ((Said( look, faith, rol) ||
|
|
Said( establish$eye$contact, rol) ||
|
|
Said( look$in, faith, rol)))
|
|
{
|
|
if (script)
|
|
{
|
|
Print( 50);
|
|
}
|
|
else
|
|
{
|
|
if (!nearDesk)
|
|
{
|
|
Set( notCloseEnough);
|
|
}
|
|
else
|
|
{
|
|
if (!lookingAtFaith)
|
|
{
|
|
Set( cutToCloseup);
|
|
}
|
|
else
|
|
{
|
|
++lookCount;
|
|
if (lookCount == 1)
|
|
{
|
|
Print( 3);
|
|
}
|
|
|
|
if (lookCount == 2)
|
|
{
|
|
Print( 51);
|
|
}
|
|
|
|
if (lookCount > 2)
|
|
{
|
|
Print( 52);
|
|
mouth = C_SMILE;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
if ((Said( talk, faith, rol) ||
|
|
Said( ask, faith, rol) ||
|
|
Said( say, anyword, faith, rol)))
|
|
{
|
|
if (!nearDesk)
|
|
{
|
|
Set( notCloseEnough);
|
|
}
|
|
else
|
|
{
|
|
if (!lookingAtFaith)
|
|
{
|
|
Print( 35);
|
|
}
|
|
else
|
|
{
|
|
++talkCount;
|
|
if (talkCount == 1)
|
|
{
|
|
Print( 36);
|
|
Print( 37);
|
|
mouth = C_SMILE;
|
|
}
|
|
|
|
if (talkCount == 2)
|
|
{
|
|
Print( 38);
|
|
Print( 39);
|
|
mouth = C_SMILE;
|
|
}
|
|
|
|
if (talkCount == 3)
|
|
{
|
|
Print( 40);
|
|
Print( 41);
|
|
mouth = C_SMILE;
|
|
}
|
|
|
|
if (talkCount == 4)
|
|
{
|
|
Print( 42);
|
|
Print( 43);
|
|
Print( 44);
|
|
mouth = C_NORMAL;
|
|
}
|
|
|
|
if (talkCount == 5)
|
|
{
|
|
Print( 45);
|
|
Print( 46);
|
|
Print( 47);
|
|
mouth = C_SMILE;
|
|
}
|
|
|
|
if (talkCount > 5)
|
|
{
|
|
Print( 56);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
if ((Said( give, faith, pills, rol) ||
|
|
Said( open, pills, rol) ||
|
|
Said( give, pills, faith, rol)))
|
|
{
|
|
if (!Has( iPills))
|
|
{
|
|
Set( dontHaveIt);
|
|
}
|
|
else
|
|
{
|
|
if (!nearDesk)
|
|
{
|
|
Set( notCloseEnough);
|
|
}
|
|
else
|
|
{
|
|
if (!lookingAtFaith)
|
|
{
|
|
Print( 35);
|
|
}
|
|
else
|
|
{
|
|
Set( scriptDone);
|
|
script = 200;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
if ((Said( give, faith, money, rol) ||
|
|
Said( give, money, faith, rol)))
|
|
{
|
|
if (!nearDesk)
|
|
{
|
|
Set( notCloseEnough);
|
|
}
|
|
else
|
|
{
|
|
if (!lookingAtFaith)
|
|
{
|
|
Print( 35);
|
|
}
|
|
else
|
|
{
|
|
Print( 53);
|
|
mouth = C_FROWN;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ((Said( open, door, me) ||
|
|
Said( unlock, door, me)))
|
|
{
|
|
if (!nearDesk)
|
|
{
|
|
Set( notCloseEnough);
|
|
}
|
|
else
|
|
{
|
|
Print( 59);
|
|
}
|
|
}
|
|
|
|
if ((Said( look, guns, rol) ||
|
|
Said( look, girl, boobs) ||
|
|
Said( look, boobs, rol) ||
|
|
Said( look, body) ||
|
|
Said( stare) ||
|
|
Said( stare, boobs) ||
|
|
Said( look, boobs, rol)))
|
|
{
|
|
if (!nearDesk)
|
|
{
|
|
Set( notCloseEnough);
|
|
}
|
|
else
|
|
{
|
|
if (!lookingAtFaith)
|
|
{
|
|
Print( 48);
|
|
}
|
|
else
|
|
{
|
|
Print( 49);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
if ((Said( look, eyes, rol) ||
|
|
Said( look, mouth, rol)))
|
|
{
|
|
if (!nearDesk)
|
|
{
|
|
Set( notCloseEnough);
|
|
}
|
|
else
|
|
{
|
|
if (!lookingAtFaith)
|
|
{
|
|
Print( 48);
|
|
}
|
|
else
|
|
{
|
|
Print( 55);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
[ The rest of these are "close up lines" only good
|
|
[ when "lookingatFaith."
|
|
|
|
if (lookingAtFaith)
|
|
{
|
|
if ((Said( smile) ||
|
|
Said( smile, girl) ||
|
|
Said( hold, hand) ||
|
|
Said( take, her, hand) ||
|
|
Said( touch, girl) ||
|
|
Said( touch, her) ||
|
|
Said( ask, date)))
|
|
{
|
|
Print( 65);
|
|
mouth = C_SMILE;
|
|
}
|
|
|
|
if ((Said( look, eyes) ||
|
|
Said( look$in, eyes) ||
|
|
Said( flirt, with, her) ||
|
|
Said( wink, girl) ||
|
|
Said( give, girl, kiss) ||
|
|
Said( kiss, girl)))
|
|
{
|
|
mouth = C_SMILE;
|
|
}
|
|
|
|
if ((Said( look, her, hair) ||
|
|
Said( look, hair) ||
|
|
Said( stroke, hair) ||
|
|
Said( rub, hair) ||
|
|
Said( rub, her, hair)))
|
|
{
|
|
Print( 66);
|
|
}
|
|
|
|
if ((Said( ask, name) ||
|
|
Said( ask, her, name) ||
|
|
Said( ask, name, girl)))
|
|
{
|
|
Print( 43);
|
|
Print( 44);
|
|
mouth = C_SMILE;
|
|
}
|
|
|
|
if ((Said( larry) ||
|
|
Said( leisure$suit, larry)))
|
|
{
|
|
Print( 67);
|
|
}
|
|
|
|
if ((Said( look, mouth) ||
|
|
Said( look, her, mouth)))
|
|
{
|
|
Print( 68);
|
|
}
|
|
|
|
if ((Said( girl, marry, me) ||
|
|
Said( marry, me) ||
|
|
Said( marry, girl) ||
|
|
Said( ask, girl, get, married) ||
|
|
Said( ask, girl, marry, me) ||
|
|
Said( talk, about, marriage) ||
|
|
Said( put, ring, on, her, finger) ||
|
|
Said( propose, her)))
|
|
{
|
|
Print( 69);
|
|
mouth = C_FROWN;
|
|
}
|
|
|
|
if ((Said( talk, her, love) ||
|
|
Said( love, you) ||
|
|
Said( take, her, hand)))
|
|
{
|
|
Print( 70);
|
|
}
|
|
|
|
if ((Said( touch, faith, rol) ||
|
|
Said( undress, her) ||
|
|
Said( ask, girl, for, sex) ||
|
|
Said( have, sex, with, me) ||
|
|
Said( hump, rol) ||
|
|
Said( make, girl) ||
|
|
Said( anyword, pussy, rol) ||
|
|
Said( lick, her, she, screams) ||
|
|
Said( anyword, tits, rol) ||
|
|
Said( play, with, her, boobs) ||
|
|
Said( grab, tits) ||
|
|
Said( fondle, breasts) ||
|
|
Said( grab, girl) ||
|
|
Said( feel, girl) ||
|
|
Said( lick, girl) ||
|
|
Said( touch, girl, under, table) ||
|
|
Said( feel, under, table) ||
|
|
Said( grab, leg) ||
|
|
Said( touch, leg) ||
|
|
Said( grab, her, leg) ||
|
|
Said( eat, faith, rol) ||
|
|
Said( hump, faith, rol) ||
|
|
Said( kiss, faith, rol) ||
|
|
Said( anyword, guns, rol) ||
|
|
Said( feel, her, rol) ||
|
|
Said( touch, boobs, rol)))
|
|
{
|
|
Print( 8);
|
|
Print( 31);
|
|
mouth = C_FROWN;
|
|
}
|
|
|
|
if (Said( do, you, get, off))
|
|
{
|
|
Print( 64);
|
|
}
|
|
|
|
if ((Said( time, do, you, get, off) ||
|
|
Said( time, do, you, get, off, work) ||
|
|
Said( time, off, work) ||
|
|
Said( time, off) ||
|
|
Said( quit, time)))
|
|
{
|
|
Print( 72);
|
|
}
|
|
|
|
if (Said( come, with, me))
|
|
{
|
|
Print( 71);
|
|
}
|
|
}
|
|
}
|
|
|
|
if ((Said( climb, over, desk) ||
|
|
Said( jump, over, desk)))
|
|
{
|
|
Print( 63);
|
|
}
|
|
|
|
if ((Said( look) ||
|
|
Said( look, room) ||
|
|
Said( look, floor) ||
|
|
Said( look, hotel)))
|
|
{
|
|
if (nearEmployee'sExit && faithGone)
|
|
{
|
|
Print( 10);
|
|
}
|
|
else
|
|
{
|
|
if (nearPentElevator)
|
|
{
|
|
if (!pentDoorsOpen)
|
|
{
|
|
Print( 22);
|
|
}
|
|
else
|
|
{
|
|
Print( 34);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (!nearDesk)
|
|
{
|
|
if (faithGone)
|
|
{
|
|
Print( 15);
|
|
}
|
|
else
|
|
{
|
|
Print( 1);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (!faithGone)
|
|
{
|
|
Print( 11);
|
|
}
|
|
else
|
|
{
|
|
Print( 12);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
if (!faithGone &&
|
|
Said( wave, faith))
|
|
{
|
|
Print( 57);
|
|
}
|
|
|
|
|
|
if ((Said( look, door) ||
|
|
Said( look, elevator)))
|
|
{
|
|
if (nearEmployee'sExit && faithGone)
|
|
{
|
|
Print( 10);
|
|
}
|
|
else
|
|
{
|
|
if (inElevator)
|
|
{
|
|
Print( 9);
|
|
}
|
|
else
|
|
{
|
|
if (!nearPentElevator)
|
|
{
|
|
Print( 24);
|
|
}
|
|
else
|
|
{
|
|
if (!pentDoorsOpen)
|
|
{
|
|
Print( 22);
|
|
}
|
|
else
|
|
{
|
|
Print( 34);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if ((Said( look, down) ||
|
|
Said( spit, down) ||
|
|
Said( spit, over, railing) ||
|
|
Said( look, over, railing) ||
|
|
Said( spit)))
|
|
{
|
|
Print( 26);
|
|
Print( 27);
|
|
Print( 28);
|
|
}
|
|
|
|
if (Said( jump, rol))
|
|
{
|
|
Print( 62);
|
|
}
|
|
|
|
if ((Said( look, plants) ||
|
|
Said( look$in, plants)))
|
|
{
|
|
Print( 25);
|
|
}
|
|
|
|
if ((Said( knock) ||
|
|
Said( knock, on, door) ||
|
|
Said( knock, door)))
|
|
{
|
|
Print( 29);
|
|
Print( 54);
|
|
}
|
|
|
|
if ((Said( use, stairs) ||
|
|
Said( go, down) ||
|
|
Said( go, down, stairs)))
|
|
{
|
|
Print( 10);
|
|
}
|
|
|
|
if ((Said( unlock, door, rol) ||
|
|
Said( use, key, rol)))
|
|
{
|
|
Print( 61);
|
|
}
|
|
|
|
if (Said( open, door))
|
|
{
|
|
Print( 30);
|
|
}
|
|
|
|
if ((Said( open, door, use, rol) ||
|
|
Said( break, door, rol)))
|
|
{
|
|
Print( 60);
|
|
}
|
|
|
|
|
|
|
|
[ Last, handle the elevator stuff.
|
|
|
|
if (elevatorMoving && !haveMatch)
|
|
{
|
|
if ((Said( listen) ||
|
|
Said( sing) ||
|
|
Said( sing, along)))
|
|
{
|
|
Print( 7);
|
|
}
|
|
else
|
|
{
|
|
Set( haveMatch);
|
|
Print( 5);
|
|
}
|
|
}
|
|
|
|
|
|
if (!script && inElevator)
|
|
{
|
|
if ((Said( press, one) ||
|
|
Said( press, button, one) ||
|
|
Said( one)))
|
|
{
|
|
destinationFloor = 1;
|
|
Set( scriptDone);
|
|
}
|
|
|
|
if ((Said( press, two) ||
|
|
Said( press, button, two) ||
|
|
Said( two)))
|
|
{
|
|
destinationFloor = 2;
|
|
Set( scriptDone);
|
|
}
|
|
|
|
if ((Said( press, three) ||
|
|
Said( press, button, three) ||
|
|
Said( three)))
|
|
{
|
|
destinationFloor = 3;
|
|
Set( scriptDone);
|
|
}
|
|
|
|
if ((Said( press, four) ||
|
|
Said( press, button, four) ||
|
|
Said( four)))
|
|
{
|
|
destinationFloor = 4;
|
|
Set( scriptDone);
|
|
}
|
|
|
|
if ((Said( press, five) ||
|
|
Said( press, button, five) ||
|
|
Said( five)))
|
|
{
|
|
destinationFloor = 5;
|
|
Set( scriptDone);
|
|
}
|
|
|
|
if ((Said( press, six) ||
|
|
Said( press, button, six) ||
|
|
Said( six)))
|
|
{
|
|
destinationFloor = 6;
|
|
Set( scriptDone);
|
|
}
|
|
|
|
if ((Said( press, seven) ||
|
|
Said( press, button, seven) ||
|
|
Said( seven)))
|
|
{
|
|
destinationFloor = 7;
|
|
Set( scriptDone);
|
|
}
|
|
|
|
if ((Said( press, eight) ||
|
|
Said( press, button, eight) ||
|
|
Said( eight)))
|
|
{
|
|
destinationFloor = 8;
|
|
Set( scriptDone);
|
|
}
|
|
|
|
if ((Said( push, rol) ||
|
|
Said( push, button, rol)))
|
|
{
|
|
Print( 23);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
[*****
|
|
:noInput
|
|
[*****
|
|
|
|
if (cutToCloseup)
|
|
{
|
|
Reset( cutToCloseup);
|
|
Set( lookingAtFaith);
|
|
Set( handsOff);
|
|
|
|
UnanimateAll();
|
|
DrawPic( picture);
|
|
|
|
AnimateObj( aMouth);
|
|
SetView( aMouth, vReceptionistFace);
|
|
SetLoop( aMouth, L_MOUTH);
|
|
SetCel( aMouth, 0);
|
|
SetPriority( aMouth, 4);
|
|
Position( aMouth, 49, 77);
|
|
StopCycling( aMouth);
|
|
|
|
AnimateObj( aEyes);
|
|
SetView( aEyes, vReceptionistFace);
|
|
SetLoop( aEyes, L_EYES);
|
|
SetCel( aEyes, 0);
|
|
SetPriority( aEyes, 5);
|
|
Position( aEyes, 48, 45);
|
|
CycleTime( aEyes, three);
|
|
StopCycling( aEyes);
|
|
|
|
if (!mouthOK)
|
|
{
|
|
SetCel( aMouth, C_FROWN);
|
|
breathLineTimer = 6;
|
|
}
|
|
else
|
|
{
|
|
SetCel( aMouth, C_NORMAL);
|
|
Draw( aEyes);
|
|
Random( 6, 19, eyeCycles);
|
|
Reset( eyesCycling);
|
|
}
|
|
Draw( aMouth);
|
|
mouth = DONE;
|
|
StopUpdate( aMouth);
|
|
ShowPic();
|
|
}
|
|
|
|
if (cutToLongShot)
|
|
{
|
|
Reset( cutToLongShot);
|
|
Reset( lookingAtFaith);
|
|
Reset( handsOff);
|
|
|
|
eyeCycles = 0;
|
|
breathLineTimer = 0;
|
|
|
|
UnanimateAll();
|
|
DrawPic( currentRoom);
|
|
|
|
AnimateObj( ego);
|
|
Draw( ego);
|
|
|
|
AnimateObj( aFaith);
|
|
IgnoreHorizon( aFaith);
|
|
IgnoreBlocks( aFaith);
|
|
IgnoreObjs( aFaith);
|
|
SetPriority( aFaith, 13);
|
|
StepSize( aFaith, two);
|
|
Draw( aFaith);
|
|
StopUpdate( aFaith);
|
|
|
|
AnimateObj( aPentElevator);
|
|
IgnoreBlocks( aPentElevator);
|
|
IgnoreObjs( aPentElevator);
|
|
SetPriority( aPentElevator, 10);
|
|
Draw( aPentElevator);
|
|
work = DOOR_CYCLE_TIME;
|
|
CycleTime( aPentElevator, work);
|
|
StopUpdate( aPentElevator);
|
|
|
|
AnimateObj( aNumber);
|
|
IgnoreBlocks( aNumber);
|
|
IgnoreObjs( aNumber);
|
|
SetPriority( aNumber, 5);
|
|
StopCycling( aNumber);
|
|
|
|
AnimateObj( aElevator);
|
|
IgnoreBlocks( aElevator);
|
|
IgnoreObjs( aElevator);
|
|
SetPriority( aElevator, 12);
|
|
FixLoop( aElevator);
|
|
StepSize( aElevator, two);
|
|
Draw( aElevator);
|
|
StopUpdate( aElevator);
|
|
|
|
AnimateObj( aDoor);
|
|
IgnoreBlocks( aDoor);
|
|
IgnoreObjs( aDoor);
|
|
FixLoop( aDoor);
|
|
SetPriority( aDoor, 4);
|
|
work = DOOR_CYCLE_TIME;
|
|
CycleTime( aDoor, work);
|
|
|
|
AnimateObj( aFloor);
|
|
IgnoreBlocks( aFloor);
|
|
IgnoreObjs( aFloor);
|
|
FixLoop( aFloor);
|
|
SetPriority( aFloor, 5);
|
|
Draw( aFloor);
|
|
StopUpdate( aFloor);
|
|
|
|
ShowPic();
|
|
}
|
|
|
|
|
|
if (lookingAtFaith)
|
|
{
|
|
--eyeCycles; [ bat them eyes
|
|
if (eyeCycles == 1)
|
|
{
|
|
Toggle( eyesCycling);
|
|
if (eyesCycling)
|
|
{
|
|
StartCycling( aEyes);
|
|
Random( 6, 18, eyeCycles);
|
|
}
|
|
else
|
|
{
|
|
StopCycling( aEyes);
|
|
SetCel( aEyes, 0);
|
|
Random( 11, 33, eyeCycles);
|
|
}
|
|
}
|
|
|
|
if (aSecondPassed)
|
|
{
|
|
--breathLineTimer;
|
|
if (breathLineTimer == 1) [ Lay a zinger on him.
|
|
{
|
|
Print( 18);
|
|
}
|
|
|
|
--mouthTimer;
|
|
if (mouthTimer == 1) [ Resume after frown/smile
|
|
{
|
|
mouth = NORMAL;
|
|
}
|
|
|
|
if (mouth != DONE)
|
|
{
|
|
if (mouth == NORMAL)
|
|
{
|
|
eyeCycles = 2; [ Restart eyes.
|
|
}
|
|
|
|
if (mouth == C_SMILE)
|
|
{
|
|
mouthTimer = SMILE_SECONDS;
|
|
Set( eyesCycling);
|
|
eyeCycles = 22; [ Bat 'em, baby.
|
|
StartCycling( aEyes);
|
|
}
|
|
|
|
if (mouth == C_FROWN)
|
|
{
|
|
mouthTimer = FROWN_SECONDS;
|
|
Reset( eyesCycling);
|
|
eyeCycles = 0; [ Stare him down, Faithie.
|
|
StopCycling( aEyes);
|
|
SetCel( aEyes, 0);
|
|
}
|
|
|
|
SetCelV( aMouth, mouth);
|
|
ForceUpdate( aMouth);
|
|
mouth = DONE;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
if (scriptDone)
|
|
{
|
|
Reset( scriptDone);
|
|
++script;
|
|
|
|
|
|
|
|
[ Make ego go down (on) the elevator.
|
|
|
|
if (script == 1)
|
|
{
|
|
Set( elevatorMoving);
|
|
currentStatus = IN_ELEVATOR;
|
|
StopMotion( ego);
|
|
Set( programControl);
|
|
SetView( ego, vEgoPushingElevator);
|
|
SetCel( ego, 0);
|
|
RepositionTo( ego, 76, 127);
|
|
CycleTime( ego, three);
|
|
Set( keepCycling);
|
|
EndOfLoop( ego, scriptDone);
|
|
}
|
|
|
|
if (script == 2)
|
|
{
|
|
Erase( ego);
|
|
SetView( ego, vEgo);
|
|
|
|
SetLoop( aElevator, L_WITH_EGO);
|
|
SetCel( aElevator, 0);
|
|
CycleTime( aElevator, three);
|
|
EndOfLoop( aElevator, scriptDone);
|
|
}
|
|
|
|
if (script == 3)
|
|
{
|
|
Erase( aFloor);
|
|
Draw( aDoor);
|
|
Draw( aNumber);
|
|
|
|
StopCycling( aElevator);
|
|
if (destinationFloor == 8)
|
|
{
|
|
Print( 6);
|
|
script = 101; [ We'll catch it immediately.
|
|
}
|
|
else
|
|
{
|
|
MoveObj( aElevator, 73, 167, 2, scriptDone);
|
|
}
|
|
}
|
|
|
|
if (script == 4)
|
|
{
|
|
newRoom = rmElevators;
|
|
}
|
|
|
|
|
|
|
|
[ He's at top; let him out.
|
|
|
|
if (script == 101)
|
|
{
|
|
Erase( aDoor);
|
|
Erase( aNumber);
|
|
|
|
CycleTime( aElevator, two);
|
|
StartCycling( aElevator);
|
|
BeginningOfLoop( aElevator, scriptDone);
|
|
}
|
|
|
|
if (script == 102)
|
|
{
|
|
Reset( elevatorMoving);
|
|
currentStatus = NORMAL;
|
|
destinationFloor = 0;
|
|
script = 0;
|
|
SetLoop( aElevator, L_EMPTY);
|
|
|
|
Draw( aFloor);
|
|
|
|
SetView( ego, vEgo);
|
|
SetLoop( ego, FACING_FRONT);
|
|
SetCel( ego, 0);
|
|
Position( ego, 76, 127);
|
|
Draw( ego);
|
|
StartMotion( ego);
|
|
Reset( programControl);
|
|
Reset( keepCycling);
|
|
Reset( noCycling);
|
|
CycleTime( ego, one);
|
|
}
|
|
|
|
|
|
|
|
[ He gave Faith the Spanish Fly pills; make it Springtime
|
|
[so we can "watch Faith leave."
|
|
|
|
if (script == 201)
|
|
{
|
|
SetCel( aMouth, C_SMILE);
|
|
ForceUpdate( aMouth);
|
|
mouthTimer = 0; [ Keep smiling.
|
|
|
|
StartCycling( aEyes); [ Make eyes keep batting!
|
|
eyeCycles = 0;
|
|
|
|
|
|
Drop( iPills);
|
|
currentScore += 5;
|
|
Print( 2);
|
|
scriptTimer = 6;
|
|
}
|
|
|
|
if (script == 202)
|
|
{
|
|
if (lookingAtFaith)
|
|
{
|
|
Set( cutToLongShot);
|
|
--script; [ Let's try again next pass.
|
|
Set( scriptDone);
|
|
}
|
|
else
|
|
{
|
|
script = 203;
|
|
}
|
|
}
|
|
|
|
if (script == 203)
|
|
{
|
|
Set( faithGone);
|
|
Print( 4);
|
|
|
|
StartUpdate( aFaith);
|
|
SetLoop( aFaith, L_LEAVING);
|
|
CycleTime( aFaith, two);
|
|
EndOfLoop( aFaith, scriptDone);
|
|
}
|
|
|
|
if (script == 204)
|
|
{
|
|
CycleTime( aFaith, one);
|
|
StartCycling( aFaith);
|
|
RepositionTo( aFaith, 139, 146);
|
|
SetLoop( aFaith, L_WALKING);
|
|
FixLoop( aFaith);
|
|
MoveObj( aFaith, 129, 156, 2, scriptDone);
|
|
ReleasePriority( aFaith);
|
|
IgnoreObjs( aFaith);
|
|
ForceUpdate( aFaith);
|
|
Print( 20);
|
|
}
|
|
|
|
if (script == 205)
|
|
{
|
|
MoveObj( aFaith, 0, 156, 2, scriptDone);
|
|
}
|
|
|
|
if (script == 206)
|
|
{
|
|
Print( 33);
|
|
Erase( aFaith);
|
|
script = 0;
|
|
}
|
|
|
|
|
|
|
|
if (script == 241) [ open doors
|
|
{
|
|
StartUpdate( aPentElevator);
|
|
EndOfLoop( aPentElevator, scriptDone);
|
|
}
|
|
|
|
if (script == 242)
|
|
{
|
|
StopUpdate( aPentElevator);
|
|
Set( pentDoorsOpen);
|
|
StartMotion( ego);
|
|
Reset( programControl);
|
|
}
|
|
|
|
if (script == 243) [ He's clear; close the doors.
|
|
{
|
|
Reset( pentDoorsOpen);
|
|
StartUpdate( aPentElevator);
|
|
BeginningOfLoop( aPentElevator, scriptDone);
|
|
}
|
|
|
|
if (script == 244)
|
|
{
|
|
script = 0;
|
|
StopUpdate( aPentElevator);
|
|
}
|
|
|
|
|
|
if (script == 251) [ Ego's in elevator; take him up.
|
|
{
|
|
Reset( pentDoorsOpen);
|
|
StopUpdate( ego);
|
|
|
|
StartUpdate( aPentElevator);
|
|
BeginningOfLoop( aPentElevator, scriptDone);
|
|
}
|
|
|
|
if (script == 252)
|
|
{
|
|
if (!beenInPenthouse)
|
|
{
|
|
Set( beenInPenthouse);
|
|
Print( 13);
|
|
currentScore += 5;
|
|
}
|
|
newRoom = rmLivingRoom;
|
|
}
|
|
}
|
|
|
|
|
|
if (doorDone)
|
|
{
|
|
Reset( doorDone);
|
|
StopUpdate( aPentElevator);
|
|
}
|
|
|
|
|
|
|
|
[*****
|
|
:exit [ test for leaving the room
|
|
[*****
|