Guide to mod BTD Battles

***"BTD Battles Modding Tutorial" redirects here.***

**Otheruser325 is gonna help you mod BTD Battles! Here's all tips, mechanics, upgrade functions and etc to help you with and get you started and introduced into modding!**

## **Password for BTDB**

The latest password for the data.jet is CA5562320992962D (v6.18.2). Copy the password and paste it on the 7-Zip Entering Password Section and then hit Enter. If you don't have 7-Zip, download it by clicking here.

## **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": [
                "BananaFarm"
              ]
            }
          },
          "Modifier": {
            "CollectableMoney": [
              1.25,
              0
            ]
          }
        },
        {
          "Type": "Effect",
          "SpriteFile": "overclocked_tower.json",
          "Scale": 0.635,
          "LoopCount": 30,
          "AppliedToTower": true
        }
      ]
    }
  ]
}

```

### **CollectCollectables**

This function allows the tower to collect collectables such as bananas from Banana Farms and others such as Live Crates.

For example Dart Monkey can collect collectibles from other towers who spawn collectibles but cannot attack.

```
{
  "Type": "DartMonkey",
  "TargetRange": 160,
  "CooldownTime": 0.0,
  "FireDelayTime": 0.0,
  "RequiresTargetToFire": false,
  "Tasks": [
    {
      "Type": "CollectCollectables",
      "Range": 250,
      "Speed": 500,
      "CollectionDelay": 0.25,
      "AnimateOnCollection": true
    }
  ]
}

```

### **ChangeTerrain**

This function allows the tower to change the current terrain nearby its radius, such as allowing other towers to be placed on water.

For example Dart Monkey won't attack, but allows any tower to be placed nearby its radius in a 75 area radius on even water.

```
{
  "Type": "DartMonkey",
  "TargetRange": 90,
  "CooldownTime": 0.0,
  "FireDelayTime": 0.0,
  "RequiresTargetToFire": false,
  "Tasks": [
    {
      "Type": "ChangeTerrain",
      "Area": [
        75,
        75
      ],
      "Mask": []
    }
  ]
}

```

### **LaunchAircraft**

This function allows the tower to call in an aircraft tower which can be changed as well. You can adjust the maximum amount of aircraft and adjust the flight patterns or tower type etc.

For example Dart Monkey will call in Supply Drop Planes every 2 seconds which uses target path to constantly drop crates when chasing Bloons.

```
{
  "Type": "DartMonkey",
  "TargetRange": 500,
  "CooldownTime": 2.0,
  "FireDelayTime": 0.0,
  "Tasks": [
    {
      "Type": "LaunchAircraft",
      "Aircraft": "SupplyDropPlane.tower",
      "MaxAircraft": 3,
      "UseTargetPath": true
    }
  ]
}

```

## **How to make new upgrades?**

This is a highly-requested topic since a lot of people do want at least more upgrades for their mods. Here's how you can make new upgrades.

### **Guide 1**

Be sure to check out this video, albeit for BTD5, but hence it will still work in BTDB! https://www.youtube.com/watch?v=8s0YYXjvFEE

### **Guide 2**

* Go to any tower you'd wish to modify (e.g. Dart Monkey).
	+ Then, TowerDefinitions and start writing new upgrades from the line of JSON code. It should be like this:

```
{
  "AircraftList": [],
  "BaseCost": 200,
  "CanBePlacedInWater": false,
  "CanBePlacedOnLand": true,
  "CanBePlacedOnPath": false,
  "CanTargetCamo": false,
  "DefaultWeapons": [
    "DartMonkey.weapon",
    "FanClubDart.weapon",
    "",
    "",
    "TestWeapon.weapon",
    "SunGod.weapon"
  ],
  "ActiveWeaponSlots": [
    true,
    false,
    true,
    true,
    false,
    false
  ],
  "Description": "Shoots a single dart that pops a single bloon.",
  "Icon": "dart_monkey_avatar_small",
  "PlacementH": 0.0,
  "PlacementRadius": 8.0,
  "PlacementW": 0.0,
  "RankToUnlock": 0,
  "RotatesToTarget": true,
  "TargetIsWeaponOrigin": false,
  "TargetingMode": "First",
  "TargetsManually": false,
  "TypeName": "DartMonkey",
  "Upgrades": [
    [
      "Long Range Darts",
      "Enhanced Eyesight",
      "Spike-O-Pult",
      "Juggernaut",
      "Ultra Juggernaut",
      "Giga Juggernaut"
    ],
    [
      "Sharp Shots",
      "Razor Sharp Shots",
      "Triple Darts",
      "Super Monkey Fan Club",
      "Plasma Monkey Fan Club",
      "Sun God Monkey Fan Club"
    ]
  ],
  "ShortUpgradeDescriptions": [
    [
      "",
      "",
      "",
      "",
      "",
      ""
    ],
    [
      "",
      "",
      "",
      "",
      "",
      ""
    ]
  ],
  "UpgradeDescriptions": [
    [
      "Makes the Dart Monkey shoot further than normal.",
      "Shoots even further and can detect camo.",
      "Catapult fires spiked balls that can pop 40 bloons.",
      "Hurls a giant spiked ball that excels at crushing ceramics.",
      "Gigantic spiked ball splits twice into 6 Juggernaut balls for even more destructive power.",
      "QUADRUPLE the Juggernaut power!!!!"
    ],
    [
      "Can pop 1 extra bloon per shot.",
      "Can pop 2 extra bloons per shot.",
      "Throws 3 darts at a time instead of 1.",
      "Ability: up to 10 nearby dart monkeys go Super for 13 seconds.",
      "Elite membership of this club grants the Dart Monkeys even more power!",
      "Ultimate membership affects ALL Dart Monkeys onscreen and transforms into the most nefarious of all, the Sun God."
    ]
  ],
  "UpgradeGateway": [
    [
      {
        "Rank": 0,
        "XP": 0
      },
      {
        "Rank": 0,
        "XP": 0
      },
      {
        "Rank": 70,
        "XP": 35
      },
      {
        "Rank": 300,
        "XP": 55
      },
      {
        "Rank": 0,
        "XP": 0
      },
      {
        "Rank": 0,
        "XP": 0
      }
    ],
    [
      {
        "Rank": 0,
        "XP": 0
      },
      {
        "Rank": 0,
        "XP": 0
      },
      {
        "Rank": 0,
        "XP": 0
      },
      {
        "Rank": 0,
        "XP": 0
      },
      {
        "Rank": 0,
        "XP": 0
      },
      {
        "Rank": 0,
        "XP": 0
      }
    ]
  ],
  "UpgradePrices": [
    [
      90,
      160,
      500,
      1900,
      16000,
      80000
    ],
    [
      140,
      170,
      475,
      8000,
      50000,
      350000
    ]
  ],
  "UpgradeIcons": [
    [
      "dart_monkey_longer_range_icon",
      "dart_monkey_enhanced_eyesight_icon",
      "dart_monkey_spikeopult_icon",
      "dart_monkey_juggernaut_icon",
      "dart_monkey_ultra_juggernaut_icon",
      "dart_monkey_ultra_juggernaut_icon"
    ],
    [
      "dart_monkey_sharp_shots_icon",
      "dart_monkey_razor_icon",
      "dart_monkey_triple_icon",
      "dart_monkey_fanclub_icon",
      "dart_monkey_plasmafanclub_icon",
      "dart_monkey_plasmafanclub_icon"
    ]
  ],
  "UpgradeAvatars": [
    [
      "dart_monkey_avatar_increased_range_small",
      "dart_monkey_avatar_enhanced_eyesight_small",
      "dart_monkey_avatar_spikeopult_small",
      "dart_monkey_avatar_juggernaut_small",
      "dart_monkey_avatar_ultra_juggernaut_small",
      "dart_monkey_avatar_ultra_juggernaut_small"
    ],
    [
      "dart_monkey_avatar_sharp_shots_small",
      "dart_monkey_avatar_razor_sharp_small",
      "dart_monkey_avatar_triple_shot_small",
      "dart_monkey_avatar_supermonkey_fanclub_small",
      "dart_monkey_avatar_plasmamonkey_fanclub_small",
      "dart_monkey_avatar_plasmamonkey_fanclub_small"
    ]
  ],
  "UseRadiusPlacement": true,
  "SpriteUpgradeDefinition": "DartMonkey.json"
}

```

* Then, go to UpgradeDefinitions and then that type of tower you've modified with from the TowerDefinitions. The upgrades should look this this with minor modification from adding new lines of upgrade code:

```
{
 "Upgrades": [
   {
     "Name": "Long Range Darts",
     "WeaponUpgrade": {
       "SlotIndices": [
         0,
         1,
         4,
         5,
         6
       ],
       "Adjust": {
         "TargetRange": 25
       },
       "TaskUpgrade": [
         {
           "Operation": "SelectByType",
           "Type": "Projectile"
         },
         {
           "Operation": "Adjust",
           "Movement": {
             "Type": "Forward",
             "CutOffDistance": 25
           }
         }
       ]
     }
   },
   {
     "Name": "Enhanced Eyesight",
     "TowerUpgrade": {
       "Replace": {
         "CanTargetCamo": true
       }
     },
     "WeaponUpgrade": {
       "SlotIndices": [
         0,
         1,
         4,
         5,
         6
       ],
       "Adjust": {
         "TargetRange": 25
       },
       "TaskUpgrade": [
         {
           "Operation": "SelectByType",
           "Type": "Projectile"
         },
         {
           "Operation": "Adjust",
           "Movement": {
             "Type": "Forward",
             "CutOffDistance": 25
           }
         }
       ]
     }
   },
   {
     "Name": "Spike-O-Pult",
     "TowerUpgrade": {
       "Weapons": {
         "0": "",
         "6": "SpikeOPult.weapon"
       }
     }
   },
   {
     "Name": "Juggernaut",
     "TowerUpgrade": {
       "Weapons": {
         "6": "Juggernaut.weapon"
       }
     }
   },
   {
     "Name": "Ultra Juggernaut",
     "WeaponUpgrades": [
       {
         "SlotIndex": 6,
         "Adjust": {
           "TargetRange": 10
         },
         "TaskUpgrade": [
           {
             "Operation": "SelectByLocation",
             "Location": [
               0
             ]
           },
           {
             "Operation": "Replace",
             "GraphicName": "ultra_juggernaut_ball",
             "NumPersists": 100,
             "Radius": 25,
             "SpinRate": 750,
             "DisabledTasks": []
           },
           {
             "Operation": "SelectByLocation",
             "Location": [
               0,
               0
             ]
           },
           {
             "Operation": "Replace",
             "Amount": 6
           }
         ]
       }
     ]
   },
   {
     "Name": "Giga Juggernaut",
     "WeaponUpgrades": [
       {
         "SlotIndex": 6,
         "Adjust": {
           "TargetRange": 5,
           "CooldownTime": -0.2
         },
         "TaskUpgrade": [
           {
             "Operation": "SelectByLocation",
             "Location": [
               0
             ]
           },
           {
             "Operation": "Replace",
             "NumPersists": 200,
             "Radius": 30,
             "SpinRate": 850,
             "Movement": {
               "Type": "Forward",
               "Speed": 750.0,
               "CutOffDistance": 850,
               "KeepOnScreen": true
             }
           },
           {
             "Operation": "SelectByLocation",
             "Location": [
               0,
               0
             ]
           },
           {
             "Operation": "Replace",
             "Amount": 20
           },
           {
             "Operation": "SelectByLocation",
             "Location": [
               0,
               2
             ]
           },
           {
             "Operation": "Replace",
             "Amount": 30
           },
           {
             "Operation": "SelectByLocation",
             "Location": [
               0,
               3
             ]
           },
           {
             "Operation": "Replace",
             "InitialOffset": 33.75,
             "AngleIncrement": 67.5,
             "FireCount": 12
           },
           {
             "Operation": "SelectByLocation",
             "Location": [
               0,
               3,
               0
             ]
           },
           {
             "Operation": "Replace",
             "NumPersists": 50,
             "Radius": 10,
             "Movement": {
               "Type": "Forward",
               "Speed": 805.0,
               "CutOffDistance": 1500,
               "KeepOnScreen": true
             }
           },
           {
             "Operation": "SelectByLocation",
             "Location": [
               0,
               3,
               0,
               0
             ]
           },
           {
             "Operation": "Replace",
             "Amount": 10
           },
           {
             "Operation": "SelectByLocation",
             "Location": [
               0,
               3,
               0,
               2
             ]
           },
           {
             "Operation": "Replace",
             "Amount": 10
           }
         ]
       }
     ]
   },
   {
     "Name": "Sharp Shots",
     "WeaponUpgrade": {
       "SlotIndices": [
         0,
         1,
         4,
         5,
         6
       ],
       "TaskUpgrade": [
         {
           "Operation": "SelectByType",
           "Type": "Projectile"
         },
         {
           "Operation": "Adjust",
           "NumPersists": 1
         }
       ]
     }
   },
   {
     "Name": "Razor Sharp Shots",
     "WeaponUpgrade": {
       "SlotIndices": [
         0,
         1,
         4,
         5,
         6
       ],
       "TaskUpgrade": [
         {
           "Operation": "SelectByType",
           "Type": "Projectile"
         },
         {
           "Operation": "Adjust",
           "NumPersists": 2
         }
       ]
     }
   },
   {
     "Name": "Triple Darts",
     "TowerUpgrade": {
       "Weapons": {
         "0": "TripleDarts.weapon"
       }
     },
     "WeaponUpgrade": {
       "SlotIndex": 0,
       "TaskUpgrade": [
         {
           "Operation": "SelectByLocation",
           "Location": [
             1,
             0
           ]
         },
         {
           "Operation": "Replace",
           "NumPersists": 4
         },
         {
           "Operation": "Adjust",
           "Movement": {
             "Type": "Forward",
             "CutOffDistance": 25
           },
           "RequiresMinUpgradeCounters": [
             1,
             0
           ]
         },
         {
           "Operation": "Adjust",
           "Movement": {
             "Type": "Forward",
             "CutOffDistance": 25
           },
           "RequiresMinUpgradeCounters": [
             2,
             0
           ]
         }
       ]
     }
   },
   {
     "Name": "Super Monkey Fan Club",
     "TowerUpgrade": {
       "Weapons": {
         "2": "SuperMonkeyFanClub.weapon"
       }
     }
   },
   {
     "Name": "Plasma Monkey Fan Club",
     "WeaponUpgrades": [
       {
         "SlotIndex": 2,
         "TaskUpgrade": [
           {
             "Operation": "SelectByType",
             "Type": "TowerModifier"
           },
           {
             "Operation": "Replace",
             "Duration": 15,
             "NumPersists": 20,
             "Modifier": {
               "Display": "SupermonkeyPlasmaVision.json",
               "ActiveWeapon": [
                 [
                   0,
                   false
                 ],
                 [
                   1,
                   false
                 ],
                 [
                   2,
                   true
                 ],
                 [
                   3,
                   false
                 ],
                 [
                   4,
                   true
                 ],
                 [
                   5,
                   false
                 ],
                 [
                   6,
                   false
                 ]
               ]
             }
           }
         ]
       }
     ]
   },
   {
     "Name": "Sun God Monkey Fan Club",
     "WeaponUpgrades": [
       {
         "SlotIndex": 2,
         "TaskUpgrade": [
           {
             "Operation": "SelectByType",
             "Type": "TowerModifier"
           },
           {
             "Operation": "Replace",
             "Duration": 15,
             "NumPersists": -1,
             "Modifier": {
               "Display": "SunGod.json",
               "ActiveWeapon": [
                 [
                   0,
                   false
                 ],
                 [
                   1,
                   false
                 ],
                 [
                   2,
                   true
                 ],
                 [
                   3,
                   false
                 ],
                 [
                   4,
                   false
                 ],
                 [
                   5,
                   true
                 ],
                 [
                   6,
                   false
                 ]
               ]
             }
           }
         ]
       }
     ]
   }
 ]
}

```

* Lastly, don't forget to add new weapons for the tower like Dart Monkey in WeaponDefinitions if you're planning on making upgrades which adds new attacks etc. That should be the guide done and you know how to create new upgrades for your towers!