Source:Imagery! Adventure Designer's Manual
This page is a verbatim reproduction of original source material and should not be edited except for maintenance. | |
Description |
The Imagery! Adventure Designer's Manual for use with the adventure game Imagery!. (See also the Imagery! Player's Manual.) |
---|---|
Source |
Dr. Evil Laboratories blog at commodoreserver.com |
Date | |
Author |
Kent Sullivan |
License |
It is believed that the use of this copyrighted item in Eamon Wiki qualifies as fair use under the copyright law of the United States. |
Other versions |
Imagery! Adventure Designer by Roy C. Riggs
© 1988 Dr. Evil Laboratories
P.O. Box 190
St. Paul. IN 47272
Welcome to the Imagery! Adventure Designer
The Imagery! Adventure Designer is a very powerful tool that allows you to design your own Imagery! adventures — even if you know virtually nothing about computer programming. The designer is very easy to use as it is completely menu-driven.
This manual will provide you, the prospective adventure designer, with four things:
- A short course on designing your own Imagery! adventure
- An introduction to adventure design theory
- An explanation of the features of the designer
- An understanding of the inner workings of an adventure
Designing adventures is a lot of fun. Good luck!
Imagery! Adventure Designer Manual
Written by Kent Sullivan
Version 1.0
March 8, 1988
© 1988 Dr. Evil Laboratories
Getting Started
What To Do First
Relax. The designer isn't a hard program to learn to use. You will probably want to read a little of this manual, just enough to get going, and then jump in and let the menus guide you through. There's nothing wrong with that! However, at some point you will want to read this manual is an organized fashion (i.e. when you encounter an unfamiliar option).
You should start reading by finishing the Getting Started section. Then rcad the Designing an Adventure section, as it breaks down the process of creating an adventure into easy, logical steps. Next, read the Using the Adventure Designer section, which introduces each of the three designer programs. Finally, read carcfully the section on Adventure Design Theory. You will need a good understanding of how Imagery! is put together in order to use the designer efficiently and to create quality adventures. That should definitely get you going. Later, when you need to look up a particular feature of the designer, you can refcr to the reference sections.
Loading and Running the Designer
The designer is written for the Commodore 64 and 128 (in 64 mode). One Commodore 1541 or 1571 (or compatible) disk drive is required, and a second drive set to device 9 is also useful. To begin, follow these easy steps:
For Commodore 64:
- Turn on monitor, drive(s), and computer.
- Insert the designer disk, label side up, into device 8, drive 0 and close the drive cloor.
- Type:
LOAD "BOOT",8,1
and pressRETURN
For Commodore 128:
- Insert the designer disk, label side up, into device 8, drive 0, and close the drive door.
- Turn on the monitor, drive(s) and computer. Make sure you are in 40-column mode.
- The designer will automatically boot on power-up.
NOTE: If your 128 is already on, you may press the RESET
switch instead of turning everything off then back on.
Programs on Your Designer Disk
The first thing you will see when you have loaded the designer is a menu with three options. The designer is really three separate programs that work together. The main designer program (option 3) takes up a lot of memory. So, not all of the features we wanted to include would fit into the main program. Two parts of the design process were separated into their own programs. They are the files "intro editor" (option l), which allows you to edit the introduction to your adventure (adventure name, author name, & intro text), and "library editor" (option 2), which allows you to create and edit libraries of monsters and items.
The intro editor, library editor, and main designer program all operate under a modified Kernal operating system. This modified Kernal has 4K bytes more free memory for BASIC, which the designer needs. Many other programs, such as Flexi-Copy (described below), won't operate properly under the modified Kernal. Always switch off your computer to reset to the standard Kernal before using these other programs.
Another program on the adventure disk you will use is Flexi-Copy (filename "flexicopy"). Flexi-Copy is an all-purpose file copier from Dr. Evil Lab's Utility Pack I. You can use Flexi-Copy to transfer adventure designer files from one disk to another. Flexi-Copy can copy relative files, a filetype many file copiers can't handle — and a file-type used by Imagery!
Designing an Adventure
This section of the manual will present the steps to take in creating an Inngery-l adventure and will also provide a walk-through of the designer program.
Steps in Adventure Creation
There are many ways to go about creating an Imagery! adventure — just as there are many ways to paint a house or assemble a model. As with most things, though, there is one way that involves the least hassle (and the most fun!). After creating quite a few adventures with the designer, those of us here at the Lab have come up with some steps to follow when creating an adventure. You don't have to use these steps, but things will be easier in the long run if you do.
1: The Idea
It's hard to come up with a totally original idea for an adventure. Don't worry, though. Pick a favorite scenario and twist it around to make it unique. If you don't like your idea, throw it away and start over — you haven't wasted any energy yet. It's better to decide you don't like the idea before you spend a lot of time typing it all in.
Once you have your idea, you can test how good it is by working on the next step, planning.
2: Planning
This part of designing an adventure is the one that everyone seems to hate most, even though it is vital to creating a successful adventure. It takes time to plan an adventure, but it's time well spent. What you plan now won't suddenly surprise you later.
Planning an adventure consists of two major steps: 1) sketching out a map of the adventure, noting where items and monsters should be placed and 2) creating all the monsters, items, and descriptions for the advenrture. You generally sketch out the map on graph paper. Many monsters and items you wish to use may already be contained in libraries on the designer disk. If not, you can use the library editor to create and save them for use in your current as well as future adventures.
There are many things to consider when designing an adventure like: 1) How big should it be? 2) How many monsters? 3) What kinds of items should be included? These questions, as well as many other important considerations, are examined in the Adventure Design Theory section.
3: Typing It All In
Once you have your adventure planned out on paper, transferring it to the computer is really the easy part. If you attack this task in an orderly fashion things will go much smoother than if you just haphazardly enter "this" then "that". Think of the designer as an "adventure processor". It's like a word processor but it's for adventures. The designer simplifies the actual coding process — the arrangement of text and numbers that describe an adventure. (You could design an Imagery! adventure with just a simple sequential text file editor and the list of variables from Appendix B, but it would be very difficult.)
Here is an outline of the steps we use when creating an adventure:
- Prepare a new disk for an adventure
- Enter the intro text, adventure name, and author name
- Search libraries for monsters/items that are needed
- Add any new monsters/items to their appropriate libraries
- Enter all the rooms, their descriptions, and exits
- Retrieve all the monsters from the libraries, modify, and place them
- Retrieve all the items from the libraries, modify, and place them
- Save the adventure
- (Optional: it's advanced) Modify the base adventure program for special effects
- Copy necessary files and playtest the adventure
Let's now take a closer look at each of the ten steps in using the designer.
Using the Adventure Designer
As mentioned in Getting Started, the designer is really three progranns: 1) the intro editor ("intro editor"), 2) the library editor ("library editor"), and 3) the main designer program ("designer"). The first step in using the designer begins with preparing a new disk.
1: Preparing a New Disk
Load the main designer program (see Getting Started for instructions). You should see the Dcsigner Main Menu after it's all loaded in.
The designer is composed of a tree of interconnecting menus. Think of the Main Menu as the ground level of the tree (the "root"). From here you can proceed down the tree, "branching" farther and farther away. It would be a good idea to fold out Appendix A: The Menu Tree now so you can get an idea of how the menus are organized.
You can select any of the options by using the CURSOR UP
and CURSOR DOWN
keys to move the blue highlight bar. Press RETURN
to select the highliglhted option. You can also use a joystick plugged into Port 2 to move and select.
Select the "Misc menu" option from the Main Menu. Next, select "Crcate adventure" from the Misc menu. If you have two disk drives, make sure the "Single/Double drive" option is set to "Double drive". Put a blank disk (or one that's ok to erase) into device 8 (if you're using one drive) or device 9 (if you're using two). Press F7
to prepare the disk for use. The designer will format the disk and create the necessary files for a new adventure.
2 Editing the Intro
The intro editor allows you to enter the screenful of text that is the introduction to the adventure. This is the screen you see right after you leave the Towne to go on an adventure. You also set the name of the adventure and the author's name with this program.
To load the intro editor, see the "Loading and Running the Designer" section. Once loaded, you will then see the Main Menu. Choose the appropriate oprtion to enter or edit the intro screen, the adventure name, or the author name. Note that the intro screen can be a maximum of 24 lines long. The editor won't allow you to enter more.
When typing in the intro, be sure to format the text on the screen just as you want it to appear in the adventure. For example, don't break a word between lines without using a hyphen.
3: Searching the Libraries
Libraries are made up of groups of monsters and items for use in adventures. Each library generally has monsters and items from the same era, as in "medicval" or "futuristic". Libraries can hold a maximum of 15 monsters and 15 items.
When creating a ncw adventure, you should first check any existing libraries for monsters and items that you need. The designer disk comes with three libraries — one medieval, one modern, and one futuristic. To search the libraries, first load the library editor. See the "Loading and Running the Designer" section for loading instructions.
Once loaded you will see the Library Main Menu. The library editor is basically the Edit Monster and Edit Item menus from the designer. with a few exceptions. Select "Load library" from the menu by using CURSOR UP
and CURSOR DOWN
to move the blue highlight bar. Press RETURN
to choose the highlighted option. You can also use a joystick plugged into Port 2 to move and select.
Choose the library you wish to search from the list. Once the library has loaded, choose either "Edit monsters" or "Edit items" to look at either monsters or items. Choose the "Edit" option from the menu at the bottom of the screen. Move up/down to choose the monster or item you wish to view.
Once you are familiar with the libraries you can then decide what new monsters and items you need to create for your adventure.
4: Adding New Monsters & Items
You can add new monsters and items to an existing library or create your own new library. Since libraries hold only 15 each of monsters and items! you may eventually have many libraries with monsters and items from the same eras.
To add monsters or items to an existing library, first load that library into the library editor. See the previous section, Searching the Libraries, for loading instructions. On the other hand, if you wish to make a new libnary, select the "Clear library" option instead.
Next, select either "Edit monsters" or "Edit items" from the Library Main Menu. Next choose the "Create" option (monsters) or the "Design" option (items) from the small menu at the bottom of the screen.
The editor will then make a new monster/item and put you automatically into edit mode. Type in all the relevant info for the monster/item. See the Library Editor Program Reference section for an explanation of the different features of items and monsters.
Once you have created all the monsters and items you need, make sure you select "Save library" from the Main Menu. You willl be prompted with the current library name. You can press RETURN
to accept the current name. If you enter an empty string for the name, the save will be aborted.
5: Creating Rooms & Exits
The next four parts to editing an adventure are all accomplished with the main designer program. Load it now. (See the Loading and Running the Designer section for loading instructions.)
Ncxt, sclcct "Load adventure" from the Main Menu. Make sure your adventure disk is in the appropriate drive. A new adventure has only one room, and it is empty. When the adventure has loaded you are ready to begin.
All rooms in an adventure have a room number. No two rooms will ever have the same number, but the number for a particular room may change as you add and delete rooms from an adventure. To edit a room, select "Edit adventure" from the Main Menu. The Main Menu will be replaced by the Edit Menu. The screenful of information you see corresponds to one room in the adventure. The number in the upper left corner is the room number.
There is a list of options, somewhat like the Main Menu, at the bottom of the screen. You can move up and down as well as left and right here to choose any of the options. You can select "Room menu" to add and delete rooms.
You can edit the name (the short description) or the description (the long one) by selecting "Edit name" or "Edit desc". When you edit the room name, you will also select whether the room is naturally lit or not.
To move from room to room, select "Goto room". You will be presentcd with a list of room numbers and names to help you identify the rooms. Move up/down to choose the new room.
To edit the number and kinds of exits for the room, select the Exit menu. You will see a new screenful of info. Vertically along the left is the list of possible directions to exit any room (10 ways) and Quit. Setting exits couldn't be easier. Move up/down to select the direction. Press RETURN
or the fire button to toggle whether the exit is secret or not (secret exits are shown in red). Select a direction. Move right to highlight the room to which the exit will lead. Then use CURSOR UP
and CURSOR DOWN
to selcct the correct room for the exit. It's that easy!
An important thing to remember is that exits are one-way. If you make the north exit from room 1 lead to room 2, the south exit from room 2 will not automatically lead to room 1. This feature gives you greater flexibility, allowing exits to be secret on one side only, or only be one-way. Also, you could edit the north exit from room 1 to lead to room 2 and the east exit of room 2 to lead to room 1, giving the impression that the connecting passage is curved.
When you're all done, select "Quit" to return to the Edit Menu. Your changes to the exits will be visible here also.
6: Placing & Editing Monsters
The first step in adding monsters is to load the library which contains the monsters you wish to use. Only one library may be in memory at a time. Select "Load library" from the Main Menu. You will then be able to choose which library to load' Next, select "Edit adventure". Move into the first room you wish to place a monster by using "Goto room". Then select "Mons menu". You will have a choice of Edit, Sommon, Kill, and Quit. Choose "Summon" and select a monster from the library. Once you have summoned a monster, choose "Edit" to edit any of its chalacteristics. Please see the Main Designer Program Reference section for a synopsis of the different monster traits, as there are too many to go into here.
The "Kill" option allows you to delcte a monster from the adventure. Any items the monstcr is carrying will also be deleted. "Quit" returns you to the Edit Menu.
7: Placing & Editing Items
Placing and editing items works much like placing and editing monsters. First, make sure you have the appropriate library loaded. Next, select the room in which you wish to place the item. Then, select "Summon" from the Item menu. Choose the item to place with CURSOR UP
and CURSOR DOWN
. You can now go back and edit the item ("Edit" on the Item menu). Note that to place an item on a monster you first place the item in a room then "Edit" the item and select "Locatn" (location). You can then move the item to a monster. As with monsters, the editing options are too numerous to go into here. Please see the Main Designer Program Reference section for a description of the different features you can alter.
"Remove" on the Item menu is to items as "Kill" is to monsters. You can delete any item in a room or on a monster in the adventure.
8: Saving the Adventure
Once you have entered and edited the information for an adventure, you then save the adventure. To save, select "Save adventure" from the Main Menu. That's all there is to it!
9: Modifying the Adventure Program
The base Imagery! adventure program ("adventure" on any adventure disk) has many features that allow a lot of flexibility in designing. Sometimes, though, you may wish to add special effects not covered in the standard features. Often these extras pertain to a specific room or a specific set of conditions. These special cases always require modifying "adventure".
A good knowledge of BASIC and "adventure" is needed to even consider making any modifications. Most designers won't bother with any changes in any of their first adventures — maybe even never. If you want to try making some changes to "adventure", carefully read the Adventure Design Theory section and Appendices B and C. Some modifications are harder than others to make — many aren't worth the trouble. Watch the Designer's Bench in The Image for hints and tips on making modifications (and other advanced topics).
10. Copying Files & Playtesting
After you have saved your adventure you're almost ready to test it! First, though, you need to copy over some files to your adventure disk. Here's what you should do:
- Use the
SCRATCH
command from BASIC to scratch the following files from your adventure disk:- boot
- super dos 2
- title
- dump.obj
- adventure
- Load Flexi-Copy, the file copier on the designer disk. For a quick run-down of its operation, see Appendix D: Flexi-Copy Operation.
- Use Flexi-Copy to copy the files A–E above from a finished adventure disk, such as Beneath Mount Imagery, to your adventure disk.
That's it! You're ready to try out your adventure. Note that you only have to copy these files once per adventure disk.
Make a note of any descriptions that seem out of whack and any monsters that don't act correctly (too hard to kill, etc.). Also check to see that all items work as planned. A thorough playtesting is usually followed by another editing session — and then another round of playtesting.
Once you get your adventure into shape, have some friends play it. Other people often catch things you've missed (especially spelling errors and plot inconsistencies). When your adventure is complete, it's time to send it to Imagination so other Imagery! players can enjoy it. Please see Appendix E: Submitting Imagery! Adventures, for the details. Have fun!
Adventure Design Theory
In order to create a good Imagery! adventure, you as a designer need to have at least some idea of how rooms, monsters, and items zrll interact in an adventure. As a player you appreciate a smoothly-flowing adventure that "plays right". This flow comes from the designer understanding the elements of the system with which he is working.
A good designer knows how to balance battles with puzzles to make a fun, yet challenging, adventure. This section will present "behind-the-scenes" information that will bring you a greater understanding of Imagery! and how to more effectively use the designer. Let's begin with a discussion of the different kinds and sizes of adventures.
Adventure Types & Sizes
As mentioned in the Imagery! Player's Manual, almost any kind of adventure is possible with Imagery! There are only three basic adventure types currently supported in the Towne program weapons shop, though: medieval, modern, and futuristic. There is a separate library for each of these genres included with the designer. It's important to understand the different weapons and monsters that are appropriate for each time period.
A little bias is built into Imagery!, as you may have noticed — medieval weapons are the only ones affordable by a new player. We did this on purpose. Medieval adventures are the most popular, so we felt that most beginning players and designers would concentrate on them. (We also wanted to discourage players from taking a plasma autocannon into Beneath Mount Imngery and wasting each of the monsters with one blast!) Imagery!'s main strength is its flexibility- yet this is also its possible downfall. Because of the limited memory of the C-64 and the size of the adventure and the designer programs, adventures can't be as big as we had originally hoped. BeneqthMourrt Inwgeryhas 23 rooms* not the limit, but approaching it. The three components of an adventure-- rooms, monsters, & items- are all competing for the available memory. 'l'he designer has a ceiling of 50 rooms, 50 monsters, and 50 items. You will most likely never reach this limit because of limited memory. Keep in mind that the more nlonsters and items you have in an adventure, the fewer rooms you will be able to squeeze in. So, how do you fit everything in? The best advice we can give is to keep things in about the same proportions: around 20 each of rooms, monsters, and items. Then, massage things around to include everything you can.
Difficulty Level
When playing an adventure, nothing is more frustrating than runninLg into a monster which can't be beaten or a puzzle that can't be solved. As a designer, you need to understand how to make things challenging but not impossible. A good understanding of the guidelines for parameters describing various monsters and items is vital. Look over Appendix F: Sample Libraries for a run<lown of many of the common monsters and items and how they have been defined. Plan your monsters and items to fit in with the existing ones. Make sure you don't make things too easy as well!
Going hand-in-hand with this understanding is the practice of always testing your adventures with a character of the level which is likely to attempt it. The ultimate failure occurs when no one wants to play your adventure but you* and by testing it with an average character with average knowledge and powers you will ensure that never happens.
Movement & Friendliness
When exploring an adventure, a character is free to move from room to room, picking up items and searching for secret exits, as long as there are no unfrisndly monsters around. When an adventurer encounters a monster, the monster's reaction to the player is determined. The first turn after the monster and player have met, ttre player can leavc the room or launch a first attack, but not search the room or pick up objects. During the second turn, the monster's reaction is determined. Two characteristics make up a monster's reaction to the player: its rr:action rating and its friendliness (a percentage) The reaction rating is the monster's c,verall attitude toward the player. The friendliness percentage reflects the likelihood of a monster's reaction changing after meeting a player. If a monster's reaction is determined to be unfavorable, the monster will attack the player. Please see Appendi.x B: Adventure Variables & Formulas, for a detailed description of reaction determination.
Battles
When the adventurer is in battle, he must either befriend, defeat, or scare away any unfriendly monsters before valuable items can be taken. The adventurer also can only leave the room by the exit which he entered. Therefore, time spent in battle is important to the successful completion of an adventure. Battles can be divided into five types of action: 1) Attacks by the adventurer (and any friendly monsters) 2) Attacks by unfriendly monsters 3) Effects of special/magical items that help the adventurer 4) Effects of special/magical items that harm the adventurer 5) Added (non-standard) special programming effects (not common) The effects of weapons and armour are pretty obvious- weapons injiure monsters and characters while armour absorbs damage frorn weapons. The effects of magical spells and items aren't quite as obvious, though.
Magic Spells & Items
There are four standard magic spells which an adventurer can learn: Speed, Heal, Blast, and Power. Heal can be used on the adventurer or a monster. Speed and Power can only be used on the adventurer. Blast only effects monsters. Here's what they do: 1) Speed- doubles player's dexterity for G25 turns (random value). 2) Heal- restores 0-20 points of health (random). If used on a fleeing monster, it will stop fleeing. 3) Blast- does G10 (random) times adventurer's level points worth of damage to a monster. 4) Power- has one of 6 outcomes (IWo chance each) a) cursed for 25 turns b) protected for 25 turns c) regenerating for 25 turns d) poisoned for 25 turns e) invisible for 10 turns f) asleep for 10 turns The remainder of the time @AVo) nothing happens. See below f,or an explanation of the effects of the Power spell. Magic items are more flexible generally than spells because both the number of times the power can be used and the duration (if applicable) can be set. Also, magic items only effect the player, never monsters. A magic item can have one of nine powers, six of which correspond to one of the Power spell's six abilities. Two others are kin to the Speed and Heal spells. The nine powers are: 1) cursing 2) protection 3) regeneration 4) poisoning 5) invisibility 6) sleeping 7) speed 8) healing 9) teleportation Cursing increases the chance of being hit in battle. Protection is the, opposite, as it decreases the chance of being hit. Regeneration restores one point of health per turn, while poison depletes one point per turn. Adventurers who are invisiible can't be seen by monsters, while those who are asleep are defenseless- they can't move or attack. Speed works just like the Speed spell (dexterity times 2). Healing restores all health points. Teleportation transports the adventurer instantly to a randorn room in the adventure. Duration doesn't apply to teleportation or healing as their effects are instantaneous. Set durations for those items to 0 in the designer. NOTE: Although a monster can be tied up or asleep, it has to be set that way with the designer- the player can't do either of those things to it. On the othLer hand, a monster is capable of going berserk or fleeing in battle:, depending on how courageous it is and Page 12 the amount of damage a player does to it. Imagery! Adventure Designer's Manual
Hints & Tips
A few other things should be considered as you design your adventures. Let's first talk a little more about memory management- what things take up memory and what thingi don't. Memory Management All of the short descriptions (called the names) for rooms are held inr memory at all times The same applies for the attack phrases for natural weapons :lnd the effects for magi<: items. These should therefore be as short and concise as possible. On the other hand, the long descriptions of rooms, items, and monsters are read in from disk when required and displayed directly on the screen, taking no memory. These, then, can be quite descriptive. Even though the short descriptions need to be short, try to distinguish between like monsters, items, and rooms to avoid confusion, unlcss you need very similar groups. One situation where this can be effective is discussecl next. l![azes One of the neat tricks you can pull with room descriptions involves creating a maze. If yorr make the short and long descriptions exactly alike group-wise for the rooms in a mai'-e, it will be more difficult to map. Sce rooms 15-18 of Beneothlu(ount Imagery for an example. Adventurers won't be able to tell easily when they have entered another room since everything will look the same. We'll be covering these and other neat techniques in each issue of The Image, so stay tuned!
Intro Edit Program Reference
The Intro Editor Main Menu has six options, each of which is fairly self-explanatory. The Intro Editor has three functions: 1) editing the text introduction to an adventure, 2) giving the adventure a name, and 3) setting the author name.
Enter Adventure Introduction
Choose this option to create or edit an adventure's introduction (the screen of text presented when you first go on an adventure from the Towne). You will be able to move around freely on the screen with the cursor keys to edit the intro — somewhat like a mini word processor.
The intro can be a maximum of 24 lines long. The editor won't let you enter text on the 25th line. Also, you can't place any text in the last (40th) column of a line. Other than that, you are free to place text anywhere on the screen. Make sure you format the intro exactly as you would like for it look within the adventure — hyphenate words in the correct places, etc.
Generally, an intro will have the first line blank, with the second line being the name of the adventure (centered), and then two more blank lines before the start of the adventure description. Here's a familiar example:
<Blank line>
Beneath Mount Imagery
<Blank line>
<Blank line>
Lately there have been whispered
rumors around the towne. Many years (etc.)
When you have finished entering text, press F1
to return to the Main Menu. If you want to save any changes you have made, reply with a "y" to the "Save changes?" question. Otherwise, none of your work will be saved.
Enter Adventure Name
Choose this option to edit the name of your adventure. The current name will be displayed ("<adventure>" if just created) and you can then edit it. Adventure names should describe some aspect of the adventure. When you are through editing, press RETURN
to go back to the Main Menu.
Enter Author Name
Choose this option to set the adventure author's name. The current author will be displayed ("<your name>" if just created) and then you can edit it. When you are through editing, press RETURN
to go back to the Main Menu.
Load Intro
Use this option to load in the intro information for an adventure. Make sure you put your adventure disk in device 8 then press RETURN
. The editor will then load in the intro information.
If you have just created an adventure disk with the designer, there won't be an introduction for the adventure. The name of the adventure will be set to "<adventure>" and the author to "<your name>".
Save Intro
Use this option to save the intro information for an adventure. Make sure you have your adventure disk in device $ then press RETURN
. The editor will then save the revised intro information.
Exit Program
Choose this option to exit the intro editor. Make sure you have saved your work before exiting! If you chose this option by mistake, answer "n" to the "Are you sure?" prompt.
NOTE: To restart the editor without erasing the information in memory, use "GOTO20", not "RUN".
Library Editor Program Reference
The Library Editor is really a duplication of the Edit Monster and Edit Item menus from the main designer program. The purpose of the Library Editor is to provide a way to create and maintain libraries of monsters and items that can be used in many different adventures. Libraries are raw materials for adventure construction: you use what is in them as a base, modifying and changing to fit your needs for a particular adventure.
Because the Library Editor is so much like the main designer program, we won't duplicate the explanation of any functions that are also found in the main designer program. Refer to the discussion of those features in the Main Designer Program Reference section.
Edit Monsters
As mentioned above, most of the features of this option are identical to the ones found under the Edit Monster Menu in the main designer program. There are some differences, however, that we will discuss here.
- The "Summon" option from the main designer program is not available, obviously. It is replaced by the "Create" option, which allows you to create a new monster from scratch.
- The "Desc" option isn't available in the Library Editor. Each monster should have a unique description which reflects its particular situation, so it is not included in the Library Editor.
- The "Weap" option only allows editing of the monster's natural weapon (if you want it to have one). You can equip monsters once they are placed in an adventure.
- The "Item" option isn't available in the Library Editor. Any items you want a monster to have will be dependent on the adventure, so you should do this once the monster has been placed in the adventure.
- The "Loca" option isn't available in the Library Editor. Monsters in a library obviously can't be placed in particular places since libraries aren't connected to specific adventures.
Edit Items
As mentioned above, most of the features of this option are identical to the ones found under the Edit Item Menu in the main designer program. There are some differences, however, that we will discuss here.
- The "Summon" option from the main designer program is not available, obviously. It is replaced by the "Design" option, which allows you to create a new item from scratch.
- The "Descrip" option isn't available in the Library Editor. Each item should have a unique description which reflects its particular situation, so it is not included in the Library Editor.
- The "Locatn" option isn't available in the Library Editor. Items in a library obviously can't be placed in particular places since libraries aren't connected to specific adventures.
Load Library
This feature works exactly like the Load Library function in the main designer program.
Save Library
Use this feature to save any library you create or modify. Names can be a maximum of 13 characters long, as they are prefaced by "lb.". If you are saving a previously created library, the Library Editor will scratch the old version of the library and replace it with with your edited version. Make sure you save libraries onto the designer disk and not an adventure disk!
Clear Library
Choose this option to clear any library in memory so that you can create a new library.
Dos Commands
This option allows you send commands to the disk drive (device 8 only). Note that if you wish to scratch a library from the designer disk, precede the name with "lb.", i.e., to scratch the library "temp", use the name "lb.temp".
Exit Editor
Use this option to exit the Library Editor. Make sure you have saved your work before exiting! If you chose this option by mistake, use "GOTO1000", not "RUN" , to re-start and preserve any library in memory.
Main Designer Program Reference
As discussed in the Preparing a New Disk section, the main designer program is composed of a tree of interconnecting menus. This section will describe each of the designer's functions, one menu at a time. You might want to have Appendix A: The Menu Tree handy to guide you from menu to menu.
The designer has 6 major menus, each with several options. The hierarchy of the menus is:
Main Menu
- Edit Menu
- Edit Monster Menu
- Edit Item Menu
- Exit Menu
- Miscellaneous Menu
All of the designer's menus wrap around so you can move quickly within them. To select menu options, you can use the up and down cursor keys to move the highlight bar and RETURN
to select. You can also use a joystick plugged into Port 2.
Any time you are presented with a list of items from which to select, such as a list of monsters to choose from a library, you can move up and down through the list. Choose "<Nobody>" or "<None>" if you selected that particular menu option by mistake. Press RETURN
to make your selection.
When entering text for any applicable menu option, such as the name for a room, you can move freely within the body of the text with the cursor keys. The editor is always in insert mode as well. Use DEL
to erase unwanted characters. When you are done editing, press RETURN
to save the text.
Let's now discuss the menus in the above order, beginning with the Main Menu.
Main Menu
The Main Menu is the first menu of the designer. From here you can proceed up the menu tree to the rest of the menus and options. Besides the four options and two menus available, the Main Menu also shows the name of the adventure you are currently editing and the name of the library you are currently using. Let's now take a look at each of the options on the Main Menu.
- Edit adventure
- This option leads to the Edit Menu. In order to use this option you must have either just created a new adventure or loaded one from disk.
- Load adventure
- Use this option to load an adventure for editing. Before selecting this option, make sure you have an adventure disk in the appropriate drive. If you have one drive, replace the designer disk with an adventure disk. If you have two drives, make sure the adventure disk is in device 9.
- Save adventure
- Use this option to save an adventure you have edited. Before selecting this option, make sure you have an adventure disk in the appropriate drive. If you have one drive, replace the designer disk with an adventure disk. If you have two drives, make sure the adventure disk is in device 9.
- Load library
- When you select this option, the designer disk will be searched for any libraries. A list will then be presented from which you can select the one you wish to use. Select "<None>" if you chose this option by mistake.
- Misc menu
- This option leads to the Miscellaneous menu, which is discussed below.
- Exit designer
- Use this option to leave the designer and return to BASIC. Make sure you have saved the adventure you were editing with the Save adventure option before exiting!
NOTE: If you chose this option by mistake, type "GOTO1000", not "RUN", to re-start and preserve any adventure in memory.
Edit Menu
This screen presents information about the room currently being edited. The current room number is displayed in the top left corner. You can also see the room's name, whether the room is naturally light or not, the room's description, any monsters and items in the room, and any exits out of the room.
From here you can edit the current room's characteristics, move to a new room, or move to the Monster or Item menus. Here's a closer look at your options:
- Goto room
- Use this option to select a different room to edit. When you select this option you'll be presented with a list of the valid rooms in the adventure. When you move to a new room the display will change to show the new room's information.
- Edit name
- The room name is the short description of the room. All descriptions are prefaced with the text "You are". See the Hints & Tips section for some tips on creating effective room names. The maximum length of a room name is 71 characters, not counting the "You are".
After you have edited the room name, select whether the room is to be naturally light or dark. Indoor rooms normally will be dark.
- Edit desc
- The room description is the long description of the room, read from disk the first time you enter a room or when you type "Look". See the Hints & Tips section for some tips on creating effective room descriptions. The maximum length of a room description is 253 characters.
- Room menu
- By selecting this option you may add or delete rooms. Select "Add" to add a room to the end of the room list. You will be moved into the new room automatically.
Select "Delete" to delete the room you are currently in. Note that all items and monsters in the selected room are also deleted. Any exits into the deleted room from other rooms are set to "<0, Nowhere>". Finally, the last room in the list is moved to fill in the gap left by the deleted room. Any exits into it from other rooms, are adjusted as well.
Select "Quit" to return to the Edit Menu.
- Mons menu
- This option allows you to summon, edit, and kill monsters. "Summon" presents you with a list of the monsters in the current library. Any monsters you choose will be placed in the current room. "Kill" allows you to remove monsters from anywhere in the adventure, not just the current room. Note that any items the monster is carrying will also be deleted. For a description of the "Edit" option, please see the Edit Monster Menu section below.
- Item menu
- This option allows you to summon, edit, and remove items. "Summon" presents you with a list of the items in the current library. Any items you choose will be placed in the selected room or on the selected monster. "Remove" allows you to remove items from anywhere in the adventure, not just the current room or current monster. For a description of the "Edit" option, please see the Edit Item Menu section below.
- Exit menu
- This option leads to the Exit screen, where you may add, delete and edit the exits for the current room. Vertically along the left is the list of possible directions to exit any room (10 ways) and Quit. Move up and down to the exit direction you wish to change. Press
RETURN
to toggle whether the exit is secret or not. Secret exits are shown in red.Move right then up/down to change which room that particular direction leads. The room number and an abbreviated description are shown for each exit direction. Use "<0, Nowhere>" for unused exits.
"Quit" returns you to the Edit menu.
- Main menu
- Selecting this option returns you to the designer main menu. See the Main Menu section above for more information.
Edit Monster Menu
This menu presents information about the monster you have selected to edit. From this menu you can edit all of a monster's characteristics. There are 14 options available. For some sample monsters, please see Appendix F: Sample Libraries. Let's examine now each of the options:
- Name
- Adventurers identify monsters by their names, so try to make each name unique. In some cases you might want a group of like monsters, though — maybe for an ambush. The maximum length of a monster name is 38 characters.
- Desc
- The monster description is displayed when an adventurer first meets a monster. It should paint a picture that helps identify the monster and the situation as the adventurer meets it. Maximum length of monster descriptions is 253 characters.
- Strn
- A monster's strength determines how well he hits when attacking in battle. 18 is high for a human.
- Dext
- A monster's dexterity determines its overall agility and reaction speed in battle. 18 is high for a human.
- Frnd
- A monster's friendliness percentage helps determine how well it will like an adventurer. The higher the percentage, the more likely it is to like an adventurer. Friendliness affects the calculation of a monster's reaction to an adventurer. See the "Reac" section for more information.
- Cour
- A monster's courage percentage determines how long it will stay and fight when injured. A monster with a courage of two will stay and fight to the death, while one with low courage will flee when hurt.
- Hitp
- A monster's hit points are a measure of the amount of damage it can take before dying. A monster with 20 hit points can take 20 points of damage. For comparison, a first level adventurer has between 10 and 20 hit points. Also, note that adventurers gain between 2 and 8 hit points per experience level.
- Armr
- Selecting this option presents you with three options: Natural, Item, and Quit. There are two types of armour for monsters: natural and man-made.. Strong natural armour is applicable for only certain monsters (dragons, etc.) but all monsters could have some natural armour.
If you select Natural, enter the armour bonus. The armour bonus is a percentage reflecting the basic strength of the monster's natural armour. The greater the percentage, the better the armour is and more difficult it is to inflict damage on it. An armour bonus of 15% is about maximum for most monsters (with monsters like dragons being exceptions).
If you select Item, next choose which armour the monster is to have from the list of items in the current library. Note that items which aren't armour are also in the list. You will only be able to choose an item that is armour. To edit the armour's characteristics, see the Item menu option below.
Quit returns you to the Edit Monster Menu.
- Weap
- Selecting this option presents you with three options: Natural, Item, and Quit. There are two types of weapons for monsters: natural and man-made. Dangerous natural weapons are applicable for only certain monsters (ones with claws, fangs, etc.).
If you select Natural, enter the weapon bonus. The weapon bonus is a percentage reflecting the basic strength of the monster's natural weapon. The greater the percentage, the better the weapon is and more likely it is to inflict damage (score a hit) in battle. A weapon bonus of 15% is about maximum for most monsters (those with excellent claws or fangs might be exceptions). Then enter the phrase which will be displayed when the monster attacks. Most phrases begin with a "-ing" verb, like "going for the throat". Maximum length of an attack phrase is 38 characters.
If you select Item, next choose which weapon the monster is to have from the list of items in the current library. Note that items which aren't weapons are also in the list. You will only be able to choose an item that is a weapon. To edit the weapon's characteristics, see the Item menu option below.
Note that the weapon you select, whether natural or man-made, becomes the owner's ready weapon.
Quit returns you to the Edit Monster Menu.
- Reac
- A monster's reaction determines whether or not a monster will attack an adventurer. A negative number means that the monster is mad and will attack on sight. The greater the number, the more mad it is. A reaction of 0 means the monster is neutral and won't attack. A reaction of 1 means the monster will be friendly and will fight with the adventurer while he is in the current room. A reaction >1 means the monster will join the player's party and will follow him throughout the adventure. The greater the number the more loyalty the monster has for the player.
- Stat
- Status reflects which of the six possible states a monster is currently in. You can select either "normal", "asleep", "tied up", "dead", "berserk", or "fleeing". "Normal" means that the monster is free to move and fight. Asleep or tied up monsters can't move or fight — they are helpless. Fleeing monsters will run away from a fight, while berserk monsters will seek out battle. A berserk monster also has a temporary courage of 100%. Monsters usually have "normal" statuses.
- Item
- Selecting this option presents you with the Item Menu, which is explained in Main Menu section above. Note that any item summoned will be given to the monster you are editing, not just placed in the current room.
- Loca
- Choose this option to change the location of the monster you are editing. Select which room to place the monster. If you decide not to move the monster, choose the room you are currently in.
- Quit
- Select this option to return to the Edit Menu. See the Edit Menu section above for more information.
Edit Item Menu
This screen presents information about the item you have selected to edit. From this menu you can edit all of a item's characteristics. There are 10 options available. For some sample items, please see Appendix F: Sample Libraries. Let's examine now each of the options:
- Itm Name
- Adventurers identify items by their names. Many items will have very similar names, but special items should have unique names. For example, a magic sword might be "FireStorm" instead of just "sharp sword".
- Descrip
- The item description is displayed when an adventurer Examines it. It should paint a picture that helps identify the item. Maximum length of item descriptions is 2-53 characters.
- Effect
- An item's effect is the short description printed when the item is activated. Weapons, normal items, and magic items have effects, while armour and treasure don't. Some sample effects:
- Weapon - "The spiked balls twirl around"
- Normal item - "As you rub the lamp it begins to glow!"
- Magic item - "You slip the ring on your finger and"
The maximum length for an effect is 79 characters. Note that for magic items that the effect should end with "and" so that the result can be added to the end, as in: "You slip the ring on your finger and you are protected.".
Armour doesn't have an effect because the base adventure program prints "Wearing the <armour>" whenever you "activate" a piece or armour (i.e., wear it). Treasure doesn't have an effect because money can't be activated.
- Light
- The value for light determines how many turns an item will give off light before expiring. A value of -1 indicates that the item will give off light forever. Only normal items (such as lamps and torches) and weapons (enchanted) can be lit. All other items (armour, magic, and treasure) can't be lit.
A non-enchanted light source, such as a torch or a lamp, should burn for a limited number of turns, while a magic lamp or sword might provide light forever.
- Hitpoint
- An item's hit point total is a measure of the amount of damage it can take before breaking. Items which give off light will be extinguished when broken. A readied weapon, when broken, will unready itself, while armour, when broken, will automatically be taken off (but the player will still be carrying it).
- Value
- An item's value is the number of gold pieces it is worth. Items sold to the pawn shop in the Towne never bring full price.
- Weight
- An item's weight describes how heavy it is and how hard it is to move. Remember that a player can carry a maximum of eight times his strength. Items you don't want the player to be able to take can be assigned a weight of 9999. The base adventure program will tell players to leave items alone that have this weight.
- ItmType
- There are five types of items: weapon, armour, treasure, magic, and normal. For a weapon, enter the number of dice of damage the weapon does per attack. Next enter the companion sides per die. The greater the number of sides, the greater the range of damage the weapon can do. For example, a ten-sided die can do between 0-10 points of damage, depending on the roll. The dice of damage determines how many times the die is rolled. The separate rolls are added together to give the final damage. Finally, enter the attack bonus, which is a percentage reflecting the basic strength of the weapon. The greater the percentage, the better the weapon is and more likely it is to inflict damage (score a hit) in battle. An attack bonus of 25% is about maximum for most weapons. Specially enchanted weapons might have a higher attack bonus.
For armour, enter the defense bonus, which is a percentage reflecting the basic strength of the armour. The greater the percentage, the better the armour is and more difficult it is to inflict damage on it. An armour bonus of 25% is about maximum for most armour.
Treasure is automatically converted into money and added to the player's gold when the player successfully finishes the adventure.
For a magic item, select its power from the list. Next, select the duration for the effect, if applicable. Then, enter the number of charges the item has. For a discussion of the different magic powers, please see Magic Spells & Items in the Adventure Design Theory section.
- Locatn
- Choose this option to set the location of an item. You can choose a room or a monster.
- Quit
- Select this option to return to the Edit Menu. See the Edit Menu section above for more information.
Miscellaneous Menu
This menu is a collection of features that don't fit anywhere else. Let's take a look at them:
- Create adventure
- Select this option to prepare a disk for a new adventure. If you have two disk drives, make sure the "Single/Double drive" option is set to "Double drive". Put a blank disk (or one that's ok to erase) into device 8 (if you're using one drive) or device 9 (if you're using two). Press
F7
to prepare the disk for use. The designer will format the disk and create the necessary files for a new adventure. - Clear adventure
- Use this option to clear the current adventure in memory but not the current library. Make sure you have saved the adventure first if you want to use it later.
- Single/Double drive
- Use this option to set whether you are using one or two disk drives. Two disk drives are useful because you can use device 8 for the designer disk and device 9 for the adventure disk.
If you have a second drive (device 9) turned on when the designer is first loaded, the program will default to double drive operation.
- Dos commands
- Use this option to send commands directly to either disk drive (8 or 9). This feature is useful for scratching and renaming files. To send a command to device 9, preface the command with a "9:", as in "9:s0:myfile" to scratch "myfile".
- Main menu
- Selecting this option returns you to the designer main menu. See the Main Menu section above for more information.
Appendix A: The Menu Tree
Appendix B: Adventure Variables & Formulas
the following is a description of all the variables and formulas used in the Imagery!base adventure program.
Standard (Non-array) Variables
a | which item |
a$ | keypress |
ab | armour bonus |
al | allow flag |
at | attacker |
ba | amount of money player has in bank |
bt | battle flag |
c$ | player's command |
cf | number of friends in battle |
cm | number of enemies in battle |
cu | curse flag |
cz$ | player's last command |
d | number of dice of damage |
da | defender's armour |
df | defender |
dm | total damage from attack |
dr | direction |
e | error code read from drive |
e$ | error type read from drive |
ex | player's experience |
fl | flee flag |
fr | friendliness |
gl | amount of money player owns |
hp | ratio of damage to total hit points |
ht | chance to hit / result of attack |
in | invisibility flag |
j | temporary |
kl | kill flag |
lt | light flag |
lv | player's level |
m | monster |
na | number of items in adventure |
nc | number of legal commands |
nm | number of monsters |
nr | number of rooms |
nz | total number of items (in adventure & carried) |
o | last room entered |
p | record pointer |
po | poison flag |
pr | protection flag |
r | current room |
re | regeneration flag |
rl | die roll |
s | number of sides on dice |
s$ | subject string |
sl | sleep flag |
sp | speed fiag |
sv | which spell is being cast |
sw | swing flag |
sz | silence flag |
t | temporary |
v | save game number |
v$ | verb string |
w | attacker's weapon |
wb | weapon's bonus |
wI | amount of weight player is carrying |
Array Variables
- an$(item) name of each item
- ranges from 0 to nz
- ae$(item) text description of each item's powers
- ranges from 1 to nz
- ad%(item,attribute) contains all the info for each item's powers
- (only attribute subscript shown)
0 = light flag
value | meaning |
---|---|
0 | item is not providing light |
1 | item is providing light |
1 = item's type
value | meaning |
---|---|
<1 | normal item |
1 | weapon |
2 | armour |
3 | treasure |
>3 | magic item |
2 = item's worth
3 = hit points
4 = weight
5 = <item type dependent>
itemtype | meaning | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
<1 | none | ||||||||||||||||||||||
1 | dice damage | ||||||||||||||||||||||
2 | none | ||||||||||||||||||||||
3 | none | ||||||||||||||||||||||
>3 | magical power
|
6 = <item type dependent>
itemtype | meaning |
---|---|
<1 | none |
1 | number of sides/die |
2 | none |
3 | none |
>3 | duration of magical power |
7 = <item type dependent>
itemtype | meaning |
---|---|
<1 | none |
1 | attacking bonus |
2 | defending bonus |
3 | none |
>3 | magic charges left |
8 = light provision
value | meaning |
---|---|
-1 | light forever |
0 | cannot provide |
>1 | burns for x number of turns |
9 = item's whereabouts
value | meaning |
---|---|
<0 | carried by -x monster |
0 | carried by player |
>0 | in room x |
- c$(commands) legal commands
1 north 2 east 3 south 4 west 5 northeast 6 southeast 7 southwest 8 northwest 9 up 10 down 11 ne 12 se 13 sw 14 nw 15 look 16 examine 17 attack 18 get 19 drop 20 light 21 ready 22 wear 23 use 24 speed 25 heal 26 blast 27 power 28 inventory 29 give 30 search 31 help 32 status 33 smile 34 extinguish 35 save 35 commands added (not standard)
- l%(room) room's light
- ranges from 1 to nr
value | meaning |
---|---|
0 | room does not have its own light source |
-1 | room is always light |
- ma$(monster) text description of each monster's attack
- ranges from 1 to nm
- md%(monster, attribute) contains all info on each monster
- (only attribute subscript shown)
0 | damage taken | ||||||||||||||
1 | strength | ||||||||||||||
2 | agility | ||||||||||||||
3 | friendliness | ||||||||||||||
4 | courage | ||||||||||||||
5 | hit points Note that hit points are not decreased when monster is hit; | ||||||||||||||
6 | armour worn
| ||||||||||||||
7 | weapon readied
| ||||||||||||||
8 | reaction
| ||||||||||||||
9 | status
Note that for values less than 1 the monster is active and | ||||||||||||||
10 | room ranges from 1 to nr | ||||||||||||||
11 | dice of damage if the monster has a natural attack any number > 0 | ||||||||||||||
12 | sides per die any number > 0 | ||||||||||||||
13 | introduction
|
- mn$(monster) name of each monster
- ranges from 1 to nm
- rn$(room) name of each room
- ranges from 1 to nr
- rd%(room, exit) exits for each room
- (only exit subscript shown)
0 | room introduction
| ||||||||||
1 | north
| ||||||||||
2 | east | ||||||||||
3 | south | ||||||||||
4 | west | ||||||||||
5 | northeast | ||||||||||
6 | southeast | ||||||||||
7 | southwest | ||||||||||
8 | northwest | ||||||||||
9 | up | ||||||||||
10 | down |
- s$(status+2) monster's status types
0 | berserk |
1 | fleeing |
2 | normal |
3 | asleep |
4 | tied up |
5 | dead |
- sa%(spell) player's spell abilities
- ranges from 0–100%
1 | speed spell |
2 | heal spell |
3 | blast spell |
4 | power spell |
Formulas
- Attacker's chance to hit in battle
- basic chance = attacker's agility * 3 + attacker's weapon bonus - defender's armour bonus - defender's agility
Modifications:
IF no light THEN chance = chance /2
IF attacker is berserk THEN add random 0-19 to chance
IF defender = player THEN any protection is subtracted; curse is added
IF attacker = player THEN chance = chance + 5 * player's levelOnce the final chance is computed, a percentage roll is made and:
IF roll > chance THEN attacker missed
IF roll <= chance THEN attacker hitNote that a roll < 5 = a direct hit (double damage) while a roll > 98 = a fumble
- Fumble Recovery
- 100% chance if natural weapon
50% chance if man-made weapon
- Damage Taken
- basic damage = (random 1 - sides/die), rolled dice of damage times and summed
Modifications:
damage = damage + l/10 attacker weapon bonus - 1/10 defender armour bonus
damage = damage + attacker's strength
IF direct hit THEN damage = damage * 2Note that the weapon, if man-made, takes damage = l/10 weapon bonus
Also that the armour, if man-made, takes damage = 1/10 armour bonus
- Health
- health percentage = damage taken / max hit points
States:
health%
0-19 = ok
20-39 = scratched
40-59 = lightly wounded
60-79 = wounded
80-89 = heavily wounded
90-99 = critical
100 = killed
- Experience & Level
- player experience = experience + 2 x defeated enemy's max hit points
player level = experience / 500
- Friendliness & Reaction Determination
- Monster's friendliness = initial percentage (an attribute)
Modifications:
Friendliness = friendliness + player's charisma (if current room has light)
Comparison with two random percentage rolls and conversion to -1 to 2 scale:
IF friendliness > roll #l & > roll #2 THEN friendliness = 2
IF friendliness > roll #l & < roll #2 THEN friendliness = 1
IF friendliness < roll #l & > roll #2 THEN friendliness = 0
IF friendliness < roll #l & < roll #2 THEN friendliness = -lMonster's reaction = initial value (an attribute) where:
-32168 - -1 = mad (will arrack on sight)
0 = neutral (will not attack player)
1 = friendly (will fight with player in current room but not leave)
2 - 32161 = joins party (will fight with player in current room and leave with him)Modifications:
Monster's reaction = monster's reaction + friendliness
Can also be modified by player actions (gifts or money and/or items)
Appendix C: Adventure Program Reference
This appendix contains a wealth of information about how an Imagery! adventure actually works. Study this appendix to gain an understanding of the inner workings of your adventures, especially if you want to make special modifications.
Program Overview
The Imagery! base adventure program ("adventure") is made up of 6 major parts:
- initialization routine
- main loop (command processor)
- combat routines
- magic routines
- routines for each command
- assorted utility routincs
Execution is passed from either the Towne program ("towne") on the Imagery! boot disk or from the program "title" on the adventure disk. The first few lines (65-80) determine whether a new or saved game is being played. If a saved game is being restarted, the variables are read back in and execution jumps to the Main Loop (130).
If a new game is being started, execution jumps to the initialization routine at 3500 and then to the Main Loop.
Most of the execution time is spent in the Main Loop processing commands from the player. Branches are made to carry out the player's commands.
Data Files
Each base adventure program has eight unique data files, each of which contains a different part of the information making up the adventure. The files are:
- advent.name — adventure name, author's name, and intro text. Note that this file is not used by "adventure"- only by the "towne" and "title" programs.
- advent.desc — number of rooms, monsters, & items in the adventure
- room.name — short description, light status, and exits for each room
- room.desc — long room descriptions
- monster.name — monster names & attributes
- monster.desc — monster descriptions
- item.name — item names, effects, & attributes
- item.desc — item descriptions
The player's data is stored in a temporary file with the name of the character preceded by a "+". It is erased as soon as the data is read in.
New Commands
New commands can be added to "adventure" after line 7700. Please make sure you have a very good understanding of how everything works before trying this. Notice that you will need to add any new commands to the command list as well as increase the number of legal commands (lines 3700-3740).
Keep in mind that existing commands often can be modified rather than creating new ones. Try to avoid duplicate commands or ones that are used only once or twice in the adventure.
Pseudo-Code Listing
65 | PRINT color black:CLR variables:OPEN error channel:PEEK character number:OPEN save game file (V=0 for new game, file will never be found) |
70 | INPUT from error channel:IF file not found THEN CLOSE file:GOTO 3500 (start new game) |
75 | IF any other error then CLOSE file:CLOSE error channel:END (This is not supposed to happen!) |
80 | SYS ML routine to read variables back in:CLOSE file:scratch save game file:GOTO 130 (resume saved game) |
100 | *** MAIN LOOP *** |
110 | PRINT press space |
120 | GET keypress:IF no press THEN 120 |
130 | PRINT clear screen |
140 | GOSUB 1000 (magic routines) |
150 | GOSUB 1300 (light routine) |
160 | GOSUB 1400 (room description routine) |
170 | GOSUB 1500 (move monsters routine) |
180 | GOSUB 1600 (display monsters routine) |
190 | GOSUB 1900 (display artifacts routine) |
200 | GOSUB 2000 (check combat routine) |
500 | *** INPUT COMMAND FROM PLAYER *** |
510 | IF player is asleep THEN PRINT sleep:GOTO 110 |
520 | INPUT command string:IF this is the same command as last time THEN PRINT command (This is if player just presses RETURN) |
530 | Set last command = current command |
540 | IF the leftmost character is a space THEN remove it:GOTO 540 |
550 | Initialize counter |
560 | IF the space separating the words is found THEN 590 |
570 | Increment counter:IF not at end of command string THEN 560 |
580 | Verb string = left portion of command string:clear counter:subject string = null:GOTO 600 |
590 | Verb string = left portion of command string:subject string = right portion of command string:clear counter |
600 | IF leftmost character of subject string is a space THEN remove it:GOTO 600 |
610 | Increment counter:IF left portion of a legal command = command string THEN 640 |
620 | IF counter < number of legal commands THEN 610 |
630 | PRINT can't understand:GOTO 520 |
640 | IF the command number <15 THEN 5000 (This is a movement command) |
650 | Subtract 14 from command number:ON command number GOTO 5100,5200,5300,5400,5600,5800,5900,6000,6100,6300,6400,6500 |
660 | Subtract 12 from command number:ON command number GOTO 6600,6700,6800,7100,7200,7300,7400,7500,7600 |
670 | STOP (This line should never be reached) |
1000 | *** MAGIC/POWERS ROUTINE *** |
1010 | IF no speed THEN 1050 |
1020 | Decrement speed counter:IF still speed left THEN 1050 |
1030 | Player's agility is now halved (back to normal) |
1040 | IF random chance THEN PRINT speed expired |
1050 | IF no protection THEN 1080 |
1060 | Decrement protection:IF still protected THEN 1080 |
1070 | IF random chance THEN PRINT protection wore off |
1080 | IF no curse THEN 1110 |
1090 | Decrement curse:IF still cursed THEN 1110 |
1100 | IF random chance THEN PRINT curse gone |
1110 | IF not invisible THEN 1140 |
1120 | Decrement invisibility:IF still invisible THEN 1140 |
1130 | PRINT now visible |
1140 | IF no poison THEN 1180 |
1150 | Decrement poison:increment player's damage |
1155 | IF player's damage = player's health THEN PRINT poison kills you:GOTO 3070 (game over) |
1160 | IF still poisoned THEN 1180 |
1170 | IF random chance THEN PRINT poison gone |
1180 | IF not regenerating THEN 1200 |
1190 | Decrement regeneration:decrement player's damage: |
1195 | IF no damage left THEN stop regenerating:damage = 0:IF random chance THEN PRINT regenerated |
1200 | IF not asleep THEN RETURN |
1210 | Decrement sleep:IF still asleep THEN RETURN |
1220 | PRINT wake up:RETURN |
1300 | *** LIGHT ROUTINE *** |
1310 | Light flag = dark:IF room is naturally lit THEN light flag = light |
1315 | FOR item = 1 TO number of items in adventure:IF item is not lit THEN 1350 |
1320 | IF item is lit (but not forever) THEN decrement burn counter:IF item burned out THEN 1360 |
1340 | IF item is in this room OR player is carrying it THEN light flag = light |
1350 | NEXT item:RETURN |
1360 | IF item is in room OR player is carrying it THEN PRINT it went out |
1370 | Item's burn counter = 0:item's light = out:GOTO 1350 |
1400 | *** ROOM DESCRIPTION *** |
1410 | IF no light THEN PRINT too dark:RETURN |
1420 | IF player has been here before THEN PRINT short description:GOTO 1440 |
1430 | OPEN room description file:record pointer = room:GOSUB 4800:set flag that player has been here before |
1440 | PRINT exits:FOR exit = 1 TO 10 |
1450 | IF visible exit in this direction THEN PRINT exit |
1460 | NEXT exit:PRINT:RETURN |
1500 | *** MOVE MONSTERS *** |
1510 | FOR monster = 1 TO total number of monsters:IF monster's reaction = friendly THEN IF monster's status = normal THEN monster's room = current room |
1530 | IF monster's status = berserk AND monster's room <> current room THEN 1580 |
1540 | IF monster's room <> current room OR 10% chance OR monster's status fleeing THEN 1570 |
1550 | Direction = random number from 0 to 11:IF direction = 11 THEN 1570 (don't move at all) |
1555 | IF no exit in that direction THEN 1550 (try another direction) |
1560 | PRINT monster flees:monster's room = room out the exit |
1570 | NEXT monster:RETURN |
1580 | Monster's room = current room:IF monster's reaction is bad THEN PRINT monster chasing:GOTO 1570 |
1590 | Monster's reaction = normal:GOT01570 |
1600 | *** DISPLAY MONSTERS *** |
1610 | Battle flag = off:FOR monster = 1 TO total number of monsters:IF monster's room <> current room THEN 1700 |
1620 | IF monster's reaction = bad AND monster's status = normal or berserk AND player is not invisible THEN battle flag = on |
1630 | Temp = monster's introduction:description flag = off:IF temp = just met OR temp = described only AND monster's status = aware AND player is not invisible THEN GOSUB 1750:temp = temp + 2 |
1640 | IF temp = never met THEN temp = just met |
1650 | IF temp = just met OR temp = reaction determined only THEN IF light flag = light THEN increment temp:GOTO 1710 |
1670 | IF light THEN PRINT monster's status; monster is here |
1680 | IF reaction was determined THEN GOSUB 1830 |
1690 | Monster's introduction = temp |
1700 | NEXT monster:PRINT:RETURN |
1710 | OPEN monster description file:record pointer = monster.GOSUB 4800 (print monster desc):GOT01670 |
1750 | *** DETERMINE MONSTER'S REACTIONS *** |
1760 | Friendliness = monster's friendliness plus player's charisma (if light):IF friendliness > random chance THEN 1790 |
1770 | IF friendliness > random chance THEN friendliness = neutral:GOTO 1810 |
1780 | Friendliness = mean:GOTO 1810 |
1790 | IF friendliness > random chance THEN friendliness = joins party:GOTO 1810 |
1800 | Friendliness = friends |
1810 | Monster's reaction = old reaction + friendliness:IF light THEN desc flag = on |
1820 | RETURN |
1830 | IF monster's reaction < 0 THEN PRINT monster mad:RETURN |
1840 | IF monster's reaction = 0 THEN PRINT monster neutral:RETURN |
1850 | IF monster's reaction = 1 THEN PRINT monster friends:RETURN |
1860 | IF monster's reaction > 1 THEN PRINT monster joins party:RETURN |
1900 | *** ITEM DISPLAY *** |
1910 | IF no light THEN RETURN |
1920 | FOR item = 1 TO total number of items:IF item's room = current room THEN 1940 |
1930 | NEXT item:RETURN |
1940 | PRINT broken or nothing |
1950 | PRINT lit or nothing; item is here:GOTO 1930 |
2000 | *** COMBAT ROUTINE *** |
2010 | IF no battle THEN RETURN |
2020 | Battle = off:number of friends in battle = 0:number of enemies in battle = 0:FOR monster = 1 TO total number of monsters |
2030 | IF monster's reaction = friendly AND monster's room = current room AND monster's status = aware THEN increment number of friends:store in friend array |
2040 | IF monster's reaction = bad AND monster's room = current room AND monster's status = aware THEN increment number of enemies:store in enemy array |
2050 | NEXT monster:IF no enemies THEN 2070 |
2060 | FOR Z = 1 TO number of enemies:attacker = enemy array:defender = random friend:GOSUB 2100:NEXT Z |
2070 | IF no friends THEN 2090 |
2080 | FOR Z = 1 TO number of friends:attacker = friend array:defender = random enemy:GOSUB 2100:NEXT Z |
2090 | RETURN |
2100 | *** ATTACK ROUTINE *** |
2110 | GOSUB 2200 (check if it's legal to swing) |
2120 | IF swing allowed THEN GOSUB 2400 (swing weapon) |
2130 | IF hit flag < 0 THEN GOSUB 2900 (fumble) |
2140 | IF hit flag > 0 THEN GOSUB 2600 (apply damage) |
2150 | IF swing allowed THEN GOSUB 2800 (damage report) |
2160 | IF killed THEN GOSUB 3000 (death occurred) |
2170 | IF flee THEN GOSUB 3200 (fleeing monster) |
2180 | RETURN |
2200 | *** WEAPON & CHECK *** |
2210 | Swing flag = off:hit flag = off:temp = 0:IF attacker's status = fleeing OR status = sleep, tied, dead OR defender's status = dead THEN RETURN |
2230 | IF monster's weapon = ready THEN swing flag = on:weapon = monster's weapon:RETURN |
2240 | PRINT no weapon:IF attacker ---- player THEN RETURN |
2250 | Increment temp:IF item's room = current room OR item's room = attacker (attacker is carrying it) THEN 2300 |
2260 | IF temp < total number of items THEN 2250 |
2270 | IF high random chance OR the defender does not have a weapon THEN PRINT can't find a weapon!:RETURN |
2280 | Attacker's weapon = defender's weapon:defender's weapon = nothing:weapon's room = attacker |
2285 | IF the defender is the player THEN subtract the weight of the weapon |
2290 | PRINT weapon stolen:RETURN |
2300 | IF item is broken OR item's type <c> weapon THEN 2260 |
2310 | PRINT attacker readies weapon:weapon's room = attacker:attacker's weapon = weapon:RETURN |
2400 | *** SWING ROUTINE *** |
2410 | PRINT attacker attacks defender.weapon bonus = attacker's weapon |
2420 | IF natural weapon THEN make bonus positive:PRINT how monster attacks:GOTO 2440 |
2430 | Bonus = weapon's bonus:PRINT with weapon name:PRINT weapon's effect |
2440 | Armour bonus = monster's armour:IF armour is natural THEN make bonus positive:GOTO 2460 |
2450 | Armour bonus = defender's armour's bonus |
2460 | Chance to hit = 3 times attacker's agility + weapon bonus - armour bonus - defender's agility:IF no light THEN chance is halved |
2470 | If defender = player and player is protected then subtract protection from chance |
2490 | If attacker = player and player is cursed then add curse:if attacker is berserk then add random 0-19 |
2510 | IF attacker = player THEN chance = chance + 5 times player's level |
2520 | Roll = random number from 0-100:IF roll > 98 THEN hit = -1:PRINT fumble:RETURN |
2530 | IF roll > chance THEN PRINT miss:hit = 0:RETURN |
2540 | IF roll < 5 THEN PRINT direct hit:hit = 2:RETURN |
2550 | PRINT hit:hit = 1:RETURN |
2600 | *** DAMAGE ROUTINE *** |
2610 | Damage = 0:IF weapon is natural THEN dice = monster's dice:sides = monster's sides:GOTO 2630 |
2620 | Dice = weapon's dice:sides = weapon's sides |
2630 | FOR temp = 1 TO dice:damage = random roll:NEXT temp:damage = damage + tenth of weapon's bonus - tenth of armour's bonus |
2635 | Damage = damage + attacker's strength bonus:damage = damage times hit (1=normal or 2=double):IF defender's status = sleeping THEN status = normal |
2640 | IF no damage THEN PRINT blow bounces:GOTO 2655 |
2650 | Monster's damage = monster's damage + damage |
2655 | IF weapon is natural THEN 2670 |
2660 | Item's points = item's points - tenth of bonus |
2665 | IF no more points THEN PRINT it broke:attacker's weapon = 0:item's light = off |
2670 | Armour = defender's armour:IF armour is natural THEN RETURN |
2680 | Item's points = item's points - tenth of bonus |
2690 | IF no more points THEN PRINT armour falls off!:monster's armour = 0 |
2700 | RETURN |
2800 | *** DAMAGE REPORT *** |
2810 | Health percentage = monster's damage / monster's health |
2820 | Kill flag = off:flee flag = off:IF monster's courage < health% AND defender <> player THEN flee flag = on |
2830 | IF health% > 99 THEN PRINT killed:kill flag = on:RETURN |
2840 | IF health% > 89 THEN PRINT critical:RETURN |
2850 | IF health% > 79 THEN PRINT heavily wounded:RETURN |
2860 | IF health% > 59 THEN PRINT wounded:RETURN |
2870 | IF health% > 39 THEN PRINT lightly wounded:RETURN |
2880 | IF health% > 19 THEN PRINT scratched:RETURN |
2890 | PRINT good health:RETURN |
2900 | *** FUMBLE ROUTINE *** |
2910 | IF random 50% chance OR monster's weapon is natural THEN PRINT recovered:RETURN |
2930 | PRINT dropped!:weapon's room = current room:monster's weapon = none:IF attacker = player THEN weight carried = weight - weapon's weight |
2940 | Weapon's light = off:RETURN |
3000 | *** DEFENDER KILLED *** |
3010 | IF attacker = player THEN GOSUB 3300 (experience) |
3020 | Monster's status = dead meat:FOR temp = 1 TO total number of items:IF item's room = defender THEN item's room = current room |
3030 | NEXT temp:flee flag = off:kill flag = off:IF defender <> player THEN RETURN |
3040 | PRINT press space |
3050 | GET keypress:IF no press THEN 3050 |
3060 | PRINT you're dead! |
3070 | PRINT insert Imagery! disk |
3080 | PRINT press Fl |
3090 | GET keypress:IF key <> F1 THEN 3090 |
3100 | GOSUB 4900:CLOSE error channel:PRINT load title |
3110 | POKE returns into keyboard buffer:END |
3200 | *** FLEE ROUTINE *** |
3210 | Roll = random:IF roll < 20% THEN 3270 |
3220 | IF roll < 40% THEN PRINT freezes!:monster's status = normal:RETURN |
3230 | IF roll < 65% THEN RETURN (no effect) |
3240 | Direction = random 0-11:IF direction = 11 THEN RETURN |
3250 | PRINT defender flees |
3260 | Defender's room --- room out exit:monster's status = fleeing:RETURN |
3270 | PRINT defender goes berserk!:monster's courage = 100:monster's status = berserk |
3280 | RETURN |
3300 | *** GAIN EXPERIENCE *** |
3310 | Exp = exp + twice defender's max health:PRINT points earned |
3320 | Temp = current level:level = exp / 500:IF new level = old level THEN RETURN |
3330 | PRINT raised a level!:temp = random 2-8 |
3340 | PRINT hit points gained:player's hp = player's hp + temp |
3350 | Flash border:RETURN |
3500 | *** INITIALIZE GAME *** |
3510 | PRINT waking monsters |
3520 | OPEN advent.desc file:INPUT number of items, number of monsters, number of rooms:CLOSE file |
3530 | DIM array for room names, room exits, room light, monster attributes, monster names, monster attack descriptions |
3540 | OPEN characters file:INPUT player's name, experience, gold, gold in bank, spell 1 |
3550 | INPUT spell 2, spell 3, spell 4, player's strength, agility, charisma, hit points |
3560 | INPUT number of items carried:total number of items = items carried + items in adventure:DIM array for item names, item attributes, item effects:IF total number of items = number of items from the adventure (player has no items) THEN 3580 |
3570 | FOR item = items in adventure + 1 TO total items:INPUT item's name, item's effect:FOR temp = 1 TO 9:INPUT item's attributes:NEXT temp, item |
3580 | CLOSE file:PRINT scratch file |
3590 | OPEN monster file:FOR temp = 1 TO total monsters:INPUT monster's name, monster's attack desc |
3600 | FOR temp = 1 TO 12:INPUT monster's attributes:NEXT temp, monster:CLOSE file |
3610 | OPEN room file:FOR room = 1 TO total rooms:INPUT room's name, room's light |
3620 | FOR temp = 1 TO 10:INPUT room's exits:NEXT temp, room:CLOSE file |
3630 | OPEN item file:FOR item = 1 TO total items (not carried):INPUT item's name, item's effect |
3640 | FOR temp = 1 TO 9:INPUT item's attributes:NEXT temp, item:CLOSE file |
3650 | Current room = 1:non-existent items = nothing:player's level = exp / 500 |
3660 | Status codes (add 2 to each array since subscripts can't be negative) -2 = berserking, -1 = fleeing, (0 = normal), 1 = sleeping |
3670 | 2 = tied up, 3 = dead |
3680 | Weight carried = 0:IF no items carried THEN 3700 |
3690 | FOR item = items not carried + 1 TO total items:weight = weight + item's weight:NEXT item:weight = weight + amount of gold / 100 |
3700 | READ number of commands:DIM command array:FOR temp = 1 TO total commands:READ command:NEXT temp:GOSUB 4700:GOTO 130 |
3710 | DATA number of commands |
3720 | DATA directions (these MUST be the first 14 data items for the move routine to work) |
3730 | DATA commands |
3740 | DATA commands |
4000 | *** READ EFFECTS *** |
4010 | OPEN effects file:record pointer = effect:GOSUB 4800 (print item effect):RETURN |
4100 | *** ITEM NUMBER *** |
4110 | Item = max item:IF subject = null THEN PRINT verb:INPUT subject:GOTO 4110 |
4120 | IF leftmost character = $ (for gold) THEN item = -1:RETURN |
4130 | IF left portion of item's name = subject THEN RETURN |
4140 | Decrement item:IF more to check THEN 4130 |
4150 | PRINT not recognized:RETURN |
4200 | *** CHECK FOR ALLOW *** |
4210 | Allow flag = on:monster = 0:IF invisible flag = on THEN RETURN |
4220 | Increment monster:IF monster's room = current room AND monster's status = aware THEN 4250 |
4230 | IF more to check THEN 4220 |
4240 | RETURN |
4250 | IF monster's intro shows reaction not determined yet OR monster's reaction is bad THEN allow = off:RETURN |
4260 | GOTO 4230 |
4300 | "4' MONSTER NUMBER *" |
4310 | Monster = -1:IF subject = null THEN PRINT verb:INPUT subject:GOTO 4310 |
4320 | Increment monster:IF left portion of monster's name = subject THEN RETURN |
4330 | IF more to check THEN 4320 |
4340 | Monster = -1:PRINT never heard:RETURN |
4400 | *** CAST SPELL *** |
4430 | *31* REDUCE SPELL CHANCE *** |
4440 | Spell ability = spell ability / 2GOTO 110 |
4500 | *** LEAVING ADVENTURE *** |
4510 | PRINT you want to? |
4520 | GET keypress:IF no press THEN 4520 |
4530 | IF keypress y THEN current room = last room:GOTO 130 |
4540 | PRINT made it out!! |
4550 | PRINT insert disk |
4560 | PRINT press F1 |
4570 | GET keypress:IF press <> F1 THEN 4570 |
4580 | Items carried = 0:FOR item = 1 TO total items:IF item's type = treasure and item's room = player THEN gold = gold + treasure value:item's room = first room (drop it) |
4590 | IF item's room = player THEN increment items carried |
4600 | NEXT item:GOSUB 4900:0PEN character file:PRINT player name |
4610 | PRINT exp, gold, gold in bank:FOR spell = 1 TO 4:IF some spell ability left THEN ability = 100% (full strength) |
4620 | PRINT spell ability:NEXT spell:FOR temp = 1 TO 3:PRINT player's attributes:NEXT temp:PRINT hit points |
4630 | PRINT items carried:IF none THEN CLOSE file:GOTO 4670 |
4640 | FOR item = 1 TO total items:IF item is not owned THEN 4660 |
4650 | PRINT item's name, item's effect:FOR temp = 1 TO 9:PRINT item's attributes:NEXT temp |
4660 | NEXT item:CLOSE file:CLOSE error channel |
4670 | PRINT load towne |
4680 | POKE returns into keyboard buffer |
4700 | *** STRIP # SIGNS *** |
4710 | FOR item = 1 TO total items |
4720 | IF leftmost character in name = # THEN remove #:GOTO 4720 |
4730 | NEXT item |
4740 | *** ADD # SIGNS *** |
4750 | FOR item = total TO second STEP -1:count = 0:FOR temp = item TO first item STEP -1 |
4760 | IF item's name = another item's name THEN increment count:add count number of # signs to name |
4770 | NEXT temp, item:RETURN |
4800 | *** POSITION POINTER *** |
4810 | PRINT pointer:SYS ML to read record:CLOSE file:RETURN |
4900 | 44* CHECK DISK *** |
4910 | OPEN buffer:PRINT read sector:PRINT move pointer |
4920 | GET disk ID:CLOSE buffer:IF ID = IM THEN RETURN |
4930 | PRINT insert disk |
4940 | Pause:PRINT erase |
4950 | GET key:IF no key THEN 4930 |
4960 | GOTO 4910 |
5000 | *** MOVE *** |
5010 | IF no light THEN PRINT scary in dark |
5020 | IF command > 10 THEN command = command - 6 (for abbreviations) |
5030 | Temp = room's exit:IF temp is not a legal exit THEN PRINT can't go that way:GOTO 110 |
5040 | IF old room <> temp THEN GOSUB 4200:IF NOT allowed THEN PRINT monster blocks exit:GOTO 110 |
5050 | Old room = current room:current room = temp:IF current room = 999 THEN PRINT congrats!:GOTO 4500 (made it out) |
5060 | GOTO 130 |
5100 | *** LOOK *** |
5110 | IF NOT light THEN PRINT it's black:GOTO 110 |
5120 | Room's intro = 0 (never been in room):GOTO 130 |
5200 | *** EXAMINE ITEM *** |
5210 | IF NOT light THEN PRINT hard to see it:GOTO 110 |
5220 | GOSUB 4100 (get item number):IF no item THEN 110 |
5225 | IF item = -1 THEN PRINT it's money:GOTO 110 |
5230 | IF item's room is not player AND item's room <> current room THEN PRINT can't find it:GOTO 110 |
5240 | IF item was not brought into the adventure by the player THEN OPEN item desc file:PRINT:record pointer = item:GOSUB 4800 (print item desc):GOTO 110 |
5250 | PRINT can only examine items found in adventure:GOTO 110 |
5300 | *** PLAYER ATTACK *** |
5310 | IF NOT light THEN PRINT swing in the dark:GOTO 110 |
5320 | GOSUB 4300 (check for legal targe4IF not a legal monster to attack THEN 110 |
5330 | IF monster's room <> current room THEN PRINT suffering from delusions?:GOTO 110 |
5340 | IF monster's status = dead THEN PRINT it's dead all ready!:GOTO 110 |
5350 | Attacker = player.Defender = monster:monster's reaction = monster's reaction - 5:GOSUB 2100 (attack):GOTO 110 |
5400 | *** GET ITEM *** |
5410 | IF NOT light THEN PRINT bumped your head:GOTO 110 |
5420 | GOSUB 4100 (get item number):IF no item THEN 110 |
5430 | IF item < 0 THEN PRINT no money here:GOTO 110 |
5440 | IF item's room <> current room THEN PRINT not here:GOTO 110 |
5450 | IF item's weight = 9999 THEN PRINT leave it alone:GOTO 110 |
5460 | GOSUB 4200 (check for allow):IF allowed THEN 5480 |
5470 | IF item's type isn't normal THEN PRINT monster won't let you:GOTO 110 |
5480 | IF weight + item's weight > 8 times player's strength THEN PRINT too heavy:GOTO 110 |
5490 | Item's room = player:PRINT got it:weight = weight + item's weight |
5500 | IF player doesn't have a weapon ready AND item's type = weapon THEN player's weapon = item:PRINT item is ready |
5510 | GOTO 110 |
5600 | *** DROP ITEM *** |
5610 | GOSUB 4100 (get item number):IF no item THEN 110 |
5620 | IF item = -1 THEN amount = value of subject:GOTO 5690 (this is money) |
5630 | IF item isn't carried THEN PRINT you're not carrying it:GOTO 110 |
5640 | Item's room = current room:weight = weight - item's weight:PRINT dropped |
5650 | IF NOT light THEN PRINT dropped on your toe:item's hit points --- item's hit points - 5 |
5660 | IF item was player's weapon THEN player's weapon = nothing:item's light = 0 (if a magical weapon, extinguish it) |
5670 | IF item was player's armour THEN player's armour = nothing |
5680 | GOTO 110 |
5690 | IF amount > gold THEN PRINT don't have that much:GOTO 110 |
5700 | Gold = gold - amount:weight = weight - amount / 100:PRINT it rolls away:GOTO 110 |
5800 | *** LIGHT ITEM *** |
5810 | GOSUB 4100 (get item number):IF no item THEN 110 |
5815 | IF item = money THEN PRINT it burns up:weight = weight - gold / 100:gold = 0:GOTO 110 |
5820 | IF item isn't carried THEN PRINT you don't have it:GOTO 110 |
5830 | IF random 10% chance THEN PRINT you burned your finger:GOTO 110 |
5840 | IF item's hit points < 0 THEN PRINT it's broken:GOTO 110 |
5850 | IF item will provide light THEN item's light = lit:PRINT item's effect:GOTO 110 |
5860 | PRINT it doesn't burn:GOTO 110 |
5900 | *** READY WEAPON *** |
5910 | GOSUB 4100 (get item number):IF no item THEN 110 |
5915 | IF item = -1 THEN PRINT give monsters money instead:GOTO 110 |
5920 | IF item isn't carried THEN PRINT don't have it:GOTO 110 |
5930 | IF item's type <> weapon THEN PRINT it isn't a weapon:GOTO 110 |
5940 | IF item's hit points < 1 THEN PRINT it's broken:GOTO 110 |
5950 | IF weapon's magic = 0 THEN 5970 (doesn't glow magically) |
5960 | PRINT weapon glows:item's light = lit |
5970 | Readied weapon's room = player:weapon ready = weapon:PRINT weapon ready:GOTO 110 |
6010 | GOSUB 4100 (get item number):IF no item THEN 110 |
6015 | IF item = -1 THEN PRINT that's a new one (can't wear money):GOTO 110 |
6020 | IF item isn't carried THEN PRINT don't have it:GOTO 110 |
6030 | IF item's type <> armour THEN PRINT that's not armour.GOTO 110 |
6040 | IF item's hit points < 1 THEN PRINT it's broken:GOTO 110 |
6050 | Armour worn = armour:PRINT wearing armour:GOTO 110 |
6100 | *** USE ITEM *** |
6110 | GOSUB 4100 (get item number):IF no item THEN 110 |
6115 | IF item = -1 THEN PRINT money isn't magic:GOTO 110 |
6120 | IF item's hit points < 1 THEN PRINT can't use a broken item:GOTO 110 |
6130 | IF item's room <> current room AND item isn't carried THEN PRINT can't find it:GOTO 110 |
6140 | GOSUB 4200 (check for allow):IF allowed OR if item is carried THEN 6160 |
6150 | PRINT monster won't let you use it:GOTO 110 |
6160 | IF item's type isn't magical THEN PRINT nothing happens:GOTO 110 |
6170 | IF item's charge = 0 THEN PRINT it fizzles:GOTO 110 |
6180 | Decrement item's charge:PRINT description of item's effect |
6190 | ON item's effect GOTO 6200,6210,6220,6230,6240,6250,6260,6280,6290 |
6200 | Protection = item's power:PRINT protected:GOTO 110 |
6210 | Curse = item's power:PRINT cursed:GOTO 110 |
6220 | Regeneration = item's power:PRINT regenerating:GOTO 110 |
6230 | Invisibility = item's power:PRINT invisible:GOTO 110 |
6240 | Poison = item's power:PRINT poisoned:GOTO 110 |
6250 | Sleep = item's power:PRINT fall asleep:GOTO 110 |
6260 | IF speed = off THEN speed = item's power:PRINT faster:player's dex = player's dex times 2 |
6270 | PRINT can't make you go faster:GOTO 110 |
6280 | Player's damage = 0:PRINT healed:GOTO 110 |
6290 | Room = random room in adventure:PRINT teleported:GOTO 110 |
6300 | *** SPEED SPELL *** |
6310 | Spell = 1:GOSUB 4400 (cast spell)IF spell failed THEN 110 |
6320 | IF already fast THEN PRINT already fast:GOTO 110 |
6330 | Speed = random 0-25:dex = dex times 2:PRINT fast:GOTO 4430 |
6400 | *** HEAL SPELL *** |
6410 | Spell = 2:GOSUB 4400 (cast spell):IF spell failed THEN 110 |
6420 | GOSUB 4300 (check for legal target)IF illegal monster THEN 110 |
6430 | IF monster's room <> current room THEN PRINT monster isn't here:GOTO 110 |
6440 | IF monster's status = dead THEN PRINT only priest can resurrect:GOTO 110 |
6450 | Monster's damage = monster's damage - random 0-20:IF monster's damage < 0 THEN monster's damage = 0 |
6460 | IF monster's status = fleeing THEN monster's status = normal |
6470 | PRINT monster is healed:defender = monster:GOSUB 2800 (damage report):GOTO 4430 |
6500 | *** BLAST SPELL *** |
6510 | IF NOT light THEN PRINT it's too dark:GOTO 110 |
6520 | Spell = 3:GOSUB 4400 (cast spell)IF spell failed THEN 110 |
6530 | GOSUB 4300 (check for legal target):IF illegal monster THEN 110 |
6540 | IF monster's room <> current room THEN PRINT it isn't here:GOTO 110 |
6550 | PRINT you blast him |
6560 | Monster's reaction = monster's reaction - 5:monster's damage = monster's damage + 0-10 times player's level |
6570 | Defender = monster:GOSUB 2150 (damage report):GOTO 4430 |
6600 | *** POWER SPELL *** |
6610 | Spell = 4:GOSUB 4400 (cast spell):IF spell failed THEN 110 |
6620 | Roll = random:IF roll <10% THEN PRINT cursed:curse = 25 (number of turns it lasts):GOTO 4430 |
6630 | IF roll < 20% THEN PRINT protected:protect = 25:GOTO 4430 |
6640 | IF roll < 30% THEN PRINT regenerating:regenerate = 25:GOTO 4430 |
6650 | IF roll < 40% THEN PRINT poisoned:poison = 25:GOTO 4430 |
6660 | IF roll < 50% THEN PRINT invisible:invisible = 10:GOTO 4430 |
6670 | IF roll < 60% THEN PRINT asleep:sleep = 10:GOTO 4430 |
6680 | PRINT no effect (40% chance) |
6690 | GOTO 4430 |
6700 | *** INVENTORY *** |
6710 | PRINT carrying |
6720 | FOR item ---- 1 TO total items:IF item's room = player THEN 6750 |
6730 | NEXT item:PRINT weapon; readied weapon name |
6740 | PRINT wearing; armour name:PRINT money; gold:GOTO 520 (doesn't take a turn) |
6750 | PRINT whether item is broken or not |
6760 | PRINT whether item is lit or not; item's name:GOTO 6730 |
6800 | *** GIVE *** |
6810 | GOSUB 4100 (get item number):IF no item THEN 110 |
6820 | IF item = -1 THEN 7010 (money) |
6830 | IF item not carried THEN PRINT don't have it:GOTO 110 |
6840 | INPUT to who:GOSUB 4300:IF illegal monster THEN PRINT feeling ok?:GOTO 110 |
6850 | Temp = 0:IF monster's room c current room THEN PRINT monster isn't here:GOTO 110 |
6860 | IF monster's status is disabled THEN PRINT monster is incapacitated:GOTO 110 |
6870 | PRINT monster says:silence = on |
6875 | IF item = -1 (money) THEN PRINT thanks:GOTO 7030 |
6880 | IF item's hit points < 1 THEN PRINT broken:temp = -1:silence = off |
6890 | IF item's weight > 50 THEN PRINT hate heavy stuff:decrement temp:silence = off |
6900 | IF item's type = normal THEN PRINT junk:decrement temp:silence = off |
6910 | IF item's value > 100 THEN PRINT valuable:increment temp:silence = off |
6920 | IF item's weight <1 THEN PRINT light:increment temp silence = off |
6930 | IF item's type is treasure or magic THEN PRINT nice:silence = off |
6940 | IF nothing said THEN PRINT nothing |
6950 | Monster's reaction = monster's reaction + temp:IF temp is non-zero THEN GOSUB 1830 (determine new reaction) |
6960 | IF item was player's weapon THEN player has no weapon readied:weapon is no longer lit |
6970 | IF item was player's armour THEN player has no armour |
6980 | IF monster's reaction is bad THEN 7000 |
6990 | Item's room = monster:weight = weight - item's weight:GOTO 110 |
7000 | Item's room = current room:weight = weight - item's weight |
7005 | PRINT thrown back in face:GOTO 110 |
7010 | Temp = value of subject:IF temp > gold THEN PRINT don't have that much:GOTO 110 |
7020 | GOTO 6840 |
7030 | Monster's reaction = monster's reaction + amount offered / 250:IF amount / 250 is positive THEN GOSUB 1830 (determine new reaction) |
7040 | Gold = gold - amount:weight = weight - amount / 100:GOTO 110 |
7100 | *** SEARCH ROOM *** |
7110 | IF NOT light THEN PRINT you trip:GOTO 110 |
7120 | GOSUB 4200 (check for allow):IF NOT allowed THEN PRINT monster steps in the way:GOTO 110 |
7130 | Silence = of f:FOR direction = 1 TO 10:IF exit is secret AND random chance THEN 7160 |
7140 | NEXT direction:IF NOT silent THEN PRINT nothing found |
7150 | GOTO 110 |
7160 | PRINT find secret passage:silence = off:exit = normal:GOTO 7140 |
7200 | *** HELP *** |
7210 | PRINT here is list |
7220 | FOR command = 15 TO total commands + 1 STEP 2:PRINT command, following command:NEXT command:GOTO 520 (doesn't take a turn) |
7300 | *** STATUS *** |
7310 | PRINT:IF poisoned THEN PRINT poisoned |
7320 | IF cursed THEN PRINT cursed |
7330 | IF invisible THEN PRINT invisible |
7340 | IF protected THEN PRINT protected |
7350 | IF regenerating THEN PRINT regenerating |
7360 | IF speed THEN PRINT speed |
7370 | Defender = player:GOSUB 2800 (damage report):GOTO 520 (doesn't take a turn) |
7400 | *** SMILE *** |
7410 | PRINT:FOR monster = 1 TO total monsters:IF monster's room = current room THEN GOSUB 1830 (print current monster reactions) |
7420 | NEXT monster:GOTO 520 (doesn't take a turn) |
7500 | *** EXTINGUISH *** |
7510 | GOSUB 4100 (get item number):IF no item THEN 110 |
7515 | IF item = -1 THEN PRINT too late (money burns instantly):GOTO 110 |
7520 | IF item isn't carried THEN PRINT don't have it:GOTO 110 |
7530 | IF item is lit THEN PRINT put it out:item's light = out:GOTO 110 |
7540 | PRINT not lit:GOTO 110 |
7600 | *** SAVE GAME *** |
7610 | PRINT save? |
7606 | GET keypress:IF not legal press THEN 7606 |
7607 | PRINT press |
7608 | IF press is no THEN 130 |
7610 | FOR temp = 0 TO 9:0PEN save file:INPUT error channel:IF no error THEN 7630 (valid file) |
7620 | CLOSE:NEXT temp:PRINT sorry:GOTO 110 |
7630 | SYS ML to save variables:CLOSE file |
7640 | INPUT error channel:IF no error THEN PRINT game saved:CLOSE error channel:NEW |
7650 | PRINT error; bad save:GOTO 110 |
7700 | *** ADD NEW COMMANDS HERE *** |
Appendix D: Flexi-Copy Operation
Flexi-Copy is an easy-to-use file copier for one or two disk drives. You can use it to copy files when you are working on an adventure. Many file copiers can't copy relative files, a file-type Imagery! uses, but Flexi-Copy can.
Flexi-Copy is on your designer disk. To use it, first switch your computer off then on to reset it. Then type:
LOAD "FLEXI-COPY",8
RETURN
RUNRETURN
You will then see the opening screen. If you are going to use two disk drives, make sure the other one is turned on and set to the proper device number.
For each file you want to copy, you will be asked four questions:
- Input device
- Output device
- Input filename
- Output filename
The input device is the disk drive that has the source disk (the disk you want to copy from). The output device is the disk drive that has the target disk (the disk you want to copy to). The input device is usually 8, and the output 8 or 9, depending whether or not you are using two disk drives.
The input filename is the name of the file you want to copy. The output filename is the same as the input, so just press RETURN
to keep the same name.
After answering these questions, Flexi-Copy will begin copying. If you are using one disk drive, the program will prompt you when it's ready for the target disk. If you are using two drives, the copying will proceed automatically.
That's all there is to it!
Note: When you're copying relative files, such as "room.desc", Flexi-Copy will display some extra information such as "Record length" and "Sectors". That's normal — it's useful stuff to know in certain situations.
Appendix E: Submitting Imagery! Adventures
One of the best parts of the Imagery! system is that many authors can write adventures, not just one or two with the "inside" information. Once you have completed an adventure, you can give it to a friend without worrying about breaking any copyright laws.
Imagination, the official Imagery! club, is the central distribution center for Imagery! adventures. All new adventures received are carefully tested and then made available for all Imagery! players. Each issue The Image will review the latest and best and adventures so you'll which ones to check out!
Only the adventures distributed by Imagination are considered official. Official adventures are supported with updates and bug fixes, while unofficial adventures may have problems.
We encourage you to send in your adventures so that others will be able to play them. Here's how:
- Carefully test the adventure on your own. An adventure with a lot of bugs is no fun to play — and it will take longer for us to ready it for distribution.
- Write out a short description of the adventure. Include:
- the object of the adventure
- the time period (medieval, modern, etc.)
- the level character necessary to play it
- Describe any new commands and/or modifications you have made to the basic adventure program. Include which lines of code have been changed.
- Send the completed adventure, along with your description, to:
Imagination
P.O. Box 190
St. Paul, IN 47272
We'll test your adventure as soon as we receive it. Good luck!
All adventures are $3.00 ($5.00 for non-members) to cover postage. If you decide to distribute your adventures yourself, please don't charge any more than we do.
Appendix F: Sample Libraries
This appendix contains tables showing the contents of the three monster/item libraries on the designer disk. The three libraries represent three common eras for Imagery! adventures: "medieval", "modern", and "futuristic". Careful study of the libraries will make designing your own monsters and items easier, as these samples can be a base on which to build.
Abbreviations
The following abbreviations are used in the Monster tables:
Str = Strength
Dex = Dexterity
Frn% = Friendliness
Cou% = Courage
HP = Hit Points
AB = Armour Bonus
WB = Weapon Bonus
Reac = Reaction
The following abbreviations are used in the Item tables:
HP = Hip Points
Wt = Weight
DB = Defense Bonus
AB = Attack Bonus
DD = Dice of Damage
S/D = Sides per Die
Dur = Duration
Chgs = Charges
Remember: each library can hold a maximum of 15 monsters and 15 items. If you put together a library you would like to share with other Imagery! designers, send it in to Imagination along with an adventure or two. See Appendix E for further information on submitting Imagery! adventures.
Medieval Monsters
Name | Attack Phrase | Str | Dex | Frn% | Cou% | HP | AB | WB | Reac | Status |
---|---|---|---|---|---|---|---|---|---|---|
black bat | Going for the neck | 3 | 18 | 25 | 10 | 5 | 15 | 15 | 0 | normal |
nasty goblin | Tearing with its sharp claws | 13 | 12 | 10 | 60 | 15 | 15 | 15 | 0 | normal |
minotaur | Charging with its horns | 20 | 8 | 10 | 85 | 20 | 19 | 15 | 0 | normal |
skeleton | Scratching with its bony fingers | 9 | 9 | 0 | 100 | 10 | 20 | 15 | 0 | normal |
nasty ore | Clawing and biting | 13 | 13 | 5 | 25 | 12 | 15 | 15 | 0 | normal |
ugly ogre | Pummeling with its big fists | 2 | 10 | 0 | 100 | 25 | 20 | 20 | -1 | normal |
green slime | Oozing along the ground | 3 | 3 | 0 | 100 | 10 | 15 | 15 | -1 | berserk |
mean old troll | Reaching with its long arms | 18 | 15 | 0 | 90 | 20 | 20 | 15 | -1 | normal |
gnarly gnoll | Throwing a left hook | 12 | 10 | 30 | 45 | 11 | 10 | 10 | 0 | normal |
mindless zombie | Grabbing with its mangled hands | 10 | 10 | 15 | 75 | 13 | 11 | 10 | -1 | normal |
Medieval Items
Name | Effect | Value | HP | Wt | Type | DB | AB | DD | S/D | Power | Dur | Chgs | Light |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
scale mail | na | 250 | 300 | 30 | armour | 20 | na | ||||||
nasty flail | The spiked balls twirl around | 60 | 100 | 10 | weapon | 15 | 1 | 6 | none | ||||
rusty sword | Swinging the rusty sword | 50 | 50 | 8 | weapon | 15 | 1 | 8 | none | ||||
battle axe | Swinging the battle axe | 200 | 300 | 20 | weapon | 15 | 1 | 10 | none | ||||
old lamp | You light the lamp and it glows | 10 | 12 | 2 | normal | 500 | |||||||
magic fountain | You take a sip from the fountain and | 0 | 99 | 9999 | magic | protection | 25 | 99 | na | ||||
silver ring | You slip the ring on your finger and | 400 | 2 | 1 | magic | regeneration | 20 | 3 | na | ||||
pile of jewels | na | 600 | 1 | 5 | treasure | na | |||||||
crumpled scroll | You read the cryptic writing and | 200 | 1 | 1 | magic | invisibility | 3 | 1 | na | ||||
100 gold pieces | na | 100 | 1 | 10 | treasure | na | |||||||
murky potion | You drink the murky potion and | 80 | 5 | 1 | magic | teleportation | 0 | 1 | na | ||||
chain mail | na | 350 | 400 | 40 | armour | 30 | na | ||||||
plate mail | na | 450 | 500 | 50 | armour | 40 | na |
Modern Monsters
Name | Attack Phrase | Str | Dex | Frn% | Cou% | HP | AB | WB | Reac | Status |
---|---|---|---|---|---|---|---|---|---|---|
creepy spider | Biting exposed limbs | 2 | 16 | 0 | 20 | 6 | 5 | 10 | 0 | normal |
sewer rat | Biting and scratching | 5 | 12 | 10 | 35 | 10 | 7 | 10 | 0 | normal |
mad dog | Snapping its foaming jaws | 15 | 15 | 0 | 85 | 23 | 14 | 14 | -1 | berserk |
teenage punk | Throwing a punch | 17 | 16 | 25 | 65 | 22 | 15 | 15 | 0 | normal |
assassin | Kicking and punching | 20 | 19 | 10 | 90 | 35 | 15 | 15 | 0 | normal |
gangster | Throwing punches left and right | 21 | 15 | 27 | 55 | 30 | 15 | 15 | 0 | normal |
demon priest | Screaming and kicking | 16 | 15 | 10 | 80 | 30 | 12 | 10 | 0 | normal |
killer pimp | Jabbing with his big fists | 18 | 17 | 15 | 60 | 27 | 15 | 15 | 0 | normal |
escaped convict | Parrying and thrusting | 21 | 16 | 5 | 77 | 31 | 16 | 17 | 0 | normal |
lone wolf | Baring its sharp fangs | 16 | 16 | 12 | 60 | 30 | 17 | 17 | 0 | normal |
Modern Items
Name | Effect | Value | HP | Wt | Type | DB | AB | DD | S/D | Power | Dur | Chgs | Light |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
machine gun | Bullets fly from the barrel | 600 | 100 | 20 | weapon | 15 | 3 | 8 | none | ||||
44 magnum | *** Blam *** | 475 | 85 | 12 | weapon | 15 | 2 | 8 | none | ||||
pistol | *** Blam *** | 350 | 100 | 10 | weapon | 15 | 2 | 6 | none | ||||
nunchakus | Twirling the chucks | 70 | 20 | 10 | weapon | 12 | 1 | 8 | none | ||||
butterfly knife | Stabbing with the knife | 75 | 20 | 5 | weapon | 12 | 1 | 6 | none | ||||
flak jacket | na | 700 | 500 | 35 | armour | 25 | na | ||||||
bullet-proof vest | na | 1000 | 800 | 40 | armour | 35 | na | ||||||
first aid kit | You use the supplies and | 75 | 15 | 7 | magic | regeneration | 5 | 5 | na | ||||
dark liquid | You drink the dark liquid and | 20 | 8 | 4 | magic | poison | 6 | 1 | na | ||||
mysterious charm | You put the charm around your neck and | 200 | 12 | 1 | magic | cursing | 50 | 666 | na |
Futuristic Monsters
Name | Attack Phrase | Str | Dex | Frn% | Cou% | HP | AB | WB | Reac | Status |
---|---|---|---|---|---|---|---|---|---|---|
renegade | Moving fast and low | 20 | 20 | 40 | 70 | 100 | 20 | 20 | 0 | normal |
giant squirrel | Gnawing and biting | 18 | 18 | 25 | 30 | 85 | 25 | 25 | 0 | normal |
bounty hunter | Punching skillfully | 20 | 19 | 50 | 90 | 150 | 20 | 20 | 0 | normal |
half-dead man | Swinging wildly | 12 | 7 | 0 | 20 | 30 | 10 | 7 | -1 | normal |
mutated thug | Hitting low | 20 | 20 | 0 | 70 | 100 | 20 | 20 | -1 | normal |
mind killer | Reaching with its thoughts | 25 | 13 | 0 | 80 | 100 | 15 | 25 | -1 | normal |
security robot | Pivoting instantly | 35 | 30 | 0 | 100 | 250 | 35 | 30 | -1 | normal |
carrion eater | Snapping its beak | 16 | 12 | 0 | 40 | 70 | 15 | 15 | 0 | normal |
skrayt | Waving its tentacles | 19 | 16 | 0 | 60 | 125 | 30 | 17 | -1 | normal |
hanging moss | Enveloping its prey | 10 | 5 | 0 | 20 | 30 | 8 | 12 | 0 | normal |
life sapper | Stretching out its pincers | 21 | 17 | 0 | 75 | 150 | 32 | 32 | -1 | normal |
Futuristic Items
Name | Effect | Value | HP | Wt | Type | DB | AB | DD | S/D | Power | Dur | Chgs | Light |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
plasma autocannon | It fires a blast of hydrogen | 3000 | 300 | 100 | weapon | 50 | 15 | 10 | none | ||||
laser rifle | A thin beam shoots forth | 2000 | 200 | 75 | weapon | 45 | 10 | 10 | none | ||||
blaster rifle | It fires a ball of energy | 2500 | 250 | 87 | weapon | 47 | 12 | 10 | none | ||||
laser pistol | A thin beam shoots forth | 1000 | 100 | 25 | weapon | 35 | 6 | 10 | none | ||||
electro-neuron blade | Swinging the buzzing blade | 1000 | 100 | 25 | weapon | 30 | 5 | 8 | none | ||||
kevlar body armour | na | 1700 | 550 | 55 | 35 | na | |||||||
retro-reflect jacket | na | 2000 | 600 | 70 | armour | 40 | na | ||||||
neuro-action armour | na | 2700 | 700 | 100 | armour | 50 | na | ||||||
identity card | na | 675 | 1 | 1 | treasure | na | |||||||
medi-quick kit | You activate the kit and | 900 | 12 | 12 | magic | regeneration | 10 | 10 | na |