New Features/Changes:
- Added initial implementation of the Effect Editor for creating particle effects (e.g. flames, fountains, weather, environmental effects, visual status indicators, etc.)
- Added "Attach Effect" scripting function for attaching a particle effect to an entity's attach point (e.g. attach_effect("flame", entity["xyz"], "attach_id"))
- Added "Detach Effect" scripting function for detaching a particle effect from an entity (e.g. detach_effect(entity["xyz"], "attach_id"))
- Added "Add Effect" scripting function for adding a particle effect at a coordinate, with optional entity ID (e.g. add_effect("rain", coord[0, 0, 100], "rain_id"))
- Added "Disable Effect" scripting function for disabling the emission of particles for an effect (e.g. disable_effect(entity["rain"]))
- Added "Enable Effect" scripting function for enabling the emission of particles for an effect (e.g. enable_effect(entity["rain"]))
- Added "Add Item To Tile" visual script node to the Script Editor for placing an item drop onto a tile that the player can pick up
- Added "Delete Data" visual script node to the Script Editor for deleting a custom data file that was previously saved to disk via the "Save Data" function
- Added "Delete Save" visual script node to the Script Editor for deleting a saved game ("savegame01" if no filename is specified)
- Added "Give Loot" visual script node to the Script Editor for generating items for a loot drop then giving them to a specified character
- Added "Give Skill" visual script node to the Script Editor for giving a skill to a character (defaults to the main player character)
- Added "Remove Skill" visual script node to the Script Editor for removing a skill from a character (defaults to the main player character)
- Added "Use Skill" visual script node to the Script Editor for triggering the usage of a skill for a character (defaults to the main player character)
- Added "Cooldown (Roguelike)" to the Stats Editor for configuring the cooldown of a skill when used in roguelike mode (measured in actions)
- Added two new status effect types to the Stats Editor, "Healing Over Time" and "Damage Over Time" for applying healing/damage at intervals
- Added ability to specify both real-time and roguelike interval for status effects in the Stats Editor (measured on seconds and actions, respectively)
- Added support for global functions that can be called from any script (configured from the "Global Functions" tab in the Game Configuration dialog)
- Added "Footstep Sound" and "Footstep Rate" settings to the Voxel Editor for characters (sounds are played positionally, rate is in footsteps per second)
- Added ability to freely rotate objects in the Map Editor from the Entity Properties panel (instead of being locked to 90-degree increments)
- Added "Display Image" scripting function for displaying an image to the player (usage: display_image(, , , ))
- Added image stretch mode constants for scripting (STRETCH_X, where X is either SCALE, TILE, KEEP, KEEP_CENTERED, KEEP_ASPECT, KEEP_ASPECT_CENTERED, or KEEP_ASPECT_COVERED)
- Added "Play Video" scripting function for playing video files (supported formats are WEBM and OGV, can be imported by dragging and dropping onto application)
- Added "Open Container" scripting function for manually triggering the opening of an item container within the current map
- Added "quests" syntax to the Bauxite language for getting an array of quest IDs for a character (e.g. player.quests)
- Added "global.theme" scripting variable for changing the current UI theme (e.g. global.theme = "My Theme")
- Added "system.time" scripting variable for getting current time from the OS (returns a codex with "hour", "minute", and "second" values)
- Added Bauxite scripting syntax for getting an effect attached to an attach point (e.g. entity["xyz"].effect["attach_id"])
- Added "EFFECT" scripting constant for checking if an entity is an effect (similar to TILE, OBJECT, and CHARACTER, e.g. if entity["xyz"] == EFFECT)
- Added "substr" scripting function for getting part of a string (usage: substr(, , ) - length parameter is optional)
- Added "len" scripting function for getting the length of a string, size of an array, or number of keys in a codex (e.g. len($my_array))
- Added "quest[$quest_id]" syntax for getting quest properties based on ID (specifically name, description, or tags, e.g. quest["QUEST_0001"].name)
- Added "portrait" property for characters to Bauxite scripting syntax (e.g. player.portrait to get or change the portrait, null will clear the portrait)
- Added "Two-Dimensional" setting for objects in the Voxel Editor in order to prevent the rotation of vehicle objects when needed
- Added entity script setting to disable the automatic playing of the initiating character's "interact" animation
- Added "default" and "move" directional animation names for use by vehicles with the "Two-Dimensional" setting enabled (e.g. "default_west" or "move_north")
- Added Effect Editor as a "Default Tab" option on the Editor Settings dialog to have it active by default on application startup
- Added two new project templates to the Game Manager, "Mini Caves of ZZT" and "Kenney Tiny Dungeon (2D)", and added their associated assets to the Asset Library
- Added assets previously exclusive to the Patreon to the built-in Asset Library (147 tiles, 55 objects, and 8 characters)
- Added several music tracks by Aleix Ramon to the Asset Library, including "The Adventure Begins" (official RPG in a Box theme song)
- Added "shore_corners" (water with shore at two opposite corners) to the Asset Library for use in the default example game
- Added Italian translations for the editor interface and in-game text (selected from the "General" section of the Editor Settings dialog)
- Updated roguelike mode to also consider interacting with objects and characters as an action (e.g. opening a door, pulling a lever, etc.)
- Updated "Controls" section in the Game Configuration dialog to split out the movement and interaction options
- Updated description field in the Quest Editor to be a multi-line text field instead of being limited to one line
- Updated color data type to support optional alpha value (e.g. color[0, 255, 0, 128] is green with 50% transparency level)
- Updated error message for the "Equip Item" scripting function to be more descriptive (e.g. character needs item in inventory, slot doesn't exist, etc.)
- Update "Enable Container" and "Disable Container" functions to allow direct entity references instead of only an entity ID
- Updated coordinate values in visual scripts nodes (e.g. the "Move Camera" function) to allow decimals for more precise positioning
- Updated "str" scripting function to return "null" when the value is null instead of throwing an error to the debug console
- Updated "Request Coordinate" and "Request Entity" functionality to disable mouse input for widgets while requesting a value
- Updated Bauxite scripting syntax to support Korean characters when used inside of text strings
- Updated "Default Example Game" project template to include an auto-tile configuration for the grass and water tiles
- Updated filtering functionality in the Asset Library to no longer be case-sensitive when searching for tags
- Updated Patreon credits in the About dialog to only reflect the patrons who are currently active for each tier
Bug Fixes:
- Fixed issue with transparent surfaces of models showing through billboard sprite characters and objects
- Fixed issue with death animations not properly triggering for billboard sprite characters when defeated
- Fixed issue with camera positioning that could occur when loading a map and the camera had been previously locked
- Fixed issue with setting a image element's image on a widget to null not properly clearing the image
- Fixed issue that could occur when adding quest-related visual script nodes to a script without having any quests defined
- Fixed issue with $item_id in item's script being null when using a consumable item from a quick slot via number hotkey
- Fixed issue with the "Pass Mouse Input" widget setting not properly passing mouse input through the widget in some cases
- Fixed issue with the positioning of objects when attached to other objects that were themselves also attached to an entity
- Fixed issue where "interact" animations would keep playing even if a character started walking after interaction
- Fixed issue with character's level not being saved when saving a game (only XP value was saved, not level itself)
- Fixed issue with the player's party members not being properly restored when saving then loading a game
- Fixed issue with scale not being applied to an object in the Map Editor if selecting another entity without focusing on another field first
- Fixed issue where cursor was not being automatically updated if over an item container while a script enabled or disabled it
- Fixed issue with duplicate play buttons showing next to music items in the Game Explorer after importing songs from the Asset Library
- Fixed issue where attach point cubes were displaying after capturing a thumbnail for a model even if they weren't previously enabled
- Fixed issue where the skill bar widget was incorrectly showing in the viewport of the Screen Editor
- Fixed issue with Themes tab in the UI Editor incorrectly showing as "Theme" instead of "Themes" in some scenarios
- Fixed issue with Item Editor and Quest Editor incorrectly showing the item/quest details area before a project was opened when set as the default tab
- Fixed issue with "Recent Files" box not displaying dialogues when "All Types" was checked
- Fixed issue where semi-transparent colors in PNGs were being ignored when importing them into the Voxel Editor
- Fixed error that could occur when using "Capture Portrait" tool in the Voxel Editor multiple times in a row
- Fixed issue with control variable in the "For Loop" visual script node not being validated correctly
- Fixed console errors when giving a quest to the player then subsequently moving the player character
- Fixed crash that can occur when using "return" without a return value in the Script Editor and Quick Script Builder
- Fixed issue with some of the default example tiles in the Asset Library causing clipping when walked over by a billboard sprite character
- Fixed some errors that that would display in the external console window when opening the Asset Library dialog
- Fixed issue with "Enter name to filter by" placeholder text on the asset tabs not being properly translated to the current language
- Fixed issue with missing localization for "LOOT_DROP_ALREADY_EXISTS" text when attempting to create a loot drop with a name that already existed
Documentation:
- Updated "Tutorials" built-in-docs to include YouTube links for Stumpy's "How to Make a Game" series and Sarah's tutorial series
- Updated "Character" built-in docs to include convenience variables which get tiles relative to a character ("front_tile", "north_tile", etc.)
- Updated "Codex" built-in docs to include an example of how to modify an existing value within a codex
- Updated "Climbing" built-in docs to fix an issue with the "Known Issue" text being cut off