Skip to content

Releases: gurrenm3/BTD-Mod-Helper

3.2.1

03 Sep 16:13
Compare
Choose a tag to compare
  • Pause Screen Mods Button now shows number of active mods
  • Updated icon for Pause Screen mods button
  • Made it less likely for other mods to have errors if they tried to use file/folder picker popups outside standard mod settings
  • Apopalypse Mode is now correctly affected by the Round Set changer
  • Made the Round Changer button also show up in the Challenge Editor Play screen
    • Note: The Round Set Changer would always technically apply to challenges, this is just making it clearer and easier
      to change without going back to the normal map play screens

3.2.0

25 Aug 23:34
Compare
Choose a tag to compare

Misc Updates

  • Added a button that lets you open the Mods Menu from the In Game Pause Screen
    • This includes opening Mod Settings menus, but not many settings yet will probably live update in a game
  • Added a button in the Mods Menu that can display the SHA 256 hashes of active mods
  • Added a new ModTower.IncludeInMonkeyTeams override
  • Fixed some inconsistencies where some simulation behavior extensions would throw exceptions instead of just returning null
  • ModHelperData now supports multiline raw strings for descriptions, example

Localization Updates

General

  • Added a new button in the Mods Menu to export a mod's localization to a json file, which can be edited to change its
    supported displayed text for your language
    • This goes to a newly added subfolder Mods/BloonsTD6 Mod Helper/Localization/[Language]
    • Edits to files here should refresh the text without requiring a game restart
  • Added a new Translation Tool page on the website that can
    easily put Localization files through Google translate for individual or all supported languages
    • Using this tool, Mod Helper now contains Localizations for all supported BTD6 language. If you see a way that
      one/many of the Google Translations could be improved for your language, you can help out by submitting edits to
      the corresponding Language file through GitHub
  • The text in mods that should be automatically supported for localization editing includes
    • Names and Descriptions for Towers, Upgrades, Heroes, Bloons etc
    • Names and Descriptions for Mod Settings
    • General mod info like the description

For Modders

  • The standard btd6.targets import will now automatically embed /Localization/[Language].json files in your mod
    project
    • Use the Localization Button on your own mod with active language English to get a starter .json for your mod
    • If you paste in the .json content on the website and press the "Translate All" button it will create a .zip file
      with all the correctly named .json files you'd need for your mod
  • ModHelperText and ModHelperDropdown components now Localize their texts by default
  • For Localization Entries, putting text within [Square Brackets] will make it try to fetch existing localization for
    that key
    • e.g. The description is [DartMonkey Description] ->
      The description is Throws a single dart at nearby Bloons. Short range and low pierce but cheap.
  • Added new ModContent.Localize methods that can add new mod specific localizations from variables
    private static readonly string DoTheThing = ModContent.Localize<MyMod>(nameof(DoTheThing), "Do The Thing!");
    Or within any method/constructor that's going to run as the game loads
    var doTheThing = ModContent.Localize(nameof(DoTheThing), "Do The Thing!");
    The result assigned to the DoTheThing is your mod specific localization key, that you can use in a
    ModHelperText.SetText(DoTheThing) directly or as string localizedText = DoTheThing.Localize() otherwise
  • As before, you can still override the RegisterText method in any class that extends NamedModContent to
    directly add extra stuff to the text table
    public override void RegisterText(Il2CppSystem.Collections.Generic.Dictionary<string, string> textTable)
    {
        base.RegisterText(textTable); // Call the base to still register DisplayName / Description
              
        textTable[Id + " Long Description"] = LongDescription; // More specific stuff to your ModContent
    }

3.1.25

08 Aug 18:17
Compare
Choose a tag to compare
  • An error indicator will now show on the main menu Mods Button if any mods have load errors
  • Added a new load error for not being on MelonLoader 0.6.1
  • Fixed unneeded errors on Epic about Il2CppFacepunch.Steamworks

3.1.24

07 Aug 17:11
Compare
Choose a tag to compare
  • Removed a no longer needed patch that had side effects with X/3+/X Mermonkey damage calculations

3.1.23

02 Aug 20:21
Compare
Choose a tag to compare
  • Fixed ApplyOutlineShader
  • Updated UpgradeTypes and VanillaSprites enums for Mermonkey

3.1.22

01 Aug 00:51
Compare
Choose a tag to compare

This update will require a manual download from GitHub here

  • Initial fixes for BTD6 v44

  • Removed the BypassSavingRestrictions settings as it's no longer needed (hurray!)

    • Also removed the AutoHideModdedClientPopup setting as the new popup requests
  • Added a new String extension for GetBtd6Localization (thanks @DarkTerraYT !)

3.1.21

29 May 03:23
Compare
Choose a tag to compare
  • Initial fixes for BTD6 v43.0

Notes for Modders

  • For any place where you previously used InGame.instance.UnityToSimulation, just switch it now to either InGame.instance.bridge or InGame.Bridge or InGame.instance.GetUnityToSimulation()

3.1.20

14 Apr 23:22
Compare
Choose a tag to compare
  • Fixed a bug preventing modded heroes from reaching level 20

3.1.19

11 Apr 17:22
Compare
Choose a tag to compare
  • Fixed a patch for BTD6 v42.1

3.1.18

08 Apr 05:12
Compare
Choose a tag to compare
  • Fixes for BTD6 v42.0

This Mod Helper update will not be able to be made via the in game Mod Browser.

Note for Modders

A large number of mods will need to be updated for this patch, as the namespace
for SpriteReference, PrefabReference, and AudioSourceReference has been changed from Il2CppAssets.Scripts.Utils
to Il2CppNinjaKiwi.Common.ResourceUtils.