diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 8cb6b24cb..65fab14c1 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -77,7 +77,7 @@ jobs:
- name: Upload Mod DLL
- uses: actions/upload-artifact@v2.2.4
+ uses: actions/upload-artifact@v3
with:
# Artifact name
name: ${{ env.PROJECT_NAME }}.dll
diff --git a/BloonsTD6 Mod Helper/Api/Helpers/MapHelper.cs b/BloonsTD6 Mod Helper/Api/Helpers/MapHelper.cs
index 688322cc0..92d822256 100644
--- a/BloonsTD6 Mod Helper/Api/Helpers/MapHelper.cs
+++ b/BloonsTD6 Mod Helper/Api/Helpers/MapHelper.cs
@@ -1,4 +1,5 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
using Il2CppAssets.Scripts.Models.Map;
using Il2CppAssets.Scripts.Models.Map.Spawners;
using UnityEngine;
@@ -10,6 +11,7 @@ namespace BTD_Mod_Helper.Api.Helpers;
///
/// Contains helper methods for working with maps and custom maps.
///
+[Obsolete]
public class MapHelper
{
private static readonly Random rand = new();
@@ -92,7 +94,7 @@ public static PathSpawnerModel CreateSpawner(PathModel[] paths)
for (var i = 0; i < paths.Length; i++)
pathNames[i] = paths[i].pathId;
- return new PathSpawnerModel("", new SplitterModel("", pathNames), new SplitterModel("", pathNames));
+ return new PathSpawnerModel("", new SplitterModel("", pathNames, ""), new SplitterModel("", pathNames, ""));
}
internal static Texture2D ResizeForGame(Texture2D texture2D) =>
diff --git a/BloonsTD6 Mod Helper/UI/Menus/ModsMenu.cs b/BloonsTD6 Mod Helper/UI/Menus/ModsMenu.cs
index 680c78292..2114f09d6 100644
--- a/BloonsTD6 Mod Helper/UI/Menus/ModsMenu.cs
+++ b/BloonsTD6 Mod Helper/UI/Menus/ModsMenu.cs
@@ -98,7 +98,7 @@ public override bool OnMenuOpened(Object data)
var panel = panelTransform.gameObject;
panel.DestroyAllChildren();
- var modsMenu = panel.AddModHelperPanel(new Info("ModsMenu", MenuWidth, MenuHeight));
+ var modsMenu = panel.AddModHelperPanel(new Info("ModsMenu", 0, 100, MenuWidth, MenuHeight));
CreateLeftMenu(modsMenu);
CreateRightMenu(modsMenu);
diff --git a/Documentation/BTD_Mod_Helper.Api.Display.ModDisplay.md b/Documentation/BTD_Mod_Helper.Api.Display.ModDisplay.md
index 36010e617..04077b51b 100644
--- a/Documentation/BTD_Mod_Helper.Api.Display.ModDisplay.md
+++ b/Documentation/BTD_Mod_Helper.Api.Display.ModDisplay.md
@@ -227,6 +227,27 @@ public virtual void Apply(TowerModel towerModel);
`towerModel` [Il2CppAssets.Scripts.Models.Towers.TowerModel](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.TowerModel 'Il2CppAssets.Scripts.Models.Towers.TowerModel')
+
+
+## ModDisplay.GetBloonDisplay(string) Method
+
+Gets the Display for a given bloon
+
+```csharp
+protected string GetBloonDisplay(string bloon);
+```
+#### Parameters
+
+
+
+`bloon` [System.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System.String')
+
+The bloon base id
+
+#### Returns
+[System.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System.String')
+The display GUID
+
## ModDisplay.GetDisplay(string, int, int, int) Method
diff --git a/Documentation/BTD_Mod_Helper.Api.Display.ModTowerDisplay.md b/Documentation/BTD_Mod_Helper.Api.Display.ModTowerDisplay.md
index 734d9ed0f..894317169 100644
--- a/Documentation/BTD_Mod_Helper.Api.Display.ModTowerDisplay.md
+++ b/Documentation/BTD_Mod_Helper.Api.Display.ModTowerDisplay.md
@@ -105,7 +105,7 @@ public virtual void ApplyToTower(TowerModel towerModel);
If the tower tiers make it count as a Paragon
```csharp
-protected bool IsParagon(int[] tiers);
+protected bool IsParagon(params int[] tiers);
```
#### Parameters
@@ -142,7 +142,7 @@ The UnityDisplayNode
Returns true if this display should be used by its Tower for the given tiers
```csharp
-public abstract bool UseForTower(int[] tiers);
+public abstract bool UseForTower(params int[] tiers);
```
#### Parameters
diff --git a/Documentation/BTD_Mod_Helper.Api.Helpers.AbilityHelper.md b/Documentation/BTD_Mod_Helper.Api.Helpers.AbilityHelper.md
new file mode 100644
index 000000000..520d548cb
--- /dev/null
+++ b/Documentation/BTD_Mod_Helper.Api.Helpers.AbilityHelper.md
@@ -0,0 +1,375 @@
+#### [BloonsTD6 Mod Helper](README.md 'README')
+### [BTD_Mod_Helper.Api.Helpers](README.md#BTD_Mod_Helper.Api.Helpers 'BTD_Mod_Helper.Api.Helpers')
+
+## AbilityHelper Class
+
+A wrapper around AbilityModels for making them easier to create
+
+```csharp
+public class AbilityHelper : BTD_Mod_Helper.Api.Helpers.ModelHelper
+```
+
+Inheritance [System.Object](https://docs.microsoft.com/en-us/dotnet/api/System.Object 'System.Object') 🡒 [ModelHelper](BTD_Mod_Helper.Api.Helpers.ModelHelper.md 'BTD_Mod_Helper.Api.Helpers.ModelHelper') 🡒 [BTD_Mod_Helper.Api.Helpers.ModelHelper<](BTD_Mod_Helper.Api.Helpers.ModelHelper_T_.md 'BTD_Mod_Helper.Api.Helpers.ModelHelper')[Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel 'Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel')[>](BTD_Mod_Helper.Api.Helpers.ModelHelper_T_.md 'BTD_Mod_Helper.Api.Helpers.ModelHelper') 🡒 AbilityHelper
+### Constructors
+
+
+
+## AbilityHelper(string) Constructor
+
+Begins construction of a new AttackModel with sensible default values
+The model name (don't need the AbilityModel_ part)
+
+```csharp
+public AbilityHelper(string name="");
+```
+#### Parameters
+
+
+
+`name` [System.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System.String')
+### Properties
+
+
+
+## AbilityHelper.ActivateOnLeak Property
+
+```csharp
+public bool ActivateOnLeak { get; set; }
+```
+
+#### Property Value
+[System.Boolean](https://docs.microsoft.com/en-us/dotnet/api/System.Boolean 'System.Boolean')
+
+### See Also
+- [Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.activateOnLeak](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.activateOnLeak 'Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.activateOnLeak')
+
+
+
+## AbilityHelper.ActivateOnLivesLost Property
+
+```csharp
+public bool ActivateOnLivesLost { get; set; }
+```
+
+#### Property Value
+[System.Boolean](https://docs.microsoft.com/en-us/dotnet/api/System.Boolean 'System.Boolean')
+
+### See Also
+- [Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.activateOnLivesLost](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.activateOnLivesLost 'Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.activateOnLivesLost')
+
+
+
+## AbilityHelper.ActivateOnPreLeak Property
+
+```csharp
+public bool ActivateOnPreLeak { get; set; }
+```
+
+#### Property Value
+[System.Boolean](https://docs.microsoft.com/en-us/dotnet/api/System.Boolean 'System.Boolean')
+
+### See Also
+- [Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.activateOnPreLeak](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.activateOnPreLeak 'Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.activateOnPreLeak')
+
+
+
+## AbilityHelper.AddedViaUpgrade Property
+
+```csharp
+public string AddedViaUpgrade { get; set; }
+```
+
+#### Property Value
+[System.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System.String')
+
+### See Also
+- [Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.addedViaUpgrade](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.addedViaUpgrade 'Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.addedViaUpgrade')
+
+
+
+## AbilityHelper.AnimateOnMainAttackDisplay Property
+
+```csharp
+public bool AnimateOnMainAttackDisplay { get; set; }
+```
+
+#### Property Value
+[System.Boolean](https://docs.microsoft.com/en-us/dotnet/api/System.Boolean 'System.Boolean')
+
+### See Also
+- [Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.animateOnMainAttackDisplay](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.animateOnMainAttackDisplay 'Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.animateOnMainAttackDisplay')
+
+
+
+## AbilityHelper.Animation Property
+
+```csharp
+public int Animation { get; set; }
+```
+
+#### Property Value
+[System.Int32](https://docs.microsoft.com/en-us/dotnet/api/System.Int32 'System.Int32')
+
+### See Also
+- [Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.animation](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.animation 'Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.animation')
+
+
+
+## AbilityHelper.AnimationOffset Property
+
+```csharp
+public float AnimationOffset { get; set; }
+```
+
+#### Property Value
+[System.Single](https://docs.microsoft.com/en-us/dotnet/api/System.Single 'System.Single')
+
+### See Also
+- [Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.AnimationOffset](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.AnimationOffset 'Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.AnimationOffset')
+
+
+
+## AbilityHelper.Behaviors Property
+
+```csharp
+public Model[] Behaviors { get; set; }
+```
+
+#### Property Value
+[Il2CppAssets.Scripts.Models.Model](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Model 'Il2CppAssets.Scripts.Models.Model')[[]](https://docs.microsoft.com/en-us/dotnet/api/System.Array 'System.Array')
+
+### See Also
+- [Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.behaviors](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.behaviors 'Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.behaviors')
+
+
+
+## AbilityHelper.CanActivateBetweenRounds Property
+
+```csharp
+public bool CanActivateBetweenRounds { get; set; }
+```
+
+#### Property Value
+[System.Boolean](https://docs.microsoft.com/en-us/dotnet/api/System.Boolean 'System.Boolean')
+
+### See Also
+- [Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.canActivateBetweenRounds](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.canActivateBetweenRounds 'Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.canActivateBetweenRounds')
+
+
+
+## AbilityHelper.Cooldown Property
+
+```csharp
+public float Cooldown { get; set; }
+```
+
+#### Property Value
+[System.Single](https://docs.microsoft.com/en-us/dotnet/api/System.Single 'System.Single')
+
+### See Also
+- [Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.Cooldown](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.Cooldown 'Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.Cooldown')
+
+
+
+## AbilityHelper.CooldownSpeedScale Property
+
+```csharp
+public float CooldownSpeedScale { get; set; }
+```
+
+#### Property Value
+[System.Single](https://docs.microsoft.com/en-us/dotnet/api/System.Single 'System.Single')
+
+### See Also
+- [Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.CooldownSpeedScale](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.CooldownSpeedScale 'Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.CooldownSpeedScale')
+
+
+
+## AbilityHelper.Description Property
+
+```csharp
+public string Description { get; set; }
+```
+
+#### Property Value
+[System.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System.String')
+
+### See Also
+- [Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.description](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.description 'Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.description')
+
+
+
+## AbilityHelper.DisplayName Property
+
+```csharp
+public string DisplayName { get; set; }
+```
+
+#### Property Value
+[System.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System.String')
+
+### See Also
+- [Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.displayName](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.displayName 'Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.displayName')
+
+
+
+## AbilityHelper.DontShowStacked Property
+
+```csharp
+public bool DontShowStacked { get; set; }
+```
+
+#### Property Value
+[System.Boolean](https://docs.microsoft.com/en-us/dotnet/api/System.Boolean 'System.Boolean')
+
+### See Also
+- [Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.dontShowStacked](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.dontShowStacked 'Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.dontShowStacked')
+
+
+
+## AbilityHelper.Enabled Property
+
+```csharp
+public bool Enabled { get; set; }
+```
+
+#### Property Value
+[System.Boolean](https://docs.microsoft.com/en-us/dotnet/api/System.Boolean 'System.Boolean')
+
+### See Also
+- [Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.enabled](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.enabled 'Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.enabled')
+
+
+
+## AbilityHelper.Icon Property
+
+```csharp
+public string Icon { get; set; }
+```
+
+#### Property Value
+[System.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System.String')
+
+### See Also
+- [Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.icon](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.icon 'Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.icon')
+
+
+
+## AbilityHelper.IconReference Property
+
+```csharp
+public SpriteReference IconReference { get; set; }
+```
+
+#### Property Value
+[Il2CppAssets.Scripts.Utils.SpriteReference](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Utils.SpriteReference 'Il2CppAssets.Scripts.Utils.SpriteReference')
+
+### See Also
+- [Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.icon](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.icon 'Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.icon')
+
+
+
+## AbilityHelper.LivesCost Property
+
+```csharp
+public int LivesCost { get; set; }
+```
+
+#### Property Value
+[System.Int32](https://docs.microsoft.com/en-us/dotnet/api/System.Int32 'System.Int32')
+
+### See Also
+- [Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.livesCost](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.livesCost 'Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.livesCost')
+
+
+
+## AbilityHelper.MaxActivationsPerRound Property
+
+```csharp
+public int MaxActivationsPerRound { get; set; }
+```
+
+#### Property Value
+[System.Int32](https://docs.microsoft.com/en-us/dotnet/api/System.Int32 'System.Int32')
+
+### See Also
+- [Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.maxActivationsPerRound](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.maxActivationsPerRound 'Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.maxActivationsPerRound')
+
+
+
+## AbilityHelper.ResetCooldownOnTierUpgrade Property
+
+```csharp
+public bool ResetCooldownOnTierUpgrade { get; set; }
+```
+
+#### Property Value
+[System.Boolean](https://docs.microsoft.com/en-us/dotnet/api/System.Boolean 'System.Boolean')
+
+### See Also
+- [Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.resetCooldownOnTierUpgrade](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.resetCooldownOnTierUpgrade 'Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.resetCooldownOnTierUpgrade')
+
+
+
+## AbilityHelper.RestrictAbilityAfterMaxRoundTimer Property
+
+```csharp
+public bool RestrictAbilityAfterMaxRoundTimer { get; set; }
+```
+
+#### Property Value
+[System.Boolean](https://docs.microsoft.com/en-us/dotnet/api/System.Boolean 'System.Boolean')
+
+### See Also
+- [Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.restrictAbilityAfterMaxRoundTimer](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.restrictAbilityAfterMaxRoundTimer 'Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.restrictAbilityAfterMaxRoundTimer')
+
+
+
+## AbilityHelper.SharedCooldown Property
+
+```csharp
+public bool SharedCooldown { get; set; }
+```
+
+#### Property Value
+[System.Boolean](https://docs.microsoft.com/en-us/dotnet/api/System.Boolean 'System.Boolean')
+
+### See Also
+- [Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.sharedCooldown](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.sharedCooldown 'Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel.sharedCooldown')
+### Operators
+
+
+
+## AbilityHelper.implicit operator AbilityModel(AbilityHelper) Operator
+
+Unwraps the model
+
+```csharp
+public static AbilityModel implicit operator AbilityModel(BTD_Mod_Helper.Api.Helpers.AbilityHelper helper);
+```
+#### Parameters
+
+
+
+`helper` [AbilityHelper](BTD_Mod_Helper.Api.Helpers.AbilityHelper.md 'BTD_Mod_Helper.Api.Helpers.AbilityHelper')
+
+#### Returns
+[Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel 'Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel')
+
+
+
+## AbilityHelper.implicit operator AbilityHelper(AbilityModel) Operator
+
+Wraps a model
+
+```csharp
+public static BTD_Mod_Helper.Api.Helpers.AbilityHelper implicit operator AbilityHelper(AbilityModel model);
+```
+#### Parameters
+
+
+
+`model` [Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel 'Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel')
+
+#### Returns
+[AbilityHelper](BTD_Mod_Helper.Api.Helpers.AbilityHelper.md 'BTD_Mod_Helper.Api.Helpers.AbilityHelper')
\ No newline at end of file
diff --git a/Documentation/BTD_Mod_Helper.Api.Helpers.Instances.md b/Documentation/BTD_Mod_Helper.Api.Helpers.Instances.md
new file mode 100644
index 000000000..977856ce2
--- /dev/null
+++ b/Documentation/BTD_Mod_Helper.Api.Helpers.Instances.md
@@ -0,0 +1,364 @@
+#### [BloonsTD6 Mod Helper](README.md 'README')
+### [BTD_Mod_Helper.Api.Helpers](README.md#BTD_Mod_Helper.Api.Helpers 'BTD_Mod_Helper.Api.Helpers')
+
+## Instances Class
+
+Provides quick access to many major BTD6 singleton classes
+
+```csharp
+public class Instances
+```
+
+Inheritance [UnityEngine.MonoBehaviour](https://docs.microsoft.com/en-us/dotnet/api/UnityEngine.MonoBehaviour 'UnityEngine.MonoBehaviour') 🡒 Instances
+### Properties
+
+
+
+## Instances.BaseGameModel Property
+
+The base GameModel class
+
+```csharp
+public static GameModel BaseGameModel { get; }
+```
+
+#### Property Value
+[Il2CppAssets.Scripts.Models.GameModel](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.GameModel 'Il2CppAssets.Scripts.Models.GameModel')
+
+
+
+## Instances.Bridge Property
+
+The current UnityToSimulation bridge. Will be null if not in a game, or if the game isn't fully loaded in
+
+```csharp
+public static UnityToSimulation Bridge { get; }
+```
+
+#### Property Value
+[Il2CppAssets.Scripts.Unity.Bridge.UnityToSimulation](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Unity.Bridge.UnityToSimulation 'Il2CppAssets.Scripts.Unity.Bridge.UnityToSimulation')
+
+
+
+## Instances.Btd6CoopGame Property
+
+The instance of the Btd6CoopGameNetworked class. Will be null if not in a coop game
+
+```csharp
+public static Btd6CoopGameNetworked Btd6CoopGame { get; }
+```
+
+#### Property Value
+[Il2CppAssets.Scripts.Unity.Network.Btd6CoopGameNetworked](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Unity.Network.Btd6CoopGameNetworked 'Il2CppAssets.Scripts.Unity.Network.Btd6CoopGameNetworked')
+
+
+
+## Instances.Btd6Player Property
+
+The current Btd6Player
+
+```csharp
+public static Btd6Player Btd6Player { get; }
+```
+
+#### Property Value
+[Il2CppAssets.Scripts.Unity.Player.Btd6Player](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Unity.Player.Btd6Player 'Il2CppAssets.Scripts.Unity.Player.Btd6Player')
+
+
+
+## Instances.CashManager Property
+
+The CashManager for the current player.
+
+```csharp
+public static CashManager CashManager { get; }
+```
+
+#### Property Value
+[Il2CppAssets.Scripts.Simulation.CashManager](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Simulation.CashManager 'Il2CppAssets.Scripts.Simulation.CashManager')
+
+
+
+## Instances.CoOpBridge Property
+
+The current NetworkedUnityToSimulation bridge. Will be null if not in a coop game, or if the game isn't fully loaded in
+
+```csharp
+public static UnityToSimulation CoOpBridge { get; }
+```
+
+#### Property Value
+[Il2CppAssets.Scripts.Unity.Bridge.UnityToSimulation](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Unity.Bridge.UnityToSimulation 'Il2CppAssets.Scripts.Unity.Bridge.UnityToSimulation')
+
+
+
+## Instances.CoOpUnityToSimulation Property
+
+The current NetworkedUnityToSimulation bridge. Will be null if not in a coop game, or if the game isn't fully loaded in
+
+```csharp
+public static NetworkedUnityToSimulation CoOpUnityToSimulation { get; }
+```
+
+#### Property Value
+[Il2CppAssets.Scripts.Unity.Bridge.NetworkedUnityToSimulation](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Unity.Bridge.NetworkedUnityToSimulation 'Il2CppAssets.Scripts.Unity.Bridge.NetworkedUnityToSimulation')
+
+
+
+## Instances.CurrentGameModel Property
+
+The modified GameModel that's being used for the current game. Will be null if not in a game, or if the game isn't fully loaded yet
+
+```csharp
+public static GameModel CurrentGameModel { get; }
+```
+
+#### Property Value
+[Il2CppAssets.Scripts.Models.GameModel](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.GameModel 'Il2CppAssets.Scripts.Models.GameModel')
+
+
+
+## Instances.CurrentInGameData Property
+
+The instance of the InGameData class for the current match
+
+```csharp
+public static ReadonlyInGameData CurrentInGameData { get; }
+```
+
+#### Property Value
+[Il2CppAssets.Scripts.Unity.UI_New.InGame.ReadonlyInGameData](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Unity.UI_New.InGame.ReadonlyInGameData 'Il2CppAssets.Scripts.Unity.UI_New.InGame.ReadonlyInGameData')
+
+
+
+## Instances.DisplayFactory Property
+
+The current Display Factory
+
+```csharp
+public static Factory DisplayFactory { get; }
+```
+
+#### Property Value
+[Il2CppAssets.Scripts.Unity.Display.Factory](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Unity.Display.Factory 'Il2CppAssets.Scripts.Unity.Display.Factory')
+
+
+
+## Instances.FactoryFactory Property
+
+The current FactoryFactory (factory for in game factories), or null if not in game
+
+```csharp
+public static FactoryFactory FactoryFactory { get; }
+```
+
+#### Property Value
+[Il2CppAssets.Scripts.Simulation.Factory.FactoryFactory](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Simulation.Factory.FactoryFactory 'Il2CppAssets.Scripts.Simulation.Factory.FactoryFactory')
+
+
+
+## Instances.Game Property
+
+The instance of the Game class
+
+```csharp
+public static Game Game { get; }
+```
+
+#### Property Value
+[Il2CppAssets.Scripts.Unity.Game](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Unity.Game 'Il2CppAssets.Scripts.Unity.Game')
+
+
+
+## Instances.GameConnection Property
+
+The instance of the GameConnection class. Will be null if not in a coop game
+
+```csharp
+public static GameConnection GameConnection { get; }
+```
+
+#### Property Value
+[Il2CppNinjaKiwi.LiNK.Lobbies.GameConnection](https://docs.microsoft.com/en-us/dotnet/api/Il2CppNinjaKiwi.LiNK.Lobbies.GameConnection 'Il2CppNinjaKiwi.LiNK.Lobbies.GameConnection')
+
+
+
+## Instances.GameData Property
+
+The instance of the GameData class
+
+```csharp
+public static GameData GameData { get; }
+```
+
+#### Property Value
+[Il2CppAssets.Scripts.Data.GameData](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Data.GameData 'Il2CppAssets.Scripts.Data.GameData')
+
+
+
+## Instances.InGame Property
+
+The current instance of the InGame class. Will be null if not in a match.
+
+```csharp
+public static InGame InGame { get; }
+```
+
+#### Property Value
+[Il2CppAssets.Scripts.Unity.UI_New.InGame.InGame](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Unity.UI_New.InGame.InGame 'Il2CppAssets.Scripts.Unity.UI_New.InGame.InGame')
+
+
+
+## Instances.InputManager Property
+
+The InputManager for the current player.
+
+```csharp
+public static InputManager InputManager { get; }
+```
+
+#### Property Value
+[Il2CppAssets.Scripts.Simulation.Input.InputManager](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Simulation.Input.InputManager 'Il2CppAssets.Scripts.Simulation.Input.InputManager')
+
+
+
+## Instances.Map Property
+
+The current Map in simulation, or null if not in game
+
+```csharp
+public static Map Map { get; }
+```
+
+#### Property Value
+[Il2CppAssets.Scripts.Simulation.Track.Map](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Simulation.Track.Map 'Il2CppAssets.Scripts.Simulation.Track.Map')
+
+
+
+## Instances.NextInGameData Property
+
+The instance of the InGameData class that will be used for the next match
+
+```csharp
+public static InGameData NextInGameData { get; }
+```
+
+#### Property Value
+[Il2CppAssets.Scripts.Unity.UI_New.InGame.InGameData](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Unity.UI_New.InGame.InGameData 'Il2CppAssets.Scripts.Unity.UI_New.InGame.InGameData')
+
+
+
+## Instances.NKGI Property
+
+The instance of the NKMultiGameInterface class. Will be null if not in a coop game
+
+```csharp
+public static NKMultiGameInterface NKGI { get; }
+```
+
+#### Property Value
+[Il2CppNinjaKiwi.NKMulti.NKMultiGameInterface](https://docs.microsoft.com/en-us/dotnet/api/Il2CppNinjaKiwi.NKMulti.NKMultiGameInterface 'Il2CppNinjaKiwi.NKMulti.NKMultiGameInterface')
+
+
+
+## Instances.NKMultiConnection Property
+
+The instance of the NKMultiConnection class. Will be null if not in a coop game
+
+```csharp
+public static NKMultiConnection NKMultiConnection { get; }
+```
+
+#### Property Value
+[Il2CppNinjaKiwi.LiNK.Lobbies.NKMultiConnection](https://docs.microsoft.com/en-us/dotnet/api/Il2CppNinjaKiwi.LiNK.Lobbies.NKMultiConnection 'Il2CppNinjaKiwi.LiNK.Lobbies.NKMultiConnection')
+
+
+
+## Instances.PopupScreen Property
+
+The current instance of the PopupScreen component
+
+```csharp
+public static PopupScreen PopupScreen { get; }
+```
+
+#### Property Value
+[Il2CppAssets.Scripts.Unity.UI_New.Popups.PopupScreen](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Unity.UI_New.Popups.PopupScreen 'Il2CppAssets.Scripts.Unity.UI_New.Popups.PopupScreen')
+
+
+
+## Instances.Profile Property
+
+The current player's profile
+
+```csharp
+public static ProfileModel Profile { get; }
+```
+
+#### Property Value
+[Il2CppAssets.Scripts.Models.Profile.ProfileModel](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Profile.ProfileModel 'Il2CppAssets.Scripts.Models.Profile.ProfileModel')
+
+
+
+## Instances.ShopMenu Property
+
+The current instance of the ShopMenu component, may be null
+
+```csharp
+public static ShopMenu ShopMenu { get; }
+```
+
+#### Property Value
+[Il2CppAssets.Scripts.Unity.UI_New.InGame.RightMenu.ShopMenu](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Unity.UI_New.InGame.RightMenu.ShopMenu 'Il2CppAssets.Scripts.Unity.UI_New.InGame.RightMenu.ShopMenu')
+
+
+
+## Instances.Simulation Property
+
+The current game Simulation. Will be null if not in a game, or if the game isn't fully loaded in.
+
+```csharp
+public static Simulation Simulation { get; }
+```
+
+#### Property Value
+[Il2CppAssets.Scripts.Simulation.Simulation](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Simulation.Simulation 'Il2CppAssets.Scripts.Simulation.Simulation')
+
+
+
+## Instances.TowerManager Property
+
+The TowerManger for the current game. Will be null if not in a game, or if the game isn't fully loaded yet
+
+```csharp
+public static TowerManager TowerManager { get; }
+```
+
+#### Property Value
+[Il2CppAssets.Scripts.Simulation.Towers.TowerManager](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Simulation.Towers.TowerManager 'Il2CppAssets.Scripts.Simulation.Towers.TowerManager')
+
+
+
+## Instances.TowerSelectionMenu Property
+
+The current instance of the TowerSelectionMenu component, may be null
+
+```csharp
+public static TowerSelectionMenu TowerSelectionMenu { get; }
+```
+
+#### Property Value
+[Il2CppAssets.Scripts.Unity.UI_New.InGame.TowerSelectionMenu.TowerSelectionMenu](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Unity.UI_New.InGame.TowerSelectionMenu.TowerSelectionMenu 'Il2CppAssets.Scripts.Unity.UI_New.InGame.TowerSelectionMenu.TowerSelectionMenu')
+
+
+
+## Instances.UnityToSimulation Property
+
+The current UnityToSimulation bridge. Will be null if not in a game, or if the game isn't fully loaded in
+
+```csharp
+public static UnityToSimulation UnityToSimulation { get; }
+```
+
+#### Property Value
+[Il2CppAssets.Scripts.Unity.Bridge.UnityToSimulation](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Unity.Bridge.UnityToSimulation 'Il2CppAssets.Scripts.Unity.Bridge.UnityToSimulation')
\ No newline at end of file
diff --git a/Documentation/BTD_Mod_Helper.Api.Helpers.Lists.md b/Documentation/BTD_Mod_Helper.Api.Helpers.Lists.md
new file mode 100644
index 000000000..cf9e585f7
--- /dev/null
+++ b/Documentation/BTD_Mod_Helper.Api.Helpers.Lists.md
@@ -0,0 +1,52 @@
+#### [BloonsTD6 Mod Helper](README.md 'README')
+### [BTD_Mod_Helper.Api.Helpers](README.md#BTD_Mod_Helper.Api.Helpers 'BTD_Mod_Helper.Api.Helpers')
+
+## Lists Class
+
+Provides quick access to many major BTD6 object lists
+
+```csharp
+public class Lists
+```
+
+Inheritance [UnityEngine.MonoBehaviour](https://docs.microsoft.com/en-us/dotnet/api/UnityEngine.MonoBehaviour 'UnityEngine.MonoBehaviour') 🡒 Lists
+### Properties
+
+
+
+## Lists.AllEntities Property
+
+All Entities in the current game, or null if not in a game
+
+```csharp
+public static Entity[] AllEntities { get; }
+```
+
+#### Property Value
+[Il2CppAssets.Scripts.Simulation.Objects.Entity](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Simulation.Objects.Entity 'Il2CppAssets.Scripts.Simulation.Objects.Entity')[[]](https://docs.microsoft.com/en-us/dotnet/api/System.Array 'System.Array')
+
+
+
+## Lists.AllTowers Property
+
+All towers currently placed in the game, or null if not in a game
+
+```csharp
+public static Tower[] AllTowers { get; }
+```
+
+#### Property Value
+[Il2CppAssets.Scripts.Simulation.Towers.Tower](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Simulation.Towers.Tower 'Il2CppAssets.Scripts.Simulation.Towers.Tower')[[]](https://docs.microsoft.com/en-us/dotnet/api/System.Array 'System.Array')
+
+
+
+## Lists.AllTTS Property
+
+All TowerToSimulation objects currently placed in the game, or null if not in a game
+
+```csharp
+public static TowerToSimulation[] AllTTS { get; }
+```
+
+#### Property Value
+[Il2CppAssets.Scripts.Unity.Bridge.TowerToSimulation](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Unity.Bridge.TowerToSimulation 'Il2CppAssets.Scripts.Unity.Bridge.TowerToSimulation')[[]](https://docs.microsoft.com/en-us/dotnet/api/System.Array 'System.Array')
\ No newline at end of file
diff --git a/Documentation/BTD_Mod_Helper.Api.Helpers.ModelHelper_T_.md b/Documentation/BTD_Mod_Helper.Api.Helpers.ModelHelper_T_.md
index 9603d6f95..9605cd554 100644
--- a/Documentation/BTD_Mod_Helper.Api.Helpers.ModelHelper_T_.md
+++ b/Documentation/BTD_Mod_Helper.Api.Helpers.ModelHelper_T_.md
@@ -18,6 +18,7 @@ public abstract class ModelHelper : BTD_Mod_Helper.Api.Helpers.ModelHelper
Inheritance [System.Object](https://docs.microsoft.com/en-us/dotnet/api/System.Object 'System.Object') 🡒 [ModelHelper](BTD_Mod_Helper.Api.Helpers.ModelHelper.md 'BTD_Mod_Helper.Api.Helpers.ModelHelper') 🡒 ModelHelper
Derived
+↳ [AbilityHelper](BTD_Mod_Helper.Api.Helpers.AbilityHelper.md 'BTD_Mod_Helper.Api.Helpers.AbilityHelper')
↳ [AttackHelper](BTD_Mod_Helper.Api.Helpers.AttackHelper.md 'BTD_Mod_Helper.Api.Helpers.AttackHelper')
↳ [ProjectileHelper](BTD_Mod_Helper.Api.Helpers.ProjectileHelper.md 'BTD_Mod_Helper.Api.Helpers.ProjectileHelper')
↳ [WeaponHelper](BTD_Mod_Helper.Api.Helpers.WeaponHelper.md 'BTD_Mod_Helper.Api.Helpers.WeaponHelper')
diff --git a/Documentation/BTD_Mod_Helper.Api.ModOptions.ModSettingDouble.md b/Documentation/BTD_Mod_Helper.Api.ModOptions.ModSettingDouble.md
index 4352ab97a..f242d2110 100644
--- a/Documentation/BTD_Mod_Helper.Api.ModOptions.ModSettingDouble.md
+++ b/Documentation/BTD_Mod_Helper.Api.ModOptions.ModSettingDouble.md
@@ -10,6 +10,9 @@ public class ModSettingDouble : BTD_Mod_Helper.Api.ModOptions.ModSettingNumber')[System.Double](https://docs.microsoft.com/en-us/dotnet/api/System.Double 'System.Double')[>](BTD_Mod_Helper.Api.ModOptions.ModSetting_T_.md 'BTD_Mod_Helper.Api.ModOptions.ModSetting') 🡒 [BTD_Mod_Helper.Api.ModOptions.ModSettingNumber<](BTD_Mod_Helper.Api.ModOptions.ModSettingNumber_T_.md 'BTD_Mod_Helper.Api.ModOptions.ModSettingNumber')[System.Double](https://docs.microsoft.com/en-us/dotnet/api/System.Double 'System.Double')[>](BTD_Mod_Helper.Api.ModOptions.ModSettingNumber_T_.md 'BTD_Mod_Helper.Api.ModOptions.ModSettingNumber') 🡒 ModSettingDouble
+
+Derived
+↳ [ModSettingFloat](BTD_Mod_Helper.Api.ModOptions.ModSettingFloat.md 'BTD_Mod_Helper.Api.ModOptions.ModSettingFloat')
### Fields
@@ -147,6 +150,24 @@ public static BTD_Mod_Helper.Api.ModOptions.ModSettingDouble implicit operator M
#### Returns
[ModSettingDouble](BTD_Mod_Helper.Api.ModOptions.ModSettingDouble.md 'BTD_Mod_Helper.Api.ModOptions.ModSettingDouble')
+
+
+## ModSettingDouble.implicit operator ModSettingDouble(float) Operator
+
+Constructs a new ModSetting with the given value as default
+
+```csharp
+public static BTD_Mod_Helper.Api.ModOptions.ModSettingDouble implicit operator ModSettingDouble(float value);
+```
+#### Parameters
+
+
+
+`value` [System.Single](https://docs.microsoft.com/en-us/dotnet/api/System.Single 'System.Single')
+
+#### Returns
+[ModSettingDouble](BTD_Mod_Helper.Api.ModOptions.ModSettingDouble.md 'BTD_Mod_Helper.Api.ModOptions.ModSettingDouble')
+
## ModSettingDouble.implicit operator double(ModSettingDouble) Operator
diff --git a/Documentation/BTD_Mod_Helper.Api.ModOptions.ModSettingFloat.md b/Documentation/BTD_Mod_Helper.Api.ModOptions.ModSettingFloat.md
new file mode 100644
index 000000000..1b6695391
--- /dev/null
+++ b/Documentation/BTD_Mod_Helper.Api.ModOptions.ModSettingFloat.md
@@ -0,0 +1,12 @@
+#### [BloonsTD6 Mod Helper](README.md 'README')
+### [BTD_Mod_Helper.Api.ModOptions](README.md#BTD_Mod_Helper.Api.ModOptions 'BTD_Mod_Helper.Api.ModOptions')
+
+## ModSettingFloat Class
+
+Alias for [ModSettingDouble](BTD_Mod_Helper.Api.ModOptions.ModSettingDouble.md 'BTD_Mod_Helper.Api.ModOptions.ModSettingDouble')
+
+```csharp
+public class ModSettingFloat : BTD_Mod_Helper.Api.ModOptions.ModSettingDouble
+```
+
+Inheritance [System.Object](https://docs.microsoft.com/en-us/dotnet/api/System.Object 'System.Object') 🡒 [ModSetting](BTD_Mod_Helper.Api.ModOptions.ModSetting.md 'BTD_Mod_Helper.Api.ModOptions.ModSetting') 🡒 [BTD_Mod_Helper.Api.ModOptions.ModSetting<](BTD_Mod_Helper.Api.ModOptions.ModSetting_T_.md 'BTD_Mod_Helper.Api.ModOptions.ModSetting')[System.Double](https://docs.microsoft.com/en-us/dotnet/api/System.Double 'System.Double')[>](BTD_Mod_Helper.Api.ModOptions.ModSetting_T_.md 'BTD_Mod_Helper.Api.ModOptions.ModSetting') 🡒 [BTD_Mod_Helper.Api.ModOptions.ModSettingNumber<](BTD_Mod_Helper.Api.ModOptions.ModSettingNumber_T_.md 'BTD_Mod_Helper.Api.ModOptions.ModSettingNumber')[System.Double](https://docs.microsoft.com/en-us/dotnet/api/System.Double 'System.Double')[>](BTD_Mod_Helper.Api.ModOptions.ModSettingNumber_T_.md 'BTD_Mod_Helper.Api.ModOptions.ModSettingNumber') 🡒 [ModSettingDouble](BTD_Mod_Helper.Api.ModOptions.ModSettingDouble.md 'BTD_Mod_Helper.Api.ModOptions.ModSettingDouble') 🡒 ModSettingFloat
\ No newline at end of file
diff --git a/Documentation/BTD_Mod_Helper.Api.Towers.ModHero.md b/Documentation/BTD_Mod_Helper.Api.Towers.ModHero.md
index 92f96acee..c9f0869c6 100644
--- a/Documentation/BTD_Mod_Helper.Api.Towers.ModHero.md
+++ b/Documentation/BTD_Mod_Helper.Api.Towers.ModHero.md
@@ -139,7 +139,7 @@ The total number of levels this hero has. Do not set this to anything other than
that you've actually created for your Hero.
```csharp
-public abstract int MaxLevel { get; }
+public virtual int MaxLevel { get; }
```
#### Property Value
@@ -369,7 +369,7 @@ Existing hero skins by their skin/tower name
Gets the font material for the default SkinData
```csharp
-public virtual Material GetFontMaterial(System.Collections.Generic.Dictionary skinsByName);
+public virtual string GetFontMaterial(System.Collections.Generic.Dictionary skinsByName);
```
#### Parameters
@@ -380,7 +380,7 @@ public virtual Material GetFontMaterial(System.Collections.Generic.Dictionary
diff --git a/Documentation/BTD_Mod_Helper.Api.Towers.ModTower.md b/Documentation/BTD_Mod_Helper.Api.Towers.ModTower.md
index 1d0cb4758..3e5ddb5cc 100644
--- a/Documentation/BTD_Mod_Helper.Api.Towers.ModTower.md
+++ b/Documentation/BTD_Mod_Helper.Api.Towers.ModTower.md
@@ -105,7 +105,7 @@ public abstract string BaseTower { get; }
The number of upgrades the tower has in it's 3rd / bottom path
```csharp
-public abstract int BottomPathUpgrades { get; }
+public virtual int BottomPathUpgrades { get; }
```
#### Property Value
@@ -185,7 +185,7 @@ public virtual SpriteReference IconReference { get; }
The number of upgrades the tower has in it's 2nd / middle path
```csharp
-public abstract int MiddlePathUpgrades { get; }
+public virtual int MiddlePathUpgrades { get; }
```
#### Property Value
@@ -266,7 +266,7 @@ public virtual int ShopTowerCount { get; }
The number of upgrades the tower has in it's 1st / top path
```csharp
-public abstract int TopPathUpgrades { get; }
+public virtual int TopPathUpgrades { get; }
```
#### Property Value
@@ -310,7 +310,7 @@ Gets the scale to use for a 2d tower at the given tiers
```csharp
-public virtual float Get2DScale(int[] tiers);
+public virtual float Get2DScale(params int[] tiers);
```
#### Parameters
@@ -332,7 +332,7 @@ CardMonkey-230, CardMonkey-X3X, CardMonkey-2XX, CardMonkey
[Get2DScale(int[])](BTD_Mod_Helper.Api.Towers.ModTower.md#BTD_Mod_Helper.Api.Towers.ModTower.Get2DScale(int[]) 'BTD_Mod_Helper.Api.Towers.ModTower.Get2DScale(int[])')
```csharp
-public virtual string Get2DTexture(int[] tiers);
+public virtual string Get2DTexture(params int[] tiers);
```
#### Parameters
@@ -360,7 +360,7 @@ public override void ApplyUpgrade(TowerModel towerModel) {
```
```csharp
-public virtual TowerModel GetBaseTowerModel(int[] tiers);
+public virtual TowerModel GetBaseTowerModel(params int[] tiers);
```
#### Parameters
@@ -385,7 +385,7 @@ Looks for the highest tier [ModUpgrade](BTD_Mod_Helper.Api.Towers.ModUpgrade.md
falling back to the tower's own base [PortraitReference](BTD_Mod_Helper.Api.Towers.ModTower.md#BTD_Mod_Helper.Api.Towers.ModTower.PortraitReference 'BTD_Mod_Helper.Api.Towers.ModTower.PortraitReference') by default.
```csharp
-public SpriteReference GetPortraitReferenceForTiers(int[] tiers);
+public SpriteReference GetPortraitReferenceForTiers(params int[] tiers);
```
#### Parameters
@@ -485,7 +485,7 @@ most 5, the next highest is at most 2, and the last one is 0
Used in the default implementation of [TowerTiers()](BTD_Mod_Helper.Api.Towers.ModTower.md#BTD_Mod_Helper.Api.Towers.ModTower.TowerTiers() 'BTD_Mod_Helper.Api.Towers.ModTower.TowerTiers()')
```csharp
-public virtual bool IsValidCrosspath(int[] tiers);
+public virtual bool IsValidCrosspath(params int[] tiers);
```
#### Parameters
diff --git a/Documentation/BTD_Mod_Helper.Extensions.AbilityModelBehaviorExt.md b/Documentation/BTD_Mod_Helper.Extensions.AbilityModelBehaviorExt.md
index d28daba63..9a53ef3fd 100644
--- a/Documentation/BTD_Mod_Helper.Extensions.AbilityModelBehaviorExt.md
+++ b/Documentation/BTD_Mod_Helper.Extensions.AbilityModelBehaviorExt.md
@@ -163,6 +163,21 @@ public static void RemoveBehavior(this AbilityModel model, T behavior)
`behavior` [T](BTD_Mod_Helper.Extensions.AbilityModelBehaviorExt.md#BTD_Mod_Helper.Extensions.AbilityModelBehaviorExt.RemoveBehavior_T_(thisAbilityModel,T).T 'BTD_Mod_Helper.Extensions.AbilityModelBehaviorExt.RemoveBehavior(this AbilityModel, T).T')
+
+
+## AbilityModelBehaviorExt.RemoveBehaviors(this AbilityModel) Method
+
+Remove all Behaviors of type T
+
+```csharp
+public static void RemoveBehaviors(this AbilityModel model);
+```
+#### Parameters
+
+
+
+`model` [Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel 'Il2CppAssets.Scripts.Models.Towers.Behaviors.Abilities.AbilityModel')
+
## AbilityModelBehaviorExt.RemoveBehaviors(this AbilityModel) Method
diff --git a/Documentation/BTD_Mod_Helper.Extensions.AddBehaviorToBloonModelExt.md b/Documentation/BTD_Mod_Helper.Extensions.AddBehaviorToBloonModelExt.md
index 8ce4f7dcd..d32c5a478 100644
--- a/Documentation/BTD_Mod_Helper.Extensions.AddBehaviorToBloonModelExt.md
+++ b/Documentation/BTD_Mod_Helper.Extensions.AddBehaviorToBloonModelExt.md
@@ -163,6 +163,21 @@ public static void RemoveBehavior(this AddBehaviorToBloonModel model, T behav
`behavior` [T](BTD_Mod_Helper.Extensions.AddBehaviorToBloonModelExt.md#BTD_Mod_Helper.Extensions.AddBehaviorToBloonModelExt.RemoveBehavior_T_(thisAddBehaviorToBloonModel,T).T 'BTD_Mod_Helper.Extensions.AddBehaviorToBloonModelExt.RemoveBehavior(this AddBehaviorToBloonModel, T).T')
+
+
+## AddBehaviorToBloonModelExt.RemoveBehaviors(this AddBehaviorToBloonModel) Method
+
+Remove all Behaviors of type T
+
+```csharp
+public static void RemoveBehaviors(this AddBehaviorToBloonModel model);
+```
+#### Parameters
+
+
+
+`model` [Il2CppAssets.Scripts.Models.Towers.Projectiles.Behaviors.AddBehaviorToBloonModel](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Projectiles.Behaviors.AddBehaviorToBloonModel 'Il2CppAssets.Scripts.Models.Towers.Projectiles.Behaviors.AddBehaviorToBloonModel')
+
## AddBehaviorToBloonModelExt.RemoveBehaviors(this AddBehaviorToBloonModel) Method
diff --git a/Documentation/BTD_Mod_Helper.Extensions.AirUnitModelBehaviorExt.md b/Documentation/BTD_Mod_Helper.Extensions.AirUnitModelBehaviorExt.md
index 81c5dabcc..f824f2770 100644
--- a/Documentation/BTD_Mod_Helper.Extensions.AirUnitModelBehaviorExt.md
+++ b/Documentation/BTD_Mod_Helper.Extensions.AirUnitModelBehaviorExt.md
@@ -197,6 +197,21 @@ The Behavior you want to remove
`behavior` [T](BTD_Mod_Helper.Extensions.AirUnitModelBehaviorExt.md#BTD_Mod_Helper.Extensions.AirUnitModelBehaviorExt.RemoveBehavior_T_(thisAirUnitModel,T).T 'BTD_Mod_Helper.Extensions.AirUnitModelBehaviorExt.RemoveBehavior(this AirUnitModel, T).T')
+
+
+## AirUnitModelBehaviorExt.RemoveBehaviors(this AirUnitModel) Method
+
+Remove all Behaviors of type T
+
+```csharp
+public static void RemoveBehaviors(this AirUnitModel model);
+```
+#### Parameters
+
+
+
+`model` [Il2CppAssets.Scripts.Models.Towers.Behaviors.AirUnitModel](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Behaviors.AirUnitModel 'Il2CppAssets.Scripts.Models.Towers.Behaviors.AirUnitModel')
+
## AirUnitModelBehaviorExt.RemoveBehaviors(this AirUnitModel) Method
diff --git a/Documentation/BTD_Mod_Helper.Extensions.AttackModelBehaviorExt.md b/Documentation/BTD_Mod_Helper.Extensions.AttackModelBehaviorExt.md
index 44b2f1a45..f4c3264c2 100644
--- a/Documentation/BTD_Mod_Helper.Extensions.AttackModelBehaviorExt.md
+++ b/Documentation/BTD_Mod_Helper.Extensions.AttackModelBehaviorExt.md
@@ -197,6 +197,21 @@ The Behavior you want to remove
`behavior` [T](BTD_Mod_Helper.Extensions.AttackModelBehaviorExt.md#BTD_Mod_Helper.Extensions.AttackModelBehaviorExt.RemoveBehavior_T_(thisAttackModel,T).T 'BTD_Mod_Helper.Extensions.AttackModelBehaviorExt.RemoveBehavior(this AttackModel, T).T')
+
+
+## AttackModelBehaviorExt.RemoveBehaviors(this AttackModel) Method
+
+Remove all Behaviors of type T
+
+```csharp
+public static void RemoveBehaviors(this AttackModel model);
+```
+#### Parameters
+
+
+
+`model` [Il2CppAssets.Scripts.Models.Towers.Behaviors.Attack.AttackModel](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Behaviors.Attack.AttackModel 'Il2CppAssets.Scripts.Models.Towers.Behaviors.Attack.AttackModel')
+
## AttackModelBehaviorExt.RemoveBehaviors(this AttackModel) Method
diff --git a/Documentation/BTD_Mod_Helper.Extensions.AttackModelExt.md b/Documentation/BTD_Mod_Helper.Extensions.AttackModelExt.md
index 270c3565d..69fad6241 100644
--- a/Documentation/BTD_Mod_Helper.Extensions.AttackModelExt.md
+++ b/Documentation/BTD_Mod_Helper.Extensions.AttackModelExt.md
@@ -103,7 +103,7 @@ public static System.Collections.Generic.List GetAllProjectiles
## AttackModelExt.RemoveFilter(this AttackModel, FilterModel) Method
-Adds a new filter to this projectile model
+Removes a specific filter from this attack model
```csharp
public static void RemoveFilter(this AttackModel attack, FilterModel filter);
@@ -122,7 +122,7 @@ public static void RemoveFilter(this AttackModel attack, FilterModel filter);
## AttackModelExt.RemoveFilter(this AttackModel) Method
-Adds a new filter to this projectile model
+Removes the first filter of a given type from this attack model
```csharp
public static void RemoveFilter(this AttackModel attack)
diff --git a/Documentation/BTD_Mod_Helper.Extensions.BloonModelBehaviorExt.md b/Documentation/BTD_Mod_Helper.Extensions.BloonModelBehaviorExt.md
index 8809fee1b..8ec17df0f 100644
--- a/Documentation/BTD_Mod_Helper.Extensions.BloonModelBehaviorExt.md
+++ b/Documentation/BTD_Mod_Helper.Extensions.BloonModelBehaviorExt.md
@@ -167,6 +167,21 @@ The Behavior you want to remove
`behavior` [T](BTD_Mod_Helper.Extensions.BloonModelBehaviorExt.md#BTD_Mod_Helper.Extensions.BloonModelBehaviorExt.RemoveBehavior_T_(thisBloonModel,T).T 'BTD_Mod_Helper.Extensions.BloonModelBehaviorExt.RemoveBehavior(this BloonModel, T).T')
+
+
+## BloonModelBehaviorExt.RemoveBehaviors(this BloonModel) Method
+
+Remove all Behaviors of type T
+
+```csharp
+public static void RemoveBehaviors(this BloonModel model);
+```
+#### Parameters
+
+
+
+`model` [Il2CppAssets.Scripts.Models.Bloons.BloonModel](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Bloons.BloonModel 'Il2CppAssets.Scripts.Models.Bloons.BloonModel')
+
## BloonModelBehaviorExt.RemoveBehaviors(this BloonModel) Method
diff --git a/Documentation/BTD_Mod_Helper.Extensions.EmissionModelBehaviorExt.md b/Documentation/BTD_Mod_Helper.Extensions.EmissionModelBehaviorExt.md
index 46d0c2129..60f09ef2c 100644
--- a/Documentation/BTD_Mod_Helper.Extensions.EmissionModelBehaviorExt.md
+++ b/Documentation/BTD_Mod_Helper.Extensions.EmissionModelBehaviorExt.md
@@ -163,6 +163,21 @@ public static void RemoveBehavior(this EmissionModel model, T behavior)
`behavior` [T](BTD_Mod_Helper.Extensions.EmissionModelBehaviorExt.md#BTD_Mod_Helper.Extensions.EmissionModelBehaviorExt.RemoveBehavior_T_(thisEmissionModel,T).T 'BTD_Mod_Helper.Extensions.EmissionModelBehaviorExt.RemoveBehavior(this EmissionModel, T).T')
+
+
+## EmissionModelBehaviorExt.RemoveBehaviors(this EmissionModel) Method
+
+Remove all Behaviors of type T
+
+```csharp
+public static void RemoveBehaviors(this EmissionModel model);
+```
+#### Parameters
+
+
+
+`model` [Il2CppAssets.Scripts.Models.Towers.Behaviors.Emissions.EmissionModel](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Behaviors.Emissions.EmissionModel 'Il2CppAssets.Scripts.Models.Towers.Behaviors.Emissions.EmissionModel')
+
## EmissionModelBehaviorExt.RemoveBehaviors(this EmissionModel) Method
diff --git a/Documentation/BTD_Mod_Helper.Extensions.Il2CppSystemObjectExt.md b/Documentation/BTD_Mod_Helper.Extensions.Il2CppSystemObjectExt.md
index a0772f1e0..b3d69125c 100644
--- a/Documentation/BTD_Mod_Helper.Extensions.Il2CppSystemObjectExt.md
+++ b/Documentation/BTD_Mod_Helper.Extensions.Il2CppSystemObjectExt.md
@@ -70,6 +70,38 @@ The casted object if this is of type T
#### Returns
[System.Boolean](https://docs.microsoft.com/en-us/dotnet/api/System.Boolean 'System.Boolean')
+
+
+## Il2CppSystemObjectExt.Is(this T, T) Method
+
+Check if object is the same type as T
+
+```csharp
+public static bool Is(this T instance, out T castObject)
+ where T : Il2CppObjectBase;
+```
+#### Type parameters
+
+
+
+`T`
+
+Type to check
+#### Parameters
+
+
+
+`instance` [T](BTD_Mod_Helper.Extensions.Il2CppSystemObjectExt.md#BTD_Mod_Helper.Extensions.Il2CppSystemObjectExt.Is_T_(thisT,T).T 'BTD_Mod_Helper.Extensions.Il2CppSystemObjectExt.Is(this T, T).T')
+
+
+
+`castObject` [T](BTD_Mod_Helper.Extensions.Il2CppSystemObjectExt.md#BTD_Mod_Helper.Extensions.Il2CppSystemObjectExt.Is_T_(thisT,T).T 'BTD_Mod_Helper.Extensions.Il2CppSystemObjectExt.Is(this T, T).T')
+
+The casted object if this is of type T
+
+#### Returns
+[System.Boolean](https://docs.microsoft.com/en-us/dotnet/api/System.Boolean 'System.Boolean')
+
## Il2CppSystemObjectExt.IsType(this Object) Method
diff --git a/Documentation/BTD_Mod_Helper.Extensions.PetModelBehaviorExt.md b/Documentation/BTD_Mod_Helper.Extensions.PetModelBehaviorExt.md
index d6db96b6d..b68356c2e 100644
--- a/Documentation/BTD_Mod_Helper.Extensions.PetModelBehaviorExt.md
+++ b/Documentation/BTD_Mod_Helper.Extensions.PetModelBehaviorExt.md
@@ -163,6 +163,21 @@ public static void RemoveBehavior(this PetModel model, T behavior)
`behavior` [T](BTD_Mod_Helper.Extensions.PetModelBehaviorExt.md#BTD_Mod_Helper.Extensions.PetModelBehaviorExt.RemoveBehavior_T_(thisPetModel,T).T 'BTD_Mod_Helper.Extensions.PetModelBehaviorExt.RemoveBehavior(this PetModel, T).T')
+
+
+## PetModelBehaviorExt.RemoveBehaviors(this PetModel) Method
+
+Remove all Behaviors of type T
+
+```csharp
+public static void RemoveBehaviors(this PetModel model);
+```
+#### Parameters
+
+
+
+`model` [Il2CppAssets.Scripts.Models.Towers.Pets.PetModel](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Pets.PetModel 'Il2CppAssets.Scripts.Models.Towers.Pets.PetModel')
+
## PetModelBehaviorExt.RemoveBehaviors(this PetModel) Method
diff --git a/Documentation/BTD_Mod_Helper.Extensions.PowerModelBehaviorExt.md b/Documentation/BTD_Mod_Helper.Extensions.PowerModelBehaviorExt.md
index 929e41700..e1543ee13 100644
--- a/Documentation/BTD_Mod_Helper.Extensions.PowerModelBehaviorExt.md
+++ b/Documentation/BTD_Mod_Helper.Extensions.PowerModelBehaviorExt.md
@@ -163,6 +163,21 @@ public static void RemoveBehavior(this PowerModel model, T behavior)
`behavior` [T](BTD_Mod_Helper.Extensions.PowerModelBehaviorExt.md#BTD_Mod_Helper.Extensions.PowerModelBehaviorExt.RemoveBehavior_T_(thisPowerModel,T).T 'BTD_Mod_Helper.Extensions.PowerModelBehaviorExt.RemoveBehavior(this PowerModel, T).T')
+
+
+## PowerModelBehaviorExt.RemoveBehaviors(this PowerModel) Method
+
+Remove all Behaviors of type T
+
+```csharp
+public static void RemoveBehaviors(this PowerModel model);
+```
+#### Parameters
+
+
+
+`model` [Il2CppAssets.Scripts.Models.Powers.PowerModel](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Powers.PowerModel 'Il2CppAssets.Scripts.Models.Powers.PowerModel')
+
## PowerModelBehaviorExt.RemoveBehaviors(this PowerModel) Method
diff --git a/Documentation/BTD_Mod_Helper.Extensions.ProjectileModelBehaviorExt.md b/Documentation/BTD_Mod_Helper.Extensions.ProjectileModelBehaviorExt.md
index 1f54cc4a1..7f8384583 100644
--- a/Documentation/BTD_Mod_Helper.Extensions.ProjectileModelBehaviorExt.md
+++ b/Documentation/BTD_Mod_Helper.Extensions.ProjectileModelBehaviorExt.md
@@ -197,6 +197,21 @@ The Behavior you want to remove
`behavior` [T](BTD_Mod_Helper.Extensions.ProjectileModelBehaviorExt.md#BTD_Mod_Helper.Extensions.ProjectileModelBehaviorExt.RemoveBehavior_T_(thisProjectileModel,T).T 'BTD_Mod_Helper.Extensions.ProjectileModelBehaviorExt.RemoveBehavior(this ProjectileModel, T).T')
+
+
+## ProjectileModelBehaviorExt.RemoveBehaviors(this ProjectileModel) Method
+
+Remove all Behaviors of type T
+
+```csharp
+public static void RemoveBehaviors(this ProjectileModel model);
+```
+#### Parameters
+
+
+
+`model` [Il2CppAssets.Scripts.Models.Towers.Projectiles.ProjectileModel](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Projectiles.ProjectileModel 'Il2CppAssets.Scripts.Models.Towers.Projectiles.ProjectileModel')
+
## ProjectileModelBehaviorExt.RemoveBehaviors(this ProjectileModel) Method
diff --git a/Documentation/BTD_Mod_Helper.Extensions.ProjectileModelExt.md b/Documentation/BTD_Mod_Helper.Extensions.ProjectileModelExt.md
index 59d30c709..d3bc5cd68 100644
--- a/Documentation/BTD_Mod_Helper.Extensions.ProjectileModelExt.md
+++ b/Documentation/BTD_Mod_Helper.Extensions.ProjectileModelExt.md
@@ -112,7 +112,7 @@ public static System.Collections.Generic.List GetProjectileSims(this
## ProjectileModelExt.RemoveFilter(this ProjectileModel, FilterModel) Method
-Adds a new filter to this projectile model
+Removes a specific filter from this projectile model
```csharp
public static void RemoveFilter(this ProjectileModel projectile, FilterModel filter);
@@ -131,7 +131,7 @@ public static void RemoveFilter(this ProjectileModel projectile, FilterModel fil
## ProjectileModelExt.RemoveFilter(this ProjectileModel) Method
-Adds a new filter to this projectile model
+Removes the first filter of the given type from this projectile model
```csharp
public static void RemoveFilter(this ProjectileModel projectile)
diff --git a/Documentation/BTD_Mod_Helper.Extensions.TowerModelBehaviorExt.md b/Documentation/BTD_Mod_Helper.Extensions.TowerModelBehaviorExt.md
index 4b919b8b0..2d5951752 100644
--- a/Documentation/BTD_Mod_Helper.Extensions.TowerModelBehaviorExt.md
+++ b/Documentation/BTD_Mod_Helper.Extensions.TowerModelBehaviorExt.md
@@ -216,6 +216,21 @@ The Behavior you want to remove
`behavior` [T](BTD_Mod_Helper.Extensions.TowerModelBehaviorExt.md#BTD_Mod_Helper.Extensions.TowerModelBehaviorExt.RemoveBehavior_T_(thisTowerModel,T).T 'BTD_Mod_Helper.Extensions.TowerModelBehaviorExt.RemoveBehavior(this TowerModel, T).T')
+
+
+## TowerModelBehaviorExt.RemoveBehaviors(this TowerModel) Method
+
+Remove all Behaviors
+
+```csharp
+public static void RemoveBehaviors(this TowerModel model);
+```
+#### Parameters
+
+
+
+`model` [Il2CppAssets.Scripts.Models.Towers.TowerModel](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.TowerModel 'Il2CppAssets.Scripts.Models.Towers.TowerModel')
+
## TowerModelBehaviorExt.RemoveBehaviors(this TowerModel) Method
diff --git a/Documentation/BTD_Mod_Helper.Extensions.WeaponModelBehaviorExt.md b/Documentation/BTD_Mod_Helper.Extensions.WeaponModelBehaviorExt.md
index 97c9c7393..dcbf8c9b7 100644
--- a/Documentation/BTD_Mod_Helper.Extensions.WeaponModelBehaviorExt.md
+++ b/Documentation/BTD_Mod_Helper.Extensions.WeaponModelBehaviorExt.md
@@ -167,6 +167,21 @@ The Behavior you want to remove
`behavior` [T](BTD_Mod_Helper.Extensions.WeaponModelBehaviorExt.md#BTD_Mod_Helper.Extensions.WeaponModelBehaviorExt.RemoveBehavior_T_(thisWeaponModel,T).T 'BTD_Mod_Helper.Extensions.WeaponModelBehaviorExt.RemoveBehavior(this WeaponModel, T).T')
+
+
+## WeaponModelBehaviorExt.RemoveBehaviors(this WeaponModel) Method
+
+Remove all Behaviors of type T
+
+```csharp
+public static void RemoveBehaviors(this WeaponModel model);
+```
+#### Parameters
+
+
+
+`model` [Il2CppAssets.Scripts.Models.Towers.Weapons.WeaponModel](https://docs.microsoft.com/en-us/dotnet/api/Il2CppAssets.Scripts.Models.Towers.Weapons.WeaponModel 'Il2CppAssets.Scripts.Models.Towers.Weapons.WeaponModel')
+
## WeaponModelBehaviorExt.RemoveBehaviors(this WeaponModel) Method
diff --git a/Documentation/README.md b/Documentation/README.md
index baf7c5318..4eff89a83 100644
--- a/Documentation/README.md
+++ b/Documentation/README.md
@@ -140,12 +140,15 @@
| Classes | |
| :--- | :--- |
+| [AbilityHelper](BTD_Mod_Helper.Api.Helpers.AbilityHelper.md 'BTD_Mod_Helper.Api.Helpers.AbilityHelper') | A wrapper around AbilityModels for making them easier to create |
| [ActionHelper](BTD_Mod_Helper.Api.Helpers.ActionHelper.md 'BTD_Mod_Helper.Api.Helpers.ActionHelper') | Class for converting actions and functions |
| [AttackHelper](BTD_Mod_Helper.Api.Helpers.AttackHelper.md 'BTD_Mod_Helper.Api.Helpers.AttackHelper') | A wrapper around AttackModels for making them easier to create |
| [CostHelper](BTD_Mod_Helper.Api.Helpers.CostHelper.md 'BTD_Mod_Helper.Api.Helpers.CostHelper') | Helper for scaling costs to difficulties |
| [FileDialogHelper](BTD_Mod_Helper.Api.Helpers.FileDialogHelper.md 'BTD_Mod_Helper.Api.Helpers.FileDialogHelper') | Class to help with the usage of Native File Dialogs |
| [FileIOHelper](BTD_Mod_Helper.Api.Helpers.FileIOHelper.md 'BTD_Mod_Helper.Api.Helpers.FileIOHelper') | Class replacing the original functionality of FileIOUtil before BTD6 update 33.0 |
| [GameModelExporter](BTD_Mod_Helper.Api.Helpers.GameModelExporter.md 'BTD_Mod_Helper.Api.Helpers.GameModelExporter') | Class for handily exporting elements of the GameModel to json files |
+| [Instances](BTD_Mod_Helper.Api.Helpers.Instances.md 'BTD_Mod_Helper.Api.Helpers.Instances') | Provides quick access to many major BTD6 singleton classes |
+| [Lists](BTD_Mod_Helper.Api.Helpers.Lists.md 'BTD_Mod_Helper.Api.Helpers.Lists') | Provides quick access to many major BTD6 object lists |
| [MapHelper](BTD_Mod_Helper.Api.Helpers.MapHelper.md 'BTD_Mod_Helper.Api.Helpers.MapHelper') | Contains helper methods for working with maps and custom maps. |
| [MatchScale](BTD_Mod_Helper.Api.Helpers.MatchScale.md 'BTD_Mod_Helper.Api.Helpers.MatchScale') | Component to make this transform continuously match the scale of another transform |
| [ModelHelper](BTD_Mod_Helper.Api.Helpers.ModelHelper.md 'BTD_Mod_Helper.Api.Helpers.ModelHelper') | A wrapper class around a Model |
@@ -176,6 +179,7 @@
| [ModSettingDouble](BTD_Mod_Helper.Api.ModOptions.ModSettingDouble.md 'BTD_Mod_Helper.Api.ModOptions.ModSettingDouble') | ModSetting for a decimal value |
| [ModSettingEnum<T>](BTD_Mod_Helper.Api.ModOptions.ModSettingEnum_T_.md 'BTD_Mod_Helper.Api.ModOptions.ModSettingEnum') | ModSetting for an Enum value |
| [ModSettingFile](BTD_Mod_Helper.Api.ModOptions.ModSettingFile.md 'BTD_Mod_Helper.Api.ModOptions.ModSettingFile') | ModSetting for selecting a specific file on the host computer |
+| [ModSettingFloat](BTD_Mod_Helper.Api.ModOptions.ModSettingFloat.md 'BTD_Mod_Helper.Api.ModOptions.ModSettingFloat') | Alias for [ModSettingDouble](BTD_Mod_Helper.Api.ModOptions.ModSettingDouble.md 'BTD_Mod_Helper.Api.ModOptions.ModSettingDouble') |
| [ModSettingFolder](BTD_Mod_Helper.Api.ModOptions.ModSettingFolder.md 'BTD_Mod_Helper.Api.ModOptions.ModSettingFolder') | ModSetting for selecting a specific folder on the host computer |
| [ModSettingHotkey](BTD_Mod_Helper.Api.ModOptions.ModSettingHotkey.md 'BTD_Mod_Helper.Api.ModOptions.ModSettingHotkey') | ModSetting for a customizable Hotkey |
| [ModSettingInt](BTD_Mod_Helper.Api.ModOptions.ModSettingInt.md 'BTD_Mod_Helper.Api.ModOptions.ModSettingInt') | ModSetting for int values |