[logics for room 24 -- rmInsideDisco [ "Leisure Suit Larry in the Land of the Lounge Lizards" [ by Al Lowe %include "rm24.msg" %include "gamedefs.h" [ must be seated to see closeup of face, and give her stuff. [ normal cel if nothing happens, else happy cel if gift, or said something [nice. "Pouty" face if said something nasty, or bad breath. [ To return to long shot, say leave table, or dance with Fawn [ if says something rude, add.to.pic mean look, change rooms, and she walks [away. He has to leave, then enter again. [ %flag gaveFawnFlowers 71 [ These are pertinent globals. [ %flag gaveFawnCandy 72 [ %flag gaveFawnRing 73 [ %flag dancedWithFawn 74 #define L_DANCE_FLOOR 0 #define L_LIGHTS 1 #define TALK_TIME 4 #define L_FAWN_SITTING 0 #define L_EGO_SITTING 1 #define L_HEAD_RIGHT 1 #define L_HEAD_UP 2 %define cutToLongShot lf0 %define nearChair lf1 %define nearFawn lf2 %define fawnAtTable lf3 %define fawnCycling lf4 %define lookingAtFawn lf5 %define fawnOnDanceFloor lf6 %define cutToCloseup lf8 %define nearFawnChair lf10 %define fawnLeaving lf11 %define fawnScriptDone lf12 %define turnHeadsToFloor lf13 %define turnHeadsToTable lf14 %define fawnCycles lv0 %define fawnScript lv8 %object aFloor 1 %object aLights 2 %object aFawn 5 if (initLog) { SetHorizon( 1); AcceptInput(); LoadPic( currentRoom); DrawPic( currentRoom); DiscardPic( currentRoom); LoadView( vEgo); LoadView( vEgoAndFawnSitting); LoadView( vDiscoCustomers); LoadView( vFawn); [ Add the tables, and customer-bodies. AddToPic( vDiscoCustomers, 0, 0, 115, 120, 11, 0); AddToPic( vDiscoCustomers, 0, 1, 24, 132, 0, 0); AddToPic( vDiscoCustomers, 0, 2, 24, 159, 0, 0); AddToPic( vDiscoCustomers, 0, 3, 105, 108, 4, 4); AddToPic( vDiscoCustomers, 0, 4, 49, 158, 0, 0); AddToPic( vDiscoCustomers, 0, 5, 98, 108, 4, 4); [view, loop, cel, x, y, obj priority, box priority [ Add the customers-heads. AddToPic( vDiscoCustomers, L_HEAD_RIGHT, 1, 24, 112, 12, 4); AddToPic( vDiscoCustomers, L_HEAD_RIGHT, 2, 24, 139, 14, 4); AddToPic( vDiscoCustomers, L_HEAD_RIGHT, 3, 105, 89, 4, 4); AddToPic( vDiscoCustomers, L_HEAD_RIGHT, 4, 49, 138, 14, 4); AddToPic( vDiscoCustomers, L_HEAD_RIGHT, 5, 98, 90, 4, 4); if (makeFawnDance) [ This is it! { LoadSound( mDisco); LoadView( vEgoDiscoing1); LoadView( vEgoDiscoing2); LoadView( vEgoFlingingFawn); LoadView( vFawnDancing); LoadView( vDiscoInterior); AnimateObj( aFloor); IgnoreBlocks( aFloor); IgnoreObjs( aFloor); SetView( aFloor, vDiscoInterior); SetLoop( aFloor, L_DANCE_FLOOR); SetCel( aFloor, 0); Position( aFloor, 34, 123); SetPriority( aFloor, 3); AnimateObj( aLights); SetView( aLights, vDiscoInterior); SetLoop( aLights, L_LIGHTS); SetPriority( aLights, 15); Position( aLights, 47, 24); } AnimateObj( aFawn); SetView( aFawn, vFawn); ReleasePriority( aFawn); StartCycling( aFawn); CycleTime( aFawn, one); Position( aFawn, 130, 122); if (!gaveFawnEverything && !noFawnInDisco && !makeFawnDance && !makeFawnSplit) [ Sit her ass down! { Set( fawnAtTable); SetView( aFawn, vEgoAndFawnSitting); SetLoop( aFawn, L_FAWN_SITTING); SetPriority( aFawn, 11); Position( aFawn, 129, 119); Draw( aFawn); CycleTime( aFawn, two); StopCycling( aFawn); Random( 22, 44, fawnCycles); } if (previousRoom == rmFawnCloseup) { SetView( ego, vEgoAndFawnSitting); SetLoop( ego, L_EGO_SITTING); SetPriority( ego, 11); StopMotion( ego); Set( programControl); currentStatus = SITTING; egoX = 116; egoY = 119; if (makeFawnSplit) { Reset( makeFawnSplit); Draw( aFawn); Set( fawnScriptDone); fawnScript = 100; fawnCycles = 0; } if (makeFawnDance) { Reset( makeFawnDance); Draw( aFawn); Set( scriptDone); script = 3; } } else { moneyTimer = 0; egoX = 76; egoY = 167; } PositionV( ego, egoX, egoY); Draw( ego); ShowPic( ); Return( ); } [ end initLOG Reset( nearChair); if (Posn( ego, 112, 121, 123, 124)) { Set( nearChair); } Reset( nearFawnChair); if (Posn( ego, 124, 121, 141, 124)) { Set( nearFawnChair); } Reset( nearFawn); if (fawnAtTable) { if ((currentStatus == SITTING || Posn( ego, 120, 112, 142, 130))) { Set( nearFawn); Set( nearPerson); } } [***** :handleInput [***** if (!haveInput) {goto noInput;} if ((Said( sit) || [ Can only sit or stand if Said( sit, with, girl, rol) || [ Fawn baby is dancing. Said( sit, down, rol) || Said( sit, chair, rol) || Said( sit, table, rol))) { if (currentStatus == SITTING) { Print( 38); } else { if (nearFawnChair) { if (!fawnAtTable) { Print( 62); } else { Print( 66); } } else { if (!nearChair) { Set( notCloseEnough); } else { if (!fawnAtTable) { Print( 53); } else { if (satWithFawn) { Set( OK); } else { Set( satWithFawn); currentScore += 1; Print( 29); Print( 30); Print( 31); } } SetView( ego, vEgoAndFawnSitting); SetLoop( ego, L_EGO_SITTING); RepositionTo( ego, 116, 119); SetPriority( ego, 11); ForceUpdate( ego); StopMotion( ego); Set( programControl); currentStatus = SITTING; } } } } if ((Said( stand) || Said( get$up, rol) || Said( get, off, chair) || Said( stop, looking, fawn) || Said( look, away) || Said( look, away, from, fawn) || Said( leave, rol) || Said( stand, up, rol))) { if (currentStatus != SITTING) { Print( 39); } else { Set( OK); Set( makeEgoRise); } } if (!haveMatch && fawnOnDanceFloor) [ This catches all other messages { [ if Fawn is dancing. Print( 2); Set( haveMatch); } if ((Said( order, drink) || Said( buy, whiskey) || Said( buy, wine) || Said( buy, booze) || Said( buy, girl, drink))) { Print( 57); } if ((Said( talk, men) || Said( talk, man))) { Print( 63); } if (fawnAtTable && (Said( look, fawn, rol) || Said( establish$eye$contact, rol))) { if (script) { Print( 6); } else { if (currentStatus != SITTING) { Print( 44); } else { Set( cutToCloseup); } } } if (noFawnInDisco) { if (Said( dance, rol)) { Print( 54); } if ((Said( girl, rol) || Said( anyword, girl, rol))) { Print( 55); } } if ((Said( look) || Said( look, room) || Said( look, tables) || Said( look, tables) || Said( look, disco))) { if (nearFawn) { Print( 61); } else { Print( 1); } } if ((Said( look, dance, floor) || Said( look, floor))) { Print( 40); } if ((Said( look, men) || Said( look, man))) { if (noFawnInDisco) { Print( 5); } else { Print( 41); } } if (Said( look, dj)) { Print( 42); } if (fawnAtTable) { if ((Said( talk, fawn) || Said( say, anyword, fawn))) { if (currentStatus != SITTING) { Print( 44); } else { Print( 45); } } if (nearFawn && (Said( touch, faith, rol) || Said( eat, faith, rol) || Said( hump, faith, rol) || Said( kiss, faith, rol) || Said( touch, tit, rol))) { Print( 60); } if ((Said( dance) || Said( dance, fawn) || Said( dance, me) || Said( dance, with, me) || Said( dance, with, fawn) || Said( you, dance, fawn) || Said( you, dance, me) || Said( you, dance, with, me) || Said( you, dance, with, fawn) || Said( enjoy, dance) || Said( enjoy, dance, with, me) || Said( you, enjoy, dance, rol) || Said( ask, dance, fawn) || Said( ask, fawn, dance) || Said( ask, fawn, dance, rol) || Said( start, dance))) { if (dancedWithFawn) { Print( 59); } else { if (currentStatus != SITTING) { Print( 44); } else { Print( 45); } } } if ((Said( give, fawn, rose) || Said( give, rose, fawn))) { if (!Has( iRose)) { Set( dontHaveIt); } else { if (currentStatus != SITTING) { Print( 44); } else { Print( 45); } } } if ((Said( give, fawn, candy) || Said( give, candy, fawn))) { if (!Has( iCandy)) { Set( dontHaveIt); } else { if (currentStatus != SITTING) { Print( 44); } else { Print( 45); } } } if ((Said( give, fawn, ring) || Said( give, ring, fawn))) { if (!Has( iRing)) { Set( dontHaveIt); } else { if (currentStatus != SITTING) { Print( 44); } else { Print( 45); } } } if ((Said( give, fawn, money) || Said( give, one, money, fawn) || Said( give, fawn, one, dollars) || [ this makes one hundred work Said( give, money, fawn))) { if (currentStatus != SITTING) { Print( 44); } else { Print( 45); } } } [***** :noInput [***** if (makeEgoRise) { Reset( makeEgoRise); SetView( ego, vEgo); SetLoop( ego, FACING_RIGHT); RepositionTo( ego, 116, 121); ReleasePriority( ego); StartMotion( ego); Reset( programControl); currentStatus = NORMAL; } if (script == 6 && onWater) [ Larry finally got out there! { Set( scriptDone); } if (aSecondPassed) { --moneyTimer; if (moneyTimer == 15) { Print( 21); } if (moneyTimer == 1) { Print( 22); Set( noFawnInDisco); [ She's pissed. Set( fawnScriptDone); fawnScript = 100; } } if (scriptDone) { Reset( scriptDone); ++script; if (script == 4) { MoveObj( aFawn, 97, 143, 1, scriptDone); } if (script == 5) { MoveObj( aFawn, 67, 113, 1, scriptDone); } if (script == 6) [ She's on the dance floor. { Set( fawnOnDanceFloor); Set( turnHeadsToFloor); ObjectOnWater( aFawn); SetView( aFawn, vFawnDancing); Wander( aFawn); Draw( aFloor); Draw( aLights); Set( musicDone); if (!onWater) [ Larry's lagging behind { Print( 8); } else { script = 7; } } if (script == 7) [ Larry finally got there, too. { ObserveObjs( aFawn); Set( handsOff); Set( keepCycling); SetView( ego, vEgoDiscoing1); Set( programControl); PreventInput(); Wander( ego); currentStatus = DANCING; scriptTimer = 10; [ Dance a while. } if (script == 8) [ Get Larry in place for the toss. { MoveObj( ego, 53, 110, 1, scriptDone); } if (script == 9) [ Get her in place, too. { IgnoreObjs( aFawn); MoveObj( aFawn, 58, 110, 1, scriptDone); } if (script == 10) [ Grab her, and toss her. { SetView( ego, vEgoFlingingFawn); SetLoop( ego, 0); SetCel( ego, 0); RepositionTo( ego, 50, 110); CycleTime( ego, three); EndOfLoop( ego, scriptDone); Erase( aFawn); ObjectOnAnything( aFawn); SetView( aFawn, vEgoFlingingFawn); SetLoop( aFawn, 1); FixLoop( aFawn); SetCel( aFawn, 0); StopCycling( aFawn); Position( aFawn, 50, 80); [ draw later } if (script == 11) [ Draw her over his head. Go up! { SetLoop( ego, 2); CycleTime( ego, one); Draw( aFawn); MoveObj( aFawn, 50, 16, 6, scriptDone); } if (script == 12) [She's in ceiling. He can let loose. { SetView( ego, vEgoDiscoing2); Wander( ego); Erase( aFawn); SetCel( aFawn, 1); scriptTimer = 12; } if (script == 13) [ Get in place for the catch. { MoveObj( ego, 53, 110, 1, scriptDone); } if (script == 14) [ Here she comes! { SetView( ego, vEgoFlingingFawn); SetLoop( ego, 2); RepositionTo( ego, 50, 110); Draw( aFawn); MoveObj( aFawn, 50, 80, 6, scriptDone); } if (script == 15) [ Got her!! { SetLoop( ego, 0); LastCel( ego, work); SetCelV( ego, work); BeginningOfLoop( ego, scriptDone); Erase( aFawn); ObjectOnWater( aFawn); SetView( aFawn, vFawnDancing); ReleaseLoop( aFawn); StartCycling( aFawn); Position( aFawn, 59, 110); ObserveObjs( aFawn); } if (script == 16) [ Dance together a little while. { SetView( ego, vEgoDiscoing1); RepositionTo( ego, 51, 110); Wander( ego); Draw( aFawn); Wander( aFawn); scriptTimer = 8; } if (script == 17) [ It's over. { StopUpdate( aFloor); Erase( aLights); StopSound(); Reset( musicDone); Reset( keepCycling); SetView( ego, vEgo); NormalMotion( ego); StartMotion( ego); Reset( programControl); currentStatus = NORMAL; ObjectOnAnything( aFawn); SetView( aFawn, vFawn); MoveObj( aFawn, 67, 113, 1, scriptDone); Reset( fawnOnDanceFloor); } if (script == 18) [ "Please return to your seats!" { Reset( handsOff); MoveObj( aFawn, 97, 143, 1, scriptDone); } if (script == 19) { MoveObj( aFawn, 119, 121, 1, scriptDone); } if (script == 20) { MoveObj( aFawn, 130, 121, 1, scriptDone); } if (script == 21) [ Sit and wiggle that leg, baby! { Set( turnHeadsToTable); SetView( aFawn, vEgoAndFawnSitting); SetLoop( aFawn, L_FAWN_SITTING); RepositionTo( aFawn, 129, 119); SetPriority( aFawn, 11); CycleTime( aFawn, two); Random( 22, 44, fawnCycles); script = 0; AcceptInput(); Set( fawnAtTable); if (!dancedWithFawn) { Set( dancedWithFawn); currentScore += 5; } } } if (fawnScriptDone) { Reset( fawnScriptDone); ++fawnScript; if (fawnScript == 101) [ This takes the fawn out the door. { Set( handsOff); Reset( fawnAtTable); SetView( aFawn, vFawn); ReleasePriority( aFawn); StartCycling( aFawn); StartMotion( aFawn); fawnCycles = 0; CycleTime( aFawn, one); IgnoreObjs( aFawn); RepositionTo( aFawn, 130, 123); ForceUpdate( aFawn); MoveObj( aFawn, 122, 123, 1, fawnScriptDone); } if (fawnScript == 102) { MoveObj( aFawn, 77, 167, 1, fawnScriptDone); } if (fawnScript == 103) { Reset( handsOff); fawnScript = 0; Erase( aFawn); AcceptInput(); if (gaveFawnEverything) { Print( 19); } if (noFawnInDisco) { Print( 56); } } } if (!fawnLeaving && fawnAtTable) { --fawnCycles; [ Kick that leg if (fawnCycles == 1) { Toggle( fawnCycling); if (fawnCycling) { StartCycling( aFawn); Random( 5, 22, fawnCycles); } else { StopCycling( aFawn); Random( 22, 44, fawnCycles); } } } if (currentStatus == DANCING) [ leave this section below script! { ObjectOnWater( ego); } else { ObjectOnAnything( ego); } if (musicDone) { Sound( mDisco, musicDone); } if (turnHeadsToTable) { Reset( turnHeadsToTable); AddToPic( vDiscoCustomers, L_HEAD_RIGHT, 1, 24, 112, 12, 4); AddToPic( vDiscoCustomers, L_HEAD_RIGHT, 2, 24, 136, 14, 4); AddToPic( vDiscoCustomers, L_HEAD_RIGHT, 3, 105, 89, 4, 4); AddToPic( vDiscoCustomers, L_HEAD_RIGHT, 4, 49, 136, 14, 4); AddToPic( vDiscoCustomers, L_HEAD_RIGHT, 5, 98, 90, 4, 4); } if (turnHeadsToFloor) { AddToPic( vDiscoCustomers, L_HEAD_UP, 1, 24, 112, 12, 4); AddToPic( vDiscoCustomers, L_HEAD_UP, 2, 24, 136, 14, 4); AddToPic( vDiscoCustomers, L_HEAD_UP, 3, 105, 89, 4, 4); AddToPic( vDiscoCustomers, L_HEAD_UP, 4, 49, 136, 14, 4); AddToPic( vDiscoCustomers, L_HEAD_UP, 5, 98, 90, 4, 4); Reset( turnHeadsToFloor); } [***** :exit [ test for leaving the room [***** if (edgeEgoHit == BOTTOM) {newRoom = rmOutsideDisco;} if (cutToCloseup) { newRoom = rmFawnCloseup; if (!lookedAtFawn) { Set( lookedAtFawn); currentScore += 1; } }