Releases: itb-community/ITB-ModLoader
v2.9.3
What's Changed
Modloader:
Fix gameState updating slightly too late when the final mission becomes available
Fix error closing squad selection in statistics
Allow mod options scroll down menus to contain more than 5 values
Fix Region Data error
Some miscellaneous changes
Updated extensions
EasyEdit:
Fix world 'default' button
Fix world editor various crashes
Add randomize islands buttons
Add list duplication functionality
memedit:
Fix bug in SpaceDamage:GetSource
Added Game:GetResist() and Game:SetResist(int)
Added Board:GetAttackOrder()
Added Pawn:GetBonusMove() and Pawn:SetBonusMove()
modApiExt:
Added pawnIsBoosted hook
Updated readme to match it being a modloader extension
Full Changelog: v2.9.2...v2.9.3
v2.9.2
What's Changed
- Change the busy check for isAllDeployed by @WolframParadoxica in #200
- Make events log full stack traces of subscription and dispatch locations. (#202)
- This should make it easier to debug errors that occur inside events.
- Extend
Directory
andFile
with additional functions. (#181) - Alphabetize serialized tables
- This will help memedit address lists to stay alphabetized and make git diff less messy.
- Data saved by the mod loader in the save data folder will also become alphabetized, making them easier to browse.
- Fix crash when savedata directory path contains non-ascii characters. (#207)
- Add functions to check userdata type. See wiki. (#209)
- Add events for
Board:DamageSpace()
andBoard:AddEffect()
. See wiki. (#205) - Remove spaceDamage metadata functions. (#203)
Updated extensions
- memedit v1.1.4 from v1.0.2
- Add SpaceDamage functions with memedit.
- Add addresses for more ITB versions to memedit.
- Override pawn mutation functions when memedit is available.
- Easy Edit v2.0.6 from v2.0.4
- Fix bots in enemy lists to be used in pinnacle missions
- Add function easyEdit:getCurrentIslandSlot()
- easyEdit will now automatically update any lists that have not been edited by the player in the easyEdit menus, meaning that as mods are enabled/disabled their additions to default easyEdit lists will come and go automatically.
- This allows mods to tailor the contents of default lists without requiring the player to do anything, if their lists are in a default state.
- As soon as the player edits a list by hand, their custom version will be saved instead, and automatic updates to it will not resume until the list is returned to a default state (using the buttons).
- modApiExt v1.21 from v1.19
- Fix skill events passing the correct arguments
- Add protection to skilleffect and targetarea hooks in case of nil Point arguments.
New Contributors
- @WolframParadoxica made their first contribution in #200
Full Changelog: v2.9.1...v2.9.2
v2.9.1
Please Note:
This update requires Into the Breach 1.2.88+ (it will not work on older versions). Because of a change in the games code, a significant change was made to the modloader. While for past versions, you could just uninstall the modloader and reinstall the new version, you'll need to take one extra step.
- Run uninstall_modloader.bat to uninstall the modloader
- Verify the integrity of game files to reset Into the Breach to its default files. For steam, go to
Settings > Properties > Local Files > Verify Integrity of Game Files
. If you're not on steam, either verify the integrity on your platform or you can also uninstall Into the Breach entirely and reinstall the game for the same effect. If you don't want to reinstall or are still having issues, you can replacescripts.lua
inInto the Breach/scripts
with the one attached in this release. - Reinstall the modloader by extracting the
ITB-ModLoader-2.9.1.zip
file in this release and extracting it directly into the Into the Breach directory, replacing all files as done before.
If you still have questions or issues, feel free to ask in #modding-support
on the official Into the Breach Discord
Updated extensions
Misc
- Pilot Deck Selector menu can now control pilot contents of secret pods.
- Modloader no longer deletes AE maps.
- Modloader now overwrites
modloader.lua
instead ofscripts.lua
. - Added mod icons for extensions.
- Updated uninstaller for new dlls and files.
- Fix SetNeutral so it works without memEdit.
Functions
- Updated
modApi:addPilotDrop
to accept anftl
argument, see wiki.
Full changelog since 2.8.3: v2.8.3...v2.9.1
v2.9.0
Please Note:
This update requires Into the Breach 1.2.88 (it will not work on older versions). Because of a change in the games code, a significant change was made to the modloader. While for past versions, you could just uninstall the modloader and reinstall the new version, you'll need to take one extra step.
- Run uninstall_modloader.bat to uninstall the modloader
- Verify the integrity of game files to reset Into the Breach to its default files. For steam, go to
Settings > Properties > Local Files > Verify Integrity of Game Files
. If you're not on steam, either verify the integrity on your platform or you can also uninstall Into the Breach entirely and reinstall the game for the same effect. - Reinstall the modloader by extracting the
ITB-ModLoader-2.9.0.zip
file in this release and extracting it directly into the Into the Breach directory, replacing all files as done before.
If you still have questions, feel free to ask in #modding-support
on the official Into the Breach Discord
Changes:
v2.8.3
Updated extensions
New functions
- Added SkillEffcet.AddImpactSound, which adds a sound that takes into account the impact material at the target location
- Added SkillEffect.AddQueuedImpactSound, which is the queued variant of SkillEffcet.AddImpactSound
- Added Pawn.MoveToBottom, which moves the unit down to the bottom of the stack, so it becomes the dominant pawn on its tile
- Added modApi.deployment.getDeploymentZone, which returns a PointList of the current mission's deployment zone
- Added index2point, which returns the point associated with an index,. On an 8x8 board, indexes 1 through 64 corresponds to a point on the map
- Added point2index, which returns the index associated with a point,. On an 8x8 board, indexes 1 through 64 corresponds to a point on the map
- Added modApi.appendEnemyPortraitAssets, which appends assets to "img/portraits/enemy/"
- Added modApi.appendEnemyPortraitAssets, which appends assets to "img/portraits/enemy/"
- Added modApi.appendPilotPortraitAssets, which appends assets to "img/portraits/pilots/"
- Added modApi.appendNpcPortraitAssets, which appends assets to "img/portraits/npcs/"
- Added modApi.appendCeoPortraitAssets, which appends assets to "img/portraits/ceo/"
- Added modApi.createVekAnimations, which is a helper function to create vek animations
- Added CreateStructure, which is a helper function to create structure definitions
Full Changelog since 2.8.2: v2.8.2...v2.8.3
Full Changelog since 2.7.3 - last stable release: v2.7.3...v2.8.3
v2.8.2
v2.8.1
Dependencies
- Mods can now specify other mods that it depends on. (see) When starting ITB, any dependencies of enabled mods will be enabled automatically; and the mod that depended on them will only successfully initialize if all dependencies also successfully initialized.
Extensions
- The mod loader can now have extensions, which essentially are mods in every way, except that they will launch before non-extension mods. Extensions are requested by other mods in the same way dependencies are; and extensions can be enabled separately in the mod configuration menu as stand alone mods (by request)
- Added built-in extensions
Functions
- Added warning log functions which will only be printed if enabled in mod loader configuration.
LOGW
LOGWD
- Added global functions see
clear_table
- clears a table of all valuesmerge_table
- merges all elements from one table into anotherfilter_array
- filters an array with a filter functionfilter_table
- filters a table with a filter functionto_array
- returns a table converted to an array, discarding all keys of the original tableto_sorted_array
- returns a table converted to an array, and sorted with a sort function
- Added version related functions:
modApi.isVersionBelowOrEqual
modApi.isVersionAboveOrEqual
modApi.isVersionAbove
modApi.isVersionBelow
modApi.isValidVersion
- Added Ui functions
setCustomTooltip
- allows setting any ui element as a tooltip.sizepx
- sets a ui element's size in pixelsonGameWindowResized
- called whenever the game window is resizedbeginUi
- can be used in conjunction withendUi
when function chainingseeendUi
- can be used in conjunction withbeginUi
when function chaining seesetVar
- sets a variable of the ui instance seeformat
- formats the ui instance with a function see
- Added Assert.ShouldError, which asserts that a specified function should crash, given specific arguments.
- Added more debug colors
deco.colors.debugRed
deco.colors.debugGreen
deco.colors.debugBlue
deco.colors.debugYellow
deco.colors.debugTeal
- Added
modApi.squadIndex2Choice
, which converts a squad index to a squad choice. [see #177] - Added
modApi.squadChoice2Index
, which converts a squad choice to a squad index. [see #177] - Added
modApi.getSquadForChoice
, which returns the current squad set for a squad choice. [see #177] - Added
modApi.getProfileStatistics
, which returns all statistics for a specified profile - Added modApi.hangar, holding many previously global functions,
isWindowState
isWindowlessState
getOrigin
getSelectedMechs
getSelectedSquad
getSelectedSquadIndex
getBackButtonRect
getStartButtonRect
- Added modApi.getCurrentProfile, which returns the id for the current selected profile
- Added modApi.getCurrentTileset, which returns the current tileset used in mission and tipimages
- Added modApi.final, a table with functions related to the final island
isAvailable
- returns true if the final island is availableisHighlighted
- returns true if the final island is highlightedisSelected
- returns true if the final island is selected
- Changed
Board:IsMissionBoard
to use well tested method of comparingBoard:GetSize()
- Changed
Board:IsTipImage
to use well tested method of comparingBoard:GetSize()
- Changed some Ui functions to return
self
so they can be used when function chaining.Ui.registerDragMove
Ui.registerDragResize
Ui.registerDropTarget
Ui.clearDropTargets
- Changed draggable ui resize handle to more closely match the element's rectangle
- Changed
Board:SetShield
to use vanillaBoard.AddShield
andRemoveShield
internally. - Added functions to append all images in a folder
modApi:appendAssets
- general functionmodApi:appendPlayerUnitAssets
- aliasappendMechAssets
modApi:appendEnemyUnitAssets
- aliasappendVekAssets
modApi:appendMissionUnitAssets
modApi:appendBotUnitAssets
- aliasappendBotAssets
modApi:appendCombatAssets
modApi:appendCombatIconAssets
modApi:appendEffectAssets
modApi:appendWeaponAssets
modApi:appendPassiveWeaponAssets
- Added functions to create animations
modApi:createMechAnimations
modApi:createAnimations
Added Constants
SQUAD_CHOICE_START
SQUAD_CHOICE_END
SQUAD_CHOICE_RANDOM
SQUAD_CHOICE_CUSTOM
SQUAD_CHOICE_SECRET
SQUAD_INDEX_START
SQUAD_INDEX_END
SQUAD_INDEX_SECRET
ORIENTATION_HORIZONTAL
- can be used to define the orientation of ui classes likeUiWeightLayout
andUiFlowLayout
.ORIENTATION_VERTICAL
- ''
Events
- Added
onBoardClassInitialized
- can be subscribed to in order to override Board functions - Added
onPawnClassInitialized
- can be subscribed to in order to override Pawn functions - Added
onGameClassInitialized
- can be subscribed to in order to override Game functions - Added
onLanguageChanged
- dispatched when language changes - Added
onTestsuitesCreated
- dispatched when test suites have been created - Added
onFinalIslandHighlighted
- Added
onFinalIslandUnhighlighted
- Added
onFinalIslandSelected
- Added
onFinalIslandUnhighlighted
- Added
onTilesetChanged
- dispatched when the tileset used in mission or tipimages changes - Changed
modApi.events.onHangarSquadCleared
- now dispatches with three arguments:squadId
,squadChoice
andsquadIndex
- Changed
modApi.events.onHangarSquadSelected
- now dispatches with three arguments:squadId
,squadChoice
andsquadIndex
Misc
- #164 Moved IO-related operations to a helper .dll
- Added warning when mods have missing
modApiVersion
andgameVersion
targets - Added an overlay to display the correct medals for vanilla squads, when modded squads replacing them had been used to get higher medals.
- Added ability to serialize Point see
- Created separation for squad index types [see #177]
- Dispatch events based on window states immediately when they are detected, instead of waiting for the next
onFrameDrawStart
event. - Reserve squad ids "Random" and "Custom" for Random and Custom sqauds, so mod squads cannot use those ids for their squads.
- Rewrote squad and mech detection in hangar to be more accurate.
- Stored a reference to
Board.SetNeutral
asBoard.SetNeutralVanilla
before overriding, so the override can be reverted
Ui
- Added ability to see the next hovered ui element, when dragging an element.
ui.dragHovered
- Added functionality to make Ui groups, where if one is hovered, the whole group is considered
ui.groupHovered
Fixes
- Fixed a case of weapon deck code causing booleans to enter a context expecting numbers
- Fixed decks adding disabled items under some conditions
- Fixed sdlext.showButtonDialog compat function
- Fixed Heat Sinker's palette name
- Fixed bug with
BinarySearch
which would cause it to always return nil when searching a 1-size array. - Fixed test
testsuite.testsuite_StatusTooltips.test_Current_NonExistingKey
from failing - Fixed misaligned 2 island Unfair victory medal
- Fixed the mod loader's cached profile not correctly updating when changing profile
- Fixed modded victory medal and coin display bug when a squad replaced the secret squad
- Fixed various display bugs related to victory medals and achievements.
- Fixed BoardPawn to be initialized earlier, so the Pawn class has all functions even when looking in tip images in the hangar
- Fixed Environment hook from firing multiple times for falling boulders on the second phase of the final mission
v2.7.3 for Advanced Edition
- Added an text input field for mod UIs to use
- Added new events, see #160
- Fix Rosie not working on pawns without custom move skills
- Remove Pawn:IsPowered, that is a vanilla function now
v2.7.2
Features
- 1.2.78's
exclusiveElements
fromspawner_backend.lua
is now globalized by the modloader - Added pilot deck selector, allows selecting both pilots available in time pods and recruits available at the start of runs
- Added support for unfair ribbons for modded squads
- Added
Board:GetMutation
andBoard:IsMutation
to determine the currently active psion on the board. Properly handles the case of multiple active psions - Added
Pawn:CanMutate
to check if a pawn is affected by psions. Has a boolean parameter that can be set to true for checking the final island psion - Added
Default_Move
, a copy ofMove
from before the modloader includes the code for fetching a pawn move skill. This will make it easier to add custom skills based on the vanilla move, notably pawn move skills - Added
Move.DoPostMoveEffects
which allows calling the logic for Rosie's skill in custom move logic. By default it will be called at the end of every custom mech move skill unless the flagSkipPostMoveEffects
is set. - Added
Move.GetPawnMoveSkill
which returns the Skill instance for the given pawn
Changes
- Slightly improve the option to clear log on startup to not cause issues if users decide to edit the log file while the game is running
- Add all new advanced edition and previously unknown keys to the
SpaceDamage
keys list (for tostring and copying) resource.dat
is now modified usingftldat.dll
, which should significantly improve startup time again.
Fixes
- Fix scrollable logger not using the improved caller formatting
- Fix modApi:getGameVersion not including non-digits in version string (see version 1.2.76b)
- Fix vanilla palette list not being available to mods unless a palette is added
- Fix modloader copying corrupted resource.dat to resource.dat.bak in some cases
- Fix modloader causing some pilot skill tooltips to not display
- Fix modloader making the bombermech's third achievement unobtainable. Note there is still a bug where modApiExt prevents the same achievement from being earned
- Fix
Pawn:IsArmor()
not always returning the correct value - Fix Rosie's skill not working on mechs with overridden move skills
- Fix mod achievements not being recognized if a squad registers its squad mechs in the wrong order (vanilla automatically sorts them by class)
Full Changelog: https://github.com/itb-community/ITB-ModLoader/compare/v2.7.1..v2.7.2
v2.7.1
General
- Greatly reduced startup time
- Improved logic to get the game version, making it a lot more accurate
- Make
GetCurrentMission()
a lot more stable
Fixes
- Fix stack overflow when calling
getPawnData
whenSquadData
wasnil
- Fix two new pilot skills breaking with the mod loader (
Web_Vek
andAdjacent_Heal
) - Fix animation height not always updating for Advanced Edition units, which broke some palette fallback code
Logging
- Log the game version on startup
- Log an error when reading from save data fails
- Add an option to print the caller to only the file, in addition to file/console and neither
- Improve formatting of caller info to be more readible
- Add option to clear the log file on startup (new default)
- Log file now defaults to enabled for new profiles. In addition, caller info defaults to log file only
- Fix wrong caller info in
LOGF
,LOGD
andLOGDF
being wrong
Full Changelog: https://github.com/itb-community/ITB-ModLoader/compare/v2.7.0..v2.7.1