Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - OmerMor

Pages: 1 ... 3 4 [5] 6 7 ... 28
61
SCI Development Tools / Re: Reasons to develop 640x480 SCI tools
« on: January 10, 2019, 02:11:27 PM »
Why would you extract and convert them yourself when I did it all for you? http://helmet.kafuka.org/backgrounds/sci/

Kawa, you're missing a few games:
  • Mixed-up Mother Goose Deluxe
  • Mixed-Up Fairy Tales EGA
  • Conquests of the Longbow EGA
  • Jones in the Fast Lane EGA
  • Jones in the Fast Lane VGA
  • Hoyle 1
  • Hoyle 2
  • Hoyle 3 VGA
  • Hoyle 5 (Classic Games)
  • Laura Bow 2
  • Slater and Charlie
  • Phantasmagoria 2
  • Police Quest: SWAT
  • Rama
  • Lighthouse
  • Shivers 2
  • ImagiNation Network
  • The Realm

If you're missing any, drop me line.

62
SCI Development Tools / Re: Reasons to develop 640x480 SCI tools
« on: January 10, 2019, 12:04:12 PM »
Too bad that we don't have the source for the later interpreters.

I'll do something about that later.  :)

63
AGI Development Tools / Re: C# AGI Interpreter
« on: January 10, 2019, 12:03:17 PM »
So I started wondering how scummvm handles this (since I've already ruled out the extra Loop having been introduced by an editor, due to timestamps on the KQ4 files still being 1988). Turns out that it has a specific workaround coded for KQ4:

https://github.com/scummvm/scummvm/blob/master/engines/agi/view.cpp


Turns out this fix goes all the way back to Sarien (which was imported to ScummVm), some 18 years ago:
https://github.com/cmatsuoka/sarien/commit/2e38cdc

64
I'm hoping Omer is going to provide some samples from other games for comparison (the more games, the better, even if it is only one script from each  ;) ). It could be that they had multiple different syntaxes, which if true would make it difficult to make a tool like AGI Studio or WinAGI more authentic.

Here are some samples from a few AGI games: https://drive.google.com/open?id=1HSI3RiZPYszjLPbZM9k-Zyuo4uHqd1id
The syntax is game specific and defined in their source.

65
Where did you get this? It is a really fascinating look at how Sierra coded their games.
From generous people who were willing to privately share it with me.

I would really love to have more of this source code to help in decompiling the interpreter and gaining a fuller understanding of how everything works.

If you're looking for a specific snippet - I can probably post it here.

68
Just walk on by and drop a load of code right there like it ain't a thing ::)

Christmas spirit, right?  ;D

69
Having said that, i think this is really unfortunate news, and means we may never get to see the original sources to Larry or Sierra's other titles.

Hi Peter,
Don't despair. Here's the source for LSL1's Lefty's bar (RM15):

RM15.CG
Code: [Select]
[logics for room 15 -- rmInsideBar
[    "Leisure Suit Larry in the Land of the Lounge Lizards"
[    by Al Lowe

%include  "rm15.msg"
%include  "gamedefs.h"



#define   L_PEEPHOLE               0
#define   L_CEILING_FAN            1
#define   L_JUKEBOX                2
#define   L_MEN_ON_STOOL           0
#define   L_GIRL_ON_STOOL          1
#define   L_EGO_ON_STOOL           2
%define   BAR_Y                    136
%define   WAITING_FOR_PASSWORD     3


%define   legCycling               lf0
%define   bartenderWandering       lf1
%define   boreCycling              lf2
%define   nearJukeBox              lf3
%define   nearGirl                 lf4
%define   nearBore                 lf5
%define   nearEmptyStool           lf6
%define   nearMen                  lf7
%define   nearDoor                 lf8
%define   doorScriptDone           lf9
%define   startJukeBox             lf10
%define   orderedAWhiskey          lf11
%define   orderedABeer             lf12
%define   orderedAWine             lf13
%define   staggering               lf14
%define   tookADrink               lf15
%define   beenToldPrice            lf16

%define   heardJoke1               lf21
%define   heardJoke2               lf22
%define   heardJoke3               lf23
%define   heardJoke4               lf24
%define   heardJoke5               lf25
%define   heardJoke6               lf26
%define   heardJoke7               lf27
%define   heardJoke8               lf28
%define   heardJoke9               lf29


%define   jukeBoxTimer             lv0
%define   bartenderTimer           lv1
%define   legCycles                lv2
%define   boreTalkCycles           lv3
%define   jokeSeconds              lv4
%define   doorTimer                lv5
%define   doorScript               lv6
%define   drinkCount               lv7
%define   staggerCycles            lv8
%define   drunkSeconds             lv9
%define   joke                     lv10
%define   tipCount                 lv11


%object   aDoor                    1
%object   aPeepHole                2
%object   aFan                     3
%object   aJukeBox                 4
%object   aGirl                    5
%object   aBore                    6
%object   aBartender               7



if (initLog)
     {
     SetHorizon( 99);

     LoadPic( currentRoom);
     DrawPic( currentRoom);
     DiscardPic( currentRoom);

     LoadSound( mTitle);

     LoadView( vPimpDoor);
     LoadView( vBarInterior);
     LoadView( vBarGreaser);
     LoadView( vBarFlys);
     LoadView( vBarDoor);
     LoadView( vBartender);


     LoadView( vPainting);
     AddToPic( vPainting, 0, 0, 81, 69, 4, 4);
          [view, loop, cel,  x,   y, obj priority, box priority
     DiscardView( vPainting);

     AddToPic( vBarFlys, 0, 0, 112, 128, 11, 0);
     AddToPic( vBarFlys, 0, 1, 101, 128, 11, 0);


     AnimateObj( aDoor);
     IgnoreBlocks( aDoor);
     IgnoreObjs( aDoor);
     Position( aDoor, 142, 150);
     SetView( aDoor, vPimpDoor);
     SetCel( aDoor, 0);
     SetPriority( aDoor, 11);
     Draw( aDoor);
     work = DOOR_CYCLE_TIME;
     CycleTime( aDoor, work);
     StopUpdate( aDoor);

     AnimateObj( aPeepHole);
     SetView( aPeepHole, vBarInterior);
     SetLoop( aPeepHole, L_PEEPHOLE);
     FixLoop( aPeepHole);
     SetCel( aPeepHole, 0);
     SetPriority( aPeepHole, 12);
     Position( aPeepHole, 143, 110);

     AnimateObj( aFan);
     IgnoreHorizon( aFan);
     Position( aFan, 66, 66);
     SetView( aFan, vBarInterior);
     SetLoop( aFan, L_CEILING_FAN);
     FixLoop( aFan);
     SetCel( aFan, 0);
     Draw( aFan);
     CycleTime( aFan, two);

     AnimateObj( aJukeBox);
     IgnoreBlocks( aJukeBox);
     IgnoreObjs( aJukeBox);
     SetView( aJukeBox, vBarInterior);
     SetLoop( aJukeBox, L_JUKEBOX);
     FixLoop( aJukeBox);
     SetCel( aJukeBox, 1);
     Position( aJukeBox, 16, 128);
     SetPriority( aJukeBox, 11);
     Draw( aJukeBox);
     StopUpdate( aJukeBox);

     AnimateObj( aGirl);
     IgnoreBlocks( aGirl);
     IgnoreObjs( aGirl);
     SetView( aGirl, vBarFlys);
     SetLoop( aGirl, L_GIRL_ON_STOOL);
     SetCel( aGirl, 0);
     SetPriority( aGirl, 11);
     Position( aGirl, 65, 128);
     Draw( aGirl);
     CycleTime( aGirl, two);

     AnimateObj( aBore);
     IgnoreBlocks( aBore);
     SetView( aBore, vBarGreaser);
     SetLoop( aBore, FACING_LEFT);
     SetPriority( aBore, 11);
     Position( aBore, 77, 128);
     Draw( aBore);

     AnimateObj( aBartender);
     SetView( aBartender, vBartender);
     SetLoop( aBartender, 0);
     SetCel( aBartender, 0);
     Position( aBartender, 106, 101);
     Draw( aBartender);
     StopUpdate( aBartender);

     if (previousRoom == rmBackroom)
          {
          egoX = 141;
          egoY = 148;
          }
     else
          {
          if (previousRoom == rmHallway)
               {
               egoX = 39;
               egoY = 108;
               }
          else
               {
               egoX = 76;
               egoY = 167;
               }
          }
     PositionV( ego, egoX, egoY);
     Draw( ego);

     Random( 15, 32, bartenderTimer);
     Random( 4, 32, legCycles);
     Random( 15, 32, boreTalkCycles);

     ShowPic( );

     Return( );

     }                                  [    end initLOG



if (Posn( ego, 45, 120, 133, 159))      [    near bar
     {
     SetPriority( ego, 12);
     }
else
     {
     ReleasePriority( ego);
     }

Reset( nearJukeBox);
if (Posn( ego, 0, 117, 33, 131))
     {
     Set( nearJukeBox);
     }

Reset( nearGirl);
if (Posn( ego, 55, 0, 78, BAR_Y))
     {
     Set( nearGirl);
     Set( nearPerson);
     }

Reset( nearBore);
if (Posn( ego, 71, 0, 87, BAR_Y))
     {
     Set( nearBore);
     Set( nearPerson);
     }

Reset( nearEmptyStool);
if (Posn( ego, 85, 0, 99, BAR_Y))
     {
     Set( nearEmptyStool);
     }

Reset( nearMen);
if (Posn( ego, 94, 0, 124, BAR_Y))
     {
     Set( nearMen);
     Set( nearPerson);
     }

Reset( nearDoor);
if (Posn( ego, 132, 137, 149, 154))
     {
     Set( nearDoor);
     }


[*****
:handleInput
[*****

if (!haveInput)               {goto noInput;}


[    Handle the pimp door sequence.

if (doorScript != WAITING_FOR_PASSWORD)
     {
     if (Said( ken$sent$me))
          {
          Print( 6);
          }
     }
else
     {
     Set( doorScriptDone);
     if (Said( ken$sent$me))
          {
          doorScript = 100;
          doorTimer = 0;
          }
     Set( haveMatch);
     unknownWord = 0;
     }

if ((Said( ask, anyword, password) ||
     Said( ask, password)))
     {
     if (!nearPerson)
          {
          Set( notCloseEnough);
          }
     else
          {
          Print( 68);
          }
     }

if ((Said( unlock, door) ||
     Said( open, door)))
     {
     if (!nearDoor)
          {
          Set( notCloseEnough);
          }
     else
          {
          Print( 47);
          }
     }

if ((Said( look, peephole, rol) ||
     Said( look$in, peephole, rol) ||
     Said( look, door) ||
     Said( look$in, door) ||
     Said( look, window, rol) ||
     Said( look$in, window, rol)))
     {
     Print( 65);
     }

if ((Said( break, down, door) ||
     Said( break, door, rol) ||
     Said( hit, door)))
     {
     if (!nearDoor)
          {
          Set( notCloseEnough);
          }
     else
          {
          Print( 55);
          }
     }

if (Said( knock, rol))
     {
     if (!nearDoor)
          {
          Set( notCloseEnough);                   
          }
     else
          {
          if (doorScript)
               {
               Print( 46);
               }
          else
               {
               Set( programControl);
               StopMotion( ego);
               Print( 5);
               doorTimer = 3;
               }
          }
     }

if ((Said( unlock, door, rol) ||
     Said( use, key, rol)))
     {
     if (!nearDoor)
          {
          Set( notCloseEnough);
          }
     else
          {
          Print( 63);
          }
     }


[    General purpose looks.

if ((Said( look) ||
     Said( look, room) ||
     Said( look, bar)))
     {
     Print( 1);
     }

if ((Said( tip, bartender) ||
     Said( give, bartender, money) ||
     Said( give, money, bartender) ||
     Said( give, tip, bartender)))
     {
     if (currentStatus != ON_BAR_STOOL)
          {
          Print( 33);
          }
     else
          {
          if (!dollars > 4)
               {
               Print( 76);
               }
          else
               {
               ++tipCount;
               dollars -= 5;
               if (tipCount == 1)                 {Print( 77);}
               if (tipCount == 2)                 {Print( 78);}
               if (tipCount == 3)                 {Print( 79);}
               if (tipCount == 4)                 {Print( 80);}
               if (tipCount  > 4)                 {Print( 81);}
               }
          }
     }

if (Said( look, bartender))
     {
     Print( 82);
     Print( 83);
     }

if (Said( buy, bartender, drink))
     {
     if (currentStatus != ON_BAR_STOOL)
          {
          Print( 33);
          }
     else
          {
          Print( 69);
          }
     }

if (Said( buy, round))
     {
     if (currentStatus != ON_BAR_STOOL)
          {
          Print( 33);
          }
     else
          {
          if (!beenToldPrice)
               {
               Set( beenToldPrice);
               Print( 70);
               }
          else
               {
               dollars = 0;
               Print( 71);
               }
          }
     }

if ((Said( give, bartender, money) ||
     Said( give, money, bartender) ||
     Said( pay, lefty) ||
     Said( bribe, lefty)))
     {
     Print( 72);
     }

if (Said( look, moose))
     {
     Print( 45);
     }

if (Said( look, girl))
     {
     Print( 48);
     }

if ((Said( look, man) ||
     Said( look, people)))
     {
     Print( 53);
     }

if (Said( look, fan))
     {
     Print( 49);
     Print( 50);
     }

if (Said( look, painting))
     {
     Print( 51);
     }

if ((Said( touch, girl) ||
     Said( touch, girl, leg) ||
     Said( touch, leg) ||
     Said( look, leg) ||
     Said( feel, leg) ||
     Said( feel, girl, leg) ||
     Said( feel, girl)))
     {
     if (!nearGirl)
          {
          Set( notCloseEnough);
          }
     else
          {
          Print( 67);
          }
     }

if ((Said( pick$up, girl) ||
     Said( ask, girl, dance) ||
     Said( dance, with, girl) ||
     Said( buy, girl, drink) ||
     Said( kiss, girl) ||
     Said( talk, girl)))
     {
     if (!nearGirl)
          {
          Set( notCloseEnough);
          }
     else
          {
          Print( 60);
          Print( 56);
          Print( 57);
          }
     }

if ((Said( listen, man) ||
     Said( talk, man)))
     {
     if ((nearBore || currentStatus == ON_BAR_STOOL))
          {
          Print( 59);
          }
     else
          {
          if (nearMen)
               {
               Print( 61);
               }
          else
               {
               Set( notCloseEnough);
               }
          }
     }

if ((Said( look, jukebox) ||
     Said( look$in, jukebox)))
     {
     if (!nearJukeBox)
          {
          Set( notCloseEnough);
          }
     else
          {
          Print( 64);
          }
     }

if ((Said( play, jukebox) ||
     Said( use, jukebox) ||
     Said( play, music) ||
     Said( put, anyword, dollar, jukebox) ||
     Said( put, dollar, jukebox) ||
     Said( put, money, jukebox)))
     {
     if (!nearJukeBox)
          {
          Set( notCloseEnough);
          }
     else
          {
          Print( 4);
          dollars -= 1;
          Set( startJukeBox);
          }
     }

if ((Said( use, hammer, door) ||
     Said( open, door, use, hammer) ||
     Said( hit, door, with, hammer) ||
     Said( use, hammer, open, door) ||
     Said( use, hammer, door) ||
     Said( use, hammer, on, door) ||
     Said( hammer, on, door)))
     {
     if (!nearDoor)
          {
          Set( notCloseEnough);
          }
     else
          {
          if (!Has( iHammer))
               {
               Set( dontHaveIt);
               }
          else
               {
               Print( 73);
               }
          }
     }


[    Handle the purchase of libations.

if ((Said( order, drink) ||
     Said( buy, drink, wino) ||
     Said( buy, wino, drink) ||
     Said( buy, drink) ||
     Said( drink) ||
     Said( talk, bartender)))
     {
     if (currentStatus != ON_BAR_STOOL)
          {
          Print( 20);
          }
     else
          {
          Print( 21);
          }
     }

if ((Said( wine) ||
     Said( give, me, wine) ||
     Said( get, wine) ||
     Said( order, wine)))
     {
     if (currentStatus != ON_BAR_STOOL)
          {
          Print( 33);
          }
     else
          {
          if (script && script < 5)
               {
               Print( 40);
               }
          else
               {
               Print( 36);
               Print( 37);
               Set( orderedAWine);
               script = 0;
               Set( scriptDone);
               }
          }
     }

if ((Said( beer) ||
     Said( give, me, beer) ||
     Said( get, beer) ||
     Said( order, beer)))
     {
     if (currentStatus != ON_BAR_STOOL)
          {
          Print( 33);
          }
     else
          {
          if (script && script < 5)
               {
               Print( 40);
               }
          else
               {
               Print( 23);
               Set( orderedABeer);
               script = 0;
               Set( scriptDone);
               }
          }
     }

if ((Said( booze) ||                    [    Generic non-handled liquors.
     Said( give, me, booze) ||
     Said( get, booze) ||
     Said( champagne) ||
     Said( give, me, champagne) ||
     Said( get, champagne) ||
     Said( order, champagne) ||
     Said( order, booze)))
     {
     if (currentStatus != ON_BAR_STOOL)
          {
          Print( 33);
          }
     else
          {
          if (script && script < 5)
               {
               Print( 40);
               }
          else
               {
               Print( 54);
               }
          }
     }

if ((Said( light, beer) ||
     Said( give, me, light, beer) ||
     Said( get, light, beer) ||
     Said( order, light, beer)))
     {
     if (currentStatus != ON_BAR_STOOL)
          {
          Print( 33);
          }
     else
          {
          if (script && script < 5)
               {
               Print( 40);
               }
          else
               {
               Print( 52);
               }
          }
     }

if ((Said( whiskey) ||
     Said( give, me, whiskey) ||
     Said( get, whiskey) ||
     Said( order, whiskey)))
     {
     if (currentStatus != ON_BAR_STOOL)
          {
          Print( 33);
          }
     else
          {
          if (script && script < 5)
               {
               Print( 40);
               }
          else
               {
               Print( 22);
               Set( orderedAWhiskey);
               script = 0;
               Set( scriptDone);
               }
          }
     }

if (Said( drink, whiskey))
     {
     if (!Has( iWhiskey))
          {
          Set( dontHaveIt);
          }
     else
          {
          if (currentStatus != ON_BAR_STOOL)
               {
               Print( 34);
               }
          else
               {
               Set( tookADrink);
               Drop( iWhiskey);
               Print( 39);
               }
          }
     }



[    Handle mounting, and dismounting, of stool.

if ((Said( sit) ||
     Said( sit, down)||
     Said( sit, bar)||
     Said( mount, stool)||
     Said( mount, bar, stool)||
     Said( get, on, stool) ||
     Said( sit, on, stool) ||
     Said( sit, on, bar, stool) ||
     Said( sit, down, on, stool) ||
     Said( sit, down, on, bar, stool) ||
     Said( sit, bar, stool) ||
     Said( sit, stool)))
     {
     if (currentStatus == ON_BAR_STOOL)
          {
          Print( 3);
          }
     else
          {
          if (!nearEmptyStool)
               {
               Set( notCloseEnough);                   
               }
          else
               {
               currentStatus = ON_BAR_STOOL;
               IgnoreBlocks( ego);
               SetView( ego, vBarFlys);
               SetLoop( ego, L_EGO_ON_STOOL);
               RepositionTo( ego, 90, 128);
               StopMotion( ego);
               Set( programControl);

               StopCycling( aBore);
               jokeSeconds = 15;        [    Seconds(+7) before first joke.
               boreTalkCycles = 0;      [    Turn off his random talking.
               }
          }
     }


if ((Said( leave, stool) ||
     Said( leave, bar, stool) ||
     Said( get, off, stool) ||
     Said( get, off, bar, stool) ||
     Said( get, up) ||
     Said( get, off) ||
     Said( get, down) ||
     Said( stand, up) ||
     Said( stand)))
     {
     if (currentStatus != ON_BAR_STOOL)
          {
          Print( 2);
          }
     else
          {
          if (script && script < 5)
               {
               Print( 40);
               }
          else
               {
               SetView( ego, vEgo);
               StartMotion( ego);
               Reset( programControl);
               ObserveBlocks( ego);
               RepositionTo( ego, 90, 131);

               SetLoop( aBore, FACING_LEFT);
               StopCycling( aBore);
               Random( 24, 32, boreTalkCycles); [ Cycles before talking to girl.
               jokeSeconds = 0;              [    No more jokes.

               if (!drunkSeconds)
                    {
                    currentStatus = NORMAL;
                    }
               else
                    {
                    currentStatus = DRUNK;
                    Set( handsOff);
                    PreventInput();
                    Print( 41);
                    }
               }
          }
     }


if ((Said( kiss, off, rol) ||
     Said( fuck$you, rol) ||
     Said( damn, rol) ||
     Said( go, hump, rol) ||
     Said( shut, up, rol) ||
     Said( get, lost, rol)))
     {
     if (currentStatus != ON_BAR_STOOL)
          {
          Print( 44);
          }
     else
          {
          CurrentLoop( aBore, work);
          if (work != FACING_RIGHT)
               {
               Print( 62);
               }
          else
               {
               Print( 43);

               [    Make him sulk awhile before he starts talking to the girl.
               SetLoop( aBore, FACING_LEFT);
               StopCycling( aBore);
               Reset( boreCycling);
               Random( 123, 234, boreTalkCycles);
               Random( 44, 88, jokeSeconds); [    seconds till he talks to ego.
               }
          }
     }


[*****
:noInput
[*****

if (aSecondPassed)
     {
     --jukeBoxTimer;
     if (jukeBoxTimer == 1 && !soundOn)
          {
          Set( musicDone);
          }

     --bartenderTimer;
     if (bartenderTimer == 1)
          {
          Toggle( bartenderWandering);
          if (bartenderWandering)
               {
               Random( 4, 12, bartenderTimer);
               StartUpdate( aBartender);
               Wander( aBartender);
               }
          else
               {
               Random( 12, 33, bartenderTimer);
               SetLoop( aBartender, FACING_FRONT);
               ForceUpdate( aBartender);
               StopUpdate( aBartender);
               }
          }

     --doorTimer;
     if (doorTimer == 1)
          {
          Set( doorScriptDone);
          }

     if (currentStatus == DRUNK)
          {
          --drunkSeconds;
          if (drunkSeconds == 41)
               {
               Print( 66);
               }

          if (drunkSeconds == 1)
               {
               --drunkSeconds;
               staggerCycles = 0;
               AcceptInput();
               ReleaseLoop( ego);
               PlayerControl();
               Reset( programControl);
               currentStatus = NORMAL;
               Reset( handsOff);
               Print( 42);
               }
          }

     --jokeSeconds;
     if (jokeSeconds == 7)
          {
          SetLoop( aBore, FACING_RIGHT);
          StartCycling( aBore);         [    He's starting a new joke
          }

     if (jokeSeconds == 1)
          {
          if (typing)
               {
               jokeSeconds = 4;
               }
          else
               {
               Random( 20, 45, jokeSeconds); [    seconds before he starts again
               StopCycling( aBore);          [    He's starting a new joke

               if ((!heardJoke1 ||
                    !heardJoke2 ||
                    !heardJoke3 ||
                    !heardJoke4 ||
                    !heardJoke5 ||
                    !heardJoke6 ||
                    !heardJoke7 ||
                    !heardJoke8 ||
                    !heardJoke9))
                    {
                    :pickAJoke;
                    Random( 11, 19, joke);   [    Pick a punch line.
                    work = joke;
                    work += 210;             [    Because flags are 221-229.
                    if (IssetV( work))       [    Be sure it's a new one.
                         {
                         goto pickAJoke;
                         }

                    SetV( work);
                    Print( 10);
                    PrintV( joke);
                    Print( 58);
                    }
               }
          }
     }


--boreTalkCycles;
if (boreTalkCycles == 1)
     {
     Random( 23, 45, boreTalkCycles);
     Toggle( boreCycling);
     if (boreCycling)
          {
          StartCycling( aBore);
          }
     else
          {
          StopCycling( aBore);
          }
     }


if (scriptDone)
     {
     Reset( scriptDone);
     ++script;

     if (script == 1)
          {
          bartenderTimer = 0;
          StartUpdate( aBartender);
          MoveObj( aBartender, 106, 102, 1, scriptDone);
          }

     if (script == 2)
          {
          SetLoop( aBartender, FACING_FRONT);
          StopUpdate( aBartender);
          ForceUpdate( aBartender);
          scriptTimer = 4;
          }

     if (script == 3)
          {
          StartUpdate( aBartender);
          MoveObj( aBartender, 90, 102, 1, scriptDone);
          }

     if (script == 4)
          {
          SetLoop( aBartender, FACING_FRONT);
          StopUpdate( aBartender);
          ForceUpdate( aBartender);
          scriptTimer = 3;
          }

     if (script == 5)
          {
          Print( 24);
          if (!dollars > 2)
               {
               Print( 26);
               Print( 27);

               script = 6;
               }
          else
               {
               StartUpdate( aBartender);
               MoveObj( aBartender, 119, 99, 1, scriptDone);

               Print( 25);
               dollars -= 3;
               if (orderedAWhiskey)
                    {
                    Reset( orderedAWhiskey);
                    if (Has( iWhiskey))
                         {
                         Set( tookADrink);
                         Print( 35);
                         }
                    else
                         {
                         if (!boughtWhiskey)
                              {
                              Set( boughtWhiskey);
                              currentScore += 1;
                              }
                         Get( iWhiskey);
                         Print( 38);
                         }
                    }

               if (orderedABeer)
                    {
                    Reset( orderedABeer);
                    Set( tookADrink);
                    Print( 28);
                    }
               
               if (orderedAWine)
                    {
                    Reset( orderedAWine);
                    Set( tookADrink);
                    Print( 29);
                    Print( 30);
                    }
               }
          }

     if (script == 6)
          {
          script = 0;
          SetLoop( aBartender, FACING_BACK);
          StopUpdate( aBartender);
          ForceUpdate( aBartender);

          Reset( bartenderWandering);
          bartenderTimer = 5;
          }
     }



--legCycles;
if (legCycles == 1)
     {
     Random( 10, 22, legCycles);
     Toggle( legCycling);
     if (legCycling)
          {
          StartCycling( aGirl);
          }
     else
          {
          StopCycling( aGirl);
          }
     }

if (doorScriptDone)
     {
     Reset( doorScriptDone);
     ++doorScript;

     if (doorScript == 1)
          {
          Draw( aPeepHole);
          EndOfLoop( aPeepHole, doorScriptDone);
          }

     if (doorScript == 2)
          {
          StopUpdate( aPeepHole);
          doorTimer = 3;
          }

     if (doorScript == WAITING_FOR_PASSWORD)
          {
          Print( 7);
          doorTimer = 12;
          }

     if (doorScript == 4)
          {
          Print( 8);
          StartUpdate( aPeepHole);
          BeginningOfLoop( aPeepHole, doorScriptDone);
          }

     if (doorScript == 5)
          {
          Erase( aPeepHole);
          StartMotion( ego);
          Reset( programControl);
          doorScript = 0;
          doorTimer = 0;
          }

     if (doorScript == 101)             [    He knew the password.
          {
          Print( 9);
          StopMotion( ego);
          Set( programControl);
          StartUpdate( aPeepHole);
          BeginningOfLoop( aPeepHole, doorScriptDone);
          }

     if (doorScript == 102)
          {
          Erase( aPeepHole);
          StartUpdate( aDoor);
          EndOfLoop( aDoor, doorScriptDone);
          }

     if (doorScript == 103)
          {
          newRoom = rmBackroom;
          }
     }


if (musicDone)
     {
     Reset( musicDone);
     SetCel( aJukeBox, 1);
     StopUpdate( aJukeBox);
     ForceUpdate( aJukeBox);
     }

if (startJukeBox)
     {
     Reset( startJukeBox);
     StartUpdate( aJukeBox);
     Sound( mTitle, musicDone);

     if (!soundOn)
          {
          Reset( musicDone);
          Random( 8, 12, jukeBoxTimer);
          StartUpdate( aJukeBox);
          }
     }




[    Scott Murphy's drinking problem

if (tookADrink)
     {
     Reset( tookADrink);
     ShakeScreen( 1);
     if (!drunkSeconds)
          {
          drunkSeconds = 5;        [    increases geometricly with each drink.
          staggerCycles = 10;
          Print( 31);
          }
     else
          {
          Print( 32);
          if (drunkSeconds < 120)
               {
               drunkSeconds += drunkSeconds;
               }
          }
     }

if (currentStatus == DRUNK)
     {
     if (egoDir != EGO_STOPPED)
          {
          --staggerCycles;
          if (staggerCycles == 1)
               {
               Toggle( staggering);
               if (!staggering)
                    {
                    Reset( programControl);
                    ReleaseLoop( ego);
                    staggerCycles = 7;
                    }
               else
                    {
                    Set( programControl);
                    FixLoop(ego);
                    :loop1
                    Random( 1, 8, work);
                    if (work == egoDir)
                         {
                         goto loop1;
                         }
                    egoDir = work;
                    staggerCycles = 5;
                    }
               }
          }
     }


[*****
:exit                                   [    test for leaving the room
[*****

if (edgeEgoHit == TOP)             {newRoom = rmHallway;}
if (edgeEgoHit == BOTTOM)          {newRoom = rmOutsideBar;}

RM15.MSG
Code: [Select]
[messages for room 15 -- rmInsideBar
[    "Leisure Suit Larry in the Land of the Lounge Lizards"
[    by Al Lowe



%message  1
"This is the sleaziest bar you've ever been in.
 And you've been in quite a few."

%message  2
"You are standing."

%message  3
"You are sitting."

%message  4
"You insert a dollar into the juke box, and select a suitably sleazy song."

%message  5
"You rap loudly on the naugahyde door.
 You wonder how many naugas had to give their
 all just to decorate this sleazehole."

%message  6
"So what?"

%message  7
"\"Yeah. Whatsda passwoid?\""

%message  8
"\"Scram, dog breath!\""

%message  9
"\"Come on in!\""

%message  10
"\"...blah, blah, blah, blah, blah...\""

%message  11
"\"...a lotta guys just leave her hanging in a tree somewhere!\""

%message  12
"\"...'cause Thursday's your night in the barrel!\""

%message  13
"\"...just think of the money he saved!\""

%message  14
"\"...and there stood the pig and the cow!\""

%message  15
"\"...dammit Liza, doncha know ya own reflection?\""

%message  16
"\"...we are coming back this way, aren't we?\""

%message  17
"\"...You idiot! I said POSSE!!\""

%message  18
"\"...nobody can eat THAT much ice cream!\""

%message  19
"\"...25 bucks, same as in town!\""

%message  20
"You'd better sit down first."

%message  21
"You greet the bartender.\n\n
\"What'll it be,\" Lefty responds, \"whiskey, wine or beer?\""

%message  22
"\"I'll have a glass of your fine, well whiskey!\" you tell Lefty."

%message  23
"\"Gimme a mug o' beer!\" you order Lefty."

%message  24
"\"That'll be $3.00, please.\""

%message  25
"You flip three bucks onto the counter."

%message  26
"\"I'm presently a little short,\" you stammer."

%message  27
"\"Yeah, and not just in the financial department, I bet!\" he replies,
 grabbing back your order."

%message  28
"You down the beer in your pseudo-macho style,
 and slam the mug back on the bar."

%message  29
"You delicately sip the wine until it's all gone.\n\n
You tell Lefty,
 \"I find this impudent and sassy, with the slightest hint of impertinence.\""

%message  30
"He gazes at you longingly and moistens his lips!"

%message  31
"Suddenly you feel a little woozy."

%message  32
"This one tastes even better than the last.
 One more sounds like a good idea."

%message  33
"Try sitting at the bar; that usually gets Lefty's attention."

%message  34
"It's not good etiquette to drink standing up."

%message  35
"Since you can only balance one open glass of whiskey at a time,
 you toss this one down immediately."

%message  36
"\"May I please have a glass of your delicate white zinfandel, sir?\"
 you ask Lefty."

%message  37
"Hey, was that your voice?"

%message  38
"You don't drink the whiskey, but instead,
 decide to carry it with you wherever you go,
 precariously balanced in an open shot glass."

%message  39
"The whiskey burns its way down your throat.
 You vow to never again buy a \"well\" brand."

%message  40
"Hold on; you haven't got your last order yet!"

%message  41
"You feel a little light-headed."

%message  42
"Shaking your head, you clear away the cobwebs and are able to once again
 walk in your standard, studly style."

%message  43
"\"Cram it, clown!\" you tell the bore on the stool next to you!"

%message  44
"\"Same to ya!\" shouts Lefty."

%message  45
"It's an antique, left over from \"King's Quest III.\""

%message  46
"Patience, Larry; patience!"

%message  47
"The door is locked. And, there is no key."

%message  48
"She may not be a great looker, but think of the muscles in that leg."

%message  49
"It's just going around in circles..."

%message  50
"...like your life."

%message  51
"You don't know much about art, but you do know what you like!"

%message  52
"You mean to say you're playing a 3-D adventure game,
 and all you want is LIGHT beer??"

%message  53
"They're just sitting at the bar, drinking their livers into oblivion."

%message  54
"\"Sorry, we don't sell them sissy drinks here,\" says Lefty.
 \"We got whiskey, wine and beer. What do you want?\""

%message  55
"My, aren't we the little savage!
 Didn't your mother teach you anything?"

%message  56
"\"Who cares,\" she replies sarcastically.
 \"Stop bugging me, or I'll have my boy friend
 take care of you when he gets back from the rest room!\""

%message  57
"Looks like you're operating at your standard level of charm, Larry."

%message  58
"\"Har, har!!\""

%message  59
"He has nothing to say, but says it continuously."

%message  60
"\"Hi there, lovely legs!\" you say sweetly.
 \"My name's Larry; Larry Laffer.\""

%message  61
"They have no comment."

%message  62
"He's not bothering you now; leave him alone, you big bully!"

%message  63
"You can't. There's no key in this game!"

%message  64
"Gee, Dad. It's a Wurlitzer!"

%message  65
"The peephole is locked from the inside."

%message  66
"Boy, are you drunk!"

%message  67
"SLAP!"

%message  68
"\"Ya got me!\""

%message  69
"\"No, thanks,\" Lefty replies. \"I don't drink.\""

%message  70
"\"Ok,\" says Lefty, \"but that'll cost ya $%v90.00!\""

%message  71
"The last of the big time spenders,
 you go down in a blaze of glory, ordering drinks for everybody in the place."

%message  72
"\"I'll not help you,\" says Lefty, \"no matter how much you offer me!\""

%message  73
"The naugahyde bounces the hammer back, grazing your scalp but slightly."

%message  74
"You flip a fiver out on the bar.
 Lefty grabs it, smiles, and says, \"Hey, thanks buddy! "

%message  75
"%m74"

%message  76
"You don't have enough money!"

%message  77
"\"Double down on eleven.\""

%message  78
"\"If you're short of money, you could always try gambling at the casino.\""

%message  79
"\"If you're bored hanging around my place, try hailing a cab outside.\""

%message  80
"\"Have you talked to Sierra On-Line lately?\""

%message  81
"\"Guys tell me I need to clean my rest room walls.\""

%message  82
"He appears to be perverted, twisted and sick!"

%message  83
"You instantly take a liking to him."


70
SCI Development Tools / Re: SCI01 Template Game
« on: December 18, 2018, 09:46:27 AM »
Here's the actual EgoDead procedure from QfG2:
Code: [Select]
;*****************************************************
;
; EGODEAD PROCEDURE -- to kill ego off
;
(procedure (EgoDead useRandomIcon  &tmp printRet)
   (HandsOff)
   (Wait 100)
   (= normalCursor ARROW_CURSOR)
   (theGame setCursor: normalCursor TRUE)

   (sounds  eachElementDo: #stop:)     ; Stop any other music
   (if deathMusic
      (miscSound
         number: deathMusic,
         priority: 15,
         loop: 1,
         play:
      )
   )

   (repeat
      (cond
         ((not useRandomIcon)    ; Specfic icon being used
            (= printRet
               (Print
                  &rest
                  #width:  250
                  #button: {Restore}   1
                  #button: {_Restart_} 2
                  #button: {_Quit_}    3
               )
            )
         )
         ((or (== sillyClowns clownsOff)
               (and (== sillyClowns clownsOtto) (not (Random 0 1)))
            )
            ; Give a serious death icon
            (= printRet
               (Print
                  &rest
                  #width:  250
                  #button: {Restore}   1
                  #button: {_Restart_} 2
                  #button: {_Quit_}    3
                  #icon:   vStaticIcons 2 0
               )
            )
         )
         (else
            (cIcon
               loop: (Random 0 1),
               cel: 0,
               cycleSpeed: (if (== loop 1) 20 else 10)
            )

            (= printRet
               (Print
                  &rest
                  #width:  250
                  #button: {Restore}   1
                  #button: {_Restart_} 2
                  #button: {_Quit_}    3
                  #icon:   cIcon
               )
            )
         )
      )

      (switch printRet
         (1
            (theGame restore:)
         )
         (2
            (theGame restart:)
         )
         (3
            (= quit TRUE)
            (break)
         )
      )
   )
)

71
The Games and other Sierra Adventure stuff / Re: Christmas Card again
« on: December 17, 2018, 02:37:52 PM »
Thanks Kawa!   :D
I missed it last time too - and I was in the greetz there  :-[

All I can say in my defense is that we celebrate Hanukkah over here and not Christmas ;D

Happy Festivus!



72
SCI Development Tools / Re: QFG1 VGA
« on: December 14, 2018, 11:39:52 AM »
I already laid down the foundation in the QFG1VGA decompile by fixing some of the old script bugs (some relating to wrong message tuples or death icons).

Did you document your work by any chance?
Some ScummVm folks regularly fix script bugs (at a very rapid pace lately), and such a list could help them out.

73
SCI Development Tools / Re: QFG1 VGA
« on: December 13, 2018, 01:10:12 PM »
Very nice!
Can you share your patch?
Maybe you can send scummvm a pull request for adding that through scummvm as well?

Next you might want to add the missing ending flying carpet scene...

74
SCI Syntax Help / Re: Importing a Character (a la Quest for Glory)
« on: December 11, 2018, 03:59:31 PM »
I attached the original save and import scripts I could find.

75
SCI Development Tools / Re: SCI01 Template Game
« on: December 04, 2018, 04:30:02 PM »
The other option depends on the availability of SCI01 source code.

Unfortunately I have not managed to get SCI interpreter source earlier than SCI16.

Pages: 1 ... 3 4 [5] 6 7 ... 28

SMF 2.0.14 | SMF © 2017, Simple Machines
Simple Audio Video Embedder

Page created in 0.166 seconds with 21 queries.