'===========================================================================
' Subject: ARCANIA: DUNGEON OF DESPAIR RPG    Date: 07-15-99 (14:09)       
'  Author: Cheng Lee                          Code: QB, QBasic, PDS        
'  Origin: bjuice@newmail.com               Packet: GAMES.ABC
'===========================================================================
'---------------------------------------------------------------------------
'The complete source code for Arcania: Dungeon of Despair. This source code
'was coded using QB 4.5... but I think any ver of QB should be able to
'handle it :)
'
'This source code is pretty messy (hey, this WAS my first game :) and you
'are free to do anything with it. All I ask is that you tell me what you
'think of the code..
'
'My email address: bjuice@newmail.net
'My web site: http://come.to/bezza
'---------------------------------------------------------------------------

'MAP!!!

DIM Mainmap$(17)
Mainmap$(1) = " MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
Mainmap$(2) = " MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"
Mainmap$(3) = " MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM*MMMMMMMMM"
Mainmap$(4) = " MMMMMMMMMMMMM        MMMMMMMMMMMMMM"
Mainmap$(5) = " MMMMMM          MMMM"
Mainmap$(6) = " "
Mainmap$(7) = " "
Mainmap$(8) = " "
Mainmap$(9) = " "
Mainmap$(10) = " "
Mainmap$(11) = " "
Mainmap$(12) = " TT"
Mainmap$(13) = " %%%%TTTTTT"
Mainmap$(14) = " %%%%%TTTTTTTTT"
Mainmap$(15) = " %%%%%TTTTTTTTTTTT"
Mainmap$(16) = " %%%%%TTTTTTTTTTTTT"
Mainmap$(17) = " %%%%%TTTTTTTTTTTT"

DIM Mainmap2$(17)
Mainmap2$(1) = " %%%%%TTTTTTTT"
Mainmap2$(2) = " %%%%%"
Mainmap2$(3) = " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
Mainmap2$(4) = " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
Mainmap2$(5) = " "
Mainmap2$(6) = " "
Mainmap2$(7) = " "
Mainmap2$(8) = " "
Mainmap2$(9) = " TT"
Mainmap2$(10) = " TTTTTT"
Mainmap2$(11) = " TTTTT"
Mainmap2$(12) = " TTTTTT"
Mainmap2$(13) = " TTTTTTTTTTTTTTTTTTT"
Mainmap2$(14) = " TTTTTTTTTTTTTTTTTTMMTTTTTT"
Mainmap2$(15) = " TTTTTTTTTTTTTTTTTTTMMMMMMMMM"
Mainmap2$(16) = " MMTTTTTTTTTTTTTTTTMMMMMMMMMMMMM"
Mainmap2$(17) = " MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM"

DIM Dungeon1$(17)
Dungeon1$(1) = " "
Dungeon1$(2) = "                               "
Dungeon1$(3) = "                            "
Dungeon1$(4) = "             "
Dungeon1$(5) = "            "
Dungeon1$(6) = "                    "
Dungeon1$(7) = "                    "
Dungeon1$(8) = "                     "
Dungeon1$(9) = "            "
Dungeon1$(10) = "                                       "
Dungeon1$(11) = "          "
Dungeon1$(12) = "                          "
Dungeon1$(13) = "                       C"
Dungeon1$(14) = "                                 "
Dungeon1$(15) = "            "
Dungeon1$(16) = "                                            "
Dungeon1$(17) = " "

ragcurHP = 12
ragmaxHP = 12
ragw1$ = "Long Sword"
raga1$ = "Chain Mail"
raga2$ = "Shield"
rage1$ = "Healing Salve"
rage = 5
ragar = 0
raglvl = 1
ragEXP = 0

IF raga1$ = "Chain Mail" THEN ragar = ragar + 2
IF raga2$ = "Shield" THEN ragar = ragar + 1

pmrow = 8
pmcolumn = 25

Python = 0
PythonHP = 8
PythonAR = 1
           
Bully = 0
BullyHP = 13
BullyAR = 2

chest = 0

Sk = 0
SkHP = 10
SkAR = 1

Zombie = 0
ZombieHP = 12
ZombieAR = 2

Ghoul = 0
GhoulHP = 12
GhoulAR = 2

Dragon = 0
DragonHP = 30
DraggonAR = 5

Pegg = 0
Pyc = 0
sword = 0

CLS
PRINT : PRINT
COLOR 15
      PRINT "          "
      PRINT "          Ŀ"
      PRINT "                             The Arcania Saga                    "
      PRINT "                                                                 "
      PRINT "                                                                 "
      PRINT "                                                                 "
      PRINT "                                                                 "
      PRINT "                                 Ver  3.0                        "
      PRINT "                                                                 "
      PRINT "                     Copyright (C) 1997,1999 Cheng Lee           "
      PRINT "                             Coded by Cheng Lee                  "
      PRINT "                                                                 "
      PRINT "                      A Pre War of the Crown Trilogy             "
      PRINT "                                 Volume 1                        "
      PRINT "          ٰ"
      PRINT "          "
      PRINT
      LOCATE 8, 29: COLOR 11: PRINT "*": LOCATE 8, 50: PRINT "*"
      LOCATE 8, 31: COLOR 9: PRINT "DUNGEON OF DESPAIR"
      LOCATE 12, 35: COLOR 11: PRINT "C"
      DO
      LOOP WHILE INKEY$ = ""
      GOTO setup

setup:

CLS
COLOR 7
LOCATE 8, 25
PRINT "Please select your computer type..."
LOCATE 10, 34
PRINT "[1] 286/386"
LOCATE 11, 34
PRINT "[2] 486"
LOCATE 12, 34
PRINT "[3] 586/Pentium"

LOCATE 14, 35
INPUT cfg$

IF cfg$ = "1" THEN
speed = 500
GOTO Story
END IF

IF cfg$ = "2" THEN
speed = 3500
GOTO Story
END IF

IF cfg$ = "3" THEN
speed = 6000
GOTO Story
END IF

speed = 500: GOTO Story


Story:

CLS
COLOR 7
LOCATE 6, 1
PRINT "You, squire Ragnar Angelfire, have been chosen to join the ranks of the elite"
PRINT "Knights of Arcania. To join the legendary Knights of Arcania, the chosen squire"
PRINT "must accomplish a quest that will test his logic, endurance, nobility, courage, "
PRINT "skill, and will, as the Knights of Arcania only have the finest warriors to "
PRINT "fight on behalf of Arcania."
PRINT
PRINT "Your task is to find the lost Sword of the Elda. It is lastly seen in a dungeon"
PRINT "located at south east of Castle Arcania. Once you have the the Sword of the "
PRINT "Elda, report to Captain Regar in Castle Arcania."
PRINT
PRINT "Make sure that NUMLOCK is on."
PRINT
PRINT "Good luck!"
PRINT
PRINT "Press <Enter>"
LOCATE 12, 31
COLOR 11
PRINT "Sword of the Elda"
LOCATE 13, 64
PRINT "Sword of the"
LOCATE 14, 1
PRINT "Elda"
WHILE INKEY$ <> CHR$(13): WEND

GOTO status1

status1:

CLS

COLOR 7
LOCATE 1, 58
PRINT "ͻ"
LOCATE 2, 58
PRINT " Ragnar Angelfire    "
LOCATE 3, 58
PRINT "                     "
LOCATE 4, 58
PRINT " EXP:       LVL:     "
LOCATE 5, 58
PRINT " AR:                 "
LOCATE 6, 58
PRINT " HP:    /            "
LOCATE 7, 58
PRINT "                     "
LOCATE 8, 58
PRINT " Equipment:          "
LOCATE 9, 58
PRINT "                     "
LOCATE 10, 58
PRINT "                     "
LOCATE 11, 58
PRINT "                     "
LOCATE 12, 58
PRINT "                     "
LOCATE 13, 58
PRINT "                     "
LOCATE 14, 58
PRINT "                     "
LOCATE 15, 58
PRINT "                     "
LOCATE 16, 58
PRINT "                     "
LOCATE 17, 58
PRINT "                     "
LOCATE 17, 58
PRINT "͹"
LOCATE 18, 58
PRINT " LOCATION:                                                                    "
LOCATE 19, 58
PRINT "                                                                              "
LOCATE 20, 58
PRINT "                                                                              "
LOCATE 21, 58
PRINT "                                                                              "
LOCATE 22, 58
PRINT "ͼ"

GOTO map1

Status2:

CLS

COLOR 7
LOCATE 1, 58
PRINT "ͻ"
LOCATE 2, 58
PRINT " Ragnar Angelfire    "
LOCATE 3, 58
PRINT "                     "
LOCATE 4, 58
PRINT " EXP:       LVL:     "
LOCATE 5, 58
PRINT " AR:                 "
LOCATE 6, 58
PRINT " HP:    /            "
LOCATE 7, 58
PRINT "                     "
LOCATE 8, 58
PRINT " Equipment:          "
LOCATE 9, 58
PRINT "                     "
LOCATE 10, 58
PRINT "                     "
LOCATE 11, 58
PRINT "                     "
LOCATE 12, 58
PRINT "                     "
LOCATE 13, 58
PRINT "                     "
LOCATE 14, 58
PRINT "                     "
LOCATE 15, 58
PRINT "                     "
LOCATE 16, 58
PRINT "                     "
LOCATE 17, 58
PRINT "                     "
LOCATE 17, 58
PRINT "͹"
LOCATE 18, 58
PRINT " LOCATION:                                                                    "
LOCATE 19, 58
PRINT "                                                                              "
LOCATE 20, 58
PRINT "                                                                              "
LOCATE 21, 58
PRINT "                                                                              "
LOCATE 22, 58
PRINT "ͼ"

GOTO Map2

Status3:

CLS

COLOR 7
LOCATE 1, 58
PRINT "ͻ"
LOCATE 2, 58
PRINT " Ragnar Angelfire    "
LOCATE 3, 58
PRINT "                     "
LOCATE 4, 58
PRINT " EXP:       LVL:     "
LOCATE 5, 58
PRINT " AR:                 "
LOCATE 6, 58
PRINT " HP:    /            "
LOCATE 7, 58
PRINT "                     "
LOCATE 8, 58
PRINT " Equipment:          "
LOCATE 9, 58
PRINT "                     "
LOCATE 10, 58
PRINT "                     "
LOCATE 11, 58
PRINT "                     "
LOCATE 12, 58
PRINT "                     "
LOCATE 13, 58
PRINT "                     "
LOCATE 14, 58
PRINT "                     "
LOCATE 15, 58
PRINT "                     "
LOCATE 16, 58
PRINT "                     "
LOCATE 17, 58
PRINT "                     "
LOCATE 17, 58
PRINT "͹"
LOCATE 18, 58
PRINT " LOCATION:                                                                    "
LOCATE 19, 58
PRINT "                                                                              "
LOCATE 20, 58
PRINT "                                                                              "
LOCATE 21, 58
PRINT "                                                                              "
LOCATE 22, 58
PRINT "ͼ"

GOTO Dungeon

Combatpython:
CLS
LOCATE 1, 1
PRINT
PRINT "COMBAT SCREEN"
LOCATE 5, 1
PRINT "Ragnar's current HP:"; ragcurHP
LOCATE 5, 35
PRINT "Giant Python's current HP:"; PythonHP
PRINT "Damage per hit: 1d6               Damage per hit: 1d4"

IF PythonHP <= 0 THEN ragEXP = ragEXP + 5: Pegg = 1: Python = 1: LOCATE 8, 1: PRINT "You have killed the Giant Python! You gained 5 EXP!": Pegg = 1: PRINT "After the battle you find an Giant Python's Egg.": PRINT : PRINT "Press <Enter>": WHILE  _
INKEY$ <> CHR$(13): WEND: GOTO Status2
IF ragcurHP <= 0 THEN LOCATE 8, 1: PRINT "ARRGGG! You have been killed by the Giant Python!": PRINT : PRINT "Press <Enter>": WHILE INKEY$ <> CHR$(13): WEND: GOTO Died

RANDOMIZE TIMER
pyhit = INT(RND * 6) + 1
phit = INT(RND * 6) + 1
pdmg = (INT(RND * 4) + 1)
pydmg = (INT(RND * 6) + 1)
                                                                                   
IF phit <= 2 THEN LOCATE 8, 1: PRINT "You missed the Giant Python..  Press <Enter>   ": WHILE INKEY$ <> CHR$(13): WEND
IF pyhit <= 4 THEN LOCATE 8, 1: PRINT "The Python missed..  Press <Enter>            ": WHILE INKEY$ <> CHR$(13): WEND

IF phit >= 3 THEN LOCATE 8, 1: PRINT "You swing at the Giant Python for"; pydmg; "points of damage! Press <Enter>    ":  WHILE INKEY$ <> CHR$(13): WEND: PythonHP = PythonHP - pydmg
IF pyhit >= 5 THEN LOCATE 8, 1: PRINT "The Giant Python bites you for"; pdmg; "points of damage..  Press <Enter>     ": WHILE INKEY$ <> CHR$(13): WEND: ragcurHP = ragcurHP - pdmg

GOTO Combatpython

Combatbully:
CLS
LOCATE 1, 1
PRINT
PRINT "COMBAT SCREEN"
LOCATE 5, 1
PRINT "Ragnar's current HP:"; ragcurHP
LOCATE 5, 35
PRINT "Bully's current HP:"; BullyHP
PRINT "Damage per hit: 1d6               Damage per hit: 1d6"

IF BullyHP <= 0 THEN ragEXP = ragEXP + 15: Bully = 1: LOCATE 8, 1: PRINT "You have killed the Bully! You gained 15 EXP!": PRINT : PRINT "Press <Enter>": WHILE INKEY$ <> CHR$(13): WEND: GOTO Status2
IF ragcurHP <= 0 THEN LOCATE 8, 1: PRINT "ARRGGG! You have been killed by the Bully!": PRINT : PRINT "Press <Enter>": WHILE INKEY$ <> CHR$(13): WEND: GOTO Died

RANDOMIZE TIMER
bulhit = INT(RND * 6) + 1
phit = INT(RND * 6) + 1
pdmg = (INT(RND * 6) + 1)
buldmg = (INT(RND * 6) + 1)
                                                                                  
IF phit <= 3 THEN LOCATE 8, 1: PRINT "You missed the Bully..  Press <Enter>   ": WHILE INKEY$ <> CHR$(13): WEND
IF bulhit <= 3 THEN LOCATE 8, 1: PRINT "The Bully missed..  Press <Enter>            ": WHILE INKEY$ <> CHR$(13): WEND

IF phit >= 3 THEN LOCATE 8, 1: PRINT "You swing at the Bully for"; buldmg; "points of damage! Press <Enter>    ":  WHILE INKEY$ <> CHR$(13): WEND: BullyHP = BullyHP - buldmg
IF bulhit >= 3 THEN LOCATE 8, 1: PRINT "The Bully kicks you for"; pdmg; "points of damage..  Press <Enter>     ": WHILE INKEY$ <> CHR$(13): WEND: ragcurHP = ragcurHP - pdmg

GOTO Combatbully


Combatsk:
CLS
LOCATE 1, 1
PRINT
PRINT "COMBAT SCREEN"
LOCATE 5, 1
PRINT "Ragnar's current HP:"; ragcurHP
LOCATE 5, 35
PRINT "Skeleton's current HP:"; SkHP
PRINT "Damage per hit: 1d6               Damage per hit: 1d6"

IF SkHP <= 0 THEN ragEXP = ragEXP + 10: Sk = 1: LOCATE 8, 1: PRINT "You have killed the Skeleton! You gained 10 EXP!": PRINT : PRINT "Press <Enter>": WHILE INKEY$ <> CHR$(13): WEND: GOTO Status3
IF ragcurHP <= 0 THEN LOCATE 8, 1: PRINT "ARRGGG! You have been killed by the Skeleton!": PRINT : PRINT "Press <Enter>": WHILE INKEY$ <> CHR$(13): WEND: GOTO Died

RANDOMIZE TIMER
skhit = INT(RND * 6) + 1
phit = INT(RND * 6) + 1
pdmg = (INT(RND * 6) + 1)
skdmg = (INT(RND * 6) + 1)
                                                                                  
IF phit <= 2 THEN LOCATE 8, 1: PRINT "You missed the Skeleton..  Press <Enter>   ": WHILE INKEY$ <> CHR$(13): WEND
IF skhit <= 4 THEN LOCATE 8, 1: PRINT "The Skeleton missed..  Press <Enter>            ": WHILE INKEY$ <> CHR$(13): WEND

IF phit >= 3 THEN LOCATE 8, 1: PRINT "You swing at the Skeleton for"; skdmg; "points of damage! Press <Enter>    ":  WHILE INKEY$ <> CHR$(13): WEND: SkHP = SkHP - skdmg
IF skhit >= 5 THEN LOCATE 8, 1: PRINT "The Skeleton hits you for"; pdmg; "points of damage..  Press <Enter>     ": WHILE INKEY$ <> CHR$(13): WEND: ragcurHP = ragcurHP - pdmg

GOTO Combatsk

Combatzom:
CLS
LOCATE 1, 1
PRINT
PRINT "COMBAT SCREEN"
LOCATE 5, 1
PRINT "Ragnar's current HP:"; ragcurHP
LOCATE 5, 35
PRINT "Zombie's current HP:"; ZombieHP
PRINT "Damage per hit: 1d6               Damage per hit: 1d6"

IF ZombieHP <= 0 THEN ragEXP = ragEXP + 20: Zombie = 1: LOCATE 8, 1: PRINT "You have killed the Zombie! You gained 20 EXP!": PRINT "After the combat you found a Healing Salve!": rage = rage + 1: PRINT : PRINT "Press <Enter>": WHILE INKEY$ <> CHR$(13 _
): WEND: GOTO Status3
IF ragcurHP <= 0 THEN LOCATE 8, 1: PRINT "ARRGGG! You have been killed by the Zombie!": PRINT : PRINT "Press <Enter>": WHILE INKEY$ <> CHR$(13): WEND: GOTO Died

RANDOMIZE TIMER
zmhit = INT(RND * 6) + 1
phit = INT(RND * 6) + 1
pdmg = (INT(RND * 6) + 1)
zmdmg = (INT(RND * 6) + 1)
                                                                                 
IF phit <= 3 THEN LOCATE 8, 1: PRINT "You missed the Zombie..  Press <Enter>   ": WHILE INKEY$ <> CHR$(13): WEND
IF zmhit <= 4 THEN LOCATE 8, 1: PRINT "The Zombie missed..  Press <Enter>            ": WHILE INKEY$ <> CHR$(13): WEND

IF phit >= 4 THEN LOCATE 8, 1: PRINT "You swing at the Zombie for"; zmdmg; "points of damage! Press <Enter>    ":  WHILE INKEY$ <> CHR$(13): WEND: ZombieHP = ZombieHP - zmdmg
IF zmhit >= 5 THEN LOCATE 8, 1: PRINT "The Zombie hits you for"; pdmg; "points of damage..  Press <Enter>     ": WHILE INKEY$ <> CHR$(13): WEND: ragcurHP = ragcurHP - pdmg

GOTO Combatzom

Combatgh:
CLS
LOCATE 1, 1
PRINT
PRINT "COMBAT SCREEN"
LOCATE 5, 1
PRINT "Ragnar's current HP:"; ragcurHP
LOCATE 5, 35
PRINT "Ghoul's current HP:"; GhoulHP
PRINT "Damage per hit: 1d6               Damage per hit: 1d6+1"

IF GhoulHP <= 0 THEN ragEXP = ragEXP + 20: Ghoul = 1: LOCATE 8, 1: PRINT "You have killed the Ghoul! You gained 20 EXP!": PRINT "After the combat you found 2 Healing Salve!": rage = rage + 2: PRINT : PRINT "Press <Enter>": WHILE INKEY$ <> CHR$(13): _
                         WEND: GOTO Status3
IF ragcurHP <= 0 THEN LOCATE 8, 1: PRINT "ARRGGG! You have been killed by the Ghoul!": PRINT : PRINT "Press <Enter>": WHILE INKEY$ <> CHR$(13): WEND: GOTO Died

RANDOMIZE TIMER
ghhit = INT(RND * 6) + 1
phit = INT(RND * 6) + 1
pdmg = (INT(RND * 6) + 1) + 2
ghdmg = (INT(RND * 6) + 1)
                                                                                
IF phit <= 3 THEN LOCATE 8, 1: PRINT "You missed the Ghoul..  Press <Enter>   ": WHILE INKEY$ <> CHR$(13): WEND
IF ghhit <= 3 THEN LOCATE 8, 1: PRINT "The Ghoul missed..  Press <Enter>            ": WHILE INKEY$ <> CHR$(13): WEND

IF phit >= 4 THEN LOCATE 8, 1: PRINT "You swing at the Ghoul for"; ghdmg; "points of damage! Press <Enter>    ":  WHILE INKEY$ <> CHR$(13): WEND: GhoulHP = GhoulHP - ghdmg
IF ghhit >= 4 THEN LOCATE 8, 1: PRINT "The Ghoul hits you for"; pdmg; "points of damage..  Press <Enter>     ": WHILE INKEY$ <> CHR$(13): WEND: ragcurHP = ragcurHP - pdmg

GOTO Combatgh

Combatdr:
CLS
LOCATE 1, 1
PRINT
PRINT "COMBAT SCREEN"
LOCATE 5, 1
PRINT "Ragnar's current HP:"; ragcurHP
LOCATE 5, 35
PRINT "Dragon's current HP:"; DragonHP
PRINT "Damage per hit: 1d6               Damage per hit: 1d6+2"

IF DragonHP <= 0 THEN ragEXP = ragEXP + 40: Dragon = 1: LOCATE 8, 1: PRINT "You have killed the Dragon! You gained 40 EXP!": PRINT "After the combat you found 2 Healing Salve!": rage = rage + 2: PRINT : PRINT "Press <Enter>": WHILE INKEY$ <> CHR$(13 _
): WEND: GOTO Status3
IF ragcurHP <= 0 THEN LOCATE 8, 1: PRINT "ARRGGG! You have been killed by the Dragon!": PRINT : PRINT "Press <Enter>": WHILE INKEY$ <> CHR$(13): WEND: GOTO Died

RANDOMIZE TIMER
drhit = INT(RND * 6) + 1
phit = INT(RND * 6) + 1
pdmg = (INT(RND * 6) + 1) + 2
drdmg = (INT(RND * 6) + 1)
                                                                               
IF phit <= 3 THEN LOCATE 8, 1: PRINT "You missed the Dragon..  Press <Enter>   ": WHILE INKEY$ <> CHR$(13): WEND
IF drhit <= 2 THEN LOCATE 8, 1: PRINT "The Dragon missed..  Press <Enter>            ": WHILE INKEY$ <> CHR$(13): WEND

IF phit >= 4 THEN LOCATE 8, 1: PRINT "You swing at the Dragon for"; drdmg; "points of damage! Press <Enter>    ":  WHILE INKEY$ <> CHR$(13): WEND: DragonHP = DragonHP - drdmg
IF drhit >= 3 THEN LOCATE 8, 1: PRINT "The Dragon claws you for"; pdmg; "points of damage..  Press <Enter>     ": WHILE INKEY$ <> CHR$(13): WEND: ragcurHP = ragcurHP - pdmg

GOTO Combatdr

Hut:
CLS
IF Pegg = 0 THEN
PRINT "Inside the hut you see an old man reading a large book. Without looking at"
PRINT "you he told you to come back when you've found a Giant Python's Egg. You"
PRINT "have no idea what he is talking about but something tells you to come back"
PRINT "when you have a Giant Python's Egg."
PRINT
PRINT "Press <Enter>"
WHILE INKEY$ <> CHR$(13): WEND
pmrow = pmrow + 1
GOTO status1
END IF

IF Pegg = 1 THEN
PRINT
PRINT "You've got the Egg. Good, here is a potion for the Egg. "
PRINT "As you slurp the green, sticky and salty liquid down, you suddenly feel a"
PRINT "lot healthier..."
ragmaxHP = ragmaxHP + 5
ragcurHP = ragcurHP + 5
PRINT : PRINT "Your maximum HP is now"; ragmaxHP; ". You thank the old man and leave."
PRINT
PRINT "Press <Enter>"
WHILE INKEY$ <> CHR$(13): WEND
pmrow = pmrow + 1
Pegg = 0
GOTO status1
END IF

PRINT
PRINT : PRINT "Press <Enter>"
WHILE INKEY$ <> CHR$(13): WEND

pmrow = pmrow + 1
GOTO status1


Castle:
CLS
PRINT "CASTLE ARCANIA"
PRINT
IF sword = 0 THEN
PRINT "You do not have the Sword of the Elda... come back when you do!"
PRINT
PRINT "Press <Enter>"
WHILE INKEY$ <> CHR$(13): WEND
GOTO status1
END IF

IF sword = 1 THEN
PRINT "You have found the Sword of the Elda!! Well done, Ragnar. You are"
PRINT "now a Knight of Arcania. Congratulations!"
PRINT
PRINT "Thank you for playing Dungeon of Despair. Remember to tell me what you"
PRINT "think of the game. My email is bjuice@newmail.net. This game is freeware"
PRINT "so there is no need to pay me :)"
PRINT
PRINT "Source code for Dungeon of Despair is available for download from my web"
PRINT "site at http://come.to/bezza"
PRINT
PRINT "The Arcania Saga: Dungeon of Despair is Copyright (C) 1997,1999 Cheng Lee"
PRINT
END
END IF

Train:
CLS

IF raglvl > 1 AND ragEXP <= 49 THEN
PRINT "Grismould's Training Place"
PRINT : PRINT "Whoa! What can I do for ya? Welcome to me backyard training centre."
PRINT "Looks like your not ready.. Come back later, kiddo."
PRINT
PRINT "Your next advancement is at 50 EXP..."
PRINT
PRINT "Press <Enter>"
WHILE INKEY$ <> CHR$(13): WEND
pmrow = pmrow + 1
GOTO status1
END IF


IF raglvl = 2 AND ragEXP >= 50 THEN
PRINT "Grismould's Training Place": PRINT
PRINT : PRINT "Well done! You have achieved to level 3! You get 20 more HP!"
raglvl = raglvl + 1
ragcurHP = ragcurHP + 20
ragmaxHP = ragmaxHP + 20
PRINT
PRINT "Press <Enter>"
WHILE INKEY$ <> CHR$(13): WEND
pmrow = pmrow + 1
GOTO status1
END IF

IF raglvl = 3 THEN
PRINT "Grismould's Training Place": PRINT
PRINT : PRINT "Ummm...I think your powerful enough, kiddo..."
PRINT "Tell you what, I'll give yer free healing...here you go,"
PRINT "a free Healing Salve for ya! :)"
rage = rage + 1
PRINT
PRINT "Press <Enter>"
WHILE INKEY$ <> CHR$(13): WEND
pmrow = pmrow + 1
GOTO status1
END IF

IF ragEXP >= 20 AND raglvl = 1 THEN
PRINT "Grismould's Training Place"
PRINT : PRINT "Well done! You have achieved to level 2! You get 13 more HP!"
raglvl = raglvl + 1
ragcurHP = ragcurHP + 13
ragmaxHP = ragmaxHP + 13
PRINT
PRINT "Your next advancement is at 50 EXP..."
PRINT
PRINT "Press <Enter>"
WHILE INKEY$ <> CHR$(13): WEND
pmrow = pmrow + 1
GOTO status1
END IF

IF ragEXP <= 19 THEN
PRINT "Grismould's Training Place"
PRINT : PRINT "Whoa! What can I do for ya? Welcome to me backyard training centre."
PRINT "Looks like your not ready.. Come back later, kiddo."
PRINT
PRINT "Your next advancement is at 20 EXP..."
PRINT : PRINT "Press <Enter>"
WHILE INKEY$ <> CHR$(13): WEND
pmrow = pmrow + 1
GOTO status1
END IF



Dungeon:

DO

LOCATE 1, 1
FOR count = 1 TO 17
PRINT Dungeon1$(count)
NEXT count

LOCATE pdrow, pdcolumn
COLOR 15
PRINT CHR$(1)

IF Sk = 0 THEN LOCATE 13, 39: PRINT ""
IF Zombie = 0 THEN LOCATE 3, 25: PRINT ""
IF chest = 0 THEN LOCATE 13, 48: PRINT "C"
         
IF Ghoul = 0 THEN LOCATE 16, 15: PRINT ""
IF Dragon = 0 THEN LOCATE 16, 22: PRINT ""
IF sword = 0 THEN LOCATE 16, 26: COLOR 31: PRINT ""

COLOR 15
LOCATE 4, 64
PRINT ragEXP

LOCATE 4, 75
PRINT raglvl

LOCATE 5, 63
PRINT ragar

LOCATE 6, 63
PRINT ragcurHP

LOCATE 6, 68
PRINT ragmaxHP

LOCATE 10, 60
PRINT ragw1$

LOCATE 11, 60
PRINT raga1$

LOCATE 12, 60
PRINT raga2$

LOCATE 13, 60
IF rage <= 0 THEN PRINT "                    "
IF rage >= 1 THEN PRINT rage1$; " x"; rage

IF Pegg = 1 THEN
LOCATE 14, 60
PRINT "A Giant Python Egg"
END IF

IF sword = 1 THEN LOCATE 15, 60: PRINT "Sword of the Elda"

COLOR 15
LOCATE 22, 3
PRINT "Make sure NUMLOCK is on! <8=Up 2=Down 4=Left 6=Right U=Use H. Salve X=Quit>"

FOR nothing = 1 TO speed
NEXT nothing

keyed$ = INKEY$


 olddRow = pdrow
 olddColumn = pdcolumn


 COLOR 7

 REM examine the keys
 SELECT CASE keyed$
      
       CASE IS = "8"
        LOCATE 21, 3
        PRINT "                                   "
        pdrow = pdrow - 1
      

       CASE IS = "2"
        LOCATE 21, 3
        PRINT "                                   "
        pdrow = pdrow + 1

       CASE IS = "4"
        LOCATE 21, 3
        PRINT "                                   "
        pdcolumn = pdcolumn - 1
   

       CASE IS = "6"
        LOCATE 21, 3
        PRINT "                                   "
        pdcolumn = pdcolumn + 1
        IF pdcolumn > 56 THEN LOCATE 21, 3: PRINT "Going back to map... press <Enter>":   WHILE INKEY$ <> CHR$(13): WEND: pm2row = 15: pm2column = 38: GOTO Status2

       CASE IS = "U"
        IF rage <= 0 THEN LOCATE 21, 3: PRINT "You do not have any Healing Salve!"
        IF rage >= 1 THEN LOCATE 21, 3: RANDOMIZE TIMER: heal = (INT(RND * 6) + 1) + 2: ragcurHP = ragcurHP + heal: rage = rage - 1: IF ragcurHP > ragmaxHP THEN ragcurHP = ragmaxHP: PRINT "You got back"; heal; "HP!"
       
       

       CASE IS = "u"
        IF rage <= 0 THEN LOCATE 21, 3: PRINT "You do not have any Healing Salve!"
        IF rage >= 1 THEN LOCATE 21, 3: RANDOMIZE TIMER: heal = (INT(RND * 6) + 1) + 2: ragcurHP = ragcurHP + heal: rage = rage - 1: IF ragcurHP > ragmaxHP THEN ragcurHP = ragmaxHP: PRINT "You got back"; heal; "HP!"
       
       

       CASE IS = "X"
        GOTO Quit:

       CASE IS = "x"
        GOTO Quit:


 END SELECT

 COLOR 7

 SELECT CASE MID$(Dungeon1$(pdrow), pdcolumn, 1)
    
    
       CASE IS = ""
        LOCATE 21, 3
        PRINT "You can't go that way...          "
        pdrow = olddRow
        pdcolumn = olddColumn
    
       CASE IS = ""
       IF Sk = 0 THEN LOCATE 21, 3: PRINT "Fighting a Skeleton... Press <Enter>": WHILE INKEY$ <> CHR$(13): WEND: GOTO Combatsk
       IF Sk = 1 THEN LOCATE 19, 13: PRINT "Dungeon       ": LOCATE 21, 3: PRINT "You see a pile of bones... "
      
       CASE IS = ""
       IF Zombie = 0 THEN LOCATE 21, 3: PRINT "Fighting a Zombie... Press <Enter>": WHILE INKEY$ <> CHR$(13): WEND: GOTO Combatzom
       IF Zombie = 1 THEN LOCATE 19, 13: PRINT "Dungeon       ": LOCATE 21, 3: PRINT "You see a hacked up body... "
       
       CASE IS = ""
       IF Ghoul = 0 THEN LOCATE 21, 3: PRINT "Fighting a Ghoul... Press <Enter>": WHILE INKEY$ <> CHR$(13): WEND: GOTO Combatgh
       IF Ghoul = 1 THEN LOCATE 19, 13: PRINT "Dungeon       ": LOCATE 21, 3: PRINT "You see a dead Ghoul... "

       CASE IS = ""
       IF Dragon = 0 THEN LOCATE 21, 3: PRINT "Fighting a DRAGON!!!... Press <Enter>": WHILE INKEY$ <> CHR$(13): WEND: GOTO Combatdr
       IF Dragon = 1 THEN LOCATE 19, 13: PRINT "Dungeon       ": LOCATE 21, 3: PRINT "You see a dead Dragon... "
      
       CASE IS = ""
       IF sword = 0 THEN LOCATE 21, 3: PRINT "You've found the Sword of the Elda!! Press <Enter>": sword = 1: WHILE INKEY$ <> CHR$(13): WEND
       IF sword = 1 THEN LOCATE 21, 3: PRINT "Dungeon ": LOCATE 21, 3: PRINT "There is nothing here..                             "
      
       CASE IS = "C"
       IF chest = 0 THEN LOCATE 21, 3: PRINT "You've found a Healing Salve in the chest!! Press <Enter>": chest = 1: rage = rage + 1: WHILE INKEY$ <> CHR$(13): WEND
       IF chest = 1 THEN LOCATE 21, 3: PRINT "Dungeon ": LOCATE 21, 3: PRINT "There is an empty chest here..                             "

       CASE IS = " "
        LOCATE 19, 13
        PRINT "Dungeon            "


 END SELECT
LOOP


Died:
CLS
PRINT
PRINT "You have DIED!"
PRINT
PRINT "Please try again... ;)"
PRINT
PRINT "Press <Enter>"
WHILE INKEY$ <> CHR$(13): WEND
GOTO Quit


Quit:
CLS
PRINT
PRINT "Thank you for playing Dungeon of Despair. Remember to tell me what you"
PRINT "think of the game. My email is bjuice@newmail.net. This game is freeware"
PRINT "so there is no need to pay me :)"
PRINT
PRINT "Source code for Dungeon of Despair is available for download from my web"
PRINT "site at http://come.to/bezza"
PRINT
PRINT "The Arcania Saga: Dungeon of Despair is Copyright (C) 1997,1999 Cheng Lee"
PRINT
PRINT
END

Nomap1:
CLS
PRINT
PRINT "Map not Available..."
PRINT
PRINT "The next map is unavailable because:"
PRINT
PRINT "1. It is not needed for this game"
PRINT "2. It is planned to be available for the sequel of this game."
PRINT
PRINT "Press <Enter>"
WHILE INKEY$ <> CHR$(13): WEND

GOTO status1

Nomap2:
CLS
PRINT
PRINT "Map not Available..."
PRINT
PRINT "The next map is unavailable because:"
PRINT
PRINT "1. It is not needed for this game"
PRINT "2. It is planned to be available for the sequel of this game."
PRINT
PRINT "Press <Enter>"
WHILE INKEY$ <> CHR$(13): WEND

GOTO Status2


map1:


DO

LOCATE 1, 1
FOR count = 1 TO 17
PRINT Mainmap$(count)
NEXT count


IF pmcolumn < 2 THEN pmcolumn = pmcolumn + 1: GOTO Nomap1
IF pmcolumn > 56 THEN pmcolumn = pmcolumn - 1: GOTO Nomap1


LOCATE pmrow, pmcolumn
COLOR 15
PRINT CHR$(1)


LOCATE 4, 64
PRINT ragEXP

LOCATE 4, 75
PRINT raglvl

LOCATE 5, 63
PRINT ragar

LOCATE 6, 63
PRINT ragcurHP

LOCATE 6, 68
PRINT ragmaxHP

LOCATE 10, 60
PRINT ragw1$

LOCATE 11, 60
PRINT raga1$

LOCATE 12, 60
PRINT raga2$

LOCATE 13, 60
IF rage <= 0 THEN PRINT "                    "
IF rage >= 1 THEN PRINT rage1$; " x"; rage

LOCATE 3, 47
COLOR 15
PRINT "*"

IF Pegg = 1 THEN
LOCATE 14, 60
PRINT "A Giant Python Egg"
END IF

IF sword = 1 THEN LOCATE 15, 60: PRINT "Sword of the Elda"

COLOR 15
LOCATE 22, 3
PRINT "Make sure NUMLOCK is on! <8=Up 2=Down 4=Left 6=Right U=Use H. Salve X=Quit>"

FOR nothing = 1 TO speed
NEXT nothing

keyed$ = INKEY$


 oldRow = pmrow
 oldColumn = pmcolumn


 COLOR 7

 REM examine the keys
 SELECT CASE keyed$
     
       CASE IS = "8"
        LOCATE 21, 3
        PRINT "                                   "
        pmrow = pmrow - 1
        IF pmrow = 3 AND pmcolumn = 47 THEN GOTO Train
        IF pmrow = 4 AND pmcolumn = 7 THEN LOCATE 21, 3: PRINT "You've found a hermit's hut! Press <Enter>": WHILE INKEY$ <> CHR$(13): WEND: GOTO Hut
       

       CASE IS = "2"
        LOCATE 21, 3
        PRINT "                                   "
        pmrow = pmrow + 1
        IF pmrow > 17 THEN GOTO Map2

       CASE IS = "4"
        LOCATE 21, 3
        PRINT "                                   "
        pmcolumn = pmcolumn - 1
    

       CASE IS = "6"
        LOCATE 21, 3
        PRINT "                                   "
        pmcolumn = pmcolumn + 1
   
       CASE IS = "U"
        IF rage <= 0 THEN LOCATE 21, 3: PRINT "You do not have any Healing Salve!"
        IF rage >= 1 THEN LOCATE 21, 3: RANDOMIZE TIMER: heal = (INT(RND * 6) + 1) + 2: ragcurHP = ragcurHP + heal: rage = rage - 1: IF ragcurHP > ragmaxHP THEN ragcurHP = ragmaxHP: PRINT "You got back"; heal; "HP!"
       
       

       CASE IS = "u"
        IF rage <= 0 THEN LOCATE 21, 3: PRINT "You do not have any Healing Salve!"
        IF rage >= 1 THEN LOCATE 21, 3: RANDOMIZE TIMER: heal = (INT(RND * 6) + 1) + 2: ragcurHP = ragcurHP + heal: rage = rage - 1: IF ragcurHP > ragmaxHP THEN ragcurHP = ragmaxHP: PRINT "You got back"; heal; "HP!"
       
      
       CASE IS = "X"
        GOTO Quit:

       CASE IS = "x"
        GOTO Quit:


 END SELECT

 COLOR 7

 SELECT CASE MID$(Mainmap$(pmrow), pmcolumn, 1)
     
      CASE IS = "M"
        LOCATE 21, 3
        PRINT "You can't go that way...          "
        pmrow = oldRow
        pmcolumn = oldColumn
     
       CASE IS = "%"
        LOCATE 21, 3
        PRINT "You can't go that way...          "
        pmrow = oldRow
        pmcolumn = oldColumn
     
       CASE IS = ""
        LOCATE 21, 3
        PRINT "You can't go that way...          "
        pmrow = oldRow
        pmcolumn = oldColumn
     
       CASE IS = ""
        LOCATE 21, 3
        PRINT "You can't go that way...          "
        pmrow = oldRow
        pmcolumn = oldColumn
     
       CASE IS = ""
        pmrow = oldRow
        pmcolumn = oldColumn
        LOCATE 21, 3
        PRINT "Entering Castle Arcania... Press <Enter>      "
        WHILE INKEY$ <> CHR$(13): WEND
        GOTO Castle
     
      CASE IS = ""
        LOCATE 19, 13
        PRINT "Grass          "
     
       CASE IS = "T"
        LOCATE 19, 13
        PRINT "Trees          "
     
       CASE IS = ""
        LOCATE 19, 13
        PRINT "Road          "
    
       CASE IS = ""
        LOCATE 19, 13
        PRINT "Road          "
     
       CASE IS = ""
        LOCATE 19, 13
        PRINT "Road          "
     
       CASE IS = ""
        LOCATE 19, 13
        PRINT "Road          "

 END SELECT
LOOP


Map2:

IF pmrow > 17 AND pm2row < 1 THEN pm2row = 1: pm2column = pmcolumn

IF Pegg = 1 AND Pyc = 1 THEN
FOR i = 1 TO 1
pm2row = 14
pm2column = 37
NEXT i
END IF

Pyc = 0


DO

LOCATE 1, 1
FOR count = 1 TO 17
PRINT Mainmap2$(count)
NEXT count

IF pm2column < 2 THEN pm2column = pm2column + 1: GOTO Nomap2
IF pm2column > 56 THEN pm2column = pm2column - 1: GOTO Nomap2

IF Python = 0 THEN LOCATE 14, 37: COLOR 15: PRINT ""
IF Bully = 0 THEN LOCATE 16, 12: COLOR 15: PRINT ""

LOCATE 15, 39
COLOR 15
PRINT ""

LOCATE pm2row, pm2column
COLOR 15
PRINT CHR$(1)

LOCATE 4, 64
PRINT ragEXP

LOCATE 4, 75
PRINT raglvl

LOCATE 5, 63
PRINT ragar

LOCATE 6, 63
PRINT ragcurHP

LOCATE 6, 68
PRINT ragmaxHP

LOCATE 10, 60
PRINT ragw1$

LOCATE 11, 60
PRINT raga1$

LOCATE 12, 60
PRINT raga2$

LOCATE 13, 60
IF rage <= 0 THEN PRINT "                    "
IF rage >= 1 THEN PRINT rage1$; " x"; rage

IF Pegg = 1 THEN
LOCATE 14, 60
PRINT "A Giant Python Egg"
END IF

IF sword = 1 THEN LOCATE 15, 60: PRINT "Sword of the Elda"

COLOR 15
LOCATE 22, 3
PRINT "Make sure NUMLOCK is on! <8=Up 2=Down 4=Left 6=Right U=Use H. Salve X=Quit>"


 keyed$ = INKEY$

 FOR nothing = 1 TO speed
 NEXT nothing


 old2Row = pm2row
 old2Column = pm2column


 COLOR 7

 REM examine the keys
 SELECT CASE keyed$
    
       CASE IS = "8"
        LOCATE 21, 3
        PRINT "                                   "
        pm2row = pm2row - 1
        IF pm2row < 1 THEN pmrow = pm2row + 17: pmcolumn = pm2column: GOTO map1
      

       CASE IS = "2"
        LOCATE 21, 3
        PRINT "                                   "
        pm2row = pm2row + 1
        IF pm2row > 17 AND pm2column = 12 THEN pm2row = pm2row - 1: GOTO Nomap2

       CASE IS = "4"
        LOCATE 21, 3
        PRINT "                                   "
        pm2column = pm2column - 1
    
       CASE IS = "6"
        LOCATE 21, 3
        PRINT "                                   "
        pm2column = pm2column + 1

       CASE IS = "U"
        IF rage <= 0 THEN LOCATE 21, 3: PRINT "You do not have any Healing Salve!"
        IF rage >= 1 THEN LOCATE 21, 3: RANDOMIZE TIMER: heal = (INT(RND * 6) + 1) + 2: ragcurHP = ragcurHP + heal: rage = rage - 1: IF ragcurHP > ragmaxHP THEN ragcurHP = ragmaxHP: PRINT "You got back"; heal; "HP!"
       

       CASE IS = "u"
        IF rage <= 0 THEN LOCATE 21, 3: PRINT "You do not have any Healing Salve!"
        IF rage >= 1 THEN LOCATE 21, 3: RANDOMIZE TIMER: heal = (INT(RND * 6) + 1) + 2: ragcurHP = ragcurHP + heal: rage = rage - 1: IF ragcurHP > ragmaxHP THEN ragcurHP = ragmaxHP: PRINT "You got back"; heal; "HP!"
       
       CASE IS = "X"
        GOTO Quit:

       CASE IS = "x"
        GOTO Quit:


 END SELECT

 COLOR 7

 SELECT CASE MID$(Mainmap2$(pm2row), pm2column, 1)
   
       CASE IS = "M"
        LOCATE 21, 3
        PRINT "You can't go that way...          "
        pm2row = old2Row
        pm2column = old2Column
    
       CASE IS = "%"
        LOCATE 21, 3
        PRINT "You can't go that way...          "
        pm2row = old2Row
        pm2column = old2Column
    
    
       CASE IS = ""
        LOCATE 21, 3
        PRINT "Entering the dungeon...  Press <Enter>       "
        WHILE INKEY$ <> CHR$(13): WEND
        pdrow = 2
        pdcolumn = 56
        GOTO Status3
     
       CASE IS = ""
        LOCATE 19, 13
        PRINT "Grass          "
    
       CASE IS = "T"
        LOCATE 19, 13
        PRINT "Trees          "
    
       CASE IS = ""
        LOCATE 19, 13
        PRINT "Road          "
    
       CASE IS = ""
        LOCATE 19, 13
        PRINT "Road          "
    
       CASE IS = ""
        LOCATE 19, 13
        PRINT "Road          "
    
       CASE IS = ""
        LOCATE 19, 13
        PRINT "Road          "
             

      CASE IS = ""
       LOCATE 19, 13
       PRINT "Bridge         "

      CASE IS = ""
      IF Python = 0 THEN LOCATE 21, 3: PRINT "Fighting Giant Python... Press <Enter>": WHILE INKEY$ <> CHR$(13): WEND: GOTO Combatpython
      IF Python = 1 THEN LOCATE 19, 13: PRINT "Grass       ": LOCATE 21, 3: PRINT "You see a dead Giant Python... "
     
      CASE IS = ""
      IF Bully = 0 THEN LOCATE 21, 3: PRINT "Fighting Bully... Press <Enter>": WHILE INKEY$ <> CHR$(13): WEND: GOTO Combatbully
      IF Bully = 1 THEN LOCATE 19, 13: PRINT "Grass       ": LOCATE 21, 3: PRINT "You see a dead Bully... "

     
      
 END SELECT
LOOP
