O.H.R.RPG.C.E F.A.Q
Frequently Asked Questions

Things That Are Not Answered Here


If you have not read the HOWTO tutorial yet, it is a good place for beginners to start

If you have a question that is not answered here, try checking on the O.H.R.RPG.C.E. Help Me Message Board you can ask new questions there, and read the answers to other peoples questions.

If you have an answer to a common question that you find yourself explaining to people over and over again, mail it to FAQmaintainer@HamsterRepublic.com. Remember! This is for submitting answers not questions! If you have a question you dont know the answer to, and you cannot find the answer here, you can mail PleaseFAQ@HamsterRepublic.com with your question. Mail sent to this address will not recieve a reply, but if the question needs answering I will add it to the FAQ. Also, try the message boards. If something shows up often enough on the message boards, one of the other users who knows the answer may submit it to be in the FAQ

Are you Dead?


Yep, Im afraid Mr. Paige is dead. It was very sad, and very sudden (a tragic marshmellow-toasting accadent). We are all heartbroken at his loss, but we must learn to move on, and try to remember the happy times, and not dwell on depressing things like the way he willed all of his money to an unopened can of SPAM, and didnt leave me anything except his e-mail account.

There will be one more update for sure to fix a plotscripting bug, but I dont know when what will be, and then there may or may not be an unknown number of updates past that for more bugfixes, but at this point, the OHRRPGCE implements pretty much all the features it will ever implement.

As for more colors and movies and all the other spiffy stuff that everyone wants, that wont happen in the OHRRPGCE. We have started planning for a new system called "HamsterWheel" that will do spiffer stuff, but it is pointless to ask questions about it, because we arent far enough along to have compiled a single byte of code for it, and you probably wont see or hear anything at all about it except its name for a couple years.

anyway. Thank you for your condolences on the passing of our dear `SPAM Man'. Please address all flowers and sympathy cards to FlowersAndSympathyCards@HamsterRepublic.com

Bob the Hamster

Are you Really Dead?


*sob* Yes, its true. I told him not to hold it so close to the fire, but he wouldnt listen. he kept saying "I want it really well-done" and before long, fwoosh! It caught on fire *sob* and I told him to blow it out, or it would get burnt all to a crisp, and he said "no, just the outside. the inside will get all gooey and yummy" *sob* and then it fell off the stick and landed on his shoe and caught his pants on fire, and I said "James! your pants are on fire!" and I tried to stomp out the flames but he stopped me, saying "Hey! dont do that! You are messing up my marshmellow". *sob* and before long he was all in flames-- I tried to put out the fire with the garden hose, but he ran away from me, shouting "No! No! My marshmellow isnt done yet! If you get it wet it will be ruined!"... by the time the paramedics arrived, he was already dead *sob*. We burried him with the remains of the marshmellow in his coffin with him. The enscription on his tombstone reads "Okay, NOW the marshmellow is done"

Bob the Hamster

Are you going to make a Windows version?


No. the OHRRPGCE runs just fine under all version of Windows. Porting the OHRRPGCE to windows would be just as complicated as starting over from scratch, and If I wanted to spend that much time, I really would start over from scratch, rather than trying to port it.

See also Will you ever make a Linux version? Macintosh? BeOS?

Are you going to make a version that supports hi-res graphics, 3D, etc...?


No. I have no plans to support anything other than 2D VGA graphics in the OHRRPGCE. Converting the OHRRPGCE to use higher screen resolutions, more colors and such, would be just as complicated as starting over from scratch--

I have been thinking about starting work on a new game maker, but I certainly wouldnt want to be bogged down by backwards compatability with the OHRRPGCE. Such a program would NOT be an upgrade to the OHRRPGCE, it would be a whole new animal.

See Also: Will you ever add more animation frames?, and Are you Dead?

Can I make my own version of Wandering Hamster?


This question has come up several times. The answer is both yes and no.

I left WANDER.RPG without password-protection because I want people to be able to look at it as an example, and tweak it to learn things. You are perfectly welcome to edit it for your own amusement and education.

What I do NOT want people doing is redistributing altered copies and unofficial sequels of Wandering Hamster. Bob the Hamster is a copyrighted character, and I like to keep tight creative control :)

If you just want Bob to make a cameo appearance in your game, or something small like that, ask me permission first.

Can I sell RPGs I make with the OHRRPGCE?


You can distribute your RPG files any way you choose, and that includes selling them. You can also redistribute GAME.EXE and OHRRPGCE.FNT along with your game so that people will be able to play (in fact, if you rename GAME.EXE so it has the same name as your .RPG file, then it will automatically load it without showing the file-select screen). Dont give out CUSTOM.EXE

Did you really make this with QuickBasic?


Yep. its true-- but not just mere mortal quickbasic, it is quickbasic that has been heavyly beefed-up with external assembly-language routines.

If you are interested in learning Quickbasic, feel free to e-mail me, and I will talk you out of it. There are so many better languages you could learn :)

Error: "Out of memory in module GAME at address XXXX:XXXX"


This error means that you do not have enough free conventional (DOS) memory. GAME.EXE and CUSTOM.EXE each require about 540k

You can check how much conventional memory you have by typing MEM at a dos prompt, and looking at the number listed as "Largest executable program"

If you do not have enough conventional memory, dont worry. It is easy to get more. If you are using DOS or Windows9X you can use MEMMAKER.EXE to move drivers into high memory. In DOS, memmaker is automatically installed, but in Windows 9X you have to find it on the CD.

You can also edit your CONFIG.SYS and AUTOEXEC.BAT and remove old drivers you dont need anymore. For example, If you upgraded from DOS 6.22 to Windows 95, you probably have a CD driver in your CONFIG.SYS that you dont need anymore, and the MSCDEX driver in your autoexec.bat can be removed.

If you arent comfortable with deleting things out of your CONFIG.SYS and AUTOEXEC.BAT you can just disable commands by placing the word "REM " at the beggining of any line you want to disable in AUTOEXEC.BAT and by placing a semicolon ";" before any line you want to disable in CONFIG.SYS

See also: How do I get more conventional DOS memory?

Even if I disable the minimap, I can still display it with F1


F1 is a debugging key, which can be disabled for your RPG file in the Edit General Game Data menu in CUSTOM.EXE

See also: What are the Debugging keys?

How can I set or remove animating maptiles with plotscripting?


If you have read the plotscripting dictionary, you may know that you can change a map with the write map block command. It is also possible to set animating tiles with this command.

For regular tiles, use the tile numbers 0 to 159

For animating tiles in the first pattern, use the tile numbers 160 to 207

For animating tiles in the second pattern, use the tile numbers 208 to 255

How come you are making it for DOS? I thought DOS was dead


DOS is not dead. DOS will die when the stickshift transmission dies. The O.H.R.RPG.C.E uses Mode-X graphics, driverless sound, direct keyboard trapping, and lots of other nifty low-level tricks that make it run nice and fast even on inferior machines. Plus, if the O.H.R.RPG.C.E was a Windows 95 application, it would only run in Windows 95, but as a DOS program, it runs great under MS-DOS, OpenDOS, Windows3.x, Windows9X, WindowsNT, and OS/2warp, to name a few. I have heard it even works in a DOS emulator on a Macintosh.

The downside of course, is that it only has 640k of memory to work with-- but that is Quickbasic's fault, not DOS's fault.

However, I must admit that I regret working with real-mode DOS. I wish I had started in a protected-mode DOS environment. The biggest reason that the OHRRPGCE is a DOS program is that thats how I started it, and I dont want to give up all that work till its done! :)

See also Are you going to make a Windows version?

How do I add heros to my party?


A hero can be added or removed from your party when a text box is displayed. Go to the Edit Conditionals menu of a text box, and find:

   never do the following
     do not add/remove heros

and use the left and right arrow keys to change it to:

   always do the following
     then add heroname to the party

Then, when this text box is displayed, the hero will be added to your party. In most cases, you want to attach it to an NPC who uses the same graphics as the hero you are adding, and is one-time-usable. The text box might say something like "My name is whatever. I want to help you in your quest"

There is also a command for adding heros with a plotscript. See the Plotscripting Dictionary

How do I animate maptiles?


See the HOWTO for instructions

How do I call one script directly from another script?


Very simple, just by using it's name. When you make a script, it can be used exactly like any normal plotscripting command. Permit me to give an example.

include, plotscr.hsd

define script(autonumber,show a box in greyscale and wait,none)
define script(1,my main script,none)

#-------------------------------------------------

script,show a box in greyscale and wait,begin
  greyscale palette
  update palette
  show text box(3)
  wait for text box
  reset palette
  update palette
end

#-------------------------------------------------

script,my main script,begin
  # call your script just as if it was a command
  show a box in greyscale and wait
end

#-------------------------------------------------

You can also give arguments to your scripts. Example:

include, plotscr.hsd

# note that instead of "none" we have 1 argument, and it's default is 0
define script(autonumber,show a box in greyscale and wait,1,0)
define script(1,my main script,none)

#-------------------------------------------------

script,show a box in greyscale and wait,box to show,begin
  greyscale palette
  update palette
  show text box(box to show)
  wait for text box
  reset palette
  update palette
end

#-------------------------------------------------

script,my main script,begin
  # call your script just as if it was a command
  show a box in greyscale and wait (3)
end

#-------------------------------------------------

Not only that, but your scripts can also return values. Here is another example.

include, plotscr.hsd

define script(autonumber,area of a circle,1,1)
define script(1,my main script,none)

#------------------------------------------------------------

script,area of a circle,radius,begin
  # Area equals PI times Radius Squared

  # the OHRRPGCE only uses integers, so we are going to
  # pretend PI is 314 and divide the result by 100
  variable(PI)
  PI:=314

  variable(result)
  result:=PI * ((Radius ^2) * 100)

  # now we divide the result by 100 before we return it.
  # the result will be rounded off to an integer
  return(result / 100)
end

#------------------------------------------------------------

script,my main script,begin
  variable(area)
  area:=area of a circle(25)
  show value(area)
end

#------------------------------------------------------------

How do I change my starting location?


By default, your hero starts in the top left corner of map 0. This is seldom the place you want your hero to begin! To change the location, pick Edit General Game Data from the main menu, and you will see options to change starting X, Y and Map. To get the X/Y coordinates you want, just look at the numbers in the lower-left corner while you are in the map editor. Those are the cooridinates of the tile that the cursor is on.

How do I change the resources Windows assigns to my soundcard?


It used to be that i would reccomend that people who had trouble with BAM music ought to change the reources for their soundcard. However, this works so rarely on modern plug&play systems, that I do not reccomend it anymore. There are better ways to deal with BAM music problems, as you can read about here: Why doesnt BAM music work on my computer?

Anyway, as instructions on how to change resources might still be useful for a very small percentage of people, here they are:


To check what resources your sound card is using, right-click on "My Computer" and pick "Properties"

This will bring up the System control panel. Click on the second tab, the "Device Manager"

Inside your Device Manager, you will find a list of all of the devices in your computer.

Locate your sound card. The name will vary depending on your hardware, If you see a device with the words "FM" "OPL" "DOS" or "Legacy" in it then try that one first because it is probably specificly designed for FM DOS music support. If you dont see any of those words, look for something labeled "Sound System" or "Sound Blaster" or something like that. Like I say, it varys from card to card.

Select your sound card, and click the "Properties" button

The last tab in the sound card properties window will be the "Resources" tab. Click on it.

Your sound card should be using Interrupt Request 5 (IRQ 5), Direct Memory Access 1 (DMA 1), and several Input/Output Ranges (the really important one is the 0380-038B)

Look at the Input/output ranges. You should see 0220-022F and 0380-038B in there. If you do not, then that is why you cannot hear BAM music.

Your sound card is probably using "automatic configuration". Uncheck the automatic configuration box, so that you will be able to manually change the configuration.

Your sound card is probably using "Basic Configuration 0000". Look and see if any other basic configurations are available. Try out each configuration, and see if there is one that uses IRQ 5, DMA 1, and I/O ranges 0220-022F and 0380-038B (the really important one is the 0380-038B)

If you find a basic configuration that works, click OK, then click OK again, and windows will reboot. Everything should be happy then.

If there is not a basic configuration that has the correct settings, then double click on the resources, and try to change them yourself. It is possible that some other part of your computer is using the resources that your sound card needs, but if there is a conflict of this type, Windows will warn you, and of course, some cards wont let you tough resource settings at all :(

After you have changed the second I/O range to 0380-038B then click OK, OK again, and reboot

After you reboot, try out the sound and see if it works. If it does not, you might have to switch the I/O ranges around.

Manually changing resources can be intimidating for an inexperienced user. If you arent comfortable doing it, ask the help of a friend who has done it before

If something goes wrong, and things stop working right, dont panic. changing everything back to normal is easy. Reboot your computer, and press F8 the instant the "Windows" logo comes up. Then choose "Safe Mode". In Safe Mode, you can go back into your system control panel, back into the device manager, back into the properties for your sound card, and re-check the box that says "Use automatic settings"

Good luck, I hope that with this help, you will be able to get your sound card working with BAMs.

(By the Way, some sound cards use a smaller I/O range for the FM chip, and if this is the case for your sound card, then you will want 0388-038B instead of 0380-038B)

Bear in mind that some sound cards on some computers will not permit you to change the resources-- and for some sound cards (the best ones), it makes no difference what resources you use. If you have tried these steps, and your sound card still wont work, try contacting Tech-support for the manufacturer of your sound card and asking them for assitance in configuring the card for DOS games (If they need details, tell them what you are trying to use is OPL2 FM Music from real-mode DOS)


See Also:
Why doesnt BAM music work on my computer?
The Soundcard Compatability List

How do I convert MIDI music into BAM music?


A utility to convert MIDI to BAM format is included with the OHRRPGCE. See: How do I use MIDI2BAM to make BAM music?

See also:
Why does BAM music sound worse than MIDI music?

How do I convert WAV or MP3 music to BAM music?


Its almost (but not completely) impossible

WAV and MP3 are both Digital formats. That means that they are a recording of the actual sound frequencies

MIDI and BAM are both Synthetic formats. That means they are just a series of notes to be played back with a predefined instrument, kinda like sheet music.

Converting synthetic music into digitial music is fairly easy. You just play back the "sheet music" with the predefined instruments and record the sound it makes. Converting the other way, from digital to synthetic, however, is far more difficult. Thats like listening to a song and trying to write down what the sheet music for it would sound like. Thats even hard for a well-experienced human to do, let alone a stupid computer.

There are a few programs that attempt this feat, but in my experience they work poorly... but if you feel like enjoying some frustration, you can try downloading one from http://winfiles.cnet.com/apps/98/midi.html. Such WAV-toMIDI converters only work on WAV files with a single sound track to them, such as a piano solo, or a single person humming. There is absolutely no hope of, for example, converting an MP3 of Elvis's Jailhouse Rock into a MIDI that sounds like anything more than noise and static and bleeps

Trust me. All the best BAM music is either composed in NOTATE, or composed as a MIDI and converted with MIDI2BAM.

See Also: How do I use NOTATE.EXE to make BAM music?
And: How do I use MIDI2BAM to make BAM music?

How do I end the game?


How do you make it so when the player completes your game, the game ends?

The best way to do this is with a plotscript. You will probably want a plotscript anyway for making the ending sequence. To end the game, just use the plotscripting command game over. For more info on plotscripting, see the Plotscripting Tutorial or the Dictionary of Plotscripting Commands

If you dont want to use plotscripting, another simpler way is to make a text box that says "Game Over" and link it to itself (using the Next box: property in the text box editor). This method does not automatically return the player to the title screen, they still have to pick "Quit" from the menu manually, but it is nice and simple, and makes it abundantly clear to the player that they have won the game

How do I get more Conventional DOS memory?


The first 640k of RAM in your computer is called "Conventional" memory, or DOS memory. This is the memory that the OHRRPGCE runs in. Normally, you have plenty of that conventional memory free to use, but some computers are configured so that unnecisary drivers are loaded into that memory.

The most common culprit is DOS CD-ROM drivers. A computer running Windows 9X has absolutely no need for DOS CD-ROM drivers, because the built-in windows drivers can handle your CD drive, even from DOS programs. Unfortunately, many PC manufacturers still preinstall the CD driver anyway out of superstition, and most CD-ROM manufacturers package a CD-driver on a disk without labeling it as a DOS-only driver.

This is how to disable your DOS CD-ROM drivers, and reclaim the wasted conventional memory that they consume:

Okay, the easyest way to edit CONFIG.SYS and AUTOEXEC.BAT is to go to "Run" on the START menu, and type SYSEDIT

that will bring up the system file editor, including AUTOEXEC.BAT and CONFIG.SYS

In AUTOEXEC.BAT, you can temporaraly disable lines by adding the word REM to the beginning of them. Find the line that loads MSCDEX.EXE and "REM" it out... something like this:

   REM C:\WINDOWS\MSCDEX.EXE /D:MSCD000

the REM will prevent the driver from loading. See the name after the /D? "MSCD000". Yours will have a name there too, although it might be a different name. Look for it in your CONFIG.SYS

When you find the DEVICE= line in your CONFIG.SYS that uses the same device name that MSCDEX used, add a ; to the beginning of it to disable it. (yours may not be CDROM.SYS, it depends on your CD drive)

   ;DEVICE=C:\CDROM\CDROM.SYS /D:MSCD000

The ; in CONFIG.SYS works exactly like the REM in AUTOEXEC.BAT

Now, save the changes to AUTOEXEC.BAT and CONFIG.SYS, and reboot your computer. When it starts up again, try out your CD-drive. It will still be working fine, even from DOS programs.

Now you should have enough conventional DOS memory free to run GAME.EXE (at the time of this writing, GAME.EXE requires 540k of conventional memory)

See also:
Error: "Out of memory in module GAME at address XXXX:XXXX"

How do I give my hero spells?


Spells are just normal attacks that you have assigned to one of a hero's spell lists.

the first thing to do when giving a hero spells, is to give names to any of the four spell lists you plan to use. A spell list will not show up in the game unless it has a name. Spell lists are named in the hero editor under name spell lists

Then go to edit spell lists where you can decide if the spell list will be MP based, level-MP based, or random (item based does not currently work) Then press enter to edit a spell list. you will see 24 -EMPTY- slots. Use the left and right arrows to assign spells to them. Then you can use the < and > keys (period and comma) to change how the spell is learned

Remember that for a hero to learn a spell from an item, you must add that spell to one of his spell lists, and leave it set to learned from item

See also How do I make a hero learn spells from items? and How do I make a hero learn spells from level-ups?

How do I learn to draw better graphics?


How about an art class? You might not think that learning to draw with pen and ink would help you draw better with mouse and pixels, but it really does make a difference.

When drawing small pictures, like sprites, try using the keyboard instead of the mouse. It is much easyer once you are used to it.

A good way to practice pixel-drawing is to draw a picture by hand on graph paper, and then fill in the squares that correspond to your lines.

Pick (at least) two shades of each color in the picture, one light and one dark. For example, pick two shades of brown for hair, two pinks for skin, two greens for the shirt, two blues for jeans. Then mix the two colors in the picture. You could use light on one side and dark on the other for a cast-sunlight effect, or you could use light in the center and dark on the edges for a "depth" look.

Reserve one space in your palette for a black, or some really dark color. Lots of pictures look better if you add a black or dark outline around them, or between their parts. Its hard to draw black areas because the transparent color is also black, but if you temporaraly change your non-transparent-black into a dark purple while you are working on the picture, and then change it back when you are done, you will find it much easyer.

Use the whole box! If you look at the graphics in the Final fantasy 1-5 you will see that they had even smaller walkabout pictures than the OHRRPGCE (16x16 I believe) and they filled them all the way to the edges. When you are dealing with small pictures like that, always go for cartoonyness over realism. Go ahead an make peoples heads take up half the space-- it makes them bigger and easyer to draw :)

Most importantly, just practice. The more you draw the better you get. Its that simple.

See also, http://pixeltutorial.cjb.net/ which has some nice tutorials about pixel-art.

How do I make Vehicles?


Adding a vehicle to your RPG is fairly easy. The OHRRPGCE already has predefined vehicle types for the three most commonly used vehicles, Airship, Boat, and Speeder

A vehicle is just a special NPC that your party can ride on. To add a vehicle, go into the map editor, open the map you want to have a vehicle on, go into the NPC editor, and make a new NPC. All you have to do to turn an NPC into a vehicle is to set its Vehicle property to one of the vehicle definitions.

What about controlling where a vehicle can park? Go into the map editor in wallmapping mode, and press A to mark places where airships can land and B to mark places where Boats can dock. (A and B tiles can have other meanings if you make your own custom vehicle definitions)

See also: How do I make my vehicle remember where I parked it?

How do I make a "Save Point"


The Final Fantasy series popularized the concept of a "Save Point", that is a special spot that lets you save your game on a map that doesnt normally allow you to save. There is no built in "Save Point" feature in the OHRRPGCE, but it is easy to make one.

The first thing you need to do is make a shop. From the main meny pick Edit Shops. in the shop editor, make a new shop and name it "Save Point". Now pick Edit Shop Bitsets and enable Save, and make sure everything else is disabled.

Now go back to the main menu, and go into Edit Text Boxes. Make a new text box that says "You can save your game here" or whatever. Then go into the Edit Conditionals menu. You will see a line that says:

 Never do the following
   restore party's HP and MP
Change that to:
 Always do the following
   go to shop # Save Point

Next, create an NPC who looks like a save point (traditionally save points are sparkles of blue light) and assign the text box you just made to that NPC. Put the NPC on your map, and boom! You have a save point!

See also: How do I place shops?

How do I make a NPCs say something different later?


Often you want the same NPC to say different things when you talk to it at different times in the game. this is done with Tags, and text-box chaining.

Suppose you have an NPC who says "Go Kill the Dragon.", and you want him to say "Thank you!" after you have killed the dragon.

First, pick Edit Tag Names off the main menu.

name an unused tag Dragon is Dead. We will pretend it is tag 10 for sake of example

then go to the dialogue editor and make a text box that says "Go Kill the Dragon."

Edit the text box's conditionals. The first conditional in the list will say:

 never do the following
  use [text box or script] instead

Use the left and right arrow keys to change it so it reads:

 If tag 10 = ON (Dragon is Dead)
  jump to text box ? instead

where ? is the number of the text box that says "Thank you!"

On the same text box that launches the battle with the Dragon, be sure to put the conditional:

 always do the follwoing
  set tag 10 = ON (Dragon is Dead)

How do I make a battle start after talking to an NPC?


Ill assume you know how to make enemys. (if you dont, read the HOWTO)

Make a battle formation that includes the enemy(s) you want to fight. It does not matter if you add this formation to a formation set. Formation sets only matter for random battles. Remember the number of the enemy formation. You will need it later.

Back up to the main menu, and go into the Dialogue editor. Create a text box that says "Graaah! I am a monster!" or whatever. Pick Edit Conditionals. Find the line that says:

    never do the following
     fight enemy formation 0

and use the left and right arrow keys to change it to:

    always do the following
     fight enemy formation ?

where the ? is the number of the enemy formation you want to fight.

Then, attach the text box to an NPC. When you talk to the NPC, the text box will be displayed: "Graaah! I am a monster!", and then you will fight the enemy formation. Usually, you will want to make the NPC one-time-usable, so it will disapear after the battle. Also, remember that running away from the battle would be the same as winning it, so If this is a Boss, you should edit the enemy bitsets for at least one of the enemys in the formation and turn on the unescapable bitset.

How do I make a different song play when you ride a vehicle?


That will require a little plotscripting. If you havent plotscripted before, start by reading the Plotscript Tutorial first.

The trick is to use the vehicle's mount script and dismount script. Here are some example scripts

define script (1,start vehicle music,none)
define script (2,stop vehicle music,none)

script,start vehicle music,begin
  play song(song:vehcile music)
end  

script,start vehicle music,begin
  play song(song:map music)
end  

You must adjust the names of the songs to match the names of your actual songs as they are defined in your .HSI file

How do I make a healing item?


Make an attack. Set the attack to Target: Ally and Damage: Pure and Base Stat: 100

Target: Ally makes the attack usable on your heros instead of the enemys

Damage: Pure prevents defence and magic defence from being included in the calculations

Base Stat: 100 makes the attack do 100 damage, independent of the abilities of the hero who is using the item. You can raise and lower the damage by changing the Extra Damage, which is a percent of the normal damage

Edit the attack's bitsets, and turn on Always Cure and Usable outside battle

Make an item, and assign the cure attack to it as its When used as item and When used out of battle" attributes

You should also probably make the item Consumed by use

How do I make a hero learn spells from items?


One way to make your hero learn spells is to make a special item that must be used on the hero to teach the spell.

Making the item is quite easy. Go into the item editor, and set the Teach Spell property to the name of the attack that you want to teach.

But that alone isnt enough to make the spell learnable. You also have to reserve a slot for it in one of the hero's Spell lists. Go into the hero editor, choose the hero who is going to learn the spell, and edit his spell list (if you havent named the spell list yet, remember to do that first.) In one of the EMPTY slots put the same attack that he item teaches. By default the attack is "learned from item"-- (You can change this with period and comma)

Now that the item can teach the spell, and the hero has the capacity to learn it, you are all set.

See also How do I give my hero spells? and How do I make a hero learn spells from level-ups?

How do I make a hero learn spells from level-ups?


By default, any spell you add to a hero's spell list is set to Learned from Item. If you want to change a spell to be learned automatically when the hero gets a level-up, just press period and comma in the spell list editor.

See also: How do I give my Hero Spells? and How do I make a hero learn spells from items?

How do I make a key-locked Door?


Elementary my dear Watson! its just a simple matter of learning how to link text boxes and use tags.

So. we have locked door that blocks your way into... lets say... the restroom!

In order to open this door, you must find an item, the "RestRoom" key.

First things first, you are going to need two tags. Load your RPG in CUSTOM.EXE and go into Edit Tag Names.

Name a tag "Have Restroom Key" and name another "Restroom is Open"

Now lets create the key item. Go into Edit Items, and make a new item. You cant fit the name "Restroom key" into the 8-characters allowed, so you will have to name it creatively (you can draw a key icon in the font editor). Set the item's own item tag to "have restroom key"

Now lets make some text boxes. go into Edit Text Boxes, and add a new text box that says: "The door is locked! You need the restroom key!". Make a box that says "CLICK! the door is open" and make a box that says "Here ya go mister. This is the key to the restroom out back."

Edit the conditionals for the text box labeled "The door is locked! You need the restroom key!". Change the first conditional to "If tag # = ON (have restroom key)" "jump to text box # instead" where # is the number of the text box that says: "CLICK! the door is open".

Edit the conditionals for the text box labeled "CLICK! the door is open". Change the tag-setting conditional (the second conditional) to "If tag 1 = OFF (always)" "Tag # = ON (restroom is open)"

Edit the conditionals for the text box labeled "Here ya go mister. This is the key to the restroom out back.". Change the add/remove item conditional (the sixth one) to "Always do the following" "add one Restroom key"

Okay. now it is NPC time. Draw a set of walkabout pictures that looks like a door. Draw another set that looks like a gas-station attendant.

On your Gas-Station-Parking-Lot map, create an NPC that used the Door picture. Set it to appear only when the "Restroom is Open" tag is OFF. make it display the text box that says: "The door is locked! You need the restroom key!"

On your Inside-the-Gas-Station map create an NPC that uses the Gas Station Attendant picture. Make him show the text box "Here ya go mister. This is the key to the restroom out back."

Play your game and try it out!

If you go to the door and use it, it will tell you you need the key. Talking to the attendant will add the key to your inventory. as long as the key is in your inventory, the "have restroom key" tag will be turned ON. this means that when you use the door again, it will display the "opened" text box instead of the "locked" text box. When the "Opened" text box is displayed, it will turn on the "restroom is open" tag. Remember how the Door NPC can only exist when that tag is OFF? pif! it disapears, and lets you into the restroom. Hooray!

Now you can adapt this example to any kind of door you want.

Here are some things to try:

How do I make a treasure chest?


To make a treasure chest, you need an NPC and a text box.

First, draw an NPC that looks like a treasure box. You might want to just make an NPC that looks like the lid of a treasure box, and use a maptile for the base of the box.

Now create a text box that says "You got _____ item!". Edit the conditionals for this text box. You will see a line that says:

  never do the following
   do not add/remove items

Change it to

  always do the following
   add one itemname

Now that you have your treasure chest graphics, and your text box, it is time to make an NPC to represent the treasure box on the map.

Go into the map editor and pick the map that you want the treasure chest on.

Go into the NPC editor for that map, and make a new NPC.

Give the NPC the treasure chest graphics, and give it the "You got _____ item!" text box.

Change the NPC from Usable Repeatedly to Usable only Once. This makes the treasure box disappear after you use it.

You may notice that it is also possible to make an NPC give you an item without using a text box. This is easyer, but less flexable.

Now go into NPC placement mode and place your treasure chest on the map.

How do I make an intro story thing? (text boxes with backgrounds)


In order to make a comic-book-style intro with full screen BMP images (without using plotscripting), you just need to chain together a series of text boxes, and give them background pictures. Ill assume you already know how to import BMP backgrounds. (If you dont, read the HOWTO)

Edit the "Box Appearance" of each text box in the intro. Set the "Backdrop" to the number of the background image you want behind the text box. You also may want to play with the position or color of the text.

Link the text boxes together in the text box editor by setting the "next box" value

You can then trigger this sequence with an NPC. If you want the sequence to play as an intro when you start a new game, just make a one-time-use step-on-activated NPC who triggers the first text box in the sequence, and place it on your hero's starting position.

Another good way to make an intro sequence is with plotscripting.

How do I make an item or spell that revives dead heros?


First of all, make a healing item. see How do I make a healing item? for info on how to do that. The only thing you need to do differently to make the healing item capable of reviving dead heros is to change its Target Class to Ally (including dead)

How do I make an item that shows a text box?


In the item editor, you will see an option called When Used Outside of Battle: Normally this is used to assign an attack to an item, for things like cure potions. However, you can also assign a text box here. When you use this item from your inventory, it will immediately pop up that text box. If you want to attach a plotscript of a battle or something like that to an item, attach it to a text box, and then attach the text box to the item

How do I make choices in a dialogue box?


Okay. First, go into Edit Tag Names, pick an unused tag, and name it. For the sake of example Ill say tag 5 named "test choice"

The go into Edit Text Boxes and pick Edit Choice for the appropriate text box. First, set Choice=Enabled. Then name each of the options. In this case I will say option 0 is "Yes" and option 1 is "No"

Then you need to pick the tags that each option set. You can use any combination of tags you want, but the most common method is for one option to turn a tag ON, and the other option to turn the same tag OFF. make the "Yes" option turn ON tag 5 and make the "No" option turn OFF tag 5

Thats all it takes to make a choice. When the text box is displayed, the "Yes/No" choice will pop up, and tags will be set when you pick. However, most of the time, when you make a choice, you want a different text box to pop up immediately depending on your choice. Here is the best way to do that.

On the same text box with the choice, choose Edit conditionals. The last conditional will say:

   never do the following
     use [text box or script] next

Use the left and right arrow keys to change it to:

   always do the following
     jump to text box ? next

where ? is the text box you want to display if the player chose "Yes"

then, edit the conditionals on the text box you want to display if the player chose "Yes". The first conditional will say:

   never do the following
     use [text box or script] instead

Use the left and right arrow keys to change it to:

   If tag 5 = OFF (test choice)
     jump to text box ? instead

where ? is the text box you want to display if the player chose "No".

This way, the player sees the choice, the pick an option, and a tag gets set. Then, no matter what they choose, the program jumps to the "Yes" text box, but before the text box is displayed, it checks to see if you said "No" and if it finds that you did, then it shows the "No" text box instead.

How do I make maptiles that hurt you?


Harm tiles are maptiles that do damage to your hero when you step on them.

To make harm tiles, first go into Edit Map Data, and load up the map you are going to add the harm tiles to.

In the map editor, go into Edit General Map Data

Now set the Harm-Tile Damage to the number of hit points that the tile will take away (you can use a negative number to make cure tiles)

If you want the screen to flash when you step on a Harm tile, then set the Harm-Tile Flash color.

Now edit your map in Wallmap mode. Press H to turn tiles into harm tiles.

How do I make my imported backgrounds look better?


If the colors in your background translate poorly, resulting in lots of ugly greys and such, load your BMP into a photo editor and increase the saturation. The OHRRPGCE palette emphasizes high saturation colors, and lacks colored shades of grey.

If certain colors look out of place, try using the disable palette colors option to remove the offending colors, and then re-import the BMP

You may also find it helpful to "dither" your pictures, or add "noise" to them. You may find that this creates the illusion of better color depth. I make extensive use of Paint Shop Pro's "Noise" command for the battle backgrounds in Wandering Hamster

How do I make my vehicle remember where I parked it?


A vehicle is just a special NPC, and the locations of NPCs on a map are not recorded when you leave the map. However, when you make a vehicle, you usually want it to remember where you parked it when you leave the map and come back. What if you fly your airship out to a town on a remote island? When you are done in the town, the airship had better still be there, or you are stranded!

There is a way to do this, but it requires plotscripting *gasp! not plotscripting!*

The first thing you need to do is read the Plotscripting Tutorial, which will educate you about how to make a script, compile it, and get it into your game. Then you can come back and try out these sample scripts for saving and restoring your vehicle's location in global variables

include, plotscr.hsd   #language definition

#-----------------------------------------------------

define script (1,Map Autorun,0)
define script (2,Dismount Vehicle,0)

#-----------------------------------------------------

global variable(1,used vehicle)
global variable(2,vehicle X)
global variable(3,vehicle Y)

#-----------------------------------------------------

script,Map Autorun,begin
  if (used vehicle)
  then,begin
    # replace 0 with the NPC number of your vehicle
    set NPC position(0,vehicle X,vehicle Y)
  end
end

#-----------------------------------------------------

script,Dismount Vehicle,begin
  # replace the 0 with the NPC number of your vehicle
  set variable(vehicle X,NPC X(0))
  set variable(vehicle Y,NPC Y(0))
  set variable(used vehicle, true)
end

After compiling and importing the script, you need to assign the first script as the "map autorun" script on the map where the vehicle is located (you do that in the Edit General Map Data menu) Then you need to assign the second script to the vehicle as it's dismount script

So, any time you dismount the vehicle, its location is written to the two variables vehicle X and vehicle Y, and any time you enter that map, it checks to see if the vehicle's location is saved already (thats what the used vehicle variable is for) and restores it

How do I make the story continue after you die in battle?


Sometimes as part of the plot of your game, you want a battle that you have to lose. How do you make the story continue after you die, rather than just sending you back to the title screen?

This is done with a "game-over script" (also known as a "deathscript"). If you havent written any plotscripts before, you should go and read the Plotscripting Tutorial, which will familiarize you with compiling and importing scripts. Then you can come back here and try to write a game-over script.

When you have a game-over script and you die in battle, that script will be run instead of dumping you back to the title screen. Here is an example game-over script.

include, plotscr.hsd
include, mygame.hsi # replace this with your own HSI file

#---------------------------------------------------------

define script (1,die in battle,none)

#---------------------------------------------------------

script, die in battle, begin
  if(check tag(tag:do not die)==OFF)
  then,begin
    game over
  end
end

Before this script will compile, you should name one of your Tags "do not die" in the Edit Tag Names menu, and then export an HSI file from the Script Management menu

Compile the script, and import it into your RPG file. From the main menu, go into Edit General Game Data, and then into Special Plotscripts. Assign "dieinbattle" as your game-over script

Now, whenever you die in a battle, the script will be run. The first thing it will do is check the value of your "do not die" tag. if this tag is OFF (all tags start OFF by default) then the script will execute the game over command, and you will return to the title screen as normal.

However, if the "do not die" tag is ON, then you will return to the map and you can continue playing.

Here is an example of a script that starts a battle with an impossible boss.

include, plotscr.hsd
include, mygame.hsi # replace this with your own HSI file

#---------------------------------------------------------

define script (1,die in battle,none)
define script (2,unbeatable boss,none)

#---------------------------------------------------------

script, die in battle, begin
  if(check tag(tag:do not die)==OFF)
  then,begin
    game over
  end
end

#---------------------------------------------------------

script, unbeatable boss, begin

  #boss says "death to all who oppose me!"
  show text box(1)
  wait for text box

  #dying doesnt send you back to the title screen
  set tag(tag:do not die,ON)

  #fight a formation with a boss that is so
  #strong that he is sure to kill you
  fight formation(1)

  #restore normal death
  set tag(tag:do not die,OFF)

end

One thing to remember is that your heros will still have zero HP after a death script. You might want to correct that in the game-over script. here is an example

include, plotscr.hsd
include, mygame.hsi # replace this with your own HSI file

#---------------------------------------------------------

define script (1,die in battle,none)

#---------------------------------------------------------

script, die in battle, begin
  variable(i)

  if(check tag(tag:do not die)==OFF)
  then,begin
    game over
  end
  else,begin
    for(i,0,3) do,begin
      if (get hero stat(i,stat:HP,current stat) <= 0)
      then (set hero stat(i,stat:HP,1))
    end
  end
end

How do I place shops?


After you have defined a shop, you attach it to a text box.

After you have created your shop, go to the main menu and pick Edit Text Boxes

Locate the text box that you want to attach the shop to, and pick Edit Conditionals

look for the line that says:

  Never do the following
    restore the partys HP and MP

and use the left and right arrow keys to change it to:

  Always do the following
    go to shop number 1

then attach this text box to an NPC, and place the NPC on your map.

See also: How do I make a "Save Point"

How do I start?


If you are lost, and dont even know how to begin, read the HOWTO. It gives you a tutorial on how to create your first game, and how to work with a few of the menus.

How do I take Screen Shots of...?


In GAME.EXE you can take snapshots of battles or the walkabout map by pressing F12. these screen shots will be saved in BMP format

However, F12 will not work for the minimap, shops, menus, etc. If you want to take screen shots of other parts of your game, and you are using Windows, then you can do this:

while playing, press PRINTSCREEN to make a screen shot. Now close GAME.EXE or ALT+TAB out of it, open your favorite drawing program and paste.

Voila! you have a screen shot of absolutely anything.

How do I use MIDI2BAM to make BAM music?


MIDI2BAM.EXE is a utility that converts MIDI music (.MID files) into BAM format so that you can import them into your RPG. MIDI2BAM is included in custom.zip, in the IMPORT subdirectory

Double click on MIDI2BAM.exe to run it. If you have problems, right click on it, pick "properties", and make sure that the working directory is the same as the directory where MIDI2NAM is located.

CONTROLS:

How do I use NOTATE.EXE to make BAM music?


Notate can be most closely compared to writing sheet music. In fact, most of the BAM files that come prepackaged in CUSTOM.ZIP where made by transcribing sheet music directly into notate. The best way to learn notate is to get some sheet music, and transcibe it into notate yourself. That will give you practice using the program, and make it easyer to compose things from scratch. If you dont have any sheet music to practice with, I suggest going to your local church and ask to borrow a hymn book.

the following are the controls for NOTATE.EXE (mostly taken from NOTATE.TXT)

If you are using Windows, you should right-click on NOTATE.EXE, choose "properties" and go to the "Misc" tab, there you can disable the "ALT SPACE" windows hotkey. Notate uses ALT SPACE for placing sharp notes

How do I use Stephanie's PC Piano to make BAM music?


Stephanie's PC Piano (download here) is a program that lets you make BAM music by playing your keyboard like a piano. It also supports external MIDI keyboards attached to the MIDI(Joystick) port.

The keyboard controls are:

F1 Help     Not Implemented
F2 Save     no interface, just type in an 8-letter name
F3 Load     browse for a BAM file
F4 New      clears the recording buffer
F5 Play     Starts/stops the play-buffer
F7 Rec      Start/stop recording
F8 Key      Displays keymap (Very helpful!)

Up-Arrow    Previous Instrument
Down-Arrow  Next Instrument

Keypad -    Lower Volume
Keypad +    Raise Volume

PageUp      Fast Forward
PageDown    Slow Play

Shift+F2    Save As MIDI. This is undocumented and unsupported!
            (actually, the whole program is undocumented and unsupported,
             but this part doubly so)

By PLAYING and RECORDING at the same time, you can layer different voices and different instruments over each other and build complex songs

To use an alternate Instrument Bank, rename one of the other .IBK files to GM.IBK and it will be used instead.

How does script-debug mode work?


If you press F10 while playing your game, you may suddenly notice a bunch of cryptic numbers being displayed at the bottom of the screen. This is script-debugging mode. I originally wrote script-debuggin mode to help be fix bugs in the script interpreter itself, but it can also be useful for you to debug your own scripts.If any of the following seems overly complicated and confusing, dont worry a bit. none of this stuff is anything anybody ever needs to learn. It makes my head hurt, and I programmed it myself!

There are three script debugging levels, Off, Regular, and Detailed. Pressing F10 cycles between them. In regular mode, the script-debugging information is repainted only when the script is in "wait" mode. In detailed mode, the script info is repainted every single interpreter cycle, which can make things slow down considerably

When in script-debugging mode you will see two bars at the top of the screen, one blue and one pink. When no scripts are running, both bars will be completely black. As the script buffers fill, the colored bars will expand to the right. If the blue bar fills up, you will get a "script buffer overflow" error, and if the pink bar fills up you will get a "script heap overflow" error. If you want to see such fun-fun errors in action, try running a script like this:

include, plotscr.hsd

define script(1,recurse until crash,none)

script, recurse until crash,begin
  wait(1)
  recurse until crash
end

Anyway. there is more to script debugging mode than just writing suicidal scripts. When script debugging mode is on, look at the bottom of the screen. you will see six column footers.

#     ID     RtVal     CmdKn     CmdID     State

# is just the number of the script in the order it was loaded.

ID is the script's ID number. This is the same ID number that you assigned to your script in your define script command. If you see a really big number, like over 32000, that is an autonumber script.

RtVal is the script's current return value. Most of the time this will always be zero, but it changes if your script makes use of the return command

CmdKn, or "Command Kind" tells what kind of command the script is currently interpreting. You may notice 1=integer, 2=flow control, 3=global variable, 4=local variable, 5=math function, 6=built-in function, and 7=script. Unless you are using detailed mode, all you are likely to see is CmdKn 6 and 7.

CmdID, or "Command ID" is the ID number of the currently executing command. Its meaning varies depending on the CmdKn. When CmdKn is 6, the CmdID will match the command ID number found in PLOTSCR.HSD, and when CmdKn=7 the CmdID will match the ID number of the script that is being called. If your script is in a "wait" state, you can tell which wait command caused it by looking at the CmdID. For example, "wait for text box" has a CmdID value of 59. "wait for hero" has a CmdID of 3. You can check PLOTSCR.HSD for the full list

State is the internal interpreter state. 0=no state (error), 1=wait, 2=reading command, 3=returning from command, 4=moving to next argument, 5=doing next argument, 6=done with command

How many _______ can I make?


See What are the limits on various things?

I am using the Paintbrush program that comes with windows...


Ah, there is your problem. Nobody should ever use windows painbrush. It is one of the worst drawing programs ever created. I strongly reccomend downloading another one. My favorite is Paint Shop Pro. you can download a shareware version at http://www.jasc.com or you can find other paint programs from many sources such as http://www.winfiles.com or http://32bit.com

despite the fact that paintbrush is only capable of drawing in 16 colors, it saves all its images by default in 24-bit color format-- a waste of space it doesnt use. It is possible to force Paintbrish to save as 4-bit color, but why bother? you can get MUCH better results in almost ANY other paint program.

I forgot my password! What do I do?


First of all, dont forget your password.

If you do forget, then try reeeealy hard to remember. Passwords are case sensitive, so be sure to try caplitalization and stuff. Another common mistake is to accadentaly put a space at the end of a password

If you still cant remember and you have put too much work into your game to start over you can mail me and whine. I might be able to help.

I made backgrounds, but now I cant import them!


First thing to check is that your background images are saved as 320x200 24-bit windows BMP files. When you try to import backgrounds, only images that fit there parameters will work.

If you know your BMP is 320x200 24-bit, and it still wont show up in the import browser, then the file's header is probably corrupt or wrong. Load it into a different paint program from the one you created it in, and resave it.

See also What are the correct sizes for each type of graphics?

I use AOL. Why dont you answer my mail?


Some AOL users do not realise that they have their e-mail configured to block Non-AOL users. I sometimes get this error message when I try to reply to certain AOL users:

550 username IS NOT ACCEPTING MAIL FROM THIS SENDER

I want a new feature!


Thats not a question :)

The best place to suggest a feature is suggestionbox@HamsterRepublic.com. Imagine that it is just a big wooden box that you can slip your suggestion into. When I have time, I will open it up and read them all. I never reply to suggestions, but I ALWAYS read them, so you can be sure that your suggestion was heard.

Many people ask for things that I cant do, but just because something sounds impossible, it doesnt hurt to ask :)

I want more items, NPCs, elements, spells, etc...


I will remove many of the existing limits on things if/when I can.

For example, Item numbers are currently indexed with a single byte, so it is not possible to have more than 255 distinct items. Id like to change this, to allow up to 32767 items, but if/when I will also have to update the savegame format accordingly.

As for elements, I think you will just have to live with 8. <VOICE TYPE="Grandpa"> My goodness gracious! You gol-darn little whipper-snappers have all be spoiled by this here newfangled Pokeyman! Back in my day, we had just four elements, and by gum! we where happy with them! Fire! Earth! Water! Wind! Those where elementals you could set your watch to. *sigh* It all started going bad when we let "Ice" and "Lightening" into the mix. That paved the way for "Light" and "Darkness", and pretty soon, everybody wanted to be an elemental.</VOICE>

There are plenty of other number-limits on various things in various parts of the OHRRPGCE. All of them exist for a reason, some of them will be changed, and some wont. If you have run into a limitation that you think needs to be changed, feel free to mail me and ask about it.

See also: Will you ever add more animation frames?
See also: What are the limits on various things?

My mouse cursor is missing in the graphics editor!


A few people experience this problem when upgrading an RPG file from an older format to the latest format. If this happens, you need to reload the default font. Mouse cursors are stored inside the font. Go into the font editor, and press CTRL ALT F (this will destroy any changes you have made to the font)

So when will it be finished?


This is one of the most often asked questions, but I really dont have a good answer for it. It will be done wen its finished, it will be finished when its done. Any timeframe I gave you would just come out of thin air. So for those of you who desperately want me to set a deadline for myself, lets say... Ill be done in about 137 years. We will have a big party in June of 2137 to celebrate... ooh! I forgot about leap-years. that moves it up 34 days! Lets schedule the party for May 2137.

See also When is the next update?

What are Tags for?


Tags are a way of keeping track of what events have already happened in your game

There are 1000 tags. The first two tags, 0 and 1 are special. The rest, 2 thru 999 are user-defined. Each tag can be thought of as a switch that is either ON or OFF. (for you programmers, thats an array of booleans) When the game starts all of the tags are OFF.

Various actions in your game can turn tags ON or OFF such as talking to an NPC, or picking up an item. Other things are dependant on tags. You can make an NPC who will only appear if a certain tags is ON. You can make an item that a shop will only sell to you if a particular tag is OFF. You can make a dorr that leads to one place when a tag is ON, and another if it is OFF

You can assign names to your tags to help you remember what they each mean. For example, if tag 10 is ON while you have at least one potion in your inventory, and OFF when you are out of potions, you can name it "have potions". Or if tag 14 gets turned on after you talk to the King, you can name it "Spoke to King"

For more info on tags, see:
How do I make a NPCs say something different later?
How do I make a key-locked Door?
How do you make choices in a dialogue box?
And of course, the HOWTO

What are the Debugging keys?


Debugging keys are special function keys that you can use to test certain things out in GAME.EXE. The debugging keys can be disabled in the "General Game Data" menu in CUSTOM.EXE to prevent cheating. You may find the debugging keys helpful when testing out your game, but you will probably want to disable them before you distribute your game.

See also How does script-debug mode work?
See also Even if I disable the minimap, I can still display it with F1

What are the correct sizes for each type of graphics?


If you are planning on making your graphics in an external program and saving them as 4-bit (16-color) BMP files to import into your game, it is helpful to know the correct dimentions for each type of graphics.

  • Heros..........32x40
  • Walkabout......20x20
  • Small Enemies..34x34
  • Large Enemies..50x50
  • Huge Enemies...80x80
  • Attacks........50x50
  • Weapons........24x24

Note that you do not have to get the size exactly right. If you are off by a little, you will still be able to import your pictures

Remember that a BMP file must be saved with only 16-colors (4-bit color depth) if you want to be able to import it.

see also I made backgrounds, but now I cant import them!

What are the limits on various things?


Many people ask me about the various limits on different features. Here is a more-or-less complete list of all the limits as of the time of this writing (May 2001). Ill try to remember to keep this updated, but I cant make any promises :)

Graphics-- All 16-color paletted graphics, including Heros, walkabouts, enemys of each size, weapons and attacks are limited to 32767 graphics sets.

Backdrops-- You can have up to 32767 backdrops (battle & textbox backgrounds)

16-color palettes-- You can have 32767 16-color palettes (before the March 31 2001 version, there where only 100 palettes)

Maps-- You can have up to 100 maps. This limit is imposed by my internal naming scheme.

Tilesets-- You can have up to 32767 tilesets, although making that many would be pretty silly, since you can only have 100 maps.

Songs-- You can have up to 100 BAM songs. This limit is caused by the way I handle the Song's names. I might be able to remove this limit at some point in the future.

Heros-- You can have 4 heros in your active party at a time. You can have 38 heros at a time total, including both active and reserve heros. You can have 60 heros defined in your whole game. All of these limits are imposed by memory restrictions.

NPCs-- There is a maximum of 36 NPCs defined per map, although you can place more than one copy of the same NPC in different places on the map. There is a maximum of 200 total NPC "instances" per map. These are both memory limitations :(

Doors-- There is a maximum of 200 doors per map. Another memory limitation.

Attacks-- You can define up to 32767 attacks

Enemys-- You can define up to 32767 enemys

Enemy Formations-- You can combine your enemys into up to 32767 formations

Enemy Formation Sets-- You can combine your formations into up to 255 formation sets. This limitation is because the formation set number has to be stored in an 8-bits of data.

Items-- You can define up to 255 items. This limitation is because items are stored in 8-bits of data. You can have up to 200 types of items in your inventory at at time. This si a memory limitation. You can have up to 99 instances of each of those items in your inventory. That is just a screen-space limit, plus it is longstanding RPG tradition.

Tags-- There are 1000 tags. (tags 0 and 1 are special, 2-999 are customizable) This is a memory limitation.

One-time usable NPCs-- You can have up to 1000 one-time usable NPCs. Memory limitation.

Plotscripts-- Your game can contain up to 16383 numbered plotscripts, and 16363 autonumbered plotscripts. The plotscript interpreter can handle up to 128 scripts or 4098 bytes of script code at a time (normally, the script code buffer runs out first). You can have up to 1000 global script variables.

Text boxes-- You can have up to 32767 text boxes

Shops-- You can have up to 32767 shops defined, and each shop can contain up to 50 items/heros (memory limitation)

Spells-- Each hero can have up to 4 spell lists, each containing up to 24 spells.

Vehicles-- You can define up to 32767 vehicle types, but the number of vehicles you can actually place is limited by the number of NPCs per map.

See also: What is so special about the number 32767?
See also: I want more items, NPCs, elements, spells, etc...

What do each of the attack motions do?


Attack Animations

Normal
The attack apears directly over the target, and cycles once through its frames

Projectile
Attack flys from the attacker to the target(s)

Reverse Projectile
Attack flys from the target(s) back to the attacker

Drop
Attack falls down from the sky and lands on the targets

Ring
When focused on a single target, a ring of eight attacks will appear around the target and converge inward on it.
When spread over many targets, a single attack will appear above each target and move in a circle around it.

Wave
When focused on a single target, a horizontal row of attacks will move accross the screen, past the target.
When spread over many targets, a diagonal wall of attacks will move across the whole screen.

Scatter
The attack will start over the target, and fly off a random distance in a random direction

Sequential Projectile
Attack flys from the attacker to each of the targets, one by one, and then off the side of the screen

Meteor
Attack falls down diagonally from the top of the screen above the attacker and strikes the target

Driveby
The attack comes from the side of the screen behind the attacker and moves all the way accross the screen, passing the target

Null
Does no animation at all

Attacker Motions

Strike
If used by a hero, the hero steps forward, swings his or her weapon, and steps back.
If used by an enemy, the enemy twitches.

Cast
If used by a hero, the hero steps forward, uses his or her casting picture, and steps back.
If used by an enemy, the enemy twitches.

Dash In
Causes the attacker to run in front of the target, swing his weapon (or twitch in the case of an enemy) and run back.

Spin Strike
If used by a hero, the hero steps forward, Holds out his or her weapon, spins back and forth several times, and steps back.
If used by an enemy, the enemy spins back and forth several times.

Jump
Causes the attacker to jump off the top of the screen. If this is not chained to an attack that uses the "Land" attacker motion then the attacker will be stuck up in the sky.

Land
Causes the attacker to fall from the sky, landing on the target, and then dash back to his starting spot. This is normally used together with the "Jump" attacker motion, but can also stand on its own.

Null
The attacker does nothing.

Standing Cast
If used by a hero, the hero uses his or her casting picture without stepping forward first.
If used by an enemy, the enemy twitches.

Teleport
Causes the attacker to suddenly appear in front of the target, swing his weapon (or twitch in the case of an enemy) and suddenly appear back in his starting spot.

What do the run-time script errors mean?


In some cases, GAME.EXE might crash and show you a big red script error. Here is an explanation of each possible run-time script error message. Most of these error messages will never be displayed unless something very serious like file or memory corrution occurs, but a few of them can be triggered by mistakes in scripts.

Script buffer overflow
This error message means that the program has run out of memory to load scripts. This can happen if your scripts are really really big, or if you have scripts that fail to terminate piling up in memory and filling up the buffer. Script-debug mode (F10) can be very helpful in diagnosing this error. In the case of a script that is too big, you can break it up into smaller pieces. In case of script stacking up in memory, you need to figure out why the previous scripts are not terminating before the later ones get loaded on top of them.

interpreter overloaded
This error means that the script interpreter has run out of handles to load scripts into. It is very unlikely this error message will ever happen, because any runaway recursive script that could cause this would be more likely to generate a "Script buffer overflow" error first.

script heap overflow
This error message means that the program has run out of space to store local variables and arguments. It is unlikely you will ever see this error, because any script likely to use that much heap space would probably generate a "script buffer overflow" error first.

Failed to load (type) script #
This error message is usually preceded by another error message that will give you a clue as to why the attempt to load the script failed. The "type" will tell you how the program was attempting to trigger the script, for example, map-autorun, NPC, after-battle, etc.

Failed to unlump #.hsx
This error message means that the program tried to run a script, but it could not even find the script's data file in the RPG file. The number indicates the script's ID numbers. High numbers like 32767 are autonumbered scripts.

division by zero
When I was in school, my teachers would always tell me that it was impossible to divide a number by zero. I always asked "Why not?". It wasnt until college that I found a teacher who was capable of giving me a good answer to that question, and when he did, the answer went right over my head. So I decided to take their word for it. If the math-people of the world say it cannot be done, then I am not going to argue with them.

stnext encountered noop # at # in #
Stnext is a routine that reads the next command to execute. Noop stands for no-operation. It is an error-catching command to catch errors where script data is missing. The three numbers help pinpoint where the data was missing from. If you see this error it means that either your scripts failed to load, or they have been corrupted on the disk.

Illegal kind # # in stnext
This error catches corrupted data when trying to read the next command. If you see this error it means that either your scripts have been corrupted, or another script error has thrown the script execution pointer into a part of memory where it should not be.

encountered clean noop
A clean noop is a deliberate no-operation command that you can put into your script on purpose with the noop command. Of course, I cant think of any valid reasons why you would want to do that.

Interpretloop encountered noop
Yet another sanity-check to watch for missing data. You may see this if your script fails to load, but you try to continue anyway.

While fell out of bounds, landed on #
For fell out of bounds, landed on #
If statement overstepped bounds
While statement has jumped the curb
For statement is being difficult
while, for and if commands keep an internal pointer to control their actions. If this pointer gets corrupted by a bug in the program, you may see one of these error messages, depending on how the number was corrupted.

Unsupported math
In the unlikely event that I decide to add some new math functions to hamsterspeak, this error would appear to people who where using versions of GAME.EXE too old to support them.

Illegal statement type
Legal statement types are commands, flow-control, variables, and numbers. If you see this error message it proably means that your script data is corrupt.

Illegally Suspended Script
This is a sanity check to watch for corrupted script data. If anybody ever sees this, it means either you have found a bug in the program, or the memory for your DOS box was corrupted

Script # became stateless
Each script has a "state" which tells what operation it is currently doing. If you see this error, it means a script has lost it's state, either because of a bug in the program, or because of a previous error.

Illegal Wait Substate
This means that a script has been put into a "wait" state on a non-waiting command. If you see this, it probably indicates a bug in the program.

What files do I need to give people so they can play my RPG?


So you have made a game, and now you want to distribute it eh?

All people need is your RPG file GAMENAME.RPG and a copy of GAME.EXE

If you rename GAME.EXE to have the same name as your RPG file, then when people run it, it will automatically start your game without showing the file-select screen. For example, if the name of your game is QUEST.RPG then you can rename GAME.EXE to QUEST.EXE.

If you do not rename GAME.EXE you might also want to distribute OHRRPGCE.FNT along with your game too. That is the font for the file-select screen. Its not terribly important, because it doesnt get used after an RPG is loaded, and if GAME.EXE cannot find OHRRPGCE.FNT, it is smart enough to just load the System ROM font instead.

The file OHRRPGCE.MAS used to be required, but it is not required anymore.

RPG files can get pretty big, so I suggest compressing them into ZIP files before you upload them to the web or e-mail them to people. If you dont have a zipping program, try http://pkware.com for a good DOS zipping program, and http://zip2day.com for a good Windows one.

If you want to save space by leaving out GAME.EXE entirely, you can do that too. Feel free to refer people directly to http://HamsterRepublic.com/dl/ohrrpgce_play.zip

It is not neccisary to distribute your .HSS file, your .HSI file or your .HS file. (unless you want to brag about your plotscripting skill)

Please do not re-distribute CUSTOM.EXE

What is MP~ ?


One of the stats available to you is MP~ (thats just the default name, yopu can rename it) The purpose of this stat is not obvious, so permit me to explain. What it does is reduces, by a percent, the amount of magic (MP) that the hero or enemy needs to spend to cast a spell. Some possible uses include; Making a special item which gives you a stat bonus of 50 for MP~, thus letting the hero who equips it cast all spells at half price, like the "Golden Hairpin" item in Final Fantasy 6. Or, give an enemy 100 MP~ so that it can cast the same spells that other enemys cast without ever running out of (or even using) MP

What is so special about the number 32767?


You may notice that the maximum limit on alot of things in the OHRRPGCE is 32767. This is not my lucky number (try betting on that at the roulette wheel!) and I did not pick it at random. It is the highest number that can be represented in a signed 16-bit integer, which is the data-type used by most variables in the OHRRPGCE

What is the difference between the "Own Item" tag and the "is in Inventory" tag?


An item's Own Item tag gets turned on whenever you own at least one of the item.

An item's is in Inventory tag gets turned on whenever you have at least one of that item in your item list inventory.

If an item is equiped as a weapon or as armor it counts as being owned, but not as being in your inventory

What is the formula for how much experience it takes for a levelup?


Until such a time as the OHRRPGCE supports customizable experience requirements for levelups, this is the formula:

First Level: 30 exp
Each level after that: previouslevel * 1.2 + 5
With a maximum requirement of 1000000 (around level 60)

So a chart of levelup requirements would look something like:

Level 1  -  30
Level 2  -  41
Level 3  -  54
Level 4  -  70
Level 5  -  89
Level 6  -  112
Level 7  -  139
Level 8  -  172
Level 9  -  211
...

What sound cards always work?


See the Sound Card Compatability List

What sound cards never work?


See the Sound Card Compatability List

When is the next update?


<SARCASM TYPE="cheerful">When is the next update? When is the next update? Despite all my efforts to stop them, people keep asking me this question. Here is my best estimate; It will definately happen this year. Also, it will happen durring one of the months of this year. Im not sure which one, but the ones that are already over can be ruled out as unlikely. As for what day, it is less likely to be ready on a given monday than it is on any particular friday or saturday, but thats nothing you should count on. Late afternoons are better for updates than early mornings (I like to sleep in (and remember, thats Pacific Standard time (NOT Pacific Daylight time, I dont abide with that silly daylight savings time stuff (dang farmers!)))) ... where was I... Oh! and as those of you who have followed my updates in the past may have noticed, I am partial to posting updates on miliseconds that are prime numbers (counting from the beginning of the previous second). If anyone needs a more specific estimate of when I will be ready with the next update, I suggest consulting a fortune teller, calling the psychic hotline, or buying a fortune cookie, cause they all have a better chance of giving you an exact date than I do</SARCASM>

Seriously, it is not unusual for several months to pass between updates. Once it even took me seven months for an update. Sometimes the updates come faster. Sometimes I can pump out two updates in the same month. It all depends on the complexity of the features I am working on, the nastyness of the bugs I am trying to fix, and how much free time I have on my hands.

Remember, this is just my hobby, which I happen to be sharing with you all. There are no deadlines and there are no schedules.

See also So when will it be finished?

When should I run RPGFIX.EXE?


The only time you need to use RPGFIX on an RPG file is when you get the "Obsolete RPG file" warning when trying to load and play someone else's game. You never need to run it on your own game, since opening and RPG file in the latest version of CUSTOM.EXE and re-saving it will also update it to the latest version.

Where can I find other RPG makers, or makers for other types of games?


If the O.H.R.RPG.C.E doesnt suit your purposes, and you want to try other RPG makers, or if you are looking for game-making engines for other styles of games besides RPGs, I reccomend checking the Game Creation Systems category on the Open Directory.

Why cant I have more than one script at a time?


You can! you are mistaken!

All of your scripts go in the same file, and all of them get compiled into the same .HS file. A single .HS file can contain more than 32000 scripts!

Here is an example of putting more than one script in the same file:

include, plotscr.hsd
include, mygame.hsi

define script(1,my first script,none)
define script(2,my second script,none)
define script(3,yet another script,none)

script,my first script,begin
 #stuff
end

script,my second script,begin
 #things
end

script,yet another script,begin
 #blah blah
end

Why did you choose BAM music over other formats?


We (me and Brian) designed the BAM format to be well-suited for FM (Adlib/OPL2) synthesis. So the real question, is why did we choose FM synthesis over the other, prettyer-sounding ways of getting music out of your soundcard?

Here are the various ways of making sound with a computer, and why we decided for/against them

Why did you pick an acronym that is so hard to pronounce?


haha! I did it on purpose! In my opinion, acronyms are the worst thing to happen to the English language since apostrophes! O.H.R.RPG.C.E! Hahaha! Just try and pronounce it! Haha! It cannot be done. You have no choice but to spell it out: Oh-aych-ar-ar-pee-gee-see-ee

And no fair adding imaginary vowels!

Why do all my heros have the same attack?


Your heros all start out equipped with nothing, and they use their default weapon for attacks

If you have not chosen a default weapon for them, they will use the first item in your item list as a default weapon. If this item doesnt happen to be a weapon, they will just end up using the first attack in the attack editor. This is usually not what you want them to use.

So, how do you make weapons? A weapon is simple. Its just an attack and an item linked together. First, make an attack. For example, a slash as would be appropriate for a sword. (if you dont know how to make an attack, read the HOWTO.) Now, go into Edit Items, and make a new item named "Sword". Set your "Slash" attack as the item's When used as a Weapon setting. Then change the Equippable As from NEVER EQUIPPED to Weapon. Last, pick Who Can Equip? to decide what heros can equip this item. (you may also want to set Stat Bonuses and Bitmask)

Now when you equip a hero with the sword item, they will be able to use the Slash attack in battle.

Why do my scripts lock up on the "Wait for NPC" command?


Some people complain that their scripts lock up when using the "wait for NPC" command. This happens because of misunderstandings about the way the command works.

One common mistake is to do something like this:

  walk NPC(5)
  wait for NPC

You might assume that this will wait for the last NPC moved. This is not so. If you do not specify a specific NPC to wait for, then it will wait for NPC 0... but who knows what NPC 0 might be doing at the moment So, the correct commands would be:

  walk NPC(5)
  wait for NPC(5)

Perhaps that was not your problem? Another possibility is that you have not stopped automatic NPC movement with the "suspend NPCs" command. the "wait for NPC" command cannot tell the difference between scripted movement and automatic movement, so if you leave automatic movement on, the NPC might *never* stop moving.

One last possibility is that you have given the NPC a speed which does not divide evenly into 20. All map tiles are 20x20 pixels. If you give an NPC (or a hero) a speed that does not divide evenly into 20, it may become misaligned with the tiles, and will get stuck mid-step. If this happens, your "wait for NPC" command could appear to lock up.

Why do my spawned enemys all appear in the top left corner?


Enemys can spawn more enemys when they are hit with attacks or when they die. When this happens, the spawned enemy will appear in the first empty slot in the battle formation. In many cases, this is a slot that has not been defined at all, so its position is still 0,0 the top left corner of the screen. So how can you control where a spawned enemy shows up? When designing your battle formation you can reposition the empty slots. Just pick the first empty slot in the list, temporaraly put an enemy in it, reposition it, and then remove the enemy.

Why does BAM music sound worse than MIDI music?


BAM music is played out of the FM chip in your soundcard. Many newer wavetable soundcards use poor quality FM chips or lack FM chips entirely because the manufacturer said "Hey, nobody uses the FM chip anymore, we can save a few bucks." On older sound cards, or more expensive newer cards however, BAM music will sound every bit as good as MIDI. Unfortunately, FM chips are going the way of the dinosaur, so such cards are getting harder to find :(

If I had a good way to interface with a wavetable soundcard from DOS, I would certainly upgrade BAM to support it, but that is not likely to happen since most wavetables use proprietary Windows-based drivers...

See also:
The Soundcard Compatability List
Why did you choose BAM music over other formats?

Why doesnt BAM music work on my computer?


Because the OHRRPGCE is a DOS program, the BAM music it plays requires your sound card to be set up in a DOS-compatable way. A few newer soundcards, especially ones integrated into motherboards are totally unable to play BAM music. Others dont work because they need driver upgrades or because Windows has not assigned the right resources for them. If BAM music doesnt work for you, the first thing to do is check The Soundcard Compatability List and see if your card is listed. The next thing to do is get the latest drivers from the manufacturer and try installing them. If that still doesnt work, you might simply have an incompatable card

However, if you are using Windows NT Windows 2000 or Windows XP, there might still be hope! Many OHRRPGCE users have reported success getting BAM to work by using the VDMSound program, which you can get at http://www.ece.mcgill.ca/~vromas/vdmsound/

If your have installed the latest drivers for your card, and VDMSound wont work for you, there is one last long-shot chance. Download the BAM_PORT utility and read the TXT file included with it. I am very interested in feedback on this program, as I am still undecided how useful it is.

I used to suggest that people with BAM music ptobalems try to change their soundcard's resources, but this works so rarely that i no longer reccomend it. If you still feel like trying, you can find instructions here: How do I change the resources Windows assigns to my soundcard?

See also:
Sound Card Compatability List
Why did you choose BAM music over other formats?

Why dont my pushable NPCs move?


You need to give your pushable NPCs a speed greater than 0, or they will not move. This also applys to NPCs that you try to move with the "Walk NPC" plotscripting command.

Will there ever be sound effects?


As much as I would love to add sound effect support, sound effects are officially off the to-do list... Why? real-mode memory limitations make it impossible for me to allocate a big enough buffer to play digital sounds. Real mode sucks :(

Will you ever add more animation frames?


If I could have, I would have long ago. The limitations on the number of animation frames available for walkabouts, hero's battle pictures, attacks, etc, is determined by available VGA memory in the particular Mode-X configuration I am using. Its all full. There isnt any more space available at all, otherwise I would gladly add more frames.

See Also:
Are you going to make a version that supports hi-res graphics, 3D, etc...?
Will you raise the limit on number of NPCs?

Will you ever make a Linux version? Macintosh? BeOS?


No, my code is not portable.

However, the OHRRPGCE can be run on an emulator.

I have succesfully run GAME.EXE through Bochs on Linux, although it was a bit slow. You can get information about Bochs from http://www.bochs.com. Bochs is also available for MacOS and BeOS, and other operating systems, but I have only personally tested it on RedHat Linux 5.2 i386

(more recently) Bochs has been continued, but Plex86 picks up where it left off. I still havent had a chance to test it out yet.

I have not personally been able to run the OHRRPGCE on dosemu, but David Gowers tels me he was able to get it to work, and it was quite usable despite a few problems.

StellarX tells me that the OHRRPGCE does run on Virtual PC for the Mac.

If anyone has attempted to run the OHRRPGCE on another emulator, please mail me and let me know if it worked.

See also Are you going to make a Windows version?

Will you ever support MIDI music?


Nope. MIDI music would be within the memory capabilities of the OHRRPGCE, but the sound quality and instrument limitations would be exactly the same as BAM files, so what would you gain? We only play music through the FM chip we cannot support the hardware and software wavetables that make your MIDI files sound so good.

See also:
Why does BAM music sound worse than MIDI music?
Why did you choose BAM music over other formats?

Will you ever support MOD music?


No. Mods require large audio samples to be held in memory and we cant do that for real-mode memory reasons. So sorry

See also:
Will there ever be sound effects?
Why did you choose BAM music over other formats?

Will you ever support MP3 music?


No

It amazes me that people even ask this... but people do. first of all MP3 is a digital audio format. Despite its good compression, it takes absurd amounts of disk space and memory in comparison to synthetic music like MIDI or BAM. Second MP3 is heavyly encoded and requires more processor activity to decode and play than running half a dozen copies of the OHRRPGCE at the same time.

MP3 is just simply not practical for real-mode (640k-limited) programs

Will you ever support WAV files?


See: Will there ever be sound effects?

Will you raise the limit on number of NPCs?


The current limit on distinct NPCs is 36 (0-35). Although you can place more than one copy of the same NPC on a map, the limited supply of NPCs can be a problem for big or complex maps. Unfortunately, I cannot increase the NPC supply. I already have the graphics area packed full, and I couldnt increase the number of NPCs without doing something drastic like reducing the number of animation frames they use-- which isnt gonna happen, because they only have two per direction right now.

Alas, it is a limitation that we must just live with.

See Also: Will you ever add more animation frames?
See Also: What are the limits on various things?