358 lines
5.3 KiB
Plaintext
358 lines
5.3 KiB
Plaintext
[logics for room 23 -- rmOutsideDisco
|
|
[ "Leisure Suit Larry in the Land of the Lounge Lizards"
|
|
[ by Al Lowe
|
|
|
|
%include "rm23.msg"
|
|
%include "gamedefs.h"
|
|
|
|
|
|
|
|
%define nearBouncer lf0
|
|
%define readMessage lf1
|
|
%define preventBouncer lf2
|
|
%define stopBouncer lf3
|
|
%define bouncerWorking lf4
|
|
|
|
%object aSign1 1
|
|
%object aSign2 2
|
|
%object aSign3 3
|
|
%object aBouncer 4
|
|
|
|
|
|
|
|
if (initLog)
|
|
{
|
|
if (watchHours > 4 && [ Anything after 5 am.
|
|
watchHours < 10)
|
|
{
|
|
NewRoom( rmSunrise);
|
|
}
|
|
|
|
SetHorizon( 76);
|
|
|
|
LoadLogics( lgcStreet);
|
|
|
|
LoadPic( currentRoom);
|
|
DrawPic( currentRoom);
|
|
DiscardPic( currentRoom);
|
|
|
|
LoadView( vDiscoExterior);
|
|
LoadView( vDiscoBouncer);
|
|
|
|
if (slowProcessor)
|
|
{
|
|
AddToPic( vDiscoExterior, 0, 1, 64, 59, 15, 4);
|
|
[view, loop, cel, x, y, obj priority, box priority
|
|
}
|
|
else
|
|
{
|
|
AnimateObj( aSign1);
|
|
IgnoreHorizon( aSign1);
|
|
SetView( aSign1, vDiscoExterior);
|
|
SetLoop( aSign1, 0);
|
|
Position( aSign1, 64, 59);
|
|
SetPriority( aSign1, 15);
|
|
Draw( aSign1);
|
|
}
|
|
|
|
AnimateObj( aSign2);
|
|
IgnoreHorizon( aSign2);
|
|
SetView( aSign2, vDiscoExterior);
|
|
SetLoop( aSign2, 1);
|
|
SetCel( aSign2, 0);
|
|
Position( aSign2, 39, 66);
|
|
CycleTime( aSign2, two);
|
|
Draw( aSign2);
|
|
|
|
AnimateObj( aSign3);
|
|
IgnoreHorizon( aSign3);
|
|
SetView( aSign3, vDiscoExterior);
|
|
SetLoop( aSign3, 1);
|
|
SetCel( aSign3, 1);
|
|
Position( aSign3, 103, 66);
|
|
CycleTime( aSign3, two);
|
|
Draw( aSign3);
|
|
|
|
AnimateObj( aBouncer);
|
|
IgnoreBlocks( aBouncer);
|
|
SetView( aBouncer, vDiscoBouncer);
|
|
SetCel( aBouncer, 0);
|
|
|
|
if (previousRoom == rmInsideDisco)
|
|
{
|
|
IgnoreBlocks( ego);
|
|
Set( preventBouncer);
|
|
Position( aBouncer, 73, 120);
|
|
|
|
egoX = 77;
|
|
egoY = 83;
|
|
}
|
|
else
|
|
{
|
|
Position( aBouncer, 76, 120);
|
|
ObserveBlocks( ego);
|
|
|
|
if (previousRoom != rmOutside7_11 &&
|
|
previousRoom != rmDarkAlley)
|
|
{
|
|
egoX = 77;
|
|
egoY = 146;
|
|
}
|
|
}
|
|
PositionV( ego, egoX, egoY);
|
|
Draw( ego);
|
|
|
|
Draw( aBouncer);
|
|
StopUpdate( aBouncer);
|
|
|
|
Call( lgcStreet);
|
|
|
|
ShowPic( );
|
|
|
|
Return( );
|
|
|
|
} [ end initLOG
|
|
|
|
|
|
|
|
Reset( nearBouncer);
|
|
if (Posn( ego, 65, 120, 91, 127))
|
|
{
|
|
Set( nearBouncer);
|
|
Set( nearPerson);
|
|
}
|
|
|
|
|
|
[*****
|
|
:handleInput
|
|
[*****
|
|
|
|
if (!haveInput) {goto noInput;}
|
|
|
|
if ((Said( look) ||
|
|
Said( look, building) ||
|
|
Said( look, room) ||
|
|
Said( look, disco)))
|
|
{
|
|
Print( 1);
|
|
}
|
|
|
|
if (Said( look, light))
|
|
{
|
|
Print( 16);
|
|
}
|
|
|
|
if (Said( look, fireplug))
|
|
{
|
|
Print( 24);
|
|
}
|
|
|
|
if (Said( look, building))
|
|
{
|
|
Print( 14);
|
|
Print( 15);
|
|
}
|
|
|
|
|
|
|
|
[ Here's the bouncer's stuff:
|
|
|
|
if ((Said( talk, man) ||
|
|
Said( talk)))
|
|
{
|
|
if (!nearBouncer)
|
|
{
|
|
Set( notCloseEnough);
|
|
}
|
|
else
|
|
{
|
|
if (preventBouncer)
|
|
{
|
|
Print( 7);
|
|
}
|
|
else
|
|
{
|
|
Print( 2);
|
|
Print( 5);
|
|
}
|
|
}
|
|
}
|
|
|
|
if ((Said( look, man) ||
|
|
Said( look)))
|
|
{
|
|
if (preventBouncer)
|
|
{
|
|
Print( 10);
|
|
}
|
|
else
|
|
{
|
|
Print( 11);
|
|
}
|
|
}
|
|
|
|
if ((Said( move, man) ||
|
|
Said( push, man)))
|
|
{
|
|
if (!nearBouncer)
|
|
{
|
|
Set( notCloseEnough);
|
|
}
|
|
else
|
|
{
|
|
Print( 17);
|
|
}
|
|
}
|
|
|
|
|
|
if ((Said( hit, man) ||
|
|
Said( kill, man)))
|
|
{
|
|
Print( 12);
|
|
Print( 13);
|
|
}
|
|
|
|
if ((Said( offer, bouncer, money) ||
|
|
Said( offer, money, bouncer) ||
|
|
Said( bribe, bouncer)))
|
|
{
|
|
if (!nearBouncer)
|
|
{
|
|
Set( notCloseEnough);
|
|
}
|
|
else
|
|
{
|
|
Print( 22);
|
|
Print( 23);
|
|
}
|
|
}
|
|
|
|
if ((Said( buy, card, from, man) ||
|
|
Said( pay, man) ||
|
|
Said( ask, man, about, card) ||
|
|
Said( ask, man, card)))
|
|
{
|
|
if (!nearBouncer)
|
|
{
|
|
Set( notCloseEnough);
|
|
}
|
|
else
|
|
{
|
|
Print( 20);
|
|
Print( 21);
|
|
}
|
|
}
|
|
|
|
if ((Said( show, pass) ||
|
|
Said( give, pass, man) ||
|
|
Said( give, man, pass) ||
|
|
Said( give, pass) ||
|
|
Said( show, man, pass) ||
|
|
Said( show, pass, man)))
|
|
{
|
|
if (!Has( iDiscoPass))
|
|
{
|
|
Print( 6);
|
|
}
|
|
else
|
|
{
|
|
if (!nearBouncer)
|
|
{
|
|
Set( notCloseEnough);
|
|
}
|
|
else
|
|
{
|
|
if (preventBouncer)
|
|
{
|
|
Print( 8);
|
|
}
|
|
else
|
|
{
|
|
Print( 4);
|
|
Print( 3);
|
|
Set( preventBouncer);
|
|
StartUpdate( aBouncer);
|
|
SetCel( aBouncer, 0);
|
|
RepositionTo( aBouncer, 73, 120);
|
|
StopUpdate( aBouncer);
|
|
ForceUpdate( aBouncer);
|
|
IgnoreBlocks( ego);
|
|
if (!shownPassToBouncer)
|
|
{
|
|
Set( shownPassToBouncer);
|
|
currentScore += 5;
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
[ Errors, but still I'm gracious enough to handle them...
|
|
|
|
if ((Said( open, door) ||
|
|
Said( knock) ||
|
|
Said( knock, on, door) ||
|
|
Said( knock, door)))
|
|
{
|
|
if (nearTaxi)
|
|
{
|
|
Reset( haveMatch);
|
|
}
|
|
else
|
|
{
|
|
Print( 19);
|
|
}
|
|
}
|
|
|
|
|
|
[*****
|
|
:noInput
|
|
[*****
|
|
|
|
if (!preventBouncer)
|
|
{
|
|
if (nearBouncer && !bouncerWorking)
|
|
{
|
|
Set( bouncerWorking);
|
|
StartUpdate( aBouncer);
|
|
EndOfLoop( aBouncer, stopBouncer);
|
|
}
|
|
else
|
|
{
|
|
if (!nearBouncer && bouncerWorking)
|
|
{
|
|
Reset( bouncerWorking);
|
|
SetCel( aBouncer, 0);
|
|
ForceUpdate( aBouncer);
|
|
Set( stopBouncer);
|
|
}
|
|
}
|
|
|
|
if (stopBouncer)
|
|
{
|
|
Reset( stopBouncer);
|
|
StopUpdate( aBouncer);
|
|
|
|
if (!readMessage)
|
|
{
|
|
Set( readMessage);
|
|
Print( 9);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
[*****
|
|
:exit [ test for leaving the room
|
|
[*****
|
|
|
|
Call( lgcStreet);
|
|
|
|
if (edgeEgoHit == LEFT) {newRoom = rmOutside7_11;}
|
|
if (edgeEgoHit == TOP) {newRoom = rmInsideDisco;}
|
|
if (edgeEgoHit == RIGHT) {newRoom = rmDarkAlley;}
|