use utf8;
use strict;

my $V = v5.0.13;
my $RT = 1.4;  # real-time speed factor to faster

my $hots = do 'sc-units-hots.inc.pl' or die $!;
my %unit;
for my $row (@{$hots}) {
	ref $row eq 'HASH' or next;
	for ($row, @{ $row->{special} }, @{ $row->{upgrade} }) {
		$_ *= $RT for $_->{speed} // ();
		$_ /= $RT for $_->{build} // (), $_->{transform} // (), $_->{warp} // (), $_->{cooldown} // ();
		$_->{cooldown} and $_->{cooldown} /= $RT for @{ $_->{attack} // [] };
	}
	$unit{ lc $row->{name} =~ tr/ /_/r } = $row;
}

[
sprintf('patch %vd', $V),

# protoss

$unit{probe},

$unit{photon_cannon},

{
	%{ $unit{mothership} },
	pop => $V ge v5.0.12 ? 6 : 8,
	min => $V ge v5.0.12 ? 300 : 400,
	gas => $V ge v5.0.12 ? 300 : 400,
	build => $V ge v5.0.12 ? 79 : 114,
	size => $V ge v5.0.12 ? 2.475 : 2.75,
	hp => $V ge v5.0.12 ? 250 : 350,
	shield => $V ge v5.0.12 ? 250 : 350,
	speed => $V ge v5.0.12 ? 2.83 : 2.62, # rotation speed also increased
	energy => $V ge v5.0.12 ? 0 : 50,
	special => [
		{
			%{ $unit{mothership}->{special}->[0] }, # cf
			$V lt v5.0.12 ? () : (
				cooldown => 50,
				duration => 20,
				desc => $unit{mothership}->{special}->[0]->{desc} . ' for 20s',
			),
		},
		{
			%{ $unit{mothership}->{special}->[1] }, # mr
			cost => $V ge v5.0.12 ? 0 : 100,
			cooldown => $V ge v5.0.12 ? 89 : 0,
			radius => $V ge v5.0.12 ? 5 : 6.5,
		},
		{
			%{ $unit{mothership}->{special}->[2] }, # tw
			desc => $V lt v4.11.0 ? 'create a temporal field which slows ground units by 50%' :
			        $V lt v5.0.12 ? 'create a temporal field which slows ground and air units by 50%' :
			                        'create a temporal field which slows ground and air units by 40%',
			cost => $V ge v5.0.12 ? 0 : 100,
			cooldown => $V ge v5.0.12 ? 60 : 0,
			radius => $V ge v5.0.12 ? 3.75 : 4,
			delay => $V ge v5.0.12 ? .71 : 1.79,
		},
	],
},

{
	%{ $unit{nexus} },
	attack => [],
	energy => 50,
	capacity => 200,
	special => [
		$unit{nexus}->{special}->[0], # chrono boost
		{
			name => $V lt v4.7.1 ? 'Mass Recall' : 'Strategic Recall',
			abbr => 'sr',
			desc => 'recalls units owned by the player in the target area to the Nexus',
			cost => 50,
			cooldown => $V lt v4.7.1 || $V ge v4.10.1 ? 130 : 85,
			radius => $V lt v4.7.1 ? 6.5 : 2.5,
			duration => 3.6, # +.7 warp in
		},
		$V lt v4.12.0 ? () : {
			name => 'Battery Overcharge',
			abbr => 'bo',
			desc => sprintf(
				'increase target Shield Battery restoration rate by %d%% and function without consuming energy for 14s',
				$V ge v5.0.11 ? 50 : 100,
			),
			cost => 50,
			duration => 14,
			cooldown => 60, # shared by all nexuses
			range => 8, # within any friendly nexus
		},
	],
},

{
	%{ $unit{zealot} },
	special => [
		{
			name => 'Charge',
			abbr => 'ch',
			desc => 'on attack, increases movement speed to 8.47 for 2.5s and deals 8 damage on hit',
			min => 100, # changed in 3.14.0
			gas => 100,
			build => 100,
			speed => .5,
			range => 4,
			duration => 2.5,
			cooldown => 7,
		},
	],
	upgrade => [
		{
			name => 'Charge',
			speed => $V lt v4.11.0 ? .98 : 1.57,
		},
	],
},

{
	%{ $unit{sentry} },
	build => $V ge v5.0.11 ? 22.9 : 26.4,
	speed => $V ge v5.0.11 ? 3.5 : 3.15,
	attr => {
		%{ $unit{sentry}->{attr} },
		light => $V ge v5.0.13 ? 0 : 1,
	},
	attack => [
		{
			%{ $unit{sentry}->{attack}->[0] }, # beam
			bonus => {
				$V ge v5.0.13 ? (shields => 4) : (),
			},
		},
	],
	special => [
		$unit{sentry}->{special}->[0], # ff
		{
			%{ $unit{sentry}->{special}->[1] }, # gs
			radius => $V lt v4.7.1 ? 4 : 4.5,
			duration => $V ge v5.0.12 ? 12.86 : 10.71,
		},
		{
			%{ $unit{sentry}->{special}->[2] }, # hl
			cost => $V lt v4.7.1 ? 100 : 75,
		},
	],
},

{
	%{ $unit{stalker} },
	attack => [
		{
			%{ $unit{stalker}->{attack}->[0] }, # particle disruptors
			damage => 13,
			bonus => {
				armored => 5,
				-armored => 1,
			},
			cooldown => 1.34,
		},
	],
},

{
	race => 'protoss',
	cat => 'gateway',
	name => 'Adept',
	pop => 2,
	min => 100,
	gas => 25,
	build => $V lt v4.8.2 ? 27 : 30,
	warp => 20,
	size => 1,
	cargo => 2,
	armor => 1,
	hp => 70,
	shield => 70,
	attr => {
		light => 1,
		organic => 1,
	},
	attack => [
		{
			anti => 1,
			name => undef, #TODO
			damage => 10,
			upgrade => 1,
			bonus => {
				light => 12,
				-light => 1,
			},
			type => 'projectile', #XXX: assumption
			cooldown => 1.61,
			range => 4,
		},
	],
	speed => 3.5,
	sight => 9,
	special => [
		{
			name => 'Psionic Transfer',
			abbr => 'pt',
			desc => 'project shade, teleport after 7s',
			cooldown => 11,

			alt => 'Shade',
			build => 0,
			size => 0,
			cargo => 0,
			hp => -1,
			attack => [], #TODO: indicate diff from parent
			speed => 5, #XXX: faster than 3.5
			range => 7, #XXX: calculate from speed
			sight => 4,
		},
	],
	upgrade => [
		{
			name => 'Resonating Glaives',
			min => 100,
			gas => 100,
			build => 100,
			attack => [
				{
					cooldown => $V lt v4.11.0 || $V ge v4.11.3 ? -.5 : -.6, # +45%/60%
				},
			],
		},
	],
},

{
	%{ $unit{high_templar} },
	speed => $V ge v5.0.11 ? 2.82 : 2.63,
	attack => [
		{
			anti => 1,
			name => '?', #XXX
			damage => 4,
			upgrade => 1,
			cooldown => 1.25,
			range => 6,
		},
	],
	special => [
		{
			$unit{high_templar}->{special}->[0], # fb
			range => $V lt v4.12.0 ? 9 : 10,
		},
		$unit{high_templar}->{special}->[1], # ps
	],
},

{
	%{ $unit{dark_templar} },
	special => [
		$unit{dark_templar}->{special}->[0], # cl
		{
			name => 'Shadow Stride',
			abbr => 'bl',
			desc => sprintf('teleport to visible location, %.2fs attack delay afterwards', $V ge v5.0.11 ? .71 : .75),
			min => 100,
			gas => 100,
			build => $V lt v4.7.1 ? 121 : 100,
			range => 8,
			cooldown => $V lt v4.7.1 ? 21 : 14,
		},
	],
},

$unit{archon},

{
	%{ $unit{observer} },
	build => $V ge v5.0.13 ? 17.9 : 21.4,
	shield => $V ge v5.0.13 ? 30 : 20,
	speed => $V ge v5.0.11 ? 2.82 : $V lt v4.8.2 || $V ge v4.11.0 ? 2.63 : 3.01,
	size => $V ge v5.0.13 ? 1 : $V ge v5.0.11 ? 1.1 : 1,
	special => [
		$unit{observer}->{special}->[0], # cloak
		{
			name => 'Surveillance Mode',
			abbr => 'sm',
			desc => 'gain 25% vision while immobilized',
			speed => 0,
			sight => 2.75, # +25%
			transform => .54,
		},
	],
},

{
	%{ $unit{warp_prism} },
	hp => 80,
	min => $V lt v4.10.1 ? 200 : 250,
	range => $V lt v4.10.1 ? 6 : 5, # pickup
	upgrade => [
		{
			%{ $unit{warp_prism}->{special}->[0] }, # gravitic drive
			speed => 1.23,
		},
	],
},

{
	%{ $unit{immortal} },
	min => $V ge v4.8.2 ? 275 : 250,
	special => [
		{
			name => 'Barrier',
			abbr => 'br',
			desc => 'block initial damage, then absorb up to 100 damage for 2s',
			duration => 2,
			cooldown => $V ge v3.8.0 ? 32 : 43,
		},
	],
},

{
	%{ $unit{colossus} },
	attack => [
		{
			%{ $unit{colossus}->{attack}->[0] }, # thermal lances
			damage => 10,
			upgrade => 1,
			bonus => {
				light => 5,
				-light => 1,
			},
#			cooldown => 1.18, #XXX
		},
	],
},

{
	race => 'protoss',
	cat => 'robotic',
	name => 'Disruptor',
	pop => $V ge v5.0.12 ? 4 : 3,
	min => 150,
	gas => 150,
	build => 36,
	size => $V ge v5.0.12 ? 1.25 : 1, # much larger model
	cargo => 4,
	armor => 1,
	hp => 100,
	shield => 100,
	attr => {
		armored => 1,
		mech => 1,
	},
	attack => [
		{
			anti => 1,
			name => 'Purification Nova',
			damage => 145,
			bonus => {
				shields => 55,
			},
			type => 'trans', #TODO: indicate
			splash => $V ge v5.0.11 ? 1.375 : 1.5,
			cooldown => 14.3,
			range => 13, # 2s
		},
	],
	speed => 3.15,
	sight => 9,
},

$unit{phoenix},

{
	%{ $unit{void_ray} },
	min => $V lt v5.0.9 && $V ge v5.0.2 ? 200 : 250,
	speed => $V lt v5.0.2 ? 3.5 : 3.85,
	build => $V lt v5.0.9 && $V ge v5.0.2 ? 37 : 43,
	upgrade => [
		{
			name => 'Flux Vanes',
			min => 100,
			gas => 100,
			build => 57,
			speed => $V lt v5.0.2 ? 1.15 : .798,
		},
	],
},

{
	%{ $unit{oracle} },
	build => 37,
	attr => {
		$V lt v4.8.2 ? 'light' : 'armored' => 1,
		mech => 1,
		psionic => 1,
		flying => 1,
	},
	attack => [
		{
			%{ $unit{oracle}->{attack}->[0] }, # pulsar beam
			bonus => {
				light => 7,
			},
		},
	],
	special => [
		{
			name => 'Revelation',
			abbr => 'rv',
			desc => 'hit enemy units and buildings are revealed for ½ minute',
			cost => $V lt v4.12.0 ? 50 : 25,
			range => 9,
			cooldown => $V lt v4.12.0 ? 2 : 10,
			duration => $V lt v4.12.0 ? 30 : $V lt v5.0.2 ? 15 : 20,
			radius => 6,
			detect => 1,
		},
		{
			name => 'Stasis Ward',
			abbr => 'sw',
			desc => 'places ward for 170s',
			cost => 50,
			range => 6,
			build => 3.58,
			duration => 170,
			alt => 'Stasis Ward',
			hp => 30,
			shield => 30,
			armor => 0,
			attr => {
				light => 1,
				structure => 1,
			},
			sight => $V ge v5.0.12 ? 7 : 4,
			speed => 0,
			special => [
				{
					name => 'Permanent Cloak',
					abbr => 'cl',
					desc => 'cloaked at all times',
					duration => -1,
				},
				{
					name => 'Stasis Trap',
					abbr => 'st',
					desc => 'triggered by nearby ground units, trapping them for 21½s',
				},
			],
		},
	],
},

{
	%{ $unit{tempest} },
	hp => $V lt v4.7.1 ? 300 : $V lt v4.11.0 ? 150 : 200,
	shield => $V lt v4.7.1 ? 150 : $V lt v4.11.0 ? 125 : 100,
	min => $V lt v4.7.1 ? 300 : 250,
	gas => $V lt v4.7.1 ? 200 : 175,
	pop => $V lt v4.7.1 ? 6 : 5,
	speed => $V lt v4.7.1 ? 2.63 : $V lt v4.8.2 ? 3.5 : 3.15,
	# acceleration increased in v5.0.12
	size => $V ge v5.0.12 ? 2.25 : 2.5,
	attack => [
		{
			%{ $unit{tempest}->{attack}->[0] }, # kinetic overload
			bonus => {
				massive => 22,
				-massive => 2,
			},
			range => $V lt v4.11.0 ? 15 : 14,
		},
		{
			%{ $unit{tempest}->{attack}->[1] }, # resonance coil
			bonus => {
				structure => 0,
			},
			damage => 40,
			upgrade => 4,
		},
	],
	upgrade => [
		$V lt v5.0.2 ? () : {
			name => 'Tectonic Destabilizers',
			attack => [
				{},
				{
					bonus => {
						structure => 40,
					},
				},
			],
			min => 150,
			gas => 150,
			build => 100,
		},
	],
},

{
	%{ $unit{carrier} },
	hp => $V lt v4.7.1 ? 250 : 300,
	build => $V lt v4.7.1 ? 86 : 64,
	special => [
		{
			%{ $unit{carrier}->{special}->[0] }, # interceptor
			min => 5,
			build => $V lt v4.7.1 ? 6 : $V lt v4.10.1 ? 11 : 9,
		},
	],
	$V lt v4.7.1 ? () : (upgrade => []), # remove Graviton Catapult
},

# terran

$unit{scv},
$unit{mule},
$unit{missile_turret},
$unit{planetary_fortress},

$unit{marine},

{
	%{ $unit{marauder} },
	attack => [
		{
			%{ $unit{marauder}->{attack}->[0] }, # punisher grenades
			count => $V lt v4.3.0 ? 2 : 1,
			damage => $V lt v4.3.0 ? 5 : 10,
			upgrade => 1,
			bonus => {
				armored => $V lt v4.3.0 ? 5 : 10,
				-armored => $V lt v4.3.0 ? 0 : 1,
			},
		},
	],
},

{
	%{ $unit{reaper} },
	build => 32,
},

{
	%{ $unit{ghost} },
	min => 150,
	gas => 125,
	speed => 3.94,
	special => [
		{
			# replaces Sniper Round
			name => 'Steady Targeting',
			abbr => 'st',
			desc => ($V ge v5.0.12 ? '130 damage (+40 psionic)' : '170 damage') .
				' ignoring armor to a biological unit after 1.43s without damage',
			cost => 50,
			range => 10, # kept until 14
			duration => 1.43,
		},
		{
			%{ $unit{ghost}->{special}->[1] }, # emp round
			radius => $V ge v5.0.12 || $V lt v4.10.1 ? 1.5 : $V lt v5.0.11 ? 2 : 1.75,
		},
		$unit{ghost}->{special}->[2], # cloak
		$unit{ghost}->{special}->[3], # tac nuke strike
	],
	upgrade => [
		$V ge v5.0.11 || $V lt v4.10.1 ? () : {
			name => 'Enhanced Shockwaves',
			min => 150,
			gas => 150,
			build => 79,
			special => [
				{},
				{ radius => .5 }, # emp
				{},
				{},
			],
		},
	],
},

{
	%{ $unit{hellion} },
	attack => [
		{
			%{ $unit{hellion}->{attack}->[0] }, # infernal flamethrower
			bonus => {
				light => 5,
				-light => 0,
			},
		},
	],
	#TODO smart servos
},

{
	%{ $unit{hellbat} },
	special => [
		$unit{hellbat}->{special}->[0], # Hellion Mode
		{
			name => 'Smart Servos',
			min => 100,
			gas => 100,
			build => 79,
			transform => -1.43, # halve #TODO: alter special duration?
		},
	],
	upgrade => [
		{
			%{ $unit{hellbat}->{upgrade}->[0] }, # Pre-Igniter
			attack => [
				{
					bonus => {
						light => 12,
						-light => $V ge v5.0.12 ? 0 : 1,
					},
				},
			],
		},
	],
},

{
	%{ $unit{widow_mine} },
	build => 21,
	attack => [
		{
			%{ $unit{widow_mine}->{attack}->[0] }, # Sentinel Missiles
			splash => $V ge v5.0.13 ? 1.5 : 1.75, # radius
			bonus => {
				shields => 25,
			},
			transform => $V lt v5.0.9 ? .71 : 1.07,
		},
	],
	upgrade => [
		{
			%{ $unit{widow_mine}->{upgrade}->[0] }, # drilling claws
			desc => 'halves burrow/unburrow time from upto 2½/1 to 1½/½ seconds' .
				($V ge v5.0.13 && ', and cloaks while reloading'),
		},
	],
},

{
	%{ $unit{siege_tank} },
	hp => 175,
	special => [
		{
			%{ $unit{siege_tank}->{special}->[0] }, # siege mode
			attack => [
				{
					%{ $unit{siege_tank}->{special}->[0]->{attack}->[0] }, # shock cannon
					damage => 40,
					upgrade => 4,
					bonus => {
						armored => 30,
						-armored => 1,
					},
					cooldown => 2.14,
				},
			],
		},
	],
},

{
	race => 'terran',
	cat => 'factory',
	name => 'Cyclone',
	pop => 3,
	min => $V ge v5.0.12 ? 125 : 150,
	gas => $V ge v5.0.12 ? 50 : 100,
	build => 32,
	size => 1.5,
	cargo => $V ge v5.0.12 ? 2 : 3,
	armor => $V ge v5.0.12 ? 0 : 1,
	hp => $V ge v5.0.13 ? 130 : $V ge v5.0.12 ? 110 : $V ge v4.7.1 ? 120 : 180,
	attr => {
		armored => 1,
		mech => 1,
	},
	attack => [
		{
			anti => 1,
			name => $V lt v4.7.1 ? 'Tornado Blaster' : 'Typhoon Missile Pod',
			damage => $V ge v5.0.12 ? 11 : $V ge v4.7.1 ? 18 : 3,
			upgrade => $V lt v4.7.1 ? 1 : 2,
			bonus => $V ge v4.7.1 ? {} : {
				armored => $V ge v5.0.12 ? 0 : 2,
				-armored => 0,
				mech => $V ge v5.0.12 ? 3 : 0,
			},
			cooldown => $V ge v5.0.13 ? .58 : $V ge v5.0.12 ? .481 : $V ge v4.7.1 ? .71 : .1,
			range => $V ge v5.0.12 || $V lt v4.7.1 ? 6 : 5,
		},
	],
	speed => $V ge v5.0.12 ? 3.94 : $V ge v4.7.1 ? 4.73 : 4.13,
	sight => 11,
	special => [
		{
			name => 'Lock On',
			abbr => 'lo',
			desc => (
				$V ge v5.0.12 ? 'attack single target while within 9 range' :
				$V ge v5.0.11 ? 'deal 400 damage (600 after upgrade) over 14 seconds' :
				$V ge v4.7.1 ? 'deal 400 damage (double to armored after upgrade) over 14 seconds' :
				'target air for 160 damage ignoring armor while visible and within 15 range'
			),
			range => $V lt v5.0.12 ? 7 : 6,
			duration => $V lt v5.0.12 ? 14.3 : 0,
			cooldown => $V ge v5.0.13 ? 2.86 : $V ge v5.0.12 ? 0 : 4,
		},
		$V ge v4.7.1 ? () : {
			name => 'Rapid Fire Launchers',
			abbr => 'rf',
			desc => 'rapid first 12 Lock On shots',
			min => 75,
			gas => 75,
			build => 79,
		},
	],
	upgrade => [
		$V ge v5.0.12 || $V lt v4.7.1 ? () : {
			name => 'Mag-Field Accelerator',
			min => 100,
			gas => 100,
			build => $V lt v4.8.2 ? 79 : 100,
			desc => 'increases lock-on damage by '.($V ge v5.0.11 ? '50%' : '100% vs armored'),
		},
		$V lt v5.0.12 ? () : {
			name => 'Hurricane Engines',
			speed => .79,
			min => 100,
			gas => 100,
			build => 100,
		},
	],
},

{
	%{ $unit{thor} },
	armor => $V ge v3.14.0 && $V lt v4.7.1 ? 2 : 1,
	attack => [
		$unit{thor}->{attack}->[0], # thor's hammer
		$unit{thor}->{attack}->[1], # javelin missiles
		{
			%{ $unit{thor}->{attack}->[2] }, # punisher cannons
			name => 'High Impact Payload',
			damage => $V lt v4.7.1 ? 35 : $V lt v4.11.0 ? 40 : 25,
			upgrade => 3,
			bonus => {
				$V lt v4.7.1 ? 'armored' : 'massive' => $V lt v4.11.0 ? 15 : 10,
				$V lt v4.7.1 ? '-armored' : '-massive' => 2,
			},
			cooldown => $V lt v4.7.1 ? 2.14 : $V lt v4.11.0 ? 1.71 : .9,
			range => $V lt v4.8.2 ? 10 : 11,
		},
	],
	#TODO smart servos
},

{
	%{ $unit{viking} },
	hp => $V lt v4.3.0 ? 125 : 135,
},

{
	%{ $unit{medivac} },
	special => [
		$unit{medivac}->{special}->[0], # heal
		{
			%{ $unit{medivac}->{special}->[1] }, # ignite afterburners
			desc => 'boost speed and accelleration to 4.25 for 8s',
			speed => 5.94,
			duration => $V lt v4.7.1 ? 6.43 : 4.29,
			cooldown => $V lt v4.11.0 ? 20 : 14,
			-cooldown => 9,
		},
	],
	upgrade => [
		$V ge v5.0.12 ? {
			name => 'Caduceus Reactor',
			desc => 'double energy regeneration rate',
			min => 100,
			gas => 100,
			build => 53.57,
		} : {
			name => 'Rapid Reignition System',
			min => 100,
			gas => 100,
			build => 57,
			speed => .63,
		},
	],
},

{
	race => 'terran',
	cat => 'starport',
	name => 'Liberator',

	pop => 3,
	min => 150,
	gas => $V ge v5.0.11 ? 125 : 150,
	build => 43,
	size => 1.5,
	armor => 0,
	hp => 180,
	attr => {
		armored => 1,
		mech => 1,
		flying => 1,
	},
	attack => [
		{
			anti => 2,
			name => 'Lexington Rockets',
			damage => 5,
			upgrade => 1,
			type => 'projectile',
			cooldown => 1.29,
			count => 2,
			range => 5,
		},
	],
	special => [
		{
			name => 'Defender Mode',
			abbr => 'dm',
			transform => 2.88, # 1.46s to revert
			alt => 'Defender Liberator',
			attack => [
				{
					anti => 1,
					name => 'Concord Cannon',
					desc => 'within 5 diameter circle',
					damage => 75,
					upgrade => 5,
					cooldown => 1.14,
					range => 10,
				},
			],
			speed => 0,
			sight => 15, # only targeted area
			upgrade => [
				{
					name => 'Advanced Ballistics',
					min => 150,
					gas => 150,
					build => 79,
					attack => [
						{
							range => $V ge v5.0.13 ? 2 : $V ge v4.11.0 ? 3 : 4,
						},
					],
					sight => 4,
				},
			],
		},
	],
	speed => 4.72,
	sight => 10,
},

{
	%{ $unit{banshee} },
	speed => 3.85,
	upgrade => [
		{
			name => 'Hyperflight Rotors',
			speed => 1.4,
			min => $V ge v5.0.11 ? 125 : $V ge v4.7.1 ? 150 : 200,
			gas => $V ge v5.0.11 ? 125 : $V ge v4.7.1 ? 150 : 200,
			build => $V ge v5.0.11 ? 100 : 121.4,
		},
	],
},

{
	%{ $unit{raven} },
	gas => $V ge v5.0.11 ? 150 : 200,
	build => $V ge v5.0.11 ? 34.3 : 42.9,
	speed => $V lt v4.11.0 ? 3.85 : 4.13,
	upgrade => $V ge v5.0.11 ? [] : $unit{raven}->{upgrade}, # corvid reactor
	special => [
		{
			%{ $unit{raven}->{special}->[0] }, # auto-turret
			attack => [
				{
					anti => 3,
					name => '12 mm Gauss Cannon',
					damage => 18,
					cooldown => .57,
					range => 6,
				},
			],
			hp => $V ge v5.0.11 ? 100 : 150,
			armor => $V ge v5.0.11 ? 0 : 1,
			range => $V lt v4.3.0 ? 1 : 2,
			duration => $V ge v5.0.11 ? 7.9 : 10,
			upgrade => [
				$unit{raven}->{special}->[0]->{upgrade}->[0], # hi-sec auto tracking
				$unit{raven}->{special}->[0]->{upgrade}->[1], # structure armor
				# no more durable materials
			],
		},
		{
			name => 'Interference Matrix',
			abbr => 'im',
			desc => 'disable target mech or psionic unit rendering it unable to attack or cast',
			$V lt v5.0.12 ? () : (
				min => 50,
				gas => 50,
				build => 57.14,
			),
			cost => $V lt v4.11.0 ? 50 : 75,
			range => 9,
			duration => $V lt v4.11.0 ? 7.9 : 11,
		},
		{
			name => 'Anti-Armor Missile',
			abbr => 'aa',
			desc => sprintf('launches missile %s reduce armor by %d',
				$V lt v4.7.1 ? 'to do splash damage and' : 'to',
				$V ge v5.0.11 ? 2 : 3,
			),
			range => 10,
			size => 2.88,
			attack => [
				{
					damage => $V lt v4.3.0 ? 30 : $V lt v4.7.1 ? 15 : 0,
					splash => 1,
				},
			],
			cost => 75,
			duration => 21,
		},
	],
},

{
	%{ $unit{battlecruiser} },
	attack => [
		$unit{battlecruiser}->{attack}->[0], # ats laser
		{
			%{ $unit{battlecruiser}->{attack}->[1] }, # ata laser
			damage => $V lt v4.7.1 ? 6 : 5,
		},
	],
	special => [
		{
			name => 'Tactical Jump',
			abbr => 'tj',
			desc => 'warps to the target location after 5s (invulnerable after 1s)',
			duration => 4,
			cooldown => 71,
		},
		{
			%{ $unit{battlecruiser}->{special}->[0] }, # yc
			desc => '240 damage to a single target',
			attack => [
				{
					damage => 240,
				},
			],
			cost => undef,
			cooldown => 71,
		},
	],
	upgrade => [],
},

# zerg

$unit{drone},

{
	%{ $unit{queen} },
	attack => [
		$unit{queen}->{attack}->[0], # claws
		{
			%{ $unit{queen}->{attack}->[1] }, # acid spines
			range => $V lt v4.12.0 ? 8 : 7,
		},
	],
	range => 8,
},

{
	%{ $unit{overlord} },
	speed => .9023, # changed in 4.0.0
	# deceleration speed increased in v5.0.12
	upgrade => [
		{
			%{ $unit{overlord}->{upgrade}->[0] }, # carapace
			speed => ($V ge v5.0.12 ? 2.83 : 2.63)-.9023,
		},
		# ventral sacs became an individual mutation
	],
},

{
	race => 'zerg',
	cat => 'base',
	req => 'lair',
	name => 'Transporterlord',
	base => ['Overlord'],
	pop => -9,
	min => 100+25,
	gas => 25,
	build => 15,
	size => 0,
	cargo => -8,
	armor => 0,
	hp => 200,
	attr => {
		armored => 1,
		organic => 1,
		flying => 1,
	},
	speed => $V ge v5.0.13 ? 1.28 : $V ge v5.0.12 ? 1.099 : .9023,
	sight => 11,
	special => $unit{overlord}->{special}, # generate creep
	upgrade => [
		{
			%{ $unit{overlord}->{upgrade}->[0] }, # carapace
			speed => $V ge v5.0.13 ? 3-1.28 : $V ge v5.0.12 ? 2.83-1.099 : 2.63-.9023,
		},
	],
},

{
	%{ $unit{overseer} },
	special => [
		{
			name => 'Oversight Mode',
			abbr => 'om',
			desc => 'gain 25% vision while immobilized',
			speed => 0,
			sight => 11 * 1.25,
			transform => .54,
		},
		@{ $unit{overseer}->{special} }, # changeling, contaminate
	],
},

$unit{larva},
$unit{spine_crawler},

{
	%{ $unit{spore_crawler} },
	attack => [
		{
			%{ $unit{spore_crawler}->{attack}->[0] }, # seeker spores
			bonus => {
				organic => 15,
			},
		},
	],
	speed => (1.5),
	creep => 2.6,
},

$unit{zergling},

{
	%{ $unit{baneling} },
	min => 25,
	attack => [
		{
			%{ $unit{baneling}->{attack}->[0] }, # volatile burst
			damage => $V lt v4.12.0 ? 20 : $V lt v5.0.2 ? 18 : 15,
			bonus => {
				light => $V lt v4.12.0 ? 15 : $V lt v5.0.2 ? 17 : 20,
				-light => $V ge v5.0.12 ? 0 : 2,
				structure => 80,
				-structure => 5,
			},
			splash => 1,
			range => 0,
		},
	],
	upgrade => [
		{
			%{ $unit{baneling}->{upgrade}->[0] }, # centrifugal hooks
			$V ge v5.0.12 ? (
				min => 100,
				gas => 100,
				build => 71,
			) : (
				hp => 5,
			),
		},
	],
},

{
	%{ $unit{roach} },
	special => [
		{
			%{ $unit{roach}->{special}->[0] }, # rapid regeneration
			desc => 'regenerates health at 7 HP/s while burrowed',
		},
		{
			%{ $unit{roach}->{special}->[1] }, # tunneling claws
			min => $V lt v4.7.1 ? 150 : 100,
			gas => $V lt v4.7.1 ? 150 : 100,
			build => 79,
			desc => 'move while burrowed at speed of 2.8',
		},
	],
},

{
	race => 'zerg',
	cat => 'hatchery',
	name => 'Ravager',
	base => ['Roach'],
	pop => 3,
	min => 25,
	gas => 75,
	build => $V ge v5.0.11 ? 12.14 : 8.57+.36, # added max random
	size => 1.5,
	cargo => 4,
	armor => 1,
	hp => 120,
	attr => {
		organic => 1,
	},
	attack => [
		{
			anti => 1,
			name => '?',
			damage => 16,
			upgrade => 2,
			type => 'projectile',
			cooldown => 1.14,
			range => 6,
		},
	],
	speed => 3.85,
	creep => 1.3,
	sight => 9,
},

{
	%{ $unit{hydralisk} },
	hp => 90,
	upgrade => [
		{
			%{ $unit{hydralisk}->{upgrade}->[0] }, # grooved spines
			min => $V ge v5.0.12 ? 75 : 100,
			gas => $V ge v5.0.12 ? 75 : 100,
			build => $V ge v5.0.12 ? 50 : 71,
			attack => [
				{
					range => 2,
				},
			],
		},
		{
			%{ $unit{hydralisk}->{upgrade}->[1] }, # muscular augments
			build => $V ge v5.0.12 ? 64 : 71,
		},
	],
},

{
	race => 'zerg',
	cat => 'lair',
	name => 'Lurker',
	base => ['Hydralisk'],
	pop => 3,
	min => 50,
	gas => 100,
	build => 18,
	cargo => 4,
	armor => 1,
	hp => 200,
	attr => {
		armored => 1,
		organic => 1,
	},
	attack => [
		{
			anti => 1,
			name => 'Spines',
			damage => 20,
			upgrade => 2,
			splash => 'line',
			cooldown => 1.43,
			range => $V lt v4.11.0 ? 9 : 8,
			bonus => {
				armored => 10,
				-armored => 1,
			},
		},
	],
	transform => 2.0,
	upgrade => [
		$V lt v4.11.0 ? () : {
			name => 'Seismic Spines',
			attack => [
				{
					range => 2,
				},
			],
			req => 'Hive',
			min => 150,
			gas => 150,
			build => 57,
		},
		{
			name => 'Adaptive Talons',
			desc => $V ge v5.0.12 ? 'halves burrow time from 2 seconds to 1' :
				'halves burrow time and increases movement speed',
			speed => $V ge v5.0.12 ? 0 : .413,
			transform => $V lt v5.0.9 ? .71 : 1.07,
			min => $V ge v5.0.12 ? 100 : 150,
			gas => $V ge v5.0.12 ? 100 : 150,
			build => 57,
		},
	],
	speed => 4.13,
	creep => 1.3,
	sight => 10,
},

{
	%{ $unit{infestor} },
	energy => $V ge v5.0.12 ? 75 : 50,
	special => [
		{
			%{ $unit{infestor}->{special}->[0] }, # neural parasite
			range => $V lt v4.11.0 ? 9 : 8,
		},
		{
			%{ $unit{infestor}->{special}->[1] }, # fungal growth
			desc => 'for 4 seconds, immobilize enemy units in target area and deal '.($V lt v5.0.12 ? 30 : 25).' damage',
			range => $V ge v5.0.13 || $V lt v5.0.12 ? 10 : 9,
		},
		{
			name => 'Microbial Shroud',
			abbr => 'ms',
			desc => 'reduce damage from air by 50% to ground units in target area',
			cost => $V lt v4.11.3 ? 100 : 75,
			min => $V lt v4.11.3 ? 150 : undef,
			gas => $V lt v4.11.3 ? 150 : undef,
			build => $V lt v4.11.3 ? 79 : undef,
			req => $V lt v4.11.3 ? 'Hive' : undef,
			range => 9,
			duration => 11,
			radius => $V lt v4.11.3 ? 3 : 3.5,
		},
		$V ge v4.11.0 ? () : {
			%{ $unit{infestor}->{special}->[2] }, # infested terran
			attack => [
				{
					%{ $unit{infestor}->{special}->[2]->{attack}->[0] }, # rockets
					cooldown => $V lt v4.10.1 ? .95 : 1.14,
				},
			],
		},
	],
	upgrade => [
		$V lt v5.0.12 ? $unit{infestor}->{upgrade}->[0] : (), # Pathogen Glands
	],
},

{
	% {$unit{nydus_worm} },
	min => $V lt v4.7.1 ? 100 : $V lt v4.11.0 ? 50 : 75, # Nydus Network costs 150/150
	gas => $V lt v4.7.1 ? 100 : $V lt v4.11.0 ? 50 : 75,
	cooldown => $V lt v4.11.0 ? 0 : 14, # Summon Nydus Worm
},

{
	%{ $unit{swarm_host} },
	gas => 75,
	special => [
		{
			%{ $unit{swarm_host}->{special}->[0] }, # locust
			hp => 50,
			upgrade => [], # no flying
		},
	],
	upgrade => [],
},

$unit{mutalisk},
$unit{corruptor},

{
	%{ $unit{brood_lord} },
	speed => $V ge v5.0.12 ? 2.62 : $V ge v5.0.11 ? 2.24 : 1.97,
	special => [
		{
			%{ $unit{brood_lord}->{special}->[0] }, # broodling
			attack => [
				{
					%{ $unit{brood_lord}->{special}->[0]->{attack}->[0] }, # claws
					cooldown => $V ge v5.0.12 ? .57 : .46,
				},
			],
			hp => $V ge v5.0.12 ? 20 : 30,
			speed => $V ge v5.0.12 ? 4.13 : 5.37,
		},
		$unit{brood_lord}->{special}->[1], # fz
	],
},

{
	%{ $unit{viper} },
	special => [
		$unit{viper}->{special}->[0], # bc
		$unit{viper}->{special}->[1], # ad
		{
			%{ $unit{viper}->{special}->[2] }, # consume
			desc => 'leaches '.($V ge v5.0.12 ? 150 : 200).' life of friendly building over 20s to gain 50 energy',
		},
	],
},

{
	%{ $unit{ultralisk} },
	min => $V ge v5.0.12 ? 275 : 300,
	armor => 2,
	size => $V ge v5.0.11 ? 1.75 : 2,
	upgrade => [
		$unit{ultralisk}->{upgrade}->[0], # chitinous plating
		{
			name => 'Anabolic Synthesis',
			min => 150,
			gas => 150,
			build => 42.85,
			speed => $V lt v4.8.2 ? .41 : .82,
			creep => -.215, # reverse speed increase
		},
	],
},

]
