v2.6.0
This release includes many new features, functionalities, and fixes - most of them contributed by @Lemonymous
TL;DR: modpacks, squad palette, and achievements integration. Some potentially breaking changes to UI. Multiple fixes.
New functionality
Mod sorting (#45)
Added various sorting options to the Mod Configuration screen - sort by name, id, load order, enabled status.
Modpacks (#57)
Added support for modpacks - mods that include other mods within themselves. These behave the same as regular mods do, and can execute init/load code, allowing for some custom logic to get the mods to play nice with each other, if need be. Modpacks are initialized and loaded before their nested mods.
For an example, see the ExampleNestedMods.zip
file attached to this release.
Squad palettes (#61)
Added support for squad palettes. Mods utilizing palette libraries - such as FURL, KnightMiner's palette library, or Lemonymous' palette library - should work out-of-the-box.
Added Palette Arrange screen to Mod Content that allows you to change palettes available in the hangar. It works similarily to the existing Pilot Arrange screen - simply drag the palettes around to order them.
Keep in mind that palettes are tied to squads, so in order to be able to use the palette, you need to have the squad unlocked - palettes that cannot be used have a lock icon over them.
The Rift Walkers palette is locked and cannot be reordered, since all other palettes use it as a base for recoloring.
Achievements (#65)
Integrated Lemonymous' achievements library into the mod loader. This feature also implemented automated tracking of victory medals for modded squads, without requiring any changes to mods. Mods utilizing the original library should work out-of-the-box.
There's also a new Achievements screen in Mod Content where you can view the achievements you've earned.
If you're a mod creator, you may enable Development Mode in the mod loader's options - doing so will allow you to click on each achievement's icon, marking it as earned or not earned, making it easier to test achievements.
There are new features compared to the original library, such as rewards tied to achievements, and achievements tied to squads. Check out the linked pull request for a more comprehensive summary.
Fixes
- Fixed a crash when resource.dat goes missing (#54)
- Fixed a crash when resource.dat had size 0.
- The mod loader will now attempt to recover from this, but mods that load resources immediately upon initialization may not work correctly, and will require you to restart the game. Mod creators: in order to fix this, load resources in a deferred way - follow this pattern:
-- Create a forward declaration of the variables that will hold the resources local myResource1 = nil local myResource2 = nil -- Load the resources as you did before, but inside the onFtldatFinalized event callback modApi.events.onFtldatFinalized:subscribe(function() myResource1 = ... myResource2 = ... end
- The mod loader will now attempt to recover from this, but mods that load resources immediately upon initialization may not work correctly, and will require you to restart the game. Mod creators: in order to fix this, load resources in a deferred way - follow this pattern:
- Fixed an issue where tracked surfaces wouldn't get updated correctly (itb-community/DLL-Extensions#5)
UI
- Improved behaviour of tooltips; should be more responsive and less flickery (#60)
- Scrollable areas now scroll much more smoothly (#76)
- Rewritten hangar and custom difficulty logic and UI, making it less janky and less prone to bugging out (#71)
- Rewritten testing console to make selection of test to run less cumbersome (#51)
- Added achievements screen (#65)
- Added palette arrange screen (#61)
- Updated mod content, pilot arrage, and weapon deck selection screens with some more modern tools available in the mod loader (#64)
- Changed signature of
sdlext.build___Dialog
helper functions to allow more control over the built dialog. Old signatures should still work for existing mods (#64)- This included a fix to base
Ui:relayout
function, which might cause some UIs to break, if they happened to depend on the buggy behaviour
- This included a fix to base
modApi
- Added a global
Assert
table containing functions useful for making sure variables hold what they're expected to hold. In case of failed assertions, the error messages are more readable than regular luaassert
, and should be easier to debug (#46) - Fleshed out mod loader's events system and reworked hooks to be based off of events. This is primarily useful for mod loader maintenance, but may be useful for mods that add custom UI. See the events wiki page for a list and documentation on events. (#56)
- Added events for closing and opening various game windows - this allows to avoid the previous hacky approach of measuring window dimensions, and should support multiple windows open at once. (#68)
- Added hooks for when bindable action hotkeys are pressed (#53)
- Added
PawnFocused
andPawnUnfocused
hooks - 'focused' here means when a pawn is either hovered or selected; and the game draws the ui for the pawn's pilot, traits and weapons at the bottom left of the screen, during a mission (including test mech scenario). (#55) - Added support for new
SkillEffect.AddProjectile
andSkillEffect.AddArtillery
overloads added in 1.2 (#43) - Pawn type tables can now reference a Move skill as a string, instead of a direct table reference (#59)
- Added an
additionalSquadData
entry toGAME
containing additional squad data. This data will be stored in the save game, and can be used to create game logic requiring knowing the squad being used. (#71)
Note: a Random or Custom squad will always havesquad = nil
GAME.additionalSquadData = { squad = "id_of_squad_used_this_run", mechs = { "id_of_mech_1", "id_of_mech_2", "id_of_mech_3" } }
Mod loader
- Added
Print Debug Logs
option to mod loader configuration - enable this option to show more fine-grained log messages during startup for debugging.