1. There really is no way to win. Just enter the tower and explore.
2. You will be reset back to 100 hit points if you can make it back out of the tower with some hit points left.
3. So far, all of the creatures have the same chance to hit and they do the same random damage. I'll work on that soon.
4. If the zombie damages you, even for just one point, you are doomed.
5. The werewolf regenerates 2 hit points every round of combat; it's much easier to kill him with the sword.
6. Poisons and potions are unlimited...for now.
7. I'm trying to figure out how to cap the werewolf's regeneration at his starting hit points. I'll sit down and figure out that one in a few minutes here.
8. I'm also trying to figure out how to have just one [roomdescription] matrix, instead of three. That will be a small puzzle.
9. You can amass quite a bit of gold, if you can stay alive, but there is nothing on which to spend the gold...yet.
As far as text adventures go, it's coming along nicely.
Let me know what you think.
- Machiavvelli3060
Code: Select all
REM This program is named theTower. It was first started on June 30th, 2013 by Alan J. Robinson.
REM THE FOLLOWING SECTION IS THE GAME'S INTRODUCTION, DESCRIBING THE EXTERIOR OF THE TOWER.
[INTRO]
CHARACTERHEALTH = 100
CHARACTERGOLD = 0
SWORD = 0
HEALINGPOTIONSUSED = 0
POISONSTAKEN = 0
SWORDPOSSESSION$ = "NO"
LEVEL = 1
SWORDDESCRIPTOR$ = "your hands and feet"
ZOMBIESCRATCH$ = "NO"
PRINT "THE TOWER"
PRINT "A JustBASIC-based text adventure"
PRINT "developed by Alan J. Robinson"
PRINT ""
PRINT "You are in the middle of a field."
PRINT "You feel invigorated and refreshed."
PRINT "You see in front of you a black stone tower."
PRINT "It is round and about 150 feet across."
PRINT "It is so tall it disappears into the clouds."
IF ZOMBIESCRATCH$ = "YES" THEN GOSUB [BECOMINGAZOMBIE]
PRINT ""
PRINT "HP: " ; CHARACTERHEALTH ; " Gold: " ; CHARACTERGOLD ; " Weapon: " ; SWORDDESCRIPTOR$
PRINT ""
PRINT "Do you want to..."
PRINT ""
PRINT "1 - enter the tower or"
PRINT "2 - walk away"
[INTROREPEAT]
INPUT REPLY$
IF REPLY$ = "1" THEN GOTO [GL]
IF REPLY$ = "2" THEN GOTO [ENDING]
PRINT "Please type 1 or 2."
GOTO [INTROREPEAT]
REM THE FOLLOWING SECTION DESCRIBES THE GROUND LEVEL OF THE TOWER.
[GL]
LEVEL = 1
PRINT ""
PRINT "You are in a giant atrium on the ground floor of the tower."
PRINT "A massive spiral staircase dominates the center of the tower."
PRINT "The staircase spirals up and up out of sight."
PRINT "It also spirals down and down, out of sight."
IF ZOMBIESCRATCH$ = "YES" THEN GOSUB [BECOMINGAZOMBIE]
PRINT ""
PRINT "HP: " ; CHARACTERHEALTH ; " Gold: " ; CHARACTERGOLD ; " Weapon: " ; SWORDDESCRIPTOR$
PRINT ""
PRINT "Do you want to..."
PRINT ""
PRINT "1 - go up,"
PRINT "2 - go down or,"
PRINT "3 - leave the tower"
[GLREPEAT]
INPUT REPLY$
IF REPLY$ = "1" THEN GOTO [GOUPTHESTAIRCASE]
IF REPLY$ = "2" THEN GOTO [GODOWNTHESTAIRCASE2]
IF REPLY$ = "3" THEN GOTO [INTRO]
PRINT "Please enter a 1, 2 or 3."
GOTO [GLREPEAT]
REM THE FOLLOWING SECTION INCREASES THE LEVEL BY ONE
[GOUPTHESTAIRCASE]
LEVEL = LEVEL + 1
IF LEVEL = 0 THEN GOTO [GL]
GOTO [ROOMDESCRIPTION]
REM THE FOLLOWING SECTION COVERS GOING DOWN FROM THE FIRST SUB-LEVEL
[GODOWNTHESTAIRCASE]
LEVEL = LEVEL - 1
IF LEVEL = 1 THEN GOTO [GL]
GOTO [ROOMDESCRIPTION]
REM THE FOLLOWING SECTION COVERS GOING DOWN FROM THE GROUND LEVEL
[GODOWNTHESTAIRCASE2]
LEVEL = LEVEL - 2
IF LEVEL = 1 THEN GOTO [GL]
GOTO [ROOMDESCRIPTION]
REM THE FOLLOWING SECTION TELLS THE PROGRAM WHICH ROOM DESCRIPTION TO USE, DEPENDING UPON WETHER THE PLAYER IS ABOVEGROUND OR BELOWGROUND
REM IF THE PLAYER IS BELOWGROUND, THERE IS NO OPTION TO LOOK OUT THE WINDOW
[ROOMDESCRIPTION]
IF LEVEL >= 1 THEN GOTO [ROOMDESCRIPTIONABOVEGROUND]
IF LEVEL < 1 THEN GOTO [ROOMDESCRIPTIONBELOWGROUND]
REM THE FOLLOWING SECTION TELLS THE PROGRAM WHICH ROOM DESCRIPTION TO START A LITTLE WAYS INTO THE SUBROUTINE
[ROOMDESCRIPTION2]
IF LEVEL >= 1 THEN GOTO [ROOMDESCRIPTIONABOVEGROUNDREPEAT]
IF LEVEL < 1 THEN GOTO [ROOMDESCRIPTIONBELOWGROUNDREPEAT]
REM THE FOLLOWING SECTION DESCRIBES ALL ROOMS ABOVEGROUND, EXCEPT FOR THE GROUND LEVEL
[ROOMDESCRIPTIONABOVEGROUND]
PRINT "Floor: " ; LEVEL
GOSUB [ENVIRONMENTDESCRIPTION]
PRINT ENVIRONMENTDESCRIPTION$
IF ZOMBIESCRATCH$ = "YES" THEN GOSUB [BECOMINGAZOMBIE]
GOTO [RANDOMOCCURENCE]
[ROOMDESCRIPTIONABOVEGROUNDREPEAT]
PRINT "HP: " ; CHARACTERHEALTH ; " Gold: " ; CHARACTERGOLD ; " Weapon: " ; SWORDDESCRIPTOR$
PRINT ""
PRINT "Do you want to..."
PRINT ""
PRINT "1 - go up,"
PRINT "2 - go down or"
PRINT "3 - look out a window"
INPUT REPLY$
PRINT ""
IF REPLY$ = "1" THEN GOTO [GOUPTHESTAIRCASE]
IF REPLY$ = "2" THEN GOTO [GODOWNTHESTAIRCASE]
IF REPLY$ = "3" THEN GOTO [WINDOWVIEW]
PRINT ""
PRINT "Please enter a 1, 2 or 3."
GOTO [ROOMDESCRIPTIONABOVEGROUNDREPEAT]
PRINT WINDOWVIEW$
RETURN
REM THE FOLLOWING SECTION DESCRIBES ALL ROOMS BELOWGROUND
[ROOMDESCRIPTIONBELOWGROUND]
PRINT "Floor: " ; LEVEL
GOSUB [ENVIRONMENTDESCRIPTION]
PRINT ENVIRONMENTDESCRIPTION$
IF ZOMBIESCRATCH$ = "YES" THEN GOSUB [BECOMINGAZOMBIE]
GOTO [RANDOMOCCURENCE]
[ROOMDESCRIPTIONBELOWGROUNDREPEAT]
PRINT "HP: " ; CHARACTERHEALTH ; " Gold: " ; CHARACTERGOLD ; " Weapon: " ; SWORDDESCRIPTOR$
PRINT ""
PRINT "Do you want to..."
PRINT ""
PRINT "1 - go up or"
PRINT "2 - go down"
INPUT REPLY$
PRINT ""
IF REPLY$ = "1" THEN GOTO [GOUPTHESTAIRCASE]
IF REPLY$ = "2" THEN GOTO [GODOWNTHESTAIRCASE]
PRINT ""
PRINT "Please enter a 1 or 2."
GOTO [ROOMDESCRIPTIONBELOWGROUNDREPEAT]
RETURN
REM THE FOLLOWING SECTION DESCRIBES THE VIEW (BASED ON THE LEVEL NUMBER) WHEN THE PLAYER LOOKS OUT A WINDOW
[WINDOWVIEW]
WINDOWVIEW = INT(RND(0)*3)
IF LEVEL >= 2 AND LEVEL < 20 AND WINDOWVIEW = 0 THEN WINDOWVIEW$ = "You see rolling hills not too far off in the distance."
IF LEVEL >= 2 AND LEVEL < 20 AND WINDOWVIEW = 1 THEN WINDOWVIEW$ = "You see farm fields not too far off in the distance."
IF LEVEL >= 2 AND LEVEL < 20 AND WINDOWVIEW = 2 THEN WINDOWVIEW$ = "You see a hawk circling the tower."
IF LEVEL >= 20 AND LEVEL < 50 AND WINDOWVIEW = 0 THEN WINDOWVIEW$ = "You are very high up now. You see mountains far off in the distance."
IF LEVEL >= 20 AND LEVEL < 50 AND WINDOWVIEW = 1 THEN WINDOWVIEW$ = "You are very high up now. You can see land for miles."
IF LEVEL >= 20 AND LEVEL < 50 AND WINDOWVIEW = 2 THEN WINDOWVIEW$ = "You are very high up now. You see five buzzards circling the tower."
IF LEVEL >= 50 AND LEVEL < 100 AND WINDOWVIEW = 0 THEN WINDOWVIEW$ = "You are very, very high up now. Clouds obscure the view."
IF LEVEL >= 50 AND LEVEL < 100 AND WINDOWVIEW = 1 THEN WINDOWVIEW$ = "You are very, very high up now. You can see what looks like a dragon, flying in the distance."
IF LEVEL >= 50 AND LEVEL < 100 AND WINDOWVIEW = 2 THEN WINDOWVIEW$ = "You are very, very high up now. The air is very cold and windy."
IF LEVEL >= 100 AND LEVEL < 500 THEN WINDOWVIEW$ = "The clouds completely obscure the view."
IF LEVEL >= 500 AND LEVEL < 600 THEN WINDOWVIEW$ = "The clouds look like they are starting to thin out."
IF LEVEL >= 600 AND LEVEL < 1000 THEN WINDOWVIEW$ = "You can see the clouds spread out below you. This should not be possible."
PRINT WINDOWVIEW$
PRINT ""
GOTO [ROOMDESCRIPTION]
REM THE FOLLOWING SECTION DESCRIBES THE ENVIRONMENT WITHIN THE TOWER, BASED ON WHICH LEVEL THE PLAYER IS AT
[ENVIRONMENTDESCRIPTION]
IF LEVEL <= -1000 THEN GOTO [TOOHIGHENDING]
IF LEVEL >= -1000 AND LEVEL < -200 THEN GOSUB [LOWALTITUDETROUBLE]
IF LEVEL >= -200 AND LEVEL < -100 THEN PRINT ENVIRONMENTDESCRIPTION$ = "You are so hot and sweaty you are having a hard time breathing."
IF LEVEL >= -100 AND LEVEL < -20 THEN ENVIRONMENTDESCRIPTION$ = "It is extremely hot, humid and oppressive down here."
IF LEVEL >= -20 AND LEVEL < -10 THEN ENVIRONMENTDESCRIPTION$ = "The lower you climb, the warmer it gets."
IF LEVEL >= 10 AND LEVEL < 20 THEN ENVIRONMENTDESCRIPTION$ = "The wind is whipping through the windows and it is getting colder the higher you climb."
IF LEVEL >= 20 AND LEVEL < 100 THEN ENVIRONMENTDESCRIPTION$ = "The air is getting thin up here."
IF LEVEL >= 100 AND LEVEL < 200 THEN PRINT ENVIRONMENTDESCRIPTION$ = "Your nose is starting to bleed."
IF LEVEL >= 200 AND LEVEL < 300 THEN PRINT ENVIRONMENTDESCRIPTION$ = "You should not be able to breathe this high up."
IF LEVEL >= 300 AND LEVEL < 1000 THEN GOSUB [HIGHALTITUDETROUBLE]
IF LEVEL >= 1000 THEN GOTO [TOOHIGHENDING]
RETURN
REM THE FOLLOWING SECTION DESCRIBES WHAT HAPPENS IF THE PLAYER GOES EITHER TOO HIGH OR TOO LOW IN THE TOWER
[TOOHIGHENDING]
PRINT ""
PRINT "You can't breathe anymore. Your vision dims."
GOTO [ENDING]
REM ALL ROADS EVENTUALLY LEAD HERE...
[ENDING]
PRINT ""
PRINT "You have sustained fatal injury."
PRINT ""
PRINT "Your adventures are over..."
[REPEATENDINGOPTION]
PRINT ""
PRINT "Do you want to:"
PRINT ""
PRINT "1 - start over from the beginning or"
PRINT "2 - quit and leave the game"
INPUT REPLY$
PRINT ""
IF REPLY$ = "1" THEN GOTO [INTRO]
IF REPLY$ = "2" THEN END
PRINT ""
PRINT "Please enter a 1 or 2."
GOTO [REPEATENDINGOPTION]
REM IT TAKES A ZOMBIE TO MAKE A ZOMBIE!
[ZOMBIEENDING]
PRINT ""
PRINT "As your heart stops, you turn into a zombie. You roam the tower,"
PRINT "attacking unlucky visitors and turning them into zombies."
GOTO [ENDING]
REM EVERY TIME THE PLAYER GOES TO A DIFFERENT FLOOR IN THE TOWER, S/HE MIGHT RUN ACROSS EITHER A CREATURE OR AN ITEM
[RANDOMOCCURENCE]
IF SWORDPOSSESSION$ = "NO" THEN GOTO [RANDOMOCCURENCE1]
IF SWORDPOSSESSION$ = "YES" THEN GOTO [RANDOMOCCURENCE2]
[RANDOMOCCURENCE1]
RANDOMOCCURENCE = INT(RND(0)*100)
IF RANDOMOCCURENCE <= 80 THEN GOTO [ROOMDESCRIPTION2]
IF RANDOMOCCURENCE > 80 AND RANDOMOCCURENCE <= 93 THEN GOTO [ENCOUNTERACREATURE]
IF RANDOMOCCURENCE > 93 AND RANDOMOCCURENCE <= 96 THEN GOTO [PICKUPMAGICSWORD]
IF RANDOMOCCURENCE > 96 AND RANDOMOCCURENCE <= 98 THEN GOTO [DRINKHEALINGPOTION]
IF RANDOMOCCURENCE > 98 THEN GOTO [DRINKPOISON]
[RANDOMOCCURENCE2]
RANDOMOCCURENCE = INT(RND(0)*100)
IF RANDOMOCCURENCE <= 83 THEN GOTO [ROOMDESCRIPTION2]
IF RANDOMOCCURENCE > 83 AND RANDOMOCCURENCE <= 96 THEN GOTO [ENCOUNTERACREATURE]
IF RANDOMOCCURENCE > 96 AND RANDOMOCCURENCE <= 98 THEN GOTO [DRINKHEALINGPOTION]
IF RANDOMOCCURENCE > 98 THEN GOTO [DRINKHEALINGPOTION]
REM THIS SECTION IS THE ALGORITM FOR COMBATTING CREATURES IN THE TOWER
[ENCOUNTERACREATURE]
[SELECTCREATURETYPE]
SELECTCREATURETYPE = INT(RND(0)*11)
SELECT CASE SELECTCREATURETYPE
CASE 0
SELECTACREATURETYPE$ = "skeleton"
CREATUREWEAPON$ = "bony hands"
CREATUREATTACKINTRO$ = "An animated skeleton comes towards you, reaching out with its bony fingers..."
CASE 1
SELECTACREATURETYPE$ = "zombie"
CREATUREWEAPON$ = "rotting hands"
CREATUREATTACKINTRO$ = "A rotting zombie corpse shambles towards you..."
CASE 2
SELECTACREATURETYPE$ = "lich"
CREATUREWEAPON$ = "undead magic"
CREATUREATTACKINTRO$ = "A lich floats into your path, threatening you."
CASE 3
SELECTACREATURETYPE$ = "bandit"
CREATUREWEAPON$ = "a small dagger"
CREATUREATTACKINTRO$ = "A bandit jumps out from behind a wall, brandishing a dagger."
CASE 4
SELECTACREATURETYPE$ = "swordsman"
CREATUREWEAPON$ = "a short sword"
CREATUREATTACKINTRO$ = "A swordsman blocks your way, holding a sword and a shield."
CASE 5
SELECTACREATURETYPE$ = "mercenary"
CREATUREWEAPON$ = "a long sword"
CREATUREATTACKINTRO$ = "A mercenary runs at you, intent on attacking you."
CASE 6
SELECTACREATURETYPE$ = "werewolf"
CREATUREWEAPON$ = "teeth and claws"
CREATUREATTACKINTRO$ = "A werewolf rushes you, clawing and snapping its massive jaws."
CASE 7
SELECTACREATURETYPE$ = "goblin"
CREATUREWEAPON$ = "a spear"
CREATUREATTACKINTRO$ = "A goblin brandishes a spear at you."
CASE 8
SELECTACREATURETYPE$ = "orc"
CREATUREWEAPON$ = "a large dirty sword"
CREATUREATTACKINTRO$ = "An orc uses an ugly, cruel-looking sword to try to cut your head off."
CASE 9
SELECTACREATURETYPE$ = "ogre"
CREATUREWEAPON$ = "hands and feet"
CREATUREATTACKINTRO$ = "An ogre roars and kicks at you."
CASE 10
SELECTACREATURETYPE$ = "troll"
CREATUREWEAPON$ = "hands and feet"
CREATUREATTACKINTRO$ = "A troll brings both of his fists smashing down on you."
END SELECT
PRINT ""
PRINT CREATUREATTACKINTRO$
CREATUREHEALTH = INT(RND(0)*30)+20
CREATUREGOLD = INT(RND(0)*30)+20
[HITCREATUREAGAIN]
PRINT ""
PRINT "you: HP: " ; CHARACTERHEALTH ; " Gold: " ; CHARACTERGOLD ; " Weapon: " ; SWORDDESCRIPTOR$
PRINT SELECTACREATURETYPE$ + ": HP: " ; CREATUREHEALTH ; " Gold: " ; CREATUREGOLD ; " Weapon: " + CREATUREWEAPON$
[REPEATHITCREATURE]
PRINT ""
PRINT "Do you want to..."
PRINT ""
PRINT "3 - attack the " + SELECTACREATURETYPE$ + " or"
PRINT "4 - run back to the staircase"
INPUT REPLY$
PRINT ""
IF REPLY$ = "3" THEN GOTO [CHARACTERATTACKSCREATURE]
IF REPLY$ = "4" THEN GOTO [ROOMDESCRIPTION2]
PRINT ""
PRINT "Please enter a 3 or 4."
GOTO [REPEATHITCREATURE]
[CHARACTERATTACKSCREATURE]
CHARACTERATTACKSCREATURE = INT(RND(0)*2)+1
IF CHARACTERATTACKSCREATURE = 1 THEN GOTO [CHARACTERHITSCREATURE]
IF CHARACTERATTACKSCREATURE = 2 THEN PRINT "You swing at the " + SELECTACREATURETYPE$ + " and miss."
IF CHARACTERATTACKSCREATURE = 2 THEN GOTO [CREATUREATTACKSCHARACTER]
[CHARACTERHITSCREATURE]
CHARACTERDAMAGESCREATURE = INT(RND(0)*9)+2
TOTALDAMAGE = CHARACTERDAMAGESCREATURE + SWORD
CREATUREHEALTH=CREATUREHEALTH-TOTALDAMAGE
PRINT "You hit the " + SELECTACREATURETYPE$ + " and do " ; CHARACTERDAMAGESCREATURE ; " points of damage."
IF CREATUREHEALTH <= 0 THEN GOTO [CREATUREDEFEATED]
IF SELECTCREATURETYPE = 6 THEN GOSUB [WEREWOLFREGENERATES]
[CREATUREATTACKSCHARACTER]
CREATUREATTACKSCHARACTER = INT(RND(0)*2)+1
IF CREATUREATTACKSCHARACTER = 1 THEN GOTO [CREATUREHITSCHARACTER]
IF CREATUREATTACKSCHARACTER = 2 THEN PRINT "The " + SELECTACREATURETYPE$ + " lashes out at you and misses."
GOTO [HITCREATUREAGAIN]
[CREATUREHITSCHARACTER]
CREATUREHITSCHARACTERDAMAGE = INT(RND(0)*9)+2
TOTALDAMAGE = CREATUREHITSCHARACTERDAMAGE
CHARACTERHEALTH=CHARACTERHEALTH-TOTALDAMAGE
SELECT CASE SELECTCREATURETYPE
CASE 0
PRINT "The skeleton hits you for " ; CREATUREHITSCHARACTERDAMAGE ; " points of damage."
CASE 1
PRINT "The zombie scratches you and does " ; CREATUREHITSCHARACTERDAMAGE ; " points of damage."
ZOMBIESCRATCH$ = "YES"
CASE 2
PRINT "The lich saps " ; CREATUREHITSCHARACTERDAMAGE ; " hit points worth of your life force."
CASE 3
PRINT "The bandit stabs you and does " ; CREATUREHITSCHARACTERDAMAGE ; " points of damage."
CASE 4
PRINT "The swordsman slashes you for " ; CREATUREHITSCHARACTERDAMAGE ; " points of damage."
CASE 5
PRINT "The mercenary hits you with his cudgel for " ; CREATUREHITSCHARACTERDAMAGE ; " points of damage."
CASE 6
PRINT "The werewolf nips you for " ; CREATUREHITSCHARACTERDAMAGE ; " points of damage."
CASE 7
PRINT "The goblin stabs you and does " ; CREATUREHITSCHARACTERDAMAGE ; " points of damage."
CASE 8
PRINT "The orc slashes you, inflicting " ; CREATUREHITSCHARACTERDAMAGE ; " points of damage."
CASE 9
PRINT "The ogre kicks you and does " ; CREATUREHITSCHARACTERDAMAGE ; " points of damage."
CASE 10
PRINT "The troll hits you, inflicting " ; CREATUREHITSCHARACTERDAMAGE ; " points of damage."
END SELECT
IF CHARACTERHEALTH <= 0 THEN GOTO [ENDING]
PRINT CREATUREGOESATCHARACTER$
GOTO [HITCREATUREAGAIN]
[CREATUREDEFEATED]
PRINT ""
PRINT "Victory! The " + SELECTACREATURETYPE$ + " is a heap on the floor."
PRINT ""
CHARACTERGOLD = CHARACTERGOLD + CREATUREGOLD
GOTO [ROOMDESCRIPTION]
REM THIS CODE ALLOWS THE CHARACTER TO PICK UP AND DRINK A HEALING POTION, REVITALIZING THE CHARACTER.
[DRINKHEALINGPOTION]
PRINT "You find a vial with a glowing green liquid in it."
[DRINKHEALINGPOTIONREPEAT]
PRINT "HP: " ; CHARACTERHEALTH ; " Gold: " ; CHARACTERGOLD ; " Weapon: " ; SWORDDESCRIPTOR$
PRINT ""
PRINT "Do you want to..."
PRINT ""
PRINT "3 - drink the liquid or"
PRINT "4 - leave it where it is"
INPUT REPLY$
IF REPLY$ = "3" THEN GOTO [DRINKPOTION]
IF REPLY$ = "4" THEN GOTO [DONTDRINKPOTION]
PRINT ""
PRINT "Please enter a 3 or 4."
GOTO [DRINKHEALINGPOTIONREPEAT]
[DRINKPOTION]
HEALINGPOTIONSUSED = 1
HEALINGPOTION = INT(RND(0)*9)+2
CHARACTERHEALTH=CHARACTERHEALTH+HEALINGPOTION
PRINT "The potion energizes you. You gain " ; HEALINGPOTION ; " hit points, bringing you up to " ; CHARACTERHEALTH ; " total hit points."
PRINT ""
GOTO [ROOMDESCRIPTION2]
[DONTDRINKPOTION]
HEALINGPOTIONUSED$ = "NO"
PRINT "You cautiously decide to leave the unknown liquid where it is."
GOTO [ROOMDESCRIPTION2]
REM THIS CODE ALLOWS THE PLAYER TO PICK UP AND RETAIN A MAGIC SWORD. THE STRENGTH OF THE SWORD IS SELECTED RANDOMLY.
[PICKUPMAGICSWORD]
PRINT "You find a beautiful sword on the ground."
[PICKUPMAGICSWORDREPEAT]
PRINT "HP: " ; CHARACTERHEALTH ; " Gold: " ; CHARACTERGOLD ; " Weapon: " ; SWORDDESCRIPTOR$
PRINT ""
PRINT "Do you want to..."
PRINT ""
PRINT "3 - pick it up or"
PRINT "4 - leave it where it is"
INPUT REPLY$
IF REPLY$ = "3" THEN GOTO [PICKUPSWORD]
IF REPLY$ = "4" THEN GOTO [DONTPICKUPSWORD]
PRINT ""
PRINT "Please enter a 3 or 4."
GOTO [PICKUPMAGICSWORDREPEAT]
[PICKUPSWORD]
SWORDDAMAGEFACTOR = INT(RND(0)*20)+1
SWORD = SWORDDAMAGEFACTOR
SWORDPOSSESSION$ = "YES"
SWORDDESCRIPTOR$ = "+" ; SWORDDAMAGEFACTOR ; " magic sword"
PRINT ""
PRINT "The sword feels very strong, light and balanced in your hand."
GOTO [ROOMDESCRIPTION2]
[DONTPICKUPSWORD]
SWORD = 0
SWORDPOSSESSION$ = "NO"
PRINT ""
PRINT "You leave the sword lying on the ground."
GOTO [ROOMDESCRIPTION2]
REM THIS CODE CAUSES THE PLAYER TO DRINK POISON AND HURT THEMSELF
[DRINKPOISON]
PRINT "You find a vial with a glowing green liquid in it."
[DRINKPOISONREPEAT]
PRINT "HP: " ; CHARACTERHEALTH ; " Gold: " ; CHARACTERGOLD ; " Weapon: " ; SWORDDESCRIPTOR$
PRINT ""
PRINT "Do you want to..."
PRINT ""
PRINT "3 - drink the liquid or"
PRINT "4 - leave it where it is"
INPUT REPLY$
IF REPLY$ = "3" THEN GOTO [DODRINKPOISON]
IF REPLY$ = "4" THEN GOTO [DONTDRINKPOISON]
PRINT ""
PRINT "Please enter a 3 or 4."
GOTO [DRINKPOISONREPEAT]
[DODRINKPOISON]
POISONSTAKEN = 0
POISONDAMAGE = INT(RND(0)*9)+2
CHARACTERHEALTH = CHARACTERHEALTH - POISONDAMAGE
PRINT ""
PRINT "The liquid burns you on the inside. You lose " ; POISONDAMAGE ; " hit points, bringing you down to " ; CHARACTERHEALTH ; " total hit points."
IF CHARACTERHEALTH <= 0 THEN GOTO [ENDING]
GOTO [ROOMDESCRIPTION2]
[DONTDRINKPOISON]
POISONTAKEN$ = "NO"
PRINT ""
PRINT "You cautiously decide to leave the unknown liquid where it is."
GOTO [ROOMDESCRIPTION2]
REM THIS CODE TAKES ONE HIT POINT AWAY FROM THE PLAYER FOR EACH TURN S/HE TAKES ABOVE FLOOR 199.
[HIGHALTITUDETROUBLE]
CHARACTERHEALTH = CHARACTERHEALTH - 1
PRINT "The air is getting so thin, you are having difficulty climbing."
PRINT "You just lost a hit point due to lack of breath and stamina."
IF CHARACTERHEALTH <= 0 THEN GOTO [ENDING]
RETURN
REM THIS CODE TAKES ONE HIT POINT AWAY FROM THE PLAYER FOR EACH TURN S/HE TAKES ABOVE FLOOR 199.
[LOWALTITUDETROUBLE]
CHARACTERHEALTH = CHARACTERHEALTH - 1
PRINT "The air is so humid and thick you can hardly breathe."
PRINT "You just lost a hit point due to losing sweat and your breath."
IF CHARACTERHEALTH <= 0 THEN GOTO [ENDING]
RETURN
REM THIS CODE WILL MAKE THE ZOMBIE SCRATCH EVENTUALLY OVERCOME THE PLAYER, TURNING THEM INTO A ZOMBIE, TOO
[BECOMINGAZOMBIE]
CHARACTERHEALTH = CHARACTERHEALTH - 2
IF ZOMBIESCRATCH$ = "YES" AND CHARACTERHEALTH <= 0 THEN GOTO [ZOMBIEENDING]
PRINT ""
PRINT "That zombie scratch is looking red, puffy and nasty. You're getting feverish."
PRINT ""
RETURN
REM THIS CODE MAKES THE WEREWOLF REGENERATE. I HAVENT QUITE FIGURED OUT HOW TO KEEP HIM FROM REGENERATING ABOVE HIS STARTING HIT POINTS, BUT ILL FIGURE IT OUT SOON
[WEREWOLFREGENERATES]
WEREWOLFREGENERATES = INT(RND(0)*9)+1
CREATUREHEALTH = CREATUREHEALTH + WEREWOLFREGENERATES
PRINT ""
PRINT "The werewolf regenerates and grows larger. It gains " ; WEREWOLFREGENERATES ; " hit points, giving it " ; CREATUREHEALTH ; " hit points."
RETURN