Leisure Suit Larry Final Source Set
This commit is contained in:
commit
de70c1581c
101 changed files with 35933 additions and 0 deletions
751
RM41.CG
Normal file
751
RM41.CG
Normal file
|
|
@ -0,0 +1,751 @@
|
|||
[logics for room 41 -- rmHoneymoonSuite
|
||||
[ "Leisure Suit Larry in the Land of the Lounge Lizards"
|
||||
[ by Al Lowe
|
||||
|
||||
%include "rm41.msg"
|
||||
%include "gamedefs.h"
|
||||
|
||||
|
||||
|
||||
%define nearBed lf0
|
||||
%define pouredWine lf1
|
||||
%define nearRadio lf2
|
||||
%define nearDoor lf3
|
||||
%define radioOn lf4
|
||||
%define doorDone lf5
|
||||
%define fawnCycling lf6
|
||||
%define egoCycling lf7
|
||||
%define nearWine lf8
|
||||
|
||||
%define radioTimer lv0
|
||||
%define knifeTimer lv1
|
||||
%define fawnCycles lv2
|
||||
%define egoTiedCycles lv3
|
||||
|
||||
%object aDoor 1
|
||||
%object aFawn 2
|
||||
%object aWine 3
|
||||
%object aRope 4
|
||||
|
||||
|
||||
|
||||
if (initLog)
|
||||
{
|
||||
LoadPic( currentRoom);
|
||||
DrawPic( currentRoom);
|
||||
DiscardPic( currentRoom);
|
||||
|
||||
LoadView( vFireworks);
|
||||
LoadView( vHoneymoonSuiteStuff);
|
||||
LoadView( vFawn);
|
||||
LoadView( vEgoWithFawnRm41);
|
||||
LoadView( vEgoTiedOnBed);
|
||||
[ LoadView( v);
|
||||
|
||||
|
||||
AnimateObj( aDoor);
|
||||
IgnoreBlocks( aDoor);
|
||||
IgnoreObjs( aDoor);
|
||||
SetView( aDoor, vHoneymoonSuiteStuff);
|
||||
SetLoop( aDoor, 1);
|
||||
SetCel( aDoor, 0);
|
||||
SetPriority( aDoor, 10);
|
||||
Position( aDoor, 113, 131);
|
||||
work = DOOR_CYCLE_TIME;
|
||||
CycleTime( aDoor, work);
|
||||
Draw( aDoor);
|
||||
StopUpdate( aDoor);
|
||||
|
||||
Set( fawnInRoom); [ Redundant, since can't enter
|
||||
if (fawnInRoom) [ unless she is in the room!
|
||||
{
|
||||
AnimateObj( aFawn);
|
||||
IgnoreBlocks( aFawn);
|
||||
Position( aFawn, 91, 120);
|
||||
SetView( aFawn, vHoneymoonSuiteStuff);
|
||||
SetLoop( aFawn, 2);
|
||||
Draw( aFawn);
|
||||
StopCycling( aFawn);
|
||||
Random( 22, 44, fawnCycles);
|
||||
}
|
||||
|
||||
|
||||
if (orderedWine)
|
||||
{
|
||||
AnimateObj( aWine);
|
||||
SetView( aWine, vHoneymoonSuiteStuff);
|
||||
SetLoop( aWine, 0);
|
||||
Position( aWine, 89, 95);
|
||||
Draw( aWine);
|
||||
StopUpdate( aWine);
|
||||
}
|
||||
|
||||
|
||||
AnimateObj( aRope);
|
||||
SetView( aRope, vHoneymoonSuiteStuff);
|
||||
SetLoop( aRope, 3);
|
||||
Position( aRope, 74, 124);
|
||||
if (ropeOnBed)
|
||||
{
|
||||
Draw( aRope);
|
||||
StopUpdate( aRope);
|
||||
}
|
||||
|
||||
egoX = 124;
|
||||
egoY = 129;
|
||||
PositionV( ego, egoX, egoY);
|
||||
|
||||
Draw( ego);
|
||||
StartMotion( ego);
|
||||
|
||||
ShowPic( );
|
||||
|
||||
if (orderedWine && !seenDeliveryBoyGag)
|
||||
{
|
||||
Set( seenDeliveryBoyGag);
|
||||
Print( 48);
|
||||
}
|
||||
|
||||
Return( );
|
||||
|
||||
} [ end initLOG
|
||||
|
||||
|
||||
|
||||
Reset( nearRadio);
|
||||
if (Posn( ego, 50, 117, 60, 125))
|
||||
{
|
||||
Set( nearRadio);
|
||||
}
|
||||
|
||||
Reset( nearDoor);
|
||||
if (Posn( ego, 116, 129, 125, 136))
|
||||
{
|
||||
Set( nearDoor);
|
||||
}
|
||||
|
||||
Reset( nearBed);
|
||||
if (Posn( ego, 54, 117, 98, 140))
|
||||
{
|
||||
Set( nearBed);
|
||||
}
|
||||
|
||||
if (nearBed && fawnInRoom)
|
||||
{
|
||||
Set( nearPerson);
|
||||
}
|
||||
|
||||
Reset( nearWine);
|
||||
if (Posn( ego, 92, 117, 103, 126))
|
||||
{
|
||||
Set( nearWine);
|
||||
}
|
||||
|
||||
|
||||
|
||||
[*****
|
||||
:handleInput
|
||||
[*****
|
||||
|
||||
if (!haveInput) {goto noInput;}
|
||||
|
||||
if ((Said( look) ||
|
||||
Said( look, room) ||
|
||||
Said( look, hotel, room) ||
|
||||
Said( look, casino, hotel, room) ||
|
||||
Said( look, suite) ||
|
||||
Said( look, hotel, suite) ||
|
||||
Said( look, casino, hotel, suite) ||
|
||||
Said( look, bedroom)))
|
||||
{
|
||||
if (fawnInRoom)
|
||||
{
|
||||
Print( 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
Print( 2);
|
||||
}
|
||||
}
|
||||
|
||||
if (Said( look, bed))
|
||||
{
|
||||
Print( 55);
|
||||
}
|
||||
|
||||
if (Said( take, bucket))
|
||||
{
|
||||
Print( 56);
|
||||
}
|
||||
|
||||
|
||||
if ((Said( sit) ||
|
||||
Said( sit, down) ||
|
||||
Said( sit, on, bed) ||
|
||||
Said( sit, bed)))
|
||||
{
|
||||
Print( 43);
|
||||
}
|
||||
|
||||
if (Said( open, window))
|
||||
{
|
||||
Print( 44);
|
||||
}
|
||||
|
||||
if ((Said( look, window) ||
|
||||
Said( look, out, window)))
|
||||
{
|
||||
Print( 47);
|
||||
}
|
||||
|
||||
if ((Said( break, window) ||
|
||||
Said( hit, window)))
|
||||
{
|
||||
Print( 52);
|
||||
}
|
||||
|
||||
if ((Said( call, room$service) ||
|
||||
Said( dial, phone) ||
|
||||
Said( use, phone) ||
|
||||
Said( call, phone) ||
|
||||
Said( call, liquor) ||
|
||||
Said( call, liquor, store) ||
|
||||
Said( room$service) ||
|
||||
Said( order, room$service) ||
|
||||
Said( dial, room$service)))
|
||||
{
|
||||
Print( 35);
|
||||
}
|
||||
|
||||
|
||||
if ((Said( look, wine, rol) ||
|
||||
Said( look, bucket, rol)))
|
||||
{
|
||||
if (!orderedWine)
|
||||
{
|
||||
Print( 31);
|
||||
}
|
||||
else
|
||||
{
|
||||
Print( 49);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ((Said( serve, wine) ||
|
||||
Said( get, wine, rol) ||
|
||||
Said( open, wine, rol) ||
|
||||
Said( fill, glasses) ||
|
||||
Said( pour, wine, into, glasses) ||
|
||||
Said( open, bottle, rol) ||
|
||||
Said( pour, wine, glasses) ||
|
||||
Said( give, fawn, wine) ||
|
||||
Said( give, wine, fawn) ||
|
||||
Said( drink, wine, rol) ||
|
||||
Said( pour, wine)))
|
||||
{
|
||||
if (!orderedWine)
|
||||
{
|
||||
Print( 31);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (currentStatus == TIED_TO_BED)
|
||||
{
|
||||
Print( 32);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!nearWine)
|
||||
{
|
||||
Set( notCloseEnough);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!fawnInRoom)
|
||||
{
|
||||
Print( 33);
|
||||
}
|
||||
else
|
||||
{
|
||||
Print( 34);
|
||||
Set( pouredWine);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (fawnInRoom)
|
||||
{
|
||||
if (Said( look, fawn))
|
||||
{
|
||||
if (pouredWine)
|
||||
{
|
||||
Print( 20);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (orderedWine)
|
||||
{
|
||||
Print( 30);
|
||||
}
|
||||
else
|
||||
{
|
||||
Print( 17);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((Said( talk, fawn) ||
|
||||
Said( touch, fawn) ||
|
||||
Said( lick, fawn) ||
|
||||
Said( eat, fawn) ||
|
||||
Said( kiss, fawn)))
|
||||
{
|
||||
if (!orderedWine)
|
||||
{
|
||||
Random( 18, 19, message);
|
||||
PrintV( message);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!pouredWine)
|
||||
{
|
||||
Print( 28);
|
||||
}
|
||||
else
|
||||
{
|
||||
Print( 29);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ((Said( hump, rol) ||
|
||||
Said( get, naked) ||
|
||||
Said( hump, pussy) ||
|
||||
Said( sleep, fawn) ||
|
||||
Said( go, sleep) ||
|
||||
Said( sleep, with, fawn) ||
|
||||
Said( remove, clothes, rol) ||
|
||||
Said( strip, rol) ||
|
||||
Said( go, bed) ||
|
||||
Said( climb, bed) ||
|
||||
Said( undress, rol) ||
|
||||
Said( remove, clothes, rol) ||
|
||||
Said( remove, girl, clothes, rol) ||
|
||||
Said( get, on, bed) ||
|
||||
Said( get, bed) ||
|
||||
Said( lie, on, bed) ||
|
||||
Said( lie, bed) ||
|
||||
Said( lie, down) ||
|
||||
Said( climb, on, rol)))
|
||||
{
|
||||
if (!orderedWine)
|
||||
{
|
||||
Print( 10);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!pouredWine)
|
||||
{
|
||||
Print( 28);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!nearBed)
|
||||
{
|
||||
Set( notCloseEnough);
|
||||
}
|
||||
else
|
||||
{
|
||||
script = 0;
|
||||
Set( scriptDone);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (Said( look, radio))
|
||||
{
|
||||
Print( 36);
|
||||
}
|
||||
|
||||
if (Said( take, radio))
|
||||
{
|
||||
Print( 50);
|
||||
Print( 51);
|
||||
}
|
||||
|
||||
if ((Said( turn, channel, rol) ||
|
||||
Said( turn, dial, rol) ||
|
||||
Said( change, channel, rol)))
|
||||
{
|
||||
if (radioOn)
|
||||
{
|
||||
Print( 45);
|
||||
}
|
||||
else
|
||||
{
|
||||
Print( 46);
|
||||
}
|
||||
}
|
||||
|
||||
if ((Said( turn, on, radio) ||
|
||||
Said( listen, radio) ||
|
||||
Said( turn, knob, on, radio) ||
|
||||
Said( turn, knob, on, radio, on) ||
|
||||
Said( turn, knob, radio) ||
|
||||
Said( turn, knob) ||
|
||||
Said( turn, on, knob) ||
|
||||
Said( turn, knob, on) ||
|
||||
Said( turn, radio, knob) ||
|
||||
Said( turn, radio, knob, on) ||
|
||||
Said( turn, radio, on)))
|
||||
{
|
||||
if (!nearRadio)
|
||||
{
|
||||
Set( notCloseEnough);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (radioOn)
|
||||
{
|
||||
Print( 38);
|
||||
}
|
||||
else
|
||||
{
|
||||
Set( radioOn);
|
||||
Print( 7);
|
||||
if (!orderedWine)
|
||||
{
|
||||
Random( 5, 15, radioTimer);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((Said( turn, off, radio) ||
|
||||
Said( turn, knob, on, radio, off) ||
|
||||
Said( turn, radio, knob, off) ||
|
||||
Said( stop, listen, radio) ||
|
||||
Said( turn, radio, off)))
|
||||
{
|
||||
if (!nearRadio)
|
||||
{
|
||||
Set( notCloseEnough);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!radioOn)
|
||||
{
|
||||
Print( 37);
|
||||
}
|
||||
else
|
||||
{
|
||||
Reset( radioOn);
|
||||
Print( 9);
|
||||
radioTimer = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (currentStatus == TIED_TO_BED)
|
||||
{
|
||||
if ((Said( untie, ropes) ||
|
||||
Said( loosen, ropes)))
|
||||
{
|
||||
Print( 15);
|
||||
}
|
||||
|
||||
if ((Said( use, knife) ||
|
||||
Said( use, knife, cut, rope) ||
|
||||
Said( open, knife, rol) ||
|
||||
Said( get, knife, rol) ||
|
||||
Said( cut, rope, rol)))
|
||||
{
|
||||
if (!Has( iPocketKnife))
|
||||
{
|
||||
Print( 11);
|
||||
}
|
||||
else
|
||||
{
|
||||
Print( 12);
|
||||
|
||||
ReleasePriority( ego);
|
||||
Reset( handsOff);
|
||||
Reset( programControl);
|
||||
StartMotion( ego);
|
||||
SetView( ego, vEgo);
|
||||
SetLoop( ego, FACING_RIGHT);
|
||||
RepositionTo( ego, 89, 130);
|
||||
Reset( keepCycling);
|
||||
currentStatus = NORMAL;
|
||||
currentScore += 10;
|
||||
egoTiedCycles = 0;
|
||||
|
||||
Draw( aRope);
|
||||
StopUpdate( aRope);
|
||||
Set( ropeOnBed);
|
||||
Print( 24);
|
||||
}
|
||||
}
|
||||
|
||||
if (Said( yell))
|
||||
{
|
||||
Print( 57);
|
||||
Print( 58);
|
||||
}
|
||||
|
||||
if (!haveMatch)
|
||||
{
|
||||
Print( 16);
|
||||
Set( haveMatch);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (ropeOnBed &&
|
||||
(Said( get, rope) ||
|
||||
Said( take, rope, from, bed) ||
|
||||
Said( take, rope, off, bed) ||
|
||||
Said( take, rope, bed)))
|
||||
{
|
||||
if (!nearBed)
|
||||
{
|
||||
Set( notCloseEnough);
|
||||
}
|
||||
else
|
||||
{
|
||||
Reset( ropeOnBed);
|
||||
currentScore += 3;
|
||||
Get( iRope);
|
||||
StartUpdate( aRope);
|
||||
Erase( aRope);
|
||||
Print( 13);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (Said( open, door))
|
||||
{
|
||||
if (!nearDoor)
|
||||
{
|
||||
Print( 54);
|
||||
}
|
||||
else
|
||||
{
|
||||
Set( OK);
|
||||
StartUpdate( aDoor);
|
||||
EndOfLoop( aDoor, doorDone);
|
||||
StopMotion( ego);
|
||||
Set( programControl);
|
||||
}
|
||||
}
|
||||
|
||||
if (Said( break, bottle, rol))
|
||||
{
|
||||
Print( 53);
|
||||
}
|
||||
|
||||
|
||||
|
||||
[*****
|
||||
:noInput
|
||||
[*****
|
||||
|
||||
if (aSecondPassed)
|
||||
{
|
||||
--radioTimer;
|
||||
if (radioTimer == 1)
|
||||
{
|
||||
Print( 4);
|
||||
Print( 5);
|
||||
Print( 6);
|
||||
Print( 8);
|
||||
Random( 60, 120, radioTimer);
|
||||
if (!heardLiquorStoreNumber)
|
||||
{
|
||||
Set( heardLiquorStoreNumber);
|
||||
currentScore += 1;
|
||||
}
|
||||
}
|
||||
|
||||
--knifeTimer;
|
||||
if (knifeTimer == 1)
|
||||
{
|
||||
Print( 14);
|
||||
Set( certainDeath);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (scriptDone)
|
||||
{
|
||||
Reset( scriptDone);
|
||||
++script;
|
||||
|
||||
if (script == 1)
|
||||
{
|
||||
Print( 21);
|
||||
Print( 22);
|
||||
|
||||
Erase( aFawn);
|
||||
SetView( aFawn, vFawn);
|
||||
SetLoop( aFawn, FACING_RIGHT);
|
||||
Position( aFawn, 89, 129);
|
||||
IgnoreObjs( aFawn);
|
||||
fawnCycles = 0;
|
||||
|
||||
StopMotion( ego);
|
||||
SetPriority( ego, 15);
|
||||
SetView( ego, vEgoWithFawnRm41);
|
||||
SetCel( ego, 0);
|
||||
Set( handsOff);
|
||||
RepositionTo( ego, 62, 125);
|
||||
Set( programControl);
|
||||
Reset( keepCycling);
|
||||
PreventInput();
|
||||
currentStatus = TIED_TO_BED;
|
||||
|
||||
scriptTimer = 7;
|
||||
}
|
||||
|
||||
if (script == 2)
|
||||
{
|
||||
Print( 23);
|
||||
scriptTimer = 5;
|
||||
}
|
||||
|
||||
if (script == 3)
|
||||
{
|
||||
Print( 39);
|
||||
Print( 59);
|
||||
scriptTimer = 5;
|
||||
}
|
||||
|
||||
if (script == 4)
|
||||
{
|
||||
Print( 40);
|
||||
scriptTimer = 4;
|
||||
}
|
||||
|
||||
if (script == 5)
|
||||
{
|
||||
Print( 42);
|
||||
SetCel( ego, 2);
|
||||
scriptTimer = 6;
|
||||
}
|
||||
|
||||
if (script == 6)
|
||||
{
|
||||
Print( 26);
|
||||
|
||||
if (dollars > 10)
|
||||
{
|
||||
dollars = 10;
|
||||
}
|
||||
else
|
||||
{
|
||||
dollars = 1;
|
||||
}
|
||||
|
||||
SetView( ego, vEgoTiedOnBed);
|
||||
Set( handsOff);
|
||||
RepositionTo( ego, 64, 133);
|
||||
egoTiedCycles = 2;
|
||||
|
||||
Draw( aFawn);
|
||||
StartCycling( aFawn);
|
||||
MoveObj( aFawn, 118, 129, 1, scriptDone);
|
||||
}
|
||||
|
||||
if (script == 7)
|
||||
{
|
||||
StopCycling( aFawn);
|
||||
StartUpdate( aDoor);
|
||||
EndOfLoop( aDoor, scriptDone);
|
||||
}
|
||||
|
||||
if (script == 8)
|
||||
{
|
||||
Print( 27);
|
||||
StartCycling( aFawn);
|
||||
MoveObj( aFawn, 129, 129, 1, scriptDone);
|
||||
}
|
||||
|
||||
if (script == 9)
|
||||
{
|
||||
Erase( aFawn);
|
||||
BeginningOfLoop( aDoor, scriptDone);
|
||||
}
|
||||
|
||||
if (script == 10)
|
||||
{
|
||||
script = 0;
|
||||
|
||||
Print( 60);
|
||||
Print( 61);
|
||||
AcceptInput();
|
||||
Reset( fawnInRoom);
|
||||
StopUpdate( aDoor);
|
||||
if (!Has( iPocketKnife))
|
||||
{
|
||||
knifeTimer = 30;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
--egoTiedCycles;
|
||||
if (egoTiedCycles == 1)
|
||||
{
|
||||
Toggle( egoCycling);
|
||||
if (egoCycling)
|
||||
{
|
||||
Set( keepCycling);
|
||||
Random( 5, 22, egoTiedCycles);
|
||||
}
|
||||
else
|
||||
{
|
||||
Reset( keepCycling);
|
||||
Random( 22, 44, egoTiedCycles);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
--fawnCycles;
|
||||
if (fawnCycles == 1)
|
||||
{
|
||||
Toggle( fawnCycling);
|
||||
if (fawnCycling)
|
||||
{
|
||||
StartCycling( aFawn);
|
||||
Random( 5, 22, fawnCycles);
|
||||
}
|
||||
else
|
||||
{
|
||||
StopCycling( aFawn);
|
||||
Random( 22, 44, fawnCycles);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
[*****
|
||||
:exit [ test for leaving the room
|
||||
[*****
|
||||
|
||||
if (doorDone)
|
||||
{
|
||||
Reset( programControl);
|
||||
Reset( handsOff);
|
||||
newRoom = rmElevators;
|
||||
}
|
||||
Loading…
Reference in a new issue