{
  "cards": {
    "kinds": [
      {
        "id": "instant_gold",
        "name": "Instant Gold",
        "unit": "Gain {n} gold immediately"
      },
      {
        "id": "gold_drop",
        "name": "Gold Drop Increase",
        "unit": "+{n}% gold from enemies"
      },
      {
        "id": "extra_reroll",
        "name": "Extra Rerolls",
        "unit": "+{n} rerolls for this run"
      },
      {
        "id": "extra_card_draw",
        "name": "Extra Card Draw",
        "unit": "+{n} card per wave reward"
      },
      {
        "id": "extra_lives",
        "name": "Extra Lives",
        "unit": "+{n} lives"
      },
      {
        "id": "tower_loan",
        "name": "Tower on loan",
        "unit": ""
      }
    ],
    "rarities": [
      {
        "color": "#cccccc",
        "id": "normal",
        "name": "Normal"
      },
      {
        "color": "#4dcc4d",
        "id": "common",
        "name": "Common"
      },
      {
        "color": "#4d80ff",
        "id": "rare",
        "name": "Rare"
      },
      {
        "color": "#b34de6",
        "id": "epic",
        "name": "Epic"
      },
      {
        "color": "#ff991a",
        "id": "legendary",
        "name": "Legendary"
      },
      {
        "color": "#ff66cc",
        "id": "mythical",
        "name": "Mythical"
      },
      {
        "color": "#808080",
        "id": "endless",
        "name": "Endless"
      }
    ],
    "stats": [
      {
        "id": "damage",
        "name": "Damage"
      },
      {
        "id": "fire_rate",
        "name": "Fire Rate"
      },
      {
        "id": "range",
        "name": "Range"
      },
      {
        "id": "slow_strength",
        "name": "Slow Strength"
      },
      {
        "id": "projectile_speed",
        "name": "Projectile Speed"
      },
      {
        "id": "crit_chance",
        "name": "Crit Chance"
      },
      {
        "id": "splash_radius",
        "name": "Splash Radius"
      },
      {
        "id": "efficiency",
        "name": "Efficiency"
      },
      {
        "id": "deep_wound",
        "name": "Deep Wound"
      },
      {
        "id": "poison",
        "name": "Poison"
      },
      {
        "id": "armor_damage",
        "name": "Armor Damage"
      },
      {
        "id": "shield_damage",
        "name": "Shield Damage"
      }
    ]
  },
  "challenges": [
    {
      "blurb": "Cannons only, and Power Plants to run them. No research: everyone starts alike",
      "card_draw_chance": 3.0,
      "card_towers": [
        "Cannon"
      ],
      "extra_gold": 100,
      "extra_lives": 0,
      "id": "cannon",
      "lives_card_chance": 2.0,
      "maps": [
        {
          "title": "Grand Canyon",
          "waves": 40
        },
        {
          "title": "Islands",
          "waves": 40
        },
        {
          "title": "Spiral",
          "waves": 40
        }
      ],
      "platform_sizes": [
        "small",
        "medium",
        "large"
      ],
      "platform_stack": 1,
      "ranking": [
        "wave",
        "kills",
        "time"
      ],
      "research": false,
      "start_rerolls": 10,
      "title": "Cannon Challenge",
      "tower_card_chance": 1.5,
      "tower_card_percent": 1.5,
      "tower_names": [
        "Cannon",
        "Power Plant"
      ],
      "towers": [
        "Cannon",
        "PowerPlant"
      ],
      "usual_rerolls": 6,
      "version": 2
    }
  ],
  "enemies": [
    {
      "boss": false,
      "color": "#cc3333",
      "description": "A tin-can trooper: the standard enemy, balanced stats, comes in packs.",
      "first_wave": 1,
      "flight_height": 1.5,
      "flying": false,
      "formation": "pack",
      "former_ids": [
        "basic"
      ],
      "former_types": [
        "basic"
      ],
      "id": "tin_trooper",
      "model": "models/enemies/tin_trooper.glb",
      "name": "Tin Trooper",
      "push_power": 0.0,
      "scale": 1.0,
      "slug": "tin_trooper",
      "stats": {
        "armor": 0.0,
        "health": 100.0,
        "lives_lost": 1,
        "reward": 10,
        "shield": 0.0,
        "speed": 2.0
      },
      "type": "tin_trooper",
      "weight": 1.0
    },
    {
      "boss": false,
      "color": "#2b304d",
      "description": "Quick but fragile enemy that rushes through defenses.",
      "first_wave": 2,
      "flight_height": 1.5,
      "flying": false,
      "formation": "pack",
      "former_ids": [
        "fast"
      ],
      "former_types": [
        "fast"
      ],
      "id": "raptor",
      "model": "models/enemies/raptor.glb",
      "name": "Raptor",
      "push_power": 0.0,
      "scale": 0.7,
      "slug": "raptor",
      "stats": {
        "armor": 0.0,
        "health": 50.0,
        "lives_lost": 1,
        "reward": 5,
        "shield": 0.0,
        "speed": 4.0
      },
      "type": "raptor",
      "weight": 0.7
    },
    {
      "boss": false,
      "color": "#545e47",
      "description": "Heavily armored enemy that can absorb massive damage.",
      "first_wave": 3,
      "flight_height": 1.5,
      "flying": false,
      "formation": "column",
      "former_ids": [],
      "former_types": [],
      "id": "tank",
      "model": "models/enemies/tank.glb",
      "name": "Tank",
      "push_power": 1.0,
      "scale": 1.3,
      "slug": "tank",
      "stats": {
        "armor": 10.0,
        "health": 300.0,
        "lives_lost": 1,
        "reward": 25,
        "shield": 0.0,
        "speed": 1.0
      },
      "type": "tank",
      "weight": 10.0
    },
    {
      "boss": false,
      "color": "#3399e6",
      "description": "A razor-winged flyer that follows the path above the ground. Ground-only towers cannot hit it.",
      "first_wave": 4,
      "flight_height": 1.5,
      "flying": true,
      "formation": "pack",
      "former_ids": [
        "flying"
      ],
      "former_types": [
        "flying"
      ],
      "id": "razorwing",
      "model": "models/enemies/razorwing.glb",
      "name": "Razorwing",
      "push_power": 0.0,
      "scale": 0.9,
      "slug": "razorwing",
      "stats": {
        "armor": 0.0,
        "health": 100.0,
        "lives_lost": 1,
        "reward": 15,
        "shield": 0.0,
        "speed": 2.5
      },
      "type": "razorwing",
      "weight": 0.8
    },
    {
      "boss": false,
      "color": "#4d99e6",
      "description": "A warden behind a hex energy shield that must be depleted first.",
      "first_wave": 5,
      "flight_height": 1.5,
      "flying": false,
      "formation": "pack",
      "former_ids": [
        "shield"
      ],
      "former_types": [
        "shield"
      ],
      "id": "hexguard",
      "model": "models/enemies/hexguard.glb",
      "name": "Hexguard",
      "push_power": 0.0,
      "scale": 1.0,
      "slug": "hexguard",
      "stats": {
        "armor": 15.0,
        "health": 100.0,
        "lives_lost": 1,
        "reward": 20,
        "shield": 80.0,
        "speed": 1.8
      },
      "type": "hexguard",
      "weight": 1.5
    },
    {
      "boss": false,
      "color": "#4d4d59",
      "description": "Small armored robot with heavy plating. Slow but extremely durable.",
      "first_wave": 6,
      "flight_height": 1.5,
      "flying": false,
      "formation": "pack",
      "former_ids": [
        "mini_bot"
      ],
      "former_types": [
        "mini_bot"
      ],
      "id": "clanker",
      "model": "models/enemies/clanker.glb",
      "name": "Clanker",
      "push_power": 0.0,
      "scale": 1.4,
      "slug": "clanker",
      "stats": {
        "armor": 25.0,
        "health": 400.0,
        "lives_lost": 1,
        "reward": 40,
        "shield": 0.0,
        "speed": 0.8
      },
      "type": "clanker",
      "weight": 4.0
    },
    {
      "boss": false,
      "color": "#261f1a",
      "description": "A skittering arachnid that moves quickly with unpredictable patterns.",
      "first_wave": 7,
      "flight_height": 1.5,
      "flying": false,
      "formation": "pack",
      "former_ids": [],
      "former_types": [],
      "id": "spider",
      "model": "models/enemies/spider.glb",
      "name": "Spider",
      "push_power": 0.0,
      "scale": 0.85,
      "slug": "spider",
      "stats": {
        "armor": 0.0,
        "health": 60.0,
        "lives_lost": 1,
        "reward": 8,
        "shield": 0.0,
        "speed": 3.5
      },
      "type": "spider",
      "weight": 0.5
    },
    {
      "boss": false,
      "color": "#404552",
      "description": "A heavily armoured knight with a long sword and a heater shield. Slow but extremely durable; its armour plates break off as its armour goes.",
      "first_wave": 8,
      "flight_height": 1.5,
      "flying": false,
      "formation": "column",
      "former_ids": [],
      "former_types": [],
      "id": "heavy_knight",
      "model": "models/enemies/heavy_knight.glb",
      "name": "Heavy Knight",
      "push_power": 0.0,
      "scale": 1.2,
      "slug": "heavy_knight",
      "stats": {
        "armor": 25.0,
        "health": 400.0,
        "lives_lost": 1,
        "reward": 35,
        "shield": 0.0,
        "speed": 0.8
      },
      "type": "heavy_knight",
      "weight": 6.0
    },
    {
      "boss": false,
      "color": "#66cc66",
      "description": "A classic flying saucer with spinning lights. Stops over armour plates on the path and swirls them into Clankers, as strong as the wave the scrap came from. When destroyed, drops alien blobs that become aliens.",
      "first_wave": 9,
      "flight_height": 2.0,
      "flying": true,
      "formation": "pack",
      "former_ids": [],
      "former_types": [],
      "id": "ufo",
      "model": "models/enemies/ufo.glb",
      "name": "UFO",
      "push_power": 0.0,
      "scale": 1.0,
      "slug": "ufo",
      "stats": {
        "armor": 0.0,
        "health": 120.0,
        "lives_lost": 1,
        "reward": 25,
        "shield": 30.0,
        "speed": 1.8
      },
      "type": "ufo",
      "weight": 1.5
    },
    {
      "boss": true,
      "color": "#594026",
      "description": "A massive burrowing worm boss. When slain, releases a swarm of spiderlings that scatter in all directions.",
      "first_wave": 10,
      "flight_height": 1.5,
      "flying": false,
      "formation": "column",
      "former_ids": [],
      "former_types": [],
      "id": "giant_worm",
      "model": "models/enemies/giant_worm.glb",
      "name": "Giant Worm",
      "push_power": 1.0,
      "scale": 2.5,
      "slug": "giant_worm",
      "stats": {
        "armor": 50.0,
        "health": 2000.0,
        "lives_lost": 5,
        "reward": 150,
        "shield": 0.0,
        "speed": 0.8
      },
      "type": "giant_worm",
      "weight": 20.0
    },
    {
      "boss": false,
      "color": "#266633",
      "description": "A small flying insect that grows stronger in later waves. Fast and agile with iridescent wings.",
      "first_wave": 5,
      "flight_height": 1.2,
      "flying": true,
      "formation": "pack",
      "former_ids": [],
      "former_types": [],
      "id": "bug",
      "model": "models/enemies/bug.glb",
      "name": "Bug",
      "push_power": 0.0,
      "scale": 0.7,
      "slug": "bug",
      "stats": {
        "armor": 0.0,
        "health": 60.0,
        "lives_lost": 1,
        "reward": 12,
        "shield": 0.0,
        "speed": 3.2
      },
      "type": "bug",
      "weight": 0.3
    },
    {
      "boss": false,
      "color": "#ff661a",
      "description": "A blazing elemental that radiates intense heat, melting ice and snow in its path. Its fiery aura protects nearby allies from slow effects.",
      "first_wave": 6,
      "flight_height": 1.5,
      "flying": false,
      "formation": "pack",
      "former_ids": [],
      "former_types": [],
      "id": "inferno",
      "model": "models/enemies/inferno.glb",
      "name": "Inferno",
      "push_power": 0.0,
      "scale": 1.2,
      "slug": "inferno",
      "stats": {
        "armor": 15.0,
        "health": 180.0,
        "lives_lost": 1,
        "reward": 30,
        "shield": 0.0,
        "speed": 1.6
      },
      "type": "inferno",
      "weight": 2.5
    },
    {
      "boss": false,
      "color": "#d9e0e6",
      "description": "Quadcopter drone that upgrades as waves progress. Fast and agile, ignores terrain.",
      "first_wave": 4,
      "flight_height": 1.8,
      "flying": true,
      "formation": "pack",
      "former_ids": [],
      "former_types": [],
      "id": "drone",
      "model": "models/enemies/drone.glb",
      "name": "Drone",
      "push_power": 0.0,
      "scale": 1.0,
      "slug": "drone",
      "stats": {
        "armor": 0.0,
        "health": 80.0,
        "lives_lost": 1,
        "reward": 18,
        "shield": 0.0,
        "speed": 2.8
      },
      "type": "drone",
      "weight": 0.6
    },
    {
      "boss": true,
      "color": "#cc2626",
      "description": "A massive Level 20 aerial fortress. Floats around the battlefield dropping squads of paratroopers. Must be destroyed before the dropped enemies can be stopped.",
      "first_wave": 20,
      "flight_height": 8.0,
      "flying": true,
      "formation": "pack",
      "former_ids": [],
      "former_types": [],
      "id": "blimp_boss",
      "model": "models/enemies/blimp_boss.glb",
      "name": "Blimp Boss",
      "push_power": 0.0,
      "scale": 3.0,
      "slug": "blimp_boss",
      "stats": {
        "armor": 0.0,
        "health": 3000.0,
        "lives_lost": 10,
        "reward": 500,
        "shield": 0.0,
        "speed": 2.0
      },
      "type": "blimp_boss",
      "weight": 30.0
    },
    {
      "boss": false,
      "color": "#1f212b",
      "description": "A dark triangular craft with a light at each corner. The only enemy that ignores the path: it flies straight from the entrance to the base.",
      "first_wave": 20,
      "flight_height": 4.0,
      "flying": true,
      "formation": "pack",
      "former_ids": [
        "delta"
      ],
      "former_types": [
        "delta"
      ],
      "id": "triangle_ufo",
      "model": "models/enemies/triangle_ufo.glb",
      "name": "Triangle UFO",
      "push_power": 0.0,
      "scale": 1.1,
      "slug": "triangle_ufo",
      "stats": {
        "armor": 0.0,
        "health": 110.0,
        "lives_lost": 1,
        "reward": 22,
        "shield": 0.0,
        "speed": 2.4
      },
      "type": "triangle_ufo",
      "weight": 2.0
    },
    {
      "boss": false,
      "color": "#333642",
      "description": "Gathers enemies at the entrance, then raises a bubble before your strongest point and carries them unharmed until they are past your kill zone: ground towers' shots bounce off it. Only planes get in over the top - kill it then and everything inside dies with it. Brings a squad of little robot escorts. Heavy armour; plane shots ignore it.",
      "first_wave": 25,
      "flight_height": 1.5,
      "flying": false,
      "formation": "pack",
      "former_ids": [
        "shield_carrier"
      ],
      "former_types": [
        "shield_carrier"
      ],
      "id": "domeguard",
      "model": "models/enemies/domeguard.glb",
      "name": "Domeguard",
      "push_power": 0.0,
      "scale": 1.0,
      "slug": "domeguard",
      "stats": {
        "armor": 250.0,
        "health": 150.0,
        "lives_lost": 1,
        "reward": 60,
        "shield": 0.0,
        "speed": 1.6
      },
      "type": "domeguard",
      "weight": 5.0
    },
    {
      "boss": false,
      "color": "#4d4761",
      "description": "A grey alien in an armoured suit, marching the path with its ray gun raised.",
      "first_wave": 12,
      "flight_height": 1.5,
      "flying": false,
      "formation": "pack",
      "former_ids": [],
      "former_types": [],
      "id": "alien",
      "model": "models/enemies/alien.glb",
      "name": "Alien",
      "push_power": 0.0,
      "scale": 1.0,
      "slug": "alien",
      "stats": {
        "armor": 5.0,
        "health": 85.0,
        "lives_lost": 1,
        "reward": 10,
        "shield": 0.0,
        "speed": 2.0
      },
      "type": "alien",
      "weight": 1.0
    },
    {
      "boss": false,
      "color": "#9933cc",
      "description": "A fast raider fighter that follows the path above the ground. Tougher and quicker than the Flying enemy. Ground-only towers cannot hit it.",
      "first_wave": 15,
      "flight_height": 2.6,
      "flying": true,
      "formation": "pack",
      "former_ids": [],
      "former_types": [],
      "id": "raider",
      "model": "models/enemies/raider.glb",
      "name": "Raider",
      "push_power": 0.0,
      "scale": 1.0,
      "slug": "raider",
      "stats": {
        "armor": 0.0,
        "health": 170.0,
        "lives_lost": 1,
        "reward": 24,
        "shield": 0.0,
        "speed": 3.2
      },
      "type": "raider",
      "weight": 1.5
    },
    {
      "boss": true,
      "color": "#2b304d",
      "description": "A towering war mech in navy and gold armour, with a rotary cannon arm, a missile pod on each shoulder and a glowing reactor core. It plods down the middle of the path and nothing behind it can get past.",
      "first_wave": 28,
      "flight_height": 1.5,
      "flying": false,
      "formation": "column",
      "former_ids": [],
      "former_types": [],
      "id": "mech_boss",
      "model": "models/enemies/mech_boss.glb",
      "name": "Mech Boss",
      "push_power": 1.0,
      "scale": 1.0,
      "slug": "mech_boss",
      "stats": {
        "armor": 300.0,
        "health": 2500.0,
        "lives_lost": 10,
        "reward": 400,
        "shield": 0.0,
        "speed": 0.5
      },
      "type": "mech_boss",
      "weight": 25.0
    },
    {
      "boss": false,
      "color": "#42424d",
      "comes_from": {
        "not_in_waves": true,
        "text": "A rare robot the normal waves do not send"
      },
      "description": "The Clanker's big four-legged cousin. A heavily plated robot that trots along on four legs. Slow, very tough, and bolts fallen armour back on.",
      "first_wave": 0,
      "flight_height": 1.5,
      "flying": false,
      "formation": "pack",
      "former_ids": [],
      "former_types": [],
      "id": "quad_bot",
      "model": "models/enemies/quad_bot.glb",
      "name": "Quad Bot",
      "push_power": 0.0,
      "scale": 1.6,
      "slug": "quad_bot",
      "stats": {
        "armor": 45.0,
        "health": 900.0,
        "lives_lost": 2,
        "reward": 75,
        "shield": 0.0,
        "speed": 0.65
      },
      "type": "quad_bot",
      "weight": 8.0
    },
    {
      "boss": false,
      "color": "#4d664d",
      "comes_from": {
        "how": "Dropped by",
        "parent": "blimp_boss",
        "parent_type": "blimp_boss",
        "text": "Dropped by the Blimp Boss"
      },
      "description": "Elite soldiers dropped from the Blimp Boss. Falls with a parachute then marches toward the base with determination.",
      "first_wave": 20,
      "flight_height": 1.5,
      "flying": false,
      "formation": "pack",
      "former_ids": [],
      "former_types": [],
      "id": "paratrooper",
      "model": "models/enemies/paratrooper.glb",
      "name": "Paratrooper",
      "push_power": 0.0,
      "scale": 1.0,
      "slug": "paratrooper",
      "stats": {
        "armor": 12.0,
        "health": 75.0,
        "lives_lost": 1,
        "reward": 20,
        "shield": 0.0,
        "speed": 1.8
      },
      "type": "paratrooper",
      "weight": 1.0
    },
    {
      "boss": false,
      "color": "#24262b",
      "comes_from": {
        "how": "Comes with",
        "parent": "domeguard",
        "parent_type": "domeguard",
        "text": "Comes with the Domeguard"
      },
      "description": "A little robot trooper. A squad of them comes with every Domeguard, walks beside it and shelters under its dome. Kill the Domeguard while the dome is up and they die with it.",
      "first_wave": 25,
      "flight_height": 1.5,
      "flying": false,
      "formation": "pack",
      "former_ids": [],
      "former_types": [],
      "id": "escort",
      "model": "models/enemies/escort.glb",
      "name": "Escort",
      "push_power": 0.0,
      "scale": 1.0,
      "slug": "escort",
      "stats": {
        "armor": 10.0,
        "health": 40.0,
        "lives_lost": 1,
        "reward": 4,
        "shield": 0.0,
        "speed": 1.8
      },
      "type": "escort",
      "weight": 1.0
    },
    {
      "boss": false,
      "color": "#33e64d",
      "comes_from": {
        "how": "Dropped by",
        "parent": "ufo",
        "parent_type": "ufo",
        "text": "Dropped by the UFO"
      },
      "description": "An alien blob dropped from a UFO. Falls to the nearest path and hatches into an alien.",
      "first_wave": 9,
      "flight_height": 0.0,
      "flying": false,
      "formation": "pack",
      "former_ids": [],
      "former_types": [],
      "id": "blob",
      "model": "models/enemies/blob.glb",
      "name": "Blob",
      "push_power": 0.0,
      "scale": 0.5,
      "slug": "blob",
      "stats": {
        "armor": 0.0,
        "health": 1.0,
        "lives_lost": 0,
        "reward": 0,
        "shield": 0.0,
        "speed": 0.0
      },
      "type": "blob",
      "weight": 0.5
    },
    {
      "boss": false,
      "color": "#1f1a14",
      "comes_from": {
        "how": "Hatched by",
        "parent": "giant_worm",
        "parent_type": "giant_worm",
        "text": "Hatched by the Giant Worm"
      },
      "description": "A tiny spider spawned from a dying worm. Weak but numerous, they scatter across terrain before finding the path.",
      "first_wave": 10,
      "flight_height": 1.5,
      "flying": false,
      "formation": "pack",
      "former_ids": [],
      "former_types": [],
      "id": "spiderling",
      "model": "models/enemies/spiderling.glb",
      "name": "Spiderling",
      "push_power": 0.0,
      "scale": 0.5,
      "slug": "spiderling",
      "stats": {
        "armor": 5.0,
        "health": 45.0,
        "lives_lost": 1,
        "reward": 2,
        "shield": 0.0,
        "speed": 2.5
      },
      "type": "spiderling",
      "weight": 0.2
    }
  ],
  "generated": "2026-10-23T09:06:14",
  "height_rules": {
    "custom_hill_max": 15,
    "ground": [
      {
        "damage_mult": 0.95,
        "name": "Grass",
        "text": "Soft ground. Towers deal 5% less damage."
      }
    ],
    "hill_common": 5,
    "hill_max": 15,
    "platform_costs": {
      "large": 100,
      "medium": 50,
      "small": 25
    },
    "platform_max": 9,
    "platform_sizes": {
      "large": 3,
      "medium": 2,
      "small": 1
    },
    "platform_stacks": [
      [],
      [
        "small"
      ],
      [
        "medium"
      ],
      [
        "medium",
        "small"
      ],
      [
        "medium",
        "medium"
      ],
      [
        "medium",
        "medium",
        "small"
      ],
      [
        "medium",
        "medium",
        "medium"
      ],
      [
        "large",
        "medium",
        "medium"
      ],
      [
        "large",
        "large",
        "medium"
      ],
      [
        "large",
        "large",
        "large"
      ]
    ],
    "stack_limit": 3,
    "steps": [
      {
        "damage_mult": 1.0,
        "h": 0,
        "range_bonus": 0.0
      },
      {
        "damage_mult": 1.08,
        "h": 1,
        "range_bonus": 0.5
      },
      {
        "damage_mult": 1.16,
        "h": 2,
        "range_bonus": 1.0
      },
      {
        "damage_mult": 1.24,
        "h": 3,
        "range_bonus": 1.5
      },
      {
        "damage_mult": 1.32,
        "h": 4,
        "range_bonus": 2.0
      },
      {
        "damage_mult": 1.4,
        "h": 5,
        "range_bonus": 2.5
      },
      {
        "damage_mult": 1.48,
        "h": 6,
        "range_bonus": 3.0
      },
      {
        "damage_mult": 1.56,
        "h": 7,
        "range_bonus": 3.5
      },
      {
        "damage_mult": 1.64,
        "h": 8,
        "range_bonus": 4.0
      },
      {
        "damage_mult": 1.72,
        "h": 9,
        "range_bonus": 4.5
      },
      {
        "damage_mult": 1.8,
        "h": 10,
        "range_bonus": 5.0
      },
      {
        "damage_mult": 1.88,
        "h": 11,
        "range_bonus": 5.5
      },
      {
        "damage_mult": 1.96,
        "h": 12,
        "range_bonus": 6.0
      },
      {
        "damage_mult": 2.04,
        "h": 13,
        "range_bonus": 6.5
      },
      {
        "damage_mult": 2.12,
        "h": 14,
        "range_bonus": 7.0
      },
      {
        "damage_mult": 2.2,
        "h": 15,
        "range_bonus": 7.5
      },
      {
        "damage_mult": 2.28,
        "h": 16,
        "range_bonus": 8.0
      },
      {
        "damage_mult": 2.36,
        "h": 17,
        "range_bonus": 8.5
      },
      {
        "damage_mult": 2.44,
        "h": 18,
        "range_bonus": 9.0
      },
      {
        "damage_mult": 2.52,
        "h": 19,
        "range_bonus": 9.5
      },
      {
        "damage_mult": 2.6,
        "h": 20,
        "range_bonus": 10.0
      },
      {
        "damage_mult": 2.68,
        "h": 21,
        "range_bonus": 10.5
      },
      {
        "damage_mult": 2.76,
        "h": 22,
        "range_bonus": 11.0
      },
      {
        "damage_mult": 2.84,
        "h": 23,
        "range_bonus": 11.5
      },
      {
        "damage_mult": 2.92,
        "h": 24,
        "range_bonus": 12.0
      }
    ]
  },
  "research": [
    {
      "former_ids": [],
      "id": "airport_damage",
      "max_level": 5,
      "name": "Air Strike Power",
      "tower": "Airport"
    },
    {
      "former_ids": [],
      "id": "airport_deep_wound",
      "max_level": 5,
      "name": "Airport Deep Wound",
      "tower": "Airport"
    },
    {
      "former_ids": [],
      "id": "airport_fire_rate",
      "max_level": 5,
      "name": "Rapid Sortie",
      "tower": "Airport"
    },
    {
      "former_ids": [],
      "id": "airport_poison",
      "max_level": 5,
      "name": "Airport Poison",
      "tower": "Airport"
    },
    {
      "former_ids": [],
      "id": "airport_range",
      "max_level": 5,
      "name": "Extended Patrol",
      "tower": "Airport"
    },
    {
      "former_ids": [],
      "id": "cannon_damage",
      "max_level": 5,
      "name": "Cannon Damage",
      "tower": "Cannon"
    },
    {
      "former_ids": [],
      "id": "cannon_deep_wound",
      "max_level": 5,
      "name": "Cannon Deep Wound",
      "tower": "Cannon"
    },
    {
      "former_ids": [],
      "id": "cannon_fire_rate",
      "max_level": 5,
      "name": "Cannon Fire Rate",
      "tower": "Cannon"
    },
    {
      "former_ids": [],
      "id": "cannon_poison",
      "max_level": 5,
      "name": "Cannon Poison",
      "tower": "Cannon"
    },
    {
      "former_ids": [],
      "id": "cannon_range",
      "max_level": 5,
      "name": "Cannon Range",
      "tower": "Cannon"
    },
    {
      "former_ids": [],
      "id": "card_favourites",
      "max_level": 4,
      "name": "Favourite Towers",
      "tower": ""
    },
    {
      "former_ids": [],
      "id": "card_filter",
      "max_level": 5,
      "name": "Card Filter",
      "tower": ""
    },
    {
      "former_ids": [],
      "id": "card_hold",
      "max_level": 1,
      "name": "Hold a Card",
      "tower": ""
    },
    {
      "former_ids": [],
      "id": "card_more",
      "max_level": 2,
      "name": "More Cards",
      "tower": ""
    },
    {
      "former_ids": [
        "bomb_damage"
      ],
      "id": "cluster_mortar_damage",
      "max_level": 5,
      "name": "Cluster Mortar Damage",
      "tower": "ClusterMortar"
    },
    {
      "former_ids": [
        "bomb_deep_wound"
      ],
      "id": "cluster_mortar_deep_wound",
      "max_level": 5,
      "name": "Cluster Mortar Deep Wound",
      "tower": "ClusterMortar"
    },
    {
      "former_ids": [
        "bomb_fire_rate"
      ],
      "id": "cluster_mortar_fire_rate",
      "max_level": 5,
      "name": "Cluster Mortar Fire Rate",
      "tower": "ClusterMortar"
    },
    {
      "former_ids": [
        "bomb_poison"
      ],
      "id": "cluster_mortar_poison",
      "max_level": 5,
      "name": "Cluster Mortar Poison",
      "tower": "ClusterMortar"
    },
    {
      "former_ids": [
        "bomb_range"
      ],
      "id": "cluster_mortar_range",
      "max_level": 5,
      "name": "Cluster Mortar Range",
      "tower": "ClusterMortar"
    },
    {
      "former_ids": [
        "slow_damage"
      ],
      "id": "cold_snap_damage",
      "max_level": 5,
      "name": "Cold Snap Damage",
      "tower": "ColdSnap"
    },
    {
      "former_ids": [
        "slow_fire_rate"
      ],
      "id": "cold_snap_fire_rate",
      "max_level": 5,
      "name": "Cold Snap Fire Rate",
      "tower": "ColdSnap"
    },
    {
      "former_ids": [
        "slow_range"
      ],
      "id": "cold_snap_range",
      "max_level": 5,
      "name": "Cold Snap Range",
      "tower": "ColdSnap"
    },
    {
      "former_ids": [],
      "id": "dronehive_damage",
      "max_level": 5,
      "name": "Sharper Stingers",
      "tower": "DroneHive"
    },
    {
      "former_ids": [],
      "id": "dronehive_deep_wound",
      "max_level": 5,
      "name": "Drone Hive Deep Wound",
      "tower": "DroneHive"
    },
    {
      "former_ids": [],
      "id": "dronehive_fire_rate",
      "max_level": 5,
      "name": "Rapid Stingers",
      "tower": "DroneHive"
    },
    {
      "former_ids": [],
      "id": "dronehive_poison",
      "max_level": 5,
      "name": "Drone Hive Poison",
      "tower": "DroneHive"
    },
    {
      "former_ids": [],
      "id": "dronehive_range",
      "max_level": 5,
      "name": "Wider Patrol",
      "tower": "DroneHive"
    },
    {
      "former_ids": [],
      "id": "gravitywell_damage",
      "max_level": 5,
      "name": "Crushing Pull",
      "tower": "GravityWell"
    },
    {
      "former_ids": [],
      "id": "gravitywell_fire_rate",
      "max_level": 5,
      "name": "Faster Collapse",
      "tower": "GravityWell"
    },
    {
      "former_ids": [],
      "id": "gravitywell_range",
      "max_level": 5,
      "name": "Event Horizon",
      "tower": "GravityWell"
    },
    {
      "former_ids": [
        "airplane_damage"
      ],
      "id": "helicopter_damage",
      "max_level": 5,
      "name": "Helicopter Damage",
      "tower": "Helicopter"
    },
    {
      "former_ids": [
        "airplane_deep_wound"
      ],
      "id": "helicopter_deep_wound",
      "max_level": 5,
      "name": "Helicopter Deep Wound",
      "tower": "Helicopter"
    },
    {
      "former_ids": [
        "airplane_fire_rate"
      ],
      "id": "helicopter_fire_rate",
      "max_level": 5,
      "name": "Helicopter Fire Rate",
      "tower": "Helicopter"
    },
    {
      "former_ids": [
        "airplane_poison"
      ],
      "id": "helicopter_poison",
      "max_level": 5,
      "name": "Helicopter Poison",
      "tower": "Helicopter"
    },
    {
      "former_ids": [
        "airplane_range"
      ],
      "id": "helicopter_range",
      "max_level": 5,
      "name": "Helicopter Range",
      "tower": "Helicopter"
    },
    {
      "former_ids": [],
      "id": "laser_damage",
      "max_level": 5,
      "name": "Beam Intensity",
      "tower": "Laser"
    },
    {
      "former_ids": [],
      "id": "laser_deep_wound",
      "max_level": 5,
      "name": "Laser Deep Wound",
      "tower": "Laser"
    },
    {
      "former_ids": [],
      "id": "laser_fire_rate",
      "max_level": 5,
      "name": "Pulse Frequency",
      "tower": "Laser"
    },
    {
      "former_ids": [],
      "id": "laser_poison",
      "max_level": 5,
      "name": "Laser Poison",
      "tower": "Laser"
    },
    {
      "former_ids": [],
      "id": "laser_range",
      "max_level": 5,
      "name": "Focus Length",
      "tower": "Laser"
    },
    {
      "former_ids": [],
      "id": "lightning_damage",
      "max_level": 5,
      "name": "Voltage Boost",
      "tower": "Lightning"
    },
    {
      "former_ids": [],
      "id": "lightning_deep_wound",
      "max_level": 5,
      "name": "Lightning Deep Wound",
      "tower": "Lightning"
    },
    {
      "former_ids": [],
      "id": "lightning_fire_rate",
      "max_level": 5,
      "name": "Capacitor Speed",
      "tower": "Lightning"
    },
    {
      "former_ids": [],
      "id": "lightning_poison",
      "max_level": 5,
      "name": "Lightning Poison",
      "tower": "Lightning"
    },
    {
      "former_ids": [],
      "id": "lightning_range",
      "max_level": 5,
      "name": "Arc Distance",
      "tower": "Lightning"
    },
    {
      "former_ids": [],
      "id": "magnet_damage",
      "max_level": 5,
      "name": "Denser Scrap",
      "tower": "Magnet"
    },
    {
      "former_ids": [],
      "id": "magnet_fire_rate",
      "max_level": 5,
      "name": "Stronger Coils",
      "tower": "Magnet"
    },
    {
      "former_ids": [],
      "id": "magnet_range",
      "max_level": 5,
      "name": "Wider Field",
      "tower": "Magnet"
    },
    {
      "former_ids": [],
      "id": "miner_collection",
      "max_level": 5,
      "name": "Mining Capacity",
      "tower": "Miner"
    },
    {
      "former_ids": [],
      "id": "miner_depth",
      "max_level": 5,
      "name": "Excavation Depth",
      "tower": "Miner"
    },
    {
      "former_ids": [],
      "id": "miner_speed",
      "max_level": 5,
      "name": "Mining Speed",
      "tower": "Miner"
    },
    {
      "former_ids": [],
      "id": "missile_silo_damage",
      "max_level": 5,
      "name": "Missile Damage",
      "tower": "MissileSilo"
    },
    {
      "former_ids": [],
      "id": "missile_silo_deep_wound",
      "max_level": 5,
      "name": "Missile Silo Deep Wound",
      "tower": "MissileSilo"
    },
    {
      "former_ids": [],
      "id": "missile_silo_fire_rate",
      "max_level": 5,
      "name": "Missile Launch Rate",
      "tower": "MissileSilo"
    },
    {
      "former_ids": [],
      "id": "missile_silo_poison",
      "max_level": 5,
      "name": "Missile Silo Poison",
      "tower": "MissileSilo"
    },
    {
      "former_ids": [],
      "id": "missile_silo_range",
      "max_level": 5,
      "name": "Missile Range",
      "tower": "MissileSilo"
    },
    {
      "former_ids": [],
      "id": "portal_damage",
      "max_level": 5,
      "name": "Portal Power",
      "tower": "Portal"
    },
    {
      "former_ids": [],
      "id": "portal_fire_rate",
      "max_level": 5,
      "name": "Quick Recharge",
      "tower": "Portal"
    },
    {
      "former_ids": [],
      "id": "portal_range",
      "max_level": 5,
      "name": "Long Reach",
      "tower": "Portal"
    },
    {
      "former_ids": [],
      "id": "power_base",
      "max_level": 5,
      "name": "Base Generator",
      "tower": "PowerPlant"
    },
    {
      "former_ids": [],
      "id": "power_efficiency",
      "max_level": 5,
      "name": "Efficient Wiring",
      "tower": "PowerPlant"
    },
    {
      "former_ids": [],
      "id": "power_plant_output",
      "max_level": 5,
      "name": "Bigger Turbines",
      "tower": "PowerPlant"
    },
    {
      "former_ids": [],
      "id": "railgun_damage",
      "max_level": 5,
      "name": "Slug Mass",
      "tower": "Railgun"
    },
    {
      "former_ids": [],
      "id": "railgun_deep_wound",
      "max_level": 5,
      "name": "Railgun Deep Wound",
      "tower": "Railgun"
    },
    {
      "former_ids": [],
      "id": "railgun_fire_rate",
      "max_level": 5,
      "name": "Fast Capacitors",
      "tower": "Railgun"
    },
    {
      "former_ids": [],
      "id": "railgun_poison",
      "max_level": 5,
      "name": "Railgun Poison",
      "tower": "Railgun"
    },
    {
      "former_ids": [],
      "id": "railgun_range",
      "max_level": 5,
      "name": "Longer Rails",
      "tower": "Railgun"
    },
    {
      "former_ids": [
        "repairdrone_bays"
      ],
      "id": "repairdrones_bays",
      "max_level": 4,
      "name": "Drone Bays",
      "tower": "RepairDrones"
    },
    {
      "former_ids": [],
      "id": "sawblade_damage",
      "max_level": 5,
      "name": "Blade Sharpness",
      "tower": "SawBlade"
    },
    {
      "former_ids": [],
      "id": "sawblade_deep_wound",
      "max_level": 5,
      "name": "SawBlade Deep Wound",
      "tower": "SawBlade"
    },
    {
      "former_ids": [],
      "id": "sawblade_fire_rate",
      "max_level": 5,
      "name": "Motor Speed",
      "tower": "SawBlade"
    },
    {
      "former_ids": [],
      "id": "sawblade_poison",
      "max_level": 5,
      "name": "SawBlade Poison",
      "tower": "SawBlade"
    },
    {
      "former_ids": [],
      "id": "sawblade_range",
      "max_level": 5,
      "name": "Launch Power",
      "tower": "SawBlade"
    },
    {
      "former_ids": [],
      "id": "sawblade_turns",
      "max_level": 10,
      "name": "Blade Flexibility",
      "tower": "SawBlade"
    },
    {
      "former_ids": [],
      "id": "scaffolding_stacking",
      "max_level": 5,
      "name": "Platforms",
      "tower": ""
    },
    {
      "former_ids": [],
      "id": "sniper_damage",
      "max_level": 5,
      "name": "Sniper Damage",
      "tower": "Sniper"
    },
    {
      "former_ids": [],
      "id": "sniper_deep_wound",
      "max_level": 5,
      "name": "Sniper Deep Wound",
      "tower": "Sniper"
    },
    {
      "former_ids": [],
      "id": "sniper_fire_rate",
      "max_level": 5,
      "name": "Sniper Fire Rate",
      "tower": "Sniper"
    },
    {
      "former_ids": [],
      "id": "sniper_poison",
      "max_level": 5,
      "name": "Sniper Poison",
      "tower": "Sniper"
    },
    {
      "former_ids": [],
      "id": "sniper_range",
      "max_level": 5,
      "name": "Sniper Range",
      "tower": "Sniper"
    },
    {
      "former_ids": [],
      "id": "splash_damage",
      "max_level": 5,
      "name": "Acid Damage",
      "tower": "Acid"
    },
    {
      "former_ids": [],
      "id": "splash_deep_wound",
      "max_level": 5,
      "name": "Acid Deep Wound",
      "tower": "Acid"
    },
    {
      "former_ids": [],
      "id": "splash_fire_rate",
      "max_level": 5,
      "name": "Acid Fire Rate",
      "tower": "Acid"
    },
    {
      "former_ids": [],
      "id": "splash_poison",
      "max_level": 5,
      "name": "Acid Poison",
      "tower": "Acid"
    },
    {
      "former_ids": [],
      "id": "splash_range",
      "max_level": 5,
      "name": "Acid Range",
      "tower": "Acid"
    },
    {
      "former_ids": [],
      "id": "starting_health",
      "max_level": 10,
      "name": "Starting Health",
      "tower": ""
    },
    {
      "former_ids": [],
      "id": "starting_money",
      "max_level": 10,
      "name": "Starting Gold",
      "tower": ""
    },
    {
      "former_ids": [],
      "id": "support_power",
      "max_level": 5,
      "name": "Stronger Amplifiers",
      "tower": "SupportStation"
    },
    {
      "former_ids": [],
      "id": "support_range",
      "max_level": 5,
      "name": "Wider Signal",
      "tower": "SupportStation"
    },
    {
      "former_ids": [],
      "id": "tesla_damage",
      "max_level": 5,
      "name": "Tesla Voltage",
      "tower": "Tesla"
    },
    {
      "former_ids": [],
      "id": "tesla_deep_wound",
      "max_level": 5,
      "name": "Tesla Deep Wound",
      "tower": "Tesla"
    },
    {
      "former_ids": [],
      "id": "tesla_fire_rate",
      "max_level": 5,
      "name": "Tesla Capacitor",
      "tower": "Tesla"
    },
    {
      "former_ids": [],
      "id": "tesla_poison",
      "max_level": 5,
      "name": "Tesla Poison",
      "tower": "Tesla"
    },
    {
      "former_ids": [],
      "id": "tesla_range",
      "max_level": 5,
      "name": "Tesla Arc Distance",
      "tower": "Tesla"
    },
    {
      "former_ids": [],
      "id": "water_pump_damage",
      "max_level": 5,
      "name": "Water Pressure",
      "tower": "WaterPump"
    },
    {
      "former_ids": [],
      "id": "water_pump_fire_rate",
      "max_level": 5,
      "name": "Pump Speed",
      "tower": "WaterPump"
    },
    {
      "former_ids": [],
      "id": "water_pump_range",
      "max_level": 5,
      "name": "Hose Reach",
      "tower": "WaterPump"
    }
  ],
  "towers": [
    {
      "category": "Basic",
      "color": "#e6b34d",
      "description": "Standard tower with balanced stats. Targets ground and air.",
      "former_ids": [],
      "former_types": [
        "Basic"
      ],
      "fx": {
        "heats": true,
        "projectile_color": "#ffcc33",
        "projectile_speed": 15.0
      },
      "height": {
        "ground_counts": true,
        "ground_prep": "none",
        "hill_cap": 0,
        "hill_only": false,
        "hills": true,
        "max": 24,
        "platforms": true,
        "water": null
      },
      "help": {
        "counters": "Struggles against high-armor enemies",
        "short": "Balanced damage and fire rate",
        "strategy": "Good all-around tower. Place early for consistent damage output.",
        "synergies": [
          "Cold Snap reduces enemy speed for more hits",
          "Platforms increase damage"
        ]
      },
      "id": "cannon",
      "levels": {
        "at_once_how": "single",
        "can_hit": "Ground & Air",
        "list": [
          {
            "cost": 0,
            "level": 1,
            "total": 50,
            "v": {
              "armor_damage": 0.0,
              "at_once": 1,
              "damage": 20.0,
              "fire_rate": 1.0,
              "range": 5.0,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 75,
            "level": 2,
            "total": 125,
            "v": {
              "armor_damage": 0.0,
              "at_once": 1,
              "damage": 30.0,
              "fire_rate": 1.3,
              "range": 5.5,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 112,
            "level": 3,
            "total": 237,
            "v": {
              "armor_damage": 0.0,
              "at_once": 1,
              "damage": 40.0,
              "fire_rate": 1.6,
              "range": 6.0,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 168,
            "level": 4,
            "total": 405,
            "v": {
              "armor_damage": 0.0,
              "at_once": 1,
              "damage": 50.0,
              "fire_rate": 1.9,
              "range": 6.5,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 253,
            "level": 5,
            "total": 658,
            "v": {
              "armor_damage": 0.0,
              "at_once": 1,
              "damage": 60.0,
              "fire_rate": 2.2,
              "range": 7.0,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 379,
            "level": 6,
            "total": 1037,
            "v": {
              "armor_damage": 0.0,
              "at_once": 1,
              "damage": 70.0,
              "fire_rate": 2.5,
              "range": 7.5,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 569,
            "level": 7,
            "total": 1606,
            "v": {
              "armor_damage": 0.0,
              "at_once": 1,
              "damage": 80.0,
              "fire_rate": 2.8,
              "range": 8.0,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 854,
            "level": 8,
            "total": 2460,
            "v": {
              "armor_damage": 0.0,
              "at_once": 1,
              "damage": 90.0,
              "fire_rate": 3.1,
              "range": 8.5,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 1281,
            "level": 9,
            "total": 3741,
            "v": {
              "armor_damage": 0.0,
              "at_once": 1,
              "damage": 100.0,
              "fire_rate": 3.4,
              "range": 9.0,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 1922,
            "level": 10,
            "total": 5663,
            "v": {
              "armor_damage": 0.0,
              "at_once": 1,
              "damage": 110.0,
              "fire_rate": 3.7,
              "range": 9.5,
              "shield_damage": 0.0
            }
          }
        ],
        "max": 10,
        "research_cap": false,
        "rows": [
          {
            "format": "f",
            "key": "damage",
            "label": "Damage",
            "lower_better": false
          },
          {
            "format": "rate",
            "key": "fire_rate",
            "label": "Fire rate",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "range",
            "label": "Range",
            "lower_better": false
          },
          {
            "format": "d",
            "key": "at_once",
            "label": "Targets at once",
            "lower_better": false
          }
        ]
      },
      "model": "models/towers/cannon.glb",
      "name": "Cannon Tower",
      "slug": "cannon",
      "stats": {
        "cost": 50,
        "damage": 20.0,
        "damage_per_level": 10.0,
        "fire_rate": 1.0,
        "fire_rate_per_level": 0.3,
        "max_level": 10,
        "range": 5.0,
        "range_per_level": 0.5,
        "research_cost": 0,
        "splash_radius": 0.0
      },
      "tags": [
        "Starter"
      ],
      "targets": {
        "air": true,
        "ground": true
      },
      "type": "Cannon"
    },
    {
      "category": "Utility",
      "color": "#ffd940",
      "description": "Makes power for your towers. Does not shoot.",
      "former_ids": [],
      "former_types": [],
      "fx": {
        "heats": false,
        "projectile_color": "#ffd940",
        "projectile_speed": 0.0
      },
      "height": {
        "ground_counts": false,
        "ground_prep": "none",
        "hill_cap": 0,
        "hill_only": false,
        "hills": true,
        "max": 24,
        "platforms": true,
        "water": null
      },
      "help": {
        "counters": "Deals no damage. In a normal game it has no use and is not shown.",
        "short": "Makes the power your towers need",
        "strategy": "Every tower needs power. The base gives a little for free. When your towers need more than you have, the ones farthest from the base stop working. A Power Plant adds its output to your supply. It can be built on any tile a tower can, and it makes more on a hill or a platform. Each upgrade adds more output. It does not shoot, so every plant takes a spot a gun could have had.",
        "synergies": [
          "More output on hills and platforms",
          "Power Plants next to each other make more",
          "Switch off towers you do not need to free power for others"
        ]
      },
      "id": "power_plant",
      "levels": {
        "at_once_how": "none",
        "can_hit": "—",
        "list": [
          {
            "cost": 0,
            "level": 1,
            "total": 200,
            "v": {
              "armor_damage": 0.0,
              "damage": 40.0,
              "fire_rate": 1.0,
              "plant_output": 40,
              "range": 0.5,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 280,
            "level": 2,
            "total": 480,
            "v": {
              "armor_damage": 0.0,
              "damage": 60.0,
              "fire_rate": 1.0,
              "plant_output": 60,
              "range": 0.5,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 391,
            "level": 3,
            "total": 871,
            "v": {
              "armor_damage": 0.0,
              "damage": 80.0,
              "fire_rate": 1.0,
              "plant_output": 80,
              "range": 0.5,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 548,
            "level": 4,
            "total": 1419,
            "v": {
              "armor_damage": 0.0,
              "damage": 100.0,
              "fire_rate": 1.0,
              "plant_output": 100,
              "range": 0.5,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 768,
            "level": 5,
            "total": 2187,
            "v": {
              "armor_damage": 0.0,
              "damage": 120.0,
              "fire_rate": 1.0,
              "plant_output": 120,
              "range": 0.5,
              "shield_damage": 0.0
            }
          }
        ],
        "max": 5,
        "research_cap": false,
        "rows": [
          {
            "format": "d",
            "key": "plant_output",
            "label": "Power output",
            "lower_better": false
          }
        ]
      },
      "model": "models/towers/power_plant.glb",
      "name": "Power Plant",
      "slug": "power_plant",
      "stats": {
        "cost": 200,
        "damage": 40.0,
        "damage_per_level": 20.0,
        "fire_rate": 1.0,
        "fire_rate_per_level": 0.0,
        "max_level": 5,
        "range": 0.5,
        "range_per_level": 0.0,
        "research_cost": 0,
        "splash_radius": 0.0
      },
      "tags": [
        "Support",
        "No damage"
      ],
      "targets": {
        "air": false,
        "ground": false
      },
      "type": "PowerPlant"
    },
    {
      "category": "Advanced",
      "color": "#4dff33",
      "description": "Sprays corrosive acid from multiple hoses. Melts enemy health. Ground only.",
      "former_ids": [],
      "former_types": [
        "Splash"
      ],
      "fx": {
        "heats": false,
        "projectile_color": "#4dff33",
        "projectile_speed": 12.0
      },
      "height": {
        "ground_counts": true,
        "ground_prep": "none",
        "hill_cap": 0,
        "hill_only": false,
        "hills": true,
        "max": 24,
        "platforms": true,
        "water": null
      },
      "help": {
        "counters": "Cannot target flying enemies",
        "short": "Multi-hose acid spray, melts health",
        "strategy": "Best against groups of enemies. Position where path curves for maximum coverage.",
        "synergies": [
          "Cold Snap groups enemies together",
          "Works well with armor-piercing towers"
        ]
      },
      "id": "acid",
      "levels": {
        "at_once_how": "targets",
        "can_hit": "Ground",
        "list": [
          {
            "cost": 0,
            "level": 1,
            "total": 120,
            "v": {
              "armor_damage": 10.0,
              "at_once": 3,
              "damage": 30.0,
              "fire_rate": 0.8,
              "range": 4.5,
              "shield_damage": 5.0
            }
          },
          {
            "cost": 168,
            "level": 2,
            "total": 288,
            "v": {
              "armor_damage": 10.0,
              "at_once": 3,
              "damage": 42.0,
              "fire_rate": 0.9,
              "range": 4.8,
              "shield_damage": 5.0
            }
          },
          {
            "cost": 235,
            "level": 3,
            "total": 523,
            "v": {
              "armor_damage": 10.0,
              "at_once": 4,
              "damage": 54.0,
              "fire_rate": 1.0,
              "range": 5.1,
              "shield_damage": 5.0
            }
          },
          {
            "cost": 329,
            "level": 4,
            "total": 852,
            "v": {
              "armor_damage": 10.0,
              "at_once": 4,
              "damage": 66.0,
              "fire_rate": 1.1,
              "range": 5.4,
              "shield_damage": 5.0
            }
          },
          {
            "cost": 460,
            "level": 5,
            "total": 1312,
            "v": {
              "armor_damage": 10.0,
              "at_once": 5,
              "damage": 78.0,
              "fire_rate": 1.2,
              "range": 5.7,
              "shield_damage": 5.0
            }
          },
          {
            "cost": 645,
            "level": 6,
            "total": 1957,
            "v": {
              "armor_damage": 10.0,
              "at_once": 6,
              "damage": 90.0,
              "fire_rate": 1.3,
              "range": 6.0,
              "shield_damage": 5.0
            }
          },
          {
            "cost": 903,
            "level": 7,
            "total": 2860,
            "v": {
              "armor_damage": 10.0,
              "at_once": 6,
              "damage": 102.0,
              "fire_rate": 1.4,
              "range": 6.3,
              "shield_damage": 5.0
            }
          },
          {
            "cost": 1264,
            "level": 8,
            "total": 4124,
            "v": {
              "armor_damage": 10.0,
              "at_once": 6,
              "damage": 114.0,
              "fire_rate": 1.5,
              "range": 6.6,
              "shield_damage": 5.0
            }
          },
          {
            "cost": 1770,
            "level": 9,
            "total": 5894,
            "v": {
              "armor_damage": 10.0,
              "at_once": 6,
              "damage": 126.0,
              "fire_rate": 1.6,
              "range": 6.9,
              "shield_damage": 5.0
            }
          },
          {
            "cost": 2479,
            "level": 10,
            "total": 8373,
            "v": {
              "armor_damage": 10.0,
              "at_once": 6,
              "damage": 138.0,
              "fire_rate": 1.7,
              "range": 7.2,
              "shield_damage": 5.0
            }
          }
        ],
        "max": 10,
        "research_cap": false,
        "rows": [
          {
            "format": "f",
            "key": "damage",
            "label": "Damage",
            "lower_better": false
          },
          {
            "format": "rate",
            "key": "fire_rate",
            "label": "Fire rate",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "range",
            "label": "Range",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "shield_damage",
            "label": "Shield damage",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "armor_damage",
            "label": "Armor damage",
            "lower_better": false
          },
          {
            "format": "d",
            "key": "at_once",
            "label": "Targets at once",
            "lower_better": false
          }
        ]
      },
      "model": "models/towers/acid.glb",
      "name": "Acid Tower",
      "slug": "acid",
      "stats": {
        "cost": 120,
        "damage": 30.0,
        "damage_per_level": 12.0,
        "fire_rate": 0.8,
        "fire_rate_per_level": 0.1,
        "max_level": 10,
        "range": 4.5,
        "range_per_level": 0.3,
        "research_cost": 10000,
        "splash_radius": 0.0
      },
      "tags": [
        "Damage over time",
        "Anti-armor"
      ],
      "targets": {
        "air": false,
        "ground": true
      },
      "type": "Acid"
    },
    {
      "category": "Advanced",
      "color": "#66b3ff",
      "description": "Slows enemies. Critical hits freeze! Targets ground and air.",
      "former_ids": [
        "slow"
      ],
      "former_types": [
        "Slow"
      ],
      "fx": {
        "heats": false,
        "projectile_color": "#4db3ff",
        "projectile_speed": 12.0
      },
      "height": {
        "ground_counts": true,
        "ground_prep": "none",
        "hill_cap": 0,
        "hill_only": false,
        "hills": true,
        "max": 24,
        "platforms": true,
        "water": null
      },
      "help": {
        "counters": "Low damage output, needs support towers",
        "short": "Slows enemies, freeze on crit",
        "strategy": "Place near path entrances to maximize slow uptime. Pairs well with high-damage towers.",
        "synergies": [
          "Sniper benefits from slowed targets",
          "Cannon gets more hits on slowed enemies"
        ]
      },
      "id": "cold_snap",
      "levels": {
        "at_once_how": "targets",
        "can_hit": "Ground & Air",
        "list": [
          {
            "cost": 0,
            "level": 1,
            "total": 75,
            "v": {
              "armor_damage": 0.0,
              "at_once": 1,
              "crit_chance": 5,
              "damage": 10.0,
              "fire_rate": 0.8,
              "range": 4.5,
              "shield_damage": 5.0,
              "slow_cap": 90,
              "slow_percent": 30
            }
          },
          {
            "cost": 105,
            "level": 2,
            "total": 180,
            "v": {
              "armor_damage": 0.0,
              "at_once": 2,
              "crit_chance": 8,
              "damage": 15.0,
              "fire_rate": 0.95,
              "range": 4.8,
              "shield_damage": 5.0,
              "slow_cap": 90,
              "slow_percent": 35
            }
          },
          {
            "cost": 146,
            "level": 3,
            "total": 326,
            "v": {
              "armor_damage": 0.0,
              "at_once": 3,
              "crit_chance": 11,
              "damage": 20.0,
              "fire_rate": 1.1,
              "range": 5.1,
              "shield_damage": 5.0,
              "slow_cap": 90,
              "slow_percent": 40
            }
          },
          {
            "cost": 205,
            "level": 4,
            "total": 531,
            "v": {
              "armor_damage": 0.0,
              "at_once": 4,
              "crit_chance": 14,
              "damage": 25.0,
              "fire_rate": 1.25,
              "range": 5.4,
              "shield_damage": 5.0,
              "slow_cap": 90,
              "slow_percent": 45
            }
          },
          {
            "cost": 288,
            "level": 5,
            "total": 819,
            "v": {
              "armor_damage": 0.0,
              "at_once": 5,
              "crit_chance": 17,
              "damage": 30.0,
              "fire_rate": 1.4,
              "range": 5.7,
              "shield_damage": 5.0,
              "slow_cap": 92,
              "slow_percent": 50
            }
          },
          {
            "cost": 403,
            "level": 6,
            "total": 1222,
            "v": {
              "armor_damage": 0.0,
              "at_once": 6,
              "crit_chance": 20,
              "damage": 35.0,
              "fire_rate": 1.55,
              "range": 6.0,
              "shield_damage": 5.0,
              "slow_cap": 94,
              "slow_percent": 55
            }
          },
          {
            "cost": 564,
            "level": 7,
            "total": 1786,
            "v": {
              "armor_damage": 0.0,
              "at_once": 7,
              "crit_chance": 23,
              "damage": 40.0,
              "fire_rate": 1.7,
              "range": 6.3,
              "shield_damage": 5.0,
              "slow_cap": 96,
              "slow_percent": 60
            }
          },
          {
            "cost": 790,
            "level": 8,
            "total": 2576,
            "v": {
              "armor_damage": 0.0,
              "at_once": 8,
              "crit_chance": 26,
              "damage": 45.0,
              "fire_rate": 1.85,
              "range": 6.6,
              "shield_damage": 5.0,
              "slow_cap": 98,
              "slow_percent": 65
            }
          },
          {
            "cost": 1106,
            "level": 9,
            "total": 3682,
            "v": {
              "armor_damage": 0.0,
              "at_once": 8,
              "crit_chance": 28,
              "damage": 50.0,
              "fire_rate": 2.0,
              "range": 6.9,
              "shield_damage": 5.0,
              "slow_cap": 98,
              "slow_percent": 70
            }
          },
          {
            "cost": 1549,
            "level": 10,
            "total": 5231,
            "v": {
              "armor_damage": 0.0,
              "at_once": 8,
              "crit_chance": 32,
              "damage": 55.0,
              "fire_rate": 2.15,
              "range": 7.2,
              "shield_damage": 5.0,
              "slow_cap": 98,
              "slow_percent": 70
            }
          }
        ],
        "max": 10,
        "research_cap": false,
        "rows": [
          {
            "format": "f",
            "key": "damage",
            "label": "Damage",
            "lower_better": false
          },
          {
            "format": "rate",
            "key": "fire_rate",
            "label": "Fire rate",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "range",
            "label": "Range",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "shield_damage",
            "label": "Shield damage",
            "lower_better": false
          },
          {
            "format": "d",
            "key": "at_once",
            "label": "Targets at once",
            "lower_better": false
          },
          {
            "format": "%",
            "key": "slow_percent",
            "label": "Slow",
            "lower_better": false
          },
          {
            "format": "%",
            "key": "slow_cap",
            "label": "Max slow",
            "lower_better": false
          },
          {
            "format": "%",
            "key": "crit_chance",
            "label": "Critical chance",
            "lower_better": false
          }
        ]
      },
      "model": "models/towers/cold_snap.glb",
      "name": "Cold Snap",
      "slug": "cold_snap",
      "stats": {
        "cost": 75,
        "damage": 10.0,
        "damage_per_level": 5.0,
        "fire_rate": 0.8,
        "fire_rate_per_level": 0.15,
        "max_level": 10,
        "range": 4.5,
        "range_per_level": 0.3,
        "research_cost": 10000,
        "splash_radius": 0.0
      },
      "tags": [
        "Control",
        "Slows"
      ],
      "targets": {
        "air": true,
        "ground": true
      },
      "type": "ColdSnap"
    },
    {
      "category": "Utility",
      "color": "#bf8c40",
      "description": "Resource tower placed on hills. Generates gold each wave based on collection rate, speed, and depth; taller hills earn more, counting hills up to height 5. Upgrades add conveyor belts on the sides of its hill (3, up to level 4).",
      "former_ids": [],
      "former_types": [],
      "fx": {
        "heats": false,
        "projectile_color": "#bf9933",
        "projectile_speed": 0.0
      },
      "height": {
        "ground_counts": true,
        "ground_prep": "none",
        "hill_cap": 5,
        "hill_only": true,
        "hills": true,
        "max": 24,
        "platforms": true,
        "water": null
      },
      "help": {
        "counters": "Fast enemies that rush through before you can spend earned gold. Maps with few hills severely limit placement options. Late-game building provides less return on investment.",
        "short": "Generates gold per wave. Must be placed on hill tops only.",
        "strategy": "Place on tall hills for the height bonus (+15% per height level, plus more collection and depth); a hill counts up to height 5, so anything taller earns the same. Each in-game upgrade adds a conveyor belt on one side of its hill, increasing all stats. It takes 3 upgrades (level 4) wherever it stands.",
        "synergies": [
          "Cold Snaps: Give enemies more time to pass while you accumulate gold",
          "Platforms: Build platforms on adjacent tiles to create buildable space",
          "Early Game: Build early to maximize total gold earned across all waves"
        ]
      },
      "id": "miner",
      "levels": {
        "at_once_how": "none",
        "can_hit": "—",
        "list": [
          {
            "cost": 0,
            "level": 1,
            "total": 150,
            "v": {
              "armor_damage": 0.0,
              "damage": 5.0,
              "depth_level": 1,
              "fire_rate": 1.0,
              "income_per_wave": 5,
              "range": 1.0,
              "reserve_size": 200,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 150,
            "level": 2,
            "total": 300,
            "v": {
              "armor_damage": 0.0,
              "damage": 8.0,
              "depth_level": 2,
              "fire_rate": 1.2,
              "income_per_wave": 14,
              "range": 1.5,
              "reserve_size": 600,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 300,
            "level": 3,
            "total": 600,
            "v": {
              "armor_damage": 0.0,
              "damage": 11.0,
              "depth_level": 3,
              "fire_rate": 1.4,
              "income_per_wave": 30,
              "range": 2.0,
              "reserve_size": 1800,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 600,
            "level": 4,
            "total": 1200,
            "v": {
              "armor_damage": 0.0,
              "damage": 14.0,
              "depth_level": 4,
              "fire_rate": 1.6,
              "income_per_wave": 56,
              "range": 2.5,
              "reserve_size": 5400,
              "shield_damage": 0.0
            }
          }
        ],
        "max": 4,
        "research_cap": false,
        "rows": [
          {
            "format": "d",
            "key": "income_per_wave",
            "label": "Gold a wave",
            "lower_better": false
          },
          {
            "format": "d",
            "key": "reserve_size",
            "label": "Gold in the mine",
            "lower_better": false
          },
          {
            "format": "d",
            "key": "depth_level",
            "label": "Mine depth",
            "lower_better": false
          }
        ]
      },
      "model": "models/towers/miner.glb",
      "name": "Miner",
      "slug": "miner",
      "stats": {
        "cost": 150,
        "damage": 5.0,
        "damage_per_level": 3.0,
        "fire_rate": 1.0,
        "fire_rate_per_level": 0.2,
        "max_level": 10,
        "range": 1.0,
        "range_per_level": 0.5,
        "research_cost": 10000,
        "splash_radius": 0.0
      },
      "tags": [
        "Earns gold"
      ],
      "targets": {
        "air": false,
        "ground": false
      },
      "type": "Miner"
    },
    {
      "category": "Basic",
      "color": "#9966cc",
      "description": "Long range, high damage. Cannot target close enemies.",
      "former_ids": [],
      "former_types": [],
      "fx": {
        "heats": false,
        "projectile_color": "#733d1a",
        "projectile_speed": 25.0
      },
      "height": {
        "ground_counts": true,
        "ground_prep": "none",
        "hill_cap": 0,
        "hill_only": false,
        "hills": true,
        "max": 24,
        "platforms": true,
        "water": null
      },
      "help": {
        "counters": "Minimum range means close enemies slip through. Slow fire rate struggles with swarms.",
        "short": "Long range, high single-target damage",
        "strategy": "Place on high ground with clear sightlines. Target priority: strongest enemies first.",
        "synergies": [
          "Cold Snap keeps enemies in range longer",
          "Platforms boost already-high damage"
        ]
      },
      "id": "sniper",
      "levels": {
        "at_once_how": "single",
        "can_hit": "Ground & Air",
        "list": [
          {
            "cost": 0,
            "level": 1,
            "total": 500,
            "v": {
              "armor_damage": 25.0,
              "at_once": 1,
              "damage": 150.0,
              "fire_rate": 0.3,
              "range": 26.0,
              "shield_damage": 30.0
            }
          },
          {
            "cost": 800,
            "level": 2,
            "total": 1300,
            "v": {
              "armor_damage": 25.0,
              "at_once": 1,
              "damage": 190.0,
              "fire_rate": 0.4,
              "range": 27.0,
              "shield_damage": 30.0
            }
          },
          {
            "cost": 1280,
            "level": 3,
            "total": 2580,
            "v": {
              "armor_damage": 25.0,
              "at_once": 1,
              "damage": 230.0,
              "fire_rate": 0.5,
              "range": 28.0,
              "shield_damage": 30.0
            }
          },
          {
            "cost": 2048,
            "level": 4,
            "total": 4628,
            "v": {
              "armor_damage": 25.0,
              "at_once": 1,
              "damage": 270.0,
              "fire_rate": 0.6,
              "range": 29.0,
              "shield_damage": 30.0
            }
          },
          {
            "cost": 3276,
            "level": 5,
            "total": 7904,
            "v": {
              "armor_damage": 25.0,
              "at_once": 1,
              "damage": 310.0,
              "fire_rate": 0.7,
              "range": 30.0,
              "shield_damage": 30.0
            }
          },
          {
            "cost": 5242,
            "level": 6,
            "total": 13146,
            "v": {
              "armor_damage": 25.0,
              "at_once": 1,
              "damage": 350.0,
              "fire_rate": 0.8,
              "range": 31.0,
              "shield_damage": 30.0
            }
          },
          {
            "cost": 8388,
            "level": 7,
            "total": 21534,
            "v": {
              "armor_damage": 25.0,
              "at_once": 1,
              "damage": 390.0,
              "fire_rate": 0.9,
              "range": 32.0,
              "shield_damage": 30.0
            }
          },
          {
            "cost": 13421,
            "level": 8,
            "total": 34955,
            "v": {
              "armor_damage": 25.0,
              "at_once": 1,
              "damage": 430.0,
              "fire_rate": 1.0,
              "range": 33.0,
              "shield_damage": 30.0
            }
          },
          {
            "cost": 21474,
            "level": 9,
            "total": 56429,
            "v": {
              "armor_damage": 25.0,
              "at_once": 1,
              "damage": 470.0,
              "fire_rate": 1.1,
              "range": 34.0,
              "shield_damage": 30.0
            }
          },
          {
            "cost": 34359,
            "level": 10,
            "total": 90788,
            "v": {
              "armor_damage": 25.0,
              "at_once": 1,
              "damage": 510.0,
              "fire_rate": 1.2,
              "range": 35.0,
              "shield_damage": 30.0
            }
          }
        ],
        "max": 10,
        "research_cap": false,
        "rows": [
          {
            "format": "f",
            "key": "damage",
            "label": "Damage",
            "lower_better": false
          },
          {
            "format": "rate",
            "key": "fire_rate",
            "label": "Fire rate",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "range",
            "label": "Range",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "shield_damage",
            "label": "Shield damage",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "armor_damage",
            "label": "Armor damage",
            "lower_better": false
          },
          {
            "format": "d",
            "key": "at_once",
            "label": "Targets at once",
            "lower_better": false
          }
        ]
      },
      "model": "models/towers/sniper.glb",
      "name": "Sniper Tower",
      "slug": "sniper",
      "stats": {
        "cost": 500,
        "damage": 150.0,
        "damage_per_level": 40.0,
        "fire_rate": 0.3,
        "fire_rate_per_level": 0.1,
        "max_level": 10,
        "range": 26.0,
        "range_per_level": 1.0,
        "research_cost": 12000,
        "splash_radius": 0.0
      },
      "tags": [
        "Anti-armor",
        "Anti-shield"
      ],
      "targets": {
        "air": true,
        "ground": true
      },
      "type": "Sniper"
    },
    {
      "category": "Advanced",
      "color": "#66ccff",
      "description": "Chain lightning arcs between enemies. Shocked enemies attract more chains! Overcharge at 4+ hits.",
      "former_ids": [],
      "former_types": [],
      "fx": {
        "heats": true,
        "projectile_color": "#66ccff",
        "projectile_speed": 0.0
      },
      "height": {
        "ground_counts": true,
        "ground_prep": "none",
        "hill_cap": 0,
        "hill_only": false,
        "hills": true,
        "max": 24,
        "platforms": true,
        "water": null
      },
      "help": {
        "counters": "Single enemies reduce chain potential",
        "short": "Chain lightning, shock stacks, overcharge",
        "strategy": "Most effective against grouped enemies. Shock effect stacks - prioritize already-shocked targets.",
        "synergies": [
          "Cold Snap groups enemies for better chains",
          "Multiple Lightning towers chain off each other's shocked targets"
        ]
      },
      "id": "lightning",
      "levels": {
        "at_once_how": "jumps",
        "can_hit": "Ground & Air",
        "list": [
          {
            "cost": 0,
            "level": 1,
            "total": 125,
            "v": {
              "armor_damage": 0.0,
              "at_once": 4,
              "damage": 25.0,
              "fire_rate": 0.7,
              "range": 5.5,
              "shield_damage": 15.0
            }
          },
          {
            "cost": 200,
            "level": 2,
            "total": 325,
            "v": {
              "armor_damage": 0.0,
              "at_once": 5,
              "damage": 37.0,
              "fire_rate": 0.82,
              "range": 5.9,
              "shield_damage": 15.0
            }
          },
          {
            "cost": 320,
            "level": 3,
            "total": 645,
            "v": {
              "armor_damage": 0.0,
              "at_once": 6,
              "damage": 49.0,
              "fire_rate": 0.94,
              "range": 6.3,
              "shield_damage": 15.0
            }
          },
          {
            "cost": 512,
            "level": 4,
            "total": 1157,
            "v": {
              "armor_damage": 0.0,
              "at_once": 7,
              "damage": 61.0,
              "fire_rate": 1.06,
              "range": 6.7,
              "shield_damage": 15.0
            }
          },
          {
            "cost": 819,
            "level": 5,
            "total": 1976,
            "v": {
              "armor_damage": 0.0,
              "at_once": 8,
              "damage": 73.0,
              "fire_rate": 1.18,
              "range": 7.1,
              "shield_damage": 15.0
            }
          }
        ],
        "max": 5,
        "research_cap": false,
        "rows": [
          {
            "format": "f",
            "key": "damage",
            "label": "Damage",
            "lower_better": false
          },
          {
            "format": "rate",
            "key": "fire_rate",
            "label": "Fire rate",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "range",
            "label": "Range",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "shield_damage",
            "label": "Shield damage",
            "lower_better": false
          },
          {
            "format": "d",
            "key": "at_once",
            "label": "Targets at once",
            "lower_better": false
          }
        ]
      },
      "model": "models/towers/lightning.glb",
      "name": "Lightning Tower",
      "slug": "lightning",
      "stats": {
        "cost": 125,
        "damage": 25.0,
        "damage_per_level": 12.0,
        "fire_rate": 0.7,
        "fire_rate_per_level": 0.12,
        "max_level": 5,
        "range": 5.5,
        "range_per_level": 0.4,
        "research_cost": 15000,
        "splash_radius": 0.0
      },
      "tags": [
        "Chains",
        "Anti-shield"
      ],
      "targets": {
        "air": true,
        "ground": true
      },
      "type": "Lightning"
    },
    {
      "category": "Basic",
      "color": "#4de699",
      "description": "Attack helicopter: lifts off when a wave starts and lands after. Guns, then rockets, then both. Choose damage focus: shields, armor, or health.",
      "former_ids": [
        "airplane"
      ],
      "former_types": [
        "Airplane"
      ],
      "fx": {
        "heats": false,
        "projectile_color": "#ff8033",
        "projectile_speed": 20.0
      },
      "height": {
        "ground_counts": true,
        "ground_prep": "none",
        "hill_cap": 0,
        "hill_only": false,
        "hills": true,
        "max": 24,
        "platforms": true,
        "water": null
      },
      "help": {
        "counters": "Needs a moment to take off at the start of each wave; guns hit one target at a time",
        "short": "Attack helicopter: chin gun, then rocket pods, then both",
        "strategy": "Lifts off when a wave starts, hovers short of its target anywhere in its long range and fires; lands when the wave is over. Guns at levels 1-3, splashing rocket volleys at 4-6, both from 7. Choose a damage focus for the enemies you face.",
        "synergies": [
          "Can reach enemies other towers miss",
          "Combines with ground towers for full coverage"
        ]
      },
      "id": "helicopter",
      "levels": {
        "at_once_how": "single",
        "can_hit": "Ground & Air",
        "list": [
          {
            "cost": 0,
            "level": 1,
            "total": 200,
            "v": {
              "armor_damage": 10.0,
              "at_once": 1,
              "damage": 15.0,
              "fire_rate": 2.0,
              "range": 24.0,
              "shield_damage": 10.0
            }
          },
          {
            "cost": 260,
            "level": 2,
            "total": 460,
            "v": {
              "armor_damage": 10.0,
              "at_once": 1,
              "damage": 23.0,
              "fire_rate": 2.2,
              "range": 25.5,
              "shield_damage": 10.0
            }
          },
          {
            "cost": 338,
            "level": 3,
            "total": 798,
            "v": {
              "armor_damage": 10.0,
              "at_once": 1,
              "damage": 31.0,
              "fire_rate": 2.4,
              "range": 27.0,
              "shield_damage": 10.0
            }
          },
          {
            "cost": 439,
            "level": 4,
            "total": 1237,
            "v": {
              "armor_damage": 10.0,
              "at_once": 1,
              "damage": 39.0,
              "fire_rate": 2.6,
              "range": 28.5,
              "shield_damage": 10.0
            }
          },
          {
            "cost": 571,
            "level": 5,
            "total": 1808,
            "v": {
              "armor_damage": 10.0,
              "at_once": 1,
              "damage": 47.0,
              "fire_rate": 2.8,
              "range": 30.0,
              "shield_damage": 10.0
            }
          },
          {
            "cost": 742,
            "level": 6,
            "total": 2550,
            "v": {
              "armor_damage": 10.0,
              "at_once": 1,
              "damage": 55.0,
              "fire_rate": 3.0,
              "range": 31.5,
              "shield_damage": 10.0
            }
          },
          {
            "cost": 965,
            "level": 7,
            "total": 3515,
            "v": {
              "armor_damage": 10.0,
              "at_once": 1,
              "damage": 63.0,
              "fire_rate": 3.2,
              "range": 33.0,
              "shield_damage": 10.0
            }
          },
          {
            "cost": 1254,
            "level": 8,
            "total": 4769,
            "v": {
              "armor_damage": 10.0,
              "at_once": 1,
              "damage": 71.0,
              "fire_rate": 3.4,
              "range": 34.5,
              "shield_damage": 10.0
            }
          },
          {
            "cost": 1631,
            "level": 9,
            "total": 6400,
            "v": {
              "armor_damage": 10.0,
              "at_once": 1,
              "damage": 79.0,
              "fire_rate": 3.6,
              "range": 36.0,
              "shield_damage": 10.0
            }
          },
          {
            "cost": 2120,
            "level": 10,
            "total": 8520,
            "v": {
              "armor_damage": 10.0,
              "at_once": 1,
              "damage": 87.0,
              "fire_rate": 3.8,
              "range": 37.5,
              "shield_damage": 10.0
            }
          }
        ],
        "max": 10,
        "research_cap": false,
        "rows": [
          {
            "format": "f",
            "key": "damage",
            "label": "Damage",
            "lower_better": false
          },
          {
            "format": "rate",
            "key": "fire_rate",
            "label": "Fire rate",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "range",
            "label": "Range",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "shield_damage",
            "label": "Shield damage",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "armor_damage",
            "label": "Armor damage",
            "lower_better": false
          },
          {
            "format": "d",
            "key": "at_once",
            "label": "Targets at once",
            "lower_better": false
          }
        ]
      },
      "model": "models/towers/helicopter.glb",
      "name": "Helicopter",
      "slug": "helicopter",
      "stats": {
        "cost": 200,
        "damage": 15.0,
        "damage_per_level": 8.0,
        "fire_rate": 2.0,
        "fire_rate_per_level": 0.2,
        "max_level": 10,
        "range": 24.0,
        "range_per_level": 1.5,
        "research_cost": 18000,
        "splash_radius": 0.0
      },
      "tags": [],
      "targets": {
        "air": true,
        "ground": true
      },
      "type": "Helicopter"
    },
    {
      "category": "Advanced",
      "color": "#b3b3bf",
      "description": "Launches a devastating saw blade down the path. Shreds through all enemies in its path!",
      "former_ids": [],
      "former_types": [],
      "fx": {
        "heats": false,
        "projectile_color": "#ccccd9",
        "projectile_speed": 0.0
      },
      "height": {
        "ground_counts": true,
        "ground_prep": "none",
        "hill_cap": 0,
        "hill_only": false,
        "hills": true,
        "max": 24,
        "platforms": true,
        "water": null
      },
      "help": {
        "counters": "Slow fire rate: a few seconds between blades",
        "short": "Path-following blade, hits all enemies",
        "strategy": "Place at path start for maximum coverage. Blade follows path and hits every enemy it passes.",
        "synergies": [
          "Cold Snap keeps enemies in the blade's path",
          "Works best on long straight paths"
        ]
      },
      "id": "saw_blade",
      "levels": {
        "at_once_how": "bounces",
        "can_hit": "Ground",
        "list": [
          {
            "cost": 0,
            "level": 1,
            "total": 150,
            "v": {
              "armor_damage": 20.0,
              "at_once": 1,
              "crit_chance": 10,
              "damage": 35.0,
              "fire_rate": 0.4,
              "range": 7.0,
              "shield_damage": 5.0,
              "turns": 0
            }
          },
          {
            "cost": 255,
            "level": 2,
            "total": 405,
            "v": {
              "armor_damage": 20.0,
              "at_once": 2,
              "crit_chance": 12,
              "damage": 50.0,
              "fire_rate": 0.45,
              "range": 7.5,
              "shield_damage": 5.0,
              "turns": 1
            }
          },
          {
            "cost": 433,
            "level": 3,
            "total": 838,
            "v": {
              "armor_damage": 20.0,
              "at_once": 3,
              "crit_chance": 14,
              "damage": 65.0,
              "fire_rate": 0.5,
              "range": 8.0,
              "shield_damage": 5.0,
              "turns": 2
            }
          },
          {
            "cost": 736,
            "level": 4,
            "total": 1574,
            "v": {
              "armor_damage": 20.0,
              "at_once": 4,
              "crit_chance": 16,
              "damage": 80.0,
              "fire_rate": 0.55,
              "range": 8.5,
              "shield_damage": 5.0,
              "turns": 3
            }
          },
          {
            "cost": 1252,
            "level": 5,
            "total": 2826,
            "v": {
              "armor_damage": 20.0,
              "at_once": 5,
              "crit_chance": 18,
              "damage": 95.0,
              "fire_rate": 0.6,
              "range": 9.0,
              "shield_damage": 5.0,
              "turns": 4
            }
          }
        ],
        "max": 5,
        "research_cap": false,
        "rows": [
          {
            "format": "f",
            "key": "damage",
            "label": "Damage",
            "lower_better": false
          },
          {
            "format": "rate",
            "key": "fire_rate",
            "label": "Fire rate",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "range",
            "label": "Range",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "shield_damage",
            "label": "Shield damage",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "armor_damage",
            "label": "Armor damage",
            "lower_better": false
          },
          {
            "format": "d",
            "key": "at_once",
            "label": "Targets at once",
            "lower_better": false
          },
          {
            "format": "%",
            "key": "crit_chance",
            "label": "Critical chance",
            "lower_better": false
          },
          {
            "format": "d",
            "key": "turns",
            "label": "Turns",
            "lower_better": false
          }
        ]
      },
      "model": "models/towers/saw_blade.glb",
      "name": "SawBlade Tower",
      "slug": "saw_blade",
      "stats": {
        "cost": 150,
        "damage": 35.0,
        "damage_per_level": 15.0,
        "fire_rate": 0.4,
        "fire_rate_per_level": 0.05,
        "max_level": 5,
        "range": 7.0,
        "range_per_level": 0.5,
        "research_cost": 18000,
        "splash_radius": 0.0
      },
      "tags": [
        "Pierces",
        "Anti-armor"
      ],
      "targets": {
        "air": false,
        "ground": true
      },
      "type": "SawBlade"
    },
    {
      "category": "Advanced",
      "color": "#3399ff",
      "description": "Industrial pump that draws water to blast Inferno enemies. Massive damage vs fire. Water tile only. Bonuses from adjacent water.",
      "former_ids": [],
      "former_types": [],
      "fx": {
        "heats": false,
        "projectile_color": "#4db3ff",
        "projectile_speed": 18.0
      },
      "height": {
        "ground_counts": true,
        "ground_prep": "to_water",
        "hill_cap": 0,
        "hill_only": false,
        "hills": false,
        "max": 9,
        "platforms": true,
        "water": {
          "damage": 0.25,
          "fire_rate": 0.1,
          "range": 0.25
        }
      },
      "help": {
        "counters": "Useless against non-Inferno enemies. Requires water tiles for placement.",
        "short": "Inferno-killer pump, water tile only, huge water bonuses",
        "strategy": "Place on water tiles surrounded by more water for maximum damage. Only targets Inferno enemies - essential for fire-heavy waves. Each adjacent water tile gives +25% damage and +15% range.",
        "synergies": [
          "Pair with crowd-control towers to hold Infernos in range",
          "Snow towers benefit from Inferno removal",
          "Works well near water-heavy map areas"
        ]
      },
      "id": "water_pump",
      "levels": {
        "at_once_how": "targets",
        "can_hit": "Ground",
        "list": [
          {
            "cost": 0,
            "level": 1,
            "total": 500,
            "v": {
              "armor_damage": 30.0,
              "at_once": 1,
              "damage": 150.0,
              "fire_rate": 0.6,
              "range": 7.0,
              "shield_damage": 20.0
            }
          },
          {
            "cost": 800,
            "level": 2,
            "total": 1300,
            "v": {
              "armor_damage": 30.0,
              "at_once": 1,
              "damage": 190.0,
              "fire_rate": 0.68,
              "range": 7.5,
              "shield_damage": 20.0
            }
          },
          {
            "cost": 1280,
            "level": 3,
            "total": 2580,
            "v": {
              "armor_damage": 30.0,
              "at_once": 2,
              "damage": 230.0,
              "fire_rate": 0.76,
              "range": 8.0,
              "shield_damage": 20.0
            }
          },
          {
            "cost": 2048,
            "level": 4,
            "total": 4628,
            "v": {
              "armor_damage": 30.0,
              "at_once": 2,
              "damage": 270.0,
              "fire_rate": 0.84,
              "range": 8.5,
              "shield_damage": 20.0
            }
          },
          {
            "cost": 3276,
            "level": 5,
            "total": 7904,
            "v": {
              "armor_damage": 30.0,
              "at_once": 3,
              "damage": 310.0,
              "fire_rate": 0.92,
              "range": 9.0,
              "shield_damage": 20.0
            }
          },
          {
            "cost": 5242,
            "level": 6,
            "total": 13146,
            "v": {
              "armor_damage": 30.0,
              "at_once": 4,
              "damage": 350.0,
              "fire_rate": 1.0,
              "range": 9.5,
              "shield_damage": 20.0
            }
          },
          {
            "cost": 8388,
            "level": 7,
            "total": 21534,
            "v": {
              "armor_damage": 30.0,
              "at_once": 4,
              "damage": 390.0,
              "fire_rate": 1.08,
              "range": 10.0,
              "shield_damage": 20.0
            }
          },
          {
            "cost": 13421,
            "level": 8,
            "total": 34955,
            "v": {
              "armor_damage": 30.0,
              "at_once": 4,
              "damage": 430.0,
              "fire_rate": 1.16,
              "range": 10.5,
              "shield_damage": 20.0
            }
          },
          {
            "cost": 21474,
            "level": 9,
            "total": 56429,
            "v": {
              "armor_damage": 30.0,
              "at_once": 4,
              "damage": 470.0,
              "fire_rate": 1.24,
              "range": 11.0,
              "shield_damage": 20.0
            }
          },
          {
            "cost": 34359,
            "level": 10,
            "total": 90788,
            "v": {
              "armor_damage": 30.0,
              "at_once": 4,
              "damage": 510.0,
              "fire_rate": 1.32,
              "range": 11.5,
              "shield_damage": 20.0
            }
          }
        ],
        "max": 10,
        "research_cap": false,
        "rows": [
          {
            "format": "f",
            "key": "damage",
            "label": "Damage",
            "lower_better": false
          },
          {
            "format": "rate",
            "key": "fire_rate",
            "label": "Fire rate",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "range",
            "label": "Range",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "shield_damage",
            "label": "Shield damage",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "armor_damage",
            "label": "Armor damage",
            "lower_better": false
          },
          {
            "format": "d",
            "key": "at_once",
            "label": "Targets at once",
            "lower_better": false
          }
        ]
      },
      "model": "models/towers/water_pump.glb",
      "name": "Water Pump",
      "slug": "water_pump",
      "stats": {
        "cost": 500,
        "damage": 150.0,
        "damage_per_level": 40.0,
        "fire_rate": 0.6,
        "fire_rate_per_level": 0.08,
        "max_level": 10,
        "range": 7.0,
        "range_per_level": 0.5,
        "research_cost": 20000,
        "splash_radius": 0.0
      },
      "tags": [],
      "targets": {
        "air": false,
        "ground": true
      },
      "type": "WaterPump"
    },
    {
      "category": "Advanced",
      "color": "#66ccff",
      "description": "Emits powerful lightning bolts that chain between enemies. Features glowing coils and energy sphere.",
      "former_ids": [],
      "former_types": [],
      "fx": {
        "heats": true,
        "projectile_color": "#66ccff",
        "projectile_speed": 0.0
      },
      "height": {
        "ground_counts": true,
        "ground_prep": "none",
        "hill_cap": 0,
        "hill_only": false,
        "hills": true,
        "max": 24,
        "platforms": true,
        "water": null
      },
      "help": {
        "counters": "Spread out enemies reduce chain effectiveness.",
        "short": "Chain lightning hits multiple enemies. Strong vs shields.",
        "strategy": "Place near chokepoints where enemies cluster. Upgrade to unlock chain lightning.",
        "synergies": [
          "Cold Snap: Keeps enemies grouped for chain hits"
        ]
      },
      "id": "tesla",
      "levels": {
        "at_once_how": "targets",
        "can_hit": "Ground & Air",
        "list": [
          {
            "cost": 0,
            "level": 1,
            "total": 600,
            "v": {
              "armor_damage": 5.0,
              "at_once": 1,
              "chains": 1,
              "damage": 15.0,
              "fire_rate": 1.0,
              "range": 5.0,
              "shield_damage": 15.0
            }
          },
          {
            "cost": 900,
            "level": 2,
            "total": 1500,
            "v": {
              "armor_damage": 5.0,
              "at_once": 1,
              "chains": 1,
              "damage": 33.0,
              "fire_rate": 1.15,
              "range": 5.5,
              "shield_damage": 15.0
            }
          },
          {
            "cost": 1350,
            "level": 3,
            "total": 2850,
            "v": {
              "armor_damage": 5.0,
              "at_once": 2,
              "chains": 1,
              "damage": 51.0,
              "fire_rate": 1.3,
              "range": 6.0,
              "shield_damage": 15.0
            }
          },
          {
            "cost": 2025,
            "level": 4,
            "total": 4875,
            "v": {
              "armor_damage": 5.0,
              "at_once": 2,
              "chains": 2,
              "damage": 69.0,
              "fire_rate": 1.45,
              "range": 6.5,
              "shield_damage": 15.0
            }
          },
          {
            "cost": 3037,
            "level": 5,
            "total": 7912,
            "v": {
              "armor_damage": 5.0,
              "at_once": 3,
              "chains": 2,
              "damage": 87.0,
              "fire_rate": 1.6,
              "range": 7.0,
              "shield_damage": 15.0
            }
          },
          {
            "cost": 4556,
            "level": 6,
            "total": 12468,
            "v": {
              "armor_damage": 5.0,
              "at_once": 3,
              "chains": 3,
              "damage": 105.0,
              "fire_rate": 1.75,
              "range": 7.5,
              "shield_damage": 15.0
            }
          },
          {
            "cost": 6834,
            "level": 7,
            "total": 19302,
            "v": {
              "armor_damage": 5.0,
              "at_once": 4,
              "chains": 3,
              "damage": 123.0,
              "fire_rate": 1.9,
              "range": 8.0,
              "shield_damage": 15.0
            }
          },
          {
            "cost": 10251,
            "level": 8,
            "total": 29553,
            "v": {
              "armor_damage": 5.0,
              "at_once": 4,
              "chains": 4,
              "damage": 141.0,
              "fire_rate": 2.05,
              "range": 8.5,
              "shield_damage": 15.0
            }
          },
          {
            "cost": 15377,
            "level": 9,
            "total": 44930,
            "v": {
              "armor_damage": 5.0,
              "at_once": 5,
              "chains": 4,
              "damage": 159.0,
              "fire_rate": 2.2,
              "range": 9.0,
              "shield_damage": 15.0
            }
          },
          {
            "cost": 23066,
            "level": 10,
            "total": 67996,
            "v": {
              "armor_damage": 5.0,
              "at_once": 5,
              "chains": 5,
              "damage": 177.0,
              "fire_rate": 2.35,
              "range": 9.5,
              "shield_damage": 15.0
            }
          }
        ],
        "max": 10,
        "research_cap": false,
        "rows": [
          {
            "format": "f",
            "key": "damage",
            "label": "Damage",
            "lower_better": false
          },
          {
            "format": "rate",
            "key": "fire_rate",
            "label": "Fire rate",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "range",
            "label": "Range",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "shield_damage",
            "label": "Shield damage",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "armor_damage",
            "label": "Armor damage",
            "lower_better": false
          },
          {
            "format": "d",
            "key": "at_once",
            "label": "Targets at once",
            "lower_better": false
          },
          {
            "format": "d",
            "key": "chains",
            "label": "Chains",
            "lower_better": false
          }
        ]
      },
      "model": "models/towers/tesla.glb",
      "name": "Tesla Tower",
      "slug": "tesla",
      "stats": {
        "cost": 600,
        "damage": 15.0,
        "damage_per_level": 18.0,
        "fire_rate": 1.0,
        "fire_rate_per_level": 0.15,
        "max_level": 10,
        "range": 5.0,
        "range_per_level": 0.5,
        "research_cost": 25000,
        "splash_radius": 0.0
      },
      "tags": [
        "Chains",
        "Anti-shield"
      ],
      "targets": {
        "air": true,
        "ground": true
      },
      "type": "Tesla"
    },
    {
      "category": "Advanced",
      "color": "#ff4d4d",
      "description": "High-tech laser beam that ramps up the longer it holds one target: more health, armor and shield removed every moment. Fast up to 6x, then slowly without limit: a boss and Blimp killer. Melts through armor!",
      "former_ids": [],
      "former_types": [],
      "fx": {
        "heats": true,
        "projectile_color": "#4db3ff",
        "projectile_speed": 0.0
      },
      "height": {
        "ground_counts": true,
        "ground_prep": "none",
        "hill_cap": 0,
        "hill_only": false,
        "hills": true,
        "max": 24,
        "platforms": true,
        "water": null
      },
      "help": {
        "counters": "Loses ramp when switching targets. Weak against fast-moving swarms.",
        "short": "Ramping beam damage, armor piercing",
        "strategy": "Focus on single high-HP targets. Damage ramps up over time - don't switch targets prematurely. The beam reaches any height: a Blimp Boss passing over its range ring can be hit.",
        "synergies": [
          "Cold Snap keeps target in beam longer",
          "Pairs with burst towers to finish ramped targets"
        ]
      },
      "id": "laser",
      "levels": {
        "at_once_how": "beam",
        "can_hit": "Ground & Air",
        "list": [
          {
            "cost": 0,
            "level": 1,
            "total": 175,
            "v": {
              "armor_damage": 15.0,
              "armor_damage_bonus": 50,
              "at_once": 1,
              "crit_chance": 5,
              "damage": 20.0,
              "fire_rate": 10.0,
              "max_damage_multiplier": 6.0,
              "range": 6.5,
              "shield_damage": 10.0
            }
          },
          {
            "cost": 288,
            "level": 2,
            "total": 463,
            "v": {
              "armor_damage": 15.0,
              "armor_damage_bonus": 50,
              "at_once": 1,
              "crit_chance": 6,
              "damage": 28.0,
              "fire_rate": 10.0,
              "max_damage_multiplier": 6.0,
              "range": 6.9,
              "shield_damage": 10.0
            }
          },
          {
            "cost": 476,
            "level": 3,
            "total": 939,
            "v": {
              "armor_damage": 15.0,
              "armor_damage_bonus": 50,
              "at_once": 1,
              "crit_chance": 8,
              "damage": 36.0,
              "fire_rate": 10.0,
              "max_damage_multiplier": 6.0,
              "range": 7.3,
              "shield_damage": 10.0
            }
          },
          {
            "cost": 786,
            "level": 4,
            "total": 1725,
            "v": {
              "armor_damage": 15.0,
              "armor_damage_bonus": 50,
              "at_once": 3,
              "crit_chance": 9,
              "damage": 44.0,
              "fire_rate": 10.0,
              "max_damage_multiplier": 6.0,
              "range": 7.7,
              "refraction_targets": 2,
              "shield_damage": 10.0
            }
          },
          {
            "cost": 1297,
            "level": 5,
            "total": 3022,
            "v": {
              "armor_damage": 15.0,
              "armor_damage_bonus": 50,
              "at_once": 3,
              "crit_chance": 11,
              "damage": 52.0,
              "fire_rate": 10.0,
              "max_damage_multiplier": 6.0,
              "range": 8.1,
              "refraction_targets": 2,
              "shield_damage": 10.0
            }
          },
          {
            "cost": 2140,
            "level": 6,
            "total": 5162,
            "v": {
              "armor_damage": 15.0,
              "armor_damage_bonus": 50,
              "at_once": 3,
              "crit_chance": 12,
              "damage": 60.0,
              "fire_rate": 10.0,
              "max_damage_multiplier": 6.0,
              "range": 8.5,
              "refraction_targets": 2,
              "shield_damage": 10.0
            }
          },
          {
            "cost": 3531,
            "level": 7,
            "total": 8693,
            "v": {
              "armor_damage": 15.0,
              "armor_damage_bonus": 50,
              "at_once": 3,
              "crit_chance": 14,
              "damage": 68.0,
              "fire_rate": 10.0,
              "max_damage_multiplier": 6.0,
              "range": 8.9,
              "refraction_targets": 2,
              "shield_damage": 10.0
            }
          },
          {
            "cost": 5826,
            "level": 8,
            "total": 14519,
            "v": {
              "armor_damage": 15.0,
              "armor_damage_bonus": 50,
              "at_once": 3,
              "crit_chance": 15,
              "damage": 76.0,
              "fire_rate": 10.0,
              "max_damage_multiplier": 6.0,
              "range": 9.3,
              "refraction_targets": 2,
              "shield_damage": 10.0
            }
          },
          {
            "cost": 9614,
            "level": 9,
            "total": 24133,
            "v": {
              "armor_damage": 15.0,
              "armor_damage_bonus": 50,
              "at_once": 3,
              "crit_chance": 17,
              "damage": 84.0,
              "fire_rate": 10.0,
              "max_damage_multiplier": 6.0,
              "range": 9.7,
              "refraction_targets": 2,
              "shield_damage": 10.0
            }
          },
          {
            "cost": 15863,
            "level": 10,
            "total": 39996,
            "v": {
              "armor_damage": 15.0,
              "armor_damage_bonus": 50,
              "at_once": 3,
              "crit_chance": 18,
              "damage": 92.0,
              "fire_rate": 10.0,
              "max_damage_multiplier": 6.0,
              "range": 10.1,
              "refraction_targets": 2,
              "shield_damage": 10.0
            }
          }
        ],
        "max": 10,
        "research_cap": false,
        "rows": [
          {
            "format": "f",
            "key": "damage",
            "label": "Damage",
            "lower_better": false
          },
          {
            "format": "rate",
            "key": "fire_rate",
            "label": "Fire rate",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "range",
            "label": "Range",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "shield_damage",
            "label": "Shield damage",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "armor_damage",
            "label": "Armor damage",
            "lower_better": false
          },
          {
            "format": "d",
            "key": "at_once",
            "label": "Targets at once",
            "lower_better": false
          },
          {
            "format": "%",
            "key": "crit_chance",
            "label": "Critical chance",
            "lower_better": false
          },
          {
            "format": "x",
            "key": "max_damage_multiplier",
            "label": "Damage ramp to",
            "lower_better": false
          },
          {
            "format": "d",
            "key": "refraction_targets",
            "label": "Refraction",
            "lower_better": false
          },
          {
            "format": "%",
            "key": "armor_damage_bonus",
            "label": "Vs armor",
            "lower_better": false
          }
        ]
      },
      "model": "models/towers/laser.glb",
      "name": "Laser Tower",
      "slug": "laser",
      "stats": {
        "cost": 175,
        "damage": 20.0,
        "damage_per_level": 8.0,
        "fire_rate": 10.0,
        "fire_rate_per_level": 0.0,
        "max_level": 10,
        "range": 6.5,
        "range_per_level": 0.4,
        "research_cost": 30000,
        "splash_radius": 0.0
      },
      "tags": [
        "Anti-armor",
        "Anti-shield"
      ],
      "targets": {
        "air": true,
        "ground": true
      },
      "type": "Laser"
    },
    {
      "category": "Basic",
      "color": "#cc6633",
      "description": "Lobs a heavy bomb that detonates and bursts into scattering bomblets. A central blast plus a spreading carpet of mini-explosions devastates groups. Grows bigger every level.",
      "former_ids": [
        "bomb"
      ],
      "former_types": [
        "Bomb"
      ],
      "fx": {
        "heats": false,
        "projectile_color": "#333333",
        "projectile_speed": 5.0
      },
      "height": {
        "ground_counts": true,
        "ground_prep": "none",
        "hill_cap": 0,
        "hill_only": false,
        "hills": true,
        "max": 24,
        "platforms": true,
        "water": null
      },
      "help": {
        "counters": "Cannot target flying enemies. Minimum range leaves close enemies untouched. Slow reload.",
        "short": "Arcing bombs with huge splash, ground only",
        "strategy": "Place where enemies cluster - path curves, choke points. The 3-tile splash radius can hit entire waves. Slow fire rate means every shot counts. Has minimum range - can't hit nearby enemies.",
        "synergies": [
          "Cold Snaps group enemies for bigger splashes",
          "Pairs with fast towers to cover reload time",
          "Sniper picks off survivors"
        ]
      },
      "id": "cluster_mortar",
      "levels": {
        "at_once_how": "bomblets",
        "can_hit": "Ground",
        "list": [
          {
            "cost": 0,
            "level": 1,
            "total": 250,
            "v": {
              "armor_damage": 40.0,
              "at_once": 3,
              "bomblet_count": 3,
              "bomblet_damage_pct": 25,
              "damage": 80.0,
              "fire_rate": 0.4,
              "min_range": 2.0,
              "range": 8.0,
              "shield_damage": 15.0,
              "splash_radius": 3.0
            }
          },
          {
            "cost": 375,
            "level": 2,
            "total": 625,
            "v": {
              "armor_damage": 40.0,
              "at_once": 4,
              "bomblet_count": 4,
              "bomblet_damage_pct": 25,
              "damage": 105.0,
              "fire_rate": 0.45,
              "min_range": 2.0,
              "range": 8.5,
              "shield_damage": 15.0,
              "splash_radius": 3.28
            }
          },
          {
            "cost": 562,
            "level": 3,
            "total": 1187,
            "v": {
              "armor_damage": 40.0,
              "at_once": 5,
              "bomblet_count": 5,
              "bomblet_damage_pct": 25,
              "damage": 130.0,
              "fire_rate": 0.5,
              "min_range": 2.0,
              "range": 9.0,
              "shield_damage": 15.0,
              "splash_radius": 3.56
            }
          },
          {
            "cost": 843,
            "level": 4,
            "total": 2030,
            "v": {
              "armor_damage": 40.0,
              "at_once": 6,
              "bomblet_count": 6,
              "bomblet_damage_pct": 25,
              "damage": 155.0,
              "fire_rate": 0.55,
              "min_range": 2.0,
              "range": 9.5,
              "shield_damage": 15.0,
              "splash_radius": 3.84
            }
          },
          {
            "cost": 1265,
            "level": 5,
            "total": 3295,
            "v": {
              "armor_damage": 40.0,
              "at_once": 7,
              "bomblet_count": 7,
              "bomblet_damage_pct": 25,
              "damage": 180.0,
              "fire_rate": 0.6,
              "min_range": 2.0,
              "range": 10.0,
              "shield_damage": 15.0,
              "splash_radius": 4.12
            }
          },
          {
            "cost": 1898,
            "level": 6,
            "total": 5193,
            "v": {
              "armor_damage": 40.0,
              "at_once": 8,
              "bomblet_count": 8,
              "bomblet_damage_pct": 25,
              "damage": 205.0,
              "fire_rate": 0.65,
              "min_range": 2.0,
              "range": 10.5,
              "shield_damage": 15.0,
              "splash_radius": 4.4
            }
          },
          {
            "cost": 2847,
            "level": 7,
            "total": 8040,
            "v": {
              "armor_damage": 40.0,
              "at_once": 9,
              "bomblet_count": 9,
              "bomblet_damage_pct": 25,
              "damage": 230.0,
              "fire_rate": 0.7,
              "min_range": 2.0,
              "range": 11.0,
              "shield_damage": 15.0,
              "splash_radius": 4.68
            }
          },
          {
            "cost": 4271,
            "level": 8,
            "total": 12311,
            "v": {
              "armor_damage": 40.0,
              "at_once": 10,
              "bomblet_count": 10,
              "bomblet_damage_pct": 25,
              "damage": 255.0,
              "fire_rate": 0.75,
              "min_range": 2.0,
              "range": 11.5,
              "shield_damage": 15.0,
              "splash_radius": 4.96
            }
          },
          {
            "cost": 6407,
            "level": 9,
            "total": 18718,
            "v": {
              "armor_damage": 40.0,
              "at_once": 11,
              "bomblet_count": 11,
              "bomblet_damage_pct": 25,
              "damage": 280.0,
              "fire_rate": 0.8,
              "min_range": 2.0,
              "range": 12.0,
              "shield_damage": 15.0,
              "splash_radius": 5.24
            }
          },
          {
            "cost": 9610,
            "level": 10,
            "total": 28328,
            "v": {
              "armor_damage": 40.0,
              "at_once": 12,
              "bomblet_count": 12,
              "bomblet_damage_pct": 25,
              "damage": 305.0,
              "fire_rate": 0.85,
              "min_range": 2.0,
              "range": 12.5,
              "shield_damage": 15.0,
              "splash_radius": 5.52
            }
          }
        ],
        "max": 10,
        "research_cap": false,
        "rows": [
          {
            "format": "f",
            "key": "damage",
            "label": "Damage",
            "lower_better": false
          },
          {
            "format": "rate",
            "key": "fire_rate",
            "label": "Fire rate",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "range",
            "label": "Range",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "shield_damage",
            "label": "Shield damage",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "armor_damage",
            "label": "Armor damage",
            "lower_better": false
          },
          {
            "format": "d",
            "key": "at_once",
            "label": "Targets at once",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "splash_radius",
            "label": "Splash",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "min_range",
            "label": "Min range",
            "lower_better": true
          },
          {
            "format": "d",
            "key": "bomblet_count",
            "label": "Bomblets",
            "lower_better": false
          },
          {
            "format": "%",
            "key": "bomblet_damage_pct",
            "label": "Bomblet damage",
            "lower_better": false
          }
        ]
      },
      "model": "models/towers/cluster_mortar.glb",
      "name": "Cluster Mortar",
      "slug": "cluster_mortar",
      "stats": {
        "cost": 250,
        "damage": 80.0,
        "damage_per_level": 25.0,
        "fire_rate": 0.4,
        "fire_rate_per_level": 0.05,
        "max_level": 10,
        "range": 8.0,
        "range_per_level": 0.5,
        "research_cost": 40000,
        "splash_radius": 3.0
      },
      "tags": [
        "Splash",
        "Anti-armor"
      ],
      "targets": {
        "air": false,
        "ground": true
      },
      "type": "ClusterMortar"
    },
    {
      "category": "Advanced",
      "color": "#cc4d4d",
      "description": "Launches arcing missiles from underground silo. Devastating against armor. Best in clusters.",
      "former_ids": [],
      "former_types": [],
      "fx": {
        "heats": false,
        "projectile_color": "#cc3333",
        "projectile_speed": 12.0
      },
      "height": {
        "ground_counts": true,
        "ground_prep": "none",
        "hill_cap": 0,
        "hill_only": false,
        "hills": true,
        "max": 24,
        "platforms": true,
        "water": null
      },
      "help": {
        "counters": "Minimum range, slow fire rate. Overkill on weak enemies.",
        "short": "Arcing missiles with splash damage, armor specialist",
        "strategy": "Build in groups of 2-3 for massive adjacency bonuses. Missiles explode on impact dealing 60% splash damage to nearby enemies (2.5 radius). Target armored enemies.",
        "synergies": [
          "Other Missile Silos: +25% damage, +20% fire rate, +10% armor damage each",
          "Cold Snap groups enemies for maximum splash damage"
        ]
      },
      "id": "missile_silo",
      "levels": {
        "at_once_how": "splash",
        "can_hit": "Ground & Air",
        "list": [
          {
            "cost": 0,
            "level": 1,
            "total": 200,
            "v": {
              "armor_damage": 45.0,
              "at_once": 1,
              "damage": 60.0,
              "fire_rate": 0.4,
              "range": 14.0,
              "shield_damage": 15.0
            }
          },
          {
            "cost": 300,
            "level": 2,
            "total": 500,
            "v": {
              "armor_damage": 45.0,
              "at_once": 1,
              "damage": 85.0,
              "fire_rate": 0.48,
              "range": 15.5,
              "shield_damage": 15.0
            }
          },
          {
            "cost": 450,
            "level": 3,
            "total": 950,
            "v": {
              "armor_damage": 45.0,
              "at_once": 1,
              "damage": 110.0,
              "fire_rate": 0.56,
              "range": 17.0,
              "shield_damage": 15.0
            }
          },
          {
            "cost": 675,
            "level": 4,
            "total": 1625,
            "v": {
              "armor_damage": 45.0,
              "at_once": 1,
              "damage": 135.0,
              "fire_rate": 0.64,
              "range": 18.5,
              "shield_damage": 15.0
            }
          },
          {
            "cost": 1012,
            "level": 5,
            "total": 2637,
            "v": {
              "armor_damage": 45.0,
              "at_once": 1,
              "damage": 160.0,
              "fire_rate": 0.72,
              "range": 20.0,
              "shield_damage": 15.0
            }
          },
          {
            "cost": 1518,
            "level": 6,
            "total": 4155,
            "v": {
              "armor_damage": 45.0,
              "at_once": 1,
              "damage": 185.0,
              "fire_rate": 0.8,
              "range": 21.5,
              "shield_damage": 15.0
            }
          },
          {
            "cost": 2278,
            "level": 7,
            "total": 6433,
            "v": {
              "armor_damage": 45.0,
              "at_once": 1,
              "damage": 210.0,
              "fire_rate": 0.88,
              "range": 23.0,
              "shield_damage": 15.0
            }
          },
          {
            "cost": 3417,
            "level": 8,
            "total": 9850,
            "v": {
              "armor_damage": 45.0,
              "at_once": 1,
              "damage": 235.0,
              "fire_rate": 0.96,
              "range": 24.5,
              "shield_damage": 15.0
            }
          },
          {
            "cost": 5125,
            "level": 9,
            "total": 14975,
            "v": {
              "armor_damage": 45.0,
              "at_once": 1,
              "damage": 260.0,
              "fire_rate": 1.04,
              "range": 26.0,
              "shield_damage": 15.0
            }
          },
          {
            "cost": 7688,
            "level": 10,
            "total": 22663,
            "v": {
              "armor_damage": 45.0,
              "at_once": 1,
              "damage": 285.0,
              "fire_rate": 1.12,
              "range": 27.5,
              "shield_damage": 15.0
            }
          }
        ],
        "max": 10,
        "research_cap": false,
        "rows": [
          {
            "format": "f",
            "key": "damage",
            "label": "Damage",
            "lower_better": false
          },
          {
            "format": "rate",
            "key": "fire_rate",
            "label": "Fire rate",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "range",
            "label": "Range",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "shield_damage",
            "label": "Shield damage",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "armor_damage",
            "label": "Armor damage",
            "lower_better": false
          },
          {
            "format": "d",
            "key": "at_once",
            "label": "Targets at once",
            "lower_better": false
          }
        ]
      },
      "model": "models/towers/missile_silo.glb",
      "name": "Missile Silo",
      "slug": "missile_silo",
      "stats": {
        "cost": 200,
        "damage": 60.0,
        "damage_per_level": 25.0,
        "fire_rate": 0.4,
        "fire_rate_per_level": 0.08,
        "max_level": 10,
        "range": 14.0,
        "range_per_level": 1.5,
        "research_cost": 40000,
        "splash_radius": 2.5
      },
      "tags": [
        "Splash"
      ],
      "targets": {
        "air": true,
        "ground": true
      },
      "type": "MissileSilo"
    },
    {
      "category": "Advanced",
      "color": "#f25242",
      "description": "A 1x2 armor foundry. The magnet tears armor off enemies in range and pulls in loose scrap from the path; the silo stores it; the press turns it into slugs; the gun fires only slugs, heavy and armor-piercing. No armor, no ammo. Press R to turn it while placing.",
      "former_ids": [],
      "former_types": [],
      "fx": {
        "heats": false,
        "projectile_color": "#e6ad47",
        "projectile_speed": 22.0
      },
      "height": {
        "ground_counts": true,
        "ground_prep": "level",
        "hill_cap": 0,
        "hill_only": false,
        "hills": true,
        "max": 24,
        "platforms": true,
        "water": null
      },
      "help": {
        "counters": "Ordinary damage on its own. Needs armored enemies to feed it.",
        "short": "Pulls armor, presses it into slugs, fires them",
        "strategy": "Takes two tiles at the same height (R turns it while placing). The magnet rips armor off armored ground enemies near it and sweeps up the scrap other towers knock off them. The silo keeps it between waves; the press stamps slugs into the rack; the gun fires one slug per shot at more than twice normal damage, further than the magnet reaches. With no armor coming in it runs dry and stops firing, so pair it with armored waves and towers that crack armor.",
        "synergies": [
          "Leaves armored enemies bare for Cannon, Tesla and Drone Hive",
          "Pairs with anything weak against armor"
        ]
      },
      "id": "magnet",
      "levels": {
        "at_once_how": "magnet",
        "can_hit": "Ground & Air",
        "list": [
          {
            "cost": 0,
            "level": 1,
            "total": 325,
            "v": {
              "armor_damage": 0.0,
              "at_once": 3,
              "damage": 26.0,
              "fire_rate": 0.9,
              "foundry_per_slug": 4.0,
              "foundry_press_time": 1.8,
              "foundry_rack": 50,
              "foundry_slug_damage": 2.2,
              "foundry_tank": 400.0,
              "magnet_strip": 8.0,
              "magnet_strip_targets": 3,
              "range": 7.0,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 503,
            "level": 2,
            "total": 828,
            "v": {
              "armor_damage": 0.0,
              "at_once": 4,
              "damage": 35.0,
              "fire_rate": 0.94,
              "foundry_per_slug": 4.0,
              "foundry_press_time": 1.68,
              "foundry_rack": 75,
              "foundry_slug_damage": 2.2,
              "foundry_tank": 520.0,
              "magnet_strip": 11.0,
              "magnet_strip_targets": 4,
              "range": 7.35,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 780,
            "level": 3,
            "total": 1608,
            "v": {
              "armor_damage": 0.0,
              "at_once": 5,
              "damage": 44.0,
              "fire_rate": 0.98,
              "foundry_per_slug": 4.0,
              "foundry_press_time": 1.56,
              "foundry_rack": 100,
              "foundry_slug_damage": 2.2,
              "foundry_tank": 640.0,
              "magnet_strip": 14.0,
              "magnet_strip_targets": 5,
              "range": 7.7,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 1210,
            "level": 4,
            "total": 2818,
            "v": {
              "armor_damage": 0.0,
              "at_once": 6,
              "damage": 53.0,
              "fire_rate": 1.02,
              "foundry_per_slug": 4.0,
              "foundry_press_time": 1.44,
              "foundry_rack": 125,
              "foundry_slug_damage": 2.2,
              "foundry_tank": 760.0,
              "magnet_strip": 17.0,
              "magnet_strip_targets": 6,
              "range": 8.05,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 1875,
            "level": 5,
            "total": 4693,
            "v": {
              "armor_damage": 0.0,
              "at_once": 7,
              "damage": 62.0,
              "fire_rate": 1.06,
              "foundry_per_slug": 4.0,
              "foundry_press_time": 1.32,
              "foundry_rack": 150,
              "foundry_slug_damage": 2.2,
              "foundry_tank": 880.0,
              "magnet_strip": 20.0,
              "magnet_strip_targets": 7,
              "range": 8.4,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 2907,
            "level": 6,
            "total": 7600,
            "v": {
              "armor_damage": 0.0,
              "at_once": 8,
              "damage": 71.0,
              "fire_rate": 1.1,
              "foundry_per_slug": 4.0,
              "foundry_press_time": 1.2,
              "foundry_rack": 175,
              "foundry_slug_damage": 2.2,
              "foundry_tank": 1000.0,
              "magnet_strip": 23.0,
              "magnet_strip_targets": 8,
              "range": 8.75,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 4506,
            "level": 7,
            "total": 12106,
            "v": {
              "armor_damage": 0.0,
              "at_once": 9,
              "damage": 80.0,
              "fire_rate": 1.14,
              "foundry_per_slug": 4.0,
              "foundry_press_time": 1.08,
              "foundry_rack": 200,
              "foundry_slug_damage": 2.2,
              "foundry_tank": 1120.0,
              "magnet_strip": 26.0,
              "magnet_strip_targets": 9,
              "range": 9.1,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 6985,
            "level": 8,
            "total": 19091,
            "v": {
              "armor_damage": 0.0,
              "at_once": 10,
              "damage": 89.0,
              "fire_rate": 1.18,
              "foundry_per_slug": 4.0,
              "foundry_press_time": 0.96,
              "foundry_rack": 225,
              "foundry_slug_damage": 2.2,
              "foundry_tank": 1240.0,
              "magnet_strip": 29.0,
              "magnet_strip_targets": 10,
              "range": 9.45,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 10827,
            "level": 9,
            "total": 29918,
            "v": {
              "armor_damage": 0.0,
              "at_once": 11,
              "damage": 98.0,
              "fire_rate": 1.22,
              "foundry_per_slug": 4.0,
              "foundry_press_time": 0.84,
              "foundry_rack": 250,
              "foundry_slug_damage": 2.2,
              "foundry_tank": 1360.0,
              "magnet_strip": 32.0,
              "magnet_strip_targets": 11,
              "range": 9.8,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 16782,
            "level": 10,
            "total": 46700,
            "v": {
              "armor_damage": 0.0,
              "at_once": 12,
              "damage": 107.0,
              "fire_rate": 1.26,
              "foundry_per_slug": 4.0,
              "foundry_press_time": 0.72,
              "foundry_rack": 275,
              "foundry_slug_damage": 2.2,
              "foundry_tank": 1480.0,
              "magnet_strip": 35.0,
              "magnet_strip_targets": 12,
              "range": 10.15,
              "shield_damage": 0.0
            }
          }
        ],
        "max": 10,
        "research_cap": false,
        "rows": [
          {
            "format": "f",
            "key": "damage",
            "label": "Damage",
            "lower_better": false
          },
          {
            "format": "rate",
            "key": "fire_rate",
            "label": "Fire rate",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "range",
            "label": "Range",
            "lower_better": false
          },
          {
            "format": "d",
            "key": "at_once",
            "label": "Targets at once",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "magnet_strip",
            "label": "Armor stripped",
            "lower_better": false
          },
          {
            "format": "d",
            "key": "magnet_strip_targets",
            "label": "Strips from",
            "lower_better": false
          },
          {
            "format": "d",
            "key": "foundry_tank",
            "label": "Silo",
            "lower_better": false
          },
          {
            "format": "d",
            "key": "foundry_rack",
            "label": "Rack",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "foundry_per_slug",
            "label": "Armor a slug",
            "lower_better": false
          },
          {
            "format": "s",
            "key": "foundry_press_time",
            "label": "Press time",
            "lower_better": true
          },
          {
            "format": "x",
            "key": "foundry_slug_damage",
            "label": "Slug damage",
            "lower_better": false
          }
        ]
      },
      "model": "models/towers/magnet.glb",
      "name": "Magnet Tower",
      "slug": "magnet",
      "stats": {
        "cost": 325,
        "damage": 26.0,
        "damage_per_level": 9.0,
        "fire_rate": 0.9,
        "fire_rate_per_level": 0.04,
        "max_level": 10,
        "range": 7.0,
        "range_per_level": 0.35,
        "research_cost": 50000,
        "splash_radius": 0.0
      },
      "tags": [
        "Strips armor"
      ],
      "targets": {
        "air": true,
        "ground": true
      },
      "type": "Magnet"
    },
    {
      "category": "Utility",
      "color": "#40ff73",
      "description": "Does not shoot. After every wave each of its drones flies to the base and repairs one life. One drone per level, up to five.",
      "former_ids": [
        "repair_drone"
      ],
      "former_types": [
        "RepairDrone"
      ],
      "fx": {
        "heats": false,
        "projectile_color": "#40ff73",
        "projectile_speed": 0.0
      },
      "height": {
        "ground_counts": true,
        "ground_prep": "none",
        "hill_cap": 0,
        "hill_only": false,
        "hills": true,
        "max": 24,
        "platforms": true,
        "water": null
      },
      "help": {
        "counters": "Deals no damage. Repairs happen only after a wave, so it cannot save a base during one.",
        "short": "After each wave, every drone repairs one life of the base",
        "strategy": "The tower never shoots. When a wave has been cleared, each drone takes off, flies to the base, repairs one life and flies home. A new tower has one drone; every upgrade adds a pad and a drone, up to five. How far you can upgrade is set by the Drone Bays research card. Three level-1 towers repair three lives after each wave. Drones only fly for lives that are missing, and never above the base's full health.",
        "synergies": [
          "Build it anywhere: distance only changes how long the trip takes",
          "Several towers add up"
        ]
      },
      "id": "repair_drones",
      "levels": {
        "at_once_how": "none",
        "can_hit": "—",
        "list": [
          {
            "cost": 0,
            "level": 1,
            "total": 300,
            "v": {
              "armor_damage": 0.0,
              "damage": 0.0,
              "fire_rate": 1.0,
              "range": 1.0,
              "repair_drones": 1,
              "repair_lives_each": 1,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 450,
            "level": 2,
            "total": 750,
            "v": {
              "armor_damage": 0.0,
              "damage": 0.0,
              "fire_rate": 1.0,
              "range": 1.0,
              "repair_drones": 2,
              "repair_lives_each": 1,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 675,
            "level": 3,
            "total": 1425,
            "v": {
              "armor_damage": 0.0,
              "damage": 0.0,
              "fire_rate": 1.0,
              "range": 1.0,
              "repair_drones": 3,
              "repair_lives_each": 1,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 1012,
            "level": 4,
            "total": 2437,
            "v": {
              "armor_damage": 0.0,
              "damage": 0.0,
              "fire_rate": 1.0,
              "range": 1.0,
              "repair_drones": 4,
              "repair_lives_each": 1,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 1518,
            "level": 5,
            "total": 3955,
            "v": {
              "armor_damage": 0.0,
              "damage": 0.0,
              "fire_rate": 1.0,
              "range": 1.0,
              "repair_drones": 5,
              "repair_lives_each": 1,
              "shield_damage": 0.0
            }
          }
        ],
        "max": 5,
        "research_cap": true,
        "rows": [
          {
            "format": "d",
            "key": "repair_drones",
            "label": "Repair drones",
            "lower_better": false
          },
          {
            "format": "d",
            "key": "repair_lives_each",
            "label": "Lives each",
            "lower_better": false
          }
        ]
      },
      "model": "models/towers/repair_drones.glb",
      "name": "Repair Drones",
      "slug": "repair_drones",
      "stats": {
        "cost": 300,
        "damage": 0.0,
        "damage_per_level": 0.0,
        "fire_rate": 1.0,
        "fire_rate_per_level": 0.0,
        "max_level": 5,
        "range": 1.0,
        "range_per_level": 0.0,
        "research_cost": 50000,
        "splash_radius": 0.0
      },
      "tags": [
        "Support",
        "No damage"
      ],
      "targets": {
        "air": false,
        "ground": false
      },
      "type": "RepairDrones"
    },
    {
      "category": "Utility",
      "color": "#8cffb3",
      "description": "Boosts nearby towers. Upgrades let you choose range, reload speed, or damage.",
      "former_ids": [],
      "former_types": [],
      "fx": {
        "heats": false,
        "projectile_color": "#8cffb3",
        "projectile_speed": 0.0
      },
      "height": {
        "ground_counts": true,
        "ground_prep": "none",
        "hill_cap": 0,
        "hill_only": false,
        "hills": true,
        "max": 24,
        "platforms": true,
        "water": null
      },
      "help": {
        "counters": "Deals no damage itself. Two stations do not add together: a tower gets the stronger boost of each kind.",
        "short": "Boosts the range, reload speed or damage of every tower in range",
        "strategy": "The station does not shoot. It boosts every other tower inside its range. It has three boosts: damage, reload speed and range. Each one goes up in four steps: 25%, 50%, 75%, 100%. Pick the boost you want in the tower panel, then upgrade: every upgrade adds one step to that boost. A new station starts with one step. Place it where its range covers your strongest towers.",
        "synergies": [
          "Best beside a cluster of expensive towers",
          "Reload boost suits slow, hard-hitting towers",
          "Range boost lets short-range towers cover more path"
        ]
      },
      "id": "support_station",
      "levels": {
        "at_once_how": "none",
        "can_hit": "—",
        "list": [
          {
            "cost": 0,
            "level": 1,
            "total": 600,
            "v": {
              "armor_damage": 0.0,
              "damage": 0.0,
              "fire_rate": 1.0,
              "range": 4.2,
              "shield_damage": 0.0,
              "support_damage": 25.0,
              "support_fire_rate": 0.0,
              "support_range": 0.0
            }
          },
          {
            "cost": 780,
            "level": 2,
            "total": 1380,
            "v": {
              "armor_damage": 0.0,
              "damage": 0.0,
              "fire_rate": 1.0,
              "range": 4.2,
              "shield_damage": 0.0,
              "support_damage": 50.0,
              "support_fire_rate": 0.0,
              "support_range": 0.0
            }
          },
          {
            "cost": 1014,
            "level": 3,
            "total": 2394,
            "v": {
              "armor_damage": 0.0,
              "damage": 0.0,
              "fire_rate": 1.0,
              "range": 4.2,
              "shield_damage": 0.0,
              "support_damage": 75.0,
              "support_fire_rate": 0.0,
              "support_range": 0.0
            }
          },
          {
            "cost": 1318,
            "level": 4,
            "total": 3712,
            "v": {
              "armor_damage": 0.0,
              "damage": 0.0,
              "fire_rate": 1.0,
              "range": 4.2,
              "shield_damage": 0.0,
              "support_damage": 100.0,
              "support_fire_rate": 0.0,
              "support_range": 0.0
            }
          },
          {
            "cost": 1713,
            "level": 5,
            "total": 5425,
            "v": {
              "armor_damage": 0.0,
              "damage": 0.0,
              "fire_rate": 1.0,
              "range": 4.2,
              "shield_damage": 0.0,
              "support_damage": 100.0,
              "support_fire_rate": 25.0,
              "support_range": 0.0
            }
          },
          {
            "cost": 2227,
            "level": 6,
            "total": 7652,
            "v": {
              "armor_damage": 0.0,
              "damage": 0.0,
              "fire_rate": 1.0,
              "range": 4.2,
              "shield_damage": 0.0,
              "support_damage": 100.0,
              "support_fire_rate": 50.0,
              "support_range": 0.0
            }
          },
          {
            "cost": 2896,
            "level": 7,
            "total": 10548,
            "v": {
              "armor_damage": 0.0,
              "damage": 0.0,
              "fire_rate": 1.0,
              "range": 4.2,
              "shield_damage": 0.0,
              "support_damage": 100.0,
              "support_fire_rate": 75.0,
              "support_range": 0.0
            }
          },
          {
            "cost": 3764,
            "level": 8,
            "total": 14312,
            "v": {
              "armor_damage": 0.0,
              "damage": 0.0,
              "fire_rate": 1.0,
              "range": 4.2,
              "shield_damage": 0.0,
              "support_damage": 100.0,
              "support_fire_rate": 100.0,
              "support_range": 0.0
            }
          },
          {
            "cost": 4894,
            "level": 9,
            "total": 19206,
            "v": {
              "armor_damage": 0.0,
              "damage": 0.0,
              "fire_rate": 1.0,
              "range": 4.2,
              "shield_damage": 0.0,
              "support_damage": 100.0,
              "support_fire_rate": 100.0,
              "support_range": 25.0
            }
          },
          {
            "cost": 6362,
            "level": 10,
            "total": 25568,
            "v": {
              "armor_damage": 0.0,
              "damage": 0.0,
              "fire_rate": 1.0,
              "range": 4.2,
              "shield_damage": 0.0,
              "support_damage": 100.0,
              "support_fire_rate": 100.0,
              "support_range": 50.0
            }
          },
          {
            "cost": 8271,
            "level": 11,
            "total": 33839,
            "v": {
              "armor_damage": 0.0,
              "damage": 0.0,
              "fire_rate": 1.0,
              "range": 4.2,
              "shield_damage": 0.0,
              "support_damage": 100.0,
              "support_fire_rate": 100.0,
              "support_range": 75.0
            }
          },
          {
            "cost": 10752,
            "level": 12,
            "total": 44591,
            "v": {
              "armor_damage": 0.0,
              "damage": 0.0,
              "fire_rate": 1.0,
              "range": 4.2,
              "shield_damage": 0.0,
              "support_damage": 100.0,
              "support_fire_rate": 100.0,
              "support_range": 100.0
            }
          }
        ],
        "max": 12,
        "research_cap": false,
        "rows": [
          {
            "format": "f",
            "key": "range",
            "label": "Range",
            "lower_better": false
          },
          {
            "format": "%",
            "key": "support_damage",
            "label": "Damage boost",
            "lower_better": false
          },
          {
            "format": "%",
            "key": "support_fire_rate",
            "label": "Reload boost",
            "lower_better": false
          },
          {
            "format": "%",
            "key": "support_range",
            "label": "Range boost",
            "lower_better": false
          }
        ]
      },
      "model": "models/towers/support_station.glb",
      "name": "Support Station",
      "slug": "support_station",
      "stats": {
        "cost": 600,
        "damage": 0.0,
        "damage_per_level": 0.0,
        "fire_rate": 1.0,
        "fire_rate_per_level": 0.0,
        "max_level": 12,
        "range": 4.2,
        "range_per_level": 0.0,
        "research_cost": 60000,
        "splash_radius": 0.0
      },
      "tags": [
        "Support",
        "No damage"
      ],
      "targets": {
        "air": false,
        "ground": false
      },
      "type": "SupportStation"
    },
    {
      "category": "Advanced",
      "color": "#ffb826",
      "description": "Releases small attack drones that chase an enemy and keep shooting it well beyond the tower's own range, then come back for the next one.",
      "former_ids": [],
      "former_types": [],
      "fx": {
        "heats": false,
        "projectile_color": "#ffb826",
        "projectile_speed": 0.0
      },
      "height": {
        "ground_counts": true,
        "ground_prep": "none",
        "hill_cap": 0,
        "hill_only": false,
        "hills": true,
        "max": 24,
        "platforms": true,
        "water": null
      },
      "help": {
        "counters": "Low damage per shot, so armor soaks it up. Drones take time to fly out and back.",
        "short": "Drones chase enemies far past the tower's range",
        "strategy": "The hive only needs an enemy to enter its range once: its drones then follow that enemy along the path until it dies or gets too far away. Levels add drones (two at first, up to five). Each drone fires at the tower's fire rate for the tower's damage.",
        "synergies": [
          "Slow and Gravity Well keep targets inside drone reach for longer",
          "Good at finishing off enemies that slip past other towers"
        ]
      },
      "id": "drone_hive",
      "levels": {
        "at_once_how": "drones",
        "can_hit": "Ground & Air",
        "list": [
          {
            "cost": 0,
            "level": 1,
            "total": 375,
            "v": {
              "armor_damage": 0.0,
              "at_once": 2,
              "damage": 7.0,
              "fire_rate": 1.6,
              "hive_drones": 2,
              "hive_leash": 16.25,
              "range": 6.5,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 581,
            "level": 2,
            "total": 956,
            "v": {
              "armor_damage": 0.0,
              "at_once": 2,
              "damage": 9.5,
              "fire_rate": 1.66,
              "hive_drones": 2,
              "hive_leash": 17.0,
              "range": 6.8,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 900,
            "level": 3,
            "total": 1856,
            "v": {
              "armor_damage": 0.0,
              "at_once": 2,
              "damage": 12.0,
              "fire_rate": 1.72,
              "hive_drones": 2,
              "hive_leash": 17.75,
              "range": 7.1,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 1396,
            "level": 4,
            "total": 3252,
            "v": {
              "armor_damage": 0.0,
              "at_once": 3,
              "damage": 14.5,
              "fire_rate": 1.78,
              "hive_drones": 3,
              "hive_leash": 18.5,
              "range": 7.4,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 2164,
            "level": 5,
            "total": 5416,
            "v": {
              "armor_damage": 0.0,
              "at_once": 3,
              "damage": 17.0,
              "fire_rate": 1.84,
              "hive_drones": 3,
              "hive_leash": 19.25,
              "range": 7.7,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 3354,
            "level": 6,
            "total": 8770,
            "v": {
              "armor_damage": 0.0,
              "at_once": 3,
              "damage": 19.5,
              "fire_rate": 1.9,
              "hive_drones": 3,
              "hive_leash": 20.0,
              "range": 8.0,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 5200,
            "level": 7,
            "total": 13970,
            "v": {
              "armor_damage": 0.0,
              "at_once": 4,
              "damage": 22.0,
              "fire_rate": 1.96,
              "hive_drones": 4,
              "hive_leash": 20.75,
              "range": 8.3,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 8060,
            "level": 8,
            "total": 22030,
            "v": {
              "armor_damage": 0.0,
              "at_once": 4,
              "damage": 24.5,
              "fire_rate": 2.02,
              "hive_drones": 4,
              "hive_leash": 21.5,
              "range": 8.6,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 12493,
            "level": 9,
            "total": 34523,
            "v": {
              "armor_damage": 0.0,
              "at_once": 4,
              "damage": 27.0,
              "fire_rate": 2.08,
              "hive_drones": 4,
              "hive_leash": 22.25,
              "range": 8.9,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 19364,
            "level": 10,
            "total": 53887,
            "v": {
              "armor_damage": 0.0,
              "at_once": 5,
              "damage": 29.5,
              "fire_rate": 2.14,
              "hive_drones": 5,
              "hive_leash": 23.0,
              "range": 9.2,
              "shield_damage": 0.0
            }
          }
        ],
        "max": 10,
        "research_cap": false,
        "rows": [
          {
            "format": "f",
            "key": "damage",
            "label": "Damage",
            "lower_better": false
          },
          {
            "format": "rate",
            "key": "fire_rate",
            "label": "Fire rate",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "range",
            "label": "Range",
            "lower_better": false
          },
          {
            "format": "d",
            "key": "at_once",
            "label": "Targets at once",
            "lower_better": false
          },
          {
            "format": "d",
            "key": "hive_drones",
            "label": "Drones",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "hive_leash",
            "label": "Leash",
            "lower_better": false
          }
        ]
      },
      "model": "models/towers/drone_hive.glb",
      "name": "Drone Hive",
      "slug": "drone_hive",
      "stats": {
        "cost": 375,
        "damage": 7.0,
        "damage_per_level": 2.5,
        "fire_rate": 1.6,
        "fire_rate_per_level": 0.06,
        "max_level": 10,
        "range": 6.5,
        "range_per_level": 0.3,
        "research_cost": 75000,
        "splash_radius": 0.0
      },
      "tags": [
        "Drones",
        "Long reach"
      ],
      "targets": {
        "air": true,
        "ground": true
      },
      "type": "DroneHive"
    },
    {
      "category": "Advanced",
      "color": "#d966ff",
      "description": "Charges up, then fires a slug in a straight line that punches through every enemy in its path. Devastating against armor.",
      "former_ids": [],
      "former_types": [],
      "fx": {
        "heats": true,
        "projectile_color": "#d966ff",
        "projectile_speed": 0.0
      },
      "height": {
        "ground_counts": true,
        "ground_prep": "none",
        "hill_cap": 0,
        "hill_only": false,
        "hills": true,
        "max": 24,
        "platforms": true,
        "water": null
      },
      "help": {
        "counters": "Slow to fire. Wasted on single enemies and on paths that bend away from its line of fire.",
        "short": "Charged shot that pierces a whole line of enemies",
        "strategy": "Place it looking down a long straight stretch of path so one shot passes through as many enemies as possible. Each enemy the slug passes through takes a little less damage than the one before. From level 5 every fourth shot is supercharged: wider and much stronger.",
        "synergies": [
          "Cold Snap bunches enemies into a line",
          "Pairs with fast towers that cover its long charge-up"
        ]
      },
      "id": "railgun",
      "levels": {
        "at_once_how": "pierce",
        "can_hit": "Ground & Air",
        "list": [
          {
            "cost": 0,
            "level": 1,
            "total": 450,
            "v": {
              "armor_damage": 60.0,
              "at_once": 3,
              "charge_time": 0.6,
              "damage": 120.0,
              "fire_rate": 0.25,
              "pierce": 2,
              "range": 14.0,
              "shield_damage": 40.0
            }
          },
          {
            "cost": 720,
            "level": 2,
            "total": 1170,
            "v": {
              "armor_damage": 60.0,
              "at_once": 3,
              "charge_time": 0.6,
              "damage": 165.0,
              "fire_rate": 0.27,
              "pierce": 2,
              "range": 14.8,
              "shield_damage": 40.0
            }
          },
          {
            "cost": 1152,
            "level": 3,
            "total": 2322,
            "v": {
              "armor_damage": 60.0,
              "at_once": 4,
              "charge_time": 0.6,
              "damage": 210.0,
              "fire_rate": 0.29,
              "pierce": 3,
              "range": 15.6,
              "shield_damage": 40.0
            }
          },
          {
            "cost": 1843,
            "level": 4,
            "total": 4165,
            "v": {
              "armor_damage": 60.0,
              "at_once": 4,
              "charge_time": 0.6,
              "damage": 255.0,
              "fire_rate": 0.31,
              "pierce": 3,
              "range": 16.4,
              "shield_damage": 40.0
            }
          },
          {
            "cost": 2949,
            "level": 5,
            "total": 7114,
            "v": {
              "armor_damage": 60.0,
              "at_once": 5,
              "charge_time": 0.6,
              "damage": 300.0,
              "fire_rate": 0.33,
              "pierce": 4,
              "range": 17.2,
              "shield_damage": 40.0,
              "supercharge_every": 4
            }
          },
          {
            "cost": 4718,
            "level": 6,
            "total": 11832,
            "v": {
              "armor_damage": 60.0,
              "at_once": 5,
              "charge_time": 0.6,
              "damage": 345.0,
              "fire_rate": 0.35,
              "pierce": 4,
              "range": 18.0,
              "shield_damage": 40.0,
              "supercharge_every": 4
            }
          },
          {
            "cost": 7549,
            "level": 7,
            "total": 19381,
            "v": {
              "armor_damage": 60.0,
              "at_once": 6,
              "charge_time": 0.6,
              "damage": 390.0,
              "fire_rate": 0.37,
              "pierce": 5,
              "range": 18.8,
              "shield_damage": 40.0,
              "supercharge_every": 4
            }
          },
          {
            "cost": 12079,
            "level": 8,
            "total": 31460,
            "v": {
              "armor_damage": 60.0,
              "at_once": 6,
              "charge_time": 0.6,
              "damage": 435.0,
              "fire_rate": 0.39,
              "pierce": 5,
              "range": 19.6,
              "shield_damage": 40.0,
              "supercharge_every": 4
            }
          },
          {
            "cost": 19327,
            "level": 9,
            "total": 50787,
            "v": {
              "armor_damage": 60.0,
              "at_once": 7,
              "charge_time": 0.6,
              "damage": 480.0,
              "fire_rate": 0.41,
              "pierce": 6,
              "range": 20.4,
              "shield_damage": 40.0,
              "supercharge_every": 4
            }
          },
          {
            "cost": 30923,
            "level": 10,
            "total": 81710,
            "v": {
              "armor_damage": 60.0,
              "at_once": 7,
              "charge_time": 0.6,
              "damage": 525.0,
              "fire_rate": 0.43,
              "pierce": 6,
              "range": 21.2,
              "shield_damage": 40.0,
              "supercharge_every": 4
            }
          }
        ],
        "max": 10,
        "research_cap": false,
        "rows": [
          {
            "format": "f",
            "key": "damage",
            "label": "Damage",
            "lower_better": false
          },
          {
            "format": "rate",
            "key": "fire_rate",
            "label": "Fire rate",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "range",
            "label": "Range",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "shield_damage",
            "label": "Shield damage",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "armor_damage",
            "label": "Armor damage",
            "lower_better": false
          },
          {
            "format": "d",
            "key": "at_once",
            "label": "Targets at once",
            "lower_better": false
          },
          {
            "format": "d",
            "key": "pierce",
            "label": "Pierces",
            "lower_better": false
          },
          {
            "format": "s",
            "key": "charge_time",
            "label": "Charge",
            "lower_better": true
          },
          {
            "format": "d",
            "key": "supercharge_every",
            "label": "Supercharge every",
            "lower_better": false
          }
        ]
      },
      "model": "models/towers/railgun.glb",
      "name": "Railgun Tower",
      "slug": "railgun",
      "stats": {
        "cost": 450,
        "damage": 120.0,
        "damage_per_level": 45.0,
        "fire_rate": 0.25,
        "fire_rate_per_level": 0.02,
        "max_level": 10,
        "range": 14.0,
        "range_per_level": 0.8,
        "research_cost": 120000,
        "splash_radius": 0.0
      },
      "tags": [
        "Pierces",
        "Anti-armor",
        "Anti-shield",
        "Charges up"
      ],
      "targets": {
        "air": true,
        "ground": true
      },
      "type": "Railgun"
    },
    {
      "category": "Utility",
      "color": "#9959ff",
      "description": "Opens a gravity well on the path that drags nearby ground enemies into one tight cluster and holds them there for a moment, crushing them lightly. Bomb towers and Missile Silos inside its range fire at the held group the moment the well opens.",
      "former_ids": [],
      "former_types": [],
      "fx": {
        "heats": false,
        "projectile_color": "#9959ff",
        "projectile_speed": 0.0
      },
      "height": {
        "ground_counts": true,
        "ground_prep": "none",
        "hill_cap": 0,
        "hill_only": false,
        "hills": true,
        "max": 24,
        "platforms": true,
        "water": null
      },
      "help": {
        "counters": "Does almost no damage itself. Cannot catch flying enemies.",
        "short": "Pulls ground enemies into a tight cluster and holds them",
        "strategy": "Place it where splash towers can reach the path: the well opens on the enemy it targets and drags everything close by to that spot. Enemies that have just escaped a well cannot be caught again for a few seconds, and very large enemies are dragged more slowly. Levels widen the well and hold it longer.",
        "synergies": [
          "Bomb, Cannon and Acid hit the whole cluster at once",
          "Railgun pierces the bunched line"
        ]
      },
      "id": "gravity_well",
      "levels": {
        "at_once_how": "area",
        "can_hit": "Ground",
        "list": [
          {
            "cost": 0,
            "level": 1,
            "total": 400,
            "v": {
              "armor_damage": 0.0,
              "damage": 6.0,
              "fire_rate": 0.16,
              "range": 7.0,
              "shield_damage": 0.0,
              "well_hold_time": 2.2,
              "well_immunity": 3.0,
              "well_radius": 2.6
            }
          },
          {
            "cost": 620,
            "level": 2,
            "total": 1020,
            "v": {
              "armor_damage": 0.0,
              "damage": 8.0,
              "fire_rate": 0.164,
              "range": 7.3,
              "shield_damage": 0.0,
              "well_hold_time": 2.3,
              "well_immunity": 3.0,
              "well_radius": 2.72
            }
          },
          {
            "cost": 961,
            "level": 3,
            "total": 1981,
            "v": {
              "armor_damage": 0.0,
              "damage": 10.0,
              "fire_rate": 0.168,
              "range": 7.6,
              "shield_damage": 0.0,
              "well_hold_time": 2.4,
              "well_immunity": 3.0,
              "well_radius": 2.84
            }
          },
          {
            "cost": 1489,
            "level": 4,
            "total": 3470,
            "v": {
              "armor_damage": 0.0,
              "damage": 12.0,
              "fire_rate": 0.172,
              "range": 7.9,
              "shield_damage": 0.0,
              "well_hold_time": 2.5,
              "well_immunity": 3.0,
              "well_radius": 2.96
            }
          },
          {
            "cost": 2308,
            "level": 5,
            "total": 5778,
            "v": {
              "armor_damage": 0.0,
              "damage": 14.0,
              "fire_rate": 0.176,
              "range": 8.2,
              "shield_damage": 0.0,
              "well_hold_time": 2.6,
              "well_immunity": 3.0,
              "well_radius": 3.08
            }
          },
          {
            "cost": 3578,
            "level": 6,
            "total": 9356,
            "v": {
              "armor_damage": 0.0,
              "damage": 16.0,
              "fire_rate": 0.18,
              "range": 8.5,
              "shield_damage": 0.0,
              "well_hold_time": 2.7,
              "well_immunity": 3.0,
              "well_radius": 3.2
            }
          },
          {
            "cost": 5546,
            "level": 7,
            "total": 14902,
            "v": {
              "armor_damage": 0.0,
              "damage": 18.0,
              "fire_rate": 0.184,
              "range": 8.8,
              "shield_damage": 0.0,
              "well_hold_time": 2.8,
              "well_immunity": 3.0,
              "well_radius": 3.32
            }
          },
          {
            "cost": 8597,
            "level": 8,
            "total": 23499,
            "v": {
              "armor_damage": 0.0,
              "damage": 20.0,
              "fire_rate": 0.188,
              "range": 9.1,
              "shield_damage": 0.0,
              "well_hold_time": 2.9,
              "well_immunity": 3.0,
              "well_radius": 3.44
            }
          },
          {
            "cost": 13326,
            "level": 9,
            "total": 36825,
            "v": {
              "armor_damage": 0.0,
              "damage": 22.0,
              "fire_rate": 0.192,
              "range": 9.4,
              "shield_damage": 0.0,
              "well_hold_time": 3.0,
              "well_immunity": 3.0,
              "well_radius": 3.56
            }
          },
          {
            "cost": 20655,
            "level": 10,
            "total": 57480,
            "v": {
              "armor_damage": 0.0,
              "damage": 24.0,
              "fire_rate": 0.196,
              "range": 9.7,
              "shield_damage": 0.0,
              "well_hold_time": 3.1,
              "well_immunity": 3.0,
              "well_radius": 3.68
            }
          }
        ],
        "max": 10,
        "research_cap": false,
        "rows": [
          {
            "format": "f",
            "key": "damage",
            "label": "Damage",
            "lower_better": false
          },
          {
            "format": "rate",
            "key": "fire_rate",
            "label": "Fire rate",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "range",
            "label": "Range",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "well_radius",
            "label": "Well radius",
            "lower_better": false
          },
          {
            "format": "s",
            "key": "well_hold_time",
            "label": "Holds",
            "lower_better": false
          },
          {
            "format": "s",
            "key": "well_immunity",
            "label": "Immune after",
            "lower_better": false
          }
        ]
      },
      "model": "models/towers/gravity_well.glb",
      "name": "Gravity Well",
      "slug": "gravity_well",
      "stats": {
        "cost": 400,
        "damage": 6.0,
        "damage_per_level": 2.0,
        "fire_rate": 0.16,
        "fire_rate_per_level": 0.0,
        "max_level": 10,
        "range": 7.0,
        "range_per_level": 0.3,
        "research_cost": 150000,
        "splash_radius": 0.0
      },
      "tags": [
        "Control",
        "Pulls"
      ],
      "targets": {
        "air": false,
        "ground": true
      },
      "type": "GravityWell"
    },
    {
      "category": "Utility",
      "color": "#33e6cc",
      "description": "Every few seconds opens portals under enemies in range, picked by its target priority, and drops them back down the path, where they land with a hit. Higher levels grab more enemies and send them further. Strong enemies resist and travel a shorter distance.",
      "former_ids": [],
      "former_types": [],
      "fx": {
        "heats": false,
        "projectile_color": "#33e6cc",
        "projectile_speed": 0.0
      },
      "height": {
        "ground_counts": true,
        "ground_prep": "none",
        "hill_cap": 0,
        "hill_only": false,
        "hills": true,
        "max": 24,
        "platforms": true,
        "water": null
      },
      "help": {
        "counters": "Its landing hit is small (a quarter of its Power). Moves only a few enemies at a time, and cannot move flying enemies.",
        "short": "Sends enemies back along the path, picked by its target priority",
        "strategy": "Place it late on the path, where an enemy sent back has to walk past your towers again. How far an enemy goes depends on its strength against the tower's Power: weak enemies go the full distance, strong ones as little as a fifth of it. Its target priority picks who goes (First = the enemy closest to the base, Strongest, Fastest...). Each level (upgrades and XP) grabs more enemies at once (one more every two levels, up to 6) and sends them further. It earns XP for every enemy it sends, more for strong enemies sent far. An enemy that has just been sent back cannot be sent again for a few seconds.",
        "synergies": [
          "Every tower earlier on the path gets a second pass at the enemy",
          "Gravity Well and Slow hold enemies in range until the portal recharges"
        ]
      },
      "id": "portal",
      "levels": {
        "at_once_how": "portal",
        "can_hit": "Ground",
        "list": [
          {
            "cost": 0,
            "level": 1,
            "total": 475,
            "v": {
              "armor_damage": 0.0,
              "at_once": 1,
              "damage": 200.0,
              "fire_rate": 0.125,
              "portal_distance": 8.0,
              "portal_min_distance": 1.6,
              "portal_sickness": 6.0,
              "portal_targets": 1,
              "range": 6.0,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 760,
            "level": 2,
            "total": 1235,
            "v": {
              "armor_damage": 0.0,
              "at_once": 1,
              "damage": 280.0,
              "fire_rate": 0.129,
              "portal_distance": 9.0,
              "portal_min_distance": 1.8,
              "portal_sickness": 6.0,
              "portal_targets": 1,
              "range": 6.25,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 1216,
            "level": 3,
            "total": 2451,
            "v": {
              "armor_damage": 0.0,
              "at_once": 2,
              "damage": 360.0,
              "fire_rate": 0.133,
              "portal_distance": 10.0,
              "portal_min_distance": 2.0,
              "portal_sickness": 6.0,
              "portal_targets": 2,
              "range": 6.5,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 1945,
            "level": 4,
            "total": 4396,
            "v": {
              "armor_damage": 0.0,
              "at_once": 2,
              "damage": 440.0,
              "fire_rate": 0.137,
              "portal_distance": 11.0,
              "portal_min_distance": 2.2,
              "portal_sickness": 6.0,
              "portal_targets": 2,
              "range": 6.75,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 3112,
            "level": 5,
            "total": 7508,
            "v": {
              "armor_damage": 0.0,
              "at_once": 3,
              "damage": 520.0,
              "fire_rate": 0.141,
              "portal_distance": 12.0,
              "portal_min_distance": 2.4,
              "portal_sickness": 6.0,
              "portal_targets": 3,
              "range": 7.0,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 4980,
            "level": 6,
            "total": 12488,
            "v": {
              "armor_damage": 0.0,
              "at_once": 3,
              "damage": 600.0,
              "fire_rate": 0.145,
              "portal_distance": 13.0,
              "portal_min_distance": 2.6,
              "portal_sickness": 6.0,
              "portal_targets": 3,
              "range": 7.25,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 7969,
            "level": 7,
            "total": 20457,
            "v": {
              "armor_damage": 0.0,
              "at_once": 4,
              "damage": 680.0,
              "fire_rate": 0.149,
              "portal_distance": 14.0,
              "portal_min_distance": 2.8,
              "portal_sickness": 6.0,
              "portal_targets": 4,
              "range": 7.5,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 12750,
            "level": 8,
            "total": 33207,
            "v": {
              "armor_damage": 0.0,
              "at_once": 4,
              "damage": 760.0,
              "fire_rate": 0.153,
              "portal_distance": 15.0,
              "portal_min_distance": 3.0,
              "portal_sickness": 6.0,
              "portal_targets": 4,
              "range": 7.75,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 20401,
            "level": 9,
            "total": 53608,
            "v": {
              "armor_damage": 0.0,
              "at_once": 5,
              "damage": 840.0,
              "fire_rate": 0.157,
              "portal_distance": 16.0,
              "portal_min_distance": 3.2,
              "portal_sickness": 6.0,
              "portal_targets": 5,
              "range": 8.0,
              "shield_damage": 0.0
            }
          },
          {
            "cost": 32641,
            "level": 10,
            "total": 86249,
            "v": {
              "armor_damage": 0.0,
              "at_once": 5,
              "damage": 920.0,
              "fire_rate": 0.161,
              "portal_distance": 17.0,
              "portal_min_distance": 3.4,
              "portal_sickness": 6.0,
              "portal_targets": 5,
              "range": 8.25,
              "shield_damage": 0.0
            }
          }
        ],
        "max": 10,
        "research_cap": false,
        "rows": [
          {
            "format": "f",
            "key": "damage",
            "label": "Damage",
            "lower_better": false
          },
          {
            "format": "rate",
            "key": "fire_rate",
            "label": "Fire rate",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "range",
            "label": "Range",
            "lower_better": false
          },
          {
            "format": "d",
            "key": "at_once",
            "label": "Targets at once",
            "lower_better": false
          },
          {
            "format": "d",
            "key": "portal_targets",
            "label": "Grabs",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "portal_distance",
            "label": "Sends back",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "portal_min_distance",
            "label": "Strong sent back",
            "lower_better": false
          },
          {
            "format": "s",
            "key": "portal_sickness",
            "label": "Again after",
            "lower_better": true
          }
        ]
      },
      "model": "models/towers/portal.glb",
      "name": "Portal Tower",
      "slug": "portal",
      "stats": {
        "cost": 475,
        "damage": 200.0,
        "damage_per_level": 80.0,
        "fire_rate": 0.13,
        "fire_rate_per_level": 0.0,
        "max_level": 10,
        "range": 6.0,
        "range_per_level": 0.25,
        "research_cost": 175000,
        "splash_radius": 0.0
      },
      "tags": [
        "Control",
        "Teleports"
      ],
      "targets": {
        "air": false,
        "ground": true
      },
      "type": "Portal"
    },
    {
      "category": "Basic",
      "color": "#3399e6",
      "description": "Multi-plane airbase. Planes take off on wave start, land when wave ends. 8-tile footprint, R to rotate.",
      "former_ids": [],
      "former_types": [],
      "fx": {
        "heats": false,
        "projectile_color": "#ff8033",
        "projectile_speed": 22.0
      },
      "height": {
        "ground_counts": false,
        "ground_prep": "level",
        "hill_cap": 0,
        "hill_only": false,
        "hills": true,
        "max": 15,
        "platforms": false,
        "water": null
      },
      "help": {
        "counters": "",
        "short": "",
        "strategy": "",
        "synergies": []
      },
      "id": "airport",
      "levels": {
        "at_once_how": "planes",
        "can_hit": "Ground & Air",
        "list": [
          {
            "cost": 0,
            "level": 1,
            "total": 800,
            "v": {
              "armor_damage": 12.0,
              "at_once": 1,
              "damage": 35.0,
              "fire_rate": 2.5,
              "range": 80.0,
              "shield_damage": 12.0
            }
          },
          {
            "cost": 1040,
            "level": 2,
            "total": 1840,
            "v": {
              "armor_damage": 12.0,
              "at_once": 1,
              "damage": 50.0,
              "fire_rate": 2.75,
              "range": 88.0,
              "shield_damage": 12.0
            }
          },
          {
            "cost": 1352,
            "level": 3,
            "total": 3192,
            "v": {
              "armor_damage": 12.0,
              "at_once": 1,
              "damage": 65.0,
              "fire_rate": 3.0,
              "range": 96.0,
              "shield_damage": 12.0
            }
          },
          {
            "cost": 1757,
            "level": 4,
            "total": 4949,
            "v": {
              "armor_damage": 12.0,
              "at_once": 1,
              "damage": 80.0,
              "fire_rate": 3.25,
              "range": 104.0,
              "shield_damage": 12.0
            }
          },
          {
            "cost": 2284,
            "level": 5,
            "total": 7233,
            "v": {
              "armor_damage": 12.0,
              "at_once": 2,
              "damage": 95.0,
              "fire_rate": 3.5,
              "range": 112.0,
              "shield_damage": 12.0
            }
          },
          {
            "cost": 2970,
            "level": 6,
            "total": 10203,
            "v": {
              "armor_damage": 12.0,
              "at_once": 2,
              "damage": 110.0,
              "fire_rate": 3.75,
              "range": 120.0,
              "shield_damage": 12.0
            }
          },
          {
            "cost": 3861,
            "level": 7,
            "total": 14064,
            "v": {
              "armor_damage": 12.0,
              "at_once": 2,
              "damage": 125.0,
              "fire_rate": 4.0,
              "range": 128.0,
              "shield_damage": 12.0
            }
          },
          {
            "cost": 5019,
            "level": 8,
            "total": 19083,
            "v": {
              "armor_damage": 12.0,
              "at_once": 2,
              "damage": 140.0,
              "fire_rate": 4.25,
              "range": 136.0,
              "shield_damage": 12.0
            }
          },
          {
            "cost": 6525,
            "level": 9,
            "total": 25608,
            "v": {
              "armor_damage": 12.0,
              "at_once": 2,
              "damage": 155.0,
              "fire_rate": 4.5,
              "range": 144.0,
              "shield_damage": 12.0
            }
          },
          {
            "cost": 8483,
            "level": 10,
            "total": 34091,
            "v": {
              "armor_damage": 12.0,
              "at_once": 3,
              "damage": 170.0,
              "fire_rate": 4.75,
              "range": 152.0,
              "shield_damage": 12.0
            }
          }
        ],
        "max": 10,
        "research_cap": false,
        "rows": [
          {
            "format": "f",
            "key": "damage",
            "label": "Damage",
            "lower_better": false
          },
          {
            "format": "rate",
            "key": "fire_rate",
            "label": "Fire rate",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "range",
            "label": "Range",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "shield_damage",
            "label": "Shield damage",
            "lower_better": false
          },
          {
            "format": "f",
            "key": "armor_damage",
            "label": "Armor damage",
            "lower_better": false
          },
          {
            "format": "d",
            "key": "at_once",
            "label": "Targets at once",
            "lower_better": false
          }
        ]
      },
      "model": "models/towers/airport.glb",
      "name": "Airport",
      "slug": "airport",
      "stats": {
        "cost": 800,
        "damage": 35.0,
        "damage_per_level": 15.0,
        "fire_rate": 2.5,
        "fire_rate_per_level": 0.25,
        "max_level": 10,
        "range": 80.0,
        "range_per_level": 8.0,
        "research_cost": 200000,
        "splash_radius": 0.0
      },
      "tags": [],
      "targets": {
        "air": true,
        "ground": true
      },
      "type": "Airport"
    }
  ]
}