Guide to mod BTD Battles

'Otheruser325 is gonna help you mod BTD Battles! Here's all tips, mechanics, upgrade functions and etc to help you with!'

Weapon Mechanics
Although you might be stumbling across BTD Battles and modding it. So I found most of the mechanics for modding BTD Battles. The weapons can be a bit harder to mod unless you learnt these from here!

Projectile
This function allows the tower to throw a projectile. You can change the projectile's sprite, pierce, move slower or faster or more.

For example Dart Monkey throws golden darts, has lots of pierce, distance and speed for its darts.

{  "Type": "DartMonkey", "TargetRange": 100.0, "CooldownTime": 0.75, "FireDelayTime": 0.2, "Tasks": [ {      "Type": "Projectile", "GraphicName": "gold_dart_monkey_dart", "NumPersists": 25, "TerminateOnZeroPersists": true, "CollisionType": "Once", "Movement": { "Type": "Forward", "Speed": 1000.0, "CutOffDistance": 500 },      "Tasks": [ {          "Type": "Damage", "DamageType": "Piercing", "Amount": 1 }      ]     }   ] }

Damage
This function allows the tower to do the damage equally to bloons. You can change the Damage Type to Piercing, Fire, Plasma, etc.

For example Dart Monkey's darts can pop Lead Bloons and do 5 layers of damage plus extra damage to MOABs.

{  "Type": "DartMonkey", "TargetRange": 100.0, "CooldownTime": 0.75, "FireDelayTime": 0.2, "Tasks": [ {      "Type": "Projectile", "GraphicName": "dart_monkey_dart", "NumPersists": 1, "TerminateOnZeroPersists": true, "CollisionType": "Once", "Movement": { "Type": "Forward", "Speed": 805.0, "CutOffDistance": 161 },      "Tasks": [ {          "Type": "Damage", "DamageType": "Plasma", "Amount": 5 },        {           "Type": "StatusEffect", "Status": "MultiLayerDamage" },        {           "Type": "Damage", "DamageType": "MOABMauler", "Amount": 5 }      ]     }   ] }

StatusEffect
This function allows status effects for the tower's attacks or elsewhere. It comes in handy for something you want to make a tower that can apply status effects to bloons. Read the Status Effects page to find out more about the status effects that you want to use for your towers or powers.

MultiFire
This function allows you to set how many projectiles the tower shoots. You can also change the angle and offsets there.

For example Dart Monkey shoots 5 darts.

{   "Type": "DartMonkey", "TargetRange": 100.0, "CooldownTime": 0.75, "FireDelayTime": 0.2, "Tasks": [ {      "Type": "MultiFire", "InitialOffset": -7.5, "AngleIncrement": 7.5, "FireCount": 5, "Tasks": [ {          "Type": "Projectile", "GraphicName": "dart_monkey_dart", "NumPersists": 1, "TerminateOnZeroPersists": true, "CollisionType": "Once", "Movement": { "Type": "Forward", "Speed": 805.0, "CutOffDistance": 161 },          "Tasks": [ {              "Type": "Damage", "DamageType": "Piercing", "Amount": 1 }          ]         }       ]     }   ] }

TimerFire
This function allows the tower to shoot in a delay or initial or maybe burst fire. You can also disable or enable burst loops. Initial time makes the weapon act like Fire Delay Time, but it can be used differently.

For example Dart Monkey throws a burst of 3 darts at a time.

{   "Type": "DartMonkey", "TargetRange": 100.0, "CooldownTime": 0.75, "FireDelayTime": 0.2, "Tasks": [ {      "Type": "TimerFire", "TimeDelay": 0.1, "InitialTime": 0, "Loops": true, "NumLoops": 2, "Tasks": [ {          "Type": "Projectile", "GraphicName": "dart_monkey_dart", "NumPersists": 1, "TerminateOnZeroPersists": true, "CollisionType": "Once", "Movement": { "Type": "Forward", "Speed": 805.0, "CutOffDistance": 161 },          "Tasks": [ {              "Type": "Damage", "DamageType": "Piercing", "Amount": 1 }          ]         }       ]     }   ] }

AreaOfEffect
This function allows projectiles from towers like Bomb Shooter to explode in a area splash radius.

For example Dart Monkeys have AOE on darts:

{   "Type": "DartMonkey", "TargetRange": 100.0, "CooldownTime": 0.75, "FireDelayTime": 0.2, "Tasks": [ {      "Type": "Projectile", "GraphicName": "dart_monkey_dart", "NumPersists": 1, "ForcePersists": true, "TerminateOnZeroPersists": true, "CollisionType": "Once", "Movement": { "Type": "Forward", "Speed": 805.0, "CutOffDistance": 161 },      "Tasks": [ {          "Type": "AreaOfEffect", "Range": 60, "MaxTargets": 40, "Tasks": [ {              "Type": "Damage", "DamageType": "Explosive", "Amount": 1 }          ]         },         {            "Type": "Effect", "SpriteFile": "Explosion.json", "Audio": "EXPLOSION", "Scale": 0.635 }      ]     }   ] }

TargetAlLBloonsInRange
This function is the same like the AreaOfEffect function but a bit different because the splash can affect infinite bloons.

For example Dart Monkeys have infinite AOE pierce on darts:

{   "Type": "DartMonkey", "TargetRange": 100.0, "CooldownTime": 0.75, "FireDelayTime": 0.2, "Tasks": [ {      "Type": "Projectile", "GraphicName": "dart_monkey_dart", "NumPersists": 1, "ForcePersists": true, "TerminateOnZeroPersists": true, "CollisionType": "Once", "Movement": { "Type": "Forward", "Speed": 805.0, "CutOffDistance": 161 },      "Tasks": [ {          "Type": "TargetAlLBloonsInRange", "Range": 100.0, "Tasks": [ {              "Type": "Damage", "DamageType": "Plasma", "Amount": 1 }          ]         },         {            "Type": "Effect", "SpriteFile": "Explosion.json", "Audio": "EXPLOSION", "Scale": 0.635 }      ]     }   ] }

ChainTasks
This function allows an tower to create lightning that can hit bloons on impact. It works magically on Projectiles, Explosions and more.

For example Dart Monkey fires out lightning darts which causes bloons to wreak havoc:

{   "Type": "DartMonkey", "TargetRange": 100.0, "CooldownTime": 0.75, "FireDelayTime": 0.2, "Tasks": [ {      "Type": "Projectile", "GraphicName": "dart_monkey_dart", "NumPersists": 1, "ForcePersists": true, "TerminateOnZeroPersists": true, "CollisionType": "Once", "Movement": { "Type": "Forward", "Speed": 805.0, "CutOffDistance": 161 },      "Tasks": [ {          "Type": "Damage", "DamageType": "Piercing", "Amount": 1 },        {           "Type": "ChainTasks", "NumPersists": 4, "NumJumps": 3, "CutOffDistance": 240, "Tasks": [ {              "Type": "Damage", "DamageType": "Plasma", "Amount": 1 }          ]         }       ]     }   ] }

Collectable
This function allows the tower to spawn a collectable item so you can collect for money, lives, etc. Don't forget to add a TextEffect typed function for you to see it whenever you collect a collectible.

For example Dart Monkey only activates and spawns collectibles like darts when bloons are nearby him.

{   "Type": "DartMonkey", "TargetRange": 100.0, "CooldownTime": 0.75, "FireDelayTime": 0.2, "Tasks": [ {      "Type": "Collectable", "GraphicName": "dart_monkey_dart", "Duration": 15, "MoneyRange": [ 10,        10       ],       "MoneyMultiplier": 1.0, "CollectionRadius": 50, "AutoCollect": false, "Movement": { "Type": "Forward", "Speed": 250, "KeepOnScreen": true, "SpeedDecay": 0.95 },      "Tasks": [ {          "Type": "TextEffect", "Text": "", "Font": "oetztype_24_black_stroke", "Colour": [ 1.0,            1.0,             1.0           ],           "Movement": { "Type": "Forward", "Direction": [ 0,              -1             ],             "Speed": 20, "CutOffDistance": 30 }        }       ]     }   ] }

ScreenWipe
This function allows the tower spawn projectiles from the upper side of the map, which will cause chaos but you can edit the number of projectiles, delay and speed multiplier. It requires a projectile function on the backend of the function or the game will instantly crash!

For example Dart Monkey releases 20 darts from the sky but random speed and long delay:

{  "Type": "DartMonkey", "TargetRange": 100.0, "CooldownTime": 4.8, "FireDelayTime": 0.2, "Tasks": [ {      "Type": "ScreenWipe", "Count": 20, "Duration": 2.0, "SpeedMultiplierRange": [ 0.5,        2.0       ],       "Tasks": [ {          "Type": "Projectile", "GraphicName": "dart_monkey_dart", "NumPersists": 3, "TerminateOnZeroPersists": true, "CollisionType": "Once", "Movement": { "Type": "Forward", "Speed": 750.0, "CutOffDistance": 500 },          "Tasks": [ {              "Type": "Damage", "DamageType": "Piercing", "Amount": 1 }          ]         }       ]     }   ] }

IncomeChange
This function allows the tower to give you Eco every round. It is used on some Economy Powers, but you can use that on towers. You can modify both Maximum Eco and how much Eco per round.

For example Dart Monkey will obtain 2 Eco every time darts hit a bloon but the maximum Eco per round cap is 2:

{  "Type": "DartMonkey", "TargetRange": 100.0, "CooldownTime": 1.0, "FireDelayTime": 0.2, "Tasks": [ {      "Type": "Projectile", "GraphicName": "dart_monkey_dart", "NumPersists": 1, "TerminateOnZeroPersists": true, "CollisionType": "Once", "Movement": { "Type": "Forward", "Speed": 750.0, "CutOffDistance": 500 },      "Tasks": [ {          "Type": "IncomeChange", "MoneyPerRound": 2, "MaxMoney": 2 }      ]     }   ] }

MoneyChange
This function is the same but similarly works like IncomeChange but you'll earn cash instead of Eco.

For example Dart Monkey will obtain 5 cash every time darts hit a bloon but the maximum Cash per round cap is 5:

{  "Type": "DartMonkey", "TargetRange": 100.0, "CooldownTime": 1.0, "FireDelayTime": 0.2, "Tasks": [ {      "Type": "Projectile", "GraphicName": "dart_monkey_dart", "NumPersists": 1, "TerminateOnZeroPersists": true, "CollisionType": "Once", "Movement": { "Type": "Forward", "Speed": 750.0, "CutOffDistance": 500 },      "Tasks": [ {          "Type": "MoneyChange", "MoneyPerRound": 5, "MaxMoney": 5 }      ]     }   ] }

ApplyBloonSpawnModifier
This function would allow Bloon health or speed buffs/nerfs. Despite the outcome of this function, this would be best suited for Powers and Abilities. When editing the Affects thingy, you can choose PlayerSent, Natural or All. Even you can change things like health, speed or duration beforehand.

For example Dart Monkey will occur a speed buff and bloon cost nerf for 15 seconds to everything on your side every 30 seconds:

{  "Type": "DartMonkey", "TargetRange": 100000.0, "CooldownTime": 30.0, "FireDelayTime": 0.0, "CanFireWithNoTargetsAndRoundInProgress": true, "RequiresTargetToFire": false, "Tasks": [ {      "Type": "ApplyBloonSpawnModifier", "Duration": 15, "SpeedMultiplier": 1.25, "HealthMultiplier": 1.0, "BloonCostMultiplier": 0.5, "IncomeNegativeMultiplier": 0.5, "Affects": "All", "ParticleEffect": "bloon_boost_status.json" }  ] }

GrantCashPerPop
This function allows bloons to give you money when they are popped. It is straightforward to use in an tower, but you can edit the duration of how long the money per bloon pop expires.

For example Dart Monkey will obtain 1 money per pop passive but stacks at once with a low period:

{  "Type": "DartMonkey", "TargetRange": 100.0, "CooldownTime": 1.0, "FireDelayTime": 0.2, "Tasks": [ {      "Type": "Projectile", "GraphicName": "dart_monkey_dart", "NumPersists": 1, "TerminateOnZeroPersists": true, "CollisionType": "Once", "Movement": { "Type": "Forward", "Speed": 750.0, "CutOffDistance": 500 },      "Tasks": [ {          "Type": "GrantCashPerPop", "Amount": 1, "Duration": 3.0 }      ]     }   ] }

WeaponBurstFire
This function is never used in any mods. What it does you can supercharge a tower to attack and load tons of shots for a short duration.

For example Dart Monkey would give a superweapon buff to the Tack Shooter when its projectile hits a bloon:

{  "Type": "DartMonkey", "TargetRange": 100.0, "CooldownTime": 10.0, "FireDelayTime": 0.2, "Tasks": [ {      "Type": "Projectile", "GraphicName": "dart_monkey_dart", "NumPersists": 1, "TerminateOnZeroPersists": true, "CollisionType": "Once", "Movement": { "Type": "Forward", "Speed": 750.0, "CutOffDistance": 500 },      "Tasks": [ {          "Type": "WeaponBurstFire", "MaxShotsMult": 2.0, "TargetingFilter": { "Include": { "TowerType": [ "TackTower" ]            }           }         }       ]     }   ] }

IncomeTax
This function makes your opponent gets income taxed when a tower/power/ability triggers the effect.

For example Dart Monkey will trigger Income Tax when a projectile hits a bloon:

{  "Type": "DartMonkey", "TargetRange": 100.0, "CooldownTime": 5.0, "FireDelayTime": 0.2, "Tasks": [ {      "Type": "Projectile", "GraphicName": "dart_monkey_dart", "NumPersists": 1, "TerminateOnZeroPersists": true, "CollisionType": "Once", "Movement": { "Type": "Forward", "Speed": 750.0, "CutOffDistance": 500 },      "Tasks": [ {          "Type": "IncomeTax" }      ]     }   ] }

IncomeOverTime
This function makes your Eco get amplified before the next Eco tick happens. This wasn't used in 95% of BTDB mods, but it'll surely make your Eco go up by an insane amount!

For example Dart Monkey amplify your Eco by 10% when he hits a bloon:

{  "Type": "DartMonkey", "TargetRange": 100.0, "CooldownTime": 1.0, "FireDelayTime": 0.2, "Tasks": [ {      "Type": "Projectile", "GraphicName": "dart_monkey_dart", "NumPersists": 1, "TerminateOnZeroPersists": true, "CollisionType": "Once", "Movement": { "Type": "Forward", "Speed": 750.0, "CutOffDistance": 500 },      "Tasks": [ {          "Type": "IncomeOverTime", "NumPersists": 1, "IncomeMultiplier": 0.1 }      ]     }   ] }

AddCashMult
This function wasn't used in any BTDB mods, but works similarly unlike other Eco mechanics but you can boost your Eco globally or make your Eco boost passively for a short time. Also you can backlist other Eco sources so they won't get affected by it (whilst other Eco sources gets whitelisted).

For example Dart Monkey boosts Eco for all sources globally by a tiny amount:

{  "Type": "DartMonkey", "TargetRange": 100.0, "CooldownTime": 1.0, "FireDelayTime": 0.2, "Tasks": [ {      "Type": "Projectile", "GraphicName": "dart_monkey_dart", "NumPersists": 1, "TerminateOnZeroPersists": true, "CollisionType": "Once", "Movement": { "Type": "Forward", "Speed": 750.0, "CutOffDistance": 500 },      "Tasks": [ {          "Type": "AddCashMult", "MoneySourceBlacklist": [], "Multiplier": 1.01, "DurationTime": 999999 }      ]     }   ] }

CreateTower
This function allows you to create towers which lasts for a limited time. Sometimes using it incorectly will occur a game crash, so carefully edit it and make it so it can create a valid tower onscreen.

For example Dart Monkey creates copies of Super Monkeys every 5 seconds:

{  "Type": "DartMonkey", "TargetRange": 130.0, "CooldownTime": 5.0, "FireDelayTime": 0.0, "Tasks": [ {      "Type": "RandomFire", "Range": 130, "MinimumRange": 20, "FireFullRange": false, "OnlyTargetPlacementLocations": true, "PlacementTowerType": "SuperMonkey", "TargetIsWeaponTaskOrigin": true, "Tasks": [ {          "Type": "Effect", "SpriteFile": "engineer_sentry_spawn_red.json", "Scale": 1.0, "DrawLayer": "UnderTowers", "LoopForever": false, "Duration": 0.45, "Tasks": [ {              "Type": "CreateTower", "TowerType": "SuperMonkey", "TowerColour": [ 255,                255,                 255,                 255               ],               "TowerLifetime": 25, "HasParentTower": true, "UseParentTowerUpgradeLevel": true, "Tasks": [ {                  "Type": "Effect", "SpriteFile": "engineer_sentry_destruct_red.json", "Scale": 1.0, "DrawLayer": "UnderTowers", "LoopForever": false, "Duration": 0.4 }              ]             }           ]         }       ]     }   ] }

CreateAtPathPoint
This function wasn't used in 95% of BTDB mods, but what it does is create a projectile on the path point (which is the end of the map). It can be an awesomely cool function for the map, which the projectile or spike can block the exit.

For example Dart Monkey creates a superdart which blocks 10,000 pierce but extra MOAB damage and Multilayer damage:

{  "Type": "DartMonkey", "TargetRange": 100.0, "CooldownTime": 1.0, "FireDelayTime": 0.2, "Tasks": [ {      "Type": "CreateAtPathPoint", "Tasks": [ {          "Type": "Projectile", "GraphicName": "silver_dart_monkey_dart", "NumPersists": 10000, "TerminateOnZeroPersists": true, "CollisionType": "Once", "Tasks": [ {              "Type": "Damage", "DamageType": "Plasma", "Amount": 2 },            {               "Type": "StatusEffect", "Status": "MultiLayerDamage" },            {               "Type": "Damage", "DamageType": "MOABMauler", "Amount": 23 }          ]         }       ]     }   ] }

OverclockTask
This function wasn't used in most of the BTDB mods, but it overclocks an tower depending on your choice. Works best on Powers and Abilities, but you can add TowerModifier to make it boost better, don't add projectiles or anything apart from buffs on this mechanic otherwise the game will instantly crash!

For example Dart Monkey can supercharge an tower for double pierce every minute but Farms will get 25% more cash:

{  "Type": "DartMonkey", "TargetRange": 100.0, "CooldownTime": 60.0, "FireDelayTime": 0.0, "Tasks": [ {      "Type": "OverclockTask", "Tasks": [ {          "Type": "TowerModifier", "Range": 20, "PriorityLevel": 3, "ReplacesPriorityLevel": true, "TerminateOnUserUpgrade": false, "ApplyToUserTower": false, "TargetIsWeaponTaskOrigin": true, "CanApplyToUserTower": true, "Duration": 60, "Modifier": { "PoppingPower": [ 2,              0             ]           }          },         {           "Type": "TowerModifier", "Range": 20, "PriorityLevel": 3, "ReplacesPriorityLevel": true, "TerminateOnUserUpgrade": false, "ApplyToUserTower": false, "TargetIsWeaponTaskOrigin": true, "CanApplyToUserTower": true, "Duration": 60, "TargetingFilter": { "Include": { "TowerType": [ "BananFarm" ]            }           },           "Modifier": { "CollectableMoney": [ 1.25,              0             ]           }         },         {           "Type": "Effect", "SpriteFile": "overclocked_tower.json", "Scale": 0.635, "LoopCount": 30, "AppliedToTower": true }      ]     }   ] }