Leisure Suit Larry Final Source Set
authorhistoricalsource <historicalsoftware@textfiles.com>
Thu, 18 Apr 2019 21:13:14 +0000 (17:13 -0400)
committerhistoricalsource <historicalsoftware@textfiles.com>
Thu, 18 Apr 2019 21:13:14 +0000 (17:13 -0400)
101 files changed:
BJ.H [new file with mode: 0644]
COLORS.H [new file with mode: 0644]
CONTRLRS.H [new file with mode: 0644]
FLAG_VAR.H [new file with mode: 0644]
GAMEDEFS.H [new file with mode: 0644]
IV_NAMES.H [new file with mode: 0644]
IV_VIEWS.H [new file with mode: 0644]
OBJECT [new file with mode: 0644]
OBJECT.TXT [new file with mode: 0644]
RM0.CG [new file with mode: 0644]
RM0.MSG [new file with mode: 0644]
RM1.CG [new file with mode: 0644]
RM1.MSG [new file with mode: 0644]
RM10.CG [new file with mode: 0644]
RM10.MSG [new file with mode: 0644]
RM11.CG [new file with mode: 0644]
RM11.MSG [new file with mode: 0644]
RM12.CG [new file with mode: 0644]
RM12.MSG [new file with mode: 0644]
RM13.CG [new file with mode: 0644]
RM13.MSG [new file with mode: 0644]
RM14.CG [new file with mode: 0644]
RM14.MSG [new file with mode: 0644]
RM15.CG [new file with mode: 0644]
RM15.MSG [new file with mode: 0644]
RM16.CG [new file with mode: 0644]
RM16.MSG [new file with mode: 0644]
RM17.CG [new file with mode: 0644]
RM17.MSG [new file with mode: 0644]
RM19.CG [new file with mode: 0644]
RM19.MSG [new file with mode: 0644]
RM2.CG [new file with mode: 0644]
RM2.MSG [new file with mode: 0644]
RM20.CG [new file with mode: 0644]
RM20.MSG [new file with mode: 0644]
RM21.CG [new file with mode: 0644]
RM21.MSG [new file with mode: 0644]
RM22.CG [new file with mode: 0644]
RM22.MSG [new file with mode: 0644]
RM23.CG [new file with mode: 0644]
RM23.MSG [new file with mode: 0644]
RM24.CG [new file with mode: 0644]
RM24.MSG [new file with mode: 0644]
RM25.CG [new file with mode: 0644]
RM25.MSG [new file with mode: 0644]
RM3.CG [new file with mode: 0644]
RM3.MSG [new file with mode: 0644]
RM31.CG [new file with mode: 0644]
RM31.MSG [new file with mode: 0644]
RM32.CG [new file with mode: 0644]
RM32.MSG [new file with mode: 0644]
RM33.CG [new file with mode: 0644]
RM33.MSG [new file with mode: 0644]
RM34.CG [new file with mode: 0644]
RM34.MSG [new file with mode: 0644]
RM35.CG [new file with mode: 0644]
RM35.MSG [new file with mode: 0644]
RM36.CG [new file with mode: 0644]
RM36.MSG [new file with mode: 0644]
RM37.CG [new file with mode: 0644]
RM37.MSG [new file with mode: 0644]
RM38.CG [new file with mode: 0644]
RM38.MSG [new file with mode: 0644]
RM4.CG [new file with mode: 0644]
RM4.MSG [new file with mode: 0644]
RM40.CG [new file with mode: 0644]
RM40.MSG [new file with mode: 0644]
RM41.CG [new file with mode: 0644]
RM41.MSG [new file with mode: 0644]
RM42.CG [new file with mode: 0644]
RM42.MSG [new file with mode: 0644]
RM43.CG [new file with mode: 0644]
RM43.MSG [new file with mode: 0644]
RM44.CG [new file with mode: 0644]
RM44.MSG [new file with mode: 0644]
RM45.CG [new file with mode: 0644]
RM45.MSG [new file with mode: 0644]
RM50.CG [new file with mode: 0644]
RM51.CG [new file with mode: 0644]
RM52.CG [new file with mode: 0644]
RM53.CG [new file with mode: 0644]
RM54.CG [new file with mode: 0644]
RM55.CG [new file with mode: 0644]
RM55.MSG [new file with mode: 0644]
RM56.CG [new file with mode: 0644]
RM56.MSG [new file with mode: 0644]
RM57.CG [new file with mode: 0644]
RM57.MSG [new file with mode: 0644]
RM58.CG [new file with mode: 0644]
RM58.MSG [new file with mode: 0644]
RM6.CG [new file with mode: 0644]
RM6.MSG [new file with mode: 0644]
RM8.CG [new file with mode: 0644]
RM8.MSG [new file with mode: 0644]
RM9.CG [new file with mode: 0644]
RM9.MSG [new file with mode: 0644]
SLOTS.H [new file with mode: 0644]
SYSDEFS.H [new file with mode: 0644]
VIEWS.H [new file with mode: 0644]
WORDS.TOK [new file with mode: 0644]
WORDS.TXT [new file with mode: 0644]

diff --git a/BJ.H b/BJ.H
new file mode 100644 (file)
index 0000000..cae02ae
--- /dev/null
+++ b/BJ.H
@@ -0,0 +1,86 @@
+[\r
+[      bj.h\r
+[\r
+[      LEISURE SUIT LARRY IN THE LAND OF THE LOUNGE LIZARDS BLACKJACK HEADER\r
+[\r
+[      Wednesday, March 4, 1987 at 11:21 p.m.\r
+[      Sunday, May 31, 1987 at 8:56 p.m.\r
+[\r
+\r
+\r
+\r
+%object        aWinner                         13      [       Animated objects.\r
+%object        aQuestion                               14\r
+%object        aCards                          15\r
+\r
+\r
+#define        CLUBS                           152     [       Defines of view numbers.\r
+#define        SPADES                          153\r
+#define        HEARTS                          154\r
+#define        DIAMONDS                                155\r
+#define        BLANK_CARD                      156\r
+#define        CARD_BACK                               157\r
+\r
+\r
+%flag  pSoftAce                                242     [       Flags.\r
+%flag  dSoftAce                                243\r
+%flag  sSoftAce                                244\r
+%flag  showHelpMessage         245\r
+%flag  pBlackjack                      246\r
+%flag  dBlackjack                      247\r
+%flag  pDoubledDown                    248\r
+%flag  sDoubledDown                    249\r
+%flag  pSixCardWinner                  250\r
+%flag  sSixCardWinner                  251\r
+%flag  softAce                         252\r
+%flag  waitingForInput         253\r
+%flag  insured                         254\r
+%flag  readyToLeave                    255\r
+\r
+\r
+%var           oldDTotal                               216\r
+%var           oldPTotal                               217\r
+%var           oldSTotal                               218\r
+%var           clueTimer                               219\r
+%var           work2                           220     [       Vars.\r
+%var           work3                           221\r
+%var           dTotal                          222\r
+%var           pTotal                          223\r
+%var           sTotal                          224\r
+%var           sBet                                    225\r
+%var           pBet                                    226\r
+%var           insurance                               227\r
+%var           winnings                                228\r
+%var           function                                229     [which function to execute in rm56.\r
+       #define DRAW_CARD               1\r
+       #define ERASE_CARD      2\r
+       #define DRAW_FACE_DOWN  3\r
+       #define GET_SUIT_VALUE  4\r
+       #define PAY_WINNER      5\r
+       #define UPDATE_STATUS   6\r
+       #define SHOW_TOTALS     7\r
+\r
+%var           suit                                    230\r
+%var           value                           231\r
+%var           card                                    232\r
+%var           cardCount                               233     [       How many cards are visible.\r
+%var           cardToTest                      234\r
+%var           currentCard                     235     [       Used as a pointer to vars below.\r
+%var           handInPlay                      236\r
+       #define NONE                    0\r
+       #define PLAYER          1\r
+       #define SPLIT           2\r
+       #define DEALER          3\r
+       #define HAND_DONE               255\r
+\r
+\r
+[      Vars numbered 237 through 254 contain the card values for the 3 hands.\r
+[They are only referenced indirectly, so no defines are needed.\r
+\r
+       %define firstCard               237             [       First var containing a card.\r
+       %define dFirstCard      237             [       Var numbers of the\r
+       %define pFirstCard      243             [                       first card of\r
+       %define sFirstCard      249             [                                       each hand.\r
+       %define lastCard                254             [       Last var containing a card.\r
+\r
+%var           oldBet                          255\r
diff --git a/COLORS.H b/COLORS.H
new file mode 100644 (file)
index 0000000..9bec9cb
--- /dev/null
+++ b/COLORS.H
@@ -0,0 +1,28 @@
+[\r
+[      colors.h\r
+[\r
+[                                              IBM COLOR DEFINES\r
+[      \r
+[      Sunday, February 22, 1987 at 02:31 p.m.\r
+[      \r
+\r
+\r
+\r
+%define        BLACK                           0\r
+%define        BLUE                                    1\r
+%define        GREEN                           2\r
+%define        CYAN                                    3\r
+%define        RED                                     4\r
+%define        MAGENTA                         5\r
+%define        BROWN                           6\r
+%define        WHITE                           7\r
+%define        GREY                                    8\r
+%define        GRAY                                    8\r
+%define        LIGHT_BLUE                      9\r
+%define        LIGHT_GREEN                     10\r
+%define        LIGHT_CYAN                      11\r
+%define        LIGHT_RED                               12\r
+%define        LIGHT_MAGENTA                   13\r
+%define        YELLOW                          14\r
+%define        LIGHT_WHITE                     15\r
+\r
diff --git a/CONTRLRS.H b/CONTRLRS.H
new file mode 100644 (file)
index 0000000..6ffbe44
--- /dev/null
@@ -0,0 +1,58 @@
+[\r
+[      contrlrs.h\r
+[      \r
+[                                      STANDARD AGI KEY CONTROLLERS\r
+[\r
+[      Friday, May 15, 1987 at 0:47 a.m.\r
+[\r
+\r
+\r
+\r
+%define        cHelp                           1       [       Function keys\r
+%define        cSoundToggle                    2\r
+%define        cEchoLine                               3\r
+%define        cF4                                     4\r
+%define        cSave                           5\r
+%define        cF6                                     6\r
+%define        cRestore                                7\r
+%define        cF8                                     8\r
+%define        cRestart                                9\r
+%define        cSpeed                          10\r
+\r
+%define        cStatus                         11      [       Control keys\r
+%define        cInitJoy                                12\r
+%define        cToggleMonitor                  13\r
+%define        cCancelLine                     14\r
+\r
+%define        cDebug                          15      [       Alt keys\r
+%define        cShowEgo                                16\r
+%define        cShowObj                                17\r
+%define        cShowMem                                18\r
+%define        cObjInfo                                19\r
+%define        cShowPriority                   20\r
+%define        cSkipTest                               21\r
+%define        cQuit                           22\r
+\r
+%define        cMenu                           23      [       Menu stuff\r
+%define        cDummy                          24\r
+%define        cAbout                          25\r
+%define        cCalculator                     26\r
+%define        cPuzzle                         27\r
+%define        cBodilyFunction         28\r
+%define        cClock                          29\r
+%define        cPause                          30\r
+%define        cSpeedSlow                      31\r
+%define        cSpeedNormal                    32\r
+%define        cSpeedFast                      33\r
+%define        cSpeedFastest                   34\r
+\r
+%define        cInvNumbers                     35      [       Debug stuff\r
+%define        cXY                                     36\r
+%define        cGimme                          37\r
+\r
+%define        cCrescendo                      38      [       Tandy odds & ends.\r
+%define        cDecrescendo                    39\r
+\r
+%define        cVersion                                40\r
+%define        cBoss                           41\r
+\r
diff --git a/FLAG_VAR.H b/FLAG_VAR.H
new file mode 100644 (file)
index 0000000..b85b39d
--- /dev/null
@@ -0,0 +1,137 @@
+[\r
+[      lcl_temp.h\r
+[\r
+[      LEISURE SUIT LARRY IN THE LAND OF THE LOUNGE LIZARDS GAME DEFINITIONS\r
+[\r
+[      Wednesday, March 11, 1987 at 9:48 a.m.\r
+[\r
+\r
+\r
+\r
+[      The 30 locals are numbered 200 - 229.  The 26 dynamics are numbered\r
+[230 - 255.  Every flag and var in this list is reset by every new room.\r
+\r
+\r
+\r
+[      LOCAL FLAGS, for use in room logics.\r
+%flag  lf0                                     200\r
+%flag  lf1                                     201\r
+%flag  lf2                                     202\r
+%flag  lf3                                     203\r
+%flag  lf4                                     204\r
+%flag  lf5                                     205\r
+%flag  lf6                                     206\r
+%flag  lf7                                     207\r
+%flag  lf8                                     208\r
+%flag  lf9                                     209\r
+%flag  lf10                                    210\r
+%flag  lf11                                    211\r
+%flag  lf12                                    212\r
+%flag  lf13                                    213\r
+%flag  lf14                                    214\r
+%flag  lf15                                    215\r
+%flag  lf16                                    216\r
+%flag  lf17                                    217\r
+%flag  lf18                                    218\r
+%flag  lf19                                    219\r
+%flag  lf20                                    220\r
+%flag  lf21                                    221\r
+%flag  lf22                                    222\r
+%flag  lf23                                    223\r
+%flag  lf24                                    224\r
+%flag  lf25                                    225\r
+%flag  lf26                                    226\r
+%flag  lf27                                    227\r
+%flag  lf28                                    228\r
+%flag  lf29                                    229\r
+\r
+[      TEMP FLAGS for use in dynamic logics.\r
+%flag  df0                                     230\r
+%flag  df1                                     231\r
+%flag  df2                                     232\r
+%flag  df3                                     233\r
+%flag  df4                                     234\r
+%flag  df5                                     235\r
+%flag  df6                                     236\r
+%flag  df7                                     237\r
+%flag  df8                                     238\r
+%flag  df9                                     239\r
+%flag  df10                                    240\r
+%flag  df11                                    241\r
+%flag  df12                                    242\r
+%flag  df13                                    243\r
+%flag  df14                                    244\r
+%flag  df15                                    245\r
+%flag  df16                                    246\r
+%flag  df17                                    247\r
+%flag  df18                                    248\r
+%flag  df19                                    249\r
+%flag  df20                                    250\r
+%flag  df21                                    251\r
+%flag  df22                                    252\r
+%flag  df23                                    253\r
+%flag  df24                                    254\r
+%flag  df25                                    255\r
+\r
+\r
+\r
+[      LOCAL VARS for use in room logics.\r
+%var           lv0                                     200\r
+%var           lv1                                     201\r
+%var           lv2                                     202\r
+%var           lv3                                     203\r
+%var           lv4                                     204\r
+%var           lv5                                     205\r
+%var           lv6                                     206\r
+%var           lv7                                     207\r
+%var           lv8                                     208\r
+%var           lv9                                     209\r
+%var           lv10                                    210\r
+%var           lv11                                    211\r
+%var           lv12                                    212\r
+%var           lv13                                    213\r
+%var           lv14                                    214\r
+%var           lv15                                    215\r
+%var           lv16                                    216\r
+%var           lv17                                    217\r
+%var           lv18                                    218\r
+%var           lv19                                    219\r
+%var           lv20                                    220\r
+%var           lv21                                    221\r
+%var           lv22                                    222\r
+%var           lv23                                    223\r
+%var           lv24                                    224\r
+%var           lv25                                    225\r
+%var           lv26                                    226\r
+%var           lv27                                    227\r
+%var           lv28                                    228\r
+%var           lv29                                    229\r
+                                         \r
+\r
+[      TEMP VARS for use in dynamic logics.\r
+%var           dv0                                     230\r
+%var           dv1                                     231\r
+%var           dv2                                     232\r
+%var           dv3                                     233\r
+%var           dv4                                     234\r
+%var           dv5                                     235\r
+%var           dv6                                     236\r
+%var           dv7                                     237\r
+%var           dv8                                     238\r
+%var           dv9                                     239\r
+%var           dv10                                    240\r
+%var           dv11                                    241\r
+%var           dv12                                    242\r
+%var           dv13                                    243\r
+%var           dv14                                    244\r
+%var           dv15                                    245\r
+%var           dv16                                    246\r
+%var           dv17                                    247\r
+%var           dv18                                    248\r
+%var           dv19                                    249\r
+%var           dv20                                    250\r
+%var           dv21                                    251\r
+%var           dv22                                    252\r
+%var           dv23                                    253\r
+%var           dv24                                    254\r
+%var           dv25                                    255\r
diff --git a/GAMEDEFS.H b/GAMEDEFS.H
new file mode 100644 (file)
index 0000000..88b29f2
--- /dev/null
@@ -0,0 +1,422 @@
+[\r
+[      gamedefs.h\r
+[\r
+[      LEISURE SUIT LARRY IN THE LAND OF THE LOUNGE LIZARDS GAME DEFINITIONS\r
+[\r
+[      Wednesday, June 10, 1987 at 9:00 p.m.\r
+[\r
+\r
+\r
+\r
+%include       "views.h"\r
+%tokens        "..\\words.tok"\r
+%include       "sysdefs.h"\r
+%include       "flag_var.h"\r
+\r
+\r
+\r
+[************   CONSTANTS   ************]\r
+#define        CYCLES_BEFORE_DEATH             44\r
+#define        TEXT_COLOR                      15\r
+#define        BG_COLOR                                0\r
+#define        NORMAL_STEP_SIZE                1\r
+#define        FALLING_STEP_SIZE               3\r
+#define        EGO_STUNNED_TIME                5\r
+#define        NOWHERE                         0\r
+#define        DOOR_CYCLE_TIME         3\r
+#define        SMILE_SECONDS                   5\r
+#define        FROWN_SECONDS                   7\r
+#define        INVENTORY                               255\r
+\r
+\r
+\r
+[************     FLAGS     ************]\r
+[Only the interpreter can use    0-29  (globals)\r
+[              Any room can use        220-239 (lf's)\r
+[Only dynamic logics can use   240-255 (df's)\r
+\r
+%flag  forceAtest                      30\r
+%flag  testing                         31\r
+%flag  debugging                               32\r
+%flag  xyOn                                    33\r
+%flag  keepCycling                     34\r
+%flag  noCycling                               35\r
+%flag  ignoreSpecial                   36\r
+%flag  ignoreWater                     37\r
+%flag  demo                                    38\r
+%flag  doit                                    39\r
+%flag  done                                    40\r
+%flag  egoArrived                      41\r
+%flag  clockOn                         42\r
+%flag  updateClock                     43\r
+%flag  aSecondPassed                   44\r
+%flag  myHaveMatch                     45\r
+%flag  outOfMemory                     46\r
+%flag  survivableFall                  47\r
+%flag  handsOff                                48\r
+%flag  preventNewRoom                  49\r
+%flag  certainDeath                    50\r
+%flag  egoDeathDone                    51\r
+%flag  musicDone                               52\r
+%flag  soundDone                               53\r
+%flag  notCloseEnough                  54\r
+%flag  alreadyGotIt                    55\r
+%flag  TVOn                                    56\r
+%flag  knowsPassword                   57\r
+%flag  smellsLikeDogPiss               58\r
+%flag  toiletPaperOnShoe               59\r
+%flag  lookedAtCabbie                  60\r
+%flag  nearTaxi                                61\r
+%flag  wearingRubber                   62\r
+%flag  scoredHooker                    63\r
+%flag  hookerWindowOpen                64\r
+%flag  alleyWindowBroken               65\r
+%flag  mouthOK                         66\r
+%flag  OK                                      67\r
+%flag  dontHaveIt                      68\r
+%flag  nearPerson                      69\r
+%flag  noFawnInDisco                   70\r
+%flag  gaveFawnRose                    71\r
+%flag  gaveFawnCandy                   72\r
+%flag  gaveFawnRing                    73\r
+%flag  dancedWithFawn                  74\r
+%flag  scriptDone                      75\r
+%flag  faithGone                               76\r
+%flag  beenIn43                                77\r
+%flag  answeredSurvey                  78\r
+%flag  gaveFawnEverything              79\r
+%flag  orderedWine                     80\r
+%flag  ropeOnBed                               81\r
+%flag  fawnInRoom                      82\r
+%flag  unsuccessfulCeremony    83\r
+%flag  eveGone                         84\r
+%flag  programControl                  85\r
+%flag  egoLoweringDone         86\r
+%flag  preventSaveGame         87\r
+%flag  gaveEveApple                    88\r
+%flag  diedOfTheClap                   89\r
+%flag  pimpWatchingTV                  90\r
+%flag  wornRubber                      91\r
+%flag  satWithFawn                     92\r
+%flag  betInProgress                   93\r
+%flag  boughtWhiskey                   94\r
+%flag  lookedAtFawn                    95\r
+%flag  talkedToFawn                    96\r
+%flag  askedForMoney                   97\r
+%flag  gotPimpToWatchTV                98\r
+%flag  paidPimpForWhore                99\r
+%flag  rodeInCab                               100\r
+%flag  mouseMachine                    101\r
+%flag  twoButtonJoystick               102\r
+%flag  talkedToFlasher         103\r
+%flag  heardLiquorStoreNumber  104\r
+%flag  beenIn11                                105\r
+%flag  requestedASaveGame              106\r
+%flag  mouthSmellsBad                  107\r
+%flag  typing                          108\r
+%flag  passedTest                      109\r
+%flag  marriedFawn                     110\r
+%flag  seenDeliveryBoyGag              111\r
+%flag  readSideOfPhone         112\r
+%flag  answeredSurveyFirstTime 113\r
+%flag  heardSurveyFirstTime    114\r
+%flag  orderedWineFirstTime    115\r
+%flag  poopedInCan                     116\r
+%flag  satOnWhoopieCushion             117\r
+%flag  slowProcessor                   118\r
+%flag  shownPassToBouncer              119\r
+%flag  readMagazine                    120\r
+%flag  dialedSierra                    121\r
+%flag  makeFawnDance                   122\r
+%flag  memoryCheck                     123\r
+%flag  makeEgoRise                     124     [       in disco scene\r
+%flag  makeFawnSplit                   125\r
+%flag  inflatedDoll                    126\r
+%flag  sprayDone                               127\r
+%flag  beenInPenthouse         128\r
+[nextflag\r
+\r
+\r
+\r
+[************      VARS      ************]\r
+[Only the interpreter can use    0-29  (globals)\r
+[              Any room can use        220-239 (lv's)\r
+[Only dynamic logics can use   240-255 (dv's)\r
+\r
+%var           currentStatus                   30\r
+#define        NORMAL                  0\r
+#define        DEAD                            1\r
+#define        SLEEPING                        2\r
+#define        COLLAPSING              3\r
+#define        STUNNED                 4\r
+#define        FALLING                 5\r
+#define        WALKING                 6\r
+#define        ON_BAR_STOOL            7\r
+#define        DRUNK                   8\r
+#define        ON_TOILET                       9\r
+#define        DROWNING                        10\r
+#define        HUMPING_HOOKER          11\r
+#define        LEAVING_WINDOW          12\r
+#define        HANGING_BY_ROPE 13\r
+#define        IN_DUMPSTER             14\r
+#define        RUN_OVER                        15\r
+#define        DANCING                 16\r
+#define        SITTING                 17\r
+#define        IN_ELEVATOR             18\r
+#define        TIED_TO_BED             19\r
+#define        STIFFED_CABBIE          20\r
+#define        PISSING                 21\r
+#define        CHASING_DOLL            22\r
+#define        FOLLOWING_EVE           23\r
+#define        DYING_OF_CLAP           25\r
+#define        NAKED                   26\r
+#define        RECYCLING                       27\r
+[      #define 28\r
+[      #define 29                                                 \r
+\r
+%var           egoLocation                     31\r
+%var           x                                       32\r
+%var           y                                       33\r
+%var           sourceX                         34\r
+%var           sourceY                         35\r
+%var           targetX                         36\r
+%var           targetY                         37\r
+%var           egoX                                    38\r
+%var           egoY                                    39\r
+%var           oldEgoX                         40\r
+%var           oldEgoY                         41\r
+%var           oldEgoDir                               42\r
+%var           oldSeconds                      43\r
+%var           oldAnimationInterval    44\r
+       #define FASTEST_SPEED   0\r
+       #define FAST_SPEED      1\r
+       #define NORMAL_SPEED    2\r
+       #define SLOW_SPEED      3\r
+\r
+%var           debug0                          45\r
+%var           debug1                          46\r
+%var           startClimbing                   47\r
+%var           roomBottom                      48\r
+%var           zero                                    49\r
+%var           deathMessage                    50\r
+%var           testRoom                                51\r
+%var           work                                    52\r
+%var           view                                    53\r
+%var           loop                                    54\r
+%var           cell                                    55\r
+%var           step                                    56\r
+%var           priority                                57\r
+%var           message                         58\r
+%var           egoCycleTime                    59\r
+%var           egoStepTime                     60\r
+%var           egoStepSize                     61\r
+%var           passInRoom                      62\r
+%var           secondsInRoom                   63\r
+%var           taxiScript                      64\r
+       #define TAXI_WAITING    4\r
+\r
+%var           script                          65\r
+%var           scriptCycles                    66\r
+%var           scriptTimer                     67\r
+%var           clearStatusSeconds              68\r
+%var           mouthMessage                    69\r
+%var           sprayCount                      70\r
+%var           spraySeconds                    71\r
+%var           sprayMinutes                    72\r
+#define        SPRAY_INIT_MINUTES       10\r
+\r
+[      %var            73\r
+[      %var            74\r
+\r
+%var           deathTimer                      75\r
+%var           newRoom                         76\r
+%var           currentEgoView                  77\r
+%var           oldEdgeEgoHit                   78\r
+%var           destinationFloor                79\r
+%var           breathSpraySeconds              80\r
+%var           picture                         81\r
+%var           TVChannel                               82\r
+%var           moneyTimer                      83\r
+%var           one                                     84\r
+%var           two                                     85\r
+%var           three                           86\r
+%var           four                                    87\r
+%var           five                                    88\r
+%var           oldLastChar                     89\r
+%var           dollars                         90\r
+%var           secondsSinceKeystroke   91\r
+%var           answer                          92\r
+%var           correctAnswer                   93\r
+%var           question                                94\r
+%var           questionStatus                  95\r
+       %define waiting         1\r
+       %define askAnother      2\r
+       %define allDone         3\r
+       %define waitAwhile      4\r
+       %define waitAwhileAlthoughCorrect       5\r
+\r
+%var           currentQuestion         96\r
+%var           cabFareMin                      97\r
+%var           notMovedCycles                  98\r
+%var           cabRideLength                   99\r
+%var           fawnTalkCount                   100\r
+%var           oldCurrentScore         101\r
+[nextvar\r
+[      %var            102\r
+[      %var            103\r
+[      %var            104\r
+[      %var            105\r
+[      %var            106\r
+[      %var            107\r
+[      %var            108\r
+[      %var            109\r
+[      %var            110\r
+[      %var            111\r
+[      %var            112\r
+[      %var            113\r
+[      %var            114\r
+%var           gameSeconds                     115\r
+%var           gameMinutes                     116\r
+%var           gameHours                       117\r
+%var           gameDays                                118\r
+%var           watchHours                      119\r
+#define        WATCH_INIT_HOURS         10\r
+\r
+\r
+\r
+\r
+[*********** ANIMATED OBJECTS ***********]\r
+[Define here all objects shared by multiple rooms.\r
+%object        ego                                     0\r
+[      %object a       10\r
+[      %object a       11\r
+%object        aCop                                    12\r
+%object        aTaxi                           13\r
+%object        aDog                                    14\r
+%object        aCar                                    15\r
+\r
+\r
+\r
+[*********  INVENTORY OBJECTS  **********]\r
+       \r
+%object        iWallet                         1\r
+%object        iBreathSpray                    2\r
+%object        iPocketLint                     3\r
+%object        iWatch                          4\r
+%object        iApple                          5\r
+%object        iRing                           6\r
+%object        iWhiskey                                7\r
+%object        iRemoteControl                  8\r
+%object        iRose                           9 \r
+%object        iRubber                         10\r
+%object        iUsedRubber                     11\r
+%object        iCandy                          12\r
+%object        iDoll                           13\r
+%object        iDiscoPass                      14\r
+%object        iPocketKnife                    15\r
+%object        iWine                           16\r
+%object        iMagazine                               17\r
+%object        iHammer                         18\r
+%object        iPills                          19\r
+%object        iRope                           20\r
+#define        SIZE_OF_INVENTORY               20\r
+\r
+\r
+\r
+[*********    SOUND EFFECTS    **********]\r
+#define        sEgoFalling                     1\r
+#define        sError                          2\r
+#define        sSlots                          3\r
+#define        sSlotsWinner                    4\r
+#define        sCardsShuffling         5\r
+#define        sCard                           6\r
+#define        sBJWinner                               7\r
+#define        sDrummer                                8\r
+#define        sWhoopieCushion         9\r
+#define        sTaxiTires                      10\r
+#define        sDeathCar                               11\r
+#define        sPissing                                12\r
+#define        sBang                           13\r
+#define        sFart                           14\r
+#define        sDollDeflating                  15\r
+\r
+\r
+[************     MUSIC     *************]\r
+#define        mTitle                          21\r
+#define        mDog                                    22      \r
+#define        mWedding                                23\r
+#define        mWinner                         24\r
+#define        mWhoops                         25\r
+#define        mAlley                          26\r
+#define        mRm14Drunk                      27\r
+#define        mRm22Drunk                      28\r
+#define        mCop                                    29\r
+#define        mDisco                          30\r
+#define        mCanCan                         31\r
+#define        mSunrise                                32\r
+#define        mFuneral                                33\r
+\r
+\r
+\r
+[******   ROOM AND PICTURE NAMES   ******]\r
+#define        rmTitle                         1\r
+#define        picCredits1                     2\r
+#define        picCredits2                     3\r
+#define        picCredits3                     4\r
+#define        picFrame                                5\r
+#define        rmAgeTest                               6\r
+#define        picBlack                                7\r
+#define        rmWorkshop                      8\r
+#define        rmDarkAlley                     9\r
+#define        rmInsideTaxi                    10\r
+#define        rmOutsideBar                    11\r
+#define        rmAlley                         12\r
+#define        rmToilet                                13\r
+#define        rmHallway                               14\r
+#define        rmInsideBar                     15\r
+#define        rmBackroom                      16\r
+#define        rmHooker                                17\r
+%define        picHookerCloseup                18\r
+%define        rmSunrise                               19\r
+%define        rmBoss                          20\r
+#define        rmInside7_11                    21\r
+#define        rmOutside7_11                   22\r
+#define        rmOutsideDisco                  23\r
+#define        rmInsideDisco                   24\r
+%define        rmFawnCloseup                   25\r
+%define        picFaithCloseup         26\r
+%define        picEveCloseup                   27\r
+%define        picDollCloseup                  28\r
+%define        picBoss2                                29\r
+%define        picBoss3                                30\r
+#define        rmInsideCasino                  31\r
+#define        rmOutsideCasino         32\r
+#define        rmOutsideChapel         33\r
+#define        rmInsideChapel                  34\r
+#define        rmElevatorBottom                35\r
+#define        rmLounge                                36\r
+#define        rmSlots                         37\r
+#define        rmBlackjack                     38\r
+[      %define rm      39\r
+#define        rmElevators                     40\r
+#define        rmHoneymoonSuite                41\r
+#define        rmSecurityDesk                  42\r
+#define        rmHotTub                                43\r
+#define        rmLivingRoom                    44\r
+#define        rmBedroom                               45\r
+\r
+#define        rmRestart                       rmOutsideBar\r
+\r
+\r
+\r
+[**********   DYNAMIC LOGICS   **********]\r
+#define        lgcRm0InitLog                   50\r
+#define        lgcStartup                      51\r
+#define        lgcDebug                                52\r
+#define        lgcTrace                                53 \r
+#define        lgcError                                54\r
+#define        lgcHelp                         55\r
+#define        lgcBlackjack                    56\r
+#define        lgcStreet                               57\r
+#define        lgcSlots                                58\r
+#define        lgcID                           59\r
diff --git a/IV_NAMES.H b/IV_NAMES.H
new file mode 100644 (file)
index 0000000..b0f3cd3
--- /dev/null
@@ -0,0 +1,30 @@
+[\r
+[      iv_names.h\r
+[\r
+[ LEISURE SUIT LARRY IN THE LAND OF THE LOUNGE LIZARDS INVENTORY OBJECT NAMES\r
+[\r
+[      Thursday, May 14, 1987 at 1:20 p.m.\r
+[\r
+\r
+\r
+\r
+%define        Wallet                  1\r
+%define        BreathSpray             2\r
+%define        PocketLint              3\r
+%define        Watch                   4\r
+%define        Apple                   5\r
+%define        Ring                            6\r
+%define        Whiskey                 7\r
+%define        RemoteControl           8\r
+%define        Rose                            9\r
+%define        Rubber                  10\r
+%define        UsedRubber              11\r
+%define        Candy                   12\r
+%define        Doll                            13\r
+%define        DiscoPass                       14\r
+%define        PocketKnife             15\r
+%define        Wine                            16\r
+%define        Magazine                        17\r
+%define        Hammer                  18\r
+%define        Pills                   19\r
+%define        Rope                            20\r
diff --git a/IV_VIEWS.H b/IV_VIEWS.H
new file mode 100644 (file)
index 0000000..1e4161b
--- /dev/null
@@ -0,0 +1,31 @@
+[\r
+[      iv_views.h\r
+[\r
+[      LEISURE SUIT LARRY IN THE LAND OF THE LOUNGE LIZARDS INVENTORY VIEWS\r
+[\r
+[      Saturday, April 4, 1987 at 12:55 p.m.\r
+[      Thursday, May 14, 1987 at 1:20 p.m.\r
+[\r
+\r
+\r
+\r
+%view  ivWallet                                101\r
+%view  ivBreathSpray                   102\r
+%view  ivPocketLint                    103\r
+%view  ivWatch                         104\r
+%view  ivApple                         105\r
+%view  ivRing                          106\r
+%view  ivWhiskey                               107\r
+%view  ivRemoteControl         108\r
+%view  ivRose                          109\r
+%view  ivRubber                                110\r
+%view  ivUsedRubber                    111\r
+%view  ivCandy                         112\r
+%view  ivDoll                          113\r
+%view  ivDiscoPass                     114\r
+%view  ivPocketKnife                   115\r
+%view  ivWine                          116\r
+%view  ivMagazine                      117\r
+%view  ivHammer                                118\r
+%view  ivPills                         119\r
+%view  ivRope                          120\r
diff --git a/OBJECT b/OBJECT
new file mode 100644 (file)
index 0000000..b73ab55
Binary files /dev/null and b/OBJECT differ
diff --git a/OBJECT.TXT b/OBJECT.TXT
new file mode 100644 (file)
index 0000000..62cfae7
--- /dev/null
@@ -0,0 +1,40 @@
+[\r
+[      object.txt\r
+[\r
+[      LEISURE-SUIT LARRY IN THE LAND OF THE LOUNGE LIZARDS OBJECT TABLES\r
+[\r
+[      Thursday, May 14, 1987 at 11:06 a.m.\r
+[\r
+\r
+\r
+\r
+[************* ANIMATED OBJECTS\r
+[.numani       # of animated objects\r
+\r
+.numani        16\r
+\r
+\r
+\r
+[************* INVENTORY OBJECTS\r
+[.obj  object#, "Status screen name", room # at beginning of game\r
+\r
+.obj            1, "Wallet",                       255 \r
+.obj            2, "Breath Spray",                 255\r
+.obj            3, "Pocket Lint",                  255\r
+.obj            4, "Wrist Watch",                  255\r
+.obj            5, "Apple",                            32\r
+.obj            6, "Diamond Ring",             13\r
+.obj            7, "Glass of Whiskey",         15\r
+.obj            8, "Remote Control",           14\r
+.obj            9, "Rose",                             14\r
+.obj           10, "Prophylactic",             21\r
+.obj           11, "Used Prophylactic",         0\r
+.obj           12, "Box of Candy",             17\r
+.obj           13, "Inflatable Doll",          45\r
+.obj           14, "Disco Pass",                       35\r
+.obj           15, "Pocket Knife",             22\r
+.obj           16, "Bottle of Wine",           21\r
+.obj           17, "\"Jugs\" Magazine",        21\r
+.obj           18, "Hammer",                           12\r
+.obj           19, "Bottle of Pills",          12\r
+.obj           20, "Rope",                             41\r
diff --git a/RM0.CG b/RM0.CG
new file mode 100644 (file)
index 0000000..4065087
--- /dev/null
+++ b/RM0.CG
@@ -0,0 +1,2300 @@
+[logics for room 0 -- executed before room logics\r
+[      "Leisure Suit Larry in the Land of the Lounge Lizards"\r
+[      by Al Lowe\r
+\r
+%include       "rm0.msg"\r
+%include       "gamedefs.h"\r
+%include       "iv_views.h"\r
+%include       "contrlrs.h"\r
+%include       "colors.h"\r
+\r
+\r
+\r
+if (errorNumber)\r
+       {\r
+       Call( lgcError);\r
+       }\r
+\r
+if (restoreInProgress)\r
+       {\r
+       Set( enableMenu);\r
+       DisableItem( cDummy);\r
+       }\r
+\r
+if (!currentRoom)\r
+       {\r
+[              Set( debugging);                                [       REMOVE LATER\r
+       if (!restartInProgress)\r
+               {\r
+               ScriptSize( 144);\r
+\r
+               SetMenu(      60);                                      [       "Sierra"\r
+               SetMenuItem(  61, cAbout);                      [       "About"\r
+               SetMenuItem(  62, cHelp);                       [       "Help"\r
+               SetMenuItem(  63, cDummy);                      [       "--------\r
+               SetMenuItem(  64, cCalculator);         [       "Calculator"\r
+               SetMenuItem(  65, cPuzzle);                     [       "Puzzle\r
+\r
+               SetMenu(      66);                                      [       "File\r
+               SetMenuItem(  67, cSave);                       [       "Save"\r
+               SetMenuItem(  68, cRestore);                    [       "Restore"\r
+               SetMenuItem(  69, cDummy);                      [       "--------\r
+               SetMenuItem(  70, cRestart);                    [       "Restart"\r
+               SetMenuItem(  69, cDummy);                      [       "--------\r
+               SetMenuItem(  71, cQuit);                       [       "Quit"\r
+\r
+               SetMenu(      72);                                      [       "Action\r
+               SetMenuItem(  73, cStatus);                     [       "Inventory"\r
+               SetMenuItem(  74, cShowObj);                    [       "Look at Object\r
+               SetMenuItem(  75, cBodilyFunction);     [       "Bodily\r
+\r
+               SetMenu(      76);                                      [       "Special\r
+               SetMenuItem(  77, cSoundToggle);                [       "Sound"\r
+               if  (machineType == PC &&\r
+                       monitorType != MONO &&\r
+                       monitorType != EGA)\r
+                       {\r
+                       SetMenuItem( 78, cToggleMonitor);       [       "RGB Monitor\r
+                       }\r
+               if  (machineType == ST)\r
+                       {\r
+                       SetMenuItem(  97, cInitJoy);            [       "Joystick/Mouse"\r
+                       }\r
+               else {\r
+                       SetMenuItem(  79, cInitJoy);            [       "Joystick"\r
+                       }\r
+               SetMenuItem(  80, cClock);                      [       "Clock\r
+               SetMenuItem(  96, cBoss);                       [       "Boss Key\r
+               SetMenuItem(  81, cPause);                      [       "Pause"\r
+\r
+               if (machineType != AMIGA)\r
+                       {\r
+                       SetMenu(      82);                              [       "Speed\r
+                       SetMenuItem(  83, cSpeedNormal);        [       "Normal\r
+                       SetMenuItem(  84, cSpeedSlow);  [       "Slow\r
+                       SetMenuItem(  85, cSpeedFast);  [       "Fast\r
+                       SetMenuItem(  86, cSpeedFastest);       [       "Fastest\r
+                       SetMenuItem(  69, cDummy);              [       "--------\r
+                       SetMenuItem(  87, cSpeed);              [       "Slower\r
+                       }\r
+\r
+[                      if (debugging)\r
+[                              {\r
+[                              SetMenu(      88);                              [       "Debug\r
+[                              SetMenuItem(  89, cShowEgo);            [       "Ego Info\r
+[                              SetMenuItem(  90, cShowPriority);       [       "Priority Screen\r
+[                              SetMenuItem(  91, cShowMem);            [       "Memory Usage\r
+[                              SetMenuItem(  92, cObjInfo);            [       "Obj info\r
+[                              SetMenuItem(  93, cXY);                         [       "X/Y Display\r
+[                              SetMenuItem(  94, cGimme);              [       "Get All Objects\r
+[                              SetMenuItem(  95, cInvNumbers); [       "Object Numbers\r
+[                              }\r
+\r
+               SubmitMenu();\r
+               }\r
+\r
+       Call( lgcStartup);\r
+\r
+       if (testRoom)\r
+               {\r
+               NewRoomV( testRoom);\r
+               }\r
+\r
+       if (restartInProgress)\r
+               {\r
+               NewRoom( rmRestart);\r
+               }\r
+\r
+       NewRoom( rmTitle);\r
+       }\r
+\r
+\r
+\r
+if  (clockOn &&\r
+    (updateClock || initLog))\r
+       {\r
+       Reset( updateClock);\r
+       SetTextAttribute( 0, 15);\r
+       Display( 0, 20, 30);\r
+       SetTextAttribute( TEXT_COLOR, BG_COLOR);\r
+       }\r
+\r
+\r
+if (initLog)\r
+       {\r
+       Call( lgcRm0InitLog);                   [       call and toss initLog Resets\r
+\r
+       if (debugging)\r
+               {\r
+               LoadLogics( lgcDebug);\r
+               LoadLogics( lgcTrace);\r
+               Set( enableTrace);\r
+               }\r
+\r
+       LoadViewV( currentEgoView);\r
+       SetViewV( ego, currentEgoView);\r
+\r
+       CallV( currentRoom);\r
+\r
+\r
+       [       DO NOT Return(); here.\r
+\r
+       }                                                       [       end initLogs\r
+\r
+\r
+\r
+[*****\r
+[      FIRST, A LITTLE HOUSEKEEPING\r
+[*****\r
+\r
+GetPosn( ego, egoX, egoY);\r
+CurrentView( ego, currentEgoView);\r
+Reset( nearPerson);\r
+\r
+if (ignoreSpecial)\r
+       {\r
+       Reset( hitSpecial);\r
+       }\r
+\r
+if (ignoreWater)\r
+       {\r
+       Reset( onWater);\r
+       }\r
+\r
+if (preventNewRoom)\r
+       {\r
+       edgeEgoHit = 0;\r
+       }\r
+\r
+\r
+\r
+[*****\r
+[      CONTROLLER STUFF\r
+[*****\r
+\r
+if (Controller( cMenu))                                {MenuInput();}\r
+if (Controller( cSkipTest))                    {Set( passedTest);}\r
+if (Controller( cToggleMonitor))               {ToggleMonitor();}\r
+if (Controller( cInitJoy))                     {InitJoy();}\r
+\r
+if (Controller( cSoundToggle))\r
+       {\r
+       Toggle( soundOn);\r
+       Set( updateClock);\r
+       }\r
+\r
+if (machineType == TANDY)\r
+       {\r
+       if (attenuation < 15 &&\r
+           Controller( cDecrescendo))          {++attenuation;}\r
+       if (Controller( cCrescendo))                    {--attenuation;}\r
+       }\r
+\r
+\r
+if (passedTest)\r
+       {\r
+       if (Controller( cEchoLine))                     {EchoLine();}\r
+       if (Controller( cCancelLine))                   {CancelLine();}\r
+\r
+       if ((Said( pause) ||\r
+               controller( cPause)))\r
+               {\r
+               Pause();\r
+               }\r
+\r
+       if  (passedTest &&\r
+           (Said( restart) ||\r
+               Said( restart, game) ||\r
+               Said( start, over) ||\r
+               Controller( cRestart)))\r
+               {\r
+               RestartGame();\r
+               }\r
+\r
+       if  (passedTest &&\r
+           (Said( restore, game) ||\r
+               Said( restore) ||\r
+               Controller( cRestore)))\r
+               {\r
+               RestoreGame();\r
+               }\r
+\r
+       if (Controller( cVersion))\r
+               {\r
+               Print( 11);\r
+               Version();\r
+               }\r
+\r
+       if ((Said( quit) ||\r
+               Controller( cQuit)))\r
+               {\r
+               StopSound();\r
+               if (debugging)\r
+                       {\r
+                       Quit( 1);\r
+                       }\r
+               else\r
+                       {\r
+                       Quit( 0);\r
+                       }\r
+               }\r
+\r
+       if ((Said( status) ||\r
+               Said( inventory) ||\r
+               Controller( cStatus)))\r
+               {\r
+               Status();\r
+               }\r
+\r
+       if (Controller( cClock))\r
+               {\r
+               Toggle( clockOn);\r
+               if (clockOn)\r
+                       {\r
+                       Set( updateClock);\r
+                       }\r
+               else\r
+                       {\r
+                       StatusLineOff();\r
+                       StatusLineOn();\r
+                       }\r
+               }\r
+\r
+       if (Controller( cDebug))\r
+               {\r
+               Toggle( debugging);\r
+               if (!debugging)\r
+                       {\r
+                       Reset( enableTrace);\r
+                       }\r
+               else\r
+                       {\r
+                       LoadLogics( lgcDebug);\r
+                       LoadLogics( lgcTrace);\r
+                       Set( enableTrace);\r
+                       Print( 11);\r
+                       Version();\r
+                       AcceptInput();\r
+                       NormalMotion( ego);\r
+                       Reset( programControl);\r
+                       }\r
+               }\r
+\r
+       if (Controller( cHelp))\r
+               {\r
+               if (handsOff)\r
+                       {\r
+                       Print( 105);\r
+                       }\r
+               else\r
+                       {\r
+                       Call( lgcHelp);\r
+                       }\r
+               }\r
+       }\r
+\r
+\r
+\r
+if (Controller( cShowObj))\r
+       {\r
+       Set( enableObjectSelect);\r
+       Status();\r
+       if (selectedObject != ERROR)\r
+               {\r
+               work = selectedObject;\r
+               work += 100;\r
+               ShowObjV( work);\r
+               }\r
+       Reset( enableObjectSelect);\r
+       }\r
+\r
+if (Controller( cAbout))\r
+       {\r
+       if (gameHours)\r
+               {\r
+               Print( 18);\r
+               }\r
+       else\r
+               {\r
+               Print( 19);\r
+               }\r
+       }\r
+\r
+\r
+Reset( myHaveMatch);                           [       speed stuff\r
+if (Controller( cSpeed))\r
+       {\r
+       Set( myHaveMatch);\r
+       ++animationInterval;\r
+       if (animationInterval > SLOW_SPEED)\r
+               {\r
+               animationInterval = FASTEST_SPEED;\r
+               }\r
+       }\r
+\r
+if ((Controller( cSpeedSlow) ||\r
+       Said( slow)))\r
+       {\r
+       Set( myHaveMatch);\r
+       animationInterval = SLOW_SPEED;\r
+       }\r
+\r
+if ((Controller( cSpeedNormal) ||\r
+       Said( normal)))\r
+       {\r
+       Set( myHaveMatch);\r
+       animationInterval = NORMAL_SPEED;\r
+       }\r
+\r
+if ((Controller( cSpeedFast) ||\r
+       Said( fast)))\r
+       {\r
+       Set( myHaveMatch);\r
+       animationInterval = FAST_SPEED;\r
+       }\r
+\r
+if ((Controller( cSpeedFastest) ||\r
+       Said( fastest)))\r
+       {\r
+       Set( myHaveMatch);\r
+       animationInterval = FASTEST_SPEED;\r
+       }\r
+\r
+if (myHaveMatch)\r
+       {\r
+       Reset( myHaveMatch);\r
+       if (monitorType != MONO)\r
+               {\r
+               message = 32;\r
+               message += animationInterval;\r
+               ClearTextRect( 24, 0, 24, 15, BG_COLOR);\r
+               y = 24;\r
+               x = 0;\r
+               DisplayV( y, x, message);\r
+               clearStatusSeconds = 6;\r
+               }\r
+       }\r
+\r
+\r
+\r
+[*****\r
+[      DEAD EGO\r
+[*****\r
+\r
+if (certainDeath)\r
+       {\r
+       Reset( certainDeath);\r
+       Set( handsOff);\r
+       currentStatus = DEAD;\r
+       LoadSound( mWhoops);\r
+       StopMotion( ego);\r
+       StopCycling( ego);\r
+       ProgramControl();                               [       keepCycling won't work here\r
+       AcceptInput();\r
+       deathTimer = CYCLES_BEFORE_DEATH;\r
+       DisableItem( cSave);\r
+       DisableItem( cBodilyFunction);\r
+       DisableItem( cBoss);\r
+       DisableItem( cCalculator);\r
+       DisableItem( cPuzzle);\r
+       DisableItem( cHelp);\r
+       }\r
+\r
+if (currentStatus == DEAD)\r
+       {\r
+       --deathTimer;\r
+       if (deathTimer == 1)\r
+               {\r
+               StopSound();\r
+               Sound( mWhoops,done);\r
+               Print( 13);\r
+               }\r
+\r
+       if (haveInput && !haveMatch)\r
+               {\r
+               Print( 14);\r
+               }\r
+\r
+       if (currentRoom == rmBoss)\r
+               {\r
+               CallV( currentRoom);\r
+               }\r
+\r
+       if (debugging)\r
+               {\r
+               Call( lgcDebug);\r
+               }\r
+\r
+       Return();\r
+       }\r
+\r
+\r
+if ((Said( save) ||\r
+       Said( save, game) ||\r
+       requestedASaveGame ||\r
+       Controller( cSave)))\r
+       {\r
+       if (preventSaveGame)\r
+               {\r
+               if (!requestedASaveGame)\r
+                       {\r
+                       Set( requestedASaveGame);\r
+                       Print( 109);\r
+                       }\r
+               }\r
+       else\r
+               {\r
+               Reset( requestedASaveGame);\r
+               SaveGame();\r
+               }\r
+       }\r
+\r
+\r
+if (Controller( cBoss))\r
+       {\r
+       if (handsOff)\r
+               {\r
+               Print( 105);\r
+               }\r
+       else\r
+               {\r
+               NewRoom( rmBoss);\r
+               }\r
+       }\r
+\r
+\r
+if (Controller( cBodilyFunction))\r
+       {\r
+       if (handsOff)\r
+               {\r
+               Print( 105);\r
+               }\r
+       else\r
+               {\r
+               CancelLine();\r
+               PreventInput();\r
+               SetString( 11, 185);                    [       a NULL string.\r
+               SetString( 12, 185);\r
+               GetString( 11, 122, 23, 0, 23); [string#, prompt, row, col, max length\r
+               if (CompareStrings( 11, 12))\r
+                       {\r
+                       SetString( 11, 125);\r
+                       }\r
+               Print( 123);\r
+               SetString( 11, 185);\r
+               SetString( 12, 185);\r
+               AcceptInput();\r
+               }\r
+       }\r
+\r
+\r
+if ((Controller( cPuzzle) ||\r
+       Controller( cCalculator)))\r
+       {\r
+       if (handsOff)\r
+               {\r
+               Print( 105);\r
+               }\r
+       else\r
+               {\r
+               PreventInput();\r
+               StatusLineOff();\r
+               SetTextAttribute( BLACK, WHITE);\r
+               TextScreen();\r
+               lastChar = 0;\r
+               if (Controller( cPuzzle))\r
+                       {\r
+                       Display(  6,  9, 115);          [       display puzzle \r
+                       Display(  7,  9, 116);\r
+                       Display(  8,  9, 120);\r
+                       Display(  9,  9, 117);\r
+                       Display( 10,  9, 120);\r
+                       Display( 11,  9, 118);\r
+                       Display( 12,  9, 120);\r
+                       Display( 13,  9, 119);\r
+                       Display( 14,  9, 115);\r
+                       Display( 21,  1, 121);\r
+                       }\r
+               else\r
+                       {\r
+                       Display(  8, 19, 110);          [       display calc screen\r
+                       Display(  9, 17, 111);\r
+                       Display( 10, 17, 112);\r
+                       Display( 11, 17, 113);\r
+                       Display( 21,  6, 114);\r
+                       }\r
+               :check.kb.3\r
+               if (!HaveKey())\r
+                       {\r
+                       goto    check.kb.3;\r
+                       }\r
+               AcceptInput();\r
+               StatusLineOn();\r
+               SetTextAttribute( TEXT_COLOR, BG_COLOR);\r
+               Graphics();\r
+               Set( haveMatch);\r
+               }\r
+       }\r
+\r
+\r
+[*****\r
+[      EGO CYCLING\r
+[*****\r
+\r
+if (egoDir == oldEgoDir &&\r
+       egoX == oldEgoX &&\r
+       egoY == oldEgoY)\r
+       {\r
+       StopCycling( ego);\r
+       }\r
+else\r
+       {\r
+       StartCycling( ego);\r
+       }\r
+\r
+if ((!egoDir || noCycling))\r
+       {\r
+       StopCycling( ego);\r
+       }\r
+\r
+if (keepCycling)\r
+       {\r
+       StartCycling( ego);\r
+       }\r
+\r
+\r
+[*****\r
+[      TIMERS\r
+[*****\r
+\r
+if (lastChar != oldLastChar)\r
+       {\r
+       Set( typing);\r
+       secondsSinceKeystroke = 0;\r
+       oldLastChar = lastChar;\r
+       }\r
+\r
+if (lastChar == 13)\r
+       {\r
+       Reset( typing);\r
+       }\r
+\r
+--scriptCycles;\r
+if (scriptCycles == 1)\r
+       {\r
+       Set( scriptDone);\r
+       }\r
+\r
+if (elapsedSeconds != oldSeconds)\r
+       {\r
+       oldSeconds = elapsedSeconds;\r
+       Set( aSecondPassed);                    [       inform all logics \r
+       Set( updateClock);\r
+\r
+       --clearStatusSeconds;\r
+       --spraySeconds;\r
+       --breathSpraySeconds;\r
+       --scriptTimer;\r
+\r
+       ++secondsInRoom;\r
+       ++gameSeconds;\r
+\r
+       if (scriptTimer == 1)\r
+               {\r
+               Set( scriptDone);\r
+               }\r
+\r
+       if (clearStatusSeconds == 1)            [       Can't be, if MONO.\r
+               {\r
+               ClearTextRect( 24, 0, 24, 15, BG_COLOR);\r
+               }\r
+\r
+\r
+       if  (currentRoom != rmTitle &&\r
+               currentRoom != rmSunrise &&\r
+               currentRoom != rmAgeTest)\r
+               {\r
+               if (gameSeconds == 60)\r
+                       {\r
+                       gameSeconds = 0;\r
+                       ++gameMinutes;\r
+                       if (gameMinutes == 60)\r
+                               {\r
+                               gameMinutes = 0;\r
+                               ++gameHours;\r
+[                                      if (gameHours == 25)\r
+[                                              {\r
+[                                              gameHours = 0;\r
+[                                              ++gameDays;\r
+[                                              }\r
+\r
+                               ++watchHours;\r
+                               if (watchHours == 13)\r
+                                       {\r
+                                       watchHours = 1;\r
+                                       }\r
+                               }\r
+                       }\r
+\r
+\r
+               if (breathSpraySeconds == 1)\r
+                       {\r
+                       Reset( handsOff);\r
+                       Reset( keepCycling);\r
+                       SetView( ego, vEgo);\r
+                       StartMotion( ego);\r
+                       Reset( programControl);\r
+                       AcceptInput( );\r
+                       Set( sprayDone);\r
+                       }\r
+\r
+\r
+               if (sprayMinutes && !spraySeconds)\r
+                       {\r
+                       --sprayMinutes;\r
+                       spraySeconds = 60;\r
+                       }\r
+\r
+               if (spraySeconds == 1 && !sprayMinutes)\r
+                       {\r
+                       Reset( mouthOK);\r
+                       Set( mouthSmellsBad);\r
+                       PrintV( mouthMessage);\r
+                       ++mouthMessage;\r
+                       if (mouthMessage > 160)\r
+                               {\r
+                               mouthMessage = 157;\r
+                               }\r
+                       }\r
+               }\r
+\r
+\r
+       if (typing)\r
+               {\r
+               ++secondsSinceKeystroke;\r
+               if (secondsSinceKeystroke > 1)\r
+                       {\r
+                       Reset( typing);\r
+                       }\r
+               }\r
+       }                                                       [       end of "aSecondPassed"\r
+\r
+\r
+\r
+\r
+[****************************************************************************]\r
+[********************  PREPARE TO CALL LOCAL ROOMS     **********************]\r
+[****************************************************************************]\r
+\r
+\r
+if (!initLog)\r
+       {\r
+       CallV( currentRoom);\r
+       }\r
+\r
+if (debugging)\r
+       {\r
+       Call( lgcDebug);\r
+       }\r
+\r
+\r
+\r
+[****************************************************************************]\r
+[********************  AFTER CALLING LOCAL ROOMS       **********************]\r
+[****************************************************************************]\r
+\r
+\r
+[*****\r
+[      NO INPUT\r
+[*****\r
+\r
+if (OK)\r
+       {\r
+       Reset( OK);\r
+       Print( 57);\r
+       }\r
+\r
+if (notCloseEnough)\r
+       {\r
+       Reset( notCloseEnough);\r
+       Print( 55);\r
+       }\r
+\r
+if (alreadyGotIt)\r
+       {\r
+       Reset( alreadyGotIt);\r
+       Print( 56);\r
+       }\r
+\r
+if (dontHaveIt)\r
+       {\r
+       Reset( dontHaveIt);\r
+       Print( 16);\r
+       }\r
+\r
+if (sprayDone)\r
+       {\r
+       Reset( sprayDone);\r
+       Print( 102);\r
+       ++sprayCount;\r
+       if (sprayCount > 9)\r
+               {\r
+               Print( 170);\r
+               Drop( iBreathSpray);\r
+               }\r
+\r
+       if (nearPerson)\r
+               {\r
+               Print( 168);\r
+               }\r
+       }\r
+\r
+if (nearPerson && !mouthOK && mouthSmellsBad)\r
+       {\r
+       Reset( mouthSmellsBad);\r
+       Print( 145);\r
+       }\r
+\r
+if (nearPerson && smellsLikeDogPiss)\r
+       {\r
+       Reset( smellsLikeDogPiss);\r
+       Print( 108);\r
+       }\r
+\r
+if (nearPerson && toiletPaperOnShoe)\r
+       {\r
+       Reset( toiletPaperOnShoe)\r
+       Print( 107);\r
+       Print( 128);\r
+       }\r
+\r
+if (!dollars && !preventSaveGame && !betInProgress)\r
+       {\r
+       Print( 129);\r
+       Print( 130);\r
+       Erase( ego);\r
+       Set( certainDeath);\r
+       }\r
+\r
+if (demo && HaveKey())\r
+       {\r
+       Reset( demo);\r
+       NewRoom( rmAgeTest);\r
+       }\r
+\r
+\r
+\r
+[*****\r
+[      HANDLE PREVIOUSLY UNHANDLED INPUT\r
+[*****\r
+\r
+if ((haveMatch ||\r
+    !haveInput ||\r
+       currentStatus == SLEEPING ||\r
+       currentStatus == DEAD))\r
+       {\r
+       goto exit;\r
+       }\r
+\r
+\r
+[      if (!unknownWord && debugging)\r
+[              {\r
+[              Log( 21);\r
+[              }\r
+\r
+if (Said( thanks, rol))\r
+       {\r
+       Print( 28);\r
+       }\r
+\r
+if ((Said( bye, rol) ||\r
+       Said( anyword, bye, rol)))\r
+       {\r
+       Print( 31);\r
+       }\r
+\r
+if (Said( hi, rol))\r
+       {\r
+       Print( 26);\r
+       }\r
+\r
+if (Said( laugh))\r
+       {\r
+       Print( 174);\r
+       }\r
+\r
+if ((Said( lie, rol) ||\r
+       Said( rest, rol)))\r
+       {\r
+       Print( 175);\r
+       }\r
+\r
+[*****\r
+[      HANDLE INVENTORY THINGS\r
+[*****\r
+\r
+if ((Said( look, money) ||\r
+       Said( count, dollars)))\r
+       {\r
+       Print( 15);\r
+       }\r
+\r
+if ((Said( drop, wallet, rol) ||\r
+       Said( drop, my, wallet, rol)))\r
+       {\r
+       Print( 25);\r
+       }\r
+\r
+if (Said( use, wallet, rol))\r
+       {\r
+       Print( 51);\r
+       }\r
+\r
+if ((Said( open, wallet) ||\r
+       Said( look$in, wallet) ||\r
+       Said( show, wallet)))\r
+       {\r
+       ShowObj( ivWallet);\r
+       }\r
+\r
+if ((Said( give, wallet, anyword) ||\r
+       Said( give, wallet) ||\r
+       Said( give, anyword, wallet)))\r
+       {\r
+       if (!nearPerson)\r
+               {\r
+               Print( 45);\r
+               }\r
+       else\r
+               {\r
+               Print( 178);\r
+               Print( 179);\r
+               Drop( iWallet);\r
+               dollars = 0;\r
+               }\r
+       }\r
+\r
+\r
+if (Said( drop, spray, rol))\r
+       {\r
+       Print( 25);\r
+       }\r
+\r
+if (Said( show, spray, rol))\r
+       {\r
+       ShowObj( ivBreathSpray);\r
+       }\r
+\r
+if ((Said( give, spray, anyword) ||\r
+       Said( give, spray) ||\r
+       Said( give, anyword, spray)))\r
+       {\r
+       if ((!nearPerson || !Has( iBreathSpray)))\r
+               {\r
+               Print( 45);\r
+               }\r
+       else\r
+               {\r
+               Print( 183);\r
+               Print( 184);\r
+               }\r
+       }\r
+\r
+if ((Said( spray, spray) ||\r
+       Said( spray, spray, mouth) ||\r
+       Said( spray, mouth) ||\r
+       Said( spray, breath) ||\r
+       Said( use, spray)))\r
+       {\r
+       if (!Has( iBreathSpray))\r
+               {\r
+               Print( 171);\r
+               }\r
+       else\r
+               {\r
+               sprayMinutes = SPRAY_INIT_MINUTES;\r
+               Set( mouthOK);\r
+               Print( 101);\r
+\r
+               if ((handsOff || currentEgoView != NORMAL))\r
+                       {\r
+                       Set( sprayDone);\r
+                       }\r
+               else\r
+                       {\r
+                       LoadView( vEgoBreathSpray);\r
+                       SetView( ego, vEgoBreathSpray);\r
+                       ForceUpdate( ego);\r
+\r
+                       breathSpraySeconds = 5;\r
+                       Set( handsOff);\r
+                       Set( keepCycling);\r
+                       StopMotion( ego);\r
+                       Set( programControl);\r
+                       PreventInput();\r
+                       }\r
+               }\r
+       }\r
+\r
+\r
+\r
+if (Said( drop, lint, rol))\r
+       {\r
+       Print( 25);\r
+       }\r
+\r
+if (Said( use, lint, rol))\r
+       {\r
+       Print( 132);\r
+       }\r
+\r
+if (Said( show, lint))\r
+       {\r
+       ShowObj( ivPocketLint);\r
+       }\r
+\r
+if ((Said( give, lint, anyword) ||\r
+       Said( give, lint) ||\r
+       Said( give, anyword, lint)))\r
+       {\r
+       if (!nearPerson)\r
+               {\r
+               Print( 45);\r
+               }\r
+       else\r
+               {\r
+               Print( 183);\r
+               Print( 184);\r
+               }\r
+       }\r
+\r
+\r
+\r
+if (Said( drop, watch, rol))\r
+       {\r
+       Print( 25);\r
+       }\r
+\r
+if (Said( use, watch, rol))\r
+       {\r
+       Print( 51);\r
+       }\r
+\r
+if (Said( show, watch))\r
+       {\r
+       ShowObj( ivWatch);\r
+       }\r
+\r
+if (Said( set, watch))\r
+       {\r
+       Print( 17);\r
+       }\r
+\r
+if ((Said( give, watch, anyword) ||\r
+       Said( give, watch) ||\r
+       Said( give, anyword, watch)))\r
+       {\r
+       if (!nearPerson)\r
+               {\r
+               Print( 45);\r
+               }\r
+       else\r
+               {\r
+               Print( 183);\r
+               Print( 184);\r
+               }\r
+       }\r
+\r
+\r
+\r
+if (Said( drop, apple, rol))\r
+       {\r
+       if (Has( iApple))\r
+               {\r
+               Print( 25);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if (Said( use, apple, rol))\r
+       {\r
+       if (Has( iApple))\r
+               {\r
+               Print( 51);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if ((Said( take, bite, apple, rol) ||\r
+       Said( eat, apple, rol)))\r
+       {\r
+       if (Has( iApple))\r
+               {\r
+               Print( 153);\r
+               Drop( iApple);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if (Said( show, apple))\r
+       {\r
+       if (Has( iApple))\r
+               {\r
+               ShowObj( ivApple);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if ((Said( give, apple, anyword) ||\r
+       Said( give, apple) ||\r
+       Said( give, anyword, apple)))\r
+       {\r
+       if ((!nearPerson || !Has( iApple)))\r
+               {\r
+               Print( 45);\r
+               }\r
+       else\r
+               {\r
+               Print( 178);\r
+               Print( 179);\r
+               Drop( iApple);\r
+               }\r
+       }\r
+\r
+\r
+\r
+if (Said( drop, ring, rol))\r
+       {\r
+       if (Has( iRing))\r
+               {\r
+               Print( 25);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if (Said( use, ring, rol))\r
+       {\r
+       if (Has( iRing))\r
+               {\r
+               Print( 51);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if ((Said( put, ring, me) ||\r
+       Said( put, ring, on, me) ||\r
+       Said( put, ring, finger) ||\r
+       Said( put, ring, on, finger) ||\r
+       Said( wear, ring, rol)))\r
+       {\r
+       if (Has( iRing))\r
+               {\r
+               Print( 57);\r
+               Print( 140);\r
+               Print( 141);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if (Said( show, ring))\r
+       {\r
+       if (Has( iRing))\r
+               {\r
+               ShowObj( ivRing);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if ((Said( give, ring, anyword) ||\r
+       Said( give, ring) ||\r
+       Said( give, anyword, ring)))\r
+       {\r
+       if ((!nearPerson || !Has( iRing)))\r
+               {\r
+               Print( 45);\r
+               }\r
+       else\r
+               {\r
+               Print( 178);\r
+               Print( 179);\r
+               Drop( iRing);\r
+               }\r
+       }\r
+\r
+\r
+\r
+if (Said( drop, whiskey, rol))\r
+       {\r
+       if (Has( iWhiskey))\r
+               {\r
+               Print( 25);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if (Said( use, whiskey, rol))\r
+       {\r
+       if (Has( iWhiskey))\r
+               {\r
+               Print( 51);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if (Said( drink, whiskey))\r
+       {\r
+       if (Has( iWhiskey))\r
+               {\r
+               Drop( iWhiskey);\r
+               sprayMinutes = 0;\r
+               spraySeconds = 4;\r
+               Print( 9);\r
+               Print( 142);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if (Said( show, whiskey))\r
+       {\r
+       if (Has( iWhiskey))\r
+               {\r
+               ShowObj( ivWhiskey);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if ((Said( give, whiskey, anyword) ||\r
+       Said( give, whiskey) ||\r
+       Said( give, anyword, whiskey)))\r
+       {\r
+       if ((!nearPerson || !Has( iWhiskey)))\r
+               {\r
+               Print( 45);\r
+               }\r
+       else\r
+               {\r
+               Print( 178);\r
+               Print( 179);\r
+               Drop( iWhiskey);\r
+               }\r
+       }\r
+\r
+\r
+\r
+if (Said( drop, remote, rol))\r
+       {\r
+       if (Has( iRemoteControl))\r
+               {\r
+               Print( 25);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if ((Said( use, remote, rol) ||\r
+       Said( press, button, remote, rol) ||\r
+       Said( press, button, on, remote, rol) ||\r
+       Said( press, remote, rol)))\r
+       {\r
+       if (Has( iRemoteControl))\r
+               {\r
+               Print( 138);\r
+               Print( 139);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if (Said( show, remote))\r
+       {\r
+       if (Has( iRemoteControl))\r
+               {\r
+               ShowObj( ivRemoteControl);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if ((Said( give, remote, anyword) ||\r
+       Said( give, remote) ||\r
+       Said( give, anyword, remote)))\r
+       {\r
+       if ((!nearPerson || !Has( iRemoteControl)))\r
+               {\r
+               Print( 45);\r
+               }\r
+       else\r
+               {\r
+               Print( 178);\r
+               Print( 179);\r
+               Drop( iRemoteControl);\r
+               }\r
+       }\r
+\r
+\r
+\r
+if (Said( drop, rose, rol))\r
+       {\r
+       if (Has( iRose))\r
+               {\r
+               Print( 25);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if (Said( use, rose, rol))\r
+       {\r
+       if (Has( iRose))\r
+               {\r
+               Print( 51);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if (Said( smell, rose, rol))\r
+       {\r
+       if (Has( iRose))\r
+               {\r
+               Print( 143);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if (Said( show, rose))\r
+       {\r
+       if (Has( iRose))\r
+               {\r
+               ShowObj( ivRose);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if ((Said( give, rose, anyword) ||\r
+       Said( give, rose) ||\r
+       Said( give, anyword, rose)))\r
+       {\r
+       if ((!nearPerson || !Has( iRose)))\r
+               {\r
+               Print( 45);\r
+               }\r
+       else\r
+               {\r
+               Print( 178);\r
+               Print( 179);\r
+               Drop( iRose);\r
+               }\r
+       }\r
+\r
+\r
+\r
+if (Said( drop, rubber, rol))\r
+       {\r
+       if ((Has( iUsedRubber) || Has( iRubber)))\r
+               {\r
+               Print( 25);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if ((Said( use, rubber, rol) ||\r
+       Said( use, used, rubber, rol) ||\r
+       Said( wear, used, rubber, rol) ||\r
+       Said( wear, rubber, rol)))\r
+       {\r
+       if ((Has( iUsedRubber) || Has( iRubber)))\r
+               {\r
+               Print( 105);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if (wearingRubber &&\r
+    (Said( remove, rubber, rol) ||\r
+       Said( remove, used, rubber, rol) ||\r
+       Said( take, used, rubber, off, rol) ||\r
+       Said( take, rubber, off, rol)))\r
+       {\r
+       Reset( wearingRubber);\r
+       Drop( iUsedRubber);\r
+       currentScore += 1;\r
+       Print( 127);\r
+       }\r
+\r
+if ((Said( show, used, rubber) ||\r
+       Said( show, rubber)))\r
+       {\r
+       if (Has( iRubber))\r
+               {\r
+               ShowObj( ivRubber);\r
+               }\r
+       else\r
+               {\r
+               if (Has( iUsedRubber))\r
+                       {\r
+                       ShowObj( ivUsedRubber);\r
+                       }\r
+               else\r
+                       {\r
+                       Set( dontHaveIt);\r
+                       }\r
+               }\r
+       }\r
+\r
+if ((Said( give, used, rubber, anyword) ||\r
+       Said( give, used, rubber) ||\r
+       Said( give, anyword, used, rubber)))\r
+       {\r
+       if ((!nearPerson || !Has( iUsedRubber)))\r
+               {\r
+               Print( 45);\r
+               }\r
+       else\r
+               {\r
+               Print( 183);\r
+               Print( 184);\r
+               }\r
+       }\r
+\r
+if ((Said( give, rubber, anyword) ||\r
+       Said( give, rubber) ||\r
+       Said( give, anyword, rubber)))\r
+       {\r
+       if ((!nearPerson || !Has( iRubber)))\r
+               {\r
+               Print( 45);\r
+               }\r
+       else\r
+               {\r
+               Print( 183);\r
+               Print( 184);\r
+               }\r
+       }\r
+\r
+\r
+\r
+if (Said( drop, candy, rol))\r
+       {\r
+       if (Has( iCandy))\r
+               {\r
+               Print( 25);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if ((Said( use, candy, rol) ||\r
+       Said( use, anyword, candy, rol) ||\r
+       Said( eat, anyword, candy, rol) ||\r
+       Said( eat, candy, rol)))\r
+       {\r
+       if (Has( iCandy))\r
+               {\r
+               Print( 162);\r
+               Drop( iCandy);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if (Said( show, candy))\r
+       {\r
+       if (Has( iCandy))\r
+               {\r
+               ShowObj( ivCandy);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if ((Said( give, candy, anyword) ||\r
+       Said( give, candy) ||\r
+       Said( give, anyword, candy)))\r
+       {\r
+       if ((!nearPerson || !Has( iCandy)))\r
+               {\r
+               Print( 45);\r
+               }\r
+       else\r
+               {\r
+               Print( 178);\r
+               Print( 179);\r
+               Drop( iCandy);\r
+               }\r
+       }\r
+\r
+\r
+[      Inflatable doll handled entirely in room 45\r
+\r
+\r
+if (Said( drop, pass, rol))\r
+       {\r
+       if (Has( iDiscoPass))\r
+               {\r
+               Print( 25);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if (Said( use, pass, rol))\r
+       {\r
+       if (Has( iDiscoPass))\r
+               {\r
+               Print( 51);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if ((Said( show, disco, pass) || Said( show, pass)))\r
+       {\r
+       if (Has( iDiscoPass))\r
+               {\r
+               ShowObj( ivDiscoPass);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if ((Said( give, card, anyword) ||\r
+       Said( give, card) ||\r
+       Said( give, anyword, card)))\r
+       {\r
+       if ((!nearPerson || !Has( iDiscoPass)))\r
+               {\r
+               Print( 45);\r
+               }\r
+       else\r
+               {\r
+               Print( 178);\r
+               Print( 179);\r
+               Drop( iDiscoPass);\r
+               }\r
+       }\r
+\r
+\r
+if (Said( drop, knife, rol))\r
+       {\r
+       if (Has( iPocketKnife))\r
+               {\r
+               Print( 25);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if (Said( use, knife, rol))\r
+       {\r
+       if (Has( iPocketKnife))\r
+               {\r
+               Print( 51);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if (Said( show, knife))\r
+       {\r
+       if (Has( iPocketKnife))\r
+               {\r
+               ShowObj( ivPocketKnife);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if ((Said( give, knife, anyword) ||\r
+       Said( give, knife) ||\r
+       Said( give, anyword, knife)))\r
+       {\r
+       if ((!nearPerson || !Has( iPocketKnife)))\r
+               {\r
+               Print( 45);\r
+               }\r
+       else\r
+               {\r
+               Print( 178);\r
+               Print( 179);\r
+               Drop( iPocketKnife);\r
+               }\r
+       }\r
+\r
+\r
+\r
+if (Said( drop, wine, rol))\r
+       {\r
+       if (Has( iWine))\r
+               {\r
+               Print( 25);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if ((Said( drink, wine) ||\r
+       Said( use, wine)))\r
+       {\r
+       if (Has( iWine))\r
+               {\r
+               Drop( iWine);\r
+               sprayMinutes = 0;\r
+               spraySeconds = 4;\r
+               Print( 106);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if (Said( show, wine))\r
+       {\r
+       if (Has( iWine))\r
+               {\r
+               ShowObj( ivWine);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if ((Said( give, wine, anyword) ||\r
+       Said( give, wine) ||\r
+       Said( give, anyword, wine)))\r
+       {\r
+       if ((!nearPerson || !Has( iWine)))\r
+               {\r
+               Print( 45);\r
+               }\r
+       else\r
+               {\r
+               Print( 178);\r
+               Print( 179);\r
+               Drop( iWine);\r
+               }\r
+       }\r
+\r
+\r
+\r
+if (Said( drop, magazine, rol))\r
+       {\r
+       if (Has( iMagazine))\r
+               {\r
+               Print( 25);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if (Said( use, magazine))\r
+       {\r
+       if (Has( iMagazine))\r
+               {\r
+               Print( 51);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if ((Said( open, magazine) ||\r
+       Said( show, magazine)))\r
+       {\r
+       if (Has( iMagazine))\r
+               {\r
+               Print( 169);\r
+               ShowObj( ivMagazine);\r
+               if (!readMagazine)\r
+                       {\r
+                       Set( readMagazine);\r
+                       currentScore += 1;\r
+                       }\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if ((Said( give, magazine, anyword) ||\r
+       Said( give, magazine) ||\r
+       Said( give, anyword, magazine)))\r
+       {\r
+       if ((!nearPerson || !Has( iMagazine)))\r
+               {\r
+               Print( 45);\r
+               }\r
+       else\r
+               {\r
+               Print( 178);\r
+               Print( 179);\r
+               Drop( iMagazine);\r
+               }\r
+       }\r
+\r
+\r
+\r
+if (Said( drop, hammer, rol))\r
+       {\r
+       if (Has( iHammer))\r
+               {\r
+               Print( 25);\r
+               }\r
+       else\r
+               {\r
+               Print( 181);\r
+               }\r
+       }\r
+\r
+if (Said( use, hammer))\r
+       {\r
+       if (Has( iHammer))\r
+               {\r
+               Print( 51);\r
+               }\r
+       else\r
+               {\r
+               Print( 181);\r
+               }\r
+       }\r
+\r
+if (Said( throw, hammer, rol))\r
+       {\r
+       if (Has( iHammer))\r
+               {\r
+               Print( 177);\r
+               Drop( iHammer);\r
+               }\r
+       else\r
+               {\r
+               Print( 181);\r
+               }\r
+       }\r
+\r
+if ((Said( hit, anyword, with, hammer) ||\r
+       Said( use, hammer, hit, anyword)))\r
+       {\r
+       if (Has( iHammer))\r
+               {\r
+               Print( 176);\r
+               }\r
+       else\r
+               {\r
+               Print( 181);\r
+               }\r
+       }\r
+\r
+if (Said( show, hammer))\r
+       {\r
+       if (Has( iHammer))\r
+               {\r
+               ShowObj( ivHammer);\r
+               }\r
+       else\r
+               {\r
+               Print( 181);\r
+               }\r
+       }\r
+\r
+if ((Said( give, hammer, anyword) ||\r
+       Said( give, hammer) ||\r
+       Said( give, anyword, hammer)))\r
+       {\r
+       if ((!nearPerson || !Has( iHammer)))\r
+               {\r
+               Print( 45);\r
+               }\r
+       else\r
+               {\r
+               Print( 178);\r
+               Print( 179);\r
+               Drop( iHammer);\r
+               }\r
+       }\r
+\r
+if ((Said( tie, rope, hammer) ||\r
+       Said( tie, hammer, rope)))\r
+       {\r
+       if (Has( iHammer) && Has( iRope))\r
+               {\r
+               Print( 176);\r
+               }\r
+\r
+       if (!Has( iRope))\r
+               {\r
+               Print( 180);\r
+               }\r
+\r
+       if (!Has( iHammer))\r
+               {\r
+               Print( 181);\r
+               }\r
+       }\r
+\r
+\r
+\r
+if (Said( drop, pills, rol))\r
+       {\r
+       if (Has( iPills))\r
+               {\r
+               Print( 25);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if ((Said( use, pills) ||\r
+       Said( take, pills) ||\r
+       Said( open, pills) ||\r
+       Said( eat, pills)))\r
+       {\r
+       if (Has( iPills))\r
+               {\r
+               Print( 38);\r
+               Print( 27);\r
+               Erase( ego);\r
+               Set( certainDeath);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+if (Said( show, pills))\r
+       {\r
+       if (Has( iPills))\r
+               {\r
+               ShowObj( ivPills);\r
+               }\r
+       else\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       }\r
+\r
+\r
+if ((Said( give, pills, anyword) ||\r
+       Said( give, pills) ||\r
+       Said( give, anyword, pills)))\r
+       {\r
+       if ((!nearPerson || !Has( iPills)))\r
+               {\r
+               Print( 45);\r
+               }\r
+       else\r
+               {\r
+               Print( 178);\r
+               Print( 179);\r
+               Drop( iPills);\r
+               }\r
+       }\r
+\r
+\r
+\r
+if (Said( drop, rope, rol))\r
+       {\r
+       if (Has( iRope))\r
+               {\r
+               Print( 25);\r
+               }\r
+       else\r
+               {\r
+               Print( 180);\r
+               }\r
+       }\r
+\r
+if (Said( throw, rope, rol))\r
+       {\r
+       if (Has( iRope))\r
+               {\r
+               Print( 177);\r
+               Drop( iRope);\r
+               }\r
+       else\r
+               {\r
+               Print( 180);\r
+               }\r
+       }\r
+\r
+if (Said( use, rope, rol))\r
+       {\r
+       if (Has( iRope))\r
+               {\r
+               Print( 51);\r
+               }\r
+       else\r
+               {\r
+               Print( 180);\r
+               }\r
+       }\r
+\r
+if ((Said( tie, rope, rol) ||\r
+       Said( tie, anyword, rope)))\r
+       {\r
+       if (Has( iRope))\r
+               {\r
+               Print( 176);\r
+               }\r
+       else\r
+               {\r
+               Print( 180);\r
+               }\r
+       }\r
+\r
+if (Said( show, rope))\r
+       {\r
+       if (Has( iRope))\r
+               {\r
+               ShowObj( ivRope);\r
+               }\r
+       else\r
+               {\r
+               Print( 180);\r
+               }\r
+       }\r
+\r
+if ((Said( give, rope, anyword) ||\r
+       Said( give, rope) ||\r
+       Said( give, anyword, rope)))\r
+       {\r
+       if ((!nearPerson || !Has( iRope)))\r
+               {\r
+               Print( 45);\r
+               }\r
+       else\r
+               {\r
+               Print( 178);\r
+               Print( 179);\r
+               Drop( iRope);\r
+               }\r
+       }\r
+\r
+\r
+\r
+[*****\r
+[      HANDLE WHATEVER'S LEFT\r
+[*****\r
+\r
+if (!haveMatch && haveInput &&         [       First, discard unknown words.\r
+       unknownWord)\r
+       {\r
+       Set( haveMatch);\r
+       PrintV( unknownWord);           [       prints messages #1 - 9\r
+       }\r
+\r
+\r
+if ((Said( anyword, credit$card) ||\r
+       Said( anyword, credit$card, wallet) ||\r
+       Said( anyword, credit$card, from, wallet)))\r
+       {\r
+       Print( 172);\r
+       }\r
+\r
+if ((Said( read, notes) ||\r
+       Said( read, notes, wallet)))\r
+       {\r
+       Print( 147);\r
+       }\r
+\r
+if ((Said( anyword, business$card) ||\r
+       Said( anyword, business$card, wallet) ||\r
+       Said( anyword, business$card, from, wallet)))\r
+       {\r
+       Print( 152);\r
+       }\r
+\r
+if ((Said( anyword, notes) ||\r
+       Said( anyword, notes, wallet) ||\r
+       Said( anyword, notes, from, wallet)))\r
+       {\r
+       Print( 148);\r
+       }\r
+\r
+\r
+\r
+[      Handle potty-mouths.\r
+\r
+if ((Said( fuck$you, rol) ||\r
+       Said( anyword, fuck$you, rol)))\r
+       {\r
+       Print( 133);\r
+       }\r
+\r
+if ((Said( hump, rol) ||\r
+       Said( anyword, hump, rol) ||\r
+       Said( anyword, anyword, hump, rol) ||\r
+       Said( anyword, anyword, anyword, hump, rol)))\r
+       {\r
+       Print( 135);\r
+       }\r
+\r
+if (Said( masturbate, rol))\r
+       {\r
+       Print( 124);\r
+       }\r
+\r
+if ((Said( touch, pussy, rol) ||\r
+       Said( stroke, pussy, rol) ||\r
+       Said( kiss, pussy, rol) ||\r
+       Said( lick, pussy, rol) ||\r
+       Said( look, pussy, rol)))\r
+       {\r
+       Print( 173);\r
+       }\r
+\r
+\r
+\r
+[      Misc. looks.\r
+\r
+if ((Said( look, suit) ||\r
+       Said( look$in, suit) ||\r
+       Said( search, suit)))\r
+       {\r
+       Print( 20);\r
+       }\r
+\r
+if ((Said( look, man) ||\r
+       Said( look, girl)))\r
+       {\r
+       Print( 24);\r
+       }\r
+\r
+if ((Said( look, wall) ||\r
+       Said( look, building)))\r
+       {\r
+       Print( 149);\r
+       }\r
+\r
+if ((Said( look, ground) ||\r
+       Said( look, down)))\r
+       {\r
+       Print( 151);\r
+       }\r
+\r
+if (Said( look, door))\r
+       {\r
+       Print( 103);\r
+       }\r
+\r
+if ((Said( look, sky) ||\r
+       Said( look, ceiling)))\r
+       {\r
+       Print( 161);\r
+       }\r
+\r
+if (Said( look, rol))\r
+       {\r
+       Random( 42, 44, work);\r
+       PrintV( work);\r
+       }\r
+\r
+\r
+if (Said( jump))\r
+       {\r
+       Print( 163);\r
+       }\r
+\r
+if (Said( talk))\r
+       {\r
+       Print( 126);\r
+       }\r
+\r
+if (Said( talk, rol))\r
+       {\r
+       Print( 41);\r
+       }\r
+\r
+if (Said( yell))\r
+       {\r
+       Print( 167);\r
+       }\r
+\r
+if ((Said( climb, wall) ||\r
+       Said( climb, building)))\r
+       {\r
+       Print( 150);\r
+       }\r
+\r
+if (Said( smell, anyword, rol))\r
+       {\r
+       Print( 131);\r
+       }\r
+\r
+if (Said( take, anyword, rol))\r
+       {\r
+       Random( 46, 48, work);\r
+       PrintV( work);\r
+       }\r
+\r
+if (Said( go, anyword, rol))\r
+       {\r
+       Print( 49);\r
+       }\r
+\r
+if (Said( use, anyword, rol))\r
+       {\r
+       Print( 54);\r
+       }\r
+\r
+if (Said( get, anyword, rol))\r
+       {\r
+       Print( 23);\r
+       }\r
+\r
+if (Said( lick, girl, rol))\r
+       {\r
+       Print( 59);\r
+       }\r
+\r
+if (Said( eat, anyword, rol))\r
+       {\r
+       Print( 37);\r
+       }\r
+\r
+if (Said( kiss, anyword, rol))\r
+       {\r
+       Print( 39);\r
+       }\r
+\r
+if (Said( laugh, anyword, rol))\r
+       {\r
+       Print( 165);\r
+       }\r
+\r
+if ((Said( kill, anyword, rol) ||\r
+       Said( hit, anyword, rol)))\r
+       {\r
+       Print( 50);\r
+       }\r
+\r
+if ((Said( look$in, man, rol) ||\r
+       Said( look$in, person, rol) ||\r
+       Said( look$in, woman, rol) ||\r
+       Said( look$in, clothes, rol) ||\r
+       Said( search, clothes, rol) ||\r
+       Said( search, man, rol) ||\r
+       Said( search, person, rol) ||\r
+       Said( search, woman, rol)))\r
+       {\r
+       if (!nearPerson)\r
+               {\r
+               Set( notCloseEnough);\r
+               }\r
+       else\r
+               {\r
+               Print( 155);\r
+               }\r
+       }\r
+\r
+if (Said( search, rol))\r
+       {\r
+       Print( 166);\r
+       }\r
+\r
+if (Said( drop, anyword, rol))\r
+       {\r
+       Print( 156);\r
+       }\r
+\r
+if ((Said( unlock, door, rol) ||\r
+       Said( use, key, rol)))\r
+       {\r
+       Print( 144);\r
+       }\r
+\r
+if ((Said( knock, door) ||\r
+       Said( knock, on, door)))\r
+       {\r
+       Print( 164);\r
+       }\r
+\r
+if ((Said( help, man, rol) ||\r
+       Said( help, woman, rol) ||\r
+       Said( help, person, rol)))\r
+       {\r
+       Print( 154);\r
+       }\r
+\r
+if (Said( help, rol))\r
+       {\r
+       Print( 40);\r
+       }\r
+\r
+if ((Said( crack, rol) ||\r
+       Said( crap, rol) ||\r
+       Said( pee, rol) ||\r
+       Said( lay, rol) ||\r
+       Said( cut$one, rol) ||\r
+       Said( asshole, rol) ||\r
+       Said( boob, rol) ||\r
+       Said( butt, rol) ||\r
+       Said( cunnilingus, rol) ||\r
+       Said( suck$me, rol)))\r
+       {\r
+       Print( 136);\r
+       }\r
+\r
+if ((Said( anyword, crack, rol) ||\r
+       Said( anyword, crap, rol) ||\r
+       Said( anyword, pee, rol) ||\r
+       Said( anyword, lay, rol) ||\r
+       Said( anyword, cut$one, rol) ||\r
+       Said( anyword, asshole, rol) ||\r
+       Said( anyword, boob, rol) ||\r
+       Said( anyword, butt, rol) ||\r
+       Said( anyword, cunnilingus, rol) ||\r
+       Said( anyword, suck$me, rol)))\r
+       {\r
+       Print( 137);\r
+       }\r
+\r
+if ((Said( anyword, lady) ||\r
+       Said( anyword, anyword, lady) ||\r
+       Said( anyword, lady, anyword)))\r
+       {\r
+       Print( 104);\r
+       }\r
+\r
+if (Said( sierra, rol))\r
+       {\r
+       Print( 186);\r
+       }\r
+\r
+\r
+if (!haveMatch && haveInput)\r
+       {\r
+       Print( 45);\r
+[              if (debugging)\r
+[                      {\r
+[                      Log( 146);\r
+[                      }\r
+       }\r
+\r
+\r
+\r
+[*****\r
+:exit\r
+[*****\r
+\r
+\r
+GetPosn( ego, oldEgoX, oldEgoY);               [       Clean up, fix up for next pass.\r
+oldEgoDir = egoDir;\r
+Reset( aSecondPassed);\r
+++passInRoom;\r
+\r
+if (oldCurrentScore != currentScore)\r
+       {\r
+       oldCurrentScore = currentScore;\r
+       Set( updateClock);\r
+       }\r
+\r
+if (programControl)\r
+       {\r
+       ProgramControl();\r
+       }\r
+else\r
+       {\r
+       PlayerControl();\r
+       }\r
+\r
+\r
+if (newRoom)\r
+       {\r
+       if (handsOff)\r
+               {\r
+               newRoom = 0;\r
+               }\r
+       else\r
+               {\r
+               oldEdgeEgoHit = edgeEgoHit;\r
+               Reset( noScript);\r
+               NewRoomV( newRoom);\r
+               }\r
+       }\r
diff --git a/RM0.MSG b/RM0.MSG
new file mode 100644 (file)
index 0000000..b0591f0
--- /dev/null
+++ b/RM0.MSG
@@ -0,0 +1,554 @@
+[messages for room 0\r
+[      "Leisure Suit Larry in the Land of the Lounge Lizards"\r
+[      by Al Lowe\r
+\r
+\r
+\r
+[      The following messages are null:\r
+[\r
+[              ][      12      22      58\r
+[\r
+\r
+\r
+%message       1       "%m10%w1?"\r
+%message       2       "%m10%w2?"\r
+%message       3       "%m10%w3?"\r
+%message       4       "%m10%w4?"\r
+%message       5       "%m10%w5?"\r
+%message       6       "%m10%w6?"\r
+%message       7       "%m10%w7?"\r
+%message       8       "%m10%w8?"\r
+\r
+%message       9\r
+"Ok.\n\n\r
+You toss back the shot of cheap booze,\r
+ then dramatically break the glass on the floor!"\r
+\r
+%message       10\r
+"What's a "\r
+\r
+%message       11      "\n\r
+    Leisure Suit Larry\n\r
+          in the\n\r
+Land of the Lounge Lizards\n\n\r
+        by Al Lowe\n\n\r
+   Ver 1.05    6/26/87\n"\r
+\r
+%message       12\r
+""\r
+\r
+%message       13\r
+"Thanks for playing\r
+ \"Leisure Suit Larry in the Land of the Lounge Lizards.\"\n\n\r
+You screwed up this game, but you can probably do better.\n\n\r
+Come on, let's do it just one more time!"\r
+\r
+%message       14\r
+"Since you're dead...\n\n\r
+all you can do is restore a saved game or start over."\r
+\r
+%message       15\r
+"You have $%v90.00."\r
+\r
+%message       16\r
+"You don't have it."\r
+\r
+%message       17\r
+"Sorry, this is a real-time game!"\r
+\r
+%message       18\r
+"%m11%m100%v117 hours, %v116 minutes and %v115 seconds.\n"\r
+\r
+%message       19\r
+"%m11%m100%v116 minutes and %v115 seconds.\n"\r
+\r
+%message       20\r
+"You find your leisure suit very stylish, but empty."\r
+\r
+%message       21                                              [       logfile message\r
+""                                                             [       No local."\r
+\r
+%message       22\r
+""\r
+\r
+%message       23\r
+"You have no need to take it."\r
+\r
+%message       24\r
+"Where!?"\r
+\r
+%message       25\r
+"You might need it."\r
+\r
+%message       26\r
+"\"Hi.\""\r
+\r
+%message       27\r
+"Following your conviction for bestiality,\r
+ you spend the rest of your life in prison,\r
+ turning big rocks into little ones!"\r
+\r
+%message       28\r
+"\"You're welcome.\""\r
+\r
+%message       29\r
+"\"Same to you!\""\r
+\r
+%message       30\r
+"%v119:%v116|2:%v115|2 "\r
+\r
+%message       31\r
+"\"'Bye.\""\r
+\r
+%message       32\r
+"Fastest%m36"\r
+\r
+%message       33\r
+"Fast%m36"\r
+\r
+%message       34\r
+"Normal%m36"\r
+\r
+%message       35\r
+"Slow%m36"\r
+\r
+%message       36\r
+" speed."\r
+\r
+%message       37\r
+"Once you tasted it, you wouldn't want it!"\r
+\r
+%message       38\r
+"Without thinking, you down the entire bottle.\r
+ Hey, this stuff is ok!\r
+ Your breathing becomes heavy, and you're suddenly extremely horny!\r
+ You've just got to do something, and right NOW!\n\n\r
+Hey, where's that cute, black dog?"\r
+\r
+%message       39\r
+"Wouldn't you rather just remain friends?"\r
+\r
+%message       40\r
+"Don't whine!"\r
+\r
+%message       41\r
+"Funny, no response."\r
+\r
+%message       42\r
+"It doesn't look interesting."\r
+\r
+%message       43\r
+"You see nothing special."\r
+\r
+%message       44\r
+"It's just as it appears."\r
+\r
+%message       45\r
+"How can you do that?"\r
+\r
+%message       46\r
+"It's of no use."\r
+\r
+%message       47\r
+"You don't need it."\r
+\r
+%message       48\r
+"There's no reason to take it."\r
+\r
+%message       49\r
+"Just walk there."\r
+\r
+%message       50\r
+"Oh, %w1, %w1, %w1! Doesn't anybody _____ anymore?"\r
+\r
+%message       51\r
+"%m53?"\r
+\r
+%message       52\r
+"%m53 %w3?"\r
+\r
+%message       53\r
+"What would you do with the %w2"\r
+\r
+%message       54\r
+"How can you use that which you do not have?"\r
+\r
+%message       55\r
+"You're not close enough."\r
+\r
+%message       56\r
+"You already have it."\r
+\r
+%message       57\r
+"Ok."\r
+\r
+%message       58\r
+""\r
+\r
+%message       59\r
+"That comes later."\r
+\r
+\r
+[      Menu functions are assigned to messages #60 - 99.\r
+\r
+%message       60              "Sierra "                       [       \r
+%message       61      "About Larry"                   [       \r
+%message       62      "Help   <F1>"                   [       \r
+%message       63      "-----------"                   [       \r
+%message       64      "Calculator "                   [       \r
+%message       65      "Puzzle     "                   [       \r
+                                                               [       \r
+%message       66              "File "                 [       \r
+%message       67      "Save     <F5>"         [       \r
+%message       68      "Restore  <F7>"         [       \r
+%message       69      "-------------"         [       \r
+%message       70      "Restart  <F9>"         [       \r
+[%message      69      "-------------"         [       \r
+%message       71      "Quit  <Alt-Z>"         [       \r
+\r
+%message       72              "Action "                       [       \r
+%message       73      "Inventory  <Tab>"              [       \r
+%message       74      "See Object      "              [       \r
+%message       75      "Bodily Function "              [       \r
+                                                               [       \r
+%message       76              "Special "                      [       \r
+%message       96      "Boss Key       <Ctrl-B>"       [       \r
+%message       77      "Sound On/Off       <F2>"       [       \r
+%message       78      "Graphics Mode  <Ctrl-R>"       [       \r
+%message       79      "Joystick       <Ctrl-J>"       [       \r
+%message       97      "Joystick/Mouse <Ctrl-J>"       [       \r
+%message       80      "Clock On/Off           "       [       \r
+%message       81      "Pause Game             "       [       \r
+                                                               [       \r
+%message       82              "Speed "                        [       \r
+%message       83      "Normal       "         [       \r
+%message       84      "Slow         "         [       \r
+%message       85      "Fast         "         [       \r
+%message       86      "Fastest      "         [       \r
+[%message      69      "-------------"         [       \r
+%message       87      "Change  <F10>"         [       \r
+                                                               [       \r
+[      %message        88              "Debug"                 [       \r
+[      %message        89      "Ego Info  <Alt-E>"             [       \r
+[      %message        90      "P-Screen  <Alt-P>"             [       \r
+[      %message        91      "Memory    <Alt-M>"             [       \r
+[      %message        92      "Obj Info  <Alt-I>"             [       \r
+[      %message        93      "X/Y Display      "             [       \r
+[      %message        94      "Get All Inventory"             [       \r
+[      %message        95      "Inventory Numbers"             [       \r
+                                                               [       \r
+%message       98      ""                                      [       \r
+%message       99      ""                                      [       \r
+\r
+\r
+\r
+%message       100\r
+"\n\nYou've been playing for\n"\r
+\r
+%message       101\r
+"Psssft. Psssft."\r
+\r
+%message       102\r
+"Ahhh."\r
+\r
+%message       103\r
+"Yep, it's a door!"\r
+\r
+%message       104\r
+"Watch it, Larry. You're going to get your face slapped!"\r
+\r
+%message       105\r
+"Now?!"\r
+\r
+%message       106\r
+"Ok.\n\n\r
+Your thirst is gone, the bottle is empty, and your breath is revolting."\r
+\r
+%message       107\r
+"\"Hey, dork! You've got toilet paper stuck to your shoe!\""\r
+\r
+%message       108\r
+"\"Phew! You smell like a used fire hydrant!\""\r
+\r
+%message       109\r
+"Just a moment, please..."\r
+\r
+%message       110\r
+"2"\r
+\r
+%message       111\r
+"+ 2"\r
+\r
+%message       112\r
+"---"\r
+\r
+%message       113\r
+"  4"\r
+\r
+%message       114\r
+"   This is about the extent of\n\r
+    your mathematical abilities."\r
+\r
+%message       115\r
+"---------------------"\r
+\r
+%message       116\r
+"|  1 |  2 |  3 |  4 |"\r
+\r
+%message       117\r
+"|  5 |  6 |  7 |  8 |"\r
+\r
+%message       118\r
+"|  9 | 10 | 11 | 12 |"\r
+\r
+%message       119\r
+"| 13 | 14 | 15 | 16 |"\r
+\r
+%message       120\r
+"|----|----|----|----|"\r
+\r
+%message       121\r
+"How's this thing work, anyway?"\r
+\r
+%message       122\r
+"Enter function: "\r
+\r
+%message       123\r
+"You quickly turn around, %s11, and feel much better.\r
+ A hint of a smile crosses your lips."\r
+\r
+%message       124\r
+"Larry, the whole idea was to stop doing that!"\r
+\r
+%message       125\r
+"do nothing"\r
+\r
+%message       126     \r
+"You talk to yourself, and find you already know what you're going to say."\r
+\r
+%message       127     \r
+"Good idea. You carefully remove and dispose of it properly."\r
+\r
+%message       128     \r
+"You nonchalantly scrape it off."\r
+\r
+%message       129     \r
+"Oh, no! You are now penniless.\r
+ You hock your leisure suit,\r
+ and spend the rest of your life on skid row eating discarded fast food."\r
+\r
+%message       130\r
+"The rest of your story is too sad to tell.\r
+ Time for a little \"R & R,\" Larry -- Restart or Restore!"\r
+\r
+%message       131\r
+"It smells as bad as you imagined."\r
+\r
+%message       132\r
+"It's not for using; IT'S A JOKE!!"\r
+\r
+%message       133\r
+"Same to you, buddy!"\r
+\r
+%message       134\r
+"And %w1 %w2 you, too!"\r
+\r
+%message       135\r
+"Yeah, you probably would, too!"\r
+\r
+%message       136\r
+"Tsk, tsk."\r
+\r
+%message       137\r
+"Ok, but I don't usually do that!"\r
+\r
+%message       138\r
+"You press the button on the remote control and..."\r
+\r
+%message       139\r
+"...nothing happens."\r
+\r
+%message       140\r
+"Wearing the magic ring gives you powers far beyond those of..."\r
+\r
+%message       141\r
+"...Oops. Wrong game."\r
+\r
+%message       142\r
+"Pretty dramatic, eh?"\r
+\r
+%message       143\r
+"It smells good."\r
+\r
+%message       144\r
+"You can't. There's no key in this game!"\r
+\r
+%message       145\r
+"\"Eeeyow! Do something about that breath of yours!\""\r
+\r
+%message       146\r
+""                                                             [       No lastLog."\r
+\r
+%message       147\r
+"\"Remember to buy more Sierra three-dimensional, graphic, adventure games!\""\r
+\r
+%message       148\r
+"You might want to read them."\r
+\r
+%message       149\r
+"Staring at the walls?"\r
+\r
+%message       150\r
+"Climbing the walls already?"\r
+\r
+%message       151\r
+"It just lies there, under your feet."\r
+\r
+%message       152\r
+"\r
+Sierra On-Line, Inc.\r
+  (209) 683-6858"\r
+\r
+%message       153\r
+"It tastes delicious. But nothing happens."\r
+\r
+%message       154\r
+"Exactly how would you help?"\r
+\r
+%message       155\r
+"You'd better not. You might get your face slapped!"\r
+\r
+%message       156\r
+"You don't have one."\r
+\r
+%message       157\r
+"Your mouth tastes like the inside of a motorman's glove!"\r
+\r
+%message       158\r
+"Your breath smells like floor sweepings from a rendering plant."\r
+\r
+%message       159\r
+"Your breath is enough to take your breath away."\r
+\r
+%message       160\r
+"Your mouth tastes like the drippings from a marathon runner's sock."\r
+\r
+%message       161\r
+"It's still up there!"\r
+\r
+%message       162\r
+"It tastes delicious, but what about your acne?"\r
+\r
+%message       163\r
+"Whee!"\r
+\r
+%message       164\r
+"There's no answer. Try opening it."\r
+\r
+%message       165\r
+"Ha, ha."\r
+\r
+%message       166\r
+"You find nothing."\r
+\r
+%message       167\r
+"\"HELP!\""\r
+\r
+%message       168\r
+"\"It's about time!!\""\r
+\r
+%message       169\r
+"Well, well. It looks like this month's issue is filled with intelligent,\r
+ literary articles with redeeming social value."\r
+\r
+%message       170\r
+"Since your breath sprayer is empty, you toss it away."\r
+\r
+%message       171\r
+"You used it all, remember."\r
+\r
+%message       172\r
+"No place in Lost Wages accepts credit cards from the\r
+ First National Bank of Libya."\r
+\r
+%message       173\r
+"Obviously, restraint is no problem for you, Larry."\r
+\r
+%message       174\r
+"\"Ha, ha!\""\r
+\r
+%message       175\r
+"There's no time!"\r
+\r
+%message       176\r
+"That's an idea; it's just not a good idea!"\r
+\r
+%message       177\r
+"OK, but now it's gone forever!"\r
+\r
+%message       178\r
+"\"Hey, thanks a lot!\""\r
+\r
+%message       179\r
+"But, now you'll NEVER get it back!"\r
+\r
+%message       180\r
+"%m182rope."\r
+\r
+%message       181\r
+"%m182hammer."\r
+\r
+%message       182\r
+"You have no "\r
+\r
+%message       183\r
+"\"Yuck!\""\r
+\r
+%message       184\r
+"No one wants that!"\r
+\r
+%message       185\r
+                               ""                              [       THIS ONE MUST STAY A NULL!!!!!\r
+\r
+%message       186\r
+"Pretty good company, eh?"\r
+\r
+[      %message        187\r
+[      ""\r
+[      \r
+[      %message        188\r
+[      ""\r
+[      \r
+[      %message        189\r
+[      ""\r
+[      \r
+[      %message        190\r
+[      ""\r
+[      \r
+[      %message        191\r
+[      ""\r
+[      \r
+[      %message        192\r
+[      ""\r
+[      \r
+[      %message        193\r
+[      ""\r
+[      \r
+[      %message        194\r
+[      ""\r
+[      \r
+[      %message        195\r
+[      ""\r
+[      \r
+[      %message        196\r
+[      ""\r
+[      \r
+[      %message        197\r
+[      ""\r
+[      \r
+[      %message        198\r
+[      ""\r
+[      \r
+[      %message        199\r
+[      ""\r
+[      \r
diff --git a/RM1.CG b/RM1.CG
new file mode 100644 (file)
index 0000000..53cd71f
--- /dev/null
+++ b/RM1.CG
@@ -0,0 +1,281 @@
+[Logics for room 1 -- title, credits\r
+[      "Leisure Suit Larry in the Land of the Lounge Lizards"\r
+[      by Al Lowe\r
+\r
+%include       "rm1.msg"\r
+%include       "gamedefs.h"\r
+\r
+\r
+\r
+[      This loops through the title screen, and the credits screens, until a\r
+[key is pressed.  It then starts the game, at room 11.\r
+\r
+[      Note:  using the standard "frame" pic, first line to print on is y = 3,\r
+[lowest is y = 19.  X = 4 leaves 1 character blank at LEFT edge.\r
+\r
+[   View#              Name       Loop  Cell   Size             X       Y       Contents\r
+[---------------------------------------------------------------------\r
+[      39      vCreditNames1   0       0       65x23   41      94      programmed by\r
+[      39      vCreditNames1   0       1       69x60   41      114     designed by\r
+[      40      vCreditNames2   0       0       62x23   53      80      graphics by\r
+[      40      vCreditNames2   0       1       44x23   65      84      written by\r
+[      41      vCreditNames3   0       0       38x23   68      59      music by\r
+[      41      vCreditNames3   0       1       82x56   25      155     AGI by\r
+\r
+\r
+\r
+\r
+%define        designPic                               lv2\r
+%define        creditsPic                      lv3\r
+%define        agdsPic                         lv4\r
+%define        framePic                                lv5\r
+\r
+\r
+%object        aDoll                           1\r
+%object        aName                           2\r
+\r
+\r
+\r
+if (initLog)\r
+       {\r
+       SetHorizon( 1);\r
+       StatusLineOff();\r
+       Set( demo);\r
+       Set( handsOff);\r
+       Set( programControl);\r
+       PreventInput();\r
+       lastChar = 0;\r
+       animationInterval = NORMAL_SPEED;\r
+\r
+       LoadSound( mTitle);\r
+\r
+       LoadView( vTitles);\r
+       LoadView( vTitleDoll);\r
+       LoadView( vTitleEgo);\r
+       LoadView( vCreditNames1);\r
+       LoadView( vCreditNames2);\r
+       LoadView( vCreditNames3);\r
+       LoadView( vCreditNames4);\r
+\r
+\r
+        designPic = picCredits1;\r
+       creditsPic = picCredits2;\r
+          agdsPic = picCredits3;\r
+\r
+\r
+       LoadPic( designPic);\r
+       LoadPic( creditsPic);\r
+       LoadPic( agdsPic);\r
+\r
+       LoadPic( currentRoom);\r
+       DrawPic( currentRoom);\r
+       DiscardPic( currentRoom);\r
+\r
+       \r
+       AnimateObj( aDoll);\r
+       IgnoreObjs( aDoll);\r
+       SetView( aDoll, vTitleDoll);\r
+       SetLoop( aDoll, FACING_RIGHT);\r
+       Position( aDoll, 0, 130);\r
+\r
+       AnimateObj( aName);\r
+       SetView( aName, vCreditNames1);\r
+       SetCel( aName, 0);\r
+       SetPriority( aName, 4);\r
+       StopCycling( aName);\r
+\r
+       StepSize( ego, three);\r
+       Position( ego, 0, 160);\r
+       SetView( ego, vTitleEgo);\r
+       SetLoop( ego, FACING_RIGHT);\r
+\r
+       Sound( mTitle, musicDone);\r
+       script = 0;\r
+\r
+       AddToPic( vTitles, 0, 0,  4, 18, 4, 4);\r
+       AddToPic( vTitles, 0, 1,  4, 36, 4, 4);\r
+       AddToPic( vTitles, 0, 2, 46, 36, 4, 4);\r
+       AddToPic( vTitles, 0, 3, 11, 87, 4, 4);\r
+                  [view, loop, cel, x, y, obj priority, box priority\r
+\r
+\r
+       scriptTimer = 8;\r
+       ShowPic();\r
+       \r
+       Return();\r
+\r
+       }                                                       [       end initLOG\r
+\r
+\r
+[*****\r
+:noInput\r
+[*****\r
+\r
+if (scriptDone)\r
+       {\r
+       Reset( scriptDone);\r
+       ++script;\r
+\r
+       if (script == 1)\r
+               {\r
+               Draw( aDoll);\r
+               MoveObj( aDoll, 36, 94, 2, scriptDone);\r
+               }\r
+\r
+\r
+       if (script == 2)\r
+               {\r
+               MoveObj( aDoll, 136, 94, 2, scriptDone);\r
+\r
+               Draw( ego);\r
+               MoveObj( ego, 80, 160, 3, scriptDone);\r
+               }\r
+\r
+\r
+       if (script == 3)\r
+               {\r
+               if (monitorType != MONO)\r
+                       {\r
+                       Display( 23, 3, 2);\r
+                       Display( 24, 4, 3);\r
+                       }\r
+\r
+               SetLoop( ego, 2);\r
+               FixLoop( ego);\r
+               MoveObj( ego, 149, 160, 2, scriptDone);\r
+               }\r
+\r
+\r
+       if (script == 4)\r
+               {\r
+               Erase( aDoll);\r
+               }\r
+\r
+\r
+       if (script == 5)\r
+               {\r
+               Erase( ego);\r
+\r
+               if (monitorType != MONO)\r
+                       {\r
+                       ClearLines( 23, 24, BG_COLOR);\r
+                       }\r
+\r
+               DrawPic( designPic);            [       draw new picture (pic.2)\r
+\r
+               Position( aName, 41, 94);\r
+               Draw( aName);                           [       programmed by\r
+\r
+               ShowPic();\r
+\r
+               scriptTimer = 8;\r
+               }\r
+\r
+\r
+       if (script == 6)\r
+               {\r
+               SetCel( aName, 1);                      [       designed by \r
+               RepositionTo( aName, 41, 114);\r
+               \r
+               SetLoop( aDoll, FACING_LEFT);\r
+               Draw( aDoll);\r
+               MoveObj( aDoll, 100, 94, 2, scriptDone);\r
+               }\r
+\r
+\r
+       if (script == 7)\r
+               {\r
+               MoveObj( aDoll, 0, 94, 2, scriptDone);\r
+               \r
+               SetLoop( ego, FACING_LEFT);\r
+               Draw( ego);\r
+               MoveObj( ego, 50, 160, 3, scriptDone);\r
+               }\r
+\r
+\r
+       if (script == 8)\r
+               {\r
+               SetLoop( ego, 3);\r
+               FixLoop( ego);\r
+               MoveObj( ego, 0, 160, 2, scriptDone);\r
+               }\r
+\r
+       \r
+       if (script == 9)\r
+               {\r
+               Erase( aDoll);\r
+               }\r
+\r
+\r
+       if (script == 10)\r
+               {\r
+               Erase( ego);\r
+               SetView( ego, vEgo);\r
+               Erase( aName);\r
+\r
+               DrawPic( creditsPic);           [       Draw pic.3\r
+               SetView( aName, vCreditNames2);\r
+               SetCel( aName, 0);                      [       graphics by \r
+               Position( aName, 53, 80);\r
+               Draw( aName);\r
+               ShowPic();\r
+               \r
+               scriptTimer = 9;\r
+               }\r
+\r
+\r
+       if (script == 11)\r
+               {\r
+               SetCel( aName, 1);                      [       written by\r
+               RepositionTo( aName, 65, 84);\r
+               scriptTimer = 8;\r
+               }\r
+\r
+\r
+       if (script == 12)\r
+               {\r
+               Erase( aName);\r
+\r
+               DrawPic( agdsPic);                      [       draw pic.4\r
+               AddToPic( vCreditNames3, 0, 0, 68, 59, 4, 4);  [        Music by\r
+               AddToPic( vCreditNames3, 0, 1, 25, 155, 4, 4); [        AGDS by\r
+                               [view, loop, cel, x, y, obj priority, box priority\r
+\r
+               ShowPic();\r
+\r
+               scriptTimer = 8;\r
+               }\r
+\r
+\r
+       if (script == 13)\r
+               {\r
+               DrawPic( creditsPic);           [       Draw pic.3\r
+               AddToPic( vCreditNames4, 0, 0, 64, 84, 4, 4); [ Kenny\r
+               ShowPic();\r
+\r
+               scriptTimer = 3;\r
+               }                               \r
+\r
+\r
+       if (script == 14 && !soundOn)\r
+               {\r
+               NewRoom( rmTitle);                      [       Let's do it again, and real soon.\r
+               }\r
+       }\r
+\r
+\r
+[*****\r
+:exit\r
+[*****\r
+\r
+if (musicDone)\r
+       {\r
+       if (script > 13)\r
+               {\r
+               NewRoom( rmTitle);                      [       Let's do it again, and real soon.\r
+               }\r
+       else\r
+               {\r
+               Sound( mTitle, musicDone);      [       Play it again, Samantha.\r
+               }\r
+       }\r
diff --git a/RM1.MSG b/RM1.MSG
new file mode 100644 (file)
index 0000000..1eda54b
--- /dev/null
+++ b/RM1.MSG
@@ -0,0 +1,37 @@
+[messages for room 1 -- rm.titles\r
+[      "Leisure Suit Larry in the Land of the Lounge Lizards"\r
+[      by Al Lowe\r
+\r
+\r
+\r
+[      %message        1                  "by Al Lowe & Mark Crowe"\r
+%message       2          "Adventure Game Development System"\r
+%message       3           "(C) 1987 by Sierra On-Line, Inc."\r
+[                       |    |    |    |    |    |    |    |   |\r
+[                       0    5    10   15   20   25   30   35 39\r
+\r
+\r
+\r
+[--------------------------------------------------------------------------]\r
+\r
+\r
+[      %message        11      "Lots of other stuff was done by:"\r
+[      %message        12              "Al Lowe"\r
+[      %message        13              "Mark Crowe"\r
+[      \r
+[      %message        21      "Quality Assurance by:"\r
+[      %message        22              "Larry Weissenborn"\r
+[      %message        23              "Bob Ballew"\r
+[      %message        24              "Russ TrueLove"\r
+[      %message        25              "Kim Covert"\r
+[      %message        26              "Linda Bye"\r
+[      \r
+[      %message        31      "Packaging and Documentation by:"\r
+[      %message        32              "Mark Crowe"\r
+[      %message        33              "John Williams"\r
+[      \r
+[      %message        41      "Inspired by a Recent Wet Dream of:"\r
+[      %message        42              "Ken Williams"\r
+[                       |    |    |    |    |    |    |    |   |\r
+[                       0    5    10   15   20   25   30   35 39\r
+\r
diff --git a/RM10.CG b/RM10.CG
new file mode 100644 (file)
index 0000000..488d704
--- /dev/null
+++ b/RM10.CG
@@ -0,0 +1,649 @@
+[logics for room 10 -- rmTaxi\r
+[      "Leisure Suit Larry in the Land of the Lounge Lizards"\r
+[      by Al Lowe\r
+\r
+%include       "rm10.msg"\r
+%include       "gamedefs.h"\r
+\r
+\r
+[      PROBLEMS:               make driver cycle randomly, except when driving drunk.\r
+[Drunk driving sequence never speeds up. \r
+[Erase driver at start of crash flash.\r
+\r
+\r
+#define        MIN_CABFARE                     5\r
+#define        MAX_CABFARE                     15\r
+\r
+%define        L_TALKING                               0       [       Taxi driver\r
+%define        L_LOWERING_FLAG         1\r
+%define        L_STEERING                      2\r
+\r
+%define        C_FLAG_UP                               0       [       Meter cells\r
+%define        C_FLAG_DOWN                     1\r
+\r
+%define        L_NORMAL                                0       [       Scroll loops\r
+%define        L_DRUNK                         1\r
+%define        L_CRASH                         2\r
+\r
+%define        SCROLL_CYCLES                   11\r
+\r
+[      %define LOWER_METER                     1\r
+[      %define METER_DOWN                      2\r
+[      %define START_SPEEDUP                   3       [       script values\r
+[      %define START_SLOWDOWN                  4\r
+[      %define WAITING_FOR_MONEY               5\r
+[      %define PAID_FOR_TRIP                   6\r
+\r
+\r
+%define        rideDone                                lf0\r
+%define        manDone                         lf1\r
+%define        stopTalking                     lf2\r
+%define        bgOn                                    lf3\r
+%define        gaveDestination         lf4\r
+%define        speedingUp                      lf5\r
+%define        meterDone                               lf6\r
+%define        cabbieSteering                  lf7\r
+\r
+\r
+%define        fare                                    lv0     [       Don't change this one!! %v200!!\r
+%define        talkCycles                      lv1\r
+%define        destCount                               lv2\r
+%define        parkTimer                               lv3\r
+%define        scrollCycles                    lv4\r
+%define        scrollSpeed                     lv5\r
+%define        destRoom                                lv6\r
+%define        steeringCycles                  lv7\r
+\r
+\r
+%object        aScroll                         1\r
+%object        aMeter                          2\r
+%object        aCabbie                         3\r
+\r
+\r
+\r
+if (initLog)\r
+       {\r
+       LoadPic( currentRoom);\r
+       DrawPic( currentRoom);\r
+       DiscardPic( currentRoom);\r
+\r
+       LoadView( vTaxiWindshieldMovie);\r
+       LoadView( vTaxiMeter);\r
+       LoadView( vTaxiDriver);\r
+\r
+\r
+       AnimateObj( aScroll);\r
+       SetView( aScroll, vTaxiWindshieldMovie);\r
+       SetLoop( aScroll, L_NORMAL);\r
+       SetPriority( aScroll, 4);\r
+       Position( aScroll, 57, 77);\r
+       Draw( aScroll);\r
+       work = 6;\r
+       CycleTime( aScroll, work);\r
+       Set( bgOn);                                     [       Scroll is cycling.\r
+\r
+       AnimateObj( aMeter);\r
+       SetView( aMeter, vTaxiMeter);\r
+       SetCel( aMeter, C_FLAG_UP);\r
+       SetPriority( aMeter, 14);\r
+       Position( aMeter, 75, 82);\r
+       Draw( aMeter);\r
+       CycleTime( aMeter, three);\r
+       StopCycling( aMeter);\r
+\r
+       AnimateObj( aCabbie);\r
+       IgnoreObjs( aCabbie);\r
+       SetView( aCabbie, vTaxiDriver);\r
+       SetPriority( aCabbie, 15);\r
+       Position( aCabbie, 56, 83);\r
+\r
+       if (!Has( iWine))\r
+               {\r
+               SetLoop( aCabbie, L_LOWERING_FLAG);\r
+               SetCel( aCabbie, 0);\r
+               CycleTime( aCabbie, three);\r
+               StopCycling( aCabbie);\r
+               }\r
+       else\r
+               {\r
+               SetLoop( aCabbie, L_TALKING);\r
+               }\r
+\r
+       Draw( aCabbie);\r
+\r
+       ShowPic( );\r
+\r
+       if (!Has( iWine))\r
+               {\r
+               Print( 1);\r
+               AcceptInput();\r
+               parkTimer = 20;\r
+               Random( 0, 10, fare);\r
+               fare += cabFareMin;\r
+               if (cabFareMin < 40)\r
+                       {\r
+                       ++cabFareMin;\r
+                       }\r
+               if (cabRideLength > 4)\r
+                       {\r
+                       --cabRideLength;\r
+                       }\r
+               scriptTimer = 2;\r
+               }\r
+       else\r
+               {\r
+               Print( 12);\r
+\r
+               PreventInput();\r
+               Set( programControl);\r
+               Set( meterDone);\r
+               steeringCycles = 0;\r
+               script = 100;\r
+               scriptTimer = 5;\r
+               }\r
+\r
+       Set( handsOff);\r
+       Set( programControl);\r
+       Reset( noFawnInDisco);                  [       After a drive, she'll be back.\r
+\r
+       Return( );\r
+\r
+       }                                                       [       end initLOG\r
+\r
+\r
+\r
+if (aSecondPassed && secondsInRoom > 5)\r
+       {\r
+       Set( nearPerson);\r
+       }\r
+\r
+\r
+[*****\r
+:handleInput\r
+[*****\r
+\r
+if (!haveInput)                        {goto noInput;}\r
+\r
+if ((Said( talk, rol) ||\r
+       Said( take, me, action) ||\r
+       Said( take, me, where, action) ||\r
+       Said( where, action, town) ||\r
+       Said( where, action)))\r
+       {\r
+       Print( 2);\r
+       }\r
+\r
+\r
+if ((Said( disco) ||\r
+       Said( go, disco) ||\r
+       Said( take, me, disco)))\r
+       {\r
+       ++destCount;\r
+       if (destCount > 2)\r
+               {\r
+               Print( 28);\r
+               }\r
+       else\r
+               {\r
+               Set( scriptDone);\r
+               destRoom = rmOutsideDisco;\r
+               if (script > 2)\r
+                       {\r
+                       script = 200;\r
+                       }\r
+               }\r
+       }\r
+\r
+if ((Said( casino) ||\r
+       Said( casino, hotel) ||\r
+       Said( go, casino) ||\r
+       Said( go, casino, hotel) ||\r
+       Said( take, me, casino) ||\r
+       Said( take, me, casino, hotel)))\r
+       {\r
+       ++destCount;\r
+       if (destCount > 2)\r
+               {\r
+               Print( 28);\r
+               }\r
+       else\r
+               {\r
+               Set( scriptDone);\r
+               destRoom = rmOutsideCasino;\r
+               if (script > 2)\r
+                       {\r
+                       script = 200;\r
+                       }\r
+               }\r
+       }\r
+\r
+if ((Said( bar) ||\r
+       Said( go, bar) ||\r
+       Said( take, me, bar)))\r
+       {\r
+       ++destCount;\r
+       if (destCount > 2)\r
+               {\r
+               Print( 28);\r
+               }\r
+       else\r
+               {\r
+               Set( scriptDone);\r
+               destRoom = rmOutsideBar;\r
+               if (script > 2)\r
+                       {\r
+                       script = 200;\r
+                       }\r
+               }\r
+       }\r
+\r
+if ((Said( chapel) ||\r
+       Said( go, chapel) ||\r
+       Said( take, me, chapel)))\r
+       {\r
+       ++destCount;\r
+       if (destCount > 2)\r
+               {\r
+               Print( 28);\r
+               }\r
+       else\r
+               {\r
+               Set( scriptDone);\r
+               destRoom = rmOutsideChapel;\r
+               if (script > 2)\r
+                       {\r
+                       script = 200;\r
+                       }\r
+               }\r
+       }\r
+\r
+if ((Said( store) ||\r
+       Said( go, store) ||\r
+       Said( take, me, store)))\r
+       {\r
+       ++destCount;\r
+       if (destCount > 2)\r
+               {\r
+               Print( 28);\r
+               }\r
+       else\r
+               {\r
+               Set( scriptDone);\r
+               destRoom = rmOutside7_11;\r
+               if (script > 2)\r
+                       {\r
+                       script = 200;\r
+                       }\r
+               }\r
+       }\r
+\r
+if ((Said( leave, rol) ||\r
+       Said( stop, rol) ||\r
+       Said( open, door, rol) ||\r
+       Said( go)))\r
+       {\r
+       if (script < 5)\r
+               {\r
+               Print( 7);\r
+               }\r
+\r
+       if (script == 5)\r
+               {\r
+               Print( 9);\r
+               Set( rideDone);\r
+               currentStatus = STIFFED_CABBIE;\r
+               }\r
+\r
+       if (script == 6)\r
+               {\r
+               Set( OK);\r
+               Set( rideDone);\r
+               }\r
+       }\r
+\r
+if ((Said( take, me, home) ||\r
+       Said( go, home) ||\r
+       Said( home)))\r
+       {\r
+       Print( 26);\r
+       NewRoom( rmWorkshop);\r
+       }\r
+\r
+if (Said( look, meter))\r
+       {\r
+       Print( 23);\r
+       }\r
+\r
+if ((Said( look, cab) ||\r
+       Said( look$in, cab) ||\r
+       Said( look, room) ||\r
+       Said( look, seat) ||\r
+       Said( look, floor) ||\r
+       Said( look)))\r
+       {\r
+       Print( 24);\r
+       }\r
+\r
+if (Said( look, ceiling))\r
+       {\r
+       Print( 25);\r
+       }\r
+\r
+if ((Said( look, out, window) ||\r
+       Said( look, window)))\r
+       {\r
+       Print( 27);\r
+       }\r
+\r
+if (Said( look, cabbie))\r
+       {\r
+       if (!lookedAtCabbie)\r
+               {\r
+               Set( lookedAtCabbie);\r
+               Print( 10);\r
+               }\r
+       else\r
+               {\r
+               Print( 11);\r
+               }\r
+       }\r
+\r
+if ((Said( give, money, man) ||\r
+       Said( give, man, money) ||\r
+       Said( give, money) ||\r
+       Said( pay, man, money) ||\r
+       Said( pay) ||\r
+       Said( pay, money, man) ||\r
+       Said( pay, money) ||\r
+       Said( pay, man)))\r
+       {\r
+       if (script < 5)\r
+               {\r
+               Print( 6);\r
+               }\r
+\r
+       if (script == 5)\r
+               {\r
+               if (dollars < fare)\r
+                       {\r
+                       Print( 20);\r
+                       Print( 14);\r
+                       Set( rideDone);\r
+                       currentStatus = STIFFED_CABBIE;\r
+                       }\r
+               else\r
+                       {\r
+                       dollars -= fare;\r
+                       Set( scriptDone);\r
+                       parkTimer = 30;\r
+                       }\r
+               }\r
+\r
+       if (script == 6)\r
+               {\r
+               Print( 19);\r
+               }\r
+       }\r
+\r
+\r
+if ((Said( give, tip, rol) ||\r
+       Said( give, man, tip, rol) ||\r
+       Said( tip, rol)))\r
+       {\r
+       Print( 19);\r
+       }\r
+\r
+\r
+[*****\r
+:noInput\r
+[*****\r
+\r
+if (aSecondPassed)\r
+       {\r
+       --parkTimer;\r
+       if (parkTimer == 1)\r
+               {\r
+               parkTimer = 30;\r
+               if (script < 3)\r
+                       {\r
+                       Print( 5);\r
+                       }\r
+\r
+               if (script == 5)\r
+                       {\r
+                       Print( 22);\r
+                       }\r
+\r
+               if (script == 6)\r
+                       {\r
+                       Print( 21);\r
+                       }\r
+               }\r
+       }\r
+\r
+\r
+if (scriptDone)\r
+       {\r
+       Reset( scriptDone);\r
+       ++script;\r
+\r
+       if (script == 1)\r
+               {\r
+               EndOfLoop( aMeter, meterDone);\r
+               EndOfLoop( aCabbie, scriptDone);\r
+               }\r
+\r
+       if (script == 2)\r
+               {\r
+               SetLoop( aCabbie, L_STEERING);\r
+               steeringCycles = 2;\r
+               Reset( cabbieSteering);         [       This makes him start immediately.\r
+               CycleTime( aCabbie, two);\r
+               }\r
+\r
+       if (script == 3)                                [       This starts us moving.\r
+               {\r
+               Set( speedingUp);\r
+               parkTimer = 0;\r
+               scrollCycles = SCROLL_CYCLES;\r
+               scrollSpeed = 4;\r
+               CycleTime( aScroll, scrollSpeed);\r
+\r
+               if (destRoom != previousRoom)\r
+                       {\r
+                       scriptTimer = cabRideLength; [Seconds before start slowdown.\r
+                       if (!gaveDestination)   [       No message if trip #2 or more.\r
+                               {\r
+                               Print( 15);\r
+                               }\r
+                       }\r
+               else\r
+                       {\r
+                       scriptTimer = 6;\r
+                       if (scriptTimer > cabRideLength)\r
+                               {\r
+                               scriptTimer = cabRideLength;\r
+                               }\r
+\r
+                       if (!gaveDestination)\r
+                               {\r
+                               Print( 3);\r
+                               }\r
+                       }\r
+               Set( gaveDestination);\r
+               }\r
+\r
+       if (script == 4)                                [       Trip timer has expired. Slowdown.\r
+               {\r
+               Reset( speedingUp);\r
+               }\r
+\r
+       if (script == 5)                                [       Slowdown has ended.\r
+               {\r
+               Reset( bgOn);\r
+               StopUpdate( aScroll);\r
+\r
+               StartUpdate( aMeter);\r
+               BeginningOfLoop( aMeter, meterDone);\r
+\r
+               steeringCycles = 0;\r
+               StartCycling( aCabbie);\r
+               SetLoop( aCabbie, L_LOWERING_FLAG);\r
+               LastCel( aCabbie, work);\r
+               SetCelV( aCabbie, work);\r
+               BeginningOfLoop( aCabbie, manDone);\r
+\r
+               Print( 4);\r
+               parkTimer = 30;\r
+               }\r
+\r
+       if (script == 6)\r
+               {\r
+               Print( 8);\r
+               }\r
+\r
+\r
+       \r
+       if (script == 101)                              [       He be a drunk cabbie!\r
+               {\r
+               parkTimer = 0;\r
+               SetLoop( aCabbie, L_STEERING);\r
+               steeringCycles = 2;\r
+               Reset( cabbieSteering);         [       This makes him start immediately.\r
+               CycleTime( aCabbie, one);\r
+\r
+               scrollCycles = 0;                       [       Never change speed of scroll.\r
+               scrollSpeed = 3;\r
+               CycleTime( aScroll, scrollSpeed);\r
+               SetLoop( aScroll, L_DRUNK);\r
+               StartCycling( aScroll);\r
+               Print( 16);\r
+               scriptTimer = 9;\r
+               }\r
+\r
+       if (script == 102)                              [       He's hit a bridge!\r
+               {\r
+               Erase( aCabbie);\r
+               Erase( aMeter);\r
+               SetLoop( aScroll, L_CRASH);\r
+               CycleTime( aScroll, one);\r
+               scriptTimer = 5;\r
+               }\r
+\r
+       if (script == 103)                              [       You're dead.\r
+               {\r
+               Print( 18);\r
+               Erase( aScroll);\r
+               Set( certainDeath);\r
+               }\r
+\r
+\r
+\r
+       if (script == 201)                              [       Start all over again.\r
+               {\r
+               Random( MIN_CABFARE, MAX_CABFARE, work);\r
+               fare += work;\r
+               Print( 13);\r
+               LastCel( aMeter, work);\r
+               SetCelV( aMeter, work);\r
+               ForceUpdate( aMeter);\r
+\r
+               StartUpdate( aCabbie);\r
+               StartCycling( aCabbie);\r
+               SetLoop( aCabbie, L_STEERING);\r
+               steeringCycles = 2;\r
+               Reset( cabbieSteering);         [       This makes him start immediately.\r
+               CycleTime( aCabbie, two);\r
+\r
+               StartUpdate( aScroll);\r
+               StartCycling( aScroll);\r
+               Set( bgOn);\r
+               Set( scriptDone);\r
+               script = 2;\r
+               }\r
+       }\r
+\r
+\r
+--scrollCycles;\r
+if (bgOn && scrollCycles == 1)\r
+       {\r
+       scrollCycles = SCROLL_CYCLES;\r
+       if (!speedingUp)\r
+               {\r
+               ++scrollSpeed;\r
+               }\r
+       else\r
+               {\r
+               if (scrollSpeed > 1)\r
+                       {\r
+                       --scrollSpeed;\r
+                       }\r
+               }\r
+\r
+       if (scrollSpeed == cabRideLength)       [       we go down to 0, then up to CRL.\r
+               {\r
+               Set( scriptDone);\r
+               }\r
+       else\r
+               {\r
+               CycleTime( aScroll, scrollSpeed);\r
+               }\r
+       }\r
+\r
+\r
+if (meterDone)\r
+       {\r
+       Reset( meterDone);\r
+       StopUpdate( aMeter);\r
+       }\r
+\r
+\r
+if (manDone)\r
+       {\r
+       Reset( manDone);\r
+       SetLoop( aCabbie, L_TALKING);\r
+       StartCycling( aCabbie);\r
+       talkCycles = 22;\r
+       }\r
+\r
+--talkCycles;\r
+if (talkCycles == 1)\r
+       {\r
+       StopCycling( aCabbie);\r
+       }\r
+\r
+\r
+--steeringCycles;                                      [       turn that wheel\r
+if (steeringCycles == 1)\r
+       {\r
+       Toggle( cabbieSteering);\r
+       if (cabbieSteering)\r
+               {\r
+               StartCycling( aCabbie);\r
+               Random( 5, 22, steeringCycles);\r
+               }\r
+       else\r
+               {\r
+               StopCycling( aCabbie);\r
+               Random( 22, 44, steeringCycles);\r
+               }\r
+       }\r
+\r
+\r
+[*****\r
+:exit                                                  [       test for leaving the room\r
+[*****\r
+\r
+if (rideDone)\r
+       {\r
+       Reset( programControl);\r
+       Reset( handsOff);\r
+       newRoom = destRoom;\r
+       if (!rodeInCab)\r
+               {\r
+               Set( rodeInCab);\r
+               Reset( OK);\r
+               currentScore += 1;\r
+               Print( 17);\r
+               }\r
+       }\r
diff --git a/RM10.MSG b/RM10.MSG
new file mode 100644 (file)
index 0000000..8babdc1
--- /dev/null
+++ b/RM10.MSG
@@ -0,0 +1,110 @@
+[messages for room 10 -- rmTaxi\r
+[      "Leisure Suit Larry in the Land of the Lounge Lizards"\r
+[      by Al Lowe\r
+\r
+\r
+\r
+%message       1\r
+"The cabbie snarls a \"Where to, buddy?\" as he swings the meter flag down."\r
+\r
+%message       2\r
+"\"Lookin' for action, eh? Dis town is full of it.\r
+ We gotta disco that's usually full of foxes this time of night.\r
+ Den dere's the casino, next to the all-night weddin' chapel.\r
+ And we gotta lovely bar, but you've been dere.\r
+ Me, I like da convenience store next to da disco,\r
+ but of course, that's just personal preference.\""\r
+\r
+%message       3\r
+"\"It won't take us long to get back dere,\r
+ but I'll have to circle 'round da block.\""\r
+\r
+%message       4\r
+"\"Well, here we are, buddy. That'll be $%v200.00.\""\r
+\r
+%message       5\r
+"\"So, wadda we gonna do, buddy?\r
+ Ya just gonna sit here all night?\r
+ I gotta earn a livin' too, ya know!\""\r
+\r
+%message       6\r
+"\"Why don'cha wait'll we git there, buddy?\""\r
+\r
+%message       7\r
+"\"Sorry, but the meter's runnin'. Where ja wanna go?\""\r
+\r
+%message       8\r
+"\"Thanks, buddy. Maybe I'll see ya again sometime!\""\r
+\r
+%message       9\r
+"\"Waddaya tryin' to do, peahead!\r
+ You're not gonna stiff me, and get away with it!\""\r
+\r
+%message       10\r
+"You wish you hadn't.\r
+ Mr. America, he ain't.\r
+ His strongest feature seems to be his odor!"\r
+\r
+%message       11\r
+"He wonders why you keep looking at him,\r
+ and flashes a coy little smile back at you in the mirror.\r
+ Your stomach turns, and not from the ride!"\r
+\r
+%message       12\r
+"The driver looks at you and says,\r
+ \"Hey! What's that you got? Wine?\"\r
+ He grabs your bottle of wine, and guzzles it down!"\r
+\r
+%message       13\r
+"\"Ok, but it'll cost ja extra!\""\r
+\r
+%message       14\r
+"\"Waddaya mean, 'no money!!'\" snarls the driver.\r
+ \"Step outside my office, chump!\""\r
+\r
+%message       15\r
+"\"Ok. You got it, Mac!\""\r
+\r
+%message       16\r
+"Hang on, Larry. He's swerving all over the road!"\r
+\r
+%message       17\r
+"Whew! You're glad to get out of here."\r
+\r
+%message       18\r
+"It seems a bridge abutment has brought your game to a sudden stop!\r
+ Remember, Larry: \"Friends don't let cabbies drive drunk!\""\r
+\r
+%message       19\r
+"\"I'm sorry, but it's against my personal philosophy to accept a gratuity!\""\r
+\r
+%message       20\r
+"Sheepishly, you apologize to the cabbie for not carrying enough money\r
+ to pay for the ride."\r
+\r
+%message       21\r
+"\"So? Are ya gonna get outta my cab, or not??\r
+ Thanks for da business, but I didn't want ta make no career outta this!\""\r
+\r
+%message       22\r
+"\"So? Are ya gonna pay up, or do I have ta get rough with cha??\""\r
+\r
+%message       23\r
+"It seems to be running a little fast, but then, this is an expensive town!"\r
+\r
+%message       24\r
+"You wonder if cab companies have full-time employees to make these floors\r
+ sticky."\r
+\r
+%message       25\r
+"Even the ceiling's grungy."\r
+\r
+%message       26\r
+"\"Ok, buddy,\" says the cabbie. \"But why would cha wanna go there?\""\r
+\r
+%message       27\r
+"He sure drives fast, doesn't he?"\r
+\r
+%message       28\r
+"\"Nope. Next time, make up your mind before ya gets in da cab!\""\r
+\r
diff --git a/RM11.CG b/RM11.CG
new file mode 100644 (file)
index 0000000..03e3c63
--- /dev/null
+++ b/RM11.CG
@@ -0,0 +1,463 @@
+[logics for room 11 -- rmOutsideBar\r
+[      "Leisure Suit Larry in the Land of the Lounge Lizards"\r
+[      by Al Lowe\r
+\r
+%include       "rm11.msg"\r
+%include       "gamedefs.h"\r
+%include       "contrlrs.h"\r
+\r
+\r
+#define        L_HOTEL_SIGN                    0\r
+#define        L_BAR_SIGN_1                    1\r
+#define        L_BAR_SIGN_2                    2\r
+\r
+%define        inClear                         lf0\r
+%define        nearDoor                                lf1\r
+%define        doorOpen                                lf2\r
+%define        titleSongDone                   lf3\r
+%define        titleSongPlaying                lf4\r
+%define        copAtEgo                                lf5\r
+%define        copOnscreen                     lf7\r
+\r
+%object        aDoor                           1\r
+%object        aBarSign1                               2\r
+%object        aBarSign2                               3\r
+%object        aHotelSign                      4\r
+\r
+\r
+if (initLog)\r
+       {\r
+       if  (watchHours > 4 &&                  [       Anything after 5 am.\r
+               watchHours < 10)\r
+               {\r
+               NewRoom( rmSunrise);\r
+               }\r
+\r
+[              if (machineType == MAC)\r
+[                      {\r
+[                      Set( slowProcessor);\r
+[                      }\r
+       \r
+       if (!beenIn11)\r
+               {\r
+               LoadSound( mTitle);\r
+               if (!testRoom)\r
+                       {\r
+                       Set( enableMenu);\r
+                       DisableItem( cDummy);\r
+                       StatusLineOn();\r
+                       gameSeconds = 0;\r
+                       gameMinutes = 0;\r
+                       gameHours = 0;\r
+                       gameDays = 0;\r
+\r
+                       Reset( handsOff);\r
+                       Reset( programControl);\r
+                       AcceptInput();\r
+                       animationInterval = NORMAL_SPEED;\r
+                       currentStatus = NORMAL;\r
+\r
+                       LoadView( vEgo);\r
+                       SetView( ego, vEgo);\r
+                       currentEgoView = NORMAL;\r
+                       }\r
+               }\r
+\r
+\r
+       SetHorizon( 130);\r
+\r
+       LoadLogics( lgcStreet);\r
+\r
+       LoadPic( currentRoom);\r
+       DrawPic( currentRoom);\r
+       DiscardPic( currentRoom);\r
+\r
+       LoadView( vBarExterior);\r
+       LoadView( vBarDoor);\r
+\r
+       if (currentStatus != STIFFED_CABBIE &&\r
+               wearingRubber)\r
+               {\r
+               LoadView( vCop);\r
+               LoadSound( mCop);\r
+\r
+               AnimateObj( aCop);\r
+               SetView( aCop, vCop);\r
+               Position( aCop, 0, 145);\r
+               Draw( aCop);\r
+               FollowEgo( aCop, 8, copAtEgo);\r
+               Set( copOnscreen);\r
+               }\r
+\r
+\r
+       AnimateObj( aDoor);\r
+       IgnoreHorizon( aDoor);\r
+       IgnoreBlocks( aDoor);\r
+       Position( aDoor, 60, 131);\r
+       SetView( aDoor, vBarDoor);\r
+       SetPriority( aDoor, 8);\r
+       SetCel( aDoor, 0);\r
+       Draw( aDoor);\r
+       work = DOOR_CYCLE_TIME;\r
+       CycleTime( aDoor, work);\r
+       StopUpdate( aDoor);\r
+\r
+       if (slowProcessor)\r
+               {\r
+               AddToPic( vBarExterior, L_BAR_SIGN_1, 0, 36, 83, 4, 4);\r
+                               [view, loop, cel, x, y, obj priority, box priority\r
+               }\r
+       else\r
+               {\r
+               AnimateObj( aBarSign1);\r
+               IgnoreHorizon( aBarSign1);\r
+               IgnoreBlocks( aBarSign1);\r
+               IgnoreObjs( aBarSign1);\r
+               Position( aBarSign1, 36, 83);\r
+               SetView( aBarSign1, vBarExterior);\r
+               SetLoop( aBarSign1, L_BAR_SIGN_1);\r
+               Draw( aBarSign1);\r
+               CycleTime( aBarSign1, four);\r
+               }\r
+\r
+       AnimateObj( aBarSign2);\r
+       IgnoreHorizon( aBarSign2);\r
+       IgnoreBlocks( aBarSign2);\r
+       IgnoreObjs( aBarSign2);\r
+       Position( aBarSign2, 83, 84);\r
+       SetView( aBarSign2, vBarExterior);\r
+       SetLoop( aBarSign2, L_BAR_SIGN_2);\r
+       Draw( aBarSign2);\r
+       CycleTime( aBarSign2, one);\r
+\r
+       AnimateObj( aHotelSign);\r
+       IgnoreHorizon( aHotelSign);\r
+       IgnoreBlocks( aHotelSign);\r
+       IgnoreObjs( aHotelSign);\r
+       Position( aHotelSign, 134, 67);\r
+       SetView( aHotelSign, vBarExterior);\r
+       SetLoop( aHotelSign, L_HOTEL_SIGN);\r
+       Draw( aHotelSign);\r
+       CycleTime( aHotelSign, five);\r
+\r
+       if (diedOfTheClap)\r
+               {\r
+               LoadView( vEgoMissingGroin);\r
+               LoadView( vEgoDead);\r
+               LoadView( vEgoCollapsing);\r
+               }\r
+\r
+       if (previousRoom == rmAlley)\r
+               {\r
+               egoX = 134;\r
+               egoY = 142;\r
+               SetLoop( ego, FACING_LEFT);\r
+               StartMotion( ego);\r
+               }\r
+       else\r
+               {\r
+               if (previousRoom == rmInsideBar)\r
+                       {\r
+                       egoX = 58;\r
+                       egoY = 134;\r
+                       SetLoop( ego, FACING_FRONT);\r
+                       }\r
+               else\r
+                       {\r
+                       if (previousRoom != rmDarkAlley)\r
+                               {\r
+                               egoX = 63;\r
+                               egoY = 156;\r
+                               SetLoop( ego, FACING_BACK);\r
+                               }\r
+                       }\r
+               }\r
+       PositionV( ego, egoX, egoY);\r
+       Draw( ego);\r
+\r
+       Call( lgcStreet);\r
+\r
+       ShowPic( );\r
+\r
+       if (currentStatus != STIFFED_CABBIE &&\r
+               wearingRubber)\r
+               {\r
+               Sound( mCop, done);\r
+               }\r
+\r
+       if (!beenIn11)\r
+               {\r
+               Set( beenIn11);\r
+               Sound( mTitle, titleSongDone);\r
+               Set( titleSongPlaying);\r
+               }       \r
+\r
+       Return( );\r
+\r
+       }                                                       [       end initLOG\r
+\r
+\r
+\r
+Reset( inClear);\r
+if (Posn( ego, 34, 142, 130, 166))\r
+       {\r
+       Set( inClear);\r
+       }\r
+\r
+Reset( nearDoor);\r
+if (Posn( ego, 50, 131, 75, 136))\r
+       {\r
+       Set( nearDoor);\r
+       }\r
+\r
+\r
+\r
+\r
+[*****\r
+:handleInput\r
+[*****\r
+\r
+if (!haveInput)                        {goto noInput;}\r
+\r
+if ((Said( look) ||\r
+       Said( look, building) ||\r
+       Said( look, room) ||\r
+       Said( look, bar)))\r
+       {\r
+       Print( 1);\r
+       Print( 2);\r
+       }\r
+\r
+if (Said( look, mat))\r
+       {\r
+       Print( 9);\r
+       }\r
+\r
+if ((Said( lift, mat) ||\r
+       Said( look, under, mat)))\r
+       {\r
+       Print( 10);\r
+       Print( 11);\r
+       Print( 12);\r
+       }\r
+\r
+\r
+[      Now, do the cop stuff.\r
+\r
+if (copOnscreen)\r
+       {\r
+       if (Said( look, cop))\r
+               {\r
+               Print( 18);\r
+               }\r
+\r
+       if (Said( talk, cop))\r
+               {\r
+               Print( 15);\r
+               }\r
+       }\r
+\r
+\r
+if (Said( open, door))\r
+       {\r
+       if (nearTaxi)\r
+               {\r
+               Reset( haveMatch);\r
+               }\r
+       else\r
+               {\r
+               if (!nearDoor)\r
+                       {\r
+                       Set( notCloseEnough);\r
+                       }\r
+               else\r
+                       {\r
+                       if  (watchHours > 2 &&  [       Anything after 3 am.\r
+                               watchHours < 10)\r
+                               {\r
+                               Print( 13);\r
+                               Print( 14);\r
+                               }\r
+                       else\r
+                               {\r
+                               Set( OK);\r
+                               StartUpdate( aDoor);\r
+                               EndOfLoop( aDoor, doorOpen);\r
+                               PreventInput();\r
+                               StopMotion( ego);\r
+                               Set( programControl);\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+\r
+if (Said( look, door))\r
+       {\r
+       if (!nearDoor)\r
+               {\r
+               Set( notCloseEnough);\r
+               }\r
+       else\r
+               {\r
+               Print( 8);\r
+               }\r
+       }\r
+\r
+\r
+if ((Said( look, bar) ||\r
+       Said( look, building)))\r
+       {\r
+       Print( 4);\r
+       }\r
+\r
+if ((Said( look, window) ||\r
+       Said( look$in, window)))\r
+       {\r
+       Print( 6);\r
+       }\r
+\r
+if ((Said( break, window) ||\r
+       Said( hit, window)))\r
+       {\r
+       Print( 7);\r
+       }\r
+\r
+\r
+[*****\r
+:noInput\r
+[*****\r
+\r
+if (!handsOff &&\r
+       diedOfTheClap &&\r
+       secondsInRoom > 5 &&\r
+       currentEgoView == NORMAL &&\r
+       currentStatus == NORMAL &&\r
+       inClear)\r
+       {\r
+       Set( scriptDone);\r
+       script = 0;\r
+       }\r
+\r
+if (script == 2 && inClear)\r
+       {\r
+       Set( scriptDone);\r
+       }\r
+\r
+\r
+if (scriptDone)\r
+       {\r
+       Reset( scriptDone);\r
+       ++script;\r
+\r
+       if (script == 1)\r
+               {\r
+               Reset( diedOfTheClap);\r
+               currentStatus = DYING_OF_CLAP;\r
+               Set( handsOff);\r
+               PreventInput();\r
+\r
+               SetView( ego, vEgoMissingGroin);\r
+               ForceUpdate( ego);\r
+               Print( 3);\r
+               scriptTimer = 10;\r
+               }\r
+\r
+       if (script == 2)\r
+               {\r
+               [       This makes us wait until previous timer has expired,\r
+               [then wait again until inClear is set.\r
+               }\r
+\r
+       if (script == 3)\r
+               {\r
+               Print( 5);\r
+               StopMotion( ego);\r
+               Set( programControl);\r
+               SetView( ego, vEgoCollapsing);\r
+               SetCel( ego, 0);\r
+               CycleTime( ego, two);\r
+               Set( keepCycling);\r
+               EndOfLoop( ego, scriptDone);\r
+               }\r
+\r
+       if (script == 4)\r
+               {\r
+               Reset( keepCycling);\r
+               StopCycling( ego);\r
+               SetView( ego, vEgoDead);\r
+               SetCel( ego, 0);\r
+               egoX -= 3;\r
+               if (egoY < 160)\r
+                       {\r
+                       egoY += 7;\r
+                       }\r
+               RepositionToV( ego, egoX, egoY);\r
+               scriptTimer = 5;\r
+               }\r
+\r
+       if (script == 5)\r
+               {\r
+               Set( keepCycling);\r
+               CycleTime( ego, three);\r
+               EndOfLoop( ego, scriptDone);\r
+               }\r
+\r
+       if (script == 6)\r
+               {\r
+               Reset( handsOff);\r
+               newRoom = rmWorkshop;\r
+               }\r
+       }\r
+\r
+\r
+\r
+[      Cop stuff:\r
+\r
+if  (aSecondPassed &&\r
+       secondsInRoom == 5 &&\r
+       wearingRubber)\r
+       {\r
+       Print( 15);\r
+       }\r
+\r
+if (copAtEgo)\r
+       {\r
+       Reset( copAtEgo);\r
+       Set( handsOff);\r
+       Erase( ego);\r
+       Erase( aCop);\r
+       Set( certainDeath);\r
+       Print( 16);\r
+       Print( 17);\r
+       }\r
+\r
+\r
+if (titleSongDone)\r
+       {\r
+       Reset( titleSongDone);\r
+       Reset( titleSongPlaying);\r
+       }\r
+\r
+if (titleSongPlaying)\r
+       {\r
+       notMovedCycles = 0;\r
+       }\r
+\r
+\r
+[*****\r
+:exit                                                  [       test for leaving the room\r
+[*****\r
+\r
+Call( lgcStreet);\r
+\r
+if ((edgeEgoHit == RIGHT ||\r
+       edgeEgoHit == LEFT))                            {newRoom = rmDarkAlley;}\r
+if (Posn( ego, 132, 120, SCREEN_RIGHT, 138))   {newRoom = rmAlley;}\r
+\r
+if (doorOpen)\r
+       {\r
+       AcceptInput();\r
+       StartMotion( ego);\r
+       Reset( programControl);\r
+       newRoom = rmInsideBar;\r
+       }\r
diff --git a/RM11.MSG b/RM11.MSG
new file mode 100644 (file)
index 0000000..cca1b1a
--- /dev/null
+++ b/RM11.MSG
@@ -0,0 +1,66 @@
+[messages for room 11 -- rmOutsideBar\r
+[      "Leisure Suit Larry in the Land of the Lounge Lizards"\r
+[      by Al Lowe\r
+\r
+\r
+\r
+%message       1\r
+"You are outside Lefty's bar. Isn't it wonderful what can be done\r
+ with a little neon?"\r
+\r
+%message       2\r
+"There is a sign on that utility pole."\r
+\r
+%message       3\r
+"It appears that the hooker gave you a little more than you bargained for!"\r
+\r
+%message       4\r
+"Considering the looks of this place, you decide that next time you'd be\r
+ better off to spend a little more money on your computer games!"\r
+\r
+%message       5\r
+"While life may be possible, it is no longer worth living."\r
+\r
+%message       6\r
+"The windows are too dirty to see through."\r
+\r
+%message       7\r
+"Nah. Lefty would probably break both your legs!"\r
+\r
+%message       8\r
+"Nice tuck and roll job, eh?"\r
+\r
+%message       9\r
+"\"Welcome\""\r
+\r
+%message       10\r
+"Amazed by your own cleverness, you lift the door mat and discover..."\r
+\r
+%message       11\r
+"...absolutely nothing!"\r
+\r
+%message       12\r
+"(What did you expect? A key?)"\r
+\r
+%message       13\r
+"You can't. The door is securely locked. "\r
+\r
+%message       14\r
+"Lefty's closes at 3:00 a.m."\r
+\r
+%message       15\r
+"\"STOP, PERVERT!!!\" shouts the cop.\n\n\r
+\"I wonder who he's yelling at,\" you think."\r
+\r
+%message       16\r
+"\"Caught you, pervert!\" the cop shouts.\r
+ \"We don't like people exposing themselves around this town,\r
+ especially wearing one of those!\""\r
+\r
+%message       17\r
+"Next time, if you insist on wearing your \"lubber\" in public,\r
+ you should at least zip your fly."\r
+\r
+%message       18\r
+"He appears to be chasing someone!"\r
+\r
diff --git a/RM12.CG b/RM12.CG
new file mode 100644 (file)
index 0000000..bea391d
--- /dev/null
+++ b/RM12.CG
@@ -0,0 +1,1125 @@
+[logics for room 12 -- rmAlley\r
+[      "Leisure Suit Larry in the Land of the Lounge Lizards"\r
+[      by Al Lowe\r
+\r
+%include       "rm12.msg"\r
+%include       "gamedefs.h"\r
+\r
+\r
+\r
+#define        L_HOTEL_SIGN                    0\r
+#define        L_WINDOW_OPEN                   1       [       1 cell only\r
+#define        L_WINDOW_BREAKING               2\r
+#define        L_WINDOW_BROKEN         3\r
+\r
+#define        L_WITH_HAMMER                   0\r
+#define        L_WITHOUT_HAMMER                1\r
+\r
+\r
+%define        onFireEscape                    lf0\r
+%define        nearWindow                      lf1\r
+%define        nearPills                               lf2\r
+%define        hitWindow                               lf3\r
+%define        nearDumpster                    lf5\r
+%define        windowDone                      lf7\r
+%define        ropeAroundWaist         lf8\r
+%define        ropeAroundRailing               lf9\r
+\r
+\r
+%define        yuchTimer                               lv0\r
+\r
+\r
+%object        aHotelSign                      1\r
+%object        aLadder                         2\r
+%object        aWindow                         3\r
+\r
+\r
+\r
+if (initLog)\r
+       {\r
+       LoadPic( currentRoom);\r
+       DrawPic( currentRoom);\r
+       DiscardPic( currentRoom);\r
+\r
+       LoadView( vAlleyStuff);\r
+       LoadView( vEgoOnLadder);\r
+       LoadView( vEgoFalling);\r
+       LoadView( vEgoIntoDumpster);\r
+       LoadView( vEgoLeavingDumpster);\r
+       LoadView( vEgoDead);\r
+       LoadView( vEgoOnRope);\r
+\r
+       LoadSound( sEgoFalling);\r
+\r
+\r
+       AnimateObj( aHotelSign);\r
+       IgnoreHorizon( aHotelSign);\r
+       IgnoreBlocks( aHotelSign);\r
+       IgnoreObjs( aHotelSign);\r
+       SetView( aHotelSign, vAlleyStuff);\r
+       SetLoop( aHotelSign, L_HOTEL_SIGN);\r
+       SetCel( aHotelSign, 0);\r
+       Position( aHotelSign, 18, 73);\r
+       Draw( aHotelSign);\r
+       work = 8;\r
+       CycleTime( aHotelSign, work);\r
+\r
+       AnimateObj( aLadder);\r
+       IgnoreHorizon( aLadder);\r
+       IgnoreBlocks( aLadder);\r
+       IgnoreObjs( aLadder);\r
+       SetView( aLadder, vEgoOnLadder);\r
+       SetCel( aLadder, 0);\r
+       CycleTime( aLadder, three);\r
+       Position( aLadder, 51, 101);\r
+       Draw( aLadder);\r
+       StopUpdate( aLadder);\r
+\r
+\r
+       if (!ObjInRoom( iPills, currentRoom) &&\r
+               alleyWindowBroken)\r
+               {\r
+               AddToPic( vAlleyStuff, L_WINDOW_BROKEN, 0, 112, 51, 4, 4);\r
+               }\r
+       else\r
+               {\r
+               AnimateObj( aWindow);\r
+               IgnoreHorizon( aWindow);\r
+               IgnoreBlocks( aWindow);\r
+               IgnoreObjs( aWindow);\r
+               SetView( aWindow, vAlleyStuff);\r
+               SetLoop( aWindow, L_WINDOW_BREAKING);\r
+               if (alleyWindowBroken)\r
+                       {\r
+                       LastCel( aWindow, work);\r
+                       SetCelV( aWindow, work);\r
+                       }\r
+               else\r
+                       {\r
+                       SetCel( aWindow, 0);\r
+                       }\r
+               Position( aWindow, 112, 51);\r
+               Draw( aWindow);\r
+               StopUpdate( aWindow);\r
+               }\r
+\r
+       if (hookerWindowOpen)\r
+               {\r
+               AddToPic( vAlleyStuff, L_WINDOW_OPEN, 0, 65, 51, 4, 4);\r
+               }\r
+\r
+       currentStatus = NORMAL;\r
+       if (previousRoom == rmOutsideBar)\r
+               {\r
+               egoX = 0;\r
+               egoY = 148;\r
+               Reset( onFireEscape);\r
+               StartMotion( ego);\r
+               SetLoop( ego, FACING_RIGHT);\r
+               }\r
+       else\r
+               {\r
+               if (previousRoom == rmInsideBar)\r
+                       {\r
+                       egoX = 58;\r
+                       egoY = 148;\r
+                       currentStatus = IN_DUMPSTER;\r
+                       }\r
+               else\r
+                       {\r
+                       egoX = 70;\r
+                       egoY = 64;\r
+                       SetLoop( ego, FACING_FRONT);\r
+                       Set( onFireEscape);\r
+                       Reset( keepCycling);\r
+                       StartMotion( ego);\r
+                       Reset( programControl);\r
+                       ReleasePriority( ego);\r
+                       }\r
+               }\r
+       PositionV( ego, egoX, egoY);\r
+\r
+       if (previousRoom != rmInsideBar)\r
+               {\r
+               Draw( ego);\r
+               }\r
+\r
+       ShowPic( );\r
+\r
+       if (currentStatus == IN_DUMPSTER)\r
+               {\r
+               PreventInput();\r
+               Set( programControl);\r
+               Set( notCloseEnough);\r
+               }\r
+       else\r
+               {\r
+               Reset( programControl);\r
+               AcceptInput();\r
+               }\r
+       Return( );\r
+\r
+       }                                                       [       end initLOG\r
+\r
+\r
+\r
+Reset( onFireEscape);\r
+if (Posn( ego, 53, 60, 94, 64))\r
+       {\r
+       Set( onFireEscape);\r
+       }\r
+\r
+Reset( nearPills);\r
+if  (ObjInRoom( iPills, currentRoom) &&\r
+       onFireEscape &&\r
+       Posn( ego, 82, 60, 99, 64))\r
+       {\r
+       Set( nearPills);\r
+       }\r
+\r
+if (currentStatus == HANGING_BY_ROPE &&\r
+       ObjInRoom( iPills, currentRoom))\r
+       {\r
+       Set( nearPills);\r
+       }\r
+\r
+Reset( nearWindow);\r
+if (onFireEscape)\r
+       {\r
+       if (Posn( ego, 61, 60, 79, 64))\r
+               {\r
+               Set( nearWindow);\r
+               }\r
+       }\r
+\r
+Reset( nearDumpster);\r
+if (!onFireEscape &&\r
+       Posn( ego, 42, 148, 58, 152))\r
+       {\r
+       Set( nearDumpster);\r
+       }\r
+\r
+if  (onFireEscape &&\r
+       currentStatus == NORMAL &&\r
+       ropeAroundWaist && ropeAroundRailing)\r
+       {\r
+       StopMotion( ego);\r
+       }\r
+\r
+if (currentStatus == NORMAL &&\r
+       Posn( ego, 53, 60, 54, 64))\r
+       {\r
+       Reset( onFireEscape);\r
+       script = 0;\r
+       Set( scriptDone);                               [       make him start falling in trash\r
+       }\r
+\r
+\r
+[*****\r
+:handleInput\r
+[*****\r
+\r
+if (!haveInput)                                {goto noInput;}\r
+\r
+if ((Said( look) ||\r
+       Said( look, room) ||\r
+       Said( look, alley)))\r
+       {\r
+       if (!ObjInRoom( iPills, currentRoom))\r
+               {\r
+               Print( 3);\r
+               }\r
+       else\r
+               {\r
+               Print( 6);\r
+               }\r
+       }\r
+\r
+if ((Said( look, ladder) ||\r
+       Said( look, rail)))\r
+       {\r
+       Print( 43);\r
+       }\r
+\r
+\r
+\r
+[      If on ground, can "search dumpster" to find old hammer.\r
+\r
+if (currentStatus != IN_DUMPSTER)\r
+       {\r
+       if ((Said( search, bin) ||\r
+               Said( look, bin) ||\r
+               Said( look$in, bin)))\r
+               {\r
+               if (!nearDumpster)\r
+                       {\r
+                       Print( 32);\r
+                       }\r
+               else\r
+                       {\r
+                       Print( 28);\r
+                       }\r
+               }\r
+\r
+       if ((Said( brush, off, clothes) ||\r
+               Said( brush, clothes) ||\r
+               Said( brush, me, off)))\r
+               {\r
+               Set( OK);\r
+               }\r
+\r
+       if ((Said( enter, bin) ||\r
+               Said( jump, bin) ||\r
+               Said( jump, in, bin) ||\r
+               Said( climb, bin) ||\r
+               Said( climb, in, bin)))\r
+               {\r
+               if (onFireEscape)\r
+                       {\r
+                       Print( 55);\r
+                       }\r
+               else\r
+                       {\r
+                       if (!nearDumpster)\r
+                               {\r
+                               Print( 32);\r
+                               }\r
+                       else\r
+                               {\r
+                               script = 100;\r
+                               Set( scriptDone);\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+else\r
+       {\r
+       if ((Said( climb, out, bin) ||\r
+               Said( jump, out, bin) ||\r
+               Said( climb, out) ||\r
+               Said( get, out) ||\r
+               Said( go, out) ||\r
+               Said( go) ||\r
+               Said( leave, bin)))\r
+               {\r
+               script = 200;\r
+               Set( scriptDone);\r
+               }\r
+\r
+       if ((Said( search, bin) ||\r
+               Said( look$in, bin) ||\r
+               Said( look, bin)))\r
+               {\r
+               if (ObjInRoom( iHammer, currentRoom))\r
+                       {\r
+                       Print( 25);\r
+                       }\r
+               else\r
+                       {\r
+                       Print( 26);\r
+                       }\r
+               }\r
+\r
+       if (Said( get, hammer))\r
+               {\r
+               if (!ObjInRoom( iHammer, currentRoom))\r
+                       {\r
+                       Set( alreadyGotIt);\r
+                       }\r
+               else\r
+                       {\r
+                       Set( OK);\r
+                       Get( iHammer);\r
+                       currentScore += 3;\r
+                       }\r
+               }\r
+       }\r
+\r
+\r
+if (Said( look, sign))\r
+       {\r
+       Print( 47);\r
+       Print( 48);\r
+       }\r
+\r
+if ((Said( climb, up) ||\r
+       Said( climb, rail) ||\r
+       Said( climb, up, rail) ||\r
+       Said( pull, down, ladder, rail) ||\r
+       Said( pull, ladder, rail) ||\r
+       Said( pull, down, ladder) ||\r
+       Said( pull, ladder) ||\r
+       Said( climb, ladder) ||\r
+       Said( stand, on, ladder) ||\r
+       Said( get, ladder) ||\r
+       Said( lower, ladder) ||\r
+       Said( jump, ladder) ||\r
+       Said( jump, up, ladder) ||\r
+       Said( jump, on, ladder) ||\r
+       Said( jump) ||\r
+       Said( jump, up)))\r
+       {\r
+       if ((onFireEscape ||\r
+               currentStatus == HANGING_BY_ROPE ||\r
+               nearWindow))\r
+               {\r
+               Print( 8);\r
+               }\r
+       else\r
+               {\r
+               if (nearDumpster)\r
+                       {\r
+                       Print( 33);\r
+                       }\r
+               else\r
+                       {\r
+                       Print( 53);\r
+                       }\r
+               }\r
+       }\r
+\r
+\r
+if ((Said( close, window) ||\r
+       Said( lower, window)))\r
+       {\r
+       if ((!onFireEscape ||\r
+               !nearWindow))\r
+               {\r
+               Set( notCloseEnough);\r
+               }\r
+       else\r
+               {\r
+               Print( 4);\r
+               }\r
+       }\r
+\r
+if ((Said( look, window) ||\r
+       Said( look$in, window)))\r
+       {\r
+       if (!onFireEscape)\r
+               {\r
+               Print( 14);\r
+               }\r
+       else\r
+               {\r
+               if (nearWindow)\r
+                       {\r
+                       Print( 12);\r
+                       }\r
+               else\r
+                       {\r
+                       if (ObjInRoom( iPills, currentRoom))\r
+                               {\r
+                               Print( 13);\r
+                               }\r
+                       else\r
+                               {\r
+                               Print( 15);\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+\r
+if ((Said( look, west, window) ||\r
+       Said( look$in, west, window)))\r
+       {\r
+       if (!onFireEscape)\r
+               {\r
+               Print( 14);\r
+               }\r
+       else\r
+               {\r
+               Print( 12);\r
+               }\r
+       }\r
+\r
+if ((Said( look, east, window) ||\r
+       Said( look$in, east, window)))\r
+       {\r
+       if (!onFireEscape)\r
+               {\r
+               Print( 14);\r
+               }\r
+       else\r
+               {\r
+               if (ObjInRoom( iPills, currentRoom))\r
+                       {\r
+                       Print( 13);\r
+                       }\r
+               else\r
+                       {\r
+                       Print( 15);\r
+                       }\r
+               }\r
+       }\r
+\r
+\r
+\r
+[      Handle ego on balcony going for the pill bottle.\r
+[If "reach window" without rope, fall from fire escape, and die.\r
+[If ties rope to self, and railing, reach him over.\r
+\r
+if (Has( iRope) &&\r
+       currentStatus != HANGING_BY_ROPE)\r
+       {\r
+       if ((Said( tie, rope, waist) ||\r
+               Said( tie, rope, me)))\r
+               {\r
+               if (!ropeAroundWaist)\r
+                       {\r
+                       Set( OK);                                                       \r
+                       Set( ropeAroundWaist);\r
+                       }\r
+               else\r
+                       {\r
+                       Print( 22);\r
+                       }\r
+               }\r
+\r
+       if (Said( tie, rope, rail))\r
+               {\r
+               if (!onFireEscape)\r
+                       {\r
+                       Print( 36);\r
+                       }\r
+               else\r
+                       {\r
+                       if (!ropeAroundRailing)\r
+                               {\r
+                               Set( OK);                                                       \r
+                               Set( ropeAroundRailing);\r
+                               }\r
+                       else\r
+                               {\r
+                               Print( 22);\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+\r
+\r
+if ((Said( get, pills) ||\r
+       Said( get, bottle) ||\r
+       Said( get, bottle, pills) ||\r
+       Said( reach, over, window) ||\r
+       Said( reach, over, rail, get, pills) ||\r
+       Said( reach, for, pills) ||\r
+       Said( reach, over, rail, for, pills) ||\r
+       Said( reach, over, rail) ||\r
+       Said( reach, window) ||\r
+       Said( jump, window) ||\r
+       Said( stand, rail) ||\r
+       Said( stand, on, rail) ||\r
+       Said( lean, over, rail) ||\r
+       Said( lean, over) ||\r
+       Said( lean, out) ||\r
+       Said( climb, on, rail) ||\r
+       Said( climb, over) ||\r
+       Said( climb, over, rail, get, pills) ||\r
+       Said( climb, rail, get, pills) ||\r
+       Said( climb, over, rail, pills) ||\r
+       Said( climb, rail, pills) ||\r
+       Said( climb, over, rail) ||\r
+       Said( climb, rail)))\r
+       {\r
+       if (Has( iPills))\r
+               {\r
+               Set( alreadyGotIt);\r
+               }\r
+       else\r
+               {\r
+               if (ObjInRoom( iPills, currentRoom) &&\r
+                       !nearPills)\r
+                       {\r
+                       Print( 1);\r
+                       }\r
+               else\r
+                       {\r
+                       if ((!ropeAroundWaist || !ropeAroundRailing))\r
+                               {\r
+                               script = 250;\r
+                               Set( scriptDone);\r
+                               message = 16;\r
+                               }\r
+                       else\r
+                               {\r
+                               if (currentStatus != HANGING_BY_ROPE)\r
+                                       {\r
+                                       currentStatus = HANGING_BY_ROPE;\r
+                                       Set( programControl);\r
+                                       StopMotion( ego);\r
+                                       SetView( ego, vEgoOnRope);\r
+                                       SetLoop( ego, L_WITHOUT_HAMMER);\r
+                                       RepositionTo( ego, 92, 61);\r
+                                       Set( keepCycling);\r
+                                       CycleTime( ego, three);\r
+                                       Print( 17);\r
+                                       }\r
+                               else\r
+                                       {\r
+                                       if (!ObjInRoom( iPills, currentRoom))\r
+                                               {\r
+                                               Print( 24);\r
+                                               }\r
+                                       else\r
+                                               {\r
+                                               if (!alleyWindowBroken)\r
+                                                       {\r
+                                                       Print( 21);\r
+                                                       Print( 9);\r
+                                                       }\r
+                                               else\r
+                                                       {\r
+                                                       SetLoop( ego, L_WITHOUT_HAMMER);\r
+                                                       StartUpdate( aWindow);\r
+                                                       Erase( aWindow);\r
+                               AddToPic( vAlleyStuff, L_WINDOW_BROKEN, 0, 112, 51, 4, 4);\r
+                                                       Get( iPills);\r
+                                                       currentScore += 8;\r
+                                                       Print( 19);\r
+                                                       }\r
+                                               }\r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+\r
+if (!alleyWindowBroken &&\r
+    (Said( break, window, hammer) ||\r
+       Said( use, hammer, break, window) ||\r
+       Said( break, window) ||\r
+       Said( break, window, with, hammer) ||\r
+       Said( hit, window, hammer) ||\r
+       Said( use, hammer, hit, window) ||\r
+       Said( hit, window) ||\r
+       Said( hit, window, with, hammer) ||\r
+       Said( use, hammer)))\r
+       {\r
+       if (!Has( iHammer))\r
+               {\r
+               Set( dontHaveIt);\r
+               }\r
+       else\r
+               {\r
+               if ((!nearPills ||\r
+                       !ropeAroundWaist ||\r
+                       !ropeAroundRailing))\r
+                       {\r
+                       Set( notCloseEnough);                           \r
+                       }\r
+               else\r
+                       {\r
+                       if (currentStatus != HANGING_BY_ROPE)\r
+                               {\r
+                               Print( 20);\r
+                               }\r
+                       else\r
+                               {\r
+                               SetLoop( ego, L_WITH_HAMMER);\r
+                               SetCel( ego, 0);\r
+                               EndOfLoop( ego, hitWindow);\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+\r
+\r
+if (currentStatus == HANGING_BY_ROPE)\r
+       {\r
+       if (Said( unlock, window))\r
+               {\r
+               Print( 10);\r
+               }\r
+\r
+       if (Said( open, window))\r
+               {\r
+               Print( 11);\r
+               }\r
+\r
+       if (!alleyWindowBroken &&\r
+           (Said( hit, window) ||\r
+               Said( hit, window, with, hand) ||\r
+               Said( use, hand, hit, window) ||\r
+               Said( break, window)))\r
+               {\r
+               Print( 21);\r
+               Print( 9);\r
+               }\r
+\r
+       if ((Said( go, rail) ||\r
+               Said( go, back, on, rail) ||\r
+               Said( go, on, rail) ||\r
+               Said( go, back) ||\r
+               Said( go, back, rail) ||\r
+               Said( get, on, rail) ||\r
+               Said( get, back, rail) ||\r
+               Said( get, back, on, rail) ||\r
+               Said( pull, on, rope) ||\r
+               Said( pull, rope) ||\r
+               Said( get, rail) ||\r
+               Said( climb, back) ||\r
+               Said( climb, back, rail) ||\r
+               Said( climb, back, on, rail) ||\r
+               Said( climb, on, rail) ||\r
+               Said( climb, rail) ||\r
+               Said( return, rail) ||\r
+               Said( return, rail) ||\r
+               Said( stop, hanging, rope)))\r
+               {\r
+               Set( OK);                                                       \r
+               currentStatus = NORMAL;\r
+               SetView( ego, vEgo);\r
+               RepositionTo( ego, 86, 64);\r
+               AcceptInput();\r
+               StartMotion( ego);\r
+               Reset( programControl);\r
+               Reset( keepCycling);\r
+               CycleTime( ego, one);\r
+               }\r
+\r
+       if (Said( look, down))\r
+               {\r
+               Print( 52);\r
+               }\r
+       }\r
+\r
+\r
+if ((Said( cut, rope, rol) ||\r
+       Said( use, knife, rol)))\r
+       {\r
+       if (!Has( iPocketKnife))\r
+               {\r
+               Print( 56);\r
+               }\r
+       else\r
+               {\r
+               if (currentStatus == HANGING_BY_ROPE)\r
+                       {\r
+                       Print( 41);\r
+                       script = 250;\r
+                       Set( scriptDone);\r
+                       message = 23;\r
+                       }\r
+               else\r
+                       {\r
+                       if (!ropeAroundWaist && !ropeAroundRailing)\r
+                               {\r
+                               Print( 40);\r
+                               }\r
+                       else\r
+                               {\r
+                               Print( 41);\r
+                               Reset( ropeAroundWaist);\r
+                               Reset( ropeAroundRailing);\r
+                               StartMotion( ego);\r
+                               Reset( programControl);\r
+                               Get( iRope);\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+\r
+\r
+if ((Said( take, rope, rol) ||\r
+       Said( untie, rope, rol)))\r
+       {\r
+       if (currentStatus == HANGING_BY_ROPE)\r
+               {\r
+               script = 250;\r
+               Set( scriptDone);\r
+               message = 23;\r
+               }\r
+       else\r
+               {\r
+               if (!ropeAroundWaist && !ropeAroundRailing)\r
+                       {\r
+                       Print( 40);\r
+                       }\r
+               else\r
+                       {\r
+                       Print( 39);\r
+                       Get( iRope);\r
+                       Reset( ropeAroundRailing);\r
+                       Reset( ropeAroundWaist);\r
+                       StartMotion( ego);\r
+                       Reset( programControl);\r
+                       }\r
+               }\r
+       }\r
+\r
+\r
+if (onFireEscape)\r
+       {\r
+       if (Said( look, fire$escape))\r
+               {\r
+               Print( 5);\r
+               }\r
+\r
+       if ((Said( enter, window) ||\r
+               Said( climb, window) ||\r
+               Said( go, back) ||\r
+               Said( go, room) ||\r
+               Said( go, window)))\r
+               {\r
+               if (!nearWindow)\r
+                       {\r
+                       Print( 54);\r
+                       }\r
+               else\r
+                       {\r
+                       if (ropeAroundWaist && ropeAroundRailing)\r
+                               {\r
+                               Print( 57);\r
+                               }\r
+                       else\r
+                               {\r
+                               Set( OK);                                                       \r
+                               newRoom = rmHooker;\r
+                               }\r
+                       }\r
+               }\r
+\r
+       if ((Said( climb, down) ||\r
+               Said( lower, ladder) ||\r
+               Said( go, ladder) ||\r
+               Said( go, down, ladder) ||\r
+               Said( climb, down, ladder) ||\r
+               Said( climb, ladder)))\r
+               {\r
+               Print( 2);\r
+               }\r
+\r
+       if (Said( look, down))\r
+               {\r
+               Print( 52);\r
+               }\r
+\r
+       if ((Said( jump) ||\r
+               Said( jump, off) ||\r
+               Said( jump, down) ||\r
+               Said( jump, bin) ||\r
+               Said( stand, on, rail) ||\r
+               Said( jump, off, rail) ||\r
+               Said( climb, down, rail)))\r
+               {\r
+               if (ropeAroundWaist && ropeAroundRailing)\r
+                       {\r
+                       Print( 57);\r
+                       }\r
+               else\r
+                       {\r
+                       script = 250;\r
+                       Set( scriptDone);\r
+                       message = 23;\r
+                       }\r
+               }\r
+       }\r
+\r
+\r
+if (ObjInRoom( iPills, currentRoom) &&\r
+       Said( look, pills))\r
+       {\r
+       if (nearPills)\r
+               {\r
+               Print( 13);\r
+               }\r
+       else\r
+               {\r
+               Print( 51);\r
+               }\r
+       }\r
+\r
+\r
+\r
+[      Misses, give clue.\r
+\r
+if ((Said( take, ladder) ||\r
+       Said( remove, ladder)))\r
+       {\r
+       Print( 49);\r
+       }\r
+\r
+if ((Said( throw, rope, rol) ||\r
+       Said( climb, down, rope, rol) ||\r
+       Said( climb, rope, rol)))\r
+       {\r
+       Print( 37);\r
+       }\r
+\r
+if ((Said( tie, rope) ||\r
+       Said( use, rope)))\r
+       {\r
+       Print( 38);\r
+       }\r
+\r
+if ((Said( look, over, fence) ||\r
+       Said( look, fence)))\r
+       {\r
+       Print( 34);\r
+       }\r
+\r
+if ((Said( climb, fence) ||\r
+       Said( jump, fence) ||\r
+       Said( jump, over, fence) ||\r
+       Said( climb, over, fence)))\r
+       {\r
+       Print( 35);\r
+       }\r
+\r
+if ((Said( close, lid, rol) ||\r
+       Said( climb, on, bin, rol) ||\r
+       Said( climb, bin, rol) ||\r
+       Said( climb, on, top, bin, rol) ||\r
+       Said( lower, lid, rol) ||\r
+       Said( lower, bin, rol) ||\r
+       Said( stand, on, bin) ||\r
+       Said( move, lid, rol) ||\r
+       Said( close, bin, rol)))\r
+       {\r
+       Print( 44);\r
+       }\r
+\r
+if ((Said( look, behind, bin) ||\r
+       Said( move, bin, rol)))\r
+       {\r
+       Print( 45);\r
+       }\r
+\r
+if (Said( tie, rope, anyword))\r
+       {\r
+       Print( 46);\r
+       }\r
+\r
+if ((Said( cut, glass, with, ring) ||\r
+       Said( use, ring, cut, glass) ||\r
+       Said( hold, rope, rol) ||\r
+       Said( hold, ladder, rol) ||\r
+       Said( hit, fence, rol) ||\r
+       Said( hit, ladder, rol) ||\r
+       Said( hit, wall, rol)))\r
+       {\r
+       Print( 42);\r
+       }\r
+\r
+\r
+\r
+\r
+[*****\r
+:noInput\r
+[*****\r
+\r
+if (hitWindow)\r
+       {\r
+       Reset( hitWindow);\r
+       Print( 18);\r
+       PreventInput();\r
+       StartUpdate( aWindow);\r
+       EndOfLoop( aWindow, windowDone);\r
+       }\r
+\r
+if (windowDone)\r
+       {\r
+       Reset( windowDone);\r
+       Reset( keepCycling);\r
+       StopUpdate( aWindow);\r
+       Set( alleyWindowBroken);\r
+       AcceptInput();\r
+       }\r
+\r
+if (aSecondPassed)\r
+       {\r
+       --yuchTimer;\r
+       if (yuchTimer == 16)\r
+               {\r
+               Print( 30);\r
+               }\r
+\r
+       if (yuchTimer == 11)\r
+               {\r
+               Print( 31);\r
+               AcceptInput();\r
+               }\r
+\r
+       if (yuchTimer == 1 &&\r
+               currentStatus == IN_DUMPSTER)\r
+               {\r
+               Print( 27);\r
+               }\r
+       }\r
+\r
+CurrentCel( aLadder, work);\r
+if (work == 4)\r
+       {\r
+       Set( scriptDone);\r
+       }\r
+\r
+if (scriptDone)\r
+       {\r
+       Reset( scriptDone);\r
+       ++script;\r
+\r
+       if (script == 1)                                [       Fall down ladder.\r
+               {\r
+               currentStatus = FALLING;\r
+               StartUpdate( aLadder);\r
+               SetCel( aLadder, 1);\r
+\r
+               Set( programControl);\r
+               PreventInput();\r
+               Erase( ego);\r
+               EndOfLoop( aLadder, scriptDone);\r
+               Sound( sEgoFalling, done);\r
+               }\r
+\r
+       if (script == 2)\r
+               {\r
+               SetView( ego, vEgoFalling);\r
+               SetPriority( ego, 11);\r
+               Position( ego, 53, 99);\r
+               Draw( ego);\r
+               MoveObj( ego, 53, 137, 3, scriptDone);\r
+               }\r
+\r
+       if (script == 3)\r
+               {\r
+               SetCel( aLadder, 0);\r
+               StopUpdate( aLadder);\r
+               ForceUpdate( aLadder);\r
+               }\r
+\r
+       if (script == 4)\r
+               {\r
+               StopMotion( ego);\r
+               Set( programControl);\r
+               SetView( ego, vEgoIntoDumpster);\r
+               SetCel( ego, 1);\r
+               SetPriority( ego, 15);\r
+               RepositionTo( ego, 40, 126);\r
+               CycleTime( ego, three);\r
+               Set( keepCycling);\r
+               EndOfLoop( ego, scriptDone);\r
+               }\r
+\r
+       if (script == 5)\r
+               {\r
+               Reset( keepCycling);\r
+               StopCycling( ego);\r
+               LastCel( ego, work);\r
+               SetCelV( ego, work);\r
+               AcceptInput();\r
+               currentStatus = IN_DUMPSTER;\r
+               yuchTimer = 5;\r
+               script = 0;\r
+               }\r
+\r
+\r
+\r
+       if (script == 101)                              [       Climbing into dumpster\r
+               {\r
+               Set( OK);\r
+               StopMotion( ego);\r
+               Set( programControl);\r
+               AcceptInput();\r
+               currentStatus = IN_DUMPSTER;\r
+               SetView( ego, vEgoLeavingDumpster);\r
+               LastCel( ego, work);\r
+               SetCelV( ego, work);\r
+               SetPriority( ego, 15);\r
+               RepositionTo( ego, 45, 145);\r
+               CycleTime( ego, two);\r
+               Set( keepCycling);\r
+               BeginningOfLoop( ego, scriptDone);\r
+               }\r
+\r
+       if (script == 102)\r
+               {\r
+               Reset( keepCycling);\r
+               StopCycling( ego);\r
+               SetView( ego, vEgoIntoDumpster);\r
+               RepositionTo( ego, 40, 126);\r
+               LastCel( ego, work);\r
+               SetCelV( ego, work);\r
+               yuchTimer = 5;\r
+               script = 0;\r
+               }\r
+\r
+\r
+\r
+       if (script == 201)                              [       Climbing out of dumpster.\r
+               {\r
+               Set( programControl);\r
+               Set( OK);                                                       \r
+               SetView( ego, vEgoLeavingDumpster);\r
+               SetCel( ego, 0);\r
+               SetPriority( ego, 15);\r
+               Position( ego, 49, 145);\r
+               CycleTime( ego, three);\r
+               Set( keepCycling);\r
+               EndOfLoop( ego, scriptDone);\r
+               }\r
+\r
+       if (script == 202)\r
+               {\r
+               Reset( keepCycling);\r
+               SetView( ego, vEgo);\r
+               RepositionTo( ego, 52, 148);\r
+               StartMotion( ego);\r
+               Reset( programControl);\r
+               ReleasePriority( ego);\r
+               StepSize( ego, one);\r
+   &n