home *** CD-ROM | disk | FTP | other *** search
- Haktar V1.6
- (C) by Guido Wegener Mar.1992
- Eisenacher Str. 2
- °ª° 5300 Bonn 1
- West Germany
-
- This program is Freeware and may only be copied on an unchanched disc of
- the series mentioned when Haktar starts.
- If you want to sell it on your own discs, then please ask me for a special
- version for you. Please inform me about the copyrights, prices etc. of
- your series.
- Haktar uses the ARP.library and was written using Aztec C 5.0b.
-
- /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
-
- Request :
- Haktar was written to entertain, and it would be very nice if you'd write
- some cute adventures and then send them to me. You will get the disk back
- with some of the other adventures I received from all over the world. Please
- list the languages you are able to understand. It would be very friendly
- (and will improve your chances of getting a fast answer) if you would
- send some money (for postage (and some beers)).
- Oh, look at this UGLY .doc-file ! My English is so bad und the structure is
- so chaotic ! I am sure that you could write a better one ! Yeah, become a
- hero of the scene ! Write a good manual for Haktar ! Send it to me ! Oh Boy !
- You are soooooooooooooooooooooooooooooooooo kind !
- I know that I ask a lot of you to do, but I did an awful lot of work for
- Haktar and would be glad to know that there are some guys out there who
- are using it.
- Please spread the whole package. The more people are testing it, the more
- improvements will be made. And we all do want that perfect proggy, don't we ?
-
- °ª° THANKS °ª°
-
- /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
-
- About Haktar :
- About a year ago I started to read H.P.Lovecraft's books. I started with
- 'The Case of Charles Dexter Ward'. When that good guy investigated the
- giant cave under Joseph Curwen's house, I was fascinated and thought
- about ways to explore such dungeons in the computer. Since I once wrote
- some C-64-Basic adventures and had thought about such problems before,
- it did not take long until I had the first ideas for it. But how should
- I manage the parser ? A good parser for an adventure construction kit is
- very hard to program, isn't it ? I gave up...
- Some days later I bought 'Dungeon Quest', a primitive and cheap, but
- somewhat cute, adventure. One time I was standing in front of a little hut.
- I wanted to enter it, or at least to read the message at the door, but
- for doing so I had to try about 10 commands until the parser understood what
- I meant. That day the first complete concept for Haktar was born :
- - everything you can do is displayed on the screen
- - each item or room is one DOS-file
- - these files are simple ASCII text files
- - these texts consist of some simple commands
- - according to your inputs, Haktar is jumping from file to file
-
- /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
-
- About The Name :
- Some time ago Douglas Adams wrote 'The Hitch Hiker's Guide to the Galaxy'.
- It was a real success and he wrote three more books on the subject.
- One of the books is called 'Life, the Universe and Everything'.
- In this book there is a giant computer that was destroyed because of a
- failure. But the particles of the computer were still communicating with each
- other and the crippled computer floated through space. He was still able to
- create illusions and some real things. His name was 'Hactar' (or Haktar in
- the German translation of the book).
- "It was thin and feeble, like a voice carried on the wind from a great
- distance, half heard, a memory or a dream of a voice."
- "'I have nothing to offer you by way of hospitality,' said Hactar faintly,
- 'but tricks of the light. It is possible to be comfortable with tricks of
- light, though, if that is all you have.' His voice evanesced, and in the dark
- dust a long velvet paisley-covered sofa coalesced into hazy shape."
- "I can encourage and suggest tiny pieces of space debris - the odd minute
- meteor, a few molecules here, a few hydrogen atoms there - to move together."
-
- When I was thinking about the name for this program, I remebered this
- computer and thought that the name would fit : I wrote Haktar to create
- new worlds.
-
- /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
-
- Structure Of An Adventure :
- The key to an adventure is the head-file.
- In this file there are the initial commands.
- You must give a headpath here.
- You may set the time.
- You may set the maximum weight.
- You may set some initial flags and variables.
- You should declare files that contain thing-commands.
- You may create some items in the hero's pocket.
- You should print some introducing words for the user.
- You MUST use a go-command to mark the first room.
- Every room is a single DOS-file.
- There you can list the items that are in there, and the things the hero
- can do there.
- Every item is a DOS-file, too.
- Here you can only list the things the hero can do with it.
-
- /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
-
- How To Start Haktar :
- Type 'Haktar <headfile>' in the CLI.
- <headfile> is the full name of the head-file of your adventure.
- OR : Click its icon. But there still may be some problems with the WBstart.
- It is very wise to use an addbuffers on the drive you are using, this will
- prevent Haktar from loading the same file several times.
- Addbuffers 50 is a good command for medium size adventures.
-
- /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
-
- The Userinterface :
- The Interface consists of the following groups of elements :
- A menu (right mouse button)
- B list gadgets (that upper half of the screen with the prop-gadget)
- C control gadgets (the six boolean gadgets in the middle)
- D text output
-
- A:a:Project :
- 1 Restart
- The adventure you were playing is started again. You will not have to
- type the filename again.
- 2 Start...
- A file requester will appear. Choose the headfile of an adventure.
- My own adventures are marked by the .hhf (Haktar header file) extension,
- but do not count on that when dealing with other adventures.
- The chosen adventure will be started.
- 3 Load...
- After saving the game (Aa4) you can restart it by entering the name of
- the file here. After loading you will have to click on C1,2 or 3.
- 4 Save...
- Save your position in the adventure.
- 5 About...
- You know this.
- 6 Crap
- Ey, just crap, ey, you know, small-talk, isn't it, or what ?
- 7 Short Instructions
- A VERY short guide to the secrets of Haktar.
- 8 Quit
- It does not look like the close gadget but it works exactly the same.
- b:System :
- 1 Headpath :
- After copying an adventure to another device it is neccessary to change
- the headpath command in the headfile. For testing you can also set the
- new headpath with this option and all following headpath-commands will
- be ignored. I do not know why I included this option, but some months
- ago I thought that it was important...
- 2 Restore Headpath
- After changing the headpath (Ab2) you can restore the real headpath with
- this option.
- B: 1 the big big list
- When you have to choose what to do, you have to click on one of the
- actions or things listed here. When the time is right, you can choose
- different lists by clicking C1-3. And you may scroll through long lists
- by using B2-4.
- 2 the long proportional gadget
- Move the bar to scroll through lists.
- 3 arrow up
- Scroll up one entry.
- 4 arrow down
- Scroll down again.
- C: 1 Room
- By clicking this gadget you can get a list of all the possible actions
- in the room you are in. In most cases you can find something to leave
- the room here. Choose one and see what happens.
- For profis : All do-commands of the room file are displayed.
- This list will also appear every time you enter a new room.
- 2 Items
- Click here to get a list of the items in the room. Click one of the
- displayed items to see what you can do with that specific item. Click
- one of the displayed actions and it will be executed.
- Do not forget to use this gadget when entering a new room! If you don't,
- you may overlook some important items.
- 3 Inventory
- All items you are holding will be displayed. You may then choose what
- to do with a chosen item, just like C2.
- 4,5 Continue, Ok
- This gadgets are dead in this version.
- But you can use the (especially the Continue) to scroll a page of text.
- 6 Cancel
- You can use this gadget to forbid the waiting when showing a text.
- This will speed it up, but you will still be able to pause by pressing
- the right mouse button.
- To stop all output, press the close gadget once. Note that Haktar has to
- read through the whole file, even after pressing close; so please wait
- until it is ready.
- D: In the text window all messages and descriptions will be displayed.
- After each move the name of the room you are in will be displayed here to
- mark the paragraphs.
- When reading texts that are too long for the window, a red arrow will
- appear in the right corner of the window. Click on the text or C4 for
- continue. You may also press any (real==undead) key or the right mouse
- button or any other gadget (except Cancel and close).
-
- You can also use keys to activate the gadget functions :
- Key Gadget
- r C1
- i or <Space> C2
- n C3
- u B3
- d B4
- 1-9 B1
-
- /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
-
- Haktar Commands :
- Haktar's commands consist of their name and some (or none) arguments.
- There are three groups of arguments :
- short name stop chars
- I integer number <return>·[] |,abcdef....
- W word <return>·[] |,
- N name <return>·[]|,
- S string <return>·
- B block []
- BB double block [|]
- - Stop chars are the chars that mark the end of an argument.
- - No argument except B and BB may be longer than 80 characters !
- - Arguments that have to be displayed as text must not be longer than 79
- characters, while arguments that will be listed as choices have a limit of
- 77 characters. When dealing with pure ASCII files that are to be printed
- via printfile, you should use my WordWrap utility. This small tool should
- be on this disk, too. But Fred Fish will probably have killed it.
- - The arguments may not be complex in any way, they are not parsed. Haktar
- reads them as they are and does not do much thinking.
- - When using some of the commands, it is neccessary to tell Haktar about the
- name of a room. You may type simply type the name of a room that you have
- created or INV or ACTROOM.
- -You may use the name INV instead of a real room name to refer to the hero's
- hands and pockets. This means the things that the hero is carrying.
- Instead of INV, you may also use an empty argument, but this is unclean.
- -You may refer to the room the hero is in by ACTROOM, or in an unclean way
- by ¡.
- - Leading spaces in all arguments except strings are deleted.
- - All spaces at the end of anything will be killed, too.
- - Words are not used yet, but maybe I will need them later. In this version
- are implemented for internal use only.
- - Blocks are very special arguments, they consist of some (or none) additional
- Haktar commands. Simple blocks must be enclosed by [ and ]. Double blocks
- have to start with [. The second block has to start with | and ends with ].
- These double blocks are used in if-statements, where the first block
- expresses the TRUE (or positive) block and the second block contains the
- FALSE (or negative) block. The TRUE block will be executed if the
- if-statement is true. In all other cases the FALSE block will be executed.
- It works something like IF THEN ELSE.
- - If a double block is needed, you have to give BOTH blocks. Each of them may
- be empty to express that you do not want anything to be executed here.
- This is also true for simple blocks.
- So you will have to use the [] or [|] characters to avoid ugly results.
- - To build an or-constructions with if commands, you may write several ifs in
- one line, seperated by commas. You may then use only one double block for
- all if-commands of that line. This will be executed if any of the previous
- ifs was true.
-
- ATTENTION, your attention please !
- You may not, never and not at all use characters like [ or ] or |
- in any other place or sense than as blocking parantheses.
- In other words : Do not place []| in rems, prints, names, vars,
- flags, doscalls, filenames, etc.
- But you must use them after EACH and EVERY do, choose, thing or
- if !
-
- The following descriptions consist of the command name and the format of
- its arguments : First there is a character to express the argument type.
- This is followed by something like <flag>. This has to be replaced by the
- real argument. The type and the <> chars do not belong to the argument.
- All commands may be written in any way : BIG, small or SOmeWAy.
- There may come a time when you do not want the full name of a room or item
- to be displayed. You can hide parts of these names by placing a § at the start
- and a the end of the part that is to be hidden. This is usefull when dealing
- with mazes or other things that look the same, but work differently.
- In the tradition of the C-64 Basic, you can use abbreviations for most of the
- commands. The ? is quite cute and some of the others may proove usefull in
- extreme circumstances. Somewhere below, there is a list of them.
-
- do N<action> B<block of commands>
- Several of these commands should be in every room/item-file.
- When the user selects the room/item, all do-commands in this file will be
- read and the <action> strings will be displayed in the list. The user chooses
- one of them and its <block of commands> will be executed.
- This is the heart and core of Haktar, you can do without it, but not well.
- Do not place normal commands outside a do-command and do not place a do-
- command into another do-command.
-
- items N<item> N<item> ....
- Haktar needs a list of all the items lying in each room (How could he know ?).
- Place one of these commands in every room and list the items that are in it.
- For reasons of style you can use several items-commands in one file.
- Do not hide items-commands in if-statements. When the first reference to a
- room occurs, Haktar will read its file and remembers the items listed. It will
- never again look at the items-commands of that file. If you want to add items
- to a room, then the create-command is the only legal way.
-
- move N<item> N<source> N<destination>
- Moves the <item> from room <source> to the room <destination>.
- If the item cannot be found in <source>, it will be created in <destination>.
- The move-command works like :
- gone <item> <source>
- create <item> destination>
-
- create N<item> N<room>
- Creates the <item> in the <room> out of thin air. You may create more than one
- item of a type (=name), but this will lead to some troubles when using the
- handle-command.
- Be sure that the create-commands are at the right spot. A friend of mine had
- some ugly results when putting the creates into the wrong if-statement.
- Note that this version of Haktar puts new items at the beginning of the lists.
- This is good, because the user will see these changes first. But it could
- mess up the order in your lists.
-
- gone N<item> N<room>
- The <item> in the <room> will be deleted/killed/get lost/annihilated/
- destroyed forever. (You can create it again).
- If you do not know where the item is, you may use the INVACT room name. Haktar
- will try to kill the item in the inventory list and, if it was not there, in
- the current room.
-
- choose N<action> B<block of commands>
- This command works like the do-command. While do-commands may not be placed
- within other do-commands, this command may ONLY be placed there.
- If you use choose, you will also have to place a startchoose at the start of
- a group of choose-commands, and an endchoose at its end.
- You may place a choose-block inside another's <block of commands>. There is
- a limit of 10 choose-commands inside each other.
- Do not use several choose-blocks AFTER each other.
-
- startchoose
- Marks the start of a group of choose-commands.
-
- endchoose
- Marks the end of a group of choose-commands.
-
- setflag N<flag>
- The <flag> will be set.
-
- delflag N<flag>
- The <flag> is deleted.
-
- setvar N<var> I<value>
- The Variable <var> will be created and set to the <value>. <value> is a simple
- CONSTANT.
- Variables can only hold integer values. Negative values are allowed.
- Variables use more memory than flags and cannot be deleted.
- So please use flags where it is possible.
-
- addvar N<var> I<value>
- The <value> is added to the Variable <var>. If the variable was not set upto
- now (it has no value), it will be set to <value>.
- To decrease <var>, you may use negative <value>s.
-
- print S<text>
- Prints the <text> on the screen. Please use it as often as possible.
- Before the text is scrolled out of view by following lines, Haktar will call
- the wait-command.
-
- cprint S<text>
- Like print, but the text is centred.
-
- printvar N<intro> N<var> N<ending>
- This prints the value of a <var>iable between the texts <intro> and <ending>.
- You may not use commas in these texts.
-
- wait
- This command waits for the user to click on the text-window.
- It can be used to split the output into sane passages, preventing Haktar from
- doing it himself (and, boy, is he cruel !).
-
- noautowait
- Switch off all automatic waits. This will work like clicking on the Cancel
- gadget, except that wait-commands will still do their duty.
-
- locoff
- Normally the current location of the hero is displayed in the text window
- AND the title bar. If you use simpleface, the graphics in the title bar will
- be deleted every move. To prevent this, you can switch off the display in
- the title bar.
- BUGS: locoff does not prevent the destruction of the title bar when
- reactivating the window. I hope that I can change that later.
-
- locon
- From now on the current location will be displayed in the title bar again.
-
- getphrase S<get text>
- If you want to make life easier by using the handle-command (see below),
- you must use this and the following two commands before (best in the head-
- file). This one lets you give a text that will be used in the list of
- choices for the user. Please refer to the handle-command.
- Here and in the following two commands, the use of a § expresses that you
- want Haktar to replace the char by the name of the item the handle is in.
-
- dropphrase S<drop text>
- This command defines the text that is used to express the possibility of
- dropping an item.
-
- cantgetphrase S<too heavy text>
- An item may be too heavy to be taken by the hero. In this case the
- <too heavy text> is printed.
-
- handle I<weight>
- This is one of my personal goodies.
- It solves the get/drop problem.
- It works like a do-command. When Haktar finds this command, it adds the
- getphrase or dropphrase string, depending on if the hero already holds the
- item or not, to the list of do-choices. If the user selects it, the item
- in which the handle-command is used is taken or dropped and the <weight>
- of the item is added or substracted to/from the weight the hero carries.
- Handle is working like a block of other commands, and you may think of
- it as being replaced by these commands :
- ifitemin stone,INV
- [
- do drop stone
- [
- move stone,INV,ACTROOM
- addweight -10
- ]
- |
- do get stone
- [
- ifweight 10
- [
- print Too heavy !
- |
- move stone,ACTROOM,INV
- addweight 10
- ]
- ]
- ]
- These lines could be replaced by 'handle 10'. Short, eh ?
- It will only work exactly like this if the following conditions are true:
- - The handle is included in the file 'stone'.
- - You gave the following commands somewhere before :
- getphrase get §
- dropphrase drop §
- cantdropphrase Too heavy !
-
- headpath N<path>
- Haktar needs to know where all the rooms and items of your adventure are.
- You must tell him by using headpath.
- <path> is the directory where Haktar must search for the files.
- This command should be in your headfile !
- <path> must be written in normal CLI-path-format :
- Start with the disk's name and list the subdirectoriesin the right order
- to get to the directory where the files are.
- Examples :
- DF0:
- HaktarDisk:adventures
- HaktarDisk:adventures/MyRoom
-
- multi N<file> N<file> ....
- By using the thing-command, you can store more than one item in a single DOS
- file. But Haktar needs to know which files contain these thing-commands.
- Use multi in the head-file and list all these files behind it.
-
- thing N<name> B<commands>
- This command allows you to store several items or rooms in one file.
- Each item's block of <commands> is simply placed between the usual [] and put
- behind a thing-command. The <name> of the item or room is put directly behind
- the thing-command. After telling Haktar about it (multi), each thing-complex
- is treated exactly like a real single file with the <name>, consisting of the
- block of <commands>.
-
- maxweight I<weight>
- You can limit the weight the hero is able to carry by setting the maximum
- <weight> to carry with the maxweight-command. It depends on you if you
- think of the weight as pounds, kg, g, Martian Grav-Meter or Vogonian Standard
- Towel Weight. Or you can limit the number of items, that the hero can carry,
- by declaring the maximum number as maxweight and giving all items the weight
- of 1.
-
- addweight I<weight>
- Each time the hero takes an item, you may add its weight to the weight the
- hero carries by using addweight. The <weight> will be added to the carried
- weight. When an item is dropped, it is wise to use a negative <weight>.
-
- settime I<time>
- The game time is set to a constant value.
-
- addtime I<time>
- The <time> is added to the game time.
-
- go N<room>
- The hero is moved into the <room>.
- This is the only way to change his position.
- You must use this command in the head-file to set the starting room.
-
- input
- The user is to type a string. This string can be examined by an ifinput-
- command later.
-
- dead
- This is that lovely command that cuts the rope of the 10000tons weight
- hanging above the hero's head. Game Over !
-
- rem S<remark>
- This command will be overread. You can use it to place some comments or
- <remark>s in the listing.
-
- execute N<file>
- The Haktar-<file> will be executed like any normal file.
- Often there are groups of commands that are repeated several times in an
- adventure. You can place this repeating commands in a DOS file and let
- Haktar execute this file.
-
- doscall N<command>
- The <command> will be executed like a CLI-command. That command has to be
- in reach of DOS, that means in C: or the current directory.
-
- eachmove N<file>
- Sometimes you will want to check something each move, independent of the room
- the hero is in. This check-commands can be placed in a DOS file and the name
- of this <file> can be told Haktar by this command.
- There can be only one file set by eachmove at any given time.
- When the testing becomes useless, you can use an empty <file> name to forbid
- the execution.
- BUG: In this version the <file> must be a real, seperate file. It must NOT
- be part of a multi-file.
-
- showpic N<file> I<MaxTime>
- The IFF/ILBM-pic <file> will be shown. The computer then waits for a mouse
- click.
- To limit the time the user is able to see the picture, you can use <MaxTime>.
- Haktar will show the pic for <MaxTime> frames. One second equals 50 or 60
- frames, depending on your type of computer (PAL or NTSC).
- <MaxTime>=0 will show the pic forever, until the user clicks his mouse.
-
- showpicsub N<file> I<MaxTime>
- Same as showpic, but the picture will be displayed at the buttom of the
- screen and will remain there until it is changed by another call to
- showpicsub.
- Call showpicsub without parameters to delete any shown pic.
- Do not try to display pictures larger than 54 pixels.
- When called on NTSC, showpicsub will be handled as showpic.
-
- simpleface N<file>
- The ILBM-picture <file> will be used as grafic user interface.
- It must be 640 pixels wide and 200 pixels heigh.
- These are the coordinates of the gadgets (x,y,w,h):
- PropDown 5,76,11,9
- PropUp 5,12,11,9
- Prop 5,23,11,51
- ListGad 17,13,618,8 (there are nine of this type, with y increasing at a
- rate of 8 pixels)
- Standard 7,91,100,9 (there are six of this type, with x increasing at a
- rate of 105 pixels)
- TextGad 4,106,632,81
-
- font S<charset name>
- Use special font for all coming text output (lists and text window).
- Do not forget to add the .font extension where needed.
- The charset must be a standard Amiga-font in the FONT: directory. You may
- only use 8x8 fonts like Topaz 8. Do not use the proportional option.
- Create your fonts by editing the Topaz 8 with FED on your Extras disk.
-
- printfile N<file>
- The ASCII <file> will be printed. It is just like using lots of prints.
-
- sys S<code> ???
- There are some things that cannot be realized with the Haktar commands.
- These can be coded in C and put into the listing of Haktar.
- Please do not invent new commands, it is better to use sys.
- Put your routines at the right place, that is into the sys-command.
-
- storevars N<file> N<var>...
- Sometimes you may want to transfer Haktar-variables to another program
- (for example one called by execute). In this case you can use this command
- to write a number a selected <var>iables to a <file>. Normally this file
- should be placed into the ram-disc.
- The file created will consist of the following entries:
- 1. a long integer that stores the value
- 2. a return-terminated string that stores the variable
- 3. same as 1.
- 4. same as 2.
- ...
- Look at a file created by this command to see how it looks like.
-
- getvars N<file> N<var>...
- The variables that were stored in the file (via storevars) are read.
- The values on disc will be stored into the actual Haktar-variables.
- You may create the <file> yourself, but be sure that its format is correct.
- Use this command to respond to the results of files you called via execute.
-
- ifflag N<flag> BB<blocks>
- If the <flag> is set, then the first block is executed.
- If the <flag> is FALSE, then the second block is executed.
-
- ifvar N<var> I<low> I<high> BB<blocks>
- This is TRUE if the value of the variable <var> is larger than or equal to
- <low> and smaller or equal than <high>.
- Unset variables are given the value 0.
- If you give no <high> value, Haktar will only test if the variable is larger
- or equal. Please note : In this case you must place a <return> or · after
- <low> !!
-
- ifitemin N<item> N<room> BB<blocks>
- Is TRUE if the <item> is in the <room>.
- You may use the term INVACT as <room>-name to express that the exact location
- of the item does not matter. The command is TRUE if the item is in the hero's
- hands or in the room he is in. It all works like the INVACT of "gone".
-
- ifin N<room> BB<blocks>
- Is TRUE if the hero is in the <room>.
-
- ifweight I<weight> BB<blocks>
- Is TRUE if the hero is able to hold the additional <weight>.
-
- iftime I<low> I<high> BB<blocks>
- Is TRUE if the time is between <low> and <high>. (see also ifvar)
-
- ifinput N<string> BB<blocks>
- Is TRUE if the user answered the last input-command with the <string>.
- You may check the same input more than one time.
-
- ifchance I<percent> BB<blocks>
- Haktar will generate a random number between 1 and 100. ifchance is true if
- <percent> is smaller or equal than that number.
-
- Too quick, too much ?
- Read it again !
- One more time !
- You still don't get it ?
- Look at the example adventure (if it is on the disk).
-
- /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
-
- For all of you out there, who got lost in this list :
- All commands in a sorted list :
- Note: Type has the following meaning:
- 1 : Use only in the lowest level (not in a block).
- 2 : Use only in the highest level (a block without anymore choose or
- do commands enclosed).
- 3 : Use it where you like.
- 4 : Do not use in lowest or highest level.
- Haktar reads every file several times each turn. Be carefull to prevent
- sideeffects. For every time a list of choices is displayed to the user,
- Haktar reads the file one time and executes all commands on lesser
- levels than the one of the command that caused the displaying of the
- list. You may use type 2 commands in low levels, but be carefull!
- Haktar tries to execute every command no more than a single time per
- turn, but has problems with this. You may print a text before using
- choose, but Haktar gets crazy if you use print AND choose in another
- choose-block. In other words: Be carefull...
-
- command abbreviations type arguments
-
- addtime at 2 I<duration>
- addvar av 2 N<variable> I<value>
- addweight aw 2 I<weight>
- cantgetphrase cgp 2 S<too heavy text>
- choose c 4 S<action name> B
- cprint c? , ! 2 S<text>
- create c 2 N<item> N<room>
- dead d 2
- delflag df 2 N<flag>
- do 1 N<action name> B
- doscall dc 2 N<CLI-command>
- dropphrase dp 2 S<drop text>
- eachmove em 2 N<file>
- endchoose ec 4
- execute e 2 N<file>
- font fo 2 S<font name>
- getphrase gp 2 S<get text>
- getvars gv 2 N<file> N<var>...
- go 2 N<room>
- gone g , lost 2 N<item> N<room>
- handle h 1 I<weight>
- headpath hp 2 N<directory>
- ifchance ic 3 I<percent> BB
- ifflag if 3 N<flag> BB
- ifin ii 3 N<room> BB
- ifinput iinp 3 N<text> BB
- ifitemin iii 3 N<item> N<room> BB
- iftime it 3 I<lower limit> I<upper limit> BB
- ifvar iv 3 N<variable> I<lower limit> I<upper limit> BB
- ifweight iw 3 I<additional weight>
- input inp 2
- items i 1 N<item> NNNN...
- locoff loff 2
- locon lon 2
- maxweight mw 2 I<weight limit>
- move m 2 N<item> N<source room> N<destination room>
- multi mf 2 N<file> NNNN...
- noautowait naw 2
- print p , ? 2 S<text>
- printfile pf 2 N<text file>
- printvar pv , ?v 2 N<text> N<var> N<text>
- rem ; 3 S<comment>
- setflag sf 2 N<flag>
- settime st 2 I<Time>
- setvar sv 2 N<variable> I<Value>
- showpic sp 2 N<file>
- simpleface sif 2 N<file>
- startchoose sc 4
- storevars stv 2 N<file> N<var>...
- sys s 2 S<code>
- thing t 1
- wait w 2
-
- /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
-
- Examples :
- This is no adventure. It is not even a correct file. I only wanted to give
- some examples for the use of some commands. To get an impression of a whole
- adventure, look at the example.hhf adventure.
-
- items book,ball,pen
-
- do read book
- [
- addtime 10
- print boring...
- ]
-
- ifitemin book,INV
- [ rem if he has the book, he can drop it
- do drop book
- [
- move book,INV,ACTROOM rem move book from his hands/pockets into room
- ]
- |
- do take book rem if he has no book, he can take it
- [
- move book,ACTROOM,INV rem move book from room into pocket
- ]
- ]
-
- /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
-
- Advices :
- - You do not have to format your programs the way I did, but it looks nicer,
- doesn't it ?
- And H.C.F. does not always format his stuff precisely, and so there are
- many bugs in his adventures. You see that it is important to keep a
- certain structure to avoid errors with parantheses. Maybe I will teach
- haktar to reformat your adventures in a later version.
- - When dealing with if-statements, you MUST use all three seperators ([|]).
- If you want no positive commands use [|<negative>].
- If you want no negative commands use [<positive>|].
- - To reduce the necessary scrolling up and down, you should place the most
- needed actions and items at the top of the lists.
- - Since all possible actions are displayed to the user, you will have to hide
- the key-actions by giving lots of choices.
- - Often it is wise to really hide the do-command by using an if.
- This way the hero may walk through a room, not seeing that there is a
- hidden switch. Later he finds a drawing, showing that there is a switch.
- When he walks back into the room, the ifitemin drawing,INV is true and
- the do-commands you hid there become visible.
- - There are people who will execute EVERY do, just to get ALL information.
- That is not nice, so prevent this by using some dead-commands and by
- using lots of ifs to change the course of action according to the things
- the user did upto now.
- - Please give the user lots of informations by using lots of prints.
- - Haktar can be used to create adventures, but it was designed to create
- a reality. The aim is not to solve the adventure, but to explore the world
- and gather all informations. That does not mean that you can't write
- adventures with it. You can and you may, I just wanted to suggest...
- - If you have enough RAM or a harddisk, you should copy the adventure to it.
- Take care of the head-file :
- Change the headpath statement or use assign to make it work.
- - Be carefull with the doscall-command. Its parameters are passed to the
- Amiga-DOS without parsing. Please do not depend on any files you did not
- supply and do not depend on your files being in a certain directory. This
- is why you should use headpath and the DOS command assign.
- - To make swapping easier, you should place the headpath-command at the
- beginning of your headfile. If you need some assigns, please place the
- correct doscall-commands directly after the headpath-command.
-
- /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
-
- Excuses :
- Yes, I know that some of Haktar's characteristics are not well liked by all
- people. Here is a list of them and the reasons why I did it this way :
- - It is too complicated to make a whole file for each item. When making
- changes, you have to load and save a lot to update all files.
- I do not think so; most of the changes are made within one item.
- Changing that would change the whole concept of Hakter.
- And it would result in a chaotic structure of the adventures.
- Haktar would need extra memory and huge amounts of time.
- You would not be able to find a specific item at once.
- And there are the multi/thing commands for the hard core of that type.
- So : When you are done with your adventure, please kill the multi files
- (by calling HakCheck ... SPLIT).
- - I want to have a parser, the multiple-choice principle is stupid !
- Yes, I agree with you, but I don't think that there is a way to program
- a parser-orientated adventure interpreter.
- And some people actually like this way of doing it (Hi HCF !).
- - There is a small memory loss when calling simpleface!
- Yes, but that is my way of killing lamers: Cool freaks with 8MBytes do
- not notice such small losses, but all these A500-lamers will be killed
- by the 500 Bytes that dissapear.
- No, I just can't find that bug. If you can help me here, then do it!
-
- Features of later versions (I hope...) :
- - complex calculations, terms with variables
- - keep special files in memory (as a command)
- - IFF grafix even for selected gadgets
- - an ask-like IfTheUserSaysThatItIsOKThen command
- - some simple battle functions to implement aspects of role-playing (as RAT
- would express it) or hack'n'slay (that's my name for it) fights
-
- /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
-
- HakCheck :
- HakCheck is a little tool for Haktar.
- It reads an adventure and creates some lists :
- 1. Used rooms/items.
- You can read through this list to find unused rooms.
- 2. References to rooms or items that do not exist on disk.
- You have forgotten to create these files or you spelled them wrong.
- 3. Used flags.
- Check these to eleminate flags that you spelled wrong.
- 4. Used vars.
- Same as flags...
- 5. Bad var references.
- List of variables you used before initializing them.
- If you own a printer, it is very wise to print these lists to prevent
- several items to be given the same name or vice versa.
- It also displays the number of files and the average and total length.
- I am planning to check even more errors, mostly syntax errors, but that will
- have to wait.
- When HakCheck finds a syntax error, it will display the file and the line it
- is in. That service is very generously, and is not included in any other list,
- so look into your manual and learn to work with the search command.
-
- Starting HakCheck :
- Type 'HakCheck <headfile>' in the CLI.
- I don't think that I will include WBench start.
-
- HakCheck can also be used to make adventure files unreadable. You will still
- be able to play these, but the files will be coded.
- The CLI call for this feature looks like this :
- HakCheck <headfile> CODE <code>
- <code> is a 4 letter word.
- You can decode the adventure (if you know the code) again :
- HakCheck <headfile> DECODE <code>
-
- Adventures that consist of huge multi/thing files become very slow.
- You should split these into small files. This can be done with HakCheck :
- HakCheck <headfile> SPLIT
- Whenever HakCheck finds a thing command, it creates a new file with the name
- and contents of the thing command. After that you will have to delete all
- multi commands in the headfile. The files that contained the thing commands
- will be useless now, so you can delete them, too.
-
- When checking long adventures, the lists will get very long. To prevent all
- unimportant output (as lists and the what-are-you-doing-infos), use this :
- HakCheck <headfile> QUIET
-
- And do not mix the options in a single call !
-
- NOTE:
- HakCheck needs lots of stack for long and complex adventures. If a wise man
- from india appears while HakCheck is running, then the most likely reason
- is that your stack was too small. Please try again with a bigger stack.
- If you have any idea of how to prevent this, please inform me.
-
-
- Other tools for Haktar:
- =======================
- Yes, there tools for Haktar that have not been written by me.
- Of these I know the following:
- HakCrunch by Eric Hambuch transforms all Haktar-commands into shortcuts.
- HakFormat by Eric Hambuch formats the structure of adventures.
-
- /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
-
- Bugs :
- HakCheck seems to have problems with counting the lines, so do not rely on
- the number it prints. Check the previous and next line, too.
- I do not know why, but I just found out that HakCheck has problems with
- spaces after commands.
- And Haktar does not like to be started from the WorkBench directly, so I
- still have to use IconX, but it already reads the wbargs. If you know why
- Haktar goes bananas when being clicked (You can't even click the adventures
- directly !), PLEASE write to me !
- I have tested my ShowPic with every ILBM file I found on my discs. And this
- is the result : It is perfect, BUT :
- DPaint III seems to ignore some rules. It does not set the HBRIGHT flag in
- the CAMG chunk. And the brushes are different (unshowable), too.
- I just tested Haktar on memory losses. Result : OK. But somehow I gained some
- bytes by calling it. That is not too bad...
- Remember to set the stack correctly. HakCheck is rather complex and will
- need lots of stack when checking large adventures.
-
- /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
-
- Your Rights, My Rights :
- - You may write adventures with Haktar and you have all rights on the text
- files you wrote, but I beg you to declare your adventures as PD.
- - It would be nice of you to send your good adventures to me, I will try to
- send back the disk with some new adventures on it. If you do this, please
- include a note if I may spread the adventure on PD.
- - When spreading your own adventures, please note that Haktar may not be
- sold on any other discs except the series that is mentioned when starting
- Haktar.
-
- /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
-
- Thanx'n'Greetungs'n'da whole stuff :
- - Guido Wegener : Thanks for being me. He/I wrote the whole thing.
- - Hans Christian Freankel : Thanks for testing, Powerplays and lots of
- Game Boy matches (lots of them are still to come).
- - Eric Hambuch : Thanx for bug reports, tools, tips & ideas!
- - André Wichmann : Thanks for testing/ideas and your fast text tool.
- Special thanks for trying to deliver your FileSelect.
- - Robert Heselmann : Thanks for testing/writing and the cheap Game Boy.
- - Martin Rosenkranz : No thanx for not testing and not writing. And what
- does "I won't use >YOUR< (fucking) language !" mean ? You want to get old
- with that attitude ? Grow up, Cogan.
- - Commodore : Thanks for AMIGA 500, 1MB, A590, 1084S
- - SWF3 : cool radio broadcasts (I could think of better ones, but...)
- - Addison Wesley : Thanks for the Manuals, they made it all possible.
- - Manx : Aztec C 5.0 is GREAT !
- - School, sickness, relations, drinks, glass, games, TV :
- Thanks for disturbing my programming-sessions.
- - Kronsteiner, Schrader : That's what I need. The softest soft-drinks !
- - Lovecraft : inspiration
- - E.A.Poe : relaxation
- - Competition Pro : For real fun with real games.
- I tuned my transparent stick by replacing the metal stick by one of my old
- knobs. Now it works like hell and it has a rugh knob !
- - Benji (my dog) : Thanks for fresh air and keeping me up all night.
- (That's over since the little operation. =ß-)
- - Lutz Grandrath, Philipp Witkop : Hi ! (friendly... °º°)
- - Martin Mohr : Hi, thanx for not killing Tower of Babel !
- - Martin Baumann : Phone me !
- - All the ST-idiots around : You will not be able to read this !
- - Nintendo : A big THANK YOU for the Game Boy !
- - The Acient City Healthy Ball Factory of Baoding : Qigong balls for
- compiling time...
- - Edward Bulwer-Lytton : "Zanoni" is good.
-
- /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
-
- Send errors, corrections, supporting ideas, criticism, enthusiastic fan-
- letters and money to the author: Guido Wegener
- Eisenacher Str. 2
- 5300 Bonn 1
- West Germany
-
-