Releases: itb-community/ITB-ModLoader
Releases · itb-community/ITB-ModLoader
v2.5.1
BEFORE UPDATING TO NEW GAME VERSION
- Run
uninstall.bat
to remove the mod loader -
Non-steam: update the game (or reinstall)
Steam: runVerify integrity of game cache
(google it if you don't know how)
Optionally try running the game, to make sure it works - Install the new verison of the mod loader
Fixes
- Fixed an issue that would cause the game to crash due to incorrect language index in default game settings (thanks KnightMiner)
- Fixed an issue preventing modded UI from showing up, and overall preventing the mod loader from working correctly (thanks KnightMiner)
v2.5.0
Game version: 1.2.20
Thanks to Matthew Davis from Subset Games, who went out of his way to make sure the mod loader doesn't break with the new version of the game!
BEFORE UPDATING
- Run
uninstall.bat
to remove the mod loader -
Non-steam: update the game (or reinstall)
Steam: runVerify integrity of game cache
(google it if you don't know how)
Optionally try running the game, to make sure it works - Install the new verison of the mod loader
- Go to ITB's save / profile directory, find
settings.lua
file, open it and change:
["force_opengl_1"] = 0
to["force_opengl_1"] = 1
and
["language"] = 0
to["language"] = 1
General
- Added marker file to
/mods
directory so that it'll get unpacked properly. - Reworked handling of text and text replacements in an attempt to better support the new way the game handles text
- Tweaked squad selection and pilot UIs
- Added default and randomize buttons to squad selection and pilot UIs (thanks KnightMiner and tosx)
- Fix statistics screen crashing the game (thanks Lemonymous)
API
modApi:conditionalHook
- third parameter is now afunction
instead of aboolean
. When this function returnstrue
, the conditional hook is removed.- Added
modApi:getGameVersion
, which returns the game version: either1.2.20
,1.1.22
, or1.0.22
. - Added language-related functions:
modApi:getLanguageIndex()
- returns id of the currently selected languagemodApi:getLanguageId()
- returrns a string identifier of the currently selected language. Can pass language index as argument to get the result for other languages.modApi:getLanguageDisplayName()
- returns the display name of the specified language (name of the language as displayed by the game). Can pass language index as argument to get the result for other languages.
- Fix
sdlext.isShiftToggled
/sdlext.isAltToggled
/sdlext.isCtrlToggled
hooks not working - Fix
SpaceDamage.IsMetadata
crashing (thanks Lemonymous) - Change
list_indexof()
to return-1
instead ofnil
(thanks KnightMiner) - Added
FinalEnemyList
global table, that can be used to modify the list of enemies that will spawn during the final mission (thanks Lemonymous) - Added
EnemyLists.Bots
global table, that can be used to modify the list of bot enemies that will spawn in bot missions (thanks Lemonymous) - Removed accidental modApiExt dependency in mod loader code (thanks Lemonymous)
UI
- Added
Ui:swapSibling()
,Ui:bringUp()
,Ui:bringDown()
v2.4.1
General
- Fixed issues with hangar and difficulty UI when resizing the game window
- Fixed a long-standing bug with hangar pilot selection UI, where pilot portraits would continue extending way past the selection window if the player had many modded pilots enabled (thanks Lemonymous and tosx)
- In Pilot Arrange in Mod Options, added an indicator of which pilots will be selectable in the hangar (thanks tosx)
- Added missing destroyed-in-water sprites for train, satellite rocket, generator3 (thanks tosx)
- Tweaked the extra difficulty display to more closely match the vanilla game (thanks R30hedron)
API
- Fix
UpdateSaveData
function failing when the game happened to save at the same time (thanks tosx) - Added
mouseTile()
andmouseTileAndEdge()
functions from modApiExt - Some of the Pawn functions added in 2.4.0 have been made more robust (thanks Lemonymous)
- Added
GetString()
toGL_Color
- Added
LOGF
- same asstring.format
, but for logging (thanks Lemonymous)
v2.4.0
General
- Fixed a crash when deleting the currently active profile and recreating it (thanks Lemonymous)
API
- Hooks scheduled for execution via
modApi:runLater()
are now removed once the player quits the active game or is no longer in a mission (thanks Lemonymous) - Fixed
preEnvironmentHook
andpostEnvironmentHook
triggering multiple times for some environments (thanks Lemonymous) - Added
DoSaveGame()
, which forces the game to save. Only works while in a mission. - Added serialization and deserialization functions for
PointList
andSpaceDamage
userdata objects - this means that they can now be stored inGAME
and other things that are written out to the save file or profile. - Added new functions to
SpaceDamage
: - Added
DamageList:GetMetadata()
- lists all metadata instances in the specified damage list - Added new functions to
BoardPawn
, the pawn userdata object:BoardPawn:IsNeutral()
BoardPawn:IsPowered()
BoardPawn:GetMutation()
BoardPawn:IsMutation()
BoardPawn:IsArmor()
BoardPawn:GetQueued()
BoardPawn:IsQueued()
BoardPawn:ApplyDamage()
BoardPawn:SetFire()
BoardPawn:IsHighlighted()
BoardPawn:SetNeutral()
andBoardPawn:SetPowered()
now immediately update the save file, so the changes will stick through game restarts.
- Added new functions to
Board
: - Improved logging behaviour:
- Messages with over ~20 line breaks should no longer result in an empty console window, now at least the last 20 lines will be visible. Messages should no longer overlap.
- Userdata objects now get correctly converted to string representation, as long as they define
GetLuaString
orGetString
functions
- Added
modApi:runInEnv
, which executes a script of an argument-less function inside of a sandboxed environment, (hopefully completely) separate from the real environment the game uses. - Added
saveDataUpdatedHook
(contirbuted by Lemonymous) - Added
modsInitializedHook
, fired when all mods are done initializing, but before the mod loader starts loading them. - Added
sdlext.getSurface()
(contributed by Lemonymous)
v2.3.5
General
- Fixed initial vek spawns being delayed in mission previews.
- This also fixed a crash when exiting to main menu while new missions were being revealed.
API
- Fixed hitting shift-enter to close the console not updating the modloader's internal console state, which would cause
sdlext.isConsoleOpen
to return incorrect value. - Fix dialogs constructed via
sdlext.showDialog
not handling Escape keypresses correctly in the hangar - Fixed add functions for
consoleToggledHook
being misnamed. - Fixed
settingsChangedHook
not firing in game version 1.1.22 - Added
UpdateSaveData
function, which allows limited manipulation of the save file. - Added
Pawn:ClearUndoMove()
, which makes the pawn unable to undo its most recent move or action. - Added
sdlext.isShiftDown()
,sdlext.isAltDown()
andsdlext.isCtrlDown()
- Added
sdlext.shiftToggledHook
,sdlext.altToggledHook
andsdlext.ctrlToggledHook
- Added
SDLKeycodes
global, which includes all values from https://wiki.libsdl.org/SDLKeycodeLookup - Globalized
GameObject
(class used to create theGAME
global)
v2.3.4
- Fixed vek not burrowing out immediately when entering the test mech scenario
- Fixed a crash at the end of some missions due to
spawner_backend.lua
v2.3.3
General
- Squad selection and pilot order are now saved on per-profile basis, if profile-specific configuration option is selected (thanks Rusted)
- Fixed crash when using pre-1.1.22 version of the game due to the gamepad mode detection code.
API
- Fixed
RemoveSpawnPoint
not working - Missions now hold a reference to their Board via the
self.Board
field - Added missing queued variants for existing
SkillEffect
functions (thanks Lemonymous): SpaceDamage
instances created bySkillEffect:AddGrapple
,SkillEffect:AddArtillery
andSkillEffect:AddProjectile
(and queued variants) now get marked as grapple, artillery and projectile respectively, so that it's possible to detect the form of the attack when inspecting the SkillEffect's damage lists.- Added
SkillEffect:GetMetadata()
andSkillEffect:GetQueuedMetadata()
that allow fetching the information mentioned above in a convenient way. - Added
Mission:PreprocessSpawningPawn
- Moved spawn-point related global functons that optionally took mission argument to be functions on the
Mission
object:Mission:GetSpawnPointData
Mission:RemoveSpawnPoint
Mission:MoveSpawnPoint
- Retained old globals for compatibility
- Added
Mission:ChangeSpawnPointPawnType
- Added
Mission:ModifySpawnPoint
- Added
GetRealDifficulty
- Added 3 hooks related to vek retreating at the end of a mission:
UI
sdl.rgb
andsdl.rgba
now accept hex code input (#FFFFFF
,#FFFFFFFF
)
v2.3.2
- Fixed a bug with previous version that prevented the game from starting
v2.3.1
- Updated
scripts.lua
to 1.1.22 game version (to includerumble.lua
) - Added a popup shown when Gamepad Mode is enabled, warning the player that the mod loader does not support gamepad input
- Fixed an issue with
conditionalHook
not honoring theremove
override - Minor internal changes to how the mod loader handles logging
- Added uninstallation script:
uninstall.bat
- Double clicking this script on Windows will remove the mod loader from your Into the Breach installation, and restore it to vanilla state
- Mods in the
mods
directory and savegames will be left untouched - If problems persist, use Steam's
Verify integrity of game cache
functionality, or reinstall the game
v2.3.0
General
- Configuration for the mod loader, as well as individual mods, can now optionally be stored in a profile-specific way instead of globally (ie. each profile has its own set of enabled mods).
- Important: you still have to restart the game to completely apply all settings changes (list of enabled mods in particular)
- Mod loader now looks for the directory where the game stores profile and savedata, instead of assuming it's always located in
{user}/Documents/My Games/Into The Breach
- Portraits in pilot arrange screen now display a tooltip with the pilot's name when hovered.
- Logging level setting is now applied immediately, without having to restart the game.
- Cleanup: split
altered.lua
andmodapi.lua
into a bunch of smaller files. - Fixed a bug in hangar UI, where selecting a custom squad and clicking in specific places would cause the difficulty UI to reappear (thanks Lemonymous).
- Fixed a bug in hangar UI, where switching from a profile with at least one Secret Pilot unlocked back to a profile that hasn't seen them yet, would cause the difficulty UI to reappear (thanks R30hedron).
- Fixed a bug in hangar UI, where clicking on a Secret Pilot that hasn't been unlocked yet would cause the difficulty UI to reappear.
- Fixed a bug causing modded UI elements to sometimes not de-highlight correctly.
- Fixed scrolling using mouse wheel in scroll areas not highlighting child elements correctly.
- Adjusted hangar UI timings - this should fix an issue where entering the hangar and clicking "Start Game" very quickly would cause the difficulty UI to not fade out. It can still happen if you spam click the button, but should be much more rare now.
WeakPawns
table inspawner_backed.lua
is now made global by the mod loader (similar toGlobal_Texts
)
API
- Mods can now define a third function in addition to
init
andload
:metadata
. This function is executed for all mods regardless of whether they're enabled or not. It should be used to setup config options for the mod, or its icon. icon
mod table field is now prepended withresourcePath
by default. You can still override this field ininit
ormetadata
if you need more control over the path.- Added
modsLoadedHook
, fired when all mods have finished loading. - Added
HangarGetSelectedMechs()
, which returns a list of mechs constituting the currently selected squad (premade, custom, or random). Only works inside the hangar. - Added
IsTestMechScenario()
- Added
testMechEnteredHook
andtestMechExitedHook
GetCurrentMission()
now returnsMission_Test
table while in test mech scenario- Added
consoleToggledHook
- Mod loader's user-facing texts can now be translated through mods, like so:
modApi.texts[SOME_TEXT_ID] = "My translated text"
. Seescripts/mod_loader/modapi/init.lua:setupModLoaderTexts()
for a complete list.- Note: if the language you're translating the game to uses non-ASCII characters (very likely), then you'll need to fuss around with file encodings and font glyphs. Generally, saving the files with translated texts as UTF-8 should work for most texts, but you may need to put some texts in separate files saved with a different encoding, and modify the fonts used by the game to display these characters accurately.
UI
- Added
UiFlowLayout
UI widget - UI elements can now define
ignoreMouse = true
to completely ignore all mouse events