Map editor: Switches

This post explains how to set up switch effects in the map editor. (See the previous post for more details on the map editor.)

First of all, open up a segment containing some switches (e.g. A01.4) and take a look at the switches list (at the right-hand side of the editor window). Each switch is listed in the format “(x,y) [Effect]”, where (x,y) are the map coordinates of the switch and Effect is the effect itself (explained below). The coordinates start at the top left square (which is (0,0)) with x increasing to the right, and y increasing downwards.

Note that switch effects can be placed either on actual switches (in which case the effect is triggered when the switch is flipped up or down) or on floor tiles (in which case the effect is triggered when someone steps on the tile). Both are referred to as “switch effects” (or just “switches”) in the map editor.

The Effect can be one (or more) of the following:

Shoot(x, y, “direction”, item)

e.g. Shoot(0, -5, “north”, i_bolt_trap)

Used to set up bolt traps.

  • x, y are relative coordinates of the point where the bolt should shoot out from. This usually points to a skull or wall tile. For example, Shoot(0, -5, …) means the bolt should start from a skull/wall square which is 5 squares to the south of the switch square. Shoot(-2, 3, …) means the starting square is 2 squares to the left of, and 3 squares above, the switch square. And so on.
  • The “direction” can be “north”, “south”, “east” or “west” and indicates the direction the bolt will travel in.
  • The “item” is always i_bolt_trap currently.

Activate(x,y)  /  Open(x,y)  /  Close(x,y)

e.g. Open(-2, 4)

Used to open/close doors etc. “Open” opens a door/pit/etc (or does nothing if it is already open), “Close” is the opposite, and “Activate” toggles a tile between open and closed.

  • (x,y) give the relative coordinates of the tile to be activated, opened or closed. For example Close(1,2) closes a door one square to the right and two squares below the switch tile.
  • The following tiles can be opened/closed/activated:
    • doors (both wooden and iron)
    • portcullises
    • chests
    • pits (NB there are three open pit tiles, and three closed pit tiles — note that the “wooden floor” tile is actually one of the closed pit tiles).
    • pillars/crystal balls (“opening” a pillar turns it into a crystal ball, and “closing” turns it back into a pillar)
    • pentagrams (“closing” a pentagram turns it into a dead pentagram that doesn’t do anything when stepped on, and “opening” it makes it active again).

TeleportTo(x,y)

e.g. TeleportTo(-1, 2)

This teleports the knight. Once again the (x,y) coordinates are relative, so the above example teleports the knight one square to the left and two down.

In addition, sound effects can be included, as follows:

  • snd_click — A general clicking sound, used when a knight steps on a “pressure pad”.
  • snd_crossbow — The sound of a bolt firing. Usually used together with “Shoot”.
  • snd_door — The sound of a door opening/closing.
  • snd_pentagram — The sound of a pentagram being used.
  • snd_teleport — The sound of a knight being teleported. Usually used with TeleportTo.

Multiple effects can be combined, by enclosing the whole list in square brackets, and separating them by commas. For example, [Shoot(-3, 0, “east”, i_bolt_trap), snd_crossbow] would fire a bolt towards the knight and also play a crossbow sound, while [Open(-2,0), Open(3,2), Close(2,1)] would open and close several doors at the same time.

In a future version I might integrate the sound effects into the switch actions (so that “Shoot” always plays a sound as well as shooting a bolt) but for now you have to add any sound effects required as part of the switch definition.

To actually edit the switches you need to click the “Switches” button at the bottom (just below the main map area). Any existing switches will be highlighted on the map in red. To place a new switch, or edit an existing one, double click it and then type the switch effect you want. Note that you only type the part in square brackets, not the (x,y) coordinates. (So for example if a switch is listed in the switch list as (2,3) [Open(1,2)], you would enter this by double clicking on the square (2,3), and typing [Open(1,2)] into the dialog box.)

Switches can also be deleted by right-clicking them.

Don’t forget to test out your switches using the Test feature (Segment menu).

If you want to see examples of switches being used, have a look at the gnome book rooms (Z01.3 to Z09.3).

Finally, if you have questions, feel free to post them below, or ask on the Knights forum.

Happy editing 🙂

Knights 014 and Map Editor 001 released

The first beta release of the map editor is now available. Download from here: knights_map_editor_001.zip. This is a Windows only release currently. There are also not any proper instructions yet, but this blog post (and the previous one) will give you the basics of how to use the editor.

There is also a new release of Knights. You will need to install this before you can use the map editor, as the older versions of Knights are not compatible with the editor.

To use the editor, first download and unzip it. Then run knights_editor.exe.

Before you can start using the editor properly, you have to tell it where Knights is installed. To do this go to File -> Settings and fill in the “knights_data directory” and “Knights exe location” fields. These will usually be set to “C:\Program Files\Knights\knights_data” and “C:\Program Files\Knights\Knights.exe”, unless you have installed Knights to a different location. The program saves these settings so you only have to do this once.

You are now ready to start editing. To load the standard Knights rooms file, go to File -> Open and open the file “knights_rooms.txt” in your knights_data directory. (It is a good idea to make a backup copy of this file first, in case you break anything.) The standard Knights dungeon “segments” will appear on the left hand side of the window. Double click any one to open it for editing.

To place tiles you can click one of the tiles at the bottom of the window and then use the mouse to “paint” this tile onto the map area. You can use either the left or right mouse button to paint (i.e. you can have two different tiles selected at once, one on the left and one on the right button). You can also ctrl-click any tile on the map to select that tile (this may be faster than going down to the palette at the bottom all the time).

In the tile palette you will notice certain tiles have letters attached. The “P” indicates a “live” pentagram (the other pentagram tile without a “P” represents a “dead” pentagram that has no effect when stepped on). The “G” and “N” represent the gnome book and the Necronomicon respectively. “S” indicates the special pentagram, used for destroy book with wand quests (as opposed to a normal pentagram). “L” indicates doors which are “permanently locked” and can only be opened by means of a switch.

By clicking “Switches” you can cause actions to be triggered when a knight walks onto a certain tile or presses a switch. Double click the map to place a switch, or right-click to remove an existing switch. The switch actions have to be entered using a special scripting language which will be the subject of a future blog post.

By clicking “Rooms” you can set the locations of the individual map rooms which make up the segment, or view the existing rooms. Note that the actual dungeon rooms extend one square further in all directions than what is visible in the map editor (so that the rooms overlap by one square in the game itself). To place rooms, drag out a rectangle while holding the left mouse button. The right mouse button is used to delete existing rooms. Note that all rooms must be set properly before the segment can be used — if this is not done properly, the game is likely to crash.

On the File menu you have the usual New, Open, Save options. I recommend saving your work regularly since this is still beta quality software and it could crash at any time 🙂

The map editor has Undo and Redo features, available on the Edit menu (or by pressing Ctrl+Z or Ctrl+Y).

On the Segment menu you can add and delete segments to/from the current file. Each segment can be given a name (by editing the box on the right-hand side of the main window); this is not used in the game but is useful for keeping track of segments in the map editor. The segment “category” can also be set; this should be left blank for most segments, but can be set to “gnome_room”, “liche_tomb”, “guarded_exit” or “special_pentagram” for the special mission types. (See the segments at the bottom of the standard knights_rooms.txt file — the ones with names beginning “Z” — for examples of these.)

Last, but not least, there is also a feature where you can test your creations in the actual game. To do this, double click the segment you want to test, then go to Segment -> Test. Assuming you set your Knights exe location correctly, this will start a copy of Knights and put you into your chosen segment. After you’ve finished testing you can either close the Knights window or press ESC – Q to quit in the usual way.

If anyone does give this a try, please send me feedback – both as to any bugs you may find (I’m sure there are plenty) and also any suggested new features or improvements. Also, if anyone wants to send me dungeon rooms they have made, then I would be happy to put them into a future version of Knights!