1299 lines
22 KiB
Plaintext
1299 lines
22 KiB
Plaintext
[logics for room 43 -- rmHotTub
|
|
[ "Leisure Suit Larry in the Land of the Lounge Lizards"
|
|
[ by Al Lowe
|
|
|
|
%include "rm43.msg"
|
|
%include "gamedefs.h"
|
|
|
|
|
|
|
|
[ Facial treatment:
|
|
[ cel0 = normal; use if no action.
|
|
[ cel1 = smiling; use if give apple, talk nice, good breath, look face
|
|
[ cel2 = frowning; use if say rude things, bad breath
|
|
|
|
|
|
[ %view vCloseupBubbles 177
|
|
[ %view vEveFace 180
|
|
[ %view vEveInTub 181
|
|
[ #define C_SITTING 0
|
|
|
|
[ %view vEve 182
|
|
[ #define L_WALKING_RIGHT 0
|
|
[ #define L_SITTING_ON_BED 1
|
|
[ #define L_AFTER_SEX 2
|
|
[
|
|
[ %view vHotTubBubbles 183
|
|
|
|
[ %view vEgoUndressing 2
|
|
[ %view vEgoInHotTub 7
|
|
[ #define L_JUMPING_IN 0
|
|
[ #define L_JUMPING_OUT 1
|
|
#define L_CLOTHES_PILE 2
|
|
|
|
|
|
%define L_EYES 1 [ vEveCloseup
|
|
%define L_MOUTH 0
|
|
#define C_NORMAL 0 [ mouth cells
|
|
#define C_SMILE 1
|
|
#define C_FROWN 2
|
|
#define DONE 255
|
|
|
|
%define DRESSING_SPEED 3 [ Ego's CycleTime while changing.
|
|
%define HOT_TUB_SPEED 4 [ Ego & Eve's exiting tub CycleTime
|
|
|
|
|
|
%define egoInHotTub lf0
|
|
%define clothesOnFloor lf1
|
|
%define egoNaked lf2
|
|
%define eveInHotTub lf3
|
|
%define lookingAtEve lf4
|
|
%define nearHotTub lf5
|
|
%define eyesCycling lf6
|
|
%define dollDone lf7
|
|
%define bubblesOn lf8
|
|
%define dollOnScreen lf9
|
|
%define dollSoundDone lf10
|
|
%define cutToLongShot lf11
|
|
%define cutToCloseup lf12
|
|
|
|
|
|
%define eyeCycles lv0
|
|
%define breathLineTimer lv1
|
|
[%define lv2
|
|
[%define lv3
|
|
%define lookCount lv4
|
|
%define talkCount lv5
|
|
%define mouthTimer lv6
|
|
%define mouth lv7
|
|
|
|
|
|
%object aBubbles 1
|
|
%object aEve 2
|
|
%object aEgo'sClothes 3
|
|
%object aEve'sTowel 4
|
|
%object aMouth 5
|
|
%object aEyes 6
|
|
%object aDoll 7
|
|
%object aCloseupBubbles1 11
|
|
%object aCloseupBubbles2 12
|
|
%object aCloseupBubbles3 13
|
|
%object aCloseupBubbles4 14
|
|
|
|
|
|
if (initLog)
|
|
{
|
|
LoadView( vHotTubBubbles);
|
|
|
|
if (!eveGone)
|
|
{
|
|
Set( eveInHotTub);
|
|
Set( bubblesOn);
|
|
|
|
LoadView( vEve);
|
|
LoadView( vEveFace);
|
|
LoadView( vEveInTub);
|
|
|
|
LoadView( vCloseupBubbles);
|
|
|
|
LoadView( vEgoInHotTub);
|
|
LoadView( vEgoWearingTowel);
|
|
LoadView( vEgoUndressing);
|
|
|
|
picture = picEveCloseup;
|
|
LoadPic( picture);
|
|
}
|
|
|
|
LoadPic( currentRoom);
|
|
DrawPic( currentRoom);
|
|
[ DON'T DiscardPic( currentRoom);
|
|
|
|
if (eveInHotTub)
|
|
{
|
|
AnimateObj( aEve);
|
|
IgnoreBlocks( aEve);
|
|
IgnoreObjs( aEve);
|
|
SetView( aEve, vEveInTub);
|
|
SetPriority( aEve, 9);
|
|
Position( aEve, 72, 89);
|
|
Draw( aEve);
|
|
StopUpdate( aEve);
|
|
|
|
AnimateObj( aEve'sTowel); [ Put eve's towel by tub.
|
|
SetView( aEve'sTowel, vEgoInHotTub);
|
|
SetLoop( aEve'sTowel, L_CLOTHES_PILE);
|
|
Position( aEve'sTowel, 58, 92);
|
|
Draw( aEve'sTowel);
|
|
|
|
AnimateObj( aEgo'sClothes);
|
|
IgnoreBlocks( aEgo'sClothes);
|
|
IgnoreObjs( aEgo'sClothes);
|
|
SetView( aEgo'sClothes, vEgoInHotTub);
|
|
SetLoop( aEgo'sClothes, L_CLOTHES_PILE);
|
|
SetPriority( aEgo'sClothes, 15);
|
|
Position( aEgo'sClothes, 95, 105);
|
|
}
|
|
|
|
AnimateObj( aBubbles);
|
|
IgnoreBlocks( aBubbles);
|
|
IgnoreObjs( aBubbles);
|
|
Position( aBubbles, 59, 106);
|
|
SetView( aBubbles, vHotTubBubbles);
|
|
SetPriority( aBubbles, 9);
|
|
Draw( aBubbles);
|
|
|
|
if (currentStatus == CHASING_DOLL)
|
|
{
|
|
PreventInput();
|
|
Set( handsOff);
|
|
|
|
LoadView( vDollDeflating);
|
|
LoadSound( sDollDeflating);
|
|
|
|
AnimateObj( aDoll);
|
|
IgnoreHorizon( aDoll);
|
|
IgnoreBlocks( aDoll);
|
|
IgnoreObjs( aDoll);
|
|
SetView( aDoll, vDollDeflating);
|
|
SetPriority( aDoll, 15);
|
|
Position( aDoll, 77, 118);
|
|
Draw( aDoll);
|
|
MoveObj( aDoll, 0, 118, 4, dollDone);
|
|
Set( dollOnScreen);
|
|
Set( dollSoundDone);
|
|
}
|
|
|
|
|
|
egoX = 150;
|
|
if (egoY < 97)
|
|
{
|
|
egoY = 97;
|
|
}
|
|
if (egoY > 156)
|
|
{
|
|
egoY = 156;
|
|
}
|
|
PositionV( ego, egoX, egoY);
|
|
Draw( ego);
|
|
|
|
ShowPic( );
|
|
|
|
Return( );
|
|
|
|
} [ end initLOG
|
|
|
|
|
|
|
|
Reset( nearHotTub);
|
|
if ((Posn( ego, 47, 90, 111, 123) ||
|
|
egoInHotTub))
|
|
{
|
|
Set( nearHotTub);
|
|
}
|
|
|
|
if (eveInHotTub)
|
|
{
|
|
if ((Posn( ego, 59, 90, 86, 92) || [ Behind the tub
|
|
egoInHotTub))
|
|
{
|
|
Set( nearPerson);
|
|
}
|
|
}
|
|
|
|
|
|
[*****
|
|
:handleInput
|
|
[*****
|
|
|
|
if (!haveInput) {goto noInput;}
|
|
|
|
if (eveInHotTub)
|
|
{
|
|
if (lookingAtEve)
|
|
{
|
|
if ((Said( turn, on, bubbles) ||
|
|
Said( turn, bubbles, on) ||
|
|
Said( turn, spa, on) ||
|
|
Said( turn, on, spa)))
|
|
{
|
|
if (bubblesOn)
|
|
{
|
|
Print( 46);
|
|
}
|
|
else
|
|
{
|
|
Set( bubblesOn);
|
|
Draw( aCloseupBubbles1);
|
|
Draw( aCloseupBubbles2);
|
|
Draw( aCloseupBubbles3);
|
|
Draw( aCloseupBubbles4);
|
|
}
|
|
}
|
|
|
|
if ((Said( turn, off, bubbles) ||
|
|
Said( turn, bubbles, off) ||
|
|
Said( turn, spa, off) ||
|
|
Said( turn, off, spa)))
|
|
{
|
|
if (!bubblesOn)
|
|
{
|
|
Print( 45);
|
|
}
|
|
else
|
|
{
|
|
Reset( bubblesOn);
|
|
Erase( aCloseupBubbles1);
|
|
Erase( aCloseupBubbles2);
|
|
Erase( aCloseupBubbles3);
|
|
Erase( aCloseupBubbles4);
|
|
}
|
|
}
|
|
|
|
if (Said( use, spray, rol))
|
|
{
|
|
Reset( haveMatch);
|
|
mouth = C_SMILE;
|
|
Random( 6, 19, eyeCycles);
|
|
Reset( eyesCycling);
|
|
}
|
|
|
|
if (Said( look, bracelet))
|
|
{
|
|
Print( 47);
|
|
}
|
|
|
|
if ((Said( stop, looking, eve) ||
|
|
Said( look, away) ||
|
|
Said( look, room) ||
|
|
Said( look, garden) ||
|
|
Said( stand, rol) ||
|
|
Said( look, city) ||
|
|
Said( look, away, from, eve)))
|
|
{
|
|
Set( cutToLongShot);
|
|
Set( OK);
|
|
}
|
|
}
|
|
|
|
if ((Said( look, face, rol) ||
|
|
Said( establish$eye$contact, rol) ||
|
|
Said( look, eve, rol)))
|
|
{
|
|
if (!egoInHotTub)
|
|
{
|
|
Print( 20);
|
|
}
|
|
else
|
|
{
|
|
if (!lookingAtEve)
|
|
{
|
|
Set( cutToCloseup);
|
|
}
|
|
else
|
|
{
|
|
++lookCount;
|
|
if (lookCount == 1)
|
|
{
|
|
Print( 3);
|
|
mouth = C_SMILE;
|
|
}
|
|
|
|
if (lookCount == 2)
|
|
{
|
|
Print( 4);
|
|
mouth = C_SMILE;
|
|
}
|
|
|
|
if (lookCount > 2)
|
|
{
|
|
Print( 21);
|
|
mouth = C_NORMAL;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
if ((Said( talk, rol) ||
|
|
Said( say, anyword, eve, rol)))
|
|
{
|
|
if (!egoInHotTub)
|
|
{
|
|
Print( 20);
|
|
}
|
|
else
|
|
{
|
|
if (!lookingAtEve)
|
|
{
|
|
Print( 31);
|
|
}
|
|
else
|
|
{
|
|
++talkCount;
|
|
if (talkCount == 1)
|
|
{
|
|
Print( 25);
|
|
Print( 30);
|
|
mouth = C_SMILE;
|
|
}
|
|
|
|
if (talkCount == 2)
|
|
{
|
|
Print( 33);
|
|
Print( 34);
|
|
mouth = C_FROWN;
|
|
}
|
|
|
|
if (talkCount == 3)
|
|
{
|
|
Print( 32);
|
|
Print( 30);
|
|
mouth = C_SMILE;
|
|
}
|
|
|
|
if (talkCount == 4)
|
|
{
|
|
Print( 35);
|
|
Print( 36);
|
|
mouth = C_SMILE;
|
|
}
|
|
|
|
if (talkCount > 4)
|
|
{
|
|
Print( 37);
|
|
mouth = C_SMILE;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
if ((Said( give, eve, apple, rol) ||
|
|
Said( give, apple, rol)))
|
|
{
|
|
if (!Has( iApple))
|
|
{
|
|
Print( 8);
|
|
}
|
|
else
|
|
{
|
|
if (!egoInHotTub)
|
|
{
|
|
Print( 20);
|
|
}
|
|
else
|
|
{
|
|
if (!lookingAtEve)
|
|
{
|
|
Print( 31);
|
|
}
|
|
else
|
|
{
|
|
script = 200;
|
|
Set( scriptDone);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if ((Said( give, eve, money, rol) ||
|
|
Said( give, money, eve, rol)))
|
|
{
|
|
if (!egoInHotTub)
|
|
{
|
|
Print( 20);
|
|
}
|
|
else
|
|
{
|
|
if (!lookingAtEve)
|
|
{
|
|
Print( 31);
|
|
}
|
|
else
|
|
{
|
|
mouth = C_FROWN;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ((Said( look, eyes, rol) ||
|
|
Said( look, eyes) ||
|
|
Said( look$in, eyes) ||
|
|
Said( flirt, with, her) ||
|
|
Said( wink, girl) ||
|
|
Said( look, mouth, rol)))
|
|
{
|
|
if (!egoInHotTub)
|
|
{
|
|
Print( 20);
|
|
}
|
|
else
|
|
{
|
|
if (!lookingAtEve)
|
|
{
|
|
Print( 31);
|
|
}
|
|
else
|
|
{
|
|
Print( 4);
|
|
}
|
|
}
|
|
}
|
|
|
|
if ((Said( drink, wine, rol) ||
|
|
Said( pour, wine, rol) ||
|
|
Said( pour, wine, rol) ||
|
|
Said( pour, eve, wine, rol) ||
|
|
Said( ask, eve, drink, wine, rol)))
|
|
{
|
|
if (!egoInHotTub)
|
|
{
|
|
Print( 20);
|
|
}
|
|
else
|
|
{
|
|
if (!lookingAtEve)
|
|
{
|
|
Print( 31);
|
|
}
|
|
else
|
|
{
|
|
Print( 38);
|
|
Print( 39);
|
|
mouth = C_SMILE;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ((Said( get, wine, rol) ||
|
|
Said( get, bottle, wine, rol) ||
|
|
Said( get, glass, rol)))
|
|
{
|
|
if (!egoInHotTub)
|
|
{
|
|
Print( 20);
|
|
}
|
|
else
|
|
{
|
|
if (!lookingAtEve)
|
|
{
|
|
Print( 31);
|
|
}
|
|
else
|
|
{
|
|
Print( 43);
|
|
}
|
|
}
|
|
}
|
|
|
|
if ((Said( look, wine, rol) ||
|
|
Said( look, bottle, wine, rol) ||
|
|
Said( look, glass, rol)))
|
|
{
|
|
if (!egoInHotTub)
|
|
{
|
|
Print( 20);
|
|
}
|
|
else
|
|
{
|
|
if (!lookingAtEve)
|
|
{
|
|
Print( 31);
|
|
}
|
|
else
|
|
{
|
|
Print( 44);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (Said( use, towel, rol))
|
|
{
|
|
if (!nearHotTub)
|
|
{
|
|
Set( notCloseEnough);
|
|
}
|
|
else
|
|
{
|
|
Print( 40);
|
|
mouth = C_SMILE;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ((Said( get, towel) ||
|
|
Said( get, clothes)))
|
|
{
|
|
Print( 41);
|
|
}
|
|
|
|
if ((Said( look, towel) ||
|
|
Said( look, clothes)))
|
|
{
|
|
Print( 21);
|
|
}
|
|
|
|
if (lookingAtEve)
|
|
{
|
|
if ((Said( look, her, hair) ||
|
|
Said( look, hair) ||
|
|
Said( touch, hair) ||
|
|
Said( stroke, hair) ||
|
|
Said( rub, hair) ||
|
|
Said( rub, her, hair)))
|
|
{
|
|
mouth = C_SMILE;
|
|
}
|
|
|
|
if ((Said( smile) ||
|
|
Said( smile, girl) ||
|
|
Said( hold, hand) ||
|
|
Said( take, her, hand) ||
|
|
Said( touch, girl) ||
|
|
Said( touch, her) ||
|
|
Said( ask, date)))
|
|
{
|
|
mouth = C_SMILE;
|
|
}
|
|
|
|
if ((Said( ask, name) ||
|
|
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) ||
|
|
Said( talk, her, love) ||
|
|
Said( love, you) ||
|
|
Said( take, her, hand) ||
|
|
Said( look, mouth) ||
|
|
Said( look, her, mouth) ||
|
|
Said( ask, her, name) ||
|
|
Said( ask, name, girl)))
|
|
{
|
|
mouth = C_SMILE;
|
|
}
|
|
|
|
if ((Said( eat, eve, rol) ||
|
|
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( feel, her, leg) ||
|
|
Said( feel, her, leg, under, table) ||
|
|
Said( grab, her, leg) ||
|
|
Said( look, girl, tits) ||
|
|
Said( look, tits, rol) ||
|
|
Said( look, body) ||
|
|
Said( stare) ||
|
|
Said( stare, boobs) ||
|
|
Said( eat, eve, pussy, rol) ||
|
|
Said( drain, spa, rol) ||
|
|
Said( go, underwater, rol) ||
|
|
Said( look, underwater, rol) ||
|
|
Said( feel, underwater, rol) ||
|
|
Said( touch, boob, rol)))
|
|
{
|
|
Print( 50);
|
|
mouth = C_FROWN;
|
|
}
|
|
|
|
if ((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)))
|
|
{
|
|
Print( 50);
|
|
Print( 52);
|
|
mouth = C_FROWN;
|
|
}
|
|
|
|
if ((Said( touch, eve, rol) ||
|
|
Said( dive, rol) ||
|
|
Said( give, girl, kiss) ||
|
|
Said( kiss, girl) ||
|
|
Said( kiss, eve, rol)))
|
|
{
|
|
Print( 16);
|
|
mouth = C_FROWN;
|
|
}
|
|
|
|
if ((Said( larry) ||
|
|
Said( leisure$suit, larry)))
|
|
{
|
|
Print( 51)
|
|
mouth = C_SMILE;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
[ This may look funny, but it's ok, because "go" and "leave" are synonyms!
|
|
|
|
if ((Said( enter, tub, rol) ||
|
|
Said( get, tub, rol) ||
|
|
Said( get, in, rol) ||
|
|
Said( get, out, rol) ||
|
|
Said( enter, rol) ||
|
|
Said( climb, in, tub, rol) ||
|
|
Said( climb, out, tub, rol) ||
|
|
Said( jump, in, tub, rol) ||
|
|
Said( jump, tub, rol) ||
|
|
Said( get, naked, rol) ||
|
|
Said( get, dressed, rol) ||
|
|
Said( undress, rol) ||
|
|
Said( remove, clothes, rol) ||
|
|
Said( put$on, clothes, rol) ||
|
|
Said( dress, rol)))
|
|
{
|
|
if (!eveInHotTub)
|
|
{
|
|
Print( 19);
|
|
}
|
|
else
|
|
{
|
|
if (egoInHotTub)
|
|
{
|
|
Print( 26);
|
|
Set( scriptDone);
|
|
script = 100;
|
|
}
|
|
else
|
|
{
|
|
Set( OK);
|
|
Set( scriptDone);
|
|
|
|
[ He's in the notch at hot tub's seven o'clock position.
|
|
if (Posn( ego, 47, 108, 59, 113))
|
|
{
|
|
script = 0;
|
|
}
|
|
else
|
|
{
|
|
[ Anywhere else to left of tub's three o'clock position
|
|
if ((Posn( ego, 59, 90, 93, 100) || [ Above tub.
|
|
Posn( ego, 77, 101, 93, 113) || [ Right of tub.
|
|
Posn( ego, 30, 114, 93, 167))) [ Below tub.
|
|
{
|
|
script = 1;
|
|
}
|
|
else
|
|
{
|
|
script = 2; [ To right of tub.
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (Said( look, tub))
|
|
{
|
|
Print( 1);
|
|
if (eveInHotTub)
|
|
{
|
|
Print( 7);
|
|
}
|
|
}
|
|
|
|
if ((Said( look) ||
|
|
Said( look, room) ||
|
|
Said( look, garden)))
|
|
{
|
|
Print( 1);
|
|
if (eveInHotTub)
|
|
{
|
|
Print( 7);
|
|
}
|
|
}
|
|
|
|
if ((Said( look, city) ||
|
|
Said( look, building) ||
|
|
Said( look, hotel)))
|
|
{
|
|
if (egoInHotTub)
|
|
{
|
|
Print( 29);
|
|
}
|
|
else
|
|
{
|
|
Print( 9);
|
|
Print( 10);
|
|
Print( 11);
|
|
Print( 12);
|
|
Print( 13);
|
|
Print( 14);
|
|
Print( 15);
|
|
}
|
|
}
|
|
|
|
|
|
[*****
|
|
:noInput
|
|
[*****
|
|
|
|
if (cutToCloseup)
|
|
{
|
|
Reset( cutToCloseup);
|
|
Set( lookingAtEve);
|
|
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( aCloseupBubbles1);
|
|
SetView( aCloseupBubbles1, vCloseupBubbles);
|
|
SetLoop( aCloseupBubbles1, 0);
|
|
SetCel( aCloseupBubbles1, 1);
|
|
Position( aCloseupBubbles1, 0, 167);
|
|
|
|
AnimateObj( aCloseupBubbles2);
|
|
SetView( aCloseupBubbles2, vCloseupBubbles);
|
|
SetLoop( aCloseupBubbles2, 1);
|
|
SetCel( aCloseupBubbles2, 2);
|
|
Position( aCloseupBubbles2, 40, 167);
|
|
|
|
AnimateObj( aCloseupBubbles3);
|
|
SetView( aCloseupBubbles3, vCloseupBubbles);
|
|
SetLoop( aCloseupBubbles3, 0);
|
|
SetCel( aCloseupBubbles3, 3);
|
|
Position( aCloseupBubbles3, 80, 167);
|
|
|
|
AnimateObj( aCloseupBubbles4);
|
|
SetView( aCloseupBubbles4, vCloseupBubbles);
|
|
SetLoop( aCloseupBubbles4, 1);
|
|
SetCel( aCloseupBubbles4, 0);
|
|
Position( aCloseupBubbles4, 120, 167);
|
|
|
|
if (bubblesOn)
|
|
{
|
|
Draw( aCloseupBubbles1);
|
|
Draw( aCloseupBubbles2);
|
|
Draw( aCloseupBubbles3);
|
|
Draw( aCloseupBubbles4);
|
|
}
|
|
|
|
AnimateObj( aMouth);
|
|
SetView( aMouth, vEveFace);
|
|
SetLoop( aMouth, L_MOUTH);
|
|
SetCel( aMouth, 0);
|
|
Position( aMouth, 64, 79);
|
|
|
|
AnimateObj( aEyes);
|
|
IgnoreHorizon( aEyes);
|
|
SetView( aEyes, vEveFace);
|
|
SetLoop( aEyes, L_EYES);
|
|
SetCel( aEyes, 0);
|
|
Position( aEyes, 64, 44);
|
|
CycleTime( aEyes, three);
|
|
|
|
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( lookingAtEve);
|
|
Reset( handsOff);
|
|
|
|
eyeCycles = 0;
|
|
breathLineTimer = 0;
|
|
|
|
UnanimateAll();
|
|
|
|
DrawPic( currentRoom);
|
|
|
|
AnimateObj( aEve);
|
|
IgnoreBlocks( aEve);
|
|
IgnoreObjs( aEve);
|
|
SetPriority( aEve, 9);
|
|
Draw( aEve);
|
|
StopUpdate( aEve);
|
|
|
|
AnimateObj( aBubbles);
|
|
IgnoreBlocks( aBubbles);
|
|
IgnoreObjs( aBubbles);
|
|
SetPriority( aBubbles, 9);
|
|
if (bubblesOn)
|
|
{
|
|
Draw( aBubbles);
|
|
}
|
|
|
|
AnimateObj( aEve'sTowel); [ Put eve's towel by tub.
|
|
Draw( aEve'sTowel);
|
|
|
|
AnimateObj( aEgo'sClothes);
|
|
IgnoreBlocks( aEgo'sClothes);
|
|
IgnoreObjs( aEgo'sClothes);
|
|
SetPriority( aEgo'sClothes, 15);
|
|
Draw( aEgo'sClothes);
|
|
|
|
AnimateObj( ego);
|
|
IgnoreBlocks( ego);
|
|
SetPriority( ego, 15);
|
|
SetView( ego, vEgoInHotTub);
|
|
SetLoop( ego, FACING_LEFT);
|
|
LastCel( ego, work);
|
|
SetCelV( ego, work);
|
|
StopCycling( ego);
|
|
Draw( ego);
|
|
|
|
ShowPic();
|
|
}
|
|
|
|
|
|
if (lookingAtEve)
|
|
{
|
|
--eyeCycles;
|
|
if (eyeCycles == 1)
|
|
{
|
|
Toggle( eyesCycling);
|
|
if (eyesCycling)
|
|
{
|
|
StartCycling( aEyes);
|
|
Random( 6, 16, eyeCycles);
|
|
}
|
|
else
|
|
{
|
|
StopCycling( aEyes);
|
|
SetCel( aEyes, 0);
|
|
ForceUpdate( aEyes);
|
|
Random( 22, 33, eyeCycles);
|
|
}
|
|
}
|
|
|
|
if (aSecondPassed)
|
|
{
|
|
--breathLineTimer;
|
|
if (breathLineTimer == 1)
|
|
{
|
|
if (mouthOK)
|
|
{
|
|
Print( 23);
|
|
}
|
|
else
|
|
{
|
|
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, Eveie.
|
|
StopCycling( aEyes);
|
|
SetCel( aEyes, 0);
|
|
}
|
|
|
|
SetCelV( aMouth, mouth);
|
|
ForceUpdate( aMouth);
|
|
mouth = DONE;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if (scriptDone)
|
|
{
|
|
Reset( scriptDone);
|
|
++script;
|
|
|
|
Set( programControl);
|
|
Set( handsOff);
|
|
PreventInput();
|
|
|
|
|
|
if (script == 1) [ Walk ego to the side of the tub.
|
|
{
|
|
step = 1;
|
|
y = 114;
|
|
MoveObjV( ego, egoX, y, step, scriptDone);
|
|
}
|
|
|
|
if (script == 2)
|
|
{
|
|
step = 1;
|
|
x = 94;
|
|
MoveObjV( ego, x, egoY, step, scriptDone);
|
|
}
|
|
|
|
if (script == 3) [ Walk him to position.
|
|
{
|
|
MoveObj( ego, 94, 102, 1, scriptDone);
|
|
}
|
|
|
|
if (script == 4)
|
|
{
|
|
SetView( ego, vEgoUndressing);
|
|
SetLoop( ego, FACING_LEFT); [ Ego stripping loop.
|
|
SetCel( ego, 0);
|
|
SetPriority( ego, 15);
|
|
work = HOT_TUB_SPEED;
|
|
CycleTime( ego, work);
|
|
Set( keepCycling);
|
|
EndOfLoop( ego, scriptDone);
|
|
|
|
scriptCycles = 3;
|
|
MulN( scriptCycles, HOT_TUB_SPEED);
|
|
++scriptCycles;
|
|
}
|
|
|
|
if (script == 5)
|
|
{
|
|
Draw( aEgo'sClothes); [ Draw his clothes.
|
|
}
|
|
|
|
if (script == 6)
|
|
{
|
|
SetView( ego, vEgoInHotTub);
|
|
SetLoop( ego, FACING_LEFT); [ Leaping into tub loop.
|
|
SetCel( ego, 0);
|
|
CycleTime( ego, two);
|
|
MoveObj( ego, 85, 102, DRESSING_SPEED, scriptDone);
|
|
}
|
|
|
|
if (script == 7)
|
|
{
|
|
LastCel( ego, work);
|
|
SetCelV( ego, work);
|
|
StopCycling( ego);
|
|
Reset( keepCycling);
|
|
Set( noCycling);
|
|
StopMotion( ego);
|
|
RepositionTo( ego, 86, 102);
|
|
scriptTimer = 4;
|
|
}
|
|
|
|
if (script == 8)
|
|
{
|
|
Set( egoInHotTub);
|
|
AcceptInput();
|
|
Print( 2);
|
|
script = 0;
|
|
}
|
|
|
|
|
|
|
|
[ Leave the eve in the tub.
|
|
|
|
if (script == 101)
|
|
{
|
|
scriptTimer = 0;
|
|
if (lookingAtEve)
|
|
{
|
|
Set( cutToLongShot);
|
|
--script; [ Let's try again next pass.
|
|
Set( scriptDone);
|
|
}
|
|
else
|
|
{
|
|
script = 102;
|
|
}
|
|
}
|
|
|
|
if (script == 102)
|
|
{
|
|
SetLoop( ego, 0); [ Leaping out of the tub loop.
|
|
SetCel( ego, 0);
|
|
scriptCycles = HOT_TUB_SPEED;
|
|
CycleTime( ego, scriptCycles);
|
|
MulN( scriptCycles, 9); [ So we change on cel 8.
|
|
Set( keepCycling);
|
|
Reset( noCycling);
|
|
EndOfLoop( ego, scriptDone);
|
|
}
|
|
|
|
if (script == 103)
|
|
{
|
|
SetView( ego, vEgoUndressing);
|
|
SetLoop( ego, FACING_RIGHT); [ Ego undressing, reversed.
|
|
LastCel( ego, work);
|
|
SetCelV( ego, work);
|
|
RepositionTo( ego, 90, 103);
|
|
Set( keepCycling);
|
|
BeginningOfLoop( ego, scriptDone);
|
|
|
|
scriptCycles = HOT_TUB_SPEED;
|
|
CycleTime( ego, scriptCycles);
|
|
MulN( scriptCycles, 9);
|
|
}
|
|
|
|
if (script == 104)
|
|
{
|
|
Erase( aEgo'sClothes);
|
|
}
|
|
|
|
if (script == 105)
|
|
{
|
|
Reset( programControl);
|
|
Reset( keepCycling);
|
|
Reset( egoInHotTub);
|
|
Reset( handsOff);
|
|
script = 0;
|
|
AcceptInput();
|
|
|
|
ReleasePriority( ego);
|
|
ObserveBlocks( ego);
|
|
SetView( ego, vEgo);
|
|
CycleTime( ego, one);
|
|
StepSize( ego, one);
|
|
StartMotion( ego);
|
|
}
|
|
|
|
|
|
|
|
[ Gave her the apple. Take the eve to the bedroom!
|
|
|
|
if (script == 201)
|
|
{
|
|
Set( gaveEveApple);
|
|
Set( eveGone);
|
|
Drop( iApple);
|
|
currentScore += 15;
|
|
|
|
SetCel( aMouth, C_SMILE);
|
|
ForceUpdate( aMouth);
|
|
mouthTimer = 0; [ Keep smiling from now on.
|
|
scriptTimer = 3;
|
|
}
|
|
|
|
if (script == 202)
|
|
{
|
|
Print( 5);
|
|
scriptTimer = 5;
|
|
}
|
|
|
|
if (script == 203)
|
|
{
|
|
Print( 6);
|
|
scriptTimer = 5;
|
|
}
|
|
|
|
if (script == 204)
|
|
{
|
|
Print( 17);
|
|
scriptTimer = 5;
|
|
}
|
|
|
|
if (script == 205)
|
|
{
|
|
Print( 24);
|
|
scriptTimer = 3;
|
|
}
|
|
|
|
if (script == 206)
|
|
{
|
|
if (lookingAtEve)
|
|
{
|
|
Set( cutToLongShot);
|
|
--script; [ Let's try again next pass.
|
|
Set( scriptDone);
|
|
}
|
|
else
|
|
{
|
|
script = 207;
|
|
}
|
|
}
|
|
|
|
if (script == 207)
|
|
{
|
|
StartUpdate( aEve);
|
|
work = HOT_TUB_SPEED;
|
|
CycleTime( aEve, work);
|
|
EndOfLoop( aEve, scriptDone);
|
|
|
|
scriptCycles = 3;
|
|
MulN( scriptCycles, HOT_TUB_SPEED);
|
|
++scriptCycles;
|
|
}
|
|
|
|
if (script == 208)
|
|
{
|
|
StartUpdate( aEve'sTowel);
|
|
Erase( aEve'sTowel);
|
|
}
|
|
|
|
if (script == 209)
|
|
{
|
|
SetView( aEve, vEve);
|
|
SetLoop( aEve, L_WALKING_RIGHT);
|
|
ReleasePriority( aEve);
|
|
RepositionTo( aEve, 78, 90);
|
|
CycleTime( aEve, one);
|
|
StartCycling( aEve);
|
|
MoveObj( aEve, 90, 90, 1, scriptDone);
|
|
|
|
Print( 22);
|
|
|
|
SetLoop( ego, 0); [ Leaping out of the tub loop.
|
|
SetCel( ego, 0);
|
|
FixLoop( ego);
|
|
work = HOT_TUB_SPEED;
|
|
CycleTime( ego, work);
|
|
Set( keepCycling);
|
|
Reset( noCycling);
|
|
EndOfLoop( ego, scriptDone);
|
|
}
|
|
|
|
if (script == 210)
|
|
{
|
|
MoveObj( aEve, 105, 105, 1, scriptDone);
|
|
}
|
|
|
|
if (script == 211)
|
|
{
|
|
Print( 27); [ "You ARE glad to see me!"
|
|
StopCycling( aEve);
|
|
}
|
|
|
|
if (script == 212) [ Here's the sex change operation.
|
|
{
|
|
GetPosn( aEve, sourceX, sourceY);
|
|
SetView( aEve, vEgoWearingTowel);
|
|
StopCycling( aEve);
|
|
NormalMotion( aEve);
|
|
|
|
currentStatus = FOLLOWING_EVE;
|
|
Reset( noCycling);
|
|
Reset( keepCycling);
|
|
SetView( ego, vEve); [ vEgoTransvestite!
|
|
SetLoop( ego, L_WALKING_RIGHT);
|
|
ReleasePriority( ego);
|
|
FixLoop( ego);
|
|
|
|
RepositionTo( aEve, 96, 104);
|
|
RepositionToV( ego, sourceX, sourceY);
|
|
|
|
CycleTime( ego, one);
|
|
StepSize( ego, one);
|
|
MoveObj( ego, 151, 122, 1, scriptDone);
|
|
}
|
|
|
|
if (script == 213)
|
|
{
|
|
Erase( ego); [ Really eve
|
|
currentStatus = 255; [ Who knows?
|
|
CycleTime( aEve, one);
|
|
StepSize( aEve, one);
|
|
MoveObj( aEve, 152, 122, 1, scriptDone); [ Really ego!
|
|
}
|
|
|
|
if (script == 214)
|
|
{
|
|
Reset( handsOff);
|
|
currentStatus = FOLLOWING_EVE;
|
|
newRoom = rmLivingRoom;
|
|
}
|
|
}
|
|
|
|
|
|
if (currentStatus == FOLLOWING_EVE)
|
|
{
|
|
Distance( ego, aEve, work);
|
|
if (work > 10)
|
|
{
|
|
StartCycling( aEve);
|
|
FollowEgo( aEve, 2, done);
|
|
}
|
|
}
|
|
|
|
|
|
if (dollDone)
|
|
{
|
|
Reset( dollDone);
|
|
Reset( handsOff);
|
|
Reset( programControl);
|
|
Reset( dollOnScreen);
|
|
|
|
StartMotion( ego);
|
|
currentStatus = NORMAL;
|
|
Erase( aDoll);
|
|
AcceptInput();
|
|
Print( 26);
|
|
secondsInRoom = 3;
|
|
}
|
|
|
|
if (!dollOnScreen && !beenIn43 && secondsInRoom > 4)
|
|
{
|
|
Set( beenIn43);
|
|
Print( 42);
|
|
Print( 48);
|
|
Print( 49);
|
|
}
|
|
|
|
if (dollSoundDone && dollOnScreen)
|
|
{
|
|
Sound( sDollDeflating, dollSoundDone);
|
|
}
|
|
|
|
|
|
|
|
[*****
|
|
:exit [ test for leaving the room
|
|
[*****
|
|
|
|
|
|
if (edgeEgoHit == RIGHT) {newRoom = rmLivingRoom;}
|
|
|