'=========================================================================== ' 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) = " TTTTTTTTTTTTTTTTTTMMTTTTTT" 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 " 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 ": 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 ": 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 ": WHILE INKEY$ <> CHR$(13): WEND IF pyhit <= 4 THEN LOCATE 8, 1: PRINT "The Python missed.. Press ": 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 ": 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 ": 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 ": 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 ": 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 ": WHILE INKEY$ <> CHR$(13): WEND IF bulhit <= 3 THEN LOCATE 8, 1: PRINT "The Bully missed.. Press ": WHILE INKEY$ <> CHR$(13): WEND IF phit >= 3 THEN LOCATE 8, 1: PRINT "You swing at the Bully for"; buldmg; "points of damage! Press ": 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 ": 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 ": 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 ": 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 ": WHILE INKEY$ <> CHR$(13): WEND IF skhit <= 4 THEN LOCATE 8, 1: PRINT "The Skeleton missed.. Press ": WHILE INKEY$ <> CHR$(13): WEND IF phit >= 3 THEN LOCATE 8, 1: PRINT "You swing at the Skeleton for"; skdmg; "points of damage! Press ": 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 ": 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 ": 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 ": 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 ": WHILE INKEY$ <> CHR$(13): WEND IF zmhit <= 4 THEN LOCATE 8, 1: PRINT "The Zombie missed.. Press ": WHILE INKEY$ <> CHR$(13): WEND IF phit >= 4 THEN LOCATE 8, 1: PRINT "You swing at the Zombie for"; zmdmg; "points of damage! Press ": 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 ": 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 ": 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 ": 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 ": WHILE INKEY$ <> CHR$(13): WEND IF ghhit <= 3 THEN LOCATE 8, 1: PRINT "The Ghoul missed.. Press ": WHILE INKEY$ <> CHR$(13): WEND IF phit >= 4 THEN LOCATE 8, 1: PRINT "You swing at the Ghoul for"; ghdmg; "points of damage! Press ": 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 ": 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 ": 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 ": 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 ": WHILE INKEY$ <> CHR$(13): WEND IF drhit <= 2 THEN LOCATE 8, 1: PRINT "The Dragon missed.. Press ": WHILE INKEY$ <> CHR$(13): WEND IF phit >= 4 THEN LOCATE 8, 1: PRINT "You swing at the Dragon for"; drdmg; "points of damage! Press ": 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 ": 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 " 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 " WHILE INKEY$ <> CHR$(13): WEND pmrow = pmrow + 1 Pegg = 0 GOTO status1 END IF PRINT PRINT : PRINT "Press " 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 " 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 " 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 " 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 " 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 " 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 " 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 ": 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 ": 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 ": 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 ": 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 ": 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 ": 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 ": 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 " 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 " 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 " 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 ": 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 " 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 " 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 ": 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 ": 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