commit de70c1581ce39e10daefaf662dcf2e158f578c42 Author: historicalsource Date: Thu Apr 18 17:13:14 2019 -0400 Leisure Suit Larry Final Source Set diff --git a/BJ.H b/BJ.H new file mode 100644 index 0000000..cae02ae --- /dev/null +++ b/BJ.H @@ -0,0 +1,86 @@ +[ +[ bj.h +[ +[ LEISURE SUIT LARRY IN THE LAND OF THE LOUNGE LIZARDS BLACKJACK HEADER +[ +[ Wednesday, March 4, 1987 at 11:21 p.m. +[ Sunday, May 31, 1987 at 8:56 p.m. +[ + + + +%object aWinner 13 [ Animated objects. +%object aQuestion 14 +%object aCards 15 + + +#define CLUBS 152 [ Defines of view numbers. +#define SPADES 153 +#define HEARTS 154 +#define DIAMONDS 155 +#define BLANK_CARD 156 +#define CARD_BACK 157 + + +%flag pSoftAce 242 [ Flags. +%flag dSoftAce 243 +%flag sSoftAce 244 +%flag showHelpMessage 245 +%flag pBlackjack 246 +%flag dBlackjack 247 +%flag pDoubledDown 248 +%flag sDoubledDown 249 +%flag pSixCardWinner 250 +%flag sSixCardWinner 251 +%flag softAce 252 +%flag waitingForInput 253 +%flag insured 254 +%flag readyToLeave 255 + + +%var oldDTotal 216 +%var oldPTotal 217 +%var oldSTotal 218 +%var clueTimer 219 +%var work2 220 [ Vars. +%var work3 221 +%var dTotal 222 +%var pTotal 223 +%var sTotal 224 +%var sBet 225 +%var pBet 226 +%var insurance 227 +%var winnings 228 +%var function 229 [which function to execute in rm56. + #define DRAW_CARD 1 + #define ERASE_CARD 2 + #define DRAW_FACE_DOWN 3 + #define GET_SUIT_VALUE 4 + #define PAY_WINNER 5 + #define UPDATE_STATUS 6 + #define SHOW_TOTALS 7 + +%var suit 230 +%var value 231 +%var card 232 +%var cardCount 233 [ How many cards are visible. +%var cardToTest 234 +%var currentCard 235 [ Used as a pointer to vars below. +%var handInPlay 236 + #define NONE 0 + #define PLAYER 1 + #define SPLIT 2 + #define DEALER 3 + #define HAND_DONE 255 + + +[ Vars numbered 237 through 254 contain the card values for the 3 hands. +[They are only referenced indirectly, so no defines are needed. + + %define firstCard 237 [ First var containing a card. + %define dFirstCard 237 [ Var numbers of the + %define pFirstCard 243 [ first card of + %define sFirstCard 249 [ each hand. + %define lastCard 254 [ Last var containing a card. + +%var oldBet 255 diff --git a/COLORS.H b/COLORS.H new file mode 100644 index 0000000..9bec9cb --- /dev/null +++ b/COLORS.H @@ -0,0 +1,28 @@ +[ +[ colors.h +[ +[ IBM COLOR DEFINES +[ +[ Sunday, February 22, 1987 at 02:31 p.m. +[ + + + +%define BLACK 0 +%define BLUE 1 +%define GREEN 2 +%define CYAN 3 +%define RED 4 +%define MAGENTA 5 +%define BROWN 6 +%define WHITE 7 +%define GREY 8 +%define GRAY 8 +%define LIGHT_BLUE 9 +%define LIGHT_GREEN 10 +%define LIGHT_CYAN 11 +%define LIGHT_RED 12 +%define LIGHT_MAGENTA 13 +%define YELLOW 14 +%define LIGHT_WHITE 15 + diff --git a/CONTRLRS.H b/CONTRLRS.H new file mode 100644 index 0000000..6ffbe44 --- /dev/null +++ b/CONTRLRS.H @@ -0,0 +1,58 @@ +[ +[ contrlrs.h +[ +[ STANDARD AGI KEY CONTROLLERS +[ +[ Friday, May 15, 1987 at 0:47 a.m. +[ + + + +%define cHelp 1 [ Function keys +%define cSoundToggle 2 +%define cEchoLine 3 +%define cF4 4 +%define cSave 5 +%define cF6 6 +%define cRestore 7 +%define cF8 8 +%define cRestart 9 +%define cSpeed 10 + +%define cStatus 11 [ Control keys +%define cInitJoy 12 +%define cToggleMonitor 13 +%define cCancelLine 14 + +%define cDebug 15 [ Alt keys +%define cShowEgo 16 +%define cShowObj 17 +%define cShowMem 18 +%define cObjInfo 19 +%define cShowPriority 20 +%define cSkipTest 21 +%define cQuit 22 + +%define cMenu 23 [ Menu stuff +%define cDummy 24 +%define cAbout 25 +%define cCalculator 26 +%define cPuzzle 27 +%define cBodilyFunction 28 +%define cClock 29 +%define cPause 30 +%define cSpeedSlow 31 +%define cSpeedNormal 32 +%define cSpeedFast 33 +%define cSpeedFastest 34 + +%define cInvNumbers 35 [ Debug stuff +%define cXY 36 +%define cGimme 37 + +%define cCrescendo 38 [ Tandy odds & ends. +%define cDecrescendo 39 + +%define cVersion 40 +%define cBoss 41 + diff --git a/FLAG_VAR.H b/FLAG_VAR.H new file mode 100644 index 0000000..b85b39d --- /dev/null +++ b/FLAG_VAR.H @@ -0,0 +1,137 @@ +[ +[ lcl_temp.h +[ +[ LEISURE SUIT LARRY IN THE LAND OF THE LOUNGE LIZARDS GAME DEFINITIONS +[ +[ Wednesday, March 11, 1987 at 9:48 a.m. +[ + + + +[ The 30 locals are numbered 200 - 229. The 26 dynamics are numbered +[230 - 255. Every flag and var in this list is reset by every new room. + + + +[ LOCAL FLAGS, for use in room logics. +%flag lf0 200 +%flag lf1 201 +%flag lf2 202 +%flag lf3 203 +%flag lf4 204 +%flag lf5 205 +%flag lf6 206 +%flag lf7 207 +%flag lf8 208 +%flag lf9 209 +%flag lf10 210 +%flag lf11 211 +%flag lf12 212 +%flag lf13 213 +%flag lf14 214 +%flag lf15 215 +%flag lf16 216 +%flag lf17 217 +%flag lf18 218 +%flag lf19 219 +%flag lf20 220 +%flag lf21 221 +%flag lf22 222 +%flag lf23 223 +%flag lf24 224 +%flag lf25 225 +%flag lf26 226 +%flag lf27 227 +%flag lf28 228 +%flag lf29 229 + +[ TEMP FLAGS for use in dynamic logics. +%flag df0 230 +%flag df1 231 +%flag df2 232 +%flag df3 233 +%flag df4 234 +%flag df5 235 +%flag df6 236 +%flag df7 237 +%flag df8 238 +%flag df9 239 +%flag df10 240 +%flag df11 241 +%flag df12 242 +%flag df13 243 +%flag df14 244 +%flag df15 245 +%flag df16 246 +%flag df17 247 +%flag df18 248 +%flag df19 249 +%flag df20 250 +%flag df21 251 +%flag df22 252 +%flag df23 253 +%flag df24 254 +%flag df25 255 + + + +[ LOCAL VARS for use in room logics. +%var lv0 200 +%var lv1 201 +%var lv2 202 +%var lv3 203 +%var lv4 204 +%var lv5 205 +%var lv6 206 +%var lv7 207 +%var lv8 208 +%var lv9 209 +%var lv10 210 +%var lv11 211 +%var lv12 212 +%var lv13 213 +%var lv14 214 +%var lv15 215 +%var lv16 216 +%var lv17 217 +%var lv18 218 +%var lv19 219 +%var lv20 220 +%var lv21 221 +%var lv22 222 +%var lv23 223 +%var lv24 224 +%var lv25 225 +%var lv26 226 +%var lv27 227 +%var lv28 228 +%var lv29 229 + + +[ TEMP VARS for use in dynamic logics. +%var dv0 230 +%var dv1 231 +%var dv2 232 +%var dv3 233 +%var dv4 234 +%var dv5 235 +%var dv6 236 +%var dv7 237 +%var dv8 238 +%var dv9 239 +%var dv10 240 +%var dv11 241 +%var dv12 242 +%var dv13 243 +%var dv14 244 +%var dv15 245 +%var dv16 246 +%var dv17 247 +%var dv18 248 +%var dv19 249 +%var dv20 250 +%var dv21 251 +%var dv22 252 +%var dv23 253 +%var dv24 254 +%var dv25 255 diff --git a/GAMEDEFS.H b/GAMEDEFS.H new file mode 100644 index 0000000..88b29f2 --- /dev/null +++ b/GAMEDEFS.H @@ -0,0 +1,422 @@ +[ +[ gamedefs.h +[ +[ LEISURE SUIT LARRY IN THE LAND OF THE LOUNGE LIZARDS GAME DEFINITIONS +[ +[ Wednesday, June 10, 1987 at 9:00 p.m. +[ + + + +%include "views.h" +%tokens "..\\words.tok" +%include "sysdefs.h" +%include "flag_var.h" + + + +[************ CONSTANTS ************] +#define CYCLES_BEFORE_DEATH 44 +#define TEXT_COLOR 15 +#define BG_COLOR 0 +#define NORMAL_STEP_SIZE 1 +#define FALLING_STEP_SIZE 3 +#define EGO_STUNNED_TIME 5 +#define NOWHERE 0 +#define DOOR_CYCLE_TIME 3 +#define SMILE_SECONDS 5 +#define FROWN_SECONDS 7 +#define INVENTORY 255 + + + +[************ FLAGS ************] +[Only the interpreter can use 0-29 (globals) +[ Any room can use 220-239 (lf's) +[Only dynamic logics can use 240-255 (df's) + +%flag forceAtest 30 +%flag testing 31 +%flag debugging 32 +%flag xyOn 33 +%flag keepCycling 34 +%flag noCycling 35 +%flag ignoreSpecial 36 +%flag ignoreWater 37 +%flag demo 38 +%flag doit 39 +%flag done 40 +%flag egoArrived 41 +%flag clockOn 42 +%flag updateClock 43 +%flag aSecondPassed 44 +%flag myHaveMatch 45 +%flag outOfMemory 46 +%flag survivableFall 47 +%flag handsOff 48 +%flag preventNewRoom 49 +%flag certainDeath 50 +%flag egoDeathDone 51 +%flag musicDone 52 +%flag soundDone 53 +%flag notCloseEnough 54 +%flag alreadyGotIt 55 +%flag TVOn 56 +%flag knowsPassword 57 +%flag smellsLikeDogPiss 58 +%flag toiletPaperOnShoe 59 +%flag lookedAtCabbie 60 +%flag nearTaxi 61 +%flag wearingRubber 62 +%flag scoredHooker 63 +%flag hookerWindowOpen 64 +%flag alleyWindowBroken 65 +%flag mouthOK 66 +%flag OK 67 +%flag dontHaveIt 68 +%flag nearPerson 69 +%flag noFawnInDisco 70 +%flag gaveFawnRose 71 +%flag gaveFawnCandy 72 +%flag gaveFawnRing 73 +%flag dancedWithFawn 74 +%flag scriptDone 75 +%flag faithGone 76 +%flag beenIn43 77 +%flag answeredSurvey 78 +%flag gaveFawnEverything 79 +%flag orderedWine 80 +%flag ropeOnBed 81 +%flag fawnInRoom 82 +%flag unsuccessfulCeremony 83 +%flag eveGone 84 +%flag programControl 85 +%flag egoLoweringDone 86 +%flag preventSaveGame 87 +%flag gaveEveApple 88 +%flag diedOfTheClap 89 +%flag pimpWatchingTV 90 +%flag wornRubber 91 +%flag satWithFawn 92 +%flag betInProgress 93 +%flag boughtWhiskey 94 +%flag lookedAtFawn 95 +%flag talkedToFawn 96 +%flag askedForMoney 97 +%flag gotPimpToWatchTV 98 +%flag paidPimpForWhore 99 +%flag rodeInCab 100 +%flag mouseMachine 101 +%flag twoButtonJoystick 102 +%flag talkedToFlasher 103 +%flag heardLiquorStoreNumber 104 +%flag beenIn11 105 +%flag requestedASaveGame 106 +%flag mouthSmellsBad 107 +%flag typing 108 +%flag passedTest 109 +%flag marriedFawn 110 +%flag seenDeliveryBoyGag 111 +%flag readSideOfPhone 112 +%flag answeredSurveyFirstTime 113 +%flag heardSurveyFirstTime 114 +%flag orderedWineFirstTime 115 +%flag poopedInCan 116 +%flag satOnWhoopieCushion 117 +%flag slowProcessor 118 +%flag shownPassToBouncer 119 +%flag readMagazine 120 +%flag dialedSierra 121 +%flag makeFawnDance 122 +%flag memoryCheck 123 +%flag makeEgoRise 124 [ in disco scene +%flag makeFawnSplit 125 +%flag inflatedDoll 126 +%flag sprayDone 127 +%flag beenInPenthouse 128 +[nextflag + + + +[************ VARS ************] +[Only the interpreter can use 0-29 (globals) +[ Any room can use 220-239 (lv's) +[Only dynamic logics can use 240-255 (dv's) + +%var currentStatus 30 +#define NORMAL 0 +#define DEAD 1 +#define SLEEPING 2 +#define COLLAPSING 3 +#define STUNNED 4 +#define FALLING 5 +#define WALKING 6 +#define ON_BAR_STOOL 7 +#define DRUNK 8 +#define ON_TOILET 9 +#define DROWNING 10 +#define HUMPING_HOOKER 11 +#define LEAVING_WINDOW 12 +#define HANGING_BY_ROPE 13 +#define IN_DUMPSTER 14 +#define RUN_OVER 15 +#define DANCING 16 +#define SITTING 17 +#define IN_ELEVATOR 18 +#define TIED_TO_BED 19 +#define STIFFED_CABBIE 20 +#define PISSING 21 +#define CHASING_DOLL 22 +#define FOLLOWING_EVE 23 +#define DYING_OF_CLAP 25 +#define NAKED 26 +#define RECYCLING 27 +[ #define 28 +[ #define 29 + +%var egoLocation 31 +%var x 32 +%var y 33 +%var sourceX 34 +%var sourceY 35 +%var targetX 36 +%var targetY 37 +%var egoX 38 +%var egoY 39 +%var oldEgoX 40 +%var oldEgoY 41 +%var oldEgoDir 42 +%var oldSeconds 43 +%var oldAnimationInterval 44 + #define FASTEST_SPEED 0 + #define FAST_SPEED 1 + #define NORMAL_SPEED 2 + #define SLOW_SPEED 3 + +%var debug0 45 +%var debug1 46 +%var startClimbing 47 +%var roomBottom 48 +%var zero 49 +%var deathMessage 50 +%var testRoom 51 +%var work 52 +%var view 53 +%var loop 54 +%var cell 55 +%var step 56 +%var priority 57 +%var message 58 +%var egoCycleTime 59 +%var egoStepTime 60 +%var egoStepSize 61 +%var passInRoom 62 +%var secondsInRoom 63 +%var taxiScript 64 + #define TAXI_WAITING 4 + +%var script 65 +%var scriptCycles 66 +%var scriptTimer 67 +%var clearStatusSeconds 68 +%var mouthMessage 69 +%var sprayCount 70 +%var spraySeconds 71 +%var sprayMinutes 72 +#define SPRAY_INIT_MINUTES 10 + +[ %var 73 +[ %var 74 + +%var deathTimer 75 +%var newRoom 76 +%var currentEgoView 77 +%var oldEdgeEgoHit 78 +%var destinationFloor 79 +%var breathSpraySeconds 80 +%var picture 81 +%var TVChannel 82 +%var moneyTimer 83 +%var one 84 +%var two 85 +%var three 86 +%var four 87 +%var five 88 +%var oldLastChar 89 +%var dollars 90 +%var secondsSinceKeystroke 91 +%var answer 92 +%var correctAnswer 93 +%var question 94 +%var questionStatus 95 + %define waiting 1 + %define askAnother 2 + %define allDone 3 + %define waitAwhile 4 + %define waitAwhileAlthoughCorrect 5 + +%var currentQuestion 96 +%var cabFareMin 97 +%var notMovedCycles 98 +%var cabRideLength 99 +%var fawnTalkCount 100 +%var oldCurrentScore 101 +[nextvar +[ %var 102 +[ %var 103 +[ %var 104 +[ %var 105 +[ %var 106 +[ %var 107 +[ %var 108 +[ %var 109 +[ %var 110 +[ %var 111 +[ %var 112 +[ %var 113 +[ %var 114 +%var gameSeconds 115 +%var gameMinutes 116 +%var gameHours 117 +%var gameDays 118 +%var watchHours 119 +#define WATCH_INIT_HOURS 10 + + + + +[*********** ANIMATED OBJECTS ***********] +[Define here all objects shared by multiple rooms. +%object ego 0 +[ %object a 10 +[ %object a 11 +%object aCop 12 +%object aTaxi 13 +%object aDog 14 +%object aCar 15 + + + +[********* INVENTORY OBJECTS **********] + +%object iWallet 1 +%object iBreathSpray 2 +%object iPocketLint 3 +%object iWatch 4 +%object iApple 5 +%object iRing 6 +%object iWhiskey 7 +%object iRemoteControl 8 +%object iRose 9 +%object iRubber 10 +%object iUsedRubber 11 +%object iCandy 12 +%object iDoll 13 +%object iDiscoPass 14 +%object iPocketKnife 15 +%object iWine 16 +%object iMagazine 17 +%object iHammer 18 +%object iPills 19 +%object iRope 20 +#define SIZE_OF_INVENTORY 20 + + + +[********* SOUND EFFECTS **********] +#define sEgoFalling 1 +#define sError 2 +#define sSlots 3 +#define sSlotsWinner 4 +#define sCardsShuffling 5 +#define sCard 6 +#define sBJWinner 7 +#define sDrummer 8 +#define sWhoopieCushion 9 +#define sTaxiTires 10 +#define sDeathCar 11 +#define sPissing 12 +#define sBang 13 +#define sFart 14 +#define sDollDeflating 15 + + +[************ MUSIC *************] +#define mTitle 21 +#define mDog 22 +#define mWedding 23 +#define mWinner 24 +#define mWhoops 25 +#define mAlley 26 +#define mRm14Drunk 27 +#define mRm22Drunk 28 +#define mCop 29 +#define mDisco 30 +#define mCanCan 31 +#define mSunrise 32 +#define mFuneral 33 + + + +[****** ROOM AND PICTURE NAMES ******] +#define rmTitle 1 +#define picCredits1 2 +#define picCredits2 3 +#define picCredits3 4 +#define picFrame 5 +#define rmAgeTest 6 +#define picBlack 7 +#define rmWorkshop 8 +#define rmDarkAlley 9 +#define rmInsideTaxi 10 +#define rmOutsideBar 11 +#define rmAlley 12 +#define rmToilet 13 +#define rmHallway 14 +#define rmInsideBar 15 +#define rmBackroom 16 +#define rmHooker 17 +%define picHookerCloseup 18 +%define rmSunrise 19 +%define rmBoss 20 +#define rmInside7_11 21 +#define rmOutside7_11 22 +#define rmOutsideDisco 23 +#define rmInsideDisco 24 +%define rmFawnCloseup 25 +%define picFaithCloseup 26 +%define picEveCloseup 27 +%define picDollCloseup 28 +%define picBoss2 29 +%define picBoss3 30 +#define rmInsideCasino 31 +#define rmOutsideCasino 32 +#define rmOutsideChapel 33 +#define rmInsideChapel 34 +#define rmElevatorBottom 35 +#define rmLounge 36 +#define rmSlots 37 +#define rmBlackjack 38 +[ %define rm 39 +#define rmElevators 40 +#define rmHoneymoonSuite 41 +#define rmSecurityDesk 42 +#define rmHotTub 43 +#define rmLivingRoom 44 +#define rmBedroom 45 + +#define rmRestart rmOutsideBar + + + +[********** DYNAMIC LOGICS **********] +#define lgcRm0InitLog 50 +#define lgcStartup 51 +#define lgcDebug 52 +#define lgcTrace 53 +#define lgcError 54 +#define lgcHelp 55 +#define lgcBlackjack 56 +#define lgcStreet 57 +#define lgcSlots 58 +#define lgcID 59 diff --git a/IV_NAMES.H b/IV_NAMES.H new file mode 100644 index 0000000..b0f3cd3 --- /dev/null +++ b/IV_NAMES.H @@ -0,0 +1,30 @@ +[ +[ iv_names.h +[ +[ LEISURE SUIT LARRY IN THE LAND OF THE LOUNGE LIZARDS INVENTORY OBJECT NAMES +[ +[ Thursday, May 14, 1987 at 1:20 p.m. +[ + + + +%define Wallet 1 +%define BreathSpray 2 +%define PocketLint 3 +%define Watch 4 +%define Apple 5 +%define Ring 6 +%define Whiskey 7 +%define RemoteControl 8 +%define Rose 9 +%define Rubber 10 +%define UsedRubber 11 +%define Candy 12 +%define Doll 13 +%define DiscoPass 14 +%define PocketKnife 15 +%define Wine 16 +%define Magazine 17 +%define Hammer 18 +%define Pills 19 +%define Rope 20 diff --git a/IV_VIEWS.H b/IV_VIEWS.H new file mode 100644 index 0000000..1e4161b --- /dev/null +++ b/IV_VIEWS.H @@ -0,0 +1,31 @@ +[ +[ iv_views.h +[ +[ LEISURE SUIT LARRY IN THE LAND OF THE LOUNGE LIZARDS INVENTORY VIEWS +[ +[ Saturday, April 4, 1987 at 12:55 p.m. +[ Thursday, May 14, 1987 at 1:20 p.m. +[ + + + +%view ivWallet 101 +%view ivBreathSpray 102 +%view ivPocketLint 103 +%view ivWatch 104 +%view ivApple 105 +%view ivRing 106 +%view ivWhiskey 107 +%view ivRemoteControl 108 +%view ivRose 109 +%view ivRubber 110 +%view ivUsedRubber 111 +%view ivCandy 112 +%view ivDoll 113 +%view ivDiscoPass 114 +%view ivPocketKnife 115 +%view ivWine 116 +%view ivMagazine 117 +%view ivHammer 118 +%view ivPills 119 +%view ivRope 120 diff --git a/OBJECT b/OBJECT new file mode 100644 index 0000000..b73ab55 Binary files /dev/null and b/OBJECT differ diff --git a/OBJECT.TXT b/OBJECT.TXT new file mode 100644 index 0000000..62cfae7 --- /dev/null +++ b/OBJECT.TXT @@ -0,0 +1,40 @@ +[ +[ object.txt +[ +[ LEISURE-SUIT LARRY IN THE LAND OF THE LOUNGE LIZARDS OBJECT TABLES +[ +[ Thursday, May 14, 1987 at 11:06 a.m. +[ + + + +[************* ANIMATED OBJECTS +[.numani # of animated objects + +.numani 16 + + + +[************* INVENTORY OBJECTS +[.obj object#, "Status screen name", room # at beginning of game + +.obj 1, "Wallet", 255 +.obj 2, "Breath Spray", 255 +.obj 3, "Pocket Lint", 255 +.obj 4, "Wrist Watch", 255 +.obj 5, "Apple", 32 +.obj 6, "Diamond Ring", 13 +.obj 7, "Glass of Whiskey", 15 +.obj 8, "Remote Control", 14 +.obj 9, "Rose", 14 +.obj 10, "Prophylactic", 21 +.obj 11, "Used Prophylactic", 0 +.obj 12, "Box of Candy", 17 +.obj 13, "Inflatable Doll", 45 +.obj 14, "Disco Pass", 35 +.obj 15, "Pocket Knife", 22 +.obj 16, "Bottle of Wine", 21 +.obj 17, "\"Jugs\" Magazine", 21 +.obj 18, "Hammer", 12 +.obj 19, "Bottle of Pills", 12 +.obj 20, "Rope", 41 diff --git a/RM0.CG b/RM0.CG new file mode 100644 index 0000000..4065087 --- /dev/null +++ b/RM0.CG @@ -0,0 +1,2300 @@ +[logics for room 0 -- executed before room logics +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm0.msg" +%include "gamedefs.h" +%include "iv_views.h" +%include "contrlrs.h" +%include "colors.h" + + + +if (errorNumber) + { + Call( lgcError); + } + +if (restoreInProgress) + { + Set( enableMenu); + DisableItem( cDummy); + } + +if (!currentRoom) + { +[ Set( debugging); [ REMOVE LATER + if (!restartInProgress) + { + ScriptSize( 144); + + SetMenu( 60); [ "Sierra" + SetMenuItem( 61, cAbout); [ "About" + SetMenuItem( 62, cHelp); [ "Help" + SetMenuItem( 63, cDummy); [ "-------- + SetMenuItem( 64, cCalculator); [ "Calculator" + SetMenuItem( 65, cPuzzle); [ "Puzzle + + SetMenu( 66); [ "File + SetMenuItem( 67, cSave); [ "Save" + SetMenuItem( 68, cRestore); [ "Restore" + SetMenuItem( 69, cDummy); [ "-------- + SetMenuItem( 70, cRestart); [ "Restart" + SetMenuItem( 69, cDummy); [ "-------- + SetMenuItem( 71, cQuit); [ "Quit" + + SetMenu( 72); [ "Action + SetMenuItem( 73, cStatus); [ "Inventory" + SetMenuItem( 74, cShowObj); [ "Look at Object + SetMenuItem( 75, cBodilyFunction); [ "Bodily + + SetMenu( 76); [ "Special + SetMenuItem( 77, cSoundToggle); [ "Sound" + if (machineType == PC && + monitorType != MONO && + monitorType != EGA) + { + SetMenuItem( 78, cToggleMonitor); [ "RGB Monitor + } + if (machineType == ST) + { + SetMenuItem( 97, cInitJoy); [ "Joystick/Mouse" + } + else { + SetMenuItem( 79, cInitJoy); [ "Joystick" + } + SetMenuItem( 80, cClock); [ "Clock + SetMenuItem( 96, cBoss); [ "Boss Key + SetMenuItem( 81, cPause); [ "Pause" + + if (machineType != AMIGA) + { + SetMenu( 82); [ "Speed + SetMenuItem( 83, cSpeedNormal); [ "Normal + SetMenuItem( 84, cSpeedSlow); [ "Slow + SetMenuItem( 85, cSpeedFast); [ "Fast + SetMenuItem( 86, cSpeedFastest); [ "Fastest + SetMenuItem( 69, cDummy); [ "-------- + SetMenuItem( 87, cSpeed); [ "Slower + } + +[ if (debugging) +[ { +[ SetMenu( 88); [ "Debug +[ SetMenuItem( 89, cShowEgo); [ "Ego Info +[ SetMenuItem( 90, cShowPriority); [ "Priority Screen +[ SetMenuItem( 91, cShowMem); [ "Memory Usage +[ SetMenuItem( 92, cObjInfo); [ "Obj info +[ SetMenuItem( 93, cXY); [ "X/Y Display +[ SetMenuItem( 94, cGimme); [ "Get All Objects +[ SetMenuItem( 95, cInvNumbers); [ "Object Numbers +[ } + + SubmitMenu(); + } + + Call( lgcStartup); + + if (testRoom) + { + NewRoomV( testRoom); + } + + if (restartInProgress) + { + NewRoom( rmRestart); + } + + NewRoom( rmTitle); + } + + + +if (clockOn && + (updateClock || initLog)) + { + Reset( updateClock); + SetTextAttribute( 0, 15); + Display( 0, 20, 30); + SetTextAttribute( TEXT_COLOR, BG_COLOR); + } + + +if (initLog) + { + Call( lgcRm0InitLog); [ call and toss initLog Resets + + if (debugging) + { + LoadLogics( lgcDebug); + LoadLogics( lgcTrace); + Set( enableTrace); + } + + LoadViewV( currentEgoView); + SetViewV( ego, currentEgoView); + + CallV( currentRoom); + + + [ DO NOT Return(); here. + + } [ end initLogs + + + +[***** +[ FIRST, A LITTLE HOUSEKEEPING +[***** + +GetPosn( ego, egoX, egoY); +CurrentView( ego, currentEgoView); +Reset( nearPerson); + +if (ignoreSpecial) + { + Reset( hitSpecial); + } + +if (ignoreWater) + { + Reset( onWater); + } + +if (preventNewRoom) + { + edgeEgoHit = 0; + } + + + +[***** +[ CONTROLLER STUFF +[***** + +if (Controller( cMenu)) {MenuInput();} +if (Controller( cSkipTest)) {Set( passedTest);} +if (Controller( cToggleMonitor)) {ToggleMonitor();} +if (Controller( cInitJoy)) {InitJoy();} + +if (Controller( cSoundToggle)) + { + Toggle( soundOn); + Set( updateClock); + } + +if (machineType == TANDY) + { + if (attenuation < 15 && + Controller( cDecrescendo)) {++attenuation;} + if (Controller( cCrescendo)) {--attenuation;} + } + + +if (passedTest) + { + if (Controller( cEchoLine)) {EchoLine();} + if (Controller( cCancelLine)) {CancelLine();} + + if ((Said( pause) || + controller( cPause))) + { + Pause(); + } + + if (passedTest && + (Said( restart) || + Said( restart, game) || + Said( start, over) || + Controller( cRestart))) + { + RestartGame(); + } + + if (passedTest && + (Said( restore, game) || + Said( restore) || + Controller( cRestore))) + { + RestoreGame(); + } + + if (Controller( cVersion)) + { + Print( 11); + Version(); + } + + if ((Said( quit) || + Controller( cQuit))) + { + StopSound(); + if (debugging) + { + Quit( 1); + } + else + { + Quit( 0); + } + } + + if ((Said( status) || + Said( inventory) || + Controller( cStatus))) + { + Status(); + } + + if (Controller( cClock)) + { + Toggle( clockOn); + if (clockOn) + { + Set( updateClock); + } + else + { + StatusLineOff(); + StatusLineOn(); + } + } + + if (Controller( cDebug)) + { + Toggle( debugging); + if (!debugging) + { + Reset( enableTrace); + } + else + { + LoadLogics( lgcDebug); + LoadLogics( lgcTrace); + Set( enableTrace); + Print( 11); + Version(); + AcceptInput(); + NormalMotion( ego); + Reset( programControl); + } + } + + if (Controller( cHelp)) + { + if (handsOff) + { + Print( 105); + } + else + { + Call( lgcHelp); + } + } + } + + + +if (Controller( cShowObj)) + { + Set( enableObjectSelect); + Status(); + if (selectedObject != ERROR) + { + work = selectedObject; + work += 100; + ShowObjV( work); + } + Reset( enableObjectSelect); + } + +if (Controller( cAbout)) + { + if (gameHours) + { + Print( 18); + } + else + { + Print( 19); + } + } + + +Reset( myHaveMatch); [ speed stuff +if (Controller( cSpeed)) + { + Set( myHaveMatch); + ++animationInterval; + if (animationInterval > SLOW_SPEED) + { + animationInterval = FASTEST_SPEED; + } + } + +if ((Controller( cSpeedSlow) || + Said( slow))) + { + Set( myHaveMatch); + animationInterval = SLOW_SPEED; + } + +if ((Controller( cSpeedNormal) || + Said( normal))) + { + Set( myHaveMatch); + animationInterval = NORMAL_SPEED; + } + +if ((Controller( cSpeedFast) || + Said( fast))) + { + Set( myHaveMatch); + animationInterval = FAST_SPEED; + } + +if ((Controller( cSpeedFastest) || + Said( fastest))) + { + Set( myHaveMatch); + animationInterval = FASTEST_SPEED; + } + +if (myHaveMatch) + { + Reset( myHaveMatch); + if (monitorType != MONO) + { + message = 32; + message += animationInterval; + ClearTextRect( 24, 0, 24, 15, BG_COLOR); + y = 24; + x = 0; + DisplayV( y, x, message); + clearStatusSeconds = 6; + } + } + + + +[***** +[ DEAD EGO +[***** + +if (certainDeath) + { + Reset( certainDeath); + Set( handsOff); + currentStatus = DEAD; + LoadSound( mWhoops); + StopMotion( ego); + StopCycling( ego); + ProgramControl(); [ keepCycling won't work here + AcceptInput(); + deathTimer = CYCLES_BEFORE_DEATH; + DisableItem( cSave); + DisableItem( cBodilyFunction); + DisableItem( cBoss); + DisableItem( cCalculator); + DisableItem( cPuzzle); + DisableItem( cHelp); + } + +if (currentStatus == DEAD) + { + --deathTimer; + if (deathTimer == 1) + { + StopSound(); + Sound( mWhoops,done); + Print( 13); + } + + if (haveInput && !haveMatch) + { + Print( 14); + } + + if (currentRoom == rmBoss) + { + CallV( currentRoom); + } + + if (debugging) + { + Call( lgcDebug); + } + + Return(); + } + + +if ((Said( save) || + Said( save, game) || + requestedASaveGame || + Controller( cSave))) + { + if (preventSaveGame) + { + if (!requestedASaveGame) + { + Set( requestedASaveGame); + Print( 109); + } + } + else + { + Reset( requestedASaveGame); + SaveGame(); + } + } + + +if (Controller( cBoss)) + { + if (handsOff) + { + Print( 105); + } + else + { + NewRoom( rmBoss); + } + } + + +if (Controller( cBodilyFunction)) + { + if (handsOff) + { + Print( 105); + } + else + { + CancelLine(); + PreventInput(); + SetString( 11, 185); [ a NULL string. + SetString( 12, 185); + GetString( 11, 122, 23, 0, 23); [string#, prompt, row, col, max length + if (CompareStrings( 11, 12)) + { + SetString( 11, 125); + } + Print( 123); + SetString( 11, 185); + SetString( 12, 185); + AcceptInput(); + } + } + + +if ((Controller( cPuzzle) || + Controller( cCalculator))) + { + if (handsOff) + { + Print( 105); + } + else + { + PreventInput(); + StatusLineOff(); + SetTextAttribute( BLACK, WHITE); + TextScreen(); + lastChar = 0; + if (Controller( cPuzzle)) + { + Display( 6, 9, 115); [ display puzzle + Display( 7, 9, 116); + Display( 8, 9, 120); + Display( 9, 9, 117); + Display( 10, 9, 120); + Display( 11, 9, 118); + Display( 12, 9, 120); + Display( 13, 9, 119); + Display( 14, 9, 115); + Display( 21, 1, 121); + } + else + { + Display( 8, 19, 110); [ display calc screen + Display( 9, 17, 111); + Display( 10, 17, 112); + Display( 11, 17, 113); + Display( 21, 6, 114); + } + :check.kb.3 + if (!HaveKey()) + { + goto check.kb.3; + } + AcceptInput(); + StatusLineOn(); + SetTextAttribute( TEXT_COLOR, BG_COLOR); + Graphics(); + Set( haveMatch); + } + } + + +[***** +[ EGO CYCLING +[***** + +if (egoDir == oldEgoDir && + egoX == oldEgoX && + egoY == oldEgoY) + { + StopCycling( ego); + } +else + { + StartCycling( ego); + } + +if ((!egoDir || noCycling)) + { + StopCycling( ego); + } + +if (keepCycling) + { + StartCycling( ego); + } + + +[***** +[ TIMERS +[***** + +if (lastChar != oldLastChar) + { + Set( typing); + secondsSinceKeystroke = 0; + oldLastChar = lastChar; + } + +if (lastChar == 13) + { + Reset( typing); + } + +--scriptCycles; +if (scriptCycles == 1) + { + Set( scriptDone); + } + +if (elapsedSeconds != oldSeconds) + { + oldSeconds = elapsedSeconds; + Set( aSecondPassed); [ inform all logics + Set( updateClock); + + --clearStatusSeconds; + --spraySeconds; + --breathSpraySeconds; + --scriptTimer; + + ++secondsInRoom; + ++gameSeconds; + + if (scriptTimer == 1) + { + Set( scriptDone); + } + + if (clearStatusSeconds == 1) [ Can't be, if MONO. + { + ClearTextRect( 24, 0, 24, 15, BG_COLOR); + } + + + if (currentRoom != rmTitle && + currentRoom != rmSunrise && + currentRoom != rmAgeTest) + { + if (gameSeconds == 60) + { + gameSeconds = 0; + ++gameMinutes; + if (gameMinutes == 60) + { + gameMinutes = 0; + ++gameHours; +[ if (gameHours == 25) +[ { +[ gameHours = 0; +[ ++gameDays; +[ } + + ++watchHours; + if (watchHours == 13) + { + watchHours = 1; + } + } + } + + + if (breathSpraySeconds == 1) + { + Reset( handsOff); + Reset( keepCycling); + SetView( ego, vEgo); + StartMotion( ego); + Reset( programControl); + AcceptInput( ); + Set( sprayDone); + } + + + if (sprayMinutes && !spraySeconds) + { + --sprayMinutes; + spraySeconds = 60; + } + + if (spraySeconds == 1 && !sprayMinutes) + { + Reset( mouthOK); + Set( mouthSmellsBad); + PrintV( mouthMessage); + ++mouthMessage; + if (mouthMessage > 160) + { + mouthMessage = 157; + } + } + } + + + if (typing) + { + ++secondsSinceKeystroke; + if (secondsSinceKeystroke > 1) + { + Reset( typing); + } + } + } [ end of "aSecondPassed" + + + + +[****************************************************************************] +[******************** PREPARE TO CALL LOCAL ROOMS **********************] +[****************************************************************************] + + +if (!initLog) + { + CallV( currentRoom); + } + +if (debugging) + { + Call( lgcDebug); + } + + + +[****************************************************************************] +[******************** AFTER CALLING LOCAL ROOMS **********************] +[****************************************************************************] + + +[***** +[ NO INPUT +[***** + +if (OK) + { + Reset( OK); + Print( 57); + } + +if (notCloseEnough) + { + Reset( notCloseEnough); + Print( 55); + } + +if (alreadyGotIt) + { + Reset( alreadyGotIt); + Print( 56); + } + +if (dontHaveIt) + { + Reset( dontHaveIt); + Print( 16); + } + +if (sprayDone) + { + Reset( sprayDone); + Print( 102); + ++sprayCount; + if (sprayCount > 9) + { + Print( 170); + Drop( iBreathSpray); + } + + if (nearPerson) + { + Print( 168); + } + } + +if (nearPerson && !mouthOK && mouthSmellsBad) + { + Reset( mouthSmellsBad); + Print( 145); + } + +if (nearPerson && smellsLikeDogPiss) + { + Reset( smellsLikeDogPiss); + Print( 108); + } + +if (nearPerson && toiletPaperOnShoe) + { + Reset( toiletPaperOnShoe) + Print( 107); + Print( 128); + } + +if (!dollars && !preventSaveGame && !betInProgress) + { + Print( 129); + Print( 130); + Erase( ego); + Set( certainDeath); + } + +if (demo && HaveKey()) + { + Reset( demo); + NewRoom( rmAgeTest); + } + + + +[***** +[ HANDLE PREVIOUSLY UNHANDLED INPUT +[***** + +if ((haveMatch || + !haveInput || + currentStatus == SLEEPING || + currentStatus == DEAD)) + { + goto exit; + } + + +[ if (!unknownWord && debugging) +[ { +[ Log( 21); +[ } + +if (Said( thanks, rol)) + { + Print( 28); + } + +if ((Said( bye, rol) || + Said( anyword, bye, rol))) + { + Print( 31); + } + +if (Said( hi, rol)) + { + Print( 26); + } + +if (Said( laugh)) + { + Print( 174); + } + +if ((Said( lie, rol) || + Said( rest, rol))) + { + Print( 175); + } + +[***** +[ HANDLE INVENTORY THINGS +[***** + +if ((Said( look, money) || + Said( count, dollars))) + { + Print( 15); + } + +if ((Said( drop, wallet, rol) || + Said( drop, my, wallet, rol))) + { + Print( 25); + } + +if (Said( use, wallet, rol)) + { + Print( 51); + } + +if ((Said( open, wallet) || + Said( look$in, wallet) || + Said( show, wallet))) + { + ShowObj( ivWallet); + } + +if ((Said( give, wallet, anyword) || + Said( give, wallet) || + Said( give, anyword, wallet))) + { + if (!nearPerson) + { + Print( 45); + } + else + { + Print( 178); + Print( 179); + Drop( iWallet); + dollars = 0; + } + } + + +if (Said( drop, spray, rol)) + { + Print( 25); + } + +if (Said( show, spray, rol)) + { + ShowObj( ivBreathSpray); + } + +if ((Said( give, spray, anyword) || + Said( give, spray) || + Said( give, anyword, spray))) + { + if ((!nearPerson || !Has( iBreathSpray))) + { + Print( 45); + } + else + { + Print( 183); + Print( 184); + } + } + +if ((Said( spray, spray) || + Said( spray, spray, mouth) || + Said( spray, mouth) || + Said( spray, breath) || + Said( use, spray))) + { + if (!Has( iBreathSpray)) + { + Print( 171); + } + else + { + sprayMinutes = SPRAY_INIT_MINUTES; + Set( mouthOK); + Print( 101); + + if ((handsOff || currentEgoView != NORMAL)) + { + Set( sprayDone); + } + else + { + LoadView( vEgoBreathSpray); + SetView( ego, vEgoBreathSpray); + ForceUpdate( ego); + + breathSpraySeconds = 5; + Set( handsOff); + Set( keepCycling); + StopMotion( ego); + Set( programControl); + PreventInput(); + } + } + } + + + +if (Said( drop, lint, rol)) + { + Print( 25); + } + +if (Said( use, lint, rol)) + { + Print( 132); + } + +if (Said( show, lint)) + { + ShowObj( ivPocketLint); + } + +if ((Said( give, lint, anyword) || + Said( give, lint) || + Said( give, anyword, lint))) + { + if (!nearPerson) + { + Print( 45); + } + else + { + Print( 183); + Print( 184); + } + } + + + +if (Said( drop, watch, rol)) + { + Print( 25); + } + +if (Said( use, watch, rol)) + { + Print( 51); + } + +if (Said( show, watch)) + { + ShowObj( ivWatch); + } + +if (Said( set, watch)) + { + Print( 17); + } + +if ((Said( give, watch, anyword) || + Said( give, watch) || + Said( give, anyword, watch))) + { + if (!nearPerson) + { + Print( 45); + } + else + { + Print( 183); + Print( 184); + } + } + + + +if (Said( drop, apple, rol)) + { + if (Has( iApple)) + { + Print( 25); + } + else + { + Set( dontHaveIt); + } + } + +if (Said( use, apple, rol)) + { + if (Has( iApple)) + { + Print( 51); + } + else + { + Set( dontHaveIt); + } + } + +if ((Said( take, bite, apple, rol) || + Said( eat, apple, rol))) + { + if (Has( iApple)) + { + Print( 153); + Drop( iApple); + } + else + { + Set( dontHaveIt); + } + } + +if (Said( show, apple)) + { + if (Has( iApple)) + { + ShowObj( ivApple); + } + else + { + Set( dontHaveIt); + } + } + +if ((Said( give, apple, anyword) || + Said( give, apple) || + Said( give, anyword, apple))) + { + if ((!nearPerson || !Has( iApple))) + { + Print( 45); + } + else + { + Print( 178); + Print( 179); + Drop( iApple); + } + } + + + +if (Said( drop, ring, rol)) + { + if (Has( iRing)) + { + Print( 25); + } + else + { + Set( dontHaveIt); + } + } + +if (Said( use, ring, rol)) + { + if (Has( iRing)) + { + Print( 51); + } + else + { + Set( dontHaveIt); + } + } + +if ((Said( put, ring, me) || + Said( put, ring, on, me) || + Said( put, ring, finger) || + Said( put, ring, on, finger) || + Said( wear, ring, rol))) + { + if (Has( iRing)) + { + Print( 57); + Print( 140); + Print( 141); + } + else + { + Set( dontHaveIt); + } + } + +if (Said( show, ring)) + { + if (Has( iRing)) + { + ShowObj( ivRing); + } + else + { + Set( dontHaveIt); + } + } + +if ((Said( give, ring, anyword) || + Said( give, ring) || + Said( give, anyword, ring))) + { + if ((!nearPerson || !Has( iRing))) + { + Print( 45); + } + else + { + Print( 178); + Print( 179); + Drop( iRing); + } + } + + + +if (Said( drop, whiskey, rol)) + { + if (Has( iWhiskey)) + { + Print( 25); + } + else + { + Set( dontHaveIt); + } + } + +if (Said( use, whiskey, rol)) + { + if (Has( iWhiskey)) + { + Print( 51); + } + else + { + Set( dontHaveIt); + } + } + +if (Said( drink, whiskey)) + { + if (Has( iWhiskey)) + { + Drop( iWhiskey); + sprayMinutes = 0; + spraySeconds = 4; + Print( 9); + Print( 142); + } + else + { + Set( dontHaveIt); + } + } + +if (Said( show, whiskey)) + { + if (Has( iWhiskey)) + { + ShowObj( ivWhiskey); + } + else + { + Set( dontHaveIt); + } + } + +if ((Said( give, whiskey, anyword) || + Said( give, whiskey) || + Said( give, anyword, whiskey))) + { + if ((!nearPerson || !Has( iWhiskey))) + { + Print( 45); + } + else + { + Print( 178); + Print( 179); + Drop( iWhiskey); + } + } + + + +if (Said( drop, remote, rol)) + { + if (Has( iRemoteControl)) + { + Print( 25); + } + else + { + Set( dontHaveIt); + } + } + +if ((Said( use, remote, rol) || + Said( press, button, remote, rol) || + Said( press, button, on, remote, rol) || + Said( press, remote, rol))) + { + if (Has( iRemoteControl)) + { + Print( 138); + Print( 139); + } + else + { + Set( dontHaveIt); + } + } + +if (Said( show, remote)) + { + if (Has( iRemoteControl)) + { + ShowObj( ivRemoteControl); + } + else + { + Set( dontHaveIt); + } + } + +if ((Said( give, remote, anyword) || + Said( give, remote) || + Said( give, anyword, remote))) + { + if ((!nearPerson || !Has( iRemoteControl))) + { + Print( 45); + } + else + { + Print( 178); + Print( 179); + Drop( iRemoteControl); + } + } + + + +if (Said( drop, rose, rol)) + { + if (Has( iRose)) + { + Print( 25); + } + else + { + Set( dontHaveIt); + } + } + +if (Said( use, rose, rol)) + { + if (Has( iRose)) + { + Print( 51); + } + else + { + Set( dontHaveIt); + } + } + +if (Said( smell, rose, rol)) + { + if (Has( iRose)) + { + Print( 143); + } + else + { + Set( dontHaveIt); + } + } + +if (Said( show, rose)) + { + if (Has( iRose)) + { + ShowObj( ivRose); + } + else + { + Set( dontHaveIt); + } + } + +if ((Said( give, rose, anyword) || + Said( give, rose) || + Said( give, anyword, rose))) + { + if ((!nearPerson || !Has( iRose))) + { + Print( 45); + } + else + { + Print( 178); + Print( 179); + Drop( iRose); + } + } + + + +if (Said( drop, rubber, rol)) + { + if ((Has( iUsedRubber) || Has( iRubber))) + { + Print( 25); + } + else + { + Set( dontHaveIt); + } + } + +if ((Said( use, rubber, rol) || + Said( use, used, rubber, rol) || + Said( wear, used, rubber, rol) || + Said( wear, rubber, rol))) + { + if ((Has( iUsedRubber) || Has( iRubber))) + { + Print( 105); + } + else + { + Set( dontHaveIt); + } + } + +if (wearingRubber && + (Said( remove, rubber, rol) || + Said( remove, used, rubber, rol) || + Said( take, used, rubber, off, rol) || + Said( take, rubber, off, rol))) + { + Reset( wearingRubber); + Drop( iUsedRubber); + currentScore += 1; + Print( 127); + } + +if ((Said( show, used, rubber) || + Said( show, rubber))) + { + if (Has( iRubber)) + { + ShowObj( ivRubber); + } + else + { + if (Has( iUsedRubber)) + { + ShowObj( ivUsedRubber); + } + else + { + Set( dontHaveIt); + } + } + } + +if ((Said( give, used, rubber, anyword) || + Said( give, used, rubber) || + Said( give, anyword, used, rubber))) + { + if ((!nearPerson || !Has( iUsedRubber))) + { + Print( 45); + } + else + { + Print( 183); + Print( 184); + } + } + +if ((Said( give, rubber, anyword) || + Said( give, rubber) || + Said( give, anyword, rubber))) + { + if ((!nearPerson || !Has( iRubber))) + { + Print( 45); + } + else + { + Print( 183); + Print( 184); + } + } + + + +if (Said( drop, candy, rol)) + { + if (Has( iCandy)) + { + Print( 25); + } + else + { + Set( dontHaveIt); + } + } + +if ((Said( use, candy, rol) || + Said( use, anyword, candy, rol) || + Said( eat, anyword, candy, rol) || + Said( eat, candy, rol))) + { + if (Has( iCandy)) + { + Print( 162); + Drop( iCandy); + } + else + { + Set( dontHaveIt); + } + } + +if (Said( show, candy)) + { + if (Has( iCandy)) + { + ShowObj( ivCandy); + } + else + { + Set( dontHaveIt); + } + } + +if ((Said( give, candy, anyword) || + Said( give, candy) || + Said( give, anyword, candy))) + { + if ((!nearPerson || !Has( iCandy))) + { + Print( 45); + } + else + { + Print( 178); + Print( 179); + Drop( iCandy); + } + } + + +[ Inflatable doll handled entirely in room 45 + + +if (Said( drop, pass, rol)) + { + if (Has( iDiscoPass)) + { + Print( 25); + } + else + { + Set( dontHaveIt); + } + } + +if (Said( use, pass, rol)) + { + if (Has( iDiscoPass)) + { + Print( 51); + } + else + { + Set( dontHaveIt); + } + } + +if ((Said( show, disco, pass) || Said( show, pass))) + { + if (Has( iDiscoPass)) + { + ShowObj( ivDiscoPass); + } + else + { + Set( dontHaveIt); + } + } + +if ((Said( give, card, anyword) || + Said( give, card) || + Said( give, anyword, card))) + { + if ((!nearPerson || !Has( iDiscoPass))) + { + Print( 45); + } + else + { + Print( 178); + Print( 179); + Drop( iDiscoPass); + } + } + + +if (Said( drop, knife, rol)) + { + if (Has( iPocketKnife)) + { + Print( 25); + } + else + { + Set( dontHaveIt); + } + } + +if (Said( use, knife, rol)) + { + if (Has( iPocketKnife)) + { + Print( 51); + } + else + { + Set( dontHaveIt); + } + } + +if (Said( show, knife)) + { + if (Has( iPocketKnife)) + { + ShowObj( ivPocketKnife); + } + else + { + Set( dontHaveIt); + } + } + +if ((Said( give, knife, anyword) || + Said( give, knife) || + Said( give, anyword, knife))) + { + if ((!nearPerson || !Has( iPocketKnife))) + { + Print( 45); + } + else + { + Print( 178); + Print( 179); + Drop( iPocketKnife); + } + } + + + +if (Said( drop, wine, rol)) + { + if (Has( iWine)) + { + Print( 25); + } + else + { + Set( dontHaveIt); + } + } + +if ((Said( drink, wine) || + Said( use, wine))) + { + if (Has( iWine)) + { + Drop( iWine); + sprayMinutes = 0; + spraySeconds = 4; + Print( 106); + } + else + { + Set( dontHaveIt); + } + } + +if (Said( show, wine)) + { + if (Has( iWine)) + { + ShowObj( ivWine); + } + else + { + Set( dontHaveIt); + } + } + +if ((Said( give, wine, anyword) || + Said( give, wine) || + Said( give, anyword, wine))) + { + if ((!nearPerson || !Has( iWine))) + { + Print( 45); + } + else + { + Print( 178); + Print( 179); + Drop( iWine); + } + } + + + +if (Said( drop, magazine, rol)) + { + if (Has( iMagazine)) + { + Print( 25); + } + else + { + Set( dontHaveIt); + } + } + +if (Said( use, magazine)) + { + if (Has( iMagazine)) + { + Print( 51); + } + else + { + Set( dontHaveIt); + } + } + +if ((Said( open, magazine) || + Said( show, magazine))) + { + if (Has( iMagazine)) + { + Print( 169); + ShowObj( ivMagazine); + if (!readMagazine) + { + Set( readMagazine); + currentScore += 1; + } + } + else + { + Set( dontHaveIt); + } + } + +if ((Said( give, magazine, anyword) || + Said( give, magazine) || + Said( give, anyword, magazine))) + { + if ((!nearPerson || !Has( iMagazine))) + { + Print( 45); + } + else + { + Print( 178); + Print( 179); + Drop( iMagazine); + } + } + + + +if (Said( drop, hammer, rol)) + { + if (Has( iHammer)) + { + Print( 25); + } + else + { + Print( 181); + } + } + +if (Said( use, hammer)) + { + if (Has( iHammer)) + { + Print( 51); + } + else + { + Print( 181); + } + } + +if (Said( throw, hammer, rol)) + { + if (Has( iHammer)) + { + Print( 177); + Drop( iHammer); + } + else + { + Print( 181); + } + } + +if ((Said( hit, anyword, with, hammer) || + Said( use, hammer, hit, anyword))) + { + if (Has( iHammer)) + { + Print( 176); + } + else + { + Print( 181); + } + } + +if (Said( show, hammer)) + { + if (Has( iHammer)) + { + ShowObj( ivHammer); + } + else + { + Print( 181); + } + } + +if ((Said( give, hammer, anyword) || + Said( give, hammer) || + Said( give, anyword, hammer))) + { + if ((!nearPerson || !Has( iHammer))) + { + Print( 45); + } + else + { + Print( 178); + Print( 179); + Drop( iHammer); + } + } + +if ((Said( tie, rope, hammer) || + Said( tie, hammer, rope))) + { + if (Has( iHammer) && Has( iRope)) + { + Print( 176); + } + + if (!Has( iRope)) + { + Print( 180); + } + + if (!Has( iHammer)) + { + Print( 181); + } + } + + + +if (Said( drop, pills, rol)) + { + if (Has( iPills)) + { + Print( 25); + } + else + { + Set( dontHaveIt); + } + } + +if ((Said( use, pills) || + Said( take, pills) || + Said( open, pills) || + Said( eat, pills))) + { + if (Has( iPills)) + { + Print( 38); + Print( 27); + Erase( ego); + Set( certainDeath); + } + else + { + Set( dontHaveIt); + } + } + +if (Said( show, pills)) + { + if (Has( iPills)) + { + ShowObj( ivPills); + } + else + { + Set( dontHaveIt); + } + } + + +if ((Said( give, pills, anyword) || + Said( give, pills) || + Said( give, anyword, pills))) + { + if ((!nearPerson || !Has( iPills))) + { + Print( 45); + } + else + { + Print( 178); + Print( 179); + Drop( iPills); + } + } + + + +if (Said( drop, rope, rol)) + { + if (Has( iRope)) + { + Print( 25); + } + else + { + Print( 180); + } + } + +if (Said( throw, rope, rol)) + { + if (Has( iRope)) + { + Print( 177); + Drop( iRope); + } + else + { + Print( 180); + } + } + +if (Said( use, rope, rol)) + { + if (Has( iRope)) + { + Print( 51); + } + else + { + Print( 180); + } + } + +if ((Said( tie, rope, rol) || + Said( tie, anyword, rope))) + { + if (Has( iRope)) + { + Print( 176); + } + else + { + Print( 180); + } + } + +if (Said( show, rope)) + { + if (Has( iRope)) + { + ShowObj( ivRope); + } + else + { + Print( 180); + } + } + +if ((Said( give, rope, anyword) || + Said( give, rope) || + Said( give, anyword, rope))) + { + if ((!nearPerson || !Has( iRope))) + { + Print( 45); + } + else + { + Print( 178); + Print( 179); + Drop( iRope); + } + } + + + +[***** +[ HANDLE WHATEVER'S LEFT +[***** + +if (!haveMatch && haveInput && [ First, discard unknown words. + unknownWord) + { + Set( haveMatch); + PrintV( unknownWord); [ prints messages #1 - 9 + } + + +if ((Said( anyword, credit$card) || + Said( anyword, credit$card, wallet) || + Said( anyword, credit$card, from, wallet))) + { + Print( 172); + } + +if ((Said( read, notes) || + Said( read, notes, wallet))) + { + Print( 147); + } + +if ((Said( anyword, business$card) || + Said( anyword, business$card, wallet) || + Said( anyword, business$card, from, wallet))) + { + Print( 152); + } + +if ((Said( anyword, notes) || + Said( anyword, notes, wallet) || + Said( anyword, notes, from, wallet))) + { + Print( 148); + } + + + +[ Handle potty-mouths. + +if ((Said( fuck$you, rol) || + Said( anyword, fuck$you, rol))) + { + Print( 133); + } + +if ((Said( hump, rol) || + Said( anyword, hump, rol) || + Said( anyword, anyword, hump, rol) || + Said( anyword, anyword, anyword, hump, rol))) + { + Print( 135); + } + +if (Said( masturbate, rol)) + { + Print( 124); + } + +if ((Said( touch, pussy, rol) || + Said( stroke, pussy, rol) || + Said( kiss, pussy, rol) || + Said( lick, pussy, rol) || + Said( look, pussy, rol))) + { + Print( 173); + } + + + +[ Misc. looks. + +if ((Said( look, suit) || + Said( look$in, suit) || + Said( search, suit))) + { + Print( 20); + } + +if ((Said( look, man) || + Said( look, girl))) + { + Print( 24); + } + +if ((Said( look, wall) || + Said( look, building))) + { + Print( 149); + } + +if ((Said( look, ground) || + Said( look, down))) + { + Print( 151); + } + +if (Said( look, door)) + { + Print( 103); + } + +if ((Said( look, sky) || + Said( look, ceiling))) + { + Print( 161); + } + +if (Said( look, rol)) + { + Random( 42, 44, work); + PrintV( work); + } + + +if (Said( jump)) + { + Print( 163); + } + +if (Said( talk)) + { + Print( 126); + } + +if (Said( talk, rol)) + { + Print( 41); + } + +if (Said( yell)) + { + Print( 167); + } + +if ((Said( climb, wall) || + Said( climb, building))) + { + Print( 150); + } + +if (Said( smell, anyword, rol)) + { + Print( 131); + } + +if (Said( take, anyword, rol)) + { + Random( 46, 48, work); + PrintV( work); + } + +if (Said( go, anyword, rol)) + { + Print( 49); + } + +if (Said( use, anyword, rol)) + { + Print( 54); + } + +if (Said( get, anyword, rol)) + { + Print( 23); + } + +if (Said( lick, girl, rol)) + { + Print( 59); + } + +if (Said( eat, anyword, rol)) + { + Print( 37); + } + +if (Said( kiss, anyword, rol)) + { + Print( 39); + } + +if (Said( laugh, anyword, rol)) + { + Print( 165); + } + +if ((Said( kill, anyword, rol) || + Said( hit, anyword, rol))) + { + Print( 50); + } + +if ((Said( look$in, man, rol) || + Said( look$in, person, rol) || + Said( look$in, woman, rol) || + Said( look$in, clothes, rol) || + Said( search, clothes, rol) || + Said( search, man, rol) || + Said( search, person, rol) || + Said( search, woman, rol))) + { + if (!nearPerson) + { + Set( notCloseEnough); + } + else + { + Print( 155); + } + } + +if (Said( search, rol)) + { + Print( 166); + } + +if (Said( drop, anyword, rol)) + { + Print( 156); + } + +if ((Said( unlock, door, rol) || + Said( use, key, rol))) + { + Print( 144); + } + +if ((Said( knock, door) || + Said( knock, on, door))) + { + Print( 164); + } + +if ((Said( help, man, rol) || + Said( help, woman, rol) || + Said( help, person, rol))) + { + Print( 154); + } + +if (Said( help, rol)) + { + Print( 40); + } + +if ((Said( crack, rol) || + Said( crap, rol) || + Said( pee, rol) || + Said( lay, rol) || + Said( cut$one, rol) || + Said( asshole, rol) || + Said( boob, rol) || + Said( butt, rol) || + Said( cunnilingus, rol) || + Said( suck$me, rol))) + { + Print( 136); + } + +if ((Said( anyword, crack, rol) || + Said( anyword, crap, rol) || + Said( anyword, pee, rol) || + Said( anyword, lay, rol) || + Said( anyword, cut$one, rol) || + Said( anyword, asshole, rol) || + Said( anyword, boob, rol) || + Said( anyword, butt, rol) || + Said( anyword, cunnilingus, rol) || + Said( anyword, suck$me, rol))) + { + Print( 137); + } + +if ((Said( anyword, lady) || + Said( anyword, anyword, lady) || + Said( anyword, lady, anyword))) + { + Print( 104); + } + +if (Said( sierra, rol)) + { + Print( 186); + } + + +if (!haveMatch && haveInput) + { + Print( 45); +[ if (debugging) +[ { +[ Log( 146); +[ } + } + + + +[***** +:exit +[***** + + +GetPosn( ego, oldEgoX, oldEgoY); [ Clean up, fix up for next pass. +oldEgoDir = egoDir; +Reset( aSecondPassed); +++passInRoom; + +if (oldCurrentScore != currentScore) + { + oldCurrentScore = currentScore; + Set( updateClock); + } + +if (programControl) + { + ProgramControl(); + } +else + { + PlayerControl(); + } + + +if (newRoom) + { + if (handsOff) + { + newRoom = 0; + } + else + { + oldEdgeEgoHit = edgeEgoHit; + Reset( noScript); + NewRoomV( newRoom); + } + } diff --git a/RM0.MSG b/RM0.MSG new file mode 100644 index 0000000..b0591f0 --- /dev/null +++ b/RM0.MSG @@ -0,0 +1,554 @@ +[messages for room 0 +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +[ The following messages are null: +[ +[ ][ 12 22 58 +[ + + +%message 1 "%m10%w1?" +%message 2 "%m10%w2?" +%message 3 "%m10%w3?" +%message 4 "%m10%w4?" +%message 5 "%m10%w5?" +%message 6 "%m10%w6?" +%message 7 "%m10%w7?" +%message 8 "%m10%w8?" + +%message 9 +"Ok.\n\n +You toss back the shot of cheap booze, + then dramatically break the glass on the floor!" + +%message 10 +"What's a " + +%message 11 "\n + Leisure Suit Larry\n + in the\n +Land of the Lounge Lizards\n\n + by Al Lowe\n\n + Ver 1.05 6/26/87\n" + +%message 12 +"" + +%message 13 +"Thanks for playing + \"Leisure Suit Larry in the Land of the Lounge Lizards.\"\n\n +You screwed up this game, but you can probably do better.\n\n +Come on, let's do it just one more time!" + +%message 14 +"Since you're dead...\n\n +all you can do is restore a saved game or start over." + +%message 15 +"You have $%v90.00." + +%message 16 +"You don't have it." + +%message 17 +"Sorry, this is a real-time game!" + +%message 18 +"%m11%m100%v117 hours, %v116 minutes and %v115 seconds.\n" + +%message 19 +"%m11%m100%v116 minutes and %v115 seconds.\n" + +%message 20 +"You find your leisure suit very stylish, but empty." + +%message 21 [ logfile message +"" [ No local." + +%message 22 +"" + +%message 23 +"You have no need to take it." + +%message 24 +"Where!?" + +%message 25 +"You might need it." + +%message 26 +"\"Hi.\"" + +%message 27 +"Following your conviction for bestiality, + you spend the rest of your life in prison, + turning big rocks into little ones!" + +%message 28 +"\"You're welcome.\"" + +%message 29 +"\"Same to you!\"" + +%message 30 +"%v119:%v116|2:%v115|2 " + +%message 31 +"\"'Bye.\"" + +%message 32 +"Fastest%m36" + +%message 33 +"Fast%m36" + +%message 34 +"Normal%m36" + +%message 35 +"Slow%m36" + +%message 36 +" speed." + +%message 37 +"Once you tasted it, you wouldn't want it!" + +%message 38 +"Without thinking, you down the entire bottle. + Hey, this stuff is ok! + Your breathing becomes heavy, and you're suddenly extremely horny! + You've just got to do something, and right NOW!\n\n +Hey, where's that cute, black dog?" + +%message 39 +"Wouldn't you rather just remain friends?" + +%message 40 +"Don't whine!" + +%message 41 +"Funny, no response." + +%message 42 +"It doesn't look interesting." + +%message 43 +"You see nothing special." + +%message 44 +"It's just as it appears." + +%message 45 +"How can you do that?" + +%message 46 +"It's of no use." + +%message 47 +"You don't need it." + +%message 48 +"There's no reason to take it." + +%message 49 +"Just walk there." + +%message 50 +"Oh, %w1, %w1, %w1! Doesn't anybody _____ anymore?" + +%message 51 +"%m53?" + +%message 52 +"%m53 %w3?" + +%message 53 +"What would you do with the %w2" + +%message 54 +"How can you use that which you do not have?" + +%message 55 +"You're not close enough." + +%message 56 +"You already have it." + +%message 57 +"Ok." + +%message 58 +"" + +%message 59 +"That comes later." + + +[ Menu functions are assigned to messages #60 - 99. + +%message 60 "Sierra " [ +%message 61 "About Larry" [ +%message 62 "Help " [ +%message 63 "-----------" [ +%message 64 "Calculator " [ +%message 65 "Puzzle " [ + [ +%message 66 "File " [ +%message 67 "Save " [ +%message 68 "Restore " [ +%message 69 "-------------" [ +%message 70 "Restart " [ +[%message 69 "-------------" [ +%message 71 "Quit " [ + +%message 72 "Action " [ +%message 73 "Inventory " [ +%message 74 "See Object " [ +%message 75 "Bodily Function " [ + [ +%message 76 "Special " [ +%message 96 "Boss Key " [ +%message 77 "Sound On/Off " [ +%message 78 "Graphics Mode " [ +%message 79 "Joystick " [ +%message 97 "Joystick/Mouse " [ +%message 80 "Clock On/Off " [ +%message 81 "Pause Game " [ + [ +%message 82 "Speed " [ +%message 83 "Normal " [ +%message 84 "Slow " [ +%message 85 "Fast " [ +%message 86 "Fastest " [ +[%message 69 "-------------" [ +%message 87 "Change " [ + [ +[ %message 88 "Debug" [ +[ %message 89 "Ego Info " [ +[ %message 90 "P-Screen " [ +[ %message 91 "Memory " [ +[ %message 92 "Obj Info " [ +[ %message 93 "X/Y Display " [ +[ %message 94 "Get All Inventory" [ +[ %message 95 "Inventory Numbers" [ + [ +%message 98 "" [ +%message 99 "" [ + + + +%message 100 +"\n\nYou've been playing for\n" + +%message 101 +"Psssft. Psssft." + +%message 102 +"Ahhh." + +%message 103 +"Yep, it's a door!" + +%message 104 +"Watch it, Larry. You're going to get your face slapped!" + +%message 105 +"Now?!" + +%message 106 +"Ok.\n\n +Your thirst is gone, the bottle is empty, and your breath is revolting." + +%message 107 +"\"Hey, dork! You've got toilet paper stuck to your shoe!\"" + +%message 108 +"\"Phew! You smell like a used fire hydrant!\"" + +%message 109 +"Just a moment, please..." + +%message 110 +"2" + +%message 111 +"+ 2" + +%message 112 +"---" + +%message 113 +" 4" + +%message 114 +" This is about the extent of\n + your mathematical abilities." + +%message 115 +"---------------------" + +%message 116 +"| 1 | 2 | 3 | 4 |" + +%message 117 +"| 5 | 6 | 7 | 8 |" + +%message 118 +"| 9 | 10 | 11 | 12 |" + +%message 119 +"| 13 | 14 | 15 | 16 |" + +%message 120 +"|----|----|----|----|" + +%message 121 +"How's this thing work, anyway?" + +%message 122 +"Enter function: " + +%message 123 +"You quickly turn around, %s11, and feel much better. + A hint of a smile crosses your lips." + +%message 124 +"Larry, the whole idea was to stop doing that!" + +%message 125 +"do nothing" + +%message 126 +"You talk to yourself, and find you already know what you're going to say." + +%message 127 +"Good idea. You carefully remove and dispose of it properly." + +%message 128 +"You nonchalantly scrape it off." + +%message 129 +"Oh, no! You are now penniless. + You hock your leisure suit, + and spend the rest of your life on skid row eating discarded fast food." + +%message 130 +"The rest of your story is too sad to tell. + Time for a little \"R & R,\" Larry -- Restart or Restore!" + +%message 131 +"It smells as bad as you imagined." + +%message 132 +"It's not for using; IT'S A JOKE!!" + +%message 133 +"Same to you, buddy!" + +%message 134 +"And %w1 %w2 you, too!" + +%message 135 +"Yeah, you probably would, too!" + +%message 136 +"Tsk, tsk." + +%message 137 +"Ok, but I don't usually do that!" + +%message 138 +"You press the button on the remote control and..." + +%message 139 +"...nothing happens." + +%message 140 +"Wearing the magic ring gives you powers far beyond those of..." + +%message 141 +"...Oops. Wrong game." + +%message 142 +"Pretty dramatic, eh?" + +%message 143 +"It smells good." + +%message 144 +"You can't. There's no key in this game!" + +%message 145 +"\"Eeeyow! Do something about that breath of yours!\"" + +%message 146 +"" [ No lastLog." + +%message 147 +"\"Remember to buy more Sierra three-dimensional, graphic, adventure games!\"" + +%message 148 +"You might want to read them." + +%message 149 +"Staring at the walls?" + +%message 150 +"Climbing the walls already?" + +%message 151 +"It just lies there, under your feet." + +%message 152 +" +Sierra On-Line, Inc. + (209) 683-6858" + +%message 153 +"It tastes delicious. But nothing happens." + +%message 154 +"Exactly how would you help?" + +%message 155 +"You'd better not. You might get your face slapped!" + +%message 156 +"You don't have one." + +%message 157 +"Your mouth tastes like the inside of a motorman's glove!" + +%message 158 +"Your breath smells like floor sweepings from a rendering plant." + +%message 159 +"Your breath is enough to take your breath away." + +%message 160 +"Your mouth tastes like the drippings from a marathon runner's sock." + +%message 161 +"It's still up there!" + +%message 162 +"It tastes delicious, but what about your acne?" + +%message 163 +"Whee!" + +%message 164 +"There's no answer. Try opening it." + +%message 165 +"Ha, ha." + +%message 166 +"You find nothing." + +%message 167 +"\"HELP!\"" + +%message 168 +"\"It's about time!!\"" + +%message 169 +"Well, well. It looks like this month's issue is filled with intelligent, + literary articles with redeeming social value." + +%message 170 +"Since your breath sprayer is empty, you toss it away." + +%message 171 +"You used it all, remember." + +%message 172 +"No place in Lost Wages accepts credit cards from the + First National Bank of Libya." + +%message 173 +"Obviously, restraint is no problem for you, Larry." + +%message 174 +"\"Ha, ha!\"" + +%message 175 +"There's no time!" + +%message 176 +"That's an idea; it's just not a good idea!" + +%message 177 +"OK, but now it's gone forever!" + +%message 178 +"\"Hey, thanks a lot!\"" + +%message 179 +"But, now you'll NEVER get it back!" + +%message 180 +"%m182rope." + +%message 181 +"%m182hammer." + +%message 182 +"You have no " + +%message 183 +"\"Yuck!\"" + +%message 184 +"No one wants that!" + +%message 185 + "" [ THIS ONE MUST STAY A NULL!!!!! + +%message 186 +"Pretty good company, eh?" + +[ %message 187 +[ "" +[ +[ %message 188 +[ "" +[ +[ %message 189 +[ "" +[ +[ %message 190 +[ "" +[ +[ %message 191 +[ "" +[ +[ %message 192 +[ "" +[ +[ %message 193 +[ "" +[ +[ %message 194 +[ "" +[ +[ %message 195 +[ "" +[ +[ %message 196 +[ "" +[ +[ %message 197 +[ "" +[ +[ %message 198 +[ "" +[ +[ %message 199 +[ "" +[ diff --git a/RM1.CG b/RM1.CG new file mode 100644 index 0000000..53cd71f --- /dev/null +++ b/RM1.CG @@ -0,0 +1,281 @@ +[Logics for room 1 -- title, credits +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm1.msg" +%include "gamedefs.h" + + + +[ This loops through the title screen, and the credits screens, until a +[key is pressed. It then starts the game, at room 11. + +[ Note: using the standard "frame" pic, first line to print on is y = 3, +[lowest is y = 19. X = 4 leaves 1 character blank at LEFT edge. + +[ View# Name Loop Cell Size X Y Contents +[--------------------------------------------------------------------- +[ 39 vCreditNames1 0 0 65x23 41 94 programmed by +[ 39 vCreditNames1 0 1 69x60 41 114 designed by +[ 40 vCreditNames2 0 0 62x23 53 80 graphics by +[ 40 vCreditNames2 0 1 44x23 65 84 written by +[ 41 vCreditNames3 0 0 38x23 68 59 music by +[ 41 vCreditNames3 0 1 82x56 25 155 AGI by + + + + +%define designPic lv2 +%define creditsPic lv3 +%define agdsPic lv4 +%define framePic lv5 + + +%object aDoll 1 +%object aName 2 + + + +if (initLog) + { + SetHorizon( 1); + StatusLineOff(); + Set( demo); + Set( handsOff); + Set( programControl); + PreventInput(); + lastChar = 0; + animationInterval = NORMAL_SPEED; + + LoadSound( mTitle); + + LoadView( vTitles); + LoadView( vTitleDoll); + LoadView( vTitleEgo); + LoadView( vCreditNames1); + LoadView( vCreditNames2); + LoadView( vCreditNames3); + LoadView( vCreditNames4); + + + designPic = picCredits1; + creditsPic = picCredits2; + agdsPic = picCredits3; + + + LoadPic( designPic); + LoadPic( creditsPic); + LoadPic( agdsPic); + + LoadPic( currentRoom); + DrawPic( currentRoom); + DiscardPic( currentRoom); + + + AnimateObj( aDoll); + IgnoreObjs( aDoll); + SetView( aDoll, vTitleDoll); + SetLoop( aDoll, FACING_RIGHT); + Position( aDoll, 0, 130); + + AnimateObj( aName); + SetView( aName, vCreditNames1); + SetCel( aName, 0); + SetPriority( aName, 4); + StopCycling( aName); + + StepSize( ego, three); + Position( ego, 0, 160); + SetView( ego, vTitleEgo); + SetLoop( ego, FACING_RIGHT); + + Sound( mTitle, musicDone); + script = 0; + + AddToPic( vTitles, 0, 0, 4, 18, 4, 4); + AddToPic( vTitles, 0, 1, 4, 36, 4, 4); + AddToPic( vTitles, 0, 2, 46, 36, 4, 4); + AddToPic( vTitles, 0, 3, 11, 87, 4, 4); + [view, loop, cel, x, y, obj priority, box priority + + + scriptTimer = 8; + ShowPic(); + + Return(); + + } [ end initLOG + + +[***** +:noInput +[***** + +if (scriptDone) + { + Reset( scriptDone); + ++script; + + if (script == 1) + { + Draw( aDoll); + MoveObj( aDoll, 36, 94, 2, scriptDone); + } + + + if (script == 2) + { + MoveObj( aDoll, 136, 94, 2, scriptDone); + + Draw( ego); + MoveObj( ego, 80, 160, 3, scriptDone); + } + + + if (script == 3) + { + if (monitorType != MONO) + { + Display( 23, 3, 2); + Display( 24, 4, 3); + } + + SetLoop( ego, 2); + FixLoop( ego); + MoveObj( ego, 149, 160, 2, scriptDone); + } + + + if (script == 4) + { + Erase( aDoll); + } + + + if (script == 5) + { + Erase( ego); + + if (monitorType != MONO) + { + ClearLines( 23, 24, BG_COLOR); + } + + DrawPic( designPic); [ draw new picture (pic.2) + + Position( aName, 41, 94); + Draw( aName); [ programmed by + + ShowPic(); + + scriptTimer = 8; + } + + + if (script == 6) + { + SetCel( aName, 1); [ designed by + RepositionTo( aName, 41, 114); + + SetLoop( aDoll, FACING_LEFT); + Draw( aDoll); + MoveObj( aDoll, 100, 94, 2, scriptDone); + } + + + if (script == 7) + { + MoveObj( aDoll, 0, 94, 2, scriptDone); + + SetLoop( ego, FACING_LEFT); + Draw( ego); + MoveObj( ego, 50, 160, 3, scriptDone); + } + + + if (script == 8) + { + SetLoop( ego, 3); + FixLoop( ego); + MoveObj( ego, 0, 160, 2, scriptDone); + } + + + if (script == 9) + { + Erase( aDoll); + } + + + if (script == 10) + { + Erase( ego); + SetView( ego, vEgo); + Erase( aName); + + DrawPic( creditsPic); [ Draw pic.3 + SetView( aName, vCreditNames2); + SetCel( aName, 0); [ graphics by + Position( aName, 53, 80); + Draw( aName); + ShowPic(); + + scriptTimer = 9; + } + + + if (script == 11) + { + SetCel( aName, 1); [ written by + RepositionTo( aName, 65, 84); + scriptTimer = 8; + } + + + if (script == 12) + { + Erase( aName); + + DrawPic( agdsPic); [ draw pic.4 + AddToPic( vCreditNames3, 0, 0, 68, 59, 4, 4); [ Music by + AddToPic( vCreditNames3, 0, 1, 25, 155, 4, 4); [ AGDS by + [view, loop, cel, x, y, obj priority, box priority + + ShowPic(); + + scriptTimer = 8; + } + + + if (script == 13) + { + DrawPic( creditsPic); [ Draw pic.3 + AddToPic( vCreditNames4, 0, 0, 64, 84, 4, 4); [ Kenny + ShowPic(); + + scriptTimer = 3; + } + + + if (script == 14 && !soundOn) + { + NewRoom( rmTitle); [ Let's do it again, and real soon. + } + } + + +[***** +:exit +[***** + +if (musicDone) + { + if (script > 13) + { + NewRoom( rmTitle); [ Let's do it again, and real soon. + } + else + { + Sound( mTitle, musicDone); [ Play it again, Samantha. + } + } diff --git a/RM1.MSG b/RM1.MSG new file mode 100644 index 0000000..1eda54b --- /dev/null +++ b/RM1.MSG @@ -0,0 +1,37 @@ +[messages for room 1 -- rm.titles +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +[ %message 1 "by Al Lowe & Mark Crowe" +%message 2 "Adventure Game Development System" +%message 3 "(C) 1987 by Sierra On-Line, Inc." +[ | | | | | | | | | +[ 0 5 10 15 20 25 30 35 39 + + + +[--------------------------------------------------------------------------] + + +[ %message 11 "Lots of other stuff was done by:" +[ %message 12 "Al Lowe" +[ %message 13 "Mark Crowe" +[ +[ %message 21 "Quality Assurance by:" +[ %message 22 "Larry Weissenborn" +[ %message 23 "Bob Ballew" +[ %message 24 "Russ TrueLove" +[ %message 25 "Kim Covert" +[ %message 26 "Linda Bye" +[ +[ %message 31 "Packaging and Documentation by:" +[ %message 32 "Mark Crowe" +[ %message 33 "John Williams" +[ +[ %message 41 "Inspired by a Recent Wet Dream of:" +[ %message 42 "Ken Williams" +[ | | | | | | | | | +[ 0 5 10 15 20 25 30 35 39 + diff --git a/RM10.CG b/RM10.CG new file mode 100644 index 0000000..488d704 --- /dev/null +++ b/RM10.CG @@ -0,0 +1,649 @@ +[logics for room 10 -- rmTaxi +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm10.msg" +%include "gamedefs.h" + + +[ PROBLEMS: make driver cycle randomly, except when driving drunk. +[Drunk driving sequence never speeds up. +[Erase driver at start of crash flash. + + +#define MIN_CABFARE 5 +#define MAX_CABFARE 15 + +%define L_TALKING 0 [ Taxi driver +%define L_LOWERING_FLAG 1 +%define L_STEERING 2 + +%define C_FLAG_UP 0 [ Meter cells +%define C_FLAG_DOWN 1 + +%define L_NORMAL 0 [ Scroll loops +%define L_DRUNK 1 +%define L_CRASH 2 + +%define SCROLL_CYCLES 11 + +[ %define LOWER_METER 1 +[ %define METER_DOWN 2 +[ %define START_SPEEDUP 3 [ script values +[ %define START_SLOWDOWN 4 +[ %define WAITING_FOR_MONEY 5 +[ %define PAID_FOR_TRIP 6 + + +%define rideDone lf0 +%define manDone lf1 +%define stopTalking lf2 +%define bgOn lf3 +%define gaveDestination lf4 +%define speedingUp lf5 +%define meterDone lf6 +%define cabbieSteering lf7 + + +%define fare lv0 [ Don't change this one!! %v200!! +%define talkCycles lv1 +%define destCount lv2 +%define parkTimer lv3 +%define scrollCycles lv4 +%define scrollSpeed lv5 +%define destRoom lv6 +%define steeringCycles lv7 + + +%object aScroll 1 +%object aMeter 2 +%object aCabbie 3 + + + +if (initLog) + { + LoadPic( currentRoom); + DrawPic( currentRoom); + DiscardPic( currentRoom); + + LoadView( vTaxiWindshieldMovie); + LoadView( vTaxiMeter); + LoadView( vTaxiDriver); + + + AnimateObj( aScroll); + SetView( aScroll, vTaxiWindshieldMovie); + SetLoop( aScroll, L_NORMAL); + SetPriority( aScroll, 4); + Position( aScroll, 57, 77); + Draw( aScroll); + work = 6; + CycleTime( aScroll, work); + Set( bgOn); [ Scroll is cycling. + + AnimateObj( aMeter); + SetView( aMeter, vTaxiMeter); + SetCel( aMeter, C_FLAG_UP); + SetPriority( aMeter, 14); + Position( aMeter, 75, 82); + Draw( aMeter); + CycleTime( aMeter, three); + StopCycling( aMeter); + + AnimateObj( aCabbie); + IgnoreObjs( aCabbie); + SetView( aCabbie, vTaxiDriver); + SetPriority( aCabbie, 15); + Position( aCabbie, 56, 83); + + if (!Has( iWine)) + { + SetLoop( aCabbie, L_LOWERING_FLAG); + SetCel( aCabbie, 0); + CycleTime( aCabbie, three); + StopCycling( aCabbie); + } + else + { + SetLoop( aCabbie, L_TALKING); + } + + Draw( aCabbie); + + ShowPic( ); + + if (!Has( iWine)) + { + Print( 1); + AcceptInput(); + parkTimer = 20; + Random( 0, 10, fare); + fare += cabFareMin; + if (cabFareMin < 40) + { + ++cabFareMin; + } + if (cabRideLength > 4) + { + --cabRideLength; + } + scriptTimer = 2; + } + else + { + Print( 12); + + PreventInput(); + Set( programControl); + Set( meterDone); + steeringCycles = 0; + script = 100; + scriptTimer = 5; + } + + Set( handsOff); + Set( programControl); + Reset( noFawnInDisco); [ After a drive, she'll be back. + + Return( ); + + } [ end initLOG + + + +if (aSecondPassed && secondsInRoom > 5) + { + Set( nearPerson); + } + + +[***** +:handleInput +[***** + +if (!haveInput) {goto noInput;} + +if ((Said( talk, rol) || + Said( take, me, action) || + Said( take, me, where, action) || + Said( where, action, town) || + Said( where, action))) + { + Print( 2); + } + + +if ((Said( disco) || + Said( go, disco) || + Said( take, me, disco))) + { + ++destCount; + if (destCount > 2) + { + Print( 28); + } + else + { + Set( scriptDone); + destRoom = rmOutsideDisco; + if (script > 2) + { + script = 200; + } + } + } + +if ((Said( casino) || + Said( casino, hotel) || + Said( go, casino) || + Said( go, casino, hotel) || + Said( take, me, casino) || + Said( take, me, casino, hotel))) + { + ++destCount; + if (destCount > 2) + { + Print( 28); + } + else + { + Set( scriptDone); + destRoom = rmOutsideCasino; + if (script > 2) + { + script = 200; + } + } + } + +if ((Said( bar) || + Said( go, bar) || + Said( take, me, bar))) + { + ++destCount; + if (destCount > 2) + { + Print( 28); + } + else + { + Set( scriptDone); + destRoom = rmOutsideBar; + if (script > 2) + { + script = 200; + } + } + } + +if ((Said( chapel) || + Said( go, chapel) || + Said( take, me, chapel))) + { + ++destCount; + if (destCount > 2) + { + Print( 28); + } + else + { + Set( scriptDone); + destRoom = rmOutsideChapel; + if (script > 2) + { + script = 200; + } + } + } + +if ((Said( store) || + Said( go, store) || + Said( take, me, store))) + { + ++destCount; + if (destCount > 2) + { + Print( 28); + } + else + { + Set( scriptDone); + destRoom = rmOutside7_11; + if (script > 2) + { + script = 200; + } + } + } + +if ((Said( leave, rol) || + Said( stop, rol) || + Said( open, door, rol) || + Said( go))) + { + if (script < 5) + { + Print( 7); + } + + if (script == 5) + { + Print( 9); + Set( rideDone); + currentStatus = STIFFED_CABBIE; + } + + if (script == 6) + { + Set( OK); + Set( rideDone); + } + } + +if ((Said( take, me, home) || + Said( go, home) || + Said( home))) + { + Print( 26); + NewRoom( rmWorkshop); + } + +if (Said( look, meter)) + { + Print( 23); + } + +if ((Said( look, cab) || + Said( look$in, cab) || + Said( look, room) || + Said( look, seat) || + Said( look, floor) || + Said( look))) + { + Print( 24); + } + +if (Said( look, ceiling)) + { + Print( 25); + } + +if ((Said( look, out, window) || + Said( look, window))) + { + Print( 27); + } + +if (Said( look, cabbie)) + { + if (!lookedAtCabbie) + { + Set( lookedAtCabbie); + Print( 10); + } + else + { + Print( 11); + } + } + +if ((Said( give, money, man) || + Said( give, man, money) || + Said( give, money) || + Said( pay, man, money) || + Said( pay) || + Said( pay, money, man) || + Said( pay, money) || + Said( pay, man))) + { + if (script < 5) + { + Print( 6); + } + + if (script == 5) + { + if (dollars < fare) + { + Print( 20); + Print( 14); + Set( rideDone); + currentStatus = STIFFED_CABBIE; + } + else + { + dollars -= fare; + Set( scriptDone); + parkTimer = 30; + } + } + + if (script == 6) + { + Print( 19); + } + } + + +if ((Said( give, tip, rol) || + Said( give, man, tip, rol) || + Said( tip, rol))) + { + Print( 19); + } + + +[***** +:noInput +[***** + +if (aSecondPassed) + { + --parkTimer; + if (parkTimer == 1) + { + parkTimer = 30; + if (script < 3) + { + Print( 5); + } + + if (script == 5) + { + Print( 22); + } + + if (script == 6) + { + Print( 21); + } + } + } + + +if (scriptDone) + { + Reset( scriptDone); + ++script; + + if (script == 1) + { + EndOfLoop( aMeter, meterDone); + EndOfLoop( aCabbie, scriptDone); + } + + if (script == 2) + { + SetLoop( aCabbie, L_STEERING); + steeringCycles = 2; + Reset( cabbieSteering); [ This makes him start immediately. + CycleTime( aCabbie, two); + } + + if (script == 3) [ This starts us moving. + { + Set( speedingUp); + parkTimer = 0; + scrollCycles = SCROLL_CYCLES; + scrollSpeed = 4; + CycleTime( aScroll, scrollSpeed); + + if (destRoom != previousRoom) + { + scriptTimer = cabRideLength; [Seconds before start slowdown. + if (!gaveDestination) [ No message if trip #2 or more. + { + Print( 15); + } + } + else + { + scriptTimer = 6; + if (scriptTimer > cabRideLength) + { + scriptTimer = cabRideLength; + } + + if (!gaveDestination) + { + Print( 3); + } + } + Set( gaveDestination); + } + + if (script == 4) [ Trip timer has expired. Slowdown. + { + Reset( speedingUp); + } + + if (script == 5) [ Slowdown has ended. + { + Reset( bgOn); + StopUpdate( aScroll); + + StartUpdate( aMeter); + BeginningOfLoop( aMeter, meterDone); + + steeringCycles = 0; + StartCycling( aCabbie); + SetLoop( aCabbie, L_LOWERING_FLAG); + LastCel( aCabbie, work); + SetCelV( aCabbie, work); + BeginningOfLoop( aCabbie, manDone); + + Print( 4); + parkTimer = 30; + } + + if (script == 6) + { + Print( 8); + } + + + + if (script == 101) [ He be a drunk cabbie! + { + parkTimer = 0; + SetLoop( aCabbie, L_STEERING); + steeringCycles = 2; + Reset( cabbieSteering); [ This makes him start immediately. + CycleTime( aCabbie, one); + + scrollCycles = 0; [ Never change speed of scroll. + scrollSpeed = 3; + CycleTime( aScroll, scrollSpeed); + SetLoop( aScroll, L_DRUNK); + StartCycling( aScroll); + Print( 16); + scriptTimer = 9; + } + + if (script == 102) [ He's hit a bridge! + { + Erase( aCabbie); + Erase( aMeter); + SetLoop( aScroll, L_CRASH); + CycleTime( aScroll, one); + scriptTimer = 5; + } + + if (script == 103) [ You're dead. + { + Print( 18); + Erase( aScroll); + Set( certainDeath); + } + + + + if (script == 201) [ Start all over again. + { + Random( MIN_CABFARE, MAX_CABFARE, work); + fare += work; + Print( 13); + LastCel( aMeter, work); + SetCelV( aMeter, work); + ForceUpdate( aMeter); + + StartUpdate( aCabbie); + StartCycling( aCabbie); + SetLoop( aCabbie, L_STEERING); + steeringCycles = 2; + Reset( cabbieSteering); [ This makes him start immediately. + CycleTime( aCabbie, two); + + StartUpdate( aScroll); + StartCycling( aScroll); + Set( bgOn); + Set( scriptDone); + script = 2; + } + } + + +--scrollCycles; +if (bgOn && scrollCycles == 1) + { + scrollCycles = SCROLL_CYCLES; + if (!speedingUp) + { + ++scrollSpeed; + } + else + { + if (scrollSpeed > 1) + { + --scrollSpeed; + } + } + + if (scrollSpeed == cabRideLength) [ we go down to 0, then up to CRL. + { + Set( scriptDone); + } + else + { + CycleTime( aScroll, scrollSpeed); + } + } + + +if (meterDone) + { + Reset( meterDone); + StopUpdate( aMeter); + } + + +if (manDone) + { + Reset( manDone); + SetLoop( aCabbie, L_TALKING); + StartCycling( aCabbie); + talkCycles = 22; + } + +--talkCycles; +if (talkCycles == 1) + { + StopCycling( aCabbie); + } + + +--steeringCycles; [ turn that wheel +if (steeringCycles == 1) + { + Toggle( cabbieSteering); + if (cabbieSteering) + { + StartCycling( aCabbie); + Random( 5, 22, steeringCycles); + } + else + { + StopCycling( aCabbie); + Random( 22, 44, steeringCycles); + } + } + + +[***** +:exit [ test for leaving the room +[***** + +if (rideDone) + { + Reset( programControl); + Reset( handsOff); + newRoom = destRoom; + if (!rodeInCab) + { + Set( rodeInCab); + Reset( OK); + currentScore += 1; + Print( 17); + } + } diff --git a/RM10.MSG b/RM10.MSG new file mode 100644 index 0000000..8babdc1 --- /dev/null +++ b/RM10.MSG @@ -0,0 +1,110 @@ +[messages for room 10 -- rmTaxi +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"The cabbie snarls a \"Where to, buddy?\" as he swings the meter flag down." + +%message 2 +"\"Lookin' for action, eh? Dis town is full of it. + We gotta disco that's usually full of foxes this time of night. + Den dere's the casino, next to the all-night weddin' chapel. + And we gotta lovely bar, but you've been dere. + Me, I like da convenience store next to da disco, + but of course, that's just personal preference.\"" + +%message 3 +"\"It won't take us long to get back dere, + but I'll have to circle 'round da block.\"" + +%message 4 +"\"Well, here we are, buddy. That'll be $%v200.00.\"" + +%message 5 +"\"So, wadda we gonna do, buddy? + Ya just gonna sit here all night? + I gotta earn a livin' too, ya know!\"" + +%message 6 +"\"Why don'cha wait'll we git there, buddy?\"" + +%message 7 +"\"Sorry, but the meter's runnin'. Where ja wanna go?\"" + +%message 8 +"\"Thanks, buddy. Maybe I'll see ya again sometime!\"" + +%message 9 +"\"Waddaya tryin' to do, peahead! + You're not gonna stiff me, and get away with it!\"" + +%message 10 +"You wish you hadn't. + Mr. America, he ain't. + His strongest feature seems to be his odor!" + +%message 11 +"He wonders why you keep looking at him, + and flashes a coy little smile back at you in the mirror. + Your stomach turns, and not from the ride!" + +%message 12 +"The driver looks at you and says, + \"Hey! What's that you got? Wine?\" + He grabs your bottle of wine, and guzzles it down!" + +%message 13 +"\"Ok, but it'll cost ja extra!\"" + +%message 14 +"\"Waddaya mean, 'no money!!'\" snarls the driver. + \"Step outside my office, chump!\"" + +%message 15 +"\"Ok. You got it, Mac!\"" + +%message 16 +"Hang on, Larry. He's swerving all over the road!" + +%message 17 +"Whew! You're glad to get out of here." + +%message 18 +"It seems a bridge abutment has brought your game to a sudden stop! + Remember, Larry: \"Friends don't let cabbies drive drunk!\"" + +%message 19 +"\"I'm sorry, but it's against my personal philosophy to accept a gratuity!\"" + +%message 20 +"Sheepishly, you apologize to the cabbie for not carrying enough money + to pay for the ride." + +%message 21 +"\"So? Are ya gonna get outta my cab, or not?? + Thanks for da business, but I didn't want ta make no career outta this!\"" + +%message 22 +"\"So? Are ya gonna pay up, or do I have ta get rough with cha??\"" + +%message 23 +"It seems to be running a little fast, but then, this is an expensive town!" + +%message 24 +"You wonder if cab companies have full-time employees to make these floors + sticky." + +%message 25 +"Even the ceiling's grungy." + +%message 26 +"\"Ok, buddy,\" says the cabbie. \"But why would cha wanna go there?\"" + +%message 27 +"He sure drives fast, doesn't he?" + +%message 28 +"\"Nope. Next time, make up your mind before ya gets in da cab!\"" + diff --git a/RM11.CG b/RM11.CG new file mode 100644 index 0000000..03e3c63 --- /dev/null +++ b/RM11.CG @@ -0,0 +1,463 @@ +[logics for room 11 -- rmOutsideBar +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm11.msg" +%include "gamedefs.h" +%include "contrlrs.h" + + +#define L_HOTEL_SIGN 0 +#define L_BAR_SIGN_1 1 +#define L_BAR_SIGN_2 2 + +%define inClear lf0 +%define nearDoor lf1 +%define doorOpen lf2 +%define titleSongDone lf3 +%define titleSongPlaying lf4 +%define copAtEgo lf5 +%define copOnscreen lf7 + +%object aDoor 1 +%object aBarSign1 2 +%object aBarSign2 3 +%object aHotelSign 4 + + +if (initLog) + { + if (watchHours > 4 && [ Anything after 5 am. + watchHours < 10) + { + NewRoom( rmSunrise); + } + +[ if (machineType == MAC) +[ { +[ Set( slowProcessor); +[ } + + if (!beenIn11) + { + LoadSound( mTitle); + if (!testRoom) + { + Set( enableMenu); + DisableItem( cDummy); + StatusLineOn(); + gameSeconds = 0; + gameMinutes = 0; + gameHours = 0; + gameDays = 0; + + Reset( handsOff); + Reset( programControl); + AcceptInput(); + animationInterval = NORMAL_SPEED; + currentStatus = NORMAL; + + LoadView( vEgo); + SetView( ego, vEgo); + currentEgoView = NORMAL; + } + } + + + SetHorizon( 130); + + LoadLogics( lgcStreet); + + LoadPic( currentRoom); + DrawPic( currentRoom); + DiscardPic( currentRoom); + + LoadView( vBarExterior); + LoadView( vBarDoor); + + if (currentStatus != STIFFED_CABBIE && + wearingRubber) + { + LoadView( vCop); + LoadSound( mCop); + + AnimateObj( aCop); + SetView( aCop, vCop); + Position( aCop, 0, 145); + Draw( aCop); + FollowEgo( aCop, 8, copAtEgo); + Set( copOnscreen); + } + + + AnimateObj( aDoor); + IgnoreHorizon( aDoor); + IgnoreBlocks( aDoor); + Position( aDoor, 60, 131); + SetView( aDoor, vBarDoor); + SetPriority( aDoor, 8); + SetCel( aDoor, 0); + Draw( aDoor); + work = DOOR_CYCLE_TIME; + CycleTime( aDoor, work); + StopUpdate( aDoor); + + if (slowProcessor) + { + AddToPic( vBarExterior, L_BAR_SIGN_1, 0, 36, 83, 4, 4); + [view, loop, cel, x, y, obj priority, box priority + } + else + { + AnimateObj( aBarSign1); + IgnoreHorizon( aBarSign1); + IgnoreBlocks( aBarSign1); + IgnoreObjs( aBarSign1); + Position( aBarSign1, 36, 83); + SetView( aBarSign1, vBarExterior); + SetLoop( aBarSign1, L_BAR_SIGN_1); + Draw( aBarSign1); + CycleTime( aBarSign1, four); + } + + AnimateObj( aBarSign2); + IgnoreHorizon( aBarSign2); + IgnoreBlocks( aBarSign2); + IgnoreObjs( aBarSign2); + Position( aBarSign2, 83, 84); + SetView( aBarSign2, vBarExterior); + SetLoop( aBarSign2, L_BAR_SIGN_2); + Draw( aBarSign2); + CycleTime( aBarSign2, one); + + AnimateObj( aHotelSign); + IgnoreHorizon( aHotelSign); + IgnoreBlocks( aHotelSign); + IgnoreObjs( aHotelSign); + Position( aHotelSign, 134, 67); + SetView( aHotelSign, vBarExterior); + SetLoop( aHotelSign, L_HOTEL_SIGN); + Draw( aHotelSign); + CycleTime( aHotelSign, five); + + if (diedOfTheClap) + { + LoadView( vEgoMissingGroin); + LoadView( vEgoDead); + LoadView( vEgoCollapsing); + } + + if (previousRoom == rmAlley) + { + egoX = 134; + egoY = 142; + SetLoop( ego, FACING_LEFT); + StartMotion( ego); + } + else + { + if (previousRoom == rmInsideBar) + { + egoX = 58; + egoY = 134; + SetLoop( ego, FACING_FRONT); + } + else + { + if (previousRoom != rmDarkAlley) + { + egoX = 63; + egoY = 156; + SetLoop( ego, FACING_BACK); + } + } + } + PositionV( ego, egoX, egoY); + Draw( ego); + + Call( lgcStreet); + + ShowPic( ); + + if (currentStatus != STIFFED_CABBIE && + wearingRubber) + { + Sound( mCop, done); + } + + if (!beenIn11) + { + Set( beenIn11); + Sound( mTitle, titleSongDone); + Set( titleSongPlaying); + } + + Return( ); + + } [ end initLOG + + + +Reset( inClear); +if (Posn( ego, 34, 142, 130, 166)) + { + Set( inClear); + } + +Reset( nearDoor); +if (Posn( ego, 50, 131, 75, 136)) + { + Set( nearDoor); + } + + + + +[***** +:handleInput +[***** + +if (!haveInput) {goto noInput;} + +if ((Said( look) || + Said( look, building) || + Said( look, room) || + Said( look, bar))) + { + Print( 1); + Print( 2); + } + +if (Said( look, mat)) + { + Print( 9); + } + +if ((Said( lift, mat) || + Said( look, under, mat))) + { + Print( 10); + Print( 11); + Print( 12); + } + + +[ Now, do the cop stuff. + +if (copOnscreen) + { + if (Said( look, cop)) + { + Print( 18); + } + + if (Said( talk, cop)) + { + Print( 15); + } + } + + +if (Said( open, door)) + { + if (nearTaxi) + { + Reset( haveMatch); + } + else + { + if (!nearDoor) + { + Set( notCloseEnough); + } + else + { + if (watchHours > 2 && [ Anything after 3 am. + watchHours < 10) + { + Print( 13); + Print( 14); + } + else + { + Set( OK); + StartUpdate( aDoor); + EndOfLoop( aDoor, doorOpen); + PreventInput(); + StopMotion( ego); + Set( programControl); + } + } + } + } + +if (Said( look, door)) + { + if (!nearDoor) + { + Set( notCloseEnough); + } + else + { + Print( 8); + } + } + + +if ((Said( look, bar) || + Said( look, building))) + { + Print( 4); + } + +if ((Said( look, window) || + Said( look$in, window))) + { + Print( 6); + } + +if ((Said( break, window) || + Said( hit, window))) + { + Print( 7); + } + + +[***** +:noInput +[***** + +if (!handsOff && + diedOfTheClap && + secondsInRoom > 5 && + currentEgoView == NORMAL && + currentStatus == NORMAL && + inClear) + { + Set( scriptDone); + script = 0; + } + +if (script == 2 && inClear) + { + Set( scriptDone); + } + + +if (scriptDone) + { + Reset( scriptDone); + ++script; + + if (script == 1) + { + Reset( diedOfTheClap); + currentStatus = DYING_OF_CLAP; + Set( handsOff); + PreventInput(); + + SetView( ego, vEgoMissingGroin); + ForceUpdate( ego); + Print( 3); + scriptTimer = 10; + } + + if (script == 2) + { + [ This makes us wait until previous timer has expired, + [then wait again until inClear is set. + } + + if (script == 3) + { + Print( 5); + StopMotion( ego); + Set( programControl); + SetView( ego, vEgoCollapsing); + SetCel( ego, 0); + CycleTime( ego, two); + Set( keepCycling); + EndOfLoop( ego, scriptDone); + } + + if (script == 4) + { + Reset( keepCycling); + StopCycling( ego); + SetView( ego, vEgoDead); + SetCel( ego, 0); + egoX -= 3; + if (egoY < 160) + { + egoY += 7; + } + RepositionToV( ego, egoX, egoY); + scriptTimer = 5; + } + + if (script == 5) + { + Set( keepCycling); + CycleTime( ego, three); + EndOfLoop( ego, scriptDone); + } + + if (script == 6) + { + Reset( handsOff); + newRoom = rmWorkshop; + } + } + + + +[ Cop stuff: + +if (aSecondPassed && + secondsInRoom == 5 && + wearingRubber) + { + Print( 15); + } + +if (copAtEgo) + { + Reset( copAtEgo); + Set( handsOff); + Erase( ego); + Erase( aCop); + Set( certainDeath); + Print( 16); + Print( 17); + } + + +if (titleSongDone) + { + Reset( titleSongDone); + Reset( titleSongPlaying); + } + +if (titleSongPlaying) + { + notMovedCycles = 0; + } + + +[***** +:exit [ test for leaving the room +[***** + +Call( lgcStreet); + +if ((edgeEgoHit == RIGHT || + edgeEgoHit == LEFT)) {newRoom = rmDarkAlley;} +if (Posn( ego, 132, 120, SCREEN_RIGHT, 138)) {newRoom = rmAlley;} + +if (doorOpen) + { + AcceptInput(); + StartMotion( ego); + Reset( programControl); + newRoom = rmInsideBar; + } diff --git a/RM11.MSG b/RM11.MSG new file mode 100644 index 0000000..cca1b1a --- /dev/null +++ b/RM11.MSG @@ -0,0 +1,66 @@ +[messages for room 11 -- rmOutsideBar +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"You are outside Lefty's bar. Isn't it wonderful what can be done + with a little neon?" + +%message 2 +"There is a sign on that utility pole." + +%message 3 +"It appears that the hooker gave you a little more than you bargained for!" + +%message 4 +"Considering the looks of this place, you decide that next time you'd be + better off to spend a little more money on your computer games!" + +%message 5 +"While life may be possible, it is no longer worth living." + +%message 6 +"The windows are too dirty to see through." + +%message 7 +"Nah. Lefty would probably break both your legs!" + +%message 8 +"Nice tuck and roll job, eh?" + +%message 9 +"\"Welcome\"" + +%message 10 +"Amazed by your own cleverness, you lift the door mat and discover..." + +%message 11 +"...absolutely nothing!" + +%message 12 +"(What did you expect? A key?)" + +%message 13 +"You can't. The door is securely locked. " + +%message 14 +"Lefty's closes at 3:00 a.m." + +%message 15 +"\"STOP, PERVERT!!!\" shouts the cop.\n\n +\"I wonder who he's yelling at,\" you think." + +%message 16 +"\"Caught you, pervert!\" the cop shouts. + \"We don't like people exposing themselves around this town, + especially wearing one of those!\"" + +%message 17 +"Next time, if you insist on wearing your \"lubber\" in public, + you should at least zip your fly." + +%message 18 +"He appears to be chasing someone!" + diff --git a/RM12.CG b/RM12.CG new file mode 100644 index 0000000..bea391d --- /dev/null +++ b/RM12.CG @@ -0,0 +1,1125 @@ +[logics for room 12 -- rmAlley +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm12.msg" +%include "gamedefs.h" + + + +#define L_HOTEL_SIGN 0 +#define L_WINDOW_OPEN 1 [ 1 cell only +#define L_WINDOW_BREAKING 2 +#define L_WINDOW_BROKEN 3 + +#define L_WITH_HAMMER 0 +#define L_WITHOUT_HAMMER 1 + + +%define onFireEscape lf0 +%define nearWindow lf1 +%define nearPills lf2 +%define hitWindow lf3 +%define nearDumpster lf5 +%define windowDone lf7 +%define ropeAroundWaist lf8 +%define ropeAroundRailing lf9 + + +%define yuchTimer lv0 + + +%object aHotelSign 1 +%object aLadder 2 +%object aWindow 3 + + + +if (initLog) + { + LoadPic( currentRoom); + DrawPic( currentRoom); + DiscardPic( currentRoom); + + LoadView( vAlleyStuff); + LoadView( vEgoOnLadder); + LoadView( vEgoFalling); + LoadView( vEgoIntoDumpster); + LoadView( vEgoLeavingDumpster); + LoadView( vEgoDead); + LoadView( vEgoOnRope); + + LoadSound( sEgoFalling); + + + AnimateObj( aHotelSign); + IgnoreHorizon( aHotelSign); + IgnoreBlocks( aHotelSign); + IgnoreObjs( aHotelSign); + SetView( aHotelSign, vAlleyStuff); + SetLoop( aHotelSign, L_HOTEL_SIGN); + SetCel( aHotelSign, 0); + Position( aHotelSign, 18, 73); + Draw( aHotelSign); + work = 8; + CycleTime( aHotelSign, work); + + AnimateObj( aLadder); + IgnoreHorizon( aLadder); + IgnoreBlocks( aLadder); + IgnoreObjs( aLadder); + SetView( aLadder, vEgoOnLadder); + SetCel( aLadder, 0); + CycleTime( aLadder, three); + Position( aLadder, 51, 101); + Draw( aLadder); + StopUpdate( aLadder); + + + if (!ObjInRoom( iPills, currentRoom) && + alleyWindowBroken) + { + AddToPic( vAlleyStuff, L_WINDOW_BROKEN, 0, 112, 51, 4, 4); + } + else + { + AnimateObj( aWindow); + IgnoreHorizon( aWindow); + IgnoreBlocks( aWindow); + IgnoreObjs( aWindow); + SetView( aWindow, vAlleyStuff); + SetLoop( aWindow, L_WINDOW_BREAKING); + if (alleyWindowBroken) + { + LastCel( aWindow, work); + SetCelV( aWindow, work); + } + else + { + SetCel( aWindow, 0); + } + Position( aWindow, 112, 51); + Draw( aWindow); + StopUpdate( aWindow); + } + + if (hookerWindowOpen) + { + AddToPic( vAlleyStuff, L_WINDOW_OPEN, 0, 65, 51, 4, 4); + } + + currentStatus = NORMAL; + if (previousRoom == rmOutsideBar) + { + egoX = 0; + egoY = 148; + Reset( onFireEscape); + StartMotion( ego); + SetLoop( ego, FACING_RIGHT); + } + else + { + if (previousRoom == rmInsideBar) + { + egoX = 58; + egoY = 148; + currentStatus = IN_DUMPSTER; + } + else + { + egoX = 70; + egoY = 64; + SetLoop( ego, FACING_FRONT); + Set( onFireEscape); + Reset( keepCycling); + StartMotion( ego); + Reset( programControl); + ReleasePriority( ego); + } + } + PositionV( ego, egoX, egoY); + + if (previousRoom != rmInsideBar) + { + Draw( ego); + } + + ShowPic( ); + + if (currentStatus == IN_DUMPSTER) + { + PreventInput(); + Set( programControl); + Set( notCloseEnough); + } + else + { + Reset( programControl); + AcceptInput(); + } + Return( ); + + } [ end initLOG + + + +Reset( onFireEscape); +if (Posn( ego, 53, 60, 94, 64)) + { + Set( onFireEscape); + } + +Reset( nearPills); +if (ObjInRoom( iPills, currentRoom) && + onFireEscape && + Posn( ego, 82, 60, 99, 64)) + { + Set( nearPills); + } + +if (currentStatus == HANGING_BY_ROPE && + ObjInRoom( iPills, currentRoom)) + { + Set( nearPills); + } + +Reset( nearWindow); +if (onFireEscape) + { + if (Posn( ego, 61, 60, 79, 64)) + { + Set( nearWindow); + } + } + +Reset( nearDumpster); +if (!onFireEscape && + Posn( ego, 42, 148, 58, 152)) + { + Set( nearDumpster); + } + +if (onFireEscape && + currentStatus == NORMAL && + ropeAroundWaist && ropeAroundRailing) + { + StopMotion( ego); + } + +if (currentStatus == NORMAL && + Posn( ego, 53, 60, 54, 64)) + { + Reset( onFireEscape); + script = 0; + Set( scriptDone); [ make him start falling in trash + } + + +[***** +:handleInput +[***** + +if (!haveInput) {goto noInput;} + +if ((Said( look) || + Said( look, room) || + Said( look, alley))) + { + if (!ObjInRoom( iPills, currentRoom)) + { + Print( 3); + } + else + { + Print( 6); + } + } + +if ((Said( look, ladder) || + Said( look, rail))) + { + Print( 43); + } + + + +[ If on ground, can "search dumpster" to find old hammer. + +if (currentStatus != IN_DUMPSTER) + { + if ((Said( search, bin) || + Said( look, bin) || + Said( look$in, bin))) + { + if (!nearDumpster) + { + Print( 32); + } + else + { + Print( 28); + } + } + + if ((Said( brush, off, clothes) || + Said( brush, clothes) || + Said( brush, me, off))) + { + Set( OK); + } + + if ((Said( enter, bin) || + Said( jump, bin) || + Said( jump, in, bin) || + Said( climb, bin) || + Said( climb, in, bin))) + { + if (onFireEscape) + { + Print( 55); + } + else + { + if (!nearDumpster) + { + Print( 32); + } + else + { + script = 100; + Set( scriptDone); + } + } + } + } +else + { + if ((Said( climb, out, bin) || + Said( jump, out, bin) || + Said( climb, out) || + Said( get, out) || + Said( go, out) || + Said( go) || + Said( leave, bin))) + { + script = 200; + Set( scriptDone); + } + + if ((Said( search, bin) || + Said( look$in, bin) || + Said( look, bin))) + { + if (ObjInRoom( iHammer, currentRoom)) + { + Print( 25); + } + else + { + Print( 26); + } + } + + if (Said( get, hammer)) + { + if (!ObjInRoom( iHammer, currentRoom)) + { + Set( alreadyGotIt); + } + else + { + Set( OK); + Get( iHammer); + currentScore += 3; + } + } + } + + +if (Said( look, sign)) + { + Print( 47); + Print( 48); + } + +if ((Said( climb, up) || + Said( climb, rail) || + Said( climb, up, rail) || + Said( pull, down, ladder, rail) || + Said( pull, ladder, rail) || + Said( pull, down, ladder) || + Said( pull, ladder) || + Said( climb, ladder) || + Said( stand, on, ladder) || + Said( get, ladder) || + Said( lower, ladder) || + Said( jump, ladder) || + Said( jump, up, ladder) || + Said( jump, on, ladder) || + Said( jump) || + Said( jump, up))) + { + if ((onFireEscape || + currentStatus == HANGING_BY_ROPE || + nearWindow)) + { + Print( 8); + } + else + { + if (nearDumpster) + { + Print( 33); + } + else + { + Print( 53); + } + } + } + + +if ((Said( close, window) || + Said( lower, window))) + { + if ((!onFireEscape || + !nearWindow)) + { + Set( notCloseEnough); + } + else + { + Print( 4); + } + } + +if ((Said( look, window) || + Said( look$in, window))) + { + if (!onFireEscape) + { + Print( 14); + } + else + { + if (nearWindow) + { + Print( 12); + } + else + { + if (ObjInRoom( iPills, currentRoom)) + { + Print( 13); + } + else + { + Print( 15); + } + } + } + } + +if ((Said( look, west, window) || + Said( look$in, west, window))) + { + if (!onFireEscape) + { + Print( 14); + } + else + { + Print( 12); + } + } + +if ((Said( look, east, window) || + Said( look$in, east, window))) + { + if (!onFireEscape) + { + Print( 14); + } + else + { + if (ObjInRoom( iPills, currentRoom)) + { + Print( 13); + } + else + { + Print( 15); + } + } + } + + + +[ Handle ego on balcony going for the pill bottle. +[If "reach window" without rope, fall from fire escape, and die. +[If ties rope to self, and railing, reach him over. + +if (Has( iRope) && + currentStatus != HANGING_BY_ROPE) + { + if ((Said( tie, rope, waist) || + Said( tie, rope, me))) + { + if (!ropeAroundWaist) + { + Set( OK); + Set( ropeAroundWaist); + } + else + { + Print( 22); + } + } + + if (Said( tie, rope, rail)) + { + if (!onFireEscape) + { + Print( 36); + } + else + { + if (!ropeAroundRailing) + { + Set( OK); + Set( ropeAroundRailing); + } + else + { + Print( 22); + } + } + } + } + + +if ((Said( get, pills) || + Said( get, bottle) || + Said( get, bottle, pills) || + Said( reach, over, window) || + Said( reach, over, rail, get, pills) || + Said( reach, for, pills) || + Said( reach, over, rail, for, pills) || + Said( reach, over, rail) || + Said( reach, window) || + Said( jump, window) || + Said( stand, rail) || + Said( stand, on, rail) || + Said( lean, over, rail) || + Said( lean, over) || + Said( lean, out) || + Said( climb, on, rail) || + Said( climb, over) || + Said( climb, over, rail, get, pills) || + Said( climb, rail, get, pills) || + Said( climb, over, rail, pills) || + Said( climb, rail, pills) || + Said( climb, over, rail) || + Said( climb, rail))) + { + if (Has( iPills)) + { + Set( alreadyGotIt); + } + else + { + if (ObjInRoom( iPills, currentRoom) && + !nearPills) + { + Print( 1); + } + else + { + if ((!ropeAroundWaist || !ropeAroundRailing)) + { + script = 250; + Set( scriptDone); + message = 16; + } + else + { + if (currentStatus != HANGING_BY_ROPE) + { + currentStatus = HANGING_BY_ROPE; + Set( programControl); + StopMotion( ego); + SetView( ego, vEgoOnRope); + SetLoop( ego, L_WITHOUT_HAMMER); + RepositionTo( ego, 92, 61); + Set( keepCycling); + CycleTime( ego, three); + Print( 17); + } + else + { + if (!ObjInRoom( iPills, currentRoom)) + { + Print( 24); + } + else + { + if (!alleyWindowBroken) + { + Print( 21); + Print( 9); + } + else + { + SetLoop( ego, L_WITHOUT_HAMMER); + StartUpdate( aWindow); + Erase( aWindow); + AddToPic( vAlleyStuff, L_WINDOW_BROKEN, 0, 112, 51, 4, 4); + Get( iPills); + currentScore += 8; + Print( 19); + } + } + } + } + } + } + } + +if (!alleyWindowBroken && + (Said( break, window, hammer) || + Said( use, hammer, break, window) || + Said( break, window) || + Said( break, window, with, hammer) || + Said( hit, window, hammer) || + Said( use, hammer, hit, window) || + Said( hit, window) || + Said( hit, window, with, hammer) || + Said( use, hammer))) + { + if (!Has( iHammer)) + { + Set( dontHaveIt); + } + else + { + if ((!nearPills || + !ropeAroundWaist || + !ropeAroundRailing)) + { + Set( notCloseEnough); + } + else + { + if (currentStatus != HANGING_BY_ROPE) + { + Print( 20); + } + else + { + SetLoop( ego, L_WITH_HAMMER); + SetCel( ego, 0); + EndOfLoop( ego, hitWindow); + } + } + } + } + + +if (currentStatus == HANGING_BY_ROPE) + { + if (Said( unlock, window)) + { + Print( 10); + } + + if (Said( open, window)) + { + Print( 11); + } + + if (!alleyWindowBroken && + (Said( hit, window) || + Said( hit, window, with, hand) || + Said( use, hand, hit, window) || + Said( break, window))) + { + Print( 21); + Print( 9); + } + + if ((Said( go, rail) || + Said( go, back, on, rail) || + Said( go, on, rail) || + Said( go, back) || + Said( go, back, rail) || + Said( get, on, rail) || + Said( get, back, rail) || + Said( get, back, on, rail) || + Said( pull, on, rope) || + Said( pull, rope) || + Said( get, rail) || + Said( climb, back) || + Said( climb, back, rail) || + Said( climb, back, on, rail) || + Said( climb, on, rail) || + Said( climb, rail) || + Said( return, rail) || + Said( return, rail) || + Said( stop, hanging, rope))) + { + Set( OK); + currentStatus = NORMAL; + SetView( ego, vEgo); + RepositionTo( ego, 86, 64); + AcceptInput(); + StartMotion( ego); + Reset( programControl); + Reset( keepCycling); + CycleTime( ego, one); + } + + if (Said( look, down)) + { + Print( 52); + } + } + + +if ((Said( cut, rope, rol) || + Said( use, knife, rol))) + { + if (!Has( iPocketKnife)) + { + Print( 56); + } + else + { + if (currentStatus == HANGING_BY_ROPE) + { + Print( 41); + script = 250; + Set( scriptDone); + message = 23; + } + else + { + if (!ropeAroundWaist && !ropeAroundRailing) + { + Print( 40); + } + else + { + Print( 41); + Reset( ropeAroundWaist); + Reset( ropeAroundRailing); + StartMotion( ego); + Reset( programControl); + Get( iRope); + } + } + } + } + + +if ((Said( take, rope, rol) || + Said( untie, rope, rol))) + { + if (currentStatus == HANGING_BY_ROPE) + { + script = 250; + Set( scriptDone); + message = 23; + } + else + { + if (!ropeAroundWaist && !ropeAroundRailing) + { + Print( 40); + } + else + { + Print( 39); + Get( iRope); + Reset( ropeAroundRailing); + Reset( ropeAroundWaist); + StartMotion( ego); + Reset( programControl); + } + } + } + + +if (onFireEscape) + { + if (Said( look, fire$escape)) + { + Print( 5); + } + + if ((Said( enter, window) || + Said( climb, window) || + Said( go, back) || + Said( go, room) || + Said( go, window))) + { + if (!nearWindow) + { + Print( 54); + } + else + { + if (ropeAroundWaist && ropeAroundRailing) + { + Print( 57); + } + else + { + Set( OK); + newRoom = rmHooker; + } + } + } + + if ((Said( climb, down) || + Said( lower, ladder) || + Said( go, ladder) || + Said( go, down, ladder) || + Said( climb, down, ladder) || + Said( climb, ladder))) + { + Print( 2); + } + + if (Said( look, down)) + { + Print( 52); + } + + if ((Said( jump) || + Said( jump, off) || + Said( jump, down) || + Said( jump, bin) || + Said( stand, on, rail) || + Said( jump, off, rail) || + Said( climb, down, rail))) + { + if (ropeAroundWaist && ropeAroundRailing) + { + Print( 57); + } + else + { + script = 250; + Set( scriptDone); + message = 23; + } + } + } + + +if (ObjInRoom( iPills, currentRoom) && + Said( look, pills)) + { + if (nearPills) + { + Print( 13); + } + else + { + Print( 51); + } + } + + + +[ Misses, give clue. + +if ((Said( take, ladder) || + Said( remove, ladder))) + { + Print( 49); + } + +if ((Said( throw, rope, rol) || + Said( climb, down, rope, rol) || + Said( climb, rope, rol))) + { + Print( 37); + } + +if ((Said( tie, rope) || + Said( use, rope))) + { + Print( 38); + } + +if ((Said( look, over, fence) || + Said( look, fence))) + { + Print( 34); + } + +if ((Said( climb, fence) || + Said( jump, fence) || + Said( jump, over, fence) || + Said( climb, over, fence))) + { + Print( 35); + } + +if ((Said( close, lid, rol) || + Said( climb, on, bin, rol) || + Said( climb, bin, rol) || + Said( climb, on, top, bin, rol) || + Said( lower, lid, rol) || + Said( lower, bin, rol) || + Said( stand, on, bin) || + Said( move, lid, rol) || + Said( close, bin, rol))) + { + Print( 44); + } + +if ((Said( look, behind, bin) || + Said( move, bin, rol))) + { + Print( 45); + } + +if (Said( tie, rope, anyword)) + { + Print( 46); + } + +if ((Said( cut, glass, with, ring) || + Said( use, ring, cut, glass) || + Said( hold, rope, rol) || + Said( hold, ladder, rol) || + Said( hit, fence, rol) || + Said( hit, ladder, rol) || + Said( hit, wall, rol))) + { + Print( 42); + } + + + + +[***** +:noInput +[***** + +if (hitWindow) + { + Reset( hitWindow); + Print( 18); + PreventInput(); + StartUpdate( aWindow); + EndOfLoop( aWindow, windowDone); + } + +if (windowDone) + { + Reset( windowDone); + Reset( keepCycling); + StopUpdate( aWindow); + Set( alleyWindowBroken); + AcceptInput(); + } + +if (aSecondPassed) + { + --yuchTimer; + if (yuchTimer == 16) + { + Print( 30); + } + + if (yuchTimer == 11) + { + Print( 31); + AcceptInput(); + } + + if (yuchTimer == 1 && + currentStatus == IN_DUMPSTER) + { + Print( 27); + } + } + +CurrentCel( aLadder, work); +if (work == 4) + { + Set( scriptDone); + } + +if (scriptDone) + { + Reset( scriptDone); + ++script; + + if (script == 1) [ Fall down ladder. + { + currentStatus = FALLING; + StartUpdate( aLadder); + SetCel( aLadder, 1); + + Set( programControl); + PreventInput(); + Erase( ego); + EndOfLoop( aLadder, scriptDone); + Sound( sEgoFalling, done); + } + + if (script == 2) + { + SetView( ego, vEgoFalling); + SetPriority( ego, 11); + Position( ego, 53, 99); + Draw( ego); + MoveObj( ego, 53, 137, 3, scriptDone); + } + + if (script == 3) + { + SetCel( aLadder, 0); + StopUpdate( aLadder); + ForceUpdate( aLadder); + } + + if (script == 4) + { + StopMotion( ego); + Set( programControl); + SetView( ego, vEgoIntoDumpster); + SetCel( ego, 1); + SetPriority( ego, 15); + RepositionTo( ego, 40, 126); + CycleTime( ego, three); + Set( keepCycling); + EndOfLoop( ego, scriptDone); + } + + if (script == 5) + { + Reset( keepCycling); + StopCycling( ego); + LastCel( ego, work); + SetCelV( ego, work); + AcceptInput(); + currentStatus = IN_DUMPSTER; + yuchTimer = 5; + script = 0; + } + + + + if (script == 101) [ Climbing into dumpster + { + Set( OK); + StopMotion( ego); + Set( programControl); + AcceptInput(); + currentStatus = IN_DUMPSTER; + SetView( ego, vEgoLeavingDumpster); + LastCel( ego, work); + SetCelV( ego, work); + SetPriority( ego, 15); + RepositionTo( ego, 45, 145); + CycleTime( ego, two); + Set( keepCycling); + BeginningOfLoop( ego, scriptDone); + } + + if (script == 102) + { + Reset( keepCycling); + StopCycling( ego); + SetView( ego, vEgoIntoDumpster); + RepositionTo( ego, 40, 126); + LastCel( ego, work); + SetCelV( ego, work); + yuchTimer = 5; + script = 0; + } + + + + if (script == 201) [ Climbing out of dumpster. + { + Set( programControl); + Set( OK); + SetView( ego, vEgoLeavingDumpster); + SetCel( ego, 0); + SetPriority( ego, 15); + Position( ego, 49, 145); + CycleTime( ego, three); + Set( keepCycling); + EndOfLoop( ego, scriptDone); + } + + if (script == 202) + { + Reset( keepCycling); + SetView( ego, vEgo); + RepositionTo( ego, 52, 148); + StartMotion( ego); + Reset( programControl); + ReleasePriority( ego); + StepSize( ego, one); + CycleTime( ego, one); + currentStatus = NORMAL; + script = 0; + } + + + if (script == 251) + { + Set( programControl); + PreventInput(); + currentStatus = FALLING; + SetView( ego, vEgoFalling); + SetCel( ego, 3); + SetPriority( ego, 15); + RepositionTo( ego, 95, 68); + ForceUpdate( ego); + + PrintV( message); + message = 0; + CycleTime( ego, one); + MoveObj( ego, 95, 157, 4, scriptDone); + Sound( sEgoFalling, done); + } + + if (script == 252) + { + Reset( keepCycling); + StopCycling( ego); + SetView( ego, vEgoDead); + SetCel( ego, 0); + RepositionTo( ego, 83, 157); + scriptTimer = 5; + } + + if (script == 253) + { + Set( keepCycling); + CycleTime( ego, three); + EndOfLoop( ego, scriptDone); + } + + if (script == 254) + { + newRoom = rmWorkshop; + } + } + + +[***** +:exit [ test for leaving the room +[***** + +if (posn( ego, 0, 135, 3, 136)) {edgeEgoHit = LEFT;} +if (edgeEgoHit == LEFT) {newRoom = rmOutsideBar;} + diff --git a/RM12.MSG b/RM12.MSG new file mode 100644 index 0000000..b401138 --- /dev/null +++ b/RM12.MSG @@ -0,0 +1,195 @@ +[messages for room 12 -- rmAlley +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"Try moving to the east end of the fire escape." + +%message 2 +"Try moving to the west end of the fire escape." + +%message 3 +"%m7 and a fence." + +%message 4 +"Nah. That room needs the fresh air!" + +%message 5 +"You are on a fire escape. + A rusty ladder is at one end. + East of the fire escape is another window, just out of your reach." + +%message 6 +"%m7, a fence, and something sitting in the east window." + +%message 7 +"It's a nice little alley, with a trash bin, two windows, a fire escape" + +%message 8 +"Move closer to the ladder." + +%message 9 +"(Of course, you can't play the violin now, but you get the idea.)" + +%message 10 +"Unlock it? From the outside?" + +%message 11 +"You can't. It's locked from the inside." + +%message 12 +"Looking inside the west window, you see the room you just left." + +%message 13 +"Looking at the east window, + you notice a bottle of pills sitting on the window ledge." + +%message 14 +"There are two windows high above you. + The west window by the fire escape has a dim, reddish glow; + the east window is dark. + There may be something on the sill of the east window, + but you can't make it out from down here." + +%message 15 +"You broke it, didn't you?" + +%message 16 +"You lean far out over the railing before remembering that + agility is yet another of your short suits." + +%message 17 +"With the rope securely holding you to the railing, + you can reach all the way over to the window. + NOW, of all times, you notice the window's locked!" + +%message 18 +"Subtly, you smash the window with your hammer. + Your future as a second-story man seems quite plausible!" + +%message 19 +"You got 'em! But what are they?" + +%message 20 +"You might try reaching over to the window first." + +%message 21 +"You consider sticking your hand through a solid glass window, + but realize that if you did, you wouldn't be able to play the violin." + +%message 22 +"It already is." + +%message 23 +"What is this; a death wish?" + +%message 24 +"You already took them. Why do this again?" + +%message 25 +"Amidst assorted, odoriferous refuse from Lefty's clientel, you discover + Lefty's old, left-handed hammer." + +%message 26 +"There's nothing else here worth describing, let alone taking." + +%message 27 +"\"YUCK!!\"" + +%message 28 +"Unfortunately, you can't see much from out here." + +%message 29 +"Wow! Does your head hurt!!" + +%message 30 +"Hey! Where are you?" + +%message 31 +"After a careful analysis of your surroundings, + you conclude you are at the bottom of a pile of garbage!" + +%message 32 +"Move to the front of the trash bin." + +%message 33 +"There's no way to reach the ladder from down here. + It's only accessible from above." + +%message 34 +"You see alleys stretching off to infinity." + +%message 35 +"The fence is much too tall for you to climb over." + +%message 36 +"It's not long enough to reach from here." + +%message 37 +"It's not long enough to reach anywhere, + but you might want to use it for safety purposes." + +%message 38 +"Be more specific." + +%message 39 +"You untie the rope." + +%message 40 +"How can you do that?" + +%message 41 +"Using the dull pocket knife, you cut the rope free." + +%message 42 +"%g176" [ That's AN idea... + +%message 43 +"A rickety fire escape, complete with safety ladder, + is loosely attached to the building. + A mild, reddish glow comes from the window behind it." + +%message 44 +"Unfortunately the lid on the trash bin just will not close." + +%message 45 +"Try as you might, it is impossible to move the trash bin." + +%message 46 +"The solution is closer to you than that." + +%message 47 +"There is an old neon sign hanging on the wall that says \"Hotel\"..." + +%message 48 +"...approximately." + +%message 49 +"You can't. Even its rusty bolts are too tough for you!" + +%message 50 +"Not now!" + +%message 51 +"There may be something in the east window, but from here, you're not sure." + +%message 52 +"It's a long way to the ground!" + +%message 53 +"Whee!" + +%message 54 +"Move closer to the window, if you want to go back in the hooker's room." + +%message 55 +"You reconsider after noticing the trash bin is behind where you would fall!" + +%message 56 +"You ain't got no knife!!" + +%message 57 +"You're currently all tied up!" + diff --git a/RM13.CG b/RM13.CG new file mode 100644 index 0000000..8a5a4a5 --- /dev/null +++ b/RM13.CG @@ -0,0 +1,631 @@ +[logics for room 13 -- rmToilet +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm13.msg" +%include "gamedefs.h" + + + +%define WATER_CYCLE 8 + +%define nearToilet lf0 +%define toiletOverflowing lf2 +%define doorOpenDone lf4 +%define doorCloseDone lf7 +%define nearDoor lf8 +%define nearSink lf9 +%define paperCycling lf10 + +%define waterY lv0 +%define waterCycle lv1 +%define toiletTimer lv2 +%define pissTimer lv3 +%define graffitiCount lv4 +%define paperCycles lv5 + +%object aDoor 1 +%object aFountain 2 +%object aRing 3 + + + +if (initLog) + { + LoadView( vEgoOnToilet); + LoadView( vToiletOverflowing); + LoadView( vToiletFountain); + LoadView( vToiletDoor); + LoadView( vRing); + LoadView( vEgoDrowning); + + LoadSound( sPissing); + LoadSound( sFart); + + + LoadPic( currentRoom); + DrawPic( currentRoom); + DiscardPic( currentRoom); + + AnimateObj( aDoor); + IgnoreHorizon( aDoor); + IgnoreBlocks( aDoor); + IgnoreObjs( aDoor); + Position( aDoor, 52, 137); + SetView( aDoor, vToiletDoor); + LastCel( aDoor, work); + SetCelV( aDoor, work); + SetPriority( aDoor, 10); + work = DOOR_CYCLE_TIME; + CycleTime( aDoor, work); + Draw( aDoor); + BeginningOfLoop( aDoor, doorCloseDone); + + AnimateObj( aFountain); + IgnoreHorizon( aFountain); + IgnoreBlocks( aFountain); + IgnoreObjs( aFountain); + Position( aFountain, 71, 123); + SetView( aFountain, vToiletFountain); + SetPriority( aFountain, 6); + + + if (ObjInRoom( iRing, currentRoom)) + { + AnimateObj( aRing); + IgnoreBlocks( aRing); + IgnoreObjs( aRing); + SetView( aRing, vRing); + SetPriority( aRing, 12); + Position( aRing, 101, 116); + Draw( aRing); + StopUpdate( aRing); + } + + Set( programControl); + StopMotion( ego); + Position( ego, 56, 136); + Draw( ego); + + ShowPic( ); + + Return( ); + + } [ end initLOG + + + +Reset( nearDoor); +if (Posn( ego, 50, 132, 60, 140)) + { + Set( nearDoor); + } + +Reset( nearSink); +if (Posn( ego, 89, 129, 110, 160)) + { + Set( nearSink); + } + +Reset( nearToilet); +if (Posn( ego, 65, 125, 84, 131)) + { + Set( nearToilet); + } + + +[***** +:handleInput +[***** + +if (!haveInput) {goto noInput;} + +if ((Said( look) || + Said( look, room))) + { + Print( 1); + } + +if ((Said( take, ring) || + Said( take, ring, from, sink) || + Said( take, ring, sink))) + { + if (!nearSink) + { + Set( notCloseEnough); + } + else + { + if (!ObjInRoom( iRing, currentRoom)) + { + Set( alreadyGotIt); + } + else + { + StartUpdate( aRing); + Erase( aRing); + Get( iRing); + currentScore += 3; + Print( 13); + } + } + } + + +if ((Said( look$in, sink) || + Said( look, sink))) + { + if (!nearSink) + { + Set( notCloseEnough); + } + else + { + if (!ObjInRoom( iRing, currentRoom)) + { + Print( 14); + Print( 15); + } + else + { + Print( 12); + } + } + } + +[ Handle finding the ring and the graffiti. + +if (Said( look, wall)) + { + ++graffitiCount; + if (graffitiCount == 1) + { + Print( 2); + } + + if (graffitiCount == 2) + { + Print( 4); + } + + if (graffitiCount == 3) + { + Print( 5); + } + + if (graffitiCount > 3) + { + Print( 17); + if (!knowsPassword) + { + Set( knowsPassword); + currentScore += 2; + } + } + } + +if (Said( smell, rol)) + { + Print( 39); + } + +[ Handle ego dumping. + +if ((Said( get, up) || + Said( leave) || + Said( stop, crap) || + Said( get, paper) || + Said( use, paper) || + Said( get, toilet, paper) || + Said( use, toilet, paper) || + Said( wipe) || + Said( wipe, ass) || + Said( stand, up) || + Said( stand))) + { + if (currentStatus != ON_TOILET) + { + Print( 7); + } + else + { + Print( 29); + Set( toiletPaperOnShoe); + currentStatus = NORMAL; + SetView( ego, vEgo); + CycleTime( ego, one); + ForceUpdate( ego); + StartMotion( ego); + Reset( programControl); + Reset( keepCycling); + toiletTimer = 0; + paperCycles = 0; + Return(); + } + } + +if (currentStatus == ON_TOILET && + !haveMatch) + { + Set( haveMatch); + Print( 7); + } + +if ((Said( take, crap) || + Said( sit, toilet) || + Said( sit, stool) || + Said( sit, on, toilet) || + Said( sit, on, stool) || + Said( go, toilet) || + Said( use, toilet) || + Said( sit) || + Said( crap))) + { + if (currentStatus != NORMAL) + { + Print( 7); + } + else + { + if (!nearToilet) + { + Set( notCloseEnough); + } + else + { + currentStatus = ON_TOILET; + SetView( ego, vEgoOnToilet); + RepositionTo( ego, 72, 126); + Set( programControl); + Set( keepCycling); + StopMotion( ego); + ForceUpdate( ego); + Print( 10); + toiletTimer = 14; + paperCycles = 3; + if (!poopedInCan) + { + Set( poopedInCan); + currentScore += 1; + } + + Return(); + } + } + } + + +if ((Said( drink, water, rol) || + Said( get, drink, rol))) + { + Print( 36); + } + +if ((Said( turn, on, water) || + Said( turn, water, on, sink) || + Said( turn, on, sink) || + Said( turn, on, water, sink) || + Said( wash, hands, rol))) + { + if (!nearSink) + { + Set( notCloseEnough); + } + else + { + Print( 22); + Print( 24); + Print( 25); + Print( 27); + } + } + +if (Said( wash, face, rol)) + { + if (!nearSink) + { + Set( notCloseEnough); + } + else + { + Print( 22); + Print( 24); + Print( 25); + Print( 31); + } + } + +if ((Said( dry, rol) || + Said( shake, rol) || + Said( wipe, face, rol) || + Said( wipe, hands, rol) || + Said( wipe, my, face, rol) || + Said( wipe, my, hands, rol))) + { + Print( 32); + } + +if ((Said( rinse, sink) || + Said( rinse, out, sink))) + { + Print( 35); + } + + +if ((Said( piss, rol) || + Said( go, bathroom, rol) || + Said( take, piss, rol))) + { + if (currentStatus != NORMAL) + { + Print( 7); + } + else + { + if (!nearToilet) + { + Set( notCloseEnough); + } + else + { + Set( OK); + currentStatus = PISSING; + SetLoop( ego, FACING_BACK); + RepositionTo( ego, 74, 127); + ForceUpdate( ego); + Set( programControl); + StopMotion( ego); + pissTimer = 5; + Sound( sPissing, done); + } + } + } + +if (Said( throw, up)) + { + Print( 41); + } + +if ((Said( knock, anyword, door) || + Said( knock, door, anyword) || + Said( knock, door) || + Said( knock))) + { + if (!nearDoor) + { + Set( notCloseEnough); + } + else + { + Print( 6); + } + } + +if (Said( open, door)) + { + if (!nearDoor) + { + Print( 26); + } + else + { + StopMotion( ego); + Set( programControl); + + StartUpdate( aDoor); + EndOfLoop( aDoor, doorOpenDone); + } + } + + +if ((Said( look, mirror) || + Said( look$in, mirror))) + { + if (!nearSink) + { + Set( notCloseEnough); + } + else + { + Print( 9); + } + } + +if ((Said( look, behind, mirror) || + Said( open, mirror) || + Said( move, mirror) || + Said( open, cabinet))) + { + if (!nearSink) + { + Set( notCloseEnough); + } + else + { + Print( 37); + } + } + +if ((Said( open, toilet, rol) || + Said( look$in, toilet, tank))) + { + Print( 38); + } + + +if ((Said( look, toilet, paper) || + Said( get, toilet, paper) || + Said( use, toilet, paper))) + { + if (!nearToilet) + { + Set( notCloseEnough); + } + else + { + Print( 28); + } + } + +if ((Said( look$in, toilet) || + Said( look, toilet))) + { + if (!nearToilet) + { + Set( notCloseEnough); + } + else + { + Print( 23); + } + } + + +[ Do the water filling stunt. + +if ((Said( flush, toilet) || + Said( flush))) + { + if (!nearToilet) + { + Set( notCloseEnough); + } + else + { + PreventInput(); + Set( programControl); + StopMotion( ego); + Set( toiletOverflowing); + waterY = 148; + Draw( aFountain); + waterCycle = WATER_CYCLE; + Print( 33); + Print( 34); + } + } + +if ((Said( get, paper) || + Said( read, paper))) + { + Print( 30); + } + +if (Has( iMagazine) && + Said( look, magazine, rol)) + { + Print( 40); + } + +if (Said( wipe, hand, on, pants)) + { + Set( OK); + } + +if (Said( anyword, toilet, rol)) + { + Print( 16); + } + + + +[***** +:noInput +[***** + +if (aSecondPassed) + { + --toiletTimer; + if (toiletTimer == 6) + { + Print( 11); + } + + if (toiletTimer == 1) + { + Sound( sFart, done); + Print( 21); + } + + --pissTimer; + if (pissTimer == 1) + { + Print( 3); + currentStatus = NORMAL; + StartMotion( ego); + Reset( programControl); + } + } + + +--paperCycles; +if (paperCycles == 1) + { + Toggle( paperCycling); + if (paperCycling) + { + SetLoop( ego, 1); [ Turn the page. + CycleTime( ego, one); + Random( 7, 12, paperCycles); + } + else + { + SetLoop( ego, 0); [ Look at the pages. + CycleTime( ego, five); + Random( 19, 33, paperCycles); + } + } + + +if (doorCloseDone) + { + Reset( doorCloseDone); + StopUpdate( aDoor); + Reset( programControl); + StartMotion( ego); + } + +--waterCycle; +if (waterCycle == 1) + { + if (toiletOverflowing && waterY == 100) + { + Print( 19); + Print( 20); + SetView( ego, vEgoDrowning); + Set( keepCycling); + } + + if (toiletOverflowing && waterY == 40) + { + Print( 18); + Set( certainDeath); + } + + if (toiletOverflowing && waterY > 36) + { + view = 59; + loop = 0; + cell = 0; + x = 47; + priority = 15; + AddToPicV( view, loop, cell, x, waterY, priority, four); + [view, loop, cel, x, y, obj priority, box priority + + waterY -= 4; + waterCycle = WATER_CYCLE; + } + } + + + +[***** +:exit [ test for leaving the room +[***** + +if (doorOpenDone) + { + Reset( programControl); + newRoom = rmHallway; + } + + diff --git a/RM13.MSG b/RM13.MSG new file mode 100644 index 0000000..1a7a617 --- /dev/null +++ b/RM13.MSG @@ -0,0 +1,143 @@ +[messages for room 13 -- rmToilet +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"You are in Lefty's one and only restroom. + The stench is overpowering, there is graffiti on the walls, and you + doubt that the sink was clean even when it was installed. + Even roaches can't survive in this place!" + +%message 2 +"%m8Scott me up, Beamie!\"" + +%message 3 +"Ahhhhhhh." + +%message 4 +"%m8Attention arcade game players: please don't eat the urinal cakes!\"" + +%message 5 +"%m8It takes leather balls to play rugby!\"" + +%message 6 +"Funny. No one knocks back." + +%message 7 +"NOW??" + +%message 8 +"You see many messages. One is:\n\n\"" + +%message 9 +"You see a handsome, dashing, macho, sexy, young man. + (Obviously, this mirror has quite a bit of distortion!)" + +%message 10 +"You grab an ancient copy of the \"Ball Street Journal,\" + and settle in to \"sit and think!\"" + +%message 11 +"You feel a great relief!" + +%message 12 +"Why, look! + Some woman removed her diamond ring to wash her hands, + and forgot to take it with her." + +%message 13 +"Got it!\n\n +You briefly consider an attempt to find the ring's owner, + but return to your normal self and pocket it instead." + +%message 14 +"A small, neatly lettered sign reminds you:\n\n +\"Since we can't clean up after every customer, + please rinse out this sink when you are finished.\"" + +%message 15 +"Evidently, you are the first customer who can read." + +%message 16 +"My, my. Aren't we the little sick-o!" + +%message 17 +"Say, here's an interesting one:\n\n +\"The password is: 'Ken sent me.'\"" + +%message 18 +"Bad idea, eh Larry?" + +%message 19 +"Your life passes before your eyes." + +%message 20 +"You doze briefly." + +%message 21 +"What's that aroma?" + +%message 22 +"Ok." + +%message 23 +"It's not a pretty sight!" + +%message 24 +"Say, there's no soap." + +%message 25 +"There's no towels." + +%message 26 +"Move closer to the handle." + +%message 27 +"Your hands are still dirty, but now they're wet!" + +%message 28 +"The toilet paper is only there for official purposes." + +%message 29 +"Carefully finishing your duties, + you wipe and toss the newspaper behind the toilet for the next user." + +%message 30 +"You only read while \"enthroned.\"" + +%message 31 +"Your face is still dirty, but at least it's now dripping with water." + +%message 32 +"Ok. You're dry (but your keyboard is still damp)!" + +%message 33 +"Realizing your mistake, you quickly jiggle the handle, + attempting to stem the onrushing tide of water." + +%message 34 +"It doesn't work." + +%message 35 +"It's nice of you to try, but this sink is too far gone to save!" + +%message 36 +"No one would drink from ANY fixture in here!" + +%message 37 +"Nice idea, but the mirror is firmly attached to the wall." + +%message 38 +"Yuck!" + +%message 39 +"Lefty must be running low on air freshener." + +%message 40 +"No wonder your eyesight is so bad!" + +%message 41 +"Been drinking Lefty's liquor again, eh?" + diff --git a/RM14.CG b/RM14.CG new file mode 100644 index 0000000..4279bc4 --- /dev/null +++ b/RM14.CG @@ -0,0 +1,439 @@ +[logics for room 14 -- rmHallway +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm14.msg" +%include "gamedefs.h" + + + +%define TALK_TIME 5 +#define L_DRUNK 0 [ View.47 +#define L_LEG 1 +#define L_ROSE 0 [ View.57 +#define L_DOOR 1 + +%define nearDrunk lf0 +%define nearRose lf1 +%define nearDoor lf2 +%define doorOpenDone lf3 +%define readMessage lf4 +%define nutsMessage lf5 +%define seenStinkMessage lf6 +%define talkMan lf7 + +%define talkTimer lv0 +%define drunkMessage lv1 + +%object aMan 1 +%object aRose 2 +%object aDoor 3 + + + +if (initLog) + { + SetHorizon( 44); + ObserveBlocks( ego); + + LoadView( vRm14Stuff); + LoadView( vRm14Drunk); + + LoadSound( mRm14Drunk); + + LoadPic( currentRoom); + DrawPic( currentRoom); + DiscardPic( currentRoom); + + AnimateObj( aDoor); + IgnoreBlocks( aDoor); + IgnoreObjs( aDoor); + SetView( aDoor, vRm14Stuff); + SetLoop( aDoor, L_DOOR); + SetCel( aDoor, 0); + SetPriority( aDoor, 9); + work = DOOR_CYCLE_TIME; + CycleTime( aDoor, work); + Position( aDoor, 105, 123); + Draw( aDoor); + StopCycling( aDoor); + + AnimateObj( aMan); + IgnoreBlocks( aMan); + IgnoreObjs( aMan); + SetView( aMan, vRm14Drunk); + SetLoop( aMan, L_DRUNK); + SetCel( aMan, 0); + Position( aMan, 99, 132); + Draw( aMan); + StopCycling( aMan); + CycleTime( aMan, two); + + AddToPic( vRm14Drunk, L_LEG, 0, 99, 141, 0, 4); + [view, loop, cel, x, y, obj priority, box priority + + + if (ObjInRoom( iRose, currentRoom)) + { + AnimateObj( aRose); + IgnoreBlocks( aRose); + IgnoreObjs( aRose); + Position( aRose, 48, 115); + SetView( aRose, vRm14Stuff); + SetLoop( aRose, L_ROSE); + SetCel( aRose, 0); + SetPriority( aRose, 12); + Draw( aRose); + StopUpdate( aRose); + } + + if (previousRoom == rmToilet) + { + egoX = 100; + egoY = 123; + } + else + { + egoX = 76; + SetLoop( ego, FACING_BACK); + } + PositionV( ego, egoX, egoY); + Draw( ego); + + ShowPic( ); + + Sound( mRm14Drunk, done); + + Return( ); + + } [ end initLOG + + + +Reset( nearDoor); +if (Posn( ego, 95, 110, 104, 127)) + { + Set( nearDoor); + } + +Reset( nearDrunk); +if (Posn( ego, 90, 125, 150, 150)) + { + Set( nearDrunk); + } + +Reset( nearRose); +if (Posn( ego, 40, 114, 58, 134)) + { + Set( nearRose); + } + + +[***** +:handleInput +[***** + +if (!haveInput) {goto noInput;} + +if ((Said( look) || + Said( look, room))) + { + Print( 1); + } + +if ((Said( look, brick, rol) || + Said( feel, wall) || + Said( get, brick))) + { + if (!nearDoor) + { + Print( 17); + } + else + { + Print( 25); + } + } + +if (Said( look, drunk)) + { + Print( 9); + Print( 10); + } + +if ((Said( buy, man, drink) || + Said( buy, drink, for, man))) + { + if (!nearDrunk) + { + Set( notCloseEnough); + } + else + { + Print( 19); + } + } + + +if (Said( open, door)) + { + if (!nearDoor) + { + Set( notCloseEnough); + } + else + { + Set( OK); + StopMotion( ego); + Set( programControl); + EndOfLoop( aDoor, doorOpenDone); + } + } + +if ((talkMan || + Said( talk, man) || + Said( ask, man, rol))) + { + Reset( talkMan); + if (!nearDrunk) + { + Set( notCloseEnough); + } + else + { + drunkMessage = 5; + talkTimer = TALK_TIME; + StartCycling( aMan); + } + } + +if ((Said( give, money) || + Said( use, money) || + Said( give, man, money) || + Said( give, money, man))) + { + if (!nearDrunk) + { + Set( notCloseEnough); + } + else + { + --dollars; + Print( 16); + } + } + +if ((Said( give, whiskey) || + Said( give, man, drink) || + Said( give, drink, man) || + Said( give, drink) || + Said( use, whiskey) || + Said( give, man, whiskey) || + Said( give, whiskey, man))) + { + if (!Has( iWhiskey)) + { + Print( 18); + } + else + { + if (!nearDrunk) + { + Set( notCloseEnough); + } + else + { + Drop( iWhiskey); + talkTimer = TALK_TIME; + StartCycling( aMan); + if (!ObjInRoom( iRemoteControl, currentRoom)) + { + drunkMessage = 15; + } + else + { + drunkMessage = 6; + } + } + } + } + +if ((Said( look, top$of, table) || + Said( look, table))) + { + if (ObjInRoom( iRose, currentRoom)) + { + Print( 11); + } + else + { + Print( 3); + } + } + +if (ObjInRoom( iRose, currentRoom) && + Said( look, rose)) + { + Print( 11); + } + +if (Said( take, rose)) + { + if (!nearRose) + { + Set( notCloseEnough); + } + else + { + if (!ObjInRoom( iRose, currentRoom)) + { + Set( alreadyGotIt); + } + else + { + Set( OK); + currentScore += 1; + Erase( aRose); + Get( iRose); + } + } + } + + + +if ((Said( give, anyword, man) || + Said( give, man, rol))) + { + if (!nearDrunk) + { + Set( notCloseEnough); + } + else + { + Print( 20); + } + } + + +if ((Said( help, anyword, man, rol) || + Said( help, man, rol))) + { + if (!nearDrunk) + { + Set( notCloseEnough); + } + else + { + Print( 21); + } + } + +if ((Said( shake, man, rol) || + Said( wake, man, rol) || + Said( hit, man, rol))) + { + if (!nearDrunk) + { + Set( notCloseEnough); + } + else + { + Print( 24); + Set( talkMan); + } + } + +if ((Said( look$in, man, rol) || + Said( look$in, clothes, rol) || + Said( rob, drunk, rol) || + Said( rob, money, rol) || + Said( take, wallet, rol) || + Said( search, clothes, rol) || + Said( search, man, rol))) + { + if (!nearDrunk) + { + Set( notCloseEnough); + } + else + { + Print( 4); + } + } + + + +[***** +:noInput +[***** + +if (aSecondPassed) + { + --talkTimer; + if (talkTimer == 1) + { + SetCel( aMan, 0); + StopCycling( aMan); + PrintV( drunkMessage); + + if (drunkMessage == 6) + { + Print( 7); + Print( 8); + Print( 22); + Print( 22); + Print( 22); + Print( 23); + currentScore += 2; + Get( iRemoteControl); + } + } + } + +if (!readMessage && + egoX == 101 && + egoY == 133) + { + Set( readMessage); + Toggle( nutsMessage); + if (nutsMessage) + { + Print( 13); + } + else + { + Print( 12); + } + } + +if (toiletPaperOnShoe && + nearDrunk && + previousRoom == rmToilet && + !seenStinkMessage) + { + Set( seenStinkMessage); + StartCycling( aMan); + talkTimer = TALK_TIME; + drunkMessage = 2; + } + +if (readMessage) + { + Distance( ego, aMan, work); + if (work > 25) + { + Reset( readMessage); + } + } + + +[***** +:exit [ test for leaving the room +[***** + +if (edgeEgoHit == BOTTOM) {newRoom = rmInsideBar;} +if (doorOpenDone) + { + Reset( programControl); + newRoom = rmToilet; + } diff --git a/RM14.MSG b/RM14.MSG new file mode 100644 index 0000000..2258ea9 --- /dev/null +++ b/RM14.MSG @@ -0,0 +1,90 @@ +[messages for room 14 -- rmHallway +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"You are in a dimly lit hallway. + The paint peeling off the walls gives the cockroaches something to watch. + An old table is pushed against the west wall. + A filthy drunk sits on the filthy floor, leaning against the filthy wall." + +%message 2 +"\"Jeeezz! Somethin' die in there??\"" + +%message 3 +"You can remember when that table held a rose." + +%message 4 +"You find nothing but odor." + +%message 5 +"\"Hiya shhhhonny. How's 'bout you 'n' me havin' a lil' drink?\"" + +%message 6 +"Glug, glug, glug, glug, glug." + +%message 7 +"Slurp! \"Ahhhh! That did hit the ol' spot!\"" + +%message 8 +"\"Ya know, ya mus' be ma only frien' in the whole world! + Shhoooo, I'm gonna give ya my only posshhess... hhic!" + +%message 9 +"He's a poor little lamb, who has lost his way..." + +%message 10 +"...and also his bladder control!" + +%message 11 +"There is a single, lovely, long-stemmed, + red rose lying incongruously on the table." + +%message 12 +"\"Wadda ya tryin' to do; make me a soprano??\"" + +%message 13 +"\"Geeze! Them pointy-toed shoes hurt!\"" + +%message 14 +"You generously hand him a dollar." + +%message 15 +"\"Shhaay, thanksh buddy! How 'bout sshhom'ore?\"" + +%message 16 +"He responds, \"Ya know, whad I really need is a good, sshhtiff belt!\"" + +%message 17 +"You spend hours carefully examining every brick. + You find nothing." + +%message 18 +"You have no drink to give him." + +%message 19 +"There's no one selling anything here. Try the bartender out front." + +%message 20 +"He's too drunk to want anything." + +%message 21 +"He's beyond help, but thirsty." + +%message 22 +"\"...my only posshhess... hhic!" + +%message 23 +"\"...all I got in the world.\n\n +What'sha guy like me need witta TV remote control!?\"" + +%message 24 +"\"Hey! Wake up!\"" + +%message 25 +"Caught ya! Now open the door, + then get your nose out of that manual + and start playing this game the right way!" + diff --git a/RM15.CG b/RM15.CG new file mode 100644 index 0000000..b19cebf --- /dev/null +++ b/RM15.CG @@ -0,0 +1,1267 @@ +[logics for room 15 -- rmInsideBar +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm15.msg" +%include "gamedefs.h" + + + +#define L_PEEPHOLE 0 +#define L_CEILING_FAN 1 +#define L_JUKEBOX 2 +#define L_MEN_ON_STOOL 0 +#define L_GIRL_ON_STOOL 1 +#define L_EGO_ON_STOOL 2 +%define BAR_Y 136 +%define WAITING_FOR_PASSWORD 3 + + +%define legCycling lf0 +%define bartenderWandering lf1 +%define boreCycling lf2 +%define nearJukeBox lf3 +%define nearGirl lf4 +%define nearBore lf5 +%define nearEmptyStool lf6 +%define nearMen lf7 +%define nearDoor lf8 +%define doorScriptDone lf9 +%define startJukeBox lf10 +%define orderedAWhiskey lf11 +%define orderedABeer lf12 +%define orderedAWine lf13 +%define staggering lf14 +%define tookADrink lf15 +%define beenToldPrice lf16 + +%define heardJoke1 lf21 +%define heardJoke2 lf22 +%define heardJoke3 lf23 +%define heardJoke4 lf24 +%define heardJoke5 lf25 +%define heardJoke6 lf26 +%define heardJoke7 lf27 +%define heardJoke8 lf28 +%define heardJoke9 lf29 + + +%define jukeBoxTimer lv0 +%define bartenderTimer lv1 +%define legCycles lv2 +%define boreTalkCycles lv3 +%define jokeSeconds lv4 +%define doorTimer lv5 +%define doorScript lv6 +%define drinkCount lv7 +%define staggerCycles lv8 +%define drunkSeconds lv9 +%define joke lv10 +%define tipCount lv11 + + +%object aDoor 1 +%object aPeepHole 2 +%object aFan 3 +%object aJukeBox 4 +%object aGirl 5 +%object aBore 6 +%object aBartender 7 + + + +if (initLog) + { + SetHorizon( 99); + + LoadPic( currentRoom); + DrawPic( currentRoom); + DiscardPic( currentRoom); + + LoadSound( mTitle); + + LoadView( vPimpDoor); + LoadView( vBarInterior); + LoadView( vBarGreaser); + LoadView( vBarFlys); + LoadView( vBarDoor); + LoadView( vBartender); + + + LoadView( vPainting); + AddToPic( vPainting, 0, 0, 81, 69, 4, 4); + [view, loop, cel, x, y, obj priority, box priority + DiscardView( vPainting); + + AddToPic( vBarFlys, 0, 0, 112, 128, 11, 0); + AddToPic( vBarFlys, 0, 1, 101, 128, 11, 0); + + + AnimateObj( aDoor); + IgnoreBlocks( aDoor); + IgnoreObjs( aDoor); + Position( aDoor, 142, 150); + SetView( aDoor, vPimpDoor); + SetCel( aDoor, 0); + SetPriority( aDoor, 11); + Draw( aDoor); + work = DOOR_CYCLE_TIME; + CycleTime( aDoor, work); + StopUpdate( aDoor); + + AnimateObj( aPeepHole); + SetView( aPeepHole, vBarInterior); + SetLoop( aPeepHole, L_PEEPHOLE); + FixLoop( aPeepHole); + SetCel( aPeepHole, 0); + SetPriority( aPeepHole, 12); + Position( aPeepHole, 143, 110); + + AnimateObj( aFan); + IgnoreHorizon( aFan); + Position( aFan, 66, 66); + SetView( aFan, vBarInterior); + SetLoop( aFan, L_CEILING_FAN); + FixLoop( aFan); + SetCel( aFan, 0); + Draw( aFan); + CycleTime( aFan, two); + + AnimateObj( aJukeBox); + IgnoreBlocks( aJukeBox); + IgnoreObjs( aJukeBox); + SetView( aJukeBox, vBarInterior); + SetLoop( aJukeBox, L_JUKEBOX); + FixLoop( aJukeBox); + SetCel( aJukeBox, 1); + Position( aJukeBox, 16, 128); + SetPriority( aJukeBox, 11); + Draw( aJukeBox); + StopUpdate( aJukeBox); + + AnimateObj( aGirl); + IgnoreBlocks( aGirl); + IgnoreObjs( aGirl); + SetView( aGirl, vBarFlys); + SetLoop( aGirl, L_GIRL_ON_STOOL); + SetCel( aGirl, 0); + SetPriority( aGirl, 11); + Position( aGirl, 65, 128); + Draw( aGirl); + CycleTime( aGirl, two); + + AnimateObj( aBore); + IgnoreBlocks( aBore); + SetView( aBore, vBarGreaser); + SetLoop( aBore, FACING_LEFT); + SetPriority( aBore, 11); + Position( aBore, 77, 128); + Draw( aBore); + + AnimateObj( aBartender); + SetView( aBartender, vBartender); + SetLoop( aBartender, 0); + SetCel( aBartender, 0); + Position( aBartender, 106, 101); + Draw( aBartender); + StopUpdate( aBartender); + + if (previousRoom == rmBackroom) + { + egoX = 141; + egoY = 148; + } + else + { + if (previousRoom == rmHallway) + { + egoX = 39; + egoY = 108; + } + else + { + egoX = 76; + egoY = 167; + } + } + PositionV( ego, egoX, egoY); + Draw( ego); + + Random( 15, 32, bartenderTimer); + Random( 4, 32, legCycles); + Random( 15, 32, boreTalkCycles); + + ShowPic( ); + + Return( ); + + } [ end initLOG + + + +if (Posn( ego, 45, 120, 133, 159)) [ near bar + { + SetPriority( ego, 12); + } +else + { + ReleasePriority( ego); + } + +Reset( nearJukeBox); +if (Posn( ego, 0, 117, 33, 131)) + { + Set( nearJukeBox); + } + +Reset( nearGirl); +if (Posn( ego, 55, 0, 78, BAR_Y)) + { + Set( nearGirl); + Set( nearPerson); + } + +Reset( nearBore); +if (Posn( ego, 71, 0, 87, BAR_Y)) + { + Set( nearBore); + Set( nearPerson); + } + +Reset( nearEmptyStool); +if (Posn( ego, 85, 0, 99, BAR_Y)) + { + Set( nearEmptyStool); + } + +Reset( nearMen); +if (Posn( ego, 94, 0, 124, BAR_Y)) + { + Set( nearMen); + Set( nearPerson); + } + +Reset( nearDoor); +if (Posn( ego, 132, 137, 149, 154)) + { + Set( nearDoor); + } + + +[***** +:handleInput +[***** + +if (!haveInput) {goto noInput;} + + +[ Handle the pimp door sequence. + +if (doorScript != WAITING_FOR_PASSWORD) + { + if (Said( ken$sent$me)) + { + Print( 6); + } + } +else + { + Set( doorScriptDone); + if (Said( ken$sent$me)) + { + doorScript = 100; + doorTimer = 0; + } + Set( haveMatch); + unknownWord = 0; + } + +if ((Said( ask, anyword, password) || + Said( ask, password))) + { + if (!nearPerson) + { + Set( notCloseEnough); + } + else + { + Print( 68); + } + } + +if ((Said( unlock, door) || + Said( open, door))) + { + if (!nearDoor) + { + Set( notCloseEnough); + } + else + { + Print( 47); + } + } + +if ((Said( look, peephole, rol) || + Said( look$in, peephole, rol) || + Said( look, door) || + Said( look$in, door) || + Said( look, window, rol) || + Said( look$in, window, rol))) + { + Print( 65); + } + +if ((Said( break, down, door) || + Said( break, door, rol) || + Said( hit, door))) + { + if (!nearDoor) + { + Set( notCloseEnough); + } + else + { + Print( 55); + } + } + +if (Said( knock, rol)) + { + if (!nearDoor) + { + Set( notCloseEnough); + } + else + { + if (doorScript) + { + Print( 46); + } + else + { + Set( programControl); + StopMotion( ego); + Print( 5); + doorTimer = 3; + } + } + } + +if ((Said( unlock, door, rol) || + Said( use, key, rol))) + { + if (!nearDoor) + { + Set( notCloseEnough); + } + else + { + Print( 63); + } + } + + +[ General purpose looks. + +if ((Said( look) || + Said( look, room) || + Said( look, bar))) + { + Print( 1); + } + +if ((Said( tip, bartender) || + Said( give, bartender, money) || + Said( give, money, bartender) || + Said( give, tip, bartender))) + { + if (currentStatus != ON_BAR_STOOL) + { + Print( 33); + } + else + { + if (!dollars > 4) + { + Print( 76); + } + else + { + ++tipCount; + dollars -= 5; + if (tipCount == 1) {Print( 77);} + if (tipCount == 2) {Print( 78);} + if (tipCount == 3) {Print( 79);} + if (tipCount == 4) {Print( 80);} + if (tipCount > 4) {Print( 81);} + } + } + } + +if (Said( look, bartender)) + { + Print( 82); + Print( 83); + } + +if (Said( buy, bartender, drink)) + { + if (currentStatus != ON_BAR_STOOL) + { + Print( 33); + } + else + { + Print( 69); + } + } + +if (Said( buy, round)) + { + if (currentStatus != ON_BAR_STOOL) + { + Print( 33); + } + else + { + if (!beenToldPrice) + { + Set( beenToldPrice); + Print( 70); + } + else + { + dollars = 0; + Print( 71); + } + } + } + +if ((Said( give, bartender, money) || + Said( give, money, bartender) || + Said( pay, lefty) || + Said( bribe, lefty))) + { + Print( 72); + } + +if (Said( look, moose)) + { + Print( 45); + } + +if (Said( look, girl)) + { + Print( 48); + } + +if ((Said( look, man) || + Said( look, people))) + { + Print( 53); + } + +if (Said( look, fan)) + { + Print( 49); + Print( 50); + } + +if (Said( look, painting)) + { + Print( 51); + } + +if ((Said( touch, girl) || + Said( touch, girl, leg) || + Said( touch, leg) || + Said( look, leg) || + Said( feel, leg) || + Said( feel, girl, leg) || + Said( feel, girl))) + { + if (!nearGirl) + { + Set( notCloseEnough); + } + else + { + Print( 67); + } + } + +if ((Said( pick$up, girl) || + Said( ask, girl, dance) || + Said( dance, with, girl) || + Said( buy, girl, drink) || + Said( kiss, girl) || + Said( talk, girl))) + { + if (!nearGirl) + { + Set( notCloseEnough); + } + else + { + Print( 60); + Print( 56); + Print( 57); + } + } + +if ((Said( listen, man) || + Said( talk, man))) + { + if ((nearBore || currentStatus == ON_BAR_STOOL)) + { + Print( 59); + } + else + { + if (nearMen) + { + Print( 61); + } + else + { + Set( notCloseEnough); + } + } + } + +if ((Said( look, jukebox) || + Said( look$in, jukebox))) + { + if (!nearJukeBox) + { + Set( notCloseEnough); + } + else + { + Print( 64); + } + } + +if ((Said( play, jukebox) || + Said( use, jukebox) || + Said( play, music) || + Said( put, anyword, dollar, jukebox) || + Said( put, dollar, jukebox) || + Said( put, money, jukebox))) + { + if (!nearJukeBox) + { + Set( notCloseEnough); + } + else + { + Print( 4); + dollars -= 1; + Set( startJukeBox); + } + } + +if ((Said( use, hammer, door) || + Said( open, door, use, hammer) || + Said( hit, door, with, hammer) || + Said( use, hammer, open, door) || + Said( use, hammer, door) || + Said( use, hammer, on, door) || + Said( hammer, on, door))) + { + if (!nearDoor) + { + Set( notCloseEnough); + } + else + { + if (!Has( iHammer)) + { + Set( dontHaveIt); + } + else + { + Print( 73); + } + } + } + + +[ Handle the purchase of libations. + +if ((Said( order, drink) || + Said( buy, drink, wino) || + Said( buy, wino, drink) || + Said( buy, drink) || + Said( drink) || + Said( talk, bartender))) + { + if (currentStatus != ON_BAR_STOOL) + { + Print( 20); + } + else + { + Print( 21); + } + } + +if ((Said( wine) || + Said( give, me, wine) || + Said( get, wine) || + Said( order, wine))) + { + if (currentStatus != ON_BAR_STOOL) + { + Print( 33); + } + else + { + if (script && script < 5) + { + Print( 40); + } + else + { + Print( 36); + Print( 37); + Set( orderedAWine); + script = 0; + Set( scriptDone); + } + } + } + +if ((Said( beer) || + Said( give, me, beer) || + Said( get, beer) || + Said( order, beer))) + { + if (currentStatus != ON_BAR_STOOL) + { + Print( 33); + } + else + { + if (script && script < 5) + { + Print( 40); + } + else + { + Print( 23); + Set( orderedABeer); + script = 0; + Set( scriptDone); + } + } + } + +if ((Said( booze) || [ Generic non-handled liquors. + Said( give, me, booze) || + Said( get, booze) || + Said( champagne) || + Said( give, me, champagne) || + Said( get, champagne) || + Said( order, champagne) || + Said( order, booze))) + { + if (currentStatus != ON_BAR_STOOL) + { + Print( 33); + } + else + { + if (script && script < 5) + { + Print( 40); + } + else + { + Print( 54); + } + } + } + +if ((Said( light, beer) || + Said( give, me, light, beer) || + Said( get, light, beer) || + Said( order, light, beer))) + { + if (currentStatus != ON_BAR_STOOL) + { + Print( 33); + } + else + { + if (script && script < 5) + { + Print( 40); + } + else + { + Print( 52); + } + } + } + +if ((Said( whiskey) || + Said( give, me, whiskey) || + Said( get, whiskey) || + Said( order, whiskey))) + { + if (currentStatus != ON_BAR_STOOL) + { + Print( 33); + } + else + { + if (script && script < 5) + { + Print( 40); + } + else + { + Print( 22); + Set( orderedAWhiskey); + script = 0; + Set( scriptDone); + } + } + } + +if (Said( drink, whiskey)) + { + if (!Has( iWhiskey)) + { + Set( dontHaveIt); + } + else + { + if (currentStatus != ON_BAR_STOOL) + { + Print( 34); + } + else + { + Set( tookADrink); + Drop( iWhiskey); + Print( 39); + } + } + } + + + +[ Handle mounting, and dismounting, of stool. + +if ((Said( sit) || + Said( sit, down)|| + Said( sit, bar)|| + Said( mount, stool)|| + Said( mount, bar, stool)|| + Said( get, on, stool) || + Said( sit, on, stool) || + Said( sit, on, bar, stool) || + Said( sit, down, on, stool) || + Said( sit, down, on, bar, stool) || + Said( sit, bar, stool) || + Said( sit, stool))) + { + if (currentStatus == ON_BAR_STOOL) + { + Print( 3); + } + else + { + if (!nearEmptyStool) + { + Set( notCloseEnough); + } + else + { + currentStatus = ON_BAR_STOOL; + IgnoreBlocks( ego); + SetView( ego, vBarFlys); + SetLoop( ego, L_EGO_ON_STOOL); + RepositionTo( ego, 90, 128); + StopMotion( ego); + Set( programControl); + + StopCycling( aBore); + jokeSeconds = 15; [ Seconds(+7) before first joke. + boreTalkCycles = 0; [ Turn off his random talking. + } + } + } + + +if ((Said( leave, stool) || + Said( leave, bar, stool) || + Said( get, off, stool) || + Said( get, off, bar, stool) || + Said( get, up) || + Said( get, off) || + Said( get, down) || + Said( stand, up) || + Said( stand))) + { + if (currentStatus != ON_BAR_STOOL) + { + Print( 2); + } + else + { + if (script && script < 5) + { + Print( 40); + } + else + { + SetView( ego, vEgo); + StartMotion( ego); + Reset( programControl); + ObserveBlocks( ego); + RepositionTo( ego, 90, 131); + + SetLoop( aBore, FACING_LEFT); + StopCycling( aBore); + Random( 24, 32, boreTalkCycles); [ Cycles before talking to girl. + jokeSeconds = 0; [ No more jokes. + + if (!drunkSeconds) + { + currentStatus = NORMAL; + } + else + { + currentStatus = DRUNK; + Set( handsOff); + PreventInput(); + Print( 41); + } + } + } + } + + +if ((Said( kiss, off, rol) || + Said( fuck$you, rol) || + Said( damn, rol) || + Said( go, hump, rol) || + Said( shut, up, rol) || + Said( get, lost, rol))) + { + if (currentStatus != ON_BAR_STOOL) + { + Print( 44); + } + else + { + CurrentLoop( aBore, work); + if (work != FACING_RIGHT) + { + Print( 62); + } + else + { + Print( 43); + + [ Make him sulk awhile before he starts talking to the girl. + SetLoop( aBore, FACING_LEFT); + StopCycling( aBore); + Reset( boreCycling); + Random( 123, 234, boreTalkCycles); + Random( 44, 88, jokeSeconds); [ seconds till he talks to ego. + } + } + } + + +[***** +:noInput +[***** + +if (aSecondPassed) + { + --jukeBoxTimer; + if (jukeBoxTimer == 1 && !soundOn) + { + Set( musicDone); + } + + --bartenderTimer; + if (bartenderTimer == 1) + { + Toggle( bartenderWandering); + if (bartenderWandering) + { + Random( 4, 12, bartenderTimer); + StartUpdate( aBartender); + Wander( aBartender); + } + else + { + Random( 12, 33, bartenderTimer); + SetLoop( aBartender, FACING_FRONT); + ForceUpdate( aBartender); + StopUpdate( aBartender); + } + } + + --doorTimer; + if (doorTimer == 1) + { + Set( doorScriptDone); + } + + if (currentStatus == DRUNK) + { + --drunkSeconds; + if (drunkSeconds == 41) + { + Print( 66); + } + + if (drunkSeconds == 1) + { + --drunkSeconds; + staggerCycles = 0; + AcceptInput(); + ReleaseLoop( ego); + PlayerControl(); + Reset( programControl); + currentStatus = NORMAL; + Reset( handsOff); + Print( 42); + } + } + + --jokeSeconds; + if (jokeSeconds == 7) + { + SetLoop( aBore, FACING_RIGHT); + StartCycling( aBore); [ He's starting a new joke + } + + if (jokeSeconds == 1) + { + if (typing) + { + jokeSeconds = 4; + } + else + { + Random( 20, 45, jokeSeconds); [ seconds before he starts again + StopCycling( aBore); [ He's starting a new joke + + if ((!heardJoke1 || + !heardJoke2 || + !heardJoke3 || + !heardJoke4 || + !heardJoke5 || + !heardJoke6 || + !heardJoke7 || + !heardJoke8 || + !heardJoke9)) + { + :pickAJoke; + Random( 11, 19, joke); [ Pick a punch line. + work = joke; + work += 210; [ Because flags are 221-229. + if (IssetV( work)) [ Be sure it's a new one. + { + goto pickAJoke; + } + + SetV( work); + Print( 10); + PrintV( joke); + Print( 58); + } + } + } + } + + +--boreTalkCycles; +if (boreTalkCycles == 1) + { + Random( 23, 45, boreTalkCycles); + Toggle( boreCycling); + if (boreCycling) + { + StartCycling( aBore); + } + else + { + StopCycling( aBore); + } + } + + +if (scriptDone) + { + Reset( scriptDone); + ++script; + + if (script == 1) + { + bartenderTimer = 0; + StartUpdate( aBartender); + MoveObj( aBartender, 106, 102, 1, scriptDone); + } + + if (script == 2) + { + SetLoop( aBartender, FACING_FRONT); + StopUpdate( aBartender); + ForceUpdate( aBartender); + scriptTimer = 4; + } + + if (script == 3) + { + StartUpdate( aBartender); + MoveObj( aBartender, 90, 102, 1, scriptDone); + } + + if (script == 4) + { + SetLoop( aBartender, FACING_FRONT); + StopUpdate( aBartender); + ForceUpdate( aBartender); + scriptTimer = 3; + } + + if (script == 5) + { + Print( 24); + if (!dollars > 2) + { + Print( 26); + Print( 27); + + script = 6; + } + else + { + StartUpdate( aBartender); + MoveObj( aBartender, 119, 99, 1, scriptDone); + + Print( 25); + dollars -= 3; + if (orderedAWhiskey) + { + Reset( orderedAWhiskey); + if (Has( iWhiskey)) + { + Set( tookADrink); + Print( 35); + } + else + { + if (!boughtWhiskey) + { + Set( boughtWhiskey); + currentScore += 1; + } + Get( iWhiskey); + Print( 38); + } + } + + if (orderedABeer) + { + Reset( orderedABeer); + Set( tookADrink); + Print( 28); + } + + if (orderedAWine) + { + Reset( orderedAWine); + Set( tookADrink); + Print( 29); + Print( 30); + } + } + } + + if (script == 6) + { + script = 0; + SetLoop( aBartender, FACING_BACK); + StopUpdate( aBartender); + ForceUpdate( aBartender); + + Reset( bartenderWandering); + bartenderTimer = 5; + } + } + + + +--legCycles; +if (legCycles == 1) + { + Random( 10, 22, legCycles); + Toggle( legCycling); + if (legCycling) + { + StartCycling( aGirl); + } + else + { + StopCycling( aGirl); + } + } + +if (doorScriptDone) + { + Reset( doorScriptDone); + ++doorScript; + + if (doorScript == 1) + { + Draw( aPeepHole); + EndOfLoop( aPeepHole, doorScriptDone); + } + + if (doorScript == 2) + { + StopUpdate( aPeepHole); + doorTimer = 3; + } + + if (doorScript == WAITING_FOR_PASSWORD) + { + Print( 7); + doorTimer = 12; + } + + if (doorScript == 4) + { + Print( 8); + StartUpdate( aPeepHole); + BeginningOfLoop( aPeepHole, doorScriptDone); + } + + if (doorScript == 5) + { + Erase( aPeepHole); + StartMotion( ego); + Reset( programControl); + doorScript = 0; + doorTimer = 0; + } + + if (doorScript == 101) [ He knew the password. + { + Print( 9); + StopMotion( ego); + Set( programControl); + StartUpdate( aPeepHole); + BeginningOfLoop( aPeepHole, doorScriptDone); + } + + if (doorScript == 102) + { + Erase( aPeepHole); + StartUpdate( aDoor); + EndOfLoop( aDoor, doorScriptDone); + } + + if (doorScript == 103) + { + newRoom = rmBackroom; + } + } + + +if (musicDone) + { + Reset( musicDone); + SetCel( aJukeBox, 1); + StopUpdate( aJukeBox); + ForceUpdate( aJukeBox); + } + +if (startJukeBox) + { + Reset( startJukeBox); + StartUpdate( aJukeBox); + Sound( mTitle, musicDone); + + if (!soundOn) + { + Reset( musicDone); + Random( 8, 12, jukeBoxTimer); + StartUpdate( aJukeBox); + } + } + + + + +[ Scott Murphy's drinking problem + +if (tookADrink) + { + Reset( tookADrink); + ShakeScreen( 1); + if (!drunkSeconds) + { + drunkSeconds = 5; [ increases geometricly with each drink. + staggerCycles = 10; + Print( 31); + } + else + { + Print( 32); + if (drunkSeconds < 120) + { + drunkSeconds += drunkSeconds; + } + } + } + +if (currentStatus == DRUNK) + { + if (egoDir != EGO_STOPPED) + { + --staggerCycles; + if (staggerCycles == 1) + { + Toggle( staggering); + if (!staggering) + { + Reset( programControl); + ReleaseLoop( ego); + staggerCycles = 7; + } + else + { + Set( programControl); + FixLoop(ego); + :loop1 + Random( 1, 8, work); + if (work == egoDir) + { + goto loop1; + } + egoDir = work; + staggerCycles = 5; + } + } + } + } + + +[***** +:exit [ test for leaving the room +[***** + +if (edgeEgoHit == TOP) {newRoom = rmHallway;} +if (edgeEgoHit == BOTTOM) {newRoom = rmOutsideBar;} diff --git a/RM15.MSG b/RM15.MSG new file mode 100644 index 0000000..61934f2 --- /dev/null +++ b/RM15.MSG @@ -0,0 +1,278 @@ +[messages for room 15 -- rmInsideBar +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"This is the sleaziest bar you've ever been in. + And you've been in quite a few." + +%message 2 +"You are standing." + +%message 3 +"You are sitting." + +%message 4 +"You insert a dollar into the juke box, and select a suitably sleazy song." + +%message 5 +"You rap loudly on the naugahyde door. + You wonder how many naugas had to give their + all just to decorate this sleazehole." + +%message 6 +"So what?" + +%message 7 +"\"Yeah. Whatsda passwoid?\"" + +%message 8 +"\"Scram, dog breath!\"" + +%message 9 +"\"Come on in!\"" + +%message 10 +"\"...blah, blah, blah, blah, blah...\"" + +%message 11 +"\"...a lotta guys just leave her hanging in a tree somewhere!\"" + +%message 12 +"\"...'cause Thursday's your night in the barrel!\"" + +%message 13 +"\"...just think of the money he saved!\"" + +%message 14 +"\"...and there stood the pig and the cow!\"" + +%message 15 +"\"...dammit Liza, doncha know ya own reflection?\"" + +%message 16 +"\"...we are coming back this way, aren't we?\"" + +%message 17 +"\"...You idiot! I said POSSE!!\"" + +%message 18 +"\"...nobody can eat THAT much ice cream!\"" + +%message 19 +"\"...25 bucks, same as in town!\"" + +%message 20 +"You'd better sit down first." + +%message 21 +"You greet the bartender.\n\n +\"What'll it be,\" Lefty responds, \"whiskey, wine or beer?\"" + +%message 22 +"\"I'll have a glass of your fine, well whiskey!\" you tell Lefty." + +%message 23 +"\"Gimme a mug o' beer!\" you order Lefty." + +%message 24 +"\"That'll be $3.00, please.\"" + +%message 25 +"You flip three bucks onto the counter." + +%message 26 +"\"I'm presently a little short,\" you stammer." + +%message 27 +"\"Yeah, and not just in the financial department, I bet!\" he replies, + grabbing back your order." + +%message 28 +"You down the beer in your pseudo-macho style, + and slam the mug back on the bar." + +%message 29 +"You delicately sip the wine until it's all gone.\n\n +You tell Lefty, + \"I find this impudent and sassy, with the slightest hint of impertinence.\"" + +%message 30 +"He gazes at you longingly and moistens his lips!" + +%message 31 +"Suddenly you feel a little woozy." + +%message 32 +"This one tastes even better than the last. + One more sounds like a good idea." + +%message 33 +"Try sitting at the bar; that usually gets Lefty's attention." + +%message 34 +"It's not good etiquette to drink standing up." + +%message 35 +"Since you can only balance one open glass of whiskey at a time, + you toss this one down immediately." + +%message 36 +"\"May I please have a glass of your delicate white zinfandel, sir?\" + you ask Lefty." + +%message 37 +"Hey, was that your voice?" + +%message 38 +"You don't drink the whiskey, but instead, + decide to carry it with you wherever you go, + precariously balanced in an open shot glass." + +%message 39 +"The whiskey burns its way down your throat. + You vow to never again buy a \"well\" brand." + +%message 40 +"Hold on; you haven't got your last order yet!" + +%message 41 +"You feel a little light-headed." + +%message 42 +"Shaking your head, you clear away the cobwebs and are able to once again + walk in your standard, studly style." + +%message 43 +"\"Cram it, clown!\" you tell the bore on the stool next to you!" + +%message 44 +"\"Same to ya!\" shouts Lefty." + +%message 45 +"It's an antique, left over from \"King's Quest III.\"" + +%message 46 +"Patience, Larry; patience!" + +%message 47 +"The door is locked. And, there is no key." + +%message 48 +"She may not be a great looker, but think of the muscles in that leg." + +%message 49 +"It's just going around in circles..." + +%message 50 +"...like your life." + +%message 51 +"You don't know much about art, but you do know what you like!" + +%message 52 +"You mean to say you're playing a 3-D adventure game, + and all you want is LIGHT beer??" + +%message 53 +"They're just sitting at the bar, drinking their livers into oblivion." + +%message 54 +"\"Sorry, we don't sell them sissy drinks here,\" says Lefty. + \"We got whiskey, wine and beer. What do you want?\"" + +%message 55 +"My, aren't we the little savage! + Didn't your mother teach you anything?" + +%message 56 +"\"Who cares,\" she replies sarcastically. + \"Stop bugging me, or I'll have my boy friend + take care of you when he gets back from the rest room!\"" + +%message 57 +"Looks like you're operating at your standard level of charm, Larry." + +%message 58 +"\"Har, har!!\"" + +%message 59 +"He has nothing to say, but says it continuously." + +%message 60 +"\"Hi there, lovely legs!\" you say sweetly. + \"My name's Larry; Larry Laffer.\"" + +%message 61 +"They have no comment." + +%message 62 +"He's not bothering you now; leave him alone, you big bully!" + +%message 63 +"You can't. There's no key in this game!" + +%message 64 +"Gee, Dad. It's a Wurlitzer!" + +%message 65 +"The peephole is locked from the inside." + +%message 66 +"Boy, are you drunk!" + +%message 67 +"SLAP!" + +%message 68 +"\"Ya got me!\"" + +%message 69 +"\"No, thanks,\" Lefty replies. \"I don't drink.\"" + +%message 70 +"\"Ok,\" says Lefty, \"but that'll cost ya $%v90.00!\"" + +%message 71 +"The last of the big time spenders, + you go down in a blaze of glory, ordering drinks for everybody in the place." + +%message 72 +"\"I'll not help you,\" says Lefty, \"no matter how much you offer me!\"" + +%message 73 +"The naugahyde bounces the hammer back, grazing your scalp but slightly." + +%message 74 +"You flip a fiver out on the bar. + Lefty grabs it, smiles, and says, \"Hey, thanks buddy! " + +%message 75 +"%m74" + +%message 76 +"You don't have enough money!" + +%message 77 +"\"Double down on eleven.\"" + +%message 78 +"\"If you're short of money, you could always try gambling at the casino.\"" + +%message 79 +"\"If you're bored hanging around my place, try hailing a cab outside.\"" + +%message 80 +"\"Have you talked to Sierra On-Line lately?\"" + +%message 81 +"\"Guys tell me I need to clean my rest room walls.\"" + +%message 82 +"He appears to be perverted, twisted and sick!" + +%message 83 +"You instantly take a liking to him." + diff --git a/RM16.CG b/RM16.CG new file mode 100644 index 0000000..a4d59c0 --- /dev/null +++ b/RM16.CG @@ -0,0 +1,699 @@ +[logics for room 16 -- rmBackroom +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm16.msg" +%include "gamedefs.h" + + + +[ There is a pimp here, watching TV. Player has to get +[past pimp by paying him, or making him watch TV until he +[doesn't notice him sneak past, and up stairs. "use remote +[control". "pay pimp" "turn tv on/off" "change channels" +[channels give various messages. + + + +#define L_PIMP_SITTING 2 + +%define PIMP_START_X 42 [ Pimpie co-ordinates +%define PIMP_BLOCK_X 116 +%define PIMP_TV_X 70 +%define PIMP_WAITING_X 100 + +%define PIMP_Y 135 +%define PIMP_SITTING_Y 132 + + +%define sitPimpDown lf0 +%define pimpAtStairs lf1 +%define nearTV lf2 +%define doorOpenDone lf3 +%define doorCloseDone lf4 +%define nearDoor lf5 +%define pimpBlockingStairs lf6 +%define nearStairs lf7 +%define gaveWarning lf8 +%define nearPimp lf9 +%define waitingToBlockStairs lf10 +%define pimpClear lf11 +%define blockingTV lf12 + + +%define TVMessageCycles lv0 +%define moveTimer lv1 +%define TVCycles lv2 + + +%object aPimp 1 +%object aDoor 2 +%object aTV 3 + + + +if (initLog) + { + SetHorizon( 39); + + LoadPic( currentRoom); + DrawPic( currentRoom); + DiscardPic( currentRoom); + + LoadView( vRm16Door); + LoadView( vPimp); + LoadView( vPimpBlockingStairs); + LoadView( vTVOn); + + AnimateObj( aDoor); + IgnoreBlocks( aDoor); + IgnoreObjs( aDoor); + Position( aDoor, 24, 132); + SetView( aDoor, vRm16Door); + SetPriority( aDoor, 10); + work = DOOR_CYCLE_TIME; + CycleTime( aDoor, work); + + AnimateObj( aTV); + IgnoreBlocks( aTV); + IgnoreObjs( aTV); + Position( aTV, 70, 136); + SetView( aTV, vTVOn); + if (TVOn) + { + Draw( aTV); + Random( 3, 9, TVCycles); + } + + + AnimateObj( aPimp); + if (pimpWatchingTV) + { + SetView( aPimp, vPimp); + SetLoop( aPimp, L_PIMP_SITTING); + Position( aPimp, PIMP_TV_X, PIMP_SITTING_Y); + } + else + { + if (previousRoom == rmHooker) + { + SetView( aPimp, vPimpBlockingStairs); + Position( aPimp, PIMP_WAITING_X, PIMP_Y); + Set( waitingToBlockStairs); + } + else + { + SetView( aPimp, vPimp); + SetLoop( aPimp, FACING_RIGHT); + Position( aPimp, PIMP_START_X, PIMP_Y); + MoveObj( aPimp, PIMP_BLOCK_X, PIMP_Y, 1, pimpAtStairs); + } + } + Draw( aPimp); + + SetLoop( ego, FACING_RIGHT); + if (previousRoom == rmHooker) + { + SetCel( aDoor, 0); + Draw( aDoor); + StopUpdate( aDoor); + + egoX = 71; + egoY = 55; + } + else + { + LastCel( aDoor, work); + SetCelV( aDoor, work); + Draw( aDoor); + BeginningOfLoop( aDoor, doorCloseDone); + + egoX = 26; + egoY = 136; + StopMotion( ego); + Set( programControl); + } + PositionV( ego, egoX, egoY); + Draw( ego); + + ShowPic( ); + + Return( ); + + } [ end initLOG + + +Reset( nearPimp); +Distance( ego, aPimp, work); +if (work < 13) + { + Set( nearPimp); + Set( nearPerson); + } + +Reset( nearDoor); +if (Posn( ego, 22, 123, 33, 137)) + { + Set( nearDoor); + } + +Reset( nearTV); +if (Posn( ego, 65, 137, 80, 143)) + { + Set( nearTV); + } + +Reset( blockingTV); +if (Posn( ego, 65, 133, 76, 143)) + { + Set( blockingTV); + } + + +Reset( nearStairs); +if (Posn( ego, 105, 131, 133, 139)) + { + Set( nearStairs); + } + + +[***** +:handleInput +[***** + +if (!haveInput) {goto noInput;} + +if ((Said( look) || + Said( look, room))) + { + Print( 1); + } + +if ((Said( look, boxes) || + Said( open, boxes) || + Said( look$in, boxes))) + { + Print( 27); + } + +if ((Said( get, box) || + Said( move, box) || + Said( climb, box) || + Said( climb, on, box) || + Said( use, box))) + { + Print( 48); + } + +if (Said( look, door)) + { + Print( 7); + } + +if ((Said( look, stairs, rol) || + Said( look, up, rol))) + { + Print( 55); + } + +if (Said( look, man)) + { + Print( 44); + } + +if ((Said( aim, control, man) || + Said( use, control, on, man))) + { + Print( 59); + } + + +if (Said( look, tv)) + { + if (!TVOn) + { + Print( 45); + } + else + { + if (!pimpWatchingTV) + { + Print( 46); + } + else + { + Print( 47); + } + } + } + + +if ((Said( pay, rol) || + Said( buy, girl) || + Said( buy, ass) || + Said( buy, hump) || + Said( buy, pussy) || + Said( give, one, money) || + Said( give, one, money, man) || + Said( give, man, one, money) || + Said( give, man, money) || + Said( give, money, man) || + Said( give, money))) + { + if (pimpWatchingTV) + { + Print( 54); + } + else + { + if (!nearPimp) + { + Set( notCloseEnough); + } + else + { + if (dollars < 100) + { + Print( 8); + } + else + { + Set( gaveWarning); [ To prevent message later. + Reset( pimpBlockingStairs); + dollars -= 100; + Print( 5); + SetView( aPimp, vPimp); + MoveObj( aPimp, PIMP_WAITING_X, PIMP_Y, 1, pimpClear); + if (scoredHooker) + { + Print( 9); + } + } + } + } + } + + +if ((Said( knock, anyword, door) || + Said( knock, door, anyword) || + Said( knock, door) || + Said( knock))) + { + if (!nearDoor) + { + Set( notCloseEnough); + } + else + { + Print( 6); + } + } + +if (Said( open, door)) + { + if (!nearDoor) + { + Set( notCloseEnough); + } + else + { + Set( OK); + StopMotion( ego); + Set( programControl); + + StartUpdate( aDoor); + EndOfLoop( aDoor, doorOpenDone); + } + } + +if ((Said( turn, on, tv) || + Said( turn, tv, on) || + Said( tv, on))) + { + if (!nearTV) + { + Set( notCloseEnough); + } + else + { + if (TVOn) + { + Print( 23); + } + else + { + Print( 22); + } + } + } + +if ((Said( turn, off, tv) || + Said( turn, tv, off) || + Said( tv, off))) + { + if (!nearTV) + { + Set( notCloseEnough); + } + else + { + if (!TVOn) + { + Print( 23); + } + else + { + Print( 22); + } + } + } + + +if ((Said( use, remote) || + Said( use, remote, off) || + Said( use, remote, on) || + Said( use, remote, turn, tv, on) || + Said( use, remote, turn, tv, off) || + Said( use, remote, rol) || + Said( press, button, remote, rol) || + Said( press, button, on, remote, rol) || + Said( press, remote, rol) || + Said( press, remote, on) || + Said( press, remote, off) || + Said( press, remote, tv, on) || + Said( press, remote, tv, off) || + Said( press, remote, turn, tv, on) || + Said( press, remote, turn, tv, off) || + Said( press, remote, turn, on, tv) || + Said( press, remote, turn, off, tv) || + Said( turn, on, tv, use, remote) || + Said( turn, off, tv, use, remote) || + Said( turn, tv, on, use, remote) || + Said( turn, tv, off, use, remote))) + { + if (!Has( iRemoteControl)) + { + Set( dontHaveIt); + } + else + { + if (egoY > 144) + { + Print( 28); + } + else + { + if (TVOn) + { + Print( 57); + } + else + { + currentScore += 3; + Draw( aTV); + Print( 24); + Set( TVOn); + TVCycles = 5; + TVChannel = 14; + Random( 33, 77, TVMessageCycles); + } + } + } + } + +if ((Said( tie, man, with, rope) || + Said( tie, up, man))) + { + if (!Has( iRope)) + { + Set( dontHaveIt); + } + else + { + Print( 60); + } + } + +if ((Said( talk, man) || + Said( deal, rol) || + Said( say, hello))) + { + if (pimpWatchingTV) + { + Print( 13); + } + else + { + Print( 2); + Print( 3); + Print( 4); + } + } + +if ((Said( beat, up, man, rol) || + Said( hit, man, rol) || + Said( use, hammer, rol) || + Said( tie, pimp) || + Said( tie, up, pimp) || + Said( tie, up, pimp, use, rope) || + Said( use, rope, tie, up, pimp) || + Said( use, rope, tie, pimp) || + Said( tie, up, pimp, rope) || + Said( tie, pimp, rope) || + Said( kill, man, rol))) + { + Print( 52); + } + +if ((Said( move) || + Said( move, out, way) || + Said( move, away) || + Said( get, away) || + Said( move, man))) + { + Print( 2); + Print( 3); + Print( 4); + } + + +if ((Said( give, man, remote, rol) || + Said( give, remote, man, rol))) + { + Print( 58); + } + +if ((Said( turn, channel) || + Said( use, remote, turn, channel) || + Said( turn, tv, channel) || + Said( turn, channel, tv) || + Said( turn, tv, channel, use, remote) || + Said( turn, channel, tv, use, remote) || + Said( turn, channel, use, remote) || + Said( turn, tv, channel, remote) || + Said( turn, channel, remote) || + Said( use, remote, turn, tv, channel) || + Said( change, channel) || + Said( use, remote, change, channel) || + Said( change, tv, channel) || + Said( change, channel, tv) || + Said( change, tv, channel, use, remote) || + Said( change, channel, tv, use, remote) || + Said( change, channel, use, remote) || + Said( change, tv, channel, remote) || + Said( change, channel, remote) || + Said( use, remote, change, tv, channel))) + { + if (!Has( iRemoteControl)) + { + Print( 22); + } + else + { + if (!TVOn) + { + Print( 29); + } + else + { + if (egoY > 144) + { + Print( 28); + } + else + { + if (TVChannel == 21) + { + Print( 26); + } + else + { + if (TVMessageCycles) + { + Print( 42); + } + else + { + Print( 25); + ++TVChannel; + Random( 23, 39, TVMessageCycles); + } + } + } + } + } + } + + +if (Said( look, walls)) + { + Print( 49); + } + +if (Said( look, light)) + { + Print( 50); + } + +if (Said( look, crack)) + { + Print( 51); + } + + + +[***** +:noInput +[***** + +if ((!blockingTV || !pimpWatchingTV)) + { + moveTimer = 0; + } +else + { + if (!moveTimer) + { + moveTimer = 2; + } + + --moveTimer; + if (moveTimer == 1) + { + Print( 53); + moveTimer = 22; + } + } + + +--TVMessageCycles; +if (TVMessageCycles == 20) + { + PrintV( TVChannel); + } + +if (TVMessageCycles == 10) + { + if (TVChannel != 21) + { + work = TVChannel; + work += 20; + PrintV( work); + } + else + { + Reset( pimpBlockingStairs); + Set( pimpWatchingTV); + SetView( aPimp, vPimp); + MoveObj( aPimp, PIMP_TV_X, PIMP_Y, 1, sitPimpDown); + } + } + + +if (TVMessageCycles == 1) + { + if (TVChannel != 21) + { + Print( 10); + } + } + + +if (pimpClear) + { + Reset( pimpClear); + SetView( aPimp, vPimpBlockingStairs); + Print( 43); + } + +if (sitPimpDown) + { + Reset( sitPimpDown); + SetLoop( aPimp, L_PIMP_SITTING); + RepositionTo( aPimp, PIMP_TV_X, PIMP_SITTING_Y); + ForceUpdate( aPimp); + if (!gotPimpToWatchTV) + { + Set( gotPimpToWatchTV); + currentScore += 8; + } + Print( 12); + } + + +if (waitingToBlockStairs) + { + if (egoX < 90 && egoY > 110) + { + Reset( waitingToBlockStairs); + Print( 30); + SetView( aPimp, vPimp); + SetLoop( aPimp, FACING_RIGHT); + MoveObj( aPimp, PIMP_BLOCK_X, PIMP_Y, 1, pimpAtStairs); + } + } + +if (pimpAtStairs) + { + Reset( pimpAtStairs); + Set( pimpBlockingStairs); + SetView( aPimp, vPimpBlockingStairs); + } + +if (!gaveWarning && + pimpBlockingStairs && + nearStairs) + { + Set( gaveWarning); + Print( 11); + } + +--TVCycles; +if (TVOn && TVCycles == 1) + { + Random( 4, 16, TVCycles); + Random( 1, 4, work); + CycleTime( aTV, work); + } + +if (doorCloseDone) + { + Reset( doorCloseDone); + StopUpdate( aDoor); + StartMotion( ego); + Reset( programControl); + } + + +[***** +:exit [ test for leaving the room +[***** + +if (doorOpenDone) + { + Reset( programControl); + newRoom = rmInsideBar; + } + +if ((egoY < 42 || + edgeEgoHit == TOP)) {newRoom = rmHooker;} diff --git a/RM16.MSG b/RM16.MSG new file mode 100644 index 0000000..df0cdfa --- /dev/null +++ b/RM16.MSG @@ -0,0 +1,195 @@ +[messages for room 16 -- rmBackroom +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"The bar's storage room is almost empty. + Its most significant feature is a big, mean-looking dude." + +%message 2 +"\"Ya wanna go upstairs?\" he says in a scholarly voice, \"ya + gotta pays da price!\"" + +%message 3 +"\"$100.00, cash up front, no refunds.\"" + +%message 4 +"He certainly has a pleasing manner about him." + +%message 5 +"\"Thanks,\" he growls. \"Remember, no refunds!\"" + +%message 6 +"Evidently no one in the bar wants to play \"Knock, knock\" with you." + +%message 7 +"It's the door from the bar. Its far side looks better than this side." + +%message 8 +"You don't have enough money." + +%message 9 +"\"You like that stuff, eh, boy?\"" + +%message 10 +"The pimp seems vaguely interested, + but not enough to leave his post by the stairs." + +%message 11 +"The pimp growls, + \"You got no business goin' up these stairs, little man!\"" + +%message 12 +"It appears you've finally reached the pimp's cultural level." + +%message 13 +"He ignores you. + It looks like he's \"engrossed\" in something right now." + +%message 14 +" +\"Oh, John.\" \"Oh, Marsha.\"\n +\"OH, John.\" \"OH, Marsha.\"\n +\"Oh, JOHN!\" \"Oh, MARSHA!\"\n +\"OH, JOHN!!\" \"OH, MARSHA!!\"" + +%message 15 +"\"...I'm Al Fartles, and this is my partner, Fed Ames. + We just want to tell you how much we appreciate your support...\"" + +%message 16 +"\"...and now, ALoHa Productions is proud to present + 'The Revenge of the Software Developers' in full color and stereo sound...\"" + +%message 17 +"\"...while Jim is fighting for his life with the raging female rhinoceros + in heat, I'll slip into my tent with the native girl and + this pitcher of Mai Tais...\"" + +%message 18 +"\"...it's a beautiful day in the neighbor...\"" + +%message 19 +"\"...live from Malaga, California, + it's the Cable Sports Network presentation of the + Miniature Female Mud Wrestlers 500-kilometer Cross-Country + Nude Bicycle Race...\"" + +%message 20 +"\"...And next, Master Piece Theatre presents a special 3-D broadcast of + 'Naugahyde Goddesses of Oakhurst!'\"" + +%message 21 +"\"...oh, baby, yeah. Yeah, I love it when you do that! Ooooooooooh!! + That hurts so good, pull it out a little deeper!!!\"" + +%message 22 +"The knob is broken off. There's no way to turn it." + +%message 23 +"It already is!" + +%message 24 +"You click the power switch on the remote control." + +%message 25 +"You click the channel selector on the remote control." + +%message 26 +"Nah. He's having a good time!" + +%message 27 +"They're boxes, all right." + +%message 28 +"The remote control seems ineffectual from this angle." + +%message 29 +"The TV is off." + +%message 30 +"\"Pretty good stuff, eh, boy?\" laughs the pimp." + +%message 34 +"%m56soap opera." + +%message 35 +"%m56commercial." + +%message 36 +"%m56musical comedy." + +%message 37 +"%m56documentary." + +%message 38 +"No, no!! Anything but that!" + +%message 39 +"%m56cable sports show." + +%message 40 +"%m56educational show." + +%message 41 +"Well, now. What's this??" + +%message 42 +"Slow down. You're gonna blow the punch line!" + +%message 43 +"\"Have a nice lay.\"" + +%message 44 +"He's no rocket scientist!" + +%message 45 +"Its screen is blank; much like the pimp's mind." + +%message 46 +"%m56program." + +%message 47 +"Get your mind back on the game, Larry!" + +%message 48 +"What does this look like, the ship's hold in \"King's Quest III?\"" + +%message 49 +"The walls do a good job of separating the floor from the ceiling." + +%message 50 +"It's just hanging around." + +%message 51 +"Wait 'til you get upstairs." + +%message 52 +"He's far too big, and you're far too wimpy." + +%message 53 +"\"Hey! Outta da way!!\"" + +%message 54 +"There is no need to pay; he's pleasantly distracted. Help yourself!" + +%message 55 +"You wonder what palace of earthly delights resides above you." + +%message 56 +"Another boring " + +%message 57 +"Evidently the remote control's off button is broken." + +%message 58 +"Its operation is beyond his mental capacities." + +%message 59 +"He's unaffected by the remote control." + +%message 60 +"He's too strong for you, Larry." + diff --git a/RM17.CG b/RM17.CG new file mode 100644 index 0000000..63ad488 --- /dev/null +++ b/RM17.CG @@ -0,0 +1,1079 @@ +[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; + } diff --git a/RM17.MSG b/RM17.MSG new file mode 100644 index 0000000..dc52ac7 --- /dev/null +++ b/RM17.MSG @@ -0,0 +1,157 @@ +[messages for room 17 -- rmHooker +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"This is the hooker's seedy bedroom. + The bed's a mess, ditto the hooker!" + +%message 2 +"Yep! This would be a perfect time! The Surgeon General would be proud." + +%message 3 +"You already are wearing it." + +%message 4 +"It looks like the hooker has a box of candy on her table." + +%message 5 +"Although successful, you feel less than satisfied. + Technically speaking, you're no longer a virgin, + but for some reason, the thrill just wasn't there. + You vow to continue your quest until you please your heart, + not just your other organs!" + +%message 6 +"Sniffing the air, you're suddenly hungry for tuna." + +%message 7 +"\"Come on over here, Larry!\"" + +%message 8 +"She says, \"Me first!\" as she%m25" + +%message 9 +"Not again! A guy can only take so much!!" + +%message 10 +"She seems more interested in that cigarette than she was in you." + +%message 11 +"It's a good thing you were wearing that rubber!" + +%message 12 +"It's already open." + +%message 13 +"Nah. This room needs the fresh air!" + +%message 14 +"You repeatedly bang your head against the closed glass." + +%message 15 +"" + +%message 16 +"It's a really ugly table." + +%message 17 +"\"Jeez, Mister! What've you been eating? Buffalo chips???\"" + +%message 18 +"She certainly seems to enjoy that gum." + +%message 19 +"A sign near the bed says: \"Substantial penalty for early withdrawals.\"" + +%message 20 +"\"So,\" she snarls, \"you just gonna stand there, or what?\"" + +%message 21 +"\"Was it good for you, baby?\" you ask her." + +%message 22 +"\"Was what good?\" she replies." + +%message 23 +"Although you might look precious in that little white lace number, + you're just not that kind of guy!" + +%message 24 +"She%m25" + +%message 25 +" goes to work on you. + Then she smiles as she bites it off! + \"Sorry, Larry. No oral sex in this game. Suffer!\"" + +%message 26 +"Now's a great time to think of that!" + +%message 27 +"\"Is that a toothpick in your pocket, + or are you just happy to get past my pimp?\"" + +%message 28 +"You'd have a better view if you'd move to the front of the bed!" + +%message 29 +"There is a fire escape outside the window." + +%message 30 +"The clothesline is barely strong enough to hold its present load. + Poor girl, you'd think at these prices she could afford a laundromat." + +%message 31 +"\"Hey, what kind of girl do you think I am?\"" + +%message 32 +"It's getting old and rusty -- not unlike you, Larry." + +%message 33 +"It just hangs there." + +%message 34 +"There's nothing (and no one) there." + +%message 35 +"It, too, is broken." + +%message 36 +"" + +%message 37 +"It's barely strong enough to hold up its present load. + Besides, if you take it, her underwear would fall down." + +%message 38 +"There is a table near the window." + +%message 39 +"There's nothing there." + +%message 40 +"You have no use for a stained pillow." + +%message 41 +"You are as naked as you're going to get!" + +%message 42 +"With all your clothes on?" + +%message 43 +"You slyly tap out a message in Morse code; unfortunately, only some rats + hear it." + +%message 44 +"You can't. She's nailed it to the floor." + +%message 45 +"Your rope is not long enough to reach outside." + +%message 46 +"NOW!? + You've come this far, Larry; now's the time to do more than just look!" + diff --git a/RM19.CG b/RM19.CG new file mode 100644 index 0000000..1aaf9f3 --- /dev/null +++ b/RM19.CG @@ -0,0 +1,146 @@ +[logics for room 19 -- rmSunrise +[ "Leisure-Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm19.msg" +%include "gamedefs.h" + + + +#define shakeCycles lv0 + +#object aSun 1 +#object aBang 2 + + + +if (initLog) + { + Print( 1); + Print( 2); + Print( 3); + Print( 4); + + SetHorizon( 4); + + PreventInput(); + + picture = picBlack; + LoadPic( picture); + LoadPic( currentRoom); + + LoadView( vSunrise); + LoadView( vEgoSunrise); + LoadView( vSunriseBang); + + LoadSound( mSunrise); + LoadSound( mFuneral); + LoadSound( sBang); + +[ DON'T Draw( ego); + + DrawPic( currentRoom); + + AddToPic( vEgoSunrise, 0, 0, 56, 129, 5, 4); [ Larry's face + + AnimateObj( aSun); + SetPriority( aSun, 4); + SetView( aSun, vSunrise); + SetLoop( aSun, 0); + SetCel( aSun, 0); + Position( aSun, 23, 91); + Draw( aSun); + MoveObj( aSun, 81, 33, 1, scriptDone); + + + ShowPic( ); + + Sound( mSunrise, done); + Return( ); + + } [ end initLOG + + + +[***** +:handleInput +[***** + +PreventInput(); + +[***** +:noInput +[***** + +if (scriptDone) + { + Reset( scriptDone); + ++script; + + if (script == 1) + { + UnanimateAll(); + AddToPic( vEgoSunrise, 0, 1, 32, 161, 14, 4); + [view, loop, cel, x, y, obj priority, box priority + scriptTimer = 4; + } + + if (script == 2) + { + AddToPic( vEgoSunrise, 1, 0, 69, 119, 5, 4); + Sound( mFuneral, done); + scriptTimer = 4; + } + + if (script == 3) + { + AddToPic( vEgoSunrise, 1, 1, 69, 119, 6, 4); + scriptTimer = 4; + } + + if (script == 4) + { + DrawPic( picture); + + AnimateObj( aBang); + SetView( aBang, vSunriseBang); + SetLoop( aBang, 0); + Position( aBang, 50, 105); + StartCycling( aBang); + Draw( aBang); + + ShowPic(); + + shakeCycles = 14; + } + + if (script == 5) + { + Erase( aBang); + Set( certainDeath); + } + } + + +--shakeCycles; +if ((shakeCycles == 10 || + shakeCycles == 8 || + shakeCycles == 6 || + shakeCycles == 4 || + shakeCycles == 2)) + { + Sound( sBang, done); + ShakeScreen( 1); + } + +if (shakeCycles == 1) + { + Set( scriptDone); + } + + + +[***** +:exit [ test for leaving the room +[***** + diff --git a/RM19.MSG b/RM19.MSG new file mode 100644 index 0000000..8e7a14a --- /dev/null +++ b/RM19.MSG @@ -0,0 +1,21 @@ +[messages for room 19 -- rmSunrise +[ "Leisure-Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + +%message 1 +"Oh, no!\n\n +Stepping outside, you see the sun rising in the east. + Glancing at your watch, you realize the terrible truth..." + +%message 2 +"...your night in Sierra World is over, + and (technically speaking) you're still..." + +%message 3 +"a" + +%message 4 +"\n\n +VIRGIN!!!\n\n" + diff --git a/RM2.CG b/RM2.CG new file mode 100644 index 0000000..5116ace --- /dev/null +++ b/RM2.CG @@ -0,0 +1,189 @@ +[logics for room 2 -- lgcQuestions1 +[ "Leisure-Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm2.msg" +%include "gamedefs.h" + + +%define FIRST_QUESTION 1 +%define LAST_QUESTION 53 + +%define toldLastQuestion lf1 + +%define allsWell lv0 +%define question1 lv1 +%define question2 lv2 +%define question3 lv3 +%define question4 lv4 +%define question5 lv5 + + + +if (initLog) + { + if (forceAtest) + { + Print( 60); + currentQuestion = FIRST_QUESTION; + } + } [ end initLOG + + + +if (!forceAtest) + { + :askAgain; + Random( FIRST_QUESTION, LAST_QUESTION, currentQuestion); + if ((currentQuestion == question1 || + currentQuestion == question2 || + currentQuestion == question3 || + currentQuestion == question4 || + currentQuestion == question5)) + { + goto askAgain; + } + else + { + if (question == 1) {question1 = currentQuestion}; + if (question == 2) {question2 = currentQuestion}; + if (question == 3) {question3 = currentQuestion}; + if (question == 4) {question4 = currentQuestion}; + if (question == 5) {question5 = currentQuestion}; + if (question == 6) {questionStatus = allDone;} + if (question == 5 && + !toldLastQuestion) + { + Set( toldLastQuestion); + Print( 69); + } + + ++question; + } + } + +if (currentQuestion == 1) {correctAnswer = 3;} +if (currentQuestion == 2) {correctAnswer = 4;} +if (currentQuestion == 3) {correctAnswer = 1;} +if (currentQuestion == 4) {correctAnswer = 3;} +if (currentQuestion == 5) {correctAnswer = 0;} +if (currentQuestion == 6) {correctAnswer = 2;} +if (currentQuestion == 7) {correctAnswer = 4;} +if (currentQuestion == 8) {correctAnswer = 4;} +if (currentQuestion == 9) {correctAnswer = 1;} +if (currentQuestion == 10) {correctAnswer = 2;} +if (currentQuestion == 11) {correctAnswer = 2;} +if (currentQuestion == 12) {correctAnswer = 3;} +if (currentQuestion == 13) {correctAnswer = 3;} +if (currentQuestion == 14) {correctAnswer = 1;} +if (currentQuestion == 15) {correctAnswer = 3;} +if (currentQuestion == 16) {correctAnswer = 2;} +if (currentQuestion == 17) {correctAnswer = 3;} +if (currentQuestion == 18) {correctAnswer = 3;} +if (currentQuestion == 19) {correctAnswer = 2;} +if (currentQuestion == 20) {correctAnswer = 4;} +if (currentQuestion == 21) {correctAnswer = 3;} +if (currentQuestion == 22) {correctAnswer = 4;} +if (currentQuestion == 23) {correctAnswer = 3;} +if (currentQuestion == 24) {correctAnswer = 0;} +if (currentQuestion == 25) {correctAnswer = 4;} +if (currentQuestion == 26) {correctAnswer = 2;} +if (currentQuestion == 27) {correctAnswer = 4;} +if (currentQuestion == 28) {correctAnswer = 4;} +if (currentQuestion == 29) {correctAnswer = 0;} +if (currentQuestion == 30) {correctAnswer = 3;} +if (currentQuestion == 31) {correctAnswer = 4;} +if (currentQuestion == 32) {correctAnswer = 3;} +if (currentQuestion == 33) {correctAnswer = 2;} +if (currentQuestion == 34) {correctAnswer = 1;} +if (currentQuestion == 35) {correctAnswer = 2;} +if (currentQuestion == 36) {correctAnswer = 3;} +if (currentQuestion == 37) {correctAnswer = 3;} +if (currentQuestion == 38) {correctAnswer = 1;} +if (currentQuestion == 39) {correctAnswer = 3;} +if (currentQuestion == 40) {correctAnswer = 3;} +if (currentQuestion == 41) {correctAnswer = 3;} +if (currentQuestion == 42) {correctAnswer = 2;} +if (currentQuestion == 43) {correctAnswer = 1;} +if (currentQuestion == 44) {correctAnswer = 1;} +if (currentQuestion == 45) {correctAnswer = 2;} +if (currentQuestion == 46) {correctAnswer = 1;} +if (currentQuestion == 47) {correctAnswer = 2;} +if (currentQuestion == 48) {correctAnswer = 4;} +if (currentQuestion == 49) {correctAnswer = 1;} +if (currentQuestion == 50) {correctAnswer = 4;} +if (currentQuestion == 51) {correctAnswer = 3;} +if (currentQuestion == 52) {correctAnswer = 4;} +if (currentQuestion == 53) {correctAnswer = 2;} + + +if (questionStatus != allDone) + { + if (forceAtest) + { + ClearLines( 23, 23, 0); + Display( 23, 0, 66); + PrintV( currentQuestion); + ++currentQuestion; + if (!currentQuestion > LAST_QUESTION) + { + questionStatus = waitAwhile; + scriptTimer = 2; + } + else + { + questionStatus = allDone; + } + } + else + { + AcceptInput(); + CancelLine(); + PreventInput(); + ClearLines( 22, 24, BG_COLOR); + + Set( leaveWindow); + PrintV( currentQuestion); + lastChar = 0; + Display( 23, 0, 67); + + + SetScanStart(); + if (!lastChar) + { + Return(); + } + + if (lastChar > 64 && [ ABCD + lastChar < 69) + { + lastChar += 32; [ Convert to abcd (lower case). + } + + if ((lastChar < 97 || [ not abcd. + lastChar > 100)) + { + Sound( sError, done); + Return(); + } + ResetScanStart(); [ We've got a valid letter. + + + answer = lastChar; [ abcd. + lastChar = 0; + answer -= 96; [ Now answer between a and d. + + message = 60; [ 1 less than first message # + message += answer; + y = 23; + x = 29; + DisplayV( y, x, message); + questionStatus = waitAwhile; + scriptTimer = 3; + } + } + + +[***** +:exit [ test for leaving the room +[***** diff --git a/RM2.MSG b/RM2.MSG new file mode 100644 index 0000000..85d0e23 --- /dev/null +++ b/RM2.MSG @@ -0,0 +1,437 @@ +[messages for room 2 -- lgcQuestions1 +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"Johnny Carson is\n\n + a. a singer.\n + b. David Letterman's\n + sidekick.\n + c. Ed McMahon's sidekick.\n + d. an actor." + +%message 2 +"VCR stands for\n\n + a. Very Confusing Record.\n + b. Visual Cartridge\n + Recording.\n + c. Very Complete Record.\n + d. Video Cassette Recorder." + +%message 3 +"The East Coast is\n\n + a. home of the Mets.\n + b. a country.\n + c. where people talk funny.\n + d. adjacent to Texas." + +%message 4 +"Is this software pirated?\n\n + a. Yes.\n + b. I'm not talking.\n + c. No. (How could you\n + even ask!)\n + d. No, just borrowed." + +%message 5 +"Pia Zadora is\n\n + a. sexy.\n + b. a singer.\n + c. short.\n + d. all of the above." + +%message 6 +"The world is\n\n + a. flat.\n + b. spherical.\n + c. a big place.\n + d. near Fresno." + +%message 7 +"\"Let It Be\" was recorded by\n\n + a. the Rolling Stones.\n + b. the Monkees.\n + c. Creedence Clearwater.\n + d. the Beatles." + +%message 8 +"All politicians are\n\n + a. hardworking.\n + b. honest.\n + c. ethical.\n + d. on the public payroll." + +%message 9 +"Lingerie is\n\n + a. sexy.\n + b. a kind of car.\n + c. a French food.\n + d. edible." + +%message 10 +"Paul, John, Ringo and\n\n + a. Fred.\n + b. George.\n + c. Harry.\n + d. me." + +%message 11 +"Do girls really have cooties?\n\n + a. Yes.\n + b. No.\n + c. Some do, some don't.\n + d. Maybe." + +%message 12 +"Which song was not recorded by Elvis?\n\n + a. \"Hound Dog\"\n + b. \"Love Me Tender\"\n + c. \"What'd I Say\"\n + d. \"Heartbreak Hotel\"" + +%message 13 +"Edsel is a\n\n + a. girl's name.\n + b. plane.\n + c. car.\n + d. great investment." + +%message 14 +"Sex is\n\n + a. great.\n + b. ok.\n + c. a spectator sport.\n + d. a mystery to me." + +%message 15 +"Richard Nixon was the _____ President of the United States.\n\n + a. last\n + b. funniest\n + c. thirty-seventh\n + d. first Negro" + +%message 16 +"During the 70's, Carroll O'Connor portrayed a\n\n + a. kindly doctor.\n + b. lovable bigot.\n + c. handicapped lawyer.\n + d. Negro junk dealer." + +%message 17 +"The song \"American Pie\" was about\n\n + a. miscegenation.\n + b. Marilyn Chambers.\n + c. a dead rock star.\n + d. four minutes too long." + +%message 18 +"Thomas Eagleton was dropped from the 1972 Democratic National Ticket + when knowledge of his previous _____ treatments became known.\n\n + a. skin\n + b. screen\n + c. shock\n + d. scalp" + +%message 19 +"The 70's practice of running around naked was called\n\n + a. flashing.\n + b. streaking.\n + c. swinging.\n + d. on account of rain." + +%message 20 +"Peter Benchley's novel \"Jaws\" was about\n\n + a. Linda Lovelace.\n + b. dieting.\n + c. Joan Rivers.\n + d. sharks." + +%message 21 +"Who was not Vice-President of the United States in 1973-74?\n\n + a. Gerald Ford\n + b. Nelson Rockefeller\n + c. Thomas Hayden\n + d. Spiro Agnew" + +%message 22 +"The \"Chicago Seven\" was\n\n + a. some people who only\n + seem crazy in\n + retrospect.\n + b. the Bears' defensive\n + line.\n + c. burned for showing\n + \"Country\" in three\n + different theatres.\n + d. partially convicted." + +%message 23 +"President Ford prescribed _____ for dealing with economic problems.\n\n + a. tranquilizers\n + b. employment\n + c. that everyone wear a\n + WIN button\n + d. that everyone should\n + have a nice day" + +%message 24 +"The tackiest seventies fashion was\n\n + a. platform shoes.\n + b. midi-skirts.\n + c. short hair.\n + d. bisexuality." + +%message 25 +"O. J. Simpson is\n\n + a. an R & B singer.\n + b. under indictment.\n + c. embarrassed by his first\n + name (Olivia).\n + d. no one to fool with." + +%message 26 +"Angela Davis is\n\n + a. the middle Pointer\n + Sister.\n + b. a failed politician.\n + c. an example of split ends\n + gone wild.\n + d. Bette's daughter." + +%message 27 +"Detente is\n\n + a. prohibited by law in\n + 41 states.\n + b. a feminine hygiene\n + spray.\n + c. the masculine form of\n + \"deteuse.\"\n + d. a policy to replace war." + +%message 28 +"Kwi-Chang-Caine became famous by saying\n\n + a. \"I am not a crook.\"\n + b. \"The barren fig tree\n + bears no plums.\"\n + c. \"Hi, sailor.\ + New in town?\"\n + d. \"Aaaaaiiiyeeeaagggh!\"" + +%message 29 +"Ted Kennedy is best remem- bered for his\n\n + a. driving.\n + b. underwater free-style.\n + c. brothers.\n + d. All of the above." + +%message 30 +"\"NORML\" is\n\n + a. not gay.\n + b. what Falwell wants you\n + to be.\n + c. trying to legalize\n + marijuana.\n + d. misspelled." + +%message 31 +"Tom Hayden is\n\n + a. one of the Chicago\n + Seven.\n + b. a U. S. Congressman.\n + c. Mr. Jane Fonda.\n + d. All of the above." + +%message 32 +"Spiro Agnew is\n\n + a. a form of social\n + disease.\n + b. a jazz-fusion rock band.\n + c. a former Vice President.\n + d. the first woman in\n + Congress." + +%message 33 +"The germ that transmits syphilis is\n\n + a. Spiro Agnew.\n + b. Spirochete.\n + c. Spirograph.\n + d. Barbarella." + +%message 34 +"Kookie's address was\n\n + a. 77 Sunset Strip.\n + b. on Wistful Vista Street.\n + c. 334 Elm Street.\n + d. 1313 Mockingbird Lane." + +%message 35 +"\"Who knows what evil lurks in the hearts of men?\"\n\n + a. The Psychiatrist\n + b. The Shadow\n + c. The Creeper\n + d. Ingmar Bergman" + +%message 36 +"Al Lowe is:\n\n + a. under 25.\n + b. pregnant.\n + c. never \"carded.\"\n + d. a Woody Allen\n + impersonator." + +%message 37 +"Frank Sinatra is a\n\n + a. female impersonator.\n + b. shy pacifist.\n + c. saloon singer.\n + d. distance runner." + +%message 38 +"Ralph Boysen invented\n\n + a. the boysenberry.\n + b. fins on 50's cars.\n + c. bell bottomed jeans.\n + d. the juke box." + +%message 39 +"The first man on the moon was\n\n + a. John Glenn.\n + b. Neil Diamond.\n + c. Neil Armstrong.\n + d. Jack Armstrong." + +%message 40 +"\"Gone With The Wind\" is about\n\n + a. outer space.\n + b. a bank robbery.\n + c. four hours long.\n + d. dust." + +%message 41 +"Who is not a sportscaster?\n\n + a. Jayne Kennedy\n + b. Howard Cosell\n + c. Jayne Mansfield\n + d. Frank Gifford" + +%message 42 +"Which is not a wine?\n\n + a. Colombard\n + b. Bon Aire\n + c. Cabernet\n + d. Muscatel" + +%message 43 +"Which is not a mountain range?\n\n + a. Cayman\n + b. Appalachian\n + c. Rockies\n + d. Himalayas" + +%message 44 +"In the movie, \"Paint Your Wagon,\" Clint Eastwood sang\n\n + a. \"I Talk to the Trees\"\n + b. \"Go Ahead, Make My\n + Wagon\"\n + c. \"If I Had A Mayor\"\n + d. None of the above." + +%message 45 +"The drink \"Screwdriver\" contains\n\n + a. tomato juice.\n + b. orange juice.\n + c. grapefruit juice.\n + d. borax." + +%message 46 +"Ronald Reagan's co-star in \"Bedtime for Bonzo\" was\n\n + a. a monkey.\n + b. Peter O'Toole.\n + c. Bonzo the Clown.\n + d. Marilyn Monroe." + +%message 47 +"The slogan \"It takes two hands to handle a whopper\" refers to\n\n + a. John Holmes.\n + b. a hamburger.\n + c. overstuffed grocery\n + bags.\n + d. fishing." + +%message 48 +"If you arrived at a party wearing your birthday suit, you would\n\n + a. make many new friends.\n + b. be thrown out.\n + c. fit right in.\n + d. It depends on the party." + +%message 49 +"Cesar Chavez led a boycott of\n\n + a. grapes.\n + b. X-rated movies.\n + c. dirty magazines.\n + d. goods from South Africa." + +%message 50 +"James Brown is often referred to as\n\n + a. the Chairman of the\n + Board.\n + b. a great athlete.\n + c. the Velvet Fog.\n + d. the Godfather of Soul." + +%message 51 +"Who lost a daughter but gained a \"meathead?\"\n\n + a. George Jefferson\n + b. Ronald Reagan\n + c. Archie Bunker\n + d. Ted Knight" + +%message 52 +"Which U. S. Secretary of State was born in Germany?\n\n + a. Dean Rusk\n + b. William Rogers\n + c. George Schultz\n + d. Henry Kissinger" + +%message 53 +"Who was the inventive genius behind the Apple computer?\n\n + a. Bill Gates\n + b. Steve Wozniak\n + c. Ken Williams\n + d. Steve Russell" + + + + +%message 60 +"Dynamic logic = 2." + +%message 61 +"a" + +%message 62 +"b" + +%message 63 +"c" + +%message 64 +"d" + +%message 65 +"So far, so good.\n\n +Now for the final question." + +%message 66 +"Question #%v96. Correct answer is %v93." + +%message 67 +"Please answer a, b, c, or d: " + +%message 69 +"So far, so good.\n\n +Now for the final question." + diff --git a/RM20.CG b/RM20.CG new file mode 100644 index 0000000..2abbe50 --- /dev/null +++ b/RM20.CG @@ -0,0 +1,62 @@ +[logics for room 20 -- rmBoss +[ "Leisure-Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm20.msg" +%include "gamedefs.h" + + +if (initLog) + { + PreventInput(); + Reset( enableMenu); + Set( handsOff); + Reset( soundOn); + + Random( 1, 3, work); + if (work == 1) {picture = rmBoss;} + if (work == 2) {picture = picBoss2;} + if (work == 3) {picture = picBoss3;} + + LoadPic( picture); + DrawPic( picture); + DiscardPic( picture); + + Reset( clockOn); + StatusLineOff(); + ShowPic( ); + + Return( ); + + } [ end initLOG + + + +[***** +:handleInput +[***** + +if (haveInput) + { + Print( 1); + RestoreGame(); + } + + +[***** +:noInput +[***** + +Reset( clockOn); +StatusLineOff(); + +if (HaveKey()) + { + Print( 1); + RestoreGame(); + } + +[***** +:exit [ test for leaving the room +[***** + diff --git a/RM20.MSG b/RM20.MSG new file mode 100644 index 0000000..84a222b --- /dev/null +++ b/RM20.MSG @@ -0,0 +1,9 @@ +[messages for room 20 -- rmBoss +[ "Leisure-Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + +%message 1 +"Sorry, but you'll have to restore your game; + when you panic, I forget everything!" + diff --git a/RM21.CG b/RM21.CG new file mode 100644 index 0000000..a7e9923 --- /dev/null +++ b/RM21.CG @@ -0,0 +1,775 @@ +[logics for room 21 -- rmInside7_11 +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm21.msg" +%include "gamedefs.h" + + + +%define LEFT_WITHOUT_PAYING 0 +%define ASKED_FOR_RUBBER 100 + +%define L_TALKING 0 +%define L_SHOOTING 1 + + +%define boughtRubber lf0 +%define nearCounter lf2 +%define nearMags lf3 +%define waitingForResponse lf4 +%define nearWine lf5 + + +%define moneyOwed lv0 [ Don't change. See message 40. +%define pervertTimer lv1 +%define talkTimer lv2 + + +%object aClerk 1 +%object aCustomer0 2 +%object aCustomer1 3 +%object aCustomer2 4 +%object aCustomer3 5 +%object aCustomer4 6 +%object aCustomer5 7 + + + +if (initLog) + { + LoadPic( currentRoom); + DrawPic( currentRoom); + DiscardPic( currentRoom); + + LoadView( v7_11Customers); + LoadView( v7_11Iranian); + LoadView( vEgoDead); + LoadView( vEgoCollapsing); + + + LoadView( vMagazines); [ watch + LoadView( v7_11Interior); [ out + AddToPic( v7_11Interior, 0, 0, 107, 148, 13, 4); [ for + AddToPic( v7_11Interior, 0, 1, 102, 134, 12, 4); [ discard + AddToPic( v7_11Interior, 0, 2, 97, 118, 11, 4); [ views + AddToPic( v7_11Interior, 0, 3, 62, 95, 11, 4); [ below + AddToPic( v7_11Interior, 0, 4, 61, 103, 12, 4); [ + AddToPic( v7_11Interior, 1, 0, 16, 108, 4, 4); [ + [ + AddToPic( vMagazines, 0, 0, 63, 116, 13, 4); [ + AddToPic( vMagazines, 0, 1, 71, 116, 13, 4); [ + AddToPic( vMagazines, 0, 2, 63, 126, 13, 4); [ + AddToPic( vMagazines, 0, 3, 69, 126, 13, 4); [ + AddToPic( vMagazines, 0, 4, 79, 126, 13, 4); [ + AddToPic( vMagazines, 0, 5, 79, 136, 13, 4); [ + AddToPic( vMagazines, 0, 5, 71, 136, 13, 4); [ + AddToPic( vMagazines, 0, 5, 64, 136, 13, 4); [ + DiscardView( v7_11Interior); [ + DiscardView( vMagazines); [ + + + AnimateObj( aClerk); + SetView( aClerk, v7_11Iranian); + SetLoop( aClerk, L_TALKING); + SetCel( aClerk, 0); + Position( aClerk, 25, 113); + Draw( aClerk); + StopUpdate( aClerk); + + AnimateObj( aCustomer0); + IgnoreBlocks( aCustomer0); + SetView( aCustomer0, v7_11Customers); + SetCel( aCustomer0, 0); + Position( aCustomer0, 52, 117); + StopCycling( aCustomer0); + + AnimateObj( aCustomer1); + IgnoreBlocks( aCustomer1); + SetView( aCustomer1, v7_11Customers); + SetCel( aCustomer1, 1); + Position( aCustomer1, 73, 96); + StopCycling( aCustomer1); + + AnimateObj( aCustomer2); + IgnoreBlocks( aCustomer2); + SetView( aCustomer2, v7_11Customers); + SetCel( aCustomer2, 2); + Position( aCustomer2, 136, 130); + StopCycling( aCustomer2); + + AnimateObj( aCustomer3); + IgnoreBlocks( aCustomer3); + SetView( aCustomer3, v7_11Customers); + SetCel( aCustomer3, 3); + Position( aCustomer3, 108, 95); + StopCycling( aCustomer3); + + AnimateObj( aCustomer4); + IgnoreBlocks( aCustomer4); + SetView( aCustomer4, v7_11Customers); + SetCel( aCustomer4, 4); + Position( aCustomer4, 88, 124); + StopCycling( aCustomer4); + + AnimateObj( aCustomer5); + IgnoreObjs( aCustomer5); + SetView( aCustomer5, v7_11Customers); + SetCel( aCustomer5, 5); + Position( aCustomer5, 87, 109); + StopCycling( aCustomer5); + + Position( ego, 15, 156); + Draw( ego); + + ShowPic( ); + + Return( ); + + } [ end initLOG + + + +Reset( nearCounter); +if (onWater) + { + Set( nearCounter); + Set( nearPerson); + } + +Reset( nearWine); +if (Posn( ego, 50, 112, 81, 116)) + { + Set( nearWine); + } + +Reset( nearMags); +if (Posn( ego, 55, 150, 85, 157)) + { + Set( nearMags); + } + + + +[***** +:handleInput +[***** + +if (!haveInput) {goto noInput;} + +if ((Said( look) || + Said( look, room) || + Said( look, store))) + { + Print( 1); + } + +if ((Said( look, counter) || + Said( look, behind, counter))) + { + Print( 56); + } + +if (Said( look, sign)) + { + Print( 44); + } + +if (Said( look, man)) + { + Print( 45); + Print( 47); + } + +if (Said( look, shelf)) + { + if (nearMags) + { + Print( 2); + } + else + { + if (nearWine) + { + Print( 49); + } + else + { + if (nearCounter) + { + Print( 44); + } + else + { + Print( 6); + } + } + } + } + +if ((Said( take, spray) || + Said( ask, man, spray))) + { + if (!nearCounter) + { + Print( 51); + } + else + { + if (Has( iBreathSpray)) + { + Print( 52); + } + else + { + Print( 53); + Get( iBreathSpray)); + moneyOwed += 3; + sprayCount = 0; + } + } + } + +if ((Said( take, wine) || + Said( take, bottle, wine))) + { + if (!nearWine) + { + Print( 48); + } + else + { + if (Has( iWine)) + { + Print( 55); + } + else + { + if (ObjInRoom( iWine, currentRoom)) + { + currentScore += 1; + } + Get( iWine); + moneyOwed += 1; + Print( 42); + } + } + } + +if (Said( take, magazine)) + { + if (!nearMags) + { + Print( 36); + } + else + { + if (!ObjInRoom( iMagazine, currentRoom)) + { + Print( 38); + } + else + { + Set( OK); + Get( iMagazine); + currentScore += 1; + moneyOwed += 2; + } + } + } + + +if ((Said( pay, wine) || + Said( pay, spray) || + Said( pay, magazine))) + { + if (moneyOwed) + { + Reset( haveMatch); + } + else + { + Print( 4); + } + } + +if ((Said( pay, man) || + Said( give, man, money) || + Said( give, money, man) || + Said( pay) || + Said( pay, wine) || + Said( pay, spray) || + Said( pay, magazine))) + { + if (!nearCounter) + { + Print( 3); + } + else + { + if (!moneyOwed) + { + Print( 39); + --dollars; + } + else + { + if (dollars < moneyOwed) + { + Print( 32); + } + else + { + Print( 40); + Print( 41); + dollars -= moneyOwed; + moneyOwed = 0; + } + } + } + } + +if ((Said( buy, rubber) || + Said( ask, man, rubber, rol) || + Said( ask, man, about, rubber, rol) || + Said( get, rubber, rol) || + Said( anyword, rubber, rol) || + Said( rubber, rol) || + Said( buy, one, rubber))) + { + if (!nearCounter) + { + Set( notCloseEnough); + } + else + { + if (Has( iRubber)) + { + Print( 8); + } + else + { + script = ASKED_FOR_RUBBER; + Set( scriptDone); + } + } + } + + + + +[ Errors; clean up, fix up. + +if ((Said( open, cooler, rol) || + Said( open, door, rol))) + { + Print( 50); + } + +if ((Said( take, booze) || [ Generic liquor. + Said( take, whiskey) || + Said( take, beer))) + { + Print( 43); + } + +if ((Said( get, card) || + Said( get, rope) || + Said( get, pills) || + Said( get, whiskey) || + Said( get, apple) || + Said( get, hammer) || + Said( buy, card) || + Said( buy, rope) || + Said( buy, pills) || + Said( buy, whiskey) || + Said( buy, apple) || + Said( buy, hammer))) + { + Print( 57); + } + +if ((Said( take, rol) || + Said( buy, rol))) [ Clean up for anything else. + { + Print( 7); + } + +if (!Has( iMagazine) && + Said( look, magazine)) + { + if (!nearMags) + { + Print( 36); + } + else + { + Print( 54); + } + } + +if (Said( look, magazine, rack)) + { + if (!nearMags) + { + Set( notCloseEnough); + } + else + { + if (!Has( iMagazine)) + { + Print( 54); + } + else + { + Print( 38); + } + } + } + + +if ((Said( talk, man, rol) || + Said( talk, about, rol))) + { + StartUpdate( aClerk); + talkTimer = 5; + } + + + +[***** +:noInput +[***** + +if (aSecondPassed) + { + --talkTimer; + if (talkTimer == 1) + { + StopUpdate( aClerk); + SetCel( aClerk, 0); + ForceUpdate( aClerk); + + Random( 58, 64, message); + PrintV( message); + Print( 9); + } + } + + +if (hitSpecial && moneyOwed) + { + script = LEFT_WITHOUT_PAYING; + Set( scriptDone); + } + +if (nearCounter && + script == 109) + { + Set( scriptDone); + } + +if (!haveMatch && + script > 100 && + haveInput) + { + Set( scriptDone); + } + +if (scriptDone) + { + Reset( scriptDone); + ++script; + + if (script == 1) [ try to leave w/o paying + { + Set( ignoreSpecial); + PreventInput(); + StopMotion( ego); + Set( programControl); + StartUpdate( aClerk); + SetLoop( aClerk, L_SHOOTING); + SetCel( aClerk, 0); + RepositionTo( aClerk, 23, 113); + CycleTime( aClerk, three); + StartCycling( aClerk); + EndOfLoop( aClerk, scriptDone); + } + + if (script == 2) + { + Set( keepCycling); + SetView( ego, vEgoCollapsing); + SetCel( ego, 0); + RepositionTo( ego, 15, 159); + CycleTime( ego, two); + EndOfLoop( ego, scriptDone); + } + + if (script == 3) + { + Reset( keepCycling); + SetView( ego, vEgoDead); + SetCel( ego, 0); + RepositionTo( ego, 12, 166); + if (egoX > 2) + { + egoX -= 3; + } + if (egoY < 160) + { + egoY += 7; + } + RepositionToV( ego, egoX, egoY); + + Print( 19); + scriptTimer = 4; + } + + if (script == 4) + { + CycleTime( ego, two); + Set( keepCycling); + EndOfLoop( ego, scriptDone); + } + + if (script == 5) + { + newRoom = rmWorkshop; + } + + + + + if (script == 101) [ Buying a rubber. + { + Print( 18); + Print( 10); + Print( 11); + Print( 12); [ Smooth or ribbed? + + SetString( 1, 34); [ Blank 'em out. + SetString( 2, 34); + SetString( 3, 34); + SetString( 4, 34); + SetString( 5, 34); + + scriptTimer = 9; + } + + if (script == 102) + { + if (Said( smooth)) + { + SetString( 1, 21); + Print( 13); + } + + if (Said( ribbed)) + { + SetString( 1, 22); + Print( 13); + } + + if (!haveMatch) + { + --script; + Set( haveMatch); + if (!typing) + { + Print( 12); + } + } + scriptTimer = 9; + } + + if (script == 103) + { + if (Said( colored)) + { + SetString( 2, 23); + Print( 14); + } + + if (Said( plain)) + { + SetString( 2, 24); + Print( 14); + } + + if (!haveMatch) + { + --script; + Set( haveMatch); + if (!typing) + { + Print( 13); + } + } + scriptTimer = 9; + } + + if (script == 104) + { + if (Said( lubricated)) + { + SetString( 3, 25); + Print( 15); + } + + if (Said( rough)) + { + SetString( 3, 26); + Print( 15); + } + + if (!haveMatch) + { + --script; + Set( haveMatch); + if (!typing) + { + Print( 14); + } + } + scriptTimer = 9; + } + + if (script == 105) + { + if (Said( striped)) + { + SetString( 4, 27); + Print( 16); + } + + if (Said( plaid)) + { + SetString( 4, 28); + Print( 16); + } + + if (!haveMatch) + { + --script; + Set( haveMatch); + if (!typing) + { + Print( 15); + } + } + scriptTimer = 9; + } + + if (script == 106) + { + if (Said( peppermint)) + { + SetString( 5, 29); + Print( 20); + } + + if (Said( spearmint)) + { + SetString( 5, 30); + Print( 20); + } + + scriptTimer = 3; + if (!haveMatch) + { + Set( haveMatch); + --script; + Set( haveMatch); + if (!typing) + { + Print( 16); + } + scriptTimer = 9; + } + } + + if (script == 107) + { + PreventInput(): + Print( 17); + StopUpdate( ego); + + Draw( aCustomer0); + Draw( aCustomer1); + Draw( aCustomer2); + Draw( aCustomer3); + Draw( aCustomer4); + Draw( aCustomer5); + + scriptTimer = 5; + } + + if (script == 108) + { + PrintAt( 5, 5, 10, 25); + [msg #, row, col, width + Erase( aCustomer0); + Erase( aCustomer1); + Erase( aCustomer2); + Erase( aCustomer3); + Erase( aCustomer4); + Erase( aCustomer5); + + StartUpdate( ego); + scriptTimer = 5; + } + + if (script == 109) + { + if (!nearCounter) + { + Print( 46); + } + else + { + script = 110; + } + } + + if (script == 110) + { + if (ObjInRoom( iRubber, currentRoom))[How cute. It's his first time! + { + currentScore += 4; + } + + moneyOwed += 5; + Get( iRubber); + Set( boughtRubber); + Print( 31); + AcceptInput(); + + if (dollars < moneyOwed) + { + Print( 32); + } + else + { + Print( 33); + dollars -= moneyOwed; + moneyOwed = 0; + } + } + } + + +[***** +:exit [ test for leaving the room +[***** + + +if (edgeEgoHit == BOTTOM) + { + AcceptInput(); + if (boughtRubber) + { + Print( 35); + } + newRoom = rmOutside7_11; + } diff --git a/RM21.MSG b/RM21.MSG new file mode 100644 index 0000000..6779442 --- /dev/null +++ b/RM21.MSG @@ -0,0 +1,222 @@ +[messages for room 21 -- rmInside7_11 +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"You are in a 24-hour convenience store. + There is a magazine rack near the front door, with a sign reading + \"This no library -- no leeding.\" + Except for the clerk standing behind the counter, + the store appears to be deserted. A small sign graces the counter." + +%message 2 +"There are many magazines on the rack, + but your eyes immediately go to the ones with the naked girls on the cover." + +%message 3 +"Move to the counter when you are ready to pay for your selections." + +%message 4 +"Shouldn't you TAKE your purchases before paying for them?" + +%message 5 +"\n\"WHAT A PERVERT!!!\"\n" + +%message 6 +"The shelves are filled with all the necessities of life: + \"Dwinkies,\" \"Wallo-Wars,\" \"Loritos,\" various colas, + cheap wine, and coffee. + You don't see anything you really need in this part of the store." + +%message 7 +"Nah. You'd just be wasting your money." + +%message 8 +"\"You haven't used your old one yet!\"" + +%message 9 +"Apparently the clerk is new to this country. + He only knows a few English words." + +%message 10 +"\"Sure, we got lubbers!\"" + +%message 11 +"(Obviously you've hit his area of expertise!)" + +%message 12 +"\"What kind lubber you want? Smooth or libbed?\"" + +%message 13 +"\"Colored or plain?\"" + +%message 14 +"\"Lubricated or rough-cut?\"" + +%message 15 +"\"Striped or plaid?\"" + +%message 16 +"\"Peppermint or spearmint flavor?\"" + +%message 17 +"\"Hey, everybody!! + This weird-o just bought a %s5-flavored, %s4, %s3, %s2, %s1 lubber!!!\"" + +%message 18 +"After looking around to make certain you're alone, + you quietly ask the clerk if he has any available behind the counter." + +%message 19 +"The clerk does not take kindly to your shoplifting. + His shotgun makes a permanent impression on you. + (And, IN you!)" + +%message 20 +"\"Oakie, doakie Meester!\"" + +%message 21 +"smooth" + +%message 22 +"libbed" + +%message 23 +"colored" + +%message 24 +"plain" + +%message 25 +"lubricated" + +%message 26 +"rough-cut" + +%message 27 +"striped" + +%message 28 +"plaid" + +%message 29 +"peppermint" + +%message 30 +"spearmint" + +%message 31 +"He hands you the package, saying + \"All together, that will be $%v200.00, prease.\"" + +%message 32 +"Unfortunately, you only have $%v90.00. + (Perhaps you can sneak out without paying.)" + +%message 33 +"You give him the money, with a pleasant \"Thanks a lot, big mouth!\"" + +%message 34 [ MUST remain 1 single space!! +" " + +%message 35 +"\"Hey, Meester!!\" yells the clerk. + \"I hope you enjoy your %s5-flavored, %s4, %s3, %s2, %s1 lubber!!!\"" + +%message 36 +"The magazines are on the rack nearest the door." + +%message 37 +"" + +%message 38 +"Nah. That's enough reading material for one game." + +%message 39 +"\"Ooooooh, Meester! + Thank you for free money. + What wonderful country thees is!!\"" + +%message 40 +"\"Oakie, doakie Meester! That'll be $%v200.00.\"" + +%message 41 +"\"Have a nice day.\"" + +%message 42 +"You grab a bottle of cheap wine, + and wonder how they can make a profit selling this stuff for only a + dollar a gallon!" + +%message 43 +"Not here. This place is too expensive!" + +%message 44 +"A small, discreetly hand-lettered sign says:\n\n +\"Prophylactics For Sale\n + Ask Clerk\"" + +%message 45 +"\"Nice turban, Leroy.\"" + +%message 46 +"\"Hey, meester! Come over here, and get your lubber!!\"" + +%message 47 +"He smiles back, pretending to understand." + +%message 48 +"The wine is on the left end of the back wall." + +%message 49 +"That extra large jug of wine looks like a bargain." + +%message 50 +"There's nothing of interest inside." + +%message 51 +"That is located behind the counter. Ask the clerk." + +%message 52 +"You still have some." + +%message 53 +"\"Here, Meester,\" he says. \"Thees smells like chur brand!\"" + +%message 54 +"Hmm. That one looks particularly interesting." + +%message 55 +"Whew. One of those bottles is about all a guy needs, Larry." + +%message 56 +"The wall behind the clerk is blank and + the counter is completely bare, except for a small sign. + (You wonder where he keeps the slim jims.)" + +%message 57 +"\"Sorry, no gottee!\"" + +%message 58 +"\"Fposwqa feinnzx. Ofewass gewyiu qfbva.\"" + +%message 59 +"\"Poolskd asd woefpo lkjfq feps of foeps.\"" + +%message 60 +"\"Owf wepa vpifk qpqwf? Qqwpp apifrp qp foiw!\"" + +%message 61 +"\"Tqp nbq bqopni ba ajpqoi fqyq. HA HA HA!!\"" + +%message 62 +"\"Pqwwo qfp qwfnbv qozdvie. Ppqow poqw fvzxc ioplhjk.\"" + +%message 63 +"\"Qufe weax zxo zvp zvqiw vpozcvajpbnv wf, apoz. Wfipa?\"" + +%message 64 +"\"Zxxz pofqsoo afpoistr zxcv.\"" + diff --git a/RM22.CG b/RM22.CG new file mode 100644 index 0000000..18c9a35 --- /dev/null +++ b/RM22.CG @@ -0,0 +1,959 @@ +[logics for room 22 -- rmOutside7_11 +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm22.msg" +%include "gamedefs.h" + + + +%define DONE 255 + +%define wrongSideOfPole lf0 +%define nearPole lf1 +%define nearBum lf2 +%define nearPhone lf3 +%define bumDone lf4 +%define hungUpPhone lf5 + +%define bumTimer lv1 +%define bumScript lv3 + +%object aBum 1 + + + +if (initLog) + { + if (watchHours > 4 && [ Anything after 5 am. + watchHours < 10) + { + NewRoom( rmSunrise); + } + + SetHorizon( 118); + + LoadLogics( lgcStreet); + + LoadSound( mRm22Drunk); + + + [ + [ BE CAREFUL BELOW: + LoadView( v7_11Exterior); [ view.130 + LoadPic( currentRoom); [ + DrawPic( currentRoom); [ + DiscardPic( currentRoom); [ + AddToPic( v7_11Exterior, 0, 0, 44, 54, 12, 4);[ + [view, loop, cel, x, y, obj priority, box priority + DiscardView( v7_11Exterior); [ + [ + + + if (currentStatus != STIFFED_CABBIE && + !Has( iPocketKnife)) + { + LoadView( v7_11Bum); [ view.93 + + AnimateObj( aBum); + SetView( aBum, v7_11Bum); + Position( aBum, 0, 135); + Random( 5, 15, bumTimer); + CycleTime( aBum, three); + StepTime( aBum, three); + } + + if (answeredSurvey) + { + scriptTimer = 5; + script = 210; + } + + if (previousRoom == rmInside7_11) + { + egoX = 36; + egoY = 115; + SetLoop( ego, FACING_FRONT); + } + else + { + if (previousRoom == rmDarkAlley) + { + egoX = 0; + egoY = 114; + } + else + { + if (previousRoom != rmOutsideDisco) + { + egoX = 77; + egoY = 146; + } + } + } + PositionV( ego, egoX, egoY); + IgnoreBlocks( ego); + Draw( ego); + + Reset( noFawnInDisco); [ She'll be back now! + Call( lgcStreet); + + ShowPic( ); + + Return( ); + + } [ end initLOG + + + +Reset( nearPhone); +if (Posn( ego, 52, 126, 69, 150)) + { + Set( nearPhone); + } + +Reset( nearPole); +if (Posn( ego, 50, 125, 77, 142)) + { + Set( nearPole); + } + +Reset( wrongSideOfPole); +if (Posn( ego, 50, 143, 77, 167)) + { + Set( wrongSideOfPole); + } + +Reset( nearBum); +if (bumScript) + { + Distance( aBum, ego, work); + if (work < 25) + { + Set( nearBum); + Set( nearPerson); + } + } + + +[***** +:handleInput +[***** + +if (!haveInput) {goto noInput;} + +if ((Said( look) || + Said( look, room))) + { + Print( 1); + } + +if (Said( look, store)) + { + Print( 34); + } + +if (Said( open, door)) + { + if (nearTaxi) + { + Reset( haveMatch); + } + else + { + Print( 67); + } + } + + + +[ Telephone department. +if ((Said( use, phone) || + Said( make, phone, call) || + Said( dial, phone))) + { + if (!nearPhone) + { + Set( notCloseEnough); + } + else + { + if (handsOff) + { + Print( 73); + } + else + { + script = 0; + Set( scriptDone); + } + } + } + +if ((Said( look, phone) || + Said( look, side, phone) || + Said( look, phone, book))) + { + if (!nearPhone) + { + Set( notCloseEnough); + } + else + { + Print( 22); + if (!readSideOfPhone) + { + Set( readSideOfPhone); + currentScore += 1; + } + } + } + +if (Said( look, pole)) + { + if (nearPole) + { + Print( 22); + } + else + { + if (wrongSideOfPole) + { + Print( 33); + } + else + { + Reset( haveMatch); [ So dynamic says "Taxi stand" + } + } + } + +if ((Said( answer, phone) || + Said( answer, phone, call) || + Said( answer, phone) || + Said( answer) || + Said( get, phone))) + { + if (!nearPhone) + { + Set( notCloseEnough); + } + else + { + if (handsOff) + { + Print( 73); + } + else + { + if (script < 210) + { + Print( 50); + } + else + { + Print( 51); + script = 215; + Set( scriptDone); + } + } + } + } + + + +[ Here's the bum stuff. (Not Bum Stuff!) + +if (bumScript) + { + if (Said( look, man)) + { + if (!nearBum) + { + Set( notCloseEnough); + } + else + { + Print( 32); + } + } + + if ((Said( talk, man) || + Said( talk))) + { + if (!nearBum) + { + Set( notCloseEnough); + } + else + { + Print( 23); + } + } + + if (Said( no, rol)) + { + Print( 28); + Set( bumDone); + bumScript = 4; + bumTimer = 0; + } + + if ((Said( give, wine, man) || + Said( give, wine) || + Said( give, man, wine))) + { + if (!Has( iWine)) + { + Set( dontHaveIt); + } + else + { + if (!nearBum) + { + Set( notCloseEnough); + } + else + { + Drop( iWine); + if (!ObjInRoom( iPocketKnife, currentRoom)) + { + Print( 35); + } + else + { + Get( iPocketKnife); + currentScore += 5; + + Print( 24); + Print( 25); + Print( 26); + Set( bumDone); + bumScript = 4; + bumTimer = 0; + } + } + } + } + + if ((Said( give, whiskey, man) || + Said( give, whiskey) || + Said( give, man, whiskey))) + { + if (!Has( iWhiskey)) + { + Set( dontHaveIt); + } + else + { + if (!nearBum) + { + Set( notCloseEnough); + } + else + { + Print( 2); + Drop( iWhiskey); + Set( bumDone); + bumScript = 4; + bumTimer = 0; + } + } + } + + if ((Said( give, money, man) || + Said( give, money) || + Said( pay, man) || + Said( pay, man, money) || + Said( give, man, money))) + { + if (!nearBum) + { + Set( notCloseEnough); + } + else + { + dollars -= 1; + Print( 31); + Set( bumDone); + bumScript = 4; + bumTimer = 0; + } + } + + if ((Said( smell, man) || + Said( smell))) + { + Print( 29); + } + + if (Said( search, man)) + { + Print( 49); + } + + if ((Said( give, man, bottle) || + Said( give, bottle, man))) + { + Print( 41); + } + } + + + +[ Generic problems, solved. + +if (Said( dial, rol)) + { + Print( 37); + } + +if (Said( answer, rol)) + { + Print( 39); + } + +if (Said( anyword, phone, book)) + { + Print( 38); + } + +if ((Said( look, window) || + Said( look$in, window))) + { + Print( 66); + } + + +[***** +:noInput +[***** + +if (aSecondPassed) + { + if (scriptTimer == 1) + { + if ((script == 101 || + script == 102)) + { + script = 110; [ Waited too long. Hang up. + } + } + + --bumTimer; + if (bumTimer == 1) + { + Set( bumDone); + } + } + +if (bumScript > 4 && edgeObjHit && objHitEdge == aBum) + { + Set( bumDone); + } + +if (bumDone) + { + Reset( bumDone); + ++bumScript; + + if (bumScript == 1) + { + Draw( aBum); + Sound( mRm22Drunk, done); + FollowEgo( aBum, 8, bumDone); + } + + if (bumScript == 2) + { + StopMotion( aBum); + StopCycling( aBum); + Print( 27); + bumTimer = 9; + } + + if (bumScript == 3) [ timer elapsed; ask for wine + { + Print( 48); + bumTimer = 9; + } + + if (bumScript == 4) [ timer elapsed; bum splits! + { + Print( 28); + bumScript = 5; + } + + if (bumScript == 5) [ player caused him to go. + { + StartCycling( aBum); + Wander( aBum); + } + + if (bumScript == 6) + { + Erase( aBum); + bumScript = 0; + } + } + + +if (scriptDone) + { + Reset( scriptDone); + ++script; + + if (script == 1) [ Accept a phone number. + { + Set( handsOff); + PreventInput(); + StopMotion( ego); + Set( programControl); + if (monitorType != MONO) + { + ClearLines( 23, 23, BG_COLOR); + } + SetString( 1, 52); [ " " default blank string; + GetString( 1, 30, 23, 0, 14); + [string#, prompt, row, col, max length + + scriptTimer = 3; [ kill some time before deciding + } + + + + [ Now, decide if he entered one of our many valid numbers. + + if (script == 2) [ Accept a phone number. + { + SetString( 2, 56); [ Liquor store. + SetString( 3, 57); + if ((CompareStrings( 1, 2) || + CompareStrings( 1, 3))) + { + script = 100; + } + + SetString( 2, 58); [ Sex survey. + SetString( 3, 59); + if ((CompareStrings( 1, 2) || + CompareStrings( 1, 3))) + { + if (answeredSurvey) + { + script = 110; + } + else + { + script = 200; + } + } + + SetString( 2, 60); [ Sierra. + SetString( 3, 61); + SetString( 4, 62); + SetString( 5, 63); + SetString( 11, 64); + SetString( 12, 65); + if ((CompareStrings( 1, 2) || + CompareStrings( 1, 3) || + CompareStrings( 1, 4) || + CompareStrings( 1, 5) || + CompareStrings( 1, 11) || + CompareStrings( 1, 12))) + { + script = 150; + } + if (monitorType != MONO) + { + ClearLines( 23, 23, BG_COLOR); + } + scriptTimer = 5; + Set( soundDone); + } + + + if (script == 3) [ Unsuccessful dialing experience. + { + Print( 42); + Print( 43); + script = DONE; + } + + + + if (script == 101) [ "Hello. Ajax Liquor Store" + { + if (!fawnInRoom) + { + Print( 36); + script = DONE; + } + else + { + Print( 44); + Print( 45); + + SetString( 11, 52); + if (monitorType != MONO) + { + ClearLines( 23, 23, BG_COLOR); + GetString( 11, 53, 23, 0, 38); + [ string#, prompt, row, col, max length + } + else + { + GetString( 11, 52, 23, 0, 28); + } + + PreventInput(); + AcceptInput(); + Parse( 11); + + if ((Said( wine) || + Said( order, wine) || + Said( deliver, wine))) + { + ++script; + } + else + { + Set( haveMatch); + Print( 54); [ screwed up. + script = DONE; + } + } + } + + + if (script == 102) + { + Print( 46); + [ string#, prompt, row, col, max length + SetString( 11, 52); + if (monitorType != MONO) + { + ClearLines( 23, 23, BG_COLOR); + GetString( 11, 53, 23, 0, 38); + } + else + { + GetString( 11, 52, 23, 0, 28); + } + + PreventInput(); + AcceptInput(); + Parse( 11); + + if ((Said( anyword, honeymoon$suite) || + Said( anyword, anyword, honeymoon$suite) || + Said( honeymoon$suite, rol))) + { + ++script; + } + else + { + Set( haveMatch); + Print( 55); [ screwed up. + script = DONE; + } + } + + + if (script == 103) + { + Print( 47); + Set( orderedWine); + if (!orderedWineFirstTime) + { + Set( orderedWineFirstTime); + currentScore += 5; + } + + script = DONE; + } + + + if (script == 111) [ He dialed survey twice! + { + Print( 36); + script = DONE; + } + + + if (script == 151) [ He dialed Sierra. + { + Print( 68); + Print( 69); + Print( 70); + Print( 71); + Print( 72); + if (!dialedSierra) + { + Set( dialedSierra); + currentScore += 5; + } + + script = DONE; + } + + + if (script == 201) [ Take the sex survey. + { + Print( 3); + SetString( 6, 52); [ Blank 'em out. + SetString( 7, 52); + SetString( 8, 52); + SetString( 9, 52); + SetString( 10, 52); + SetString( 11, 74); [ a NULL string. + + Print( 4); + if (monitorType != MONO) + { + ClearLines( 23, 23, BG_COLOR); + GetString( 6, 53, 23, 0, 38); + ClearLines( 23, 23, BG_COLOR); + } + else + { + GetString( 6, 52, 23, 0, 28); + } + if (CompareStrings( 11, 6)) + { + Set( hungUpPhone); + goto surveyDone; + } + + + Print( 5); + if (monitorType != MONO) + { + ClearLines( 23, 23, BG_COLOR); + GetString( 7, 53, 23, 0, 38); + ClearLines( 23, 23, BG_COLOR); + } + else + { + GetString( 7, 52, 23, 0, 28); + } + if (CompareStrings( 11, 7)) + { + Set( hungUpPhone); + goto surveyDone; + } + + + Print( 6); + if (monitorType != MONO) + { + ClearLines( 23, 23, BG_COLOR); + GetString( 8, 53, 23, 0, 38); + ClearLines( 23, 23, BG_COLOR); + } + else + { + GetString( 8, 52, 23, 0, 28); + } + if (CompareStrings( 11, 8)) + { + Set( hungUpPhone); + goto surveyDone; + } + + + Print( 7); + if (monitorType != MONO) + { + ClearLines( 23, 23, BG_COLOR); + GetString( 9, 53, 23, 0, 38); + ClearLines( 23, 23, BG_COLOR); + } + else + { + GetString( 9, 52, 23, 0, 28); + } + if (CompareStrings( 11, 9)) + { + Set( hungUpPhone); + goto surveyDone; + } + + + Print( 8); + if (monitorType != MONO) + { + ClearLines( 23, 23, BG_COLOR); + GetString( 10, 53, 23, 0, 38); + ClearLines( 23, 23, BG_COLOR); + } + else + { + GetString( 10, 52, 23, 0, 28); + } + if (CompareStrings( 11, 10)) + { + Set( hungUpPhone); + goto surveyDone; + } + + + + :surveyDone; + if (hungUpPhone) + { + Reset( hungUpPhone); + Print( 75); + } + else + { + Print( 9); + Set( answeredSurvey); + if (!answeredSurveyFirstTime) + { + Set( answeredSurveyFirstTime); + currentScore += 2; + } + } + + Print( 10); + Print( 11); + script = DONE; + } + + + + if (script == 211) [ He's back in the room. Ring phone + { + scriptTimer = 5; + if (typing) + { + --script; + } + else + { + Print( 13); + } + } + + if (script == 212) + { + scriptTimer = 5; + if (typing) + { + --script; + } + else + { + Print( 14); + } + } + + if (script == 213) + { + scriptTimer = 5; + if (typing) + { + --script; + } + else + { + Print( 15); + } + } + + if (script == 214) + { + scriptTimer = 5; + if (typing) + { + --script; + } + else + { + Print( 16); + } + } + + if (script == 215) + { + scriptTimer = 5; + if (typing) + { + --script; + } + else + { + script = 210; [ keep repeating + Print( 17); + } + } + + if (script == 216) + { + Reset( answeredSurvey); + if (!heardSurveyFirstTime) + { + Set( heardSurveyFirstTime); + currentScore += 5; + } + + Print( 18); + Print( 19); + Print( 20); + Print( 21); + } + + + + if (script == DONE) + { + script = 0; + Reset( handsOff); + if (monitorType != MONO) + { + ClearLines( 23, 23, BG_COLOR); + } + StartMotion( ego); + Reset( programControl); + PreventInput(); + AcceptInput(); + Reset( soundDone); + } + } + + + + +[***** +:exit [ test for leaving the room +[***** + +Call( lgcStreet); + +if (Said( call, operator)) + { + Print( 40); + } + +if ((Said( make, call) || + Said( use, phone) || + Said( make, phone, call) || + Said( call, anyword))) [ Didn't call a cab! + { + Print( 37); + } + +if (edgeEgoHit == RIGHT) {newRoom = rmOutsideDisco;} +if (edgeEgoHit == LEFT) {newRoom = rmDarkAlley;} +if (edgeEgoHit == TOP) + { + if (egoX > 27) + { + newRoom = rmInside7_11; + } + else + { + newRoom = rmDarkAlley; + } + } diff --git a/RM22.MSG b/RM22.MSG new file mode 100644 index 0000000..72edddb --- /dev/null +++ b/RM22.MSG @@ -0,0 +1,261 @@ +[messages for room 22 -- rmOutside7_11 +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"You are outside an all-night convenience store. + There is a telephone on the pole. + The portion of the telephone book that wasn't illegible from + being water-soaked has been torn out." + +%message 2 +"\"Slurp. Thanks, I needed that! See ya 'round!!\"" + +%message 3 +"\"Hello, you have reached the National Hot Line Sex Survey. + Please answer the following questions. + There may be a wonderful prize waiting for you!!\"" + +%message 4 +"\"What is the name of your favorite sex partner?\"" + +%message 5 +"\"What's the best part of your partner's anatomy?\"" + +%message 6 +"\"What do the two of you like to do together?\"" + +%message 7 +"\"What is the best part of your body?\"" + +%message 8 +"\"And, finally, name your partner's favorite object.\"" + +%message 9 +"\"Thanks for participating. Your prize is...\"" + +%message 10 +" \n +\n +\n" + +%message 11 +"Hum. Looks like they hung up on you. + Oh, well. It was probably a bummer prize anyway!" + +%message 12 +"Where?!" + +%message 13 +"\"Ring.\"" + +%message 14 +"\"Ring ring.\"" + +%message 15 +"\"Ring ring ring.\"" + +%message 16 +"\"Ring ring ring ring.\"" + +%message 17 +"How long are we going to do this before you type in \"answer phone?!\"" + +%message 18 +"You pick up the telephone, and hear a woman's voice." + +%message 19 +"\"Hello, Larry! This is %s6. Why don't you forget this silly game, + and come over to my place so we can %s8?\"" + +%message 20 +"\"After all, your %s9 has always turned me on! So bring along a %s10 and + come play with my %s7! Bye, now.\"" + +%message 21 +"You hang up the telephone and wipe the sweat from your hands!" + +%message 22 +"There are some numbers scribbled on the side of the telephone. + The only thing legible (and printable) is: \"555-6969.\"" + +%message 23 +"\"Howsha 'bout a drink, Shonney?\"" + +%message 24 +"\"Why, thanshk, Shonney!\" (Glug, glug.)" + +%message 25 +"\"I ain't got no remote control, but, sssshay, I'll tell ya what: + here'ssh my trussshty ol' pocket knife. + Ya never know! + There are sssshome kinky girlssh in this town. + Sssshexy hunkssh like ussh might have to defend oursshelves sometime!\"" + +%message 26 +"With that, he \"sssshtumbles\" off into the darkness." + +%message 27 +"\"Got any sshhpare change, buddy?\"" + +%message 28 +"\"Al'right. Be that way!\"" + +%message 29 +"Cheezzzz! He makes that dog smell refreshing!" + +%message 30 +"Please enter number: " + +%message 31 +"You fish a dollar out of your wallet, and hand it to the bum. + \"Gossshhh thanssskks, buddy,\" he says sarcastically. + \"With all thisssh, maybe I can finally invessst in sssome mutual fundsssh!\"" + +%message 32 +"He looks like a man that could (ab)use a drink." + +%message 33 +"There's nothing to see on this side of the pole." + +%message 34 +"The store is open all night for your convenience. + That's why they call it an \"all-night convenience store,\" Larry!" + +%message 35 +"\"Why, thanshk, Shonney! Glug, glug.\"" + +%message 36 +"All you get is a busy signal." + +%message 37 +"Try dialing the telephone." + +%message 38 +"What's left is illegible." + +%message 39 +"Try answering the telephone." + +%message 40 +"It's not that easy; you'll have to find the correct telephone + number yourself!" + +%message 41 +"Give him the bottle of what?" + +%message 42 +"\"I'm sorry, but you have reached a number that is disconnected, or + no longer in service. Please hang up and dial again.\"" + +%message 43 +"\"This is a computer.\"" + +%message 44 +"\"Hello. Ajax Liquor Store. We deliver!\"" + +%message 45 +"\"So, what do you want to buy?\"" + +%message 46 +"\"Fine. Where do you want it delivered?\"" + +%message 47 +"\"Ok. We'll get it right there. Consider it done, and thanks for + calling!\"" + +%message 48 +"\"Well, ok. Have ya got any spare wine, then?\"" + +%message 49 +"You find a strong aroma, which you allow him to keep!" + +%message 50 +"It's not ringing." + +%message 51 +"\"Hello.\"" + +%message 52 [ This must REMAIN a single blank! +" " + +%message 53 [ The phony prompt. +"]" + +%message 54 +"\"Sorry, by law all we can deliver is wine. Ok, talk to ya again + sometime. Bye!\"" + +%message 55 +"\"Ok, I'll take it there, but I doubt if you ever see it! Bye!\"" + +%message 56 +"555-8039" + +%message 57 +"5558039" + +%message 58 +"555-6969" + +%message 59 +"5556969" + +%message 60 +"(209) 683-6858" + +%message 61 +"209 683-6858" + +%message 62 +"209 683-6858" + +%message 63 +"2096836858" + +%message 64 +"209683-6858" + +%message 65 +"209 6836858" + +%message 66 +"You could see better if you'd walk inside." + +%message 67 +"It IS open." + +%message 68 +"\"Hello,\" a pleasant voice responds. \"Sierra On-Line.\"" + +%message 69 +"\"We're not open right now, but if you'd call during business hours + (and stop using this pretend telephone), + we would be happy to sell you a 'Leisure Suit Larry Hint Book.'\"" + +%message 70 +"\"Written by Al Lowe, the author of Leisure Suit Larry, + you know it at least tries to be humorous. + The answers are invisible, until you mark them with the special pen provided, + so you never have to worry about inadvertently learning something + you didn't want to know.\"" + +%message 71 +"\"Thank you for calling Sierra On-Line, and for your purchase of + 'Leisure Suit Larry in the Land of the Lounge Lizards.' Good bye.\"" + +%message 72 +"Such blatant commercialism turns you on. + You make a mental note to purchase one of those great, + Al Lowe Hint Books!" + +%message 73 +"Now?!" + +%message 74 "" [MUST REMAIN A NULL STRING!! + +%message 75 +"\"I guess that means you don't want to take the survey!\"" + diff --git a/RM23.CG b/RM23.CG new file mode 100644 index 0000000..d59a285 --- /dev/null +++ b/RM23.CG @@ -0,0 +1,357 @@ +[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;} diff --git a/RM23.MSG b/RM23.MSG new file mode 100644 index 0000000..a80bbde --- /dev/null +++ b/RM23.MSG @@ -0,0 +1,89 @@ +[messages for room 23 -- rmOutsideDisco +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"You are outside a flashy disco. The bouncer does not look happy." + +%message 2 +"\"Either show your membership card, or get lost, Scum-Breath!\"" + +%message 3 +"\"Good evening, Sir. I'm so sorry I didn't recognize you sooner. + Please, come right in!!\"" + +%message 4 +"You whip out your \"borrowed\" membership card, and lay it on him." + +%message 5 +"It seems he's uninterested in idle chit-chat, Larry." + +%message 6 +"You don't have a membership card!" + +%message 7 +"\"We hope you enjoyed your visit tonight, Sir!\"" + +%message 8 +"\"Oh, there's no need to do that, Sir!\" says the bouncer." + +%message 9 +"\"HALT!!\n\n +I'm sorry, Sir,\" says the bouncer, \"but this is a private club.\"" + +%message 10 +"He seems glad to see you leave." + +%message 11 +"He's physically well-developed, + but you bet he's not as wise in the ways of women as you are." + +%message 12 +"Larry! How could you!" + +%message 13 +"You know he'd beat you to a pulp!" + +%message 14 +"Gazing up at the storefronts before you, a feeling comes over you. + Surely every one of those windows has a deep, + wonderful story hidden behind it. + There are millions of stories here in Lost Wages, + but you'll never know any of them. + Such is the fate of those who are morally-weak, + but financially-strong." + +%message 15 +"(What the hell was that all about????)" + +%message 16 +"Gaudy, aren't they?" + +%message 17 +"He's far too strong for you, Larry." + +%message 18 +"" + +%message 19 +"All the stores are locked. But, that disco sure looks inviting." + +%message 20 +"\"You can only get a card if you already have a card,\" he laughs, + \"but then, of course, you wouldn't NEED a card.\"" + +%message 21 +"\"So, beat it, Chump!\"" + +%message 22 +"\"How's about a little green sliding across your palm?\" + you ask the bouncer." + +%message 23 +"\"How's about your rear end sliding across the pavement?\" he replies." + +%message 24 +"Why does the dog use you, and not it?" + diff --git a/RM24.CG b/RM24.CG new file mode 100644 index 0000000..3099a6d --- /dev/null +++ b/RM24.CG @@ -0,0 +1,898 @@ +[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; + } + } diff --git a/RM24.MSG b/RM24.MSG new file mode 100644 index 0000000..030f033 --- /dev/null +++ b/RM24.MSG @@ -0,0 +1,110 @@ +[messages for room 24 -- rmInsideDisco +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"The disco is filled with remarkably similar guys, all looking for girls." + +%message 2 +"Don't mess around, Larry. Get out there and dance with her!" + +%message 5 +"Perhaps they're waiting for Fawn to return." + +%message 6 +"Not now, you're busy." + + +%message 8 +"\"Come on, Larry. What are you waiting for? + I'm hot to get it on with you!\"" + + +%message 19 +"(What are you into this time, Larry?)" + + +%message 21 +"\"Either give me some money, or I'll leave without you.\"" + +%message 22 +"\"That's it! See ya later, chump!\"" + + +%message 29 +"You smile at the girl and say, \"May I join you?\"" + +%message 30 +"And, of course she replies, \"Why, am I coming apart?\"" + +%message 31 +"(Drum fill)" + + +%message 38 +"You are sitting." + +%message 39 +"You are standing." + +%message 40 +"The dance floor is lit from below with brightly colored lights. + It is presently unused." + +%message 41 +"Evidently every guy here has been turned down by the only girl in the place. + Her beauty has them frozen in their tracks." + +%message 42 +"There isn't one. This place is run by computer. + (Besides, at this time of night DJ should be home with Chris.)" + + +%message 44 +"Perhaps you should sit with her first." + +%message 45 +"She might listen to you, if you can establish eye contact." + + +%message 52 +"\"Oooh, you're so sweet. I just love " + +%message 53 +"Sitting here brings back fond memories of those minutes you spent with + Fawn." + +%message 54 +"Your heart just isn't in it." + +%message 55 +"You miss her, don't you?" + +%message 56 +"Gosh, Larry. Maybe you should have loaned her some money!" + +%message 57 +"Funny, this is a dry club." + + +%message 59 +"\"Not again. That trip through the ceiling gave me a headache!\"" + +%message 60 +"You're being a little too direct again, Larry." + +%message 61 +"There's a gorgeous blond sitting at the table, and she's all alone!" + +%message 62 +"You can't sit there; she would think you rude to take her chair." + +%message 63 +"They seem to be staring at something they all want." + + +%message 66 +"You can't sit there; she would think you rude to sit on top of her." + diff --git a/RM25.CG b/RM25.CG new file mode 100644 index 0000000..afc6f5d --- /dev/null +++ b/RM25.CG @@ -0,0 +1,672 @@ +[logics for room 25 -- rmFawnCloseup +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm25.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_MOUTH 0 + #define C_NORMAL 0 [ mouth cells + #define C_SMILE 1 + #define C_FROWN 2 + #define DONE 255 +#define L_EYES 1 + +#define TALK_TIME 4 + + +%define cutToLongShot lf0 +%define nearFawn lf2 +%define eyesCycling lf6 +%define fawnLeaving lf11 +%define turnHeadsToFloor lf13 +%define turnHeadsToTable lf14 + + +%define eyeCycles lv2 +%define breathLineTimer lv3 +%define lookCount lv4 +%define mouthTimer lv6 +%define mouth lv7 +%define fawnScript lv8 + + +%object aMouth 3 +%object aEyes 4 + + + +if (initLog) + { + SetHorizon( 1); + + LoadPic( currentRoom); + DrawPic( currentRoom); + DiscardPic( currentRoom); + + LoadView( vFawnFace); + + Set( handsOff); + + AnimateObj( aMouth); + SetView( aMouth, vFawnFace); + SetLoop( aMouth, L_MOUTH); + SetCel( aMouth, 0); + SetPriority( aMouth, 4); + Position( aMouth, 56, 93); + StopCycling( aMouth); + + AnimateObj( aEyes); + SetView( aEyes, vFawnFace); + SetLoop( aEyes, L_EYES); + SetCel( aEyes, 0); + SetPriority( aEyes, 5); + Position( aEyes, 62, 49); + StopCycling( aEyes); + CycleTime( aEyes, three); + + if (!mouthOK) + { + SetCel( aMouth, C_FROWN); + breathLineTimer = TALK_TIME; + } + else + { + SetCel( aMouth, C_NORMAL); + Draw( aEyes); + Random( 6, 19, eyeCycles); + Reset( eyesCycling); + } + Draw( aMouth); + mouth = DONE; + StopUpdate( aMouth); + + ShowPic( ); + + Return( ); + + } [ end initLOG + + + +Set( nearFawn); +Set( nearPerson); + + +[***** +:handleInput +[***** + +if (!haveInput) {goto noInput;} + +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 ((Said( look, fawn, rol) || + Said( establish$eye$contact, rol) || + Said( look$in, fawn, rol))) + { + ++lookCount; + if (lookCount == 1) + { + Print( 2); + Print( 3); + } + + if (lookCount == 2) + { + Print( 24); + } + + if (lookCount > 2) + { + Print( 4); + mouth = C_SMILE; + } + } + +if ((Said( stand) || + Said( get$up, from, chair) || + Said( get, off, chair) || + Said( stop, looking, fawn) || + Said( look, me) || + Said( look, away) || + Said( look, away, from, fawn) || + Said( leave, chair, rol) || + Said( leave) || + Said( leave, table, rol) || + Said( stand, up, rol))) + { + Set( makeEgoRise); + Set( cutToLongShot); + Set( OK); + } + +if ((Said( look) || + Said( look, room) || + Said( look, tables) || + Said( look, disco))) + { + 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 (Said( use, spray)) + { + Reset( haveMatch); + mouth = C_SMILE; + Random( 6, 19, eyeCycles); + Reset( eyesCycling); + } + +if ((Said( talk, fawn) || + Said( say, anyword, fawn))) + { + ++fawnTalkCount; + if (fawnTalkCount == 1) + { + if (!talkedToFawn) + { + Set( talkedToFawn); + currentScore += 1; + } + Print( 23); + Print( 46); + mouth = C_FROWN; + } + + if (fawnTalkCount == 2) + { + Print( 47); + Print( 48); + mouth = C_FROWN; + } + + if (fawnTalkCount == 3) + { + Print( 49); + Print( 43); + } + + if (fawnTalkCount == 4) + { + Print( 32); + Print( 33); + Print( 34); + mouth = C_SMILE; + } + + if (fawnTalkCount > 4) + { + if (askedForMoney) + { + Print( 58); + } + else + { + Print( 50); + Print( 26); + Print( 27); + Print( 28); + Print( 51); + mouth = C_SMILE; + } + } + } + +if (Said( come, with, me)) + { + Print( 44); + mouth = C_SMILE; + } + +if ((Said( talk, her, love) || + Said( love, you) || + Said( take, her, hand))) + { + Print( 39); + mouth = C_SMILE; + } + +if ((Said( look, mouth) || + Said( look, girl, mouth))) + { + Print( 31); + } + +if ((Said( ask, name) || + Said( ask, her, name) || + Said( ask, name, girl))) + { + Print( 33); + Print( 34); + mouth = C_SMILE; + } + +if ((Said( larry) || + Said( leisure$suit, larry))) + { + Print( 30); + } + +if ((Said( look, her, hair) || + Said( look, hair) || + Said( touch, hair) || + Said( stroke, hair) || + Said( rub, hair) || + Said( rub, her, hair))) + { + Print( 29); + 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))) + { + Print( 19); + mouth = C_SMILE; + } + +if ((Said( look, eyes) || + Said( look$in, eyes) || + Said( flirt, with, her) || + Said( wink, girl) || + Said( give, girl, kiss) || + Said( kiss, girl))) + { + mouth = C_SMILE; + } + +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, like, dance, rol) || + Said( you, dance, with, me) || + Said( you, dance, with, fawn) || + Said( enjoy, dance) || + Said( enjoy, dance, with, me) || + Said( you, enjoy, dance) || + Said( you, enjoy, dance, with, me) || + Said( you, enjoy, dance, with, fawn) || + Said( ask, dance, fawn) || + Said( ask, fawn, dance) || + Said( ask, fawn, dance, with, me) || + Said( ask, fawn, dance, me) || + Said( start, dance))) + { + if (dancedWithFawn) + { + Print( 59); + } + else + { + if (moneyTimer) + { + Print( 20); + moneyTimer = 17; + } + else + { + Set( makeFawnDance); + Set( scriptDone); + script = 0; + } + } + } + + +if ((Said( give, fawn, rose) || + Said( give, rose) || + Said( give, rose, fawn))) + { + if (!Has( iRose)) + { + Set( dontHaveIt); + } + else + { + currentScore += 5; + Print( 9); + Set( gaveFawnRose); + Drop( iRose); + mouth = C_SMILE; + } + } + + +if ((Said( give, fawn, candy) || + Said( give, candy) || + Said( give, candy, fawn))) + { + if (!Has( iCandy)) + { + Set( dontHaveIt); + } + else + { + currentScore += 5; + Print( 10); + Set( gaveFawnCandy); + Drop( iCandy); + mouth = C_SMILE; + } + } + + +if ((Said( give, fawn, ring) || + Said( give, ring) || + Said( give, ring, fawn))) + { + if (!Has( iRing)) + { + Set( dontHaveIt); + } + else + { + currentScore += 5; + Print( 11); + Set( gaveFawnRing); + Drop( iRing); + mouth = C_SMILE; + } + } + + +if ((Said( give, fawn, money) || + Said( give, money) || + Said( pay, girl, money) || + Said( pay, money) || + Said( pay, girl, one, money) || + Said( pay, girl) || + Said( give, one, money, fawn) || + Said( give, fawn, one, dollars) || [ this makes one hundred work + Said( give, money, fawn))) + { + if (!askedForMoney) + { + Print( 13); + mouth = C_FROWN; + } + else + { + if (dollars < 100) + { + Print( 64); + Print( 35); + Print( 12); + Print( 36); + Print( 37); + Print( 65); + moneyTimer = 0; + } + else + { + currentScore += 7; + Print( 14); + Print( 15); + mouth = C_SMILE; + + moneyTimer = 0; + dollars -= 100; + Set( makeFawnSplit); + Set( gaveFawnEverything); + Set( cutToLongShot); + } + } + } + +if ((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( propose, her))) + { + Print( 38); + mouth = C_SMILE; + } + +if ((Said( touch, fawn, rol) || + Said( eat, fawn, rol) || + Said( hump, fawn, rol) || + Said( kiss, fawn, 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( touch, tit, rol))) + { + Print( 60); + 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( 60); + Print( 61); + mouth = C_FROWN; + } + +if ((Said( look, girl, tits) || + Said( look, tits, rol) || + Said( look, body) || + Said( stare) || + Said( stare, boobs))) + { + Print( 4); + mouth = C_SMILE; + } + + + +[***** +:noInput +[***** + +--eyeCycles; [ bat them eyes +if (eyeCycles == 1) + { + Toggle( eyesCycling); + if (eyesCycling) + { + StartCycling( aEyes); + Random( 6, 18, eyeCycles); + } + else + { + StopCycling( aEyes); + SetCel( aEyes, 0); + Random( 11, 33, eyeCycles); + } + } + +if (aSecondPassed) + { + --breathLineTimer; + if (breathLineTimer == 1) [ Lay that zinger on him + { + Print( 25); + } + + --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, Fawnie. + StopCycling( aEyes); + SetCel( aEyes, 0); + } + + SetCelV( aMouth, mouth); + ForceUpdate( aMouth); + mouth = DONE; + } + } + + + +[ He's done damn near everything for her; what more could that bitch want?! + +if (gaveFawnRose && + gaveFawnCandy && + gaveFawnRing && + dancedWithFawn) + { + if (!askedForMoney) + { + Set( askedForMoney); + Print( 16); + Print( 17); + Print( 18); + moneyTimer = 30; + } + } + + +if (aSecondPassed) + { + --moneyTimer; + if (moneyTimer == 15) + { + Print( 21); + } + + if (moneyTimer == 1) + { + Print( 22); + Set( cutToLongShot); + Set( makeFawnSplit); + } + } + + + +if (scriptDone) + { + Reset( scriptDone); + ++script; + + if (script == 1) [ Do the "Airplane" sequence. + { + mouth = C_SMILE; + Print( 7); + scriptTimer = 6; + } + + if (script == 2) + { + Set( cutToLongShot); + } + } + + +[***** +:exit [ test for leaving the room +[***** + +if (edgeEgoHit == BOTTOM) {newRoom = rmOutsideDisco;} +if (cutToLongShot) + { + Reset( handsOff); + newRoom = rmInsideDisco; + } + diff --git a/RM25.MSG b/RM25.MSG new file mode 100644 index 0000000..ea37f31 --- /dev/null +++ b/RM25.MSG @@ -0,0 +1,210 @@ +[messages for room 25 -- rmInsideDisco +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"The disco is filled with remarkably similar guys, all looking for girls." + +%message 2 +"What a knock-out! + She has bright blue eyes, and a dazzling smile. + Your eyes roam her body, and what you see, you like. + She's sensational!!" + +%message 3 +"Larry, this MUST be love!" + +%message 4 +"\"Please,\" she says coyly, \"stop staring there.\"" + +%message 5 +"Perhaps they're waiting for Fawn to return." + +%message 6 +"Not now, you're busy." + +%message 7 +"%m52dancing. I thought you'd never ask! Come on!!\"" + +%message 8 +"" + +%message 9 +"%m52roses.\"" + +%message 10 +"%m52candy.\"" + +%message 11 +"%m52diamonds.\"" + +%message 12 +"It appears Fawn has caught you a \"little short,\" Larry. + Better try the casino, and hope for a run of good luck!" + +%message 13 +"\"Well, really. I'm not that kind of girl!!\"" + +%message 14 +"%m52money.\"" + +%message 15 +"\"Thanks, Larry. You won't regret this. + Meet me at the Marriage Chapel near the Casino in a few minutes. + I'll get us a room. Hurry, Larry, I can hardly wait!\"" + +%message 16 +"\"Oooh, you're so sweet. I just LOVE you! + Larry, I want you to make wild, passionate love to me!\"" + +%message 17 +"(All right, Larry. At last, you're gonna get lucky!!)" + +%message 18 +"She continues, \"But first, we must get married. + I could never make love to a man not my husband. + If you would loan me a hundred dollars, + I'd rent the Honeymoon Suite at the Casino Hotel for us. + Then, after we're married, we'll celebrate there.\"" + +%message 19 +"\"You seem like a sweet, old-fashioned kind of guy,\" + she says with a beautiful smile." + +%message 20 +"\"What! At a time like this?!\"" + +%message 21 +"\"Either give me some money, or I'll leave without you.\"" + +%message 22 +"\"That's it! See ya later, chump!\"" + +%message 23 +"\"Hi ya, Baby. What say you and me get it on?\"" + +%message 24 +"Those beautiful eyes tell you this doll requires + more than your usual smooth talk." + +%message 25 +"\"Bad breath's one thing, Larry, but you could knock a buzzard off + a manure truck!!\"" + +%message 26 +"She smiles and says, \"I'm just a girl who can't say no..." + +%message 27 +"(All right, Larry; this is what you've been waiting for!)" + +%message 28 +"\"...to nice presents,\" she concludes." + +%message 29 +"Her hair is beautiful, not thinning like some people we know." + +%message 30 +"\"So what?\"" + +%message 31 +"Her lips are moist and inviting, but remember that you also thought that + about old Mrs. Bradley, your homeroom teacher!" + +%message 32 +"\"What's your name, beautiful?\" you ask." + +%message 33 +"\"Fawn,\" she replies." + +%message 34 +"Somehow you knew that." + +%message 35 +"\"I'm sorry, but I'll need at least a hundred dollars,\" + she says with a coy smile." + +%message 36 +"You fervently hope she'll wait for your return." + +%message 37 +"Conveniently, she offers, \"I'll wait right here until you return.\"" + +%message 38 +"I AM the marrying type, but you must convince me." + +%message 39 +"\"How nice,\" she says, \"I love me, too.\"" + +%message 40 +"The dance floor is lit from below with brightly colored lights. + It is presently unused." + +%message 41 +"Evidently every guy here has been turned down by the only + girl in the place. + Her beauty has them frozen in their tracks." + +%message 42 +"There isn't one. This place is run by computer. + (Besides, at this time of night DJ should be home with Chris.)" + +%message 43 +"\"Say, Larry,\" she chuckles, glancing downward, + \"is that a pez dispenser in your pocket, or are you just lonely?\"" + +%message 44 +"\"Perhaps we shall,\" she replies, \"if you play your cards right!\"" + + +%message 46 +"\"Get lost, creep.\"" + +%message 47 +"\"Hey, sweetheart. What's your sign?\" you ask her." + +%message 48 +"\"Octagonal,\" she replies. \"Like in 'STOP!'\"" + +%message 49 +"\"My name is Larry,\" you offer. \"Larry Laffer.\"" + +%message 50 +"\"I'd really like to get to know you better,\" you say. + \"What kind of girl are you, anyway?\"" + +%message 51 +"(Oops.)" + +%message 52 +"\"Oooh, you're so sweet. I just love " + + +%message 57 +"Funny, this is a dry club." + +%message 58 +"\"So, how about it, Larry?\" Fawn says in her petite voice. + \"May I have a measly hundred bucks, or not?\"" + +%message 59 +"\"Not again. That trip through the ceiling gave me a headache!\"" + +%message 60 +"SLAP!" + +%message 61 +"SLAP!\n\n +SLAP!!" + + +%message 63 +"They seem to be staring at something they all want." + +%message 64 +"\"Uh, gosh, Fawn,\" you mumble. \"I've only got %v90 bucks on me!\"" + +%message 65 +"Gee, Larry, this is working out swell." + diff --git a/RM3.CG b/RM3.CG new file mode 100644 index 0000000..57ffb7e --- /dev/null +++ b/RM3.CG @@ -0,0 +1,189 @@ +[logics for room 3 -- lgcQuestions1 +[ "Leisure-Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm3.msg" +%include "gamedefs.h" + + +%define FIRST_QUESTION 1 +%define LAST_QUESTION 53 + +%define toldLastQuestion lf1 + +%define allsWell lv0 +%define question1 lv1 +%define question2 lv2 +%define question3 lv3 +%define question4 lv4 +%define question5 lv5 + + + +if (initLog) + { + if (forceAtest) + { + Print( 60); + currentQuestion = FIRST_QUESTION; + } + } [ end initLOG + + + +if (!forceAtest) + { + :askAgain; + Random( FIRST_QUESTION, LAST_QUESTION, currentQuestion); + if ((currentQuestion == question1 || + currentQuestion == question2 || + currentQuestion == question3 || + currentQuestion == question4 || + currentQuestion == question5)) + { + goto askAgain; + } + else + { + if (question == 1) {question1 = currentQuestion}; + if (question == 2) {question2 = currentQuestion}; + if (question == 3) {question3 = currentQuestion}; + if (question == 4) {question4 = currentQuestion}; + if (question == 5) {question5 = currentQuestion}; + if (question == 6) {questionStatus = allDone;} + if (question == 5 && + !toldLastQuestion) + { + Set( toldLastQuestion); + Print( 69); + } + + ++question; + } + } + +if (currentQuestion == 1) {correctAnswer = 3;} +if (currentQuestion == 2) {correctAnswer = 2;} +if (currentQuestion == 3) {correctAnswer = 4;} +if (currentQuestion == 4) {correctAnswer = 3;} +if (currentQuestion == 5) {correctAnswer = 2;} +if (currentQuestion == 6) {correctAnswer = 1;} +if (currentQuestion == 7) {correctAnswer = 4;} +if (currentQuestion == 8) {correctAnswer = 0;} +if (currentQuestion == 9) {correctAnswer = 1;} +if (currentQuestion == 10) {correctAnswer = 2;} +if (currentQuestion == 11) {correctAnswer = 4;} +if (currentQuestion == 12) {correctAnswer = 3;} +if (currentQuestion == 13) {correctAnswer = 3;} +if (currentQuestion == 14) {correctAnswer = 1;} +if (currentQuestion == 15) {correctAnswer = 4;} +if (currentQuestion == 16) {correctAnswer = 2;} +if (currentQuestion == 17) {correctAnswer = 0;} +if (currentQuestion == 18) {correctAnswer = 3;} +if (currentQuestion == 19) {correctAnswer = 1;} +if (currentQuestion == 20) {correctAnswer = 0;} +if (currentQuestion == 21) {correctAnswer = 4;} +if (currentQuestion == 22) {correctAnswer = 4;} +if (currentQuestion == 23) {correctAnswer = 4;} +if (currentQuestion == 24) {correctAnswer = 2;} +if (currentQuestion == 25) {correctAnswer = 2;} +if (currentQuestion == 26) {correctAnswer = 4;} +if (currentQuestion == 27) {correctAnswer = 3;} +if (currentQuestion == 28) {correctAnswer = 1;} +if (currentQuestion == 29) {correctAnswer = 3;} +if (currentQuestion == 30) {correctAnswer = 4;} +if (currentQuestion == 31) {correctAnswer = 0;} +if (currentQuestion == 32) {correctAnswer = 0;} +if (currentQuestion == 33) {correctAnswer = 2;} +if (currentQuestion == 34) {correctAnswer = 4;} +if (currentQuestion == 35) {correctAnswer = 4;} +if (currentQuestion == 36) {correctAnswer = 2;} +if (currentQuestion == 37) {correctAnswer = 4;} +if (currentQuestion == 38) {correctAnswer = 2;} +if (currentQuestion == 39) {correctAnswer = 2;} +if (currentQuestion == 40) {correctAnswer = 2;} +if (currentQuestion == 41) {correctAnswer = 3;} +if (currentQuestion == 42) {correctAnswer = 3;} +if (currentQuestion == 43) {correctAnswer = 3;} +if (currentQuestion == 44) {correctAnswer = 1;} +if (currentQuestion == 45) {correctAnswer = 2;} +if (currentQuestion == 46) {correctAnswer = 2;} +if (currentQuestion == 47) {correctAnswer = 3;} +if (currentQuestion == 48) {correctAnswer = 1;} +if (currentQuestion == 49) {correctAnswer = 2;} +if (currentQuestion == 50) {correctAnswer = 3;} +if (currentQuestion == 51) {correctAnswer = 2;} +if (currentQuestion == 52) {correctAnswer = 4;} +if (currentQuestion == 53) {correctAnswer = 1;} + + +if (questionStatus != allDone) + { + if (forceAtest) + { + ClearLines( 23, 23, 0); + Display( 23, 0, 66); + PrintV( currentQuestion); + ++currentQuestion; + if (!currentQuestion > LAST_QUESTION) + { + questionStatus = waitAwhile; + scriptTimer = 2; + } + else + { + questionStatus = allDone; + } + } + else + { + AcceptInput(); + CancelLine(); + PreventInput(); + ClearLines( 22, 24, BG_COLOR); + + Set( leaveWindow); + PrintV( currentQuestion); + lastChar = 0; + Display( 23, 0, 67); + + + SetScanStart(); + if (!lastChar) + { + Return(); + } + + if (lastChar > 64 && [ ABCD + lastChar < 69) + { + lastChar += 32; [ Convert to abcd (lower case). + } + + if ((lastChar < 97 || + lastChar > 100)) + { + Sound( sError, done); + Return(); + } + ResetScanStart(); [ We've got a valid letter. + + + answer = lastChar; + lastChar = 0; + answer -= 96; [ Now answer between a and d. + + message = 60; [ 1 less than first message # + message += answer; + y = 23; + x = 29; + DisplayV( y, x, message); + questionStatus = waitAwhile; + scriptTimer = 3; + } + } + + +[***** +:exit [ test for leaving the room +[***** diff --git a/RM3.MSG b/RM3.MSG new file mode 100644 index 0000000..14bc252 --- /dev/null +++ b/RM3.MSG @@ -0,0 +1,461 @@ +[messages for room 3 -- lgcQuestions2 +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"\"Close Encounters of the Third Kind\" is about\n\n + a. politics in third-world\n + countries.\n + b. homo- and heterosexual\n + sex.\n + c. creatures from outer\n + space.\n + d. a bicycle race across\n + Alaska." + +%message 2 +"IBM stands for\n\n + a. Ittsy Bittsy Men.\n + b. International Business\n + Machines.\n + c. Italian Branch of the\n + Mafia.\n + d. Iranian Broom Makers." + +%message 3 +"Who was NOT in the movie \"Easy Rider?\"\n\n + a. Peter Fonda\n + b. Dennis Hopper\n + c. Karen Black\n + d. Karen Carpenter" + +%message 4 +"Las Vegas is famous for\n\n + a. its beaches.\n + b. being the capital of\n + Arizona.\n + c. gambling.\n + d. its weather." + +%message 5 +"The term \"Working Girl\" refers to\n\n + a. a secretary.\n + b. a lady of negotiable\n + virtue.\n + c. an industrious woman.\n + d. an employed female." + +%message 6 +"Making a \"Hole in One\" is\n\n + a. every golfer's dream.\n + b. too dirty to discuss\n + here.\n + c. something carpenters do.\n + d. best done with scissors." + +%message 7 +"My boss is\n\n + a. a jerk.\n + b. a total jerk.\n + c. an absolute total jerk.\n + d. responsible for my\n + paycheck." + +%message 8 +"How many programmers does it take to screw in a light bulb?\n\n + a. None, it's a hardware\n + problem.\n + b. None, programmers can't\n + fit in light bulbs.\n + c. 100. One to hold the\n + bulb and 99 to\n + debug the house.\n + d. None so far, but they'll\n + get to it\n + Real Soon Now." + +%message 9 +"A hard disk is\n\n + a. better than a floppy.\n + b. embarrassing to have at\n + the office.\n + c. a state-of-the-art\n + frisbee.\n + d. what happens when you\n + leave your floppy out\n + in the sun too long." + +%message 10 +"In some personal ads, TV stands for\n\n + a. television.\n + b. transvestite.\n + c. trans-venereal.\n + d. terre-voracic." + +%message 11 +"Lucy, Ricky, Fred and\n\n + a. Barney.\n + b. Carol.\n + c. Alice.\n + d. Ethel." + +%message 12 +"Mel Brooks is\n\n + a. black.\n + b. Puerto Rican.\n + c. a comedian.\n + d. Catholic." + +%message 13 +"It is customary to tip about\n\n + a. 2 per cent.\n + b. 6 per cent.\n + c. 15 per cent.\n + d. 25 per cent." + +%message 14 +"Blackjack is\n\n + a. an ace and a face card.\n + b. used by policemen.\n + c. related to Caucasian\n + Tom.\n + d. a kind of car sold only\n + in Fresno." + +%message 15 +"Canada is\n\n + a. where Canadians live.\n + b. north of the U. S.\n + c. adjacent to the U. S.\n + d. All of the above." + +%message 16 +"Oral Roberts is\n\n + a. a thermometer technique.\n + b. an evangelist.\n + c. best done with a friend.\n + d. shy." + +%message 17 +"Richard Nixon was\n\n + a. an audio technician.\n + b. a plumber's friend.\n + c. a comedian.\n + d. a president." + +%message 18 +"A 747 is\n\n + a. a cocktail.\n + b. a perfect bowling score.\n + c. a large airplane.\n + d. a prime number." + +%message 19 +"Whips, chains and handcuffs are\n\n + a. kinky.\n + b. used by police\n + departments.\n + c. usually in text\n + adventures.\n + d. only permitted in\n + Eastern schools." + +%message 20 +"A Macintosh is\n\n + a. a kind of Apple.\n + b. a kind of apple.\n + c. an article of clothing.\n + d. All of the above." + +%message 21 +"My parents are\n\n + a. age 10 to 25.\n + b. age 25 to 30.\n + c. age 31 to 35.\n + d. 36 or over." + +%message 22 +"My favorite actor is\n\n + a. Pia Zadora.\n + b. Fred Flintstone.\n + c. Jim Bakker.\n + d. not listed here." + +%message 23 +"I have hair on my\n\n + a. head.\n + b. palms.\n + c. keyboard.\n + d. lottsa places." + +%message 24 +"When it's noon in California in August, in St. Louis it's\n\n + a. miserable.\n + b. 2:00 p.m.\n + c. 3:00 p.m.\n + d. time for a beer." + +%message 25 +"The best \"pick-up\" line is:\n\n + a. Hey baby, what's your\n + sign?\n + b. Want to go for a ride\n + in my Porsche?\n + c. For a fat girl, you\n + sure don't sweat much!\n + d. Do you know where I can\n + buy some Vaseline?" + +%message 26 +"The \"Mile-High Club\" is\n\n + a. a bird-watching society.\n + b. a Denver ski club.\n + c. a bar in East L. A.\n + d. open to those who have\n + performed aerial\n + acrobatics inside a\n + plane's rest room." + +%message 27 +"My sex life is best described as\n\n + a. non-existent and non-\n + contemplated.\n + b. what sex life?\n + c. none of your business!!\n + d. a ripening tomato." + +%message 28 +"Elizabeth Taylor is\n\n + a. an actress.\n + b. creator of a line of\n + cosmetics.\n + c. celebrating her silver\n + wedding anniversary.\n + d. a singer." + +%message 29 +"Joan Rivers is\n\n + a. the real name of\n + \"Dear Abby.\"\n + b. engaged to\n + Johnny Carson.\n + c. a former talk show\n + hostess.\n + d. polite to all\n + those around her." + +%message 30 +"Who starred in \"Bedtime for Bonzo?\"\n\n + a. Clint Eastwood\n + b. Fred Astaire\n + c. Cary Grant\n + d. Ronald Reagan" + +%message 31 +"Taxes should be\n\n + a. lower.\n + b. higher.\n + c. unchanged.\n + d. eliminated." + +%message 32 +"A moon is\n\n + a. an astronomical body.\n + b. a practical joke.\n + c. a form of pie.\n + d. all of the above." + +%message 33 +"Marlon Brando is\n\n + a. a singer.\n + b. an actor.\n + c. a politician.\n + d. a kind of soap." + +%message 34 +"I am presently\n\n + a. in elementary school.\n + b. in junior high.\n + c. fighting acne.\n + d. past puberty." + +%message 35 +"Herpes is\n\n + a. caught from toilet\n + seats.\n + b. a French dessert.\n + c. socially desirable.\n + d. fatal (if given to\n + your spouse)." + +%message 36 +"ERA is an abbreviation for\n\n + a. Earnest Realtors of\n + America.\n + b. Equal Rights Amendment.\n + c. Erogenous Readers\n + Association.\n + d. Error Recovery\n + Associates." + +%message 37 +"G. Gordon Liddy was associated with\n\n + a. the Mob.\n + b. Calvin Klein.\n + c. Elizabeth Taylor.\n + d. the Plumbers." + +%message 38 +"What was illegal during Prohibition?\n\n + a. aphrodisiacs\n + b. alcohol\n + c. abstinence\n + d. perversion" + +%message 39 +"Bonnie and\n\n + a. Ronnie\n + b. Clyde\n + c. Hubbard\n + d. Clod" + +%message 40 +"Who spends the most time in Las Vegas?\n\n + a. Michael J. Fox\n + b. Wayne Newton\n + c. J. Paul Getty\n + d. Paul Volcker" + +%message 41 +"Which U. S. President was not elected to office?\n\n + a. Johnson\n + b. Eisenhower\n + c. Ford\n + d. Cleveland" + +%message 42 +"Which is not a currency?\n\n + a. yen\n + b. lira\n + c. fennel\n + d. rupee" + +%message 43 +"Which is not a baseball team?\n\n + a. Blue Jays\n + b. Cardinals\n + c. Seahawks\n + d. Orioles" + +%message 44 +"Who made a record album with a cover that looked like a pair of blue jeans, + complete with a working zipper?\n\n + a. Rolling Stones\n + b. Boy George\n + c. Olivia Newton Jean\n + d. Madonna" + +%message 45 +"The American television debut of Bob Hope, + Dinah Shore, Elvis, and the Beatles was on\n\n + a. \"The Ed Sullivan Show.\"\n + b. \"Your Show of Shows.\"\n + c. \"The Tonight Show.\"\n + d. \"My Mother, the Car.\"" + +%message 46 +"Michael Doonesbury founded\n\n + a. the American Nazi Party.\n + b. Walden Puddle Commune.\n + c. the Young Republicans.\n + d. the Grace Jones\n + Fan Club." + +%message 47 +"The first baseball player to challenge the reserve clause was\n\n + a. Philly Jo Jones.\n + b. Roger Maris.\n + c. Curt Flood.\n + d. Ted Williams." + +%message 48 +"The first Negro to play Major League Baseball was\n\n + a. Jackie Robinson.\n + b. Joe DiMaggio.\n + c. Benny Goodman.\n + d. Satchel Paige." + +%message 49 +"Former Congressman Wilbur Mills went for a dip in the Tidal Basin with\n\n + a. nothing on but his\n + pride.\n + b. a stripper named Fanne.\n + c. his dog Spot.\n + d. a 20-year-old secretary." + +%message 50 +"Martha Mitchell was\n\n + a. a porno star.\n + b. a famous author.\n + c. the outspoken wife of an\n + Attorney General.\n + d. All of the above." + +%message 51 +"The G-Spot is supposed to be\n\n + a. Ground Zero at a nuclear\n + blast.\n + b. a female erogenous zone.\n + c. an unexplained astro-\n + nomical discovery.\n + d. the place where the FBI\n + was first established." + +%message 52 +"Hugh Hefner is usually photographed in\n\n + a. the nude.\n + b. a hot tub.\n + c. his current lover's\n + arms.\n + d. pajamas." + +%message 53 +"The 1973 album \"Dark Side of the Moon\" was recorded by\n\n + a. Pink Floyd.\n + b. Deep Purple.\n + c. Bad News.\n + d. the Grateful Dead." + + + + +%message 60 +"Dynamic logic = 3." + +%message 61 +"a" + +%message 62 +"b" + +%message 63 +"c" + +%message 64 +"d" + +%message 65 +"So far, so good.\n\n +Now for the final question." + +%message 66 +"Question #%v96. Correct answer is %v93." + +%message 67 +"Please answer a, b, c, or d: " + +%message 69 +"So far, so good.\n\n +Now for the final question." diff --git a/RM31.CG b/RM31.CG new file mode 100644 index 0000000..a021b42 --- /dev/null +++ b/RM31.CG @@ -0,0 +1,302 @@ +[logics for room 31 -- rmInsideCasino +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm31.msg" +%include "gamedefs.h" + + + +%define L_21_PLAYERS 0 +%define L_21_GIRL 1 +%define L_SLOT_PLAYERS 2 +%define L_SLOT_WINNER 3 + + +%define nearWrong21 lf0 +%define near21 lf1 +%define nearSlots lf2 +%define dealing lf3 +[%define lf4 +[%define lf5 + + +%define bjTimer lv0 +%define slotTimer lv1 +[%define lv2 +[%define lv3 +[%define lv4 + + +%object a21Game 1 +%object aSlotWinner 2 +[%object a 3 + + + +if (initLog) + { + SetHorizon( 91); + + LoadPic( currentRoom); + DrawPic( currentRoom); + DiscardPic( currentRoom); + + LoadView( vCasinoPatrons); +[ LoadView( v); + + AnimateObj( a21Game); + IgnoreBlocks( a21Game); + IgnoreObjs( a21Game); + SetView( a21Game, vCasinoPatrons); + SetLoop( a21Game, L_21_PLAYERS); + SetCel( a21Game, 0); + SetPriority( a21Game, 12); + Position( a21Game, 39, 121); + Draw( a21Game); + StopUpdate( a21Game); + bjTimer = 21; + + AnimateObj( aSlotWinner); + SetView( aSlotWinner, vCasinoPatrons); + SetLoop( aSlotWinner, L_SLOT_WINNER); + SetCel( aSlotWinner, 0); + Position( aSlotWinner, 113, 128); + Draw( aSlotWinner); + StopUpdate( aSlotWinner); + slotTimer = 0; + + LoadView( vCasinoInterior); + AddToPic( vCasinoInterior, 0, 0, 92, 116, 11, 4); + AddToPic( vCasinoInterior, 0, 0, 111, 140, 13, 4); + DiscardView( vCasinoInterior); + + AddToPic( vCasinoPatrons, L_SLOT_PLAYERS, 0, 101, 128, 11, 0); + AddToPic( vCasinoPatrons, L_SLOT_PLAYERS, 1, 138, 153, 13, 0); + AddToPic( vCasinoPatrons, L_SLOT_PLAYERS, 2, 125, 153, 13, 0); + AddToPic( vCasinoPatrons, L_SLOT_PLAYERS, 3, 107, 104, 11, 4); + AddToPic( vCasinoPatrons, L_SLOT_PLAYERS, 4, 123, 126, 13, 4); + AddToPic( vCasinoPatrons, L_SLOT_PLAYERS, 5, 114, 105, 11, 4); + + AddToPic( vCasinoPatrons, L_21_GIRL, 0, 35, 127, 13, 4); + [view, loop, cel, x, y, obj priority, box priority + + + if (previousRoom == rmElevatorBottom) + { + egoX = 75; + egoY = 93; + } + else + { + if ((previousRoom == rmSlots || + previousRoom == rmBlackjack)) + { + egoX = sourceX; + egoY = sourceY; + } + else + { + egoX = 77; + egoY = 167; + } + } + PositionV( ego, egoX, egoY); + Draw( ego); + + ShowPic( ); + + Return( ); + + } [ end initLOG + + +Reset( nearSlots); +if ((Posn( ego, 106, 137, 140, 143) || + Posn( ego, 108, 153, 120, 157) || + Posn( ego, 89, 128, 98, 133) || + Posn( ego, 88, 116, 98, 119))) + { + Set( nearSlots); + Set( nearPerson); + } + +Reset( near21); +if (Posn( ego, 18, 133, 47, 154)) + { + Set( near21); + Set( nearPerson); + } + +Reset( nearWrong21); +if (Posn( ego, 31, 121, 60, 136)) + { + Set( nearWrong21); + Set( nearPerson); + } + + +[***** +:handleInput +[***** + +if (!haveInput) {goto noInput;} + +if ((Said( look) || + Said( look, room) || + Said( look, casino) || + Said( look, hall))) + { + Print( 1); + } + +if ((Said( talk, man) || + Said( talk, women) || + Said( talk, people))) + { + if (near21) + { + Print( 10); + } + else + { + Print( 9); + } + } + +if ((Said( look, man) || + Said( look, women) || + Said( look, people))) + { + Print( 6); + } + +if ((Said( talk, blackjack, man) || + Said( talk, blackjack, women) || + Said( talk, blackjack, people) || + Said( look, blackjack, table) || + Said( look, blackjack, man) || + Said( look, blackjack, women) || + Said( look, blackjack, people))) + { + Print( 8); + } + + +if ((Said( look, table) || + Said( look, blackjack) || + Said( look, blackjack, table))) + { + if (nearWrong21) + { + Print( 3); + } + else + { + Print( 2); + } + } + +if (Said( look, slots)) + { + Print( 5); + } + + +if ((Said( bet, money) || + Said( play) || + Said( gamble, rol))) + { + Print( 7); + } + +if ((Said( play, blackjack) || + Said( sit) || + Said( sit, stool) || + Said( sit, down))) + { + if (nearWrong21) + { + Print( 3); + } + else + { + if (!near21) + { + Set( notCloseEnough); + } + else + { + Set( OK); + sourceX = egoX; + sourceY = egoY; + newRoom = rmBlackjack; + } + } + } + +if ((Said( use, slot) || + Said( pull, handle) || + Said( put, money, slot) || + Said( put, money, machine) || + Said( play, slots))) + { + if (!nearSlots) + { + Set( notCloseEnough); + } + else + { + Set( OK); + sourceX = egoX; + sourceY = egoY; + newRoom = rmSlots; + } + } + + + +[***** +:noInput +[***** + +--slotTimer; +if (slotTimer == 1) + { + SetCel( aSlotWinner, 0); + StopUpdate( aSlotWinner); + ForceUpdate( aSlotWinner); + Random( 33, 77, bjTimer); + } + +if (slotTimer == 21) + { + StartUpdate( aSlotWinner); + } + + +--bjTimer; +if (bjTimer == 1) + { + Toggle( dealing); + if (!dealing) + { + SetCel( a21Game, 0); + StopUpdate( a21Game); + ForceUpdate( a21Game); + Random( 55, 222, slotTimer); + } + else + { + StartUpdate( a21Game); + Random( 11, 33, bjTimer); + } + } + + +[***** +:exit [ test for leaving the room +[***** + +if (edgeEgoHit == BOTTOM) {newRoom = rmOutsideCasino;} +if (edgeEgoHit == TOP) {newRoom = rmElevatorBottom;} diff --git a/RM31.MSG b/RM31.MSG new file mode 100644 index 0000000..a5b9ab6 --- /dev/null +++ b/RM31.MSG @@ -0,0 +1,40 @@ +[messages for room 31 -- rmInsideCasino +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"You are in the casino. + There are slot machines to the right, and blackjack tables to the left. + This place is a gambler's paradise!" + +%message 2 +"The front blackjack table is presently unoccupied." + +%message 3 +"The rear blackjack table is rather busy now. Try the front table." + +%message 4 +"Move to an unoccupied slot machine first." + +%message 5 +"At least one person appears to be winning at the slot machines. + Perhaps you could too." + +%message 6 +"They appear to be having a great time. Perhaps you'd like to join them?" + +%message 7 +"Move to a slot machine and put in some money. + Or, find an empty blackjack table and sit down." + +%message 8 +"You could, if you'd sit down first." + +%message 9 +"Don't interrupt them; they're trying to win." + +%message 10 +"Casino dealers are notoriously silent." + diff --git a/RM32.CG b/RM32.CG new file mode 100644 index 0000000..9fdc03c --- /dev/null +++ b/RM32.CG @@ -0,0 +1,472 @@ +[logics for room 32 -- rmOutsideCasino +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm32.msg" +%include "gamedefs.h" + + + +%define L_SIGN 0 +%define L_DOOR 1 +%define L_DOOR_WITH_EGO 2 + +%define nearDoor lf0 +%define doorsOpen lf1 +%define manDone lf2 +%define doorDone lf3 +%define nearMan lf4 +%define manOnScreen lf5 + +%define manScript lv0 +%define manTimer lv1 + +%object aDoor1 1 +%object aDoor2 2 +%object aMan 3 +%object aSign 4 + + + +if (initLog) + { + if (watchHours > 4 && [ Anything after 5 am. + watchHours < 10) + { + NewRoom( rmSunrise); + } + + SetHorizon( 107); + + LoadPic( currentRoom); + DrawPic( currentRoom); + DiscardPic( currentRoom); + + LoadLogics( lgcStreet); + + LoadView( vCasinoExterior); + + Random( 1, 3, work); + +[ Set( forceAtest); + if (forceAtest) + { + work = 1; + } + if (currentStatus == NORMAL && + work == 1 && + ObjInRoom( iApple, currentRoom)) + { + LoadView( vCasinoManInBarrel);[ View.132 + + AnimateObj( aMan); + SetView( aMan, vCasinoManInBarrel); + Position( aMan, 120, 131); + Random( 4, 7, manTimer); + ObjectOnLand( aMan); + } + + + AnimateObj( aDoor1); + IgnoreBlocks( aDoor1); + IgnoreObjs( aDoor1); + SetView( aDoor1, vCasinoExterior); + SetLoop( aDoor1, L_DOOR); + FixLoop( aDoor1); + SetCel( aDoor1, 0); + StopCycling( aDoor1); + + AnimateObj( aDoor2); + IgnoreBlocks( aDoor2); + IgnoreObjs( aDoor2); + SetView( aDoor2, vCasinoExterior); + SetLoop( aDoor2, L_DOOR); + FixLoop( aDoor2); + SetCel( aDoor2, 1); + StopCycling( aDoor2); + + if (slowProcessor) + { + AddToPic( vCasinoExterior, L_SIGN, 1, 51, 61, 4, 4); + [view, loop, cel, x, y, obj priority, box priority + } + else + { + AnimateObj( aSign); + IgnoreHorizon( aSign); + IgnoreBlocks( aSign); + IgnoreObjs( aSign); + SetView( aSign, vCasinoExterior); + SetLoop( aSign, L_SIGN); + Position( aSign, 51, 61); + Draw( aSign); + } + + + if (previousRoom == rmInsideCasino) + { + egoX = 75; + egoY = 109; + SetLoop( ego, FACING_FRONT); + + Position( aDoor1, 57, 108); + Position( aDoor2, 88, 108); + + Draw( aDoor1); + Draw( aDoor2); + Set( doorsOpen); + } + else + { + Position( aDoor1, 67, 108); + Draw( aDoor1); + + Position( aDoor2, 78, 108); + Draw( aDoor2); + + if (previousRoom == rmDarkAlley) + { + egoX = 0; + egoY = 141; + } + else + { + if (previousRoom != rmOutsideChapel) + { + egoX = 77; + egoY = 155; + } + } + } + PositionV( ego, egoX, egoY); + Draw( ego); + ObjectOnAnything( ego); + + Call( lgcStreet); + + ShowPic( ); + + Return( ); + + } [ end initLOG + + + +Reset( nearMan); +Distance( aMan, ego, work); +if (manOnScreen && work < 25) + { + Set( nearMan); + } + +Reset( nearDoor); +if (Posn( ego, 63, 100, 86, 113)) + { + Set( nearDoor); + } + +if (manScript == 3) [ Waiting to buy apple. + { + Distance( aMan, ego, work); + if (work < ERROR && + work > 20) [ Ego walked away from him. + { + Print( 10); + Set( manDone); + manScript = 1; + manTimer = 0; + } + } + + +[***** +:handleInput +[***** + +if (!haveInput) {goto noInput;} + +if ((Said( look) || + Said( look, building) || + Said( look, room) || + Said( look, casino) || + Said( look, hotel))) + { + Print( 1); + } + +if ((Said( look, plant) || + Said( look$in, plant) || + Said( look$in, pot) || + Said( look, pot))) + { + Print( 15); + } + +if (Said( open, door)) + { + if (nearTaxi) + { + Reset( haveMatch); + } + else + { + Print( 16); + } + } + +if (Said( look, wall)) + { + Print( 20); + } + +if ((Said( look, window) || + Said( look, glass) || + Said( look, door) || + Said( look, glass, door) || + Said( look$in, glass))) + { + Print( 17); + } + +if (manOnScreen) + { + if (Said( look, man)) + { + Print( 5); + } + + if (Said( talk, man)) + { + if (!nearMan) + { + Set( notCloseEnough); + } + else + { + if (Has( iApple)) + { + Print( 19); + } + else + { + if (manScript < 3) + { + Print( 18); + } + else + { + Print( 6); + } + } + } + } + + if ((Said( ask, name) || + Said( ask, man, his, name) || + Said( get, name) || + Said( ask, his, name) || + Said( ask, man, name) || + Said( name) || + Said( name, man) || + Said( man, name))) + { + if (!nearMan) + { + Set( notCloseEnough); + } + else + { + Print( 7); + } + } + + if ((manScript == 2 || + manScript == 3)) + { + if ((Said( no) || + Said( get, lost, rol) || + Said( go, away, rol) || + Said( hump, off, rol) || + Said( no, thanks))) + { + Print( 12); + Set( manDone); + manScript = 3; + manTimer = 0; + } + } + + if ((Said( ask, last, name) || + Said( last, name) || + Said( last, name, man) || + Said( man, last, name))) + { + if (!nearMan) + { + Set( notCloseEnough); + } + else + { + Print( 8); + } + } + + if (Said( take, barrel)) + { + if (!nearMan) + { + Set( notCloseEnough); + } + else + { + Print( 13); + } + } + + if (Said( look$in, barrel)) + { + if (!nearMan) + { + Set( notCloseEnough); + } + else + { + Print( 14); + } + } + + if ((Said( buy, rol) || + Said( give, money, man) || + Said( pay, rol))) + { + if (!nearMan) + { + Set( notCloseEnough); + } + else + { + if (!ObjInRoom( iApple, currentRoom)) + { + Print( 11); + } + else + { + currentScore += 3; + Print( 9); + Get( iApple); + --dollars; + Set( manDone); + manTimer = 0; + manScript = 3; + } + } + } + } + + +[***** +:noInput +[***** + +if (aSecondPassed) + { + --manTimer; + if (manTimer == 1) + { + Set( manDone); + } + } + +if (manScript == 3 && edgeEgoHit) + { + Print( 4); + } + +if (manScript == 4 && objHitEdge == aMan) + { + Set( manDone); + } + + +if (manDone) + { + Reset( manDone); + ++manScript; + + if (manScript == 1) + { + Draw( aMan); + Set( manOnScreen); + manScript = 2; [ So we can make him chase ego again later. + } + + if (manScript == 2) + { + StartCycling( aMan); + FollowEgo( aMan, 8, manDone); + } + + if (manScript == 3) + { + manTimer = 11; + StopCycling( aMan); + Print( 2); + Print( 3); + Set( nearPerson); + } + + if (manScript == 4) + { + StartCycling( aMan); + Wander( aMan); + } + + if (manScript == 5) + { + Erase( aMan); + Reset( manOnScreen); + manScript = 0; + } + } + + + +if (nearDoor) + { + IgnoreBlocks( ego); + ObserveObjs( aDoor1); + ObserveObjs( aDoor2); + ObserveObjs( ego); + + if (!doorsOpen) + { + Set( doorsOpen); + MoveObj( aDoor1, 57, 108, 1, done); + MoveObj( aDoor2, 88, 108, 1, done); + } + } +else + { + ObserveBlocks( ego); + if (doorsOpen) + { + Reset( doorsOpen); + IgnoreObjs( aDoor1); + IgnoreObjs( aDoor2); + MoveObj( aDoor1, 67, 108, 1, done); + MoveObj( aDoor2, 78, 108, 1, done); + } + } + + + +[***** +:exit [ test for leaving the room +[***** + +Call( lgcStreet); + +if (edgeEgoHit == TOP) {newRoom = rmInsideCasino;} +if (edgeEgoHit == RIGHT) {newRoom = rmOutsideChapel;} +if (edgeEgoHit == LEFT) {newRoom = rmDarkAlley;} + diff --git a/RM32.MSG b/RM32.MSG new file mode 100644 index 0000000..ccf6013 --- /dev/null +++ b/RM32.MSG @@ -0,0 +1,75 @@ +[messages for room 32 -- rmOutsideCasino +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"It's a casino!" + +%message 2 +"\"Hello, sir. + Would you help out a poor unfortunate by purchasing an apple?\"" + +%message 3 +"\"The price is reasonable: only $1.00.\"" + +%message 4 +"\"I take that as a 'No,'\" he says pleasantly. + \"Very well then, perhaps some other time.\"" + +%message 5 +"He's yet another poor soul who donated his everything so the shrine + of Lost Wages could continue to flourish." + +%message 6 +"\"My pleasure was always the slot machines,\" he says. + \"Say, are we going to stand here and chitchat all night, + or am I going to make a sale?\"" + +%message 7 +"\"Why, Steve. Nice of you to ask,\" he responds." + +%message 8 +"\"Well, my friends call me 'Woz,' but I don't consider you a friend.\"" + +%message 9 +"\"Thank you very much, sir. + Please call again, whenever you are in the neighborhood,\" + says the man. And with that, he walks away into the night." + +%message 10 +"\"Hey, come back!\" says the man. + \"Are you sure you don't want to buy an apple?\"" + +%message 11 +"\"You know,\" says the man, peering deep into his barrel, + \"I'm all out! But thank you for your continued interest.\"" + +%message 12 +"\"Ok, be that way!\" he says, and disappears into the night." + +%message 13 +"\"Oh no, you don't!\" exclaims the man." + +%message 14 +"\"Say, you really did lose everything,\" you tell the man." + +%message 15 +"They are nicely manicured, but of no help to you." + +%message 16 +"They're automatic. Get closer." + +%message 17 +"Pretty flashy, eh?" + +%message 18 +"\"Apples. Apples! APPLES for sale!!\"" + +%message 19 +"\"Thanks a lot. See you later, pal.\"" + +%message 20 +"Isn't it wonderful what can be done with a few light bulbs?" + diff --git a/RM33.CG b/RM33.CG new file mode 100644 index 0000000..1e4610e --- /dev/null +++ b/RM33.CG @@ -0,0 +1,252 @@ +[logics for room 33 -- rmOutsideChapel +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm33.msg" +%include "gamedefs.h" + + + +[ %define L_DOORS 2 + +%define nearDoor lf0 +%define doorOpenDone lf1 +%define nearFlasher lf2 +%define coatOpen lf3 + +%object aDoor 1 +%object aSign 2 +%object aFlasher 3 + + + +if (initLog) + { + if (watchHours > 4 && [ Anything after 5 am. + watchHours < 10) + { + NewRoom( rmSunrise); + } + + LoadPic( currentRoom); + DrawPic( currentRoom); + DiscardPic( currentRoom); + + LoadLogics( lgcStreet); + + LoadView( vChapelExterior); + LoadView( vFlasher); + + + AnimateObj( aFlasher); + SetView( aFlasher, vFlasher); + SetCel( aFlasher, 0); + Position( aFlasher, 129, 145); + Draw( aFlasher); + StopCycling( aFlasher); + + AnimateObj( aDoor); + IgnoreHorizon( aDoor); + IgnoreBlocks( aDoor); + IgnoreObjs( aDoor); + SetView( aDoor, vChapelExterior); + SetLoop( aDoor, 2); + SetCel( aDoor, 0); + Position( aDoor, 83, 114); + Draw( aDoor); + work = DOOR_CYCLE_TIME; + CycleTime( aDoor, work); + StopUpdate( aDoor); + + AddToPic( vChapelExterior, 1, 0, 63, 60, 4, 4); + [view, loop, cel, x, y, obj priority, box priority + + AnimateObj( aSign); + IgnoreHorizon( aSign); + IgnoreBlocks( aSign); + IgnoreObjs( aSign); + SetView( aSign, vChapelExterior); + SetLoop( aSign, 0); + Position( aSign, 86, 42); + CycleTime( aSign, two); + Draw( aSign); + + + if (previousRoom == rmInsideChapel) + { + egoX = 93; + egoY = 116; + SetLoop( ego, FACING_FRONT); + Reset( programControl); + } + else + { + if (previousRoom == rmDarkAlley) + { + egoX = 153; + egoY = 138; + } + } + PositionV( ego, egoX, egoY); + Draw( ego); + + Call( lgcStreet); + + ShowPic( ); + + Return( ); + + } [ end initLOG + + + +Reset( nearDoor); +if (Posn( ego, 80, 115, 105, 120)) + { + Set( nearDoor); + } + +Reset( nearFlasher); +if (Posn( ego, 120, 129, 142, 144)) + { + Set( nearFlasher); + Set( nearPerson); + } + + +[***** +:handleInput +[***** + +if (!haveInput) {goto noInput;} + +if ((Said( look) || + Said( look, room) || + Said( look, building) || + Said( look, chapel))) + { + Print( 1); + } + +if (Said( look, man)) + { + if (!coatOpen) + { + Print( 4); + } + else + { + Print( 5); + } + } + +if (Said( talk, man, anyword, rol)) + { + Print( 12); + } + +if (Said( talk, man)) + { + if (!coatOpen) + { + Print( 6); + Print( 7); + } + else + { + Print( 8); + if (!talkedToFlasher) + { + Set( talkedToFlasher); + currentScore += 1; + } + } + } + +if ((Said( get, coat, rol) || + Said( anyword, man, rol))) + { + Print( 9); + } + + +if (Said( look, door)) + { + if (nearTaxi) + { + Reset( haveMatch); + } + else + { + Print( 2); + } + } + +if (Said( open, door)) + { + if (nearTaxi) + { + Reset( haveMatch); + } + else + { + if (!nearDoor) + { + Set( notCloseEnough); + } + else + { + Set( OK); + StopMotion( ego); + Set( programControl); + StartUpdate( aDoor); + EndOfLoop( aDoor, doorOpenDone); + } + } + } + +if ((Said( look, fence) || + Said( climb, fence) || + Said( climb, over, fence) || + Said( look, over, fence))) + { + Print( 10); + } + + +[***** +:noInput +[***** + +if (nearFlasher) + { + if (!coatOpen) + { + Set( coatOpen); + EndOfLoop( aFlasher, done); + } + } +else + { + if (coatOpen) + { + Reset( coatOpen); + BeginningOfLoop( aFlasher, done); + } + } + + +[***** +:exit [ test for leaving the room +[***** + +Call( lgcStreet); + +if (doorOpenDone) + { + Reset( programControl); + newRoom = rmInsideChapel; + } +if (edgeEgoHit == LEFT) {newRoom = rmOutsideCasino;} +if (edgeEgoHit == RIGHT) {newRoom = rmDarkAlley;} + diff --git a/RM33.MSG b/RM33.MSG new file mode 100644 index 0000000..66a0ad8 --- /dev/null +++ b/RM33.MSG @@ -0,0 +1,42 @@ +[messages for room 33 -- rmOutsideChapel +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"You are outside a romantic, quickie marriage parlor." + +%message 2 +"It's a door. Try opening it." + +%message 3 +"Funny. No one knocks back." + +%message 4 +"It's a guy wearing a trench coat." + +%message 5 +"It's obvious he doesn't have much to hide!" + +%message 6 +"You greet the stranger in the trench coat." + +%message 7 +"\"Hey, sonny! Come over here!!\" he replies." + +%message 8 +"\"Say,\" you ask him. \"By any chance, is your name Shorty?\"" + +%message 9 +"You have better things to do than mess around with this pervert." + +%message 10 +"It's there to keep you from going that way!" + +%message 11 +"Strange, you think." + +%message 12 +"He doesn't reply." + diff --git a/RM34.CG b/RM34.CG new file mode 100644 index 0000000..1e185c9 --- /dev/null +++ b/RM34.CG @@ -0,0 +1,448 @@ +[logics for room 34 -- rmInsideChapel +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm34.msg" +%include "gamedefs.h" + + + +#define TALK_TIME 3 + +#define L_TALKING 0 +#define L_WALKING 1 + +%define nearAlter lf0 +%define gotMarried lf1 +%define fawnHere lf2 +%define ministerHere lf3 + +%object aCandle1 1 +%object aCandle2 2 +%object aFawn 3 +%object aMinister 4 + + + +if (initLog) + { + LoadPic( currentRoom); + DrawPic( currentRoom); + DiscardPic( currentRoom); + + LoadView( vChapelInterior); + + AddToPic( vChapelInterior, 0, 0, 62, 120, 0, 0); + AddToPic( vChapelInterior, 0, 0, 93, 120, 0, 0); + [view, loop, cel, x, y, obj priority, box priority + + AnimateObj( aCandle1); + IgnoreObjs( aCandle1); + SetView( aCandle1, vChapelInterior); + SetLoop( aCandle1, 1); + SetCel( aCandle1, 0); + SetPriority( aCandle1, 11); + Position( aCandle1, 62, 93); + Draw( aCandle1); + + AnimateObj( aCandle2); + IgnoreObjs( aCandle2); + Position( aCandle2, 93, 93); + SetView( aCandle2, vChapelInterior); + SetLoop( aCandle2, 1); + SetCel( aCandle2, 1); + SetPriority( aCandle2, 11); + Draw( aCandle2); + + + if (!fawnInRoom && + !marriedFawn && + gaveFawnEverything) + { + Set( fawnHere); + Set( ministerHere); + Set( musicDone); + + LoadView( vFawn); + LoadView( vChapelMinister); + LoadSound( mWedding); + + AnimateObj( aFawn); + SetView( aFawn, vFawn); + Position( aFawn, 70, 120); + SetLoop( aFawn, FACING_FRONT); + Draw( aFawn); + StopCycling( aFawn); + + AnimateObj( aMinister); + SetView( aMinister, vChapelMinister); + SetLoop( aMinister, L_TALKING); + Position( aMinister, 76, 113); + Draw( aMinister); + StopCycling( aMinister) + } + + Position( ego, 76, 167); + Draw( ego); + + ShowPic( ); + + if (unsuccessfulCeremony) + { + Reset( unsuccessfulCeremony); + Print( 27); + } + + Return( ); + + } [ end initLOG + + +Reset( nearAlter); +if (fawnHere && + Posn( ego, 61, 114, 94, 130)) + { + Set( nearAlter); + Set( nearPerson); + } + + + +[***** +:handleInput +[***** + +if (!haveInput) {goto noInput;} + +if ((Said( look) || + Said( look, room) || + Said( look, chapel))) + { + if (!fawnHere) + { + Print( 1); + } + else + { + Print( 2); + } + } + +if ((Said( look, window) || + Said( look, heart) || + Said( look, painting) || + Said( look, wall) || + Said( look, out, window))) + { + Print( 28); + } + +if ((Said( look, altar) || + Said( look, pews))) + { + Print( 29); + } + +if (Said( look, ceiling)) + { + Print( 38); + } + + +if ((Said( sit, pews) || + Said( sit) || + Said( sit, down) || + Said( sit, in, pews) || + Said( sit, on, pews))) + { + Print( 30); + } + +if (Said( look, candles)) + { + Print( 32); + } + +if (Said( take, candles)) + { + Print( 33); + } + +if ((Said( blow, out, candles) || + Said( blow, candles, out) || + Said( put, candles, out) || + Said( put, out, candles))) + { + Print( 39); + } + + +if (ministerHere && + Said( look, man)) + { + Print( 34); + } + +if (ministerHere && + Said( talk, man)) + { + Print( 35); + Print( 37); + } + +if (fawnHere && + Said( talk, girl)) + { + Print( 36); + } + + + +if (fawnHere && + Said( look, fawn)) + { + Print( 2); + } + +if (!script && + Said( kiss, fawn)) + { + Print( 23); + } + +if (!script && + (Said( marry, fawn) || + Said( marry) || + Said( say, vows) || + Said( give, money, minister) || + Said( ask, minister, marry, us) || + Said( marry, us) || + Said( give, minister) || + Said( pay, rol) || + Said( get, married) || + Said( get, married, fawn) || + Said( talk, minister))) + { + if (!fawnHere) + { + Print( 31); + } + else + { + if (!nearAlter) + { + Print( 26); + } + else + { + Set( scriptDone); + } + } + } + + +[***** +:noInput +[***** + +if (scriptDone) + { + Reset( scriptDone); + ++script; + step = 1; + + if (script == 1) + { + IgnoreObjs( ego); + Set( programControl); + PreventInput(); + + if (egoX == 80) + { + script = 2; + } + else + { + x = 80; + MoveObjV( ego, x, egoY, step, scriptDone); + } + } + + if (script == 2) + { + PreventInput(); + MoveObj( ego, 80, 120, 1, scriptDone); + } + + if (script == 3) + { + PreventInput(); + SetLoop( aFawn, FACING_BACK); + + StopUpdate( ego); + SetLoop( ego, FACING_BACK); + ForceUpdate( ego); + + Print( 3); + Print( 4); + StartCycling( aMinister); + scriptTimer = TALK_TIME; + } + + if (script == 4) + { + Print( 5); + scriptTimer = TALK_TIME; + } + + if (script == 5) + { + Print( 6); + scriptTimer = TALK_TIME; + } + + if (script == 6) + { + Print( 7); + Print( 8); + scriptTimer = TALK_TIME; + } + + if (script == 7) + { + Print( 9); + scriptTimer = TALK_TIME; + } + + if (script == 8) + { + Print( 10); + Print( 11); + + if (dollars < 100) + { + script = 9; + } + else + { + script = 101; + } + } + + if (script == 9) [ Start the "not enough money" branch. + { + Print( 13); + Print( 14); + + IgnoreObjs( aMinister); + RepositionTo( aMinister, 76, 121); + SetLoop( aMinister, L_WALKING); + MoveObj( aMinister, 76, 167, 2, scriptDone); + scriptCycles = 12; + } + + if (script == 10) + { + Print( 15); + SetLoop( aFawn, FACING_FRONT); + + StartUpdate( ego); + MoveObj( ego, 76, 167, 1, scriptDone); + scriptCycles = 12; + } + + if (script == 11) + { + Erase( aMinister); + Reset( ministerHere); + Print( 16); + Print( 17); + Print( 18); + Print( 19); + } + + if (script == 12) + { + Print( 20); + Erase( ego); + Set( unsuccessfulCeremony); + Reset( programControl); + AcceptInput(); + newRoom = rmOutsideChapel; + } + + + + if (script == 101) [ He's got enough to pay for it. + { + Print( 12); + Print( 21); + dollars -= 100; + Set( marriedFawn); + IgnoreObjs( aMinister); + SetLoop( aMinister, L_WALKING); + RepositionTo( aMinister, 76, 121); + StartCycling( aMinister); + MoveObj( aMinister, 76, 167, 2, scriptDone); + scriptCycles = 12; + } + + if (script == 102) + { + Print( 22); + } + + if (script == 103) + { + Erase( aMinister); + + Print( 23); + + StartUpdate( aFawn); + StartCycling( aFawn); + MoveObj( aFawn, 76, 167, 2, scriptDone); + scriptCycles = 12; + } + + if (script == 104) + { + Print( 24); + StartUpdate( ego); + StartMotion( ego); + Reset( programControl); + ObserveObjs( ego); + } + + if (script == 105) + { + Erase( aFawn); + Set( gotMarried); + currentScore += 12; + Reset( fawnHere); + StopSound(); + Set( fawnInRoom); + script = 0; + AcceptInput(); + } + } + + +if (fawnHere && musicDone) + { + Sound( mWedding, musicDone); + } + + + +[***** +:exit [ test for leaving the room +[***** + +if (edgeEgoHit == BOTTOM) + { + newRoom = rmOutsideChapel; + if (gotMarried) + { + Print( 25); + } + } diff --git a/RM34.MSG b/RM34.MSG new file mode 100644 index 0000000..9af9c07 --- /dev/null +++ b/RM34.MSG @@ -0,0 +1,147 @@ +[messages for room 34 -- rmInsideChapel +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"You are in a quickie marriage parlor. + A flashing neon sign on the rear wall asks: + \"Why wait? Marry the girl of your dreams, today! + You provide the girl, we'll do the rest for only $100!!\"" + +%message 2 +"Fawn is waiting for you at the altar. Go for it, Larry!" + +%message 3 +"The minister intones in his basso voice..." + +%message 4 +"\"Dearly beloved, we are gathered together today in the sight of, + er, ah, um... each other, + to enter these two people into the eternal bonds of marriage.\"" + +%message 5 +"\"But before we really get rollin', I'd like to say a few words.\n\n +Many's the marriage that I've performed here, in this little chapel, + wearing this cheap suit, before those shiny plastic-covered pews, + with these electric candles, + looking at those genuine plexiglas stained-glass windows, + for these measly few bucks...\"" + +%message 6 +"(He pauses for another nip from his pocket flask.)" + +%message 7 +"\"Where was I?\" he hiccups." + +%message 8 +"\"Digressing,\" you answer." + +%message 9 +"\"Oh, well, have you got a ring?\" he asks." + +%message 10 +"\"Yep,\" you reply. \"She's wearing it.\"" + +%message 11 +"\"Good enough for me! Have you got a hundred bucks?\"" + +%message 12 [ Skip to message 21, if dollars > 100 +"\"Of course,\" you reply, forking over your dough." + +%message 13 +"\"Not me,\" you reply. \"I thought this was a temple of love!\"" + +%message 14 +"\"Sorry, buddy, you two are SOL until you can come back here with + 100 cold, hard ones!\" he says indignantly, as he pushes between you + and heads for the door." + +%message 15 +"Well, Larry, it looks like you're going to have to leave your new bride + waiting at the altar, while you generate a little positive cash flow!" + +%message 16 +"As you leave, she says, \"Hurry back, Larry, I don't know how long I + can wait before I have you!\"" + +%message 17 +"\"By the way, Larry,\" she asks. \"What does SOL stand for?\"" + +%message 18 +"\"Why, Sierra On-Line, I presume!\" you respond." + +%message 19 +"(Drum fill)" + +%message 20 +"\"Wait here, Fawn baby! I'll be back in a flash!!\"" + +%message 21 +"\"Ok, close enough. + I now pronounce you man and wife, till death do you part, + or until you get tired of each other, + per the currently acceptable social standards!\"" + +%message 22 +"\"You may kiss the bride,\" he says, + scurrying out the door to refill his flask." + +%message 23 +"\"Not now; that can wait,\" Fawn says with a smile. + \"I'll meet you at the Casino Hotel's honeymoon suite, + and give you a lot more than kisses, my big, strong, handsome sweetheart!!\"" + +%message 24 +"\"Hey!\" you shout, \"Wait for me!!\"" + +%message 25 +"Somehow this entire ceremony was less than you expected. + The sacred bonds of marriage certainly get tied loosely in this joint!" + +%message 26 +"It's customary to position yourself to the bride's right." + +%message 27 +"\"So... shall we try again?\"" + +%message 28 +"You can't see through the \"stained glass\" windows. + They're fake, like everything else about this place." + +%message 29 +"Seems like everything here is covered in plastic." + +%message 30 +"The plastic covers are so slick, you'd probably slide right off." + +%message 31 +"Perhaps you should find a mate, mate!" + +%message 32 +"You can barely tell they're made from pressed sawdust." + +%message 33 +"Who'd want them?" + +%message 34 +"He looks a lot like his brother, + the bad comedian in the Lizard Lounge." + +%message 35 +"\"Make up your mind, son. Time is money!\"" + +%message 36 +"\"Don't stand around talking, Larry,\" says Fawn. \"Let's get married!!\"" + +%message 37 +"What an old romantic!" + +%message 38 +"You wonder why Michelangelo didn't use dropped fluorescents on + his big ceiling job." + +%message 39 +"It's not your birthday!" + diff --git a/RM35.CG b/RM35.CG new file mode 100644 index 0000000..7360bc3 --- /dev/null +++ b/RM35.CG @@ -0,0 +1,570 @@ +[logics for room 35 -- rmElevators +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm35.msg" +%include "gamedefs.h" + + + + +[ There is an ashtray near the planter. Look ash tray. "get passcard" + +[ script == 0 begins the raise elevator sequence; +[ script == 100 lowers the elevator to the bottom and releases ego. + +[ #define L_EMPTY 0 +[ #define L_FLOOR 1 +[ #define L_DOORS 2 +[ #define L_WITH_EGO 3 + +%define CEILING_Y 37 +%define FLOOR_Y 118 + +%define inElevator lf0 +%define nearAshTray lf1 +%define elevatorMoving lf4 +%define nearBrokenPhone lf5 + +%object aElevator 1 +%object aDoor 2 +%object aFloor 3 +%object aNumber 4 +%object aAshtray 5 + + + +if (initLog) + { + SetHorizon( 1); + + LoadPic( currentRoom); + DrawPic( currentRoom); + DiscardPic( currentRoom); + + LoadView( vElevator); + LoadView( vElevatorNumbers); + LoadView( vEgoPushingElevator); + LoadView( vEgo); + LoadView( vAshtray); +[ LoadView( v); + + AnimateObj( aAshtray); + IgnoreBlocks( aAshtray); + SetView( aAshtray, vAshtray); + if (ObjInRoom( iDiscoPass, currentRoom)) + { + SetCel( aAshtray, 0); + } + else + { + SetCel( aAshtray, 1); + } + Position( aAshtray, 77, 159); + StopCycling( aAshtray); + Draw( aAshtray); + StopUpdate( aAshtray); + + AnimateObj( aNumber); + IgnoreBlocks( aNumber); + IgnoreObjs( aNumber); + SetView( aNumber, vElevatorNumbers); + SetPriority( aNumber, 5); + Position( aNumber, 73, 91); + SetCel( aNumber, 1); + StopCycling( aNumber); + + AnimateObj( aDoor); + IgnoreBlocks( aDoor); + IgnoreObjs( aDoor); + SetView( aDoor, vElevator); + SetLoop( aDoor, L_DOORS); + FixLoop( aDoor); + SetPriority( aDoor, 4); + Position( aDoor, 73, 108); + work = DOOR_CYCLE_TIME; + CycleTime( aDoor, work); + + AnimateObj( aFloor); + IgnoreBlocks( aFloor); + IgnoreObjs( aFloor); + SetView( aFloor, vElevator); + SetLoop( aFloor, L_FLOOR); + FixLoop( aFloor); + Position( aFloor, 73, 118); + SetPriority( aFloor, 5); + + AnimateObj( aElevator); + IgnoreBlocks( aElevator); + IgnoreObjs( aElevator); + SetView( aElevator, vElevator); + SetPriority( aElevator, 11); + FixLoop( aElevator); + StepSize( aElevator, two); + if (currentStatus == IN_ELEVATOR) + { + Set( elevatorMoving); + currentStatus = IN_ELEVATOR; + + SetLoop( aElevator, L_WITH_EGO); + LastCel( aElevator, work); + SetCelV( aElevator, work); + StopCycling( aElevator); + Position( aElevator, 73, 36); + Draw( aElevator); + MoveObj( aElevator, 73, 118, 2, scriptDone); + script = 100; + + Draw( aDoor); + StopUpdate( aDoor); + + Draw( aNumber); + + SetView( ego, vEgo); + SetLoop( ego, FACING_FRONT); + SetPriority( ego, 12); + egoX = 75; + egoY = 119; + [ Don't Draw ego! + } + else + { + Draw( aFloor); + StopUpdate( aFloor); + + SetLoop( aElevator, L_EMPTY); + SetCel( aElevator, 0); + Position( aElevator, 73, 118); + Draw( aElevator); + StopUpdate( aElevator); + + if (previousRoom == rmLounge) + { + egoX = 128; + egoY = 104; + SetLoop( ego, FACING_LEFT); + PositionV( ego, egoX, egoY); + Draw( ego); + StartMotion( ego); + } + else + { + if (!previousRoom) + { + egoX = 75; + egoY = 115; + } + PositionV( ego, egoX, egoY); + Draw( ego); + } + } + + IgnoreObjs( ego); + + ShowPic( ); + + Return( ); + + } [ end initLOG + + + +Reset( inElevator); +if (Posn( ego, 70, 110, 83, 120)) + { + Set( inElevator); + } + +Reset( nearBrokenPhone); +if (Posn( ego, 96, 101, 111, 106)) + { + Set( nearBrokenPhone); + } + +Reset( nearAshTray); +if (Posn( ego, 62, 155, 87, 163)) + { + Set( nearAshTray); + } + +if (egoY > 119 && egoY < 133) + { + SetPriority( ego, 12); + } +else + { + ReleasePriority( ego); + } + + +[***** +:handleInput +[***** + +if (!haveInput) {goto noInput;} + +if (elevatorMoving && !haveMatch) + { + if ((Said( listen) || + Said( sing) || + Said( sing, along))) + { + Print( 7); + } + else + { + Set( haveMatch); + Print( 5); + } + } + +if ((Said( up) || + Said( down))) + { + Print( 4); + } + +if ((Said( look) || + Said( look, room) || + Said( look, wall) || + Said( look, elevator))) + { + if (inElevator) + { + Print( 2); + Print( 3); + } + else + { + Print( 1); + } + } + +if (Said( look$in, plants)) + { + if (inElevator) + { + Set( notCloseEnough); + } + else + { + Print( 10); + } + } + +if (Said( look, plants)) + { + if (inElevator) + { + Print( 6); + Print( 8); + } + else + { + Print( 10); + } + } + +if (Said( close, door)) + { + if (inElevator) + { + Print( 15); + } + else + { + Print( 16); + } + } + + +if ((Said( look, ashtray) || + Said( look$in, ashtray))) + { + if (egoY < 150) + { + Print( 14); + } + else + { + if (ObjInRoom( iDiscoPass, currentRoom)) + { + Print( 12); + } + else + { + Print( 13); + } + } + } + +if (Said( anyword, ashtray)) + { + if (egoY < 150) + { + Print( 14); + } + else + { + if (ObjInRoom( iDiscoPass, currentRoom)) + { + Print( 12); + } + else + { + Print( 18); + } + } + } + +if ((Said( get, pass) || + Said( get, card))) + { + if (!nearAshTray) + { + Set( notCloseEnough); + } + else + { + if (!ObjInRoom( iDiscoPass, currentRoom)) + { + Set( alreadyGotIt); + } + else + { + SetCel( aAshtray, 1); + ForceUpdate( aAshtray); + Get( iDiscoPass); + currentScore += 1; + Set( OK); + } + } + } + +if ((Said( look, phone) || + Said( use, phone) || + Said( make, phone, call) || + Said( dial, phone))) + { + if (!nearBrokenPhone) + { + Set( notCloseEnough); + } + else + { + Print( 21); + } + } + +if ((Said( get, gum) || + Said( remove, gum))) + { + if (!nearBrokenPhone) + { + Set( notCloseEnough); + } + else + { + Print( 22); + } + } + +if ((Said( look, phone, book) || + Said( look, book))) + { + if (!nearBrokenPhone) + { + Set( notCloseEnough); + } + else + { + Print( 20); + } + } + +if ((Said( answer, phone) || + Said( get, phone) || + Said( answer))) + { + if (!nearBrokenPhone) + { + Set( notCloseEnough); + } + else + { + Print( 19); + } + } + + +if (!script && inElevator) + { + if ((Said( press, one) || + Said( press, button, one) || + Said( one))) + { + destinationFloor = 1; + Set( scriptDone); + } + + if ((Said( press, two) || + Said( press, button, two) || + Said( two))) + { + destinationFloor = 2; + Set( scriptDone); + } + + if ((Said( press, three) || + Said( press, button, three) || + Said( three))) + { + destinationFloor = 3; + Set( scriptDone); + } + + if ((Said( press, four) || + Said( press, button, four) || + Said( four))) + { + destinationFloor = 4; + Set( scriptDone); + } + + if ((Said( press, five) || + Said( press, button, five) || + Said( five))) + { + destinationFloor = 5; + Set( scriptDone); + } + + if ((Said( press, six) || + Said( press, button, six) || + Said( six))) + { + destinationFloor = 6; + Set( scriptDone); + } + + if ((Said( press, seven) || + Said( press, button, seven) || + Said( seven))) + { + destinationFloor = 7; + Set( scriptDone); + } + + if ((Said( press, eight) || + Said( press, button, eight) || + Said( eight))) + { + destinationFloor = 8; + Set( scriptDone); + } + + if ((Said( push, rol) || + Said( push, button, rol))) + { + Print( 4); + } + } + + +[***** +:noInput +[***** + +if (scriptDone) + { + Reset( scriptDone); + ++script; + + if (script == 1) + { + Set( elevatorMoving); + currentStatus = IN_ELEVATOR; + StopMotion( ego); + Set( programControl); + SetView( ego, vEgoPushingElevator); + SetCel( ego, 0); + RepositionTo( ego, 76, 117); + CycleTime( ego, three); + Set( keepCycling); + EndOfLoop( ego, scriptDone); + } + + if (script == 2) + { + Erase( ego); + SetView( ego, vEgo); + + SetLoop( aElevator, L_WITH_EGO); + SetCel( aElevator, 0); + CycleTime( aElevator, three); + EndOfLoop( aElevator, scriptDone); + } + + if (script == 3) + { + Erase( aFloor); + Draw( aDoor); + Draw( aNumber); + + StopCycling( aElevator); + if (destinationFloor == 1) + { + Print( 9); + script = 101; [ We'll catch it immediately. + } + else + { + MoveObj( aElevator, 73, 36, 2, scriptDone); + } + } + + if (script == 4) + { + newRoom = rmElevators; + } + + + if (script == 101) [ He's at bottom; let him out. + { + Erase( aDoor); + Erase( aNumber); + + CycleTime( aElevator, two); + StartCycling( aElevator); + BeginningOfLoop( aElevator, scriptDone); + } + + if (script == 102) + { + Reset( elevatorMoving); + currentStatus = NORMAL; + destinationFloor = 0; + script = 0; + SetLoop( aElevator, L_EMPTY); + + Draw( aFloor); + + SetView( ego, vEgo); + SetLoop( ego, FACING_FRONT); + SetCel( ego, 0); + Position( ego, 76, 116); + Draw( ego); + StartMotion( ego); + Reset( programControl); + CycleTime( ego, one); + Reset( keepCycling); + } + } + + +[***** +:exit [ test for leaving the room +[***** + +if (edgeEgoHit == BOTTOM) {newRoom = rmInsideCasino;} +if (Posn( ego, 131, 101, 132, 106)) {newRoom = rmLounge;} diff --git a/RM35.MSG b/RM35.MSG new file mode 100644 index 0000000..6fc593d --- /dev/null +++ b/RM35.MSG @@ -0,0 +1,79 @@ +[messages for room 35 -- rmElevators +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"The entrance to the Cabaret Lounge is to the right, by the telephone. + A glass elevator awaits you. + An ashtray is in front of the planter." + +%message 2 +"You are inside the glass elevator. + Your favorite kind of music is playing. + You hum along, insipidly." + +%message 3 +"There are buttons labeled \"one\" through \"eight.\"" + +%message 4 +"Type a word, like \"one\" or \"two.\"" + +%message 5 +"Whee!" + +%message 6 +"You know, the people on those plants look like ants from up here." + +%message 7 +"\"strangers in the night, da da da dee da...\"" + +%message 8 +"Those ARE ants, you fool; we haven't left the ground yet!" + +%message 9 +"Wasn't that a fast ride!" + +%message 10 +"They're of your favorite species: polyvinyl chloride. + There is an ashtray in front of the planter." + +%message 11 +"You carefully remove the card from the cancerous remains in the ashtray. + It's a valid pass to the disco!" + +%message 12 +"There's some kind of card in the ashtray." + +%message 13 +"Yuck!" + +%message 14 +"Where?" + +%message 15 +"The doors close whenever you choose a floor." + +%message 16 +"Go inside and push a button." + +%message 17 +"It's of no interest." + +%message 18 +"The ashtray is of no further interest since you have the card." + +%message 19 +"It's not ringing." + +%message 20 +"All the pages are torn out." + +%message 21 +"Somebody filled the coin slot with chewing gum." + +%message 22 +"You can't. It's so firmly embedded, nothing will get it out. + You'll just have to find another telephone." + diff --git a/RM36.CG b/RM36.CG new file mode 100644 index 0000000..3537793 --- /dev/null +++ b/RM36.CG @@ -0,0 +1,869 @@ +[logics for room 36 -- rmLounge +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm36.msg" +%include "gamedefs.h" +%include "iv_views.h" + + + +%define GIRL_Y 93 +%define JOKE_MAX 37 [ number of gags in repetoire +%define ZINGER_MIN 21 [ number of first zinger message +%define ZINGER_MAX 26 [ number of last zinger message + +%define mcOnStage lf0 +%define girlsOnStage lf1 +%define girlsAtRight lf2 +%define girlsAtLeft lf3 +%define nearChair lf4 +%define egoSitDone lf5 +%define egoStandDone lf6 +%define drummerDone lf7 +%define outOfJokes lf8 +%define cushionDone lf9 +%define doMagicTrick lf10 +%define heardJoke1 lf11 +%define heardJoke2 lf12 +%define heardJoke3 lf13 +%define heardJoke4 lf14 +%define heardJoke5 lf15 +%define heardJoke6 lf16 +%define heardJoke7 lf17 +%define heardJoke8 lf18 +%define heardJoke9 lf19 +%define heardJoke10 lf20 +%define heardJoke11 lf21 +%define heardJoke12 lf22 +%define heardJoke13 lf23 +%define heardJoke14 lf24 +%define heardJoke15 lf25 +%define heardJoke16 lf26 +%define heardJoke17 lf27 +%define heardJoke18 lf28 +%define heardJoke19 lf29 +%define heardJoke20 df0 +%define heardJoke21 df1 +%define heardJoke22 df2 +%define heardJoke23 df3 +%define heardJoke24 df4 +%define heardJoke25 df5 +%define heardJoke26 df6 +%define heardJoke27 df7 +%define heardJoke28 df8 +%define heardJoke29 df9 +%define heardJoke30 df10 +%define heardJoke31 df11 +%define heardJoke32 df12 +%define heardJoke33 df13 +%define heardJoke34 df14 +%define heardJoke35 df15 +%define heardJoke36 df16 +%define heardJoke37 df17 +%define heardJoke38 df18 +%define heardJoke39 df19 +[ %define heardJoke40 df20 +[ %define heardJoke41 df21 +[ %define heardJoke42 df22 +[ %define heardJoke43 df23 +[ %define heardJoke44 df24 +[ %define heardJoke45 df25 + +%define joke lv0 +%define zinger lv1 +%define trickTimer lv2 + + +%object aMC 1 +%object aGirls 2 +%object aCandle1 3 +%object aCandle2 4 +%object aCandle3 5 +%object aCandle4 6 +%object aCandle5 7 +%object aDrummer 8 + + + +if (initLog) + { + LoadPic( currentRoom); + DrawPic( currentRoom); + DiscardPic( currentRoom); + + LoadView( vLoungeCandles); + LoadView( vEgoSittingLounge); + LoadSound( sWhoopieCushion); + + AnimateObj( aCandle1); + IgnoreObjs( aCandle1); + SetView( aCandle1, vLoungeCandles); + SetCel( aCandle1, 0); + SetPriority( aCandle1, 11); + Position( aCandle1, 41, 110); + Draw( aCandle1); + + AnimateObj( aCandle2); + IgnoreObjs( aCandle2); + SetView( aCandle2, vLoungeCandles); + SetCel( aCandle2, 1); + SetPriority( aCandle2, 11); + Position( aCandle2, 78, 110); + Draw( aCandle2); + + AnimateObj( aCandle3); + IgnoreObjs( aCandle3); + SetView( aCandle3, vLoungeCandles); + SetCel( aCandle3, 2); + SetPriority( aCandle3, 11); + Position( aCandle3, 115, 110); + Draw( aCandle3); + + AnimateObj( aCandle4); + IgnoreObjs( aCandle4); + SetView( aCandle4, vLoungeCandles); + SetCel( aCandle4, 0); + SetPriority( aCandle4, 14); + Position( aCandle4, 58, 140); + Draw( aCandle4); + + AnimateObj( aCandle5); + IgnoreObjs( aCandle5); + SetView( aCandle5, vLoungeCandles); + SetCel( aCandle5, 1); + SetPriority( aCandle5, 14); + Position( aCandle5, 98, 140); + Draw( aCandle5); + + Random( 1, 2, work); + if (work == 1) + { + Random( 1, 3, work); + if (work == 1) + { + Set( doMagicTrick); + Random( 20, 40, trickTimer); + } + + Set( mcOnStage); + LoadView( vLoungeComedian); + LoadView( vDrummer); + LoadSound( sDrummer); + + AnimateObj( aMC); + SetView( aMC, vLoungeComedian); + SetCel( aMC, 0); + Position( aMC, 77, 93); + Draw( aMC); + StopUpdate( aMC); + scriptCycles = 51; + + AnimateObj( aDrummer); + SetView( aDrummer, vDrummer); + SetCel( aDrummer, 0); + Position( aDrummer, 41, 92); + Draw( aDrummer); + StopUpdate( aDrummer); + } + else + { + Set( girlsOnStage); + LoadView( vLoungeDancers); + LoadSound( mCanCan); + + AnimateObj( aGirls); + SetView( aGirls, vLoungeDancers); + Position( aGirls, 70, 93); + Draw( aGirls); + Set( girlsAtRight); + Set( musicDone); + } + + + egoX = 25; + egoY = 167; + SetLoop( ego, FACING_BACK); + PositionV( ego, egoX, egoY); + Draw( ego); + StartMotion( ego); + + ShowPic( ); + + Return( ); + + } [ end initLOG + + +Reset( nearChair); +if (Posn( ego, 100, 145, 114, 163)) + { + Set( nearChair); + } + +if (mcOnStage && + secondsInRoom > 15) + { + Set( nearPerson); + } + + +[***** +:handleInput +[***** + +if (!haveInput) {goto noInput;} + +if ((Said( look) || + Said( look, room))) + { + Print( 1); + Print( 2); + } + +if (mcOnStage && + (Said( heckle, comic) || + Said( talk, comic) || + Said( yell, comic))) + { + Print( 13); + Print( 14); + } + +if (Said( applaud, rol)) + { + if (mcOnStage) + { + Print( 111); + } + else + { + Print( 112); + } + } + +if ((Said( name, room) || + Said( name, place))) + { + Print( 15); + Print( 2); + } + +if ((Said( look, top, table) || + Said( look, table) || + Said( look, chair))) + { + Print( 6); + } + +if (Said( look, ashtray)) + { + Print( 77); + } + +if (Said( look, candle)) + { + Print( 7); + Print( 8); + } + +if (Said( look, stage)) + { + if (mcOnStage) + { + Print( 9); + } + else + { + Print( 10); + } + } + +if (Said( look, man)) + { + if (mcOnStage) + { + Print( 9); + } + else + { + Print( 11); + } + } + +if ((Said( look, girl) || + Said( look, dancers) || + Said( look, show, girls))) + { + if (mcOnStage) + { + Print( 12); + } + else + { + Print( 10); + } + } + +if (mcOnStage && + Said( anyword, drummer, rol)) + { + Print( 18); + } + +if ((Said( wave, girls, rol) || + Said( wave, comic, rol) || + Said( whistle, girls, rol)|| + Said( whistle, comic, rol))) + { + if (mcOnStage) + { + Print( 19); + Print( 20); + } + else + { + Print( 78); + Print( 79); + } + } + + + +if ((Said( buy, drink) || + Said( call, waiter) || + Said( order, rol) || + Said( get, drink))) + { + if (currentStatus != SITTING) + { + Print( 16); + } + else + { + Print( 17); + } + } + + +if ((Said( sit) || + Said( sit, table) || + Said( sit, chair) || + Said( sit, down))) + { + if (currentStatus == SITTING) + { + Print( 3); + } + else + { + if (!nearChair) + { + Print( 5); + } + else + { + currentStatus = SITTING; + StopMotion( ego); + Set( programControl); + SetView( ego, vEgoSittingLounge); + SetCel( ego, 0); + SetPriority( ego, 15); + RepositionTo( ego, 107, 152); + StopSound(); + Sound( sWhoopieCushion, musicDone); + EndOfLoop( ego, cushionDone); + Set( keepCycling); + } + } + } + +if ((Said( stand) || + Said( leave, table) || + Said( rise) || + Said( stand, up))) + { + if (currentStatus != SITTING) + { + Print( 4); + } + else + { + Set( OK); + Reset( keepCycling); + SetView( ego, vEgo); + ReleasePriority( ego); + RepositionTo( ego, 107, 151); + Reset( programControl); + StartMotion( ego); + currentStatus = NORMAL; + } + } + +if ((Said( climb, stage) || + Said( climb, on, stage) || + Said( jump, on, stage) || + Said( sit, on, stage) || + Said( sing, rol) || + Said( dance, rol) || + Said( go, stage))) + { + Print( 80); + } + +if (Said( throw, rose, rol)) + { + Print( 81); + Drop( iRose); + } + +if (Said( get, rose)) + { + Print( 100); + } + + +[***** +:noInput +[***** + +if (cushionDone) + { + Reset( cushionDone); + Print( 75); + StopCycling( ego); + Reset( keepCycling); + if (!satOnWhoopieCushion) + { + Set( satOnWhoopieCushion); + currentScore += 1; + } + } + +if (girlsAtRight) + { + Reset( girlsAtRight); + MoveObj( aGirls, 47, GIRL_Y, 1, girlsAtLeft); + } + +if (girlsAtLeft) + { + Reset( girlsAtLeft); + MoveObj( aGirls, 93, GIRL_Y, 1, girlsAtRight); + } + + +if (scriptDone) + { + Reset( scriptDone); + ++script; + + if (script == 1) + { + Random( 12, 22, scriptCycles); + if (typing) + { + --script; [ Try again in a little while. + } + else + { + StartUpdate( aMC); + } + } + + if (script == 2) + { + Random( 8, 14, scriptCycles); + + if (typing) + { + --script; [ Try again in a little while. + } + else + { + SetCel( aMC, 0); + StopUpdate( aMC); + ForceUpdate( aMC); + + if ((!heardJoke1 || + !heardJoke2 || + !heardJoke3 || + !heardJoke4 || + !heardJoke5 || + !heardJoke6 || + !heardJoke7 || + !heardJoke8 || + !heardJoke9 || + !heardJoke10 || + !heardJoke11 || + !heardJoke12 || + !heardJoke13 || + !heardJoke14 || + !heardJoke15 || + !heardJoke16 || + !heardJoke17 || + !heardJoke18 || + !heardJoke19 || + !heardJoke20 || + !heardJoke21 || + !heardJoke22 || + !heardJoke23 || + !heardJoke24 || + !heardJoke25 || + !heardJoke26 || + !heardJoke27 || + !heardJoke28 || + !heardJoke29 || + !heardJoke30 || + !heardJoke31 || + !heardJoke32 || + !heardJoke33 || + !heardJoke34 || + !heardJoke35 || + !heardJoke36 || + !heardJoke37)) [ || + [ !heardJoke38 || + [ !heardJoke39)) || + [ !heardJoke40 || + [ !heardJoke41 || + [ !heardJoke42 || + [ !heardJoke43 || + [ !heardJoke44 || + [ !heardJoke45)) + { + :pickAJoke; + Random( 1, JOKE_MAX, joke); + work = joke; + work += 210; [ Because flags are 211-255. + if (IssetV( work)) [ Be sure it's a new one. + { + goto pickAJoke; + } + + SetV( work); + + if (joke == 1) + { + Print( 27); + Print( 28); + } + + if (joke == 2) + { + Print( 29); + Print( 30); + } + + if (joke == 3) + { + Print( 31); + Print( 32); + } + + if (joke == 4) + { + Print( 33); + Print( 34); + } + + if (joke == 5) + { + Print( 35); + Print( 36); + } + + if (joke == 6) + { + Print( 37); + Print( 38); + } + + if (joke == 7) + { + Print( 39); + Print( 40); + } + + if (joke == 8) + { + Print( 41); + Print( 42); + } + + if (joke == 9) + { + Print( 43); + } + + if (joke == 10) + { + Print( 44); + Print( 45); + } + + if (joke == 11) + { + Print( 46); + } + + if (joke == 12) + { + Print( 47); + } + + if (joke == 13) + { +[ Print( 48); + Print( 109); + Print( 110); + } + + if (joke == 14) + { + Print( 49); + Print( 50); + } + + if (joke == 15) + { + Print( 51); + } + + if (joke == 16) + { + Print( 52); + } + + if (joke == 17) + { + Print( 53); + Print( 54); + Print( 55); + Print( 56); + Print( 57); + } + + if (joke == 18) + { + Print( 58); + Print( 59); + } + + if (joke == 19) + { + Print( 60); + Print( 61); + } + + if (joke == 20) + { + Print( 62); + Print( 76); + } + + if (joke == 21) + { + Print( 63); + Print( 64); + } + + if (joke == 22) + { + Print( 65); + } + + if (joke == 23) + { + Print( 66); + Print( 67); + } + + if (joke == 24) + { + Print( 68); + Print( 69); + } + + if (joke == 25) + { + Print( 70); + } + + if (joke == 26) + { + Print( 71); + } + + if (joke == 27) + { + Print( 72); + Print( 73); + } + + if (joke == 28) + { + Print( 74); + Print( 93); + } + + if (joke == 29) + { + Print( 94); + Print( 95); + } + + if (joke == 30) + { + Print( 96); + Print( 97); + } + + if (joke == 31) + { + Print( 98); + Print( 99); + } + + if (joke == 32) + { + Print( 96); + Print( 97); + } + + if (joke == 33) + { + Print( 98); + Print( 99); + } + + if (joke == 34) + { + Print( 101); + Print( 102); + } + + if (joke == 35) + { + Print( 103); + Print( 104); + } + + if (joke == 36) + { + Print( 105); + Print( 106); + } + + if (joke == 37) + { + Print( 107); + Print( 108); + } + +[ if (joke == 38) +[ { +[ } + +[ if (joke == 39) +[ { +[ Print( ); +[ Print( ); +[ } +[ +[ if (joke == 40) +[ { +[ Print( ); +[ Print( ); +[ } +[ + } + else + { + Set( outOfJokes); + Print( 113); + SetCel( aMC, 0); + StopUpdate( aMC); + ForceUpdate( aMC); + script = 0; + scriptTimer = 0; + scriptCycles = 0; + } + } + } + + if (script == 3) + { + StartUpdate( aDrummer); + Sound( sDrummer, done); + EndOfLoop( aDrummer, scriptDone); + } + + if (script == 4) + { + SetCel( aDrummer, 0); + StopUpdate( aDrummer); + ForceUpdate( aDrummer); + + StartUpdate( aMC); + Random( 11, 22, scriptCycles); + } + + if (script == 5) + { + Random( 4, 7, scriptTimer); [ Time before next joke. + if (typing) + { + --script; [ Try again in a little while. + } + else + { + script = 0; + + SetCel( aMC, 0); + StopUpdate( aMC); + ForceUpdate( aMC); + + if (!outOfJokes) + { + Random( ZINGER_MIN, ZINGER_MAX, zinger); + PrintV( zinger); + } + } + } + } + + +if (musicDone && girlsOnStage) + { + Sound( mCanCan, musicDone); + } + +if (aSecondPassed && trickTimer) + { + --trickTimer; + if (trickTimer == 1) + { + if (script) + { + trickTimer = 2; + } + else + { + message = 82; + :mrLooper; + PrintV( message); + ++message; + if (!message > 92) + { + goto mrLooper; + } + ShowObj( ivWallet); + } + } + } + +[***** +:exit [ test for leaving the room +[***** + +if (edgeEgoHit == BOTTOM) {newRoom = rmElevatorBottom;} diff --git a/RM36.MSG b/RM36.MSG new file mode 100644 index 0000000..1b11c91 --- /dev/null +++ b/RM36.MSG @@ -0,0 +1,383 @@ +[messages for room 36 -- rmLounge +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"This looks like a great place to be from." + +%message 2 +"(You wonder where they keep the lizards.)" + +%message 3 +"You are sitting." + +%message 4 +"You are standing." + +%message 5 +"You can't. The card on the table says \"Reserved.\"" + +%message 6 +"Looks like you won't have any trouble getting a seat tonight!" + +%message 7 +"You wonder who invented that little plastic net surrounding the glass." + +%message 8 +"And, how come it doesn't melt?" + +%message 9 +"Evidently, HE thinks he's funny!" + +%message 10 +"Wouldn't you think they'd get tired of just going left and right?" + +%message 11 +"You think they look like men?" + +%message 12 +"Do you know something about his sexual habits that the rest of us don't?" + +%message 13 +"You shout to the comedian, \"This ain't funny!\"" + +%message 14 +"The comedian retorts, \"But you are!!\"" + +%message 15 +"The Lizard Lounge." + +%message 16 +"You're not seated." + +%message 17 +"There's no one to take your order." + +%message 18 +"It's a living." + +%message 19 +"You whistle loudly at the comic." + +%message 20 +"\"Hey, buddy, will ya hold it down?\" says the comic. + \"I'm tryin' to earn a living up here!\"" + +%message 21 +"\"Whaddsa' matter, folks? Am I keeping you up?\"" + +%message 22 +"\"You know, folks, it just don't get much better than this!\"" + +%message 23 +"\"Waddaya out there, a painting?\"" + +%message 24 +"\"Tough crowd. Tough crowd.\"" + +%message 25 +"\"I shoulda never given up my day gig!\"" + +%message 26 +"\"Waddaya waitin' for folks? This IS the 'A' stuff!\"" + +%message 27 +"\"I just flew in from Coarsegold...\"" + +%message 28 +"\"...and, boy, are my arms tired!\"" + +%message 29 +"\"I told my doctor my sex life was boring. + He said 'You need to add the element of surprise. + Go right home this afternoon, grab your wife, + and immediately make love to her, no matter what she's doing.' So I did!\"" + +%message 30 +"\"It was still the same old boring stuff; + but her bridge club got a tremendous kick out of it!!\"" + +%message 31 +"\"You know how I can tell when my wife has an orgasm?\"" + +%message 32 +"\"She drops her nail file!!\"" + +%message 33 +"\"My wife is so ugly...\"" + +%message 34 +"\"...the picture of her in my wallet is an X-ray!\"" + +%message 35 +"\"I told my psychiatrist 'Nobody pays any attention to me.'\"" + +%message 36 +"\"He looks at me and says, 'When did you get here?'\"" + +%message 37 +"\"Didja hear about the clumsy female lawyer?\"" + +%message 38 +"\"She dropped her briefs!\"" + +%message 39 +"\"A man walks into a doctor's office with a frog on his head. + The doctor says, 'May I help you?'\"" + +%message 40 +"\"The frog says, 'Yeah, doc, take this wart off my butt!\"" + +%message 41 +"\"Did you hear about the new, chocolate-flavored, contraceptive, + breakfast drink?\"" + +%message 42 +"\"It's called Ovumteen.\"" + +%message 43 +"\"My secretary is both ambitious and horny. Today she asked me for a salary + on next week's advance.\"" + +%message 44 +"\"Down the street there's a new, live gay sex show.\"" + +%message 45 +"\"It's called 'Anus and Andy.'\"" + +%message 46 +"\"Have ya seen that new R-rated movie about midgets. + It features full runtal nudity.\"" + +%message 47 +"\"My uncle is a hit man for the Mob. What a great job! + He only goes to work when it's time to knock off.\"" + +%message 48 +"" + +%message 49 +"\"When I got married I asked my bride, 'Do you perform fellatio?'\"" + +%message 50 +"\"She says it depends on the fella.\"" + +%message 51 +"\"Have you been by the wedding chapel next door? + They've got this impotent flasher out front. + We just call him our 'public futility.'\"" + +%message 52 +"\"I hear the pimp at Lefty's won't let his girls perform oral sex. + They call him the 'Headless Whoresman.'\"" + +%message 53 +"\"What do lesbians like most about their kind of sex?\"" + +%message 54 +"\"Tastes great.\"" + +%message 55 +"\"Less filling.\"" + +%message 56 +"\"Tastes great!\"" + +%message 57 +"\"Less filling!\"" + +%message 58 +"\"Why don't sharks attack divorce lawyers?\"" + +%message 59 +"\"Professional courtesy.\"" + +%message 60 +"\"My wife and I have a new system: if she wants sex, she reaches over +and strokes me once.\"" + +%message 61 +"\"If she doesn't, she reaches over and strokes me 300 times.\"" + +%message 62 +"\"My son just got kicked out of his co-ed college boarding house." + +%message 63 +"\"My daughter came home from school today and tells me, + 'Eli Whitney invented the cotton gin.'\"" + +%message 64 +"\"I said, 'Who wants a fluffy martini?'\"" + +%message 65 +"\"The shop teacher asked the high school girl if she knew the difference + between a screw, a nail and a bolt. She told him she'd never been bolted.\"" + +%message 66 +"\"Have you heard about the new urologist's training film?\"" + +%message 67 +"\"It's called, 'E.T., the Extra Testicle.'\"" + +%message 68 +"\"Have you heard about the new film for marching band musicians?\"" + +%message 69 +"\"It's called, 'Desperately Seeking Sousa.'\"" + +%message 70 +"\"My son has a problem with compulsive masturbation. + His psychiatrist says he's gone completely whacky.\"" + +%message 71 +"\"My grandpa, the farmer, finally got himself one of those latex ladies. + I heard him singing about it the other day: + 'The farmer in the doll, the farmer in the doll...'\"" + +%message 72 +"\"Our local inventor just came up with a new, vibrating tampon.\"" + +%message 73 +"\"He says if women have to be miserable once a month, + they might as well enjoy it.\"" + +%message 74 +"\"My wife just loves going to the movies to watch + teenagers get laid for the first time.\"" + +%message 75 +"At least the comic's whoopie cushion doesn't smell!" + +%message 76 +"\"He got caught spreading roomers.\"" + +%message 77 +"This must be a \"No Smoking\" lounge." + +%message 78 +"You whistle loudly at the girls." + +%message 79 +"You're not sure, but you suppose they enjoy it." + +%message 80 +"You're no star!" + +%message 81 +"You toss the rose on the stage. + It falls where you will not be able to retrieve it." + +%message 82 +"\"And, now, ladi... uh, gentleman,\" announces the comic, + \"we're proud to present the Magic portion of our act.\"" + +%message 83 +"\"Let me just pick someone at random from our audience...\"" + +%message 84 +"\"How about you,\" he says looking directly at you. + \"Would you like to participate in a little experiment in telepathy?\"" + +%message 85 +"(Of course he's looking at you! You're the only one here!) + You're game, so you answer, \"Sure.\"" + +%message 86 +"\"Great! Now Paul, my drummer and musical conductor for all these many years, + will read your mind,\" says the comic. + \"Come on, Paul, show him your stuff!\"" + +%message 87 +"\"I want you to concentrate on your billfold,\" Paul says. + \"Clear your mind, and think solely about the contents of your wallet.\"" + +%message 88 +"Since clearing your mind is no problem for you, Larry, + you do so easily." + +%message 89 +"\"I'm getting a message... I see something...\"" + +%message 90 +"\"I've GOT IT!\" he exclaims. \"If you open your billfold + you'll discover some wrinkled business cards, lots of notes, + some credit cards (which won't work in this game), + and exactly $%v90.00 in cash!!\"" + +%message 91 +"\"Ladi... uh, GENTLEMAN!\" shouts the comic. + \"PAUL THE MAGNIFICENT has done it again!!\"" + +%message 92 +"Just to make sure, you take out your wallet and look inside..." + +%message 93 +"\"Sometimes, she even watches the screen!\"" + +%message 94 +"\"I asked my wife, + 'How come you never tell me when you're having an orgasm?'\"" + +%message 95 +"\"She replied, 'Cause you're never around!\"" + +%message 96 +"\"My wife just loves to experiment. + Last week she mixed speed with her Midol.\"" + +%message 97 +"\"She had her period six times in one day!\"" + +%message 98 +"\"My wife is a lot like Halley's Comet.\"" + +%message 99 +"\"They both come once every 76 years!\"" + +%message 100 +"Remember: you can't get it!" + +%message 101 +"\"My son is becoming a real computer wiz!\"" + +%message 102 +"\"His teacher called him a 'master byter.'\"" + +%message 103 +"\"My uncle, the inventor, crossed a cucumber with a Mexican jumping bean.\"" + +%message 104 +"\"He calls it the world's first organic vibrator!\"" + +%message 105 +"\"Last week, I got arrested by a female cop. + She asked me, 'Are you carrying a concealed weapon?'\"" + +%message 106 +"\"I replied, 'Keep frisking me, and I soon will be!'\"" + +%message 107 +"\"My best sexual encounter was in the South Sea Islands...\"" + +%message 108 +"\"I pushed a volcano into a virgin!\"" + +%message 109 +"\"Didja hear about the copier company that bought out + a musical instrument maker?\"" + +%message 110 +"\"They're gonna market a new, reproductive organ!\"" + +%message 111 +"\"Thank you, thank you!\"" + +%message 112 +"The girls' smiles beam!" + +%message 113 +"\"Well, that's all I know, folks,\" the comic says. + \"Come back for the next show, and you can hear 'em all again!\"" + diff --git a/RM37.CG b/RM37.CG new file mode 100644 index 0000000..dd181ca --- /dev/null +++ b/RM37.CG @@ -0,0 +1,414 @@ +[logics for room 37 -- rmSlots +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm37.msg" +%include "gamedefs.h" +%include "contrlrs.h" +%include "slots.h" + +[ RESULTS PAYS\n +[ |--------------------------------|\n +[ | Cherry | | | 1 |\n +[ | Cherry | Cherry | | 2 |\n +[ | Cherry | Cherry | Cherry | 4 |\n +[ |--------|--------|--------|-----|\n +[ | Orange | Orange | | 2 |\n +[ | Orange | Orange | Orange | 4 |\n +[ |--------|--------|--------|-----|\n +[ | Seven | Seven | | 3 |\n +[ | Seven | Seven | Seven | 5 |\n +[ |--------|--------|--------|-----|\n +[ | Bar | Bar | Bar | 7 |\n +[ |--------------------------------|\n + + + +%define MIN_CYCLES 8 [ These must be 3 apart since +%define MAX_CYCLES 11 [ we have 4 cells / wheel. + +%define C_CHERRY 0 +%define C_ORANGE 1 +%define C_SEVEN 2 +%define C_BAR 3 + +%define cDecreaseBet cF4 +%define cIncreaseBet cF6 +%define cPullHandle cF8 + + + +if (initLog) + { + Reset( xyOn); + + LoadView( vSlots); + LoadView( vWinner); + LoadLogics( lgcSlots); + + LoadSound( sSlots); + LoadSound( sSlotsWinner); + + LoadPic( currentRoom); + DrawPic( currentRoom); + DiscardPic( currentRoom); + + AnimateObj( aWinner); + SetPriority( aWinner, 15); + SetView( aWinner, vSlots); + SetLoop( aWinner, 2); + Position( aWinner, 56, 106); + + AnimateObj( aWheel1); + SetView( aWheel1, vSlots); + SetLoop( aWheel1, 0); + SetCel( aWheel1, C_BAR); + Position( aWheel1, 46, 87); + Draw( aWheel1); + StopCycling( aWheel1); + + AnimateObj( aWheel2); + SetView( aWheel2, vSlots); + SetLoop( aWheel2, 0); + SetCel( aWheel2, C_BAR); + Position( aWheel2, 69, 87); + Draw( aWheel2); + StopCycling( aWheel2); + + AnimateObj( aWheel3); + SetView( aWheel3, vSlots); + SetLoop( aWheel3, 0); + SetCel( aWheel3, C_BAR); + Position( aWheel3, 93, 87); + Draw( aWheel3); + StopCycling( aWheel3); + + AnimateObj( aLights); + IgnoreHorizon( aLights); + SetView( aLights, vSlots); + SetLoop( aLights, 1); + Position( aLights, 50, 10); + + ShowPic( ); + + bet = 1; + Set( readyToPlay); + Set( handsOff); + + function = UPDATE_STATUS; + Call( lgcSlots); + + PrintAt( 2, 2, 2, 36); + [msg #, row, col, width + Print( 1); + + Set( noScript); + Return( ); + + } [ end initLOG + + +Set( nearPerson); + + +if (readyToPlay && + Controller( cDecreaseBet)) + { + --bet; + function = UPDATE_STATUS; + Call( lgcSlots); + } + +if (readyToPlay && + Controller( cIncreaseBet)) + { + if (bet < 20) + { + ++bet; + } + else + { + Print( 6); + } + function = UPDATE_STATUS; + Call( lgcSlots); + } + +if (readyToPlay && + Controller( cPullHandle)) + { + Set( pulledHandle); + } + + + +[***** +:handleInput +[***** + +if (!haveInput) {goto noInput;} + +if ((Said( play) || + Said( pull, handle) || + Said( play, slots))) + { + Set( pulledHandle); + } + +if (Said( odds)) + { + function = UPDATE_STATUS; + Call( lgcSlots); + PrintAt( 2, 2, 2, 36); + } + + +if ((Said( look) || + Said( look, slot))) + { + Print( 8); + } + +if ((Said( leave) || + Said( look, room) || + Said( leave, slots) || + Said( stand) || + Said( walk, away) || + Said( walk) || + Said( quit, playing) || + Said( quit, game) || + Said( quit) || + Said( quit, playing, slots) || + Said( go, casino) || + Said( look, casino))) + { + Set( OK); + Set( readyToLeave); + } + + + +[***** +:noInput +[***** + +if (pulledHandle) + { + Reset( pulledHandle); + + if (!readyToPlay) + { + Random( 11, 13, work); + PrintV( work); + } + else + { + if (!bet) + { + Print( 3); + Print( 4); + Print( 5); + } + else + { + if (bet > dollars) + { + Print( 7); + } + else + { + script = 0; + Set( scriptDone); + } + } + } + } + + +if (scriptDone) + { + Reset( scriptDone); + ++script; + + if (script == 1) + { + Reset( readyToPlay); + Set( preventSaveGame); + Set( betInProgress); + StopSound( ); + Reset( soundDone); + Sound( sSlots, done); + dollars -= bet; + function = UPDATE_STATUS; + Call( lgcSlots); + + StartCycling( aWheel1); + StartCycling( aWheel2); + StartCycling( aWheel3); + Random( MIN_CYCLES, MAX_CYCLES, scriptCycles); + } + + if (script == 2) + { + StopCycling( aWheel1); + CurrentCel( aWheel1, wheel1); + Random( MIN_CYCLES, MAX_CYCLES, scriptCycles); + } + + if (script == 3) + { + StopCycling( aWheel2); + CurrentCel( aWheel2, wheel2); + Random( MIN_CYCLES, MAX_CYCLES, scriptCycles); + } + + if (script == 4) + { + StopCycling( aWheel3); + CurrentCel( aWheel3, wheel3); + + + [ Determine if we hit anything. + + multiple = 0; + if (wheel1 == C_CHERRY) + { + multiple = 1; + if (wheel2 == wheel1) + { + multiple = 2; + if (wheel3 == wheel1) + { + multiple = 4; + } + } + } + + if (wheel1 == C_ORANGE && + wheel2 == wheel1) + { + multiple = 2; + if (wheel3 == wheel1) + { + multiple = 4; + } + } + + if (wheel1 == C_SEVEN && + wheel2 == wheel1) + { + multiple = 3; + if (wheel3 == wheel1) + { + multiple = 5; + } + } + + if (wheel1 == C_BAR && + wheel2 == wheel1 && + wheel3 == wheel1) + { + multiple = 7; + } + + + [ Now, are we gonna flash lights, and pay off? + + if (!multiple) + { + Set( readyToPlay); [ Nope, this guy's a loser. + } + else + { + function = PAY_WINNER; + Call( lgcSlots); + + if (multiple == 1) + { + Set( readyToPlay); [ A small win, not worth mentioning. + } + else + { + Draw( aWinner); [ Ok, maybe a little. + Set( soundDone); + if (multiple > 1 && + multiple < 4) + { + scriptCycles = 22; + } + else + { + Draw( aLights); [ Let's go all out for this guy! + if (multiple < 7) + { + scriptCycles = 22; + } + else + { + scriptCycles = 44; + } + } + } + } + } + + + [ We only get here if the "WINNER" object is drawn. + + if (script == 5) + { + Erase( aLights); + Erase( aWinner); + Set( readyToPlay); + } + + + if (readyToPlay) + { + script = 0; + Reset( preventSaveGame); + Reset( betInProgress); + + if (!dollars) + { + Reset( readyToPlay); + } + } + } + + +if (soundDone && !readyToPlay) + { + Sound( sSlotsWinner, soundDone); + } + + +if ((Controller( cHelp) || + showOdds)) + { + Reset( showOdds); + function = UPDATE_STATUS; + Call( lgcSlots); + PrintAt( 2, 2, 2, 36); + Print( 1); + } + +if (restoreInProgress) + { + function = UPDATE_STATUS; + Call( lgcSlots); + } + + +[***** +:exit [ test for leaving the room +[***** + +if (readyToLeave) + { + Reset( handsOff); + Reset( noScript); + Reset( preventSaveGame); + Reset( betInProgress); + newRoom = rmInsideCasino; + } diff --git a/RM37.MSG b/RM37.MSG new file mode 100644 index 0000000..f501032 --- /dev/null +++ b/RM37.MSG @@ -0,0 +1,65 @@ +[messages for room 37 -- rmSlots +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"\n +Press F4 to decrease bet.\n\n +Press F6 to increase bet.\n\n +Press F8 to pull handle.\n +" + +%message 2 +"\n + RESULTS PAYS\n +|--------------------------------|\n +| Cherry | | | 1 |\n +| Cherry | Cherry | | 2 |\n +| Cherry | Cherry | Cherry | 4 |\n +|--------|--------|--------|-----|\n +| Orange | Orange | | 2 |\n +| Orange | Orange | Orange | 4 |\n +|--------|--------|--------|-----|\n +| Seven | Seven | | 3 |\n +| Seven | Seven | Seven | 5 |\n +|--------|--------|--------|-----|\n +| Bar | Bar | Bar | 7 |\n +|--------------------------------|\n +" + +%message 3 +"You insert zero dollars, and pretend to pull the handle." + +%message 4 +"You win zero dollars!" + +%message 5 +"Is this your idea of a good time?" + +%message 6 +"This machine has a $20.00 limit." + +%message 7 +"You can't bet more than you have." + +%message 8 +"It's an electronic slot machine. + When you tire of playing, just type \"stop.\"" + +%message 9 +"" + +%message 10 +"" + +%message 11 +"Don't be in such a hurry!" + +%message 12 +"Slow down!" + +%message 13 +"What are you? A \"Type-A\" personality?" + diff --git a/RM38.CG b/RM38.CG new file mode 100644 index 0000000..5731b70 --- /dev/null +++ b/RM38.CG @@ -0,0 +1,1625 @@ +[logics for room 38 -- rmBlackjack +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm38.msg" +%include "gamedefs.h" +%include "bj.h" +%include "contrlrs.h" + + + +[ %view vWinner 150 [ First, a little information. +[ %view vCardsShuffling 151 +[ %view vClubs 152 +[ %view vSpades 153 +[ %view vHearts 154 +[ %view vDiamonds 155 +[ %view vBlackjack 156 + +[ %define cBACK 0 [ Cell numbers of the card views. +[ %define c2 0 +[ %define c3 1 +[ %define c4 2 +[ %define c5 3 +[ %define c6 4 +[ %define c7 5 +[ %define c8 6 +[ %define c9 7 +[ %define c10 8 +[ %define cJACK 9 +[ %define cQUEEN 10 +[ %define cKING 11 +[ %define cACE 12 + +%define CARD_DELAY 9 [ Cycles between card draws. + +%define DEALER_BUST 22 [ Cycles WINNER! sign is drawn. +%define WINNER 33 +%define AUTO_WIN 44 +%define BLACKJACK 55 + +%define SECONDS_BEFORE_CLUE 45 + +%define SHUFFLE_CYCLES 28 + +%define cDeal cF4 +%define cHit cF6 +%define cStand cF8 + + + +if (initLog) + { + SetHorizon( 1); + Reset( xyOn); + + LoadLogics( lgcBlackjack); + + LoadView( vWinner); + LoadView( vClubs); + LoadView( vSpades); + LoadView( vHearts); + LoadView( vDiamonds); + LoadView( vBlankCard); + LoadView( vCardBack); + + LoadSound( sCard); + LoadSound( sBJWinner); + LoadSound( sCardsShuffling); + + if (monitorType != MONO) + { + LoadView( vCardsShuffling); + } + else + { + LoadView( vMONOCardsShuffling); + } + + + LoadPic( currentRoom); + DrawPic( currentRoom); + [ Don't DiscardPic( currentRoom); + + + AnimateObj( aCards); + IgnoreObjs( aCards); + Position( aCards, 61, 55); + if (monitorType != MONO) + { + SetView( aCards, vCardsShuffling); + } + else + { + SetView( aCards, vMONOCardsShuffling); + } + + AnimateObj( aWinner); + IgnoreObjs( aWinner); + SetView( aWinner, vWinner); + Position( aWinner, 54, 82); + + oldBet = 2; + insurance = 1; + clueTimer = SECONDS_BEFORE_CLUE; + + ShowPic( ); + + function = UPDATE_STATUS; + Call( lgcBlackjack); + + Print( 47); + + Set( handsOff); + + Set( noScript); + Return(); + + } [ end initLOG + + + +Set( nearPerson); + + +[***** +:handleInput +[***** + +if ((Controller( cHelp) || + Said( help))) + { + Set( showHelpMessage); + } + +if ((Said( tip, dealer) || + Said( give, dealer, money) || + Said( give, money, dealer))) + { + Print( 23); + } + + +if ((Controller( cDeal) || + Said( deal, hand) || + Said( deal, cards) || + Said( deal))) + { + clueTimer = SECONDS_BEFORE_CLUE; + if (handInPlay) + { + Print( 28); + } + else + { + if (!oldBet) + { + Print( 7); [ "Bet some money, dummy! + Print( 8); + } + else + { + if (oldBet > dollars) [ "You don't have that much, dummy! + { + script = 0; + Print( 30); + } + else + { + Set( scriptDone); + script = 0; + } + } + } + } + + +if ((Controller( cStand) || + Said( stand))) + { + clueTimer = SECONDS_BEFORE_CLUE; + if (!waitingForInput) + { + Print( 44); + } + else + { + if (handInPlay == PLAYER) + { + script = 100; [ Let's move on. + Set( scriptDone); + } + else + { + if (handInPlay == SPLIT) + { + script = 200; + Set( scriptDone); + } + else + { + Print( 44); + } + } + } + } + + +if ((Controller( cHit) || + Said( hit) || + Said( hit, me) || + Said( card) || + Said( give, me, card))) + { + clueTimer = SECONDS_BEFORE_CLUE; + if (!waitingForInput) + { + Print( 44); + } + else + { + if (handInPlay == PLAYER) + { + ++cardCount; + currentCard = pFirstCard; + currentCard += cardCount; + --currentCard; + function = DRAW_CARD; + Call( lgcBlackjack); + pTotal += value; + if (softAce) + { + Reset( softAce); + Set( pSoftAce); + } + } + else + { + if (handInPlay == SPLIT) + { + ++cardCount; + currentCard = sFirstCard; + currentCard += cardCount; + --currentCard; + function = DRAW_CARD; + Call( lgcBlackjack); + sTotal += value; + if (softAce) + { + Reset( softAce); + Set( sSoftAce); + } + } + else + { + Print( 44); + } + } + } + } + + +if (!haveInput) {goto noInput;} + + +if ((Said( double) || + Said( double, up) || + Said( double, down))) + { + clueTimer = SECONDS_BEFORE_CLUE; + if (!waitingForInput) + { + Print( 44); + } + else + { + if (handInPlay == PLAYER) + { + if ((pTotal < 10 || + pTotal > 11)) + { + Print( 24); + } + else + { + if (dollars < pBet) + { + Print( 27); + } + else + { + Set( scriptDone); + script = 20; + } + } + } + else + { + if (handInPlay != SPLIT) + { + Print( 44); [ "You fuckup!" + } + else [ It's not a player or split hand! + { + if ((sTotal < 10 || + sTotal > 11)) + { + Print( 24); + } + else + { + if (dollars < sBet) + { + Print( 27); + } + else + { + Set( scriptDone); + script = 120; + } + } + } + } + } + } + + +if ((Said( split) || + Said( split, cards) || + Said( split, hand))) + { + clueTimer = SECONDS_BEFORE_CLUE; + if (!waitingForInput) + { + Print( 44); + } + else + { + if (handInPlay != PLAYER) + { + Print( 44); + } + else + { + if (cardCount != 2) + { + Print( 25); + } + else + { + currentCard = pFirstCard; + card =@ currentCard; + function = GET_SUIT_VALUE; + Call( lgcBlackjack); [ Check to see if he has a pair. + work = cell; + + ++currentCard; + card =@ currentCard; + function = GET_SUIT_VALUE; + Call( lgcBlackjack); + if (cell != work) + { + Print( 22); [ Nope. + } + else + { + if (pBet > dollars) + { + Print( 27); + } + else + { + Set( scriptDone); + script = 10; + } + } + } + } + } + } + + +if ((Said( surrender) || + Said( surrender, cards) || + Said( surrender, hand))) + { + clueTimer = SECONDS_BEFORE_CLUE; + if (!waitingForInput) + { + Print( 44); + } + else + { + if (handInPlay != PLAYER) + { + Print( 44); + } + else + { + if (cardCount != 2) + { + Print( 26); + } + else + { + Print( 6); + winnings = insurance; + function = PAY_WINNER; + Call( lgcBlackjack); + + handInPlay = HAND_DONE; + } + } + } + } + + +if ((Said( change, bet, rol) || + Said( new, bet, rol) || + Said( raise, bet, rol) || + Said( lower, bet, rol) || + Said( bet, rol))) + { + clueTimer = SECONDS_BEFORE_CLUE; + if (handInPlay) + { + Print( 29); + } + else + { + :mrLooper2; + GetNum( 3, oldBet); + work = oldBet; + insurance = 0; + if (work > 20) + { + Print( 31); + goto mrLooper2; + } + + :mrLooper4; + if (work > 1) + { + work -= 2; + ++insurance; + goto mrLooper4; + } + + if (work == 1) + { + Print( 4); + goto mrLooper2; + } + + if (oldBet > dollars) + { + Print( 27); + goto mrLooper2; + } + + function = UPDATE_STATUS; + Call( lgcBlackjack); + } + } + + +if (debugging && + Said( show, all)) + { + currentCard = dFirstCard; + :mrLooper; + function = DRAW_CARD; + Call( lgcBlackjack); + ++currentCard; + if (!currentCard > lastCard) + { + goto mrLooper; + } + } + + +if ((Said( leave, rol) || + Said( quit, rol) || + Said( go, casino) || + Said( look, room) || + Said( look, casino) || + Said( stand, up))) + { + Print( 15); + Set( readyToLeave); + } + + +if ((Said( rules) || + Said( read, table) || + Said( read, sign) || + Said( read, rules))) + { + Set( showHelpMessage); + } + +if ((Said( look) || + Said( look, table))) + { + clueTimer = SECONDS_BEFORE_CLUE; + Print( 1); + } + +if ((Said( look, girl) || + Said( look, dealer))) + { + Print( 13); + } + +if ((Said( talk, girl) || + Said( talk, dealer))) + { + Print( 21); + } + + + +[***** +:noInput +[***** + +if (aSecondPassed) + { + --clueTimer; + if (clueTimer == 1) + { + Set( showHelpMessage); + } + } + +if (showHelpMessage) + { + Reset( showHelpMessage); + Print( 45); + Print( 46); + Print( 47); + clueTimer = SECONDS_BEFORE_CLUE; + } + +if (scriptDone) + { + Reset( scriptDone); + ++script; + clueTimer = SECONDS_BEFORE_CLUE; + + if (script == 1) + { + Reset( pBlackjack); + Reset( dBlackjack); + Reset( pDoubledDown); + Reset( sDoubledDown); + Reset( pSixCardWinner); + Reset( sSixCardWinner); + Reset( softAce); + Reset( pSoftAce); + Reset( dSoftAce); + Reset( sSoftAce); + Reset( insured); + dTotal = 0; + pTotal = 0; + sTotal = 0; + sBet = 0; + pBet = 0; + cardCount = 0; + + pBet = oldBet; + dollars -= pBet; + handInPlay = PLAYER; + Set( preventSaveGame); + + [ Here's where we deal all 18 cards. + + currentCard = firstCard; + :dealLoop + Random( 0, 51, work); + [ This forces an ace into dealer's up card. + if (forceAtest && + currentCard == firstCard) + { + work = 51; + } + + if (currentCard != firstCard) [ Don't need to check card1. + { + cardToTest = firstCard; + :testLoop + card =@ cardToTest; + if (card == work) [ It's a match; pick another. + { + goto dealLoop; + } + + ++cardToTest; + if (cardToTest < currentCard) [ Don't test against itself. + { + goto testLoop; + } + } + + if (currentCard == sFirstCard) [ This prevents splitting splits. + { + card = work; + function = GET_SUIT_VALUE; + Call( lgcBlackjack); + work2 = value; + work3 = pFirstCard; + card =@ work3; + function = GET_SUIT_VALUE; + Call( lgcBlackjack); + + if (work2 == value) + { + goto dealLoop; + } + } + + currentCard @= work; [ It's ok. Save it. + ++currentCard; + if (!currentCard > lastCard) + { + goto dealLoop; [ Do another. + } + + + + [ All cards are dealt. Clean off the table. + + DrawPic( currentRoom); + ShowPic( ); + function = UPDATE_STATUS; + Call( lgcBlackjack); + + SetCel( aCards, 0); + Draw( aCards); + scriptCycles = SHUFFLE_CYCLES; + Sound( sCardsShuffling, soundDone); + } + + + if (script == 2) + { + Erase( aCards); + scriptCycles = CARD_DELAY; + } + + if (script == 3) + { + currentCard = pFirstCard; + function = DRAW_CARD; + Call( lgcBlackjack); + scriptCycles = CARD_DELAY; + pTotal = value; + if (softAce) + { + Reset( softAce); + Set( pSoftAce); + } + } + + if (script == 4) + { + currentCard = dFirstCard; + function = DRAW_CARD; + Call( lgcBlackjack); + scriptCycles = CARD_DELAY; + dTotal = value; + if (softAce) + { + Reset( softAce); + Set( dSoftAce); + } + } + + if (script == 5) + { + currentCard = pFirstCard; + ++currentCard; + function = DRAW_CARD; + Call( lgcBlackjack); + scriptCycles = CARD_DELAY; + pTotal += value; + if (softAce) + { + Reset( softAce); + Set( pSoftAce); + } + } + + if (script == 6) + { + currentCard = dFirstCard; + ++currentCard; + function = DRAW_FACE_DOWN; + Call( lgcBlackjack); + dTotal += value; + if (softAce) + { + Reset( softAce); + Set( dSoftAce); + } + + + [ First, check player's hand for BJ. + + cardCount = 2; [ player's card count + currentCard = pFirstCard; + card =@ currentCard; + function = GET_SUIT_VALUE; + Call( lgcBlackjack); + if ((value == 1 || value == 10)) + { + work = value; + ++currentCard; + card =@ currentCard; + function = GET_SUIT_VALUE; + Call( lgcBlackjack); + + if (work == 1 && value == 10) [ Either, an ace and a 10... + { + Set( pBlackjack); + } + if (work == 10 && value == 1) [ ...or, a 10 and an ace... + { + Set( pBlackjack); + } + } + + + [ Whether player had BJ or not, see if insurance is necessary. + + currentCard = dFirstCard; + card =@ currentCard; + function = GET_SUIT_VALUE; + Call( lgcBlackjack); + if (value == 1) + { + + [ Dealer has an ace showing. Handle insurance dialogue. + + CancelLine(); + PreventInput(); + if (monitorType == MONO) + { + ClearLines( 24, 24, BG_COLOR); + Display( 24, 0, 2); + } + else + { + ClearLines( 23, 23, BG_COLOR); + Display( 23, 0, 2); + } + + lastChar = 0; + + SetScanStart(); + if (!lastChar) + { + Return(); + } + + if ((lastChar == 89 || [ Y + lastChar == 121)) [ y + { + if (insurance > dollars) + { + Print( 27); + } + else + { + Set( insured); + dollars -= insurance; + function = UPDATE_STATUS; + Call( lgcBlackjack); + } + } + else + { + if (lastChar != 78 && [ N + lastChar != 110) [ n + { + Print( 10); + lastChar = 0; + Return(); + } + } + + ResetScanStart(); [ We have a legal answer. + lastChar = 0; + if (monitorType == MONO) + { + ClearLines( 24, 24, BG_COLOR); + } + else + { + ClearLines( 23, 23, BG_COLOR); + } + + AcceptInput(); + } + + + [ Finally, check dealer's hand for BJ. + + currentCard = dFirstCard; + card =@ currentCard; + function = GET_SUIT_VALUE; + Call( lgcBlackjack); + if ((value == 1 || value == 10)) + { + work = value; + ++currentCard; + card =@ currentCard; + function = GET_SUIT_VALUE; + Call( lgcBlackjack); + + if (work == 1 && value == 10) [ Either, an ace and a 10... + { + Set( dBlackjack); + } + if (work == 10 && value == 1) [ ...or, a 10 and an ace... + { + Set( dBlackjack); + } + } + + + [ Now the flags are set, figure out what happens. + + if (pBlackjack) + { + Print( 17); [ You got BJ! + + if (dBlackjack) [ Him too? It's a push! + { + handInPlay = HAND_DONE; + + currentCard = dFirstCard; + ++currentCard; [ Turn over dealer's hole card. + function = DRAW_CARD; + Call( lgcBlackjack); + + Print( 5); [ Dealer got BJ! + Print( 14); [ It's a push. + winnings = pBet; + function = PAY_WINNER; + Call( lgcBlackjack); + + if (insured) + { + Print( 9); [ Your insurance pays off. + winnings = insurance; + winnings += insurance; + function = PAY_WINNER; + Call( lgcBlackjack); + } + } + else + { + winnings = pBet; [ It's all yours. Pay him... + winnings += pBet; + winnings += insurance; [ ...1 & 1/2 his original bet. + function = PAY_WINNER; + Call( lgcBlackjack); + + scriptCycles = BLACKJACK; + Draw( aWinner); + Set( soundDone); + } + } + else + { + + [ No player BJ. How about dealer? + + if (!dBlackjack) + { + + [ Continue on. Nothing exciting this hand! + + Set( waitingForInput); + script = 8; [ Skip the Erase( aWinner); below. + } + else + { + + [ Dealer got BJ! + + handInPlay = HAND_DONE; + + currentCard = dFirstCard; + ++currentCard; + function = DRAW_CARD; [ Turn over hole card. + Call( lgcBlackjack); + + function = UPDATE_STATUS; + Call( lgcBlackjack); + + Print( 5); [ Dealer got BJ! + + if (insured) + { + Print( 9); [ Your insurance pays off. + winnings = insurance; + winnings += insurance; + function = PAY_WINNER; + Call( lgcBlackjack); + } + } + } + } + + + if (script == 7) [ Get here if only player has BJ. + { + Erase( aWinner); + handInPlay = HAND_DONE; + } + + + + [ This is what happens if he decides to legally split a pair. + + if (script == 11) + { + Reset( waitingForInput); + + sBet = oldBet; + dollars -= sBet; + function = UPDATE_STATUS; + Call( lgcBlackjack); + + currentCard = sFirstCard; [ Swap current pCard2... + work =@ currentCard; + work2 = pFirstCard; + ++work2; + work3 =@ work2; + currentCard @= work3; + work2 @= work; [ ...with sCard1. + + currentCard = pFirstCard; [ Erase existing pCard2. + ++currentCard; + function = ERASE_CARD; + Call( lgcBlackjack); + scriptCycles = CARD_DELAY; + } + + if (script == 12) + { + currentCard = sFirstCard; [ now draw sCard1 (old pCard2). + function = DRAW_CARD; + Call( lgcBlackjack); + scriptCycles = CARD_DELAY; + pTotal -= value; + if (softAce) + { + Reset( softAce); + Set( sSoftAce); + } + } + + if (script == 13) + { + Set( waitingForInput); + currentCard = pFirstCard; + ++currentCard; + function = DRAW_CARD; [ Now draw NEW pCard2. + Call( lgcBlackjack); + pTotal += value; + if (softAce) + { + Reset( softAce); + Set( pSoftAce); + } + } + + + + [ Here we handle if the player legally doubled down. + + if (script == 21) + { + Reset( waitingForInput); + dollars -= pBet; + pBet += pBet; [ Double his bet. + function = UPDATE_STATUS; + Call( lgcBlackjack); + scriptCycles = CARD_DELAY; + } + + if (script == 22) + { + Set( waitingForInput); + Set( pDoubledDown); + + ++cardCount; + currentCard = pFirstCard; + currentCard += cardCount; + --currentCard; + function = DRAW_CARD; + Call( lgcBlackjack); + pTotal += value; + if (softAce) + { + Reset( softAce); + Set( pSoftAce); + } + + script = 101; + } + + + + [ Handle a player's six card winning hand. + + if (script == 31) + { + Print( 18); [ Six cards win! + script = 101; + Set( pSixCardWinner); + } + + + + [ This wraps up the player's hand, and determines which hand comes + [next: either the split or the dealer. + + if (script == 101) [ pHand is over. Now what? + { + handInPlay = SPLIT; + Reset( waitingForInput); + + if (pSoftAce && pTotal < 12) + { + Reset( pSoftAce); + pTotal += 10; + } + + if (pTotal > 21) [ If busted, tell him about it. + { + if (!sBet) + { + Print( 11); [ You're busted. + } + else + { + Print( 38); [ *First* hand busted. + } + } + + if (!sBet) [ We have no further business here. + { + script = 201; [ So let's do the dealer. + } + else + { + Set( waitingForInput); + Reset( softAce); + cardCount = 2; + + currentCard = sFirstCard; [ sCard1 is already drawn. + card =@ currentCard; + function = GET_SUIT_VALUE; + Call( lgcBlackjack); [ Fix up sTotal. + sTotal = value; + if (softAce) + { + Reset( softAce); + Set( sSoftAce); + } + + currentCard = sFirstCard; + ++currentCard; + function = DRAW_CARD; [ Draw sCard2. + Call( lgcBlackjack); + sTotal += value; + if (softAce) + { + Reset( softAce); + Set( sSoftAce); + } + } + } + + + + if (script == 121) [ Split hand doubled down. + { + Reset( waitingForInput); + + dollars -= sBet; + sBet += sBet; [ Double bet. + function = UPDATE_STATUS; + Call( lgcBlackjack); + scriptCycles = CARD_DELAY; + } + + if (script == 122) + { + Set( waitingForInput); + Set( sDoubledDown); + + ++cardCount; + currentCard = sFirstCard; + currentCard += cardCount; + --currentCard; + function = DRAW_FACE_DOWN; + Call( lgcBlackjack); + sTotal += value; + if (softAce) + { + Reset( softAce); + Set( sSoftAce); + } + + script = 201; + } + + + + [ Handle the split hand's six card winner. + + if (script == 131) + { + Print( 18); [ Six cards win! + script = 201; + Set( sSixCardWinner); + } + + + + if (script == 201) + { + Reset( waitingForInput); + handInPlay = DEALER; + scriptCycles = CARD_DELAY; + + [ First, wrap up the split hand. + + if (sBet && sSoftAce && sTotal < 12) + { + Reset( sSoftAce); + sTotal += 10; + } + + if (sTotal > 21) + { + Print( 42); [ *Split* hand busted. + } + + + [ Now, it's the dealer's turn. Decide where to go from here. + [There are three branches we COULD take: + [ + [ a. He's now a loser; script jumps to 220; + [ b. He's an auto-winner; script jumps to 230; + [ c. He's still in contention; script continues. + [ + [ All are the real script -= 1, since we want a little + [delay first. + + if (pTotal < 22) [ He's still good. + { + if (pSixCardWinner) + { + script = 230; [ It's an auto-win. + } + } + else + { + if (!sBet) + { + script = 220; [ He's a loser! + } + else + { + if (sTotal > 21) + { + script = 220; [ He's a loser! + } + else + { + if (sSixCardWinner) + { + script = 230; [ It's an auto-win. + } + } + } + } + } + + + [ Now the dealer will try for his best hand. We only get + [here if at least one hand is < 22, and it wasn't a sixCardHand. + + if (script == 202) + { + Reset( softAce); + scriptCycles = CARD_DELAY; + cardCount = 2; + + currentCard = dFirstCard; [ Get value of dealer's hand. + card =@ currentCard; + function = GET_SUIT_VALUE; + Call( lgcBlackjack); + dTotal = value; + if (softAce) + { + Reset( softAce); + Set( dSoftAce); + } + + ++currentCard; + function = DRAW_CARD; [ Turn over his hole card. + Call( lgcBlackjack); + dTotal += value; + if (softAce) + { + Reset( softAce); + Set( dSoftAce); + } + } + + + if (script == 203) + { + scriptCycles = CARD_DELAY; + + if (dSoftAce && + dTotal > 6 && + dTotal < 12) + { + Reset( dSoftAce); + dTotal += 10; + } + + if (dTotal < 17) + { + ++cardCount; [ Dealer needs another card. + currentCard = dFirstCard; + currentCard += cardCount; + --currentCard; [ currentCard is var# of next card. + function = DRAW_CARD; + Call( lgcBlackjack); + dTotal += value; + if (softAce) + { + Reset( softAce); + Set( dSoftAce); + } + + if (cardCount < 6) + { + script -= 1; + } + } + } + + + + [ Dealer is all done, whether he got to play any additional cards + [or not. So, clean things up, and make handInPlay = HAND_DONE. + + if (script == 204) + { + if (pDoubledDown) + { + currentCard = pFirstCard; + ++currentCard; + ++currentCard; + function = DRAW_CARD; [ Draw pCard3 (formerly face down). + Call( lgcBlackjack); + } + + if (dTotal > 21) [ Dealer went bust. + { + Print( 12); + if (pTotal > 21) + { + ++script; [ Go check the split hand! + } + else + { + winnings = pBet; + winnings += pBet; + function = PAY_WINNER; + Call( lgcBlackjack); + + scriptCycles = DEALER_BUST; + Draw( aWinner); + Set( soundDone); + } + } + else [ Dealer NOT bust. + { + if (pTotal > 21) [ Handle the player's hand first. + { + ++script; [ Go check the split hand! + } + else + { + if (pTotal > dTotal) [ Player wins. + { + if (sBet) + { + Print( 36); + } + winnings = pBet; + winnings += pBet; + function = PAY_WINNER; + Call( lgcBlackjack); + + scriptCycles = WINNER; + Draw( aWinner); + Set( soundDone); + } + + if (pTotal == dTotal) [ Player's hand's a push. + { + if (sBet) + { + Print( 35); + } + else + { + Print( 14); + } + winnings = pBet; + function = PAY_WINNER; + Call( lgcBlackjack); + + ++script; + } + + if (pTotal < dTotal) [ Player loses. + { + ++script; + if (sBet) + { + Print( 37); + } + else + { + Print( 16); + } + } + } + } + } + + + [ After dealing with the player's hand, we now check the split hand. + + if (script == 205) + { + if (!sBet) [ No split hand? + { + ++script; [ ...Leave. + } + else + { + if (sDoubledDown) + { + currentCard = sFirstCard; + ++currentCard; + ++currentCard; + function = DRAW_CARD; [ Draw sCard3 face up. + Call( lgcBlackjack); + } + + if (dTotal > 21) [ Dealer went bust. + { + if (pTotal > 21) [ He didn't see this before, + { + Print( 12); [ so show him now. + } + + if (sTotal > 21) + { + ++script; [ Go erase the winner? + } + else + { + winnings = sBet; + winnings += sBet; + function = PAY_WINNER; + Call( lgcBlackjack); + + scriptCycles = DEALER_BUST; + if (pTotal > 21) [ It wasn't drawn, + { + Draw( aWinner); [ so draw it. + } + Set( soundDone); + } + } + else [ Dealer NOT bust. + { + if (sTotal > 21) + { + ++script; [ Go erase the winner? + } + else + { + if (sTotal > dTotal) [ Split wins. + { + Print( 40); + winnings = sBet; + winnings += sBet; + function = PAY_WINNER; + Call( lgcBlackjack); + + scriptCycles = WINNER; + if (pTotal > 21) [ It wasn't drawn, + { + Draw( aWinner); [ so draw it. + } + Set( soundDone); + } + + if (sTotal == dTotal) [ Split hand's a push. + { + Print( 39); + winnings = sBet; + function = PAY_WINNER; + Call( lgcBlackjack); + + ++script; + } + + if (sTotal < dTotal) [ Player loses. + { + Print( 41); + ++script; + } + } + } + } + } + + + [ We only get here if the WINNER sign is drawn. Erase it. + + if (script == 206) + { + Erase( aWinner); + handInPlay = HAND_DONE; + } + + + + [ He lost. Turn over dealer's hole card and tell him the bad news. + + if (script == 221) + { + currentCard = dFirstCard; + ++currentCard; + function = DRAW_CARD; + Call( lgcBlackjack); + + handInPlay = HAND_DONE; + } + + + + + [ He's a six-card automatic winner. Pay off without showing + [dealer's hole card. Tell him the good news. + + if (script == 231) + { + if (!pSixCardWinner) + { + ++script; + } + else + { + winnings = pBet; + winnings += pBet; + function = PAY_WINNER; + Call( lgcBlackjack); + + scriptCycles = AUTO_WIN; + Draw( aWinner); + Set( soundDone); + } + } + + if (script == 232) + { + if (!sSixCardWinner) + { + ++script; + } + else + { + winnings = sBet; + winnings += sBet; + function = PAY_WINNER; + Call( lgcBlackjack); + + scriptCycles = AUTO_WIN; + Draw( aWinner); + Set( soundDone); + } + } + + if (script == 233) + { + Erase( aWinner); + handInPlay = HAND_DONE; + } + } + + +if (handInPlay == HAND_DONE) + { + handInPlay = NONE; + + Reset( waitingForInput); + Reset( preventSaveGame); + + script = 0; + scriptCycles = 0; + clueTimer = SECONDS_BEFORE_CLUE; + + if (!dollars) [ "You eat discarded fast food + { + script = 0; + function = UPDATE_STATUS; + Call( lgcBlackjack); + } + } + + +if (handInPlay == PLAYER) + { + if (pTotal > 21) + { + Set( scriptDone); + script = 100; [ Busted + } + else + { + if (cardCount > 5) + { + Set( scriptDone); + script = 30; [ a Six Card Winner. + } + } + } + + +if (handInPlay == SPLIT) [ Auto detection of busts & winners + { + if (sTotal > 21) + { + Set( scriptDone); + script = 200; [ Busted + } + else + { + if (cardCount > 5) + { + Set( scriptDone); + script = 130; [ A six card winner! + } + } + } + + +if (soundDone) + { + Reset( soundDone); + + if (script == 1) [ It's the card shuffling sound. + { + Sound( sCardsShuffling, soundDone); + } + + if ((script == 6 || [ It's the BJ sound! + script == 204 || + script == 205 || + script == 231 || + script == 232)) + { + Sound( sBJWinner, soundDone); + } + } + + +if (restoreInProgress) + { + function = UPDATE_STATUS; + Call( lgcBlackjack); + } + + +[***** +:exit [ test for leaving the room +[***** + +if (readyToLeave) + { + Reset( handsOff); + Reset( noScript); + Reset( preventSaveGame); + newRoom = rmInsideCasino; + } + +if (debugging && forceAtest) + { + if ((pTotal != oldPTotal || + sTotal != oldSTotal || + dTotal != oldDTotal)) + { + function = SHOW_TOTALS; + Call( lgcBlackjack); + } + } + diff --git a/RM38.MSG b/RM38.MSG new file mode 100644 index 0000000..37395e1 --- /dev/null +++ b/RM38.MSG @@ -0,0 +1,168 @@ +[messages for room 38 -- rmBlackjack +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"You are sitting at a blackjack table in the casino. + There is a sign on the table titled \"House Rules.\"" + +%message 2 +"Do you want insurance? " + +%message 3 +"Amount in dollars: $" + +%message 4 +"Please bet an even number of dollars (2, 4, 6, etc.). + The house does not keep half-dollars." + +%message 5 +"The dealer has blackjack!" + +%message 6 +"Surrendering your cards, you are refunded half of your bet." + +%message 7 +"You bet zero dollars, receive zero cards, and win zero dollars and + zero cents." + +%message 8 +"You can play all night like this!" + +%message 9 +"Your insurance bet pays 2 to 1." + +%message 10 +"Please answer \"y\" or \"n\"." + +%message 11 +"You are busted." + +%message 12 +"The dealer busted." + +%message 13 +"She's a beautiful young lady, + but you vow to keep your thoughts on the game." + +%message 14 +"It's a push!" + +%message 15 +"\"Thanks for playing,\" says the dealer, finally cracking a smile. + \"Come back anytime.\"" + +%message 16 +"You lose!" + +%message 17 +"You have blackjack." + +%message 18 +"Six cards make a winner." + +%message 19 +"You can only " + +%message 20 +" when you have two cards." + +%message 21 +"\"Please, no talking at the tables.\"" + +%message 22 +"That's not a pair." + +%message 23 +"\"I'm sorry, Sir. We're not permitted to accept gratuities!\"" + +%message 24 +"%m19double when you have 10 or 11 points." + +%message 25 +"%m19split%m20" + +%message 26 +"%m19surrender%m20" + +%message 27 +"You don't have enough money!" + +%message 28 +"Don't be in such a hurry. Finish this hand first!" + +%message 29 +"It's too late now. This hand is already being played." + +%message 30 +"You can't bet more than you have." + +%message 31 +"$20.00 is the maximum bet at this table." + +%message 32 +"" + +%message 33 +"" + +%message 34 +"Your first hand " + +%message 35 +"%m34is a push!" + +%message 36 +"%m34wins!" + +%message 37 +"%m34loses!" + +%message 38 +"%m34busted!" + +%message 39 +"%m43is a push!" + +%message 40 +"%m43wins!" + +%message 41 +"%m43loses!" + +%message 42 +"%m43busted!" + +%message 43 +"Your split hand " + +%message 44 +"Please wait until it's your turn." + +%message 45 +"\n + HOUSE RULES\n\n +This table has a $20.00 limit. + Bets must be a multiple of $2.00.\n\n +Dealer must hit 16, and must stand on 17.\n\n +Blackjack pays 1-1/2 to 1 odds.\n\n +Any six cards under 22 wins.\n +" + +%message 46 +"\n +Insurance bets are offered whenever the dealer shows an ace. + They are half your bet, and pay 2 to 1 odds.\n\n +You may split a pair or surrender whenever you have only two cards.\n\n +You may double down if your cards total 10 or 11 points.\n +" + +%message 47 +"\n +Press F4 when ready to play.\n\n +Press F6 for another card.\n\n +Press F8 to stand.\n\n +To change the amount of your bet, type \"change bet.\"\n" + diff --git a/RM4.CG b/RM4.CG new file mode 100644 index 0000000..28f7ccb --- /dev/null +++ b/RM4.CG @@ -0,0 +1,189 @@ +[logics for room 4 -- lgcQuestions1 +[ "Leisure-Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm4.msg" +%include "gamedefs.h" + + +%define FIRST_QUESTION 1 +%define LAST_QUESTION 53 + +%define toldLastQuestion lf1 + +%define allsWell lv0 +%define question1 lv1 +%define question2 lv2 +%define question3 lv3 +%define question4 lv4 +%define question5 lv5 + + + +if (initLog) + { + if (forceAtest) + { + Print( 60); + currentQuestion = FIRST_QUESTION; + } + } [ end initLOG + + + +if (!forceAtest) + { + :askAgain; + Random( FIRST_QUESTION, LAST_QUESTION, currentQuestion); + if ((currentQuestion == question1 || + currentQuestion == question2 || + currentQuestion == question3 || + currentQuestion == question4 || + currentQuestion == question5)) + { + goto askAgain; + } + else + { + if (question == 1) {question1 = currentQuestion}; + if (question == 2) {question2 = currentQuestion}; + if (question == 3) {question3 = currentQuestion}; + if (question == 4) {question4 = currentQuestion}; + if (question == 5) {question5 = currentQuestion}; + if (question == 6) {questionStatus = allDone;} + if (question == 5 && + !toldLastQuestion) + { + Set( toldLastQuestion); + Print( 69); + } + + ++question; + } + } + +if (currentQuestion == 1) {correctAnswer = 2;} +if (currentQuestion == 2) {correctAnswer = 3;} +if (currentQuestion == 3) {correctAnswer = 4;} +if (currentQuestion == 4) {correctAnswer = 3;} +if (currentQuestion == 5) {correctAnswer = 4;} +if (currentQuestion == 6) {correctAnswer = 1;} +if (currentQuestion == 7) {correctAnswer = 3;} +if (currentQuestion == 8) {correctAnswer = 4;} +if (currentQuestion == 9) {correctAnswer = 4;} +if (currentQuestion == 10) {correctAnswer = 4;} +if (currentQuestion == 11) {correctAnswer = 3;} +if (currentQuestion == 12) {correctAnswer = 3;} +if (currentQuestion == 13) {correctAnswer = 3;} +if (currentQuestion == 14) {correctAnswer = 3;} +if (currentQuestion == 15) {correctAnswer = 3;} +if (currentQuestion == 16) {correctAnswer = 4;} +if (currentQuestion == 17) {correctAnswer = 1;} +if (currentQuestion == 18) {correctAnswer = 3;} +if (currentQuestion == 19) {correctAnswer = 3;} +if (currentQuestion == 20) {correctAnswer = 2;} +if (currentQuestion == 21) {correctAnswer = 1;} +if (currentQuestion == 22) {correctAnswer = 3;} +if (currentQuestion == 23) {correctAnswer = 1;} +if (currentQuestion == 24) {correctAnswer = 2;} +if (currentQuestion == 25) {correctAnswer = 4;} +if (currentQuestion == 26) {correctAnswer = 4;} +if (currentQuestion == 27) {correctAnswer = 3;} +if (currentQuestion == 28) {correctAnswer = 4;} +if (currentQuestion == 29) {correctAnswer = 0;} +if (currentQuestion == 30) {correctAnswer = 4;} +if (currentQuestion == 31) {correctAnswer = 2;} +if (currentQuestion == 32) {correctAnswer = 3;} +if (currentQuestion == 33) {correctAnswer = 2;} +if (currentQuestion == 34) {correctAnswer = 3;} +if (currentQuestion == 35) {correctAnswer = 4;} +if (currentQuestion == 36) {correctAnswer = 1;} +if (currentQuestion == 37) {correctAnswer = 3;} +if (currentQuestion == 38) {correctAnswer = 1;} +if (currentQuestion == 39) {correctAnswer = 2;} +if (currentQuestion == 40) {correctAnswer = 3;} +if (currentQuestion == 41) {correctAnswer = 1;} +if (currentQuestion == 42) {correctAnswer = 2;} +if (currentQuestion == 43) {correctAnswer = 4;} +if (currentQuestion == 44) {correctAnswer = 4;} +if (currentQuestion == 45) {correctAnswer = 3;} +if (currentQuestion == 46) {correctAnswer = 4;} +if (currentQuestion == 47) {correctAnswer = 2;} +if (currentQuestion == 48) {correctAnswer = 4;} +if (currentQuestion == 49) {correctAnswer = 3;} +if (currentQuestion == 50) {correctAnswer = 2;} +if (currentQuestion == 51) {correctAnswer = 3;} +if (currentQuestion == 52) {correctAnswer = 1;} +if (currentQuestion == 53) {correctAnswer = 4;} + + +if (questionStatus != allDone) + { + if (forceAtest) + { + ClearLines( 23, 23, 0); + Display( 23, 0, 66); + PrintV( currentQuestion); + ++currentQuestion; + if (!currentQuestion > LAST_QUESTION) + { + questionStatus = waitAwhile; + scriptTimer = 2; + } + else + { + questionStatus = allDone; + } + } + else + { + AcceptInput(); + CancelLine(); + PreventInput(); + ClearLines( 22, 24, BG_COLOR); + + Set( leaveWindow); + PrintV( currentQuestion); + lastChar = 0; + Display( 23, 0, 67); + + + SetScanStart(); + if (!lastChar) + { + Return(); + } + + if (lastChar > 64 && [ ABCD + lastChar < 69) + { + lastChar += 32; [ Convert to abcd (lower case). + } + + if ((lastChar < 97 || + lastChar > 100)) + { + Sound( sError, done); + Return(); + } + ResetScanStart(); [ We've got a valid letter. + + + answer = lastChar; + lastChar = 0; + answer -= 96; [ Now answer between a and d. + + message = 60; [ 1 less than first message # + message += answer; + y = 23; + x = 29; + DisplayV( y, x, message); + questionStatus = waitAwhile; + scriptTimer = 3; + } + } + + +[***** +:exit [ test for leaving the room +[***** diff --git a/RM4.MSG b/RM4.MSG new file mode 100644 index 0000000..0723f80 --- /dev/null +++ b/RM4.MSG @@ -0,0 +1,434 @@ +[messages for room 4 -- lgcQuestions3 +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"When playing \"Monopoly\" you\n\n + a. hope for a straight\n + flush.\n + b. must own four houses\n + before building\n + a hotel.\n + c. need a black jack to\n + win.\n + d. win with a seven and\n + a five." + +%message 2 +"Which is not in Hawaii?\n\n + a. Oahu\n + b. Kauai\n + c. Fiji\n + d. Maui" + +%message 3 +"Which is not a car?\n\n + a. Ferrari\n + b. Porsche\n + c. Corvair\n + d. Toshiba" + +%message 4 +"President Eisenhower's nickname was\n\n + a. Tink.\n + b. Blackjack.\n + c. Ike.\n + d. Tina." + +%message 5 +"Bourbon Street is in\n\n + a. Whiskeyville, Indiana.\n + b. Jackass Flats, Idaho.\n + c. \"Monopoly.\"\n + d. New Orleans, Louisiana." + +%message 6 +"Does a pair of queens beat three deuces?\n\n + a. Yes, in blackjack.\n + b. Yes, in poker.\n + c. No, in canasta.\n + d. It depends on what the\n + three deuces said." + +%message 7 +"Calvin Klein is\n\n + a. married to\n + Brooke Shields.\n + b. a movie star.\n + c. a clothing designer.\n + d. President of the\n + Coarsegold Chamber\n + of Commerce." + +%message 8 +"Two bits is\n\n + a. all it takes to consume\n + a \"Big Mac.\"\n + b. computer talk.\n + c. about a dollar.\n + d. the former cost for a\n + shave and a haircut." + +%message 9 +"Charlie McCarthy and\n\n + a. John Lennon\n + b. Louis Pasteur\n + c. Albert Einstein\n + d. Edgar Bergen" + +%message 10 +"Who is not a famous musician?\n\n + a. Lawrence Welk\n + b. Tommy Dorsey\n + c. Les Brown\n + d. Steve Garvey" + +%message 11 +"Which is non-alcoholic?\n\n + a. whiskey\n + b. Grand Marnier\n + c. Perrier\n + d. tequila" + +%message 12 +"Who was not a politician?\n\n + a. Richard Nixon\n + b. Ronald Reagan\n + c. W. C. Fields\n + d. George Bush" + +%message 13 +"The last name of Annette (on the original Mickey Mouse Club) was\n\n + a. Funnicular.\n + b. that WAS her last name.\n + c. Funicello.\n + d. Avalon." + +%message 14 +"\"Tiptoe Through the Tulips\" was recorded by\n\n + a. Alice Cooper.\n + b. Alice B. Toklas.\n + c. Tiny Tim.\n + d. Big Tiny Little." + +%message 15 +"Which one of these was not a war?\n\n + a. Crimean\n + b. Korean\n + c. Chinese\n + d. Vietnamese" + +%message 16 +"Who's buried in Grant's tomb?\n\n + a. Grant Tinker\n + b. Land Grant\n + c. NSF Grant\n + d. Mrs. Grant" + +%message 17 +"John F. Kennedy drove a\n\n + a. PT boat.\n + b. spike faster than a\n + steam driver.\n + c. battleship.\n + d. Ferrari." + +%message 18 +"Peter Piper picked a peck of pickled\n\n + a. pips.\n + b. pipers.\n + c. peppers.\n + d. peekers." + +%message 19 +"A result of Watergate was\n\n + a. the loss of water.\n + b. Jimmy Carter quit.\n + c. Richard Nixon quit.\n + d. Gerald Ford quit." + +%message 20 +"I find computer games with adult content\n\n + a. offensive.\n + b. acceptable.\n + c. repulsive.\n + d. under my bed." + +%message 21 +"The Atlantic and Pacific Oceans are connected by the\n\n + a. Panama Canal.\n + b. Snake River.\n + c. hips.\n + d. Isthmus of Panama." + +%message 22 +"The most likely place to find virgins is\n\n + a. The Virgin Islands.\n + b. Virginia.\n + c. St. Mary's Girls School.\n + d. Hollywood." + +%message 23 +"Who wrote \"To be, or not to be?\"\n\n + a. Bill Shakespeare.\n + b. Paul McCartney.\n + c. George Bernard Shaw.\n + d. Tennessee Williams." + +%message 24 +"The largest state is\n\n + a. California.\n + b. Alaska.\n + c. Rhode Island.\n + d. Texas." + +%message 25 +"Utah is full of\n\n + a. fresh water.\n + b. Jews.\n + c. Catholics.\n + d. None of the above." + +%message 26 +"The leader of Nazi Germany was\n\n + a. Boris Godunov.\n + b. Mussolini.\n + c. Oleg Cassinni.\n + d. Adolph Hitler." + +%message 27 +"Lee Harvey Oswald killed\n\n + a. Harvey Milk.\n + b. Charles Nelson Reilly.\n + c. John Fitzgerald Kennedy.\n + d. William Randolph Hearst." + +%message 28 +"How many molecules are in a glass of water?\n\n + a. one million\n + b. one trillion\n + c. one million trillion\n + d. as many as there are\n + glasses of water\n + in the whole world" + +%message 29 +"If a physician were stranded on a desert island with Bo Derek, he would + probably\n\n + a. build a boat.\n + b. take two aspirins.\n + c. overcharge her.\n + d. thank God." + +%message 30 +"If Bo Derek were here, I'd ask her to\n\n + a. leave.\n + b. respect my privacy.\n + c. help me with my\n + homework.\n + d. stop playing computer\n + games." + +%message 31 +"Joe DiMaggio played\n\n + a. pool.\n + b. baseball.\n + c. basketball.\n + d. trumpet." + +%message 32 +"The most populous city in the United States is\n\n + a. Los Angeles.\n + b. Mexico City.\n + c. New York.\n + d. Chicago." + +%message 33 +"A nehru jacket is\n\n + a. made from tanned nehru\n + hides.\n + b. out of date.\n + c. a Middle Eastern\n + prophylactic.\n + d. around a car's radiator." + +%message 34 +"Sergeant Pepper was\n\n + a. the Beatles' chauffeur.\n + b. Elvis' manager.\n + c. the leader of the Lonely\n + Hearts Club Band.\n + d. hung for treason." + +%message 35 +"Which is not an American armed force?\n\n + a. the Army\n + b. the Navy\n + c. the National Guard\n + d. the National League" + +%message 36 +"The most effective form of birth control is\n\n + a. abstinence.\n + b. the Rhythm Method.\n + c. the Pill.\n + d. dating ugly people." + +%message 37 +"Which is not a city in Mexico?\n\n + a. Tijuana\n + b. Puerto Vallarta\n + c. San Diego\n + d. Mexico City" + +%message 38 +"Herb Alpert and the _____ Brass\n\n + a. Tijuana\n + b. Boss\n + c. Canadian\n + d. Top" + +%message 39 +"\"It's not nice to fool\"\n\n + a. Mother Hubbard.\n + b. Mother Nature.\n + c. the government.\n + d. Mayor Daly." + +%message 40 +"\"Where's the\"\n\n + a. catsup?\n + b. toilet?\n + c. beef?\n + d. rest of this game?" + +%message 41 +"Who was not an astronaut?\n\n + a. John Milton\n + b. John Glenn\n + c. Neil Armstrong\n + d. Richard Gordon" + +%message 42 +"Who has not been a\n +U. S. Attorney General?\n\n + a. John Mitchell\n + b. Sam Shepard\n + c. Ramsey Clark\n + d. Herbert Browner" + +%message 43 +"Which is not a cheese?\n\n + a. Jarlsburg\n + b. Mozzarella\n + c. Brie\n + d. Reisling" + +%message 44 +"Captain Kangaroo's sidekick was\n\n + a. Mr. Potato Head.\n + b. Winnie the Pooh.\n + c. Mr. Rogers.\n + d. Mr. Greenjeans." + +%message 45 +"Mohammed Ali is\n\n + a. a ballet star.\n + b. an Arab terrorist.\n + c. a professional boxer.\n + d. a singer." + +%message 46 +"Who is not a mass murderer?\n\n + a. Charlie Manson\n + b. Ted Bundy\n + c. Jack the Ripper\n + d. Timothy Leary" + +%message 47 +"There are about _____ calories in a can of beer.\n\n + a. 15\n + b. 150\n + c. 1500\n + d. 15000" + +%message 48 +"John Belushi was on\n\n + a. \"Mr. Rogers.\"\n + b. \"The PTL club.\"\n + c. \"My Mother the Car.\"\n + d. \"Saturday Night Live.\"" + +%message 49 +"James Earl Jones was the voice of\n\n + a. Jason in \"Friday\n + the 13th.\"\n + b. Freddie in \"Nightmare on\n + Elm Street.\"\n + c. Darth Vader in\n + \"Star Wars.\"\n + d. Kriswell in \"Plan 9 From\n + Outer Space.\"" + +%message 50 +"Doonesbury's \"Uncle Duke\" is based on\n\n + a. Jeffrey Hunter.\n + b. Hunter S. Thompson.\n + c. Huntz Hall.\n + d. None of the above." + +%message 51 +"In Westworld, \"where nothing can go wrong,\" guests were entertained by\n\n + a. Stephen Wright.\n + b. X-rated movies.\n + c. robots.\n + d. Rodney Dangerfield." + +%message 52. +"Mork was from the planet\n\n + a. Ork.\n + b. Vulcan.\n + c. Krypton.\n + d. Pluto." + +%message 53 +"Who was banned from \"Saturday Night Live\" because he lost a telephone poll?\n\n + a. John Belushi\n + b. Dan Akroyd\n + c. Chevy Chase\n + d. Andy Kaufman" + + + + +%message 60 +"Dynamic logic = 4." + +%message 61 +"a" + +%message 62 +"b" + +%message 63 +"c" + +%message 64 +"d" + +%message 65 +"So far, so good.\n\n +Now for the final question." + +%message 66 +"Question #%v96. Correct answer is %v93." + +%message 67 +"Please answer a, b, c, or d: " + +%message 69 +"So far, so good.\n\n +Now for the final question." + diff --git a/RM40.CG b/RM40.CG new file mode 100644 index 0000000..a8d655b --- /dev/null +++ b/RM40.CG @@ -0,0 +1,634 @@ +[logics for room 40 -- rmElevators +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm40.msg" +%include "gamedefs.h" + + + +[ Vertical elevator maze. One floor has the honeymoon suite entrance, + + +#define L_HALL_DOOR 0 +#define HONEYMOON_FLOOR 4 + +%define nearTHEDoor lf0 +%define doorDone lf2 +%define elevatorMoving lf4 +%define inElevator lf5 +%define goingDown lf6 + +%define currentFloor lv0 + +%object aElevator 1 +%object aDoors 2 +%object aFloor 3 +%object aDoor 4 +%object aNumber 6 + + + +if (initLog) + { + SetHorizon( 1); + + LoadPic( currentRoom); + DrawPic( currentRoom); + DiscardPic( currentRoom); + + LoadView( vElevator); + LoadView( vElevatorNumbers); + LoadView( vHoneymoonHallwayDoor); + LoadView( vEgoPushingElevator); + LoadView( vEgo); + + IgnoreObjs( ego); + + + AnimateObj( aDoor); + IgnoreBlocks( aDoor); + IgnoreObjs( aDoor); + SetView( aDoor, vHoneymoonHallwayDoor); + SetCel( aDoor, 0); + SetPriority( aDoor, 10); + Position( aDoor, 6, 134); + work = DOOR_CYCLE_TIME; + CycleTime( aDoor, work); + + AnimateObj( aNumber); + IgnoreBlocks( aNumber); + IgnoreObjs( aNumber); + SetView( aNumber, vElevatorNumbers); + SetPriority( aNumber, 5); + Position( aNumber, 73, 100); + StopCycling( aNumber); + + AnimateObj( aDoors); + IgnoreBlocks( aDoors); + IgnoreObjs( aDoors); + SetView( aDoors, vElevator); + SetLoop( aDoors, L_DOORS); + FixLoop( aDoors); + SetPriority( aDoors, 4); + Position( aDoors, 73, 120); + work = DOOR_CYCLE_TIME; + CycleTime( aDoors, work); + + AnimateObj( aFloor); + IgnoreBlocks( aFloor); + IgnoreObjs( aFloor); + SetView( aFloor, vElevator); + SetLoop( aFloor, L_FLOOR); + FixLoop( aFloor); + Position( aFloor, 73, 128); + SetPriority( aFloor, 5); + + AnimateObj( aElevator); + IgnoreBlocks( aElevator); + IgnoreObjs( aElevator); + SetView( aElevator, vElevator); + SetPriority( aElevator, 12); + FixLoop( aElevator); + StepSize( aElevator, two); + if (currentStatus == IN_ELEVATOR) + { + if (previousRoom == rmSecurityDesk) + { + Set( goingDown); + currentFloor = 7; + Position( aElevator, 73, 36); + } + else + { + currentFloor = 2; + Position( aElevator, 73, 167); + } + + Set( elevatorMoving); + currentStatus = IN_ELEVATOR; + + SetLoop( aElevator, L_WITH_EGO); + LastCel( aElevator, work); + SetCelV( aElevator, work); + StopCycling( aElevator); + + if (destinationFloor > currentFloor) + { + MoveObj( aElevator, 73, 36, 2, scriptDone); + script = 200; + } + else + { + if (destinationFloor < currentFloor) + { + MoveObj( aElevator, 73, 167, 2, scriptDone); + script = 200; + } + else + { + MoveObj( aElevator, 73, 128, 2, scriptDone); + script = 100; + } + } + + Draw( aElevator); + Draw( aDoors); + StopUpdate( aDoors); + + SetCelV( aNumber, currentFloor); + Draw( aNumber); + + SetView( ego, vEgo); + SetLoop( ego, FACING_FRONT); + SetPriority( ego, 12); + egoX = 76; + egoY = 126; + PositionV( ego, egoX, egoY); + [ Don't Draw ego! + } + else [ NOT in elevator. + { + Draw( aFloor); + StopUpdate( aFloor); + + SetLoop( aElevator, L_EMPTY); + SetCel( aElevator, 0); + Position( aElevator, 73, 128); + Draw( aElevator); + StopUpdate( aElevator); + + currentFloor = HONEYMOON_FLOOR; + + Draw( aDoor); + StopUpdate( aDoor); + + SetLoop( ego, FACING_RIGHT); + egoX = 9; + egoY = 132; + PositionV( ego, egoX, egoY); + Draw( ego); + StartMotion( ego); + } + + + ShowPic( ); + + if (previousRoom == rmHoneymoonSuite) + { + Print( 18); + } + + Return( ); + + } [ end initLOG + + + +Reset( inElevator); +if (Posn( ego, 73, 119, 83, 127)) + { + Set( inElevator); + } + +if (inElevator) + { + SetPriority( ego, 11); + } +else + { + ReleasePriority( ego); + } + + +Reset( nearTHEDoor); +if (currentFloor == HONEYMOON_FLOOR && + Posn( ego, 6, 126, 15, 135)) + { + Set( nearTHEDoor); + } + + + +[***** +:handleInput +[***** + +if (!haveInput) {goto noInput;} + +if (elevatorMoving && !haveMatch) + { + if ((Said( listen) || + Said( listen, elevator) || + Said( listen, music) || + Said( sing, music) || + Said( sing) || + Said( sing, along))) + { + Print( 7); + } + else + { + Set( haveMatch); + Print( 5); + } + } + + +if ((Said( look) || + Said( look, room) || + Said( look, floor) || + Said( look, hotel))) + { + Print( 1); + + if (currentFloor == HONEYMOON_FLOOR) + { + Print( 2); + } + + if (inElevator) + { + Print( 20); + } + } + +if (Said( look, elevator)) + { + if (inElevator) + { + Print( 20); + } + else + { + Print( 22); + } + } + + +if (Said( look, plants)) + { + Print( 16); + } + +if (Said( look, door)) + { + if (nearTHEDoor) + { + Print( 11); + } + else + { + Print( 12); + } + } + +if (Said( anyword, heart, rol)) + { + if (nearTHEDoor) + { + Print( 23); + } + else + { + Print( 24); + } + } + +if ((Said( knock) || + Said( knock, on, door) || + Said( knock, door))) + { + if (!nearTHEDoor) + { + Print( 32); + Random( 34, 50, message); + PrintV( message); + Print( 33); + } + else + { + if (!fawnInRoom) + { + Print( 4); + } + else + { + if (orderedWine && !seenDeliveryBoyGag) + { + Print( 25); + Print( 26); + } + else + { + Print( 6); + Print( 8); + } + + Print( 10); + StartUpdate( aDoor); + EndOfLoop( aDoor, doorDone); + StopMotion( ego); + Set( programControl); + } + } + } + + +if (Said( open, door)) + { + if (!nearTHEDoor) + { + Print( 17); + } + else + { + Print( 9); + } + } + +if ((Said( open, door, use, rol) || + Said( break, door, rol))) + { + Print( 27); + } + + +if ((Said( unlock, door, rol) || + Said( use, key, rol))) + { + if (!nearTHEDoor) + { + Set( notCloseEnough); + } + else + { + Print( 21); + } + } + +if (Said( jump, rol)) + { + Print( 31); + } + +if ((Said( look, down) || + Said( spit))) + { + Print( 28); + Print( 29); + Print( 30); + } + + +if (!script && inElevator) + { + if ((Said( press, one) || + Said( press, button, one) || + Said( one))) + { + destinationFloor = 1; + Set( scriptDone); + } + + if ((Said( press, two) || + Said( press, button, two) || + Said( two))) + { + destinationFloor = 2; + Set( scriptDone); + } + + if ((Said( press, three) || + Said( press, button, three) || + Said( three))) + { + destinationFloor = 3; + Set( scriptDone); + } + + if ((Said( press, four) || + Said( press, button, four) || + Said( four))) + { + destinationFloor = 4; + Set( scriptDone); + } + + if ((Said( press, five) || + Said( press, button, five) || + Said( five))) + { + destinationFloor = 5; + Set( scriptDone); + } + + if ((Said( press, six) || + Said( press, button, six) || + Said( six))) + { + destinationFloor = 6; + Set( scriptDone); + } + + if ((Said( press, seven) || + Said( press, button, seven) || + Said( seven))) + { + destinationFloor = 7; + Set( scriptDone); + } + + if ((Said( press, eight) || + Said( press, button, eight) || + Said( eight))) + { + destinationFloor = 8; + Set( scriptDone); + } + + if ((Said( push, rol) || + Said( push, button, rol))) + { + Print( 19); + } + } + + + +[***** +:noInput +[***** + +if (doorDone) + { + Reset( programControl); + newRoom = rmHoneymoonSuite; + } + + +if (scriptDone) + { + Reset( scriptDone); + ++script; + + if (script == 1) + { + Set( elevatorMoving); + currentStatus = IN_ELEVATOR; + StopMotion( ego); + Set( programControl); + SetView( ego, vEgoPushingElevator); + SetCel( ego, 0); + RepositionTo( ego, 76, 126); + CycleTime( ego, three); + Set( keepCycling); + EndOfLoop( ego, scriptDone); + } + + if (script == 2) + { + Erase( ego); + SetView( ego, vEgo); + + SetLoop( aElevator, L_WITH_EGO); + SetCel( aElevator, 0); + CycleTime( aElevator, three); + EndOfLoop( aElevator, scriptDone); + } + + if (script == 3) + { + Erase( aFloor); + Draw( aDoors); + + SetCelV( aNumber, currentFloor); + Draw( aNumber); + + script = 200; + StopCycling( aElevator); + + if (destinationFloor > currentFloor) + { + Reset( goingDown); + MoveObj( aElevator, 73, 36, 2, scriptDone); + script = 200; + } + else + { + if (destinationFloor < currentFloor) + { + Set( goingDown); + MoveObj( aElevator, 73, 167, 2, scriptDone); + script = 200; + } + else + { + Print( 3); + script = 101; [ We'll catch it immediately. + } + } + } + + + + if (script == 101) [ He's at the floor he wants. + { + Erase( aDoors); + Erase( aNumber); + + CycleTime( aElevator, two); + StartCycling( aElevator); + BeginningOfLoop( aElevator, scriptDone); + } + + if (script == 102) [ Let him out. + { + Reset( elevatorMoving); + currentStatus = NORMAL; + destinationFloor = 0; + script = 0; + SetLoop( aElevator, L_EMPTY); + + Draw( aFloor); + + SetView( ego, vEgo); + SetLoop( ego, FACING_FRONT); + SetCel( ego, 0); + Position( ego, 76, 126); + Draw( ego); + StartMotion( ego); + CycleTime( ego, one); + Reset( keepCycling); + Reset( programControl); + } + + + + if (script == 201) + { + if (goingDown) + { + --currentFloor; + if (currentFloor == 1) + { + newRoom = rmElevatorBottom; + Return(); + } + } + else + { + ++currentFloor; + if (currentFloor == 8) + { + newRoom = rmSecurityDesk; + Return(); + } + } + + if (goingDown) + { + RepositionTo( aElevator, 73, 36); + } + else + { + RepositionTo( aElevator, 73, 167); + } + + if (currentFloor != HONEYMOON_FLOOR) + { + Erase( aDoor); + } + else + { + Draw( aDoor); + StopUpdate( aDoor); + } + + SetCelV( aNumber, currentFloor); + + if (destinationFloor > currentFloor) + { + MoveObj( aElevator, 73, 36, 2, scriptDone); + script = 200; + } + else + { + if (destinationFloor < currentFloor) + { + MoveObj( aElevator, 73, 167, 2, scriptDone); + script = 200; + } + else + { + MoveObj( aElevator, 73, 128, 2, scriptDone); + script = 100; + } + } + } + } + + +[***** +:exit [ test for leaving the room +[***** diff --git a/RM40.MSG b/RM40.MSG new file mode 100644 index 0000000..4c9e894 --- /dev/null +++ b/RM40.MSG @@ -0,0 +1,171 @@ +[messages for room 40 -- rmElevatorMaze +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"You are in the Casino's hotel. + Doors line each side, many with \"Do Not Disturb\" signs on their doorknobs." + +%message 2 +"There's a door with a heart on it to the west." + +%message 3 +"Not one for those long elevator rides, eh, Larry?" + +%message 4 +"You rap your knuckles on the door. + There is no response, but now your knuckles hurt." + +%message 5 +"Whee!" + +%message 6 +"Fawn's delicate voice booms out across the hotel:\n\n +\"Just a minute, Larry!\"" + +%message 7 +"\"strangers in the night, da da da dee da...\"" + +%message 8 +"There's a click as she unlocks the door, then a piercing + \"Come on in. The door's open.\"" + +%message 9 +"You can't. This door is locked." + +%message 10 +"Subtly, you shout, \"Here I come, baby!\"" + +%message 11 +"It's a door not unlike all the others, except this one has a cute, + trite, cracked, little, plastic heart stuck to it with a thumbtack." + +%message 12 +"It's a door just like all the others." + +%message 13 +"" + +%message 14 +"" + +%message 15 +"" + +%message 16 +"They almost look real, don't they?" + +%message 17 +"You seem surprised that the door is locked." + +%message 18 +"You close the door behind you, and jiggle the knob to confirm it is locked." + +%message 19 +"Type a word, like \"one\" or \"two.\"" + +%message 20 +"There are buttons labeled \"one\" through \"eight.\"" + +%message 21 +"You can't. There's no key in this game!" + +%message 22 +"Isn't it funny how the elevator is always waiting for you?" + +%message 23 +"The cheap, plastic heart is not worth the bother." + +%message 24 +"Where?" + +%message 25 +"Fawn's sexy voice oozes through the door, + \"Oh, baby, it's you! You're back!!\"" + +%message 26 +"There's a click as she unlocks the door. + \"Come on in, you wonderful hunk!\"" + +%message 27 +"It's no good. The door resists all of your efforts." + +%message 28 +"You contemplate expec- toration, but remember that discretion is the better + part of valium." + +%message 29 +"...or helium," + +%message 30 +"...or something." + +%message 31 +"Suicide is illegal here." + +%message 32 +"You rap your knuckles on the nearest door." + +%message 33 +"This must not be the right door, Larry." + +%message 34 +"\"Hey, Scott, the girls are here!!\"" + +%message 35 +"\"It says 'Do NOT Disturb!' Can't you read?\"" + +%message 36 +"You hear some extremely heavy breathing." + +%message 37 +"\"Go away! I gave at the office!\"" + +%message 38 +"\"Oh, Russ, there's someone at the door!\"\n\n +\"They're gonna have to wait, Kim Baby! + It's too late for me to stop now!!\"" + +%message 39 +"\"Baaaaah. Baaaaah!\"\n\n +Don't even ask, Larry!" + +%message 40 +"\"Oh, Bruce!\n +Oh, Howard!\n\n +Oh, Terri!\n +Oh, Carrie!\"" + +%message 41 +"\"Ken! Get off me, Ken!!\"" + +%message 42 +"\"Oh, gawd, Ed!! Get in the closet. It's my husband!!\"" + +%message 43 +"\"Bobbit, is that you?\"" + +%message 44 +"\"Not now; I've got wessonality!\"" + +%message 45 +"\"Is that Room Service? I didn't order anchovies.\"" + +%message 46 +"An eye appears at the peephole. + \"Hey, Mary! Isn't it a little early for Trick or Treaters?\"" + +%message 47 +"\"Oh, gawd, Ed!! Get in the closet. It's my wife!!\"" + +%message 48 +"Hmmm. Is that the smell of burning rubber?" + +%message 49 +"\"Oh, Jeff. You really know how to hurt a guy!\"" + +%message 50 +"\"Get away from him, you big bully! He's mine.\"" + diff --git a/RM41.CG b/RM41.CG new file mode 100644 index 0000000..d17efec --- /dev/null +++ b/RM41.CG @@ -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; + } diff --git a/RM41.MSG b/RM41.MSG new file mode 100644 index 0000000..f5c4cec --- /dev/null +++ b/RM41.MSG @@ -0,0 +1,230 @@ +[messages for room 41 -- rmHoneymoonSuite +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"Your are in the casino hotel's honeymoon suite. + The heart-shaped bed is just waiting for you and Fawn. + The dim lighting provides the perfect atmosphere. + You've always appreciated the \"Early American Gaudy\" look. + There is a radio on the shelf behind the bed." + +%message 2 +"This is the honeymoon suite. + The heart-shaped bed would have been perfect for you and Fawn. + Too bad things worked out like this!" + +%message 3 +"" + +%message 4 +"The radio interrupts the Frank Sinatra medley with an obnoxious + singing commercial..." + +%message 5 +"\" +We're Ajax Liquor,\n +and we're proud to say,\n +we deliver all across\n +the U.S.A.\"" + +%message 6 +"\" +You're out of luck\n +if you want to dine,\n +but if you just need booze,\n +dial 555-8039!\"" + +%message 7 +"Sounds like a nice mellow station..." + +%message 8 +"\"And now, back to our music.\"" + +%message 9 +"Click." + +%message 10 +"She doesn't appear to be in the mood yet, Larry." + +%message 11 +"Good idea. Unfortunately, you have nothing with which to cut a rope, Larry." + +%message 12 +"Right!\n\n +Using the pocket knife you got from the old bum by the convenience store, + you saw through the ropes holding you to the bed." + +%message 13 +"You never know when a nice piece of rope will come in handy." + +%message 14 +"Since you have no way of cutting the ropes, + and they're far too tightly tied for you to loosen, + it looks like this is the end for you, Larry." + +%message 15 +"You can't. She fastened them quite securely!" + +%message 16 +"You can't. You're tied to a bed!" + +%message 17 +"She is so beautiful you want to do wonderful things to, er, ah, FOR her." + +%message 18 +"\"You know, a little wine would help me get in the mood, Larry.\"" + +%message 19 +"\"I'd think the least a gentleman would do is to buy a lady + a bottle of wine.\"" + +%message 20 +"She looks ready, Larry." + +%message 21 +"She says, \"Lie down, Larry. + I have a special surprise for you!\"" + +%message 22 +"Then she says, \"Close your eyes,\" + and you do because you're sure that, finally, success is at hand." + +%message 23 +"\"Oh, Fawn!\" you moan." + +%message 24 +"You grab your wallet and look inside.\n\n +Oh, well. + At least she didn't find the %v90 bucks you hid in that secret compartment. + With your consummate gambling skills, you should be back on your feet + in no time!" + +%message 25 +"You're tied to the bed and can't move." + +%message 26 +"When Fawn has you securely tied to the bed, she grabs your wallet, saying, + \"You forgot to pay me for the wine,\" then heads out the door." + +%message 27 +"\"FAWN! Come back!\" you shout. \"This isn't funny!!\"" + +%message 28 +"\"Aren't you going to pour the wine?\" she says, her eyes flashing." + +%message 29 +"\"I'm ready when you are, honey!\"\n\n +Come on, Larry; what are you waiting for?" + +%message 30 +"She looks like she could use some of that wine." + +%message 31 +"There's no wine here." + +%message 32 +"Right. Sure. Pour another for her while you're at it!" + +%message 33 +"You grab the bottle, and fortify your courage with a long, hard belt!" + +%message 34 +"You carefully remove the bottle from the wine bucket, + unscrew the cap, and pour two glasses. + She downs her glass immediately, you refill it, and she does it again. + Her eyes meet yours, and you're sure luck is with you this time!" + +%message 35 +"This room doesn't even have a telephone!" + +%message 36 +"It's pretty complicated. There's a knob that says \"On.\"" + +%message 37 +"The radio IS off." + +%message 38 +"The radio IS on." + +%message 39 +"\"Ooh, Baby!\n\n +That feels so good!\n\n +Ooooooooooh!!\"" + +%message 40 +"\"Hey, what's the deal with the rope?\"" + +%message 41 +"" + +%message 42 +"\"Why are you tying me to the bed?\"" + +%message 43 +"You have more important things on your mind than sitting." + +%message 44 +"This window doesn't open." + +%message 45 +"The tuning knob on the radio is stuck. + Looks like you're stuck with the Easy Listening station." + +%message 46 +"You can't move the knob, + but it doesn't matter since the radio isn't on anyway!" + +%message 47 +"You see the lights of Lost Wages spread out before you." + +%message 48 +"\"Oh, Larry, it's you!\" Fawn says. + \"I thought it was that cute, young delivery boy again.\"" + +%message 49 +"Hmmm. Was \"Tuesday\" a good year?" + +%message 50 +"It's a table model, not a portable." + +%message 51 +"Besides, the hotel bolted it to the table." + +%message 52 +"You are unable to break the window." + +%message 53 +"You can't. + It's the same brand that people can't break + when they want to christen a ship!" + +%message 54 +"Move closer to the handle." + +%message 55 +"Don't you think a heart-shaped bed is trite?" + +%message 56 +"You can't. The delivery boy glued it to the table." + +%message 57 +"\"FAWN!! You scum-sucking gutter slug, get back in here!\"" + +%message 58 +"Unfortunately, your pleas go unheeded." + +%message 59 +"\"Say, Fawn, when are you going to get undressed?\"" + +%message 60 +"Hmmm. You wonder if there's any way a guy can \"consummate\" by himself?" + +%message 61 +"Larry, it looks like \"the honeymoon's over.\"" + +%message 62 +"As she heads out the door, she laughs and says, \"So long, turkey!\"" + diff --git a/RM42.CG b/RM42.CG new file mode 100644 index 0000000..5073a5f --- /dev/null +++ b/RM42.CG @@ -0,0 +1,1413 @@ +[logics for room 42 -- rmSecurityDesk +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm42.msg" +%include "gamedefs.h" + + + +[ Must give Faith at the security desk the spanish fly pills to enter the +[elevator to get to the penthouse above. + +[ Must "look faith" before talking to her. Shows the picFaithCloseup. + + + +%define L_EYES 1 +%define L_MOUTH 0 + #define C_NORMAL 0 [ mouth cells + #define C_SMILE 1 + #define C_FROWN 2 + #define DONE 255 + +%define L_SITTING 0 +%define L_LEAVING 1 +%define L_WALKING 2 + + +%define nearDesk lf0 +%define nearEmployee'sExit lf1 +%define pentDoorsOpen lf2 +%define doorDone lf3 +%define inElevator lf4 +%define elevatorMoving lf5 +%define lookingAtFaith lf6 +%define eyesCycling lf7 +%define nearPentElevator lf8 +%define inPentElevator lf9 +%define wasInPentElevator lf10 +%define cutToLongShot lf11 +%define cutToCloseup lf12 + + +%define eyeCycles lv0 +%define breathLineTimer lv1 +%define lookCount lv4 +%define talkCount lv5 +%define mouthTimer lv6 +%define mouth lv7 + + +%object aElevator 1 +%object aFaith 2 +%object aDoor 3 +%object aFloor 4 +%object aMouth 5 +%object aEyes 6 +%object aPentElevator 7 +%object aNumber 8 + + + +if (initLog) + { + SetHorizon( 1); + + LoadView( vElevator); + LoadView( vElevatorDoors); + LoadView( vElevatorNumbers); + LoadView( vEgoPushingElevator); + LoadView( vEgo); + + if (!faithGone) + { + LoadView( vReceptionist); + LoadView( vReceptionistFace); + + picture = picFaithCloseup; + LoadPic( picture); + } + + LoadPic( currentRoom); + DrawPic( currentRoom); + [ DON'T DiscardPic( currentRoom); + + + AnimateObj( aPentElevator); + IgnoreBlocks( aPentElevator); + IgnoreObjs( aPentElevator); + SetPriority( aPentElevator, 10); + SetView( aPentElevator, vElevatorDoors); + SetCel( aPentElevator, 0); + Position( aPentElevator, 137, 120); + Draw( aPentElevator); + StopUpdate( aPentElevator); + work = DOOR_CYCLE_TIME; + CycleTime( aPentElevator, work); + + + if (!faithGone) + { + AnimateObj( aFaith); + IgnoreHorizon( aFaith); + IgnoreBlocks( aFaith); + IgnoreObjs( aFaith); + SetView( aFaith, vReceptionist); + SetLoop( aFaith, L_SITTING); + SetPriority( aFaith, 13); + StepSize( aFaith, two); + Position( aFaith, 128, 132); + Draw( aFaith); + StopUpdate( aFaith); + } + + + AnimateObj( aNumber); + IgnoreBlocks( aNumber); + IgnoreObjs( aNumber); + SetView( aNumber, vElevatorNumbers); + SetPriority( aNumber, 5); + Position( aNumber, 73, 100); + SetCel( aNumber, 8); + StopCycling( aNumber); + + AnimateObj( aDoor); + IgnoreBlocks( aDoor); + IgnoreObjs( aDoor); + SetView( aDoor, vElevator); + SetLoop( aDoor, L_DOORS); + FixLoop( aDoor); + SetPriority( aDoor, 4); + Position( aDoor, 73, 120); + work = DOOR_CYCLE_TIME; + CycleTime( aDoor, work); + + AnimateObj( aFloor); + IgnoreBlocks( aFloor); + IgnoreObjs( aFloor); + SetView( aFloor, vElevator); + SetLoop( aFloor, L_FLOOR); + FixLoop( aFloor); + Position( aFloor, 73, 129); + SetPriority( aFloor, 5); + + AnimateObj( aElevator); + IgnoreBlocks( aElevator); + IgnoreObjs( aElevator); + SetView( aElevator, vElevator); + SetPriority( aElevator, 12); + FixLoop( aElevator); + StepSize( aElevator, two); + + + if (previousRoom == rmElevators) + { + Set( elevatorMoving); + + SetLoop( aElevator, L_WITH_EGO); + LastCel( aElevator, work); + SetCelV( aElevator, work); + StopCycling( aElevator); + Position( aElevator, 73, 167); + Draw( aElevator); + MoveObj( aElevator, 73, 129, 2, scriptDone); + script = 100; + + Draw( aDoor); + StopUpdate( aDoor); + + Draw( aNumber); + + SetView( ego, vEgo); + SetLoop( ego, FACING_FRONT); + SetPriority( ego, 11); + egoX = 76; + egoY = 127; + PositionV( ego, egoX, egoY); + [ Don't Draw ego! + } + else + { + Draw( aFloor); + StopUpdate( aFloor); + + SetLoop( aElevator, L_EMPTY); + SetCel( aElevator, 0); + Position( aElevator, 73, 129); + Draw( aElevator); + StopUpdate( aElevator); + + StopMotion( ego); + Set( programControl); + Set( wasInPentElevator); + SetLoop( ego, FACING_LEFT); + IgnoreBlocks( ego); + egoX = 145; + egoY = 117; + PositionV( ego, egoX, egoY); + Draw( ego); + + script = 240; + Set( scriptDone); + } + IgnoreObjs( ego); + + ShowPic( ); + + Return( ); + + } [ end initLOG + + + +Reset( nearEmployee'sExit); +if (Posn( ego, 0, 140, 20, 167)) + { + Set( nearEmployee'sExit); + } + +Reset( nearDesk); +if (Posn( ego, 117, 133, 141, 156)) + { + Set( nearDesk); + } + +if (nearDesk && !faithGone) + { + Set( nearPerson); + } + + +Reset( inElevator); +if (Posn( ego, 73, 121, 83, 127)) + { + Set( inElevator); + } + +if (inElevator) + { + SetPriority( ego, 11); + } +else + { + ReleasePriority( ego); + } + +Reset( nearPentElevator); +if (Posn( ego, 126, 112, 150, 127)) + { + Set( nearPentElevator); + } + +Reset( inPentElevator); +if (Posn( ego, 146, 111, 149, 120)) + { + Set( inPentElevator); + Set( wasInPentElevator); + } + +if (pentDoorsOpen) + { + if (nearPentElevator) + { + IgnoreBlocks( ego); + } + else + { + ObserveBlocks( ego); + if (wasInPentElevator) [ This closes the doors. + { + Reset( wasInPentElevator); + Set( scriptDone); + script = 242; + } + } + + if (inPentElevator) + { + Set( scriptDone); [ Let's go upstairs. + script = 250; + } + } + + +[***** +:handleInput +[***** + +if (!haveInput) {goto noInput;} + +[ First, do the general stuff. + +[ First, we'll do all the stuff pertaining to the penthouse elevator. + +if (nearPentElevator && + (Said( push, button) || + Said( use, elevator) || + Said( enter, elevator) || + Said( open, elevator))) + { + Print( 22); + } + +if (faithGone && + (Said( look, behind, counter) || + Said( look, behind, desk) || + Said( look, counter) || + Said( look, desk) || + Said( look, button))) + { + if (!nearDesk) + { + Set( notCloseEnough); + } + else + { + Print( 12); + } + } + +if (Said( look, elevator)) + { + if (inElevator) + { + Print( 9); + } + else + { + Print( 58); + } + } + + +if ((Said( look, counter) || + Said( look, behind, counter) || + Said( look, behind, desk) || + Said( look, desk))) + { + if (!nearDesk) + { + Set( notCloseEnough); + } + else + { + if (!faithGone) + { + Print( 11); + } + else + { + Print( 12); + } + } + } + + +if (!inElevator && [ Otherwise, let the elevator code below grab it. + (Said( press, button) || + Said( open, elevator, door) || + Said( open, elevator))) + { + if (!nearDesk) + { + Set( notCloseEnough); + } + else + { + if (!faithGone) + { + Print( 19); + } + else + { + Print( 21); + StartUpdate( aPentElevator); + EndOfLoop( aPentElevator, doorDone); + Set( pentDoorsOpen); + } + } + } + + + +[ Ok, Faith, baby, here it comes: + + +if (!faithGone) + { + if (lookingAtFaith) + { + if (Said( use, spray, rol)) + { + Reset( haveMatch); + mouth = C_SMILE; + eyeCycles = 3; + Reset( eyesCycling); [ Start 'em flappin'. + } + + if ((Said( stop, looking, faith) || + Said( look, away) || + Said( look, room) || + Said( look, away, from, faith) || + Said( leave, rol))) + { + Set( cutToLongShot); + Set( OK); + } + } + + if ((Said( look, faith, rol) || + Said( establish$eye$contact, rol) || + Said( look$in, faith, rol))) + { + if (script) + { + Print( 50); + } + else + { + if (!nearDesk) + { + Set( notCloseEnough); + } + else + { + if (!lookingAtFaith) + { + Set( cutToCloseup); + } + else + { + ++lookCount; + if (lookCount == 1) + { + Print( 3); + } + + if (lookCount == 2) + { + Print( 51); + } + + if (lookCount > 2) + { + Print( 52); + mouth = C_SMILE; + } + } + } + } + } + + + if ((Said( talk, faith, rol) || + Said( ask, faith, rol) || + Said( say, anyword, faith, rol))) + { + if (!nearDesk) + { + Set( notCloseEnough); + } + else + { + if (!lookingAtFaith) + { + Print( 35); + } + else + { + ++talkCount; + if (talkCount == 1) + { + Print( 36); + Print( 37); + mouth = C_SMILE; + } + + if (talkCount == 2) + { + Print( 38); + Print( 39); + mouth = C_SMILE; + } + + if (talkCount == 3) + { + Print( 40); + Print( 41); + mouth = C_SMILE; + } + + if (talkCount == 4) + { + Print( 42); + Print( 43); + Print( 44); + mouth = C_NORMAL; + } + + if (talkCount == 5) + { + Print( 45); + Print( 46); + Print( 47); + mouth = C_SMILE; + } + + if (talkCount > 5) + { + Print( 56); + } + } + } + } + + + if ((Said( give, faith, pills, rol) || + Said( open, pills, rol) || + Said( give, pills, faith, rol))) + { + if (!Has( iPills)) + { + Set( dontHaveIt); + } + else + { + if (!nearDesk) + { + Set( notCloseEnough); + } + else + { + if (!lookingAtFaith) + { + Print( 35); + } + else + { + Set( scriptDone); + script = 200; + } + } + } + } + + + if ((Said( give, faith, money, rol) || + Said( give, money, faith, rol))) + { + if (!nearDesk) + { + Set( notCloseEnough); + } + else + { + if (!lookingAtFaith) + { + Print( 35); + } + else + { + Print( 53); + mouth = C_FROWN; + } + } + } + + if ((Said( open, door, me) || + Said( unlock, door, me))) + { + if (!nearDesk) + { + Set( notCloseEnough); + } + else + { + Print( 59); + } + } + + if ((Said( look, guns, rol) || + Said( look, girl, boobs) || + Said( look, boobs, rol) || + Said( look, body) || + Said( stare) || + Said( stare, boobs) || + Said( look, boobs, rol))) + { + if (!nearDesk) + { + Set( notCloseEnough); + } + else + { + if (!lookingAtFaith) + { + Print( 48); + } + else + { + Print( 49); + } + } + } + + + if ((Said( look, eyes, rol) || + Said( look, mouth, rol))) + { + if (!nearDesk) + { + Set( notCloseEnough); + } + else + { + if (!lookingAtFaith) + { + Print( 48); + } + else + { + Print( 55); + } + } + } + + + [ The rest of these are "close up lines" only good + [ when "lookingatFaith." + + if (lookingAtFaith) + { + if ((Said( smile) || + Said( smile, girl) || + Said( hold, hand) || + Said( take, her, hand) || + Said( touch, girl) || + Said( touch, her) || + Said( ask, date))) + { + Print( 65); + mouth = C_SMILE; + } + + if ((Said( look, eyes) || + Said( look$in, eyes) || + Said( flirt, with, her) || + Said( wink, girl) || + Said( give, girl, kiss) || + Said( kiss, girl))) + { + mouth = C_SMILE; + } + + if ((Said( look, her, hair) || + Said( look, hair) || + Said( stroke, hair) || + Said( rub, hair) || + Said( rub, her, hair))) + { + Print( 66); + } + + if ((Said( ask, name) || + Said( ask, her, name) || + Said( ask, name, girl))) + { + Print( 43); + Print( 44); + mouth = C_SMILE; + } + + if ((Said( larry) || + Said( leisure$suit, larry))) + { + Print( 67); + } + + if ((Said( look, mouth) || + Said( look, her, mouth))) + { + Print( 68); + } + + if ((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))) + { + Print( 69); + mouth = C_FROWN; + } + + if ((Said( talk, her, love) || + Said( love, you) || + Said( take, her, hand))) + { + Print( 70); + } + + if ((Said( touch, faith, rol) || + 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) || + 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( grab, her, leg) || + Said( eat, faith, rol) || + Said( hump, faith, rol) || + Said( kiss, faith, rol) || + Said( anyword, guns, rol) || + Said( feel, her, rol) || + Said( touch, boobs, rol))) + { + Print( 8); + Print( 31); + mouth = C_FROWN; + } + + if (Said( do, you, get, off)) + { + Print( 64); + } + + if ((Said( time, do, you, get, off) || + Said( time, do, you, get, off, work) || + Said( time, off, work) || + Said( time, off) || + Said( quit, time))) + { + Print( 72); + } + + if (Said( come, with, me)) + { + Print( 71); + } + } + } + +if ((Said( climb, over, desk) || + Said( jump, over, desk))) + { + Print( 63); + } + +if ((Said( look) || + Said( look, room) || + Said( look, floor) || + Said( look, hotel))) + { + if (nearEmployee'sExit && faithGone) + { + Print( 10); + } + else + { + if (nearPentElevator) + { + if (!pentDoorsOpen) + { + Print( 22); + } + else + { + Print( 34); + } + } + else + { + if (!nearDesk) + { + if (faithGone) + { + Print( 15); + } + else + { + Print( 1); + } + } + else + { + if (!faithGone) + { + Print( 11); + } + else + { + Print( 12); + } + } + } + } + } + + +if (!faithGone && + Said( wave, faith)) + { + Print( 57); + } + + +if ((Said( look, door) || + Said( look, elevator))) + { + if (nearEmployee'sExit && faithGone) + { + Print( 10); + } + else + { + if (inElevator) + { + Print( 9); + } + else + { + if (!nearPentElevator) + { + Print( 24); + } + else + { + if (!pentDoorsOpen) + { + Print( 22); + } + else + { + Print( 34); + } + } + } + } + } + +if ((Said( look, down) || + Said( spit, down) || + Said( spit, over, railing) || + Said( look, over, railing) || + Said( spit))) + { + Print( 26); + Print( 27); + Print( 28); + } + +if (Said( jump, rol)) + { + Print( 62); + } + +if ((Said( look, plants) || + Said( look$in, plants))) + { + Print( 25); + } + +if ((Said( knock) || + Said( knock, on, door) || + Said( knock, door))) + { + Print( 29); + Print( 54); + } + +if ((Said( use, stairs) || + Said( go, down) || + Said( go, down, stairs))) + { + Print( 10); + } + +if ((Said( unlock, door, rol) || + Said( use, key, rol))) + { + Print( 61); + } + +if (Said( open, door)) + { + Print( 30); + } + +if ((Said( open, door, use, rol) || + Said( break, door, rol))) + { + Print( 60); + } + + + +[ Last, handle the elevator stuff. + +if (elevatorMoving && !haveMatch) + { + if ((Said( listen) || + Said( sing) || + Said( sing, along))) + { + Print( 7); + } + else + { + Set( haveMatch); + Print( 5); + } + } + + +if (!script && inElevator) + { + if ((Said( press, one) || + Said( press, button, one) || + Said( one))) + { + destinationFloor = 1; + Set( scriptDone); + } + + if ((Said( press, two) || + Said( press, button, two) || + Said( two))) + { + destinationFloor = 2; + Set( scriptDone); + } + + if ((Said( press, three) || + Said( press, button, three) || + Said( three))) + { + destinationFloor = 3; + Set( scriptDone); + } + + if ((Said( press, four) || + Said( press, button, four) || + Said( four))) + { + destinationFloor = 4; + Set( scriptDone); + } + + if ((Said( press, five) || + Said( press, button, five) || + Said( five))) + { + destinationFloor = 5; + Set( scriptDone); + } + + if ((Said( press, six) || + Said( press, button, six) || + Said( six))) + { + destinationFloor = 6; + Set( scriptDone); + } + + if ((Said( press, seven) || + Said( press, button, seven) || + Said( seven))) + { + destinationFloor = 7; + Set( scriptDone); + } + + if ((Said( press, eight) || + Said( press, button, eight) || + Said( eight))) + { + destinationFloor = 8; + Set( scriptDone); + } + + if ((Said( push, rol) || + Said( push, button, rol))) + { + Print( 23); + } + } + + + +[***** +:noInput +[***** + +if (cutToCloseup) + { + Reset( cutToCloseup); + Set( lookingAtFaith); + Set( handsOff); + + UnanimateAll(); + DrawPic( picture); + + AnimateObj( aMouth); + SetView( aMouth, vReceptionistFace); + SetLoop( aMouth, L_MOUTH); + SetCel( aMouth, 0); + SetPriority( aMouth, 4); + Position( aMouth, 49, 77); + StopCycling( aMouth); + + AnimateObj( aEyes); + SetView( aEyes, vReceptionistFace); + SetLoop( aEyes, L_EYES); + SetCel( aEyes, 0); + SetPriority( aEyes, 5); + Position( aEyes, 48, 45); + CycleTime( aEyes, three); + StopCycling( aEyes); + + 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( lookingAtFaith); + Reset( handsOff); + + eyeCycles = 0; + breathLineTimer = 0; + + UnanimateAll(); + DrawPic( currentRoom); + + AnimateObj( ego); + Draw( ego); + + AnimateObj( aFaith); + IgnoreHorizon( aFaith); + IgnoreBlocks( aFaith); + IgnoreObjs( aFaith); + SetPriority( aFaith, 13); + StepSize( aFaith, two); + Draw( aFaith); + StopUpdate( aFaith); + + AnimateObj( aPentElevator); + IgnoreBlocks( aPentElevator); + IgnoreObjs( aPentElevator); + SetPriority( aPentElevator, 10); + Draw( aPentElevator); + work = DOOR_CYCLE_TIME; + CycleTime( aPentElevator, work); + StopUpdate( aPentElevator); + + AnimateObj( aNumber); + IgnoreBlocks( aNumber); + IgnoreObjs( aNumber); + SetPriority( aNumber, 5); + StopCycling( aNumber); + + AnimateObj( aElevator); + IgnoreBlocks( aElevator); + IgnoreObjs( aElevator); + SetPriority( aElevator, 12); + FixLoop( aElevator); + StepSize( aElevator, two); + Draw( aElevator); + StopUpdate( aElevator); + + AnimateObj( aDoor); + IgnoreBlocks( aDoor); + IgnoreObjs( aDoor); + FixLoop( aDoor); + SetPriority( aDoor, 4); + work = DOOR_CYCLE_TIME; + CycleTime( aDoor, work); + + AnimateObj( aFloor); + IgnoreBlocks( aFloor); + IgnoreObjs( aFloor); + FixLoop( aFloor); + SetPriority( aFloor, 5); + Draw( aFloor); + StopUpdate( aFloor); + + ShowPic(); + } + + +if (lookingAtFaith) + { + --eyeCycles; [ bat them eyes + if (eyeCycles == 1) + { + Toggle( eyesCycling); + if (eyesCycling) + { + StartCycling( aEyes); + Random( 6, 18, eyeCycles); + } + else + { + StopCycling( aEyes); + SetCel( aEyes, 0); + Random( 11, 33, eyeCycles); + } + } + + if (aSecondPassed) + { + --breathLineTimer; + if (breathLineTimer == 1) [ Lay a zinger on him. + { + 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, Faithie. + StopCycling( aEyes); + SetCel( aEyes, 0); + } + + SetCelV( aMouth, mouth); + ForceUpdate( aMouth); + mouth = DONE; + } + } + } + + +if (scriptDone) + { + Reset( scriptDone); + ++script; + + + + [ Make ego go down (on) the elevator. + + if (script == 1) + { + Set( elevatorMoving); + currentStatus = IN_ELEVATOR; + StopMotion( ego); + Set( programControl); + SetView( ego, vEgoPushingElevator); + SetCel( ego, 0); + RepositionTo( ego, 76, 127); + CycleTime( ego, three); + Set( keepCycling); + EndOfLoop( ego, scriptDone); + } + + if (script == 2) + { + Erase( ego); + SetView( ego, vEgo); + + SetLoop( aElevator, L_WITH_EGO); + SetCel( aElevator, 0); + CycleTime( aElevator, three); + EndOfLoop( aElevator, scriptDone); + } + + if (script == 3) + { + Erase( aFloor); + Draw( aDoor); + Draw( aNumber); + + StopCycling( aElevator); + if (destinationFloor == 8) + { + Print( 6); + script = 101; [ We'll catch it immediately. + } + else + { + MoveObj( aElevator, 73, 167, 2, scriptDone); + } + } + + if (script == 4) + { + newRoom = rmElevators; + } + + + + [ He's at top; let him out. + + if (script == 101) + { + Erase( aDoor); + Erase( aNumber); + + CycleTime( aElevator, two); + StartCycling( aElevator); + BeginningOfLoop( aElevator, scriptDone); + } + + if (script == 102) + { + Reset( elevatorMoving); + currentStatus = NORMAL; + destinationFloor = 0; + script = 0; + SetLoop( aElevator, L_EMPTY); + + Draw( aFloor); + + SetView( ego, vEgo); + SetLoop( ego, FACING_FRONT); + SetCel( ego, 0); + Position( ego, 76, 127); + Draw( ego); + StartMotion( ego); + Reset( programControl); + Reset( keepCycling); + Reset( noCycling); + CycleTime( ego, one); + } + + + + [ He gave Faith the Spanish Fly pills; make it Springtime + [so we can "watch Faith leave." + + if (script == 201) + { + SetCel( aMouth, C_SMILE); + ForceUpdate( aMouth); + mouthTimer = 0; [ Keep smiling. + + StartCycling( aEyes); [ Make eyes keep batting! + eyeCycles = 0; + + + Drop( iPills); + currentScore += 5; + Print( 2); + scriptTimer = 6; + } + + if (script == 202) + { + if (lookingAtFaith) + { + Set( cutToLongShot); + --script; [ Let's try again next pass. + Set( scriptDone); + } + else + { + script = 203; + } + } + + if (script == 203) + { + Set( faithGone); + Print( 4); + + StartUpdate( aFaith); + SetLoop( aFaith, L_LEAVING); + CycleTime( aFaith, two); + EndOfLoop( aFaith, scriptDone); + } + + if (script == 204) + { + CycleTime( aFaith, one); + StartCycling( aFaith); + RepositionTo( aFaith, 139, 146); + SetLoop( aFaith, L_WALKING); + FixLoop( aFaith); + MoveObj( aFaith, 129, 156, 2, scriptDone); + ReleasePriority( aFaith); + IgnoreObjs( aFaith); + ForceUpdate( aFaith); + Print( 20); + } + + if (script == 205) + { + MoveObj( aFaith, 0, 156, 2, scriptDone); + } + + if (script == 206) + { + Print( 33); + Erase( aFaith); + script = 0; + } + + + + if (script == 241) [ open doors + { + StartUpdate( aPentElevator); + EndOfLoop( aPentElevator, scriptDone); + } + + if (script == 242) + { + StopUpdate( aPentElevator); + Set( pentDoorsOpen); + StartMotion( ego); + Reset( programControl); + } + + if (script == 243) [ He's clear; close the doors. + { + Reset( pentDoorsOpen); + StartUpdate( aPentElevator); + BeginningOfLoop( aPentElevator, scriptDone); + } + + if (script == 244) + { + script = 0; + StopUpdate( aPentElevator); + } + + + if (script == 251) [ Ego's in elevator; take him up. + { + Reset( pentDoorsOpen); + StopUpdate( ego); + + StartUpdate( aPentElevator); + BeginningOfLoop( aPentElevator, scriptDone); + } + + if (script == 252) + { + if (!beenInPenthouse) + { + Set( beenInPenthouse); + Print( 13); + currentScore += 5; + } + newRoom = rmLivingRoom; + } + } + + +if (doorDone) + { + Reset( doorDone); + StopUpdate( aPentElevator); + } + + + +[***** +:exit [ test for leaving the room +[***** diff --git a/RM42.MSG b/RM42.MSG new file mode 100644 index 0000000..248a950 --- /dev/null +++ b/RM42.MSG @@ -0,0 +1,243 @@ +[messages for room 42 -- rmSecurityDesk +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"%m14 A beautiful security guard sits behind a desk." + +%message 2 +"She takes one look at the bottle of Spanish Fly and says, + \"Boy, thanks! How did you know that I love this stuff?!\" + She tosses down a couple of pills, then a few more, + and finally gulps the whole bottle! + Her breathing becomes faster and faster until she begins to pant." + +%message 3 +"She is a knockout! + But that pair of pistols slung around her hips brings a sense + of foreboding to your gut." + +%message 4 +"(Looks like tonight's your lucky night, Larry.)" + +%message 5 +"Whee!" + +%message 6 +"The rumors were right. You are quick on the trigger, Larry!" + +%message 7 +"\"strangers in the night, da da da dee da...\"" + +%message 8 +"\"Try it, and I'll blow your head off.\"" + +%message 9 +"There are buttons labeled \"one\" through \"eight.\"" + +%message 10 +"Evidently, this exit is for employees only. You'd better use the elevator." + +%message 11 +"The beautiful security guard is sitting at the desk. + A pair of large pistols are in a holster around her slim waist. + She looks friendly, but quick on the trigger." + +%message 12 +"Since you're no longer staring at Faith's ample weapons, + you notice an unlabeled button on her desk." + +%message 13 +"Oh, oh. Where are we goin' now, Larry?" + +%message 14 +"You are at the top floor of the hotel." + +%message 15 +"%m14 That desk is where you lost your Faith, remember? + (So glad there was a chance to use THAT line!)" + +%message 16 +"A brass plate near the elevator says: \"Private.\"" + +%message 17 +"\"Hi, my name's Faith. Nice suit!\"" + +%message 18 +"\"Bad breath's one thing, Mister; + but, you could knock a buzzard off a manure truck!\"" + +%message 19 +"\"Touch that button, and you're dead meat, White-Suit!\"" + +%message 20 +"\"So long!\" Faith says. + \"I've got to find my boy friend before this stuff wears off!\"" + +%message 21 +"The penthouse elevator doors glide open." + +%message 22 +"The doors are securely closed. %m16 There is no button nearby." + +%message 23 +"Type a word, like \"one\" or \"two.\"" + +%message 24 +"It's a door just like all the others." + +%message 25 +"They almost look real, don't they?" + +%message 26 +"You contemplate expec- toration, but remember that discretion is the better + part of valium." + +%message 27 +"...or helium," + +%message 28 +"...or something." + +%message 29 +"You run to the nearest door, and rap your knuckles loudly. + You run right back to where you were." + +%message 30 +"You seem surprised that the door is locked." + +%message 31 +"(She is, of course, referring to the use of her gun, Larry.)" + +%message 32 +"\"Larry,\" you reply, getting your hopes aroused (among other things)." + +%message 33 +"It appears Faith IS true to her name. + Twisting her key in the lock, she disappears down the employee stairs." + +%message 34 +"The doors are open. Go on in." + +%message 35 +"She might listen to you, if you can establish eye contact." + +%message 36 +"\"Hi ya, Baby. I think I loves ya!!\"" + +%message 37 +"\"May I help you in some way, Sir?\" she responds in a pleasant, but + businesslike voice." + +%message 38 +"\"My name is Larry,\" you offer. \"Larry Laffer.\"" + +%message 39 +"\"Say, Larry,\" she says with a smile, + \"Is that a roll of dimes in your pocket, or are you just glad to see me?\"" + +%message 40 +"\"Hey, sweetheart. What's your sign?\" you ask her." + +%message 41 +"\"'EXIT,\" she replies. \"Try using it!\"" + +%message 42 +"\"What's your name, beautiful?\" you ask." + +%message 43 +"\"Faith,\" she replies." + +%message 44 +"Hmmm. Unusual name." + +%message 45 +"\"I'm only in town for one night,\" you try again. + \"How about we get together when you get off duty?\"" + +%message 46 +"She smiles and says, \"Oh, I could never be unfaithful to my boyfriend.\"" + +%message 47 +"(Larry, it seems this one's gonna require outside assistance.)" + +%message 48 +"Try looking at the girl first." + +%message 49 +"They are a beautiful pair, aren't they?" + +%message 50 +"Not now, you're busy." + +%message 51 +"Her sweater reveals she's built like a brick shipyard." + +%message 52 +"\"Stop staring there,\" she says softly." + +%message 53 +"\"Really? I'm not that kind of girl.\"" + +%message 54 +"Evidently the rooms on this floor are all unoccupied." + +%message 55 +"Her eyes are as sensuous as her lips." + +%message 56 +"You're a man of the world, Larry. + Perhaps some sort of medical stimulant would help." + +%message 57 +"She waves back." + +%message 58 +"The glass elevator only goes down from here. How about you?" + +%message 59 +"\"I'm sorry, but I can't.\"" + +%message 60 +"It's no good. The door resists all of your efforts." + +%message 61 +"You can't. There's no key in this game!" + +%message 62 +"Suicide is illegal here." + +%message 63 +"There's no need to do that." + +%message 64 +"\"Usually when I'm with someone romantic!\" she replies." + +%message 65 +"\"You know, I'm supposed to be working!\"" + +%message 66 +"Her hair is thick and beautiful, falling in cascades around her delicate + shoulders." + +%message 67 +"\"So what?\"" + +%message 68 +"Her lips are moist and inviting, but then, you also felt that way + about old Mr. Weissenborn, your high school shop teacher!" + +%message 69 +"I'm sorry,\" Faith replies, \"but you don't know me that well!\"" + +%message 70 +"\"Well, now. Isn't THAT special!\"" + +%message 71 +"\"Perhaps,\" she says, \"but right now, I'm working.\"" + +%message 72 +"\"I'll be here all night.\"" + diff --git a/RM43.CG b/RM43.CG new file mode 100644 index 0000000..3d02a9c --- /dev/null +++ b/RM43.CG @@ -0,0 +1,1298 @@ +[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;} + diff --git a/RM43.MSG b/RM43.MSG new file mode 100644 index 0000000..ebe333d --- /dev/null +++ b/RM43.MSG @@ -0,0 +1,194 @@ +[messages for room 43 -- rmHotTub +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"The moon lights an expansive rooftop garden with a spa in one corner. + You've found the source of the gurgling noise!" + +%message 2 +"Wasting no time, you hop into the water. + Oooh, does it feel good! + The warm water swirls about you, + the bubbles stimulating you nearly as much as the beautiful woman across + from you. + With the warmth of the water soaking into your body, + you become quite relaxed." + +%message 3 +"Wow! Just the way you like your women: nearby and naked! + She has a beautiful tan, and a gorgeous body. + You've waited a lifetime for this moment." + +%message 4 +"What a beautiful face! + She's leaning back, relaxing in the spa with + the water bubbling up around her. + It's even possible you could become sexually aroused by this!" + +%message 5 +"Eve takes your apple, and with a sweet, innocent look, + raises it to her mouth. + She takes a small bite out of it, while a sexy smile comes across her face. + She winks, and lies back in the water, chewing delicately." + +%message 6 +"Eve gently moves her sensuous tongue around the apple, + tiny drops of the apple's juice glistening on her lips." + +%message 7 +"In the hot tub is the most beautiful girl you've ever seen! + Beside her is her towel, and swim suit. + You can't believe she doesn't mind your presence here." + +%message 8 +"You have no apple." + +%message 9 +"Looking over at the next hotel, you notice an ugly girl getting undressed." + +%message 10 +"She's not really that pretty." + +%message 11 +"Well, she's looking better." + +%message 12 +"You know, she's not that bad." + +%message 13 +"You could ignore some of her faults." + +%message 14 +"Perhaps you're in love!" + +%message 15 +"Pant, pant, pant, pant, pant." + +%message 16 +"Something tells you that's the wrong approach with this one, Larry." + +%message 17 +"She's really turning you on! + You had no idea fruit could be so exciting." + +%message 18 +"\"Bad breath's one thing, Mister; but you could knock a buzzard off + a manure truck!\"" + +%message 19 +"Nah. Who wants to go hot-tubbing alone?" + +%message 20 +"\"Hey, handsome, why don't you slip into the water with me, + so we can REALLY get to know each other!\"" + +%message 21 +"Her hand is resting near a fluffy, white, expensive bath towel, + embroidered in florid script with the name: \"Eve.\"" + +%message 22 +"You can take a hint. \"Let's go, baby!\" you whisper!" + +%message 23 +"\"This water feels SO good!\"" + +%message 24 +"After finishing the apple, Eve slowly slides out of the hot tub, + her steamy, naked body glistening in the moonlight. + Barely covering her tremendous assets with the towel, + she smiles and motions for you to follow her." + +%message 25 +"\"Who loves ya, baby?\"" + +%message 26 +"\"So long, baby!\" you shout!" + +%message 27 +"As you leave the hot tub, Eve speaks at last, + \"Say, Larry. You really ARE glad to see ME!!\"" + +%message 28 +"" + +%message 29 +"It's difficult to take your eyes off the beautiful woman with + whom you share the hot tub." + +%message 30 +"She says nothing, but that smile tells you a lot." + +%message 31 +"Perhaps if you establish eye contact first..." + +%message 32 +"\"What's your name, gorgeous?\" you ask." + +%message 33 +"\"Have you ever tried it underwater?\" you coyly ask." + +%message 34 +"She doesn't say." + +%message 35 +"\"What's your sign, dollface?\" you ask." + +%message 36 +"At last she speaks. \"Yield,\" she says simply." + +%message 37 +"Although she smiles, it appears she's a woman of few words. + She's waiting for you to determine what it is she wants!" + +%message 38 +"\"Share your wine with me?\" you ask." + +%message 39 +"She hands you the glass, and you take an uncustomarily small sip. + She replenishes it from the bottle, so it appears no different + than before." + +%message 40 +"It appears she doesn't like that!" + +%message 41 +"She wouldn't like that." + +%message 42 +"Say; what's this? A beautiful woman all alone in a hot tub! + And, she's smiling at you? And, and..." + +%message 43 +"Why take it, when you can drink it?" + +%message 44 +"It looks like a bottle of fine champagne, suitable for two." + +%message 45 +"They ARE off." + +%message 46 +"They ARE on." + +%message 47 +"Her gold bracelet is engraved with the word \"Eve.\"" + +%message 48 +"...and, she speaks, \"Hi, handsome. Where have you been all my life?\"" + +%message 49 +"(Larry, this one seems to LIKE you!)" + +%message 50 +"SLAP!" + +%message 51 +"\"Oooh, I like that name!\"" + +%message 52 +"SLAP!\n\n +SLAP!!" + diff --git a/RM44.CG b/RM44.CG new file mode 100644 index 0000000..9862f5b --- /dev/null +++ b/RM44.CG @@ -0,0 +1,425 @@ +[logics for room 44 -- rmLivingRoom +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm44.msg" +%include "gamedefs.h" + + + +%define FIRST_QUESTION 1 +%define LAST_QUESTION 43 + +%define nearElevator lf0 +%define insideElevator lf1 +%define inWayOfDoors lf2 +%define doorsOpen lf3 +%define dollDone lf4 +%define egoDone lf5 +%define dollSoundDone lf6 +%define dollOnScreen lf9 + +%define dollScript lv0 + + +%object aDoor 1 +%object aEve 2 +%object aDoll 3 + + + +if (initLog) + { + LoadPic( currentRoom); + DrawPic( currentRoom); + DiscardPic( currentRoom); + + LoadView( vRm44ElevatorDoors); +[ LoadView( v); + + + AnimateObj( aDoor); + IgnoreBlocks( aDoor); + IgnoreObjs( aDoor); + SetView( aDoor, vRm44ElevatorDoors); + SetCel( aDoor, 0); + SetPriority( aDoor, 10); + Position( aDoor, 130, 129); + work = DOOR_CYCLE_TIME; + CycleTime( aDoor, work); + Draw( aDoor); + StopUpdate( aDoor); + + + if (currentStatus == CHASING_DOLL) + { + PreventInput(); + Set( handsOff); + Set( programControl); + + LoadView( vDollDeflating); + LoadSound( sDollDeflating); + + AnimateObj( aDoll); + IgnoreHorizon( aDoll); + IgnoreBlocks( aDoll); + IgnoreObjs( aDoll); + SetView( aDoll, vDollDeflating); + Position( aDoll, 55, 95); + Draw( aDoll); + MoveObj( aDoll, 27, 123, 2, dollDone); + Set( dollOnScreen); + Set( dollSoundDone); + } + + if (currentStatus == FOLLOWING_EVE) + { + Set( programControl); [ Even though still set! + script = 250; + Set( scriptDone); + + LoadView( vEve); + LoadView( vEgoWearingTowel); + + [ SetView( ego, vEve); [ Done automatically by rm0. + + AnimateObj( aEve); + SetView( aEve, vEgoWearingTowel); + Position( aEve, 0, 125); + Draw( aEve); + } + + + if (previousRoom == rmHotTub) + { + egoX = 8; + egoY = 125; + } + else + { + if (previousRoom == rmBedroom) + { + egoX = 98; + egoY = 100; + } + else + { + egoX = 138; [ in elevator + egoY = 127; + SetLoop( ego, FACING_LEFT); + StopUpdate( ego); + StartMotion( ego); + + script = 0; + Set( scriptDone); [ Let's open up the doors. + } + } + PositionV( ego, egoX, egoY); + Draw( ego); + + ShowPic( ); + + if (currentStatus == CHASING_DOLL) + { + script = 150; + MoveObj( ego, 60, 100, 1, scriptDone); + } + + Return( ); + + } [ end initLOG + + + +if (doorsOpen) + { + IgnoreBlocks( ego); + } +else + { + ObserveBlocks( ego); + } + + +Reset( nearElevator); +if (Posn( ego, 120, 113, 135, 143)) + { + Set( nearElevator); + } + +Reset( inWayOfDoors); +if (Posn( ego, 123, 119, 138, 131)) + { + Set( inWayOfDoors); + } + +Reset( insideElevator); +if (Posn( ego, 139, 119, 155, 131)) + { + Set( insideElevator); + } + +if (doorsOpen && + !insideElevator && + !inWayOfDoors) + { + Set( scriptDone); + } + +if (doorsOpen && insideElevator) + { + script = 100; + Set( scriptDone); [ Let's go downstairs. + } + + +[***** +:handleInput +[***** + +if (!haveInput) {goto noInput;} + +if ((Said( look) || + Said( look, penthouse) || + Said( look, room))) [ To catch "look living room" + { + Print( 1); + } + +if ((Said( look, elevator) || + Said( look, door) || + Said( look, button) || + Said( look, wall))) + { + Print( 3); + } + +if (Said( look, fireplace)) + { + Print( 2); + } + +if ((Said( look, floor) || + Said( look, rug))) + { + Print( 4); + } + +if ((Said( lift, rug) || + Said( move, rug) || + Said( pull, rug) || + Said( look, under, rug))) + { + Print( 12); + } + +if (Said( look, painting)) + { + Print( 5); + } + +if (Said( look, behind, painting)) + { + Print( 14); + } + +if (Said( look, sofa)) + { + Print( 6); + } + +if ((Said( sit) || + Said( sit, down) || + Said( use, sofa))) + { + Print( 9); + } + +if ((Said( lie, down) || + Said( sleep))) + { + Print( 13); + } + +if (Said( listen, rol)) + { + Print( 10); + } + +if (Said( open, door)) + { + Print( 11); + } + +if ((Said( look, outside) || + Said( look, terrace) || + Said( look, window) || + Said( look, out, window))) + { + Print( 7); + } + +if ((Said( open, elevator) || + Said( push, button))) + { + if (!nearElevator) + { + Set( notCloseEnough); + } + else + { + if (doorsOpen) + { + Print( 8); + } + else + { + Set( OK); + script = 0; + Set( scriptDone); [ Let's open up the doors. + } + } + } + + +[***** +:noInput +[***** + +if (scriptDone) + { + Reset( scriptDone); + ++script; + + if (script == 1) [ open doors + { + StartUpdate( aDoor); + EndOfLoop( aDoor, scriptDone); + } + + if (script == 2) + { + StopUpdate( aDoor); + Set( doorsOpen); + } + + if (script == 3) [ He's clear; close the doors. + { + Reset( doorsOpen); + StartUpdate( aDoor); + BeginningOfLoop( aDoor, scriptDone); + } + + if (script == 4) + { + script = 0; + } + + + + if (script == 101) [ Close the doors. Go downstairs. + { + Reset( doorsOpen); + StopUpdate( ego); + StartUpdate( aDoor); + BeginningOfLoop( aDoor, scriptDone); + } + + if (script == 102) + { + newRoom = rmSecurityDesk; + } + + + + [ Chasing the elusive latex muff... + + if (script == 151) + { + MoveObj( ego, 40, 120, 1, scriptDone); + } + + if (script == 152) + { + MoveObj( ego, 1, 120, 1, scriptDone); + } + + if (script == 153) + { + Reset( handsOff); + newRoom = rmHotTub; + } + + + + if (script == 251) [ Walking egoTransvestite to bed. + { + MoveObj( ego, 35, 125, 1, scriptDone); + } + + if (script == 252) + { + MoveObj( ego, 60, 103, 1, scriptDone); + } + + if (script == 253) + { + MoveObj( ego, 114, 103, 1, scriptDone); + } + + if (script == 254) + { + } + + + if (!script) + { + StopUpdate( aDoor); + } + } + + +if (script > 250) + { + Distance( ego, aEve, work); + if (work > 10) + { + FollowEgo( aEve, 2, done); + } + } + + +if (dollDone) + { + Reset( dollDone); + ++dollScript; + + if (dollScript == 1) + { + MoveObj( aDoll, 0, 123, 2, dollDone); + } + + if (dollScript == 2) + { + MoveObj( aDoll, 0, 97, 2, dollDone); + } + + if (dollScript == 3) + { + Erase( aDoll); + } + } + +if (dollSoundDone && dollOnScreen) + { + Sound( sDollDeflating, dollSoundDone); + } + + +[***** +:exit [ test for leaving the room +[***** + +if (edgeEgoHit == LEFT) {newRoom = rmHotTub;} +if (Posn( ego, 113, 93, 114, 106)) {newRoom = rmBedroom;} + diff --git a/RM44.MSG b/RM44.MSG new file mode 100644 index 0000000..07e64fc --- /dev/null +++ b/RM44.MSG @@ -0,0 +1,53 @@ +[messages for room 44 -- rmLivingRoom +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"This is the living room of the hotel's penthouse suite. + Obviously, the hotel spared no expense here. + There's a fireplace on the wall to the south. + No one is here, but you hear a gurgling noise coming from somewhere." + +%message 2 +"You wonder how they can make those gas logs look so real!" + +%message 3 +"There is a button on either side of the elevator." + +%message 4 +"The bear looks back at you with a glassy-eyed stare, + possibly because his eyes are made of glass!" + +%message 5 +"It's another one of those boring works of modern art; + this one is signed \"Mark Crowe.\"" + +%message 6 +"Yep. It's a sofa!" + +%message 7 +"From this height, the view of the city is spectacular." + +%message 8 +"The elevator doors are already open. Just walk inside." + +%message 9 +"Instead of sitting, you should investigate that gurgling sound you hear." + +%message 10 +"There's a sound coming from outside." + +%message 11 +"The door to the terrace is already open." + +%message 12 +"You find nothing but dust." + +%message 13 +"Tired already?" + +%message 14 +"You can't. It's screwed to the wall." + diff --git a/RM45.CG b/RM45.CG new file mode 100644 index 0000000..8fa3af9 --- /dev/null +++ b/RM45.CG @@ -0,0 +1,952 @@ +[logics for room 45 -- rmBedroom +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm45.msg" +%include "gamedefs.h" +%include "iv_views.h" +%include "contrlrs.h" + + + +%define doorDone lf0 +%define nearCloset lf1 +%define closetOpen lf2 +%define inCloset lf3 +%define burst1Done lf4 +%define burst2Done lf5 +%define burst3Done lf6 +%define burst4Done lf7 +%define eveHere lf8 +%define lookingAtCloseup lf9 +%define dollDone lf10 +%define burst1InPlace lf11 +%define burst2InPlace lf12 +%define burst3InPlace lf13 +%define burst4InPlace lf14 +%define readPreventionMessage lf15 +%define nearBed lf16 +%define dollInflated lf17 +%define cutToLongShot lf18 +%define dollOnScreen lf19 +%define dollSoundDone lf20 + + +%define closeupLineTimer lv0 +%define burst1Cycles lv1 +%define burst2Cycles lv2 +%define burst3Cycles lv3 +%define burst4Cycles lv4 +%define dollPicture lv5 +%define fireworksPicture lv6 +%define action lv7 + + +%object aBurst1 1 +%object aBurst2 2 +%object aBurst3 3 +%object aBurst4 4 +%object aDoor 5 +%object aEve 6 +%object aDoll 7 +%object aKen 8 + + + +if (initLog) + { + LoadPic( currentRoom); + DrawPic( currentRoom); + [ DON'T DiscardPic( currentRoom);, we'll need it either way. + + + if (currentStatus == FOLLOWING_EVE) + { + Set( eveHere); + + fireworksPicture = picBlack; + LoadPic( fireworksPicture); + + LoadView( vEve); + LoadView( vEgoWearingTowel); + LoadView( vEgo); + LoadView( vFireworks); + LoadView( vKen); + LoadSound( mWinner); + + + AnimateObj( aEve); + IgnoreBlocks( aEve); + SetView( aEve, vEve); + SetLoop( aEve, L_SITTING_ON_BED); + Position( aEve, 55, 116); + Draw( aEve); + CycleTime( aEve, three); + + SetView( ego, vEgoWearingTowel); + MoveObj( ego, 48, 121, 1, scriptDone); + } + else + { + if (ObjInRoom( iDoll, currentRoom)) + { + dollPicture = picDollCloseup; + LoadPic( dollPicture); + + LoadView( vDollDeflating); + LoadSound( sDollDeflating); + } + } + + + LoadView( vBedroomDoors); + LoadView( vEgoSittingOnBed); + + + AnimateObj( aDoor); + IgnoreBlocks( aDoor); + IgnoreObjs( aDoor); + SetView( aDoor, vBedroomDoors); + SetCel( aDoor, 0); + SetPriority( aDoor, 10); + Position( aDoor, 117, 130); + Draw( aDoor); + work = DOOR_CYCLE_TIME; + CycleTime( aDoor, work); + StopUpdate( aDoor); + + Position( ego, 20, 135); + Draw( ego); + + ShowPic( ); + + Return( ); + + } [ end initLOG + + + +Reset( nearCloset); +if (Posn( ego, 105, 121, 117, 136)) + { + Set( nearCloset); + } + +Reset( inCloset); +if (Posn( ego, 117, 121, 129, 131)) + { + Set( inCloset); + } + +Reset( nearBed); +if (Posn( ego, 56, 123, 86, 138)) [ 123 because he's above bed when + { [ sitting on the bed + Set( nearBed); + } + +if (closetOpen && nearCloset) + { + IgnoreBlocks( ego); + } +else + { + if (inCloset) + { + IgnoreBlocks( ego); + } + else + { + ObserveBlocks( ego); + } + } + + +[***** +:handleInput +[***** + +if (!haveInput) {goto noInput;} + +if (Said( look, painting)) + { + Print( 22); + } + +if (Said( look, behind, painting)) + { + Print( 43); + } + +if (Said( look, bed)) + { + Print( 23); + } + +if (Said( look, under, bed)) + { + Print( 41); + Print( 42); + } + +if ((Said( sit, on, bed) || + Said( sit) || + Said( sit, bed))) + { + Print( 38); + } + +if ((Said( look) || + Said( look, room) || + Said( look, closet) || + Said( look, bedroom))) + { + if (!inCloset) + { + Print( 1); + } + else [ He's in the closet. + { + if (ObjInRoom( iDoll, currentRoom)) + { + Print( 12); + } + else + { + Print( 13); + } + } + } + + + +[ Ibsen was never like this: + +if (readPreventionMessage && + Said( yes)) + { + goto patch1; + } + +if ((Said( use, doll) || + Said( abuse, doll) || + Said( put, dong, doll) || + Said( put, dong, doll, mouth) || + Said( put, dong, mouth) || + Said( sixtynine, doll) || + Said( make, doll, suck$me) || + Said( make, doll, give, suck$me) || + Said( butt, hump, rol) || + Said( anyword, butt, hump, rol) || + Said( anyword, butt, rol) || + Said( butt, rol) || + Said( anyword, blow$job, rol) || + Said( anyword, pussy, rol) || + Said( anyword, anyword, pussy, rol) || + Said( blow$job, rol) || + Said( anyword, hump, rol) || + Said( hump, doll))) + { + if (!Has( iDoll)) + { + Set( dontHaveIt); + } + else + { + if (!dollInflated) + { + Print( 29); + } + else + { + if (!readPreventionMessage) + { + Print( 3); + Set( readPreventionMessage); + } + else + { + :patch1; + Print( 8); + Print( 10); + action = 3; + currentScore += 8; + Set( cutToLongShot); + } + } + } + } + +if (Said( show, doll)) + { + if (!Has( iDoll)) + { + Set( dontHaveIt); + } + else + { + if (!dollInflated) + { + ShowObj( ivDoll); + } + else + { + if (lookingAtCloseup) + { + Print( 18); + } + else + { + action = 6; + } + + } + } + } + +if (Said( inflate, doll)) + { + if (!Has( iDoll)) + { + Set( dontHaveIt); + } + else + { + action = 6; + } + } + + + +[ Handle the closet, and taking the doll. + +if ((Said( open, door) || + Said( open, closet))) + { + if (closetOpen) + { + Print( 5); + } + else + { + if (!nearCloset) + { + Print( 19); + } + else + { + action = 4; + } + } + } + +if ((Said( close, door) || + Said( close, closet))) + { + if (inCloset) + { + Print( 2); + } + else + { + if (!closetOpen) + { + Print( 6); + } + else + { + if (!nearCloset) + { + Set( notCloseEnough); + } + else + { + if (egoX > 111) + { + Print( 20); + } + else + { + action = 5; + } + } + } + } + } + + +if ((Said( look, closet) || + Said( look$in, closet))) + { + if (!closetOpen) + { + Print( 15); + } + else + { + if (!inCloset) + { + Print( 31); + } + else + { + if (ObjInRoom( iDoll, currentRoom)) + { + Print( 12); + } + else + { + Print( 13); + } + } + } + } + +if (Said( get, doll)) + { + if (Has( iDoll)) + { + Print( 37); + } + else + { + if (!inCloset) + { + Print( 7); + } + else + { + if (!ObjInRoom( iDoll, currentRoom)) + { + Print( 11); + } + else + { + Get( iDoll); + currentScore += 5; + Print( 9); + } + } + } + } + + + +if (lookingAtCloseup) + { + if ((Said( stop, looking, doll) || + Said( look, room, rol) || + Said( look, closet, rol))) + { + Print( 35); + Set( cutToLongShot); + } + + if ((Said( masturbate, rol) || + Said( anyword, masturbate, rol))) + { + Print( 44); + } + + if ((Said( deflate, doll, rol) || + Said( anyword, deflate, doll, rol) || + Said( put, doll, away) || + Said( damn))) + { + Print( 28); + Set( cutToLongShot); + } + + if ((Said( look, doll) || + Said( talk, doll) || + Said( smile) || + Said( smile, doll) || + Said( hold, hand) || + Said( take, her, hand) || + Said( touch, doll) || + Said( touch, her) || + Said( ask, date) || + Said( look, eyes) || + Said( look$in, eyes) || + Said( flirt, with, her) || + Said( wink, doll) || + Said( give, doll, kiss) || + Said( kiss, doll) || + Said( look, her, hair) || + Said( look, hair) || + Said( stroke, hair) || + Said( rub, hair) || + Said( rub, her, hair) || + Said( ask, name) || + Said( ask, her, name) || + Said( ask, name, doll) || + Said( larry) || + Said( leisure$suit, larry) || + Said( look, mouth) || + Said( look, her, mouth) || + Said( doll, marry, me) || + Said( marry, me) || + Said( marry, doll) || + Said( ask, doll, get, married) || + Said( ask, doll, 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( grab, doll) || + Said( feel, doll) || + Said( lick, doll) || + Said( touch, doll, under, table) || + Said( grab, leg) || + Said( touch, leg) || + Said( feel, her, leg) || + Said( grab, her, leg) || + Said( look, doll, boobs) || + Said( look, boobs, rol) || + Said( look, body) || + Said( stare) || + Said( stare, boobs) || + Said( undress, her) || + Said( ask, doll, for, sex) || + Said( have, sex, with, me) || + Said( hump, rol) || + Said( make, doll) || + Said( anyword, pussy, rol) || + Said( lick, her, she, screams) || + Said( anyword, boobs, rol) || + Said( play, with, her, boobs) || + Said( grab, boobs) || + Said( fondle, breasts) || + Said( come, with, me))) + { + Print( 34); + } + } + + + +[***** +:noInput +[***** + +if (Controller( cShowObj) && + selectedObject == 113) + { + if (dollInflated) + { + Print( 45); + } + else + { + action = 6; + } + } + +if (!lookingAtCloseup && + egoX < 122 && + Has( iDoll)) + { + Print( 14); + action = 3; + } + +if (aSecondPassed) + { + --closeupLineTimer; + if (closeupLineTimer == 1 && + lookingAtCloseup) + { + Print( 17); + } + } + + +if (scriptDone) + { + Reset( scriptDone); + ++script; + + if (script == 1) + { + scriptTimer = 3; + } + + if (script == 2) + { + UnanimateAll(); + + DrawPic( fireworksPicture); + ShowPic(); + Set( musicDone); + + + AnimateObj( aBurst1); + IgnoreObjs( aBurst1); + SetView( aBurst1, vFireworks); + FixLoop( aBurst1); + + AnimateObj( aBurst2); + IgnoreObjs( aBurst2); + SetView( aBurst2, vFireworks); + FixLoop( aBurst2); + + AnimateObj( aBurst3); + IgnoreObjs( aBurst3); + SetView( aBurst3, vFireworks); + FixLoop( aBurst3); + + AnimateObj( aBurst4); + IgnoreObjs( aBurst4); + SetView( aBurst4, vFireworks); + FixLoop( aBurst4); + + step = 12; + Random( 5, 9, burst1Cycles); + Random( 2, 5, burst2Cycles); + Random( 3, 6, burst3Cycles); + Random( 4, 11, burst4Cycles); + + scriptTimer = 7; + currentScore += 25; + } + + + if (script == 3) + { + Print( 24); + scriptTimer = 4; + } + + if (script == 4) + { + Print( 25); + scriptCycles = 11; + } + + if (script == 5) + { + Print( 46); + + AnimateObj( aKen); + IgnoreObjs( aKen); + SetView( aKen, vKen); + SetLoop( aKen, FACING_RIGHT); + Position( aKen, 0, 166); + Draw( aKen); + MoveObj( aKen, 66, 166, 1, scriptDone); + } + + if (script == 6) + { + SetLoop( aKen, FACING_FRONT); + scriptTimer = 4; + } + + if (script == 7) + { + Print( 26); + MoveObj( aKen, 151, 166, 1, scriptDone); + } + + if (script == 8) + { + Erase( aKen); + Print( 27); + scriptTimer = 4; + } + + if (script == 9) + { + Print( 32); + scriptTimer = 4; + } + + if (script == 10) + { + Print( 33); + Print( 30); + Print( 36); + Quit( 1); + } + + + if (script == 101) + { + SetView( ego, vEgo); + StartCycling( ego); + MoveObj( ego, 110, 131, 1, scriptDone); + } + + if (script == 102) + { + MoveObj( ego, 107, 134, 1, scriptDone); + } + + if (script == 103) + { + MoveObj( ego, 17, 134, 1, scriptDone); + } + + if (script == 104) + { + Reset( handsOff); + newRoom = rmLivingRoom; + } + } + + +if (doorDone) + { + Reset( doorDone); + StopUpdate( aDoor); + } + +--burst1Cycles; +if (burst1Cycles == 1) + { + Random( 0, 3, loop); + SetLoopV( aBurst1, loop); + SetCel( aBurst1, 0); + StopCycling( aBurst1); + + Random( 0, 150, x); + Random( 120, 167, y); + PositionV( aBurst1, x, y); + Draw( aBurst1); + + Random( 40, 110, y); + MoveObjV( aBurst1, x, y, step, burst1InPlace); + } + +if (burst1InPlace) + { + Reset(burst1InPlace); + EndOfLoop( aBurst1, burst1Done); + } + +if (burst1Done) + { + Reset( burst1Done); + Erase( aBurst1); + Random( 2, 7, burst1Cycles); + } + + +--burst2Cycles; +if (burst2Cycles == 1) + { + Random( 0, 3, loop); + SetLoopV( aBurst2, loop); + SetCel( aBurst2, 0); + StopCycling( aBurst2); + + Random( 0, 150, x); + Random( 120, 167, y); + PositionV( aBurst2, x, y); + Draw( aBurst2); + + Random( 40, 110, y); + MoveObjV( aBurst2, x, y, step, burst2InPlace); + } + +if (burst2InPlace) + { + Reset(burst2InPlace); + EndOfLoop( aBurst2, burst2Done); + } + +if (burst2Done) + { + Reset( burst2Done); + Erase( aBurst2); + Random( 2, 7, burst2Cycles); + } + + +--burst3Cycles; +if (burst3Cycles == 1) + { + Random( 0, 3, loop); + SetLoopV( aBurst3, loop); + SetCel( aBurst3, 0); + StopCycling( aBurst3); + + Random( 0, 150, x); + Random( 120, 167, y); + PositionV( aBurst3, x, y); + Draw( aBurst3); + + Random( 40, 110, y); + MoveObjV( aBurst3, x, y, step, burst3InPlace); + } + +if (burst3InPlace) + { + Reset(burst3InPlace); + EndOfLoop( aBurst3, burst3Done); + } + +if (burst3Done) + { + Reset( burst3Done); + Erase( aBurst3); + Random( 2, 7, burst3Cycles); + } + + +--burst4Cycles; +if (burst4Cycles == 1) + { + Random( 0, 3, loop); + SetLoopV( aBurst4, loop); + SetCel( aBurst4, 0); + StopCycling( aBurst4); + + Random( 0, 150, x); + Random( 120, 167, y); + PositionV( aBurst4, x, y); + Draw( aBurst4); + + Random( 40, 110, y); + MoveObjV( aBurst4, x, y, step, burst4InPlace); + } + +if (burst4InPlace) + { + Reset(burst4InPlace); + EndOfLoop( aBurst4, burst4Done); + } + +if (burst4Done) + { + Reset( burst4Done); + Erase( aBurst4); + Random( 2, 7, burst4Cycles); + } + + +if (dollDone) + { + Reset( dollDone); + Erase( aDoll); + Reset( dollOnScreen); + Print( 21); + } + + +if (cutToLongShot) + { + Reset( cutToLongShot); + Reset( lookingAtCloseup); + UnanimateAll(); + + DrawPic( currentRoom); + + AnimateObj( ego); + Draw( ego); + + AnimateObj( aDoor); + IgnoreBlocks( aDoor); + IgnoreObjs( aDoor); + SetPriority( aDoor, 10); + work = DOOR_CYCLE_TIME; + CycleTime( aDoor, work); + Draw( aDoor); + StopUpdate( aDoor); + + ShowPic(); + } + + +if (action) + { + if (action == 3) + { + Drop( iDoll); + + Set( programControl); + PreventInput(); + StopMotion( ego); + Set( handsOff); + currentStatus = CHASING_DOLL; + + Reset( keepCycling); + Reset( noCycling); + script = 100; + scriptCycles = 13; + + AnimateObj( aDoll); + IgnoreHorizon( aDoll); + IgnoreBlocks( aDoll); + IgnoreObjs( aDoll); + SetView( aDoll, vDollDeflating); + SetPriority( aDoll, 11); + Position( aDoll, 116, 100); + Draw( aDoll); + Set( dollOnScreen); + MoveObj( aDoll, 0, 100, 2, dollDone); + Set( dollSoundDone); + } + + if (action == 4) + { + Set( OK); + Set( closetOpen); + StartUpdate( aDoor); + EndOfLoop( aDoor, doorDone); + } + + if (action == 5) + { + Set( OK); + Reset( closetOpen); + StartUpdate( aDoor); + BeginningOfLoop( aDoor, doorDone); + } + + if (action == 6) + { + if (!dollInflated) + { + Set( dollInflated); + Print( 16); + closeupLineTimer = 6; + if (!inflatedDoll) + { + Set( inflatedDoll); + currentScore += 5; + } + } + + UnanimateAll(); + + DrawPic( dollPicture); + ShowPic(); + + Set( lookingAtCloseup); + } + + action = 0; + } + +if (dollSoundDone && dollOnScreen) + { + Sound( sDollDeflating, dollSoundDone); + } + +if (musicDone) + { + Sound( mWinner, musicDone); + } + + + +[***** +:exit [ test for leaving the room +[***** + +if (edgeEgoHit == LEFT) + { + newRoom = rmLivingRoom; + } diff --git a/RM45.MSG b/RM45.MSG new file mode 100644 index 0000000..2c966d3 --- /dev/null +++ b/RM45.MSG @@ -0,0 +1,171 @@ +[messages for room 45 -- rmBedroom +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"The penthouse bedroom is quite deluxe." + +%message 2 +"Didn't your Mother tell you that doing that would make you go blind?" + +%message 3 +"Geez, Larry. Do we have to?" + +%message 4 +"Now?! When she's waiting for you on the bed??" + +%message 5 +"It is open." + +%message 6 +"It's not open." + +%message 7 +"There's no inflatable doll out here." + +%message 8 +"All right, you asked for it.\n\n +In fact, you've asked for it twice! Here we go..." + +%message 9 +"Got her!" + +%message 10 +"Selecting your own personal favorite from the three available openings, + you shyly try out the doll. + This has to be the kinkiest thing you've done in a long time, Larry.\n\n +You gradually increase your tempo as you lose your inhibitions + (not to mention your self-esteem). + Faster and faster you go, until suddenly, there's a loud, flatulent sound..." + +%message 11 +"You lost her, remember!" + +%message 12 +"You've found a closet full of uninteresting stuff, plus one inflatable doll." + +%message 13 +"The rest of the closet is rather dull compared to the inflatable doll." + +%message 14 +"Walking out of the closet, you clumsily catch your new friend on a + protruding nail! + There's a loud, flatulent sound, and..." + +%message 15 +"The closet is closed." + +%message 16 +"You huff, and you puff, and you blow your doll up. + Holding her out at arm's length, you pause to admire your handiwork..." + +%message 17 +"...somehow you expected more." + +%message 18 +"What more would you want to see?" + +%message 19 +"Move closer to the handle." + +%message 20 +"Move out of the way of the door first." + +%message 21 +"Go get her, Larry." + +%message 22 +"It's another one of those boring works of modern art; + this one is signed \"Mark Crowe.\"" + +%message 23 +"The bedspread is made of genuine, 100 per cent, acrylic zebrahide." + +%message 24 +"Congratulations, Larry!!!\n\n +You've done it!!\n\n +You've successfully completed your evening in Sierra World, + lost your virginity, and emerged victorious!" + +%message 25 +"Of course, your feelings of success are short-lived, + since this is where Ken Williams has to tell you about our + soon-to-be-released sequel.\n\n +Hey, Ken! Come here, and give 'em your pitch..." + +%message 26 +"\"Hi, folks! Remember, coming to this very computer Real Soon Now, + is the next installment in the saga of Larry Laffer, + traveling software salesman. + I'd tell you the name now, but we haven't made one up yet!\n\n +(Be sure to pick up a few extra copies, + just in case our disk copier is screwed up again!)\"" + +%message 27 +"Oh, wait. We almost forget to tell you how well you played." + +%message 28 +"You can't bear the thought of deflating your new friend, so you don't!" + +%message 29 +"What fun is an uninflated inflatable doll?" + +%message 30 +"...thanks for playing, + and be sure to tell each and every one of your friends + to buy their own personal copy of this game." + +%message 31 +"Move inside the closet." + +%message 32 +"You played ok, I guess!" + +%message 33 +"On behalf of Mark and Sandy, Al and Marg, Jeff and Chris, + Russ and Kim, Larry and Bob, Ken and Roberta, Bob and Marilyn and/or + Bob and Jeannine, John and Mary, Bob and Carol and Ted and Alice..." + +%message 34 +"Don't you find it difficult to have a meaningful relationship with latex?" + +%message 35 +"OK." + +%message 36 +"Love ya, baby!" + +%message 37 +"Sorry. One's your limit!" + +%message 38 +"You don't have time to rest!" + +%message 39 +"You are standing." + +%message 40 +"Perhaps if you first established mouth/latex contact..." + +%message 41 +"Picking up the corner of the expensive, vinyl, zebra-skin bedspread, you + discover..." + +%message 42 +"...nothing." + +%message 43 +"You can't. It's screwed to the wall." + +%message 44 +"That's not what she's for, Larry." + +%message 45 +"...and that's exactly the way she used to look!" + +%message 46 +"Ladies and gentlemen...\n\n +Mr. Ken Williams!" + diff --git a/RM50.CG b/RM50.CG new file mode 100644 index 0000000..506549f --- /dev/null +++ b/RM50.CG @@ -0,0 +1,59 @@ +[logics for room 50 -- initLog for room 0 +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "gamedefs.h" + + + +if (monitorType != MONO) + { + ClearLines( 22, 22, BG_COLOR); + ClearLines( 24, 24, BG_COLOR); + } + +if (!forceAtest) [ activate close to shipping + { + Reset( debugging); + Reset( enableTrace); + } + +if (demo) + { + PreventInput(); + } + +AnimateObj( ego); +StepSize( ego, egoStepSize); +StepTime( ego, egoStepTime); +CycleTime( ego, egoCycleTime); +GetPosn( ego, egoX, egoY); +ObserveBlocks( ego); +ObserveObjs( ego); +ObserveHorizon( ego); + +egoLocation = 0; +secondsInRoom = 0; +passInRoom = 0; +newRoom = 0; +script = 0; +scriptCycles = 0; +scriptTimer = 0; + +Reset( outOfMemory); +Reset( survivableFall); +Reset( egoArrived); +Reset( scriptDone); +Reset( musicDone); +Reset( soundDone); +Reset( noScript); + +work = 255; +:mrLooper [All that remains of "Reset the world" +ResetV( work); +work @= 0; +--work; +if (work > 199) + { + goto mrLooper; + } diff --git a/RM51.CG b/RM51.CG new file mode 100644 index 0000000..76606c5 --- /dev/null +++ b/RM51.CG @@ -0,0 +1,179 @@ +[logics for room 51 -- lgc.startup +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "gamedefs.h" +%include "contrlrs.h" + + + +%message 1 "_" +%message 2 "]" +%message 3 "LLLLL" + + + +SetCursorChar( 1); [ cursor +SetString( 0, 2); [ prompt +SetGameId( 3); [ id +TraceInfo( lgcTrace, 2, 9); [ sets: room, y TOP, lines tall +SetTextAttribute( TEXT_COLOR, BG_COLOR); +maxScore = 222; [ set up the status line first +if (monitorType != MONO) + { + ClearLines( 22, 24, BG_COLOR); + } + +ConfigureScreen( 1, 23, 0); +Set( enableMenu); +DisableItem( cDummy); +Set( soundOn); +egoStepSize = 1; +egoStepTime = 1; +egoCycleTime = 1; +egoX = 77; +egoY = 166; +mouthMessage = 157; [ First bad breath message. + +if ((machineType == PC || + machineType == JR || + machineType == TANDY || + machineType == APPLEII)) + { + Set( twoButtonJoystick); + } +else + { + Set( mouseMachine); + if (machineType == ST) + { + Set( enableDoubleClick); + } + } + +dollars = 94; +cabFareMin = 5; +cabRideLength = 15; +Set( mouthOK); +sprayMinutes = SPRAY_INIT_MINUTES; +watchHours = WATCH_INIT_HOURS; + + one = 1; + two = 2; +three = 3; + four = 4; + five = 5; + +[testRoom = 12; +if (testRoom) + { +[ Set( debugging); +[ Reset( demo); +[ Reset( programControl); +[ AcceptInput(); +[ animationInterval = FASTEST_SPEED; +[ Set( clockOn); +[ Set( enableMenu); +[ Set( passedTest); +[ StatusLineOn(); + } +else + { + if (!restartInProgress) + { + Set( demo); [ Set up for a real start! + Set( programControl); + PreventInput(); + animationInterval = NORMAL_SPEED; + Reset( clockOn); + Reset( enableMenu); + StatusLineOff(); + } + else + { + Reset( demo); [ Don't do a real start. + StatusLineOn(); + Set( passedTest); + Return(); [ Don't reassign keys. + } + } + + +[ Assign keys to controller functions. +SetKey( 0, 59, cHelp); [F1 +SetKey( 0, 60, cSoundToggle); [F2 +SetKey( 0, 61, cEchoLine); [F3 +SetKey( 0, 62, cF4); [F4 +SetKey( 0, 63, cSave); [F5 +SetKey( 0, 64, cF6); [F6 +SetKey( 0, 65, cRestore); [F7 +SetKey( 0, 66, cF8); [F8 +SetKey( 0, 67, cRestart); [F9 +SetKey( 0, 68, cSpeed); [F10 + + +[ Set control & alt keys. +if (machineType == TANDY) + { + SetKey( 61, 0, cCrescendo); [+ + SetKey( 45, 0, cDecrescendo); [- + SetKey( 43, 0, cCrescendo); [+ + } +SetKey( 9, 0, cStatus); [TAB +if (machineType == AMIGA) + { + SetKey( 27, 0, cPause); [ESC + } +else + { + SetKey( 27, 0, cMenu); [ESC + } + +SetKey( 2, 0, cBoss); [^B +SetKey( 3, 0, cCancelLine); [^C +SetKey( 5, 0, cEchoLine); [^E +SetKey( 10, 0, cInitJoy); [^J +SetKey( 18, 0, cToggleMonitor); [^R +SetKey( 19, 0, cSoundToggle); [^S + +SetKey( 0, 32, cDebug); [@D +SetKey( 0, 18, cShowEgo); [@E +SetKey( 0, 23, cObjInfo); [@I +SetKey( 0, 50, cShowMem); [@M +SetKey( 0, 25, cShowPriority); [@P +SetKey( 0, 45, cSkipTest); [@X +SetKey( 0, 47, cVersion); [@V +SetKey( 0, 44, cQuit); [@Z + + + +[ Substitute PCjr number keys as function keys. +if (machineType == JR) + { + SetKey( 49, 0, cHelp); [1 + SetKey( 50, 0, cSoundToggle); [2 + SetKey( 51, 0, cEchoLine); [3 + SetKey( 52, 0, cF4); [4 + SetKey( 53, 0, cSave); [5 + SetKey( 54, 0, cF6); [6 + SetKey( 55, 0, cRestore); [7 + SetKey( 56, 0, cF8); [8 + SetKey( 57, 0, cRestart); [9 + SetKey( 48, 0, cSpeed); [0 + } + + +[ Set joystick controllers. +SetKey( JOYSTICK_LOW_BYTE, BUTTON_0, cMenu); +if (twoButtonJoystick) + { + SetKey( JOYSTICK_LOW_BYTE, BUTTON_1, cStatus); + [SetKey( JOYSTICK_LOW_BYTE, BUTTON_0_DOUBLE, c.doit); + [SetKey( JOYSTICK_LOW_BYTE, BUTTON_1_DOUBLE, c.useit); + } +else { + if (machineType == ST) + { + SetKey( JOYSTICK_LOW_BYTE, BUTTON_0_DOUBLE, cStatus); + } + } diff --git a/RM52.CG b/RM52.CG new file mode 100644 index 0000000..98908f8 --- /dev/null +++ b/RM52.CG @@ -0,0 +1,266 @@ +[logics for room 52 -- lgc.debug +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "gamedefs.h" +%include "contrlrs.h" +%include "colors.h" + + + +[ if (Said( blow$me, boob, hump, fag)) +[ { +[ Call( lgcID); +[ } + + +%message 1 "New room:" +%message 2 "X coordinate:" +%message 3 "Y coordinate:" +%message 4 "Object number:" +%message 5 "Flag number:" +%message 6 "New value:" +%message 7 "You gottum, Larry." +%message 8 "Variable number:" +%message 9 "Variable %v45 = %v46" +%message 10 "Flag %v45 set" +%message 11 "Flag %v45 not set" +%message 12 "New priority:" +%message 13 "Object %v46 is in room %v45." +%message 14 "%v45|3/%v46|3" +%message 15 "Room %v0|3" +%message 16 "%v45|2 %o45" +%message 17 "Number Name of Object" +%message 18 "%v8 memory pages left." +%message 19 "" +%message 20 "Unknown word: \"" +[ %message 21 "%m20%w1\"" +[ %message 22 "%m20%w2\"" +[ %message 23 "%m20%w3\"" +[ %message 24 "%m20%w4\"" +[ %message 25 "%m20%w5\"" +[ %message 26 "%m20%w6\"" +[ %message 27 "%m20%w7\"" +[ %message 28 "%m20%w8\"" +%message 29 "H" +%message 30 " " +%message 31 "" + + + +if (initLog && xyOn && monitorType != MONO) + { + SetTextAttribute( BROWN, BG_COLOR); + ClearTextRect( 24, 26, 24, 34, BG_COLOR); + Display( 24, 26, 15); + SetTextAttribute( TEXT_COLOR, BG_COLOR); +[ if (memoryCheck) +[ { +[ Log( 18); +[ } + } + +if (Controller( cObjInfo)) + { + GetNum( 4, debug0); + if (debug0 > 15) + { + debug0 = 15; + } + ObjStatusV( debug0); + } + +if ((Controller( cShowEgo) || + Said( where))) + { + debug0 = 0; + ObjStatusV( debug0); + } + +if (Controller( cShowMem)) + { + ShowMem(); +[ Log( 18); + } + +if ((Controller( cShowPriority) || + Said( show, priority))) + { + ShowPriScreen(); + } + +if (monitorType != MONO) + { + if (handsOff) + { + SetTextAttribute( BROWN, BG_COLOR); + Display( 24, 35, 29); + SetTextAttribute( TEXT_COLOR, BG_COLOR); + } + else + { + Display( 24, 35, 30); + } + } + + +if ((Controller( cInvNumbers) || + Said( object, number))) + { + lastChar = 0; + SetTextAttribute( BROWN, WHITE); + TextScreen( ); + Display( 2, 6, 17); + debug0 = 1; [ Object number counter. + x = 10; + y = 4; + message = 16; + + :mrLooper2; + DisplayV( y, x, message); + ++debug0; + ++y; + if (!debug0 > SIZE_OF_INVENTORY) + { + goto mrLooper2; + } + + :checkKb2; + if (!HaveKey( )) + { + goto checkKb2; + } + SetTextAttribute( TEXT_COLOR, BG_COLOR); + Graphics( ); + } + + +if (Said( object, room)) + { + GetNum( 4, debug1); + GetRoomV( debug1, debug0); + Print( 13); + } + +if (Said( set, priority)) + { + GetNum( 12, debug1); + SetPriorityV( ego, debug1); + } + +if (Said( release, priority)) + { + ReleasePriority( ego); + } + +if (said( tp)) + { + GetNum( 1, debug0); + NewRoomV( debug0); + } + +if (said( position)) + { + GetNum( 2, debug0); + GetNum( 3, debug1); + RepositionToV( ego, debug0, debug1); + } + +if (monitorType != MONO && + (Said( show, position) || + Said( room, number) || + Said( room) || + Controller( cXY) || + Said( xy))) + { + Toggle( xyOn); + SetTextAttribute( BROWN, BG_COLOR); + Display( 24, 26, 15); + SetTextAttribute( TEXT_COLOR, BG_COLOR); + } + +if (monitorType != MONO && xyOn) + { + debug0 = egoX; + debug1 = egoY; + SetTextAttribute( BROWN, BG_COLOR); + Display( 24, 16, 14); + SetTextAttribute( TEXT_COLOR, BG_COLOR); + } + +if ((Said( gimme, gimme) || + Controller( cGimme))) + { + Display( 0, 0, 7); + debug0 = 0; + debug1 = INVENTORY; + + :mrLooper3; + ++debug0; + if (!debug0 > SIZE_OF_INVENTORY) + { + PutV( debug0, debug1); + goto mrLooper3; + } + } + +if (Said( get, object)) + { + GetNum( 4, debug0); + GetV( debug0); + } + +if (Said( show, flag)) + { + GetNum( 5, debug0); + if (IssetV( debug0)) + { + Print( 10); + } + else { + Print( 11); + } + } + +if (Said( set, flag)) + { + GetNum( 5, debug0); + SetV( debug0); + } + +if (Said( Reset, flag)) + { + GetNum( 5, debug0); + ResetV( debug0); + } + +if (Said( show, var)) + { + GetNum( 8, debug0); + debug1 =@ debug0; + Print( 9); + } + +if (Said( set, var)) + { + GetNum( 8, debug0); + GetNum( 6, debug1); + debug0 @= debug1; + } + +[ if (unknownWord) +[ { +[ if (unknownWord == 1) {Log( 21);} +[ if (unknownWord == 2) {Log( 22);} +[ if (unknownWord == 3) {Log( 23);} +[ if (unknownWord == 4) {Log( 24);} +[ if (unknownWord == 5) {Log( 25);} +[ if (unknownWord == 6) {Log( 26);} +[ if (unknownWord == 7) {Log( 27);} +[ if (unknownWord > 7) {Log( 28);} +[ } + + +[***** +:exit +[***** diff --git a/RM53.CG b/RM53.CG new file mode 100644 index 0000000..8c8be6a --- /dev/null +++ b/RM53.CG @@ -0,0 +1,247 @@ +[Room 53 -- lgc.trace messages + + + +#message 1 "increment" +#message 2 "decrement" +#message 3 "assignn" +#message 4 "assignv" +#message 5 "addn" +#message 6 "addv" +#message 7 "subn" +#message 8 "subv" +#message 9 "lindirectv" +#message 10 "rindirect" +#message 11 "lindirectn" + +#message 12 "set" +#message 13 "reset" +#message 14 "toggle" +#message 15 "set.v" +#message 16 "reset.v" +#message 17 "toggle.v" + +[Logics +#message 18 "new.room" +#message 19 "new.room.v" +#message 20 "load.logics" +#message 21 "load.logics.v" +#message 22 "call" +#message 23 "call.v" + +[Pictures +#message 24 "load.pic" +#message 25 "draw.pic" +#message 26 "show.pic" +#message 27 "discard.pic" +#message 28 "overlay.pic" +#message 29 "show.pri.screen" + +[Views +#message 30 "load.view" +#message 31 "load.view.v" +#message 32 "discard.view" + +[Animated objects +#message 33 "animate.obj" +#message 34 "unanimate.all" +#message 35 "draw" +#message 36 "erase" +#message 37 "position" +#message 38 "position.v" +#message 39 "get.posn" +#message 40 "reposition" + +[Views of animated objects +#message 41 "set.view" +#message 42 "set.view.v" +#message 43 "set.loop" +#message 44 "set.loop.v" +#message 45 "fix.loop" +#message 46 "release.loop" +#message 47 "set.cel" +#message 48 "set.cel.v" +#message 49 "last.cel" +#message 50 "current.cel" +#message 51 "current.loop" +#message 52 "current.view" +#message 53 "number.of.loops" + +[Priority control of animated objects +#message 54 "set.priority" +#message 55 "set.priority.v" +#message 56 "release.priority" +#message 57 "get.priority" + +[Attributes of animated objects +#message 58 "stop.update" +#message 59 "start.update" +#message 60 "force.update" +#message 61 "ignore.horizon" +#message 62 "observe.horizon" +#message 63 "set.horizon" +#message 64 "object.onWater" +#message 65 "object.on.land" +#message 66 "object.on.anything" +#message 67 "ignore.objs" +#message 68 "observe.objs" +#message 69 "distance" + +[Cycling of animated objects +#message 70 "stop.cycling" +#message 71 "start.cycling" +#message 72 "normal.cycle" +#message 73 "end.of.loop" +#message 74 "reverse.cycle" +#message 75 "reverse.loop" +#message 76 "cycle.time" + +[Motion of animated objects +#message 77 "stop.motion" +#message 78 "start.motion" +#message 79 "step.size" +#message 80 "step.time" +#message 81 "move.obj" +#message 82 "move.obj.v" +#message 83 "follow.ego" +#message 84 "wander" +#message 85 "normal.motion" +#message 86 "set.dir" +#message 87 "get.dir" + +#message 88 "ignore.blocks" +#message 89 "observe.blocks" +#message 90 "block" +#message 91 "unblock" + +[Inventory objects +#message 92 "get" +#message 93 "get.v" +#message 94 "drop" +#message 95 "put" +#message 96 "put.v" +#message 97 "get.room.v" + +[Sounds +#message 98 "load.sound" +#message 99 "sound" +#message 100 "stop.sound" + +[Screen Display +#message 101 "print" +#message 102 "print.v" +#message 103 "display" +#message 104 "display.v" +#message 105 "clear.lines" +#message 106 "text.screen" +#message 107 "graphics" +#message 108 "set.cursor.char" +#message 109 "set.text.attribute" +#message 110 "shake.screen" + +[Screen handling +#message 111 "configure.screen" +#message 112 "status.line.on" +#message 113 "status.line.off" + +[String handling +#message 114 "set.string" +#message 115 "get.string" +#message 116 "word.to.string" +#message 117 "parse" +#message 118 "get.num" + +[Input handling +#message 119 "prevent.input" +#message 120 "accept.input" +#message 121 "set.key" + +[Add to picture +#message 122 "add.to.pic" +#message 123 "add.to.pic.v" + +[User requested actions +#message 124 "status" +#message 125 "save.game" +#message 126 "restore.game" +#message 127 "init.disk" +#message 128 "restart.game" + +[Show object view +#message 129 "show.obj" + +[Miscellaneous +#message 130 "random" +#message 131 "program.control" +#message 132 "player.control" +#message 133 "obj.status.v" +#message 134 "quit" + +#message 135 "show.mem" +#message 136 "pause" +#message 137 "echo.line" +#message 138 "cancel.line" +#message 139 "init.joy" +#message 140 "toggle.monitor" +#message 141 "version" +#message 142 "script.size" +#message 143 "set.game.id" +#message 144 "log" +#message 145 "set.scan.start" +#message 146 "reset.scan.start" + +#message 147 "reposition.to" +#message 148 "reposition.to.v" + +#message 149 "trace.on" +#message 150 "trace.info" + +#message 151 "print.at" +#message 152 "print.at.v" + +#message 153 "discard.view.v" +#message 154 "clear.text.rect" +#message 155 "set.upper.left" +#message 156 "set.menu" +#message 157 "set.menu.item" +#message 158 "submit.menu" +#message 159 "enable.item" +#message 160 "disable.item" + +#message 161 "menu.input" +#message 162 "show.obj.v" + +#message 163 "open.dialogue" +#message 164 "close.dialogue" + +#message 165 "mul.n" +#message 166 "mul.v" +#message 167 "div.n" +#message 168 "div.v" + +#message 169 "close.window" + + + + + + +#message 220 "equaln" +#message 221 "equalv" +#message 222 "lessn" +#message 223 "lessv" +#message 224 "greatern" +#message 225 "greaterv" +#message 226 "isset" +#message 227 "isset.v" +#message 228 "has" +#message 229 "obj.in.room" +#message 230 "posn" +#message 231 "controller" +#message 232 "have.key" +#message 233 "said" +#message 234 "compare.strings" +#message 235 "obj.in.box" +#message 236 "center.posn" +#message 237 "right.posn" + diff --git a/RM54.CG b/RM54.CG new file mode 100644 index 0000000..2208627 --- /dev/null +++ b/RM54.CG @@ -0,0 +1,45 @@ +[logics for room 54 -- disk-based error handling +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +#include "sysdefs.h" + + +%message 1 "DiscardView(%v18):%m30"; +%message 2 "SetView(%v18,_):%m26"; +%message 3 "SetView(_,%v18):%m30"; +%message 4 "SetLoop(%v18,_):%m26"; +%message 5 "SetLoop(%v18,_):\nBad loop #.%m25"; +%message 6 "SetLoop(%v18,_):%m31"; +%message 7 "SetCel(%v18,_):%m26"; +%message 8 "SetCel(%v18,_):\nBad cel #.%m25"; +%message 9 "Sound(%v18):\nSound not loaded.%m25"; +%message 10 "SetCel(%v18,_):%m31"; +%message 11 "Script buffer overflow.\nMaximum size = %v18%m25"; +%message 12 "Erase(%v18):%m26"; +%message 13 "AnimateObj(%v18):%m26"; +%message 14 "Print(%v18): no message%m25"; +%message 15 "Bad test: %v18%m25"; +%message 16 "Bad action: %v18%m25"; +%message 17 "StartUpdate(%v18):%m28"; +%message 18 "DrawPic(%v18):%m32"; +%message 19 "Draw(%v18):%m26"; +%message 20 "Draw(%v18):%m31"; +%message 21 "DiscardPic(%v18):%m32"; +%message 22 "SetScanStart() already active\nin logic %v18.%m25"; +%message 23 "Get(%v18) or Put(%v18):%m26"; + +%message 24 "" + +%message 25 "\nPress ESC to quit."; +%message 26 "%m27.%m25"; [Bad object number +%message 27 "\nBad object number"; +%message 28 "%m27 or object not drawn.%m25" [ " " " or object not drawn +%message 29 "\nView not "; +%message 30 "%m29loaded.%m25"; [View not loaded +%message 31 "%m29set.%m25"; [View not set +%message 32 "Picture not loaded.%m25"; + + +PrintV( errorNumber); +Quit(1); diff --git a/RM55.CG b/RM55.CG new file mode 100644 index 0000000..31c7643 --- /dev/null +++ b/RM55.CG @@ -0,0 +1,175 @@ +[logics for room 55 -- lgc.help +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm55.msg" +%include "gamedefs.h" +%include "colors.h" + + + + + +PreventInput(); +StatusLineOff(); +SetTextAttribute( BLUE, WHITE); +TextScreen(); +lastChar = 0; +Reset( haveMatch); + +Display( 1, 9, 1); +Display( 2, 5, 2); + + +Display( 5, 11, 3); + + + +Display( 9, 1, 4); +Display( 10, 1, 5); + + +Display( 13, 1, 6); +Display( 14, 1, 7); +Display( 15, 1, 8); + + +Display( 18, 1, 9); +Display( 19, 1, 10); + +Display( 22, 1, 17); +Display( 23, 1, 18); + + + + + + + + + + + + +:checkKb +if (!HaveKey()) + { + goto checkKb; + } + + +lastChar = 0; +SetTextAttribute( TEXT_COLOR, BG_COLOR); +TextScreen( ); +Display( 1, 9, 1); +Display( 2, 5, 2); + + +Display( 5, 11, 21); + + + +Display( 9, 1, 22); +Display( 10, 1, 23); + + +if (machineType == ST) + { + Display( 13, 1, 11); + Display( 14, 1, 12); + Display( 15, 1, 13); + } +else + { + Display( 13, 1, 24); + Display( 14, 1, 25); + Display( 15, 1, 26); + } + + +Display( 18, 1, 9); +Display( 19, 1, 10); + + +if (mouseMachine) + { + :checkKb2 + if (!HaveKey( )) + { + goto checkKb2; + } + + + + + + + + + + + +[ helpScreen3: + lastChar = 0; + SetTextAttribute( TEXT_COLOR, BG_COLOR); + TextScreen( ); + + Display( 1, 9, 1); + Display( 2, 5, 2); + + + Display( 5, 13, 41); + + + Display( 9, 1, 42); + if (machineType == ST) + { + Display( 10, 1, 48); + Display( 13, 1, 44); + Display( 14, 1, 49); + Display( 15, 1, 50); + } + else + { + if ((machineType == CORTLAND || + machineType == MAC)) + { + Display( 10, 1, 43); + } + else + { + if (machineType == AMIGA) + { + Display( 10, 1, 48); + Display( 13, 1, 45); + Display( 14, 1, 46); + } + } + } + + + + Display( 18, 1, 9); + Display( 19, 1, 10); + } + +Display( 23, 7, 47); + + + +:checkKb3 +if (!HaveKey( )) + { + goto checkKb3; + } + +lastChar = 0; +SetTextAttribute( TEXT_COLOR, BG_COLOR); +AcceptInput(); +StatusLineOn(); +Graphics(); +Set( haveMatch); + + + + \ No newline at end of file diff --git a/RM55.MSG b/RM55.MSG new file mode 100644 index 0000000..308967a --- /dev/null +++ b/RM55.MSG @@ -0,0 +1,93 @@ +[messages for room 55 -- lgc.help +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + + + + + + + + + + + + + + +[ 0 5 10 15 20 25 30 35 39 +[ | | | | | | | | | + +%message 1 "Leisure Suit Larry in" +%message 2 "the Land of the Lounge Lizards" + + +%message 3 "KEYBOARD COMMANDS" + + + +%message 4 "Use arrows or number keys to move" +%message 5 "Larry." + + +%message 6 "Press ESC to use the menus." +%message 7 "Press ENTER to choose from a menu," +%message 8 "or ESC to return to the game." + + +%message 9 "Some menu choices list a function key" +%message 10 "\"shortcut\" beside their name." + +%message 17 "For a Hint Book, call (209) 683-6858."[ +%message 18 " (For a good time, call the author!)" [ +[%message 1 "Leisure Suit Larry in" +[%message 2 "the Land of the Lounge Lizards" + + +%message 21 "JOYSTICK COMMANDS" + + + +%message 22 "Point joystick in desired direction" +%message 23 "to move Larry." + + +%message 24 "Press top button to use the menus." +%message 25 "Press other button to see the status" +%message 26 "screen." + +%message 11 "Press button to use the menus." +%message 12 "Double-click button to see the status" +%message 13 "screen." + +[%message 9 "Some menu choices list a function key" +[%message 10 "\"shortcut\" beside their name." + + + +[%message 1 "Leisure Suit Larry in" +[%message 2 "the Land of the Lounge Lizards" + + +%message 41 "MOUSE COMMANDS" + + + +%message 42 "Put cursor where you want Larry to" [ EVERYBODY! +%message 43 "go, then click the button." [ Mac/Cortland only +%message 48 "go, then click left button." [ non-Apple +%message 44 "Press right button to use menus." [ ST only +%message 49 "Double-click right button to see the" [ ST only +%message 50 "status screen." +%message 45 "Press left button in the window" [ AMIGA only +%message 46 "bar to use menus." [ AMIGA only + + +[%message 9 "Some menu choices list a function key" +[%message 10 "\"shortcut\" beside their name." + + +%message 47 "Press any key to return to game." + \ No newline at end of file diff --git a/RM56.CG b/RM56.CG new file mode 100644 index 0000000..781e809 --- /dev/null +++ b/RM56.CG @@ -0,0 +1,234 @@ +[logics for room 56 -- lgcBlackjack +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm56.msg" +%include "gamedefs.h" +%include "bj.h" + + + +[ Structure: +[ cards are numbered from 0 through 51. +[ cells are numbered 0 through 12. +[ a card's value is 2 more than its number. +[ a card's cell is equal to its number. + + + +if ((function == DRAW_CARD || + function == DRAW_FACE_DOWN || + function == ERASE_CARD)) + { + + [ Requires for input the pointer "currentCard" which points to a var + [that contains a card. Leaves "currentCard" unaffected, but does muck + [up "card" as a local "work", and by calling "getSuitValue." + [Correctly sets "value" too. + + #define CARD_1_X 28 + #define CARD_2_X 46 + #define CARD_3_X 64 + #define CARD_4_X 82 + #define CARD_5_X 100 + #define CARD_6_X 118 + + #define DEALER_Y 45 + #define PLAYER_Y 152 + #define SPLIT_HAND_Y 106 + + + if (!currentCard < sFirstCard) [ is it a split? + { + y = SPLIT_HAND_Y; + card = currentCard; + card -= sFirstCard; + } + else + { + if (!currentCard < pFirstCard) [ is it a player card? + { + y = PLAYER_Y; + card = currentCard; + card -= pFirstCard; + } + else [ Nope, it's the dealer's. + { + y = DEALER_Y; + card = currentCard; + card -= dFirstCard; + } + } + + + if (card == 0) {x = CARD_1_X;} + if (card == 1) {x = CARD_2_X;} + if (card == 2) {x = CARD_3_X;} + if (card == 3) {x = CARD_4_X;} + if (card == 4) {x = CARD_5_X;} + if (card == 5) {x = CARD_6_X;} + + card =@ currentCard; + + goto getSuitValue; [ This + :returnToHere; [ is ugly!! + + if (function == ERASE_CARD) + { + view = BLANK_CARD; + cell = 0; + } + else + { + if (function == DRAW_FACE_DOWN) + { + view = CARD_BACK; + cell = 0; + } + else + { + view = suit; + } + } + + loop = 0; + priority = 4; + AddToPicV( view, loop, cell, x, y, priority, priority); + Sound( sCard, done); + } + + + +if (function == GET_SUIT_VALUE) + { + + [ Takes "card" as input, leaves "card" unaffected, and adjusts + ["cell," "value," and "suit." + + :getSuitValue; + + cell = card; + if (card < 13) + { + suit = HEARTS; + } + else + { + if (card < 26) + { + suit = CLUBS; + cell -= 13; + } + else + { + if (card < 39) + { + suit = SPADES; + cell -= 26; + } + else + { + suit = DIAMONDS; + cell -= 39; + } + } + } + + value = cell; + value += 2; + if (value > 13) + { + value = 1; + Set( softAce); + } + + if (value > 10) + { + value = 10; + } + + if (function != GET_SUIT_VALUE) [ This + { [ is + goto returnToHere; [ uglier! + } + } + + + +if (function == PAY_WINNER) + { + work = 250; + work -= winnings; + + if (work > dollars) + { + dollars += winnings; + } + else + { + winnings = 250; + winnings -= dollars; + dollars = 250; + Print( 4); + Set( readyToLeave); + } + + winnings = 0; + function = UPDATE_STATUS; + } + + +if (function == UPDATE_STATUS) + { + if (monitorType == MONO) + { + ClearLines( 24, 24, BG_COLOR); + y = 24; + } + else + { + ClearLines( 21, 21, BG_COLOR); + y = 21; + } + + if (handInPlay == PLAYER) + { + message = 1; + } + else + { + if (handInPlay == SPLIT) + { + message = 2; + } + else + { + message = 3; + } + } + x = 0; + DisplayV( y, x, message); + function = SHOW_TOTALS; + } + + +if (function == SHOW_TOTALS) + { + if (debugging && forceAtest) + { + oldPTotal = pTotal; + oldSTotal = sTotal; + oldDTotal = dTotal; + SetTextAttribute( 6, 0); + Display( 24, 0, 5); + SetTextAttribute( 15, 0); + } + } + + +[***** +:exit +[***** + +function = 0; + diff --git a/RM56.MSG b/RM56.MSG new file mode 100644 index 0000000..0410b8b --- /dev/null +++ b/RM56.MSG @@ -0,0 +1,23 @@ +[messages for room 56 -- lgcBlackjack +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"Bet is $%v226.00 You have $%v90.00" + +%message 2 +"Bet is $%v225.00 You have $%v90.00" + +%message 3 +"Bet is $%v255.00 You have $%v90.00" + +%message 4 +"Congratulations, you've broken the bank. + This casino has a limit of $250.00 per person, and you've reached it. + No more for you, Larry!" + +%message 5 +"Dealer=%v222 Player=%v223 Split=%v224 " + diff --git a/RM57.CG b/RM57.CG new file mode 100644 index 0000000..c04d982 --- /dev/null +++ b/RM57.CG @@ -0,0 +1,640 @@ +[logics for room 57 -- lgcStreet +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm57.msg" +%include "gamedefs.h" + + + +[ This dynamic controls: +[ the car that runs ego down whenever he tries to cross the street, +[ the random dog pissing on ego's leg, +[ and the taxi cab's arrival, wait, and departure. + + + +%define BRING_OUT_DOG 222 [ # of cycles in same place +%define PISS_CYCLES 35 [ length of piss + +%define AFTER_EGO 1 +%define DOG_PISSING 2 +%define LEAVING 3 +%define DOG_GONE 4 + + +[ #define TAXI_WAITING 4 [ from gamedefs.h +#define TAXI_WAIT_TIME 14 [ in real seconds + +#define cNormal 0 +#define cBraking 1 + +#define DEATH_CAR_STEP 10 + + + +%define dogAtEgo df0 +%define egoErased df1 +%define taxiDone df2 +%define eraseCar df3 +%define eraseEgo df4 +%define dogOnscreen df6 + + +%define dogStatus dv1 +%define pissCycles dv2 +%define taxiTimer dv3 +%define taxiX dv4 +%define taxiY dv5 + + + +if (initLog) + { + LoadView( vDeathCar); + LoadView( vEgoRoadKill); + LoadView( vDog); + LoadView( vDogPissing); + LoadView( vDogPissing2); + LoadView( vTaxi); + + LoadSound( sTaxiTires); + LoadSound( sDeathCar); + LoadSound( mDog); + + AnimateObj( aCar); + IgnoreObjs( aCar); + SetView( aCar, vDeathCar); + SetLoop( aCar, 0); + FixLoop( aCar); + SetPriority( aCar, 15); + + AnimateObj( aDog); + SetView( aDog, vDog); + Position( aDog, 0, 166); + notMovedCycles = 0; + + AnimateObj( aTaxi); + SetView( aTaxi, vTaxi); + SetCel( aTaxi, 0); + StopCycling( aTaxi); + if (currentRoom == 11) + { + taxiY = 166; + } + else + { + taxiY = 160; + } + + if (previousRoom != rmInsideTaxi) + { + taxiScript = 0; + } + else + { + taxiX = 60; + PositionV( aTaxi, taxiX, taxiY); + Draw( aTaxi); + + egoX = taxiX; + egoX += 4; + egoY = taxiY; + egoY -= 4; + RepositionToV( ego, egoX, egoY); + ForceUpdate( ego); + + taxiTimer = 2; + + if (currentStatus == STIFFED_CABBIE) + { + LoadView( vEgoGettingBeaten); + PreventInput(); + StopMotion( ego); + Set( programControl); + taxiScript = 200; [ Pick a fight. + } + else + { + StartMotion( ego); + taxiScript = 101; [ We know he's clear. + } + } + + Return( ); + } [ end initLOG + + + +Reset( nearTaxi); +if (taxiScript == TAXI_WAITING) + { + if (currentRoom == 11) + { + if (Posn( ego, 70, 155, 90, 167)) + { + Set( nearTaxi); + } + } + else + { + if (Posn( ego, 70, 140, 90, 166)) + { + Set( nearTaxi); + } + } + } + + +[***** +:handleInput +[***** + +if (!haveInput) {goto noInput;} + +if (Said( look, street)) + { + Print( 24); + } + +if ((Said( look, sky) || + Said( look, up))) + { + Print( 25); + } + +if (Said( climb, anyword)) + { + Print( 27); + } + + + +[ First, we'll handle the DOG SHIT: + +if (Said( look, dog)) + { + if (!dogOnscreen) + { + Print( 30); + } + else + { + if (dogStatus == AFTER_EGO) + { + Print( 7); + } + + if (dogStatus == DOG_PISSING) + { + Print( 8); + } + + if (dogStatus == LEAVING) + { + Print( 9); + } + } + } + +if (dogOnscreen) + { + if ((Said( hump, dog, rol) || + Said( anyword, lay, rol) || + Said( pee, on, dog, rol) || + Said( anyword, pee, on, dog, rol) || + Said( butt, hump, dog, rol))) + { + Print( 14); + } + + if ((Said( hurt, dog, rol) || + Said( kick, dog, rol) || + Said( kill, dog, rol))) + { + Print( 15); + } + + if (Said( smell, dog, rol)) + { + Print( 16); + } + + if (Said( pet, dog)) + { + Print( 26); + } + + if (Said( get, dog)) + { + Print( 28); + } + } + + + +[ Next, take care of the cab stuff: + +if (Said( look, pole)) + { + Print( 31); + } + +if ((Said( look, sign, pole) || + Said( look, sign, on, pole) || + Said( look, sign))) + { + Print( 17); + } + +if (Said( look, street)) + { + Print( 21); + } + +if ((Said( hail, cab) || + Said( cab) || + Said( call, cab) || + Said( yell, cab))) + { + if (!egoY < taxiY) + { + Print( 19); + } + else + { + Print( 2); + if (!taxiScript) + { + StopMotion( ego); + Set( programControl); + Random( 3, 7, taxiTimer); + } + } + } + +if (taxiScript == TAXI_WAITING) + { + if ((Said( look, cab) || + Said( look$in, cab))) + { + Print( 4); + Print( 5); + Print( 6); + } + + if (Said( smell, cab)) + { + Print( 23); + } + + if ((Said( enter, cab) || + Said( enter) || + Said( open, door, rol) || + Said( open, cab, door, rol) || + Said( open, door))) + { + if (!nearTaxi) + { + Set( notCloseEnough); + } + else + { + if (!rodeInCab) + { + Print( 3); + } + else + { + Set( OK); + } + + Erase( ego); + Set( egoErased); + Set( programControl); + PreventInput(); + + Set( taxiDone); + taxiScript = 101; + taxiTimer = 0; + } + } + } + +if (Said( look, alley)) + { + Print( 18); + } + +if (Said( look, car)) + { + Print( 22); + } + + +[***** +:noInput +[***** + +if (egoX == oldEgoX && [ hasn't moved + egoY == oldEgoY && + !taxiScript && + !script && + currentStatus == NORMAL) + { + ++notMovedCycles; + if (notMovedCycles == BRING_OUT_DOG) + { + Draw( aDog); + Sound( mDog, done); + Set( dogOnscreen); + FollowEgo( aDog, 5, dogAtEgo); + dogStatus = AFTER_EGO; + } + } +else [ he moved; start all over + { + notMovedCycles = 0; + if (dogStatus == AFTER_EGO) + { + Reset( dogAtEgo); + pissCycles = 2; [ make dog wander off + } + } + +if (dogAtEgo && dogStatus == AFTER_EGO) + { + Reset( dogAtEgo); + Set( smellsLikeDogPiss); + dogStatus = DOG_PISSING; + pissCycles = PISS_CYCLES; + StopMotion( ego); + Set( programControl); + + StopMotion( aDog); + GetPosn( aDog, work, y); + x = egoX; + if (egoX > 3) + { + x -= 4; + } + else + { + x = 0; + } + + RepositionToV( aDog, x, y); + + if (y > egoY) + { + SetView( aDog, vDogPissing); + } + else + { + SetView( aDog, vDogPissing2); + } + } + +--pissCycles; +if (pissCycles == 1) + { + dogStatus = LEAVING; + StartMotion( ego); + Reset( programControl); + StartMotion( aDog); + SetView( aDog, vDog); + Wander( aDog); + } + +if (edgeObjHit && objHitEdge == aDog && dogStatus == LEAVING) + { + Erase( aDog); + Reset( dogOnscreen); + dogStatus = DOG_GONE; + } + + + +[ This does the car appearing out of nowhere, smashing ego to a pulp, +[and disappearing screenLeft. + +Distance( ego, aTaxi, work); +if (edgeEgoHit == BOTTOM && + work == ERROR && [ True, if no taxi on screen. + currentStatus != RUN_OVER) [ init the wreck sequence + { + StopMotion( ego); + Set( programControl); + PreventInput(); + + currentStatus = RUN_OVER; + Position( aCar, 119, 167); + Draw( aCar); + Sound( sDeathCar, done); + step = DEATH_CAR_STEP; + if (egoX > 116) + { + egoX = 116; + } + MoveObjV( aCar, egoX, egoY, step, eraseEgo); + } + + +if (currentStatus == RUN_OVER) + { + if (edgeEgoHit) + { + edgeEgoHit = 0; + } + + if (eraseEgo) + { + Reset( eraseEgo); + Set( egoErased); + + Erase( ego); + SetView( ego, vEgoRoadKill); + if (egoX > 33) + { + egoX -= 33; + } + else + { + egoX = 0; + } + PositionV( ego, egoX, egoY); + + MoveObj( aCar, 0, 167, DEATH_CAR_STEP, eraseCar); + } + + if (egoErased) + { + GetPosn( aCar, x, y); + if ((x < egoX || x < DEATH_CAR_STEP)) + { + Reset( egoErased); + Draw( ego); + } + } + + if (eraseCar) + { + Reset( eraseCar); + Erase( aCar); + Print( 1); + Set( certainDeath); + } + } + + + +[ This section handles the taxi cab stopping after ego hails it. +[If he stands around without entering the cab, it leaves. + +if (aSecondPassed) + { + --taxiTimer; + if (taxiTimer == 1) + { + Set( taxiDone); + } + } + +if (taxiScript) + { + GetPosn( aTaxi, x, y); + if ((x == 103 || [ don't muck with these! + x == 88 || + x == 36)) + { + Set( taxiDone); + } + } + +if (taxiDone) + { + Reset( taxiDone); + ++taxiScript; + + if (taxiScript == 1) + { + taxiX = 119; + PositionV( aTaxi, taxiX, taxiY); + Draw( aTaxi); + taxiX = 60; + step = 0; + MoveObjV( aTaxi, taxiX, taxiY, step, taxiDone); + StepSize( aTaxi, four); + } + + if (taxiScript == 2) + { + StepSize( aTaxi, three); + } + + if (taxiScript == 3) + { + StepSize( aTaxi, two); + SetCel( aTaxi, 1); + Sound( sTaxiTires, done); + } + + if (taxiScript == TAXI_WAITING) [ 4; defined in gamedefs.h + { + SetCel( aTaxi, 0); + + StartMotion( ego); + Reset( programControl); + + taxiTimer = TAXI_WAIT_TIME; + } + + if (taxiScript == 5) + { + Print( 10); [ "Can't wait all day" + taxiScript = 101; + } + + + if (taxiScript == 101) [ Try to leave + { + GetPosn( aTaxi, taxiX, taxiY); + if (egoX < taxiX && + !egoY < taxiY) + { + Print( 20); + taxiTimer = 5; + --taxiScript; + } + else + { + taxiScript = 102; [ He's clear; so leave! + } + } + + if (taxiScript == 102) + { + StepSize( aTaxi, two); + taxiX = 0; + step = 0; + MoveObjV( aTaxi, taxiX, taxiY, step, taxiDone); + } + + if (taxiScript == 103) + { + StepSize( aTaxi, four); + if (currentStatus == STIFFED_CABBIE) + { + IgnoreObjs( ego); + SetView( ego, vEgoRoadKill); + GetPosn( aTaxi, egoX, egoY); + --egoY; + PositionV( ego, egoX, egoY); + Draw( ego); + } + } + + if (taxiScript == 104) + { + taxiScript = 0; + Erase( aTaxi); + if (currentStatus == STIFFED_CABBIE) + { + Reset( egoErased); + Set( certainDeath); + } + + if (egoErased) + { + newRoom = rmInsideTaxi; + } + } + + + if (taxiScript == 201) + { + SetView( ego, vEgoGettingBeaten); + Set( keepCycling); + taxiTimer = 5; + } + + if (taxiScript == 202) + { + Erase( ego); + Print( 11); + taxiScript = 101; [ Leave without checking. + taxiTimer = 3; + } + } + + + +[***** +:exit [ test for leaving the room +[***** + +if ((egoErased || currentStatus == RUN_OVER)) + { + StopMotion( ego); + Set( programControl); + } diff --git a/RM57.MSG b/RM57.MSG new file mode 100644 index 0000000..ce28269 --- /dev/null +++ b/RM57.MSG @@ -0,0 +1,106 @@ +[messages for room 57 -- lgcStreet +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"You know, the traffic here is really a killer! You should forget about + crossing these streets!" + +%message 2 +"\"YO!!\n\nTAXI!!!\"" + +%message 3 +"Vowing to hold your breath forever, + you enter this miserable excuse for public transportation." + +%message 4 +"It's not very clean." + +%message 5 +"It's not very new." + +%message 6 +"(And those are its good points!)" + +%message 7 +"Look out! Here he comes again!" + +%message 8 +"Obviously, he thinks you're a fire plug." + +%message 9 +"Dogs like that make you want to keep moving." + +%message 10 +"\"I can't wait all day, bub!\"" + +%message 11 +"\"You'll not ride with me again!\"" + +%message 12 +"" + +%message 13 +"" + +%message 14 +"Sick-o!" + +%message 15 +"After all he's done for you?" + +%message 16 +"He presently smells quite bad, although still better than you." + +%message 17 +"\"TAXI\n +STAND\"" + +%message 18 +"It's dark. Real dark." + +%message 19 +"You'd better get out of the street first." + +%message 20 +"\"BEEP\n +BEEP!\"" + +%message 21 +"Thousands of cars stream past, just below the edge of your screen." + +%message 22 +"Trust me, they're there!" + +%message 23 +"It smells like an old cab." + +%message 24 +"Isn't it funny how there's so little traffic?" + +%message 25 +"The glow of the city lights obliterate the stars." + +%message 26 +"As you bend over to do so, his bare teeth convince you otherwise." + +%message 27 +"You shinny up the pole, read the sign, and come right back down." + +%message 28 +"Who'd want him?" + +%message 29 +"" + +%message 30 +"Where?" + +%message 31 +"There is a sign on the pole." + +%message 32 +"" + diff --git a/RM58.CG b/RM58.CG new file mode 100644 index 0000000..4445c45 --- /dev/null +++ b/RM58.CG @@ -0,0 +1,56 @@ +[logics for room 58 -- lgcSlots +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm58.msg" +%include "gamedefs.h" +%include "slots.h" + + + +if (function == PAY_WINNER) + { + winnings = bet; + MulV( winnings, multiple); + work = 250; + work -= winnings; + + if (work > dollars) + { + dollars += winnings; + } + else + { + winnings = 250; + winnings -= dollars; + dollars = 250; + Print( 4); + Set( readyToLeave); + } + + function = UPDATE_STATUS; [ Auto update. + } + + +if (function == UPDATE_STATUS) + { + if (monitorType == MONO) + { + ClearLines( 24, 24, BG_COLOR); + Display( 24, 0, 1); + } + else + { + ClearLines( 21, 21, BG_COLOR); + Display( 21, 0, 1); + } + } + + + +[***** +:exit +[***** + +function = 0; + diff --git a/RM58.MSG b/RM58.MSG new file mode 100644 index 0000000..6f2ad90 --- /dev/null +++ b/RM58.MSG @@ -0,0 +1,14 @@ +[messages for room 58 -- lgcSlots +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"Bet is $%v200.00 You have $%v90.00" + +%message 4 +"Congratulations, you've broken the bank! + This casino has a limit of $250.00 per person, and you've reached it. + No more for you, Larry!" + diff --git a/RM6.CG b/RM6.CG new file mode 100644 index 0000000..341f9fa --- /dev/null +++ b/RM6.CG @@ -0,0 +1,167 @@ +[logics for room 6 -- rmAgeTest +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm6.msg" +%include "gamedefs.h" + + +%define FIRST_QUESTION 1 +%define LAST_QUESTION 43 + +%define missedOne lf0 + +%define age lv9 [ used in message 5 +%define lgcQuestion lv20 + + +if (!forceAtest && + (passedTest || questionStatus == allDone)) + { + Set( passedTest); + AcceptInput(); + CancelLine(); + PreventInput(); + ClearLines( 22, 24, BG_COLOR); + Reset( handsOff); + Reset( programControl); + AcceptInput(); + + Print( 10); + NewRoom( rmRestart); + } + +if (initLog) + { + animationInterval = FASTEST_SPEED; + Set( handsOff); + PreventInput(); + Reset( enableMenu); + StopMotion( ego); + Set( programControl); + + LoadSound( sError); + + picture = rmTitle; + LoadPic( picture); + DrawPic( picture); + DiscardPic( picture); + + LoadView( vTitles); + AddToPic( vTitles, 0, 0, 4, 18, 4, 4); + AddToPic( vTitles, 0, 1, 4, 36, 4, 4); + AddToPic( vTitles, 0, 2, 46, 36, 4, 4); + AddToPic( vTitles, 0, 3, 11, 87, 4, 4); + [view, loop, cel, x, y, obj priority, box priority + DiscardView( vTitles); + + Random( 2, 4, lgcQuestion); + LoadLogicsV( lgcQuestion); + + ClearLines( 22, 24, BG_COLOR); + + ShowPic( ); + + questionStatus = askAnother; + +[ Set( forceAtest); + if (!forceAtest) + { + Print( 1); + + GetNum( 2, age); + PreventInput(); + AcceptInput(); + + if (age < 18) + { + Print( 4); [ He's so dumb, he admits he's a kid. + Quit( 1); + } + + if (age > 99) + { + Print( 12); [ You can't be THAT old! + Quit( 1); + } + + if (age > 65) + { + Print( 11); [ You're an old fart! + } + + Print( 3); [ He says he's an adult. + + question = 1; + } + } + + +if (questionStatus == askAnother) + { + CallV( lgcQuestion); + } + + +if (questionStatus == waiting) [ now have answer in answer + { + CloseWindow( ); + if ((answer == correctAnswer || + !correctAnswer)) + { + Set( leaveWindow); + Print( 8); [ "Right + questionStatus = waitAwhileAlthoughCorrect; + scriptCycles = 8; + if (machineType == MAC) + { + scriptCycles = 3; + } + } + else + { + if (!missedOne) + { + questionStatus = askAnother; + Print( 5); [ "You blew it. + Set( missedOne); + --question; + } + else + { + Print( 6); [ "Ah Ha!!! + Quit( 1); + } + } + } + + + +if (scriptDone) + { + Reset( scriptDone); + if ((forceAtest || + questionStatus == waitAwhileAlthoughCorrect)) + { + questionStatus = askAnother; + } + else + { + ClearLines( 23, 23, BG_COLOR); + questionStatus = waiting; + } + } + +if (aSecondPassed && secondsInRoom == 5) + { + animationInterval = NORMAL_SPEED; + if ((passInRoom < 250 || + machineType == MAC)) + { + Set( slowProcessor); + } + if (forceAtest) + { + Print( 18); + } + } diff --git a/RM6.MSG b/RM6.MSG new file mode 100644 index 0000000..34c9ac4 --- /dev/null +++ b/RM6.MSG @@ -0,0 +1,72 @@ +[messages for room 6 -- rmAgeTest +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"Warning:\n\n\"Leisure Suit Larry in the Land of the Lounge Lizards\" + contains some elements of plot which may not be + considered appropriate for some children." + +%message 2 +"How old are you? " + +%message 3 +"To verify you are really %v209, + please answer five simple questions." + +%message 4 +"Sorry.\n\n +This game can only be played by adults, or with an adult.\n\n +Please find an adult, come back, and try again." + +%message 5 +"Oops. You blew that one!\n\n +If you miss another, you can't possibly be %v209." + +%message 6 +"You're a kid!!\n\n +Shame on you for trying to deceive a friendly game like this!\n\n +Please play again when you're older." + +%message 7 +"Please answer a, b, c, or d: " + +%message 8 +"Correct." + +%message 9 +"So far, so good.\n\n +Now for the final question." + +%message 10 +" Thank you.\n\n +And now, slip into your leisure suit and prepare to enter the + \"Land of the Lounge Lizards\" with \"Leisure Suit Larry!\"" + +%message 11 +" Warning!\n\n +This game may be hazardous to those with heart conditions!" + +%message 12 +"No, you're not!" + +%message 13 +"Question #%v208. Correct answer is %v211." + +%message 14 +"a" + +%message 15 +"b" + +%message 16 +"c" + +%message 17 +"d" + +%message 18 +"%v62 cycles in %v63 seconds" + diff --git a/RM8.CG b/RM8.CG new file mode 100644 index 0000000..cf08840 --- /dev/null +++ b/RM8.CG @@ -0,0 +1,394 @@ +[logics for room 8 -- rmWorkshop +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm8.msg" +%include "gamedefs.h" + + + +[ %view vWorkshopDeadEgo 185 [ death workshop views +[ %view vWorkshopStuff 186 +#define L_HEADLESS_EGOS 0 +#define C_3_EGOS 0 +#define C_5_EGOS 1 +#define C_4_EGOS 2 [ first guy missing +#define L_PLATFORM_RIGHT 1 +#define C_WITHOUT_EGO 0 +#define C_WITH_EGO 1 +#define L_SHAFTS 2 +#define C_SHORT_SHAFT 0 +#define C_LONG_SHAFT 1 +#define L_HEAD_RACK 3 +#define C_FULL 0 +#define C_MISSING_ONE 1 + +[ %view vWorkshopScientist 187 +[define L_WALKING_RIGHT 0 [ covered by "vHotTubGirl" define +#define L_WALKING_LEFT 1 +#define L_WITH_HEAD 2 +#define L_SCREWING_HEAD 3 +#define L_AT_CONTROL_PANEL 4 + +[ %view vWorkshopMen 188 +#define L_DRAGON 0 +#define L_MAN 1 +#define L_WOMAN 2 +#define L_GRAHAM 3 + +[ %view vWorkshopLogo 189 + + +%define manToggle lf0 +%define testerToggle lf1 +%define cavinAtPanel lf3 +%define cavinCycling lf4 + + +%define manCycles lv0 +%define womanCycles lv1 +%define testerCycles lv2 +%define cavinCycles lv3 + + +%object aPlatformLeft 1 +%object aPlatformRight 2 +%object aShaftLeft 3 +%object aShaftRight 4 +%object aCavin 5 +%object aEgos 6 +%object aHeadRack 7 +%object aMan 8 +%object aWoman 9 +%object aGraham 10 +%object aDroid 11 + + +if (initLog) + { + SetHorizon( 1); + Set( noPromptRestart); + currentStatus = RECYCLING; + + LoadView( vEgo); + LoadView( vWorkshopDeadEgo); [ view.185 + LoadView( vWorkshopStuff); [ view.186 + LoadView( vWorkshopScientist); [ view.187 + LoadView( vWorkshopMen); [ view.188 + LoadView( vWorkshopLogo); [ view.189 + LoadView( vWorkshopDroid); [ view.190 + + + LoadPic( currentRoom); + DrawPic( currentRoom); + DiscardPic( currentRoom); + + AddToPic( vWorkshopLogo, 0, 0, 56, 42, 4, 4); + AddToPic( vWorkshopMen, L_DRAGON, 0, 17, 154, 0, 4); + [view, loop, cel, x, y, obj priority, box priority + + + AnimateObj( aPlatformLeft); + IgnoreObjs( aPlatformLeft); + IgnoreBlocks( aPlatformLeft); + SetView( aPlatformLeft, vWorkshopDeadEgo); + SetLoop( aPlatformLeft, 0); + FixLoop( aPlatformLeft); + SetCel( aPlatformLeft, 0); + SetPriority( aPlatformLeft, 5); + StopCycling( aPlatformLeft); + CycleTime( aPlatformLeft, two); + Position( aPlatformLeft, 56, 28); + Draw( aPlatformLeft); + MoveObj( aPlatformLeft, 56, 59, 1, scriptDone); + + AnimateObj( aShaftLeft); + IgnoreObjs( aShaftLeft); + IgnoreBlocks( aShaftLeft); + SetView( aShaftLeft, vWorkshopStuff); + SetLoop( aShaftLeft, L_SHAFTS); + FixLoop( aShaftLeft); + SetCel( aShaftLeft, C_SHORT_SHAFT); + SetPriority( aShaftLeft, 4); + StopCycling( aShaftLeft); + Position( aShaftLeft, 74, 80); + Draw( aShaftLeft); + MoveObj( aShaftLeft, 74, 111, 1, done); + + + AnimateObj( aPlatformRight); + IgnoreObjs( aPlatformRight); + IgnoreBlocks( aPlatformRight); + SetView( aPlatformRight, vWorkshopStuff); + SetLoop( aPlatformRight, L_PLATFORM_RIGHT); + FixLoop( aPlatformRight); + SetCel( aPlatformRight, C_WITHOUT_EGO); + SetPriority( aPlatformRight, 6); + StopCycling( aPlatformRight); + Position( aPlatformRight, 79, 111); + Draw( aPlatformRight); + StopUpdate( aPlatformRight); + + AnimateObj( aShaftRight); + IgnoreObjs( aShaftRight); + IgnoreBlocks( aShaftRight); + SetView( aShaftRight, vWorkshopStuff); + SetLoop( aShaftRight, L_SHAFTS); + FixLoop( aShaftRight); + SetCel( aShaftRight, C_SHORT_SHAFT); + SetPriority( aShaftRight, 5); + StopCycling( aShaftRight); + Position( aShaftRight, 84, 167); + Draw( aShaftRight); + StopUpdate( aShaftRight); + + + AnimateObj( aCavin); + IgnoreObjs( aCavin); + SetView( aCavin, vWorkshopScientist); + SetLoop( aCavin, L_AT_CONTROL_PANEL); + FixLoop( aCavin); + Position( aCavin, 36, 111); + Draw( aCavin); + Set( cavinAtPanel); + + AnimateObj( aEgos); + IgnoreObjs( aEgos); + SetView( aEgos, vWorkshopStuff); + SetLoop( aEgos, L_HEADLESS_EGOS); + FixLoop( aEgos); + SetCel( aEgos, C_3_EGOS); + SetPriority( aEgos, 6); + StopCycling( aEgos); + Position( aEgos, 128, 105); + Draw( aEgos); + StopUpdate( aEgos); + + + AnimateObj( aHeadRack); + IgnoreObjs( aHeadRack); + SetView( aHeadRack, vWorkshopStuff); + SetLoop( aHeadRack, L_HEAD_RACK); + SetCel( aHeadRack, C_FULL); + Position( aHeadRack, 38, 121); + Draw( aHeadRack); + StopCycling( aHeadRack); + StopUpdate( aHeadRack); + + AnimateObj( aMan); + SetView( aMan, vWorkshopMen); + SetLoop( aMan, 1); + Position( aMan, 88, 133); + Draw( aMan); + StopCycling( aMan); + Random( 26, 56, manCycles); + + AnimateObj( aGraham); + SetView( aGraham, vWorkshopMen); + SetLoop( aGraham, L_GRAHAM); + Position( aGraham, 103, 149); + Draw( aGraham); + Random( 17, 33, testerCycles); + + AnimateObj( aWoman); + SetView( aWoman, vWorkshopMen); + SetLoop( aWoman, L_WOMAN); + Position( aWoman, 116, 149); + Draw( aWoman); + StopCycling( aWoman); + + AnimateObj( aDroid); + SetView( aDroid, vWorkshopDroid); + Position( aDroid, 56, 155); + Draw( aDroid); + Wander( aDroid); + CycleTime( aDroid, two); + StepTime( aDroid, two); + + + Set( programControl); + + ShowPic( ); + + Return( ); + + } [ end initLOG + + + +[***** +:handleInput +[***** + +if (haveInput) + { + Set( haveMatch); + Print( 1); + } + + +[***** +:noInput +[***** + +if (cavinAtPanel) + { + --cavinCycles; + if (cavinCycles == 1) + { + Toggle( cavinCycling); + if (cavinCycling) + { + StartCycling( aCavin); + Random( 4, 11, cavinCycles); + } + else + { + StopCycling( aCavin); + Random( 11, 22, cavinCycles); + } + } + } + +--manCycles; +if (manCycles == 1) + { + Random( 0, 2, work); + SetCelV( aMan, work); + Random( 11, 33, manCycles); + } + + +--testerCycles; +if (testerCycles == 1) + { + Random( 7, 22, testerCycles); + Toggle( testerToggle); + if (testerToggle) + { + StartCycling( aWoman); + + StopCycling( aGraham); + SetCel( aGraham, 0); + } + else + { + StartCycling( aGraham); + + StopCycling( aWoman); + SetCel( aWoman, 0); + } + } + + + +if (scriptDone) + { + Reset( scriptDone); + ++script; + + if (script == 1) + { + EndOfLoop( aPlatformLeft, scriptDone); + } + + if (script == 2) + { + Print( 3); + + StopCycling( aPlatformLeft); + MoveObj( aPlatformLeft, 56, 80, 1, scriptDone); + MoveObj( aShaftLeft, 74, 132, 1, done); + } + + if (script == 3) + { + StopUpdate( aPlatformLeft); + StopUpdate( aShaftLeft); + + StartUpdate( aEgos); + MoveObj( aEgos, 103, 105, 1, scriptDone); + } + + if (script == 4) + { + SetCel( aEgos, C_5_EGOS); + MoveObj( aEgos, 82, 105, 1, scriptDone); + } + + if (script == 5) + { + StopUpdate( aEgos); + + StartCycling( aCavin); + SetLoop( aCavin, L_WALKING_RIGHT); + MoveObj( aCavin, 49, 117, 1, scriptDone); + Reset( cavinAtPanel); + + Print( 4); + } + + if (script == 6) + { + SetCel( aHeadRack, C_MISSING_ONE); + ForceUpdate( aHeadRack); + + SetLoop( aCavin, L_WITH_HEAD); + MoveObj( aCavin, 62, 111, 1, scriptDone); + } + + if (script == 7) + { + MoveObj( aCavin, 78, 111, 1, scriptDone); + } + + if (script == 8) + { + SetLoop( aCavin, L_SCREWING_HEAD); + scriptCycles = 21; + } + + if (script == 9) + { + SetLoop( aCavin, L_WALKING_LEFT); + MoveObj( aCavin, 36, 111, 1, scriptDone); + + SetCel( aPlatformRight, C_WITH_EGO); + + SetCel( aEgos, C_4_EGOS); + ForceUpdate( aEgos); + } + + if (script == 10) + { + SetLoop( aCavin, L_AT_CONTROL_PANEL); + Set( cavinAtPanel); + cavinCycles = 3; + + StartUpdate( aPlatformRight); + MoveObj( aPlatformRight, 79, 40, 1, scriptDone); + + StartUpdate( aShaftRight); + MoveObj( aShaftRight, 84, 108, 1, scriptDone); + } + + if (script == 11) + { + SetCel( aShaftRight, C_LONG_SHAFT); + RepositionTo( aShaftRight, 84, 147); + MoveObj( aShaftRight, 84, 116, 1, done); + + Print( 5); + } + + if (script == 12) + { + RestartGame(); + } + } + + + +[***** +:exit [ test for leaving the room +[***** diff --git a/RM8.MSG b/RM8.MSG new file mode 100644 index 0000000..023276e --- /dev/null +++ b/RM8.MSG @@ -0,0 +1,29 @@ +[messages for room 8 -- rmWorkshop +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"Hey! You're not alive yet." + +%message 2 +"" + +%message 3 +"The Sierra adventure team races to your rescue, + dumping your worthless, leisure suit- clad hulk into their giant bit bucket, + for recycling into future games. + Their underground workshop is humming with activity. + This is \"Where Adventurers Are Made, Not Born!\"" + +%message 4 +"Commander Cavin quickly assembles a replacement Larry, + while subordinates repair players damaged in other Sierra adventure games." + +%message 5 +"With your new body and ego, you are returned to + fight again the battles of Lost Wages!\n\n +(Now you know what we have to go through + every time you press that \"Restart\" key.)" + diff --git a/RM9.CG b/RM9.CG new file mode 100644 index 0000000..39092fb --- /dev/null +++ b/RM9.CG @@ -0,0 +1,261 @@ +[logics for room 9 -- rmDarkAlley +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + +%include "rm9.msg" +%include "gamedefs.h" + + +%define manOnScreen lf0 +%define manLeaving lf1 + +%object aMan 1 + + +if (initLog) + { + LoadView( vEgoDead); + LoadView( vEgoCollapsing); + LoadView( vEgoGettingBeaten); + LoadView( vMugger); + LoadView( vMuggerAttacking); + + LoadSound( mAlley); + + LoadPic( currentRoom); + DrawPic( currentRoom); + DiscardPic( currentRoom); + + AnimateObj( aMan); + IgnoreObjs( aMan); + SetView( aMan, vMugger); + SetLoop( aMan, FACING_LEFT); + SetCel( aMan, 1); + Position( aMan, 124, 131); + Draw( aMan); + StepSize( aMan, two); + Set( scriptDone); + Set( manOnScreen); + + if ((oldEdgeEgoHit == LEFT || + oldEdgeEgoHit == RIGHT)) + { + if (egoY < 158) + { + egoY = 158; + } + } + + if ((oldEdgeEgoHit == TOP || + oldEdgeEgoHit == BOTTOM)) + { + egoX = 77; + egoY = 167; + } + + PositionV( ego, egoX, egoY); + Draw( ego); + + ShowPic( ); + + Sound( mAlley, musicDone); + + Return( ); + + } [ end initLOG + + + +[***** +:handleInput +[***** + +if (haveInput) + { + Set( haveMatch); + if (script > 5) + { + Print( 4); + } + else + { + Print( 5) + } + } + + + +[***** +:noInput +[***** + +if (scriptDone) + { + Reset( scriptDone); + ++script; + + if (script == 1) + { + MoveObj( aMan, 112, 131, 2, scriptDone); + } + + if (script == 2) + { + FollowEgo( aMan, 8, scriptDone); + } + + if (script == 3) + { + Set( handsOff); + StopMotion( ego); + Set( programControl); + SetView( aMan, vMuggerAttacking); + GetPosn( aMan, x, y); + + if (x < egoX) + { + SetLoop( aMan, 1); + if (egoX > 12) + { + x = egoX; + x -= 13; + } + else + { + x = 0; + } + } + else + { + SetLoop( aMan, 0); + if (egoX < 140) + { + x = egoX; + x += 5; + } + else + { + x = 145; + } + } + + y = egoY; + SetCel( aMan, 0); + RepositionToV( aMan, x, y); + scriptCycles = 7; + } + + if (script == 4) + { + Erase( aMan); + Reset( manOnScreen); + + Set( keepCycling); + SetView( ego, vEgoGettingBeaten); + if (egoX > 5) + { + egoX -= 5; + } + else + { + egoX = 0; + } + if (egoY < 162) + { + egoY += 5; + } + else + { + egoY = 167; + } + RepositionToV( ego, egoX, egoY); + scriptTimer = 5; + } + + if (script == 5) + { + SetView( aMan, vMugger); + Draw( aMan); + Wander( aMan); + Set( manLeaving); + scriptTimer = 3; + } + + if (script == 6) + { + SetView( ego, vEgoCollapsing); + currentStatus = COLLAPSING; + CycleTime( ego, two); + EndOfLoop( ego, scriptDone); + } + + if (script == 6) + { + Print( 1); + scriptTimer = 3; + } + + if (script == 7) + { + Reset( keepCycling); + SetView( ego, vEgoDead); + currentStatus = RECYCLING; + SetCel( ego, 0); + if (egoX > 2) + { + egoX -= 3; + } + if (egoY < 160) + { + egoY += 7; + } + RepositionToV( ego, egoX, egoY); + + scriptTimer = 5; + } + + if (script == 8) + { + Print( 3); + Set( keepCycling); + CycleTime( ego, three); + EndOfLoop( ego, scriptDone); + } + + if (script == 9) + { + Reset( handsOff); + newRoom = rmWorkshop; + } + } + + +if (musicDone && manOnScreen) + { + Sound( mAlley, musicDone); + } + + +[***** +:exit [ test for leaving the room +[***** + +if (manLeaving && + edgeObjHit && + objHitEdge == aMan) + { + Reset( manLeaving); + Erase( aMan); + StopSound(); + } + +if (oldEdgeEgoHit == RIGHT && + edgeEgoHit == LEFT) {newRoom = previousRoom;} + +if (oldEdgeEgoHit == LEFT && + edgeEgoHit == RIGHT) {newRoom = previousRoom;} + +if (edgeEgoHit == BOTTOM && + (oldEdgeEgoHit == TOP || + oldEdgeEgoHit == BOTTOM)) {newRoom = previousRoom;} + diff --git a/RM9.MSG b/RM9.MSG new file mode 100644 index 0000000..76fa736 --- /dev/null +++ b/RM9.MSG @@ -0,0 +1,23 @@ +[messages for room 9 -- rmDarkAlley +[ "Leisure Suit Larry in the Land of the Lounge Lizards" +[ by Al Lowe + + + +%message 1 +"Larry, when are you gonna learn to stay out of those dark alleys!!" + +%message 2 +"" + +%message 3 +"\"Hey guys!! + He's screwed up again! + Dump this one down the tubes, and get him another body!\"" + +%message 4 +"Since you're dead, why are you talking?? Just hang on for the ride." + +%message 5 +"It appears he wants something -- YOU! Get out of here!" + diff --git a/SLOTS.H b/SLOTS.H new file mode 100644 index 0000000..060bfa7 --- /dev/null +++ b/SLOTS.H @@ -0,0 +1,33 @@ +[ +[ slots.h +[ +[ LEISURE SUIT LARRY IN THE LAND OF THE LOUNGE LIZARDS BLACKJACK HEADER +[ +[ Thursday, March 5, 1987 at 10:49 a.m. +[ + + + +%object aLights 1 +%object aWheel1 2 +%object aWheel2 3 +%object aWheel3 4 +%object aWinner 13 [ Animated objects. + + +%flag readyToLeave 200 +%flag readyToPlay 201 +%flag pulledHandle 202 +%flag showOdds 203 + + +%var bet 200 +%var wheel1 201 +%var wheel2 202 +%var wheel3 203 +%var multiple 204 +%var winnings 205 +%var winnerCycles 206 +%var function 207 + #define PAY_WINNER 1 + #define UPDATE_STATUS 2 diff --git a/SYSDEFS.H b/SYSDEFS.H new file mode 100644 index 0000000..b2d111d --- /dev/null +++ b/SYSDEFS.H @@ -0,0 +1,418 @@ +[ +[ sysdefs.h +[ +[ AL'S SYSDEFS +[ +[ February 25, 1987 +[ + + + +[************** ACTIONS **************] + +%action Return() 0 + +[Variable actions +%action Increment(VAR) 1 +%action Decrement(VAR) 2 +%action Assignn(VAR, NUM) 3 +%action Assignv(VAR, VAR) 4 +%action Addn(VAR, NUM) 5 +%action Addv(VAR, VAR) 6 +%action Subn(VAR, NUM) 7 +%action Subv(VAR, VAR) 8 +%action Lindirectv(VAR, VAR) 9 +%action Rindirect(VAR, VAR) 10 +%action Lindirectn(VAR, NUM) 11 + +%action increment(VAR) 1 +%action decrement(VAR) 2 +%action assignn(VAR, NUM) 3 +%action assignv(VAR, VAR) 4 +%action addn(VAR, NUM) 5 +%action addv(VAR, VAR) 6 +%action subn(VAR, NUM) 7 +%action subv(VAR, VAR) 8 +%action lindirectv(VAR, VAR) 9 +%action rindirect(VAR, VAR) 10 +%action lindirectn(VAR, NUM) 11 + +%action Set(FLAG) 12 +%action Reset(FLAG) 13 +%action Toggle(FLAG) 14 +%action SetV(VAR) 15 +%action ResetV(VAR) 16 +%action ToggleV(VAR) 17 + +[Logics +%action NewRoom(NUM) 18 +%action NewRoomV(VAR) 19 +%action LoadLogics(NUM) 20 +%action LoadLogicsV(VAR) 21 +%action Call(NUM) 22 +%action CallV(VAR) 23 + +[Pictures +%action LoadPic(VAR) 24 +%action DrawPic(VAR) 25 +%action ShowPic() 26 +%action DiscardPic(VAR) 27 +%action OverlayPic(VAR) 28 +%action ShowPriScreen() 29 + +[Views +%action LoadView(VIEW) 30 +%action LoadViewV(VAR) 31 +%action DiscardView(VIEW) 32 + +[Animated objects +%action AnimateObj(OBJECT) 33 +%action UnanimateAll() 34 +%action Draw(OBJECT) 35 +%action Erase(OBJECT) 36 +%action Position(OBJECT, NUM, NUM) 37 +%action PositionV(OBJECT, VAR, VAR) 38 +%action GetPosn(OBJECT, VAR, VAR) 39 +%action Reposition(OBJECT, VAR, VAR) 40 + +[Views of animated objects +%action SetView(OBJECT, VIEW) 41 +%action SetViewV(OBJECT, VAR) 42 +%action SetLoop(OBJECT, NUM) 43 +%action SetLoopV(OBJECT, VAR) 44 + %define FACING_RIGHT 0 + %define FACING_LEFT 1 + %define FACING_FRONT 2 + %define FACING_BACK 3 +%action FixLoop(OBJECT) 45 +%action ReleaseLoop(OBJECT) 46 +%action SetCel(OBJECT, NUM) 47 +%action SetCelV(OBJECT, VAR) 48 +%action LastCel(OBJECT, VAR) 49 +%action CurrentCel(OBJECT, VAR) 50 +%action CurrentLoop(OBJECT, VAR) 51 +%action CurrentView(OBJECT, VAR) 52 +%action NumberOfLoops(OBJECT, VAR) 53 + +[Priority control of animated objects +%action SetPriority(OBJECT, NUM) 54 +%action SetPriorityV(OBJECT, VAR) 55 +%action ReleasePriority(OBJECT) 56 +%action GetPriority(OBJECT, VAR) 57 + +[Attributes of animated objects +%action StopUpdate(OBJECT) 58 +%action StartUpdate(OBJECT) 59 +%action ForceUpdate(OBJECT) 60 +%action IgnoreHorizon(OBJECT) 61 +%action ObserveHorizon(OBJECT) 62 +%action SetHorizon(NUM) 63 +%action ObjectOnWater(OBJECT) 64 +%action ObjectOnLand(OBJECT) 65 +%action ObjectOnAnything(OBJECT) 66 +%action IgnoreObjs(OBJECT) 67 +%action ObserveObjs(OBJECT) 68 +%action Distance(OBJECT, OBJECT, VAR) 69 + +[Cycling of animated objects +%action StopCycling(OBJECT) 70 +%action StartCycling(OBJECT) 71 +%action NormalCycle(OBJECT) 72 +%action EndOfLoop(OBJECT, FLAG) 73 +%action ReverseCycle(OBJECT) 74 +%action ReverseLoop(OBJECT, FLAG) 75 + %define BeginningOfLoop ReverseLoop +%action CycleTime(OBJECT, VAR) 76 + %define CycleFrequency CycleTime + +[Motion of animated objects +%action StopMotion(OBJECT) 77 +%action StartMotion(OBJECT) 78 +%action StepSize(OBJECT, VAR) 79 +%action StepTime(OBJECT, VAR) 80 + %define StepFrequency StepTime + +%action MoveObj(OBJECT, NUM, NUM, NUM, FLAG) 81 +%action MoveObjV(OBJECT, VAR, VAR, VAR, FLAG) 82 + [object, x, y, stepsize (preferably 0), flag to set upon arrival +%action FollowEgo(OBJECT, NUM, FLAG) 83 +%action Wander(OBJECT) 84 +%action NormalMotion(OBJECT) 85 +%action SetDir(OBJECT, VAR) 86 +%action GetDir(OBJECT, VAR) 87 + +%action IgnoreBlocks(OBJECT) 88 +%action ObserveBlocks(OBJECT) 89 +%action Block(NUM, NUM, NUM, NUM) 90 +%action Unblock() 91 + +[Inventory objects +%action Get(OBJECT) 92 +%action GetV(VAR) 93 +%action Drop(OBJECT) 94 +%action Put(OBJECT, VAR) 95 +%action PutV(VAR, VAR) 96 +%action GetRoomV(VAR, VAR) 97 + +[Sounds +%action LoadSound(NUM) 98 +%action Sound(NUM, FLAG) 99 +%action StopSound() 100 + +[Screen Display +%action Print(MSGNUM) 101 +%action PrintV(VAR) 102 +%action Display(NUM, NUM, MSGNUM) 103 + [row, col, message +%action DisplayV(VAR, VAR, VAR) 104 + [row, col, message +%action ClearLines(NUM, NUM, NUM) 105 + [top row, bottom row, attribute +%action TextScreen() 106 +%action Graphics() 107 +%action SetCursorChar(MSGNUM) 108 +%action SetTextAttribute(NUM, NUM) 109 +%action ShakeScreen(NUM) 110 + +[Screen handling +%action ConfigureScreen(NUM, NUM, NUM) 111 +[ picture row, input row, status row +%action StatusLineOn() 112 +%action StatusLineOff() 113 + +[String handling +%action SetString(NUM, MSGNUM) 114 +%action GetString(NUM, MSGNUM, NUM, NUM, NUM) 115 + [string#, prompt, row, col, max length +%action WordToString(NUM, NUM) 116 + [word#, string# +%action Parse(NUM) 117 +%action GetNum(MSGNUM, VAR) 118 + +[Input handling +%action PreventInput() 119 +%action AcceptInput() 120 +%action SetKey(NUM, NUM, NUM) 121 + %define JOYSTICK_LOW_BYTE 1 + %define BUTTON_0 1 + %define BUTTON_1 2 + %define BUTTON_0_DOUBLE 3 + %define BUTTON_1_DOUBLE 4 + +[Add to picture +%action AddToPic(VIEW, NUM, NUM, NUM, NUM, NUM, NUM) 122 + [view, loop, cel, x, y, obj priority, box priority +%action AddToPicV(VAR, VAR, VAR, VAR, VAR, VAR, VAR) 123 + [view, loop, cel, x, y, obj priority, box priority + %define AddToPicture AddToPic + %define AddToPictureV AddToPicV + +[User requested actions +%action Status() 124 +%action SaveGame() 125 +%action RestoreGame() 126 +%action InitDisk() 127 +%action RestartGame() 128 + +[Show object view +%action ShowObj(VIEW) 129 + +[Miscellaneous +%action Random(NUM, NUM, VAR) 130 +%action ProgramControl() 131 +%action PlayerControl() 132 +%action ObjStatusV(VAR) 133 +%action Quit(NUM) 134 + [0 = prompt + [1 = immediate +%action ShowMem() 135 +%action Pause() 136 +%action EchoLine() 137 +%action CancelLine() 138 +%action InitJoy() 139 +%action ToggleMonitor() 140 +%action Version() 141 +%action ScriptSize(NUM) 142 +%action SetGameId(MSGNUM) 143 +%action Log(MSGNUM) 144 +%action SetScanStart() 145 +%action ResetScanStart() 146 + +%action RepositionTo(OBJECT, NUM, NUM) 147 +%action RepositionToV(OBJECT, VAR, VAR) 148 + +%action TraceOn() 149 +%action TraceInfo(NUM, NUM, NUM) 150 + [logic #, position of top of window, number of lines +%action PrintAt(MSGNUM, NUM, NUM, NUM) 151 + [msg #, row, col, width +%action PrintAtV(VAR, NUM, NUM, NUM) 152 + [msg #, row, col, width +%action DiscardViewV(VAR) 153 +%action ClearTextRect(NUM, NUM, NUM, NUM, NUM) 154 + [top, left, bottom, right, attribute +%action SetUpperLeft(NUM, NUM) 155 [x, y +%action SetMenu(MSGNUM) 156 + [menu name] +%action SetMenuItem(MSGNUM, NUM) 157 + [item name, controller number] +%action SubmitMenu() 158 + [terminate menu collecting] +%action EnableItem(NUM) 159 + [enable item corresponding to controller] +%action DisableItem(NUM) 160 + [disable item corresponding to controller] +%action MenuInput() 161 + [pause game; display menus, at last choice +%action ShowObjV( VAR) 162 + +#action OpenDialogue() 163 +#action CloseDialogue() 164 + +#action MulN(VAR, NUM) 165 +#action MulV(VAR, VAR) 166 +#action DivN(VAR, NUM) 167 +#action DivV(VAR, VAR) 168 + +#action CloseWindow() 169 + + + + +[************** TESTS **************] + +%test Equaln(VAR, NUM) 1 +%test Equalv(VAR, VAR) 2 +%test Lessn(VAR, NUM) 3 +%test Lessv(VAR, VAR) 4 +%test Greatern(VAR, NUM) 5 +%test Greaterv(VAR, NUM) 6 +%test Isset(FLAG) 7 +%test IssetV(VAR) 8 +%test Has(OBJECT) 9 +%test ObjInRoom(OBJECT, VAR) 10 +%test Posn(OBJECT, NUM, NUM, NUM, NUM) 11 +%test Controller(NUM) 12 +%test HaveKey() 13 +%test Said(WORDLIST) 14 +%test CompareStrings(NUM, NUM) 15 +%test ObjInBox(OBJECT, NUM, NUM, NUM, NUM) 16 +%test CenterPosn(OBJECT, NUM, NUM, NUM, NUM) 17 +%test RightPosn(OBJECT, NUM, NUM, NUM, NUM) 18 + +%test equaln(VAR, NUM) 1 +%test equalv(VAR, VAR) 2 +%test lessn(VAR, NUM) 3 +%test lessv(VAR, VAR) 4 +%test greatern(VAR, NUM) 5 +%test greaterv(VAR, NUM) 6 +%test isset(FLAG) 7 +%test isset.v(VAR) 8 +%test has(OBJECT) 9 +%test obj.in.room(OBJECT, VAR) 10 +%test posn(OBJECT, NUM, NUM, NUM, NUM) 11 +%test controller(NUM) 12 +%test have.key() 13 +%test said(WORDLIST) 14 +%test compare.strings(NUM, NUM) 15 +%test obj.in.box(OBJECT, NUM, NUM, NUM, NUM) 16 +%test center.posn(OBJECT, NUM, NUM, NUM, NUM) 17 +%test right.posn(OBJECT, NUM, NUM, NUM, NUM) 18 + + + +[************** VARS ************** + +%var currentRoom 0 +%var previousRoom 1 +%var edgeEgoHit 2 + %define NOT_HIT 0 + %define TOP 1 + %define RIGHT 2 + %define BOTTOM 3 + %define LEFT 4 +%var currentScore 3 +%var objHitEdge 4 +%var edgeObjHit 5 +%var egoDir 6 + %define EGO_STOPPED 0 + %define EGO_UP 1 + %define EGO_UP_RIGHT 2 + %define EGO_RIGHT 3 + %define EGO_DOWN_RIGHT 4 + %define EGO_DOWN 5 + %define EGO_DOWN_LEFT 6 + %define EGO_LEFT 7 + %define EGO_UP_LEFT 8 +%var maxScore 7 +%var memoryLeft 8 +%var unknownWord 9 +%var animationInterval 10 +%var elapsedSeconds 11 +%var elapsedMinutes 12 +%var elapsedHours 13 +%var elapsedDays 14 +%var doubleClickDelay 15 +%var currentEgo 16 +%var errorNumber 17 +%var errorParameter 18 +%var lastChar 19 +%var machineType 20 + #define PC 0 [PC, compatibles + #define JR 1 [PCjr + #define TANDY 2 [Tandy 1000 + #define APPLEII 3 [Apple IIe, IIc + #define ST 4 [Atari ST + #define AMIGA 5 [Amiga + #define MAC 6 [Fat Mac, Mac Plus + #define CORTLAND 7 [? +%var printTimeout 21 [in 1/2 second increments +%var numberOfVoices 22 [in this machine's sound chip +%var attenuation 23 [0 - 15 == loud - off +%var inputLength 24 [max length of user input allowed +%var selectedObject 25 [obj # selected from status screen +%var monitorType 26 + %define COMPOSITE 0 + %define RGB 1 + %define MONO 2 + %define EGA 3 + + + +[************** FLAGS ************** + +%flag onWater 0 +%flag egoHidden 1 +%flag haveInput 2 +%flag hitSpecial 3 +%flag haveMatch 4 +%flag initLog 5 +%flag restartInProgress 6 +%flag noScript 7 +%flag enableDoubleClick 8 +%flag soundOn 9 +%flag enableTrace 10 +%flag hasNoiseChannel 11 [set if machine has noise channel +%flag restoreInProgress 12 +%flag enableObjectSelect 13 [set if ok to choose from status screen +%flag enableMenu 14 +%flag leaveWindow 15 +%flag noPromptRestart 16 + + + +[************ CONSTANTS **************] + +[ screen boundaries: + %define TOP_EDGE 0 + %define BOTTOM_EDGE 167 + %define LEFT_EDGE 0 + %define RIGHT_EDGE 159 + %define SCREEN_TOP 0 + %define SCREEN_BOTTOM 167 + %define SCREEN_LEFT 0 + %define SCREEN_RIGHT 159 + %define FALL_THROUGH 200 [makes ego move off screen + + %define MAX_FLAG_VALUE 255 [maximum value storable + %define ERROR -1 diff --git a/VIEWS.H b/VIEWS.H new file mode 100644 index 0000000..b26a36d --- /dev/null +++ b/VIEWS.H @@ -0,0 +1,189 @@ +[ +[ views.h +[ +[ LEISURE SUIT LARRY IN THE LAND OF THE LOUNGE LIZARDS VIEW DEFINITIONS +[ +[ Monday, April 6, 1987 at 9:01 p.m. +[ Thursday, May 14, 1987 at 10:23 p.m. +[ + + + +[************* VIEWS ************] +%view vEgo 0 +%view vEgoCollapsing 1 +%view vEgoUndressing 2 +%view vEgoDrowning 3 +%view vEgoDead 4 +%view vEgoBreathSpray 5 +%view vEgoOnRope 6 +%view vEgoInHotTub 7 +%view vEgoWearingTowel 8 +%view vEgoSittingOnBed 9 +%view vEgoLeavingDumpster 10 +[ %view 11 +%view vEgoGettingBeaten 12 +%view vEgoDiscoing1 13 +%view vEgoFlingingFawn 14 +%view vEgoOnToilet 15 +%view vEgoWithHooker 16 +%view vEgoPushingElevator 17 +%view vEgoWithFawnRm41 18 +[ %view 19 +%view vEgoFalling 20 +%view vEgoMissingGroin 21 +%view vEgoRoadKill 22 +#define ROAD_KILL 22 + +[ %view 23 +%view vEgoTiedOnBed 24 +[ %view 25 +%view vEgoLeavingWindow 26 +%view vEgoIntoDumpster 27 +%view vEgoOnLadder 28 +%view vEgoDiscoing2 29 +%view vEgoSittingLounge 30 +%view vEgoSunrise 31 +%view vSunrise 32 +%view vSunriseBang 33 +[ %view vEgo 34 +[ %view vEgo 35 +[ %view vEgo 36 +[ %view vEgo 37 +%view vCreditNames4 38 +%view vCreditNames1 39 +%view vCreditNames2 40 +%view vCreditNames3 41 +%view vTitles 42 +%view vTitleDoll 43 +%view vTitleEgo 44 +%view vKen 45 +[ %view 46 +%view vRm14Drunk 47 +%view vTransparentPixel 48 +%view vBartender 49 +%view vBarExterior 50 [ various lights, etc. +%view vBarInterior 51 +%view vBarDoor 52 +%view vBarFlys 53 [ 2 single cels + 1 girl loop +%view vBarGreaser 54 +%view vPainting 55 +%view vPimpDoor 56 +%view vRm14Stuff 57 +%view vToiletDoor 58 +%view vToiletOverflowing 59 +%view vToiletFountain 60 +%view vRm16Door 61 +%view vPimp 62 +%view vPimpBlockingStairs 63 +%view vTVOn 64 +%view vHookerFace 65 +%view vHookerWindow 66 +%view vHooker 67 +%view vCandy 68 +%view vRing 69 +[ %view 70 +[ %view 71 +%view vAlleyStuff 72 +%view vMugger 73 +%view vMuggerAttacking 74 +%view vDog 75 [ if dog below ego +%view vDogPissing 76 +%view vCop 77 +%view vFlasher 78 +%view vDogPissing2 79 [ if dog behind ego +%view vTaxi 80 +%view vTaxiDriver 81 +%view vTaxiMeter 82 +%view vTaxiWindshieldMovie 83 +[ %view 84 +%view vDeathCar 85 +[ %view 86 +[ %view 87 +%view vEgoAndFawnSitting 88 +%view vFawnFace 89 +%view vDiscoExterior 90 +%view vDiscoBouncer 91 +[ %view 92 +%view v7_11Bum 93 +%view vDiscoCustomers 94 +[ %view 95 +[ %view 96 +[ %view 97 +%view vFawn 98 +%view vFawnDancing 99 +%view vDiscoInterior 100 + +[Views 101 - 129 are "Show object" inventory views, defined in "IV_VIEWS.H" + +%view v7_11Exterior 130 +[ %view 131 +%view v7_11Iranian 132 +%view v7_11Customers 133 [ 4 heads +%view v7_11Interior 134 +%view vMagazines 135 +%view vCasinoExterior 136 +[ %view 137 +%view vCasinoManInBarrel 138 +%view vCasinoInterior 139 +[ %view 140 +%view vCasinoPatrons 141 +[ %view 142 +[ %view 143 +[ %view 144 +[ %view 145 +%view vMONOCardsShuffling 146 +%view vSlots 147 +%view vSlotsWinner 148 +%view vNonWinner 149 +%view vWinner 150 +%view vCardsShuffling 151 +%view vClubs 152 +%view vSpades 153 +%view vHearts 154 +%view vDiamonds 155 +%view vBlankCard 156 +%view vCardBack 157 +%view vLoungeComedian 158 +%view vLoungeDancers 159 +[ %view 160 +[ %view 161 +%view vLoungeCandles 162 +%view vDrummer 163 +%view vAshtray 164 +%view vElevator 165 +#define L_EMPTY 0 +#define L_FLOOR 1 +#define L_DOORS 2 +#define L_WITH_EGO 3 + +%view vReceptionist 166 +%view vReceptionistFace 167 +%view vElevatorDoors 168 +%view vBedroomDoors 169 +%view vChapelExterior 170 +%view vChapelInterior 171 +%view vChapelMinister 172 +[ %view 173 +%view vElevatorNumbers 174 +%view vHoneymoonHallwayDoor 175 +%view vHoneymoonSuiteStuff 176 +%view vCloseupBubbles 177 +%view vFireworks 178 +%view vRm44ElevatorDoors 179 +%view vEveFace 180 +%view vEveInTub 181 +%view vEve 182 + #define L_WALKING_RIGHT 0 + #define L_SITTING_ON_BED 1 + #define L_AFTER_SEX 2 + +%view vHotTubBubbles 183 +%view vDollDeflating 184 +%view vWorkshopDeadEgo 185 [ death workshop views +%view vWorkshopStuff 186 +%view vWorkshopScientist 187 +%view vWorkshopMen 188 +%view vWorkshopLogo 189 +%view vWorkshopDroid 190 + diff --git a/WORDS.TOK b/WORDS.TOK new file mode 100644 index 0000000..384d292 Binary files /dev/null and b/WORDS.TOK differ diff --git a/WORDS.TXT b/WORDS.TXT new file mode 100644 index 0000000..389903f --- /dev/null +++ b/WORDS.TXT @@ -0,0 +1,1444 @@ +[ +[ words.txt +[ +[ LEISURE-SUIT LARRY IN THE LAND OF THE LOUNGE LIZARDS WORD LIST +[ +[ Sunday, May 31, 1987 at 8:38 p.m. +[ Wednesday, June 17, 1987 at 11:32 a.m. + +[ +[.i = .ignore +[.d = .define +[.s = .synonym +[ +[ "A" and "I" are now automatically ignored. +[ +[.d anyword 1 [ anyword must remain as word #1 && undefined. + +.d rol 9999 + + + +.i an [ articles +.i the + +.i mine [ pronouns +.i my +.i we +.i us +.i it +.i its +.i this +.i his +.i hers +.i that +.i these +.i those +.i would + +.i around [ prepositions +.i another +.i more +.i about +.i of +.i oh +.i if +.i to +.i is +.i in +.i through +.i into +.i at +.i have +.i been +.i until +.i for +.i every +.i and +.i will + +.i hot [ adjectives +.i cold +.i employee +.i till +.i good +.i bad +.i black +.i security +.i wedding +.i marriage +.i naugahyde +.i membership +.i beautiful +.i hundred +.i ten +.i twenty +.i thirty +.i lovely +.i quiki +.i mart +.i wed +.i cute +.i whoopie +.i cheap +.i plastic +.i gorgeous +.i front +.i little +.i big +.i small +.i large +.i young +.i utility +.i spanish +.i sleazy +.i funky +.i quickie +.i main +.i ajax +.i convenience +.i grocery +.i living +.i unit +.i long$stemmed +.i trench +.i red +.i inflatable +.i glass$of +.i bottle$of +.i son$of$a +.i shit$for + +.i slowly [ adverbs +.i quickly +.i soon +.i later +.i hurry +.i please +.i some +.i what +.i want +.i when +.i now +.i then +.i why +.i ken +.i sent + + + + +.d look 2 [ Real words start here. +.s show look +.s see look +.s read look +.s examine look +.s view look +.s look$on look +.s looking look +.s gaze look +.s stare look + +.d look$in 3 +.s look$inside look$in +.s look$into look$in + +.d do 4 + +.d up 5 + +.d down 6 + +.d dance 7 +.s get$down dance +.s dancing dance +.s date dance + +.d flush 8 + +.d balcony 9 +.s fire$escape balcony +.s railing balcony +.s rail railing + +.d lobby 10 + +.d abuse 11 +.s play$with abuse + +.d suite 12 +.s honeymoon$suite suite + +.d penthouse 13 +.s penthouse$suite penthouse + +.d tub 14 +.s spa tub +.s pool tub +.s jacuzzi tub +.s hottub tub +.s hot$tub tub + +.d marry 15 +.s married marry +.s propose marry + +.d play 16 +.s playing play + +.d get 17 +.s take get +.s pick get +.s pick$up get +.s grab get +.s catch get +.s hail get +.s whistle get +.s hey get +.s yo get + +.d bye 18 +.s goodbye bye +.s good$bye bye +.s so$long bye + +.d button 19 +.s knob button + +.d bedroom 20 + +.d phone 21 +.s telephone phone + +.d hall 22 +.s hallway hall + +.d drinks 23 +.s round$of$drinks drinks +.s round drinks + +.d peephole 24 +.s hole peephole + +.d cigarette 25 +.s cigarettes cigarette +.s smokes cigarette + +.d street 26 + +.d yes 27 +.s y yes +.s ok yes + +.d no 28 +.s n no + +.d wallet 29 +.s billfold wallet + +.d bag 30 + +.d floor 31 +.s ground floor +.s earth floor +.s sidewalk floor +.s curb floor + +.d nothing 32 + +.d stair 33 +.s stairs stair +.s upstairs stair +.s steps stair +.s stairway stair +.s staircase stair + +.d window 34 +.s glass window +.s glasses window +.s pane window +.s windows window + +.d body 35 + +.d open 36 +.s lift open +.s raise open +.s increase open + +.d move 37 +.s shove move +.s push move +.s pull move +.s press move +.s turn move +.s replace move + +.d go 38 +.s enter go +.s walk go +.s exit go +.s leave go +.s get$out go +.s get$in go +.s get$into go +.s board go + +.d climb 39 +.s climb$on climb + +.d count 40 + +.d talk 41 +.s speak talk +.s say talk +.s call talk +.s ask talk + +.d hi 42 +.s hello hi + +.d mirror 43 + +.d trash 44 +.s garbage trash +.s garbage$bin trash +.s trash$bin trash +.s trash$can trash +.s dumpster trash +.s rubbish trash +.s bin trash +.s can trash + +.d bed 45 + +.d ledge 46 +.s window$ledge ledge + +.d under 47 +.s below under +.s beneath under + +.d over 48 +.s top$of over +.s above over +.s across over + +.d present 49 + +.d cabinet 50 +.s cupboard cabinet +.s closet cabinet +.s wardrobe cabinet + +.d drawer 51 +.s drawers drawer + +.d rug 52 +.s carpet rug +.s bear rug +.s bearskin rug + +.d out 53 +.s outside out + +.d key 54 + +.d last 55 + +.d put 56 +.s hide put +.s conceal put +.s set put +.s place put +.s return put +.s drop put +.s add put +.s give put +.s serve give +.s offer give +.s loan give + +.d lie 57 +.s lie$down lie + +.d shake 58 +.s wave shake +.s point shake +.s aim shake +.s swing shake +.s touch shake + +.d top 59 + +.d empty 60 +.s remove empty +.s take$off remove +.s drain empty +.s spill empty +.s pour empty + +.d find 61 +.s search find +.s locate find +.s where find +.s wheres find + +.d behind 62 +.s back behind + +.d door 63 +.s doors door +.s doorway door +.s doorways door + +.d clothes 64 +.s clothing clothes +.s underwear clothes +.s bra clothes +.s bras clothes +.s underpants clothes +.s pants clothes +.s panties clothes +.s coat clothes +.s trenchcoat clothes +.s raincoat clothes +.s stockings clothes +.s nylons clothes +.s pocket clothes +.s pockets clothes +.s lingerie clothes + +.d lock 65 +.s latch lock +.s bolt lock + +.d break 66 +.s smash break +.s shatter break +.s tear break +.s rip break +.s destroy break +.s bust break + +.d dresser 67 +.s bureau dresser +.s chest dresser +.s waist dresser + +.d smoke 68 + +.d hear 69 +.s listen hear +.s hearing hear +.s listening hear + +.d table 70 +.s desk table +.s tables table + +.d shelf 71 +.s shelves shelf +.s rack shelf + +.d book 72 +.s books book +.s page book + +.d thanks 73 +.s thank$you thanks + +.d name 74 + +.d casino 75 +.s hotel casino + +.d crate 76 +.s crates crate +.s box crate +.s boxes crate + +.d long 77 +.s length long + +.d jump 78 +.s leap jump + +.d girl 79 +.s girls girl +.s dealer girl +.s fawn girl +.s fawns girl +.s faith girl +.s faiths girl +.s guard girl +.s woman girl +.s women girl +.s blond girl +.s blonde girl +.s eve girl +.s eves girl +.s hooker girl +.s hookers girl +.s whore girl +.s whores girl +.s prostitute girl +.s prostitutes girl +.s slut girl +.s lady girl +.s broad girl +.s she girl +.s her girl + +.d fireplace 80 + +.d man 81 +.s men man +.s guy man +.s guys man +.s storekeeper man +.s shopkeeper man +.s clerk man +.s bum man +.s pimp man +.s dude man +.s drunk man +.s wino man +.s cabbie man +.s cab$driver man +.s driver man +.s bouncer man +.s comic man +.s comedian man +.s minister man +.s preacher man +.s him man +.s he man +.s flasher man +.s pervert man +.s steve man +.s cop man +.s policeman man + +.d start 82 +.s begin start + +.d light 83 +.s lite light +.s ignite light +.s candle light +.s candles light +.s burn light +.s lamp light + +.d fire 84 +.s flame fire +.s flames fire + +.d pot 85 + +.d counter 86 +.s meter counter + +.d mouth 87 +.s lips mouth +.s smile mouth + +.d basket 88 +.s baskets basket +.s wastebasket basket +.s waste$basket basket + +.d buy 89 +.s purchase buy +.s spend buy +.s order buy +.s pay buy + +.d ceiling 90 + +.d wine 91 +.s champagne wine + +.d beer 92 + +.d food 93 +.s meal food +.s gum food + +.d bread 94 + +.d apple 95 + +.d steal 96 +.s rob steal +.s swipe steal + +.d eat 97 +.s swallow eat +.s drink eat +.s taste eat +.s lick eat +.s suck eat +.s bite eat + +.d there 98 +.s here there + +.d knife 99 +.s pocket$knife knife + +.d cut 100 +.s slice cut + +.d basin 101 +.s sink basin +.s wash$basin basin + +.d broom 102 + +.d sit 103 +.s sit$down sit +.s rest sit + +.d town 104 +.s city town + +.d business 105 + +.d hit 106 +.s punch hit +.s strike hit +.s kick hit +.s beat hit +.s hurt hit +.s pound hit + +.d knock 107 +.s bang knock +.s knock$on knock + +.d lid 108 +.s cork lid +.s stopper lid +.s cover lid +.s cap lid + +.d jar 109 +.s jars jar +.s bottle jar +.s bottles jar + +.d tv 110 +.s television tv + +.d wear 111 +.s put$on wear + +.d ashtray 112 +.s ash$tray ashtray +.s container ashtray + +.d bill 113 +.s tab bill + +.d card 114 +.s cards card +.s pass card +.s disco$pass card + +.d ladder 115 + +.d vial 116 +.s vials vial +.s capsule vial +.s capsules vial + +.d deal 117 +.s bargain deal +.s negotiate deal + +.d flower 118 +.s flowers flower +.s rose flower + +.d elevator 119 + +.d machine 120 + +.d paper 121 +.s newspaper paper + +.d ken$sent$me 122 +.s al$sent$me ken$sent$me + +.d wake 123 +.s wake$up wake + +.d kill 124 +.s murder kill +.s stab kill +.s fight kill + +.d head 125 + +.d throw 126 +.s toss throw + +.d smell 127 +.s sniff smell + +.d heat 128 +.s cook heat +.s warm heat +.s boil heat + +.d cup 129 + +.d ball 130 +.s balls ball +.s nuts ball +.d gimme 131 + +.d chair 132 +.s chairs chair +.s seat chair +.s stool chair +.s sofa chair +.s couch chair +.s pew chair +.s pews chair +.s bench chair +.s benches chair + +.d fur 133 + +.d number 134 + +.d skin 135 + +.d inside 136 + +.d breath 137 + +.d hand 138 +.s hands hand +.s fingers hand +.s handful hand +.s hand$full hand + +.d corner 139 + +.d wall 140 +.s walls wall +.s sign wall +.s graffiti wall +.s brick wall +.s bricks wall + +.d make 141 + +.d room 142 +.s area room +.s lounge room +.s backroom room + +.d furniture 143 +.s furnishings furniture + +.d use 144 +.s with use +.s using use + +.d money 145 +.s dollars money +.s dollar money +.s bucks money +.s coin money +.s cash money + +.d status 146 + +.d hold 147 +.s carry hold +.s reach hold +.s grasp hold +.s lean hold +.s hang hold + +.d close 148 +.s shut close + +.d me 149 +.s self me +.s myself me +.s i'm me +.s larry me +.s larry$laffer me + +.d from 150 + +.d unlock 151 +.s unlatch unlock +.s unbolt unlock + +.d people 152 +.s customers people +.s gamblers people +.s dancers people + +.d rub 153 +.s pet rub +.s pat rub +.s feel rub +.s caress rub +.s fondle rub +.s pinch rub +.s stroke rub + +.d kiss 154 +.s hug kiss +.s embrace kiss + +.d bartender 155 +.s lefty bartender + +.d cab 156 +.s taxi cab +.s taxicab cab +.s car cab +.s cars cab + +.d sleep 157 +.s sleeping sleep + +.d pills 158 +.s aphrodisiac pills +.s fly pills +.s pill pills +.s pill$bottle pills + +.d hammer 159 + +.d water 160 +.s liquid water + +.d rope 161 +.s ropes rope + +.d ring 162 +.s diamond$ring ring + +.d blow 163 +.s blow$up blow +.s inflate blow + +.d untie 164 +.s unfasten untie +.s release untie +.s let$go untie +.s let$go$of untie + +.d finger 165 + +.d booze 166 +.s rum booze +.s rye booze +.s scotch booze +.s liquor booze +.s bourbon booze +.s gin booze +.s vodka booze +.s pina$colada booze +.s mai$tai booze +.s white$russian booze + +.d remote 167 +.s remote$control remote +.s control remote +.s TV$control remote + +.d rubber 168 +.s rubbers rubber +.s lubber rubber +.s lubbers rubber +.s condom rubber +.s condoms rubber +.s prophylactic rubber +.s prophylactics rubber +.s protection rubber +.s sheath rubber + +.d whiskey 169 +.s whisky whiskey +.s shot whiskey + +.d fill 170 + +.d toilet 171 +.s bathroom toilet +.s restroom toilet +.s bowl toilet +.s john toilet + +.d away 172 + +.d mat 173 +.s doormat mat +.s welcome$mat mat + +.d radio 174 + +.d notes 175 +.s note notes + +.d wash 176 +.s clean wash +.s brush wash +.s rinse wash + +.d candy 177 +.s box$of$candy candy +.s candy$box candy + +.d doll 178 +.s dolls doll + +.d magazine 179 +.s jugs magazine +.s jugs$magazine magazine +.s magazines magazine +.s centerfold magazine + +.d used 180 +.s old used + +.d building 181 +.s store building +.s shop building + +.d alley 182 + +.d one 183 +.d two 184 +.d three 185 +.d four 186 +.d five 187 +.d six 188 +.d seven 189 +.d eight 190 +.d nine 191 + +.d stand 192 +.s rise stand +.s get$up stand + +.d change 193 +.s switch change +.s alter change + +.d channel 194 +.s station channel +.s stations channel +.s channels channel + +.d jukebox 195 +.s juke$box jukebox +.s jute$box jukebox +.s jutebox jukebox +.s juke jukebox +.s jute jukebox + +.d wipe 196 +.s dry wipe + +.d tie 197 +.s fasten tie +.s attach tie + +.d line 198 +.s clothesline line +.s clothes$line line + +.d lower 199 +.s decrease lower + +.d spray 200 +.s breath$spray spray +.s breathspray spray + +.d hanging 201 + +.d action 202 + +.d tavern 203 +.s bar tavern +.s leftys tavern + +.d disco 204 + +.d chapel 205 +.s parlor chapel +.s church chapel + +.d lint 206 +.s fuzz lint +.s pocket$lint lint + +.d blackjack 207 +.s twenty$one blackjack +.s black$jack blackjack + +.d slot 208 +.s slot$machine slot +.s slot$machines slot +.s slots slot + +.d dog 209 +.s doggy dog +.s pup dog +.s puppy dog + +.d along 210 + +.d sing 211 + +.d side 212 + +.d pole 213 +.s telephone$pole pole +.s light$pole pole + +.d deliver 214 + +.d smooth 215 + +.d ribbed 216 +.s libbed ribbed + +.d colored 217 + +.d plain 218 + +.d lubricated 219 + +.d rough 220 +.s roughcut rough + +.d striped 221 + +.d plaid 222 + +.d peppermint 223 + +.d spearmint 224 + +.d stage 225 + +.d plant 226 +.s plants plant +.s bush plant +.s bushes plant +.s planter plant +.s planters plant +.s dirt plant + +.d heckle 227 +.s boo heckle +.s hiss heckle + +.d music 228 +.s sound music +.s sounds music +.s song music +.s songs music +.s record music +.s recording music +.s tune music + +.d cola 229 +.s dwinkies cola +.s wallowars cola +.s loritos cola +.s coffee cola +.s junk$food cola + +.d loosen 230 + +.d bet 231 +.s wager bet +.s gamble bet +.d handle 232 +.s lever handle + +.d double 233 + +.d split 234 +.s split$pair split + +.d surrender 235 + +.d rules 236 +.s rule rules +.s house$rules rules + +.d new 237 + +.d odds 238 + +.d towel 239 +.s swim$suit towel +.s swimming$suit towel +.s bikini towel + +.d lost 240 + +.d moose 241 +.s moosehead moose + +.d love 242 + +.d room$service 243 + +.d naked 244 +.s nude naked +.s strip naked +.s undress naked +.s undressed naked + +.d dress 245 +.s dressed dress + +.d way 246 + +.d painting 247 +.s paintings painting +.s picture painting +.s pictures painting +.s art painting +.s artwork painting +.s art$work painting +.s artworks painting +.s art$works painting + +.d fan 248 +.s ceiling$fan fan + +.d barrel 249 + +.d you 250 +.s your you +.s youre you +.s yours you +.s yourself you + +.d fireplug 251 +.s fire$plug fireplug +.s fire$hydrant fireplug +.s hydrant fireplug + +.d enjoy 252 +.s like enjoy + +.d dj 253 +.s disc$jockey dj + +.d garden 254 +.s roof garden +.s roof$top garden +.s rooftop garden +.s terrace garden + +.d gun 255 +.s guns gun +.s pistol gun +.s pistols gun +.s weapon gun +.s weapons gun + +.d time 256 + +.d on 257 +.s onto on +.s on$to on + +.d off 258 + +.d fence 259 + +.d sky 260 + +.d tank 261 + +.d altar 262 + +.d person 263 +.s player person + +.d drummer 264 + +.d radiator 265 + +.d watch 266 +.s wrist$watch watch +.s wristwatch watch +.s bracelet watch + +.d waiter 267 +.s waitress waiter + +.d heart 268 + +.d spit 269 +.s expectorate spit + +.d come 270 + +.d yell 271 +.s scream yell +.s screams yell +.s shout yell +.s holler yell + +.d dive 272 +.s muff$dive dive + +.d underwater 273 +.s under$water underwater + +.d laugh 274 + +.d piece 275 + +.d establish$eye$contact 276 + +.d vows 277 + +.d bucket 278 +.s wine$bucket bucket +.s ice$bucket bucket + +.d leg 279 +.s legs leg +.s ankle leg +.s ankles leg +.s thigh leg +.s thighs leg +.s calf leg +.s calves leg + +.d bubbles 280 +.s jets bubbles + +.d credit$card 281 +.s credit$cards credit$card + +.d pillow 282 + +.d home 283 + +.d answer 284 + +.d dial 285 + +.d tip 286 + +.d east 287 + +.d west 288 + +.d pause 289 +.s pause$game pause + +.d password 290 + +.d suit 291 +.s leisure$suit suit + +.d bribe 292 + +.d cooler 293 +.s refrigerator cooler +.s icebox cooler + +.d operator 294 +.s information operator +.s directory$assistance operator + +.d clap 295 +.s applaud clap +.s cheer clap + +.d face 296 + +.d eyes 297 + +.d hair 298 + +.d flirt 299 +.s wink flirt + +.d deflate 300 + +.d help 301 [ controller words +.s hint help + +.d save 302 + +.d restore 303 + +.d restart 304 + +.d game 305 + +.d quit 306 +.s fold quit +.s stop quit +.s done quit + +.d slow 307 + +.d normal 308 + +.d fast 309 +.s faster fast + +.d fastest 310 + +.d inventory 311 +.s things inventory +.s inv inventory +.s item inventory +.s items inventory +.s object inventory +.s objects inventory +.s stuff inventory +.s all inventory +.s everything inventory +.s belongings inventory + + + + +.d position 321 [ debug words + +.d priority 322 + +.d sp 323 +.s xy sp + +.d tp 324 + +.d reset 325 + +.d var 326 + +.d flag 327 + + + + +.d pussy 341 [ dirty words +.s cunt pussy +.s slit pussy +.s snatch pussy +.s clit pussy +.s clitoris pussy +.s crack pussy +.s cracks pussy +.s piece$of$ass pussy +.s piece$of$tail pussy + +.d shit 342 +.s crap shit +.s dump shit + +.d piss 343 +.s pee piss +.s urinate piss +.s leak piss + +.d hump 344 +.s seduce hump +.s sleep$with hump +.s make$love hump +.s jump$her$bones hump +.s lay hump +.s screw hump +.s fuck hump +.s copulate hump +.s fucking hump +.s mount$up hump +.s mount hump +.s sex hump + +.d fart 345 +.s cut$one fart + +.d dirty$word 346 +.s fucker dirty$word +.s mother$fucker dirty$word +.s asshole dirty$word +.s dick$head dirty$word +.s faggot dirty$word +.s fag dirty$word +.s bitch dirty$word +.s what$the$fuck dirty$word +.s shithead dirty$word +.s bullshit dirty$word +.s dyke dirty$word + +.d tit 347 +.s tits tit +.s breast tit +.s breasts tit +.s boob tit +.s boobs tit +.s knocker tit +.s knockers tit +.s nipple tit +.s nipples tit + +.d ass 348 +.s butt ass +.s rearend ass + +.d sixtynine 349 +.s cunnilingus sixtynine + +.d blow$job 350 +.s suck$me blow$job + +.d dick 351 +.s cock dick +.s prick dick +.s dong dick + +.d damn 352 +.s god$damn damn +.s dam damn +.s god$dam damn +.s go$to$hell damn +.s damn$it damn +.s dam$it damn +.s bull$shit damn +.s sit$on$it damn +.s up$your damn +.s up$yours damn +.s fuck$off damn +.s fuck$you damn +.s jesus$christ damn +.s christ damn + +.d masturbate 353 +.s jack$off masturbate +.s jerk$off masturbate + +.d business$card 400 +.s business$cards business$card + +.d work 401 +.s duty work + +.d sierra 402 +