1080 lines
17 KiB
Plaintext
1080 lines
17 KiB
Plaintext
[logics for room 17 -- rmHooker
|
|
[ "Leisure Suit Larry in the Land of the Lounge Lizards"
|
|
[ by Al Lowe
|
|
|
|
%include "rm17.msg"
|
|
%include "gamedefs.h"
|
|
|
|
|
|
|
|
[ "remove rubber", or get arrested when you go outside.
|
|
|
|
[ "look window" "go window" If go back down stairs, does
|
|
[pimp do anything?
|
|
|
|
|
|
|
|
#define L_AFTER_HUMPING 0
|
|
#define L_BEFORE_HUMPING 1
|
|
#define HUMP_X 31
|
|
#define HUMP_Y 146
|
|
#define HUMP_TIME 20 [ seconds
|
|
#define L_MOUTH 0
|
|
#define L_EYES 1
|
|
|
|
|
|
%define hookerCycling lf0
|
|
%define smokeDone lf1
|
|
%define nearBed lf2
|
|
%define nearWindow lf3
|
|
%define egoOutWindow lf4
|
|
%define nearTable lf5
|
|
%define onStairs lf6
|
|
%define lookingAtCloseup lf7
|
|
%define windowOpen lf8
|
|
%define eyesBlinking lf9
|
|
%define mouthChewing lf10
|
|
%define egoNaked lf11
|
|
%define humpOver lf12
|
|
%define cutToCloseup lf13
|
|
%define cutToLongShot lf14
|
|
%define inFrontOfBed lf15
|
|
%define egoDressed lf16
|
|
|
|
|
|
%define humpTimer lv0
|
|
%define humpCycles lv1
|
|
%define hookerCycles lv2
|
|
%define mouthCycles lv3
|
|
%define eyeCycles lv4
|
|
%define closeupLineTimer lv5
|
|
%define action lv6
|
|
|
|
|
|
%object aHooker 1
|
|
%object aEyes 2
|
|
%object aMouth 3
|
|
%object aWindow 4
|
|
%object aCandy 5
|
|
|
|
|
|
|
|
if (initLog)
|
|
{
|
|
SetHorizon( 44);
|
|
|
|
picture = picHookerCloseup;
|
|
LoadPic( picture);
|
|
|
|
LoadPic( currentRoom);
|
|
DrawPic( currentRoom);
|
|
|
|
LoadView( vHooker);
|
|
LoadView( vHookerFace);
|
|
LoadView( vHookerWindow);
|
|
LoadView( vEgoWithHooker);
|
|
LoadView( vEgoUndressing);
|
|
LoadView( vEgoLeavingWindow);
|
|
LoadView( vCandy);
|
|
|
|
|
|
if (ObjInRoom( iCandy, currentRoom))
|
|
{
|
|
AnimateObj( aCandy);
|
|
SetView( aCandy, vCandy);
|
|
Position( aCandy, 135, 137);
|
|
Draw( aCandy);
|
|
StopUpdate( aCandy);
|
|
}
|
|
|
|
AnimateObj( aMouth);
|
|
SetView( aMouth, vHookerFace);
|
|
SetLoop( aMouth, L_MOUTH);
|
|
SetCel( aMouth, 0);
|
|
Position( aMouth, 56, 86);
|
|
|
|
AnimateObj( aEyes);
|
|
IgnoreHorizon( aEyes);
|
|
SetView( aEyes, vHookerFace);
|
|
SetLoop( aEyes, L_EYES);
|
|
SetCel( aEyes, 0);
|
|
Position( aEyes, 50, 42);
|
|
CycleTime( aEyes, three);
|
|
StopCycling( aEyes);
|
|
|
|
|
|
AnimateObj( aHooker);
|
|
IgnoreHorizon( aHooker);
|
|
IgnoreBlocks( aHooker);
|
|
IgnoreObjs( aHooker);
|
|
SetView( aHooker, vHooker);
|
|
if (!scoredHooker)
|
|
{
|
|
Position( aHooker, 23, 131);
|
|
SetLoop( aHooker, L_BEFORE_HUMPING);
|
|
}
|
|
else
|
|
{
|
|
Position( aHooker, 14, 131);
|
|
SetLoop( aHooker, L_AFTER_HUMPING);
|
|
}
|
|
SetCel( aHooker, 0);
|
|
Draw( aHooker);
|
|
StopCycling( aHooker);
|
|
|
|
AnimateObj( aWindow);
|
|
IgnoreBlocks( aWindow);
|
|
IgnoreObjs( aWindow);
|
|
SetView( aWindow, vHookerWindow);
|
|
SetPriority( aWindow, 5);
|
|
if (hookerWindowOpen)
|
|
{
|
|
LastCel( aWindow, work);
|
|
SetCelV( aWindow, work);
|
|
}
|
|
else
|
|
{
|
|
SetCel( aWindow, 0);
|
|
}
|
|
Position( aWindow, 129, 100);
|
|
Draw( aWindow);
|
|
CycleTime( aWindow, three);
|
|
StopUpdate( aWindow);
|
|
|
|
|
|
if (previousRoom == rmAlley)
|
|
{
|
|
egoX = 123;
|
|
egoY = 126;
|
|
}
|
|
else
|
|
{
|
|
Set( onStairs);
|
|
SetPriority( ego, 9);
|
|
Set( ignoreSpecial);
|
|
ObserveBlocks( ego);
|
|
|
|
egoX = 54;
|
|
egoY = 116;
|
|
}
|
|
SetLoop( ego, FACING_LEFT);
|
|
PositionV( ego, egoX, egoY);
|
|
Draw( ego);
|
|
|
|
|
|
ShowPic( );
|
|
|
|
Random( 44, 111, hookerCycles);
|
|
|
|
Return( );
|
|
|
|
} [ end initLOG
|
|
|
|
|
|
|
|
if (onWater) [ P3 water is the divider between
|
|
{ [ stairs and room.
|
|
if ((egoDir == EGO_DOWN ||
|
|
egoDir == EGO_DOWN_LEFT ||
|
|
egoDir == EGO_DOWN_RIGHT))
|
|
{
|
|
Reset( onStairs);
|
|
}
|
|
else
|
|
{
|
|
Set( onStairs);
|
|
}
|
|
}
|
|
|
|
if (onStairs) [ He's in the hole (of stairwell).
|
|
{
|
|
SetPriority( ego, 9);
|
|
Set( ignoreSpecial);
|
|
ObserveBlocks( ego);
|
|
}
|
|
else
|
|
{
|
|
if (currentStatus == NORMAL) [ He's walkin' around the room.
|
|
{
|
|
ReleasePriority( ego);
|
|
IgnoreBlocks( ego);
|
|
Reset( ignoreSpecial);
|
|
}
|
|
}
|
|
|
|
if (hitSpecial) [ Bounce him back to where he was
|
|
{ [ last frame, if he tries to
|
|
Reset( hitSpecial); [ walk through the railing.
|
|
RepositionToV( ego, oldEgoX, oldEgoY);
|
|
StartMotion( ego);
|
|
}
|
|
|
|
|
|
Reset( inFrontOfBed);
|
|
if (Posn( ego, 11, 144, 48, 151))
|
|
{
|
|
Set( inFrontOfBed);
|
|
Set( nearPerson);
|
|
}
|
|
|
|
Reset( nearBed);
|
|
if (Posn( ego, 11, 127, 48, 151))
|
|
{
|
|
Set( nearBed);
|
|
Set( nearPerson);
|
|
}
|
|
|
|
Reset( nearWindow);
|
|
if (Posn( ego, 116, 118, 137, 139))
|
|
{
|
|
Set( nearWindow);
|
|
}
|
|
|
|
Reset( nearTable);
|
|
if (Posn( ego, 124, 138, 139, 155))
|
|
{
|
|
Set( nearTable);
|
|
}
|
|
|
|
|
|
[*****
|
|
:handleInput
|
|
[*****
|
|
|
|
if (!haveInput) {goto noInput;}
|
|
|
|
if ((Said( look) ||
|
|
Said( look, wall) ||
|
|
Said( look, room)))
|
|
{
|
|
Print( 1);
|
|
Print( 19);
|
|
Print( 38);
|
|
}
|
|
|
|
if ((Said( look, window) ||
|
|
Said( look, out, window)))
|
|
{
|
|
Print( 29);
|
|
}
|
|
|
|
if (Said( look, radiator, rol))
|
|
{
|
|
Print( 32);
|
|
}
|
|
|
|
if (Said( turn, on, radiator))
|
|
{
|
|
Print( 35);
|
|
}
|
|
|
|
if ((Said( use, hammer, on, radiator) ||
|
|
Said( hit, radiator, with, hammer) ||
|
|
Said( hit, radiator, hammer) ||
|
|
Said( hammer, radiator)))
|
|
{
|
|
if (!Has( iHammer))
|
|
{
|
|
Set( dontHaveIt);
|
|
}
|
|
else
|
|
{
|
|
Print( 43);
|
|
}
|
|
}
|
|
|
|
|
|
if ((Said( talk, girl) ||
|
|
Said( talk, pussy)))
|
|
{
|
|
if (!scoredHooker)
|
|
{
|
|
Print( 20);
|
|
}
|
|
else
|
|
{
|
|
Print( 21);
|
|
Print( 22);
|
|
}
|
|
}
|
|
|
|
if ((Said( kiss, girl) ||
|
|
Said( anyword, boob) ||
|
|
Said( anyword, ass) ||
|
|
Said( anyword, dirty$word) ||
|
|
Said( dirty$word, anyword) ||
|
|
Said( cunnilingus, rol)))
|
|
{
|
|
if (!nearBed)
|
|
{
|
|
Set( notCloseEnough);
|
|
}
|
|
else
|
|
{
|
|
Print( 31);
|
|
}
|
|
}
|
|
|
|
|
|
if (Said( look, light))
|
|
{
|
|
Print( 33);
|
|
}
|
|
|
|
if (Said( look, under, rol))
|
|
{
|
|
Print( 34);
|
|
}
|
|
|
|
if (Said( look, table))
|
|
{
|
|
if (ObjInRoom( iCandy, currentRoom))
|
|
{
|
|
Print( 4);
|
|
}
|
|
else
|
|
{
|
|
Print( 16);
|
|
}
|
|
}
|
|
|
|
if (Said( move, table))
|
|
{
|
|
if (!nearTable)
|
|
{
|
|
Set( notCloseEnough);
|
|
}
|
|
else
|
|
{
|
|
Print( 44);
|
|
}
|
|
}
|
|
|
|
if ((Said( look, candy) ||
|
|
Said( look, box, candy) ||
|
|
Said( look, box)))
|
|
{
|
|
if (!ObjInRoom( iCandy, currentRoom))
|
|
{
|
|
Reset( haveMatch);
|
|
}
|
|
else
|
|
{
|
|
if (!nearTable)
|
|
{
|
|
Set( notCloseEnough);
|
|
}
|
|
else
|
|
{
|
|
Print( 4);
|
|
}
|
|
}
|
|
}
|
|
|
|
if ((Said( take, candy) ||
|
|
Said( take, box, candy) ||
|
|
Said( take, box) ||
|
|
Said( take, piece, candy) ||
|
|
Said( take, piece, candy, from, box) ||
|
|
Said( take, piece, candy, box) ||
|
|
Said( take, box) ||
|
|
Said( take, candy, table)))
|
|
{
|
|
if (!nearTable)
|
|
{
|
|
Set( notCloseEnough);
|
|
}
|
|
else
|
|
{
|
|
if (!ObjInRoom( iCandy, currentRoom))
|
|
{
|
|
Set( alreadyGotIt);
|
|
}
|
|
else
|
|
{
|
|
action = 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!Has( iCandy) &&
|
|
(Said( use, candy, rol) ||
|
|
Said( open, box, rol) ||
|
|
Said( open, candy, rol) ||
|
|
Said( use, anyword, candy, rol) ||
|
|
Said( eat, anyword, candy, rol) ||
|
|
Said( eat, candy, rol)))
|
|
{
|
|
Set( dontHaveIt);
|
|
}
|
|
|
|
|
|
if ((Said( look, girl) ||
|
|
Said( look, pussy) ||
|
|
Said( look, bed)))
|
|
{
|
|
if (scoredHooker)
|
|
{
|
|
Print( 10);
|
|
}
|
|
else
|
|
{
|
|
if (currentStatus == NAKED)
|
|
{
|
|
Print( 46);
|
|
}
|
|
else
|
|
{
|
|
Set( cutToCloseup);
|
|
}
|
|
}
|
|
}
|
|
|
|
if ((Said( look, under, pillow) ||
|
|
Said( lift, pillow)))
|
|
{
|
|
Print( 39);
|
|
}
|
|
|
|
if (Said( take, pillow))
|
|
{
|
|
Print( 40);
|
|
}
|
|
|
|
if (Said( tie, rope, rol))
|
|
{
|
|
if (!Has( iRope))
|
|
{
|
|
Set( dontHaveIt);
|
|
}
|
|
else
|
|
{
|
|
Print( 45);
|
|
}
|
|
}
|
|
|
|
if (Said( smell, rol))
|
|
{
|
|
Print( 6);
|
|
}
|
|
|
|
if ((Said( lick, pussy) ||
|
|
Said( eat, girl)))
|
|
{
|
|
if (!nearBed)
|
|
{
|
|
Print( 7);
|
|
}
|
|
else
|
|
{
|
|
Print( 8);
|
|
Erase( ego);
|
|
Set( certainDeath);
|
|
}
|
|
}
|
|
|
|
if ((Said( blow, me) ||
|
|
Said( give, head)))
|
|
{
|
|
if (!nearBed)
|
|
{
|
|
Print( 7);
|
|
}
|
|
else
|
|
{
|
|
Print( 24);
|
|
Set( handsOff);
|
|
Erase( ego);
|
|
Set( certainDeath);
|
|
}
|
|
}
|
|
|
|
if ((Said( open, window) ||
|
|
Said( raise, window)))
|
|
{
|
|
if (!nearWindow)
|
|
{
|
|
Set( notCloseEnough);
|
|
}
|
|
else
|
|
{
|
|
if (hookerWindowOpen)
|
|
{
|
|
Print( 12);
|
|
}
|
|
else
|
|
{
|
|
action = 2;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
if ((Said( close, window) ||
|
|
Said( lower, window)))
|
|
{
|
|
if (!nearWindow)
|
|
{
|
|
Set( notCloseEnough);
|
|
}
|
|
else
|
|
{
|
|
Print( 13);
|
|
}
|
|
}
|
|
|
|
|
|
if ((Said( enter, window) ||
|
|
Said( go, back) ||
|
|
Said( jump, out, window) ||
|
|
Said( jump, out) ||
|
|
Said( climb, out, window) ||
|
|
Said( leave, room) ||
|
|
Said( climb, window) ||
|
|
Said( climb, out) ||
|
|
Said( climb, out, on, railing) ||
|
|
Said( climb, out, railing) ||
|
|
Said( climb, on, railing) ||
|
|
Said( climb, railing) ||
|
|
Said( go, out, on, railing) ||
|
|
Said( go, out, railing) ||
|
|
Said( go, on, railing) ||
|
|
Said( go, railing) ||
|
|
Said( go, out, window) ||
|
|
Said( go, window)))
|
|
{
|
|
if (!nearWindow)
|
|
{
|
|
Set( notCloseEnough);
|
|
}
|
|
else
|
|
{
|
|
if (!hookerWindowOpen)
|
|
{
|
|
Print( 14);
|
|
}
|
|
else
|
|
{
|
|
action = 3;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
if ((Said( get, naked) ||
|
|
Said( drop, pants) ||
|
|
Said( take, clothes, off) ||
|
|
Said( remove, clothes) ||
|
|
Said( strip) ||
|
|
Said( strip, naked) ||
|
|
Said( remove, clothes, climb, bed)))
|
|
{
|
|
if (!nearBed)
|
|
{
|
|
Set( notCloseEnough);
|
|
}
|
|
else
|
|
{
|
|
if (!inFrontOfBed)
|
|
{
|
|
Print( 28);
|
|
}
|
|
else
|
|
{
|
|
if (scoredHooker)
|
|
{
|
|
Print( 9);
|
|
}
|
|
else
|
|
{
|
|
if (currentStatus == NAKED)
|
|
{
|
|
Print( 41);
|
|
}
|
|
else
|
|
{
|
|
action = 4;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if ((Said( get, dressed) ||
|
|
Said( wear, pants) ||
|
|
Said( put$on, clothes) ||
|
|
Said( put, clothes, on) ||
|
|
Said( wear, clothes) ||
|
|
Said( dress) ||
|
|
Said( dress, clothes)))
|
|
{
|
|
if (currentStatus != NAKED)
|
|
{
|
|
Reset( haveMatch);
|
|
}
|
|
else
|
|
{
|
|
action = 6;
|
|
}
|
|
}
|
|
|
|
if ((Said( take, underwear) ||
|
|
Said( wear, underwear) ||
|
|
Said( wear, underwear, from, line) ||
|
|
Said( wear, underwear, off, line) ||
|
|
Said( take, underwear, from, line) ||
|
|
Said( take, underwear, off, line)))
|
|
{
|
|
Print( 23);
|
|
}
|
|
|
|
if ((Said( look, line) ||
|
|
Said( look, rope) ||
|
|
Said( look, underwear, rol)))
|
|
{
|
|
Print( 30);
|
|
}
|
|
|
|
if ((Said( take, line) ||
|
|
Said( cut, line, rol) ||
|
|
Said( pull, rope) ||
|
|
Said( untie, rope) ||
|
|
Said( pull, line) ||
|
|
Said( untie, line) ||
|
|
Said( cut, rope, rol) ||
|
|
Said( take, rope)))
|
|
{
|
|
Print( 37);
|
|
}
|
|
|
|
|
|
if ((Said( hump, girl) ||
|
|
Said( hump, pussy) ||
|
|
Said( sleep, girl) ||
|
|
Said( hump) ||
|
|
Said( go, bed) ||
|
|
Said( get, on, bed) ||
|
|
Said( get, bed) ||
|
|
Said( lie, on, bed) ||
|
|
Said( lie, bed) ||
|
|
Said( climb, on)))
|
|
{
|
|
if (currentStatus != NAKED)
|
|
{
|
|
Print( 42);
|
|
}
|
|
else
|
|
{
|
|
action = 7;
|
|
}
|
|
}
|
|
|
|
|
|
if ((Said( use, rubber) ||
|
|
Said( wear, rubber)))
|
|
{
|
|
if (!Has( iRubber))
|
|
{
|
|
Set( dontHaveIt);
|
|
}
|
|
else
|
|
{
|
|
if (wearingRubber)
|
|
{
|
|
Print( 3);
|
|
}
|
|
else
|
|
{
|
|
if (scoredHooker)
|
|
{
|
|
Print( 26);
|
|
}
|
|
else
|
|
{
|
|
if (currentStatus != NAKED)
|
|
{
|
|
Print( 42);
|
|
}
|
|
else
|
|
{
|
|
action = 5;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
[*****
|
|
:noInput
|
|
[*****
|
|
|
|
if (cutToCloseup)
|
|
{
|
|
Reset( cutToCloseup);
|
|
PreventInput();
|
|
Set( lookingAtCloseup);
|
|
Set( handsOff);
|
|
|
|
UnanimateAll(); [ This command requires afterwards:
|
|
[ start.update();
|
|
[ start.motion();
|
|
[ start.cycling();
|
|
[ normal.cycle();
|
|
[ observe.blocks();
|
|
[ observe.horizon();
|
|
[ obj.on.anything();
|
|
[ release.priority();
|
|
[ release.loop();
|
|
[ observe.objects();
|
|
|
|
DrawPic( picture);
|
|
|
|
AnimateObj( aMouth);
|
|
SetPriority( aMouth, 4);
|
|
if (mouthOK)
|
|
{
|
|
SetCel( aMouth, 1); [ smile
|
|
eyeCycles = 22;
|
|
mouthCycles = 11;
|
|
}
|
|
else
|
|
{
|
|
SetCel( aMouth, 2); [ frown
|
|
}
|
|
Draw( aMouth);
|
|
StopCycling( aMouth); [ timer may start it soon.
|
|
|
|
AnimateObj( aEyes);
|
|
IgnoreHorizon( aEyes);
|
|
SetCel( aEyes, NORMAL);
|
|
SetPriority( aEyes, 5);
|
|
Draw( aEyes);
|
|
CycleTime( aEyes, two);
|
|
StopCycling( aEyes);
|
|
|
|
ShowPic();
|
|
closeupLineTimer = 9;
|
|
}
|
|
|
|
if (cutToLongShot)
|
|
{
|
|
Reset( cutToLongShot);
|
|
Reset( lookingAtCloseup);
|
|
Reset( handsOff);
|
|
AcceptInput();
|
|
|
|
UnanimateAll();
|
|
|
|
eyeCycles = 0;
|
|
mouthCycles = 0;
|
|
closeupLineTimer = 0;
|
|
|
|
DrawPic( currentRoom);
|
|
|
|
AnimateObj( aHooker);
|
|
IgnoreHorizon( aHooker);
|
|
IgnoreBlocks( aHooker);
|
|
IgnoreObjs( aHooker);
|
|
Draw( aHooker);
|
|
StopCycling( aHooker);
|
|
|
|
AnimateObj( ego);
|
|
Draw( ego);
|
|
|
|
if (ObjInRoom( iCandy, currentRoom))
|
|
{
|
|
AnimateObj( aCandy);
|
|
Draw( aCandy);
|
|
StopUpdate( aCandy);
|
|
}
|
|
|
|
AnimateObj( aWindow);
|
|
IgnoreBlocks( aWindow);
|
|
IgnoreObjs( aWindow);
|
|
SetPriority( aWindow, 5);
|
|
Draw( aWindow);
|
|
CycleTime( aWindow, three);
|
|
StopUpdate( aWindow);
|
|
|
|
ShowPic();
|
|
}
|
|
|
|
|
|
if (egoNaked)
|
|
{
|
|
Reset( egoNaked);
|
|
currentStatus = NAKED;
|
|
StopMotion( ego);
|
|
Reset( keepCycling);
|
|
Set( programControl);
|
|
}
|
|
|
|
if (egoDressed)
|
|
{
|
|
Reset( egoDressed);
|
|
currentStatus = NORMAL;
|
|
StartMotion( ego);
|
|
SetView( ego, vEgo);
|
|
CycleTime( ego, one);
|
|
Reset( keepCycling);
|
|
Reset( programControl);
|
|
}
|
|
|
|
|
|
--humpCycles;
|
|
if (humpCycles == 1 &&
|
|
currentStatus == HUMPING_HOOKER)
|
|
{
|
|
Random( 5, 15, humpCycles);
|
|
Random( 0, 4, work);
|
|
CycleTime( ego, work);
|
|
}
|
|
|
|
|
|
if (aSecondPassed)
|
|
{
|
|
--closeupLineTimer;
|
|
if (closeupLineTimer == 1 &&
|
|
lookingAtCloseup)
|
|
{
|
|
Set( cutToLongShot);
|
|
if (mouthOK)
|
|
{
|
|
Print( 18);
|
|
}
|
|
else
|
|
{
|
|
Print( 17);
|
|
}
|
|
}
|
|
|
|
--humpTimer;
|
|
if (humpTimer == 1)
|
|
{
|
|
SetView( ego, vEgoUndressing);
|
|
LastCel( ego, work);
|
|
SetCelV( ego, work);
|
|
RepositionTo( ego, HUMP_X, HUMP_Y);
|
|
ReleasePriority( ego);
|
|
Set( keepCycling);
|
|
CycleTime( ego, three);
|
|
BeginningOfLoop( ego, humpOver);
|
|
|
|
Position( aHooker, 14, 131);
|
|
SetLoop( aHooker, L_AFTER_HUMPING);
|
|
Draw( aHooker);
|
|
}
|
|
}
|
|
|
|
|
|
if (humpOver)
|
|
{
|
|
Reset( humpOver);
|
|
SetView( ego, vEgo);
|
|
Reset( keepCycling);
|
|
StartMotion( ego);
|
|
Reset( programControl);
|
|
CycleTime( ego, one);
|
|
|
|
Set( scoredHooker);
|
|
currentScore += 11;
|
|
currentStatus = NORMAL;
|
|
animationInterval = oldAnimationInterval;
|
|
Random( 11, 22, hookerCycles);
|
|
Print( 5);
|
|
|
|
AcceptInput();
|
|
if (wearingRubber)
|
|
{
|
|
Print( 11);
|
|
}
|
|
else
|
|
{
|
|
Set( diedOfTheClap);
|
|
}
|
|
}
|
|
|
|
|
|
--eyeCycles;
|
|
if (eyeCycles == 1)
|
|
{
|
|
Toggle( eyesBlinking);
|
|
if (eyesBlinking)
|
|
{
|
|
StartCycling( aEyes);
|
|
Random( 6, 16, eyeCycles);
|
|
}
|
|
else
|
|
{
|
|
StopCycling( aEyes);
|
|
SetCel( aEyes, 0);
|
|
ForceUpdate( aEyes);
|
|
Random( 22, 33, eyeCycles);
|
|
}
|
|
}
|
|
|
|
--mouthCycles;
|
|
if (mouthCycles == 1)
|
|
{
|
|
Toggle( mouthChewing);
|
|
if (mouthChewing)
|
|
{
|
|
StartCycling( aMouth);
|
|
Random( 26, 56, mouthCycles);
|
|
}
|
|
else
|
|
{
|
|
StopCycling( aMouth);
|
|
SetCel( aMouth, 0);
|
|
Random( 7, 17, mouthCycles);
|
|
}
|
|
}
|
|
|
|
|
|
--hookerCycles;
|
|
if (hookerCycles == 1)
|
|
{
|
|
Toggle( hookerCycling);
|
|
if (hookerCycling)
|
|
{
|
|
StartCycling( aHooker);
|
|
}
|
|
else
|
|
{
|
|
StopCycling( aHooker);
|
|
}
|
|
|
|
if (scoredHooker)
|
|
{
|
|
Random( 44, 66, hookerCycles);
|
|
EndOfLoop( aHooker, smokeDone);
|
|
}
|
|
else
|
|
{
|
|
Random( 11, 22, hookerCycles);
|
|
}
|
|
}
|
|
|
|
|
|
if (smokeDone)
|
|
{
|
|
Reset( smokeDone);
|
|
Reset( hookerCycling);
|
|
StopCycling( aHooker);
|
|
SetCel( aHooker, 0);
|
|
}
|
|
|
|
if (windowOpen)
|
|
{
|
|
Reset( windowOpen);
|
|
StopCycling( aWindow);
|
|
StopUpdate( aWindow);
|
|
Set( hookerWindowOpen);
|
|
}
|
|
|
|
|
|
if (action)
|
|
{
|
|
if (action == 1)
|
|
{
|
|
Set( OK);
|
|
Get( iCandy);
|
|
currentScore += 2;
|
|
StartUpdate( aCandy);
|
|
Erase( aCandy);
|
|
}
|
|
|
|
if (action == 2)
|
|
{
|
|
Set( OK);
|
|
StartUpdate( aWindow);
|
|
EndOfLoop( aWindow, windowOpen);
|
|
}
|
|
|
|
if (action == 3)
|
|
{
|
|
currentStatus = LEAVING_WINDOW;
|
|
SetView( ego, vEgoLeavingWindow);
|
|
SetCel( ego, 0);
|
|
SetPriority( ego, 15);
|
|
RepositionTo( ego, 125, 125);
|
|
CycleTime( ego, three);
|
|
StopMotion( ego);
|
|
Set( programControl);
|
|
Set( keepCycling);
|
|
EndOfLoop( ego, egoOutWindow);
|
|
}
|
|
|
|
if (action == 4)
|
|
{
|
|
StopMotion( ego);
|
|
SetView( ego, vEgoUndressing);
|
|
SetCel( ego, 0);
|
|
CycleTime( ego, three);
|
|
Set( keepCycling);
|
|
EndOfLoop( ego, egoNaked);
|
|
}
|
|
|
|
if (action == 5)
|
|
{
|
|
Print( 2);
|
|
Set( wearingRubber);
|
|
Drop( iRubber);
|
|
Get( iUsedRubber);
|
|
if (!wornRubber)
|
|
{
|
|
Set( wornRubber);
|
|
currentScore += 10;
|
|
}
|
|
}
|
|
|
|
if (action == 6)
|
|
{
|
|
SetView( ego, vEgoUndressing);
|
|
LastCel( ego, work);
|
|
SetCelV( ego, work);
|
|
CycleTime( ego, three);
|
|
Set( keepCycling);
|
|
BeginningOfLoop( ego, egoDressed);
|
|
}
|
|
|
|
if (action == 7)
|
|
{
|
|
currentStatus = HUMPING_HOOKER;
|
|
humpTimer = HUMP_TIME;
|
|
Random( 25, 45, humpCycles);
|
|
oldAnimationInterval = animationInterval;
|
|
animationInterval = FASTEST_SPEED;
|
|
|
|
SetView( ego, vEgoWithHooker);
|
|
RepositionTo( ego, 15, 130);
|
|
SetPriority( ego, 15);
|
|
Set( keepCycling);
|
|
PreventInput();
|
|
StopMotion( ego);
|
|
Set( programControl);
|
|
|
|
Erase( aHooker);
|
|
Set( smokeDone); [ setcel, stopcycling, etc.
|
|
}
|
|
action = 0;
|
|
}
|
|
|
|
|
|
[*****
|
|
:exit [ test for leaving the room
|
|
[*****
|
|
|
|
if (onStairs &&
|
|
posn( ego, 66, 132, 70, 133))
|
|
{
|
|
newRoom = rmBackroom;
|
|
}
|
|
|
|
if (egoOutWindow)
|
|
{
|
|
currentEgoView = NORMAL;
|
|
newRoom = rmAlley;
|
|
}
|