Author Topic: Semi-complete game: werewolf (mafia) for solo play  (Read 3146 times)

0 Members and 1 Guest are viewing this topic.

Offline frobozz

  • Newbie
  • Posts: 2
    • View Profile
Semi-complete game: werewolf (mafia) for solo play
« on: August 14, 2020, 07:57:37 pm »
Oddly enough, this thing doesn't compile anymore.  Strange. edit:  ah, for some reason you can't put arrays in user-defined types in QB64.  I used to be able to do it with the old compiler.

I wrote this thing in QBasic like 15 years ago.  If you ever played mafia or werewolf on internet forums, then this is a solo version of that game written in QBasic.  Type HELP to get instructions.  You can walk around rooms, pick up items, find secrets, etc.  The game is kinda infinitely expandable, as you can add rooms or add items in the DATA segments.  The format for rooms is 1.  the room number 2. the room name 3. the room description 4. four numbers that represent the room exits in a north, south, east, west format 5. room exits that are locked or unlocked (-1 means open, or a number designates the item required to unlock that direction.  There is commented out stuff about star wars that aren't in the actual game anymore.

I kinda considered it an unfinished game as the game loop I crafted is a resource hog and heats up the CPU.  I think I need some sort of time delay to cool down the CPU but never figured that out.

Code: QB64: [Select]
  1.  option escape                              ' allows use of escape chars
  2.  
  3.  DIM cmmd AS STRING
  4.  DIM cmmdbuild AS STRING
  5.  DIM kbhit AS STRING
  6.  
  7. type ttt
  8.           room as integer
  9.           title as string
  10.           descrip as string * 500
  11.           exits(4) as integer
  12.           lock(4) as integer                ' -1 = no lock, 0 = unlocked, 1 = locked, 2 = hidden
  13.           mobs as integer
  14.           items(10) as integer
  15.  
  16. type mmm
  17.           room as integer
  18.           title as string
  19.           descrip as string * 500
  20.           role as string * 20
  21.           vote as string
  22.           state as integer  ' 0 = alive, -1 = dead
  23.           viewed as integer
  24.  
  25.  
  26. type iii
  27.  
  28.           id as integer
  29.           type as string
  30.           name as string
  31.           keyword as string
  32.           descrip as string * 500
  33.           start as integer                   ' -1 = not in game, 0 = carried by user, anything else a room number
  34. MAXMOBS = 20
  35. PLAYERBASE = 41
  36. WORLDSIZE = 133
  37. ITEMBASE = 4
  38. seerexists = 1
  39. day = 1 'day advances when wolves kill
  40.  
  41. dim zone(100000) as ttt
  42. dim mobs(MAXMOBS) as mmm
  43. dim item(ITEMBASE) as iii
  44. dim inv(50) as integer
  45. dim titles(MAXMOBS) as string
  46. dim descrips(MAXMOBS) as string
  47. dim seerlist(MAXMOBS) as integer
  48.  
  49. declare sub initzone( array() as ttt )
  50. declare sub initmobs( array() as mmm, array2() as ttt, MAXMOBS as integer, PLAYERBASE as integer, titles() as string, descrips() as string)
  51.  
  52.  CLS
  53.  startup = 1
  54.  readonce = -1
  55.  
  56.  DIM titles(PLAYERBASE) AS STRING
  57.  DIM descrips(PLAYERBASE) AS STRING
  58.  
  59.  IF readonce = -1 THEN
  60.  
  61.  
  62.  FOR i = 1 to PLAYERBASE
  63.     READ i$
  64.     titles(i-1) = i$
  65.  NEXT i
  66.  
  67.  FOR i = 1 to PLAYERBASE
  68.     READ i$
  69.     descrips(i-1) = i$
  70.  NEXT i
  71.  
  72.  
  73.  for i = 0 to WORLDSIZE-1
  74.     READ j%
  75.     zone(j%).room = j
  76.     READ zone(j%).title
  77.     READ zone(j%).descrip
  78.     READ zone(j%).exits(0)
  79.     READ zone(j%).exits(1)
  80.     READ zone(j%).exits(2)
  81.     READ zone(j%).exits(3)
  82.     READ zone(j%).lock(0)
  83.     READ zone(j%).lock(1)
  84.     READ zone(j%).lock(2)
  85.     READ zone(j%).lock(3)
  86.     zone(j%).mobs = 0
  87.     FOR k = 0 to 9
  88.         zone(j%).items(k) = -1
  89.     NEXT k
  90.  NEXT i
  91.  
  92.  
  93.  FOR i = 0 to ITEMBASE - 1
  94.     READ item(i).id
  95.     READ item(i).type
  96.     READ item(i).name
  97.     READ item(i).keyword
  98.     READ item(i).descrip
  99.     READ item(i).start
  100.     IF item(i).start <> -1 THEN                       ' if the item is NOT out of the game at game start
  101.       j = -1
  102.       DO
  103.         j = j + 1
  104.       LOOP UNTIL zone(item(i).start).items(j) = -1
  105.       zone(item(i).start).items(j) = item(i).id
  106.     END IF
  107.     'PRINT "room #";
  108.     'PRINT zone(item(i).start).room;
  109.     'PRINT " (";
  110.     'PRINT zone(item(i).start).title;
  111.     'PRINT ") has item #";
  112.     'PRINT zone(item(i).start).items(j);
  113.     'PRINT " (";
  114.     'PRINT item(i).name;
  115.     'PRINT ")"
  116.  NEXT i
  117.  
  118.  
  119.  readonce = 0
  120.  autoupdate = 1
  121.  wizrooms = 0                  ' toggle to see room numbers in game
  122.  
  123. start:
  124.  
  125.  ' initialize world
  126.  ' remove items that are lying on the ground
  127.  FOR i = 0 to ITEMBASE - 1
  128.     IF item(i).start > -1 THEN                      ' if the item is lying on the ground or in inv at reset time
  129.     IF item(i).start > 0 THEN                        ' if the item is lying on the ground at reset time
  130.       j = -1
  131.       DO
  132.         j = j + 1
  133.       LOOP UNTIL zone(item(i).start).items(j) = item(i).id
  134.       zone(item(i).start).items(j) = -1
  135.     END IF
  136.       ' put items back in starting state
  137.       IF item(i).id = 10001 THEN
  138.         item(i).start = 1018
  139.       END IF
  140.       IF item(i).id = 10002 THEN
  141.         item(i).start = -1
  142.       END IF
  143.       IF item(i).id = 10003 THEN
  144.         item(i).start = 2021
  145.       END IF
  146.       IF item(i).id = 10004 THEN
  147.         RANDOMIZE TIMER
  148.         x% = INT(RND * 29) + 6001
  149.         item(i).start = x%                              ' random location start
  150.       END IF
  151.       IF item(i).start <> -1 THEN                       ' if the item is NOT out of the game at this point
  152.         j = -1
  153.         DO
  154.           j = j + 1
  155.         LOOP UNTIL zone(item(i).start).items(j) = -1
  156.         zone(item(i).start).items(j) = item(i).id       ' put item back in starting room
  157.       END IF
  158.     END IF
  159.   NEXT i
  160.  
  161.  ' clean out inventory
  162.  
  163.   FOR i = 0 to 50
  164.      inv(i) = -1
  165.   NEXT i
  166.  
  167.  ' lock gates
  168.   zone(1019).lock(2) = 1
  169.   zone(2001).lock(3) = 1
  170.  
  171.  
  172.  cmmd$ = ""
  173.  cmmdbuild$ = ""
  174.  lastcmmd$ = ""
  175.  kenobi = 0
  176.  jinn = 0
  177.  anakin = 0
  178.  doprompt = 1
  179.  room = 1000
  180.  turn = 1
  181.  wolfkill = 0
  182.  vigkill = 0
  183.  
  184.  assignroles = 1
  185.  assignvotes = 1
  186.  wolfchangevote = 0
  187.  gameupdate = 0
  188.  gameover = 0
  189.  Starttime = TIMER
  190.  seerexists = 1
  191.  vigilanteexists = 0
  192.  DAY = 1
  193.  wolvesalive = 4
  194.  villagersalive = 17
  195.  tagged = -1                         'used to track wolf that is tagged by meat
  196.  meat = -1                           'used to track meat
  197.  meatproc = 1                        'meat proc only goes off once
  198.  seerer = 2                          'robes of the seerer proc:  2 = not picked up, 1 = picked up, 0 = used
  199.  
  200.  
  201.  
  202.  'FOR i = 0 to MAXMOBS
  203.  '   seerlist(i) = -1
  204.  'NEXT i
  205.  
  206.  
  207.  initmobs mobs(), zone(), MAXMOBS, PLAYERBASE, titles(), descrips()
  208.  
  209.  
  210.  color 12
  211.  PRINT "WereWolf v2.5"
  212.  color 7
  213.  PRINT "Written by BGP
  214. PRINT "October 14th, 2005"
  215. PRINT
  216. PRINT "Type help at any time for assistance"
  217. ' TIMER ON
  218.  
  219.  
  220. DO
  221.  
  222. cmmd$ = ""
  223.  
  224.  
  225. IF startup = 1 THEN
  226. ' show room once at game start
  227. cmmd$ = "l"
  228. startup = 0
  229. END IF
  230.  
  231. kbhit$ = INKEY$
  232.  
  233. IF kbhit$ <> "" AND kbhit$ <> CHR$(13) THEN
  234.  '  doprompt = 1
  235.  IF kbhit$ = CHR$(8) THEN
  236.     ' backspace key was pressed - delete last letter
  237.     cmmdbuild$ = LEFT$(cmmdbuild$, LEN(cmmdbuild$)-1)
  238.  ELSE
  239.     ' add last letter
  240.     cmmdbuild$ = cmmdbuild$ + kbhit$
  241.  END IF
  242.  '  PRINT "cmmdbuild$ = " + cmmdbuild$
  243.  PRINT kbhit$;
  244. END IF
  245.  
  246. IF kbhit$ = CHR$(13) THEN
  247.    doprompt = 1
  248.    cmmd$ = cmmdbuild$
  249.    PRINT
  250.   ' PRINT "return key pressed!"
  251.   ' PRINT "cmmd$ = " + cmmd$
  252.    cmmdbuild$ = ""
  253.   IF cmmd$ = "!" THEN
  254.     cmmd$ = lastcmmd$
  255.   END IF
  256.   IF cmmd$ <> "!" THEN
  257.     lastcmmd$ = cmmd$
  258.   END IF
  259. END IF
  260.  
  261. IF TIMER > Starttime + 1 THEN
  262.   IF assignroles = 1 THEN     'assign roles only once
  263.     RANDOMIZE TIMER  
  264.     mobcount = 0
  265.     x% = INT(RND * MAXMOBS)   ' pick the wolves
  266.     DO
  267.       y% = INT(RND * MAXMOBS)
  268.     LOOP UNTIL x% <> y%
  269.     DO
  270.       z% = INT(RND * MAXMOBS)
  271.     LOOP UNTIL z% <> x% AND z% <> y%
  272.     DO
  273.       a% = INT(RND * MAXMOBS)
  274.     LOOP UNTIL a% <> z% AND a% <> y% AND z% <> x%
  275.     DO
  276.       b% = INT(RND * MAXMOBS)
  277.     LOOP UNTIL b% <> a% AND b% <> z% AND b% <> y% AND b% <> x%
  278.     c% = INT(RND * 2)
  279.     IF c% = 1 THEN  'make a vig
  280.       DO
  281.         d% = INT(RND * MAXMOBS)
  282.       LOOP UNTIL d% <> b% AND d% <> a% AND d% <> z% AND d% <> y% AND d% <> x%
  283.     ELSE
  284.       d% = -1
  285.     END IF
  286.     DO
  287.       IF mobcount = a% OR mobcount = z% OR mobcount = x% OR mobcount = y% THEN
  288.         mobs(mobcount).role = "wolf"
  289.       ELSE
  290.         IF mobcount = b% THEN
  291.           mobs(mobcount).role = "seer"
  292.         ELSE
  293.         IF d% <> -1 AND mobcount = d% THEN 'make vig
  294.           mobs(mobcount).role = "vigilante"
  295.           vigilanteexists = 1
  296.         ELSE  
  297.           mobs(mobcount).role = "villager"  
  298.         END IF
  299.         END IF
  300.       END IF
  301.       mobs(mobcount).viewed = 0
  302.       seerlist(mobcount) = -1
  303.       mobcount = mobcount + 1
  304.     LOOP UNTIL mobcount = MAXMOBS
  305.     assignroles = 0
  306.   END IF
  307. END IF
  308.  
  309. IF cmmd$ = "update" OR (gameupdate = 1 AND TIMER > Starttime + 1) THEN
  310.   doprompt = 1
  311.   color 12
  312.   PRINT "Werewolf Game Update:"
  313.   color 7
  314.   PRINT
  315.   PRINT "Players remaining: ";
  316.   playersleft = 1     'start by counting the user
  317.   wolvesleft = 0
  318.   mobcount = 0
  319.   DO
  320.     IF mobs(mobcount).state = 0 THEN
  321.       playersleft = playersleft + 1
  322.     END IF
  323.     IF mobs(mobcount).state = 0 AND mobs(mobcount).role = "wolf" THEN
  324.        wolvesleft = wolvesleft + 1
  325.     END IF
  326.   mobcount = mobcount + 1
  327.   LOOP UNTIL mobcount = MAXMOBS
  328.   PRINT playersleft
  329.   PRINT "Wolves remaining: ";
  330.   PRINT wolvesleft
  331.   gameupdate = 0
  332.   IF wolvesleft > (playersleft / 2) OR wolvesleft = (playersleft / 2) OR wolvesleft = 0 THEN
  333.     gameover = 1
  334.     GOTO endgame
  335.   END IF
  336. END IF
  337.  
  338. IF TIMER > Starttime + 1 THEN
  339.   IF assignvotes = 1 THEN
  340.     assignvotes = 0
  341.     RANDOMIZE TIMER
  342.     mobcount = 0
  343.     DO
  344.       IF mobs(mobcount).state = 0 THEN           ' only the living can cast votes
  345.         DO
  346.           x% = INT(RND * MAXMOBS)
  347.         LOOP UNTIL mobs(x%).state = 0    ' must vote for living player
  348.         IF mobs(mobcount).role = "wolf" AND mobs(x%).role = "wolf" THEN   'if wolf votes for fellow wolf % chance he changes vote
  349.           y% = INT(RND * 3)
  350.           IF y% = 0 THEN  ' 33% chance wolf changes vote to a villager succeeds
  351.             wolfchangevote = 1
  352.             DO
  353.               x% = INT(RND * MAXMOBS)
  354.             LOOP UNTIL mobs(x%).role = "villager" AND mobs(x%).state = 0
  355.           END IF
  356.         END IF
  357.         IF mobcount = x% THEN   'if mob votes for himself, he is voting for YOU!
  358.           mobs(mobcount).vote = "you"
  359.         ELSE
  360.           mobs(mobcount).vote = mobs(x%).title
  361.         END IF
  362.         IF wolfchangevote = 1 THEN
  363.           wolfchangevote = 0
  364.           'mobs(mobcount).vote = mobs(mobcount).vote + "* (wolf changed this vote to villager)"
  365.         END IF
  366.       END IF
  367.       mobcount = mobcount + 1
  368.     LOOP UNTIL mobcount = MAXMOBS
  369.   END IF
  370. END IF
  371.  
  372.  
  373. IF TIMER > Starttime + 1 THEN
  374.   RANDOMIZE TIMER
  375.   mobmovespacing = 0
  376.   mobcount = 0
  377.   DO
  378.     IF mobs(mobcount).state = 0 THEN  'if not dead then see if mob moves
  379.        x% = INT(RND * 60) + 1 'throw to decide if mob moves
  380.        IF x% = 1 THEN  
  381.          ' this mob will try to move
  382.          y% = INT(RND * 4) 'throw to determine movement direction
  383.          IF zone(mobs(mobcount).room).exits(y%) <> -1 AND zone(mobs(mobcount).room).exits(y%) <> 2001 THEN
  384.            ' mob can move in that direction so he will
  385.            zone(mobs(mobcount).room).mobs = zone(mobs(mobcount).room).mobs - 1  'drop old room occupancy by one
  386.            IF mobs(mobcount).room = room THEN
  387.              'Player is in the room the mob is leaving - send exit message
  388.              'mobexit$ = mobs(mobcount).title + " (" + mobs(mobcount).role + ") leaves "
  389.              mobexit$ = mobs(mobcount).title + " leaves "
  390.              IF y% = 0 THEN
  391.              mobexit$ = mobexit$ + "north."
  392.              END IF
  393.              IF y% = 1 THEN
  394.              mobexit$ = mobexit$ + "south."
  395.              END IF
  396.              IF y% = 2 THEN
  397.              mobexit$ = mobexit$ + "east."
  398.              END IF
  399.              IF y% = 3 THEN
  400.              mobexit$ = mobexit$ + "west."
  401.              END IF
  402.              IF mobmovespacing = 0 THEN    'only want one space between room descrip and mob movements
  403.                mobmovespacing = 1
  404.                PRINT
  405.              END IF
  406.              PRINT mobexit$
  407.              doprompt = 1
  408.            END IF
  409.            mobs(mobcount).room = zone(mobs(mobcount).room).exits(y%) 'moves mob to new room
  410.            zone(mobs(mobcount).room).mobs = zone(mobs(mobcount).room).mobs + 1  'increase new room occupancy by one
  411.            IF mobs(mobcount).room = room THEN 'check to see if mob moved to the room the player is in
  412.              IF mobmovespacing = 0 THEN    'only want one space between room descrip and mob movements
  413.                mobmovespacing = 1
  414.                PRINT
  415.              END IF
  416.              PRINT mobs(mobcount).title + " has arrived."
  417.              doprompt = 1
  418.            END IF
  419.          END IF
  420.        END IF
  421.     END IF
  422.     mobcount = mobcount + 1
  423.   LOOP UNTIL mobcount = MAXMOBS
  424.   Starttime = TIMER
  425. END IF
  426.  
  427. IF turn = 1 THEN 'check to do a turn if one hasn't been done yet
  428.   roomcheck = 1000
  429.   DO
  430.     IF zone(roomcheck).mobs = 3 THEN
  431.       'see if conditions are met to turn, if so, then do one!
  432.       mobcount = 0
  433.       wolvesinroom = 0
  434.       DO
  435.         IF mobs(mobcount).room = roomcheck AND mobs(mobcount).role = "wolf" THEN
  436.           wolvesinroom = wolvesinroom + 1
  437.         END IF
  438.         mobcount = mobcount + 1
  439.       LOOP UNTIL mobcount = MAXMOBS
  440.       IF wolvesinroom = 2 THEN  'if 2 wolves in room with lone villager, turn that villager
  441.         mobcount = 0
  442.         DO
  443.           IF mobs(mobcount).room = roomcheck AND mobs(mobcount).role <> "wolf" AND mobs(mobcount).state = 0 AND turn = 1 THEN
  444.             color 4
  445.             PRINT "Someone was turned!"
  446.             color 7
  447.             resetviews = -1
  448.             DO                                                     'must reset viewed for seer to start over
  449.               resetviews = resetviews + 1
  450.               mobs(resetviews).viewed = 0
  451.             LOOP UNTIL resetviews = MAXMOBS
  452.             IF mobs(mobcount).role = "vigilante" THEN
  453.               vigilanteexists = 0
  454.             END IF
  455.             IF mobs(mobcount).role = "seer" THEN
  456.               seerexists = 0
  457.             END IF
  458.             mobs(mobcount).role = "wolf"
  459.             turn = 0
  460.             doprompt = 1
  461.             'gameupdate = 1
  462.             wolvesalive = wolvesalive + 1
  463.             villagersalive = villagersalive - 1
  464.           END IF
  465.           mobcount = mobcount + 1
  466.         LOOP UNTIL mobcount = MAXMOBS
  467.       END IF
  468.     END IF
  469.     roomcheck = roomcheck + 1
  470.   LOOP UNTIL roomcheck = 1008
  471. END IF
  472.  
  473. IF left$ (cmmd$, 3) = "out" THEN
  474.  
  475.   ' user can attempt to out someone as seer.  If mob is seer, seer gives info to user.  Wolves get a kill.
  476.   mobcount = -1
  477.   mobinroom = -1
  478.   DO
  479.      mobcount = mobcount + 1
  480.     IF right$(cmmd$, LEN (mobs(mobcount).title)) = mobs(mobcount).title AND mobs(mobcount).room = room THEN
  481.       'mob is in this room
  482.       mobinroom = 1
  483.     END IF
  484.   LOOP UNTIL mobinroom = 1 OR mobcount = MAXMOBS    'until user input matches mob name in room or all mob names checked
  485.  
  486.   ' if user name matches mob in room, check to see if name is seer.  if seer, give list else just do wolf kill
  487.   IF mobinroom = 1  AND mobs(mobcount).state = 0 THEN
  488.     wolfkill = 1 'wolves get a kill no matter if mob is seer or not
  489.     vigkill = vigilanteexists 'vig gets kill as well
  490.     IF mobs(mobcount).role <> "seer" THEN
  491.       PRINT
  492.       PRINT mobs(mobcount).title + " says, 'A SEER?!  You are looking for a SEER?  I have no idea!'"
  493.        PRINT
  494.      ELSE
  495.          ' mob is the seer - user gets the views
  496.          ' 1 in 5 chance that this action creates another vigilante
  497.          RANDOMIZE TIMER
  498.          x% = INT(RND * 2)
  499.          IF x% = 1 THEN
  500.            DO
  501.              y% = INT(RND * MAXMOBS)
  502.            LOOP UNTIL mobs(y%).state = 0 AND mobs(y%).role <> "wolf" and mobs(y%).role <> "vigilante"
  503.            mobs(y%).role = "vigilante"
  504.            vigilanteexists = vigilanteexists + 1
  505.            vigkill = vigilanteexists
  506.          END IF
  507.          PRINT
  508.          PRINT mobs(mobcount).title + " whispers to you, ";
  509.          color 1
  510.          PRINT "'Yes, I am the seer.  Here is what I know...'"
  511.          color 7
  512.          PRINT
  513.          PRINT "VIEWS:"
  514.          PRINT
  515.          i = 1
  516.          DO
  517.            IF day > 1 THEN
  518.              i = i + 1
  519.              PRINT "Day ";
  520.              PRINT i;
  521.              PRINT ": ";
  522.              PRINT mobs(seerlist(i)).title + " is a " + mobs(seerlist(i)).role + "."
  523.            END IF
  524.          LOOP UNTIL i = DAY
  525.          PRINT
  526.      END IF
  527.    ELSE
  528.        PRINT "No-one here by that name."
  529.    END IF
  530.  
  531.  
  532.  IF left$ (cmmd$ , 5) = "lynch" THEN
  533.    doprompt = 1
  534.    mobcount = 0
  535.    dolynch = 0
  536.    wolfkill = 0
  537.    IF right$ (cmmd$, 11) = "babydemon90" THEN
  538.      PRINT "just type 'lynch babyd'"
  539.    END IF
  540.    DO
  541.      'PRINT "Comparing ";
  542.      'PRINT mobs(mobcount).title;
  543.      'PRINT " and ";
  544.      'PRINT right$(cmmd$, LEN (mobs(mobcount).title));
  545.      'PRINT LEN (mobs(mobcount).title)
  546.      IF mobs(mobcount).title = right$(cmmd$, LEN (mobs(mobcount).title)) AND mobs(mobcount).state = 0 THEN
  547.        dolynch = 1
  548.        color 12
  549.        PRINT "You lynch ";
  550.        PRINT mobs(mobcount).title;
  551.        PRINT "!"
  552.        color 7
  553.        IF mobs(mobcount).role = "seer" THEN
  554.          seerexists = 0
  555.        END IF
  556.        IF mobs(mobcount).role = "vigilante" THEN
  557.          vigilanteexists = vigilanteexists - 1
  558.        END IF
  559.        IF mobs(mobcount).room = room THEN  'death message
  560.          PRINT "Your blood freezes as you hear ";
  561.          PRINT mobs(mobcount).title;
  562.          PRINT "'s death cry."
  563.        END IF
  564.        mobs(mobcount).state = -1
  565.        IF mobs(mobcount).role = "wolf" THEN
  566.          wolvesalive = wolvesalive - 1
  567.        ELSE
  568.          villagersalive = villagersalive - 1
  569.        END IF
  570.        IF wolvesalive = 0 OR wolvesalive = villagersalive OR wolvesalive > villagersalive THEN
  571.          GOTO endgame
  572.        END IF
  573.        vigkill = vigilanteexists
  574.        wolfkill = 1
  575.      END IF
  576.    mobcount = mobcount + 1
  577.    LOOP UNTIL mobcount = MAXMOBS
  578.    IF dolynch = 0 THEN
  579.      color 2
  580.      PRINT "Player not found."
  581.      color 7
  582.    END IF
  583.  
  584.  
  585.  IF vigkill > 0 AND vigilanteexists > 0 THEN
  586.  
  587.    DO
  588.    doprompt = 1
  589.    vigkill = vigkill - 1
  590.    DO
  591.      s% = INT(RND * MAXMOBS)
  592.    LOOP UNTIL mobs(s%).state <> -1  'loop until we find a live player.  Vig can shoot himself.
  593.    mobs(s%).state = -1 'kill player
  594.    PRINT "BANG!  The vigilante has shot ";
  595.    IF mobs(s%).role = "vigilante" THEN
  596.      PRINT "himself?! (herself?!)"
  597.      vigilanteexists = vigilanteexists - 1
  598.    ELSE
  599.      PRINT mobs(s%).title;
  600.      PRINT "!"
  601.    END IF
  602.    IF mobs(s%).role = "vigilante" THEN
  603.      vigilanteexists = vigilanteexists - 1
  604.    END IF
  605.    IF mobs(s%).role = "seer" THEN
  606.      seerexists = 0
  607.    END IF
  608.    IF mobs(s%).role = "wolf" THEN
  609.      wolvesalive = wolvesalive - 1
  610.    ELSE
  611.      villagersalive = villagersalive - 1
  612.    END IF
  613.    IF wolvesalive = 0 OR wolvesalive = villagersalive OR wolvesalive > villagersalive THEN
  614.      GOTO endgame
  615.    END IF
  616.    LOOP UNTIL vigkill = 0
  617.  
  618.  
  619.  
  620.    IF wolfkill = 1 THEN   ' someone was lynched - now its time for the wolves to kill someone if a wolf is still alive
  621.      wolvesleft = 0
  622.      'gameupdate = 1
  623.      mobcount = 0
  624.      DO
  625.        IF mobs(mobcount).role = "wolf" AND mobs(mobcount).state = 0 THEN
  626.          wolvesleft = wolvesleft + 1
  627.        END IF
  628.        mobcount = mobcount + 1
  629.      LOOP UNTIL mobcount = MAXMOBS
  630.      IF wolvesleft > 0 THEN
  631.        RANDOMIZE TIMER
  632.        DO
  633.          x% = INT(RND * MAXMOBS)
  634.        LOOP UNTIL mobs(x%).role <> "wolf" AND mobs(x%).role <> "seer" AND mobs(x%).state <> -1   ' loop until we find a living non-wolf
  635.        mobs(x%).state = -1   ' kill player
  636.        PRINT "The wolves eat ";
  637.        PRINT mobs(x%).title;
  638.        PRINT "."  
  639.        PRINT
  640.        day = day + 1
  641.        assignvotes = 1
  642.        seertime = 1
  643.        wolfkill = 0
  644.        IF mobs(x%).role = "seer" THEN
  645.          seerexists = 0                      ' wolves ate the seer - no more views!
  646.        END IF
  647.        IF mobs(x%).role = "vigilante" THEN
  648.          vigilanteexists = vigilanteexists - 1
  649.        END IF
  650.        IF mobs(x%).role = "wolf" THEN
  651.          wolvesalive = wolvesalive - 1
  652.        ELSE
  653.          villagersalive = villagersalive - 1
  654.        END IF
  655.        IF wolvesalive = 0 OR wolvesalive = villagersalive OR wolvesalive > villagersalive THEN
  656.          GOTO endgame
  657.        END IF
  658.      END IF
  659.    END IF
  660.  
  661.  
  662.  IF seerexists = 1 AND seertime = 1 THEN
  663.  
  664.    ' seer gets a chance to look at someone if exists.
  665.    allviewed = 1            ' assume all have been viewed
  666.    FOR i = 0 to MAXMOBS - 1
  667.       IF mobs(i).viewed = 0 AND mobs(i).state = 0 AND mobs(i).role <> "seer" THEN
  668.         allviewed = 0       ' someone can be viewed
  669.       END IF
  670.    NEXT i
  671.  
  672.    IF allviewed = 0 THEN     '  proceed
  673.      i = -1
  674.      DO
  675.        i = i + 1
  676.      LOOP UNTIL mobs(i).role = "seer" OR i = MAXMOBS
  677.  
  678.      IF mobs(i).role = "seer" THEN
  679.    
  680.        ' found seer, now he gets a random nonrepeating view
  681.        ' maybe ale could get user ability to see seer walking about for 5 seconds?
  682.  
  683.        RANDOMIZE TIMER
  684.        DO
  685.          newview = 1
  686.          DO
  687.          x% = INT(RND * MAXMOBS)
  688.  
  689.          LOOP UNTIL mobs(x%).state <> -1
  690.             IF mobs(x%).viewed = 1 OR mobs(x%).role = "seer" THEN
  691.               newview = 0
  692.             END IF
  693.        LOOP UNTIL newview = 1
  694.        seerlist(day) = x%
  695.        mobs(x%).viewed = 1
  696.      
  697.        seertime = 0
  698.      END IF
  699.    END IF
  700.  
  701.  IF cmmd$ = "unlock gate" THEN
  702.    doprompt = 1
  703.    IF room = 1019 or room = 1012 THEN                           ' only certain rooms have locked gates
  704.      i = -1
  705.      DO                                                         ' look for key in inventory
  706.        i = i + 1
  707.      LOOP UNTIL inv(i) = -1 OR inv(i) = 10002
  708.      IF inv(i) = 10002 THEN                             ' if user has key then continue
  709.    
  710.        IF room = 1019 and zone(room).lock(2) = 1 THEN           ' 1019 has an east gate - see if locked
  711.          zone(room).lock(2) = 0                                 ' unlock
  712.          zone(2001).lock(3) = 0
  713.          PRINT "*click*"
  714.        ELSE
  715.          IF room = 1019 and zone(room).lock(2) = 0 THEN
  716.            PRINT "It is already unlocked!"
  717.          ELSE
  718.            PRINT "You don't have the proper key."  
  719.          END IF
  720.        END IF
  721.      ELSE
  722.        PRINT "You don't have the proper key."  
  723.      END IF  
  724.    ELSE
  725.      IF room = 5001 THEN
  726.        PRINT "You don't have the proper key."
  727.      ELSE
  728.        PRINT "huh?"
  729.      END IF
  730.    END IF
  731.  
  732.  'seerer proc - if user has robes of the seerer in his inventory, he immediately learns
  733.  'the number of wolves in village square.  One-time use.  Basically, they have to run
  734.  'back to the village to learn anything.  Robes are randomly placed.  Possible tweak is
  735.  'to increase the randomization of the drop if it gets too easy.
  736.  
  737.  IF seerer = 1 THEN           ' seerer = 2 then robes not picked up, seerer = 1 then robes picked up, seerer = 0 then robes used
  738.    doprompt = 1
  739.    seerer = seerer - 1
  740.    ' scan for number of wolves in village square and report to user
  741.    PRINT
  742.    PRINT "You feel informed."
  743.    PRINT
  744.    i = -1
  745.    j = 0
  746.    DO
  747.      i = i + 1
  748.      IF mobs(i).room = 1004 AND mobs(i).role = "wolf" THEN
  749.        'PRINT mobs(i).title;
  750.        'PRINT " is a ";
  751.        'PRINT mobs(i).role
  752.        j = j + 1
  753.      END IF
  754.    LOOP UNTIL i = MAXMOBS
  755.    PRINT "There are";
  756.    PRINT j;
  757.    PRINT " wolves in Village Square at this moment."
  758.    PRINT
  759.  
  760.  
  761.  
  762.  
  763.  IF left$ (cmmd$ , 3) = "get" THEN    'user is trying to pick up an item
  764.  
  765.    doprompt = 1
  766.    IF zone(room).items(0) <> -1 THEN
  767.      j = -1
  768.      DO
  769.        j = j + 1
  770.      LOOP UNTIL (item(j).start = room AND right$(cmmd$, LEN (item(j).keyword)) = item(j).keyword) OR j = ITEMBASE
  771.      'PRINT right$(cmmd$, LEN (mobs(mobcount).title));
  772.  
  773.      IF right$(cmmd$, LEN (item(j).keyword)) = item(j).keyword AND item(j).keyword <> "" THEN
  774.  
  775.        k = -1
  776.        DO
  777.          k = k + 1
  778.        LOOP UNTIL inv(k) = -1
  779.        inv(k) = item(j).id
  780.        item(j).start = 0  ' 0 denotes being carried by user
  781.        zone(room).items(0) = zone(room).items(0) - 1
  782.        PRINT "You get ";
  783.        PRINT item(j).name;
  784.        PRINT "."
  785.        IF item(j).id = 10004 THEN
  786.          ' picked up robes of the seerer
  787.          seerer = seerer - 1
  788.        END IF
  789.      ELSE
  790.         PRINT "You do not see that here."
  791.      END IF
  792.  
  793.    ELSE
  794.        PRINT "You do not see that here."
  795.    END IF
  796.  
  797.  
  798.  IF meat > 0 and meatproc > 0 THEN                                      ' check to perform meat proc
  799.    mobcount = -1
  800.    DO
  801.      mobcount = mobcount + 1
  802.      IF meatproc > 0 AND mobs(mobcount).role = "wolf" AND mobs(mobcount).room = meat THEN  'if wolf is in room with meat
  803.        RANDOMIZE TIMER
  804.        m% = INT(RND * 150)
  805.        IF m% = 1 THEN                                  ' wolf takes bait and is tagged
  806.          IF room = meat THEN                           ' send message to user
  807.            PRINT "A wolf takes the bait!"
  808.          END IF
  809.          tagged = mobcount
  810.          meatproc = 0
  811.        END IF
  812.      END IF
  813.      
  814.    LOOP UNTIL mobcount = MAXMOBS or meat = -1
  815.  
  816.  
  817.  
  818.  IF left$ (cmmd$ , 4) = "drop" THEN    'user is trying to drop an item
  819.  
  820.    ' search item keywords for what user typed in
  821.    ' if we get a match, see if user is carrying that item and drop it if so
  822.  
  823.    doprompt = 1
  824.    itemmatch = 0
  825.    itemcarried = 0
  826.    i = -1
  827.    DO
  828.      i = i + 1
  829.  
  830.      IF item(i).id <> 0 THEN
  831.       IF right$(cmmd$, LEN(item(i).keyword)) = item(i).keyword THEN
  832.         itemmatch = 1
  833.       END IF
  834.      END IF
  835.    LOOP UNTIL i = ITEMBASE OR itemmatch = 1
  836.  
  837.    IF itemmatch = 1 THEN
  838.  
  839.      'user entered the keyword of an item.  Is it in his inventory?
  840.  
  841.      k = -1
  842.      DO
  843.        k = k + 1
  844.        IF inv(k) = item(i).id THEN
  845.          itemcarried = 1
  846.        END IF
  847.      LOOP UNTIL itemcarried = 1 OR k = 9
  848.  
  849.  
  850.      IF itemcarried = 1 THEN
  851.  
  852.      ' item is carried so drop it
  853.      j = -1
  854.      DO
  855.        j = j + 1
  856.      LOOP UNTIL j = 9 OR zone(room).items(j) = -1
  857.      
  858.      zone(room).items(j) = item(i).id
  859.      item(i).start = room
  860.      inv(k) = -1
  861.      PRINT "You drop ";
  862.      PRINT item(i).name;
  863.      PRINT "."
  864.      IF item(i).keyword = "meat" THEN                              ' special proc for meat is setup
  865.        meat = room
  866.      END IF
  867.      ELSE
  868.          PRINT "You do not have that item."
  869.      END IF
  870.    ELSE
  871.        PRINT "You do not have that item."
  872.    
  873.    END IF
  874.  
  875.  
  876.  
  877.  
  878.  
  879.  
  880.  
  881.  IF cmmd$ = "votes" THEN
  882.    doprompt = 1
  883.    PRINT
  884.    PRINT "VOTES:"
  885.    PRINT
  886.    mobcount = 0
  887.    DO
  888.      IF mobs(mobcount).state = -1 THEN
  889.        color 8
  890.        PRINT mobs(mobcount).title + " (dead)"
  891.        color 7
  892.      ELSE
  893.        color 6
  894.        'PRINT mobs(mobcount).title + " (" + mobs(mobcount).role + "): ";
  895.        PRINT mobs(mobcount).title + ": ";
  896.        color 7
  897.        PRINT mobs(mobcount).vote
  898.      END IF
  899.      mobcount = mobcount + 1
  900.    LOOP UNTIL mobcount = MAXMOBS
  901.    PRINT
  902.  
  903.  'IF cmmd$ = "rooms" THEN
  904.  '  PRINT "Room Usage:"
  905.  '  PRINT
  906.  '  FOR i = 1000 to 1019
  907.  '     PRINT i;
  908.  '     PRINT ": ";
  909.  '     PRINT zone(i).mobs
  910.  '  NEXT i
  911.  '  FOR i = 2001 to 2009
  912.  '     PRINT i;
  913.  '     PRINT ": ";
  914.  '     PRINT zone(i).mobs
  915.  '  NEXT i
  916.  'END IF
  917.  
  918.  
  919.  IF cmmd$ = "i" OR cmmd$ = "inv" OR cmmd$ = "inventory" THEN
  920.    doprompt = 1
  921.    PRINT "Carried:"
  922.    count = 0
  923.    i = -1
  924.    DO
  925.      i = i + 1
  926.      IF inv(i) > 0 THEN
  927.        count = count + 1
  928.        j = -1
  929.        DO
  930.          j = j + 1
  931.        LOOP UNTIL inv(i) = item(j).id
  932.        PRINT item(j).name
  933.      END IF
  934.    LOOP UNTIL i = ITEMBASE
  935.  
  936.    IF count = 0 THEN
  937.      PRINT "nothing"
  938.    END IF
  939.  
  940.  IF cmmd$ = "help" THEN
  941.  doprompt = 1
  942.    PRINT
  943.    PRINT "Werewolf Game Help:
  944.   PRINT
  945.   PRINT "You are a villager seeking to kill all wolves in the village."
  946.   PRINT "Wolves win condition:  not outnumbered by villagers."
  947.   PRINT "Your win condition: kill all wolves."
  948.   PRINT "Certain situations can trigger various events.  The rules and"
  949.   PRINT "roles may change over time accordingly.  Its up to you to"
  950.   PRINT "figure it all out."
  951.   PRINT
  952.   PRINT "See also: COMMANDS"
  953.   PRINT
  954. END IF
  955.  
  956. IF cmmd$ = "wizhelp" THEN
  957.   PRINT
  958.   PRINT "Wizhelp"
  959.   PRINT
  960.   PRINT "from inside gate to wolves' den:"
  961.    PRINT "e, e, e, n, w, e, n, n, e, e"
  962.    PRINT "from start of misty woods to great road:"
  963.    PRINT "w,s,s,s,e,s,w,s"
  964.    PRINT
  965.    PRINT "SEE ALSO: wizrooms, wizgo, wizitems, wizroles"
  966.    PRINT
  967.  
  968.  IF cmmd$ = "wizrooms" THEN
  969.    IF wizrooms = 1 THEN
  970.      wizrooms = 0
  971.      PRINT "Room numbers toggled OFF.\r\n\r\nsure"
  972.    ELSE
  973.      wizrooms = 1
  974.      PRINT "Room numbers toggled ON."
  975.    END IF
  976.  
  977.  IF left$ (cmmd$, 5) = "wizgo" THEN
  978.  PRINT "This is supposed to teleport you to any room for testing purposes.\r\nNot operational at this time."
  979.  
  980.  IF cmmd$ = "wizitems" THEN
  981.    ' list all item room numbers in game.
  982.    i = -1
  983.    PRINT
  984.    DO
  985.      i = i + 1
  986.      PRINT item(i).name;
  987.      PRINT ": ";
  988.      IF item(i).start = -1 THEN
  989.        PRINT "not in game (-1)"
  990.      ELSE
  991.        IF item(i).start = 0 THEN
  992.          PRINT "carried (0)"
  993.        ELSE
  994.          PRINT "room #";
  995.          PRINT item(i).start;
  996.          PRINT " - ";
  997.          PRINT zone(item(i).start).title
  998.        END IF
  999.      END IF
  1000.    LOOP UNTIL i = ITEMBASE -1
  1001.  
  1002.  IF cmmd$ = "wizroles" THEN
  1003.    PRINT
  1004.    PRINT "Roles:
  1005.   PRINT
  1006.   i = -1
  1007.   DO
  1008.     i = i + 1
  1009.     PRINT mobs(i).title;
  1010.     PRINT " - ";
  1011.     PRINT mobs(i).role
  1012.   LOOP UNTIL i = MAXMOBS - 1
  1013.   PRINT
  1014. END IF
  1015.  
  1016. IF cmmd$ = "commands" THEN
  1017.   doprompt = 1
  1018.   PRINT
  1019.   PRINT "Commands:"
  1020.   PRINT
  1021.   PRINT "l (or look) - look at room description"
  1022.   PRINT "ex (or exits) - see obvious room exits"
  1023.   PRINT "n,s,e,w - move north, south, east, west"
  1024.   PRINT "votes - see who is voting for whom today"
  1025.   'PRINT "rooms - show zone status"
  1026.   PRINT "lynch <player> - lynch a player"
  1027.   PRINT "update - get a game update"
  1028.   PRINT "out <player> - attempt to out player as seer.  This action
  1029.    PRINT "also ends a day phase."
  1030.    PRINT "get <item> - get an item"
  1031.    PRINT "drop <item> - drop an item"
  1032.    PRINT "autoupdate - toggle update in prompt"
  1033.    PRINT "quit - quit the game"
  1034.    PRINT "help - see this file"
  1035.    PRINT "! = repeat last command"
  1036.    i = -1
  1037.    DO
  1038.      i = i + 1
  1039.    LOOP UNTIL item(i).type = "key" OR i = ITEMBASE
  1040.    IF item(i).type = "key" AND item(i).start = 0 THEN     ' user is carrying key - reveal unlock command
  1041.      PRINT "unlock - unlock something"
  1042.    END IF
  1043.    IF room = 5002 THEN                                    ' secret help file keyword is shown in helpfile if user is here
  1044.      PRINT "gamehints - learn secrets about the game"
  1045.    END IF
  1046.    PRINT
  1047.  END IF
  1048.  
  1049.  IF cmmd$ = "ex" OR cmmd$ = "exit" OR cmmd$ = "exits" THEN
  1050.  doprompt = 1
  1051.  PRINT "Obvious Exits: "
  1052.    IF zone(room).exits(0) <> -1 AND zone(room).lock(0) <> 2 THEN    'if exit exists and not hidden (lock = 2)
  1053.      PRINT "north - ";
  1054.      IF wizrooms = 1 THEN
  1055.        PRINT "#";
  1056.        PRINT zone(room).exits(0);
  1057.        PRINT " - ";
  1058.      END IF
  1059.      PRINT zone(zone(room).exits(0)).title
  1060.    END IF
  1061.    IF zone(room).exits(1) <> -1 AND zone(room).lock(1) <> 2 THEN
  1062.      PRINT "south - ";
  1063.      IF wizrooms = 1 THEN
  1064.        PRINT "#";
  1065.        PRINT zone(room).exits(1);
  1066.        PRINT " - ";
  1067.      END IF
  1068.      PRINT zone(zone(room).exits(1)).title
  1069.    END IF
  1070.    IF zone(room).exits(2) <> -1 AND zone(room).lock(2) <> 2 THEN
  1071.      PRINT "east  - ";
  1072.      IF wizrooms = 1 THEN
  1073.        PRINT "#";
  1074.        PRINT zone(room).exits(2);
  1075.        PRINT " - ";
  1076.      END IF
  1077.      PRINT zone(zone(room).exits(2)).title
  1078.    END IF
  1079.    IF zone(room).exits(3) <> -1 AND zone(room).lock(3) <> 2 THEN
  1080.      PRINT "west  - ";
  1081.      IF wizrooms = 1 THEN
  1082.        PRINT "#";
  1083.        PRINT zone(room).exits(3);
  1084.        PRINT " - ";
  1085.      END IF
  1086.      PRINT zone(zone(room).exits(3)).title
  1087.    END IF
  1088.  PRINT obviousexits$
  1089.  
  1090.  IF cmmd$ = "n" or cmmd$ = "north" THEN
  1091.    doprompt = 1
  1092.    IF zone(room).exits(0) = -1 THEN
  1093.      PRINT "You cannot go that way."
  1094.    ELSE
  1095.      IF zone(room).lock(0) = 1 THEN
  1096.        PRINT "It seems to be locked."
  1097.      ELSE
  1098.        room = zone(room).exits(0)
  1099.        cmmd$ = "l"
  1100.      END IF
  1101.    END IF
  1102.  
  1103.  IF cmmd$ = "s" or cmmd$ = "south" THEN
  1104.    doprompt = 1
  1105.    IF zone(room).exits(1) = -1 THEN
  1106.      PRINT "You cannot go that way."
  1107.    ELSE
  1108.      IF zone(room).lock(1) = 1 THEN
  1109.        PRINT "It seems to be locked."
  1110.      ELSE
  1111.        room = zone(room).exits(1)
  1112.        cmmd$ = "l"
  1113.      END IF
  1114.    END IF
  1115.  
  1116.  IF cmmd$ = "e" or cmmd$ = "east" THEN
  1117.    doprompt = 1
  1118.    IF zone(room).exits(2) = -1 THEN
  1119.      PRINT "You cannot go that way."
  1120.    ELSE
  1121.      IF zone(room).lock(2) = 1 THEN
  1122.        PRINT "It seems to be locked."
  1123.      ELSE
  1124.        room = zone(room).exits(2)
  1125.        cmmd$ = "l"
  1126.      END IF
  1127.    END IF
  1128.  
  1129.  IF cmmd$ = "w" or cmmd$ = "west" THEN
  1130.    doprompt = 1
  1131.    IF zone(room).exits(3) = -1 THEN
  1132.      PRINT "You cannot go that way."
  1133.    ELSE
  1134.      IF zone(room).lock(3) = 1 THEN
  1135.        PRINT "It seems to be locked."
  1136.      ELSE
  1137.        room = zone(room).exits(3)
  1138.        cmmd$ = "l"
  1139.      END IF
  1140.    END IF
  1141.  
  1142.  IF room = 1009 THEN
  1143.    ' special proc for Gorf's Tavern
  1144.    i = -1
  1145.    DO
  1146.      i = i + 1
  1147.    LOOP UNTIL i = 50 OR inv(i) = 10001
  1148.  
  1149.    IF inv(i) = 10001 THEN
  1150.      j = -1
  1151.      DO
  1152.        j = j + 1
  1153.      LOOP UNTIL j = ITEMBASE or item(j).keyword = "key"
  1154.      IF item(j).keyword = "key" THEN
  1155.        IF item(j).start = -1 THEN         ' one-time proc to drop key
  1156.          item(j).start = 1009
  1157.          zone(1009).items(0) = zone(1009).items(0) + 1
  1158.          PRINT "The bright light of a proper Gorf's Wicked Ale startles the patrons."
  1159.          PRINT "You think you hear something fall to the ground."
  1160.        END IF
  1161.      END IF
  1162.    END IF
  1163.  
  1164.  
  1165.  IF cmmd$ = "autoupdate" THEN
  1166.    doprompt = 1
  1167.    IF autoupdate = 1 THEN
  1168.      autoupdate = 0
  1169.    ELSE
  1170.      autoupdate = 1
  1171.    END IF
  1172.  
  1173.  IF cmmd$ = "gamehints" THEN
  1174.  
  1175.    PRINT
  1176.    color 2
  1177.    PRINT "Werewolf Game Hints"
  1178.    color 7
  1179.    PRINT
  1180.    PRINT "Attempting to out a seer has a 50% chance of making a vigilante."
  1181.    PRINT "The meat has a special function."
  1182.    PRINT "It turns out that villagers wander for a reason."
  1183.    PRINT
  1184.  
  1185.  
  1186.  IF cmmd$ = "l" OR cmmd$ = "look" THEN
  1187.  'PRINT "Near the Droid Army"
  1188.  color 3
  1189.  IF wizrooms = 1 THEN
  1190.    PRINT "#";
  1191.    PRINT room;
  1192.    PRINT " - ";
  1193.  PRINT zone(room).title
  1194.  color 7
  1195.  'PRINT "You are on the planet Genosis.  The Clone Wars rage nearby as"
  1196.  'PRINT "battle droids attack clone troopers.  Surrounded by Jedi, you"
  1197.  'PRINT "feel quite safe here as you pensively watch the fighting."
  1198.  PRINT zone(room).descrip
  1199.  
  1200.    IF zone(room).items(0) <> -1 THEN
  1201.      color 6
  1202.      FOR k = 0 to ITEMBASE
  1203.         'PRINT "room: ";
  1204.         'PRINT room;
  1205.         'PRINT " item(";
  1206.         'PRINT k;
  1207.         'PRINT ").start: ";
  1208.         'PRINT item(k).start
  1209.         IF room = item(k).start THEN
  1210.           PRINT item(k).descrip
  1211.         END IF
  1212.      NEXT k
  1213.      color 7
  1214.    END IF
  1215.  
  1216.  
  1217.  mobcount = 0
  1218.  DO
  1219.    IF mobs(mobcount).room = room THEN
  1220.      IF mobs(mobcount).state = 0 THEN  ' mob is alive
  1221.        color 2
  1222.        PRINT mobs(mobcount).descrip;
  1223.        IF tagged = mobcount THEN                             ' rotten meat has tagged this wolf
  1224.          PRINT " (";
  1225.          PRINT mobs(mobcount).role;
  1226.          PRINT ")";
  1227.        END IF
  1228.        PRINT
  1229.        color 7
  1230.      ELSE                              ' mob is dead
  1231.        color 6
  1232.        PRINT "The corpse of ";
  1233.        PRINT mobs(mobcount).title;
  1234.        PRINT " (";
  1235.        PRINT mobs(mobcount).role;
  1236.        PRINT ") is lying here."
  1237.        color 7
  1238.      END IF
  1239.    END IF
  1240.    mobcount = mobcount + 1
  1241.  LOOP UNTIL mobcount = MAXMOBS
  1242.  
  1243.  IF room = 4007 THEN                            'deathtrap proc
  1244.    GOTO deathtrap
  1245.  
  1246.  
  1247.  IF kenobi = 1 THEN
  1248.    PRINT "Jedi Master Obi-Wan Kenobi is standing here."
  1249.  IF jinn = 1 THEN
  1250.    PRINT "Jedi Master Qui-Gonn Jinn is standing here."
  1251.  IF anakin = 1 THEN
  1252.    PRINT "Jedi Knight Anakin Skywalker is standing here."
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  IF doprompt = 1 THEN
  1258.     'PRINT zone(room).exits(0);
  1259.     'PRINT " ";
  1260.     'PRINT zone(room).exits(1);
  1261.     'PRINT " ";
  1262.     'PRINT zone(room).exits(2);
  1263.     'PRINT " ";
  1264.     'PRINT zone(room).exits(3);
  1265.     'PRINT " ";
  1266.     IF autoupdate = 1 THEN            ' automatically put update info in prompt
  1267.       PRINT "Villagers:";
  1268.       color 2
  1269.       PRINT villagersalive;
  1270.       color 7
  1271.       PRINT " Wolves:";
  1272.       color 4
  1273.       PRINT wolvesalive;
  1274.       color 7
  1275.       PRINT " ";
  1276.     END IF
  1277.     'PRINT lastcmmd$;
  1278.     'PRINT cmmd$;
  1279.     PRINT ">" + cmmdbuild$;
  1280.     doprompt = 0
  1281.  
  1282.  'LOOP UNTIL cmmd$ = "quit" OR kbhit$ = "9"
  1283.  LOOP UNTIL cmmd$ = "quit"
  1284.  
  1285.  GOTO skip
  1286.  
  1287.  
  1288.  CLS
  1289.  Count = 0
  1290.  DO
  1291.  IF Count MOD 20 = 0 THEN GOSUB Titles
  1292.  DO
  1293.     UserIn$ = INKEY$
  1294.  LOOP UNTIL UserIn$ <> ""
  1295.  PRINT LEN(UserIn$); TAB(10); LEFT$(UserIn$, 1); TAB(20); ASC(UserIn$)
  1296.  IF LEN(UserIn$) = 2 THEN
  1297.     UserIn$ = RIGHT$(UserIn$, 1)
  1298.     LOCATE CSRLIN - 1, 30
  1299.     PRINT UserIn$; TAB(40); ASC(UserIn$)
  1300.  Count = Count + 1
  1301.  LOOP UNTIL UserIn$ = CHR$(27)
  1302.  END
  1303.  
  1304. Titles:
  1305. PRINT TAB(10); "Characteristics of UserIn$"
  1306. PRINT "Length"; TAB(10); "1st char"; TAB(20); "Asc"; TAB(30); "2nd char"; TAB(40); "Asc"
  1307.  
  1308. '':::::
  1309.  
  1310. sub initmobs( array() as mmm, array2() as ttt, MAXMOBS AS INTEGER, PLAYERBASE as integer, titles() as string, descrips() as string )
  1311.  
  1312.  
  1313. DIM used(PLAYERBASE) as integer  'this will keep track of used mobs so we don't repeat
  1314.  
  1315. FOR i = 1 to PLAYERBASE
  1316.    used(i-1) = 0
  1317.  
  1318.   'PRINT "Used: ";
  1319.   'for j = 1 to PLAYERBASE
  1320.      'PRINT used(j-1);
  1321.      'print ", ";
  1322.   'next j
  1323.   'PRINT
  1324. i = 0
  1325.  
  1326. 'PRINT "maxmobs = ";
  1327. 'print MAXMOBS
  1328.   'print "i = ";
  1329.   'print i
  1330.   DO
  1331.   x% = INT(RND * PLAYERBASE)  
  1332.   LOOP WHILE used(x%) = 1  ' loop until we find a nonrepeating mob
  1333.  
  1334.   used(x%) = 1  'mark this mob as used so we don't repeat it
  1335.  
  1336.   'PRINT "Used: ";
  1337.   'for j = 1 to PLAYERBASE
  1338.      'PRINT used(j-1);
  1339.      'print ", ";
  1340.   'next j
  1341.   'PRINT
  1342.   array(i).room = 1004
  1343.   array(i).title = titles(x%)
  1344.   array(i).descrip = descrips(x%)
  1345.   array(i).state = 0
  1346.   array(i).role = ""
  1347.   array2(1004).mobs = array2(1004).mobs + 1
  1348.   i = i + 1
  1349. LOOP UNTIL i = MAXMOBS
  1350.  
  1351.  
  1352.  
  1353. deathtrap:
  1354.    PRINT "You are DEAD! R.I.P."
  1355.    GOTO deathtrap2
  1356.  
  1357. endgame:
  1358.  
  1359.  
  1360.  IF wolvesalive = 0 THEN
  1361.    PRINT "Congratulations!  You have killed all the WOLVES!"
  1362.    color 2
  1363.    PRINT "The village is saved."
  1364.    color 7
  1365.    PRINT "There are now";
  1366.    PRINT wolvesalive;
  1367.    PRINT " wolves to";
  1368.    PRINT villagersalive;
  1369.    PRINT " villagers."
  1370.    color 4
  1371.    PRINT "The wolves rise up and eat the remaining villagers."
  1372.    color 7
  1373. deathtrap2:
  1374.    PRINT "You lose!"
  1375.   END IF
  1376.    PRINT "The wolves were: ";
  1377.    mobcount = 0
  1378.    wolfcount = 0
  1379.    DO
  1380.      IF mobs(mobcount).role = "wolf" THEN
  1381.        IF wolfcount <> 0 THEN
  1382.          PRINT ", ";
  1383.        END IF
  1384.        wolfcount = wolfcount + 1
  1385.        PRINT mobs(mobcount).title;
  1386.      END IF
  1387.    mobcount = mobcount + 1
  1388.    LOOP UNTIL mobcount = MAXMOBS
  1389.  
  1390.  
  1391.  PRINT "Try Again? (yes/no)
  1392.  
  1393. DO
  1394.  
  1395. cmmd$ = ""
  1396.  
  1397. kbhit$ = INKEY$
  1398.  
  1399. IF kbhit$ <> "" AND kbhit$ <> CHR$(13) THEN
  1400.  '  doprompt = 1
  1401.  IF kbhit$ = CHR$(8) THEN
  1402.     ' backspace key was pressed - delete last letter
  1403.     cmmdbuild$ = LEFT$(cmmdbuild$, LEN(cmmdbuild$)-1)
  1404.  ELSE
  1405.     ' add last letter
  1406.     cmmdbuild$ = cmmdbuild$ + kbhit$
  1407.  END IF
  1408.  '  PRINT "cmmdbuild$ = " + cmmdbuild$
  1409.  PRINT kbhit$;
  1410. END IF
  1411.  
  1412. IF kbhit$ = CHR$(13) THEN
  1413.    doprompt = 1
  1414.    cmmd$ = cmmdbuild$
  1415.    PRINT
  1416.   ' PRINT "return key pressed!"
  1417.   ' PRINT "cmmd$ = " + cmmd$
  1418.    cmmdbuild$ = ""
  1419. END IF
  1420.  
  1421. IF doprompt = 1 THEN
  1422.    PRINT ">" + cmmdbuild$;
  1423.    doprompt = 0
  1424. END IF
  1425. LOOP UNTIL cmmd$ = "yes" OR cmmd$ = "no"
  1426.  
  1427. IF cmmd$ = "yes" THEN
  1428.   GOTO start
  1429. END IF
  1430.  
  1431.  
  1432.  
  1433. skip:
  1434.  
  1435. DATA "Idiot Boxer"
  1436. DATA "Norman Einstein"
  1437. DATA "malice"
  1438. DATA "babyd"
  1439. DATA "ratpfink"
  1440. DATA "Joseph"
  1441. DATA "Village Idiot"
  1442. DATA "Foosball God"
  1443. DATA "zippy"
  1444. DATA "PocketPasser"
  1445. DATA "fletch"
  1446. DATA "guppy"
  1447. DATA "tdoss"
  1448. DATA "psychopav"
  1449. DATA "noD"
  1450. DATA "sharkbait"
  1451. DATA "polecat"
  1452. DATA "cavalier"
  1453. DATA "UCONN"
  1454. DATA "Kendall"
  1455. DATA "BGP"
  1456. DATA "gorf"
  1457. DATA "BTSW"
  1458. DATA "Usual Suspects"
  1459. DATA "Gadwallgetter"
  1460. DATA "PirateMike"
  1461. DATA "Dickies"
  1462. DATA "cocoagirl"
  1463. DATA "aardball"
  1464. DATA "ColtsFreak"
  1465. DATA "snowmonkey"
  1466. DATA "swineflu"
  1467. DATA "worm"
  1468. DATA "DARAIDERS"
  1469. DATA "mjvb"
  1470. DATA "smoo"
  1471. DATA  "wingnut"
  1472. DATA "Loan"
  1473. DATA "RWS"
  1474. DATA "Preds"
  1475. DATA "Harry"
  1476.  
  1477. DATA "Idiot Boxer stands here preparing some Boxerins."
  1478. DATA "Norman Einstein is quickly figuring out who the wolves are."
  1479. DATA "malice is upgrading packmentality.net while finding wolves here."
  1480. DATA "babydemon90 :coos: here."
  1481. DATA "ratpfink is low flying and enjoying a game here."
  1482. DATA "Joseph is hinting at a role here."
  1483. DATA "Village Idiot is with us on satellite delay."
  1484. DATA "Foosball God is looking to mess with some minds here."
  1485. DATA "zippy is here serving a timeout."
  1486. DATA "PocketPasser is getting ready to cook something good."
  1487. DATA "fletch is low flying while hunting wolves here."
  1488. DATA "guppy is trying to help out inbetween patients today."
  1489. DATA "tdoss brings us his latest plan...to catch the wolves...."
  1490. DATA "psychopav is busy working but took time out to play."
  1491. DATA "noD is going feral here."
  1492. DATA "sharkbait is looking for an update."
  1493. DATA "polecat is a scary texas clown looking to HAMMAH!"
  1494. DATA "cavalier is feuding with malice here."
  1495. DATA "UCONN is in love with Diana Taurasi."
  1496. DATA "Kendall is hoping to avoid a certain situation today."
  1497. DATA "BGP is jotting something down in his notebook here."
  1498. DATA "gorf thinks you should check out his tavern."
  1499. DATA "BTSW wishes he were by the sea."
  1500. DATA "Usual Suspects is quickly figuring out who the wolves are here."
  1501. DATA "Gadwallgetter is here checking in."
  1502. DATA "PirateMike is enjoying a game today."
  1503. DATA "Dickies takes time out from working on cars to enjoy a game."
  1504. DATA "cocoagirl is stopping by from the movie set to cast a vote."
  1505. DATA "aardball looks for clues here."
  1506. DATA "ColtsFreak hopes he isn't the play today."
  1507. DATA "snowmonkey kicks back and enjoys another game."
  1508. DATA "swineflu is a sick pig."
  1509. DATA "worm ponders his vote here."
  1510. DATA "DARAIDERS argues his case that he has found a wolf here."
  1511. DATA "mjvb stops by to cast a vote."
  1512. DATA "smoo slaps his beaver tail on the ground impatiently."
  1513. DATA "wingnut is watching how people vote today."
  1514. DATA "Loan has a big smile today because he thinks he's found a wolf."
  1515. DATA "RWS is carefully watching the voting patterns at this point."
  1516. DATA "Preds ponders over the recent deaths here."
  1517. DATA "Harry hopes to lynch a wolf before he hits the sack."
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  
  1523.  
  1524. DATA 1000
  1525. DATA "A Cottage"
  1526. DATA "This is a simple village cottage.  Very cottagey." + CHR$(13) + CHR$(10) + "The door to the south is open."
  1527. DATA -1, 1001, -1, -1
  1528. DATA -1,-1,-1,-1
  1529.  
  1530. DATA 1001
  1531. DATA "Outside a Cottage"
  1532. DATA "You are outside a simple village cottage." + CHR$(13) + CHR$(10) + "The road leads south from here."
  1533. DATA 1000, 1002, -1, -1
  1534. DATA -1,-1,-1,-1
  1535.  
  1536. DATA 1002
  1537. DATA "On a Cobblestone Road"
  1538. DATA "You are on a village road paved with fine cobblestones." + CHR$(13) + CHR$(10) + "Hovels are on either side of the road.  It leads north and south."
  1539. DATA 1001, 1003, 1011 , 1010
  1540. DATA -1,-1,-1,-1
  1541.  
  1542. DATA 1003
  1543. DATA "On a Cobblestone Road"
  1544. DATA "You are on a village road paved with fine cobblestones." + CHR$(13) + CHR$(10) + "Hovels are on either side of the road.  The village square is to the south."
  1545. DATA 1002, 1004, -1, -1
  1546. DATA -1,-1,-1,-1
  1547.  
  1548. DATA 1004
  1549. DATA "The Village Square"
  1550. DATA "Before you is the village square.  A well-oiled CataVillager" + CHR$(13) + CHR$(10) + "rests here awaiting use."
  1551. DATA 1003, 1005, 1006, 1007
  1552. DATA -1,-1,-1,-1
  1553.  
  1554. DATA 1005
  1555. DATA "On a Cobblestone Road"
  1556. DATA "You are on a village road paved with fine cobblestones." + CHR$(13) + CHR$(10) + "The village square is to the north."
  1557. DATA 1004, 1012, -1, -1
  1558. DATA -1,-1,-1,-1
  1559.  
  1560. DATA 1006
  1561. DATA "On a Cobblestone Road"
  1562. DATA "You are on a village road paved with fine cobblestones." + CHR$(13) + CHR$(10) + "The village square is to the west."
  1563. DATA -1, -1, 1013, 1004
  1564. DATA -1,-1,-1,-1
  1565.  
  1566. DATA 1007
  1567. DATA "On a Dirt Road"
  1568. DATA "This is a simple dirt road in the village." + CHR$(13) + CHR$(10) + "The village square is to the east."
  1569. DATA -1, -1, 1004, 1008
  1570. DATA -1,-1,-1,-1
  1571.  
  1572. DATA 1008
  1573. DATA "Road to Gorf's Tavern"
  1574. DATA "The simple dirt road leads west towards the famous water hole and" + CHR$(13) + CHR$(10) + "east towards the village square."
  1575. DATA -1, -1, 1007, 1009
  1576. DATA -1,-1,-1,-1
  1577.  
  1578. DATA 1009
  1579. DATA "Gorf's Tavern"
  1580. DATA "The familiar, warm and cozy atmosphere of Gorf's Tavern welcomes you." + CHR$(13) + CHR$(10) + "Booths line one wall.  Patrons are seated on stools at the main bar," + CHR$(13) + CHR$(10) + "enjoying a brew.  Hey! It looks like your favorite seat is open!" + CHR$(13) + CHR$(10) + "A waiter notices you, smiles, and heads to your usual seat to make" + CHR$(13) + CHR$(10) + "sure everything is in good order."
  1581. DATA -1, -1, 1008, -1
  1582. DATA -1,-1,-1,-1
  1583.  
  1584. DATA 1010
  1585. DATA "A Hovel"
  1586. DATA "This looks very much like the same type of hovel that" + CHR$(13) + CHR$(10) + "your family has lived in for three generations.  You do," + CHR$(13) + CHR$(10) + "however, admire the stump the people that live here get to" + CHR$(13) + CHR$(10) + "sleep on.  It sure is a nice one!"
  1587. DATA -1, -1, 1002, -1
  1588. DATA -1,-1,-1,-1
  1589.  
  1590. DATA 1011
  1591. DATA "A Hovel"
  1592. DATA "This looks very much like the same type of hovel that" + CHR$(13) + CHR$(10) + "your family has lived in for three generations.  You do," + CHR$(13) + CHR$(10) + "however, admire the stump the people that live here get to" + CHR$(13) + CHR$(10) + "sleep on.  It sure is a nice one!"
  1593. DATA -1, -1, -1, 1002
  1594. DATA -1,-1,-1,-1
  1595.  
  1596. DATA 1012
  1597. DATA "Before an Opulent Mansion"
  1598. DATA "The cobblestone road ends here at the gates of a magnificent" + CHR$(13) + CHR$(10) + "mansion.  You lose count of all the handmaidens and concubines that" + CHR$(13) + CHR$(10) + "frolic beyond the gates.  Speaking of which, the gates are shut" + CHR$(13) + CHR$(10) + "and there is no way in."
  1599. DATA 1005, 3001, -1, -1
  1600. DATA -1,1,-1,-1
  1601.  
  1602. DATA 1013
  1603. DATA "On a Cobblestone Road"
  1604. DATA "You are on a village road paved with fine cobblestones." + CHR$(13) + CHR$(10) + "The town hall is to the south."
  1605. DATA -1, 1014, 1019, 1006
  1606. DATA -1,-1,-1,-1
  1607.  
  1608. DATA 1014
  1609. DATA "Entrance to the Town Hall"
  1610. DATA "This is the town hall, where civic leaders gather to run the village." + CHR$(13) + CHR$(10) + "Looks like its ok to snoop around."
  1611. DATA 1013, 1015, 1016, -1
  1612. DATA -1,-1,-1,-1
  1613.  
  1614. DATA 1015
  1615. DATA "Mayor's Office"
  1616. DATA "A huge oak desk sits in the middle of this room.  Important paperwork" + CHR$(13) + CHR$(10) + "having to do with improving the quality of stumps the villagers" + CHR$(13) + CHR$(10) + "sleep on sit neatly in an OUT basket."
  1617. DATA 1014, -1, -1, -1
  1618. DATA -1,-1,-1,-1
  1619.  
  1620. DATA 1016
  1621. DATA "The Courtroom"
  1622. DATA "The Courtroom features a large judge's bench flanked by a witness" + CHR$(13) + CHR$(10) + "stand and clerk's table.  Facing the bench are two simple tables." + CHR$(13) + CHR$(10) + "One table for the defendant and the other for the plaintiff." + CHR$(13) + CHR$(10) + "A jury box is to the left."
  1623. DATA -1, 1017, -1, 1014
  1624. DATA -1,-1,-1,-1
  1625.  
  1626. DATA 1017
  1627. DATA "Judge's Chambers"
  1628. DATA "Another office, this one for the judge.  A closet" + CHR$(13) + CHR$(10) + "full of black robes is to the east.  A large gavel rests" + CHR$(13) + CHR$(10) + "on the judge's desk next to his wig."
  1629. DATA 1016, -1, 1018, -1
  1630. DATA -1,-1,-1,-1
  1631.  
  1632. DATA 1018
  1633. DATA "Closet"
  1634. DATA "Lots of black robes drape from hangars here."
  1635. DATA -1, -1, -1, 1017
  1636. DATA -1,-1,-1,-1
  1637.  
  1638. DATA 1019
  1639. DATA "The Village Entrance"
  1640. DATA "The entrance to the village is here.  A large wrought-iron" + CHR$(13) + CHR$(10) + "gate has been installed to protect the denizens from the hazards" + CHR$(13) + CHR$(10) + "beyond."
  1641. DATA -1, -1, 2001, 1013
  1642. DATA -1,-1,1,-1
  1643.  
  1644. DATA 2001
  1645. DATA "The Howling Woods"
  1646. DATA "A chilling wind whispers through the trees, whipping up dead" + CHR$(13) + CHR$(10) +  "leaves before you.  Fresh wolftracks in the soft mud warn you to" + CHR$(13) + CHR$(10) + "be careful.  The village is to the west."
  1647. DATA 2002, 2003, 2004, 1019
  1648. DATA -1,-1,-1,1
  1649.  
  1650. DATA 2002
  1651. DATA "The Howling Woods"
  1652. DATA "A chilling wind whispers through the trees, whipping up dead" + CHR$(13) + CHR$(10) +  "leaves before you.  Fresh wolftracks in the soft mud warn you to" + CHR$(13) + CHR$(10) + "be careful."
  1653. DATA 2005, 2001, 2006, -1
  1654. DATA -1,-1,-1,-1
  1655.  
  1656. DATA 2003
  1657. DATA "The Howling Woods"
  1658. DATA "A chilling wind whispers through the trees, whipping up dead" + CHR$(13) + CHR$(10) +  "leaves before you.  Fresh wolftracks in the soft mud warn you to" + CHR$(13) + CHR$(10) + "be careful."
  1659. DATA 2001, 2007, 2008, -1
  1660. DATA -1,-1,-1,-1
  1661.  
  1662. DATA 2004
  1663. DATA "The Howling Woods"
  1664. DATA "A chilling wind whispers through the trees, whipping up dead" + CHR$(13) + CHR$(10) +  "leaves before you.  Fresh wolftracks in the soft mud warn you to" + CHR$(13) + CHR$(10) + "be careful."
  1665. DATA 2006, 2008, 2009, 2001
  1666. DATA -1,-1,-1,-1
  1667.  
  1668. DATA 2005
  1669. DATA "The Howling Woods"
  1670. DATA "A chilling wind whispers through the trees, whipping up dead" + CHR$(13) + CHR$(10) +  "leaves before you.  Fresh wolftracks in the soft mud warn you to" + CHR$(13) + CHR$(10) + "be careful."
  1671. DATA -1, 2002, -1, -1
  1672. DATA -1,-1,-1,-1
  1673.  
  1674. DATA 2006
  1675. DATA "The Howling Woods"
  1676. DATA "A chilling wind whispers through the trees, whipping up dead" + CHR$(13) + CHR$(10) +  "leaves before you.  Fresh wolftracks in the soft mud warn you to" + CHR$(13) + CHR$(10) + "be careful."
  1677. DATA -1, 2004, -1, 2002
  1678. DATA -1,-1,-1,-1
  1679.  
  1680. DATA 2007
  1681. DATA "The Howling Woods"
  1682. DATA "A chilling wind whispers through the trees, whipping up dead" + CHR$(13) + CHR$(10) +  "leaves before you.  Fresh wolftracks in the soft mud warn you to" + CHR$(13) + CHR$(10) + "be careful."
  1683. DATA 2003, -1, -1, -1
  1684. DATA -1,-1,-1,-1
  1685.  
  1686. DATA 2008
  1687. DATA "The Howling Woods"
  1688. DATA "A chilling wind whispers through the trees, whipping up dead" + CHR$(13) + CHR$(10) +  "leaves before you.  Fresh wolftracks in the soft mud warn you to" + CHR$(13) + CHR$(10) + "be careful."
  1689. DATA 2004, 4001, -1, 2003
  1690. DATA -1,-1,-1,-1
  1691.  
  1692. DATA 2009
  1693. DATA "The Howling Woods"
  1694. DATA "A chilling wind whispers through the trees, whipping up dead" + CHR$(13) + CHR$(10) +  "leaves before you.  Fresh wolftracks in the soft mud warn you to" + CHR$(13) + CHR$(10) + "be careful."
  1695. DATA 2010, -1, 2014, 2004
  1696. DATA -1,-1,-1,-1
  1697.  
  1698. DATA 2010
  1699. DATA "The Howling Woods"
  1700. DATA "A chilling wind whispers through the trees, whipping up dead" + CHR$(13) + CHR$(10) +  "leaves before you.  Fresh wolftracks in the soft mud warn you to" + CHR$(13) + CHR$(10) + "be careful."
  1701. DATA 2011, 2009, 2013, 2016
  1702. DATA -1,-1,-1,-1
  1703.  
  1704. DATA 2011
  1705. DATA "The Howling Woods"
  1706. DATA "A chilling wind whispers through the trees, whipping up dead" + CHR$(13) + CHR$(10) +  "leaves before you.  Fresh wolftracks in the soft mud warn you to" + CHR$(13) + CHR$(10) + "be careful."
  1707. DATA -1, 2006, 2012, 2015
  1708. DATA -1,-1,-1,-1
  1709.  
  1710. DATA 2012
  1711. DATA "The Howling Woods"
  1712. DATA "A chilling wind whispers through the trees, whipping up dead" + CHR$(13) + CHR$(10) +  "leaves before you.  Fresh wolftracks in the soft mud warn you to" + CHR$(13) + CHR$(10) + "be careful."
  1713. DATA -1, 2013, -1, 2011
  1714. DATA -1,-1,-1,-1
  1715.  
  1716. DATA 2013
  1717. DATA "The Howling Woods"
  1718. DATA "A chilling wind whispers through the trees, whipping up dead" + CHR$(13) + CHR$(10) +  "leaves before you.  Fresh wolftracks in the soft mud warn you to" + CHR$(13) + CHR$(10) + "be careful."
  1719. DATA 2012, 2014, -1, 2010
  1720. DATA -1,-1,-1,-1
  1721.  
  1722. DATA 2014
  1723. DATA "The Howling Woods"
  1724. DATA "A chilling wind whispers through the trees, whipping up dead" + CHR$(13) + CHR$(10) +  "leaves before you.  Fresh wolftracks in the soft mud warn you to" + CHR$(13) + CHR$(10) + "be careful."
  1725. DATA 2013, -1, -1, 2009
  1726. DATA -1,-1,-1,-1
  1727.  
  1728. DATA 2015
  1729. DATA "The Howling Woods"
  1730. DATA "A chilling wind whispers through the trees, whipping up dead" + CHR$(13) + CHR$(10) +  "leaves before you.  Fresh wolftracks in the soft mud warn you to" + CHR$(13) + CHR$(10) + "be careful."
  1731. DATA -1, 2006, 2011, -1
  1732. DATA -1,-1,-1,-1
  1733.  
  1734. DATA 2016
  1735. DATA "The Howling Woods"
  1736. DATA "A chilling wind whispers through the trees, whipping up dead" + CHR$(13) + CHR$(10) +  "leaves before you.  Fresh wolftracks in the soft mud warn you to" + CHR$(13) + CHR$(10) + "be careful.  You can barely make out a small trail in the woods here."
  1737. DATA 2015, 2004, 2017, 2002
  1738. DATA -1,-1,-1,-1
  1739.  
  1740. DATA 2017
  1741. DATA "The Howling Woods"
  1742. DATA "A chilling wind whispers through the trees, whipping up dead" + CHR$(13) + CHR$(10) +  "leaves before you.  Fresh wolftracks in the soft mud warn you to" + CHR$(13) + CHR$(10) + "be careful.  You can barely make out a small trail in the woods here."
  1743. DATA 2018, 2009, 2013, 2006
  1744. DATA -1,-1,-1,-1
  1745.  
  1746. DATA 2018
  1747. DATA "The Howling Woods"
  1748. DATA "A chilling wind whispers through the trees, whipping up dead" + CHR$(13) + CHR$(10) +  "leaves before you.  Fresh wolftracks in the soft mud warn you to" + CHR$(13) + CHR$(10) + "be careful.  You can barely make out a small trail in the woods here."
  1749. DATA 2019, 2013, 2013, 2011
  1750. DATA -1,-1,-1,-1
  1751.  
  1752. DATA 2019
  1753. DATA "The Howling Woods"
  1754. DATA "A chilling wind whispers through the trees, whipping up dead" + CHR$(13) + CHR$(10) + "leaves before you.  Fresh wolftracks in the soft mud warn you to" + CHR$(13) + CHR$(10) + "be careful.  You can barely make out a small trail in the woods here."
  1755. DATA 2012, 2010, 2020, 2004
  1756. DATA -1,-1,-1,-1
  1757.  
  1758. DATA 2020
  1759. DATA "The Howling Cave"
  1760. DATA "You are in a forgotten cave deep in the woods.  The stench of" + CHR$(13) + CHR$(10) + "rotting meat is overpowering.  A small fire deeper into the cave" + CHR$(13) + CHR$(10) + "lights your way."
  1761. DATA -1, -1, 2021, 2019
  1762. DATA -1,-1,-1,-1
  1763.  
  1764. DATA 2021
  1765. DATA "The Wolves' Den"
  1766. DATA "Piles of rotten meat lie strewn everywhere.  There are huge" + CHR$(13) + CHR$(10) + "clawmarks on the walls.  The fire, however, is well-kept and" + CHR$(13) + CHR$(10) + "burns brightly"
  1767. DATA -1, -1, -1, 2020
  1768. DATA -1,-1,-1,-1
  1769.  
  1770. DATA 3001
  1771. DATA "On the Mansion Lawn"
  1772. DATA "This is the well-trimmed lawn in front of the mansion.  A handmaiden" + CHR$(13) + CHR$(10) + "is here.  She winks at you and laughs."
  1773. DATA 1012, -1, -1, -1
  1774. DATA -1,-1,-1,-1
  1775.  
  1776. DATA 4001
  1777. DATA "A Path in the Woods"
  1778. DATA "A canopy of trees covers this path that winds thru the woods." + CHR$(13) + CHR$(10) + "The village is northwest of here.  The path leads south."
  1779. DATA 2008, -1, 4002, -1
  1780. DATA -1,-1,-1,-1
  1781.  
  1782. DATA 4002
  1783. DATA "A Path in the Woods"
  1784. DATA "A canopy of trees covers this path that winds thru the woods." + CHR$(13) + CHR$(10) + "The village is northwest of here.  The path leads south."
  1785. DATA -1, 4003, -1, 4001
  1786. DATA -1,-1,-1,-1
  1787.  
  1788. DATA 4003
  1789. DATA "A Path in the Woods"
  1790. DATA "A canopy of trees covers this path that winds thru the woods." + CHR$(13) + CHR$(10) + "A slight breeze chills you."
  1791. DATA 4002, -1, 4004, -1
  1792. DATA -1,-1,-1,-1
  1793.  
  1794. DATA 4004
  1795. DATA "A Path in the Woods"
  1796. DATA "A canopy of trees covers this path that winds thru the woods." + CHR$(13) + CHR$(10) + "A slight breeze chills you."
  1797. DATA -1, 4005, -1, 4003
  1798. DATA -1,-1,-1,-1
  1799.  
  1800. DATA 4005
  1801. DATA "A Path in the Woods"
  1802. DATA "A canopy of trees covers this path that winds thru the woods." + CHR$(13) + CHR$(10) + "A riverbank is to the east."
  1803. DATA 4004, 4008, 4006, -1
  1804. DATA -1,-1,-1,-1
  1805.  
  1806. DATA 4006
  1807. DATA "The River of Blood"
  1808. DATA "Chunks of flesh float down the rapids of this raging stream." + CHR$(13) + CHR$(10) + "The iron-colored riverbeds are shrouded in steam.  Crows circle" + CHR$(13) + CHR$(10) + "overhead, eyeing you carefully.  Written in blood on the ground" + CHR$(13) + CHR$(10) + "is an odd phrase.  :COO:"
  1809. DATA -1, -1, 4007, 4005
  1810. DATA -1, -1, -1, -1
  1811.  
  1812. DATA 4007
  1813. DATA ":coo:"
  1814. DATA "You jump headlong into the river!  Its then you realize" + CHR$(13) + CHR$(10) + "That you can't swim!  As you slowly drown in blood, you last" + CHR$(13) + CHR$(10) + "thoughts are about wondering when they will let you into the"  + CHR$(13) + CHR$(10) + "green room."
  1815. DATA -1, -1, -1, -1
  1816. DATA -1, -1, -1, -1
  1817.  
  1818. DATA 4008
  1819. DATA "A Path in the Woods"
  1820. DATA "A canopy of trees covers this path that winds thru the woods." + CHR$(13) + CHR$(10) + "A slight breeze chills you."
  1821. DATA 4005, 4009, -1, -1
  1822. DATA -1,-1,-1,-1
  1823.  
  1824. DATA 4009
  1825. DATA "A Path in the Woods"
  1826. DATA "A canopy of trees covers this path that winds thru the woods." + CHR$(13) + CHR$(10) + "A slight breeze chills you."
  1827. DATA 4008, 4010, -1, -1
  1828. DATA -1,-1,-1,-1
  1829.  
  1830. DATA 4010
  1831. DATA "A Path in the Woods"
  1832. DATA "A canopy of trees covers this path that winds thru the woods." + CHR$(13) + CHR$(10) + "A slight breeze chills you."
  1833. DATA 4009, 4011, -1, -1
  1834. DATA -1,-1,-1,-1
  1835.  
  1836. DATA 4011
  1837. DATA "A Path in the Woods"
  1838. DATA "A canopy of trees covers this path that winds thru the woods." + CHR$(13) + CHR$(10) + "A slight breeze chills you."
  1839. DATA 4010, 4012, -1, -1
  1840. DATA -1,-1,-1,-1
  1841.  
  1842. DATA 4012
  1843. DATA "The Misty Woods"
  1844. DATA "A think fog rolls through these woods, making it difficult to see" + CHR$(13) + CHR$(10) + "very far.  The bark on all the trees has been shredded by something." + CHR$(13) + CHR$(10) + "It is very quiet.  You think you can make out a path in the woods here."  
  1845. DATA 4011, 4016, 4014, 4013
  1846. DATA -1,-1,-1,-1
  1847.  
  1848. DATA 4013
  1849. DATA "The Misty Woods"
  1850. DATA "A think fog rolls through these woods, making it difficult to see" + CHR$(13) + CHR$(10) + "very far.  The bark on all the trees has been shredded by something." + CHR$(13) + CHR$(10) + "It is very quiet."  
  1851. DATA -1, 4015, 4012, -1
  1852. DATA -1,-1,-1,-1
  1853.  
  1854. DATA 4014
  1855. DATA "The Misty Woods"
  1856. DATA "A think fog rolls through these woods, making it difficult to see" + CHR$(13) + CHR$(10) + "very far.  The bark on all the trees has been shredded by something." + CHR$(13) + CHR$(10) + "It is very quiet."  
  1857. DATA -1, 4017, -1, 4012
  1858. DATA -1,-1,-1,-1
  1859.  
  1860. DATA 4015
  1861. DATA "The Misty Woods"
  1862. DATA "A think fog rolls through these woods, making it difficult to see" + CHR$(13) + CHR$(10) + "very far.  The bark on all the trees has been shredded by something." + CHR$(13) + CHR$(10) + "It is very quiet."  
  1863. DATA 4013, 4023, 4016, 4021
  1864. DATA -1,-1,-1,-1
  1865.  
  1866. DATA 4016
  1867. DATA "The Misty Woods"
  1868. DATA "A think fog rolls through these woods, making it difficult to see" + CHR$(13) + CHR$(10) + "very far.  The bark on all the trees has been shredded by something." + CHR$(13) + CHR$(10) + "It is very quiet."  
  1869. DATA 4012, 4019, 4017, 4015
  1870. DATA -1,-1,-1,-1
  1871.  
  1872. DATA 4017
  1873. DATA "The Misty Woods"
  1874. DATA "A think fog rolls through these woods, making it difficult to see" + CHR$(13) + CHR$(10) + "very far.  The bark on all the trees has been shredded by something." + CHR$(13) + CHR$(10) + "It is very quiet."  
  1875. DATA 4014, 4018, -1, 4016
  1876. DATA -1,-1,-1,-1
  1877.  
  1878. DATA 4018
  1879. DATA "The Misty Woods"
  1880. DATA "A think fog rolls through these woods, making it difficult to see" + CHR$(13) + CHR$(10) + "very far.  The bark on all the trees has been shredded by something." + CHR$(13) + CHR$(10) + "It is very quiet."  
  1881. DATA 4017, -1, 5001, 4019
  1882. DATA -1,-1,-1,-1
  1883.  
  1884. DATA 4019
  1885. DATA "The Misty Woods"
  1886. DATA "A think fog rolls through these woods, making it difficult to see" + CHR$(13) + CHR$(10) + "very far.  The bark on all the trees has been shredded by something." + CHR$(13) + CHR$(10) + "It is very quiet."  
  1887. DATA 4016, -1, 4018, 4020
  1888. DATA -1,-1,-1,-1
  1889.  
  1890. DATA 4020
  1891. DATA "The Misty Woods"
  1892. DATA "A think fog rolls through these woods, making it difficult to see" + CHR$(13) + CHR$(10) + "very far.  The bark on all the trees has been shredded by something." + CHR$(13) + CHR$(10) + "It is very quiet."  
  1893. DATA 4021, -1, 4020, -1
  1894. DATA -1,-1,-1,-1
  1895.  
  1896. DATA 4021
  1897. DATA "The Misty Woods"
  1898. DATA "A think fog rolls through these woods, making it difficult to see" + CHR$(13) + CHR$(10) + "very far.  The bark on all the trees has been shredded by something." + CHR$(13) + CHR$(10) + "It is very quiet."  
  1899. DATA -1, 4022, 4015, -1
  1900. DATA -1,-1,-1,-1
  1901.  
  1902. DATA 4022
  1903. DATA "The Misty Woods"
  1904. DATA "A think fog rolls through these woods, making it difficult to see" + CHR$(13) + CHR$(10) + "very far.  The bark on all the trees has been shredded by something." + CHR$(13) + CHR$(10) + "It is very quiet."  
  1905. DATA 4021, -1, 4020, -1
  1906. DATA -1,-1,-1,-1
  1907.  
  1908. DATA 5001
  1909. DATA "Entrance to the Burning Village"
  1910. DATA "You have reached the outskirts of a local village.  Smoke" + CHR$(13) + CHR$(10) + "billows from burning buildings.  You see no-one around." + CHR$(13) + CHR$(10) + "The city gate lies ahead."
  1911. DATA -1, 5003, 5002, 4018
  1912. DATA -1, 2, 1, -1
  1913.  
  1914. DATA 5002
  1915. DATA "The Burning Village"
  1916. DATA "What was once a modest village has been turned into an" + CHR$(13) + CHR$(10) + "inferno. You gag on the smoke-filled air.  As you stumble around" + CHR$(13) + CHR$(10) + "this place, you feel you've gained a better sense of understanding" + CHR$(13) + CHR$(10) + "about what it all means."
  1917. DATA -1, 5004, -1, 5001
  1918. DATA -1, 2, -1, 1
  1919.  
  1920. DATA 5003
  1921. DATA "Cutting Through the Bushes"
  1922. DATA "Deciding you cannot pass the gate, you've stumbled into the bushes" + CHR$(13) + CHR$(10) + "To try to find another way around it.  Good thing you brought a" + CHR$(13) + CHR$(10) + "machete!"
  1923. DATA 5001, -1, 5004, -1
  1924. DATA -1,-1,-1,-1
  1925.  
  1926. DATA 5004
  1927. DATA "Cutting Through the Bushes"
  1928. DATA "Deciding you cannot pass the gate, you've stumbled into the bushes" + CHR$(13) + CHR$(10) + "To try to find another way around it.  Good thing you brought a" + CHR$(13) + CHR$(10) + "machete!"
  1929. DATA 5002, -1, -1, 5003
  1930. DATA -1,-1,-1,-1
  1931.  
  1932. DATA 4023
  1933. DATA "The Misty Woods"
  1934. DATA "A think fog rolls through these woods, making it difficult to see" + CHR$(13) + CHR$(10) + "very far.  The bark on all the trees has been shredded by something." + CHR$(13) + CHR$(10) + "It is very quiet."  
  1935. DATA 4015, 4024, 4016, 4021
  1936. DATA -1,-1,-1,-1
  1937.  
  1938. DATA 4024
  1939. DATA "The Misty Woods"
  1940. DATA "A think fog rolls through these woods, making it difficult to see" + CHR$(13) + CHR$(10) + "very far.  The bark on all the trees has been shredded by something." + CHR$(13) + CHR$(10) + "It is very quiet."  
  1941. DATA 4019, 4022, 4025, 4016
  1942. DATA -1,-1,-1,-1
  1943.  
  1944. DATA 4025
  1945. DATA "The Misty Woods"
  1946. DATA "A think fog rolls through these woods, making it difficult to see" + CHR$(13) + CHR$(10) + "very far.  The bark on all the trees has been shredded by something." + CHR$(13) + CHR$(10) + "It is very quiet."  
  1947. DATA 4012, 4026, 4022, 4020
  1948. DATA -1,-1,-1,-1
  1949.  
  1950. DATA 4026
  1951. DATA "The Misty Woods"
  1952. DATA "A think fog rolls through these woods, making it difficult to see" + CHR$(13) + CHR$(10) + "very far.  The bark on all the trees has been shredded by something." + CHR$(13) + CHR$(10) + "It is very quiet."  
  1953. DATA 4020, 4020, 4020, 4027
  1954. DATA -1,-1,-1,-1
  1955.  
  1956. DATA 4027
  1957. DATA "The Misty Woods"
  1958. DATA "A think fog rolls through these woods, making it difficult to see" + CHR$(13) + CHR$(10) + "very far.  The bark on all the trees has been shredded by something." + CHR$(13) + CHR$(10) + "It is very quiet."  
  1959. DATA 4021, 4028, 4014, 4012
  1960. DATA -1,-1,-1,-1
  1961.  
  1962. DATA 4028
  1963. DATA "The Great Road"
  1964. DATA "You are on the road leading from the castle to the northern villages." + CHR$(13) + CHR$(10) + "Merchants, peasants, and other travellers pass by on occassion." + CHR$(13) + CHR$(10) + "To the west is the sea and to the east are the Alterac mountains."
  1965. DATA 4027, 4029, -1, -1
  1966. DATA -1,-1,-1,-1
  1967.  
  1968. DATA 4029
  1969. DATA "The Great Road"
  1970. DATA "You are on the road leading from the castle to the northern villages." + CHR$(13) + CHR$(10) + "Merchants, peasants, and other travellers pass by on occassion." + CHR$(13) + CHR$(10) + "To the west is the sea and to the east are the Alterac mountains."
  1971. DATA 4028, 4030, -1, -1
  1972. DATA -1,-1,-1,-1
  1973.  
  1974. DATA 4030
  1975. DATA "The Great Road"
  1976. DATA "You are on the road leading from the castle to the northern villages." + CHR$(13) + CHR$(10) + "Merchants, peasants, and other travellers pass by on occassion." + CHR$(13) + CHR$(10) + "To the west is the sea and to the east are the Alterac mountains."
  1977. DATA 4029, 4031, -1, -1
  1978. DATA -1,-1,-1,-1
  1979.  
  1980. DATA 4031
  1981. DATA "The Great Road"
  1982. DATA "You are on the road leading from the castle to the northern villages." + CHR$(13) + CHR$(10) + "Merchants, peasants, and other travellers pass by on occassion." + CHR$(13) + CHR$(10) + "To the west is the sea and to the east are the Alterac mountains."
  1983. DATA 4030, 4032, -1, -1
  1984. DATA -1,-1,-1,-1
  1985.  
  1986. DATA 4032
  1987. DATA "The Great Road"
  1988. DATA "You are on the road leading from the castle to the northern villages." + CHR$(13) + CHR$(10) + "Merchants, peasants, and other travellers pass by on occassion." + CHR$(13) + CHR$(10) + "To the west is the sea and to the east are the Alterac mountains."
  1989. DATA 4031, 4033, -1, -1
  1990. DATA -1,-1,-1,-1
  1991.  
  1992. DATA 4033
  1993. DATA "The Great Road"
  1994. DATA "You are on the road leading from the castle to the northern villages." + CHR$(13) + CHR$(10) + "Merchants, peasants, and other travellers pass by on occassion." + CHR$(13) + CHR$(10) + "To the west is the sea and to the east are the Alterac mountains."
  1995. DATA 4032, 6001, -1, -1
  1996. DATA -1,-1,-1,-1
  1997.  
  1998. DATA 6001
  1999. DATA "The Great Arch"
  2000. DATA "Here stands the archway that opens to the city of Hearthglen.  Guards" + CHR$(13) + CHR$(10) + "watch the crowd that bustles through carefully.  Well, as long as they can" + CHR$(13) + CHR$(10) + "keep their eyes open!"
  2001. DATA 4033, 6002, -1, -1
  2002. DATA -1,-1,-1,-1
  2003.  
  2004. DATA 6002
  2005. DATA "Angel Street"
  2006. DATA "This street is immaculately clean.  There isn't one piece of trash anywhere." + CHR$(13) + CHR$(10) + "The castle is south."
  2007. DATA 6001, 6018, 6003, 6017
  2008. DATA -1,-1,-1,-1
  2009.  
  2010. DATA 6003
  2011. DATA "Angel Street"
  2012. DATA "This street is immaculately clean.  There isn't one piece of trash anywhere."
  2013. DATA -1, -1, 6004, 6002
  2014. DATA -1,-1,-1,-1
  2015.  
  2016. DATA 6004
  2017. DATA "Angel Street"
  2018. DATA "This street is immaculately clean.  There isn't one piece of trash anywhere."
  2019. DATA -1, 6005, -1, 6003
  2020. DATA -1,-1,-1,-1
  2021.  
  2022. DATA 6005
  2023. DATA "Scholar Way"
  2024. DATA "This is the university district of the city.  Students brush past\r\nyou, late for class again."
  2025. DATA 6004, 6006, -1, -1
  2026. DATA -1,-1,-1,-1
  2027.  
  2028. DATA 6006
  2029. DATA "Scholar Way"
  2030. DATA "This is the university district of the city.  Students brush past\r\nyou, late for class again.  The castle is west."
  2031. DATA 6005, 6007, 6022, 6020
  2032. DATA -1,-1,-1,-1
  2033.  
  2034. DATA 6007
  2035. DATA "Scholar Way"
  2036. DATA "This is the university district of the city.  Students brush past\r\nyou, late for class again."
  2037. DATA 6006, 6008, -1, -1
  2038. DATA -1,-1,-1,-1
  2039.  
  2040. DATA 6008
  2041. DATA "Villager Street"
  2042. DATA "The business sector lies in this district of Hearthglen.  The offices\r\nof many of the largest companies that do business in the kingdom\r\nare found here.  The eastern half is more blue-collar while the western\r\nhalf is more white collar."
  2043. DATA 6007, -1, -1, 6009
  2044. DATA -1,-1,-1,-1
  2045.  
  2046. DATA 6009
  2047. DATA "Villager Street"
  2048. DATA "The business sector lies in this district of Hearthglen.  The offices\r\nof many of the largest companies that do business in the kingdom\r\nare found here.  The eastern half is more blue-collar while the western\r\nhalf is more white collar."
  2049. DATA -1, -1, 6008, 6010
  2050. DATA -1,-1,-1,-1
  2051.  
  2052. DATA 6010
  2053. DATA "Villager Street"
  2054. DATA "The business sector lies in this district of Hearthglen.  The offices\r\nof many of the largest companies that do business in the kingdom\r\nare found here.  The eastern half is more blue-collar while the western\r\nhalf is more white collar.  The castle lies north."
  2055. DATA 6021, -1, 6009, 6011
  2056. DATA -1,-1,-1,-1
  2057.  
  2058. DATA 6011
  2059. DATA "Villager Street"
  2060. DATA "The business sector lies in this district of Hearthglen.  The offices\r\nof many of the largest companies that do business in the kingdom\r\nare found here.  The eastern half is more blue-collar while the western\r\nhalf is more white collar."
  2061. DATA -1, -1, 6010, 6012
  2062. DATA -1,-1,-1,-1
  2063.  
  2064. DATA 6012
  2065. DATA "Villager Street"
  2066. DATA "The business sector lies in this district of Hearthglen.  The offices\r\nof many of the largest companies that do business in the kingdom\r\nare found here.  The eastern half is more blue-collar while the western\r\nhalf is more white collar."
  2067. DATA 6013, -1, 6011, -1
  2068. DATA -1,-1,-1,-1
  2069.  
  2070. DATA 6013
  2071. DATA "Mime Avenue"
  2072. DATA "This is the entertainment district of the city.  Pubs line the street" + CHR$(13) + CHR$(10) + "on both sides.  This section of town is closest to the beach as well."
  2073. DATA 6014, 6012, -1, -1
  2074. DATA -1,-1,-1,-1
  2075.  
  2076. DATA 6014
  2077. DATA "Mime Avenue"
  2078. DATA "This is the entertainment district of the city.  Pubs line the street" + CHR$(13) + CHR$(10) + "on both sides.  This section of town is closest to the beach as well."
  2079. DATA 6015, 6013, 6019, 6023
  2080. DATA -1,-1,-1,-1
  2081.  
  2082. DATA 6015
  2083. DATA "Mime Avenue"
  2084. DATA "This is the entertainment district of the city.  Pubs line the street" + CHR$(13) + CHR$(10) + "on both sides.  This section of town is closest to the beach as well."
  2085. DATA 6016, 6014, -1, -1
  2086. DATA -1,-1,-1,-1
  2087.  
  2088. DATA 6016
  2089. DATA "Angel Street"
  2090. DATA "This street is immaculately clean.  There isn't one piece of trash anywhere."
  2091. DATA -1, 6015, 6017, -1
  2092. DATA -1,-1,-1,-1
  2093.  
  2094. DATA 6017
  2095. DATA "Angel Street"
  2096. DATA "This street is immaculately clean.  There isn't one piece of trash anywhere."
  2097. DATA -1, -1, 6002, 6016
  2098. DATA -1,-1,-1,-1
  2099.  
  2100. DATA 6018
  2101. DATA "Innocent Quarter"
  2102. DATA "The banners of the kingdom wave on flagpoles on either" + CHR$(13) + CHR$(10) + "side of the road here.  The banners are scarlett with gold\r\ntrimming.  Emblazoned on the banner is a script L.\r\nThe castle looms before you.  It is easily the largest\r\nstructure in the city and has several spires."
  2103. DATA 6002, 7001, -1, -1
  2104. DATA -1,-1,-1,-1
  2105.  
  2106. DATA 6019
  2107. DATA "Hanged Quarter"
  2108. DATA "The banners of the kingdom wave on flagpoles on either" + CHR$(13) + CHR$(10) + "side of the road here.  The banners are scarlett with gold\r\ntrimming.  Emblazoned on the banner is a script L.\r\nThe castle looms before you.  It is easily the largest\r\nstructure in the city and has several spires."
  2109. DATA -1, -1, 7001, 6014
  2110. DATA -1,-1,-1,-1
  2111.  
  2112. DATA 6020
  2113. DATA "Suspect Quarter"
  2114. DATA "The banners of the kingdom wave on flagpoles on either" + CHR$(13) + CHR$(10) + "side of the road here.  The banners are scarlett with gold\r\ntrimming.  Emblazoned on the banner is a script L.\r\nThe castle looms before you.  It is easily the largest\r\nstructure in the city and has several spires."
  2115. DATA -1, -1, 6006, 7001
  2116. DATA -1,-1,-1,-1
  2117.  
  2118. DATA 6021
  2119. DATA "Guilty Quarter"
  2120. DATA "The banners of the kingdom wave on flagpoles on either" + CHR$(13) + CHR$(10) + "side of the road here.  The banners are scarlett with gold\r\ntrimming.  Emblazoned on the banner is a script L.\r\nThe castle looms before you.  It is easily the largest\r\nstructure in the city and has several spires."
  2121. DATA 7001, 6010, -1, -1
  2122. DATA -1,-1,-1,-1
  2123.  
  2124. DATA 6022
  2125. DATA "The Eastern Arch"
  2126. DATA "Here stands the archway that opens to the city of Hearthglen.  Guards" + CHR$(13) + CHR$(10) + "watch the crowd that bustles through carefully.  Well, as long as they can" + CHR$(13) + CHR$(10) + "keep their eyes open!"
  2127. DATA -1, -1, 6031, 6006
  2128. DATA -1,-1,-1,-1
  2129.  
  2130. DATA 6023
  2131. DATA "The Western Arch"
  2132. DATA "Here stands the archway that opens to the city of Hearthglen.  Guards" + CHR$(13) + CHR$(10) + "watch the crowd that bustles through carefully.  Well, as long as they can" + CHR$(13) + CHR$(10) + "keep their eyes open!"
  2133. DATA -1, -1, 6014, 6024
  2134. DATA -1,-1,-1,-1
  2135.  
  2136. DATA 6024
  2137. DATA "The Hinting Strand"
  2138. DATA "These are the western beaches of the kingdom.  The sea lies" + CHR$(13) + CHR$(10) + "beyond and stretches out to the horizon."
  2139. DATA 6025, 6028, 6023, -1
  2140. DATA -1,-1,-1,-1
  2141.  
  2142. DATA 6025
  2143. DATA "The Hinting Strand"
  2144. DATA "These are the western beaches of the kingdom.  The sea lies" + CHR$(13) + CHR$(10) + "beyond and stretches out to the horizon."
  2145. DATA 6026, 6024, -1, -1
  2146. DATA -1,-1,-1,-1
  2147.  
  2148. DATA 6026
  2149. DATA "The Hinting Strand"
  2150. DATA "These are the western beaches of the kingdom.  The sea lies" + CHR$(13) + CHR$(10) + "beyond and stretches out to the horizon."
  2151. DATA 6027, 6025, -1, -1
  2152. DATA -1,-1,-1,-1
  2153.  
  2154. DATA 6027
  2155. DATA "The Hinting Strand"
  2156. DATA "These are the western beaches of the kingdom.  The sea lies" + CHR$(13) + CHR$(10) + "beyond and stretches out to the horizon."
  2157. DATA -1, 6026, -1, -1
  2158. DATA -1,-1,-1,-1
  2159.  
  2160. DATA 6028
  2161. DATA "The Hinting Strand"
  2162. DATA "These are the western beaches of the kingdom.  The sea lies" + CHR$(13) + CHR$(10) + "beyond and stretches out to the horizon."
  2163. DATA 6024, -1, 6029, -1
  2164. DATA -1,-1,-1,-1
  2165.  
  2166. DATA 6029
  2167. DATA "The Hinting Strand"
  2168. DATA "These are the western beaches of the kingdom.  The sea lies" + CHR$(13) + CHR$(10) + "beyond and stretches out to the horizon."
  2169. DATA -1, 6030, -1, 6028
  2170. DATA -1,-1,-1,-1
  2171.  
  2172. DATA 6030
  2173. DATA "The Hinting Strand"
  2174. DATA "These are the western beaches of the kingdom.  The sea lies" + CHR$(13) + CHR$(10) + "beyond and stretches out to the horizon."
  2175. DATA 6029, -1, -1, -1
  2176. DATA -1,-1,-1,-1
  2177.  
  2178. DATA 6031
  2179. DATA "The Kingdom Road"
  2180. DATA "Flint, gravel, and other various stones pave this highway\r\nleading from the city of Hearthglen east towards the Alterac\r\nmountains.  Inscribed milestones greet you at fixed intervals."
  2181. DATA -1, -1, 6032, 6022
  2182. DATA -1,-1,-1,-1
  2183.  
  2184. DATA 6032
  2185. DATA "The Kingdom Road"
  2186. DATA "Flint, gravel, and other various stones pave this highway\r\nleading from the city of Hearthglen east towards the Alterac\r\nmountains.  Inscribed milestones greet you at fixed intervals."
  2187. DATA -1, -1, 6033, 6031
  2188. DATA -1,-1,-1,-1
  2189.  
  2190. DATA 6033
  2191. DATA "The Kingdom Road"
  2192. DATA "Flint, gravel, and other various stones pave this highway\r\nleading from the city of Hearthglen east towards the Alterac\r\nmountains.  Inscribed milestones greet you at fixed intervals."
  2193. DATA -1, -1, 6034, 6032
  2194. DATA -1,-1,-1,-1
  2195.  
  2196. DATA 6034
  2197. DATA "The Kingdom Road"
  2198. DATA "Flint, gravel, and other various stones pave this highway\r\nleading from the city of Hearthglen east towards the Alterac\r\nmountains.  Inscribed milestones greet you at fixed intervals."
  2199. DATA 6035, -1, -1, 6033
  2200. DATA -1,-1,-1,-1
  2201.  
  2202. DATA 6035
  2203. DATA "The Alterac Mountain Pass"
  2204. DATA "The kingdom road snakes thru a pass here in the Alterac mountains.\r\nIt grows colder and a few flakes of snow brush against your face.\r\nTowering above you is a huge mountain range.  You can sometimes\r\nget a glimpse of the fortress built near the top."
  2205. DATA -1, 6034, 6036, -1
  2206. DATA -1,-1,-1,-1
  2207.  
  2208. DATA 6036
  2209. DATA "The Alterac Mountain Pass"
  2210. DATA "The kingdom road snakes thru a pass here in the Alterac mountains.\r\nIt grows colder and a few flakes of snow brush against your face.\r\nTowering above you is a huge mountain range.  You can sometimes\r\nget a glimpse of the fortress built near the top."
  2211. DATA -1, 6037, -1, 6035
  2212. DATA -1,-1,-1,-1
  2213.  
  2214. DATA 6037
  2215. DATA "The Alterac Mountain Pass"
  2216. DATA "The kingdom road snakes thru a pass here in the Alterac mountains.\r\nIt grows colder and a few flakes of snow brush against your face.\r\nTowering above you is a huge mountain range.  You can sometimes\r\nget a glimpse of the fortress built near the top."
  2217. DATA 6036, 6038, -1, -1
  2218. DATA -1,-1,-1,-1
  2219.  
  2220. DATA 6038
  2221. DATA "The Alterac Mountain Pass"
  2222. DATA "The kingdom road snakes thru a pass here in the Alterac mountains.\r\nIt grows colder and a few flakes of snow brush against your face.\r\nTowering above you is a huge mountain range.  You can sometimes\r\nget a glimpse of the fortress built near the top."
  2223. DATA 6037, -1, 6039, -1
  2224. DATA -1,-1,-1,-1
  2225.  
  2226. DATA 6039
  2227. DATA "The Alterac Mountain Pass"
  2228. DATA "The kingdom road snakes thru a pass here in the Alterac mountains.\r\nIt grows colder and a few flakes of snow brush against your face.\r\nTowering above you is a huge mountain range.  You can sometimes\r\nget a glimpse of the fortress built near the top."
  2229. DATA 6040, -1, -1, 6038
  2230. DATA -1,-1,-1,-1
  2231.  
  2232. DATA 6040
  2233. DATA "The Kingdom Road"
  2234. DATA "Flint, gravel, and other various stones pave this highway\r\nleading from the city of Hearthglen east towards the Alterac\r\nmountains.  Inscribed milestones greet you at fixed intervals."
  2235. DATA -1, 6039, 6041, -1
  2236. DATA -1,-1,-1,-1
  2237.  
  2238. DATA 6041
  2239. DATA "The Kingdom Road"
  2240. DATA "Flint, gravel, and other various stones pave this highway\r\nleading from the city of Hearthglen east towards the Alterac\r\nmountains.  Inscribed milestones greet you at fixed intervals."
  2241. DATA -1, -1, 6042, 6040
  2242. DATA -1,-1,-1,-1
  2243.  
  2244. DATA 6042
  2245. DATA "The Kingdom Road"
  2246. DATA "Flint, gravel, and other various stones pave this highway\r\nleading from the city of Hearthglen east towards the Alterac\r\nmountains.  Inscribed milestones greet you at fixed intervals.\r\nIncreasing amounts of sand begin to blot out the road."
  2247. DATA -1, -1, 8001, 6041
  2248. DATA -1,-1,-1,-1
  2249.  
  2250. DATA 7001
  2251. DATA "Entrance to the Castle"
  2252. DATA "This is where the leadership of the city make their home.  Guards\r\nin gleaming suits of platemail watch your every move, their swords ready.\r\nThe main hall leads further into the castle."
  2253. DATA 6018, 7002, 6020, 6019
  2254. DATA -1,-1,-1,-1
  2255.  
  2256. DATA 7002
  2257. DATA "The Main Hall"
  2258. DATA "You walk down the main hall of the castle.  Immense portraits of\r\nlate kings and queens adorn the walls.  Guards in gleaming suits of\r\nplatemail stand at attention nearby, watching for trouble."
  2259. DATA 7001, 7003, -1, -1
  2260. DATA -1,-1,-1,-1
  2261.  
  2262. DATA 7003
  2263. DATA "The Waiting Room"
  2264. DATA "Exquisite furniture from far away lands adorn this room.  Here, nobles\r\nand robed seerers who visit the royal family can rest while they wait\r\nfor an audience."
  2265. DATA 7002, -1, -1, -1
  2266. DATA -1,-1,-1,-1
  2267.  
  2268. DATA 8001
  2269. DATA "The Stormwind Desert"
  2270. DATA "Oceans of sand dumped by a recent sandstorm have blotted\r\nout most of the road here.  If you go Any further, it is\r\nunlikely you will see any road at all."
  2271. DATA 8002, 8006, 8004, 6042
  2272. DATA -1,-1,-1,-1
  2273.  
  2274. DATA 8002
  2275. DATA "The Stormwind Desert"
  2276. DATA "Nothing but miles and miles of sand in all directions."
  2277. DATA 8005, 8001, 8003, 8001
  2278. DATA -1, -1, -1, -1
  2279.  
  2280. DATA 8003
  2281. DATA "The Stormwind Desert"
  2282. DATA "Nothing but miles and miles of sand in all directions."
  2283. DATA 8009, 8004, 8007, 8002
  2284. DATA -1, -1, -1, -1
  2285.  
  2286. DATA 8004
  2287. DATA "The Stormwind Desert"
  2288. DATA "Nothing but miles and miles of sand in all directions."
  2289. DATA 8003, 8005, 8008, 8001
  2290. DATA -1, -1, -1, -1
  2291.  
  2292. DATA 8005
  2293. DATA "The Stormwind Desert"
  2294. DATA "Nothing but miles and miles of sand in all directions."
  2295. DATA 8004, 8008, 8009, 8006
  2296. DATA -1, -1, -1, -1
  2297.  
  2298. DATA 8006
  2299. DATA "The Stormwind Desert"
  2300. DATA "Nothing but miles and miles of sand in all directions."
  2301. DATA 8001, 8006, 8005, 8004
  2302. DATA -1, -1, -1, -1
  2303.  
  2304. DATA 8007
  2305. DATA "The Stormwind Desert"
  2306. DATA "Nothing but miles and miles of sand in all directions."
  2307. DATA 8002, 8008, 8005, 8003
  2308. DATA -1, -1, -1, -1
  2309.  
  2310. DATA 8008
  2311. DATA "The Stormwind Desert"
  2312. DATA "Nothing but miles and miles of sand in all directions."
  2313. DATA 8007, 8009, 8002, 8004
  2314. DATA -1, -1, -1, -1
  2315.  
  2316. DATA 8009
  2317. DATA "The Stormwind Desert"
  2318. DATA "Nothing but miles and miles of sand in all directions."
  2319. DATA 8008, 8003, 8009, 8005
  2320. DATA -1, -1, -1, -1
  2321.  
  2322.  
  2323.  
  2324.  
  2325.  
  2326.  
  2327.  
  2328. DATA 10001
  2329. DATA "potion"
  2330. DATA "Gorf's Wicked Ale (glowing)"
  2331. DATA "ale"
  2332. DATA "A bottle of Gorf's Wicked Ale glows with a bright golden light here."
  2333. DATA 1018
  2334.  
  2335. DATA 10002
  2336. DATA "key"
  2337. DATA "the key to the village"
  2338. DATA "key"
  2339. DATA "The key to the village rests at your feet."
  2340. DATA -1
  2341.  
  2342. DATA 10003
  2343. DATA "meat"
  2344. DATA "rotten meat"
  2345. DATA "meat"
  2346. DATA "A pile of rotten meat that used to be a villager lies here."
  2347. DATA 2021
  2348.  
  2349. DATA 10004
  2350. DATA "seerer"
  2351. DATA "Robes of the Seerer"
  2352. DATA "seerer"
  2353. DATA "A pile of cloth made for a red alert lies here."
  2354. DATA 6030
« Last Edit: August 14, 2020, 08:12:31 pm by frobozz »

FellippeHeitor

  • Guest
Re: Semi-complete game: werewolf (mafia) for solo play
« Reply #1 on: August 14, 2020, 08:21:46 pm »
Welcome to the forum, @frobozz.

Offline frobozz

  • Newbie
  • Posts: 2
    • View Profile
Re: Semi-complete game: werewolf (mafia) for solo play
« Reply #2 on: August 14, 2020, 09:32:11 pm »
Welcome to the forum, @frobozz.

Thanks.

I wonder what would be the fix to using arrays in TYPE definitions?  Any ideas?

Offline bplus

  • Global Moderator
  • Forum Resident
  • Posts: 8053
  • b = b + ...
    • View Profile
Re: Semi-complete game: werewolf (mafia) for solo play
« Reply #3 on: August 14, 2020, 09:42:38 pm »
Thanks.

I wonder what would be the fix to using arrays in TYPE definitions?  Any ideas?

I have used strings to hold the array info and use Split to break the string into an array.
https://www.qb64.org/forum/index.php?topic=1607.0

I've done this with graphics storing x, y data and with strings from whole files, works great for work around.