Skip to content

Releases: pwitvoet/mess

MESS 1.2.3

13 Jul 20:28
Compare
Choose a tag to compare

This version adds a file conversion mode to MESS, for converting between .map, .rmf and .jmf files. This includes support for Trenchbroom groups and layers, VIS group filtering and cordoning, so it can be used for migrating between level editors but also for automated .map exporting.

There are also two new template entities: mtl_trigger_switch, for triggering two different targets based on its on/off state, and q1_brush_text, for generating brush-based text using Makkon's techdc font textures. Besides that, there is a long list of smaller improvements and bugfixes.

To get started, take a look at the setup guide for JACK or TrenchBroom, and check out the tutorials.

New features

  • Added a file conversion mode that can convert between .map, .rmf and .jmf files (including TrenchBroom .map files, with groups and layers).
  • The file conversion mode also supports cordon areas and VIS group filtering, so it can be used as a .map exporter.
  • Added a new special property for replacing textures: _mess_replace_texture.
  • A new template entity: mtl_trigger_switch, which can trigger different targets when it's turned on or off.
  • Another new template entity: q1_brush_text, which generates text using Makkon's techdc font textures.

Improvements

  • Template entities now have custom editor sprites (only works in J.A.C.K.).
  • Entity definitions in .ted files can now contain MScript expressions (in strings), which enables custom editor sprites and models.
  • Added delay properties to cs_trigger_roundstart.
  • Target patterns now also support delays for single targets.
  • Added support for v122 .jmf files (for the J.A.C.K. update that added background images).
  • Macro entities can now insert sub-templates from other maps.
  • macro_insert entities can now create instances with an absolute position and scale.
  • The special _mess_merge_entity_master property now only marks an entity as master if its value is true (not empty or 0).
  • The special _mess_allow_rewrite_rules and _mess_deny_rewrite_rules properties now use commas to separate multiple paths.
  • MESS can now also read .rmx and .jmx files (backup versions of .rmf and .jmf).
  • Added a -norewrite command-line flag that disables rewrite rules (for testing).
  • In .ted files, @MESS; directives without a matching @MESS opening directive are now ignored.

MScript changes

  • Added bitwise operators (>>, <<, &, ^, |, ~).
  • Added support for hexadecimal number literals.
  • New first and last functions for taking the first or last item from an array.
  • New incglobal convenience function, for incrementing a global counter.
  • hasflag and setflag functions now available in rewrite rules.
  • New trunc function for truncating numbers.
  • New ted_dirs and ted_path functions, for accessing files from other template entity directories.
  • The trace function is now also available in .ted files.
  • Object literals can now use strings as keys, and objects can now be indexed.
  • New upper and lower functions for strings.

Bugfixes

  • Fixed that attached templates weren't positioned correctly (related to the special properties _mess_attached_template_map and _mess_attached_template_name).
  • Fixed that using cs_trigger_roundstart would cause MESS to fail.
  • Fixed that an mtl_trigger_random without targets would cause MESS to fail.
  • Fixed that mtl_trigger_periodic didn't support target patterns.
  • Fixed that the behavior of the -config parameter didn't match the documentation (when leaving out the file extension).
  • Fixed that _mess_merge_entity_master properties weren't removed from entities that didn't also have a _mess_merge_entity_id property.
  • Fixed that J.A.C.K.-style help texts in .ted files could not be parsed.
  • Fixed that the output was always written in .map format, even if the output path extension was .rmf or .jmf.
  • Fixed that if no output path was given, and the input file was an .rmf or .jmf file, it would be overwritten (now, a .map file with the same name is generated).
  • Fixed that a macro_brush could select the wrong texture if the first brush of a template brush entity had the ORIGIN texture.
  • Fixed that duplicate targets in a multi-target pattern were ignored.
  • Fixed that some MScript expressions that contained strings weren't parsed correctly.
  • Fixed that a macro_template without anchor and selection_weight properties didn't use the documented default values.
  • Fixed that mtl_env_model didn't take dynamically set flags into account.
  • Fixed that the 'kill', 'show' and 'hide' target patterns didn't check the pattern keyword was followed by a space character.

MESS 1.2.2

08 Dec 23:30
Compare
Choose a tag to compare

This is another hotfix version, which fixes an issue with the id() function not returning the targetname of the parent macro entity. It also adds a new template behavior for setting the speed of scrolling textures in brush entities other than func_conveyor.

For the full v1.2 changelog, see https://github.com/pwitvoet/mess/releases/tag/1.2

MESS 1.2.1

02 Dec 22:23
Compare
Choose a tag to compare

This is a hotfix version that fixes an issue with the configuration system that prevented template entities and behaviors from being loaded. It also adds a 'custom' directory where custom template entities and behaviors can be placed without the risk of them getting overwritten by an update.

For the full v1.2 changelog, see https://github.com/pwitvoet/mess/releases/tag/1.2

NOTE: This version contains a bug that breaks the id() function. Download the latest version instead!

MESS 1.2

29 Nov 01:21
Compare
Choose a tag to compare

This version introduces a template entity library and a set of template behaviors that make MESS more useful for non-technical mappers. It also makes sharing of custom template entities easier and generally just contains a lot of quality-of-life updates and bugfixes.

New features:

  • Added a small template entity library (mtl_trigger_random, mtl_trigger_counter, and more).
  • Added several template behaviors, including a 'target pattern' behavior that automatically generates intermediate entities like trigger_relay or trigger_changetarget for patterns like '+target' and 'target -> newdestination'.
  • Custom template entities and behaviors can be shared via .zip files.
  • Special support for TrenchBroom linked groups: adding {_tb_group} to an entity name or targetname will produce a unique name for each group instance.
  • Templates can now be given multiple names, and macro entities can reference multiple templates, with custom selection weights.
  • Macro entities can now reference templates inside another (template) map.

Other changes:

  • Migrated to .NET 6, which enables Linux support.
  • macro_template and template map properties now act as local variables that are accessible to entities inside that template.
  • macro_insert can now create multiple instances.
  • Geometry scaling along specific axis.
  • Improved error reporting somewhat.
  • Information and errors are now also logged to a file ({inputPath}.mess.log).
  • Attributes with an empty key are now removed.
  • Special attribute lookups are now case-insensitive (angles, scale, etc.).
  • Support for handling entities with inverted pitch rotation.
  • Most settings can now be specified via a .config file, which simplifies command-line usage.
  • macro_brush entities now also copy point entities from the selected template.
  • Entity attributes whose value is a single MScript expression can now pass MScript values along, such as arrays or objects.
  • The templates directory has been split up into a template_entities and template_maps directory.
  • mess.fgd is now auto-generated based on .ted files in the template_entities directory.
  • Rewrite directives can now be applied to specific entity types, or to all entities that match a specific condition.
  • Attributes whose key is an MScript array are now split up into multiple attributes.
  • Maps and templates can now be attached to any entity by using the special _mess_attached_template_map and _mess_attached_template_name attributes.
  • Rewrite rules can now be applied either before or after macro entity processing.
  • The .map file writer now uses lowercase 'e' for numbers with scientific notation (to avoid triggering a bug in TrenchBroom 2023.1).
  • Certain entity attributes can now be 'lifted', which makes them available to expressions in other attributes.
  • REPL mode now uses colors.
  • Brush-based entities can now be merged by using the special _mess_merge_entity_id and _mess_merge_entity_master attributes.
  • All special attributes now have a _mess prefix.
  • Any entity can now conditionally be removed with the special _mess_remove_if attribute.

MScript changes:

  • New language features: anonymous functions, arrays and objects.
  • New functions for functional programming (map, filter, reduce, sort, reverse).
  • New functions for working with global variables. Global variables can be set via the .config file and via the command-line.
  • New type-conversion functions (num, vec, str).
  • New string member functions (trimming, splitting, joining, and more).
  • Support for character escape sequences in string literals.
  • New debug-related functions (trace, assert).
  • New functions for obtaining attributes of the current instance-creating macro entity.
  • Function for obtaining the unique ID of the macro entity that is creating the current instance (parentid).
  • REPL mode now stores the last result in a special variable named _ (underscore).
  • .mscript files can be used to provide utility functions for template entities and behaviors.

Bugfixes:

  • Fixed that .map files could not be read depending on system culture settings.
  • Fixed incorrect handling of the worldspawn entity in .jmf files.
  • Fixed that the .jmf loading code would add 'origin' attributes to all entities.
  • Fixed that the REPL mode couldn't handle Unicode characters.
  • Fixed incorrect calculation of angles attributes.
  • Fixed that entities in a brush template would get different instance IDs.
  • Fixed that .map files with comments (such as generated by TrenchBroom) could not be read.
  • Fixed an fgd setting that prevented TrenchBroom from reading mess.fgd.
  • Fixed an MScript parsing precedence issue with conditional operations.
  • Fixed that duplicate attribute keys would cause an error.
  • Fixed a macro_brush positioning issue when used inside a brush template.
  • Fixed that macro_cover would sometimes position instances incorrectly.
  • Fixed that MScript didn't allow variable names starting with an underscore.
  • Fixed that the MScript == operator would treat certain values of different types as equal.
  • Fixed that the rewrite directive parser could get stuck.
  • Fixed that the classname of macro_template entities was hiding the classname of the macro entity that was creating the current instance.
  • Fixed that the map file extension check was case-sensitive.

NOTE: This version contains a bug that prevents template entities and behaviors from working! Download the latest version instead!

MESS 1.1

05 Dec 00:17
Compare
Choose a tag to compare

This update introduces two big features: a 'rewrite rules' mechanism, which lets you create your own custom template-based entities, and support for J.A.C.K. map files (.jmf) for template maps.

Full list of changes:

  • Added a 'rewrite rule' mechanism, for creating template-based entities.
  • Added support for J.A.C.K. template map files (.jmf).
  • Added several string, math, trig, color, flags and directory-related MScript functions.
  • Added a not operator to MScript (alternative for !).
  • MScript now converts none function arguments to the default value for the parameter's type, for non-optional parameters.
  • Added a 'REPL' mode, for interactive testing of MScript expressions.
  • The special spawnflag<N> attributes now start at 0, not 1.
  • The template_name attribute is now a target_destination, so J.A.C.K. can show links between macro entities and the templates they're using.
  • Added MScript documentation.

Bugfixes:

  • Fixed that .rmf files without cameras failed to open.

NOTE: This is an old version that contains several bugs and is lacking many features. Download the latest version instead!

MESS 1.0

03 Oct 22:28
Compare
Choose a tag to compare

The first release of MESS (Macro Entity Scripting System), a Half-Life level compile tool.

This tool lets you use macro entities and a basic scripting system to create reusable and customizable templates, which can speed up the process of designing and creating Half-Life levels.

NOTE: This is an old version that contains several bugs and is lacking many features. Download the latest version instead!