home *** CD-ROM | disk | FTP | other *** search
/ The Best of Select: Games 3 / cd.iso / games / dcg303xa / jimmy.scr < prev    next >
Text File  |  1993-06-27  |  7KB  |  189 lines

  1. !
  2. ! Jimmy's Script.  Derived from the adventurer script, but modified to
  3. ! to handle the one character.
  4. !
  5. ! DESCRIPTION:  Jimmy is a young Dwarf.  He lives near a small town 
  6. ! and works at Joe's pub.  He is the player's friend and want's to
  7. ! go have some fun.  His TEXT block shows the following keywords:
  8. !
  9. !  0 : Hello   Hi! What are you up to? Going on a trip?                
  10. !  1 : Default Have I shown you my weapons?  I'm dying to use them!    
  11. !  2 : Weapons In the chest over there.. Let's go do something..       
  12. !  3 : Join    What are we waiting for.. Let's get the weapons..       
  13. !  4 : Chest   I keep the weapons in the chest.  We could get them!    
  14. !  5 : Get     If we go on a quest, we should get them.                
  15. !  6 : Quest   You know.. Go kill some monsters or something..         
  16. !  7 : King    I heard he was missing!  That might be a worthy quest!  
  17. !  8 : Queen   We could go talk to her in the Castle!                  
  18. !  9 : Castle  Where the King and the Queen live!                      
  19. ! 10 : Trip    You're not thinking of leaving without me, are you?     
  20. ! 11 : AdventurIt's a good time of the year to go look for adventure!  
  21. ! 12 : Job     Joe can find another bus boy.  Let's go questing!       
  22. ! 13 : Joe     You know I work at Joe's Pub during the summer!         
  23. ! 14 : Pub     Yes!                                                    
  24. ! 15 : Ship    I don't have one, but the Queen might lend us one!      
  25. !
  26. ! - V0 is TRUE when we've talked before.
  27. ! - V1 is TRUE if we've JOINED the group
  28. !
  29. ! (c) DC Software, 1992
  30. !
  31.  
  32. !------------------------------------------------------------------------!
  33. :@TALK ! START HERE WHEN YOU 'TALK' TO THIS CHARACTER !
  34. !------------------------------------------------------------------------!
  35.  
  36. ! First, say hello.. !
  37.  
  38.   if npc.picture >= 0 then
  39.     viewpcx(npc);
  40.   endif;
  41.  
  42.   if NPC.V0 > 0 then
  43.     ! We've spoken before, so don't give the standard greeting..
  44.     writeln( "Hello again!  I thought you were gone.." );
  45.   else
  46.     ! First time we talk, so give the standard greeting..
  47.     if not dotext( "Hello" ) then
  48.       ! If the text block didn't have one, the following would be used..
  49.       writeln( "Hello ", player.name, ". What are you up to?" );
  50.     endif;
  51.   endif;
  52.   NPC.V0 = 1; ! This variable indicates we've talked before (see above)
  53.  
  54. :CHAT
  55.   L3 = getstr("Name","Job","Join","Bye");
  56.   if L3 = -1 goto CSTOP; 
  57.  
  58. ! Handle JOIN differently..
  59.   if L3 = 2 then 
  60.     if group.size = 6 then
  61.       writeln( "Hey! Your party is full! There's no place for me!" );
  62.       goto CHAT;
  63.     endif;
  64.     if npc.level > player.level + 4 then
  65.       ! Normal behaviour would be to decline until adventurer has more
  66.       ! experience, but Jimmy is a friend, so it doesn't apply
  67.       writeln( "Ok.  But you are inexperienced, so let me handle the tough" );
  68.       writeln( "problems.  You'd better take the better armor too.." );
  69.     endif;
  70.     if npc.level < player.level - 6 then
  71.       ! Normal behaviour would be to decline because the adventurer
  72.       ! has too much experience.  Encounters tend to be more serious
  73.       ! and inexperienced members get killed easily.  Again, since
  74.       ! Jimmy is a friend, we wave the restriction..
  75.       writeln( "You mean it?!  I don't have a lot of experience, but I learn" );
  76.       writeln( "very fast..  Thanks!" );
  77.     endif;
  78.     if NOT dotext( "join" ) then
  79.       writeln( "What are we waiting for.. Let's get the weapons!" );
  80.     endif;
  81.     ! Now we might do some animation, so we restore the graphics !
  82.     ! to allow the player to see it !
  83.     if npc.picture >= 0 then
  84.       paint(window); ! Assumes the picture fits in the window !
  85.     endif;
  86.  
  87.     ! If were at the original location, and haven't joined yet.. !
  88.     if npc.v1 = FALSE and npc.x = 3 and npc.y = 7 then
  89.       L1 = 1; ! walk to the right.. !
  90.       for L0 = 1 to 4 do
  91.         gosub MOVEJIMMY;
  92.       endfor;
  93.       L2 = 0;
  94.       L1 = find( object, "Jimmy's Chest", CHEST );
  95.       if success then
  96.         object.index = L1;
  97.         writeln( "I have ", $object.value, " saved from my summer job.." );
  98.         inc( group.gold, object.value );
  99.         vanish(object);
  100.         pause(1); ! Use PAUSE instead of WAIT !
  101.       else
  102.         writeln( "I could have sworn I had some money in here.." );
  103.         inc(L2);
  104.       endif;
  105.       L1 = find( object, "Chain Mail", armor );
  106.       if success then
  107.         object.index = L1;
  108.         writeln( "This Chain Mail is worn, but functional!" );
  109.         move( object, npc ); pause(1); ! Use PAUSE instead of WAIT !
  110.       else
  111.         writeln( "My chain mail is missing..  Hmm.." );
  112.         inc(L2);
  113.       endif;
  114.       L1 = find( object, "Dwarf's Axe", weapon );
  115.       if success then
  116.         object.index = L1;
  117.         writeln( "This Axe belonged to my brother..  It's heavy!" );
  118.         move( object, npc ); pause(1); ! Use PAUSE instead of WAIT !
  119.       else
  120.         writeln( "Where did I put that Axe?" );
  121.         inc(L2);
  122.       endif;
  123.       if L2 > 0 then
  124.         if L2 = 3 then
  125.           writeln( "I assume you already got my stuff" );
  126.         else
  127.           writeln( "Some of my stuff is missing, I assume you got it?" );
  128.         endif;
  129.         pause(1); ! Use PAUSE instead of WAIT !
  130.       endif;
  131.       L1 = -1; ! Walk to the left.. !
  132.       for L0 = 1 to 4 do
  133.         gosub MOVEJIMMY;
  134.       endfor;
  135.       npc.v1 = TRUE;
  136.     endif;
  137.     JOIN; 
  138.     STOP; ! We are done.. !
  139.  
  140. :MOVEJIMMY ! Subroutine to move jimmy left or right..
  141.     if group.y = npc.y and group.x = npc.x + L1 then
  142.       group.x = npc.x; ! Trade places with the group !
  143.     endif;
  144.     inc( npc.x, L1 );
  145.     pause(1); ! Use PAUSE instead of WAIT !
  146.     return;
  147.  
  148.   endif; ! End of JOIN !
  149.  
  150. ! First, see if the keyword typed is in the character's text block !
  151.   if dotext( S0 ) then
  152.     if L3 = 3 goto XSTOP;
  153.     goto CHAT;
  154.   endif;
  155.  
  156. ! It didn't, so try the predefined ones..
  157.   on L3 goto CNAME, CJOB, CHAT, CSTOP;
  158.  
  159. ! Nope, try a 'DEFAULT' line
  160.   if not dotext( "DEFAULT" ) then
  161.     writeln( "I don't know anything about that!" );
  162.   endif;
  163.   goto CHAT;
  164.  
  165. :CNAME
  166.   writeln( "My name is ", NPC.name, "." );
  167.   GOTO CHAT;
  168.  
  169. :CJOB
  170.   writeln( "I am a ", npc.type );
  171.   GOTO CHAT;
  172.  
  173. :CSTOP
  174.   writeln( "Nice talking to you.." );
  175.   goto XSTOP;
  176.  
  177. ! Feel free to expand on this list.. !
  178.  
  179. !-----------------------------------------------------------------!
  180. ! All STOPs now lead here so the screen can be restored if needed !
  181. !-----------------------------------------------------------------!
  182. :XSTOP
  183.   if npc.picture >= 0 then
  184.     paint(window); ! Assumes the picture fits in the window !
  185.   endif;
  186.   STOP;
  187.  
  188.  
  189.