09-20-2023, 01:30 AM
(This post was last modified: 09-20-2023, 01:31 AM by James D Jarvis.)
Added to it with 2 more types of equipment to buy at the armory(with plenty of options), added their effects in game resolution and added a few more monster options. Save and Load game options as well.
Old simple games can still be fun.
Old simple games can still be fun.
Code: (Select All)
'=====================
'Further adventures in THEWOODS-MODIFIED.BAS
'=====================
'A modified version of THEWOODS.BAS by Kurt Kuzba that he
'placed in public domain and encouraged others to build on.
'It's a text adventure game in the classic BBS game style.
'Kurt posted it on the FibdoNet QUIK_BAS Echo back in 1997.
'You can find the original THEWOODS.BAS in the ABC packets.
'Kurt, thanks for the game - If you're still out there,
'Come back to the BASIC scene! You'll love QB64!
'Modified by Dav for QB64-PE 3.8, SEP/2023
'further modifeid by James Jarvis SEP/2023 - added more equipment options and more monsters
Dim Shared q$: q$ = Chr$(34)
Dim Shared PlayerName$, PlayerHits&, PlayerMagic&, PlayerStrength&
Dim Shared PlayerGold&, PlayerWeapon%, PlayerExperience&, PlayerShield%, PlayerArmor%
Dim Shared EnemyName$, EnemyHits&, EnemyMagic&, EnemyStrength&
Dim Shared EnemyGold&, EnemyWeapon%, EnemyExperience&
Dim Shared sprice%(16), aprice%(16), wprice%(16)
Randomize Timer
dh = Int(_DesktopHeight * .80)
Screen _NewImage(dh * 1.25, dh, 32)
BIGFONT Int(_Height / 21)
Width 52, 21
For n = 1 To 12
wprice%(n) = (n + (n - 2) / 2) * 60
sprice%(n) = n * 50
aprice%(n) = n * n * 50
If n > 9 Then
wprice%(n) = wprice%(n) * (n / 3)
sprice%(n) = sprice%(n) * 2
aprice%(n) = aprice%(n) * 3
End If
Next n
'======
Restart:
'======
Cls , _RGB(32, 32, 128) 'background color
Color _RGB(255, 255, 255), _RGB(32, 32, 128) 'Standard Text color
Color _RGB(255, 255, 0)
Print
Print " -= Welcome to THE WOODS =-"
Print
Color _RGB(255, 255, 255)
Print " Terrible beasts are roaming the nearby woods."
Print " People in town live in constant fear of what "
Print " lurks beyond the town gate. Those who decide"
Print " to venture out seldom return. Something must"
Print " be done. Someone must save the town."
Print
Print " You have decided to be the brave hero and to"
Print " eliminate the evil inhabiting the woods. It"
Print " will NOT be easy however. You will face many"
Print " malevolent forces, many dark and evil beasts."
Print
Print " Go into the woods, hunt down the beasts until"
Print " you reach 2,000 experience points to win."
Print
Color _RGB(255, 255, 0)
Print " Load a Saved quest? (YN)? ";
If WaitKey%(" YN") = 2 Then
Print
Input " Your name? ", plyr$
loadgame plyr$
Else
Print
Input " Your name? ", plyr$
If plyr$ > "" Then
PlayerName$ = plyr$
PlayerHits& = 30
PlayerMagic& = 0
PlayerStrength& = 0
PlayerGold& = 100
PlayerWeapon% = 0
PlayerExperience& = 0
End If
End If
menu% = 1 'show full menu
YourStats 'Show you stats at the beginning of the game
'the main game play loop
Do
_Limit 60
If PlayerHits& > 0 Then
Print
If menu% > 0 Then
Color _RGB(255, 255, 255)
Print " You're in the middle of town. What now?"
Print
Print " (W)oods - Enter the woods."
Print " (H)ealer - Heal your wounds."
Print " (A)rmory - Buy/Sell equipment."
Print " (S)tats - See your stats."
Print " (Q)uit - Quit game."
End If
Print
Print " [W/H/A/S/Q/?]";
Select Case WaitKey%(" WHASQ?")
Case 2: Woods
Case 3: Healer
Case 4: Armory
Case 5: YourStats
Case 6: Print: Print
Print " Quit this quest? (YN)? ";
If WaitKey%(" YN") = 2 Then
Print
Print " Save The Game? (YN)? ";
If WaitKey%(" YN") = 2 Then
savegame
End If
Exit Do
End If
Case 7: Print: menu% = 1
End Select
Else
Color _RGB(255, 200, 200)
If PlayerExperience& < 2000 Then
Print
Print " Sorry... You have perished in battle."
For t% = 200 To 150 Step -1: Sound t%, .1: Next
Else
Print
Print " You have defeated all enemies! You WIN!!"
For t% = 100 To 999 Step 10: Sound t%, .03: Next
For t% = 1000 To 500 Step -10: Sound t%, .03: Next
End If
Print " You had"; PlayerExperience&; "points."
Exit Do
End If
Loop
Color _RGB(255, 255, 0)
Print: Print " Would you like to play again (YN)? ";
If WaitKey%(" YN") = 2 Then GoTo Restart
Print: Print " Goodbye, then..."
Sleep 2
System
Sub Armory
Dim price(1 To 8) As Integer
price(1) = 75
price(2) = 200
price(3) = 400
price(4) = 600
price(5) = 900
price(6) = 1500
price(7) = 2500
price(8) = 4000
Do
Cls
Print
Print "---------------------------------------------------"
Print " -==**[ Jake's Weapon Shop ]**==- "
Print "---------------------------------------------------"
Print
Print " Welcome to Jake's. We only sell the finest."
Print " Jake looks you over suspiciously and asks..."
Print " Interested in (W)eapons, (S)hields, or (A)rmor?"
Print
Print " [W/S/A or ENTER to leave] "
Print
Select Case WaitKey%(" WSA" + Chr$(13))
Case 2 'weapons
Print
Print "Ah yes, Weapons..."
Print " "
Print " Do you want to (B)uy or (S)ell?"
Print
Print " [B/S or ENTER to leave] "
Print
Select Case WaitKey%(" SB" + Chr$(13))
Case 2 'selling weapons
money% = PlayerWeapon% * 30
If money% = 0 Then
Color _RGB(255, 255, 0)
Print
Print "---------------------------------------------------"
Print " Sell what? You're not carrying anything!"
Print " Come back when you have something valuable."
Print "---------------------------------------------------"
Color _RGB(255, 255, 255)
Exit Sub
Else
Color _RGB(255, 255, 0)
Print
Print "---------------------------------------------------"
Print " Hmm...I'll give you"; money%; "gold for ";
Print RTrim$(Weapon$(PlayerWeapon%)); "."
Print " Is it a deal (Y/N)? ";
Print "---------------------------------------------------"
Print
Color _RGB(255, 255, 255)
k% = WaitKey%(" YN")
Print
If k% = 2 Then
Color _RGB(255, 255, 0)
Print
Print "---------------------------------------------------"
Print " Great! Here's your money. Now go away."
Print "---------------------------------------------------"
Color _RGB(255, 255, 255)
PlayerGold& = PlayerGold& + money%
PlayerWeapon% = 0
Exit Sub
End If
End If
Case 3 'buying weapons
Print "--------------==**[ PRICES ]**==-----------------"
Print
For t% = 1 To 12: Print Hex$(t%); "->";
Print " "; Left$(Str$(wprice%(t%)) + " ", 6);
Print " "; Weapon$(t%)
Next
Print
Print " You have"; PlayerGold&; "gold. Which one you want (1-C)?"
Print " (Hit ENTER to buy nothing)"
k% = WaitKey%(" 123456789AB" + Chr$(13))
k% = k% - 1
If k% < 13 Then
money% = wprice%(k%)
If money% > PlayerGold& Then
Color _RGB(255, 255, 0)
Print
Print "---------------------------------------------------"
Print " You can't afford "; RTrim$(Weapon$(k%)); "."
Print " Come back when you have more gold."
Print "---------------------------------------------------"
Color _RGB(255, 255, 255)
Exit Sub
Else
Color _RGB(255, 255, 0)
Print
Print "---------------------------------------------------"
Print " Sold! Good luck with "; RTrim$(Weapon$(k%)); "."
Print " Close the door on your way out."
Print "---------------------------------------------------"
Color _RGB(255, 255, 255)
PlayerGold& = PlayerGold& - money%
PlayerWeapon% = k%
Exit Sub
End If
End If
Case 4, 5:
Color _RGB(255, 255, 0)
Print
Print "---------------------------------------------------"
Print " Ok, maybe next time, says Jake with a grumble."
Print "---------------------------------------------------"
Color _RGB(255, 255, 255)
Exit Sub
End Select
Case 3 'shields
Print
Print "Ah yes, Shields..."
Print " "
Print " Do you want to (B)uy or (S)ell?"
Print
Print " [B/S or ENTER to leave] "
Print
Select Case WaitKey%(" SB" + Chr$(13))
Case 2 'selling shields
money% = PlayerShield% * 30
If money% = 0 Then
Color _RGB(255, 255, 0)
Print
Print "---------------------------------------------------"
Print " Sell what? You're not carrying anything!"
Print " Come back when you have something valuable."
Print "---------------------------------------------------"
Color _RGB(255, 255, 255)
Exit Sub
Else
Color _RGB(255, 255, 0)
Print
Print "---------------------------------------------------"
Print " Hmm...I'll give you"; money%; "gold for ";
Print RTrim$(Shield$(PlayerShield%)); "."
Print " Is it a deal (Y/N)? ";
Print "---------------------------------------------------"
Print
Color _RGB(255, 255, 255)
k% = WaitKey%(" YN")
Print
If k% = 2 Then
Color _RGB(255, 255, 0)
Print
Print "---------------------------------------------------"
Print " Great! Here's your money."
Print "---------------------------------------------------"
Color _RGB(255, 255, 255)
PlayerGold& = PlayerGold& + money%
PlayerShield% = 0
Exit Sub
End If
End If
Case 3 'buying shield
Print "--------------==**[ PRICES ]**==-----------------"
Print
For t% = 1 To 12: Print Hex$(t%); "->";
Print " "; Left$(Str$(sprice%(t%)) + " ", 6);
Print " "; Shield$(t%)
Next
Print
Print " You have"; PlayerGold&; "gold. Which one you want (1-C)?"
Print " (Hit ENTER to buy nothing)"
k% = WaitKey%(" 123456789ABC" + Chr$(13))
k% = k% - 1
If k% < 13 Then
money% = sprice%(k%)
If money% > PlayerGold& Then
Color _RGB(255, 255, 0)
Print
Print "---------------------------------------------------"
Print " You can't afford "; RTrim$(Shield$(k%)); "."
Print " Come back when you have more gold."
Print "---------------------------------------------------"
Color _RGB(255, 255, 255)
Exit Sub
Else
Color _RGB(255, 255, 0)
Print
Print "---------------------------------------------------"
Print " Sold! Bear that "; RTrim$(Shield$(k%)); " well."
Print " Close the door on your way out."
Print "---------------------------------------------------"
Color _RGB(255, 255, 255)
PlayerGold& = PlayerGold& - money%
PlayerShield% = k%
Exit Sub
End If
End If
Case 4, 5:
Color _RGB(255, 255, 0)
Print
Print "---------------------------------------------------"
Print " Ok, maybe next time, says Jake with a grumble."
Print "---------------------------------------------------"
Color _RGB(255, 255, 255)
Exit Sub
End Select
Case 4 'armor
Print
Print "Ah yes, Armor..."
Print " "
Print " Do you want to (B)uy or (S)ell?"
Print
Print " [B/S or ENTER to leave] "
Print
Select Case WaitKey%(" SB" + Chr$(13))
Case 2 'selling armor
money% = PlayerArmor% * 30
If money% = 0 Then
Color _RGB(255, 255, 0)
Print
Print "---------------------------------------------------"
Print " Sell what? You're not carrying anything!"
Print " Come back when you have something valuable."
Print "---------------------------------------------------"
Color _RGB(255, 255, 255)
Exit Sub
Else
Color _RGB(255, 255, 0)
Print
Print "---------------------------------------------------"
Print " Hmm...I'll give you"; money%; "gold for ";
Print RTrim$(Armor$(PlayerArmor%)); "."
Print " Is it a deal (Y/N)? ";
Print "---------------------------------------------------"
Print
Color _RGB(255, 255, 255)
k% = WaitKey%(" YN")
Print
If k% = 2 Then
Color _RGB(255, 255, 0)
Print
Print "---------------------------------------------------"
Print " Great! Here's your money."
Print "---------------------------------------------------"
Color _RGB(255, 255, 255)
PlayerGold& = PlayerGold& + money%
PlayerArmor% = 0
Exit Sub
End If
End If
Case 3 'buying armor
Print "--------------==**[ PRICES ]**==-----------------"
Print
For t% = 1 To 12: Print Hex$(t%); "->";
Print " "; Left$(Str$(aprice%(t%)) + " ", 6);
Print " "; Armor$(t%)
Next
Print
Print " You have"; PlayerGold&; "gold. Which one you want (1-C)?"
Print " (Hit ENTER to buy nothing)"
k% = WaitKey%(" 123456789ABC" + Chr$(13))
k% = k% - 1
If k% < 13 Then
money% = aprice%(k%)
If money% > PlayerGold& Then
Color _RGB(255, 255, 0)
Print
Print "---------------------------------------------------"
Print " You can't afford "; RTrim$(Armor$(k%)); "."
Print " Come back when you have more gold."
Print "---------------------------------------------------"
Color _RGB(255, 255, 255)
Exit Sub
Else
Color _RGB(255, 255, 0)
Print
Print "---------------------------------------------------"
Print " Sold! Wear that "; RTrim$(Armor$(k%)); " well."
Print " Close the door on your way out."
Print "---------------------------------------------------"
Color _RGB(255, 255, 255)
PlayerGold& = PlayerGold& - money%
PlayerArmor% = k%
Exit Sub
End If
End If
Case 4, 5:
Color _RGB(255, 255, 0)
Print
Print "---------------------------------------------------"
Print " Ok, maybe next time, says Jake with a grumble."
Print "---------------------------------------------------"
Color _RGB(255, 255, 255)
Exit Sub
End Select
Case Else
Exit Sub
End Select
Loop: End Sub
Sub FightMonster
level% = GetLevel%(PlayerExperience&)
MakeEnemy level%
EnemyName$ = RTrim$(EnemyName$)
Color _RGB(255, 255, 0), _RGB32(200, 0, 0)
Print
Print "---------------------------------------------------"
Print " You came upon a "; RTrim$(EnemyName$); "!"
Print "---------------------------------------------------"
menu% = 1
While (PlayerHits& > 0) And (EnemyHits& > 0)
If menu% > 0 Then
Print
Print " (F)ight! (D)efend! "
Print " (R)un Away (Y)our Stats "
Print " (S)urrender (V)iew Enemy "
End If
Print
Color _RGB(255, 200, 200)
Print PlayerHits&;
Print PlayerName$
Print EnemyHits&;
Print EnemyName$
Print
Color _RGB(255, 255, 255)
Print " [F/D/R/S/Y/V/?] "
level% = GetLevel%(PlayerExperience&)
k% = WaitKey%(" FRSYV?D")
Select Case k%
Case 2, 8
PlayerAtt! = 1 + PlayerWeapon%
PlayerAtt! = PlayerAtt! * (1 + (PlayerStrength& / 10))
PlayerAtt! = 5 + (Rnd * PlayerAtt! * 5 * level%)
PlayerDef! = 1 + (PlayerStrength& / 100) + Int(Rnd * (PlayerShield% / 2)) + PlayerArmor%
If k% = 8 And PlayerShield% > 0 Then
If PlayerStrength& > PlayerShield% Then
PlayerDef! = PlayerDef! + 2 * Int(Rnd * PlayerShield%)
Else
PlayerDef! = PlayerDef! + Int(Rnd * (PlayerShield% / 2))
End If
PlayerAtt! = PlayerAtt! \ 2
End If
EnemyAtt! = EnemyWeapon% * (1 + Rnd * (EnemyStrength& / 5))
EnemyDef! = 1 + (EnemyStrength& / 100)
If (Rnd * 30) - 6 > PlayerArmor% + PlayerShield% Then
Color _RGB(255, 255, 0)
Print
Print "---------------------------------------------------"
Print " You move fast and hit first."
hits% = PlayerAtt! / EnemyDef!
If hits% > EnemyHits& Then hits% = EnemyHits&
EnemyHits& = EnemyHits& - hits%
Print " You hit for"; hits%; "points."
PlayerExperience& = PlayerExperience& + hits%
If EnemyHits& > 0 Then
hits% = EnemyAtt! / PlayerDef!
If hits% > PlayerHits& Then hits% = PlayerHits&
PlayerHits& = PlayerHits& - hits%
Print " You are hit for"; hits%; "points."
End If
Print "---------------------------------------------------"
Else
Color _RGB(255, 255, 0)
Print
Print "---------------------------------------------------"
Print " You move slow and get hit first."
hits% = EnemyAtt! / PlayerDef!
If hits% > PlayerHits& Then hits% = PlayerHits&
PlayerHits& = PlayerHits& - hits%
Print " You are hit for"; hits%; "points."
If PlayerHits& > 0 Then
hits% = PlayerAtt! / EnemyDef!
If hits% > EnemyHits& Then hits% = EnemyHits&
EnemyHits& = EnemyHits& - hits%
PlayerExperience& = PlayerExperience& + hits%
Print " You hit for"; hits%; "points."
End If
Print "---------------------------------------------------"
If InStr(EnemyName$, "Witch") > 0 And Rnd * 10 < 2 Then
Print " The Witch has used Her Evil Eye!"
Print " Your Magic is Weakened!"
Print "---------------------------------------------------"
PlayerMagic& = Int(PlayerMagic& / 2)
End If
If InStr(EnemyName$, "Wizard") > 0 And Rnd * 10 < 2 Then
Print " The Wizard has used Hexed you!"
Print " Your Strength is Weakened!"
Print "---------------------------------------------------"
PlayerStrength& = Int(PlayerStrength& / 2)
End If
If InStr(EnemyName$, "Druid") > 0 And Rnd * 10 < 2 Then
Print " The Druid has Cursed you!"
Print " Your Magic and Strength is Weakened!"
Print "---------------------------------------------------"
PlayerStrength& = Int(PlayerStrength& * .75)
PlayerMagic& = Int(PlayerMagic& * .75)
End If
End If
If k% = 8 And PlayerShield% > 0 And Rnd * 20 < 2 Then 'check for broken shield
If Int(Rnd * 27) > PlayerShield% Then
Print
Print ">>>>>>>>>>>>>>>>>>>>>>>>>+<<<<<<<<<<<<<<<<<<<<<<<<<"
Print " Your "; Shield$(PlayerShield%); " has BROKEN !!"
Print ">>>>>>>>>>>>>>>>>>>>>>>>>+<<<<<<<<<<<<<<<<<<<<<<<<<"
PlayerShield% = 0
End If
End If
If EnemyHits& = 0 Then
Color _RGB(255, 255, 0)
Print
Print "---------------------------------------------------"
Print " You have defeated the "; RTrim$(EnemyName$)
Print "---------------------------------------------------"
PlayerMagic& = PlayerMagic& + EnemyMagic& \ 10
PlayerGold& = PlayerGold& + EnemyGold&
menu% = 1
End If
If PlayerHits& = 0 Then
Color _RGB(255, 255, 0)
Print
Print "---------------------------------------------------"
Print " You were defeated by "; RTrim$(EnemyName$)
Print "---------------------------------------------------"
End If
Case 3
Color _RGB(255, 255, 0)
If Int(Rnd * 12) > PlayerArmor% Then 'yup less armor imporves chance to escape
Print
Print "---------------------------------------------------"
Print " You manage to escape, but it has tired you"
Print " and magic is weakened, and some experience points."
Print "---------------------------------------------------"
'modified the dedcution for running away to be variable with armor and shield weighing player down
PlayerMagic& = Int(PlayerMagic& / Int(2 + Rnd * 8))
PlayerStrength& = PlayerStrength& - Int((2 + Rnd * PlayerArmor%) + Int(Rnd * PlayerShield%))
If PlayerStrength& < 0 Then PlayerStrength& = 0
PlayerExperience& = PlayerExperience& * .9
menu% = 1
Exit Sub
Else
Print
Print "!!! ------------------------------------------- !!!"
Print " You have FAILED TO ESCAPE !"
Print "!!! ------------------------------------------- !!!"
PlayerMagic& = Int(PlayerMagic& / Int(2 + Rnd * 8))
PlayerStrength& = PlayerStrength& - (PlayerArmor% + PlayerShield%)
If PlayerStrength& < 0 Then PlayerStrength& = 0
End If
Color _RGB(255, 255, 255)
Case 4
Color _RGB(255, 255, 0)
Print
Print "---------------------------------------------------"
Print " You give all your gold to "; RTrim$(EnemyName$);
Print " Being broke is better than dying I suppose..."
Print "---------------------------------------------------"
Color _RGB(255, 255, 255)
menu% = 1
PlayerGold& = 0: Exit Sub
Case 5: YourStats
Case 6: EnemyStats
Case 7: menu% = 1
End Select
Wend
End Sub
Function GetLevel% (e&)
Select Case e&
Case Is < 100: level% = 1
Case 101 To 500: level% = 2
Case Else: level% = 3
End Select
GetLevel% = level%
End Function
Sub Healer
Totalhits% = PlayerExperience& \ 10 + 30
ToHeal% = Totalhits% - PlayerHits&
Cls
Color _RGB(255, 200, 200)
Print
Print "---------==**[ HARRY THE HEALER ]**==------------"
Print
Print " Welcome friend. Let me heal your wounds and soul."
If ToHeal% <= 0 Then
Print
Print " Harry looks you over completely and says,"
Print " You don't require healing, friend. Goodbye..."
Else
Print
Print " Each hit point costs 3 gold to heal."
Print " You can afford to heal"; PlayerGold& \ 3; "hit points."
Print " To max out, You need to heal"; RTrim$(Str$(ToHeal%)); "."
Print
Input " How many would you heal? (ENTER for max) ", heal%
If heal% = 0 Then heal% = ToHeal%
If heal% > ToHeal% Then heal% = ToHeal%
If heal% > (PlayerGold& \ 3) Then heal% = PlayerGold& \ 3
PlayerHits& = PlayerHits& + heal%
PlayerGold& = PlayerGold& - (heal% * 3)
Print
Print " I have healed you for"; heal%; "hit points."
Print " Go in peace my son..."
Print
End If
Print "---------------------------------------------------"
Color _RGB(200, 200, 255)
End Sub
Sub MakeEnemy (l%)
ReDim EN(1 To 5) As String
ReDim EP(1 To 5) As String
EP(1) = "Angry "
EP(2) = "Ferocious "
EP(3) = "Snarling "
EP(4) = "Hostile "
EP(5) = "Wicked "
Select Case l%
Case 1
EN(1) = "Squirrel"
EN(2) = "Bunny"
EN(3) = "Hedgehog"
EN(4) = "Gremkin"
EN(5) = "Spider"
Case 2
EN(1) = "Bear"
EN(2) = "Boar"
EN(3) = "Boggart"
EN(4) = "Troll"
EN(5) = "GreenMan"
Case 3
EN(1) = "Demon"
EN(2) = "Dragon"
EN(3) = "Witch"
EN(4) = "Druid"
EN(5) = "Wizard"
End Select
ecl% = Int(1 + Rnd * (l% + 2))
EnemyName$ = EP(Int(1 + Rnd * ecl%)) + EN(Int(1 + Rnd * 5))
EnemyHits& = ((l% * 3 + Rnd * 12) * (1 + Rnd * ecl%))
EnemyMagic& = ((Rnd * 10 + 10) * l%)
EnemyStrength& = ((Rnd * 10 + 10) * l%)
EnemyGold& = ((Rnd * 100 + 100) * (.5 + Rnd * ecl%))
EnemyWeapon% = (Rnd * 2 + Rnd * (ecl% * 2))
EnemyExperience& = ((Rnd * 10 + 10) * ecl%)
End Sub
Sub YourStats ()
Cls
Color _RGB(255, 255, 0)
Print "------------==**[ YOUR STATS ]**==---------------"
Print " Name : "; PlayerName$
Print " Hits :"; PlayerHits&
Print " Magic :"; PlayerMagic&
Print " Strength :"; PlayerStrength&
Print " Gold :"; PlayerGold&
Print " Weapon : "; Weapon$(PlayerWeapon%)
Print " Shield : "; Shield$(PlayerShield%)
Print " Armor : "; Armor$(PlayerArmor%)
Print " Experience :"; PlayerExperience&
Print "---------------------------------------------------"
Color _RGB(255, 255, 255)
End Sub
Sub EnemyStats ()
Cls
Color _RGB(255, 255, 0)
Print "------------==**[ ENEMY STATS ]**==--------------"
Print " Name : "; EnemyName$
Print " Hits :"; EnemyHits&
Print " Magic :"; EnemyMagic&
Print " Strength :"; EnemyStrength&
Print " Gold :"; EnemyGold&
Print " Weapon : "; Weapon$(EnemyWeapon%)
Print " Experience :"; EnemyExperience&
Print "---------------------------------------------------"
Color _RGB(255, 255, 255)
End Sub
Sub UseMagic
Print
Print
Do
Color _RGB(255, 255, 100)
Print
Print "------------==**[ CAST A SPELL ]**==-------------"
Print
Print " (H)ealing Spell (requires 4 magic points)"
Print " (S)trength Spell (requires 9 magic points)"
Print " (Q)uit this menu"
Print
Print " You have"; PlayerMagic&; "magic points."
Print "---------------------------------------------------"
Print
Print " [H/S/Q]"
k% = WaitKey%(" HSQ" + Chr$(13))
Print
Select Case k%
Case 2
If PlayerMagic& < 4 Then
Print "---------------------------------------------------"
Print " You don't have enough magic points for that!"
Print "---------------------------------------------------"
Else
m% = 1 + Rnd * 9
PlayerMagic& = PlayerMagic& - 4
PlayerHits& = PlayerHits& + m%
Print "---------------------------------------------------"
Print " Your spell yields"; m%; "hits."
Print "---------------------------------------------------"
End If
Case 3
If PlayerMagic& < 9 Then
Print "---------------------------------------------------"
Print " You don't have enough magic points for that!"
Print "---------------------------------------------------"
Else
m% = 1 + Rnd * 9
PlayerMagic& = PlayerMagic& - 9
PlayerStrength& = PlayerStrength& + m%
Print "---------------------------------------------------"
Print " Your spell yields"; m%; "strength."
Print "---------------------------------------------------"
End If
Case 4, 5: Color _RGB(255, 255, 255): Exit Sub
End Select
Loop
End Sub
Sub WalkInWoods
Color _RGB(255, 255, 255), _RGB(0, 200, 200)
Select Case (Rnd * 99)
Case 0 To 9
rndgold = Int(Rnd * 15) + 2
PlayerGold& = PlayerGold& + rndgold
Color _RGB(255, 255, 0), _RGB(0, 200, 200)
Print: Print " Lucky you! You found"; rndgold; "pieces of gold!"
Color _RGB(255, 255, 255), _RGB(0, 200, 200)
Case 10 To 19
PlayerMagic& = PlayerMagic& + 1
Color _RGB(100, 255, 100), _RGB(0, 200, 200)
Print: Print " A nice faerie gives you one magic point!"
Color _RGB(255, 255, 255), _RGB(0, 200, 200)
Case 20 To 29: m% = 1 + Rnd * 9
PlayerHits& = PlayerHits& + m%
Color _RGB(100, 200, 255), _RGB(0, 200, 200)
Print: Print " A friendly Elf heals you"; m%; "hit point";
If m% = 1 Then Print "!": Else Print "s!"
Color _RGB(255, 255, 255), _RGB(0, 200, 200)
Case 30 To 89
Print: Print " The path continues before you. Now what?"
Case Else: FightMonster
End Select
End Sub
Function Weapon$ (w%)
Select Case w%
Case 0: Weapon$ = "Your Bare Hands"
Case 1: Weapon$ = "A Cudgel"
Case 2: Weapon$ = "A Quarterstaff"
Case 3: Weapon$ = "A Small Knife"
Case 4: Weapon$ = "A Big Knife"
Case 5: Weapon$ = "A Machete"
Case 6: Weapon$ = "A Shortsword"
Case 7: Weapon$ = "A Rapier"
Case 8: Weapon$ = "A Messer"
Case 8: Weapon$ = "A Longsword"
Case 9: Weapon$ = "A Flammard"
Case 10: Weapon$ = "A Grand-Messer"
Case 11: Weapon$ = "A SwordAxe"
Case 12: Weapon$ = "A GreatSword"
End Select
End Function
Function Shield$ (w%)
Select Case w%
Case 0: Shield$ = "Dumb Luck"
Case 1: Shield$ = "Wicker Buckler"
Case 2: Shield$ = "Wooden Buckler"
Case 3: Shield$ = "Wicker Tower Shield"
Case 4: Shield$ = "Brass Buckler"
Case 5: Shield$ = "Wooden Heater"
Case 6: Shield$ = "Wooden Round Shield"
Case 7: Shield$ = "Brass Heater"
Case 8: Shield$ = "Wooden Round Shield"
Case 9: Shield$ = "Wooden Tower Shield"
Case 10: Shield$ = "Brass Round Shield"
Case 11: Shield$ = "Wooden Kite Shield"
Case 12: Shield$ = "Brass Kite Shield"
End Select
End Function
Function Armor$ (w%)
Select Case w%
Case 0: Armor$ = "Your Bare Skin"
Case 1: Armor$ = "Leather Jerkin"
Case 2: Armor$ = "Padded Aketon"
Case 3: Armor$ = "Studded Leather Cotte"
Case 4: Armor$ = "Brass Scale Hauberk"
Case 5: Armor$ = "Iron Chain Mail"
Case 6: Armor$ = "Double Mail"
Case 7: Armor$ = "Plate & Mail"
Case 8: Armor$ = "Full Plate"
Case 9: Armor$ = "Elfin Mail"
Case 10: Armor$ = "Rune-Scrawled Plate"
Case 11: Armor$ = "Dwarven War Harness"
Case 12: Armor$ = "Golem Plate"
End Select
End Function
Sub Woods
menu% = 1
Do
level% = GetLevel%(PlayerExperience&)
If PlayerExperience& > 2000 Then PlayerHits& = 0
Print
If PlayerHits& = 0 Then Exit Sub
If menu% <> 0 Then
Color _RGB(255, 255, 255), _RGB(0, 200, 200)
Print
Print " You're in the woods, alone. Now what?"
Print
Print " (C)ontinue .....Walk the path."
Print " (T)own .........Go Back to town."
Print " (S)pell.........Cast a Spell."
Print " (Y)our Stats....Show your stats."
Print
End If
menu% = 0
Print " [C/S/T/Y/?] "
k% = WaitKey%(" CTSY?")
Select Case k%
Case 2 'Pressed Continue walking...
Select Case (Rnd * 99)
Case 0 To 9 'found gold
rndgold = Int(Rnd * 15) + 2
PlayerGold& = PlayerGold& + rndgold
Color _RGB(255, 255, 0), _RGB(200, 200, 100)
Print: Print " Lucky you! You found"; rndgold; "pieces of gold!"
Color _RGB(255, 255, 255), _RGB(200, 200, 100)
Case 10 To 19 'faerie magic
PlayerMagic& = PlayerMagic& + 1
Color _RGB(100, 255, 100), _RGB(200, 200, 100)
Print: Print " A nice faerie gives you one magic point!"
Color _RGB(255, 255, 255), _RGB(200, 200, 100)
Case 20 To 29 'elf heals you
m% = 1 + Rnd * 9
PlayerHits& = PlayerHits& + m%
Color _RGB(100, 200, 255), _RGB(200, 200, 100)
Print: Print " A friendly Elf heals you"; m%; "hit point";
If m% = 1 Then Print "!": Else Print "s!"
Color _RGB(255, 255, 255), _RGB(200, 200, 100)
Case 30 To 89 'nothing, you just continue
Print: Print " The path continues before you. Now what?"
Case Else 'Monster fight!
FightMonster: menu% = 1
End Select
Case 3: Exit Sub 'back to town
Case 4: UseMagic: menu% = 1 'you use your magic
Case 5: YourStats 'show your stats
Case 6: menu% = 1 'Pressed ? for help
End Select
Loop
End Sub
Function WaitKey% (keys$)
Do
_Limit 60
k% = InStr(keys$, UCase$(InKey$))
Loop While k% < 2
WaitKey% = k%
End Function
Sub BIGFONT (size)
'loads a custom size CP437 font (like QB64's built-in one)'
'You can make/use any size now.
A$ = ""
A$ = A$ + "haIgm]0MLEMMXkS^ST\\T]lHiaboe<Nl8c71HYa3f0VPiWa9H07n5a_0bn:K"
A$ = A$ + ";#FB8;c773hBD8T42E_#C:=QBC39PSQB=DB2UhdhVBB^9=_D2EQ#Ala?JFmi"
A$ = A$ + "ejeGKNiYTV4\UNkOWcmL791Y0Iefg<NdmNWiLfWmIoO_?WkeP10H6`NP0HS["
A$ = A$ + "KMGj5l9Nf7lH0HC;3of5MAGb9ef>>V6V60Vfa[_^=_m>j[Y]NOC7PDY`?kKc"
A$ = A$ + "gd0IQB1o20VfnaO?eFkH7m=nh8TP=]8ljY]e^_e]DhRj<;0CoG1`5>lfj\S`"
A$ = A$ + "IOn5Z6o]G6oLbK3oRZONcW6QoL`[Gfffn0gBQ5]P_=NmC3#5__^kMcMlg=[o"
A$ = A$ + "a=RPjY`[?W]ga]dWICVEPonZafW]W>fNWObWOGk3P[h7POg7[_Nga07oM<8f"
A$ = A$ + "f[2agZnF0=g`?kjkmmOT[]nel;PVZJ]hg0?OKcLadaGiKoLOB06[_P\Y8lOJ"
A$ = A$ + "#5Pl2kCZm?FO04TU^4o[1Bn:5m=VLhOH8jj9mj4UF4Te<4D9R7[U6eP\fS#H"
A$ = A$ + "5]c]X6G?2l1mUORGl9Rl3CcgPP3Yf?27leNXQi017VViP9PXlI5<D`Bg[8lC"
A$ = A$ + "8OFXkk2MW7jMNL?lKIT21l_VF:3>F2D;LOV8TRaP9n:<aIA^f=aF7iJaK2<#"
A$ = A$ + "L8<Ak3Q9<_mJcKe[TDPTc\936fA:ngRlXaf?Q:5<^GQ:NaoU>Jo437Vj6iV1"
A$ = A$ + "CjiCm;DJYL^oDO^mEPnIARTN`G4_b`GW:h^aS?8:nE5\4h>P72nB`S0?6lT`"
A$ = A$ + "G3n6`g4n^`g3nA`;PJd_>l_2S2oK`APa=OZPk;hn3NXP7>h;7l41OUP36l\1"
A$ = A$ + "OW\;=kJbN7IOTLOjLkMY;HY=]dSMY[OYM\d>cGAnIU?G1X#55Z[`\:<W2c[`"
A$ = A$ + "R:\\2]DHU5FCQ^;\W23Fh^;L?5^_2On2?FQW\`cDh05Nf2o]5n7JN==_fV?["
A$ = A$ + "V_^VgLcKYiK0]l#_nl<n]?Ho`G1N64oNF7nmJ`?5no0oBhG?1lkY#lk_a3o6"
A$ = A$ + "2a_i_dUXhG8SOIW2lKS>lKXb`_G\iCeQOMfleChgho?6o#SoJSo:SoBSoRSo"
A$ = A$ + "2SoS7o7=nc=ngKl_mh7LloZao6SOPaojSo<SodSglAKnX;mXckXcmXciXchX"
A$ = A$ + "eNDcA6o8SMX7j#Ol3]n3Uke>UGKi_jGkEOZGmAOe?i[^cGM7_b?iEnn_bGOT"
A$ = A$ + "GITGNTonAN^An_?bgOT_k87LTobANbANdA^oAn8SLWSL7S\kA^eAfn8KJT[I"
A$ = A$ + "T;OT;KT;LTe?bJNYGnUn7NYGlUnj_dOi;md_dG1if?hKUTeoQnbPBTY#kYE1"
A$ = A$ + "ESFZ[1V>D;D7jiJVX]gjQI1YQI3=0c1b0c5J4V7<OH1`2Aig5SB]=QF<c1;5"
A$ = A$ + "b3;3:0=3;7>6hHQS3>NX5h4#keW4\2XEX=X8\BX4Lb`ZPE3W2LZ`Y1[1>Mhm"
A$ = A$ + "0W1JUo<Qc2>KhLPc5F7LN`jQg;lnPc7f0L1`52G4\Ahm3G<L9`U2G6Li`70J"
A$ = A$ + "7^2h:Q[2^JhJP?8L]`e1M0K2f<Zke9\5H[`fP^P[7^1XKHk#?#_#O`=2m3k0"
A$ = A$ + "60f9LC`=3g2L[`^P?4\KhfPK7ejf3B0Z2o4TZbZZNJe<mJ[K6c\RjWEjIg`L"
A$ = A$ + "b<g6WglG`2GdRGBCIc]dl;[#c;oH>fSkhKi4>aCJ5]fFaEFjTGeZ?UCmdFcY"
A$ = A$ + "oN>SeNVWeIO>Wkj>_eoNOOWo6^P;lRfhkoR_T;mb^l?#kGaENEGmel1_f[[S"
A$ = A$ + "=]i`>gbFgFGGo=dmfkYgn^anga0klV^iKiFge7Jggf]O7kiCoI^ooX?kWk1n"
A$ = A$ + "CN`?oO:l5nR?lGjAfknnb?jSmWmWohko9PWj_h[lEQ?n7N`kjKO_oa2;k?4N"
A$ = A$ + "n?a?i5o8X?Fh_6nX3m=N8h?h>oHoXWn73gmo=hgcSeBVBdGon_Ub1Ll68O[5"
A$ = A$ + "Tn_7d>d?4niViJ>Ec5J^NcmJN6coD5c\REDAgEL?ElHEllElc2VE`E7\]P?E"
A$ = A$ + "`S5lM2NmD#ZIUJUYf#Z#lmNBMoYNfDoZ:?V:_^:k_bQZlaZliZlWFi_\Z:ZJ"
A$ = A$ + "VEeFEQE][ZfKE?GEoZZWGe[Yj[^jk^j7_j3Fm;<]:VfLWfI=]]<]kJJ?nd6N"
A$ = A$ + "JSECfJFG=K[Vk_VmGcgYV3=mY=mU>me>m?hdgedo\Co_Jj_N]cZfFZm\Z=\f"
A$ = A$ + "k\f7_fOH]7Y^IFg:[KMe]Ujj_^1[K_emm[k`cX^I\RILYcHgch1VaGM63?SO"
A$ = A$ + "c<Wi<?^I^^I^YINGcLOc<JVobjWKm]Eo6Zoj[ocDoG]nG]naVe\Ve9>[e?[^"
A$ = A$ + "aggm\NlIm2YQdK8MgYO`d?NjXd_n\[JfIWmJWm5>knVmGHf_D3;ZQef`0=lH"
A$ = A$ + "=llcYZidfLfdL^WilhcIh<EUIeIj9c3TIhi2cmHVkE>g?nL?hLoI=>k6GISG"
A$ = A$ + "ISkZamfhcghAVga=_;MNM?_?cl>hlnGVoLWoI=o]=oM=om=oGL1YF`:F#k;h"
A$ = A$ + ">G`3_P3\PGL1S^`U^`CNQGj2kKQ?h2?`2OQ5ncGDM;J5;jbGdNFdm^Xm]XO`"
A$ = A$ + "RNi5mcGlBFlZGLhR_g5oT;nK]hGLao;;ng\TY]Ti]TSI9WjBf`B^^U<`B^[U"
A$ = A$ + "lIGbC]TXUlB;iWeDE=U]YEfdjKjjJjVJjNJjQKj0=ml=m?W=Ef5UmmTmbcfG"
A$ = A$ + "fk=k3Wm0IOi\obLc<g9VKSij;g3TKOiNjLOWL3WkeGj3^\Y]\WJIO[Um3Gfo"
A$ = A$ + "DQZ:\T2_W2KZ`]GHO5>DceeljK^_VOPV?HcodUGeb?^U_nUOmXESBXnd[Vjh"
A$ = A$ + "#k:E3WhCHPCJ=?IeYPog]m4EEi;_VW<X2lDh92X_^Bj[ObZ[bLTelT6jk;V>"
A$ = A$ + "Gj2iBW[Ti;?fmH>San[CML_a;D:hPP69H#F<>]JAkB#YRUX6W;Mn<i<I:F:4"
A$ = A$ + "SnK\n27KHc#AAQELPa6nXk=<H`#fYLe^n6`m^1dBf2A[G#Yd5Cg#YLIbW9OY"
A$ = A$ + "PB5cT;OYR=T?MAC^<iBSOOHXIX`8l_]4B7>jiDAk7M_EdNH#fSL8jkTO1oNj"
A$ = A$ + ";TQ;U7N:S3=:8\:BXJY6bD4afRU\Dn:;U?3RfHog;1N4mYQ31NH82=nLNH"
A$ = A$ + "i917o06WJF4V`l=8<b`O#Xb_;A_aFc]WA<Yo4DE#``8TQ1REY9BH966lk4`a"
A$ = A$ + "oU0WhGalR1AJY5K4h#<Td1jE4b4=f`AdTPR9S>1I#]<f`S=L8bUdHR8h<5h3"
A$ = A$ + "bA`_QaW8QHPCW8T5;H2?KIhPa_EAkHloe2#1J28P9_ID^1J39lFc:9PTQV_9"
A$ = A$ + "GJS`>`nT9O#FTA49SBE[mGO`:>0gIJn6Bd]:>02OLn^ZHniYkgOQDAH8?Rj5"
A$ = A$ + ":CTWZ96o5ZH0=7CWWT2CgPRg4KP`678laZf]SS:EZl3>76[D]B;AXVVA]<5E"
A$ = A$ + "i_CcT>O2^:Q^Af[6[_8ETQc=RVg2LIiHBc#Whi]H9=8[2oV85RAd;jPIdHT?"
A$ = A$ + "08RWSo0\^1Y32\6<2UdjARBPTIJVRb7\43ZG]KFDnXWCH`QYiJE>IV0E;>"
A$ = A$ + "?6g1#<RUc65`g2bQBRi;QOG63nQd^[4IE4f55ZoQ\E4=FMAR#29HBcND2U^d"
A$ = A$ + "Z>jYkPdRDKPT0J=]E:eCc1O;<KFj<e6BXbT\o>IM6S5M>jMDLG<S:7OSWBPP"
A$ = A$ + "AT1IN<\:R`W>_Wn2B4EmGNfa2<j7a#5=a\cUD>n:ISV]W^:\kXNLj6eS2STN"
A$ = A$ + "IJYR3PDOmXWMhIPa62iHb<=58I3\SXL[P1H[AcJ13NTMSC5478iE#U1Hj#A<"
A$ = A$ + "n?XEbZ[Kn[ZBUHa\<iiojK=P>R>7\:LT=6QII9IATTSNiHeIWiFM`9LQdi8?"
A$ = A$ + "n3:V6#lgLYYc7[?V^;dZVNcXkRUZTdnS^g9BnEI1;<A:O39PFndZfN4ImQNQ"
A$ = A$ + ">M>#imIEZL^eRMXXd5BNn#NU_<K4KgZ1BVSXcNB\hX:NgHkcN6i;_O2nQDn<"
A$ = A$ + "2GQ\7CmP]dUXSNSIkD=J8o[i#NdXXZ6>oCRCaflcD<1NYc9oGZ]5WnU__\jI"
A$ = A$ + "]o4n>L\IA782:[mY5On>oMFJM5]K=OQbYH_ZXMKl6=TFmfVVD?bTGlXPLYf9"
A$ = A$ + "n;iA3=OdG4KcTVMXlMUTgX6HeK3KcT=b#n^B]1TdaVKR]M?XHknd=ZlUBCDi"
A$ = A$ + ";VVD`:MXl<AfWn3Qd\?EbD>2GIn>nZAlHoF[SX4:6HEndNBK\o1[1MQVCc2;"
A$ = A$ + "UV2VBXgReMNTHCS3[^=0]6KJ<5T]H`gdF9OSST9IbJLa<iC`KYiADTcU^SA`"
A$ = A$ + "TC?OK5`L;EOK>;4TVG9U:EB=3aF84KaR^WXB:aN8RBjg8fhKQ?#SX8O6BJn8"
A$ = A$ + "o3SJd`Z9HlPTNB45H6K3chT=J#R6#WXY]DE;la>A^[U8l\j7Nm=fnOa<fHiR"
A$ = A$ + "B#6\MFdK2b6[gTGUA4Ga5EI4a6ThQ;:JBRMS\S4YabDN\Bj;=f\XaO0d9N;4"
A$ = A$ + "M8W#6BCB_ZWBEGf<4B]6UT28M:RbAh:Gk]AaI:nm5`n:`f;6f5nV;WDVlAR3"
A$ = A$ + "NbL4=DTiHN#>7=T\dMJDJ15U`OJ0AO[dPe>\85hcN4j]8fiI_M6<ObJe7iaF"
A$ = A$ + "?[LOahCLc[3ChB[YSWF<Mc9Y:_Ao4Rm9:bH[GND3`9[6;kh5gQhgWdS9]HB["
A$ = A$ + "EQ<>OU8kR8^2ma2eaZ;dZf6JeI3mdWbT8ZKNV9J?5C_lRUD^P6?HTed53FR4"
A$ = A$ + "bfNBPO=h`_dDjCil`[j`4bZSS7D`941W8n#I;ihT<UBQ#A4H<911KjD\IK"
A$ = A$ + "CK:9N8aCb^CUY62#^mA2M?h`D_`8B6RW8#IbD^\fR3h=6C:aHC<=fBf]TJMR"
A$ = A$ + "aGU`nE3fLUbiTB9J]>oHhaad[n64?;RgLl<2HE#eMg<:Zo#a]AJ_\HYXMaVA"
A$ = A$ + "1a_5gVZI=l<R2>g^Q4S2BhiAabh3Bb]=<1EAG\G9R?e575ORE0>QAV:Xjccf"
A$ = A$ + "HHlTb`f#IC;I?c6QKaJ;b=n[bUcR6;h4S_f5OLBLXlQ_LJNjHM#EP8GV68_#"
A$ = A$ + "<b;ncXh]TT\h`oY\2RU]7TcF9>[?j<B6_431DNRlDRR2T869A<D4afBR7;dc"
A$ = A$ + "b#6eJOjLH2PfL7UiShS:<>h?:<;>=f4bXB=<XXWi<7]BX5Hi1:3?a^6RJ43W"
A$ = A$ + "LLEVHYWnBCnf?c;XCJ9]fRZ]DK0Haf3Hh7I=M69fU[`3ola>ENOiZmH[DS`l"
A$ = A$ + "8TC=0S0=Ym>52B6BYe^[Zd2AbI_413IFRVVb<5MA53[6WBHUa3>C4:ncYi3i"
A$ = A$ + "V2:5CSZ<_0N?J5IDHD^#0UA_TX>Z;9OXFF21=MaB6YiXR6KHbDUIXS<?cXff"
A$ = A$ + "77GXHLa38KZ^DF9RZ?\[GR5gFW1f^LT]L5Te6KAWVLj_TG][>2<UcEE\Hj"
A$ = A$ + "_6D[Z4A;bJIhPER8V7ZIPH7NGL5afbeL]U8UBcaYVF\QAmk`dhOTi9EAKZjK"
A$ = A$ + "66kE>ObnJJ19]3YM^2?NAm9[KWc6]emS5SY59fG^_QTJU8];CPCSTT]BX?BF"
A$ = A$ + "3ULRGM\NClhFTmALJ6>e3[?RQU8HLh#TVhg4\kEVe1JnCYfK]>4iQ;A\_#d?"
A$ = A$ + "=S?9RWAlY7WQNIIVKmac\A_<`AjDT4CCTV76?k;;ggdiLa\C#B#<>Ll3`DIb"
A$ = A$ + ">:ZNF^NB9[NR<fAdXAEJPnT#6Flh:FcBW\FYNnbdBL4WlLHIbAR^SlfV=VdO"
A$ = A$ + "jM`PXIJbSm1`AgEGC;m;^X6IR=ZV?faJ6_8]LJCf8am>9A<Y=`ITJa7;m[TU"
A$ = A$ + "#cic`N>XTdEc2`KJLZIbK3Jb6U:[OZ\=eOTee]Omb47XNfUZF\;AaLQN29L8"
A$ = A$ + "REflmWbend_6JnE1[\LoU86\HR`MPb6?f:5Vgg#Al<65Z?blHn0Ua4V3LSCB"
A$ = A$ + "mUER_ec[eETGL4L>d1I7o18?_I#Z4EK;nkS26d<:2G:7A1DfL4?LHRhfAeB["
A$ = A$ + "6=m>CAKVZ<?C2NTC8=RmF8QZGWUhV`Vd<dZhTfYgUF[^#;R27ak36DLPe7Y?"
A$ = A$ + "L8V[kS;aaaTAXHR7NEaEeTlBO`GFNnaEFVm98c3Ej;D[4AXjfSWCTbXjFb>?"
A$ = A$ + "#L8=ViQ3;RaQ6#b3gjj\XA;RoC6PQZ8\R?];hSHQ[HJ??bJF<FYEE1O8[c:["
A$ = A$ + "KM2>T6[T?M6>GjLJlnD1YUZ:8n9UdMdBOd774Th9Pn;kd\<O7=hiiTZZ_Fi8"
A$ = A$ + "5SHC6\gBbN;ijQfhBaeKZVh<>Yn;EKR3HHh8NTYEfj`B]A2YiP]F\D6_B<8D"
A$ = A$ + "09LMFhj1a>VYBMCZ58;9enSPYd?OiVWV<ole9G`5M:Y^H=naTHS8Y5YKnbQY"
A$ = A$ + "iJ\JG1;m=;o#S1K]iXk53iQ<PEWW\CeBekTNYN9C79NJR\4C;9e[O_enceca"
A$ = A$ + "Snb6X^;CCe#8\MW4L5;S?^j#R81ijcZg53WBU9K9E<V]1H5]2MhQEb:Z<m"
A$ = A$ + "g<>In<>INENgYoIS^VC=f[_FOiUVBOiIVJOiClE2ObILfG5m?KV3YSdj7B9\"
A$ = A$ + "g^LDP6AW;S_bNIY8NTJKcJNT]P8>aa#m_an1anE?Go]d>Okne2WRHVnT`O^c"
A$ = A$ + "6hKRol:JW\1QSmXJIkB#3K=I=kV#]o\nDBh?ggHD\G\HiS6lSYA[<#9=fV#^"
A$ = A$ + "d9L`RTL=9FTTnSmOaNeC;?cBCF`YLR4Qc=>VPJDH<bilIi7OQJG=?7m8;gTV"
A$ = A$ + "5bRc\9Ai>0Yn4D]7TeERFK8^4:Bm9Xf?DIS1;_`e]Em<Ba065:EffEdIWAKe"
A$ = A$ + "O^4kXVE_EB;S8n[A577W09SI[kOSN[=Z6eA1M1B]l6M=SlFMDYD5U_N0NBMU"
A$ = A$ + "Bk]N0l2M;QX7<XG<KYfP^^M9[oNJGmF\aSJ3kSeoL:OAnaDP`RigC^[?QPh;"
A$ = A$ + "bQPiXk=:Y?`j2C4;NC4o>^Rb^J:cI=8eK?:d?PDFF:bFfN]Z5Jl:oWbeg;PZ"
A$ = A$ + "L6SG1RgB^ZD5IG\82RiHUG<``i1aag>Z4mb`\f197IGC\Uk_ZHan:;<A_WUL"
A$ = A$ + "f0\cSX9^Q:LB[jJD9[M65YGndELP89V8MmhYO5W3bJBI;[U5o]:;BlflDg]N"
A$ = A$ + "]IUml#[L]hdBnShH#FdBP`751^89f0cXHl]K`_2ai;[Ff5ejH7ib8P;CU7?P"
A$ = A$ + "SOn1\[iFVBaFL9cCQjRFAa6X6ZSlfK9_MGOI3Y0BKn0:VMS\f3lRBhT1JWU1"
A$ = A$ + "ZG\a9b09XR<Z4C9EaP#=7\bT3TEN<^NU4UYQ9\>[5;i4:M[NW_0[_P<SWbJg"
A$ = A$ + "]1N=e>N_egLBF\TPd5W_aE3obbMBCV\\U#QH^SEWhL3]<DfhEl]LlX8J;U?N"
A$ = A$ + "5hh8I:KLUUWTLEDGi[PSo`kVcCjj08NFMI8`[LHT\D0Lm5dUTT3<F]gVbIST"
A$ = A$ + "PCC9bd=^^[dND:CJ]f[N[89]MU4lVR:C:R:7::ER\3cD;FJ8NLf?kGQg3:]j"
A$ = A$ + "_Nef=M\RC^Ea[<9K8fJdDUeRL[fWTDH2359Y?c?N\\ikT;]DKW<^Z[Z4U\"
A$ = A$ + "QFoW4AWcUf^f`8\>Fk^gJb[mKA=F4[]<oZ0[aU`NldjXKmEIAj:Ld8JMjR[n"
A$ = A$ + "G9N_4`^Z<abGdNhk0AlbHAeOG67>XAIa]UJmiA;HhVOb[bG#IA7hZjGDLL23"
A$ = A$ + "bdNdn1Ao[c2NkNhSUQ\kF`4i>8b>YcI\[Q0Q\bb0akm#IEK8`OTMCeabOmUL"
A$ = A$ + "`<A=\88FPRR`:Ic#RfDQl6;D#eb[=[GE2Uh#dXBY<=E97aD3eK]ZfJ5L>b^M"
A$ = A$ + "d`=`B_CI5:J`I:S\<V\J5ZT#i5]##F?Mjgba`G6HB7S9<4I;g^1?6;o]J<:J"
A$ = A$ + "cHJRSCXHJNZ6YbFoUhm?jT>J1JTDU?:B0RCf8h9OXFCVjIRcMEYL8cObZQT]"
A$ = A$ + "DBC1[9In#iWPG<iXFoIRNE<ShGAc\B8HF_:AARi;ISiPaDZnlG\=NgL9Re=f"
A$ = A$ + "VRHQ;bFcBIg\hfdZ2`mX;DMSb=EE>:M2idb[RT:XVXFBNk]_O;73e[8;Y>aa"
A$ = A$ + "`Vd\g#X62;3n5Vbi`4TAW`HX2Y9W8^P7PHoOX<:=FcWcDH2SVjm;WQUAm65["
A$ = A$ + "I<oQP;\QGN#T1H96d<D<Xa1kfP[VEan8`NYk4bS<?]fE^LY#HD313_JMi5_A"
A$ = A$ + "TK[iX4FZ\GnjmflZZQl7F6<lXR>hHC#CPdPN4]0_m3YVK0_SAE8BD;19JA]V"
A$ = A$ + "BK:E7Hl];D=7cQ[2E;_<_#EZ[3S^;J4o#\>P]ZEN15bUbZ<o6;LREaZL9o9A"
A$ = A$ + "XGZ[E\0oK=<CHA^LHj1bF:gfX2cVV:HVDjNb4\C2I6fabd_inSEYi988CPDF"
A$ = A$ + "[<1`J^0JM12dM:1B7;P`Lij>ZH\nhM3X61]gl[JIel]E[bg3I3NE^BMM55Go"
A$ = A$ + ":EVk87bF8[Y6VNdOc4PYO=a\J4>Pj3c6]gS3Z?Y4LPThZ[d3^R]M0WLhiHag"
A$ = A$ + "DNbiejh3>?NF8BWkLgU4E]XY\nd1Bm_B\WKV#=`hk;SBLU0RRgQ<lE9;8Vj8"
A$ = A$ + "5L[KSToJ6AGd_D9YMefgV3AX=GDDUci2b]_k\cINO1Cf4`hDiEVOh8<BZHmo"
A$ = A$ + "1I^hKjnA[T6>MVlU]Odd\1RlGl5e7[gjV5_o:U#bciE4UbZf77=]]FSnEl;f"
A$ = A$ + "4CD\MDkn?eFQ:Y4RFlWi0lFCUe6DcDl6Lf5ACLQ=em8YU^ISl?AfATg8MciU"
A$ = A$ + "FFWaTk>?c#f[i<Gd=IKMne<foN[YDRJ`J_?7R[iRj\LDOlTZ0Mllo`R_bEIW"
A$ = A$ + "nB>Ki\Y<RI^9cNf?`#jB`kO_CHIKlNA;D[EHSfm7ZM7]Uc]OA2e]d6KFUn8Y"
A$ = A$ + "oIaE_jmQfX#kCid2Q#ilaaFPJXd2F;iK<i[eAnhki3RW5C5\[dQoHT>I=EiA"
A$ = A$ + ";S[4Jai2;[7OPFWV1In#>Y^hLdNfL7ejl#5h]AnZ#G#A^K;4k^NTa<nFgRf4"
A$ = A$ + "KofNoll>lnH#[5DReDJEj2BYkRF^>JfEeQ9HafGYeY[9MM\8Nkl95liKR_k0"
A$ = A$ + "TMU\^5a\ZLHd#Ad=<fQSRT<?E>^UGlfOOgofiN:h]km7`kTk5QgYkkogm^?H"
A$ = A$ + "nMbmfQFoaAm[ohXNe_Wm;E_^BndVT#:3E9J?N>T\Fc3Q0<H#:RIIMI8I>I_O"
A$ = A$ + "[e>8NGT:Jgl^jaNW4Zih[i1Zk?eO[^_<4o0ejEK1dOWFfMak=E>2oJPF_N?;"
A$ = A$ + "T8:gb[mR;Bg8_c\<HohlXiIRHb>MS\cA=lN;WTJ5kM^=Rb4lOe#nb:JYGn91"
A$ = A$ + "8D\5OeNXRf;K7\bKFQ9c_X_KgTk<e:]`e1IJgkVXFhl_l^fJAUHM2:akfJJ3"
A$ = A$ + "F;ke2A6T^?3Um:UA;M0aBhJWC#13=hgl?GiL\aF`kUUJSGGD=f8Y>2S=LZ=#"
A$ = A$ + "g5Jjnm?8KlnmWNF\8kgOJCZbgGSPQF9oASB]oOm1[J]>L1kCUTn0OoQV5]7R"
A$ = A$ + "h::>=8_6Xmaj;^el#ZHoAf=olGQdW6R_W9YnccE:LPaZ;enYk9`\Z\;]WbM]"
A$ = A$ + "Y4e6RlUJoH`Q\Y>;NXkI76>i58=L43ZSL82M]hS]MiEXaE[UVCXNPefY>_ZF"
A$ = A$ + "X5ac\Q4=57mbK<;9H?Mg3c3J2H9l0;^IK[\mRKAaAk`cn_6R]94HaP2<7QJS"
A$ = A$ + "N?^8]SbTi0<_Qg]BY?n:TUT5=TY<9UfP`Z6;?RliXl9JQ`aAVBSWae8MNGSB"
A$ = A$ + "OH?<XY;ZD]VQ8VZ>mUaVQKURT81f:SK?_Y3aV`E8PU6LdO1GB;E0SgK84J`d"
A$ = A$ + "f`ghYTWL#dlB`3A^9_\NIQFY76;Z#JW57TF^L1V3akjK]eA4L?\WlF=:_8SC"
A$ = A$ + "VKHA^S3>Gh_AN]]X6D;ALi5:#U#aP=4JQC>^FK[[V38TJ?G70\CN#gG^^6E^"
A$ = A$ + "^D\\]8D`9oXkI5jNaaQ;i4gb8\Y5h;De4\hR]]FL11K1i>lQJ?=0T`Q2LN_a"
A$ = A$ + "6[oD[?M9O<UIH;bcJB:_WUm]cglFI?9aHOe>Djdfn:U8i<\LB1VTBi0SBnbJ"
A$ = A$ + "3PhVJl#fZ6_aCAgFd#2MgJMj^UldOmdQIRV:K`j62>Vg8kCddL50#R#TCWW>"
A$ = A$ + "0jm`]SfEO\45e?Johakd:i^;FU[8:H5]SXXNoWckgUJS]J8j]\N^XjB2^JNO"
A$ = A$ + "Z^VfJk>URX5Q>3=\LNP3f9`[22ETlQ:JXSE7?64V9jLQ^m9QcFE]NF[XNZF\"
A$ = A$ + "8dCHaVA]kEL]?>9JWD7]aTEE0WLGP[m1XDJmF[FDG4n<=GRhHBR4CHbF`Qhb"
A$ = A$ + "#2kT=4KKXX_\XDd7W09K^#g3#Z=YbPQKO0iX]AjCE0ZcfH>R9cD=#lTCC;k\"
A$ = A$ + "DO:Ml\aAaSWBnTm9<gXkJ7a7:mL1Phk:Q;F>8P_gVba?o96U[mPakIf?ii"
A$ = A$ + "4PCOHXhOSbM`nKdifnQLKlgLoJF8dmKEWh9V1]b47?LB#AHE`Y1W1Lf`i1W?"
A$ = A$ + "LA`U0O0hZP[5f<\Eh6PNQM0g<lQPk#^oSJDo#aV]HSL\4NmZ`?E:EJ=CedWR"
A$ = A$ + "bM8JejgAgknfn`mgoSnm5ljS]O1Nm?iFjES_[l0cN;KPl?nACP;QHj57QNHX"
A$ = A$ + "Dk9M1KShUoCkAkj=9`QSkW\]n:oGI_e[eSGn>S^oQQ?:l9POOhnPo#hc1o9`"
A$ = A$ + "31?2lX`O>lG0O=h[3OCh_1n^`O;lg1om`?161N=hO4nO2o_PoEho;l_1_1<^"
A$ = A$ + "\C1W<JZUGIn]Q_RlVFYfhM<]geFNISJZFffH:[?]ZS1E9_Zc[Ka#mjPbPK1M"
A$ = A$ + "LcHg0CNbEdgKd[]YginXO?Un>G7iT_R[6jD9UDf[4K=Y9ie4gBUC\7bjBk9o"
A$ = A$ + "i;=YBJkm=AhLg>8Ie2hB_b[c]]DHNXQ01FjU;BQVhQ;cO5N2\dkLBkm;1fGY"
A$ = A$ + "KB[aaQXHTM]ijTY?1XEX4L:`Y3W9L^`k5^0hm3G6L5`e0M0M2M1K7^AHW`]2"
A$ = A$ + "g6m#\RbYd^cclnTAc\TbIV[RVl;[ba_adX`OYAmH3hAZZ<E[O2`V_HSL\4N]"
A$ = A$ + "A_Vo=lcbmJC<Q9b]94]g_3_9l]hK_h9me_nP9^L24c9b<A>N<kgm]JM#JGll"
A$ = A$ + "_:=?mHo5`To\\hOo?c4\[9mKgWi9okiI^`kdWA:_KmLji]kc9XOGmlmioOhi"
A$ = A$ + "GeoAmLkig1?3SLk1Wg=OF;m^ec2[gEOfLmObNNSmfiIofk6?cY0HV`S3fWEa"
A$ = A$ + "E2eYWK`cGRNN5XFj:ec3`_MGjidcFc_TNNUHF?OCmlZ`[nadC3fDdc[hYcmR"
A$ = A$ + ">gPW?Kml:`aMIji1`J`gbiY`fl7YWG9fj7E?_:lkoNH\QK4a4:BAh\gh:;B7"
A$ = A$ + "V`gLaX7g]RNKk6mmf?NIWKMWMg1Nbj`H8k16P?f?fR>aL1>ElC<4T[K3mTCn"
A$ = A$ + "cK5oKK`:`?]RM^gN6HMmfoFk<kYVU77lHKU>QFKm4JK5]ejTQ6G>>0dSWc^h"
A$ = A$ + "Q=;n6^l>kO7MeK?Ic>I]70kC4jaG=h^38lOIbQOZ`4HBIZdDUYJcd<eHV^YF"
A$ = A$ + "CMVIHVYYNc\<Y=cfdPI>V<ViJJd<?cl=;`\#cR<;f\4CCV\84VZW8ZoGRW7Z"
A$ = A$ + "VUJbSak?8lAP?3LG`O<lUQ_8V?`mIF6V;`MSAnoP`nPO1<:l5hWLZ3im\CmS"
A$ = A$ + "1G?b:XWNZm0ONTULS#O<kIWX4QldCMGHlIdC?eW6cahfQmPAZm<`3K:HJf\L"
A$ = A$ + "caH>FcaI>NC;`WcL2VCdLB`7e\2C[Vf<5=[dDbLbVEIF]iD<W:Z?lY<WVI=`"
A$ = A$ + "SH>Mh?0ndVgSi<<[eLVVcbLfVcaL^VeI>?cj=_GckcLnV=H^0c5J^8c6=_Oc"
A$ = A$ + "5K^4cUJ^<cUKn0Vf=GQi:=GUiZ=GSi3J^FceIj`\9cV=QV>=Ka\Ecf<MI^Nc"
A$ = A$ + "=Hjf\MC?VN=mI^ACoVMH6`\Cc=I^Ic]H^Ec^<O8c^=gVif=gQI?VO?cMJn`V"
A$ = A$ + "1=OTZgI?M]2lUNlLdS]Z7KC?FD?^BmH9mh9[7GUNLejaCA?NVjacB?NfjacE"
A$ = A$ + "?^>iH[jhgZ>^]ZSK[jhfZ>^]ZSK[jhfZ>^]ZSK[jhfZ>^]ZSK[jhfZ>oJE7o"
A$ = A$ + "FeaOEjacDaScZ]:?_>fnfkXb;MKM>#7EN9M]e]gA`6gFGl_Fl<?U:kXknfF7"
A$ = A$ + "E6fIg3dAeMfg>jZkNkYbM`]JP>fI#OK[[JjlFfLgM\m`=e=eWf`AXZnjL78`"
A$ = A$ + "ZYSnk_gK^k>gb0EcW]cnV>O\o^fjf6#na`N_iNTcfD_3\]JdV5fCM^cfd>jT"
A$ = A$ + "1KK]N:C_gn7HKm^eNkYS^[[[N60]XdiV70=ZDKWgh>kjVjXk>kIcMFifjMWk"
A$ = A$ + "XcIdOWgDgm^e^fL7MgC_3<MZaK]o>jNPnLW^Y1VfU\^F9aQE#WdZNb:LWDdN"
A$ = A$ + "BKfCFYmTEK?iD\WLbfCFUmTBj9[d2Wf\M_TM8:IQLA;LJcn=]IKCKFhDbRZ["
A$ = A$ + "dfhRFdX=g9fA_=;nDdMRmWFYM8Je=XF8gV5EGY[aF8_B;n\Bglb2iEJkN9g4"
A$ = A$ + "d1WE:ZKm]Y^kMcg#e8_T>FYLEgKA>fo0je3\S]eAHWEbo]j`KP?FcFjZk^k<"
A$ = A$ + "LCmN;CG>[OTSGm0mgE7KMWm97kG_>\7iHgKYZ=gEoK^k>[Y[N^Y=]C\C3#WY"
A$ = A$ + "Og>fNGXlH7K^CD0jVLG4\SMfCEKYc]SR#YXoDi>j37lDK^kM^Y:gFWMP3AHG"
A$ = A$ + "M\mNk9\f]_cMX2EM>C_cAIOa=ehScNbHoGSl3nVg6Mdooo4noEAM%%h1"
btemp$ = ""
For i& = 1 To Len(A$) Step 4: B$ = Mid$(A$, i&, 4)
If InStr(1, B$, "%") Then
For C% = 1 To Len(B$): F$ = Mid$(B$, C%, 1)
If F$ <> "%" Then C$ = C$ + F$
Next: B$ = C$: End If: For j = 1 To Len(B$)
If Mid$(B$, j, 1) = "#" Then
Mid$(B$, j) = "@": End If: Next
For t% = Len(B$) To 1 Step -1
B& = B& * 64 + Asc(Mid$(B$, t%)) - 48
Next: X$ = "": For t% = 1 To Len(B$) - 1
X$ = X$ + Chr$(B& And 255): B& = B& \ 256
Next: btemp$ = btemp$ + X$: Next
BASFILE$ = _Inflate$(btemp$, 25152): btemp$ = ""
_Font _LoadFont(BASFILE$, size, "memory, monospace")
End Sub
Sub savegame
Open PlayerName$ + ".wpl" For Output As #1
Write #1, PlayerName$
Write #1, PlayerHits&
Write #1, PlayerMagic&
Write #1, PlayerStrength&
Write #1, PlayerGold&
Write #1, PlayerWeapon%
Write #1, PlayerExperience&
Write #1, PlayerShield%
Write #1, PlayerArmor%
Close #1
Print
Print "Game Saved"
Print
End Sub
Sub loadgame (PN$)
Print "Loading "; PN$;
Open PN$ + ".wpl" For Input As #1
Input #1, PlayerName$
_Delay .1: Print ".";
Input #1, PlayerHits&
_Delay .1: Print ".";
Input #1, PlayerMagic&
_Delay .1: Print ".";
Input #1, PlayerStrength&
_Delay .1: Print ".";
Input #1, PlayerGold&
_Delay .1: Print ".";
Input #1, PlayerWeapon%
_Delay .1: Print ".";
Input #1, PlayerExperience&
_Delay .1: Print ".";
Input #1, PlayerShield%
_Delay .1: Print ".";
Input #1, PlayerArmor%
_Delay .1: Print ".";
Close #1
_Delay .1: Print "LOADED";
_Delay .5
End Sub