bwapi_wrapper 0.3.0

Bindings to BWAPI
Documentation
use crate::prelude::*;
pub(crate) struct WeaponTypeData {
    pub(crate) what_uses: UnitType,
    pub(crate) max_range: i32,
    pub(crate) targets_org_or_mech: bool,
    pub(crate) damage_type: DamageType,
    pub(crate) tech: TechType,
    pub(crate) targets_own: bool,
    pub(crate) min_range: i32,
    pub(crate) targets_ground: bool,
    pub(crate) damage_factor: i32,
    pub(crate) upgrade_type: UpgradeType,
    pub(crate) targets_terrain: bool,
    pub(crate) damage_amount: i32,
    pub(crate) explosion_type: ExplosionType,
    pub(crate) damage_cooldown: i32,
    pub(crate) targets_air: bool,
    pub(crate) targets_organic: bool,
    pub(crate) damage_bonus: i32,
    pub(crate) outer_splash_radius: i32,
    pub(crate) targets_non_robotic: bool,
    pub(crate) targets_non_building: bool,
    pub(crate) targets_mechanical: bool,
    pub(crate) median_splash_radius: i32,
    pub(crate) inner_splash_radius: i32,
    pub(crate) name: &'static str,
}
pub(crate) static WEAPON_TYPE_DATA: [WeaponTypeData; 132] = [
    WeaponTypeData {
        what_uses: UnitType::Terran_Marine,
        max_range: 128,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Terran_Infantry_Weapons,
        targets_terrain: false,
        damage_amount: 6,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 15,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Gauss_Rifle",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Jim_Raynor_Marine,
        max_range: 160,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Terran_Infantry_Weapons,
        targets_terrain: false,
        damage_amount: 18,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 15,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Gauss_Rifle_Jim_Raynor",
    },
    WeaponTypeData {
        what_uses: UnitType::Terran_Ghost,
        max_range: 224,
        targets_org_or_mech: false,
        damage_type: DamageType::Concussive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Terran_Infantry_Weapons,
        targets_terrain: false,
        damage_amount: 10,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 22,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "C_10_Canister_Rifle",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Sarah_Kerrigan,
        max_range: 192,
        targets_org_or_mech: false,
        damage_type: DamageType::Concussive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Terran_Infantry_Weapons,
        targets_terrain: false,
        damage_amount: 30,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 22,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "C_10_Canister_Rifle_Sarah_Kerrigan",
    },
    WeaponTypeData {
        what_uses: UnitType::Terran_Vulture,
        max_range: 160,
        targets_org_or_mech: false,
        damage_type: DamageType::Concussive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Terran_Vehicle_Weapons,
        targets_terrain: false,
        damage_amount: 20,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 30,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 2,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Fragmentation_Grenade",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Jim_Raynor_Vulture,
        max_range: 160,
        targets_org_or_mech: false,
        damage_type: DamageType::Concussive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Terran_Vehicle_Weapons,
        targets_terrain: false,
        damage_amount: 30,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 22,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 2,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Fragmentation_Grenade_Jim_Raynor",
    },
    WeaponTypeData {
        what_uses: UnitType::Terran_Vulture_Spider_Mine,
        max_range: 10,
        targets_org_or_mech: false,
        damage_type: DamageType::Explosive,
        tech: TechType::Spider_Mines,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Upgrade_60,
        targets_terrain: false,
        damage_amount: 125,
        explosion_type: ExplosionType::Radial_Splash,
        damage_cooldown: 22,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 100,
        targets_non_robotic: false,
        targets_non_building: true,
        targets_mechanical: false,
        median_splash_radius: 75,
        inner_splash_radius: 50,
        name: "Spider_Mines",
    },
    WeaponTypeData {
        what_uses: UnitType::Terran_Goliath,
        max_range: 192,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Terran_Vehicle_Weapons,
        targets_terrain: false,
        damage_amount: 12,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 22,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Twin_Autocannons",
    },
    WeaponTypeData {
        what_uses: UnitType::Terran_Goliath,
        max_range: 160,
        targets_org_or_mech: false,
        damage_type: DamageType::Explosive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 2,
        upgrade_type: UpgradeType::Terran_Vehicle_Weapons,
        targets_terrain: false,
        damage_amount: 10,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 22,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 2,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Hellfire_Missile_Pack",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Alan_Schezar,
        max_range: 160,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Terran_Vehicle_Weapons,
        targets_terrain: false,
        damage_amount: 24,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 22,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Twin_Autocannons_Alan_Schezar",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Alan_Schezar,
        max_range: 160,
        targets_org_or_mech: false,
        damage_type: DamageType::Explosive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 2,
        upgrade_type: UpgradeType::Terran_Vehicle_Weapons,
        targets_terrain: false,
        damage_amount: 20,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 22,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Hellfire_Missile_Pack_Alan_Schezar",
    },
    WeaponTypeData {
        what_uses: UnitType::Terran_Siege_Tank_Tank_Mode,
        max_range: 224,
        targets_org_or_mech: false,
        damage_type: DamageType::Explosive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Terran_Vehicle_Weapons,
        targets_terrain: false,
        damage_amount: 30,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 37,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 3,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Arclite_Cannon",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Edmund_Duke_Tank_Mode,
        max_range: 224,
        targets_org_or_mech: false,
        damage_type: DamageType::Explosive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Terran_Vehicle_Weapons,
        targets_terrain: false,
        damage_amount: 70,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 37,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 3,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Arclite_Cannon_Edmund_Duke",
    },
    WeaponTypeData {
        what_uses: UnitType::Terran_SCV,
        max_range: 10,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Upgrade_60,
        targets_terrain: false,
        damage_amount: 5,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 15,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Fusion_Cutter",
    },
    WeaponTypeData {
        what_uses: UnitType::None,
        max_range: 0,
        targets_org_or_mech: false,
        damage_type: DamageType::None,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::None,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::None,
        damage_cooldown: 0,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Invalid",
    },
    WeaponTypeData {
        what_uses: UnitType::Terran_Wraith,
        max_range: 160,
        targets_org_or_mech: false,
        damage_type: DamageType::Explosive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::Terran_Ship_Weapons,
        targets_terrain: false,
        damage_amount: 20,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 22,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 2,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Gemini_Missiles",
    },
    WeaponTypeData {
        what_uses: UnitType::Terran_Wraith,
        max_range: 160,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Terran_Ship_Weapons,
        targets_terrain: false,
        damage_amount: 8,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 30,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Burst_Lasers",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Tom_Kazansky,
        max_range: 160,
        targets_org_or_mech: false,
        damage_type: DamageType::Explosive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::Terran_Ship_Weapons,
        targets_terrain: false,
        damage_amount: 40,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 22,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 2,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Gemini_Missiles_Tom_Kazansky",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Tom_Kazansky,
        max_range: 160,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Terran_Ship_Weapons,
        targets_terrain: false,
        damage_amount: 16,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 30,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Burst_Lasers_Tom_Kazansky",
    },
    WeaponTypeData {
        what_uses: UnitType::Terran_Battlecruiser,
        max_range: 192,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Terran_Ship_Weapons,
        targets_terrain: false,
        damage_amount: 25,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 30,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 3,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "ATS_Laser_Battery",
    },
    WeaponTypeData {
        what_uses: UnitType::Terran_Battlecruiser,
        max_range: 192,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::Terran_Ship_Weapons,
        targets_terrain: false,
        damage_amount: 25,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 30,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 3,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "ATA_Laser_Battery",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Norad_II,
        max_range: 192,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Terran_Ship_Weapons,
        targets_terrain: false,
        damage_amount: 50,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 30,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 3,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "ATS_Laser_Battery_Hero",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Norad_II,
        max_range: 192,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::Terran_Ship_Weapons,
        targets_terrain: false,
        damage_amount: 50,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 30,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 3,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "ATA_Laser_Battery_Hero",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Hyperion,
        max_range: 192,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Terran_Ship_Weapons,
        targets_terrain: false,
        damage_amount: 30,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 22,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 3,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "ATS_Laser_Battery_Hyperion",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Hyperion,
        max_range: 192,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::Terran_Ship_Weapons,
        targets_terrain: false,
        damage_amount: 30,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 22,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 3,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "ATA_Laser_Battery_Hyperion",
    },
    WeaponTypeData {
        what_uses: UnitType::Terran_Firebat,
        max_range: 32,
        targets_org_or_mech: false,
        damage_type: DamageType::Concussive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Terran_Infantry_Weapons,
        targets_terrain: false,
        damage_amount: 8,
        explosion_type: ExplosionType::Enemy_Splash,
        damage_cooldown: 22,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 25,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 20,
        inner_splash_radius: 15,
        name: "Flame_Thrower",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Gui_Montag,
        max_range: 32,
        targets_org_or_mech: false,
        damage_type: DamageType::Concussive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Terran_Infantry_Weapons,
        targets_terrain: false,
        damage_amount: 16,
        explosion_type: ExplosionType::Enemy_Splash,
        damage_cooldown: 22,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 25,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 20,
        inner_splash_radius: 15,
        name: "Flame_Thrower_Gui_Montag",
    },
    WeaponTypeData {
        what_uses: UnitType::Terran_Siege_Tank_Siege_Mode,
        max_range: 384,
        targets_org_or_mech: false,
        damage_type: DamageType::Explosive,
        tech: TechType::None,
        targets_own: false,
        min_range: 64,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Terran_Vehicle_Weapons,
        targets_terrain: false,
        damage_amount: 70,
        explosion_type: ExplosionType::Radial_Splash,
        damage_cooldown: 75,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 5,
        outer_splash_radius: 40,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 25,
        inner_splash_radius: 10,
        name: "Arclite_Shock_Cannon",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Edmund_Duke_Siege_Mode,
        max_range: 384,
        targets_org_or_mech: false,
        damage_type: DamageType::Explosive,
        tech: TechType::None,
        targets_own: false,
        min_range: 64,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Terran_Vehicle_Weapons,
        targets_terrain: false,
        damage_amount: 150,
        explosion_type: ExplosionType::Radial_Splash,
        damage_cooldown: 75,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 5,
        outer_splash_radius: 40,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 25,
        inner_splash_radius: 10,
        name: "Arclite_Shock_Cannon_Edmund_Duke",
    },
    WeaponTypeData {
        what_uses: UnitType::Terran_Missile_Turret,
        max_range: 224,
        targets_org_or_mech: false,
        damage_type: DamageType::Explosive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::Upgrade_60,
        targets_terrain: false,
        damage_amount: 20,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 15,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Longbolt_Missile",
    },
    WeaponTypeData {
        what_uses: UnitType::Terran_Battlecruiser,
        max_range: 320,
        targets_org_or_mech: false,
        damage_type: DamageType::Explosive,
        tech: TechType::Yamato_Gun,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Upgrade_60,
        targets_terrain: false,
        damage_amount: 260,
        explosion_type: ExplosionType::Yamato_Gun,
        damage_cooldown: 15,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Yamato_Gun",
    },
    WeaponTypeData {
        what_uses: UnitType::Terran_Ghost,
        max_range: 3,
        targets_org_or_mech: false,
        damage_type: DamageType::Explosive,
        tech: TechType::Nuclear_Strike,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Upgrade_60,
        targets_terrain: false,
        damage_amount: 600,
        explosion_type: ExplosionType::Nuclear_Missile,
        damage_cooldown: 1,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 256,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 192,
        inner_splash_radius: 128,
        name: "Nuclear_Strike",
    },
    WeaponTypeData {
        what_uses: UnitType::Terran_Ghost,
        max_range: 256,
        targets_org_or_mech: false,
        damage_type: DamageType::Concussive,
        tech: TechType::Lockdown,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Upgrade_60,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::Lockdown,
        damage_cooldown: 1,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: true,
        targets_mechanical: true,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Lockdown",
    },
    WeaponTypeData {
        what_uses: UnitType::Terran_Science_Vessel,
        max_range: 256,
        targets_org_or_mech: false,
        damage_type: DamageType::Concussive,
        tech: TechType::EMP_Shockwave,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Upgrade_60,
        targets_terrain: true,
        damage_amount: 0,
        explosion_type: ExplosionType::EMP_Shockwave,
        damage_cooldown: 1,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 64,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 64,
        inner_splash_radius: 64,
        name: "EMP_Shockwave",
    },
    WeaponTypeData {
        what_uses: UnitType::Terran_Science_Vessel,
        max_range: 288,
        targets_org_or_mech: false,
        damage_type: DamageType::Ignore_Armor,
        tech: TechType::Irradiate,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Upgrade_60,
        targets_terrain: true,
        damage_amount: 250,
        explosion_type: ExplosionType::Irradiate,
        damage_cooldown: 75,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Irradiate",
    },
    WeaponTypeData {
        what_uses: UnitType::Zerg_Zergling,
        max_range: 15,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Zerg_Melee_Attacks,
        targets_terrain: false,
        damage_amount: 5,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 8,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Claws",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Devouring_One,
        max_range: 15,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Zerg_Melee_Attacks,
        targets_terrain: false,
        damage_amount: 10,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 8,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Claws_Devouring_One",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Infested_Kerrigan,
        max_range: 15,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Zerg_Melee_Attacks,
        targets_terrain: false,
        damage_amount: 50,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 15,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Claws_Infested_Kerrigan",
    },
    WeaponTypeData {
        what_uses: UnitType::Zerg_Hydralisk,
        max_range: 128,
        targets_org_or_mech: false,
        damage_type: DamageType::Explosive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Zerg_Missile_Attacks,
        targets_terrain: false,
        damage_amount: 10,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 15,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Needle_Spines",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Hunter_Killer,
        max_range: 160,
        targets_org_or_mech: false,
        damage_type: DamageType::Explosive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Zerg_Missile_Attacks,
        targets_terrain: false,
        damage_amount: 20,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 15,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Needle_Spines_Hunter_Killer",
    },
    WeaponTypeData {
        what_uses: UnitType::Zerg_Ultralisk,
        max_range: 25,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Zerg_Melee_Attacks,
        targets_terrain: false,
        damage_amount: 20,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 15,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 3,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Kaiser_Blades",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Torrasque,
        max_range: 25,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Zerg_Melee_Attacks,
        targets_terrain: false,
        damage_amount: 50,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 15,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 3,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Kaiser_Blades_Torrasque",
    },
    WeaponTypeData {
        what_uses: UnitType::Zerg_Broodling,
        max_range: 2,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Zerg_Melee_Attacks,
        targets_terrain: false,
        damage_amount: 4,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 15,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Toxic_Spores",
    },
    WeaponTypeData {
        what_uses: UnitType::Zerg_Drone,
        max_range: 32,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Upgrade_60,
        targets_terrain: false,
        damage_amount: 5,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 22,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Spines",
    },
    WeaponTypeData {
        what_uses: UnitType::None,
        max_range: 0,
        targets_org_or_mech: false,
        damage_type: DamageType::None,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::None,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::None,
        damage_cooldown: 0,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Invalid",
    },
    WeaponTypeData {
        what_uses: UnitType::None,
        max_range: 0,
        targets_org_or_mech: false,
        damage_type: DamageType::None,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::None,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::None,
        damage_cooldown: 0,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Invalid",
    },
    WeaponTypeData {
        what_uses: UnitType::Zerg_Guardian,
        max_range: 256,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Zerg_Flyer_Attacks,
        targets_terrain: false,
        damage_amount: 20,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 30,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 2,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Acid_Spore",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Kukulza_Guardian,
        max_range: 256,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Zerg_Flyer_Attacks,
        targets_terrain: false,
        damage_amount: 40,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 30,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 2,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Acid_Spore_Kukulza",
    },
    WeaponTypeData {
        what_uses: UnitType::Zerg_Mutalisk,
        max_range: 96,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Zerg_Flyer_Attacks,
        targets_terrain: false,
        damage_amount: 9,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 30,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Glave_Wurm",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Kukulza_Mutalisk,
        max_range: 96,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Zerg_Flyer_Attacks,
        targets_terrain: false,
        damage_amount: 18,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 30,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Glave_Wurm_Kukulza",
    },
    WeaponTypeData {
        what_uses: UnitType::None,
        max_range: 0,
        targets_org_or_mech: false,
        damage_type: DamageType::None,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::None,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::None,
        damage_cooldown: 0,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Invalid",
    },
    WeaponTypeData {
        what_uses: UnitType::None,
        max_range: 0,
        targets_org_or_mech: false,
        damage_type: DamageType::None,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::None,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::None,
        damage_cooldown: 0,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Invalid",
    },
    WeaponTypeData {
        what_uses: UnitType::Zerg_Spore_Colony,
        max_range: 224,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::Upgrade_60,
        targets_terrain: false,
        damage_amount: 15,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 15,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Seeker_Spores",
    },
    WeaponTypeData {
        what_uses: UnitType::Zerg_Sunken_Colony,
        max_range: 224,
        targets_org_or_mech: false,
        damage_type: DamageType::Explosive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Upgrade_60,
        targets_terrain: false,
        damage_amount: 40,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 32,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Subterranean_Tentacle",
    },
    WeaponTypeData {
        what_uses: UnitType::Zerg_Infested_Terran,
        max_range: 3,
        targets_org_or_mech: false,
        damage_type: DamageType::Explosive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Upgrade_60,
        targets_terrain: false,
        damage_amount: 500,
        explosion_type: ExplosionType::Radial_Splash,
        damage_cooldown: 1,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 60,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 40,
        inner_splash_radius: 20,
        name: "Suicide_Infested_Terran",
    },
    WeaponTypeData {
        what_uses: UnitType::Zerg_Scourge,
        max_range: 3,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::Upgrade_60,
        targets_terrain: false,
        damage_amount: 110,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 1,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Suicide_Scourge",
    },
    WeaponTypeData {
        what_uses: UnitType::Zerg_Queen,
        max_range: 384,
        targets_org_or_mech: false,
        damage_type: DamageType::Independent,
        tech: TechType::Parasite,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Upgrade_60,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::Parasite,
        damage_cooldown: 1,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: true,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Parasite",
    },
    WeaponTypeData {
        what_uses: UnitType::Zerg_Queen,
        max_range: 288,
        targets_org_or_mech: true,
        damage_type: DamageType::Independent,
        tech: TechType::Spawn_Broodlings,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Upgrade_60,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::Broodlings,
        damage_cooldown: 1,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: true,
        targets_non_building: true,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Spawn_Broodlings",
    },
    WeaponTypeData {
        what_uses: UnitType::Zerg_Queen,
        max_range: 288,
        targets_org_or_mech: false,
        damage_type: DamageType::Independent,
        tech: TechType::Ensnare,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Upgrade_60,
        targets_terrain: true,
        damage_amount: 0,
        explosion_type: ExplosionType::Ensnare,
        damage_cooldown: 1,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Ensnare",
    },
    WeaponTypeData {
        what_uses: UnitType::Zerg_Defiler,
        max_range: 288,
        targets_org_or_mech: false,
        damage_type: DamageType::Independent,
        tech: TechType::Dark_Swarm,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Upgrade_60,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::Dark_Swarm,
        damage_cooldown: 1,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Dark_Swarm",
    },
    WeaponTypeData {
        what_uses: UnitType::Zerg_Defiler,
        max_range: 288,
        targets_org_or_mech: false,
        damage_type: DamageType::Independent,
        tech: TechType::Plague,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Upgrade_60,
        targets_terrain: true,
        damage_amount: 300,
        explosion_type: ExplosionType::Plague,
        damage_cooldown: 1,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Plague",
    },
    WeaponTypeData {
        what_uses: UnitType::Zerg_Defiler,
        max_range: 16,
        targets_org_or_mech: false,
        damage_type: DamageType::Independent,
        tech: TechType::Consume,
        targets_own: true,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Upgrade_60,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::Consume,
        damage_cooldown: 1,
        targets_air: true,
        targets_organic: true,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: true,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Consume",
    },
    WeaponTypeData {
        what_uses: UnitType::Protoss_Probe,
        max_range: 32,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Upgrade_60,
        targets_terrain: false,
        damage_amount: 5,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 22,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Particle_Beam",
    },
    WeaponTypeData {
        what_uses: UnitType::None,
        max_range: 0,
        targets_org_or_mech: false,
        damage_type: DamageType::None,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::None,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::None,
        damage_cooldown: 0,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Invalid",
    },
    WeaponTypeData {
        what_uses: UnitType::Protoss_Zealot,
        max_range: 15,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Protoss_Ground_Weapons,
        targets_terrain: false,
        damage_amount: 8,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 22,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Psi_Blades",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Fenix_Zealot,
        max_range: 15,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Protoss_Ground_Weapons,
        targets_terrain: false,
        damage_amount: 20,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 22,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Psi_Blades_Fenix",
    },
    WeaponTypeData {
        what_uses: UnitType::Protoss_Dragoon,
        max_range: 128,
        targets_org_or_mech: false,
        damage_type: DamageType::Explosive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Protoss_Ground_Weapons,
        targets_terrain: false,
        damage_amount: 20,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 30,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 2,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Phase_Disruptor",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Fenix_Dragoon,
        max_range: 128,
        targets_org_or_mech: false,
        damage_type: DamageType::Explosive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Protoss_Ground_Weapons,
        targets_terrain: false,
        damage_amount: 45,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 22,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 2,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Phase_Disruptor_Fenix",
    },
    WeaponTypeData {
        what_uses: UnitType::None,
        max_range: 0,
        targets_org_or_mech: false,
        damage_type: DamageType::None,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::None,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::None,
        damage_cooldown: 0,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Invalid",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Tassadar,
        max_range: 96,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Protoss_Ground_Weapons,
        targets_terrain: false,
        damage_amount: 20,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 22,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Psi_Assault",
    },
    WeaponTypeData {
        what_uses: UnitType::Protoss_Archon,
        max_range: 64,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Protoss_Ground_Weapons,
        targets_terrain: false,
        damage_amount: 30,
        explosion_type: ExplosionType::Enemy_Splash,
        damage_cooldown: 20,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 3,
        outer_splash_radius: 30,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 15,
        inner_splash_radius: 3,
        name: "Psionic_Shockwave",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Tassadar_Zeratul_Archon,
        max_range: 64,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Protoss_Ground_Weapons,
        targets_terrain: false,
        damage_amount: 60,
        explosion_type: ExplosionType::Enemy_Splash,
        damage_cooldown: 20,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 3,
        outer_splash_radius: 30,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 15,
        inner_splash_radius: 3,
        name: "Psionic_Shockwave_TZ_Archon",
    },
    WeaponTypeData {
        what_uses: UnitType::None,
        max_range: 0,
        targets_org_or_mech: false,
        damage_type: DamageType::None,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::None,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::None,
        damage_cooldown: 0,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Invalid",
    },
    WeaponTypeData {
        what_uses: UnitType::Protoss_Scout,
        max_range: 128,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Protoss_Air_Weapons,
        targets_terrain: false,
        damage_amount: 8,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 30,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Dual_Photon_Blasters",
    },
    WeaponTypeData {
        what_uses: UnitType::Protoss_Scout,
        max_range: 128,
        targets_org_or_mech: false,
        damage_type: DamageType::Explosive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 2,
        upgrade_type: UpgradeType::Protoss_Air_Weapons,
        targets_terrain: false,
        damage_amount: 14,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 22,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Anti_Matter_Missiles",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Mojo,
        max_range: 128,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Protoss_Air_Weapons,
        targets_terrain: false,
        damage_amount: 20,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 30,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Dual_Photon_Blasters_Mojo",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Mojo,
        max_range: 128,
        targets_org_or_mech: false,
        damage_type: DamageType::Explosive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 2,
        upgrade_type: UpgradeType::Protoss_Air_Weapons,
        targets_terrain: false,
        damage_amount: 28,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 22,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Anti_Matter_Missiles_Mojo",
    },
    WeaponTypeData {
        what_uses: UnitType::Protoss_Arbiter,
        max_range: 160,
        targets_org_or_mech: false,
        damage_type: DamageType::Explosive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Protoss_Air_Weapons,
        targets_terrain: false,
        damage_amount: 10,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 45,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Phase_Disruptor_Cannon",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Danimoth,
        max_range: 160,
        targets_org_or_mech: false,
        damage_type: DamageType::Explosive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Protoss_Air_Weapons,
        targets_terrain: false,
        damage_amount: 20,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 45,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Phase_Disruptor_Cannon_Danimoth",
    },
    WeaponTypeData {
        what_uses: UnitType::Protoss_Interceptor,
        max_range: 128,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Protoss_Air_Weapons,
        targets_terrain: false,
        damage_amount: 6,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 1,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Pulse_Cannon",
    },
    WeaponTypeData {
        what_uses: UnitType::Protoss_Photon_Cannon,
        max_range: 224,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Upgrade_60,
        targets_terrain: false,
        damage_amount: 20,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 22,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "STS_Photon_Cannon",
    },
    WeaponTypeData {
        what_uses: UnitType::Protoss_Photon_Cannon,
        max_range: 224,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::Upgrade_60,
        targets_terrain: false,
        damage_amount: 20,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 22,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "STA_Photon_Cannon",
    },
    WeaponTypeData {
        what_uses: UnitType::Protoss_Scarab,
        max_range: 128,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Scarab_Damage,
        targets_terrain: false,
        damage_amount: 100,
        explosion_type: ExplosionType::Enemy_Splash,
        damage_cooldown: 1,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 25,
        outer_splash_radius: 60,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 40,
        inner_splash_radius: 20,
        name: "Scarab",
    },
    WeaponTypeData {
        what_uses: UnitType::Protoss_Arbiter,
        max_range: 288,
        targets_org_or_mech: false,
        damage_type: DamageType::Independent,
        tech: TechType::Stasis_Field,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Upgrade_60,
        targets_terrain: true,
        damage_amount: 0,
        explosion_type: ExplosionType::Stasis_Field,
        damage_cooldown: 1,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Stasis_Field",
    },
    WeaponTypeData {
        what_uses: UnitType::Protoss_High_Templar,
        max_range: 288,
        targets_org_or_mech: false,
        damage_type: DamageType::Ignore_Armor,
        tech: TechType::Psionic_Storm,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Upgrade_60,
        targets_terrain: true,
        damage_amount: 14,
        explosion_type: ExplosionType::Radial_Splash,
        damage_cooldown: 45,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 48,
        targets_non_robotic: false,
        targets_non_building: true,
        targets_mechanical: false,
        median_splash_radius: 48,
        inner_splash_radius: 48,
        name: "Psionic_Storm",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Zeratul,
        max_range: 15,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Protoss_Ground_Weapons,
        targets_terrain: false,
        damage_amount: 100,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 22,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Warp_Blades_Zeratul",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Dark_Templar,
        max_range: 15,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Protoss_Ground_Weapons,
        targets_terrain: false,
        damage_amount: 45,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 30,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Warp_Blades_Hero",
    },
    WeaponTypeData {
        what_uses: UnitType::None,
        max_range: 0,
        targets_org_or_mech: false,
        damage_type: DamageType::None,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::None,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::None,
        damage_cooldown: 0,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Invalid",
    },
    WeaponTypeData {
        what_uses: UnitType::None,
        max_range: 0,
        targets_org_or_mech: false,
        damage_type: DamageType::None,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::None,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::None,
        damage_cooldown: 0,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Invalid",
    },
    WeaponTypeData {
        what_uses: UnitType::None,
        max_range: 0,
        targets_org_or_mech: false,
        damage_type: DamageType::None,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::None,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::None,
        damage_cooldown: 0,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Invalid",
    },
    WeaponTypeData {
        what_uses: UnitType::None,
        max_range: 0,
        targets_org_or_mech: false,
        damage_type: DamageType::None,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::None,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::None,
        damage_cooldown: 0,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Invalid",
    },
    WeaponTypeData {
        what_uses: UnitType::None,
        max_range: 0,
        targets_org_or_mech: false,
        damage_type: DamageType::None,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::None,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::None,
        damage_cooldown: 0,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Invalid",
    },
    WeaponTypeData {
        what_uses: UnitType::None,
        max_range: 224,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::Upgrade_60,
        targets_terrain: false,
        damage_amount: 7,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 22,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Platform_Laser_Battery",
    },
    WeaponTypeData {
        what_uses: UnitType::Special_Independant_Starport,
        max_range: 128,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::Upgrade_60,
        targets_terrain: false,
        damage_amount: 7,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 22,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Independant_Laser_Battery",
    },
    WeaponTypeData {
        what_uses: UnitType::None,
        max_range: 0,
        targets_org_or_mech: false,
        damage_type: DamageType::None,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::None,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::None,
        damage_cooldown: 0,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Invalid",
    },
    WeaponTypeData {
        what_uses: UnitType::None,
        max_range: 0,
        targets_org_or_mech: false,
        damage_type: DamageType::None,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::None,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::None,
        damage_cooldown: 0,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Invalid",
    },
    WeaponTypeData {
        what_uses: UnitType::Special_Floor_Gun_Trap,
        max_range: 160,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Terran_Vehicle_Weapons,
        targets_terrain: false,
        damage_amount: 10,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 22,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Twin_Autocannons_Floor_Trap",
    },
    WeaponTypeData {
        what_uses: UnitType::Special_Wall_Missile_Trap,
        max_range: 160,
        targets_org_or_mech: false,
        damage_type: DamageType::Explosive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 2,
        upgrade_type: UpgradeType::Terran_Vehicle_Weapons,
        targets_terrain: false,
        damage_amount: 10,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 22,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Hellfire_Missile_Pack_Wall_Trap",
    },
    WeaponTypeData {
        what_uses: UnitType::Special_Wall_Flame_Trap,
        max_range: 64,
        targets_org_or_mech: false,
        damage_type: DamageType::Concussive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Terran_Infantry_Weapons,
        targets_terrain: false,
        damage_amount: 8,
        explosion_type: ExplosionType::Enemy_Splash,
        damage_cooldown: 22,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 25,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 20,
        inner_splash_radius: 15,
        name: "Flame_Thrower_Wall_Trap",
    },
    WeaponTypeData {
        what_uses: UnitType::Special_Floor_Missile_Trap,
        max_range: 160,
        targets_org_or_mech: false,
        damage_type: DamageType::Explosive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 2,
        upgrade_type: UpgradeType::Terran_Vehicle_Weapons,
        targets_terrain: false,
        damage_amount: 10,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 22,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Hellfire_Missile_Pack_Floor_Trap",
    },
    WeaponTypeData {
        what_uses: UnitType::Protoss_Corsair,
        max_range: 160,
        targets_org_or_mech: false,
        damage_type: DamageType::Explosive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::Protoss_Air_Weapons,
        targets_terrain: false,
        damage_amount: 5,
        explosion_type: ExplosionType::Air_Splash,
        damage_cooldown: 8,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 100,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 50,
        inner_splash_radius: 5,
        name: "Neutron_Flare",
    },
    WeaponTypeData {
        what_uses: UnitType::Protoss_Corsair,
        max_range: 288,
        targets_org_or_mech: false,
        damage_type: DamageType::Ignore_Armor,
        tech: TechType::Disruption_Web,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Upgrade_60,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::Disruption_Web,
        damage_cooldown: 22,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Disruption_Web",
    },
    WeaponTypeData {
        what_uses: UnitType::Terran_Medic,
        max_range: 192,
        targets_org_or_mech: false,
        damage_type: DamageType::Ignore_Armor,
        tech: TechType::Restoration,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Upgrade_60,
        targets_terrain: true,
        damage_amount: 20,
        explosion_type: ExplosionType::Restoration,
        damage_cooldown: 22,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Restoration",
    },
    WeaponTypeData {
        what_uses: UnitType::Terran_Valkyrie,
        max_range: 192,
        targets_org_or_mech: false,
        damage_type: DamageType::Explosive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 2,
        upgrade_type: UpgradeType::Terran_Ship_Weapons,
        targets_terrain: false,
        damage_amount: 6,
        explosion_type: ExplosionType::Air_Splash,
        damage_cooldown: 64,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 100,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 50,
        inner_splash_radius: 5,
        name: "Halo_Rockets",
    },
    WeaponTypeData {
        what_uses: UnitType::Zerg_Devourer,
        max_range: 192,
        targets_org_or_mech: false,
        damage_type: DamageType::Explosive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::Zerg_Flyer_Attacks,
        targets_terrain: false,
        damage_amount: 25,
        explosion_type: ExplosionType::Corrosive_Acid,
        damage_cooldown: 100,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 2,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Corrosive_Acid",
    },
    WeaponTypeData {
        what_uses: UnitType::Protoss_Dark_Archon,
        max_range: 256,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::Mind_Control,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Upgrade_60,
        targets_terrain: true,
        damage_amount: 8,
        explosion_type: ExplosionType::Mind_Control,
        damage_cooldown: 22,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Mind_Control",
    },
    WeaponTypeData {
        what_uses: UnitType::Protoss_Dark_Archon,
        max_range: 320,
        targets_org_or_mech: false,
        damage_type: DamageType::Ignore_Armor,
        tech: TechType::Feedback,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Upgrade_60,
        targets_terrain: true,
        damage_amount: 8,
        explosion_type: ExplosionType::Feedback,
        damage_cooldown: 22,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Feedback",
    },
    WeaponTypeData {
        what_uses: UnitType::Terran_Medic,
        max_range: 288,
        targets_org_or_mech: false,
        damage_type: DamageType::Independent,
        tech: TechType::Optical_Flare,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Upgrade_60,
        targets_terrain: false,
        damage_amount: 8,
        explosion_type: ExplosionType::Optical_Flare,
        damage_cooldown: 22,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Optical_Flare",
    },
    WeaponTypeData {
        what_uses: UnitType::Protoss_Dark_Archon,
        max_range: 320,
        targets_org_or_mech: false,
        damage_type: DamageType::Independent,
        tech: TechType::Maelstrom,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Upgrade_60,
        targets_terrain: true,
        damage_amount: 0,
        explosion_type: ExplosionType::Maelstrom,
        damage_cooldown: 1,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Maelstrom",
    },
    WeaponTypeData {
        what_uses: UnitType::Zerg_Lurker,
        max_range: 192,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Zerg_Missile_Attacks,
        targets_terrain: false,
        damage_amount: 20,
        explosion_type: ExplosionType::Enemy_Splash,
        damage_cooldown: 37,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 2,
        outer_splash_radius: 20,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 20,
        inner_splash_radius: 20,
        name: "Subterranean_Spines",
    },
    WeaponTypeData {
        what_uses: UnitType::None,
        max_range: 0,
        targets_org_or_mech: false,
        damage_type: DamageType::None,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::None,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::None,
        damage_cooldown: 0,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Invalid",
    },
    WeaponTypeData {
        what_uses: UnitType::Protoss_Dark_Templar,
        max_range: 15,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Protoss_Ground_Weapons,
        targets_terrain: false,
        damage_amount: 40,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 30,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 3,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Warp_Blades",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Samir_Duran,
        max_range: 192,
        targets_org_or_mech: false,
        damage_type: DamageType::Concussive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Terran_Infantry_Weapons,
        targets_terrain: false,
        damage_amount: 25,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 22,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "C_10_Canister_Rifle_Samir_Duran",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Infested_Duran,
        max_range: 192,
        targets_org_or_mech: false,
        damage_type: DamageType::Concussive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Terran_Infantry_Weapons,
        targets_terrain: false,
        damage_amount: 25,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 22,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "C_10_Canister_Rifle_Infested_Duran",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Artanis,
        max_range: 128,
        targets_org_or_mech: false,
        damage_type: DamageType::Normal,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Protoss_Air_Weapons,
        targets_terrain: false,
        damage_amount: 20,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 30,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Dual_Photon_Blasters_Artanis",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Artanis,
        max_range: 128,
        targets_org_or_mech: false,
        damage_type: DamageType::Explosive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 2,
        upgrade_type: UpgradeType::Protoss_Air_Weapons,
        targets_terrain: false,
        damage_amount: 28,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 22,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Anti_Matter_Missiles_Artanis",
    },
    WeaponTypeData {
        what_uses: UnitType::Hero_Alexei_Stukov,
        max_range: 192,
        targets_org_or_mech: false,
        damage_type: DamageType::Concussive,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: true,
        damage_factor: 1,
        upgrade_type: UpgradeType::Terran_Infantry_Weapons,
        targets_terrain: false,
        damage_amount: 30,
        explosion_type: ExplosionType::Normal,
        damage_cooldown: 22,
        targets_air: true,
        targets_organic: false,
        damage_bonus: 1,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "C_10_Canister_Rifle_Alexei_Stukov",
    },
    WeaponTypeData {
        what_uses: UnitType::None,
        max_range: 0,
        targets_org_or_mech: false,
        damage_type: DamageType::None,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::None,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::None,
        damage_cooldown: 0,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Invalid",
    },
    WeaponTypeData {
        what_uses: UnitType::None,
        max_range: 0,
        targets_org_or_mech: false,
        damage_type: DamageType::None,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::None,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::None,
        damage_cooldown: 0,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Invalid",
    },
    WeaponTypeData {
        what_uses: UnitType::None,
        max_range: 0,
        targets_org_or_mech: false,
        damage_type: DamageType::None,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::None,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::None,
        damage_cooldown: 0,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Invalid",
    },
    WeaponTypeData {
        what_uses: UnitType::None,
        max_range: 0,
        targets_org_or_mech: false,
        damage_type: DamageType::None,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::None,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::None,
        damage_cooldown: 0,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Invalid",
    },
    WeaponTypeData {
        what_uses: UnitType::None,
        max_range: 0,
        targets_org_or_mech: false,
        damage_type: DamageType::None,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::None,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::None,
        damage_cooldown: 0,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Invalid",
    },
    WeaponTypeData {
        what_uses: UnitType::None,
        max_range: 0,
        targets_org_or_mech: false,
        damage_type: DamageType::None,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::None,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::None,
        damage_cooldown: 0,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Invalid",
    },
    WeaponTypeData {
        what_uses: UnitType::None,
        max_range: 0,
        targets_org_or_mech: false,
        damage_type: DamageType::None,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::None,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::None,
        damage_cooldown: 0,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Invalid",
    },
    WeaponTypeData {
        what_uses: UnitType::None,
        max_range: 0,
        targets_org_or_mech: false,
        damage_type: DamageType::None,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::None,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::None,
        damage_cooldown: 0,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Invalid",
    },
    WeaponTypeData {
        what_uses: UnitType::None,
        max_range: 0,
        targets_org_or_mech: false,
        damage_type: DamageType::None,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::None,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::None,
        damage_cooldown: 0,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Invalid",
    },
    WeaponTypeData {
        what_uses: UnitType::None,
        max_range: 0,
        targets_org_or_mech: false,
        damage_type: DamageType::None,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::None,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::None,
        damage_cooldown: 0,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Invalid",
    },
    WeaponTypeData {
        what_uses: UnitType::None,
        max_range: 0,
        targets_org_or_mech: false,
        damage_type: DamageType::None,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::None,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::None,
        damage_cooldown: 0,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Invalid",
    },
    WeaponTypeData {
        what_uses: UnitType::None,
        max_range: 0,
        targets_org_or_mech: false,
        damage_type: DamageType::None,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::None,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::None,
        damage_cooldown: 0,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Invalid",
    },
    WeaponTypeData {
        what_uses: UnitType::None,
        max_range: 0,
        targets_org_or_mech: false,
        damage_type: DamageType::None,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 1,
        upgrade_type: UpgradeType::None,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::None,
        damage_cooldown: 0,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Invalid",
    },
    WeaponTypeData {
        what_uses: UnitType::None,
        max_range: 0,
        targets_org_or_mech: false,
        damage_type: DamageType::None,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 0,
        upgrade_type: UpgradeType::None,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::None,
        damage_cooldown: 0,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "None",
    },
    WeaponTypeData {
        what_uses: UnitType::Unknown,
        max_range: 0,
        targets_org_or_mech: false,
        damage_type: DamageType::Unknown,
        tech: TechType::None,
        targets_own: false,
        min_range: 0,
        targets_ground: false,
        damage_factor: 0,
        upgrade_type: UpgradeType::Unknown,
        targets_terrain: false,
        damage_amount: 0,
        explosion_type: ExplosionType::Unknown,
        damage_cooldown: 0,
        targets_air: false,
        targets_organic: false,
        damage_bonus: 0,
        outer_splash_radius: 0,
        targets_non_robotic: false,
        targets_non_building: false,
        targets_mechanical: false,
        median_splash_radius: 0,
        inner_splash_radius: 0,
        name: "Unknown",
    },
];
impl WeaponType {
    fn d(&self) -> &WeaponTypeData {
        &WEAPON_TYPE_DATA[*self as usize]
    }
    pub fn what_uses(&self) -> UnitType {
        self.d().what_uses
    }
    pub fn max_range(&self) -> i32 {
        self.d().max_range
    }
    pub fn targets_org_or_mech(&self) -> bool {
        self.d().targets_org_or_mech
    }
    pub fn damage_type(&self) -> DamageType {
        self.d().damage_type
    }
    pub fn get_tech(&self) -> TechType {
        self.d().tech
    }
    pub fn targets_own(&self) -> bool {
        self.d().targets_own
    }
    pub fn min_range(&self) -> i32 {
        self.d().min_range
    }
    pub fn targets_ground(&self) -> bool {
        self.d().targets_ground
    }
    pub fn damage_factor(&self) -> i32 {
        self.d().damage_factor
    }
    pub fn upgrade_type(&self) -> UpgradeType {
        self.d().upgrade_type
    }
    pub fn targets_terrain(&self) -> bool {
        self.d().targets_terrain
    }
    pub fn damage_amount(&self) -> i32 {
        self.d().damage_amount
    }
    pub fn explosion_type(&self) -> ExplosionType {
        self.d().explosion_type
    }
    pub fn damage_cooldown(&self) -> i32 {
        self.d().damage_cooldown
    }
    pub fn targets_air(&self) -> bool {
        self.d().targets_air
    }
    pub fn targets_organic(&self) -> bool {
        self.d().targets_organic
    }
    pub fn damage_bonus(&self) -> i32 {
        self.d().damage_bonus
    }
    pub fn outer_splash_radius(&self) -> i32 {
        self.d().outer_splash_radius
    }
    pub fn targets_non_robotic(&self) -> bool {
        self.d().targets_non_robotic
    }
    pub fn targets_non_building(&self) -> bool {
        self.d().targets_non_building
    }
    pub fn targets_mechanical(&self) -> bool {
        self.d().targets_mechanical
    }
    pub fn median_splash_radius(&self) -> i32 {
        self.d().median_splash_radius
    }
    pub fn inner_splash_radius(&self) -> i32 {
        self.d().inner_splash_radius
    }
    pub fn name(&self) -> &'static str {
        self.d().name
    }
}

#[cfg(test)]
mod test {
    use super::*;

    #[test]
    fn verify_weapon_types() {
        assert_eq!(WEAPON_TYPE_DATA[59].name, "Dark_Swarm");
        assert_eq!(WEAPON_TYPE_DATA[71].name, "Psionic_Shockwave_TZ_Archon");
        assert_eq!(WEAPON_TYPE_DATA[76].name, "Anti_Matter_Missiles_Mojo");
        assert_eq!(WEAPON_TYPE_DATA[83].name, "Stasis_Field");
        assert_eq!(WEAPON_TYPE_DATA[130].name, "None");
    }
}