Skip to content

Releases: itb-community/ITB-ModLoader

v2.9.3

04 Jan 02:10
Compare
Choose a tag to compare

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

22 Apr 19:39
Compare
Choose a tag to compare

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 and File 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() and Board: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

Full Changelog: v2.9.1...v2.9.2

v2.9.1

08 Mar 00:47
Compare
Choose a tag to compare

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.

  1. Run uninstall_modloader.bat to uninstall the modloader
  2. 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 replace scripts.lua in Into the Breach/scripts with the one attached in this release.
  3. 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 of scripts.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 an ftl argument, see wiki.

Full changelog since 2.8.3: v2.8.3...v2.9.1

v2.9.0

06 Mar 03:41
d238f43
Compare
Choose a tag to compare
v2.9.0 Pre-release
Pre-release

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.

  1. Run uninstall_modloader.bat to uninstall the modloader
  2. 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.
  3. 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...v2.9.0

v2.8.3

22 Nov 22:22
Compare
Choose a tag to compare

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

06 Nov 22:57
Compare
Choose a tag to compare
v2.8.2 Pre-release
Pre-release

v2.8.1

06 Nov 20:35
Compare
Choose a tag to compare
v2.8.1 Pre-release
Pre-release

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 values
    • merge_table - merges all elements from one table into another
    • filter_array - filters an array with a filter function
    • filter_table - filters a table with a filter function
    • to_array - returns a table converted to an array, discarding all keys of the original table
    • to_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 pixels
    • onGameWindowResized - called whenever the game window is resized
    • beginUi - can be used in conjunction with endUi when function chainingsee
    • endUi - can be used in conjunction with beginUi when function chaining see
    • setVar - sets a variable of the ui instance see
    • format - 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 available
    • isHighlighted - returns true if the final island is highlighted
    • isSelected - returns true if the final island is selected
  • Changed Board:IsMissionBoard to use well tested method of comparing Board:GetSize()
  • Changed Board:IsTipImage to use well tested method of comparing Board: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 vanilla Board.AddShield and RemoveShield internally.
  • Added functions to append all images in a folder
    • modApi:appendAssets - general function
    • modApi:appendPlayerUnitAssets - alias appendMechAssets
    • modApi:appendEnemyUnitAssets - alias appendVekAssets
    • modApi:appendMissionUnitAssets
    • modApi:appendBotUnitAssets - alias appendBotAssets
    • 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 like UiWeightLayout and UiFlowLayout.
  • 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 and squadIndex
  • Changed modApi.events.onHangarSquadSelected - now dispatches with three arguments: squadId, squadChoice and squadIndex

Misc

  • #164 Moved IO-related operations to a helper .dll
  • Added warning when mods have missing modApiVersion and gameVersion 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 as Board.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

v2.7.3 for Advanced Edition

18 Sep 20:37
Compare
Choose a tag to compare
  • 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

29 Aug 02:48
Compare
Choose a tag to compare
v2.7.2 Pre-release
Pre-release

Features

  • 1.2.78's exclusiveElements from spawner_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 and Board: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 of Move 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 flag SkipPostMoveEffects 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 using ftldat.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

27 Jul 22:24
Compare
Choose a tag to compare
v2.7.1 Pre-release
Pre-release

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 when SquadData was nil
  • Fix two new pilot skills breaking with the mod loader (Web_Vek and Adjacent_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 and LOGDF being wrong

Full Changelog: https://github.com/itb-community/ITB-ModLoader/compare/v2.7.0..v2.7.1