Added initial support for enemies to use ranged weapons in tactical turn-based combat (weapon will be automatically used when given and equipped)
Added initial support for status effects to tactical and menu-driven turn-based combat (status effects will tick at the beginning of a character's turn)
Added "Interval (Turn-Based)" setting to the Stats Editor for configuring how often an applicable status effect will tick when applied during turn-based battles
Added "Default Equipment" section for characters to the Voxel Editor's Model Properties tab (items will be automatically given and equipped on startup)
Updated standard camera functionality for tactical turn-based combat to now track enemy characters during their turn instead of only party members
Updated limit for the camera zoom's maximum value in the Game Configuration dialog to 1000 voxel units instead of the previous limit of 300
Updated "Attach Effect" failure message from an error to a warning when attempting to attach an effect to an entity without the specified attach point
Updated signature hints used by the Script Editor and debug console's auto-complete to bring it up to date (37 event functions, 18 utility functions)
Fixed issue where "On Hit" scripts were not being properly triggered when enemies equipped with melee weapons would attack a player character
Fixed issue where real-time health bars were not displayed or updated for characters that were being damaged by a "Damage Over Time" status effect
Fixed issue where a status effect's image and description were inadvertently cleared out in the Stats Editor when the "Effect Type" setting was changed
Fixed issue where the "Interval (Roguelike)" setting in the Stats Editor was not being hidden for status effects of type "Stat Buff" or "Stat Debuff"
Fixed issue where enemies with the "Attackable in Real-Time" setting enabled were able to attack player characters in real-time during tactical turn-based battles
Fixed issue where enemies that had spawned via an enemy spawn could not be attacked with the left mouse button after saving then loading a game
Fixed issue where current counts for enemy spawns were not being stored when saving a game, causing the spawn limit to potentially be exceeded when loading
Fixed issue where a player character's idle animation wouldn't trigger after having attacked an enemy with a ranged weapon then stopping on a tile
Fixed issue where the "Two-Dimensional" setting in the Voxel Editor was not properly preventing characters from rotating towards their movement direction
Fixed issue where the "Character Stops on Tile" event (global and per tile) was not being triggered when an NPC was moved via "Put Entity" (only the player)
Fixed issue where widget element properties (<element>.text, <element>.script, etc.) were not properly being allowed as operands in conditional expressions
Fixed issue where shop item slots were being inadvertently cleared out if the game was restarted instead of being reset to their original state
Fixed issue where an input binding could not be added back again after being removed unless it was also removed from the other keyboard layout first
Added support to free movement for the "Request Coordinate" and "Request Entity" scripting functions (previously would only work when used in grid movement mode)
Added support to free movement for interacting with items that have been dropped onto the ground (via the "Interact (Adjacent)" action, "E" key by default)
Added "Message Log Timeout" setting to the Game Configuration's UI section (duration to wait before clearing messages logged via the "Log Message" function, 0 = never clear)
Added "Insert Expression" button to the Element Properties tab for easily adding placeholder expressions to text labels and text fields via the Expression Builder dialog
Added "Player Stat", "Party Member Stat", "Entity Stat", "Player Direction", "Entity Direction", and "Initiator" to the Expression Builder in the Script Editor
Updated new input bindings system so the "Interact (Cursor)" action will work with custom controls for interacting with items that are dropped onto the ground
Fixed issue where the "Character is Damaged" and "Character's Health Changes" global event scripts were not being triggered during menu-driven combat
Fixed issue where characters were not being properly defeated when reduced to zero health from a status effect that applied damage over time
Fixed issue where changing the action for a built-in binding on the Input Bindings tab wouldn't save properly the first time and would need to be assigned again
Fixed issue where text labels and images on widgets were no longer allowing mouse input to pass through the widget when the "Mouse Input Pass-Through" setting was enabled
Fixed issue where widget skill slots were not being properly cleared out when assigning null or an empty string to the slot's "skill" property
Fixed issue where the default scale was not being applied to auto-attached objects in the Voxel Editor (only the scale of the attach point itself was applied)
Fixed issue where items that had been dropped onto the ground could no longer be picked up in grid movement (player would walk to the tile instead)
Fixed issue where the "Request Entity" scripting function was no longer allowing the selection of an entity when triggered from grid movement mode
Fixed issue where an invalid coordinate could potentially be selected via the "Request Coordinate" function when quickly clicking the mouse multiple times in a row
Fixed issue where collision was not being properly set up for tiles that were added in-game in free movement mode using the "Add Tile" scripting function
Fixed issue where the player could inadvertently perform actions like move, jump, and crouch while the management screen was open in free movement mode
Fixed issue where the player would keep moving forward when attempting to interact with an object from a distance while in first-person grid movement
Fixed issue where the player could still move with the left mouse button in first-person grid movement even if mouse movement was disabled in the Game Configuration
Fixed issue where a quick script assigned as a default script for a tile or object was not being applied in-game when using the "Add Tile" or "Add Object" function
Fixed issue where the "Modify Navigation" and "Replace Navigation" scripting functions would not accept an explicit numeric value for the navigation type parameter
Fixed issue where the Pause Menu wouldn't open if the widget assigned as the player character's custom inventory widget was currently visible
Fixed issue where the "map.name" built-in variable (containing the current map's name) was not properly being allowed as an operand in conditional expressions
Fixed issue where the right operand was inadvertently being converted to an integer when modifying a character's "speed" stat with a compound operator
Fixed issue where a crash could occur in-game when hovering over an image element on a widget (e.g. the currency icon on the default inventory widget)
Fixed issue where the camera view model would be rotated in the opposite direction when changing it from a script (via camera.view_model = "new_model")
Fixed issue where the widgets within the management screen could no longer be opened after quitting to title from the options menu then starting a new game
Fixed issue where the player character was missing and unable to move in free movement when quitting to title from the options menu then starting a new game
Fixed issue where the message log (used by the "Log Message" scripting function) was not being cleared out when quitting to title from the options menu
Free Movement: Added initial implementation of projectiles for ranged weapons in free movement (improvements to come in subsequent releases)
Free Movement: Added initial crouching mechanic implementation with settings on the Game Configuration's physics tab to enable/disable it and adjust its speed multiplier
Free Movement: Added "idle_crouch" and "walk_crouch" to the Predefined Animation Names dialog in the Voxel Editor (triggered in free movement when the character is crouched)
Free Movement: Added "Gravity" setting to the Game Configuration's physics tab, along with a "global.gravity" Bauxite property to change the value via script
Free Movement: Added Ctrl key as a default input binding for attacking in free movement (in addition to the existing Left Mouse Button binding)
Added "On Hit Script" option for weapon items ($weapon will contain the weapon item's codex, $target the hit entity, $damage the damage amount, and $projectile the projectile entity)
Added most of the built-in game bindings to the Game Configuration's Input Bindings tab with the ability to change what each control does (tab name changed from Key Bindings)
Added "Available Actions" popup dialog to the Input Bindings tab, containing 35 new built-in actions (Move Up, Move Down, etc.) and a "None" option to disable the binding
Added "Schemes" dropdown to the Input Bindings tab of the Game Configuration dialog (for now this consists of the built-in grid/free movement schemes)
Added Space, Print Screen, Insert, Delete, Home, End, Page Up, Page Down, Escape, Up/Down/Left/Right Arrows, Control, Alt, and Shift as available key bindings
Added "X" key binding for triggering the player to exit their vehicle (will use the configured exit/options priority, defaults to front, left, right, back, then current tile)
Added "Exit Options/Priority" setting to the Entity Properties tab in the Map Editor for specifying possible directions when exiting from a vehicle
Added "Enter Vehicle" scripting function for triggering a character to enter a vehicle (optional second parameter for character, e.g. enter_vehicle(entity["ship"]))
Added "Exit Vehicle" scripting function for triggering a character to exit a vehicle (two optional parameters for target tile and character, e.g. exit_vehicle())
Added "Use Item" scripting function for triggering an item to be used via script, with optional second parameter for the character (e.g. use_item("ITEM_0001"))
Added "Quit To Title" and "Quit Game" scripting functiosn for returning to the Main Menu and quitting the game via script (e.g. quit_to_title(), quit_game())
Added "Pause Game" and "Resume Game" scripting functions for pausing and resuming the game via script (e.g. pause_game(), resume_game())
Added "Insert Expression" button to the Script Editor and Quick Script Builder for inserting an expression into the code via the Expression Builder dialog
Added "Entity", "Player", "Party Member", "Attachment", "Map Name", and "Map Groups" to the Expression Builder in the Script Editor
Added "Item", "Item Tags", "Item Property", "Quest", "Quest Name", "Quest Description", and "Quest Tags" to the Expression Builder in the Script Editor
Added "Widget", "Widget Theme", "Widget Element", "Global Theme", "Global Time", and "System Time" to the Expression Builder in the Script Editor
Added "Data File", "Camera Direction", "Camera View Model", and "Cursor Target" to the Expression Builder in the Script Editor
Added "Entity Type", "Cardinal Direction", "Navigation Type", "Terrain Mode", "Tile Script Trigger", and "Stretch Mode" to the Expression Builder in the Script Editor
Added functions without visual nodes to the Script Editor functions list (Change Player, Clear Log, Request Coordinate, Request Entity, Set Entity Scale, and Set Terrain Types)
Added "Stop Player" scripting function to the Script Editor functions list (has a visual node but was missing from the list of available functions)
Added in-game keyboard bindings for controlling the pitch of the camera via Shift + Up Arrow and Shift + Down Arrow (Alt + Up/Down now controls zoom)
Added "Allowed Item Tags" setting to the Widget Editor for item storage slots and crafting input slots (will restrict slots to items with specified tags)
Added "cursor.target" built-in variable to Bauxite for referencing the entity, widget, or widget element currently under the mouse cursor via script
Added global event script for when the cursor's target changes (the new "cursor.target" built-in variable can be referenced in the script)
Added ability to change/retrieve UI themes on a per widget basis via script using the new "theme" property (e.g. widget["xyz"].theme = "Custom Theme")
Added audio section to the in-game options menu for adjusting sound-related settings (with initial settings for sound volume and music volume)
Added submenus to the in-game options menu for controls and video/graphics settings and moved the corresponding options into each one
Added "Quit to Title" button to the pause menu for returning to the Main Menu (only available when the Main Menu is enabled in the Game Configuration)
Added "BLK NX64" by BlackedIRL to the default set of color palettes available in the Voxel Editor and Image Editor (successor of "BLK NEO" palette)
Added setting to the Theme Editor for changing the shadow color of dialogue text (including transparency value, which can be used to disable the shadow)
Updated vehicle functionality so when the player character disembarks from a vehicle they will be rotated to face the direction in which they exited
Updated attach point offset limits in the Voxel Editor to allow values outside of the model's grid (up to a full grid length in each direction)
Updated first-person view model functionality to consider the rotation values of the "camera" attach point when attaching the model to the camera
Updated "Show Credits" function to fall back to the default ones if custom credits don't exist, added "Made with RPG in a Box" to the default credits
Updated "Apply Status Effect" visual scripting node to have a step of 0.1 instead of 1 in order to allow the use of more precise values (e.g. 2.5)
Updated dialogue color setting in the Theme Editor to support editing of its transparency value ("Font Color" setting on the UI properties tab)
Updated in-game screenshot capturing to no longer display text in the corner in order to prevent it from appearing in the images when multiple are taken in a row
Updated tutorials page for the built-in documentation to include episodes 7 and 8 of Stumpy's "How to Make a Game" series ("Layering Wall Tiles" and "Doors")
Updated Steam rich presence logic to support the Effect Editor so its name is displayed as the current rich presence status while in the editor
Changed default scale of attach points in the Voxel Editor from 1.05 to 1.0 (be aware that this may now cause z-fighting when using the default of 1.0)
Changed in-game camera controls to use Alt + Up Arrow and Alt + Down Arrow for zooming the camera in and out (Shift + Up/Down now controls pitch)
Bug Fixes:
Free Movement: Fixed issue with the "Put Player" and "Put Entity" scripting functions not working properly when used to move the player character
Free Movement: Fixed issue where the mouse scroll wheel could be used to zoom the camera in free movement even when the camera was locked
Fixed issue with pushable objects where the player could pull an object even when up against an obstacle (causing navigation paths to break)
Fixed issue where vehicles would not turn when attempting to move up against an obstacle (to match the behavior of the player character when doing the same)
Fixed issue where the space bar keyboard binding for interacting with adjacent entities would not work when attempting to enter a vehicle
Fixed issue where the player was not able to enter a vehicle if standing on the same tile as the vehicle (would only work from adjacent tiles)
Fixed issue where adding an existing party member to a map via "Add Character" then removing it with "Remove Entity" would break the party member functionality
Fixed issue where using a cardinal direction for the "Move Direction" behavior setting and "Reverse Direction" for "Reaction to Obstacle" would cause NPCs to get stuck
Fixed issue where the custom interaction cursor would not display for a scripted object with one assigned (only for tiles and characters)
Fixed issue where custom interaction cursors could fail to work properly when the name assigned to the cursor contained a space
Fixed issue where the Game Configuration's cursors section would expand off the edge of the dialog if the project contained an image with a long filename
Fixed issue where the default scale was not being applied to objects that were attached to other models (only the scale of the attach point itself was applied)
Fixed issue where the "automatically attach" setting in the Voxel Editor was not being properly saved when toggled off for an object or effect
Fixed issue where progress bars would sometimes not display the correct value when loading a game via the "Continue" button on the Main Menu
Fixed issue where tactical turn-based battles could become stuck when an enemy without a death animation was defeated and the damage shake/flash effect was enabled
Fixed issue where music would not play when starting a menu-driven battle using a map with background music assigned in the Map Properties
Fixed issue where the game would become stuck if the player character was defeated by an enemy using a ranged weapon in real-time
Fixed issue where the "Open in Voxel Editor" buttons in the Item Editor would not work when attempting to open an object model assigned to a weapon
Fixed issue where item icon popups were incorrectly showing for characters other than the main player character (e.g. giving an item to an enemy)
Fixed issue where NPCs were not properly walking around on Main Menu background maps when the "NPC Movement in Map" setting was enabled
Fixed issue where the game would incorrectly return to the Main Menu after credits were displayed even when disabled (quit/restart prompt will show instead)
Fixed issue where the "Play Sound" scripting function would fail to work when called after other functions and also storing the sound ID into a variable
Fixed issue where the tool item icon in the upper right corner was not being hidden when displaying credits via the "Show Credits" function
Fixed issue where a widget's "On Close" script was not being triggered if the widget was closed using a button with the "Close Widget" action
Fixed issue where the "count" property was not correctly updating the available amount for a shop item slot (e.g. widget["shop"].element["0001"].count = 10)
Fixed issue where using the built-in "item" property to change a shop slot's item via script (or clear it by setting it to null) was not working properly
Fixed issue where a value of zero (infinite) couldn't be used in the duration field of the "Apply Status Effect" visual scripting node
Fixed issue where the Entity Expression Builder would not open when clicking the wizard button on the "Add Waypoint" visual scripting node
Fixed issue where the eyedropper tooltip in the Map Editor (shown when holding Alt) would become stuck if moving the mouse outside of the viewport while holding Alt
Fixed issue where Ctrl + Left Arrow and Ctrl + Right Arrow were not properly rotating the camera in the Map Editor while using the default camera mode
Fixed issue where Shift + Arrow Keys couldn't be used together to zoom and rotate the camera simultaneously (could also cause the player to start moving)
Hello! I'm Stumpy the Squirrel. Let's make a game with RPG in a Box! In this tutorial, we'll make our map a bit more interesting by creating a functional door that opens and closes. This video is also a great way to learn more about the visual scripting system!
RPG in a Box v1.0.7.3 is out! This release brings hitscan weapons to free movement! 🥳
Check out this game clip from community member thomas - so cool to see it in action already! 😍
View the full release notes below:
Free Movement Updates:
Added initial support for hitscan ranged weapons to free movement (instant/direct damage weapons, with projectile weapons coming later)
Added "sprint" as a predefined animation name that will automatically play whenever the player character is sprinting
Added "Fire Mode" option to the Combat Editor to set the default method by which the player's attacks can be triggered (single vs. automatic)
Added "Fire Mode" option to the Item Editor to set the method by which a weapon item can be triggered when used (single vs. automatic)
Added "Collision Override" option for characters in the Voxel Editor to allow use of the new collision shape functionality
Added "Collision Debugging" setting to the "Quick Play" section of the Editor Settings dialog for displaying collision shapes in-game
Added support for "player.direction" to allow setting of the player character's direction via script (e.g. player.direction = NORTH)
Added button to the Voxel Editor toolbar for toggling the display of collision shapes when the model is using a custom collision override
Updated camera smoothing in third-person free movement to be snappier when tracking the player character's movements
Fixed issue where the player character would walk in place if holding multiple movement keys at once that should cancel each other out
Fixed issue where the attack animation override for a weapon wasn't being applied unless the player was directly attacking an enemy
Fixed issue where collision wasn't being properly created for characters added via enemy spawns or the "Add Character" scripting function
Fixed issue where characters configured as passable were colliding with the player character instead of letting them pass through
Fixed issue where the mouse cursor was not being hidden after opening and then closing the pause menu while in first-person mode
Fixed issue with the "jump" debug console command no longer working and changed the expected velocity value to be in voxels/second to match the editor
New Features/Changes:
Added "Attack Cooldown" setting to the Voxel Editor for customizing the cooldown per character ("Default" uses the global cooldown configured in the Combat Editor)
Added "Attack Cooldown" setting to the Item Editor for customizing the cooldown of a specific weapon item (can use global default, character default, or custom value)
Added "Object Model (View Model)" setting to the Item Editor for specifying the object to attach to the view model (if present) when the item is equipped
Added "Spawn Script" setting for enemy spawns in the Combat Editor that's triggered whenever an enemy is generated ("self" will contain a reference to the character)
Added "On Open Script" setting for item containers that will run before the container UI is displayed to the player (available on the Entity Properties tab)
Added "When Player Collides" behavior setting for NPCs that's triggered when the player collides with the NPC (with initial option to run a script)
Added ability to customize the font and font size for widget titlebars (available on the Widget Properties tab below the "Titlebar Text" setting)
Updated model animation functionality to automatically play the same animation for any objects attached to that model when one is triggered
Bug Fixes:
Fixed issue where equipment objects were not being attached to the first-person view model when equipped via the "Equip Item" scripting function
Fixed issue where attached objects would sometimes display in the wrong position when an animation was played for the attachment or certain offsets were used
Fixed issue where the default scale for billboard sprite characters was not being applied when spawned via enemy spawns or the "Add Character" scripting function
Fixed issue where the default scale for billboard sprite objects was not being applied when added via the "Add Object" scripting function
Fixed issue where the built-in player health bar was not displaying the correct value after loading a saved game where their health had changed
Fixed issue where enemy health bars would sometimes reappear at incorrect locations after damaging the enemies then dying and restarting the game
Fixed issue where enemy health bars would not display when returning to a map with previously damaged enemies until one was damaged again
Fixed issue where hitboxes for billboard sprites were not being adjusted to the correct size when using a scale other than the default
Fixed issue where the details for a loot drop item would sometimes not display after deleting an item from the loot drop in the Combat Editor
Fixed issue where the currency amount wouldn't display on the default inventory widget when using a custom name for the base currency
Fixed issue where the base currency would be missing from the list after clearing out a previously assigned custom name for the base currency
Fixed issue where some settings were being inadvertently changed when switching between behavior presets in the Game Configuration dialog
Fixed issue where the "Collision Shapes" section would sometimes not display when using the "Custom" collision override option for objects in the Voxel Editor
Fixed issue where the settings area for collision shapes would incorrectly stay visible after changing the collision override option from "Custom" to another option
Fixed issue where the collision shape color box was not updating for the currently opened object after changing the default collision color (if using default)
Fixed issue where modifying editor settings when a model was open that used custom collision without any shapes defined could cause an error in the console window
Fixed issue where mouse input from certain widget elements could potentially interfere with other UI elements (e.g. inadvertently progressing dialogue)
Fixed issue where the player was unable to move up and down (i.e. only left or right) when the management screen was disabled and their inventory was open
Fixed issue where the player was inadvertently able to move left and right and interact with objects/characters via spacebar while the management screen was open
Fixed issue where signal errors would sometimes display in the console window if an enemy was damaged multiple times in a row in quick succession
Fixed issue where the "Wait" scripting function was inadvertently displaying twice in the list of available functions in the Script Editor
Fixed issue with missing localization text for the skill slot description that's displayed when selecting the skill slot element on the Widget Tools tab
Documentation:
Added initial version of built-in docs for the "Add Waypoint" scripting function and fixed issue with its link incorrectly opening "Add To Group"
Updated "Give Item" and "Remove Item" built-in docs to include info about the optional parameter for specifying the target character
Updated "NPC Behavior" built-in docs to include the new "collide_with_player" setting that's triggered when the player collides with an NPC
Fixed issue with missing localization text for the "Pushing" topic that's displayed in the main index list of the documentation viewer
Added initial implementation of free melee attacking for the player character (left mouse button to attack at any time)
Added ability to create custom collision shapes in the Voxel Editor for tiles and objects (using cubes and prisms, more to come)
Added "Collision Override" option for objects in the Voxel Editor to allow use of the new collision shape functionality
Added "Physics" tab to the gameplay section of the Game Configuration dialog for adjusting physics-related settings
Added "Jumping" and "Vertical Velocity" settings to the "Physics" tab for toggling jumping and adjusting the vertical velocity for jumping
Added "Sprinting" and "Speed Multiplier" settings to the "Physics" tab for toggling sprinting and adjusting the speed multiplier for sprinting
Updated collision functionality so that NPCs can now trigger scripts assigned to an object's "Character Collides" event when touching the object
Updated collision shapes for characters to be per animation frame and to be box-shaped for better collision detection
Updated player movement functionality to trigger "Character Enters Tile" and "Character Exits Tile" scripts
Updated player movement functionality so that hostile NPCs will now attempt to attack the player from adjacent tiles
Updated player movement functionality to properly support the auto-hiding feature (i.e. hiding groups with the "-hide" suffix)
Updated debug console so "self" will reference the entity within interaction range that the player is looking at while in first-person mode
Fixed issue where "Character Interacts" scripts could not be triggered when assigned to objects configured as passable
Fixed issue where damage/healing numbers were displaying at the center of the map instead of over top of the player character
Fixed issue where the "player.direction" variable was not returning the proper cardinal direction when referenced in a script
Fixed issue where maps could fail to load when they contained any passable objects configured as billboard sprites
Fixed issue where "self" was not returning the player entity when used in the debug console with the cursor over the player character
Fixed issue where the collision box for a player character with a smaller/larger default scale was not being created at the correct size
Fixed issue where a player character with an empty model or consisting of only attachments would cause the game to not start
New Features/Changes:
Added "Field of View" camera setting to the gameplay section of the Game Configuration dialog for adjusting the camera's field of view in degrees
Added ability to customize the default player attack cooldown and the default NPC attack cooldown from the Combat Editor's general section
Added ability to configure a custom "miss" sound effect in the Combat Editor (played whenever a character misses their attack)
Added "Line Mode" setting for text fields to indicate whether it should behave as a single-line field (e.g. for player name entry) or a multi-line field
Updated "Character Collides" event for object scripts so that NPCs can now trigger them upon entering the tile with that object (grid-based movement)
Updated first-person mode to hide any objects attached to the player character if a view model is defined in the Game Configuration
Updated first-person view model functionality to auto-attach an equipped item's object model to the view model if a matching attach point exists
Removed old "Free Movement" setting from the experimental section of the Game Configuration dialog as it's now been replaced by the new system
Bug Fixes:
Fixed issue where items could not be crafted in-game unless the recipe's ingredients/materials were in numerical order by item ID
Fixed issue where the "Move Player" scripting function would no longer work properly and would instead display an error in the debug console
Fixed issue where using the "Set Dialogue" function to change a spawned NPC's dialogue could affect other NPCs when both were using "Standard" behavior
Fixed issue where modifying the "Triggerable by NPCs" script setting would affect other entities of the same type that had a default script when added to the map
Fixed issue where character stats and skills were not being properly restored after loading a saved game (needs a new save to work)
Fixed issue where widget text elements were incorrectly showing the placeholder expression after loading a saved game (needs a new save to work)
Fixed issue where text fields that had been edited by the player were not being properly restored when loading a saved game (needs a new save to work)
Fixed issue where certain widget elements could not be clicked on with the mouse after loading a saved game where the widget was visible when saved
Fixed issue where mouse input was being interfered with in the editor when a widget in the active project contained a text field with scrollbars
Fixed issue with the stairs in the house of the Default Example Game project template being positioned one voxel too high above the floor
Documentation:
Updated "Import Resources" built-in docs to include info about dragging and dropping files onto the application window