New Features/Changes:
- Added initial skill system implementation with a few built-in effect presets (healing and temporary stat buff/debuff - many more to come!)
- Added "Skills" section to the Stats Editor for defining skills for your game (skills can have one or more effects, including custom scripts)
- Added "Skill Slot" widget element type to the Widget Editor, which acts as a quick slot allowing the player to use a skill (more uses to come)
- Added built-in "Skill Bar" widget to the Widget Editor (can be enabled in UI section of Game Configuration or displayed via script using widget ID of "skill_bar")
- Added "Skill Bar" setting to the UI section of the Game Configuration dialog to specify if the built-in skill bar widget should display by default
- Added "skill" widget element property for assigning a skill to a skill slot (e.g. widget["skill_bar"].element["0001"].skill = "SKILL_0001")
- Added "Give Skill" scripting function for giving a skill to a character (e.g. give_skill("SKILL_0001") or give_skill("SKILL_0001", party.member["Sarah"]))
- Added "Remove Skill" scripting function for removing a skill from a characer (e.g. remove_skill("SKILL_0001") or remove_skill("SKILL_0001", party.member["Sarah"]))
- Added "Use Skill" scripting function for activating a character's skill (e.g. use_skill("SKILL_0001") or use_skill("SKILL_0001", party.member["Sarah"]))
- Added ability to override damage logic by having a script named "damage_logic" in your project (must return a numeric value - $attacker, $weapon, and $defender can be referenced)
- Added "min_damage" and "max_damage" built-in item properties for getting the minimum/maximum damage values of a weapon item (e.g. $weapon.min_damage)
- Added "Give Loot" scripting function for generating and giving a loot drop, with optional count/character parameters (e.g. give_loot("Dungeon Loot", 1, player))
- Added "Add Item To Tile" scripting function for placing an item pickup onto a tile, with optional count parameter (e.g. add_item_to_tile($target_tile, "ITEM_0001", 5))
- Added "Delete Save" scripting function for deleting a save file, with optional filename parameter (e.g. delete_save("my_save"), default of "savegame01")
- Added "Delete Data" scripting function for deleting a data file (e.g. delete_data("my_data_file"))
- Added "Clamp" scripting function for clamping a value to a set range (e.g. clamp($value, $min, $max), result is no less than $min and no more than $max)
- Added "Quest Given", "Quest Completed", and "Quest Failed" global event scripts that are triggered for each event, with the quest ID stored in the $quest_id variable
- Added dice roll syntax to the Bauxite scripting language for easily generating random numbers (e.g. "2d8" will roll two 8-sided dice and return the results)
- Added "north_tile", "south_tile", "west_tile", and "east_tile" built-in entity properties to get the tile in a particular direction (e.g. player.north_tile)
- Added "front_tile", "back_tile", "left_tile", "right_tile" built-in character properties to get the tile relative to their facing direction (e.g. player.front_tile)
- Added "party" built-in variable for referencing all members of the player's party (for future scripting use)
- Added "skills" built-in character property for getting a codex of the character's skills (can be used with "contains" to check for a skill ID)
- Added support for negation of the "contains" operator to the Bauxite scripting language (e.g. if player.inventory !contains "ITEM_0001" then)
- Added Script Editor setting to the Editor Settings dialog for expanding the source code area by default whenever a script is opened
- Added ability to rename custom character stats in the Stats Editor (via "pencil" button next to the list of character stats)
- Added Indiegogo backers section to the About dialog window with list of those who supported the "Beyond 1.0" Indiegogo campaign
- Added "About" button to the Game Manager dialog to allow credits and other information to be viewed without needing to open a project
- Added fallback font to the "Player", "NPC", and "Message" nodes in the Dialogue Editor in case the current font is missing any characters
- Updated behavior of real-time enemies so they'll use ranged weapons against the player if they've been given one and equipped with it
- Updated "contains" conditional operator to support checking if a key exists within a codex (e.g. if $my_codex contains "my_key" then)
- Updated assignment statements in Bauxite to support using item references for the right operand (e.g. $my_item = item["ITEM_0001"])
- Updated "Give Item", "Remove Item", "Equip Item", and "Unequip Item" functions to allow passing of just the ID string for the entity
- Updated "About" dialog window to reset vertical scroll positions of the credit text boxes whenever the dialog window is closed and reopened
- Updated Patreon credits in the About dialog to reflect the up-to-date levels for each patron based on the number of months pledged at each tier
- Removed equipment slot debug messages that would display in the external console window when attempting to equip an item to an equipment slot
Bug Fixes:
- Fixed issue where the vehicle object would disappear when the player travelled to another map while controlling a vehicle
- Fixed issue with player character's default scale (as set in the Voxel Editor) not being automatically applied in-game
- Fixed issue with player character's sprite not being properly updated when using a multi-directional billboard sprite with tank controls (may need to resave model)
- Fixed issue with multi-directional billboard sprites for character not being properly updated when the player would speak to an NPC (may need to resave model)
- Fixed issue with decimal values not being properly converted to integers when restoring health to a character (e.g. via "Heal Entity")
- Fixed issue with not being able to directly print out an item reference from a script (e.g. print(item["ITEM_0001"])
- Fixed issue with "cost" and "count" built-in properties not parsing properly when used with a local variable (e.g. $my_item.cost)
- Fixed issue with "id" built-in property not correctly returning the widget's ID when used in a button script with the $widget variable (e.g. $widget.id)
- Fixed issue with some built-in properties for "self" not being accepted as valid syntax in a script ("text", "image", "script", and "item")
- Fixed issue with "\n" not properly displaying as a line break when used within the text of a text field via scripting
- Fixed issue with equipping an item to a character without a corresponding equipment widget (e.g. an enemy NPC)
- Fixed issue where default attached objects weren't automatically being attached to models in-game until removing and readding them to the map
- Fixed issue with attaching objects via the "Attach Object" function when the current frame didn't have the specified attach point (even if others did)
- Fixed issue in the Stats Editor where attempting to delete a custom stat from the list would not properly remove the stat
- Fixed issue where the list of status effects was not being cleared when exiting out of a project to the Game Manager
- Fixed issue where the inventory could no longer be opened after loading a saved game (equipment window would open instead)
- Fixed "speed_multiplier" error that would occur after using the "Reset Map" scripting function to reset the current map
- Fixed issue with "Add Animation" dialog where the text fields were extending outside the dialog box for some localizations
- Fixed issue with missing English localization text for the "Delete Status Effect" button in the Stats Editor
- Fixed some errors that weren't being properly caught when passing invalid parameters into the "Save Data" and "Load Data" scripting functions
- Fixed "move_child" error that would display in the external console window after a newly created script was opened in the Script Editor