PathsPlusPlus
A helper mod allowing additional upgrade paths and tiers to be made for towers.
Screenshots 3 screenshots
About this mod Author’s original text
Paths++
A helper mod allowing additional upgrade paths to be made for towers.
Toggle "Balanced Mode" to switch from being still only able to get up to 5 upgrades in any one path and 2 in another, vs getting all vanilla upgrades you normally can as well as any/all available Paths++ upgrades.
Toggling off Balanced Mode can also function well with Ultimate Crosspathing, allowing you to get 5/5/5/5... towers (assuming the Mod Creators were keeping it in mind while coding).
Example Mods
doombubbles' Tornado Wizards
doombubbles' Mirror Universe Paths
For Modders: Creating your own Path++ mod
Reference Paths++ in your mod
Add Paths++ as a dependency for your mod within your csproj, which can be done by adding this to your main PropertyGroup:
PathsPlusPlus
Doing this will make sure the PathsPlusPlus dll is referenced properly by your csproj from your Mods folder.
Full.csproj example
net6.0
MirrorUniversePaths
Debug;Release
enable
MirrorUniversePaths
preview
False
embedded
PathsPlusPlus
You should also list Paths++ as a dependency in your ModHelperData, that will look something like this
public static class ModHelperData
{
/... /
public const string Dependencies = "doombubbles/PathsPlusPlus";
}
Doing this will also make your GitHub actions workflow download Paths++ automatically when building.
Old Instructions
The easiest way to reference the PathsPlusPlus dll is to put the following within your.csproj file (BELOW where you import btd6.targets)
$(BloonsTD6)\Mods\PathsPlusPlus.dll
Full.csproj example
net6.0
FourthPath
Debug;Release
enable
FourthPath
latest
false
embedded
$(BloonsTD6)\Mods\PathsPlusPlus.dll
GitHub Actions
To download PathsPlusPlus within GitHub actions, add the following step:
- name: Download PathsPlusPlus
uses: dawidd6/action-download-artifact@v6
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
workflow: build.yml
branch: main
name: PathsPlusPlus.dll
repo: doombubbles/paths-plus-plus
path: ${{ env.BLOONSTD6 }}/Mods/
Create your PathPlusPlus
Each Path++ path begins with creating a very simple class just to register your path.
All it needs to specify is which tower the path is for. UpgradeCount is set automatically based on how many upgrade classes you add.
public class DartMonkeyFourthPath: PathPlusPlus
{
public override string Tower => TowerType.DartMonkey;
}
Similarly to ModTowers from Mod Helper, your UpgradeCount should reflect how many upgrades you've actually made so far.
Extending a Vanilla Path
If you instead want to add additional upgrades to a vanilla path, create your PathPlusPlus with an override for the ExtendVanillaPath property like so.
public class DartMonkeyTopPath: PathPlusPlus
{
public override string Tower => TowerType.DartMonkey;
public override int ExtendVanillaPath => Top;
}
Create your UpgradePlusPlus(s)
For each upgrade you want in your path, you will define an UpgradePlusPlus where the generic parameter ` will be your PathPlusPlus` class above.
public class BetterDarts: UpgradePlusPlus
{
public override int Cost => 50;
public override int Tier => 1;
public override string Icon => VanillaSprites.ArmorPiercingDartsUpgradeIcon;
public override string Description => "Darts can pop Frozen bloons";
public override void ApplyUpgrade(TowerModel towerModel)
{
foreach (var damageModel in towerModel.GetDescendants().ToArray())
{
damageModel.immuneBloonProperties &= ~BloonProperties.Frozen;
}
if (IsHighestUpgrade(towerModel))
{
// apply a custom display, if you want
}
}
}
There are many familiar properties shared from ModUpgrade that all function basically the same, i.e. Cost, Tier, Icon, Description, DisplayName and ApplyUpgrade.
If you do not specify a Portrait, it will try to find an image from your mod with name {Path.Name}{Tier}.png such as DartMonkeyFourthPath1.png, otherwise the default tower portrait will be used.
If your upgrade adds an ability to the tower, override the Ability property to be true so it show
Install & use Install: follow the bundled instructions
- Unzip the archive from playbuff and read the bundled readme / instructions first.
- Most mods rely on the game's mod loader — the usual route is a community mod manager (such as r2modman): pick this game, install, and it handles the loader and dependencies.
- For a manual install, put the mod files into the matching Mod / plugins folder inside the game directory.
- Launch the game to confirm it loaded; mods with listed dependencies need those installed as well.
Install locations vary a lot between mods — the bundled readme is the most reliable guide.
Install these first, or the mod will not work: