Dungeon Level 99

By Duckworth

Originally published in EUG #58

Introduction

This is a graphic adventure game, played in a dungeon of unlimited size. As you play you are shown a 3-dimensional view of what is in front of you including all objects in perpective. Except for spells, all commands are one-letter and entered in real time, which means that a vampire will not wait for you to run before it attacks you.

Playing The Game

When you run the game it first displays the title in large letters and then asks your name. It then sets up your character, e.g. your strength and speed when running away from things (if you should choose to do so). You will then be put in the dungeon not too far away from the ladder going up to the surface. When you want to store your treasure or have your wounds healed you must find this ladder and go up it. You will also see ladders going down into the deeper parts of the dungeon, where the things you find will be bigger and more dangerous, but also more valuable.

Game Controls

A - Turn left, D - Turn right, W - Walk forward
X - Turn around, P - Go up, ; - Go down, S - Stay

All other commands are prompted from the program.

Technical Information

The main program sets up the arrays and constants used in the game 10-500 before entering the main program loop. It relocates to PAGE &E00 if necessary.

FNMEM Reads the BASIC ROM as this is used for the maze
PROCNROOM Calculates co-ordinates for the next room in direction D
FNTURN Calculates the direction after a left, right or about turn, depending on N
FNDOOR Calculates the type of exit in front of you. The numbers it returns have the following meaning:
0 Wall
1 Door
2 Nothing
PROCSHOW This is the main graphics routine. It draws all the 3D display. When called it will recursively call itself, advancing down the corridor until it finds a door or a wall. It will then draw this and any object before it does its first ENDPROC. As it exits each level of recursion it will draw the corridor around its position, getting closer to you with each step
PROCFARW This is used by PROCSHOW on its way back to draw the wall or door at the end of the corridor
PROCBOX Used by PROCFARW to draw the edges of the wall
PROCSIDE Draws the sides of the corridors, the side doors and passages
PROCSWALL Draws a side wall
PROCUPDOW Draws vertical shafts and ladders
PROCSDO Draws side doors
PROCLAD Draws ladders, etc
PROCCLW Draws side exit to corridor
PROCMOVE Accepts keys to move around maze
PROCWALK Walk forward
PROCGUP Climb ladder
PROCGDOWN Go down ladder
PROCLUD Used for testing for the existence of ladders going up or down before drawing or climbing them
PROCINN Draws the INN above the dungeon. This routine also stores your treasure and heals your wounds
PROCPRVAL Updates the continuous display of how you are doing
PROCLARGE Draws up large letters used for the game title
PROCBEGIN Sets game to starting position
PROCINCHAR Sets up player's starting characteristics
PROCHEAL Heals wounds and stores treasure. Used when you reach the INN
PROCDISPLAYC Displays the results of PROCINCHAR
PROCDRAW Draws object number N
PROCDROBJ Restore to the start of data for object number N. The reason why this is so long is so that the program could be RENUMBERed without any manual changes
PROCREAD Reads the points for drawing objects from data statements
PROCPL Plots with plot option O to the co-ordinates of point number P%
PROCOBJ Used by PROCSHOW to draw objects if present
PROCADOB Places object N in the maze at a random position
PROCPRVO Prints object description
PROCWE Used by PROCPRVAL to print weapon descriptions
PROCHANDLE Controls your handling of objects and fights with monsters
PROCHIT How badly did that monster hurt you?
PROCFIGHT Gives you the choice of fighting with a sword, casting a spell or running like hell
PROCFIG Fight with sword
PROCFIG1 How hard did you hit it?
PROCFIG2 You killed it
PROCINCWL You have gained enough experience and gold to become an adventurer of the next level

The remaining routines are extra features of the game and may spoil your fun if I explain them here!