Created
December 18, 2015 00:12
-
-
Save turbo/e0dfab0d75bf8dbd8c7a to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
' ****COMBAT ARENA**** | |
' ***Version 1.51*** | |
' **By: Jeff Copperthite** | |
' | |
' | |
' **This game may be distributed freely among friends or whomever, as long as | |
' ****this file remains UNCHANGED!!!!! Please enjoy the game**** | |
' | |
' **Please email any comments or suggestions to:** | |
' *****[email protected]***** | |
' | |
' ***I distribute all of my versions to AOL's file systems. You can find them | |
' **at file search: Copperthite or you can join my mailing list.** | |
' | |
' *****IF YOU WANT TO BE ON MY MAILING PLEASE LEAVE ME FEEDBACK***** | |
' | |
' ***Online help is provided*** | |
' | |
DECLARE SUB help () | |
DECLARE SUB deathfight () | |
DECLARE SUB endgame () | |
DECLARE SUB dragon () | |
DECLARE SUB beginquest () | |
DECLARE SUB reward () | |
DECLARE SUB skillattack () | |
DECLARE SUB quest1 () | |
DECLARE SUB town () | |
DECLARE SUB playerfight () | |
DECLARE SUB skillprint () | |
DECLARE SUB save () | |
DECLARE SUB load () | |
DECLARE SUB levelraise () | |
DECLARE SUB fight1 () | |
DECLARE SUB title () | |
DECLARE SUB startload () | |
DECLARE SUB dostat () | |
DECLARE SUB stat () | |
DECLARE SUB menu () | |
DECLARE SUB verify () | |
COMMON SHARED str, con, dex, in, wis, cha, chp, mhp, mmp, cmp, up, mpheal, heal, hit, attack, defense, weapon, armor, armor$, weapon$, name$, pass, message, choice, gold, bank, cxp, lxp, quest, ski, cod, leave, fr, trek, rewad, level, ehp, qhp, ele, attack1, defense1 | |
DEF fnrnd (a) = INT(RND * a) + 1 | |
RANDOMIZE TIMER | |
ON ERROR GOTO 350 | |
CALL title | |
SCREEN 0 | |
CALL startload | |
IF level <> 0 THEN GOTO 12345 | |
CALL dostat | |
CALL help | |
12345 | |
CALL menu | |
CALL verify | |
GOTO 12345 | |
350 | |
COLOR 15, 0 | |
COLOR 20: PRINT "An error has occured in the program" | |
COLOR 15 | |
PRINT "If you were loading a file was not found or the file is too small for" | |
PRINT "the input required" | |
PRINT "If you tried to visit the hall of honor there is no one in the hall of" | |
PRINT "honor." | |
SLEEP 1 | |
PRINT "you are now returning to the main menu" | |
GOTO 12345 | |
SUB beginquest | |
IF level = 10 THEN | |
quest = 1 | |
up = 6 | |
PRINT "The village people have called you!" | |
SLEEP 1 | |
PRINT "We need you to kill a bone golem that is threating our village" | |
SLEEP 2 | |
PRINT "We will restore your HP's!" | |
chp = mhp | |
SLEEP 2 | |
PRINT "Good luck!" | |
SLEEP 1: CLS | |
CALL quest1 | |
END IF | |
IF level = 20 THEN | |
quest = 2 | |
up = 17 | |
PRINT "The village people have called you again!" | |
SLEEP 1 | |
PRINT "Our prized family statue has been stolen by an evil wyvern" | |
PRINT "We need you to retrieve the statue and kill the wyvern" | |
SLEEP 2 | |
PRINT "Let me give you a boost." | |
chp = mhp | |
SLEEP 2 | |
PRINT "Best of luck to you" | |
SLEEP 1: CLS | |
CALL quest1 | |
END IF | |
IF level = 30 THEN | |
quest = 3 | |
up = 28 | |
PRINT "A cry for help has been let out in the village!" | |
SLEEP 1 | |
PRINT "You rush to the scene after the battles in the arena" | |
SLEEP 1 | |
PRINT " A vampire has come and killed 5 people and taken the king" | |
PRINT "Can you please save him! You are the strongest in the land " | |
PRINT "and you can save the king for us." | |
DO: LOOP WHILE INKEY$ = "" | |
PRINT "You can do one of two things: you can partake tomorrow morning" | |
PRINT "during the daylight and surprise the vampire, however alot of guards" | |
PRINT "will be up if you do, or you can go at night, where there are fewer " | |
PRINT "guards but the vampire will be out." | |
DO: LOOP WHILE INKEY$ = "" | |
DO | |
INPUT "(1) Leave tomorrow or (2) go now", leave | |
IF leave = 1 THEN PRINT "Stay at the inn and recover your HP's" | |
IF leave = 2 THEN PRINT "Take this quick heal" | |
LOOP UNTIL leave = 1 OR leave = 2 | |
chp = mhp | |
PRINT "HP RESTORED!" | |
SLEEP 1 | |
CLS | |
IF leave = 1 THEN fr = 2 | |
IF leave = 2 THEN fr = 5 | |
CALL quest1 | |
END IF | |
IF level = 40 THEN | |
quest = 4 | |
PRINT "Worthy "; name$; "! We are being severly threatened by a VERY tough" | |
PRINT "monster named a tarrasque. He is threatening to kill this village" | |
PRINT "and he constantly says your name in bitter anger. I think for your" | |
PRINT "good and ours that you should go to the mountainside cave and find" | |
PRINT "him before we are lost and our only hope for killing the dragon is" | |
PRINT "lost as well!" | |
DO: LOOP WHILE INKEY$ = "" | |
PRINT "You will definitly need this.." | |
chp = mhp | |
SLEEP 1 | |
PRINT "HP restored!" | |
SLEEP 2 | |
PRINT "Best of luck to you, oh mighty "; name$; "!" | |
SLEEP 2 | |
CLS | |
up = 39 | |
trek = 0 | |
CALL quest1 | |
END IF | |
IF level = 60 THEN | |
PRINT name$; "! You have finally reached level 60! You must speak" | |
PRINT "to the king. Follow me" | |
SLEEP 2 | |
PRINT "You are lead to the kings room" | |
DO: LOOP UNTIL INKEY$ <> "" | |
PRINT "KING:You have shown that you are very worthy of defeating and" | |
PRINT "ridding the land of this dragon." | |
DO: LOOP UNTIL INKEY$ <> "" | |
PRINT "QUEEN:If you don't think that you are strong enough to face" | |
PRINT "the dragon now you can get stronger at the arena and face the " | |
PRINT "dragon when you think you are strong enough." | |
DO: LOOP UNTIL INKEY$ <> "" | |
PRINT "Good luck when you decide to fight the dragon." | |
PRINT "Until then take this 2000000 gold" | |
gold = gold + 2000000 | |
SLEEP 3 | |
END IF | |
END SUB | |
SUB deathfight | |
DO | |
dmg = attack + fnrnd(10) - defense1 | |
IF dmg <= 0 THEN dmg = 0 | |
PRINT "You hit for"; dmg; "damage" | |
ehp = ehp - dmg | |
IF ehp < 1 THEN EXIT DO | |
dmg = attack1 + fnrnd(10) - defense | |
IF dmg <= 0 THEN dmg = 0 | |
PRINT "You are hit for"; dmg; "damage" | |
chp = chp - dmg | |
LOOP WHILE ehp > 0 AND chp > 0 | |
IF ehp < 1 THEN EXIT SUB | |
IF chp < 1 THEN | |
IF quest <> 0 THEN | |
PRINT "You have lost the deathfight" | |
PRINT "TEN PERCENT OF XP WAS"; | |
COLOR 4: PRINT " LOST" | |
COLOR 15: PRINT "HALF OF GOLD WAS"; | |
COLOR 4: PRINT " LOST" | |
COLOR 15 | |
cxp = INT(cxp - (cxp * .1)) | |
gold = gold \ 2 | |
EXIT SUB | |
END IF | |
PRINT "You fall to the ground..." | |
SLEEP 1 | |
PRINT "You look up at your adversary, who reaches for a long sword. He brings" | |
PRINT "it up and into your chest, you actually feel your lungs bleed as everything" | |
PRINT "goes black......" | |
SLEEP 3 | |
PRINT "YOU HAVE LOST THE DEATHFIGHT!" | |
PRINT "TEN PERCENT OF XP WAS"; | |
COLOR 4: PRINT " LOST" | |
COLOR 15: PRINT "HALF OF GOLD WAS"; | |
COLOR 4: PRINT " LOST" | |
COLOR 15 | |
chp = mhp | |
cxp = INT(cxp - (cxp * .1)) | |
gold = gold \ 2 | |
CALL save | |
SYSTEM | |
END IF | |
END SUB | |
SUB dostat | |
IF level > 0 THEN EXIT SUB | |
INPUT "Tell me your name....", name$ | |
54321 | |
PRINT "Now you will enter your password....ALL PASSWORDS HAVE TO BE NUMBERS!" | |
COLOR 3, 3: INPUT pass | |
COLOR 15, 0: PRINT "Now type it again for confirmation" | |
COLOR 3, 3: INPUT pass2 | |
COLOR 15, 0 | |
IF pass <> pass2 THEN PRINT "The passwords are different!": GOTO 54321 | |
PRINT "Now ability scores will be generated" | |
hp = fnrnd(10) + 10 | |
mp = fnrnd(4) | |
str = 3 | |
dex = 3 | |
con = 3 | |
wis = 3 | |
in = 3 | |
cha = 3 | |
dis = 55 | |
heal = 5 | |
mpheal = 1 | |
lxp = 200 | |
1 | |
CLS | |
level = 1 | |
PRINT "You have"; dis; "ability points left to distribute" | |
PRINT "Current status: Str:"; str; " Dex:"; dex; " Con:"; con; " Wis:"; wis; " int:"; in; "Cha:"; cha | |
INPUT "What ability?(1,str,2,dex,3,con,4,wis,5,int,6,cha)", raise | |
IF raise = 1 THEN | |
INPUT "How much do you want to put into this ability?", raise | |
IF raise > dis THEN PRINT "You don't have that much ability points": GOTO 1 | |
IF (str + raise) > 18 THEN PRINT "You can only have 18 points in one ability!": GOTO 1 | |
str = str + raise | |
dis = dis - raise | |
END IF | |
IF raise = 2 THEN | |
INPUT "How much do you want to put into this ability?", raise | |
IF raise > dis THEN PRINT "You don't have that much ability points": GOTO 1 | |
IF (dex + raise) > 18 THEN PRINT "You can only have 18 points in one ability!": GOTO 1 | |
dex = dex + raise | |
dis = dis - raise | |
END IF | |
IF raise = 3 THEN | |
INPUT "How much do you want to put into this ability?", raise | |
IF raise > dis THEN PRINT "You don't have that much ability points!": GOTO 1 | |
IF (con + raise) > 18 THEN PRINT "You can only have 18 points in one ability!": GOTO 1 | |
con = con + raise | |
dis = dis - raise | |
END IF | |
IF raise = 4 THEN | |
INPUT "How much do you want to put into this ability?", raise | |
IF raise > dis THEN PRINT "You don't have that much ability points!": GOTO 1 | |
IF (wis + raise) > 18 THEN PRINT "You can only have 18 points in one ability!": GOTO 1 | |
wis = wis + raise | |
dis = dis - raise | |
END IF | |
IF raise = 5 THEN | |
INPUT "How much do you want to put into this ability?", raise | |
IF raise > dis THEN PRINT "You don't have that much ability points!": GOTO 1 | |
IF (in + raise) > 18 THEN PRINT "You can only have 18 points in one ability!": GOTO 1 | |
in = in + raise | |
dis = dis - raise | |
END IF | |
IF raise = 6 THEN | |
INPUT "How much do you want to put into this ability?", raise | |
IF raise > dis THEN PRINT "You don't have that much ability points!": GOTO 1 | |
IF (cha + raise) > 18 THEN PRINT "You can only have 18 points in one ability!": GOTO 1 | |
cha = cha + raise | |
dis = dis - raise | |
END IF | |
IF dis > 0 THEN GOTO 1 | |
level = 1 | |
cxp = 0 | |
lxp = 200 | |
chp = hp | |
mhp = hp | |
cmp = mp | |
mmp = mp | |
heal = 5 | |
mpheal = 1 | |
armor = 3 | |
armor$ = "Thin leather armor" | |
weapon = 7 | |
weapon$ = "Copper sword" | |
gold = 400 | |
bank = 0 | |
END SUB | |
SUB dragon | |
60 | |
PRINT "You go to tell the townspeople that you are going to fight the dragon.." | |
SLEEP 2 | |
COLOR 5: PRINT "KING: We know you can do it,"; name$; " , so do this village proud and " | |
PRINT "rid the land of Rakies." | |
DO: LOOP WHILE INKEY$ = "" | |
COLOR 31: INPUT "Are you SURE you are going to fight the dragon? There is no turning back", y$ | |
IF UCASE$(LEFT$(y$, 1)) = "N" THEN EXIT SUB | |
COLOR 15: PRINT "QUEEN: You must take this elixer before you go." | |
chp = mhp | |
cmp = mmp | |
SLEEP 3 | |
COLOR 22: PRINT "HP and MP restored!" | |
SLEEP 2 | |
COLOR 15: PRINT "You WILL do it "; name$; "!" | |
SLEEP 4 | |
CLS | |
PRINT "After about 1 hour of searching you find the dragon." | |
SLEEP 1 | |
PRINT UCASE$(name$); ": Rakies, you must die because of all of your raids" | |
DO: LOOP WHILE INKEY$ = "" | |
COLOR 4: PRINT "RAKIES: Neeeevvvveeerrr human. You dare to challenge me? Prepare to " | |
PRINT "have an easy defeat!" | |
hit1 = 87: ele = 5: mst = 62: mdx = 58: mcn = 43: mws = 25: min = 73: mch = 34: attack1 = 254: defense1 = 129: xp = 10000: qhp = 50000: ehp = qhp | |
COLOR 20: PRINT "Now the REAL FIGHT BEGINS...." | |
COLOR 15 | |
SLEEP 2 | |
61 | |
CLS | |
PRINT "You:"; | |
COLOR 15 | |
IF chp <= INT(mhp * .5) THEN COLOR 12 | |
IF chp <= INT(mhp * .15) THEN COLOR 20 | |
PRINT chp; | |
COLOR 15 | |
PRINT "/"; mhp | |
PRINT "[A]ttack" | |
PRINT "[S]kill" | |
PRINT "[H]eal" | |
PRINT "[M]p heal" | |
INPUT "command>", attack$ | |
attack$ = UCASE$(attack$) | |
SELECT CASE attack$ | |
CASE "M" | |
res = INT(wis * .75 + fnrnd(5)) | |
PRINT res; " MP's restored!" | |
cmp = cmp + res | |
mpheal = mpheal - 1 | |
CASE "S" | |
CALL skillprint | |
IF cod = 0 THEN GOTO 61 | |
CALL skillattack | |
CASE "H" | |
IF heal < 1 THEN GOTO 61 | |
IF chp = mhp THEN PRINT "You don't need a heal!": GOTO 61 | |
hpheal = fnrnd(5) + (in + con + wis) | |
COLOR 11: PRINT hpheal; " HP's healed!" | |
COLOR 15 | |
chp = chp + hpheal | |
IF chp > mhp THEN chp = mhp | |
heal = heal - 1 | |
GOTO 62 | |
CASE "A" | |
dmg = fnrnd(10) + attack | |
IF dmg <= defense1 THEN SOUND (dmg + 500), 3: PRINT "Your attack does no damage": GOTO 62 | |
dmg = INT(dmg - defense1) | |
re = fnrnd(100) | |
IF re <= hit THEN | |
dmg = dmg * 2 | |
COLOR 20: PRINT "CRITICAL!" | |
COLOR 15 | |
SOUND (dmg + 500), 3 | |
PRINT "You hit the monster for"; dmg; "hit points!" | |
END IF | |
IF re > hit THEN SOUND (dmg + 500), 3: PRINT "you inflicted "; dmg; "hp on the monster" | |
ehp = ehp - dmg | |
CASE ELSE | |
GOTO 61 | |
END SELECT | |
IF ehp <= 0 THEN | |
COLOR 31: PRINT "you have defeated the monster!" | |
COLOR 15 | |
cxp = cxp + xp | |
IF cxp >= lxp THEN CALL levelraise | |
OPEN "O", 1, "Honor": WRITE #1, name$: CLOSE #1 | |
CALL endgame | |
END IF | |
62 | |
at = fnrnd(3) | |
IF at = 1 THEN | |
COLOR 4: PRINT "Rakies attacks!" | |
COLOR 15 | |
dmg = attack1 + fnrnd(10) - defense | |
IF dmg <= 0 THEN SOUND (dmg + 500), 3: PRINT "It did no damage!": DO: LOOP WHILE INKEY$ = "": GOTO 61 | |
re = fnrnd(100) | |
IF re <= hit1 THEN | |
COLOR 20: PRINT "CRITICAL!!!" | |
SOUND (dmg + 500), 3 | |
dmg = dmg * 3 + fnrnd(2) | |
COLOR 4: PRINT "Rakies hit you for"; dmg; " damage" | |
COLOR 15 | |
chp = chp - dmg | |
END IF | |
IF re > hit1 THEN | |
SOUND (dmg + 500), 3 | |
COLOR 4: PRINT "Rakies hit you for"; dmg; " damage" | |
COLOR 15 | |
chp = chp - dmg | |
END IF | |
END IF | |
IF at = 2 THEN | |
COLOR 20: PRINT "The dragon breathes fire at you!" | |
COLOR 15 | |
dmg = attack1 + (mws * 3) + fnrnd(20) | |
IF dmg <= 0 THEN SOUND (dmg + 500), 3: PRINT "The attack did no damage!": DO: LOOP WHILE INKEY$ = "": GOTO 61 | |
SOUND (dmg + 500), 3 | |
COLOR 4: PRINT "The fire nailed you for"; dmg; "damage" | |
COLOR 15 | |
chp = chp - dmg | |
END IF | |
IF at = 3 THEN | |
COLOR 25: PRINT "The dragon rises...." | |
COLOR 15 | |
dmg = attack1 + INT(attack1 * .65) + fnrnd(20) | |
SOUND (dmg + 500), 3 | |
COLOR 2 | |
PRINT "The dive drops your defenses and hits you for"; dmg; " damage" | |
COLOR 15 | |
chp = chp - dmg | |
END IF | |
IF chp <= 0 THEN | |
COLOR 14: PRINT "You lost!....get stronger first." | |
SYSTEM | |
END IF | |
DO: LOOP WHILE INKEY$ = "" | |
GOTO 61 | |
END SUB | |
SUB endgame | |
PRINT "You have defeated the dragon? Unbeleiveable!" | |
DO: LOOP WHILE INKEY$ = "" | |
PRINT "QUEEN: You have done the unexpectable, be sure to take care of other" | |
PRINT "lands as well!" | |
DO: LOOP WHILE INKEY$ = "" | |
PRINT "Your name is now in the hall of honor, it will remain there until some-" | |
PRINT "one else decides to kill the dragon next." | |
DO: LOOP WHILE INKEY$ = "" | |
PRINT "Thanks for playing COMBAT ARENA!" | |
PRINT "Credits:" | |
SLEEP 1 | |
CLS | |
PRINT "Programming: Jeff Copperthite" | |
PRINT "Concept: Jeff Copperthite and Alan Kingsley" | |
PRINT "Special thanks: [email protected], [email protected], [email protected]" | |
PRINT "[email protected], Marc Doherty" | |
PRINT "Couldn't have done it without these guys!" | |
SLEEP 3 | |
PRINT "Be sure to give your suggestions to Jeff!" | |
PRINT "Thanks for playing again.." | |
SYSTEM | |
END SUB | |
SUB fight1 | |
mst = fnrnd(15) + INT(up * .75) | |
mdx = fnrnd(15) + INT(up * .75) | |
mcn = fnrnd(15) + INT(up * .75) | |
min = fnrnd(15) + INT(up * .75) | |
mws = fnrnd(15) + INT(up * .75) | |
mch = fnrnd(15) + INT(up * .75) | |
attack1 = INT((mst + up) * 1.5) | |
defense1 = ((mdx \ 2) + up) | |
raigold = INT((((level * 3.5) + (up * 3.5)) + fnrnd(10) + 200) * 1.5 + fnrnd(2)) + (125 * up) | |
ele = fnrnd(6) | |
leve = up | |
qhr = ((up \ 5) + (mst \ 2)) | |
IF qhr > 99 THEN qhr = 99 | |
qhp = fnrnd(10) + INT((mcn * 2) + (up * 16.2) + (up * (mst \ 3))) | |
ehp = qhp | |
xp = (up + (qhp \ 2)) + (mst + mdx + min + mws + mcn + mch \ 6) | |
PRINT "Level:"; leve | |
PRINT "HP:"; qhp; "/"; qhp | |
IF ele = 1 THEN PRINT "Fire" | |
IF ele = 2 THEN PRINT "Water" | |
IF ele = 3 THEN PRINT "Earth" | |
IF ele = 4 THEN PRINT "Air" | |
IF ele = 5 THEN PRINT "Darkness" | |
IF ele = 6 THEN PRINT "Light" | |
PRINT " Hit%:"; qhr | |
PRINT " Attack:"; attack1 | |
PRINT " Defense:"; defense1 | |
PRINT " Strength: "; mst | |
PRINT " Dexterity: "; mdx | |
PRINT " Intelligence: "; min | |
PRINT " Wisdom: "; mws | |
PRINT " Constitution: "; mcn | |
PRINT " Charisma: "; mch | |
PRINT " Xp value: "; xp | |
PRINT " Gold:"; raigold | |
INPUT "Fight this monster?", y$ | |
IF y$ = "N" OR y$ = "n" THEN EXIT SUB | |
PRINT "You will get"; xp; " experience for defeating this monster" | |
PRINT "LET'S FIGHT!" | |
ehp = qhp | |
4 | |
CLS | |
PRINT "You:"; | |
COLOR 15 | |
IF chp <= INT(mhp * .5) THEN COLOR 12 | |
IF chp <= INT(mhp * .15) THEN COLOR 20 | |
PRINT chp; | |
COLOR 15 | |
PRINT "/"; mhp | |
IF quest = 1 THEN COLOR 0 | |
PRINT "Monster:"; ehp; "/"; qhp | |
COLOR 15 | |
PRINT "[A]ttack" | |
PRINT "[S]kill" | |
PRINT "[F]lee" | |
PRINT "[D]eathfight" | |
PRINT "[H]eal" | |
PRINT "[M]p heal" | |
INPUT "command>", attack$ | |
attack$ = UCASE$(attack$) | |
SELECT CASE attack$ | |
CASE "D" | |
CALL deathfight | |
CASE "M" | |
res = INT(wis * .75 + fnrnd(5)) | |
PRINT res; " MP's restored!" | |
cmp = cmp + res | |
mpheal = mpheal - 1 | |
CASE "F" | |
fle = dex + wis + cha | |
elf = mdx + mws + mch | |
IF fle > elf THEN PRINT "you flee from the battle": EXIT SUB | |
IF fle <= elf THEN PRINT "you can't run!" | |
CASE "H" | |
IF heal < 1 THEN GOTO 4 | |
IF chp = mhp THEN PRINT "You don't need a heal!": GOTO 4 | |
hpheal = fnrnd(5) + (in + con + wis) | |
COLOR 6: PRINT hpheal; " HP's healed!" | |
COLOR 15 | |
chp = chp + hpheal | |
IF chp > mhp THEN chp = mhp | |
heal = heal - 1 | |
GOTO 5 | |
CASE "S" | |
CALL skillprint | |
IF cod = 0 THEN GOTO 4 | |
CALL skillattack | |
CASE "A" | |
dmg = fnrnd(10) + attack | |
dmg = INT(dmg - defense1) | |
IF dmg <= 0 THEN SOUND (dmg + 500), 3: PRINT "Your attack does no damage": GOTO 5 | |
re = fnrnd(100) | |
IF re <= hit THEN | |
dmg = dmg * 3 + fnrnd(2) | |
COLOR 20: PRINT "CRITICAL!" | |
SOUND (dmg + 500), 3 | |
COLOR 15: PRINT "You hit the monster for"; dmg; "hit points!" | |
END IF | |
IF re > hit THEN SOUND (dmg + 500), 3: PRINT "you inflicted "; dmg; "hp on the monster" | |
ehp = ehp - dmg | |
IF ehp <= 0 THEN | |
COLOR 25: PRINT "you have defeated the monster!" | |
COLOR 15 | |
gold = gold + raigold | |
cxp = cxp + xp | |
IF cxp >= lxp THEN CALL levelraise | |
EXIT SUB | |
END IF | |
CASE ELSE | |
GOTO 4 | |
END SELECT | |
IF ehp <= 0 THEN | |
COLOR 25: PRINT "you have defeated the monster!" | |
COLOR 15 | |
gold = gold + raigold | |
cxp = cxp + xp | |
IF cxp >= lxp THEN CALL levelraise | |
EXIT SUB | |
END IF | |
5 | |
PRINT "The monster attacks!" | |
dmg = fnrnd(10) + attack1 | |
dmg = INT(dmg - defense) | |
IF dmg <= 0 THEN SOUND (dmg + 500), 3: PRINT "The attack does no damage": DO: LOOP WHILE INKEY$ = "": GOTO 4 | |
re = fnrnd(100) | |
IF re <= qhr THEN | |
dmg = dmg * 3 + fnrnd(2) | |
COLOR 20: PRINT "CRITICAL!" | |
SOUND (dmg + 500), 3 | |
COLOR 4: PRINT "The monster hit you for"; dmg; " hit points." | |
COLOR 15 | |
END IF | |
IF re > qhr THEN SOUND (dmg + 500), 3: COLOR 4: PRINT "The monster hits you for"; dmg; " hp" | |
COLOR 15 | |
chp = chp - dmg | |
IF chp <= 0 THEN | |
INPUT "You lost!...keep playing?", e$ | |
gold = gold \ 1.2 | |
cxp = INT(cxp - (cxp * .01)) | |
IF gold <= 0 THEN gold = 0 | |
chp = mhp | |
IF e$ = "N" OR e$ = "n" THEN SYSTEM | |
END IF | |
DO: LOOP WHILE INKEY$ = "" | |
GOTO 4 | |
END SUB | |
SUB help | |
560 | |
CLS | |
PRINT "[1] What is COMBAT ARENA?" | |
PRINT "[2] Help with stats" | |
PRINT "[3] Fighting" | |
PRINT "[4] Overview of skills" | |
PRINT "[5] Using Playerfights" | |
PRINT "[6] The town" | |
PRINT "[7] Getting your level up (and what happens)" | |
PRINT "[8] Tips" | |
PRINT "[9] Quit COMBAT ARENA help" | |
INPUT menu1 | |
SELECT CASE menu1 | |
CASE 1 | |
PRINT "COMBAT ARENA is a text based fighting game for qbasic. This appeals" | |
PRINT "mostly to RPG fans but I made this game almost totally based on" | |
PRINT "fighting. I have gotten lots of reviews on this game that were good" | |
PRINT "Please enjoy the game." | |
PRINT " - Jeff Copperthite" | |
DO: LOOP WHILE INKEY$ = "" | |
CASE 2 | |
PRINT "Name: Your characters name" | |
PRINT "Weapon: Your current sword in hand" | |
PRINT "Armor: Your current armor" | |
PRINT "Attack: The rate of damage you can cause" | |
PRINT "Defense: How much damage you can absorb from an attack" | |
PRINT "Critical hit %: Chance of one of your strikes being critical (3X damage!)" | |
PRINT "HP: How much damage you can take before dying / max HP's" | |
PRINT "MP: How much mystic force you have left / Max MP's" | |
PRINT "Strength: Helps with attack and learning sword skills" | |
PRINT "Dexterity: Helps defense and learning quickness skills" | |
PRINT "Constitution: Your health rating..helps with gaining max HP's" | |
PRINT "Wisdom: Your mystic power. Helps with learning magic spells" | |
PRINT "Intelligence: How smart you are..helps with healing spells(mostly)" | |
PRINT "Charisma: Your personal charm...helps with fleeing battles and healing" | |
PRINT "Experience: Your number of xp points from defeating monsters." | |
PRINT "For Level up: How much xp you need to raise a level" | |
PRINT "Gold in hand...gold in bank: Pretty self explanitory <g>" | |
PRINT "Healings: How many healing potions you have in your hand" | |
PRINT "Ethers: How many Ether potions you have in your hand" | |
DO: LOOP WHILE INKEY$ = "" | |
CASE 3 | |
PRINT "When you fight you are either fighting on a quest or in the arena" | |
PRINT "gaining xp. You have 6 choices in battle...attack, skills, flee,deathfight" | |
PRINT "MP heal, and heal. Skills will call up your current skills for use. Attack" | |
PRINT "is a regular attack using your current weapon. Deathfight is a fight" | |
PRINT "to the death. If you die in a deathfight you will suffer consequences" | |
PRINT "like loss of ten percent of xp and half of your gold. MP heal and heal" | |
PRINT "will use one of your ethers or healings respectively. Be careful when" | |
PRINT "using deathfight..." | |
PRINT " When you defeat a monster you will gain xp for defeating the monster" | |
PRINT "and some gold. If you lose you will have an option to try again. " | |
PRINT "You will lose gold and xp if you do get defeated. " | |
DO: LOOP WHILE INKEY$ = "" | |
CASE 4 | |
PRINT "You have two groups of skills...magic and physical skills. Each " | |
PRINT "requires a certain ability or abilities to be at a specified point." | |
PRINT "For example to learn Quad Attack you would need a strength of 31" | |
PRINT "or higher." | |
PRINT " Each skill needs a certain amount of mystic power to invoke. Some" | |
PRINT "of the more powerful skills (like flare and dark side) will need you" | |
PRINT "to get many of your abilities to a certain point." | |
PRINT " Skills are an important part of this game. Be sure to learn as many" | |
PRINT "skills as you can!" | |
DO: LOOP WHILE INKEY$ = "" | |
CASE 5 | |
PRINT "Playerfights are an interesting and neat part of the game. What it is" | |
PRINT "is it allows you to fight another saved character and, if successful," | |
PRINT "win gold and xp. The character you just killed will be rendered dead" | |
PRINT "until the player is loaded again. This is cool if you have a brother" | |
PRINT "or sister that plays this game as well <g>" | |
PRINT " To use playerfights you have to have the knowledge of knowing the" | |
PRINT "character's name. When you successfully have a character ready to fight" | |
PRINT "it will tell you the current weapon and armor of that character. You" | |
PRINT "will be given a chance to back out." | |
PRINT " During the fight you will not be able to use any skills. But the" | |
PRINT "fight to the death option is still there. Fight on as if this was" | |
PRINT "an arena battle (just keep an eye on your HP's)." | |
PRINT " Sometimes your opponet will purposely use a healing to keep HP's" | |
PRINT "up. That is why it is good to carry around a few healings." | |
PRINT " If you win you will gain all gold in your opponets hand, and" | |
PRINT "ten percent of your opponets xp. If you lose all of the above will" | |
PRINT "happen to you!" | |
DO: LOOP WHILE INKEY$ = "" | |
CASE 6 | |
PRINT "The town is the spot where you buy all of your weapons, armor, ethers," | |
PRINT "and healings. You are given the option of going to the bank,JR's " | |
PRINT "swords, MAD armor, Alan's professional healing shop, and the hall" | |
PRINT "of honor. Here is a brief explanation of the town." | |
PRINT " Bank: This is where you keep your gold. The bank is useful so you can" | |
PRINT "keep your gold safe from attackers" | |
PRINT " Weapon shop: This is where you can buy new swords. You can also sell" | |
PRINT "your old sword for some extra dough. " | |
PRINT " Armor shop: This is where you can buy new armor. You can also sell" | |
PRINT "your old armor for extra money" | |
PRINT " Healing shop: This is where you buy healings, ethers, and get your" | |
PRINT "wounds healed. An essential in the town" | |
PRINT " Hall of Honor: This shows the last person that has beaten the dragon" | |
DO: LOOP WHILE INKEY$ = "" | |
CASE 7 | |
PRINT "When you get your level up you basically go up in skill. You have" | |
PRINT "3 ability points to distribute through your 6 abilities. Then you" | |
PRINT "also go up in max HP's and MP's. Your base attack and defense are " | |
PRINT "raised by 1, and other things may change according to ability " | |
PRINT "changes (attack or defense may go up more, your critical hit % may" | |
PRINT "go up, you may learn a new skill or two)." | |
DO: LOOP WHILE INKEY$ = "" | |
CASE 8 | |
PRINT "- Keep monster toughness around your current level. You gain more" | |
PRINT " gold for defeating a tougher monster." | |
PRINT "- Keep a high stock of healings incase you get attacked." | |
PRINT "- Note when you go on quests take some ether's along because you may" | |
PRINT " need MP's when you least expect it" | |
PRINT "- Keep your gold in the bank to keep it safe from attackers" | |
PRINT "- NEVER FORGET YOUR PASSWORD!" | |
PRINT "- Join Jeff's mailing list on AOL!(send me mail at [email protected])" | |
PRINT " ^--Just had to put it in <g>" | |
DO: LOOP WHILE INKEY$ = "" | |
CASE 9 | |
EXIT SUB | |
END SELECT | |
GOTO 560 | |
END SUB | |
SUB levelraise | |
COLOR 17: PRINT "You have raised a level!" | |
COLOR 15 | |
level = level + 1 | |
dis = 3 | |
324 | |
PRINT "You have"; dis; "points left" | |
INPUT "(1.Str 2.Dex 3.Con 4.Wis 5.Int 6.Cha)", ab | |
SELECT CASE ab | |
CASE 1 | |
str = str + 1 | |
dis = dis - 1 | |
CASE 2 | |
dex = dex + 1 | |
dis = dis - 1 | |
CASE 3 | |
con = con + 1 | |
dis = dis - 1 | |
CASE 4 | |
wis = wis + 1 | |
dis = dis - 1 | |
CASE 5 | |
in = in + 1 | |
dis = dis - 1 | |
CASE 6 | |
cha = cha + 1 | |
dis = dis - 1 | |
END SELECT | |
IF dis > 0 THEN GOTO 324 | |
raihp = fnrnd(10) + con + (con \ 2) | |
raimp = fnrnd(2) + (wis \ 7) | |
CLS | |
PRINT "Your max HP's are raised by"; raihp | |
PRINT "Your max MP's are raised by"; raimp | |
mhp = mhp + raihp | |
mmp = mmp + raimp | |
lxp = lxp + (level * 171) | |
cmp = mmp | |
CALL stat | |
IF level = 10 OR level = 20 OR level = 30 OR level = 40 OR level = 60 THEN CALL beginquest | |
END SUB | |
SUB load | |
INPUT "Tell me your name....", name$ | |
PRINT "Enter your password" | |
COLOR 3, 3: INPUT upass | |
COLOR 15, 0 | |
OPEN "I", 1, name$ | |
INPUT #1, up, str, dex, con, in, wis, cha, heal, chp, mhp, cxp, lxp, level, cmp, mmp, defense, attack, hit, armor, weapon, bank, gold, message, pass, armor$, weapon$, mpheal | |
CLOSE | |
IF upass <> pass THEN PRINT "WRONG PASSWORD!": CLEAR | |
END SUB | |
SUB menu | |
CLOSE | |
IF cxp > lxp THEN CALL levelraise | |
IF message = 1 THEN | |
PRINT "*****BULLETIN*****" | |
SLEEP 2 | |
PRINT "While away you were attacked and got killed!" | |
SLEEP 1 | |
END IF | |
IF message = 2 THEN | |
PRINT "*****BULLETIN*****" | |
SLEEP 2 | |
PRINT "While away you were attacked and killed the challenger in self defense!" | |
SLEEP 1 | |
END IF | |
message = 0 | |
PRINT "(1) See stat screen" | |
PRINT "(2) Fight monster" | |
PRINT "(3) Change monster level" | |
PRINT "(4) Use healing" | |
PRINT "(5) Save character" | |
PRINT "(6) Load character" | |
PRINT "(7) View skills" | |
PRINT "(8) Venture to town" | |
PRINT "(9) Fight another player" | |
PRINT "(10) Use ether" | |
PRINT "(11) Quit COMBAT ARENA" | |
PRINT "(12) Help on COMBAT ARENA" | |
IF level > 59 THEN PRINT "(13) Fight Rakies" | |
INPUT choice | |
END SUB | |
SUB playerfight | |
INPUT "What is the name of the character you wish to fight?", name2$ | |
IF UCASE$(name2$) = UCASE$(name$) THEN PRINT "You can't fight yourself!": EXIT SUB | |
IF name2$ = "" THEN EXIT SUB | |
OPEN "I", 1, name2$: INPUT #1, up1, str1, dex1, con1, in1, wis1, cha1, heal1, chp1, mhp1, cxp1, lxp1, level1, cmp1, mmp1, defense1, attack1, hit1, armor1, weapon1, bank1, gold1, message1, pass5, armor1$, weapon1$, mpheal1: CLOSE #1 | |
IF message1 = 1 THEN PRINT "This character is dead already!": EXIT SUB | |
PRINT "The character you are going to fight has "; armor1$; " on and" | |
PRINT "is holding a "; weapon1$; " for a weapon." | |
DO: LOOP WHILE INKEY$ = "" | |
INPUT "Are you sure you want to fight this character?", s$ | |
IF UCASE$(s$) = "N" THEN EXIT SUB | |
PRINT "Here we go! "; name$; " vs. "; name2$ | |
chp1 = mhp1 | |
1000 | |
PRINT name$; " :"; | |
COLOR 15 | |
IF chp <= INT(mhp * .5) THEN COLOR 12 | |
IF chp <= INT(mhp * .15) THEN COLOR 20 | |
PRINT chp; "/"; | |
COLOR 15 | |
PRINT mhp | |
PRINT name2$; " :"; | |
COLOR 15 | |
IF chp1 <= INT(mhp1 * .5) THEN COLOR 12 | |
IF chp1 <= INT(mhp1 * .15) THEN COLOR 20 | |
PRINT chp1; "/"; | |
COLOR 15 | |
PRINT mhp1 | |
PRINT "You attack" | |
PRINT "[a]ttack" | |
PRINT "[h]eal" | |
PRINT "[f]ight to the death!" | |
PRINT "[r]un" | |
INPUT "command>", attack$ | |
IF (attack$ = "h" OR attack$ = "H") AND heal > 0 THEN | |
hpheal = cha + in + wis + con | |
PRINT hpheal; " HP's healed!" | |
chp = chp + hpheal | |
heal = heal - 1 | |
IF chp > mhp THEN chp = mhp | |
END IF | |
IF attack$ = "f" OR attack$ = "F" THEN | |
DO | |
dmg = attack - defense1 + fnrnd(10) | |
IF dmg < 0 THEN dmg = 0 | |
PRINT "You hit for"; dmg; "damage" | |
chp1 = chp1 - dmg | |
dmg = attack1 - defense + fnrnd(10) | |
IF dmg < 0 THEN dmg = 0 | |
PRINT "You are hit for"; dmg; "damage" | |
chp = chp - dmg | |
LOOP WHILE (chp > 0 AND chp1 > 0) | |
IF chp1 <= 0 THEN | |
PRINT "You have defeated "; name2$ | |
SLEEP 1 | |
xpgain = INT(cxp1 - (cxp1 * .9)) | |
PRINT name2$; " has "; gold1; "gold..now it is yours!" | |
PRINT "You earn"; xpgain; " experience" | |
gold = gold + gold1 | |
gold1 = 0 | |
cxp = cxp + xpgain | |
cxp1 = cxp1 - xpgain | |
chp1 = mhp1 | |
message1 = 1 | |
GOTO saveend | |
END IF | |
IF chp <= 0 THEN | |
PRINT "You have been defeated by "; name2$ | |
SLEEP 1 | |
PRINT "TEN PERCENT OF XP WAS LOST" | |
PRINT "ALL GOLD ON HAND WAS LOST AND GIVEN TO "; UCASE$(name2$) | |
gold1 = gold1 + gold | |
xpgain = INT(cxp - (cxp * .9)) | |
cxp1 = cxp1 + xpgain | |
cxp = cxp - xpgain | |
chp = mhp | |
gold = 0 | |
message1 = 2 | |
GOTO saveend | |
END IF | |
END IF | |
IF attack$ = "r" OR attack$ = "R" THEN | |
IF dex < dex1 THEN | |
PRINT name2$; " trips you as you scurry away, taking"; INT(gold - (gold * .9)); " gold away" | |
PRINT "from you." | |
goldloss = INT(gold - (gold * .9)) | |
gold = gold - goldloss | |
gold1 = gold1 + goldloss | |
GOTO saveend | |
END IF | |
IF dex >= dex1 THEN | |
PRINT "You use your quickness to run away from the battle" | |
GOTO saveend | |
END IF | |
END IF | |
IF attack$ = "a" OR attack$ = "A" THEN | |
PRINT "You attack" | |
dmg = attack + fnrnd(10) - defense1 | |
IF dmg <= 0 THEN SOUND (dmg + 500), 3: PRINT "You didn't do damage!": GOTO 2000 | |
re = fnrnd(100) | |
IF re <= hit THEN | |
COLOR 20: PRINT "CRITICAL!" | |
COLOR 15 | |
dmg = dmg * 3 + fnrnd(2) | |
SOUND (dmg + 500), 3 | |
PRINT "You did"; dmg; " damage to "; name2$ | |
chp1 = chp1 - dmg | |
END IF | |
IF re > hit THEN | |
SOUND (dmg + 500), 3 | |
PRINT "You did"; dmg; " damage to "; name2$ | |
chp1 = chp1 - dmg | |
END IF | |
END IF | |
IF chp1 <= 0 THEN | |
PRINT "You have defeated "; name2$ | |
SLEEP 1 | |
xpgain = INT(cxp1 - (cxp1 * .9)) | |
PRINT name2$; " has "; gold1; "gold..now it is yours!" | |
PRINT "You earn"; xpgain; " experience" | |
gold = gold + gold1 | |
gold1 = 0 | |
cxp = cxp + xpgain | |
cxp1 = cxp1 - xpgain | |
chp1 = mhp1 | |
message1 = 1 | |
GOTO saveend | |
END IF | |
2000 | |
attac = fnrnd(10) | |
IF attac = 10 AND heal1 < 1 THEN GOTO 2000 | |
IF attac = 10 THEN | |
PRINT name2$; " takes a heal!" | |
SLEEP 1 | |
hpheal = cha1 + in1 + wis1 + con1 | |
PRINT hpheal; "HP's healed!" | |
chp1 = chp1 + hpheal | |
heal1 = heal1 - 1 | |
IF chp1 > mhp1 THEN chp1 = mhp1 | |
END IF | |
IF attac <> 10 THEN | |
PRINT name2$; " attacks you!" | |
dmg = attack1 + fnrnd(10) - defense | |
IF dmg <= 0 THEN SOUND (dmg + 500), 3: PRINT "The attack did no damage!": GOTO 1000 | |
re = fnrnd(100) | |
IF re <= hit1 THEN | |
COLOR 20: PRINT "CRITICAL!" | |
COLOR 15 | |
dmg = dmg * 3 + fnrnd(2) | |
SOUND (dmg + 500), 3 | |
PRINT name2$; " hit you for"; dmg; " damage" | |
chp = chp - dmg | |
END IF | |
IF re > hit1 THEN | |
SOUND (dmg + 500), 3 | |
PRINT name2$; " hit you for"; dmg; " damage" | |
chp = chp - dmg | |
END IF | |
END IF | |
IF chp <= 0 THEN | |
PRINT "You have been defeated by "; name2$ | |
SLEEP 1 | |
PRINT "TEN PERCENT OF XP WAS LOST" | |
PRINT "ALL GOLD ON HAND WAS LOST AND GIVEN TO "; UCASE$(name2$) | |
gold1 = gold1 + gold | |
xpgain = INT(cxp - (cxp * .9)) | |
cxp1 = cxp1 + xpgain | |
cxp = cxp - xpgain | |
chp = mhp | |
gold = 0 | |
message1 = 2 | |
GOTO saveend | |
END IF | |
GOTO 1000 | |
saveend: | |
OPEN "O", 1, name$: WRITE #1, up, str, dex, con, in, wis, cha, heal, chp, mhp, cxp, lxp, level, cmp, mmp, defense, attack, hit, armor, weapon, bank, gold, message, pass, armor$, weapon$, mpheal: CLOSE #1 | |
OPEN "O", 1, name2$: WRITE #1, up1, str1, dex1, con1, in1, wis1, cha1, heal1, chp1, mhp1, cxp1, lxp1, level1, cmp1, mmp1, defense1, attack1, hit1, armor1, weapon1, bank1, gold1, message1, pass5, armor1$, weapon1$, mpheal1: CLOSE #1 | |
END SUB | |
SUB quest1 | |
IF quest = 2 THEN GOTO 20 | |
IF quest = 3 THEN GOTO 40 | |
IF quest = 4 THEN GOTO 50 | |
DO | |
COLOR 2 | |
PRINT "You are in the forest" | |
COLOR 15 | |
PRINT "(esc) to view stats" | |
PRINT "(enter) to heal" | |
PRINT "Any other key to move on" | |
DO: trash$ = INKEY$: LOOP WHILE trash$ = "" | |
IF trash$ = CHR$(27) AND heal > 0 THEN chp = chp + wis + in + cha: heal = heal - 1 | |
IF trash$ = CHR$(13) THEN CALL stat | |
encount = fnrnd(4) | |
IF encount = 1 THEN GOSUB fight10 | |
trek = trek + 1 | |
LOOP WHILE (trek < 15) | |
COLOR 24: PRINT "You have encountered the bone golem!" | |
SLEEP 2 | |
COLOR 15 | |
xp = 1000 | |
qhp = 2000 | |
mst = 25: mdx = 23: mcn = 19: mws = 27: min = 24: mch = 23 | |
attack1 = 46 | |
defense1 = 20 | |
hit1 = 19 | |
ele = 4 | |
ehp = 2000 | |
DO | |
11 | |
CLS | |
PRINT "You:"; | |
COLOR 15 | |
IF chp <= INT(mhp * .5) THEN COLOR 12 | |
IF chp <= INT(mhp * .15) THEN COLOR 20 | |
PRINT chp; | |
COLOR 15 | |
PRINT "/"; mhp | |
PRINT "[A]ttack" | |
PRINT "[S]kill" | |
COLOR 2: PRINT "[F]lee" | |
COLOR 15: PRINT "[H]eal" | |
PRINT "[M]p heal" | |
INPUT "command>", attack$ | |
attack$ = UCASE$(attack$) | |
SELECT CASE attack$ | |
CASE "M" | |
res = INT(wis * .75 + fnrnd(5)) | |
PRINT res; " MP's restored!" | |
cmp = cmp + res | |
mpheal = mpheal - 1 | |
CASE "F" | |
COLOR 18 | |
PRINT "You can't flee from this battle!": GOTO 11 | |
COLOR 15 | |
CASE "H" | |
IF heal < 1 THEN GOTO 11 | |
IF chp = mhp THEN PRINT "You don't need a heal!": GOTO 11 | |
hpheal = fnrnd(5) + (in + con + wis) | |
COLOR 10 | |
PRINT hpheal; " HP's healed!" | |
COLOR 15 | |
chp = chp + hpheal | |
IF chp > mhp THEN chp = mhp | |
heal = heal - 1 | |
GOTO 12 | |
CASE "S" | |
CALL skillprint | |
IF cod = 0 THEN GOTO 11 | |
CALL skillattack | |
CASE "A" | |
dmg = fnrnd(10) + attack | |
IF dmg <= defense1 THEN COLOR 24: SOUND (dmg + 500), 3: PRINT "Your attack does no damage": COLOR 15: GOTO 12 | |
dmg = INT(dmg - defense1) | |
re = fnrnd(100) | |
IF re <= hit THEN | |
dmg = dmg * 2 | |
COLOR 20 | |
PRINT "CRITICAL!" | |
SOUND (dmg + 500), 3 | |
COLOR 15 | |
PRINT "You hit the monster for"; : COLOR 4: PRINT dmg; : COLOR 15: PRINT "hit points!" | |
END IF | |
IF re > hit THEN SOUND (dmg + 500), 3: PRINT "you inflicted "; : COLOR 4: PRINT dmg; : COLOR 15: PRINT "hp on the monster" | |
ehp = ehp - dmg | |
CASE ELSE | |
GOTO 11 | |
END SELECT | |
IF ehp <= 0 THEN | |
COLOR 13 | |
PRINT "you have defeated the monster!" | |
COLOR 15 | |
cxp = cxp + xp | |
IF cxp >= lxp THEN CALL levelraise | |
rewad = 1: CALL reward | |
EXIT SUB | |
END IF | |
12 | |
at = fnrnd(3) | |
IF at = 1 THEN | |
dmg = attack1 + fnrnd(10) | |
IF dmg <= defense THEN PRINT "The attack does no damage": DO: LOOP WHILE INKEY$ = "": GOTO 11 | |
dmg = dmg - defense | |
re = fnrnd(100) | |
IF re <= hit1 THEN | |
dmg = dmg * 3 + fnrnd(2) | |
PRINT "The monster attacks!" | |
COLOR 20 | |
PRINT "CRITICAL!" | |
COLOR 15 | |
SOUND (dmg + 500), 3 | |
PRINT "The bone golem hit you for"; : COLOR 4: PRINT dmg; : COLOR 15: PRINT " HP's" | |
chp = chp - dmg | |
END IF | |
IF re > hit1 THEN | |
PRINT "The bone golem attacks" | |
SOUND (dmg + 500), 3 | |
PRINT "He hit you for"; : COLOR 4: PRINT dmg; : COLOR 15: PRINT " HP's" | |
chp = chp - dmg | |
END IF | |
END IF | |
IF at = 2 THEN | |
PRINT "He tosses a bone at you!" | |
dmg = INT(attack1 + 10 + fnrnd(10)) | |
dmg = dmg - defense | |
IF dmg < 0 THEN dmg = 0 | |
SOUND (dmg + 500), 3 | |
PRINT "It hits you for"; : COLOR 4: PRINT dmg; : COLOR 15: PRINT " damage" | |
chp = chp - dmg | |
END IF | |
IF at = 3 THEN | |
PRINT "He runs into you!" | |
dmg = INT(attack1 * 1.5) + fnrnd(10) | |
dmg = dmg - defense | |
IF dmg <= 0 THEN SOUND (dmg + 500), 3: PRINT "it didn't do any damage!": DO: LOOP WHILE INKEY$ = "": GOTO 11 | |
SOUND (dmg + 500), 3 | |
PRINT "He hits you for"; : COLOR 4: PRINT dmg; : COLOR 15: PRINT " damage" | |
chp = chp - dmg | |
END IF | |
IF chp <= 0 THEN | |
COLOR 25 | |
PRINT "You died!....you will try again.." | |
COLOR 15 | |
chp = mhp | |
ehp = qhp | |
IF cmp <= 0 THEN cmp = INT(mmp * .5) | |
IF cmp > mmp THEN cmp = mmp | |
GOTO 11 | |
END IF | |
DO: LOOP WHILE INKEY$ = "" | |
LOOP WHILE ehp > 0 AND chp > 0 | |
20 | |
trek = 0 | |
DO | |
trek = trek + 1 | |
COLOR 6 | |
PRINT "You are in the mountain ranges" | |
COLOR 15 | |
PRINT "(esc) for heal" | |
PRINT "(enter) for stats" | |
PRINT "Any other key to continue" | |
DO: trash$ = INKEY$: LOOP WHILE (trash$ = "") | |
IF trash$ = CHR$(27) AND heal > 0 THEN chp = chp + wis + in + cha: heal = heal - 1: IF chp > mhp THEN chp = mhp | |
IF trash$ = CHR$(13) THEN CALL stat | |
encount = fnrnd(3) | |
IF encount = 1 THEN GOSUB fight10 | |
LOOP WHILE (trek < 20) | |
COLOR 29: PRINT "You have found the wyvern!" | |
COLOR 15 | |
SLEEP 2 | |
xp = 2000 | |
qhp = 5000 | |
mst = 27: mdx = 32: mcn = 26: mws = 30: min = 28: mch = 35 | |
attack1 = 59 | |
defense1 = 35 | |
hit1 = 25 | |
ele = 1 | |
ehp = 2500 | |
21 | |
CLS | |
PRINT "You:"; | |
COLOR 15 | |
IF chp <= INT(mhp * .5) THEN COLOR 12 | |
IF chp <= INT(mhp * .15) THEN COLOR 20 | |
PRINT chp; | |
COLOR 15 | |
PRINT "/"; mhp | |
PRINT "[A]ttack" | |
PRINT "[S]kill" | |
COLOR 2: PRINT "[F]lee" | |
COLOR 15: PRINT "[H]eal" | |
PRINT "[M]p heal" | |
INPUT "command>", attack$ | |
attack$ = UCASE$(attack$) | |
SELECT CASE attack$ | |
CASE "M" | |
res = INT(wis * .75 + fnrnd(5)) | |
PRINT res; " MP's restored!" | |
cmp = cmp + res | |
mpheal = mpheal - 1 | |
CASE "S" | |
CALL skillprint | |
IF cod = 0 THEN GOTO 21 | |
CALL skillattack | |
CASE "H" | |
IF chp = mhp THEN PRINT "You don't need a heal!": GOTO 21 | |
hpheal = fnrnd(5) + (in + con + wis) | |
COLOR 8 | |
PRINT hpheal; " HP's healed!" | |
COLOR 15 | |
chp = chp + hpheal | |
IF chp > mhp THEN chp = mhp | |
heal = heal - 1 | |
GOTO 22 | |
CASE "A" | |
dmg = fnrnd(10) + attack | |
dmg = INT(dmg - defense1) | |
IF dmg <= 0 THEN COLOR 19: SOUND (dmg + 500), 3: PRINT "Your attack does no damage": COLOR 15: GOTO 22 | |
re = fnrnd(100) | |
IF re <= hit THEN | |
dmg = dmg * 2 | |
COLOR 20 | |
PRINT "CRITICAL!" | |
COLOR 15 | |
SOUND (dmg + 500), 3 | |
PRINT "You hit the monster for"; : COLOR 4: PRINT dmg; : COLOR 15: PRINT "hit points!" | |
END IF | |
IF re > hit THEN SOUND (dmg + 500), 3: PRINT "you inflicted "; : COLOR 4: PRINT dmg; : COLOR 15: PRINT "hp on the monster" | |
ehp = ehp - dmg | |
CASE ELSE | |
GOTO 21 | |
END SELECT | |
IF ehp <= 0 THEN | |
COLOR 25 | |
PRINT "you have defeated the monster!" | |
COLOR 15 | |
cxp = cxp + xp | |
IF cxp >= lxp THEN CALL levelraise | |
rewad = 2: CALL reward | |
EXIT SUB | |
END IF | |
22 | |
at = fnrnd(3) | |
IF at = 1 THEN | |
COLOR 2 | |
PRINT "The wyvern attacks!" | |
COLOR 15 | |
dmg = attack1 + fnrnd(10) | |
dmg = dmg - defense | |
IF dmg <= 0 THEN SOUND (dmg + 500), 3: PRINT "The attack didn't hurt you!": DO: LOOP WHILE INKEY$ = "": GOTO 21 | |
re = fnrnd(100) | |
IF re <= hit1 THEN | |
dmg = dmg * 2 | |
COLOR 20: PRINT "CRITICAL!" | |
COLOR 15 | |
SOUND (dmg + 500), 3 | |
PRINT "The wyvern did"; : COLOR 4: PRINT dmg; : COLOR 15: PRINT " damage on you" | |
chp = chp - dmg | |
END IF | |
IF re > hit1 THEN | |
SOUND (dmg + 500), 3 | |
PRINT "The wyvern did"; : COLOR 4: PRINT dmg; : COLOR 15: PRINT " damage on you" | |
chp = chp - dmg | |
END IF | |
END IF | |
IF at = 2 THEN | |
COLOR 2: PRINT "The wyvern hits you with the wing slap" | |
dmg = INT(attack1 * 1.5) + fnrnd(15) | |
COLOR 15 | |
SOUND (dmg + 500), 3 | |
dmg = dmg - defense | |
IF dmg <= 0 THEN SOUND (dmg + 500), 3: PRINT "it didn't do any damage!": DO: LOOP WHILE INKEY$ = "": GOTO 21 | |
PRINT "It did"; : COLOR 4: PRINT dmg; : COLOR 15: PRINT " HP of damage on you" | |
chp = chp - dmg | |
END IF | |
IF at = 3 THEN | |
COLOR 20: PRINT "The wyvern breathes fire at you!" | |
dmg = INT(mws * 1.5 + fnrnd(20)) | |
COLOR 15 | |
SOUND (dmg + 500), 3 | |
PRINT "It does"; : COLOR 4: PRINT dmg; : COLOR 15: PRINT " damage to you" | |
chp = chp - dmg | |
END IF | |
IF chp <= 0 THEN | |
COLOR 25 | |
PRINT "You lost!...you will try again" | |
COLOR 15 | |
chp = mhp | |
ehp = qhp | |
IF cmp = 0 THEN cmp = INT(mmp * .5) | |
GOTO 21 | |
END IF | |
DO: LOOP WHILE INKEY$ = "" | |
GOTO 21 | |
40 | |
PRINT "Good luck!" | |
trek = 0 | |
DO | |
IF trek < 11 THEN COLOR 2: PRINT "You are in the plains" | |
IF trek > 10 THEN COLOR 11: PRINT "You are in the castle" | |
COLOR 15 | |
PRINT "(esc) for a heal" | |
PRINT "(enter) for stats" | |
PRINT "any other key to move on" | |
DO: trash$ = INKEY$: LOOP WHILE (trash$ = "") | |
IF trash$ = CHR$(13) THEN CALL stat | |
IF trash$ = CHR$(27) AND heal > 0 THEN chp = mhp: heal = heal - 1: IF chp > mhp THEN chp = mhp | |
trek = trek + 1 | |
encount = fnrnd(fr) | |
IF encount = 1 THEN GOSUB fight10 | |
LOOP WHILE (trek < 20) | |
41 | |
ele = 2: hit1 = 28: mst = 32: mdx = 23: mcn = 31: mws = 36: min = 23: mch = 27: xp = 3400: qhp = 6500: ehp = 3000: attack = 102: defense1 = 58: IF leave = 2 THEN defense1 = 23: IF fr = 5 THEN defense1 = 58 | |
COLOR 24: PRINT "You have found the vampire!" | |
COLOR 15 | |
42 | |
CLS | |
PRINT "You:"; | |
COLOR 15 | |
IF chp <= INT(mhp * .5) THEN COLOR 12 | |
IF chp <= INT(mhp * .15) THEN COLOR 20 | |
PRINT chp; | |
COLOR 15 | |
PRINT "/"; mhp | |
PRINT "[A]ttack" | |
PRINT "[S]kill" | |
COLOR 2: PRINT "[F]lee" | |
COLOR 15: PRINT "[H]eal" | |
PRINT "[M]p heal" | |
INPUT "command>", attack$ | |
attack$ = UCASE$(attack$) | |
SELECT CASE attack$ | |
CASE "M" | |
res = INT(wis * .75 + fnrnd(5)) | |
PRINT res; " MP's restored!" | |
cmp = cmp + res | |
mpheal = mpheal - 1 | |
CASE "S" | |
CALL skillprint | |
IF cod = 0 THEN GOTO 42 | |
CALL skillattack | |
CASE "H" | |
IF heal < 1 THEN GOTO 42 | |
IF chp = mhp THEN PRINT "You don't need a heal!": GOTO 42 | |
hpheal = fnrnd(5) + (in + con + wis) | |
COLOR 11 | |
PRINT hpheal; " HP's healed!" | |
COLOR 15 | |
chp = chp + hpheal | |
IF chp > mhp THEN chp = mhp | |
heal = heal - 1 | |
GOTO 43 | |
CASE "A" | |
dmg = fnrnd(10) + attack | |
dmg = INT(dmg - defense1) | |
IF dmg <= 0 THEN SOUND (dmg + 500), 3: PRINT "Your attack does no damage": GOTO 43 | |
re = fnrnd(100) | |
IF re <= hit THEN | |
dmg = dmg * 3 + fnrnd(2) | |
COLOR 20 | |
PRINT "CRITICAL!" | |
COLOR 15 | |
SOUND (dmg + 500), 3 | |
PRINT "You hit the monster for"; dmg; "hit points!" | |
END IF | |
IF re > hit THEN SOUND (dmg + 500), 3: PRINT "you inflicted "; dmg; "hp on the monster" | |
ehp = ehp - dmg | |
CASE ELSE | |
GOTO 42 | |
END SELECT | |
IF ehp <= 0 THEN | |
COLOR 25 | |
PRINT "you have defeated the monster!" | |
COLOR 15 | |
cxp = cxp + xp | |
IF cxp >= lxp THEN CALL levelraise | |
rewad = 3: CALL reward | |
EXIT SUB | |
END IF | |
43 | |
at = fnrnd(3) | |
IF at = 1 THEN | |
PRINT "The vampire attacks!" | |
dmg = attack1 + fnrnd(10) | |
dmg = dmg - defense | |
IF dmg <= 0 THEN SOUND (dmg + 500), 3: PRINT "It did no damage!": DO: LOOP WHILE INKEY$ = "": GOTO 42 | |
re = fnrnd(100) | |
IF re <= hit1 THEN | |
COLOR 20: PRINT "CRITICAL!" | |
dmg = dmg * 3 + fnrnd(2) | |
SOUND (dmg + 500), 3 | |
COLOR 4: PRINT "The vampire hit you for"; dmg; " damage" | |
COLOR 15 | |
chp = chp - dmg | |
END IF | |
IF re > hit1 THEN | |
SOUND (dmg + 500), 3 | |
COLOR 4: PRINT "The vampire hit you for"; dmg; " damage" | |
COLOR 15 | |
chp = chp - dmg | |
END IF | |
END IF | |
IF at = 2 THEN | |
er = fnrnd(100) | |
dmg = INT(attack1 * 2) | |
IF er > 25 THEN SOUND (dmg + 500), 3: PRINT "The vampire missed with the drain.": DO: LOOP WHILE INKEY$ = "": GOTO 42 | |
IF er <= 25 THEN | |
COLOR 29: PRINT "The vampire sinks his teeth in" | |
COLOR 15 | |
SOUND (dmg + 500), 3 | |
IF dmg <= (wis + con) + level THEN PRINT "It didn't hurt you!": DO: LOOP WHILE INKEY$ = "": GOTO 42 | |
dmg = dmg - (wis + con + level) | |
COLOR 20: PRINT "You lost"; dmg; " HPs" | |
COLOR 2: PRINT "The vampire gained"; (dmg \ 2 + fnrnd(4)); " HPs" | |
COLOR 15 | |
chp = chp - dmg | |
ehp = ehp + (dmg \ 2 + fnrnd(4)) | |
IF ehp > qhp THEN ehp = qhp | |
END IF | |
END IF | |
IF at = 3 THEN | |
COLOR 20: PRINT "The vampire casts fire!" | |
COLOR 15 | |
dmg = (mws * 2) + fnrnd(10) | |
SOUND (dmg + 500), 3 | |
PRINT "The spell does"; dmg; " to you" | |
chp = chp - dmg | |
END IF | |
IF chp <= 0 THEN | |
COLOR 21: PRINT "You lost!....you will try again" | |
COLOR 15: chp = mhp | |
IF cmp = 0 THEN cmp = INT(mmp * .5) | |
GOTO 43 | |
END IF | |
DO: LOOP WHILE INKEY$ = "" | |
GOTO 42 | |
50 | |
DO WHILE trek < 20 | |
COLOR 8: PRINT "You are in the mountainside cave" | |
COLOR 15 | |
PRINT "(esc) to use a heal" | |
PRINT "(enter) to see stats" | |
PRINT "Any other key to move on" | |
DO: trash$ = INKEY$: LOOP WHILE trash$ = "" | |
IF trash$ = CHR$(13) THEN CALL stat | |
IF trash$ = CHR$(27) AND heal > 0 THEN chp = chp + wis + cha + in: heal = heal - 1: IF chp > mhp THEN chp = mhp | |
trek = trek + 1 | |
encount = fnrnd(4) | |
IF encount = 1 THEN GOSUB fight10 | |
LOOP | |
COLOR 6: PRINT "You have found the tarrasque and he is MAD!" | |
hit1 = 30: mst = 41: mdx = 21: mcn = 31: mws = 15: min = 27: mch = 25: attack1 = 122: defense1 = 61: xp = 5000: qhp = 7000: ehp = qhp: ele = 4 | |
51 | |
CLS | |
PRINT "You:"; | |
COLOR 15 | |
IF chp <= INT(mhp * .5) THEN COLOR 12 | |
IF chp <= INT(mhp * .15) THEN COLOR 20 | |
PRINT chp; | |
COLOR 15 | |
PRINT "/"; mhp | |
PRINT "[A]ttack" | |
PRINT "[S]kill" | |
COLOR 2: PRINT "[F]lee" | |
COLOR 15: PRINT "[H]eal" | |
PRINT "[M]p heal" | |
INPUT "command>", attack$ | |
attack$ = UCASE$(attack$) | |
SELECT CASE attack$ | |
CASE "M" | |
res = INT(wis * .75 + fnrnd(5)) | |
PRINT res; " MP's restored!" | |
cmp = cmp + res | |
mpheal = mpheal - 1 | |
CASE "S" | |
CALL skillprint | |
IF cod = 0 THEN GOTO 51 | |
CALL skillattack | |
CASE "H" | |
IF heal < 1 THEN GOTO 51 | |
IF chp = mhp THEN PRINT "You don't need a heal!": GOTO 51 | |
hpheal = fnrnd(5) + (in + con + wis) | |
COLOR 10: PRINT hpheal; " HP's healed!" | |
COLOR 15 | |
chp = chp + hpheal | |
IF chp > mhp THEN chp = mhp | |
heal = heal - 1 | |
GOTO 52 | |
CASE "A" | |
dmg = fnrnd(10) + attack | |
IF dmg <= defense1 THEN SOUND (dmg + 500), 3: PRINT "Your attack does no damage": GOTO 52 | |
dmg = INT(dmg - defense1) | |
re = fnrnd(100) | |
IF re <= hit THEN | |
dmg = dmg * 2 | |
COLOR 20: PRINT "CRITICAL!" | |
COLOR 15 | |
SOUND (dmg + 500), 3 | |
PRINT "You hit the monster for"; dmg; "hit points!" | |
END IF | |
IF re > hit THEN SOUND (dmg + 500), 3: PRINT "you inflicted "; dmg; "hp on the monster" | |
ehp = ehp - dmg | |
CASE ELSE | |
GOTO 51 | |
END SELECT | |
IF ehp <= 0 THEN | |
COLOR 25: PRINT "you have defeated the monster!" | |
COLOR 15 | |
cxp = cxp + xp | |
IF cxp >= lxp THEN CALL levelraise | |
rewad = 4: CALL reward | |
EXIT SUB | |
END IF | |
52 | |
at = fnrnd(3) | |
IF at = 1 THEN | |
PRINT "The tarrasque attacks!" | |
dmg = attack1 + fnrnd(10) - defense | |
IF dmg <= 0 THEN SOUND (dmg + 500), 3: PRINT "The attack did no damage!": DO: LOOP WHILE INKEY$ = "": GOTO 51 | |
re = fnrnd(100) | |
IF re <= hit1 THEN | |
COLOR 20: PRINT "CRITICAL!" | |
dmg = dmg * 3 + fnrnd(2) | |
SOUND (dmg + 500), 3 | |
COLOR 4: PRINT "The attack did"; dmg; "damage to you" | |
COLOR 15 | |
chp = chp - dmg | |
END IF | |
IF re > hit1 THEN | |
SOUND (dmg + 500), 3 | |
COLOR 4: PRINT "The attack did"; dmg; " damage to you" | |
COLOR 15 | |
chp = chp - dmg | |
END IF | |
END IF | |
IF at = 2 THEN | |
COLOR 4: PRINT "The tarrasque bashes into you!" | |
COLOR 15 | |
dmg = attack1 + fnrnd(20) - (dex \ 2.5) | |
IF dmg <= 0 THEN SOUND (dmg + 500), 3: PRINT "The attack didn't phase you!": DO: LOOP WHILE INKEY$ = "": GOTO 51 | |
SOUND (dmg + 500), 3 | |
COLOR 4: PRINT "The bash did"; dmg; " damage to you" | |
COLOR 15 | |
chp = chp - dmg | |
END IF | |
IF at = 3 THEN | |
PRINT "The double claw attack!" | |
er = fnrnd(100) | |
IF er <= 75 THEN | |
SOUND (dmg + 500), 3 | |
dmg = attack1 + fnrnd(10) - (dex \ 3) | |
COLOR 19: PRINT "The claw hits you for"; dmg; " damage" | |
COLOR 15 | |
chp = chp - dmg | |
END IF | |
IF er > 75 THEN | |
SOUND (dmg + 500), 3 | |
PRINT "The tarrasque roars as the claw misses" | |
END IF | |
er = fnrnd(100) | |
IF er <= 75 THEN | |
SOUND (dmg + 500), 3 | |
dmg = attack1 + fnrnd(10) - (dex \ 3) | |
COLOR 20: PRINT "The second claw hits you or"; dmg; " damage" | |
COLOR 15 | |
chp = chp - dmg | |
END IF | |
IF er > 75 THEN | |
SOUND (dmg + 500), 3 | |
PRINT "The claw missed!" | |
END IF | |
END IF | |
IF chp <= 0 THEN | |
COLOR 21: PRINT "You lost!....you will try again" | |
COLOR 15 | |
chp = mhp | |
IF cmp = 0 THEN cmp = INT(mmp * .5) | |
GOTO 50 | |
END IF | |
DO: LOOP WHILE INKEY$ = "" | |
GOTO 51 | |
fight10: | |
mst = fnrnd(15) + INT(up * .75) | |
mdx = fnrnd(15) + INT(up * .75) | |
mcn = fnrnd(15) + INT(up * .75) | |
min = fnrnd(15) + INT(up * .75) | |
mws = fnrnd(15) + INT(up * .75) | |
mch = fnrnd(15) + INT(up * .75) | |
attack1 = INT((mst + up) * 1.5) | |
defense1 = ((mdx \ 2) + up) | |
raigold = INT((((level * 3.5) + (up * 3.5)) + fnrnd(10) + 200) * 1.5 + fnrnd(2)) + (125 * up) | |
ele = fnrnd(6) | |
leve = up | |
qhr = ((up \ 5) + (mst \ 2)) | |
IF qhr > 99 THEN qhr = 99 | |
qhp = fnrnd(10) + INT(mcn + (up * 10) + (mhp \ 2)) | |
ehp = qhp | |
xp = (up + (qhp \ 2)) + (mst + mdx + min + mws + mcn + mch \ 6) | |
PRINT "LET'S FIGHT!" | |
ehp = qhp | |
400 | |
CLS | |
PRINT "You:"; | |
COLOR 15 | |
IF chp <= INT(mhp * .5) THEN COLOR 12 | |
IF chp <= INT(mhp * .15) THEN COLOR 20 | |
PRINT chp; | |
COLOR 15 | |
PRINT "/"; mhp | |
COLOR 15 | |
PRINT "[A]ttack" | |
PRINT "[S]kill" | |
PRINT "[F]lee" | |
PRINT "[D]eathfight" | |
PRINT "[H]eal" | |
PRINT "[M]p heal" | |
INPUT "command>", attack$ | |
attack$ = UCASE$(attack$) | |
SELECT CASE attack$ | |
CASE "D" | |
CALL deathfight | |
IF chp < 1 THEN chp = mhp: RETURN | |
CASE "M" | |
res = INT(wis * .75 + fnrnd(5)) | |
PRINT res; " MP's restored!" | |
cmp = cmp + res | |
mpheal = mpheal - 1 | |
CASE "F" | |
fle = dex + wis + cha | |
elf = mdx + mws + mch | |
IF fle > elf THEN PRINT "you flee from the battle": RETURN | |
IF fle <= elf THEN PRINT "you can't run!" | |
CASE "H" | |
IF heal < 1 THEN GOTO 400 | |
IF chp = mhp THEN PRINT "You don't need a heal!": GOTO 400 | |
hpheal = fnrnd(5) + (in + con + wis) | |
COLOR 6: PRINT hpheal; " HP's healed!" | |
COLOR 15 | |
chp = chp + hpheal | |
IF chp > mhp THEN chp = mhp | |
heal = heal - 1 | |
GOTO 500 | |
CASE "S" | |
CALL skillprint | |
IF cod = 0 THEN GOTO 400 | |
CALL skillattack | |
CASE "A" | |
dmg = fnrnd(10) + attack | |
dmg = dmg - defense1 | |
IF dmg <= 0 THEN SOUND (dmg + 500), 3: PRINT "Your attack does no damage": GOTO 500 | |
re = fnrnd(100) | |
IF re <= hit THEN | |
dmg = dmg * 3 + fnrnd(2) | |
COLOR 20: PRINT "CRITICAL!" | |
SOUND (dmg + 500), 3 | |
COLOR 15: PRINT "You hit the monster for"; dmg; "hit points!" | |
END IF | |
IF re > hit THEN SOUND (dmg + 500), 3: PRINT "you inflicted "; dmg; "hp on the monster" | |
ehp = ehp - dmg | |
CASE ELSE | |
GOTO 400 | |
END SELECT | |
IF ehp <= 0 THEN | |
COLOR 25: PRINT "you have defeated the monster!" | |
COLOR 15 | |
PRINT "You gain"; xp; "xp points, and"; raigold; "gold!" | |
DO: LOOP WHILE INKEY$ = "" | |
gold = gold + raigold | |
cxp = cxp + xp | |
IF cxp >= lxp THEN CALL levelraise | |
RETURN | |
END IF | |
500 | |
PRINT "The monster attacks!" | |
dmg = fnrnd(10) + attack1 | |
dmg = INT(dmg - defense) | |
IF dmg <= 0 THEN SOUND (dmg + 500), 3: PRINT "The attack does no damage": DO: LOOP WHILE INKEY$ = "": GOTO 400 | |
re = fnrnd(100) | |
IF re <= qhr THEN | |
dmg = dmg * 3 + fnrnd(2) | |
COLOR 20: PRINT "CRITICAL!" | |
SOUND (dmg + 500), 3 | |
COLOR 4: PRINT "The monster hit you for"; dmg; " hit points." | |
COLOR 15 | |
END IF | |
IF re > qhr THEN SOUND (dmg + 500), 3: COLOR 4: PRINT "The monster hits you for"; dmg; " hp" | |
COLOR 15 | |
chp = chp - dmg | |
IF chp <= 0 THEN | |
INPUT "You lost!...keep playing?", e$ | |
IF e$ = "N" OR e$ = "n" THEN SYSTEM | |
gold = gold \ 1.2 | |
IF gold <= 0 THEN gold = 0 | |
chp = mhp | |
END IF | |
DO: LOOP WHILE INKEY$ = "" | |
GOTO 400 | |
END SUB | |
SUB reward | |
IF rewad = 1 THEN GOTO 100 | |
IF rewad = 2 THEN GOTO 101 | |
IF rewad = 3 THEN GOTO 102 | |
IF rewad = 4 THEN GOTO 103 | |
100 | |
quest = 0 | |
PRINT "Thank you for killing the bone golem!" | |
PRINT "Here is 2000 gold": gold = gold + 2000 | |
PRINT "We will reward you by giving you an ability potion. What ability" | |
PRINT "do you want up?" | |
SLEEP 1 | |
INPUT "(1)str (2)dex (3) con (4) wis (5) int (6) cha", ab | |
IF ab = 1 THEN PRINT "Strength up by 1!": str = str + 1 | |
IF ab = 2 THEN PRINT "Dexterity up by 1!": dex = dex + 1 | |
IF ab = 3 THEN PRINT "Constitution up by 1!": con = con + 1 | |
IF ab = 4 THEN PRINT "Wisdom up by 1!": wis = wis + 1 | |
IF ab = 5 THEN PRINT "Intelligence up by 1!": in = in + 1 | |
IF ab = 6 THEN PRINT "Charisma up by 1!": cha = cha + 1 | |
IF ab > 6 OR ab < 1 THEN GOTO 100 | |
PRINT "Thanks again!" | |
SLEEP 2 | |
EXIT SUB | |
101 | |
quest = 0 | |
PRINT "You have recovered the statue!" | |
SLEEP 1 | |
PRINT "Here have 10000 gold!": gold = gold + 10000 | |
PRINT "Thanks for doing such a heroic deed...pick one" | |
PRINT "(1) vitality potion" | |
PRINT "(2) 15 healings" | |
INPUT "", ried | |
IF ried = 1 THEN gain = fnrnd(20) + con: PRINT "You have gained"; gain; " max HP's!": mhp = mhp + gain | |
IF ried = 2 THEN heal = heal + 15: PRINT "There are your 15 healings!" | |
IF ried < 1 OR ried > 2 THEN GOTO 101 | |
SLEEP 1 | |
PRINT "Thanks again!" | |
SLEEP 2 | |
EXIT SUB | |
102 | |
quest = 0 | |
PRINT "You have saved our king! I know how to thank you..." | |
PRINT "Here have 100000 gold!": gold = gold + 100000 | |
PRINT "Pick one" | |
PRINT "(1) MP raise (2) HP raise (3) ability raise" | |
INPUT ried | |
IF ried = 1 THEN | |
mpr = fnrnd(3) + (wis \ 2) | |
PRINT "Max MP raised by"; mpr; "!" | |
mmp = mmp + mpr | |
END IF | |
IF ried = 2 THEN | |
thp = fnrnd(20) + con + wis | |
PRINT "Max HP's raised by"; thp; "!" | |
mhp = mhp + thp | |
END IF | |
IF ried = 3 THEN | |
PRINT "What ability do you want up?" | |
SLEEP 1 | |
INPUT "(1)str (2)dex (3) con (4) wis (5) int (6) cha", ab | |
IF ab = 1 THEN PRINT "Strength up by 4!": str = str + 4 | |
IF ab = 2 THEN PRINT "Dexterity up by 4!": dex = dex + 4 | |
IF ab = 3 THEN PRINT "Constitution up by 4!": con = con + 4 | |
IF ab = 4 THEN PRINT "Wisdom up by 4!": wis = wis + 4 | |
IF ab = 5 THEN PRINT "Intelligence up by 4!": in = in + 4 | |
IF ab = 6 THEN PRINT "Charisma up by 4!": cha = cha + 4 | |
IF ab > 6 OR ab < 1 THEN GOTO 102 | |
END IF | |
IF ried < 1 OR ried > 3 THEN GOTO 102 | |
PRINT "Thanks again. You will beat the dragon someday" | |
SLEEP 1 | |
EXIT SUB | |
103 | |
quest = 0 | |
PRINT "You have beaten the tarrasque!" | |
PRINT "You need 100000 gold don't you?": gold = gold + 100000 | |
PRINT "How did you do it? I can't believe this! Someone that someday will" | |
PRINT "rid us of the DRAGON!" | |
SLEEP 2 | |
PRINT "You need a big reward!" | |
PRINT "What ability do you want up?" | |
SLEEP 1 | |
INPUT "(1)str (2)dex (3) con (4) wis (5) int (6) cha", ab | |
IF ab = 1 THEN PRINT "Strength up by 4!": str = str + 4 | |
IF ab = 2 THEN PRINT "Dexterity up by 4!": dex = dex + 4 | |
IF ab = 3 THEN PRINT "Constitution up by 4!": con = con + 4 | |
IF ab = 4 THEN PRINT "Wisdom up by 4!": wis = wis + 4 | |
IF ab = 5 THEN PRINT "Intelligence up by 4!": in = in + 4 | |
IF ab = 6 THEN PRINT "Charisma up by 4!": cha = cha + 4 | |
IF ab > 6 OR ab < 1 THEN GOTO 103 | |
PRINT "You aren't strong enough now but I am sure when you reach " | |
PRINT "level 60 you will be able to kill the dragon." | |
SLEEP 4 | |
PRINT "Until then keep at the arena. Bye!" | |
SLEEP 3 | |
CLS | |
EXIT SUB | |
END SUB | |
SUB save | |
OPEN "O", 1, name$ | |
WRITE #1, up, str, dex, con, in, wis, cha, heal, chp, mhp, cxp, lxp, level, cmp, mmp, defense, attack, hit, armor, weapon, bank, gold, message, pass, armor$, weapon$, mpheal | |
CLOSE | |
END SUB | |
SUB skillattack | |
IF cod = 0 THEN EXIT SUB | |
IF cod = 1 THEN | |
PRINT "You jump at the monster with a slash" | |
cmp = cmp - 1 | |
dmg = (attack) + fnrnd(10) + (dex \ 2) | |
SOUND (500 + dmg), 3 | |
PRINT "You inflict "; dmg; " HP's on him" | |
ehp = ehp - dmg | |
END IF | |
IF cod = 2 THEN | |
PRINT "You jump at the enemy, coming down with your sword" | |
cmp = cmp - 3 | |
dmg = (attack) * 2 + fnrnd(9) + (dex \ 2) | |
SOUND (500 + dmg), 3 | |
PRINT "You inflict "; dmg; " HP's on him" | |
ehp = ehp - dmg | |
END IF | |
IF cod = 3 THEN | |
PRINT "You shoot flames at the enemy" | |
cmp = cmp - 2 | |
IF ele = 2 THEN dmg = ((wis * 2) + fnrnd(10)) * 2 | |
IF ele <> 2 THEN dmg = (wis * 2) + fnrnd(10) | |
SOUND (500 + dmg), 3 | |
IF ele = 2 THEN | |
PRINT "Monster weak against fire!" | |
PRINT "You inflict"; dmg; " HP's on the monster" | |
END IF | |
IF ele = 1 THEN | |
PRINT "Monster strong against fire" | |
PRINT "The monster gained"; dmg; " HP's" | |
END IF | |
IF ele <> 1 AND ele <> 2 THEN | |
PRINT "You inflicted"; dmg; " HP's on the monster" | |
END IF | |
IF ele <> 1 THEN ehp = ehp - dmg | |
IF ele = 1 THEN ehp = ehp + dmg | |
IF ehp > qhp THEN ehp = qhp | |
END IF | |
IF cod = 4 THEN | |
PRINT "You conjure an ice storm on the monster" | |
cmp = cmp - 2 | |
IF ele = 1 THEN dmg = ((wis * 2) + fnrnd(11)) * 2 + fnrnd(2) | |
IF ele <> 1 THEN dmg = (wis * 2) + fnrnd(11) | |
SOUND (500 + dmg), 3 | |
IF ele = 1 THEN | |
PRINT "Monster weak against ice!" | |
PRINT "You inflict"; dmg; " HP's on the monster" | |
END IF | |
IF ele = 2 THEN | |
PRINT "Monster strong against ice" | |
PRINT "The monster gained"; dmg; " HP's" | |
END IF | |
IF ele <> 1 AND ele <> 2 THEN | |
PRINT "You inflicted"; dmg; " HP's on the monster" | |
END IF | |
IF ele <> 2 THEN ehp = ehp - dmg | |
IF ele = 2 THEN ehp = ehp + dmg | |
IF ehp > qhp THEN ehp = qhp | |
END IF | |
IF cod = 5 THEN | |
PRINT "A bolt of lightning comes down on the enemy" | |
cmp = cmp - 3 | |
IF ele = 5 THEN dmg = ((wis * 2) + fnrnd(12)) * 2 | |
IF ele <> 5 THEN dmg = (wis * 2) + fnrnd(12) | |
SOUND (500 + dmg), 3 | |
IF ele = 5 THEN | |
PRINT "Monster weak against lightning!" | |
PRINT "You inflict"; dmg; " HP's on the monster" | |
END IF | |
IF ele = 6 THEN | |
PRINT "Monster strong against lightning" | |
PRINT "The monster gained"; dmg; " HP's" | |
END IF | |
IF ele <> 6 AND ele <> 5 THEN | |
PRINT "You inflicted"; dmg; " HP's on the monster" | |
END IF | |
IF ele <> 6 THEN ehp = ehp - dmg | |
IF ele = 6 THEN ehp = ehp + dmg | |
IF ehp > qhp THEN ehp = qhp | |
END IF | |
IF cod = 6 THEN | |
PRINT "You cast the spell...." | |
cmp = cmp - 2 | |
gahp = ((in * wis) \ 1.5) + fnrnd(5) | |
SOUND (500 + gahp), 3 | |
PRINT "..and recover"; gahp; " HP's!" | |
chp = chp + gahp | |
IF chp > mhp THEN chp = mhp | |
END IF | |
IF cod = 7 THEN | |
PRINT "You cast the spell....." | |
cmp = cmp - 20 | |
gahp = (((in * wis) \ 2) * 2 + fnrnd(25)) | |
SOUND (500 + gahp), 3 | |
PRINT "...and recover "; gahp; "HP's!" | |
chp = chp + gahp | |
IF chp > mhp THEN chp = mhp | |
END IF | |
IF cod = 8 THEN | |
PRINT "Here comes the tornado!" | |
cmp = cmp - 5 | |
IF ele = 4 THEN dmg = INT((wis * 2.5) + fnrnd(10)) * 2 | |
IF ele <> 4 THEN dmg = INT(wis * 2.5) + fnrnd(10) | |
SOUND (500 + dmg), 3 | |
IF ele = 4 THEN | |
PRINT "Monster weak against air!" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment