-   
- '// for game purposes - we can display seed if we want to use it agian 
- seed = stripTime 
-   
-   
- '// ASCII MAP GEN TRY I 
- '// BASED ON SMcNeil of QB64 idea 
-   
- '// FAKE BOOLEAN :-) 
-   
- '// MAPSIZE 
-   
- '// TILES USED 
- Const-  MIN_INNS  = 5 '        MIN INNS IN THE WORLD. HIGHER FOR EASIER GAME
 
- Const-  MIN_RUINS  = 20 '      RUINS ARE SPECIAL - 20 IS ABOVE AVERAGE, HIGHER FOR MONTE HALL.
 
- Const-  PLAYER_AVATAR  = " "
 
- Const-  INITIAL_HP  = 20 '     STARTING HP
 
- Const-  INITIAL_DEF  = 0 '     STARTING DEFENSE
 
- Const-  INITIAL_ATK  = 5 '     STARTING ATTACK
 
- Const-  MAX_MOBS  = 112 '      TOTAL MOBS IN THE DATABASE - ADJ AS ADDED OR DELETED
 
-   
- '// MAX RANDOM SPELLS LIMITS 
- Const-  INVISI  = 3 '          STARTING # OF INVISIBILITY
 
- Const-  CHARM  = 4 '           STARTING # OF CHARM
 
- Const-  STUN  = 6 '            STARTING # OF STUN SPELLS
 
-   
-   
- '// GAME INFO 
-     total_ruins  As Integer ' once ruins are explored they are deleted from map.
-   
-   
-   
-   
-   
-   
-   
- '$include: 'playerRec.bi' 
-   
-   
-   
- '// DATA FILES 
- '$include: 'xpgain.bi' 
- '$include: 'weapons.bi' 
- '$include: 'armorlist.bi' 
- '$include: 'moblist.bi' 
- '$include: 'masterslist.bi' 
-   
-   
-   
-   
- INIT_GAME 
-   
-   
-   
- '// initial walking ticker for random encounters 
- RESET_RANDOM_ENCOUNTER_TICK 
- X = (player.qx * 10 - 10) + player.sx 
- Y = (player.qy * 10 - 10) + player.sy 
-   
-   
-     If-  RANDOM_TICK  <= 0 Then-  COMBAT 
 
-   
-     DRAW_MAP 
-     '// get player input 
-   
-   
-         '// is player moving 
-             '// THESE KEYS MEANS THE PLAYER IS MOVING. I AM USING THE FINAL FANTASY MOVE CRITERIA 
-             '// TO DETERMINE A RANDOM ENCOUNTER (FOLLWO THE BEST!) 
-             '// countdown is based on terrain 
-             '// TREES = -6 
-             '// PATHS = -5 
-             '// ALL ELSE -2 
-   
-   
-             '// incase of error save old pos 
-             oqx = player.qx: oqy = player.qy 
-             osx = player.sx: osy = player.sy 
-                 Case "w"- : player.sy  =-  player.sy  - 1
 
-                     If-  player.sy  < 1 Then-  player.sy  = 10- : player.qy  =-  player.qy  - 1
 
-                     If-  player.qy  < 1 Then-  player.sy  = 1- : player.qy  =-  oqy 
 
-   
-                 Case "s"- : player.sy  =-  player.sy  + 1
 
-                     If-  player.sy  > 10 Then-  player.sy  = 1- : player.qy  =-  player.qy  + 1
 
-                     If-  player.qy  > 10 Then-  player.sy  = 1- : player.qy  =-  oqy 
 
-   
-                 Case "a"- : player.sx  =-  player.sx  - 1
 
-                     If-  player.sx  < 1 Then-  player.sx  = 10- : player.qx  =-  player.qx  - 1
 
-                     If-  player.qx  < 1 Then-  player.sx  = 1- : player.qx  =-  oqx 
 
-   
-                 Case "d"- : player.sx  =-  player.sx  + 1
 
-                     If-  player.sx  > 10 Then-  player.sx  = 1- : player.qx  =-  player.qx  + 1
 
-                     If-  player.qx  > 10 Then-  player.sx  = 1- : player.qx  =-  oqx 
 
-   
-   
-             '// to figure terrain to determain tick, where the hell are we :-) 
-             X = (player.qx * 10 - 10) + player.sx 
-             Y = (player.qy * 10 - 10) + player.sy 
-             If-  area (- X ,-  Y ) = 1 Then-  RANDOM_TICK  =-  RANDOM_TICK  - 6 'trees
 
-             If-  area (- X ,-  Y ) = 2 Then-  RANDOM_TICK  =-  RANDOM_TICK  - 5 'paths
 
-   
-   
-   
-   
-   
-   
-   
- '$include: 'utils.bi' 
- '$include: 'combat.bi' 
-   
-   
-     RESET_RANDOM_ENCOUNTER_TICK 
-     '// FIND MOB TO MATCH PLAYERS LEVEL 
-     'LEVEL,NAME,ATK,XP,HP,GOLD,WEAPON,DEATHTXT 
-   
-   
-     '// FIND A RANDOM MOB AT PLAYERS LEVEL 
-   
-     mob (- I )- .mName  = _Trim$(- mob (- I )- .mName ) ' for some reason this is not working...
-   
-     Print "You encountered a "- ; mob (- I )- .mName 
 
-     '// start combat 
-         Print "Your hp: "- ; player.hp 
 
-   
-   
-                 startFight mob(I).atk 
-                 If-  FightResults.mobCrit  =-  TRUE  Then Print _Trim$(- mob (- I )- .mName )- ;  " does a powerful move on you!!"
 
-                 Print _Trim$(- mob (- I )- .mName )- ;  " did "- ; FightResults.mobDamage;  " damage with its "- ; mob (- I )- .weaponStr 
 
-                 If-  FightResults.playerCrit  =-  TRUE  Then Print "You do critical damage!!"
 
-                 Print "You did "- ; FightResults.playerDamage;  " points of damage with your "- ; weapon (- player.weaponId )- .gearName 
 
-                 player.hp = player.hp - FightResults.mobDamage 
-                 mob(I).hp = mob(I).hp - FightResults.playerDamage 
-   
-   
-   
-   
-     '// TODO: PUT THIS IN A SUB - AS IT WILL BE CALLED FROM OTHER LOCATIONS 
-         Print "You were knocked out by "- ;  _Trim$(- mob (- I )- .mName )- ;  " and left for dead"
 
-         Print "You lost all your gold!!"- : player.money  = 0
 
-         Print "and lost 10% of your experience!"- : player.xp  =-  player.xp  - Int(- player.xp  * .1)
 
-         Print "after some time, you were able to recover about half your health"- : player.hp  = Int(- player.hpMax  * .5)
 
-         Print "You gained "- ; mob (- I )- .xp;  "xp! "- : player.xp  =-  player.xp  +-  mob (- I )- .xp 
 
-         Print "It was guarding "- ; mob (- I )- .gold;  "gold pieces"- : player.money  =-  player.money  +-  mob (- I )- .gold 
 
-     P_AUSE 
-   
-     gameover = FALSE 
-     tile(1) = " " 'TREES 
-     tile(2) = " -" 'PLAINS 
-     tile(3) = " º" 'CRUMBLING WALLS (IMPASSABLE) 
-     tile(4) = " M" 'RUINS TO EXPLORE 
-     tile(5) = " " 'INN 
-     tile(99) = " ." 'nothing 
-   
-   
-     '// SETUP DEFAULT PLAYER STUFF 
-     player.pName = "Adventurer" 
-     player.avatar = PLAYER_AVATAR 
-     player.level = 1 
-     player.xp = 0 
-     player.potions = 5 
-   
-   
-     player.qx = r(10): player.qy = r(10) 
-     player.sx = r(10): player.sy = r(10) 
-   
-     player.daysInGame = 0.0 
-     player.hp = INITIAL_HP 
-     player.hpMax = player.hp 
-     player.defense = INITIAL_DEF 
-     player.atk = INITIAL_ATK 
-     player.atkMax = player.atk 
-     player.defMax = player.defense 
-     player.armorBuff = 1 
-     player.weaponBuff = 5 
-   
-     player.charm = r(CHARM) 
-     player.stun = r(STUN) 
-     player.invisi = r(INVISI) 
-   
-     player.armorId = 1 
-     player.weaponId = 1 
-     player.money = 0 
-   
-   
-     For-  I  = 1 To 16- :  Read-  armor (- I )- .level ,-  armor (- I )- .gearName ,-  armor (- I )- .cost ,-  armor (- I )- .buff:  Next
 
-     For-  I  = 1 To 16- :  Read-  weapon (- I )- .level ,-  weapon (- I )- .gearName ,-  weapon (- I )- .cost ,-  weapon (- I )- .buff:  Next
 
-   
-         Read-  mob (- I )- .deathGossip  ' not used anymore
 
-   
-     CREATE_MAP 
-   
-   
-   
-   
-     '// DRAW PLAYER CURRENT QUADRANT AND SECTOR 
-   
-     row = 1: 
-     For-  Y  = (- player.qy  * 10 - 10) + 1 To (- player.qy  * 10)
 
-         col = 1 
-         For-  X  = (- player.qx  * 10 - 10) + 1 To (- player.qx  * 10)
 
-   
-   
-                 'Print "found": End 
-   
-   
-                         I = r(2) 
-   
-   
-   
-             col = col + 1 
-   
-   
-   
-   
-   
-   
-             Case 1- :  Print , _Trim$(- player.pName )- ;  " Level: "- ; player.level  '; " Q: "; player.qx; ","; player.qy; " S: "; player.sx; ","; player.sy
 
-   
-             Case 2- :  Print , "HP: "- ; player.hp;  "/"- ; player.hpMax; _ 
 
-                             " Atk: "- ;player.atk;  "(+"- ;  _Trim$(Str$(- wbuff ))- ;  ")/"- ; player.atkMax; _ 
 
-                             "  Def: "- ; player.defense;  "(+"- ;  _Trim$(Str$(- abuff ))- ;  ") /"- ; player.defMax 
 
-   
-   
-   
-         row = row + 1 
-   
-   
-     '// TODO: MAKE A DECENT MAP GEN, THIS IS JUST RANDOM STUFF 
-     '//       CLOSE TO THE ORIGINAL GAME OF JUST TREES, PATHS AND WALLS. 
-             area(I, J) = 99 
-             If-  k  < .99 Then-  area (- I ,-  J ) = 1 'Trees
 
-             If-  k  < .55 Then-  area (- I ,-  J ) = 2 ' Plains
 
-             If-  k  < .07 Then-  area (- I ,-  J ) = 3 ' WALLS
 
-             '// .011 about 120-140 ish 
-             If-  k  < .011 Then-  area (- I ,-  J ) = 4- : game.total_ruins  =-  game.total_ruins  + 1 'Ruins
 
-             '// .002 less than 30 avg 
-             If-  k  < .002 Then-  area (- I ,-  J ) = 5- : game.total_inns  =-  game.total_inns  + 1 'INN
 
-   
-     '// we need at least 5 inns 
-     If-  game.total_inns  <-  MIN_INNS  Then
 
-         For-  I  = 1 To-  MIN_INNS  --  game.total_inns 
 
-             area(r(10), r(10)) = 5 
-   
-   
-     If-  game.total_ruins  <-  MIN_RUINS  Then
 
-         For-  I  = 1 To-  MIN_RUINS  --  game.total_ruins 
 
-             area(r(10), r(10)) = 4 
-   
-   
- Sub-  RESET_RANDOM_ENCOUNTER_TICK 
 
-     '// restart the random encoutner ticker 
-     '// This only needs to be called at new game, 
-     '// when player leaves an inn. 
-     '// after combat. 
-     '// this will set a ticker that is counted down based on the number of 
-     '// steps the player takes. how mcuh is based on terrain. see movement sub. 
-     '// https://finalfantasy.fandom.com/wiki/Random_encounter 
-     '// this ticker is smaller due to this game size being small 
-     RANDOM_TICK  = Int(Rnd * 30) + 1
-   
-   
-   
- '// USE IN CONJUNCTION WITH RANDOMIZE 
- '// The TIMER function returns the number of seconds past the previous midnite 
- '// This means next day, same seed. 
-   
-     '// strip date 
-   
-     stripTime = d * t 
-