*** Important ***: The new map syntax uses key=value pairs separated by semicolons. This format provides more flexibility and readability. Keep in mind the game has backwards compatibility support for the legacy syntax, so you don't need to immediately convert existing maps.

New Map Syntax Glossary
This glossary demonstrates the new key=value; syntax introduced in version 0.6. Unlike the legacy space-separated format, the new syntax uses parameter names followed by equals signs and values, with semicolons separating each parameter.

Key Features of the New Syntax:
- Parameters use the format: parameter=value;
- Parameters can be arranged in any order you prefer
- Support for quoted strings with spaces: text="Hello World";
- Flexible boolean parsing: automatic=yes; vanishing=1; passworded=on;
- Better error handling and validation
- Default values are automatically applied for optional parameters

Basic Format:
element_type parameter1=value1; parameter2=value2; parameter3=value3;

Example Comparison:
Legacy: platform 0 50 0 50 0 0 grass
New: platform minx=0; maxx=50; miny=0; maxy=50; minz=0; maxz=0; type=grass;

Coordinate System (same as legacy):
- minx = leftmost x coordinate
- maxx = rightmost x coordinate  
- miny = bottom y coordinate
- maxy = top y coordinate
- minz = minimum height (use 0 for 2D maps)
- maxz = maximum height (use 0 for 2D maps)

For 2D maps, use the y parameters as your y coordinates and set minz=0; maxz=0;

Definitions sorted by element type:

Platform
A standard surface like grass or cement.
platform minx=value; maxx=value; miny=value; maxy=value; minz=value; maxz=value; type=platform_type; flag="optional_display_name";
platform minx=0; maxx=50; miny=0; maxy=50; minz=0; maxz=0; type=grass;
The optional flag parameter gives the platform a custom display name. When set, the flag is shown instead of the surface type. Useful when you want a tile to sound like one thing but appear as something else. The surface type and all collision or sound behaviour remain entirely unchanged.
platform minx=5; maxx=15; miny=5; maxy=15; minz=0; maxz=0; type=ash; flag="doormat";

Wall
A wall which prevents movement, perfect for tables, ledges, buildings.
wall minx=value; maxx=value; miny=value; maxy=value; minz=value; maxz=value; type=wall_type;
wall minx=0; maxx=0; miny=0; maxy=0; minz=0; maxz=10; type=wallwood;

Double Wall
A wall that plays a different sound depending on which side the player approaches from. Useful for buildings where the outside sounds like brick but the inside sounds like plaster.
The axis parameter tells the engine which direction players approach from: x means east/west, y means north/south, z means up/down.
material1 is heard when approaching from the positive direction (moving east, north, or up). material2 is heard from the negative direction (moving west, south, or down).
For a rectangular building, all four exterior walls can use the same material1/material2 ordering.
double_wall minx=value; maxx=value; miny=value; maxy=value; minz=value; maxz=value; axis=x_or_y_or_z; material1=surface_name; material2=surface_name;
double_wall minx=0; maxx=0; miny=0; maxy=50; minz=0; maxz=5; axis=x; material1=brick; material2=plaster;

Floor
Indicates floor levels in multi-story maps. Required for elevators.
floor minx=value; maxx=value; miny=value; maxy=value; minz=value; maxz=value; label="optional_text";
floor minx=0; maxx=50; miny=0; maxy=50; minz=0; maxz=25;
floor minx=0; maxx=50; miny=0; maxy=50; minz=26; maxz=50;

Blockage
A wall that speaks text when bumped into or when within its boundaries.
blockage minx=value; maxx=value; miny=value; maxy=value; minz=value; maxz=value; text="message";
blockage minx=0; maxx=50; miny=0; maxy=50; minz=0; maxz=50; text="You can't go here!";

Source
A typical sound source like birds, water, room tones.
source minx=value; maxx=value; miny=value; maxy=value; minz=value; maxz=value; path=filename; volume=value; pitch=value;
source minx=0; maxx=50; miny=0; maxy=50; minz=0; maxz=50; path=birds.ogg; volume=75; pitch=100;

Volume (on sources, timed sources, ambiences, excludable sources, lifts) runs 0-100: 100 is full, 50 is half, 0 is silent. Leave it out and it defaults to 100 (full). Negative values are read as decibels instead (-5 = -5 dB, -20 = -20 dB) for fine or quiet control, which also keeps older maps working.

Timed Source
A source that plays at specified intervals (in milliseconds).
timed_source minx=value; maxx=value; miny=value; maxy=value; minz=value; maxz=value; path=filename; interval=milliseconds; volume=value; pitch=value;
timed_source minx=0; maxx=50; miny=0; maxy=50; minz=0; maxz=50; path=wallwood9.ogg; interval=10000; volume=75; pitch=100;

Ambience
Sounds that only play when you're within the boundaries.
ambience minx=value; maxx=value; miny=value; maxy=value; minz=value; maxz=value; path=filename; volume=value; pitch=value;
ambience minx=0; maxx=50; miny=0; maxy=50; minz=0; maxz=50; path=birds.ogg; volume=75; pitch=100;

Excludable Source
Sources that can be silenced in specific areas using excludable zones. Optional fade=value
(milliseconds, default 0) crossfades in/out across the exclusion zone boundary instead of
cutting instantly -- e.g. street ambience drifting away as you step into a store.
xsource minx=value; maxx=value; miny=value; maxy=value; minz=value; maxz=value; id=reference_name; path=filename; volume=value; pitch=value; fade=value;
xsource minx=0; maxx=30; miny=0; maxy=30; minz=0; maxz=30; id=Outside; path=birds1.ogg;
xsource minx=0; maxx=30; miny=0; maxy=30; minz=0; maxz=30; id=Outside; path=birds1.ogg; volume=75; pitch=100; fade=1500;

Excludable Zone
Silences an excludable source in specified boundaries.
x_zone id=reference_name; minx=value; maxx=value; miny=value; maxy=value; minz=value; maxz=value;
x_zone id=Outside; minx=10; maxx=20; miny=10; maxy=20; minz=0; maxz=10;

Speaker
Stereo speaker system with left and right channels.
speaker start_x=left_x; start_y=left_y; start_z=left_z; end_x=right_x; end_y=right_y; end_z=right_z; path=filename; volume=value;
speaker start_x=0; start_y=0; start_z=0; end_x=10; end_y=0; end_z=0; path=music1.ogg; volume=-5;

Music
Background music for the entire map.
music path=filename; pitch=value;
music path=music5.ogg; pitch=100;

URL/Stream
Plays radio streams or audio from URLs.
stream address=url;
stream address=http://myurl.com/myurl.mp3;

Sign
Interactive sign that displays text when Enter is pressed.
sign x=value; y=value; z=value; text="message";
sign x=0; y=0; z=0; text="Hi, welcome to Golden Crayon.";

Text Square
Sign without sound effect.
txt x=value; y=value; z=value; text="message";
txt x=0; y=0; z=0; text="Hi, welcome to Golden Crayon.";

Interactables
Refer to interactables.txt for full documentation on interactables and their commands.

Dialog
Story elements with multiple text snippets separated by --.
dlg x=value; y=value; z=value; text="line1--line2--line3--line4";
dlg x=0; y=0; z=0; text="Hi--I'm a dialog--Each time you press Enter--You will hear these four lines.";

Zone
Defines location names for areas. Add track=true (or @track@ at the end of the text) to make it trackable in the Locations menu.
Add beacon=true to make it a silent beacon: the zone is still named and tracked, but walking into it is never announced. beacon only takes effect when the zone is also trackable (track=true). @beacon@ in the text is an equivalent inline marker.
zone minx=value; maxx=value; miny=value; maxy=value; minz=value; maxz=value; text="location_name"; track=boolean; beacon=boolean;
zone minx=0; maxx=50; miny=0; maxy=50; minz=0; maxz=50; text="A test map";
zone minx=10; maxx=10; miny=10; maxy=10; minz=0; maxz=50; text="A tall tree @track@";
zone minx=5; maxx=8; miny=5; maxy=8; minz=0; maxz=5; text="Hidden cache"; track=true; beacon=true;

Chat Zone
Enables voice chat in specified area.
chat_zone minx=value; maxx=value; miny=value; maxy=value; minz=value; maxz=value;
chat_zone minx=0; maxx=10; miny=0; maxy=10; minz=0; maxz=10;

Death Message
Custom death messages for specific areas.
Constants: %name (player name), %zone (current location), %map (map name), %x %y %z (coordinates)
dmg minx=value; maxx=value; miny=value; maxy=value; minz=value; maxz=value; text="custom_message";
dmg minx=0; maxx=50; miny=0; maxy=50; minz=0; maxz=50; text="Wow, good job %name. You died at %zone!";

Spawn Location
Defines where players spawn on the map.
spawnloc minx=value; maxx=value; miny=value; maxy=value; minz=value; maxz=value;
spawnloc minx=15; maxx=30; miny=15; maxy=30; minz=0; maxz=0;
spawnloc minx=15; maxx=15; miny=20; maxy=20; minz=0; maxz=0;

Hook Controller
Limits grappling hook range in specific areas.
hkc minx=value; maxx=value; miny=value; maxy=value; minz=value; maxz=value; min=hook_down; max=hook_up;
hkc minx=0; maxx=50; miny=0; maxy=50; minz=0; maxz=50; min=10; max=0;

Clock
Displays system time when activated. Use twelve_hour=true for 12-hour format, twelve_hour=false for 24-hour.
The text may contain substitution tokens that are replaced with live values when the clock is read:
  %time   - the full reading in the clock's chosen format (e.g. "14:07:32" or "2:07:32 PM")
  %hour   - the hour, in the clock's 12/24-hour mode
  %minute - the minute, zero-padded
  %second - the second, zero-padded
  %ampm   - "AM" or "PM"
If the text contains no token, the time is appended to it. If the text is empty, only the time is spoken.
clock x=value; y=value; z=value; twelve_hour=boolean; text="prefix_text_or_template";
clock x=0; y=0; z=0; twelve_hour=false; text="On the clock, %time is displayed.";

Calendar
Displays system date when activated. The text may contain substitution tokens that are replaced with live values:
  %date      - default reading, "Month Day, Year" (e.g. "January 15, 2025")
  %date1     - "Month Day, Year" (kept for older maps)
  %date2     - "Weekday, Month Day, Year" (kept for older maps)
  %weekday   - weekday name (e.g. "Wednesday")
  %monthname - month name (e.g. "January")
  %month     - month number
  %day       - day of the month
  %year      - year
Component tokens can be combined into any layout, e.g. text="%day %monthname %year" reads "15 January 2025".
If the text contains no token, the date is appended to it. If the text is empty, only the date is spoken.
calendar x=value; y=value; z=value; text="prefix_text_or_template";
calendar x=0; y=0; z=0; text="Today is %weekday, %monthname %day.";

Door
Teleports users between coordinates. Use automatic=true for automatic doors, automatic=false for manual.
door start_x=value; start_y=value; start_z=value; end_x=value; end_y=value; end_z=value; speed=milliseconds; move=sound_file; loop=sound_file; open=sound_file; close=sound_file; automatic=boolean; password="optional_password";
door start_x=0; start_y=0; start_z=0; end_x=50; end_y=50; end_z=0; speed=500; move=.ogg; loop=.ogg; open=door1open.ogg; close=door1close.ogg; automatic=false;

Gate (North-South)
Large door that manipulates y and z coordinates while keeping x intact.
gate minx=value; maxx=value; miny=value; maxy=value; minz=value; maxz=value; end_x_y=end_y; end_z=value; speed=milliseconds; move=sound_file; loop=sound_file; open=sound_file; close=sound_file; automatic=boolean; password="optional_password";
gate minx=0; maxx=10; miny=10; maxy=10; minz=0; maxz=6; end_x_y=15; end_z=0; speed=500; move=.ogg; loop=.ogg; open=door1open.ogg; close=door1close.ogg; automatic=false;

Gate2 (East-West)
Large door that manipulates x and z coordinates while keeping y intact.
gate2 minx=value; maxx=value; miny=value; maxy=value; minz=value; maxz=value; end_x_y=end_x; end_z=value; speed=milliseconds; move=sound_file; loop=sound_file; open=sound_file; close=sound_file; automatic=boolean; password="optional_password";
gate2 minx=30; maxx=30; miny=0; maxy=60; minz=0; maxz=6; end_x_y=35; end_z=0; speed=500; move=.ogg; loop=.ogg; open=door1open.ogg; close=door1close.ogg; automatic=false;

Passage
A corridor that acts as a wall tile when closed and a surface tile when open. Players trigger it by pressing Enter from one tile outside either end face. The direction parameter controls which axis the openings face: east or west for x-axis ends, north or south for y-axis ends, up or down for z-axis ends. The wall prefix is added automatically if missing, so wall=stone and wall=wallstone are equivalent. Use server_bound=true with an id to keep all players in sync.
passage minx=value; maxx=value; miny=value; maxy=value; minz=value; maxz=value; wall=tile_type; surface=tile_type; direction=direction; open_time=milliseconds; close_time=milliseconds; loop=sound_file; move=sound_file; open=sound_file; close=sound_file; id=name; password="optional_password"; server_bound=boolean; opened=boolean; locked=boolean;
passage minx=5; maxx=10; miny=0; maxy=5; minz=0; maxz=0; wall=stone; surface=stone; direction=east; open_time=500; close_time=500; open=door1open.ogg; close=door1close.ogg;

Lift
Creates a moving platform that automatically moves between minimum and maximum Z coordinates.
The platform moves up and down automatically, with a wait period at each end.
Supports loop, start, and end sounds for enhanced audio experience.
Start position can be "top", "bottom", or "random" (default).
lift minx=value; maxx=value; miny=value; maxy=value; minz=value; maxz=value; speed=milliseconds; surface=platform_type; sound=sound_file; volume=value; pitch=value; start_sound=sound_file; end_sound=sound_file; start_position=position;
lift minx=15; maxx=17; miny=15; maxy=17; minz=1; maxz=10; speed=500; surface=platform; sound=lift.ogg; volume=100; pitch=100; start_sound=liftstart.ogg; end_sound=liftend.ogg; start_position=top;

Elevator
Floor navigation system. Requires floors to be defined on the map.
Use announcement_type: 0=screen reader, 1=custom sound, 2=SAPI
elevator minx=value; maxx=value; miny=value; maxy=value; minz=value; maxz=value; speed=value; loop=sound_file; move=sound_file; open=sound_file; close=sound_file; announcement_type=number; announcement_sound=sound_file; use_music=boolean; text="intro_message";
elevator minx=30; maxx=40; miny=30; maxy=40; minz=0; maxz=20; speed=200; loop=elevatorloop4.ogg; move=elevatorloop1.ogg; open=elevator1open.ogg; close=elevator1close.ogg; announcement_type=1; announcement_sound=elevatorbeep5.ogg; use_music=true; text="Welcome to my elevator. This is floor %f. Where would you like to go?";

Belt (Conveyor Belt)
Continuously moves players in a specified direction while allowing free movement.
Supports 8 cardinal directions in 3D maps and 4 directions in 2D maps.
Direction compatibility: 3D directions work in 2D (mapped to closest equivalent), and vice versa.
The optional loop sound plays continuously across the belt's area. Use loop=sound_file (the same key doors, gates, and lifts use); loop_sound=sound_file is also accepted. Belt sounds live in foley/srcs, so a bare name like fan.ogg resolves to foley/srcs/fan.ogg.
belt minx=value; maxx=value; miny=value; maxy=value; minz=value; maxz=value; direction=direction_name; speed=milliseconds; loop=sound_file;
3D directions: north, northeast, east, southeast, south, southwest, west, northwest
2D directions: up, down, left, right (or use 3D equivalents)
belt minx=10; maxx=20; miny=5; maxy=15; minz=0; maxz=0; direction=northeast; speed=200; loop=conveyor.ogg;
belt minx=0; maxx=10; miny=0; maxy=5; minz=0; maxz=0; direction=right; speed=150;

Slant
Creates a slope that adjusts player elevation as they walk through it.
The slant is a region where each step in the specified direction raises or lowers the player by step_height.
Direction format: direction_up or direction_down (e.g., east_up, right_down, north_up).
3D directions: north, south, east, west, northeast, northwest, southeast, southwest (with _up or _down).
2D directions: left, right (with _up or _down).
Step height controls how many units the player rises or falls per step (default: 1).
slant minx=value; maxx=value; miny=value; maxy=value; minz=value; maxz=value; direction=direction_name; type=surface_type; step_height=value;
slant minx=10; maxx=20; miny=0; maxy=10; minz=0; maxz=10; direction=east_up; type=grass; step_height=1;
slant minx=0; maxx=15; miny=0; maxy=0; minz=0; maxz=0; direction=right_up; type=dirt6; step_height=2;

Vanishing Platform
A platform that disappears on a timer cycle. Visible for vanish_time milliseconds, then invisible for the same duration. Assign an id and set trigger_controlled=true to disable the automatic timer and control it manually via activate, deactivate, and toggle actions from triggers. Use server_bound=true with an id to keep all players in sync.
vanishing_platform minx=value; maxx=value; miny=value; maxy=value; minz=value; maxz=value; surface=surface_type; replacement=replacement_type; sound=sound_file; vanish_time=milliseconds; id=name; trigger_controlled=boolean; server_bound=boolean;
vanishing_platform minx=10; maxx=20; miny=10; maxy=20; minz=3; maxz=3; surface=stone; replacement=air; sound=vanishing_platform.ogg; vanish_time=3000;
vanishing_platform minx=10; maxx=20; miny=10; maxy=20; minz=3; maxz=3; surface=wood; id=myplatform; trigger_controlled=true; server_bound=true;

Activatable Platform
A platform that is permanently solid or invisible until a trigger changes it. Unlike vanishing platforms there is no timer; the platform only changes state when you tell it to.
Use activate or show to make it solid, deactivate or hide to remove it, and toggle to flip its current state. Connect any trigger (button, lever, pressure plate, etc.) to the platform's id.
Set visible=no to start the platform hidden. Set server_bound=true with an id to keep all players in sync.
activatable_platform minx=value; maxx=value; miny=value; maxy=value; minz=value; maxz=value; surface=surface_type; visible=boolean; activate_sound=sound_file; deactivate_sound=sound_file; id=name; server_bound=boolean; disabled=boolean;
activatable_platform minx=5; maxx=15; miny=5; maxy=15; minz=3; maxz=3; surface=wood; visible=no; id=bridge; server_bound=yes;
lever x=0; y=5; z=0; on_activate="activate:bridge"; on_deactivate="deactivate:bridge"; server_bound=yes;

Travelpoint
Transports users to different maps.
travelpoint minx=value; maxx=value; miny=value; maxy=value; minz=value; maxz=value; dest_x=value; dest_y=value; dest_z=value; dest_map=map_name; dest_text="travel_message";
travelpoint minx=0; maxx=50; miny=0; maxy=50; minz=0; maxz=10; dest_x=0; dest_y=0; dest_z=0; dest_map=main; dest_text="Have a good day.";

Map Item
A collectible item placed at a point on the map. Picked up by pressing Enter when standing on it. Items go into the player's map inventory (Ctrl+Tab to cycle). By default, each item can only be picked up once per visit.
Set auto_pickup=true to collect automatically on contact. Set single_use=false to allow repeated pickup. Use on_pickup to run trigger actions when collected. The id field lets triggers target the item.
map_item x=value; y=value; z=value; item_name="name"; item_amount=value; sound=sound_file; loop_sound=sound_file; on_pickup="actions"; auto_pickup=boolean; single_use=boolean; id=name;
map_item x=5; y=10; z=0; item_name="Gold Coin"; item_amount=1; sound=coin.ogg; auto_pickup=yes;
map_item x=5; y=10; z=0; item_name="Key"; on_pickup="activate:door1"; single_use=yes;

Hazard
Instantly kills players when stepped on.
hazard minx=value; maxx=value; miny=value; maxy=value; minz=value; maxz=value;
hazard minx=0; maxx=50; miny=0; maxy=50; minz=0; maxz=50;

Checkpoint
Sets respawn point if player dies.
checkpoint x=value; y=value; z=value;
checkpoint x=50; y=50; z=0;

Instrument
A spot a player can stand on and press Enter to play a simulated instrument. Notes are heard by everyone else on the map, positioned at the player.
instrument x=value; y=value; z=value; type=piano|drumset;
instrument x=50; y=50; z=0; type=piano;

Health Drainer
Gradually drains player health over time.
health_drainer minx=value; maxx=value; miny=value; maxy=value; minz=value; maxz=value; speed=milliseconds; damage=value; [id=value;]
health_drainer minx=0; maxx=10; miny=0; maxy=10; minz=0; maxz=10; speed=1000; damage=100;
Optional: id assigns a unique identifier so the drainer can be enabled or disabled via the activate and deactivate actions. Any trigger can target a health drainer by its id.

Main Menu Area
Allows access to the main menu for setting default maps.
menu minx=value; maxx=value; miny=value; maxy=value; minz=value; maxz=value;
menu minx=0; maxx=10; miny=0; maxy=10; minz=0; maxz=10;

Reverb Space
Gives an area a room echo. While the listener is inside, the world's positioned sounds pick up the reverb. All params are optional (sensible defaults apply).
decay_time = how long the echo tail lasts, in seconds. gain = reverb loudness, 0-1. gainhf = reverb brightness, 0-1 (lower = darker). density = thickness, 0-1. diffusion = smoothness, 0-1. decay_hf_ratio = how fast the highs fade vs the lows, ~0.1-2. (Replaces the old dry/wet/room_size/damp/width.)
space minx=value; maxx=value; miny=value; maxy=value; minz=value; maxz=value; decay_time=value; gain=value; gainhf=value; density=value; diffusion=value; decay_hf_ratio=value;
space minx=10; maxx=30; miny=10; maxy=30; minz=0; maxz=10; decay_time=4; gain=0.7; gainhf=0.7;

Occluded Space
Muffles sound when the listener is within the specified boundaries.
Useful for simulating muffled sound through walls or underwater effects.
inverted = optional (default false). false = a barrier: sound is muffled only when the listener and source are on OPPOSITE sides of the box. true = a muffling medium (water, fog): sound is also muffled when BOTH the listener and source are inside it, so people sharing the medium hear each other muffled too.
thickness = optional (default 1). How far OUTSIDE the box, in tiles, a sound can sit and still be heard unoccluded by a listener inside -- effectively the wall's depth. Raise it so a thick wall's no-occlusion shadow reaches sounds (e.g. wall-bumps) a few tiles beyond the boundary. Only relaxes occlusion; does not apply to inverted zones.
gain = overall loudness of sound heard through this zone, 0-1 (1 = full volume, lower = quieter). gainhf = brightness, 0-1 (1 = clear, lower = more muffled). (Replaces the old resonance/cutoff_freq values.)
o_space minx=value; maxx=value; miny=value; maxy=value; minz=value; maxz=value; gain=value; gainhf=value; inverted=value; thickness=value;
o_space minx=10; maxx=20; miny=10; maxy=20; minz=0; maxz=10; gain=1; gainhf=0.2; inverted=true; thickness=2;

Reflection Space
Gives an area its own "feel the wall" reflection settings, and an easy way to get reflections WITHOUT acoustic materials. While you stand inside the box, sounds reflect off nearby walls using these values, and ANY wall reflects using the box's default reflectivity (a wall that has its own acoustic material still uses that instead). Good for builders who just want reflections in a room without tuning per material.
refl_range = step range; how far a wall can be and still reflect (game units).
refl_count = maximum number of simultaneous reflections.
volume = base reflection loudness in dB (negative is quieter).
wet = default wall reflectivity 0-1 for walls that have no acoustic material (0 = those walls do not reflect).
refl_gainhf = brightness of the reflected copy, 0-1 (1 = bright, lower = duller).
r_space minx=value; maxx=value; miny=value; maxy=value; minz=value; maxz=value; refl_range=value; refl_count=value; volume=value; wet=value; refl_gainhf=value;
r_space minx=10; maxx=20; miny=10; maxy=20; minz=0; maxz=10; refl_range=8; refl_count=2; volume=-8; wet=0.6; refl_gainhf=0.7;

Acoustic Material
Declares how a wall MATERIAL muffles sound, once, for the whole map. The engine then occludes any sound automatically wherever that material's walls actually sit between you and the source -- no occlusion boxes needed. An occluded space box still overrides this where one is placed.
This element has no boundaries; it is a rule, not a region.
name = the material as the map stores it WITHOUT the "wall" prefix (a "wallwood" tile is material "wood").
gainhf = brightness when this material is between you and a sound, 0-1 (1 = clear, lower = more muffled).
gain = overall loudness through the material, 0-1 (1 = full volume, lower = quieter).
The same material also colors the "feel the wall" reflection (image-source method): when a sound reflects off this material's wall, the copy is made quieter and duller accordingly. Reflection is opt-in: leave wet at 0 and this material does not reflect.
wet = reflectivity 0-1 (how loud this material's reflection is; 0 = no reflection). Hard surfaces (metal, stone) high; soft (carpet) low.
gainhf = brightness through this material 0-1 (1 = clear, lower = more muffled). gain = overall loudness through it 0-1. refl_gainhf = brightness of the reflected copy 0-1 (1 = bright, lower = duller). (Replaces the old cutoff/order/refl_cutoff values.)
Note: reflection is enabled per map via the "Allow sounds to reflect off walls" setting. When on, non-looping world sounds (footsteps, other players, voice) reflect off nearby walls while you are in a reflection space -- it is not chosen per individual source.
acoustic_material name=value; gainhf=value; gain=value; wet=value; refl_gainhf=value;
acoustic_material name=wood; gainhf=0.1; gain=1; wet=0.6; refl_gainhf=0.7;
acoustic_material name=carpet; gainhf=0.05; gain=0.9; wet=0.25; refl_gainhf=0.3;

Zone Reverb
Maps a named zone to a reverb preset, applied whenever you stand in that zone -- the box-free version of a reverb space. A reverb space box overrides this where one is placed.
This element has no boundaries; it is a rule, not a region.
name = the zone name as the map reports it (the same names zones use elsewhere), matched exactly by default. Wrap it in asterisks instead to match any zone whose name simply contains that word or phrase -- name=*corridor* applies to a zone named just "corridor", one named "east corridor", and one named "a long and winding corridor" alike, without listing each one separately. This match is not case sensitive. In the builder, checking "Match Any Zone Containing This" does this wrapping for you, so typing the asterisks yourself is never required.
decay_time, gain, gainhf, density, diffusion, decay_hf_ratio = the same reverb controls as a reverb space.
zone_reverb name=value; decay_time=value; gain=value; gainhf=value; density=value; diffusion=value; decay_hf_ratio=value;
zone_reverb name=hall; decay_time=5; gain=0.8; gainhf=0.6;
zone_reverb name=*corridor*; decay_time=1.2; gain=0.5; gainhf=0.7;

Map Configuration Commands (single line entries):

Map Name
name=map_name;
name=test;

Maximum Boundaries
maxx=value;
maxy=value;
maxz=value;
maxx=50;
maxy=50;
maxz=50;

Default Health
health=value;
health=30000;

Map Settings (add these as single lines)
public;           - Makes the map public
visible;          - Makes the map visible
nocamera;         - Disables camera
nospyer;          - Disables spyer
nocoords;         - Disables coordinate viewing
nofloors;         - Disables floor announcements
nohook;           - Disables grappling hook
nobiking;         - Disables bikes
noboating;        - Disables boats
nodamage;         - Disables fall damage
2d;               - Converts map to 2D
predict;          - Enables predictive syntax (see below)

Autowalk Settings
autowalk0;        - Tap arrow keys only
autowalk1;        - Hold arrow keys only

Timed Map
time=minutes;
time=5;

Contributors
contributor=name;
contributor=John;

Boolean Values:
The new syntax supports flexible boolean parsing. All of these are equivalent to true:
- true, yes, 1, on, enabled
All of these are equivalent to false:
- false, no, 0, off, disabled

String Values with Spaces:
Use quotes for strings containing spaces:
text="Hello World";
label="Living Room";
password="secret phrase";

Parameter Order:
Unlike legacy syntax, parameters can be in any order:
platform type=grass; minx=0; maxx=50; miny=0; maxy=50; minz=0; maxz=0;
platform minx=0; maxx=50; type=grass; miny=0; maxy=50; minz=0; maxz=0;
Both examples above are equivalent and valid.

Optional Parameters:
Many parameters have default values and are optional. For example:
- volume defaults to 100 (full) on sources/ambiences; 0 is silent
- pitch defaults to 100.0
- automatic defaults to false
- speed defaults to 1.0

If you don't specify these optional parameters, the default values will be used automatically.

Predictive Syntax:
Predictive syntax is a feature that attempts to guess what parameter you were trying to use when it encounters an unrecognized keyword. It is recommended for beginners who are still learning the map syntax, as it can help correct common mistakes without breaking your map.

To enable it, add "predict;" as a single line in your map data, or toggle it from the map settings menu.

How it works:
- When the parser encounters an unknown parameter, it tries to match it to the correct keyword.
- Common mistakes like camelCase (maxX instead of maxx), snake_case (max_x instead of maxx), or similar typos are automatically corrected.
- It also attempts to correct element type names, such as "tile" to "platform" or "conv" to "belt".
- The corrections happen during parsing only and do not modify your rawdata.

Flaws and limitations:
- Predictive syntax can produce unexpected results if a typo happens to closely resemble a different valid parameter. For example, a misspelled parameter might be corrected to something you did not intend.
- It may silently apply a wrong correction without warning, which can lead to confusing behavior that is difficult to debug.
- It is not a substitute for learning the proper keywords. Relying on it heavily can mask mistakes that would be better caught and fixed.
- It is strongly advised that you read this glossary and use the proper keywords rather than depending on predictive syntax for production maps.