Hello! Many thanks for everyone who helped us out by playing 1.2 on the unstable branch and provided feedback or bug reports. Starbound 1.2 – Vault Update is here! Check out the trailer above to get the gist of what’s been added in 1.2, or check the patch notes below for a more in-depth list. Or both, even! Follow your heart! Either way, please enjoy the last big Starbound update of the year. :)
In case you missed it, we also recently launched a shop page on the Chucklefish blog! You can see all Starbound merch in the same place, and there are links to partner sites where you can buy them.
Onward to patch notes!
Major Changes
- Ancient Vaults
- Players who have completed the main storyline can visit a mysterious trader on the Outpost who will send them on a quest to activate and enter the Ancient Gateways found floating in some systems
- These gateways provide access to Ancient Vaults: challenging procedural dungeons left by the ancients, filled with dangerous guardians (including procedural bosses!) and fantastic lost technologies
- Terraforming
- Using powerful devices acquired from the Ancient Vaults along with a new Essence currency, you can now transform regions or whole planets into entirely different biomes
- Terraformers can be used to expand a region across a planet’s surface, replacing natural blocks, objects and plant life, and eventually changing the type of the planet itself
- Microformers are consumable single-use terraformers which provide even more region types to add to your worlds
- Weapon Upgrades
- Use the ancient anvil available at the end of Ancient Vaults and spend Essence to upgrade your outdated legendary weapons, opening up many new options for endgame combat styles
- Elemental Damage
- Monsters now have resistance and weakness to elemental damage types, making your choice of weapons more important than ever
- Holiday Spirit!
- Celebrate the holidays with the variety of festive items bought from Space Santa at the Outpost!
Minor Changes / Bug Fixes
- Holding the activation key while in a distortion sphere tech will force deactivation, to avoid being permanently stuck in small spaces
- Contain tooltips within the game window when they’re near the edge
- Fix a bug with monster kill sounds not playing correctly
- Several bug fixes to monster/NPC behaviors and pathfinding
- Various typo and asset fixes
- Add appropriate “bushes” to the Rust biome
- Update SDL2 to 2.0.5, should fix some fullscreen issues
- Fix some security vulnerabilities in server packet handling
- Fixed an issue where crew would duplicate
- Fix a player inventory networking issue
Performance Improvements
- Improve generation time of older, image-based dungeons
- Other minor improvements to dungeon and world generation
- Use larger texture atlases on graphics cards that support them
- Various optimizations to monster/NPC scripts
- Improve loading speed for dungeon worlds
Modding API Changes
- Behavior Tree system moved to engine for performance reasons, now accessible with the root.behavior lua binding. (Check lua documentation)
- Cleanup node removed
- Decorator node lua implementation changed
- Action node arguments moved around, now (args, output, nodeId, dt).
- Generic currency support.
- Additional currencies can be added and consumed without requiring configuration
- To associate a currency with a currency item, to be used in crafting, it needs to be configured in /currencies.config
- .coinitem files changed to .currency
- Object changes for terraforming support
- Objects can have a new boolean key, “biomePlaced” which if true will cause them to be placed and removed by terraforming.
- Objects can have a new boolean key, “rooting” which if true will mark all of their anchor spaces as roots and prevent those tiles from being broken until the object is broken (identical to how trees and vines work).
- Player inventory can now be configured in player.config, allowing changes to:
- Number of bags
- Inventory size of each bag
- Number of action bars
- Action bar size
- NOTE: modifications to player inventory size need to be applied both server side and client side, and will invalidate existing characters
- Damage sources, requests, and notifications
- Introduced new hit types; WeakHit, StrongHit and Killed.
- Removed killed boolean from damage notifications, replaced with Killed hit type.
- Damage effects (sounds, particles) can be configured for each hit type (Hit, WeakHit, StrongHit, ShieldHit, Killed) in damage type configurations (.damage files).
- Added support for elemental types to damage types. Elemental types can be configured in /damage/elementaltypes.config and can be set for each damage type using the “elementalType” key, which defaults to the “default” elemental type. Each elemental type has a unique set of damage number particles for each hit type.
- Monsters
- Added support for client side rendering scripts
- Allow overriding randomly selected monster parts by setting “selectedParts” in parameters
- Add support for direct palette swaps with the “colorSwap” parameter
- Allow overriding “shortdescription“ in parameters
- Allow overriding “dropPools” in parameters
- Allow setting animation parameters directly in monster parameters with the “animationCustom” parameter. This is merged into the animator configuration.
- Lua API changes:
- ActiveItemAnimation
- Removed activeItemAnimation.animationParameter (replaced with animationConfig.animationParameter)
- Animator
- Added animator.partProperty
- Item
- Replaced item.is with item.matches
- Monster
- Added monster.setDamageParts
- Added monster.setAnimationParameter
- Npc
- Added npc.loungingIn
- ObjectAnimator
- Removed objectAnimator.animationParameter (replaced with animationConfig.animationParameter)
- Player
- Added player.currency
- Added player.addCurrency
- Added player.consumeCurrency
- Modified player.hasItem to allow exact parameter matching
- Modified player.hasCountOfItem to allow exact parameter matching
- Modified player.consumeItem to allow exact parameter matching
- Added player.id
- Added player.uniqueId
- Root
- Added root.behavior
- Added animationConfig table for use in client side rendering scripts
- ScriptPane
- Added pane.playSound
- Widget
- Added widget.setSliderValue
- Added widget.getSliderRange
- Added widget.setSliderEnabled
- Added widget.setItemSlotItem
- World
- Modify world.spawnItem to allow optionally setting a velocity and an intangibleTime
- Added world.size
- Added world.inSurfaceLayer
- Added world.terrestrial
- Changed world.entityMoney to world.entityCurrency
- Added world.universeFlagSet
- Modified world.entityHasCountOfItem to allow exact parameter matching
- Added world.lineTileCollisionPoint
- Added world.addBiomeRegion
- Added world.expandBiomeRegion
- Added world.pregenerateAddBiome
- Added world.pregenerateExpandBiome
- Added world.setLayerEnvironmentBiome
- Added world.setPlanetType
- ActiveItemAnimation