units

package
v0.0.0-...-29f7fc1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 3, 2024 License: BSD-3-Clause Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var AllUnits []Unit = []Unit{}/* 196 elements not displayed */

Functions

func GetUnitBackgroundImage

func GetUnitBackgroundImage(banner data.BannerType, imageCache *util.ImageCache) (*ebiten.Image, error)

func MakeUpdateUnitColorsFunc

func MakeUpdateUnitColorsFunc(banner data.BannerType) util.ImageTransformFunc

Types

type Ability

type Ability struct {
	Ability AbilityType
	Value   float32
	// contains filtered or unexported fields
}

func MakeAbility

func MakeAbility(ability AbilityType) Ability

func MakeAbilityValue

func MakeAbilityValue(ability AbilityType, value float32) Ability

func (Ability) LbxFile

func (ability Ability) LbxFile() string

the file that stores the icon for this ability

func (Ability) LbxIndex

func (ability Ability) LbxIndex() int

the index in the lbx file for this icon

func (Ability) Name

func (ability Ability) Name() string

func (Ability) String

func (ability Ability) String() string

type AbilityType

type AbilityType int
const (
	AbilityNone AbilityType = iota
	// unit abilities
	AbilityArmorPiercing
	AbilityCauseFear
	AbilityColdImmunity
	AbilityConstruction
	AbilityCreateOutpost
	AbilityCreateUndead
	AbilityDeathGaze
	AbilityDeathImmunity
	AbilityDispelEvil
	AbilityDoomBoltSpell
	AbilityDoomGaze
	AbilityFireballSpell
	AbilityFireBreath
	AbilityFireImmunity
	AbilityFirstStrike
	AbilityForester
	AbilityHealer
	AbilityHealingSpell
	AbilityHolyBonus
	AbilityIllusion
	AbilityIllusionsImmunity
	AbilityImmolation
	AbilityInvisibility
	AbilityLargeShield
	AbilityLifeSteal
	AbilityLightningBreath
	AbilityLongRange
	AbilityMagicImmunity
	AbilityMeld
	AbilityMerging
	AbilityMissileImmunity
	AbilityMountaineer
	AbilityNegateFirstStrike
	AbilityNonCorporeal
	AbilityPathfinding
	AbilityPlaneShift
	AbilityPoisonImmunity
	AbilityPoisonTouch
	AbilityPurify
	AbilityRegeneration
	AbilityResistanceToAll
	AbilityScouting
	AbilityStoningGaze
	AbilityStoningImmunity
	AbilityStoningTouch
	AbilitySummonDemons
	AbilityToHit
	AbilityTransport
	AbilityTeleporting
	AbilityThrown
	AbilityWallCrusher
	AbilityWeaponImmunity
	AbilityWebSpell
	AbilityWindWalking

	// hero abilities
	AbilityAgility
	AbilitySuperAgility
	AbilityArcanePower
	AbilitySuperArcanePower
	AbilityArmsmaster
	AbilitySuperArmsmaster
	AbilityBlademaster
	AbilitySuperBlademaster
	AbilityCaster
	AbilityCharmed
	AbilityConstitution
	AbilitySuperConstitution
	AbilityLeadership
	AbilitySuperLeadership
	AbilityLegendary
	AbilitySuperLegendary
	AbilityLucky
	AbilityMight
	AbilitySuperMight
	AbilityNoble
	AbilityPrayermaster
	AbilitySuperPrayermaster
	AbilitySage
	AbilitySuperSage
)

type AttackSound

type AttackSound int
const (
	AttackSoundNone AttackSound = iota
	AttackSoundMonster1
	AttackSoundMonster2
	AttackSoundMonster3
	AttackSoundMonster4
	AttackSoundMonsterVsNormal
	AttackSoundMonster5
	AttackSoundNormal
	AttackSoundWeak
)

func (AttackSound) LbxIndex

func (sound AttackSound) LbxIndex() int

type Damage

type Damage int
const (
	DamageNone Damage = iota
	DamageRangedMagical
	DamageRangedPhysical
	DamageRangedBoulder
	DamageMeleePhysical
)

type ExperienceData

type ExperienceData interface {
	ToInt() int
	Name() string
}

type ExperienceInfo

type ExperienceInfo interface {
	HasWarlord() bool
	Crusade() bool
}

type Facing

type Facing int
const (
	FacingUp Facing = iota
	FacingUpRight
	FacingRight
	FacingDownRight
	FacingDown
	FacingDownLeft
	FacingLeft
	FacingUpLeft
)

type HeroExperienceLevel

type HeroExperienceLevel int
const (
	ExperienceHero HeroExperienceLevel = iota
	ExperienceMyrmidon
	ExperienceCaptain
	ExperienceCommander
	ExperienceChampionHero
	ExperienceLord
	ExperienceGrandLord
	ExperienceSuperHero
	ExperienceDemiGod
)

func GetHeroExperienceLevel

func GetHeroExperienceLevel(experience int, warlordRetort bool, crusade bool) HeroExperienceLevel

func (HeroExperienceLevel) ExperienceRequired

func (level HeroExperienceLevel) ExperienceRequired(warlordRetort bool, crusade bool) int

func (*HeroExperienceLevel) Name

func (hero *HeroExperienceLevel) Name() string

func (*HeroExperienceLevel) ToInt

func (hero *HeroExperienceLevel) ToInt() int

type MovementSound

type MovementSound int
const (
	MovementSoundNone MovementSound = iota
	MovementSoundMarching
	MovementSoundHorse
	MovementSoundFly
	MovementSoundBigSteps
	MovementSoundMerge
	MovementSoundShuffle
)

func (MovementSound) LbxIndex

func (sound MovementSound) LbxIndex() int

type NormalExperienceLevel

type NormalExperienceLevel int
const (
	ExperienceRecruit NormalExperienceLevel = iota
	ExperienceRegular
	ExperienceVeteran
	ExperienceElite
	// also needs either warlord retort or crusade enchantment
	ExperienceUltraElite
	// needs both warlord retort and crusade enchantment in play
	ExperienceChampionNormal
)

func GetNormalExperienceLevel

func GetNormalExperienceLevel(experience int, warlordRetort bool, crusade bool) NormalExperienceLevel

func (NormalExperienceLevel) ExperienceRequired

func (level NormalExperienceLevel) ExperienceRequired(warlordRetort bool, crusade bool) int

func (*NormalExperienceLevel) Name

func (level *NormalExperienceLevel) Name() string

func (*NormalExperienceLevel) ToInt

func (level *NormalExperienceLevel) ToInt() int

type OverworldUnit

type OverworldUnit struct {
	ExperienceInfo ExperienceInfo
	Unit           Unit
	MovesLeft      fraction.Fraction
	Banner         data.BannerType
	Plane          data.Plane
	X              int
	Y              int
	Id             uint64
	Health         int
	Patrol         bool
	// to get the level, use the conversion functions in experience.go
	Experience  int
	WeaponBonus data.WeaponBonus

	Enchantments []data.UnitEnchantment
}

func MakeOverworldUnit

func MakeOverworldUnit(unit Unit) *OverworldUnit

func MakeOverworldUnitFromUnit

func MakeOverworldUnitFromUnit(unit Unit, x int, y int, plane data.Plane, banner data.BannerType, experienceInfo ExperienceInfo) *OverworldUnit

func (*OverworldUnit) AddEnchantment

func (unit *OverworldUnit) AddEnchantment(enchantment data.UnitEnchantment)

func (*OverworldUnit) AddExperience

func (unit *OverworldUnit) AddExperience(amount int)

func (*OverworldUnit) AdjustHealth

func (unit *OverworldUnit) AdjustHealth(amount int)

func (*OverworldUnit) GetAbilities

func (unit *OverworldUnit) GetAbilities() []Ability

func (*OverworldUnit) GetArtifactSlots

func (unit *OverworldUnit) GetArtifactSlots() []artifact.ArtifactSlot

func (*OverworldUnit) GetArtifacts

func (unit *OverworldUnit) GetArtifacts() []*artifact.Artifact

func (*OverworldUnit) GetAttackSound

func (unit *OverworldUnit) GetAttackSound() AttackSound

func (*OverworldUnit) GetBanner

func (unit *OverworldUnit) GetBanner() data.BannerType

func (*OverworldUnit) GetBaseDefense

func (unit *OverworldUnit) GetBaseDefense() int

func (*OverworldUnit) GetBaseHitPoints

func (unit *OverworldUnit) GetBaseHitPoints() int

func (*OverworldUnit) GetBaseMeleeAttackPower

func (unit *OverworldUnit) GetBaseMeleeAttackPower() int

func (*OverworldUnit) GetBaseRangedAttackPower

func (unit *OverworldUnit) GetBaseRangedAttackPower() int

func (*OverworldUnit) GetBaseResistance

func (unit *OverworldUnit) GetBaseResistance() int

func (*OverworldUnit) GetCombatIndex

func (unit *OverworldUnit) GetCombatIndex(facing Facing) int

func (*OverworldUnit) GetCombatLbxFile

func (unit *OverworldUnit) GetCombatLbxFile() string

func (*OverworldUnit) GetCombatRangeIndex

func (unit *OverworldUnit) GetCombatRangeIndex(facing Facing) int

func (*OverworldUnit) GetCount

func (unit *OverworldUnit) GetCount() int

func (*OverworldUnit) GetDefense

func (unit *OverworldUnit) GetDefense() int

func (*OverworldUnit) GetEnchantments

func (unit *OverworldUnit) GetEnchantments() []data.UnitEnchantment

func (*OverworldUnit) GetExperience

func (unit *OverworldUnit) GetExperience() int

func (*OverworldUnit) GetExperienceData

func (unit *OverworldUnit) GetExperienceData() ExperienceData

func (*OverworldUnit) GetExperienceLevel

func (unit *OverworldUnit) GetExperienceLevel() NormalExperienceLevel

func (*OverworldUnit) GetHealth

func (unit *OverworldUnit) GetHealth() int

func (*OverworldUnit) GetHitPoints

func (unit *OverworldUnit) GetHitPoints() int

func (*OverworldUnit) GetKnownSpells

func (unit *OverworldUnit) GetKnownSpells() []string

func (*OverworldUnit) GetLbxFile

func (unit *OverworldUnit) GetLbxFile() string

func (*OverworldUnit) GetLbxIndex

func (unit *OverworldUnit) GetLbxIndex() int

func (*OverworldUnit) GetMaxHealth

func (unit *OverworldUnit) GetMaxHealth() int

func (*OverworldUnit) GetMeleeAttackPower

func (unit *OverworldUnit) GetMeleeAttackPower() int

func (*OverworldUnit) GetMovementSound

func (unit *OverworldUnit) GetMovementSound() MovementSound

func (*OverworldUnit) GetMovementSpeed

func (unit *OverworldUnit) GetMovementSpeed() int

func (*OverworldUnit) GetMovesLeft

func (unit *OverworldUnit) GetMovesLeft() fraction.Fraction

func (*OverworldUnit) GetName

func (unit *OverworldUnit) GetName() string

func (*OverworldUnit) GetPatrol

func (unit *OverworldUnit) GetPatrol() bool

func (*OverworldUnit) GetPlane

func (unit *OverworldUnit) GetPlane() data.Plane

func (*OverworldUnit) GetProductionCost

func (unit *OverworldUnit) GetProductionCost() int

func (*OverworldUnit) GetRace

func (unit *OverworldUnit) GetRace() data.Race

func (*OverworldUnit) GetRangeAttackSound

func (unit *OverworldUnit) GetRangeAttackSound() RangeAttackSound

func (*OverworldUnit) GetRangedAttackDamageType

func (unit *OverworldUnit) GetRangedAttackDamageType() Damage

func (*OverworldUnit) GetRangedAttackPower

func (unit *OverworldUnit) GetRangedAttackPower() int

func (*OverworldUnit) GetRangedAttacks

func (unit *OverworldUnit) GetRangedAttacks() int

func (*OverworldUnit) GetRawUnit

func (unit *OverworldUnit) GetRawUnit() Unit

func (*OverworldUnit) GetResistance

func (unit *OverworldUnit) GetResistance() int

func (*OverworldUnit) GetTitle

func (unit *OverworldUnit) GetTitle() string

func (*OverworldUnit) GetToHitMelee

func (unit *OverworldUnit) GetToHitMelee() int

func (*OverworldUnit) GetUpkeepFood

func (unit *OverworldUnit) GetUpkeepFood() int

func (*OverworldUnit) GetUpkeepGold

func (unit *OverworldUnit) GetUpkeepGold() int

func (*OverworldUnit) GetUpkeepMana

func (unit *OverworldUnit) GetUpkeepMana() int

func (*OverworldUnit) GetWeaponBonus

func (unit *OverworldUnit) GetWeaponBonus() data.WeaponBonus

func (*OverworldUnit) GetX

func (unit *OverworldUnit) GetX() int

func (*OverworldUnit) GetY

func (unit *OverworldUnit) GetY() int

func (*OverworldUnit) HasAbility

func (unit *OverworldUnit) HasAbility(ability AbilityType) bool

func (*OverworldUnit) HasMovesLeft

func (unit *OverworldUnit) HasMovesLeft() bool

func (*OverworldUnit) IsFlying

func (unit *OverworldUnit) IsFlying() bool

func (*OverworldUnit) IsHero

func (unit *OverworldUnit) IsHero() bool

func (*OverworldUnit) Move

func (unit *OverworldUnit) Move(dx int, dy int, cost fraction.Fraction)

func (*OverworldUnit) NaturalHeal

func (unit *OverworldUnit) NaturalHeal(rate float64)

restore health points on the overworld

func (*OverworldUnit) RemoveEnchantment

func (unit *OverworldUnit) RemoveEnchantment(toRemove data.UnitEnchantment)

func (*OverworldUnit) ResetMoves

func (unit *OverworldUnit) ResetMoves()

func (*OverworldUnit) SetId

func (unit *OverworldUnit) SetId(id uint64)

func (*OverworldUnit) SetMovesLeft

func (unit *OverworldUnit) SetMovesLeft(moves fraction.Fraction)

func (*OverworldUnit) SetPatrol

func (unit *OverworldUnit) SetPatrol(patrol bool)

func (*OverworldUnit) SetPlane

func (unit *OverworldUnit) SetPlane(plane data.Plane)

func (*OverworldUnit) SetWeaponBonus

func (unit *OverworldUnit) SetWeaponBonus(bonus data.WeaponBonus)

type RangeAttackSound

type RangeAttackSound int
const (
	RangeAttackSoundNone RangeAttackSound = iota
	RangeAttackSoundFireball
	RangeAttackSoundArrow
	RangeAttackSoundSling
	RangeAttackSoundLaunch // for catapult or other similar things
)

func (RangeAttackSound) LbxIndex

func (sound RangeAttackSound) LbxIndex() int

type StackUnit

type StackUnit interface {
	SetId(id uint64)
	ResetMoves()
	NaturalHeal(rate float64)
	GetPatrol() bool
	SetPatrol(bool)
	IsFlying() bool
	GetName() string
	GetTitle() string
	GetPlane() data.Plane
	SetPlane(data.Plane)
	GetMovesLeft() fraction.Fraction
	SetMovesLeft(fraction.Fraction)
	GetRace() data.Race
	GetUpkeepGold() int
	GetUpkeepFood() int
	GetUpkeepMana() int
	GetEnchantments() []data.UnitEnchantment
	AddEnchantment(data.UnitEnchantment)
	RemoveEnchantment(data.UnitEnchantment)
	GetBanner() data.BannerType
	SetWeaponBonus(data.WeaponBonus)
	GetWeaponBonus() data.WeaponBonus
	GetX() int
	GetY() int
	IsHero() bool
	Move(int, int, fraction.Fraction)
	GetLbxFile() string
	GetLbxIndex() int
	GetKnownSpells() []string
	HasAbility(AbilityType) bool
	GetAbilities() []Ability
	GetBaseDefense() int
	GetDefense() int
	GetBaseHitPoints() int
	GetHitPoints() int
	GetBaseMeleeAttackPower() int
	GetMeleeAttackPower() int
	GetBaseRangedAttackPower() int
	GetBaseResistance() int
	GetCombatLbxFile() string
	GetCombatIndex(Facing) int
	GetCount() int
	GetMovementSpeed() int
	GetProductionCost() int
	GetRangedAttackPower() int
	GetResistance() int
	AdjustHealth(amount int)
	GetAttackSound() AttackSound
	GetCombatRangeIndex(Facing) int
	GetHealth() int
	GetMaxHealth() int
	GetMovementSound() MovementSound
	GetRangeAttackSound() RangeAttackSound
	GetRangedAttackDamageType() Damage
	GetRangedAttacks() int
	AddExperience(int)
	GetExperience() int
	GetExperienceData() ExperienceData
	GetRawUnit() Unit
	GetToHitMelee() int
	GetArtifactSlots() []artifact.ArtifactSlot
	GetArtifacts() []*artifact.Artifact
}

type Unit

type Unit struct {
	// icon on the overworld and in various ui's
	LbxFile string
	Index   int

	// sprites to use in combat
	CombatLbxFile string
	// first index of combat tiles, order is always up, up-right, right, down-right, down, down-left, left, up-left
	CombatIndex int
	Name        string
	Race        data.Race
	Flying      bool
	Swimming    bool
	Abilities   []Ability

	// fantastic units belong to a specific magic realm
	Realm data.MagicType

	RequiredBuildings []building.Building

	RangedAttackDamageType Damage

	AttackSound      AttackSound
	MovementSound    MovementSound
	RangeAttackSound RangeAttackSound

	// first sprite index in cmbmagic.lbx for the range attack
	RangeAttackIndex int

	KnownSpells []string

	// number of figures that are drawn in a single combat tile
	Count int

	// cost in terms of production to build the unit
	ProductionCost int

	MeleeAttackPower  int
	MovementSpeed     int
	Defense           int
	Resistance        int
	HitPoints         int
	RangedAttackPower int
	RangedAttacks     int
	UpkeepGold        int
	UpkeepFood        int
	UpkeepMana        int

	// For heroes, the spells the unit can cast
	Spells []string
}
var AirElemental Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            74,
	Name:             "Air Elemental",
	Race:             data.RaceFantastic,
	CombatLbxFile:    "figure13.lbx",
	CombatIndex:      112,
	Count:            1,
	Realm:            data.SorceryMagic,
	Flying:           true,
	MovementSpeed:    5,
	MeleeAttackPower: 15,
	Defense:          8,
	Resistance:       9,
	HitPoints:        10,
	Abilities: []Ability{
		MakeAbilityValue(AbilityToHit, 10),
		MakeAbility(AbilityPoisonImmunity),
		MakeAbility(AbilityStoningImmunity),
		MakeAbility(AbilityWeaponImmunity),
		MakeAbility(AbilityInvisibility),
	},
}
var AirShip Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  75,
	CombatLbxFile:          "figures6.lbx",
	CombatIndex:            0,
	Name:                   "Air Ship",
	ProductionCost:         200,
	UpkeepGold:             4,
	UpkeepFood:             1,
	Count:                  1,
	Flying:                 true,
	MovementSpeed:          4,
	MeleeAttackPower:       5,
	RangedAttackPower:      10,
	RangedAttacks:          10,
	RangedAttackDamageType: DamageRangedBoulder,
	Defense:                5,
	Resistance:             8,
	HitPoints:              20,
	Abilities:              []Ability{MakeAbility(AbilityScouting), MakeAbility(AbilityWallCrusher)},
	RequiredBuildings:      []building.Building{building.BuildingShipYard},
	Race:                   data.RaceDraconian,
}
var Angel Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            57,
	CombatLbxFile:    "figure12.lbx",
	CombatIndex:      96,
	Name:             "Angel",
	UpkeepMana:       15,
	Count:            1,
	Flying:           true,
	MovementSpeed:    3,
	MeleeAttackPower: 13,
	Defense:          7,
	Resistance:       8,
	HitPoints:        15,
	Abilities: []Ability{
		MakeAbilityValue(AbilityToHit, 20),
		MakeAbilityValue(AbilityHolyBonus, 1),
		MakeAbility(AbilityIllusionsImmunity),
		MakeAbility(AbilityDispelEvil),
	},
	Race:  data.RaceFantastic,
	Realm: data.LifeMagic,
}
var ArchAngel Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            58,
	CombatLbxFile:    "figure12.lbx",
	CombatIndex:      104,
	Name:             "Arch Angel",
	UpkeepMana:       20,
	Count:            1,
	Flying:           true,
	MovementSpeed:    4,
	MeleeAttackPower: 15,
	Defense:          10,
	Resistance:       12,
	HitPoints:        18,
	KnownSpells: []string{
		"Bless",
		"Star Fires",
		"Holy Weapon",
		"Healing",
		"Holy Armor",
		"Heroism",
		"True Light",
		"True Sight",
		"Dispel Evil",
		"Prayer",
		"Raise Dead",
		"Invulnerability",
		"Lionheart",
		"Righteousness",
	},
	Abilities: []Ability{
		MakeAbilityValue(AbilityToHit, 30),
		MakeAbilityValue(AbilityCaster, 40),
		MakeAbilityValue(AbilityHolyBonus, 2),
		MakeAbility(AbilityIllusionsImmunity),
	},
	Race:  data.RaceFantastic,
	Realm: data.LifeMagic,
}
var BarbarianBowmen Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  41,
	Name:                   "Bowmen",
	CombatLbxFile:          "figures3.lbx",
	CombatIndex:            88,
	ProductionCost:         30,
	UpkeepGold:             1,
	UpkeepFood:             1,
	Count:                  6,
	MovementSpeed:          1,
	MeleeAttackPower:       1,
	RangedAttackPower:      1,
	RangedAttacks:          8,
	RangedAttackDamageType: DamageRangedPhysical,
	Defense:                1,
	Resistance:             5,
	HitPoints:              1,
	RequiredBuildings:      []building.Building{building.BuildingBarracks, building.BuildingSawmill},
	Race:                   data.RaceBarbarian,
}
var BarbarianCavalry Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             42,
	Name:              "Cavalry",
	CombatLbxFile:     "figures3.lbx",
	CombatIndex:       96,
	ProductionCost:    60,
	UpkeepGold:        2,
	UpkeepFood:        1,
	Count:             4,
	MovementSpeed:     2,
	MeleeAttackPower:  4,
	Defense:           2,
	Resistance:        5,
	HitPoints:         3,
	Abilities:         []Ability{MakeAbility(AbilityFirstStrike), MakeAbilityValue(AbilityThrown, 1)},
	RequiredBuildings: []building.Building{building.BuildingBarracks, building.BuildingStables},
	Race:              data.RaceBarbarian,
}
var BarbarianSettlers Unit = Unit{
	LbxFile:        "units1.lbx",
	Index:          44,
	CombatLbxFile:  "figures3.lbx",
	CombatIndex:    112,
	Name:           "Settlers",
	ProductionCost: 60,
	UpkeepGold:     2,
	UpkeepFood:     1,
	Count:          1,
	MovementSpeed:  1,
	Defense:        1,
	Resistance:     5,
	HitPoints:      10,
	Abilities:      []Ability{MakeAbility(AbilityCreateOutpost)},
	Race:           data.RaceBarbarian,
}
var BarbarianShaman Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            43,
	CombatLbxFile:    "figures3.lbx",
	CombatIndex:      104,
	Name:             "Shaman",
	ProductionCost:   50,
	UpkeepGold:       1,
	UpkeepFood:       1,
	Count:            4,
	MovementSpeed:    1,
	MeleeAttackPower: 2,

	RangedAttackPower:      2,
	RangedAttacks:          4,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                3,
	Resistance:             7,
	HitPoints:              1,
	Abilities:              []Ability{MakeAbility(AbilityHealer), MakeAbility(AbilityPurify)},
	RequiredBuildings:      []building.Building{building.BuildingShrine},
	Race:                   data.RaceBarbarian,
}
var BarbarianSpearmen Unit = Unit{
	LbxFile:          "units1.lbx",
	Name:             "Spearmen",
	Index:            39,
	CombatLbxFile:    "figures3.lbx",
	CombatIndex:      72,
	ProductionCost:   15,
	UpkeepFood:       1,
	Count:            8,
	MovementSpeed:    1,
	MeleeAttackPower: 1,
	Defense:          2,
	Resistance:       5,
	HitPoints:        1,
	Abilities:        []Ability{MakeAbilityValue(AbilityThrown, 1)},
	Race:             data.RaceBarbarian,
}
var BarbarianSwordsmen Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             40,
	Name:              "Swordsmen",
	CombatLbxFile:     "figures3.lbx",
	CombatIndex:       80,
	ProductionCost:    30,
	UpkeepGold:        1,
	UpkeepFood:        1,
	Count:             6,
	MovementSpeed:     1,
	MeleeAttackPower:  3,
	Defense:           2,
	Resistance:        5,
	HitPoints:         1,
	Abilities:         []Ability{MakeAbility(AbilityLargeShield), MakeAbilityValue(AbilityThrown, 1)},
	RequiredBuildings: []building.Building{building.BuildingBarracks, building.BuildingSmithy},
	Race:              data.RaceBarbarian,
}
var Basilisk Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            62,
	Name:             "Basilisk",
	CombatLbxFile:    "figure13.lbx",
	CombatIndex:      16,
	UpkeepMana:       7,
	Count:            1,
	Realm:            data.NatureMagic,
	MovementSpeed:    2,
	MeleeAttackPower: 15,
	Defense:          4,
	Resistance:       7,
	HitPoints:        30,
	Abilities:        []Ability{MakeAbilityValue(AbilityToHit, 10), MakeAbilityValue(AbilityStoningGaze, -1)},
	Race:             data.RaceFantastic,
}
var BeastmenBowmen Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  49,
	CombatLbxFile:          "figures4.lbx",
	CombatIndex:            32,
	Name:                   "Bowmen",
	ProductionCost:         60,
	UpkeepGold:             2,
	UpkeepFood:             1,
	Count:                  6,
	MovementSpeed:          1,
	MeleeAttackPower:       2,
	RangedAttackPower:      1,
	RangedAttacks:          8,
	RangedAttackDamageType: DamageRangedPhysical,
	Defense:                1,
	Resistance:             5,
	HitPoints:              2,
	RequiredBuildings:      []building.Building{building.BuildingBarracks, building.BuildingSawmill},
	Race:                   data.RaceBeastmen,
}
var BeastmenEngineer Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             52,
	CombatLbxFile:     "figures4.lbx",
	CombatIndex:       56,
	Name:              "Engineers",
	ProductionCost:    60,
	UpkeepGold:        2,
	UpkeepFood:        1,
	Count:             6,
	MovementSpeed:     1,
	MeleeAttackPower:  2,
	Defense:           1,
	Resistance:        5,
	HitPoints:         2,
	Abilities:         []Ability{MakeAbility(AbilityConstruction), MakeAbility(AbilityWallCrusher)},
	RequiredBuildings: []building.Building{building.BuildingBuildersHall},
	Race:              data.RaceBeastmen,
}
var BeastmenHalberdiers Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             48,
	CombatLbxFile:     "figures4.lbx",
	CombatIndex:       24,
	ProductionCost:    80,
	UpkeepGold:        2,
	UpkeepFood:        1,
	Count:             6,
	MovementSpeed:     1,
	MeleeAttackPower:  5,
	Defense:           3,
	Resistance:        5,
	HitPoints:         2,
	Name:              "Halberdiers",
	RequiredBuildings: []building.Building{building.BuildingArmory},
	Race:              data.RaceBeastmen,
}
var BeastmenMagician Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            51,
	CombatLbxFile:    "figures4.lbx",
	CombatIndex:      48,
	Name:             "Magicians",
	ProductionCost:   180,
	UpkeepGold:       4,
	UpkeepFood:       1,
	Count:            4,
	MovementSpeed:    1,
	MeleeAttackPower: 2,

	RangedAttackPower:      5,
	RangedAttacks:          4,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                3,
	Resistance:             9,
	HitPoints:              2,
	Abilities:              []Ability{MakeAbility(AbilityMissileImmunity), MakeAbilityValue(AbilityFireballSpell, 1)},
	RequiredBuildings:      []building.Building{building.BuildingWizardsGuild},
	Race:                   data.RaceBeastmen,
}
var BeastmenPriest Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            50,
	CombatLbxFile:    "figures4.lbx",
	CombatIndex:      40,
	Name:             "Priests",
	ProductionCost:   150,
	UpkeepGold:       3,
	UpkeepFood:       1,
	Count:            4,
	MovementSpeed:    1,
	MeleeAttackPower: 4,

	RangedAttackPower:      4,
	RangedAttacks:          4,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                4,
	Resistance:             8,
	HitPoints:              2,
	Abilities:              []Ability{MakeAbility(AbilityHealer), MakeAbility(AbilityPurify), MakeAbilityValue(AbilityHealingSpell, 1)},
	RequiredBuildings:      []building.Building{building.BuildingParthenon},
	Race:                   data.RaceBeastmen,
}
var BeastmenSettlers Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            53,
	CombatLbxFile:    "figures4.lbx",
	CombatIndex:      64,
	ProductionCost:   120,
	UpkeepGold:       3,
	UpkeepFood:       1,
	Count:            1,
	MovementSpeed:    1,
	MeleeAttackPower: 1,
	Defense:          1,
	Resistance:       5,
	HitPoints:        20,
	Abilities:        []Ability{MakeAbility(AbilityCreateOutpost)},
	Name:             "Settlers",
	Race:             data.RaceBeastmen,
}
var BeastmenSpearmen Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            46,
	CombatLbxFile:    "figures4.lbx",
	CombatIndex:      8,
	ProductionCost:   20,
	UpkeepFood:       1,
	Count:            8,
	MovementSpeed:    1,
	MeleeAttackPower: 2,
	Defense:          2,
	Resistance:       5,
	HitPoints:        2,
	Name:             "Spearmen",
	Race:             data.RaceBeastmen,
}
var BeastmenSwordsmen Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             47,
	CombatLbxFile:     "figures4.lbx",
	CombatIndex:       16,
	Name:              "Swordsmen",
	ProductionCost:    40,
	UpkeepGold:        1,
	UpkeepFood:        1,
	Count:             6,
	MovementSpeed:     1,
	MeleeAttackPower:  4,
	Defense:           2,
	Resistance:        5,
	HitPoints:         2,
	Abilities:         []Ability{MakeAbility(AbilityLargeShield)},
	RequiredBuildings: []building.Building{building.BuildingBarracks, building.BuildingSmithy},
	Race:              data.RaceBeastmen,
}
var Behemoth Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            68,
	Name:             "Behemoth",
	CombatLbxFile:    "figure13.lbx",
	CombatIndex:      64,
	UpkeepMana:       15,
	Count:            1,
	Realm:            data.NatureMagic,
	MovementSpeed:    2,
	MeleeAttackPower: 25,
	Defense:          9,
	Resistance:       10,
	HitPoints:        45,
	Race:             data.RaceFantastic,
	Abilities:        []Ability{MakeAbilityValue(AbilityToHit, 20)},
}
var Berserkers Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             45,
	CombatLbxFile:     "figures4.lbx",
	CombatIndex:       0,
	Name:              "Berserkers",
	ProductionCost:    120,
	UpkeepGold:        3,
	UpkeepFood:        1,
	Count:             6,
	MovementSpeed:     1,
	MeleeAttackPower:  7,
	Defense:           3,
	Resistance:        7,
	HitPoints:         3,
	Abilities:         []Ability{MakeAbilityValue(AbilityThrown, 3)},
	RequiredBuildings: []building.Building{building.BuildingArmorersGuild},
	Race:              data.RaceBarbarian,
}
var Catapult Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  37,
	CombatLbxFile:          "figures3.lbx",
	CombatIndex:            56,
	Name:                   "Catapult",
	ProductionCost:         100,
	UpkeepGold:             2,
	UpkeepFood:             1,
	Count:                  1,
	MovementSpeed:          1,
	RangedAttackPower:      10,
	RangedAttacks:          10,
	RangedAttackDamageType: DamageRangedBoulder,
	Defense:                2,
	Resistance:             4,
	HitPoints:              10,
	RequiredBuildings:      []building.Building{building.BuildingMechaniciansGuild},
	Abilities:              []Ability{MakeAbility(AbilityWallCrusher), MakeAbility(AbilityLongRange)},
	Race:                   data.RaceAll,
}
var Centaur Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  54,
	CombatLbxFile:          "figures4.lbx",
	CombatIndex:            72,
	Name:                   "Centaurs",
	ProductionCost:         100,
	UpkeepGold:             2,
	UpkeepFood:             1,
	Count:                  4,
	MovementSpeed:          2,
	MeleeAttackPower:       3,
	RangedAttackPower:      2,
	RangedAttacks:          6,
	RangedAttackDamageType: DamageRangedPhysical,
	Defense:                3,
	Resistance:             5,
	HitPoints:              3,
	RequiredBuildings:      []building.Building{building.BuildingBarracks, building.BuildingStables},
	Race:                   data.RaceBeastmen,
}
var ChaosSpawn Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            39,
	Name:             "Chaos Spawn",
	CombatLbxFile:    "figure11.lbx",
	CombatIndex:      72,
	Realm:            data.ChaosMagic,
	MovementSpeed:    1,
	UpkeepMana:       12,
	Flying:           true,
	Count:            1,
	MeleeAttackPower: 1,
	Defense:          6,
	Resistance:       10,
	HitPoints:        15,
	Abilities: []Ability{
		MakeAbility(AbilityCauseFear),
		MakeAbilityValue(AbilityPoisonTouch, 4),
		MakeAbilityValue(AbilityDoomGaze, 4),
		MakeAbilityValue(AbilityDeathGaze, 4),
		MakeAbilityValue(AbilityStoningGaze, 4),
	},
	Race: data.RaceFantastic,
}
var Chimeras Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            40,
	Name:             "Chimeras",
	CombatLbxFile:    "figure11.lbx",
	CombatIndex:      80,
	Realm:            data.ChaosMagic,
	UpkeepMana:       10,
	MovementSpeed:    2,
	Flying:           true,
	Count:            4,
	MeleeAttackPower: 7,
	Defense:          5,
	Resistance:       8,
	HitPoints:        8,
	Abilities:        []Ability{MakeAbilityValue(AbilityFireBreath, 4), MakeAbilityValue(AbilityToHit, 10)},
	Race:             data.RaceFantastic,
}
var Cockatrice Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            61,
	Name:             "Cockatrice",
	CombatLbxFile:    "figure13.lbx",
	CombatIndex:      8,
	UpkeepMana:       8,
	Realm:            data.NatureMagic,
	Count:            4,
	MovementSpeed:    2,
	Flying:           true,
	MeleeAttackPower: 4,
	Defense:          3,
	Resistance:       7,
	HitPoints:        3,
	Abilities:        []Ability{MakeAbilityValue(AbilityToHit, 10), MakeAbilityValue(AbilityStoningTouch, -3)},
	Race:             data.RaceFantastic,
}
var Colossus Unit = Unit{
	LbxFile:                "units2.lbx",
	Index:                  65,
	Name:                   "Colossus",
	CombatLbxFile:          "figure13.lbx",
	CombatIndex:            40,
	UpkeepMana:             17,
	Count:                  1,
	Realm:                  data.NatureMagic,
	MovementSpeed:          2,
	RangedAttackPower:      20,
	RangedAttacks:          2,
	RangedAttackDamageType: DamageRangedBoulder,
	MeleeAttackPower:       20,
	Defense:                10,
	Resistance:             15,
	HitPoints:              30,
	Abilities: []Ability{
		MakeAbilityValue(AbilityToHit, 30),
		MakeAbility(AbilityPoisonImmunity),
		MakeAbility(AbilityStoningImmunity),
		MakeAbility(AbilityWallCrusher),
		MakeAbility(AbilityFirstStrike),
	},
	Race: data.RaceFantastic,
}
var DarkElfCavalry Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            60,
	CombatLbxFile:    "figures5.lbx",
	CombatIndex:      0,
	Name:             "Cavalry",
	ProductionCost:   100,
	UpkeepGold:       2,
	UpkeepFood:       1,
	Count:            4,
	MovementSpeed:    2,
	MeleeAttackPower: 4,

	RangedAttackPower:      1,
	RangedAttacks:          4,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                2,
	Resistance:             7,
	HitPoints:              3,
	Abilities:              []Ability{MakeAbility(AbilityFirstStrike)},
	RequiredBuildings:      []building.Building{building.BuildingBarracks, building.BuildingStables},
	Race:                   data.RaceDarkElf,
}
var DarkElfHalberdiers Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            59,
	CombatLbxFile:    "figures4.lbx",
	CombatIndex:      112,
	Name:             "Halberdiers",
	ProductionCost:   100,
	UpkeepGold:       2,
	UpkeepFood:       1,
	Count:            6,
	MovementSpeed:    1,
	MeleeAttackPower: 4,

	RangedAttackPower:      1,
	RangedAttacks:          4,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                3,
	Resistance:             7,
	HitPoints:              1,
	RequiredBuildings:      []building.Building{building.BuildingArmory},
	Race:                   data.RaceDarkElf,
}
var DarkElfPriests Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            61,
	CombatLbxFile:    "figures5.lbx",
	CombatIndex:      8,
	Name:             "Priests",
	ProductionCost:   200,
	UpkeepGold:       4,
	UpkeepFood:       1,
	Count:            4,
	MovementSpeed:    1,
	MeleeAttackPower: 3,

	RangedAttackPower:      6,
	RangedAttacks:          4,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                4,
	Resistance:             10,
	HitPoints:              1,
	Abilities:              []Ability{MakeAbility(AbilityHealer), MakeAbility(AbilityPurify), MakeAbilityValue(AbilityHealingSpell, 1)},
	RequiredBuildings:      []building.Building{building.BuildingParthenon},
	Race:                   data.RaceDarkElf,
}
var DarkElfSettlers Unit = Unit{
	LbxFile:        "units1.lbx",
	Index:          62,
	CombatLbxFile:  "figures5.lbx",
	CombatIndex:    16,
	Name:           "Settlers",
	ProductionCost: 150,
	UpkeepGold:     3,
	UpkeepFood:     1,
	Count:          1,
	MovementSpeed:  1,
	Defense:        1,
	Resistance:     7,
	HitPoints:      10,
	Abilities:      []Ability{MakeAbility(AbilityCreateOutpost)},
	Race:           data.RaceDarkElf,
}
var DarkElfSpearmen Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            57,
	CombatLbxFile:    "figures4.lbx",
	CombatIndex:      96,
	Name:             "Spearmen",
	ProductionCost:   25,
	UpkeepFood:       1,
	Count:            8,
	MovementSpeed:    1,
	MeleeAttackPower: 1,

	RangedAttackPower:      1,
	RangedAttacks:          4,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                2,
	Resistance:             7,
	HitPoints:              1,
	Race:                   data.RaceDarkElf,
}
var DarkElfSwordsmen Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            58,
	CombatLbxFile:    "figures4.lbx",
	CombatIndex:      104,
	Name:             "Swordsmen",
	ProductionCost:   50,
	UpkeepGold:       1,
	UpkeepFood:       1,
	Count:            6,
	MovementSpeed:    1,
	MeleeAttackPower: 3,

	RangedAttackPower:      1,
	RangedAttacks:          4,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                2,
	Resistance:             7,
	HitPoints:              1,
	Abilities:              []Ability{MakeAbility(AbilityLargeShield)},
	RequiredBuildings:      []building.Building{building.BuildingBarracks, building.BuildingSmithy},
	Race:                   data.RaceDarkElf,
}
var DeathKnight Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            52,
	CombatLbxFile:    "figure12.lbx",
	CombatIndex:      56,
	Name:             "Death Knights",
	UpkeepMana:       8,
	Count:            4,
	Flying:           true,
	MovementSpeed:    3,
	MeleeAttackPower: 9,
	Defense:          8,
	Resistance:       10,
	HitPoints:        8,
	Abilities: []Ability{
		MakeAbilityValue(AbilityToHit, 30),
		MakeAbilityValue(AbilityLifeSteal, -4),
		MakeAbility(AbilityArmorPiercing),
		MakeAbility(AbilityFirstStrike),
		MakeAbility(AbilityPoisonImmunity),
		MakeAbility(AbilityWeaponImmunity),
		MakeAbility(AbilityIllusionsImmunity),
		MakeAbility(AbilityColdImmunity),
		MakeAbility(AbilityDeathImmunity),
	},
	Realm: data.DeathMagic,
	Race:  data.RaceFantastic,
}
var Demon Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            49,
	Name:             "Demon",
	Race:             data.RaceFantastic,
	CombatLbxFile:    "figure12.lbx",
	CombatIndex:      32,
	Count:            1,
	Realm:            data.DeathMagic,
	MovementSpeed:    2,
	Flying:           true,
	MeleeAttackPower: 14,
	Defense:          6,
	Resistance:       7,
	HitPoints:        12,
	Abilities: []Ability{
		MakeAbilityValue(AbilityToHit, 10),
		MakeAbility(AbilityPoisonImmunity),
		MakeAbility(AbilityIllusionsImmunity),
		MakeAbility(AbilityColdImmunity),
		MakeAbility(AbilityDeathImmunity),
		MakeAbility(AbilityWeaponImmunity),
		MakeAbility(AbilityMissileImmunity),
	},
}
var DemonLord Unit = Unit{
	LbxFile:                "units2.lbx",
	Index:                  53,
	CombatLbxFile:          "figure12.lbx",
	CombatIndex:            64,
	Name:                   "Demon Lord",
	UpkeepMana:             15,
	Count:                  1,
	Flying:                 true,
	MovementSpeed:          2,
	MeleeAttackPower:       20,
	RangedAttackPower:      10,
	RangedAttacks:          8,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                10,
	Resistance:             12,
	HitPoints:              20,
	Abilities: []Ability{
		MakeAbilityValue(AbilityToHit, 30),
		MakeAbilityValue(AbilityLifeSteal, -5),
		MakeAbilityValue(AbilitySummonDemons, 3),
		MakeAbility(AbilityPoisonImmunity),
		MakeAbility(AbilityWeaponImmunity),
		MakeAbility(AbilityIllusionsImmunity),
		MakeAbility(AbilityColdImmunity),
		MakeAbility(AbilityDeathImmunity),
		MakeAbility(AbilityCauseFear),
	},
	Realm: data.DeathMagic,
	Race:  data.RaceFantastic,
}
var Djinn Unit = Unit{
	LbxFile:                "units2.lbx",
	Index:                  75,
	Name:                   "Djinn",
	CombatLbxFile:          "figure14.lbx",
	CombatIndex:            0,
	UpkeepMana:             17,
	Count:                  1,
	Realm:                  data.SorceryMagic,
	MovementSpeed:          3,
	Flying:                 true,
	MeleeAttackPower:       15,
	RangedAttackPower:      8,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                8,
	Resistance:             10,
	HitPoints:              20,
	KnownSpells: []string{
		"Resist Magic",
		"Guardian Wind",
		"Phantom Warriors",
		"Counter Magic",
		"Dispel Magic True",
		"Psionic Blast",
		"Confusion",
		"Spell Lock",
		"Word of Recall",
		"Banish",
	},
	Abilities: []Ability{
		MakeAbilityValue(AbilityToHit, 30),
		MakeAbilityValue(AbilityCaster, 20),
		MakeAbility(AbilityTeleporting),
		MakeAbility(AbilityWindWalking),
	},
	Race: data.RaceFantastic,
}
var DoomBat Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            41,
	Name:             "Doom Bat",
	CombatLbxFile:    "figure11.lbx",
	CombatIndex:      88,
	MovementSpeed:    4,
	UpkeepMana:       8,
	Realm:            data.ChaosMagic,
	Flying:           true,
	MeleeAttackPower: 10,
	Defense:          5,
	Resistance:       9,
	Count:            1,
	HitPoints:        20,
	Abilities:        []Ability{MakeAbilityValue(AbilityToHit, 10), MakeAbility(AbilityImmolation)},
	Race:             data.RaceFantastic,
}
var DoomDrake Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             74,
	CombatLbxFile:     "figures5.lbx",
	CombatIndex:       112,
	Name:              "Doom Drake",
	ProductionCost:    160,
	UpkeepGold:        4,
	UpkeepFood:        1,
	Count:             2,
	Flying:            true,
	MovementSpeed:     3,
	MeleeAttackPower:  8,
	Defense:           3,
	Resistance:        9,
	HitPoints:         10,
	Abilities:         []Ability{MakeAbility(AbilityScouting), MakeAbilityValue(AbilityFireBreath, 6)},
	RequiredBuildings: []building.Building{building.BuildingBarracks, building.BuildingStables},
	Race:              data.RaceDraconian,
}
var DraconianBowmen Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  69,
	CombatLbxFile:          "figures5.lbx",
	CombatIndex:            72,
	Name:                   "Bowmen",
	ProductionCost:         45,
	UpkeepGold:             1,
	UpkeepFood:             1,
	Count:                  6,
	Flying:                 true,
	MovementSpeed:          2,
	MeleeAttackPower:       1,
	RangedAttackPower:      1,
	RangedAttacks:          1,
	RangedAttackDamageType: DamageRangedPhysical,
	Defense:                2,
	Resistance:             6,
	HitPoints:              1,
	RequiredBuildings:      []building.Building{building.BuildingBarracks, building.BuildingSawmill},
	Race:                   data.RaceDraconian,
}
var DraconianHalberdiers Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             68,
	CombatLbxFile:     "figures5.lbx",
	CombatIndex:       64,
	Name:              "Halberdiers",
	ProductionCost:    100,
	UpkeepGold:        2,
	UpkeepFood:        1,
	Count:             6,
	Flying:            true,
	MovementSpeed:     2,
	MeleeAttackPower:  4,
	Defense:           4,
	Resistance:        6,
	HitPoints:         1,
	Abilities:         []Ability{MakeAbilityValue(AbilityFireBreath, 1)},
	RequiredBuildings: []building.Building{building.BuildingArmory},
	Race:              data.RaceDraconian,
}
var DraconianMagician Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             71,
	CombatLbxFile:     "figures5.lbx",
	CombatIndex:       88,
	Name:              "Magicians",
	ProductionCost:    180,
	UpkeepGold:        4,
	UpkeepFood:        1,
	Count:             4,
	Flying:            true,
	MovementSpeed:     2,
	MeleeAttackPower:  1,
	RangedAttackPower: 5,
	RangedAttacks:     4,

	RangedAttackDamageType: DamageRangedMagical,
	Defense:                4,
	Resistance:             10,
	HitPoints:              1,
	Abilities:              []Ability{MakeAbility(AbilityMissileImmunity), MakeAbilityValue(AbilityFireballSpell, 1)},
	RequiredBuildings:      []building.Building{building.BuildingWizardsGuild},
	Race:                   data.RaceDraconian,
}
var DraconianSettlers Unit = Unit{
	LbxFile:        "units1.lbx",
	Index:          73,
	CombatLbxFile:  "figures5.lbx",
	CombatIndex:    104,
	ProductionCost: 150,
	UpkeepGold:     3,
	UpkeepFood:     1,
	Count:          1,
	Flying:         true,
	MovementSpeed:  1,
	Defense:        2,
	Resistance:     6,
	HitPoints:      10,
	Abilities:      []Ability{MakeAbility(AbilityCreateOutpost)},
	Name:           "Settlers",
	Race:           data.RaceDraconian,
}
var DraconianShaman Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            70,
	CombatLbxFile:    "figures5.lbx",
	CombatIndex:      80,
	Name:             "Shaman",
	ProductionCost:   75,
	UpkeepGold:       2,
	UpkeepFood:       1,
	Count:            4,
	Flying:           true,
	MovementSpeed:    2,
	MeleeAttackPower: 2,

	RangedAttackPower:      2,
	RangedAttackDamageType: DamageRangedMagical,
	RangedAttacks:          4,
	Defense:                4,
	Resistance:             8,
	HitPoints:              1,
	Abilities:              []Ability{MakeAbility(AbilityHealer), MakeAbility(AbilityPurify)},
	RequiredBuildings:      []building.Building{building.BuildingShrine},
	Race:                   data.RaceDraconian,
}
var DraconianSpearmen Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            66,
	CombatLbxFile:    "figures5.lbx",
	CombatIndex:      48,
	Name:             "Spearmen",
	ProductionCost:   25,
	UpkeepFood:       1,
	Count:            8,
	Flying:           true,
	MovementSpeed:    2,
	MeleeAttackPower: 1,
	Defense:          3,
	Resistance:       6,
	HitPoints:        1,
	Abilities:        []Ability{MakeAbilityValue(AbilityFireBreath, 1)},
	Race:             data.RaceDraconian,
}
var DraconianSwordsmen Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             67,
	CombatLbxFile:     "figures5.lbx",
	CombatIndex:       56,
	Name:              "Swordsmen",
	ProductionCost:    50,
	UpkeepGold:        1,
	UpkeepFood:        1,
	Count:             6,
	Flying:            true,
	MovementSpeed:     2,
	MeleeAttackPower:  3,
	Defense:           3,
	Resistance:        6,
	HitPoints:         1,
	Abilities:         []Ability{MakeAbility(AbilityLargeShield), MakeAbilityValue(AbilityFireBreath, 1)},
	RequiredBuildings: []building.Building{building.BuildingBarracks, building.BuildingSmithy},
	Race:              data.RaceDraconian,
}
var DragonTurtle Unit = Unit{
	LbxFile:           "units2.lbx",
	Index:             6,
	Name:              "Dragon Turtle",
	CombatLbxFile:     "figures9.lbx",
	CombatIndex:       48,
	RequiredBuildings: []building.Building{building.BuildingArmorersGuild, building.BuildingStables},
	Race:              data.RaceLizard,
	Abilities:         []Ability{MakeAbilityValue(AbilityFireBreath, 5)},
	ProductionCost:    100,
	UpkeepGold:        2,
	UpkeepFood:        1,
	Count:             1,
	MovementSpeed:     2,
	Swimming:          true,
	MeleeAttackPower:  10,
	Defense:           8,
	Resistance:        8,
	HitPoints:         15,
}
var DwarfEngineer Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             78,
	CombatLbxFile:     "figures6.lbx",
	CombatIndex:       24,
	Name:              "Engineers",
	ProductionCost:    40,
	UpkeepGold:        1,
	UpkeepFood:        1,
	Count:             6,
	MovementSpeed:     1,
	MeleeAttackPower:  1,
	Defense:           1,
	Resistance:        8,
	HitPoints:         3,
	Abilities:         []Ability{MakeAbility(AbilityConstruction), MakeAbility(AbilityWallCrusher), MakeAbility(AbilityMountaineer)},
	RequiredBuildings: []building.Building{building.BuildingBuildersHall},
	Race:              data.RaceDwarf,
}
var DwarfHalberdiers Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             77,
	CombatLbxFile:     "figures6.lbx",
	CombatIndex:       16,
	Name:              "Halberdiers",
	ProductionCost:    100,
	UpkeepGold:        2,
	UpkeepFood:        1,
	Count:             6,
	MovementSpeed:     1,
	MeleeAttackPower:  4,
	Defense:           3,
	Resistance:        8,
	HitPoints:         3,
	Abilities:         []Ability{MakeAbility(AbilityMountaineer)},
	RequiredBuildings: []building.Building{building.BuildingArmory},
	Race:              data.RaceDwarf,
}
var DwarfSettlers Unit = Unit{
	LbxFile:        "units1.lbx",
	Index:          82,
	CombatLbxFile:  "figures6.lbx",
	CombatIndex:    56,
	Name:           "Settlers",
	ProductionCost: 150,
	UpkeepGold:     3,
	UpkeepFood:     1,
	Count:          1,
	MovementSpeed:  1,
	Defense:        1,
	Resistance:     8,
	HitPoints:      30,
	Abilities:      []Ability{MakeAbility(AbilityCreateOutpost)},
	Race:           data.RaceDwarf,
}
var DwarfSwordsmen Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             76,
	CombatLbxFile:     "figures6.lbx",
	CombatIndex:       8,
	Name:              "Swordsmen",
	ProductionCost:    50,
	UpkeepFood:        1,
	Count:             6,
	MovementSpeed:     1,
	MeleeAttackPower:  3,
	Defense:           2,
	Resistance:        8,
	HitPoints:         3,
	Abilities:         []Ability{MakeAbility(AbilityLargeShield), MakeAbility(AbilityMountaineer)},
	RequiredBuildings: []building.Building{building.BuildingBarracks, building.BuildingSmithy},
	Race:              data.RaceDwarf,
}
var EarthElemental Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            67,
	Race:             data.RaceFantastic,
	CombatLbxFile:    "figure15.lbx",
	CombatIndex:      64,
	Realm:            data.NatureMagic,
	Name:             "Earth Elemental",
	Count:            1,
	MeleeAttackPower: 25,
	Defense:          4,
	MovementSpeed:    1,
	Resistance:       8,
	HitPoints:        30,
	Abilities: []Ability{
		MakeAbilityValue(AbilityToHit, 10),
		MakeAbility(AbilityPoisonImmunity),
		MakeAbility(AbilityStoningImmunity),
		MakeAbility(AbilityWallCrusher),
	},
}
var Efreet Unit = Unit{
	LbxFile:       "units2.lbx",
	Index:         42,
	Name:          "Efreet",
	CombatLbxFile: "figure11.lbx",
	CombatIndex:   96,
	MovementSpeed: 3,
	Realm:         data.ChaosMagic,
	UpkeepMana:    15,
	Flying:        true,
	Count:         1,

	KnownSpells: []string{
		"Fire Bolt",
		"Warp Wood",
		"Lightning Bolt",
		"Shatter",
		"Eldritch Weapon",
		"Disrupt",
		"Fireball",
		"Warp Creature",
		"Fire Elemental",
	},
	MeleeAttackPower:       9,
	RangedAttackPower:      9,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                7,
	Resistance:             10,
	HitPoints:              12,
	Abilities:              []Ability{MakeAbility(AbilityFireImmunity), MakeAbilityValue(AbilityToHit, 20), MakeAbilityValue(AbilityCaster, 20)},
	Race:                   data.RaceFantastic,
}
var ElvenLord Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             102,
	CombatLbxFile:     "figures7.lbx",
	CombatIndex:       96,
	Name:              "ElvenLord",
	ProductionCost:    160,
	UpkeepGold:        4,
	UpkeepFood:        1,
	Count:             4,
	MovementSpeed:     2,
	MeleeAttackPower:  5,
	Defense:           4,
	Resistance:        9,
	HitPoints:         3,
	Abilities:         []Ability{MakeAbility(AbilityForester), MakeAbilityValue(AbilityToHit, 20), MakeAbility(AbilityArmorPiercing), MakeAbility(AbilityFirstStrike)},
	RequiredBuildings: []building.Building{building.BuildingArmorersGuild},
	Race:              data.RaceHighElf,
}
var FireElemental Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            38,
	Race:             data.RaceFantastic,
	CombatLbxFile:    "figure11.lbx",
	CombatIndex:      64,
	Realm:            data.ChaosMagic,
	Name:             "Fire Elemental",
	Count:            1,
	MovementSpeed:    1,
	MeleeAttackPower: 12,
	Defense:          4,
	Resistance:       6,
	HitPoints:        10,
	Abilities:        []Ability{MakeAbility(AbilityFireImmunity), MakeAbility(AbilityPoisonImmunity), MakeAbility(AbilityStoningImmunity)},
}
var FireGiant Unit = Unit{
	LbxFile:                "units2.lbx",
	Index:                  37,
	Name:                   "Fire Giant",
	CombatLbxFile:          "figure11.lbx",
	CombatIndex:            56,
	MovementSpeed:          2,
	UpkeepMana:             3,
	Realm:                  data.ChaosMagic,
	Count:                  1,
	MeleeAttackPower:       10,
	RangedAttackPower:      10,
	RangedAttackDamageType: DamageRangedBoulder,
	RangedAttacks:          2,
	HitPoints:              15,
	Defense:                5,
	Resistance:             7,
	Abilities:              []Ability{MakeAbilityValue(AbilityToHit, 10), MakeAbility(AbilityMountaineer), MakeAbility(AbilityWallCrusher), MakeAbility(AbilityFireImmunity)},
	Race:                   data.RaceFantastic,
}
var FloatingIsland Unit = Unit{
	LbxFile:       "units2.lbx",
	Index:         70,
	CombatLbxFile: "figure13.lbx",
	CombatIndex:   80,
	Count:         1,
	UpkeepMana:    5,
	MovementSpeed: 2,
	Name:          "Floating Island",
	Swimming:      true,
	Defense:       0,
	Resistance:    10,
	HitPoints:     45,
	Abilities: []Ability{
		MakeAbilityValue(AbilityTransport, 8),
		MakeAbility(AbilityPoisonImmunity),
		MakeAbility(AbilityDeathImmunity),
		MakeAbility(AbilityStoningImmunity),
	},
	Race:  data.RaceFantastic,
	Realm: data.SorceryMagic,
}
var Galley Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  36,
	CombatLbxFile:          "figures3.lbx",
	CombatIndex:            48,
	ProductionCost:         100,
	UpkeepGold:             2,
	UpkeepFood:             1,
	Name:                   "Galley",
	Count:                  1,
	Swimming:               true,
	MovementSpeed:          3,
	MeleeAttackPower:       8,
	RangedAttackPower:      2,
	RangedAttacks:          8,
	RangedAttackDamageType: DamageRangedPhysical,
	Defense:                4,
	Resistance:             6,
	HitPoints:              20,
	RequiredBuildings:      []building.Building{building.BuildingShipYard},
	Abilities:              []Ability{MakeAbilityValue(AbilityTransport, 5)},
	Race:                   data.RaceAll,
}
var Gargoyle Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            36,
	Name:             "Gargoyles",
	CombatLbxFile:    "figure11.lbx",
	CombatIndex:      48,
	UpkeepMana:       5,
	Realm:            data.ChaosMagic,
	MovementSpeed:    2,
	Flying:           true,
	MeleeAttackPower: 4,
	Count:            4,
	Defense:          8,
	Resistance:       7,
	HitPoints:        4,
	Abilities:        []Ability{MakeAbilityValue(AbilityToHit, 10), MakeAbility(AbilityPoisonImmunity), MakeAbility(AbilityStoningImmunity)},
	Race:             data.RaceFantastic,
}
var Ghoul Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            46,
	CombatLbxFile:    "figure12.lbx",
	CombatIndex:      8,
	Name:             "Ghouls",
	UpkeepMana:       1,
	Count:            4,
	MovementSpeed:    1,
	MeleeAttackPower: 4,
	Defense:          3,
	Resistance:       6,
	HitPoints:        3,
	Abilities: []Ability{
		MakeAbilityValue(AbilityToHit, 10),
		MakeAbilityValue(AbilityPoisonTouch, 1),
		MakeAbility(AbilityCreateUndead),
		MakeAbility(AbilityPoisonImmunity),
		MakeAbility(AbilityIllusionsImmunity),
		MakeAbility(AbilityColdImmunity),
		MakeAbility(AbilityDeathImmunity),
	},
	Realm: data.DeathMagic,
	Race:  data.RaceFantastic,
}
var GiantSpider Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            63,
	Name:             "Giant Spider",
	CombatLbxFile:    "figure13.lbx",
	CombatIndex:      24,
	Realm:            data.NatureMagic,
	UpkeepMana:       4,
	Count:            2,
	MovementSpeed:    2,
	MeleeAttackPower: 4,
	Defense:          3,
	Resistance:       7,
	HitPoints:        10,
	Abilities:        []Ability{MakeAbilityValue(AbilityToHit, 10), MakeAbilityValue(AbilityWebSpell, 1), MakeAbilityValue(AbilityPoisonTouch, 4)},
	Race:             data.RaceFantastic,
}
var GnollBowmen Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  86,
	CombatLbxFile:          "figures6.lbx",
	CombatIndex:            88,
	Name:                   "Bowmen",
	ProductionCost:         30,
	UpkeepGold:             1,
	UpkeepFood:             1,
	Count:                  6,
	MovementSpeed:          1,
	MeleeAttackPower:       3,
	RangedAttackPower:      1,
	RangedAttacks:          8,
	RangedAttackDamageType: DamageRangedPhysical,
	Defense:                1,
	Resistance:             4,
	HitPoints:              1,
	RequiredBuildings:      []building.Building{building.BuildingBarracks, building.BuildingSawmill},
	Race:                   data.RaceGnoll,
}
var GnollHalberdiers Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             85,
	CombatLbxFile:     "figures6.lbx",
	CombatIndex:       80,
	Name:              "Halberdiers",
	ProductionCost:    40,
	UpkeepGold:        1,
	UpkeepFood:        1,
	Count:             6,
	MovementSpeed:     1,
	MeleeAttackPower:  6,
	Defense:           3,
	Resistance:        4,
	HitPoints:         1,
	Abilities:         []Ability{MakeAbility(AbilityNegateFirstStrike)},
	RequiredBuildings: []building.Building{building.BuildingArmory},
	Race:              data.RaceGnoll,
}
var GnollSettlers Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            87,
	CombatLbxFile:    "figures6.lbx",
	CombatIndex:      96,
	Name:             "Settlers",
	ProductionCost:   60,
	UpkeepGold:       2,
	UpkeepFood:       1,
	Count:            1,
	MovementSpeed:    1,
	MeleeAttackPower: 2,
	Defense:          1,
	Resistance:       4,
	HitPoints:        10,
	Abilities:        []Ability{MakeAbility(AbilityCreateOutpost)},
	Race:             data.RaceGnoll,
}
var GnollSpearmen Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            83,
	CombatLbxFile:    "figures6.lbx",
	CombatIndex:      64,
	Name:             "Spearmen",
	ProductionCost:   10,
	UpkeepFood:       1,
	Count:            8,
	MovementSpeed:    1,
	MeleeAttackPower: 3,
	Defense:          2,
	Resistance:       4,
	HitPoints:        1,
	Race:             data.RaceGnoll,
}
var GnollSwordsmen Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             84,
	CombatLbxFile:     "figures6.lbx",
	CombatIndex:       72,
	Name:              "Swordsmen",
	ProductionCost:    20,
	UpkeepGold:        1,
	UpkeepFood:        1,
	Count:             6,
	MovementSpeed:     1,
	MeleeAttackPower:  5,
	Defense:           2,
	Resistance:        4,
	HitPoints:         1,
	Abilities:         []Ability{MakeAbility(AbilityLargeShield)},
	RequiredBuildings: []building.Building{building.BuildingBarracks, building.BuildingSmithy},
	Race:              data.RaceGnoll,
}
var Golem Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             81,
	CombatLbxFile:     "figures6.lbx",
	CombatIndex:       48,
	Name:              "Golem",
	ProductionCost:    200,
	UpkeepGold:        4,
	UpkeepFood:        1,
	Count:             1,
	MovementSpeed:     1,
	MeleeAttackPower:  12,
	Defense:           8,
	Resistance:        15,
	HitPoints:         20,
	Abilities:         []Ability{MakeAbility(AbilityPoisonImmunity), MakeAbility(AbilityDeathImmunity)},
	RequiredBuildings: []building.Building{building.BuildingArmorersGuild},
	Race:              data.RaceDwarf,
}
var Gorgon Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            66,
	Name:             "Gorgons",
	CombatLbxFile:    "figure13.lbx",
	CombatIndex:      48,
	UpkeepMana:       15,
	Count:            2,
	MovementSpeed:    2,
	Realm:            data.NatureMagic,
	Flying:           true,
	MeleeAttackPower: 8,
	Defense:          7,
	Resistance:       9,
	HitPoints:        9,
	Abilities: []Ability{
		MakeAbilityValue(AbilityToHit, 20),
		MakeAbilityValue(AbilityStoningGaze, -2),
	},
	Race: data.RaceFantastic,
}
var GreatDrake Unit = Unit{
	LbxFile:       "units2.lbx",
	Index:         44,
	CombatLbxFile: "figure11.lbx",
	CombatIndex:   112,
	Name:          "Great Drake",
	Race:          data.RaceFantastic,
	Abilities: []Ability{
		MakeAbilityValue(AbilityFireBreath, 30),
		MakeAbilityValue(AbilityToHit, 30),
	},
	Count:            1,
	Realm:            data.ChaosMagic,
	HitPoints:        30,
	Flying:           true,
	AttackSound:      AttackSoundMonster2,
	MovementSound:    MovementSoundFly,
	MeleeAttackPower: 30,
	MovementSpeed:    2,
	UpkeepMana:       30,
	Defense:          10,
	Resistance:       12,
}
var GreatWyrm Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            69,
	Name:             "Great Wyrm",
	CombatLbxFile:    "figure13.lbx",
	CombatIndex:      72,
	UpkeepMana:       20,
	Count:            1,
	Realm:            data.NatureMagic,
	MovementSpeed:    3,
	MeleeAttackPower: 25,
	Defense:          12,
	Resistance:       12,
	HitPoints:        45,
	Abilities: []Ability{
		MakeAbilityValue(AbilityToHit, 30),
		MakeAbilityValue(AbilityPoisonTouch, 15),
		MakeAbility(AbilityMerging),
	},
	Race: data.RaceFantastic,
}
var Griffin Unit = Unit{
	LbxFile:           "units2.lbx",
	Index:             16,
	CombatLbxFile:     "figure10.lbx",
	CombatIndex:       8,
	Name:              "Griffins",
	ProductionCost:    200,
	UpkeepGold:        4,
	UpkeepFood:        1,
	Count:             2,
	Flying:            true,
	MovementSpeed:     2,
	MeleeAttackPower:  9,
	Defense:           5,
	Resistance:        7,
	HitPoints:         10,
	Abilities:         []Ability{MakeAbility(AbilityArmorPiercing), MakeAbility(AbilityFirstStrike)},
	RequiredBuildings: []building.Building{building.BuildingFantasticStable},
	Race:              data.RaceNomad,
}
var GuardianSpirit Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            56,
	CombatLbxFile:    "figure12.lbx",
	CombatIndex:      88,
	Name:             "Guardian Spirit",
	UpkeepMana:       1,
	Count:            1,
	MovementSpeed:    1,
	Swimming:         true,
	MeleeAttackPower: 10,
	Defense:          4,
	Resistance:       10,
	HitPoints:        10,
	Race:             data.RaceFantastic,
	Abilities: []Ability{
		MakeAbilityValue(AbilityResistanceToAll, 1),
		MakeAbility(AbilityMeld),
		MakeAbility(AbilityNonCorporeal),
	},
	Realm: data.LifeMagic,
}
var HalflingBowmen Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  91,
	CombatLbxFile:          "figures7.lbx",
	CombatIndex:            8,
	Name:                   "Bowmen",
	ProductionCost:         45,
	UpkeepGold:             1,
	UpkeepFood:             1,
	Count:                  6,
	MovementSpeed:          1,
	MeleeAttackPower:       1,
	RangedAttackPower:      1,
	RangedAttacks:          8,
	RangedAttackDamageType: DamageRangedPhysical,
	Defense:                1,
	Resistance:             6,
	HitPoints:              1,
	Abilities:              []Ability{MakeAbility(AbilityLucky)},
	RequiredBuildings:      []building.Building{building.BuildingBarracks, building.BuildingSawmill},
	Race:                   data.RaceHalfling,
}
var HalflingSettlers Unit = Unit{
	LbxFile:        "units1.lbx",
	Index:          93,
	CombatLbxFile:  "figures7.lbx",
	CombatIndex:    24,
	ProductionCost: 90,
	UpkeepGold:     2,
	UpkeepFood:     1,
	Count:          1,
	MovementSpeed:  1,
	Defense:        1,
	Resistance:     6,
	HitPoints:      10,
	Abilities:      []Ability{MakeAbility(AbilityCreateOutpost), MakeAbility(AbilityLucky)},
	Name:           "Settlers",
	Race:           data.RaceHalfling,
}
var HalflingShamans Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             92,
	CombatLbxFile:     "figures7.lbx",
	CombatIndex:       16,
	Name:              "Shamans",
	ProductionCost:    75,
	UpkeepGold:        2,
	UpkeepFood:        1,
	Count:             4,
	MovementSpeed:     1,
	MeleeAttackPower:  1,
	RangedAttackPower: 2,
	RangedAttacks:     4,

	RangedAttackDamageType: DamageRangedMagical,
	Defense:                3,
	Resistance:             8,
	HitPoints:              1,
	Abilities:              []Ability{MakeAbility(AbilityHealer), MakeAbility(AbilityPurify), MakeAbility(AbilityLucky)},
	RequiredBuildings:      []building.Building{building.BuildingShrine},
	Race:                   data.RaceHalfling,
}
var HalflingSpearmen Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            89,
	CombatLbxFile:    "figures6.lbx",
	CombatIndex:      112,
	Name:             "Spearmen",
	ProductionCost:   15,
	UpkeepFood:       1,
	Count:            8,
	MovementSpeed:    1,
	MeleeAttackPower: 1,
	Defense:          2,
	Resistance:       6,
	HitPoints:        1,
	Abilities:        []Ability{MakeAbility(AbilityLucky)},
	Race:             data.RaceHalfling,
}
var HalflingSwordsmen Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             90,
	CombatLbxFile:     "figures7.lbx",
	CombatIndex:       0,
	Name:              "Swordsmen",
	ProductionCost:    30,
	UpkeepGold:        1,
	UpkeepFood:        1,
	Count:             8,
	MovementSpeed:     1,
	MeleeAttackPower:  2,
	Defense:           2,
	Resistance:        6,
	HitPoints:         1,
	Abilities:         []Ability{MakeAbility(AbilityLargeShield), MakeAbility(AbilityLucky)},
	RequiredBuildings: []building.Building{building.BuildingBarracks, building.BuildingSmithy},
	Race:              data.RaceHalfling,
}
var Hammerhands Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             79,
	CombatLbxFile:     "figures6.lbx",
	CombatIndex:       32,
	Name:              "Hammerhands",
	ProductionCost:    160,
	UpkeepGold:        4,
	UpkeepFood:        1,
	Count:             6,
	MovementSpeed:     1,
	MeleeAttackPower:  8,
	Defense:           4,
	Resistance:        9,
	HitPoints:         4,
	Abilities:         []Ability{MakeAbility(AbilityMountaineer)},
	RequiredBuildings: []building.Building{building.BuildingFightersGuild},
	Race:              data.RaceDwarf,
}
var HellHounds Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            35,
	Name:             "Hell Hounds",
	CombatLbxFile:    "figure11.lbx",
	CombatIndex:      40,
	UpkeepMana:       1,
	MovementSpeed:    2,
	Realm:            data.ChaosMagic,
	MeleeAttackPower: 3,
	Count:            4,
	Defense:          2,
	Resistance:       6,
	HitPoints:        4,
	Abilities:        []Ability{MakeAbilityValue(AbilityFireBreath, 3), MakeAbilityValue(AbilityToHit, 10)},
	Race:             data.RaceFantastic,
}
var HeroAerie Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  25,
	CombatLbxFile:          "figures2.lbx",
	CombatIndex:            80,
	Name:                   "Aerie",
	Count:                  1,
	MovementSpeed:          2,
	UpkeepGold:             10,
	MeleeAttackPower:       1,
	RangedAttackPower:      5,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                4,
	Resistance:             6,
	HitPoints:              5,
	Abilities:              []Ability{MakeAbilityValue(AbilityCaster, 10), MakeAbility(AbilityMissileImmunity), MakeAbility(AbilityIllusion)},
	Race:                   data.RaceHero,
	Spells:                 []string{"Psionic Blast", "Vertigo", "Mind Storm"},
}
var HeroAlorra Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  30,
	CombatLbxFile:          "figures3.lbx",
	CombatIndex:            0,
	Count:                  1,
	UpkeepGold:             10,
	MovementSpeed:          2,
	MeleeAttackPower:       5,
	RangedAttackPower:      8,
	RangedAttackDamageType: DamageRangedPhysical,
	RangedAttacks:          8,
	Defense:                6,
	Resistance:             6,
	HitPoints:              6,
	Abilities: []Ability{
		MakeAbilityValue(AbilityCaster, 5),
		MakeAbility(AbilityForester),
		MakeAbility(AbilityBlademaster),
	},
	Name:   "Alorra",
	Race:   data.RaceHero,
	Spells: []string{"Resist Magic", "Flight"},
}
var HeroAureus Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  19,
	CombatLbxFile:          "figures2.lbx",
	CombatIndex:            32,
	Name:                   "Aureus",
	Count:                  1,
	UpkeepGold:             4,
	MovementSpeed:          2,
	MeleeAttackPower:       6,
	RangedAttackPower:      6,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                6,
	Resistance:             6,
	HitPoints:              6,
	Abilities:              []Ability{MakeAbilityValue(AbilityCaster, 5)},
	Race:                   data.RaceHero,
}
var HeroBShan Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  3,
	CombatLbxFile:          "figures1.lbx",
	CombatIndex:            24,
	Count:                  1,
	Name:                   "B'Shan",
	MovementSpeed:          2,
	MeleeAttackPower:       4,
	RangedAttackPower:      4,
	RangedAttacks:          8,
	RangedAttackDamageType: DamageRangedPhysical,
	Defense:                4,
	Resistance:             6,
	HitPoints:              6,
	Abilities:              []Ability{MakeAbility(AbilityNoble)},
	Race:                   data.RaceHero,
}
var HeroBahgtru Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            6,
	CombatLbxFile:    "figures1.lbx",
	CombatIndex:      48,
	Count:            1,
	Name:             "Bahgtru",
	UpkeepGold:       2,
	MovementSpeed:    2,
	MeleeAttackPower: 6,
	Defense:          4,
	Resistance:       6,
	HitPoints:        8,
	Race:             data.RaceHero,
	Abilities:        []Ability{MakeAbilityValue(AbilityThrown, 3), MakeAbility(AbilityMountaineer)},
}
var HeroBrax Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            0,
	CombatLbxFile:    "figures1.lbx",
	CombatIndex:      0,
	UpkeepGold:       2,
	Name:             "Brax",
	Count:            1,
	MovementSpeed:    2,
	MeleeAttackPower: 5,
	Defense:          4,
	Resistance:       10,
	HitPoints:        10,
	Abilities: []Ability{
		MakeAbility(AbilityMountaineer),
		MakeAbility(AbilityConstitution),
	},
	Race: data.RaceHero,
}
var HeroDethStryke Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            26,
	CombatLbxFile:    "figures2.lbx",
	CombatIndex:      88,
	Name:             "Deth Stryke",
	Count:            1,
	UpkeepGold:       10,
	MovementSpeed:    2,
	MeleeAttackPower: 6,
	Defense:          5,
	Resistance:       6,
	HitPoints:        10,
	Abilities: []Ability{
		MakeAbility(AbilityLeadership),
		MakeAbility(AbilityLegendary),
		MakeAbility(AbilityArmsmaster),
		MakeAbility(AbilityConstitution),
		MakeAbility(AbilityMight),
	},
	Race: data.RaceHero,
}
var HeroElana Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  27,
	CombatLbxFile:          "figures2.lbx",
	CombatIndex:            96,
	Count:                  1,
	MovementSpeed:          2,
	MeleeAttackPower:       2,
	RangedAttackPower:      8,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                5,
	Resistance:             6,
	HitPoints:              5,

	Abilities: []Ability{
		MakeAbilityValue(AbilityCaster, 12.5),
		MakeAbility(AbilityHealer),
		MakeAbility(AbilityPurify),
		MakeAbility(AbilityArcanePower),
		MakeAbility(AbilitySuperPrayermaster),
		MakeAbility(AbilityCharmed),
		MakeAbility(AbilityNoble),
	},
	Name:   "Elana",
	Race:   data.RaceHero,
	Spells: []string{"Dispel Evil", "Healing", "Prayer", "Holy Word"},
}
var HeroFang Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            17,
	CombatLbxFile:    "figures2.lbx",
	CombatIndex:      16,
	Name:             "Fang",
	Count:            1,
	UpkeepGold:       4,
	Flying:           true,
	MovementSpeed:    3,
	MeleeAttackPower: 7,
	Defense:          5,
	Resistance:       6,
	HitPoints:        8,
	Abilities:        []Ability{MakeAbility(AbilityMight), MakeAbilityValue(AbilityFireBreath, 5)},
	Race:             data.RaceHero,
}
var HeroGreyfairer Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  10,
	CombatLbxFile:          "figures1.lbx",
	CombatIndex:            80,
	UpkeepGold:             3,
	Name:                   "Greyfairer",
	MovementSpeed:          2,
	Count:                  1,
	MeleeAttackPower:       1,
	RangedAttackPower:      8,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                5,
	Resistance:             6,
	HitPoints:              6,
	Abilities:              []Ability{MakeAbilityValue(AbilityCaster, 7.5), MakeAbilityValue(AbilityScouting, 3), MakeAbility(AbilityPurify)},
	Race:                   data.RaceHero,
	Spells:                 []string{"Ice Bolt", "Petrify", "Web"},
}
var HeroGunther Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            1,
	CombatLbxFile:    "figures1.lbx",
	CombatIndex:      8,
	Count:            1,
	UpkeepGold:       2,
	MovementSpeed:    2,
	MeleeAttackPower: 5,
	Defense:          3,
	Resistance:       6,
	HitPoints:        9,
	Name:             "Gunther",
	Race:             data.RaceHero,
	Abilities: []Ability{
		MakeAbilityValue(AbilityThrown, 5),
		MakeAbility(AbilityMight),
	},
}
var HeroJaer Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  15,
	CombatLbxFile:          "figures2.lbx",
	CombatIndex:            0,
	Count:                  1,
	UpkeepGold:             4,
	MovementSpeed:          2,
	MeleeAttackPower:       1,
	RangedAttackPower:      6,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                5,
	Resistance:             6,
	HitPoints:              5,
	Abilities:              []Ability{MakeAbilityValue(AbilityCaster, 7.5), MakeAbility(AbilityMissileImmunity), MakeAbility(AbilityWindWalking)},
	Name:                   "Jaer",
	Race:                   data.RaceHero,
	Spells:                 []string{"Word of Recall", "Guardian Wind"},
}
var HeroMalleus Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  13,
	CombatLbxFile:          "figures1.lbx",
	CombatIndex:            104,
	UpkeepGold:             3,
	Count:                  1,
	MovementSpeed:          2,
	MeleeAttackPower:       1,
	RangedAttackPower:      8,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                5,
	Resistance:             10,
	HitPoints:              5,
	Name:                   "Malleus",
	Abilities:              []Ability{MakeAbilityValue(AbilityCaster, 10), MakeAbility(AbilityMissileImmunity), MakeAbility(AbilityArcanePower)},
	Race:                   data.RaceHero,
	Spells:                 []string{"Fire Bolt", "Fireball", "Fire Elemental", "Flame Strike"},
}
var HeroMarcus Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  16,
	CombatLbxFile:          "figures2.lbx",
	CombatIndex:            8,
	Name:                   "Marcus",
	Count:                  1,
	UpkeepGold:             4,
	MovementSpeed:          2,
	MeleeAttackPower:       6,
	RangedAttackPower:      5,
	RangedAttacks:          8,
	RangedAttackDamageType: DamageRangedPhysical,
	Defense:                5,
	Resistance:             6,
	HitPoints:              8,
	Abilities:              []Ability{MakeAbilityValue(AbilityCaster, 5), MakeAbilityValue(AbilityScouting, 2), MakeAbility(AbilityPathfinding), MakeAbility(AbilityMight)},
	Race:                   data.RaceHero,
	Spells:                 []string{"Resist Elements", "Stone Skin"},
}
var HeroMorgana Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  18,
	CombatLbxFile:          "figures2.lbx",
	CombatIndex:            24,
	Name:                   "Morgana",
	Count:                  1,
	UpkeepGold:             4,
	MovementSpeed:          2,
	MeleeAttackPower:       1,
	RangedAttackPower:      8,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                5,
	Resistance:             6,
	HitPoints:              5,
	Abilities:              []Ability{MakeAbilityValue(AbilityCaster, 10), MakeAbility(AbilityMissileImmunity), MakeAbility(AbilityCharmed)},
	Race:                   data.RaceHero,
	Spells:                 []string{"Darkness", "Mana Leak", "Black Prayer", "Possession"},
}
var HeroMortu Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            29,
	CombatLbxFile:    "figures2.lbx",
	CombatIndex:      112,
	Count:            1,
	UpkeepGold:       10,
	MovementSpeed:    2,
	MeleeAttackPower: 9,
	Defense:          5,
	Resistance:       6,
	HitPoints:        10,
	Abilities: []Ability{
		MakeAbility(AbilityMagicImmunity),
		MakeAbility(AbilityFirstStrike),
		MakeAbility(AbilityArmorPiercing),
		MakeAbility(AbilityLegendary),
		MakeAbility(AbilityBlademaster),
		MakeAbility(AbilityConstitution),
		MakeAbility(AbilityMight),
	},
	Name: "Mortu",
	Race: data.RaceHero,
}
var HeroMysticX Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  24,
	CombatLbxFile:          "figures2.lbx",
	CombatIndex:            72,
	Name:                   "Mystic X",
	UpkeepGold:             6,
	MovementSpeed:          2,
	Count:                  1,
	MeleeAttackPower:       5,
	RangedAttackPower:      5,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                4,
	Resistance:             10,
	HitPoints:              8,
	Abilities:              []Ability{MakeAbilityValue(AbilityCaster, 5)},
	Race:                   data.RaceHero,
}
var HeroRakir Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            4,
	CombatLbxFile:    "figures1.lbx",
	CombatIndex:      32,
	Name:             "Rakir",
	Count:            1,
	HitPoints:        7,
	MeleeAttackPower: 5,
	Defense:          4,
	UpkeepGold:       2,
	Resistance:       6,
	MovementSpeed:    2,
	Race:             data.RaceHero,
	Abilities:        []Ability{MakeAbilityValue(AbilityCaster, 5), MakeAbilityValue(AbilityScouting, 3), MakeAbility(AbilityForester)},
	Spells:           []string{"Resist Elements"},
}
var HeroRavashack Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  32,
	CombatLbxFile:          "figures3.lbx",
	CombatIndex:            16,
	Name:                   "Ravashack",
	Count:                  1,
	UpkeepGold:             10,
	MovementSpeed:          2,
	MeleeAttackPower:       1,
	RangedAttackPower:      7,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                5,
	Resistance:             6,
	HitPoints:              5,
	Abilities: []Ability{
		MakeAbilityValue(AbilityLifeSteal, 0),
		MakeAbilityValue(AbilityCaster, 12.5),
		MakeAbility(AbilityMissileImmunity),
		MakeAbility(AbilityArcanePower),
	},
	Race: data.RaceHero,
}
var HeroReywind Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  12,
	CombatLbxFile:          "figures1.lbx",
	CombatIndex:            96,
	UpkeepGold:             3,
	MovementSpeed:          2,
	MeleeAttackPower:       4,
	RangedAttackPower:      4,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                4,
	Resistance:             6,
	HitPoints:              7,
	Count:                  1,
	Name:                   "Reywind",
	Abilities:              []Ability{MakeAbilityValue(AbilityCaster, 5)},
	Race:                   data.RaceHero,
	Spells:                 []string{"Eldritch Weapon", "Shatter", "Flame Blade"},
}
var HeroRoland Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            28,
	CombatLbxFile:    "figures2.lbx",
	CombatIndex:      104,
	Count:            1,
	UpkeepGold:       10,
	MovementSpeed:    2,
	MeleeAttackPower: 9,
	Defense:          5,
	Resistance:       6,
	HitPoints:        8,
	Abilities: []Ability{
		MakeAbility(AbilityMissileImmunity),
		MakeAbility(AbilityHealer),
		MakeAbility(AbilityFirstStrike),
		MakeAbility(AbilityArmorPiercing),
		MakeAbility(AbilityLegendary),
		MakeAbility(AbilitySuperMight),
		MakeAbility(AbilityPrayermaster),
	},
	Name: "Roland",
	Race: data.RaceHero,
}
var HeroSerena Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  7,
	CombatLbxFile:          "figures1.lbx",
	CombatIndex:            56,
	Name:                   "Serena",
	Count:                  1,
	UpkeepGold:             2,
	MovementSpeed:          2,
	MeleeAttackPower:       3,
	RangedAttackPower:      6,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                5,
	Resistance:             7,
	HitPoints:              5,
	Abilities:              []Ability{MakeAbility(AbilityHealer), MakeAbilityValue(AbilityCaster, 7.5)},
	Race:                   data.RaceHero,
}
var HeroShalla Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            22,
	CombatLbxFile:    "figures2.lbx",
	CombatIndex:      56,
	Count:            1,
	UpkeepGold:       6,
	MovementSpeed:    2,
	MeleeAttackPower: 7,
	Defense:          4,
	Resistance:       6,
	HitPoints:        8,
	Abilities: []Ability{
		MakeAbilityValue(AbilityThrown, 4),
		MakeAbility(AbilityBlademaster),
		MakeAbility(AbilityMight),
		MakeAbility(AbilityCharmed),
	},
	Name: "Shalla",
	Race: data.RaceHero,
}
var HeroShinBo Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            20,
	CombatLbxFile:    "figures2.lbx",
	CombatIndex:      40,
	Count:            1,
	UpkeepGold:       6,
	MovementSpeed:    2,
	MeleeAttackPower: 6,
	Defense:          5,
	Resistance:       6,
	HitPoints:        7,
	Abilities:        []Ability{MakeAbility(AbilityInvisibility), MakeAbility(AbilityBlademaster)},
	Name:             "Shin Bo",
	Race:             data.RaceHero,
}
var HeroShuri Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  8,
	CombatLbxFile:          "figures1.lbx",
	CombatIndex:            64,
	Name:                   "Shuri",
	Count:                  1,
	UpkeepGold:             2,
	MovementSpeed:          2,
	MeleeAttackPower:       5,
	RangedAttackPower:      4,
	RangedAttacks:          8,
	RangedAttackDamageType: DamageRangedPhysical,
	Defense:                3,
	Resistance:             6,
	HitPoints:              7,
	Abilities:              []Ability{MakeAbility(AbilityPathfinding), MakeAbility(AbilityBlademaster)},
	Race:                   data.RaceHero,
}
var HeroSirHarold Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            31,
	CombatLbxFile:    "figures3.lbx",
	CombatIndex:      8,
	Count:            1,
	MovementSpeed:    2,
	MeleeAttackPower: 8,
	Defense:          5,
	Resistance:       6,
	HitPoints:        9,
	Abilities: []Ability{
		MakeAbility(AbilitySuperLeadership),
		MakeAbility(AbilitySuperLegendary),
		MakeAbility(AbilityConstitution),
		MakeAbility(AbilityNoble),
	},
	Name: "Sir Harold",
	Race: data.RaceHero,
}
var HeroSpyder Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            21,
	CombatLbxFile:    "figures2.lbx",
	CombatIndex:      48,
	Count:            1,
	UpkeepGold:       6,
	MovementSpeed:    2,
	MeleeAttackPower: 7,
	Defense:          5,
	Resistance:       6,
	HitPoints:        8,
	Abilities:        []Ability{MakeAbility(AbilityLeadership), MakeAbility(AbilitySuperLegendary)},
	Name:             "Spyder",
	Race:             data.RaceHero,
}
var HeroTaki Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            11,
	CombatLbxFile:    "figures1.lbx",
	CombatIndex:      88,
	Name:             "Taki",
	UpkeepGold:       3,
	MovementSpeed:    2,
	Count:            1,
	MeleeAttackPower: 6,
	Defense:          5,
	Resistance:       6,
	HitPoints:        6,
	Abilities:        []Ability{MakeAbility(AbilitySuperAgility)},
	Race:             data.RaceHero,
}
var HeroTheria Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            9,
	CombatLbxFile:    "figures1.lbx",
	CombatIndex:      72,
	Name:             "Theria",
	Count:            1,
	UpkeepGold:       2,
	MovementSpeed:    2,
	MeleeAttackPower: 5,
	Defense:          5,
	Resistance:       6,
	HitPoints:        7,
	Abilities:        []Ability{MakeAbility(AbilityAgility), MakeAbility(AbilityCharmed)},
	Race:             data.RaceHero,
}
var HeroTorin Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            34,
	CombatLbxFile:    "figures3.lbx",
	CombatIndex:      32,
	Name:             "Torin",
	Count:            1,
	UpkeepMana:       12,
	MovementSpeed:    2,
	MeleeAttackPower: 12,
	Defense:          8,
	Resistance:       12,
	HitPoints:        12,
	Abilities: []Ability{
		MakeAbilityValue(AbilityCaster, 15),
		MakeAbility(AbilityMagicImmunity),
		MakeAbility(AbilityMissileImmunity),
		MakeAbility(AbilitySuperLeadership),
		MakeAbility(AbilityConstitution),
		MakeAbility(AbilitySuperMight),
		MakeAbility(AbilityPrayermaster),
	},
	Race:   data.RaceHero,
	Spells: []string{"True Light", "Healing", "Holy Armor", "Lionheart"},
}
var HeroTumu Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            14,
	CombatLbxFile:    "figures1.lbx",
	CombatIndex:      112,
	Count:            1,
	UpkeepGold:       3,
	MovementSpeed:    2,
	MeleeAttackPower: 3,
	Defense:          5,
	Resistance:       6,
	HitPoints:        6,
	Abilities:        []Ability{MakeAbilityValue(AbilityPoisonTouch, 5), MakeAbility(AbilityBlademaster)},
	Name:             "Tumu",
	Race:             data.RaceHero,
}
var HeroValana Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            5,
	CombatLbxFile:    "figures1.lbx",
	CombatIndex:      40,
	Name:             "Valana",
	Count:            1,
	UpkeepGold:       2,
	MeleeAttackPower: 4,
	Defense:          5,
	Resistance:       6,
	HitPoints:        6,
	MovementSpeed:    2,
	Abilities:        []Ability{MakeAbilityValue(AbilityCaster, 5), MakeAbility(AbilityLeadership)},
	Race:             data.RaceHero,
	Spells:           []string{"Confusion", "Vertigo"},
}
var HeroWarrax Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  33,
	CombatLbxFile:          "figures3.lbx",
	CombatIndex:            24,
	Name:                   "Warrax",
	UpkeepGold:             10,
	MovementSpeed:          2,
	MeleeAttackPower:       8,
	RangedAttackPower:      8,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                5,
	Resistance:             9,
	HitPoints:              8,
	Count:                  1,
	Abilities: []Ability{
		MakeAbilityValue(AbilityCaster, 10),
		MakeAbility(AbilityArmorPiercing),
		MakeAbility(AbilityConstitution),
		MakeAbility(AbilityArcanePower),
	},
	Race: data.RaceHero,
}
var HeroYramrag Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  23,
	CombatLbxFile:          "figures2.lbx",
	CombatIndex:            64,
	Name:                   "Yramrag",
	Count:                  1,
	UpkeepGold:             6,
	MovementSpeed:          2,
	MeleeAttackPower:       1,
	RangedAttackPower:      8,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                5,
	Resistance:             10,
	HitPoints:              5,
	Abilities:              []Ability{MakeAbilityValue(AbilityCaster, 15), MakeAbility(AbilityMissileImmunity)},
	Race:                   data.RaceHero,
	Spells:                 []string{"Lightning Bolt", "Warp Lightning", "Doom Bolt"},
}
var HeroZaldron Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  2,
	CombatLbxFile:          "figures1.lbx",
	CombatIndex:            16,
	Name:                   "Zaldron",
	UpkeepGold:             2,
	Count:                  1,
	MovementSpeed:          2,
	MeleeAttackPower:       1,
	RangedAttackPower:      6,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                4,
	Resistance:             6,
	HitPoints:              5,
	Abilities: []Ability{
		MakeAbilityValue(AbilityCaster, 7.5),
		MakeAbility(AbilitySage),
	},
	Race:   data.RaceHero,
	Spells: []string{"Dispel Magic True", "Counter Magic"},
}
var HighElfCavalry Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             98,
	CombatLbxFile:     "figures7.lbx",
	CombatIndex:       64,
	Name:              "Cavalry",
	ProductionCost:    60,
	UpkeepGold:        2,
	UpkeepFood:        1,
	Count:             4,
	MovementSpeed:     2,
	MeleeAttackPower:  4,
	Defense:           2,
	Resistance:        6,
	HitPoints:         3,
	RequiredBuildings: []building.Building{building.BuildingBarracks, building.BuildingStables},
	Abilities:         []Ability{MakeAbilityValue(AbilityToHit, 10), MakeAbility(AbilityForester), MakeAbility(AbilityFirstStrike)},
	Race:              data.RaceHighElf,
}
var HighElfHalberdiers Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             97,
	CombatLbxFile:     "figures7.lbx",
	CombatIndex:       56,
	Name:              "Halberdiers",
	ProductionCost:    60,
	UpkeepGold:        2,
	UpkeepFood:        1,
	Count:             6,
	MovementSpeed:     1,
	MeleeAttackPower:  4,
	Defense:           3,
	Resistance:        6,
	HitPoints:         1,
	RequiredBuildings: []building.Building{building.BuildingArmory},
	Abilities:         []Ability{MakeAbility(AbilityForester), MakeAbilityValue(AbilityToHit, 10)},
	Race:              data.RaceHighElf,
}
var HighElfMagician Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  99,
	CombatLbxFile:          "figures7.lbx",
	CombatIndex:            72,
	Name:                   "Magicians",
	ProductionCost:         180,
	UpkeepGold:             4,
	UpkeepFood:             1,
	Count:                  4,
	MovementSpeed:          2,
	MeleeAttackPower:       1,
	RangedAttackPower:      5,
	RangedAttacks:          4,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                3,
	Resistance:             10,
	HitPoints:              1,
	Abilities: []Ability{
		MakeAbilityValue(AbilityFireballSpell, 1),
		MakeAbilityValue(AbilityToHit, 10),
		MakeAbility(AbilityMissileImmunity),
		MakeAbility(AbilityForester),
	},
	RequiredBuildings: []building.Building{building.BuildingWizardsGuild},
	Race:              data.RaceHighElf,
}
var HighElfSettlers Unit = Unit{
	LbxFile:          "units1.lbx",
	Name:             "Settlers",
	CombatLbxFile:    "figures7.lbx",
	CombatIndex:      80,
	Count:            1,
	Index:            100,
	UpkeepGold:       2,
	UpkeepFood:       1,
	Race:             data.RaceHighElf,
	ProductionCost:   90,
	MovementSpeed:    1,
	Resistance:       6,
	MeleeAttackPower: 1,
	HitPoints:        1,
	Defense:          1,

	Abilities: []Ability{MakeAbility(AbilityCreateOutpost), MakeAbilityValue(AbilityToHit, 10), MakeAbility(AbilityForester)},
}
var HighElfSpearmen Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            95,
	CombatLbxFile:    "figures7.lbx",
	CombatIndex:      40,
	Count:            8,
	Name:             "Spearmen",
	ProductionCost:   15,
	MeleeAttackPower: 1,
	Defense:          2,
	AttackSound:      AttackSoundNormal,
	MovementSound:    MovementSoundMarching,
	Resistance:       6,
	Abilities:        []Ability{MakeAbility(AbilityForester), MakeAbilityValue(AbilityToHit, 10)},
	MovementSpeed:    1,
	Race:             data.RaceHighElf,
	HitPoints:        1,
	UpkeepFood:       1,
}
var HighElfSwordsmen Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             96,
	CombatLbxFile:     "figures7.lbx",
	CombatIndex:       48,
	Name:              "Swordsmen",
	RequiredBuildings: []building.Building{building.BuildingBarracks, building.BuildingSmithy},
	ProductionCost:    30,
	UpkeepGold:        1,
	UpkeepFood:        1,
	Count:             6,
	MovementSpeed:     1,
	MeleeAttackPower:  3,
	Defense:           2,
	Resistance:        6,
	HitPoints:         1,
	Abilities:         []Ability{MakeAbility(AbilityLargeShield), MakeAbilityValue(AbilityToHit, 10), MakeAbility(AbilityForester)},
	Race:              data.RaceHighElf,
}
var HighMenBowmen Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  106,
	Race:                   data.RaceHighMen,
	Name:                   "Bowmen",
	UpkeepGold:             1,
	UpkeepFood:             1,
	RequiredBuildings:      []building.Building{building.BuildingBarracks, building.BuildingSawmill},
	ProductionCost:         30,
	Count:                  6,
	Defense:                1,
	MovementSpeed:          1,
	MeleeAttackPower:       1,
	RangedAttackPower:      1,
	RangeAttackIndex:       8,
	RangedAttacks:          8,
	RangeAttackSound:       RangeAttackSoundArrow,
	RangedAttackDamageType: DamageRangedPhysical,
	MovementSound:          MovementSoundShuffle,
	Resistance:             4,
	HitPoints:              1,
	CombatLbxFile:          "figures8.lbx",
	CombatIndex:            8,
}
var HighMenCavalry Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             107,
	Name:              "Cavalry",
	CombatLbxFile:     "figures8.lbx",
	CombatIndex:       16,
	ProductionCost:    40,
	UpkeepGold:        1,
	UpkeepFood:        1,
	Count:             4,
	MovementSpeed:     2,
	MeleeAttackPower:  4,
	Defense:           2,
	Resistance:        4,
	HitPoints:         3,
	RequiredBuildings: []building.Building{building.BuildingBarracks, building.BuildingStables},
	Abilities:         []Ability{MakeAbility(AbilityFirstStrike)},
	Race:              data.RaceHighMen,
}
var HighMenEngineer Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             110,
	CombatLbxFile:     "figures8.lbx",
	CombatIndex:       40,
	Name:              "Engineers",
	ProductionCost:    40,
	UpkeepGold:        1,
	UpkeepFood:        1,
	Count:             6,
	MeleeAttackPower:  1,
	Defense:           1,
	Resistance:        4,
	HitPoints:         1,
	MovementSpeed:     1,
	RequiredBuildings: []building.Building{building.BuildingBuildersHall},
	Abilities:         []Ability{MakeAbility(AbilityConstruction), MakeAbility(AbilityWallCrusher)},
	Race:              data.RaceHighMen,
}
var HighMenMagician Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             109,
	CombatLbxFile:     "figures8.lbx",
	CombatIndex:       32,
	Name:              "Magicians",
	ProductionCost:    120,
	UpkeepGold:        3,
	UpkeepFood:        1,
	Count:             6,
	MovementSpeed:     1,
	MeleeAttackPower:  1,
	RangedAttackPower: 5,
	RangedAttacks:     4,
	Defense:           3,
	Resistance:        8,
	HitPoints:         1,
	Abilities:         []Ability{MakeAbility(AbilityMissileImmunity), MakeAbilityValue(AbilityFireballSpell, 1)},
	RequiredBuildings: []building.Building{building.BuildingWizardsGuild},
	Race:              data.RaceHighMen,
}
var HighMenPikemen Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             112,
	CombatLbxFile:     "figures8.lbx",
	CombatIndex:       56,
	Name:              "Pikemen",
	ProductionCost:    80,
	UpkeepGold:        2,
	UpkeepFood:        1,
	Count:             8,
	MovementSpeed:     1,
	MeleeAttackPower:  5,
	Defense:           3,
	Resistance:        5,
	HitPoints:         1,
	RequiredBuildings: []building.Building{building.BuildingFightersGuild},
	Abilities:         []Ability{MakeAbility(AbilityNegateFirstStrike), MakeAbility(AbilityArmorPiercing)},
	Race:              data.RaceHighMen,
}
var HighMenPriest Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  108,
	CombatLbxFile:          "figures8.lbx",
	CombatIndex:            24,
	Name:                   "Priests",
	ProductionCost:         100,
	UpkeepGold:             2,
	UpkeepFood:             1,
	Count:                  4,
	MovementSpeed:          1,
	MeleeAttackPower:       3,
	RangedAttackPower:      4,
	RangedAttacks:          4,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                4,
	Resistance:             7,
	HitPoints:              1,
	Abilities:              []Ability{MakeAbility(AbilityHealer), MakeAbility(AbilityPurify), MakeAbilityValue(AbilityHealingSpell, 1)},
	RequiredBuildings:      []building.Building{building.BuildingParthenon},
	Race:                   data.RaceHighMen,
}
var HighMenSettlers Unit = Unit{
	LbxFile:        "units1.lbx",
	Name:           "Settlers",
	Index:          111,
	CombatLbxFile:  "figures8.lbx",
	CombatIndex:    48,
	MovementSpeed:  1,
	ProductionCost: 60,
	UpkeepGold:     2,
	UpkeepFood:     1,
	Count:          1,
	Defense:        1,
	Resistance:     4,
	HitPoints:      10,
	Abilities:      []Ability{MakeAbility(AbilityCreateOutpost)},
	Race:           data.RaceHighMen,
}
var HighMenSpearmen Unit = Unit{
	LbxFile:          "units1.lbx",
	Name:             "Spearmen",
	Index:            104,
	CombatLbxFile:    "figures7.lbx",
	CombatIndex:      112,
	Race:             data.RaceHighMen,
	ProductionCost:   10,
	UpkeepFood:       1,
	MovementSpeed:    1,
	MeleeAttackPower: 1,
	Defense:          2,
	Resistance:       4,
	HitPoints:        1,
	Count:            8,
}
var HighMenSwordsmen Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             105,
	CombatLbxFile:     "figures8.lbx",
	CombatIndex:       0,
	Name:              "Swordsmen",
	ProductionCost:    20,
	UpkeepGold:        1,
	UpkeepFood:        1,
	Count:             6,
	MovementSpeed:     1,
	MeleeAttackPower:  3,
	Defense:           2,
	Resistance:        4,
	HitPoints:         1,
	RequiredBuildings: []building.Building{building.BuildingBarracks, building.BuildingSmithy},
	Abilities:         []Ability{MakeAbility(AbilityLargeShield)},
	Race:              data.RaceHighMen,
}
var Hydra Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            43,
	Name:             "Hydra",
	CombatLbxFile:    "figure11.lbx",
	CombatIndex:      104,
	UpkeepMana:       14,
	Count:            1,
	Realm:            data.ChaosMagic,
	MovementSpeed:    1,
	MeleeAttackPower: 6,
	Defense:          4,
	Resistance:       11,
	HitPoints:        10,
	Abilities:        []Ability{MakeAbility(AbilityRegeneration), MakeAbilityValue(AbilityToHit, 10), MakeAbilityValue(AbilityFireBreath, 5)},
	Race:             data.RaceFantastic,
}

FIXME: hydra has 9 virtual figures, one for each head

var KlackonEngineer Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             117,
	CombatLbxFile:     "figures8.lbx",
	CombatIndex:       96,
	Name:              "Engineer",
	RequiredBuildings: []building.Building{building.BuildingBuildersHall},
	ProductionCost:    80,
	UpkeepGold:        2,
	UpkeepFood:        1,
	Count:             6,
	MovementSpeed:     1,
	MeleeAttackPower:  1,
	Defense:           1,
	Resistance:        5,
	HitPoints:         1,
	Abilities:         []Ability{MakeAbility(AbilityConstruction), MakeAbility(AbilityWallCrusher)},
	Race:              data.RaceKlackon,
}
var KlackonHalberdiers Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             116,
	CombatLbxFile:     "figures8.lbx",
	CombatIndex:       88,
	Name:              "Halberdiers",
	RequiredBuildings: []building.Building{building.BuildingArmory},
	ProductionCost:    80,
	UpkeepGold:        2,
	UpkeepFood:        1,
	Count:             6,
	MovementSpeed:     1,
	MeleeAttackPower:  4,
	Defense:           5,
	Resistance:        5,
	HitPoints:         1,
	Race:              data.RaceKlackon,
}
var KlackonSettlers Unit = Unit{
	LbxFile:        "units1.lbx",
	Index:          118,
	CombatLbxFile:  "figures8.lbx",
	CombatIndex:    104,
	Name:           "Settlers",
	UpkeepGold:     3,
	UpkeepFood:     1,
	Count:          1,
	ProductionCost: 120,
	MovementSpeed:  1,
	Defense:        1,
	Resistance:     5,
	HitPoints:      20,
	Race:           data.RaceKlackon,
}
var KlackonSpearmen Unit = Unit{
	LbxFile:          "units1.lbx",
	Index:            114,
	CombatLbxFile:    "figures8.lbx",
	CombatIndex:      72,
	Name:             "Spearmen",
	ProductionCost:   20,
	UpkeepFood:       1,
	Count:            8,
	MovementSpeed:    1,
	MeleeAttackPower: 1,
	Defense:          4,
	Resistance:       5,
	HitPoints:        1,
	Race:             data.RaceKlackon,
}
var KlackonSwordsmen Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             115,
	Name:              "Swordsmen",
	CombatLbxFile:     "figures8.lbx",
	CombatIndex:       80,
	RequiredBuildings: []building.Building{building.BuildingBarracks, building.BuildingSmithy},
	ProductionCost:    40,
	UpkeepGold:        1,
	UpkeepFood:        1,
	Count:             6,
	MovementSpeed:     1,
	MeleeAttackPower:  3,
	Defense:           4,
	Resistance:        5,
	HitPoints:         1,
	Abilities:         []Ability{MakeAbility(AbilityLargeShield)},
	Race:              data.RaceKlackon,
}
var LizardHalberdiers Unit = Unit{
	LbxFile:           "units2.lbx",
	Index:             2,
	Name:              "Halberdiers",
	CombatLbxFile:     "figures9.lbx",
	CombatIndex:       16,
	RequiredBuildings: []building.Building{building.BuildingArmory},
	Race:              data.RaceLizard,
	Abilities:         []Ability{MakeAbility(AbilityNegateFirstStrike)},
	ProductionCost:    40,
	UpkeepGold:        1,
	UpkeepFood:        1,
	MovementSpeed:     1,
	Swimming:          true,
	MeleeAttackPower:  4,
	Defense:           4,
	Resistance:        4,
	HitPoints:         2,
	Count:             6,
}
var LizardJavelineers Unit = Unit{
	LbxFile:                "units2.lbx",
	Index:                  3,
	Name:                   "Javelineers",
	CombatLbxFile:          "figures9.lbx",
	CombatIndex:            24,
	RequiredBuildings:      []building.Building{building.BuildingFightersGuild},
	Race:                   data.RaceLizard,
	RangedAttacks:          6,
	ProductionCost:         80,
	UpkeepGold:             2,
	UpkeepFood:             1,
	Count:                  6,
	MeleeAttackPower:       4,
	RangedAttackPower:      3,
	RangedAttackDamageType: DamageRangedPhysical,
	Defense:                4,
	Resistance:             5,
	HitPoints:              2,
	MovementSpeed:          1,
	Swimming:               true,
}
var LizardSettlers Unit = Unit{
	LbxFile:        "units2.lbx",
	Index:          5,
	Name:           "Settlers",
	CombatLbxFile:  "figures9.lbx",
	CombatIndex:    40,
	MovementSpeed:  1,
	Defense:        2,
	Resistance:     4,
	HitPoints:      20,
	Count:          1,
	ProductionCost: 120,
	Swimming:       true,
	UpkeepGold:     3,
	UpkeepFood:     1,
	Abilities:      []Ability{MakeAbility(AbilityCreateOutpost)},
	Race:           data.RaceLizard,
}
var LizardShamans Unit = Unit{
	LbxFile:                "units2.lbx",
	Index:                  4,
	Name:                   "Shamans",
	CombatLbxFile:          "figures9.lbx",
	CombatIndex:            32,
	RequiredBuildings:      []building.Building{building.BuildingShrine},
	Race:                   data.RaceLizard,
	RangedAttacks:          4,
	MeleeAttackPower:       2,
	RangedAttackPower:      2,
	RangedAttackDamageType: DamageRangedMagical,
	ProductionCost:         60,
	UpkeepGold:             2,
	UpkeepFood:             1,
	Count:                  4,
	MovementSpeed:          1,
	Swimming:               true,
	Defense:                3,
	Resistance:             6,
	HitPoints:              2,
	Abilities:              []Ability{MakeAbility(AbilityHealer), MakeAbility(AbilityPurify)},
}
var LizardSpearmen Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            0,
	Name:             "Spearmen",
	CombatLbxFile:    "figures9.lbx",
	CombatIndex:      0,
	Race:             data.RaceLizard,
	UpkeepFood:       1,
	ProductionCost:   10,
	Count:            8,
	MovementSpeed:    1,
	Swimming:         true,
	MeleeAttackPower: 1,
	Defense:          3,
	Resistance:       4,
	HitPoints:        2,
}
var LizardSwordsmen Unit = Unit{
	LbxFile:           "units2.lbx",
	Index:             1,
	Name:              "Swordsmen",
	CombatLbxFile:     "figures9.lbx",
	CombatIndex:       8,
	RequiredBuildings: []building.Building{building.BuildingBarracks, building.BuildingSmithy},
	ProductionCost:    20,
	UpkeepGold:        1,
	UpkeepFood:        1,
	Count:             6,
	MovementSpeed:     1,
	Swimming:          true,
	MeleeAttackPower:  3,
	Defense:           3,
	Resistance:        4,
	HitPoints:         4,
	Abilities:         []Ability{MakeAbility(AbilityLargeShield)},
	Race:              data.RaceLizard,
}
var Longbowmen Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  101,
	CombatLbxFile:          "figures7.lbx",
	CombatIndex:            88,
	Name:                   "Longbowmen",
	ProductionCost:         80,
	UpkeepGold:             2,
	UpkeepFood:             1,
	Count:                  6,
	MovementSpeed:          1,
	MeleeAttackPower:       1,
	RangedAttackPower:      3,
	RangedAttacks:          8,
	RangedAttackDamageType: DamageRangedPhysical,
	Defense:                2,
	Resistance:             6,
	HitPoints:              1,
	Abilities:              []Ability{MakeAbility(AbilityForester), MakeAbilityValue(AbilityToHit, 10)},
	RequiredBuildings:      []building.Building{building.BuildingBarracks, building.BuildingSawmill},
	Race:                   data.RaceHighElf,
}
var MagicSpirit Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            34,
	CombatLbxFile:    "figure11.lbx",
	CombatIndex:      32,
	Name:             "Magic Spirit",
	Realm:            data.ArcaneMagic,
	UpkeepMana:       1,
	MovementSpeed:    1,
	Swimming:         true,
	Count:            1,
	MeleeAttackPower: 5,
	Defense:          4,
	Resistance:       8,
	HitPoints:        10,
	Abilities:        []Ability{MakeAbility(AbilityMeld), MakeAbility(AbilityNonCorporeal)},
	Race:             data.RaceFantastic,
}
var Manticore Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             55,
	CombatLbxFile:     "figures4.lbx",
	CombatIndex:       80,
	Name:              "Manticores",
	ProductionCost:    160,
	UpkeepGold:        4,
	UpkeepFood:        1,
	Count:             2,
	Flying:            true,
	MovementSpeed:     2,
	MeleeAttackPower:  5,
	Defense:           3,
	Resistance:        6,
	HitPoints:         7,
	Abilities:         []Ability{MakeAbility(AbilityScouting), MakeAbilityValue(AbilityPoisonTouch, 6)},
	RequiredBuildings: []building.Building{building.BuildingBarracks, building.BuildingAnimistsGuild},
	Race:              data.RaceBeastmen,
}
var Minotaur Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             56,
	CombatLbxFile:     "figures4.lbx",
	CombatIndex:       88,
	Name:              "Minotaurs",
	ProductionCost:    200,
	UpkeepGold:        4,
	UpkeepFood:        1,
	Count:             2,
	MovementSpeed:     1,
	MeleeAttackPower:  12,
	Defense:           4,
	Resistance:        7,
	HitPoints:         12,
	Abilities:         []Ability{MakeAbilityValue(AbilityToHit, 20), MakeAbility(AbilityLargeShield)},
	RequiredBuildings: []building.Building{building.BuildingArmorersGuild},
	Race:              data.RaceBeastmen,
}
var Nagas Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            77,
	Name:             "Nagas",
	CombatLbxFile:    "figure14.lbx",
	CombatIndex:      16,
	UpkeepMana:       2,
	Realm:            data.SorceryMagic,
	MovementSpeed:    1,
	Count:            2,
	MeleeAttackPower: 4,
	Defense:          3,
	Resistance:       7,
	HitPoints:        6,
	Race:             data.RaceFantastic,
	Abilities: []Ability{
		MakeAbilityValue(AbilityToHit, 10),
		MakeAbilityValue(AbilityPoisonTouch, 4),
		MakeAbility(AbilityFirstStrike),
	},
}
var NightStalker Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            47,
	Name:             "Night Stalker",
	CombatLbxFile:    "figure12.lbx",
	CombatIndex:      16,
	UpkeepMana:       1,
	Count:            1,
	MovementSpeed:    2,
	MeleeAttackPower: 7,
	Defense:          3,
	Resistance:       8,
	HitPoints:        10,
	Abilities: []Ability{
		MakeAbilityValue(AbilityToHit, 10),
		MakeAbilityValue(AbilityDeathGaze, 2),
		MakeAbility(AbilityInvisibility),
		MakeAbility(AbilityPoisonImmunity),
		MakeAbility(AbilityIllusionsImmunity),
		MakeAbility(AbilityColdImmunity),
		MakeAbility(AbilityDeathImmunity),
	},
	Realm: data.DeathMagic,
	Race:  data.RaceFantastic,
}
var Nightblades Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             63,
	CombatLbxFile:     "figures5.lbx",
	CombatIndex:       24,
	Name:              "Nightblades",
	ProductionCost:    120,
	UpkeepGold:        3,
	UpkeepFood:        1,
	Count:             6,
	MovementSpeed:     1,
	MeleeAttackPower:  4,
	Defense:           3,
	Resistance:        7,
	HitPoints:         1,
	Abilities:         []Ability{MakeAbility(AbilityInvisibility), MakeAbilityValue(AbilityPoisonTouch, 1)},
	RequiredBuildings: []building.Building{building.BuildingFightersGuild},
	Race:              data.RaceDarkElf,
}
var Nightmares Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  65,
	CombatLbxFile:          "figures5.lbx",
	CombatIndex:            40,
	Name:                   "Nightmares",
	ProductionCost:         160,
	UpkeepGold:             4,
	UpkeepFood:             1,
	Count:                  2,
	MovementSpeed:          3,
	Flying:                 true,
	MeleeAttackPower:       8,
	RangedAttackPower:      5,
	RangedAttacks:          4,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                4,
	Resistance:             8,
	HitPoints:              10,
	Abilities:              []Ability{MakeAbility(AbilityScouting)},
	RequiredBuildings:      []building.Building{building.BuildingFantasticStable},
	Race:                   data.RaceDarkElf,
}
var NomadBowmen Unit = Unit{
	LbxFile:                "units2.lbx",
	Index:                  9,
	CombatLbxFile:          "figures9.lbx",
	CombatIndex:            72,
	Name:                   "Bowmen",
	ProductionCost:         30,
	UpkeepGold:             1,
	UpkeepFood:             1,
	Count:                  6,
	MovementSpeed:          1,
	MeleeAttackPower:       1,
	RangedAttackPower:      1,
	RangedAttacks:          8,
	RangedAttackDamageType: DamageRangedPhysical,
	Defense:                1,
	Resistance:             4,
	HitPoints:              1,
	RequiredBuildings:      []building.Building{building.BuildingBarracks, building.BuildingSawmill},
	Race:                   data.RaceNomad,
}
var NomadHorsebowemen Unit = Unit{
	LbxFile:                "units2.lbx",
	Index:                  13,
	CombatLbxFile:          "figures9.lbx",
	CombatIndex:            104,
	Name:                   "Horsebowmen",
	ProductionCost:         60,
	UpkeepGold:             2,
	UpkeepFood:             1,
	Count:                  4,
	MovementSpeed:          2,
	MeleeAttackPower:       4,
	RangedAttackPower:      2,
	RangedAttacks:          8,
	RangedAttackDamageType: DamageRangedPhysical,
	Defense:                2,
	Resistance:             4,
	HitPoints:              3,
	RequiredBuildings:      []building.Building{building.BuildingBarracks, building.BuildingStables},
	Race:                   data.RaceNomad,
}
var NomadPikemen Unit = Unit{
	LbxFile:           "units2.lbx",
	Index:             14,
	CombatLbxFile:     "figures9.lbx",
	CombatIndex:       112,
	Name:              "Pikemen",
	ProductionCost:    80,
	UpkeepGold:        2,
	UpkeepFood:        1,
	Count:             8,
	MovementSpeed:     1,
	MeleeAttackPower:  5,
	Defense:           3,
	Resistance:        5,
	HitPoints:         1,
	Abilities:         []Ability{MakeAbility(AbilityNegateFirstStrike), MakeAbility(AbilityArmorPiercing)},
	RequiredBuildings: []building.Building{building.BuildingFightersGuild},
	Race:              data.RaceNomad,
}
var NomadPriest Unit = Unit{
	LbxFile:           "units2.lbx",
	Index:             10,
	CombatLbxFile:     "figures9.lbx",
	CombatIndex:       80,
	Name:              "Priests",
	ProductionCost:    100,
	UpkeepGold:        2,
	UpkeepFood:        1,
	Count:             4,
	MovementSpeed:     1,
	MeleeAttackPower:  3,
	RangedAttackPower: 4,
	RangedAttacks:     4,

	RangedAttackDamageType: DamageRangedMagical,
	Defense:                4,
	Resistance:             7,
	HitPoints:              1,
	Abilities:              []Ability{MakeAbility(AbilityHealer), MakeAbility(AbilityPurify), MakeAbilityValue(AbilityHealingSpell, 1)},
	RequiredBuildings:      []building.Building{building.BuildingParthenon},
	Race:                   data.RaceNomad,
}
var NomadRangers Unit = Unit{
	LbxFile:                "units2.lbx",
	Index:                  15,
	CombatLbxFile:          "figure10.lbx",
	CombatIndex:            0,
	Name:                   "Rangers",
	ProductionCost:         120,
	UpkeepGold:             3,
	UpkeepFood:             1,
	Count:                  4,
	MovementSpeed:          2,
	MeleeAttackPower:       4,
	RangedAttackPower:      3,
	RangedAttacks:          8,
	RangedAttackDamageType: DamageRangedPhysical,
	Defense:                4,
	Resistance:             6,
	HitPoints:              2,
	Abilities:              []Ability{MakeAbility(AbilityPathfinding)},
	RequiredBuildings:      []building.Building{building.BuildingBarracks, building.BuildingAnimistsGuild},
	Race:                   data.RaceNomad,
}
var NomadSettlers Unit = Unit{
	LbxFile:        "units2.lbx",
	Index:          12,
	CombatLbxFile:  "figures9.lbx",
	CombatIndex:    96,
	Name:           "Settlers",
	ProductionCost: 60,
	UpkeepGold:     2,
	UpkeepFood:     1,
	Count:          1,
	MovementSpeed:  1,
	Defense:        1,
	Resistance:     4,
	HitPoints:      10,
	Abilities:      []Ability{MakeAbility(AbilityCreateOutpost)},
	Race:           data.RaceNomad,
}
var NomadSpearmen Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            7,
	CombatLbxFile:    "figures9.lbx",
	CombatIndex:      56,
	Name:             "Spearmen",
	ProductionCost:   10,
	UpkeepFood:       1,
	Count:            8,
	MovementSpeed:    1,
	MeleeAttackPower: 1,
	Defense:          2,
	Resistance:       4,
	HitPoints:        1,
	Race:             data.RaceNomad,
}
var NomadSwordsmen Unit = Unit{
	LbxFile:           "units2.lbx",
	Index:             8,
	CombatLbxFile:     "figures9.lbx",
	CombatIndex:       64,
	Name:              "Swordsmen",
	ProductionCost:    20,
	UpkeepGold:        1,
	UpkeepFood:        1,
	Count:             6,
	MovementSpeed:     1,
	MeleeAttackPower:  3,
	Defense:           2,
	Resistance:        4,
	HitPoints:         1,
	Abilities:         []Ability{MakeAbility(AbilityLargeShield)},
	RequiredBuildings: []building.Building{building.BuildingBarracks, building.BuildingSmithy},
	Race:              data.RaceNomad,
}
var OrcBowmen Unit = Unit{
	LbxFile:                "units2.lbx",
	Index:                  20,
	CombatLbxFile:          "figure10.lbx",
	CombatIndex:            40,
	Name:                   "Bowmen",
	ProductionCost:         30,
	UpkeepGold:             1,
	UpkeepFood:             1,
	Count:                  6,
	MovementSpeed:          1,
	MeleeAttackPower:       1,
	RangedAttackPower:      1,
	RangedAttacks:          8,
	RangedAttackDamageType: DamageRangedPhysical,
	Defense:                1,
	Resistance:             4,
	HitPoints:              1,
	RequiredBuildings:      []building.Building{building.BuildingBarracks, building.BuildingSawmill},
	Race:                   data.RaceOrc,
}
var OrcCavalry Unit = Unit{
	LbxFile:           "units2.lbx",
	Index:             21,
	CombatLbxFile:     "figure10.lbx",
	CombatIndex:       48,
	Name:              "Calvary",
	ProductionCost:    40,
	UpkeepGold:        1,
	UpkeepFood:        1,
	Count:             4,
	MovementSpeed:     2,
	MeleeAttackPower:  4,
	Defense:           2,
	Resistance:        4,
	HitPoints:         3,
	RequiredBuildings: []building.Building{building.BuildingBarracks, building.BuildingStables},
	Race:              data.RaceOrc,
}
var OrcEngineers Unit = Unit{
	LbxFile:           "units2.lbx",
	Index:             24,
	CombatLbxFile:     "figure10.lbx",
	CombatIndex:       72,
	Name:              "Engineers",
	ProductionCost:    40,
	UpkeepGold:        1,
	UpkeepFood:        1,
	Count:             6,
	MovementSpeed:     1,
	MeleeAttackPower:  1,
	Defense:           1,
	Resistance:        4,
	HitPoints:         1,
	Abilities:         []Ability{MakeAbility(AbilityConstruction), MakeAbility(AbilityWallCrusher)},
	RequiredBuildings: []building.Building{building.BuildingBuildersHall},
	Race:              data.RaceOrc,
}
var OrcHalberdiers Unit = Unit{
	LbxFile:           "units2.lbx",
	Index:             19,
	CombatLbxFile:     "figure10.lbx",
	CombatIndex:       32,
	Name:              "Halberdiers",
	ProductionCost:    40,
	UpkeepGold:        1,
	UpkeepFood:        1,
	Count:             6,
	MovementSpeed:     1,
	MeleeAttackPower:  4,
	Defense:           3,
	Resistance:        4,
	HitPoints:         1,
	RequiredBuildings: []building.Building{building.BuildingArmory},
	Race:              data.RaceOrc,
}
var OrcMagicians Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            23,
	CombatLbxFile:    "figure10.lbx",
	CombatIndex:      64,
	Name:             "Magicians",
	ProductionCost:   120,
	UpkeepGold:       3,
	UpkeepFood:       1,
	Count:            4,
	MovementSpeed:    1,
	MeleeAttackPower: 1,

	RangedAttackPower:      5,
	RangedAttacks:          4,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                3,
	Resistance:             8,
	HitPoints:              1,
	Abilities:              []Ability{MakeAbility(AbilityMissileImmunity), MakeAbilityValue(AbilityFireballSpell, 1)},
	RequiredBuildings:      []building.Building{building.BuildingWizardsGuild},
	Race:                   data.RaceOrc,
}
var OrcSettlers Unit = Unit{
	LbxFile:        "units2.lbx",
	Index:          25,
	CombatLbxFile:  "figure10.lbx",
	CombatIndex:    80,
	Name:           "Settlers",
	ProductionCost: 60,
	UpkeepGold:     2,
	UpkeepFood:     1,
	Count:          1,
	MovementSpeed:  1,
	Defense:        1,
	Resistance:     4,
	HitPoints:      10,
	Abilities:      []Ability{MakeAbility(AbilityCreateOutpost)},
	Race:           data.RaceOrc,
}
var OrcShamans Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            22,
	CombatLbxFile:    "figure10.lbx",
	CombatIndex:      56,
	Name:             "Shamans",
	ProductionCost:   60,
	UpkeepGold:       2,
	UpkeepFood:       1,
	Count:            4,
	MovementSpeed:    1,
	MeleeAttackPower: 2,

	RangedAttackPower:      2,
	RangedAttacks:          4,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                3,
	Resistance:             6,
	HitPoints:              1,
	Abilities:              []Ability{MakeAbility(AbilityHealer), MakeAbility(AbilityPurify)},
	RequiredBuildings:      []building.Building{building.BuildingShrine},
	Race:                   data.RaceOrc,
}
var OrcSpearmen Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            17,
	CombatLbxFile:    "figure10.lbx",
	CombatIndex:      16,
	Name:             "Spearmen",
	ProductionCost:   10,
	UpkeepFood:       1,
	Count:            8,
	MovementSpeed:    1,
	MeleeAttackPower: 1,
	Defense:          2,
	Resistance:       4,
	HitPoints:        1,
	Race:             data.RaceOrc,
}
var OrcSwordsmen Unit = Unit{
	LbxFile:           "units2.lbx",
	Index:             18,
	CombatLbxFile:     "figure10.lbx",
	CombatIndex:       24,
	Name:              "Swordsmen",
	ProductionCost:    20,
	UpkeepGold:        1,
	UpkeepFood:        1,
	Count:             6,
	MovementSpeed:     1,
	MeleeAttackPower:  3,
	Defense:           2,
	Resistance:        4,
	HitPoints:         1,
	Abilities:         []Ability{MakeAbility(AbilityLargeShield)},
	RequiredBuildings: []building.Building{building.BuildingBarracks, building.BuildingSmithy},
	Race:              data.RaceOrc,
}
var Paladin Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             113,
	CombatLbxFile:     "figures8.lbx",
	CombatIndex:       64,
	Name:              "Paladins",
	ProductionCost:    200,
	UpkeepGold:        4,
	UpkeepFood:        1,
	Count:             4,
	MovementSpeed:     2,
	MeleeAttackPower:  6,
	Defense:           5,
	Resistance:        8,
	HitPoints:         4,
	RequiredBuildings: []building.Building{building.BuildingArmorersGuild, building.BuildingCathedral},
	Abilities: []Ability{
		MakeAbility(AbilityMagicImmunity),
		MakeAbilityValue(AbilityHolyBonus, 1),
		MakeAbility(AbilityArmorPiercing),
		MakeAbility(AbilityFirstStrike),
	},
	Race: data.RaceHighMen,
}
var Pegasai Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  103,
	CombatLbxFile:          "figures7.lbx",
	CombatIndex:            104,
	Name:                   "Pegasai",
	ProductionCost:         160,
	UpkeepGold:             4,
	UpkeepFood:             1,
	Count:                  2,
	Flying:                 true,
	MovementSpeed:          3,
	MeleeAttackPower:       5,
	RangedAttackPower:      3,
	RangedAttacks:          8,
	RangedAttackDamageType: DamageRangedPhysical,
	Defense:                4,
	Resistance:             8,
	HitPoints:              5,
	RequiredBuildings:      []building.Building{building.BuildingFantasticStable},
	Race:                   data.RaceHighElf,
}
var PhantomBeast Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            71,
	Race:             data.RaceFantastic,
	CombatLbxFile:    "figure13.lbx",
	CombatIndex:      88,
	Realm:            data.SorceryMagic,
	Name:             "Phantom Beast",
	Count:            1,
	MeleeAttackPower: 18,
	MovementSpeed:    2,
	Resistance:       8,
	HitPoints:        20,

	Abilities: []Ability{
		MakeAbilityValue(AbilityToHit, 10),
		MakeAbility(AbilityPoisonImmunity),
		MakeAbility(AbilityDeathImmunity),
		MakeAbility(AbilityStoningImmunity),
		MakeAbility(AbilityNonCorporeal),
		MakeAbility(AbilityIllusion),
	},
}
var PhantomWarrior Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            72,
	CombatLbxFile:    "figure13.lbx",
	CombatIndex:      96,
	Realm:            data.SorceryMagic,
	Name:             "Phantom Warriors",
	MovementSpeed:    1,
	Count:            6,
	MeleeAttackPower: 3,
	HitPoints:        1,
	Resistance:       6,
	Abilities: []Ability{
		MakeAbility(AbilityPoisonImmunity),
		MakeAbility(AbilityDeathImmunity),
		MakeAbility(AbilityStoningImmunity),
		MakeAbility(AbilityNonCorporeal),
		MakeAbility(AbilityIllusion),
	},
	Race: data.RaceFantastic,
}
var ShadowDemon Unit = Unit{
	LbxFile:                "units2.lbx",
	Index:                  51,
	CombatLbxFile:          "figure12.lbx",
	CombatIndex:            48,
	Name:                   "Shadow Demons",
	UpkeepMana:             7,
	Count:                  4,
	Flying:                 true,
	MovementSpeed:          1,
	MeleeAttackPower:       5,
	RangedAttackPower:      4,
	RangedAttacks:          8,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                4,
	Resistance:             8,
	HitPoints:              5,
	Abilities: []Ability{
		MakeAbilityValue(AbilityToHit, 20),
		MakeAbility(AbilityPlaneShift),
		MakeAbility(AbilityNonCorporeal),
		MakeAbility(AbilityRegeneration),
		MakeAbility(AbilityPoisonImmunity),
		MakeAbility(AbilityWeaponImmunity),
		MakeAbility(AbilityIllusionsImmunity),
		MakeAbility(AbilityColdImmunity),
		MakeAbility(AbilityDeathImmunity),
	},
	Realm: data.DeathMagic,
	Race:  data.RaceFantastic,
}
var Skeleton Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            45,
	CombatLbxFile:    "figure12.lbx",
	CombatIndex:      0,
	Name:             "Skeletons",
	UpkeepMana:       1,
	Count:            6,
	MovementSpeed:    3,
	MeleeAttackPower: 3,
	Defense:          4,
	Resistance:       5,
	HitPoints:        1,
	Abilities: []Ability{
		MakeAbilityValue(AbilityToHit, 10),
		MakeAbility(AbilityPoisonImmunity),
		MakeAbility(AbilityMissileImmunity),
		MakeAbility(AbilityIllusionsImmunity),
		MakeAbility(AbilityColdImmunity),
		MakeAbility(AbilityDeathImmunity),
	},
	Race:  data.RaceFantastic,
	Realm: data.DeathMagic,
}
var SkyDrake Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            76,
	Name:             "SkyDrake",
	Realm:            data.SorceryMagic,
	CombatLbxFile:    "figure14.lbx",
	CombatIndex:      8,
	UpkeepMana:       25,
	Count:            1,
	MovementSpeed:    4,
	Flying:           true,
	MeleeAttackPower: 20,
	Defense:          10,
	Resistance:       14,
	HitPoints:        25,
	Race:             data.RaceFantastic,
	Abilities: []Ability{
		MakeAbilityValue(AbilityToHit, 30),
		MakeAbilityValue(AbilityLightningBreath, 20),
		MakeAbility(AbilityMagicImmunity),
		MakeAbility(AbilityIllusionsImmunity),
	},
}
var Slingers Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  94,
	CombatLbxFile:          "figures7.lbx",
	CombatIndex:            32,
	Name:                   "Slingers",
	ProductionCost:         100,
	UpkeepGold:             2,
	UpkeepFood:             1,
	Count:                  8,
	MovementSpeed:          1,
	MeleeAttackPower:       1,
	RangedAttackPower:      2,
	RangedAttacks:          6,
	RangedAttackDamageType: DamageRangedBoulder,
	Defense:                2,
	Resistance:             6,
	HitPoints:              1,
	Abilities:              []Ability{MakeAbility(AbilityLucky)},
	RequiredBuildings:      []building.Building{building.BuildingArmory},
	Race:                   data.RaceHalfling,
}
var Sprite Unit = Unit{
	LbxFile:                "units2.lbx",
	Name:                   "Sprites",
	Index:                  60,
	CombatLbxFile:          "figure15.lbx",
	CombatIndex:            8,
	Count:                  4,
	UpkeepMana:             3,
	Realm:                  data.NatureMagic,
	MeleeAttackPower:       4,
	RangedAttacks:          4,
	RangedAttackPower:      3,
	RangedAttackDamageType: DamageRangedMagical,
	RangeAttackIndex:       88,
	MovementSpeed:          2,
	Defense:                2,
	Resistance:             8,
	HitPoints:              1,
	Flying:                 true,
	Abilities:              []Ability{MakeAbilityValue(AbilityToHit, 10), MakeAbility(AbilityForester)},
	Race:                   data.RaceFantastic,
}
var StagBeetle Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             119,
	CombatLbxFile:     "figures8.lbx",
	CombatIndex:       112,
	Name:              "Stag Beetle",
	RequiredBuildings: []building.Building{building.BuildingArmorersGuild, building.BuildingFantasticStable},
	ProductionCost:    160,
	UpkeepGold:        4,
	UpkeepFood:        1,
	Count:             1,
	MovementSpeed:     2,
	MeleeAttackPower:  15,
	Defense:           7,
	Resistance:        6,
	HitPoints:         20,
	Abilities:         []Ability{MakeAbilityValue(AbilityFireBreath, 5)},
	Race:              data.RaceKlackon,
}
var SteamCannon Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  80,
	CombatLbxFile:          "figures6.lbx",
	CombatIndex:            40,
	Name:                   "Steam Cannon",
	ProductionCost:         180,
	UpkeepGold:             4,
	UpkeepFood:             1,
	Count:                  1,
	MovementSpeed:          1,
	RangedAttackPower:      12,
	RangedAttacks:          10,
	RangedAttackDamageType: DamageRangedBoulder,
	Defense:                2,
	Resistance:             9,
	HitPoints:              12,
	RequiredBuildings:      []building.Building{building.BuildingMinersGuild},
	Race:                   data.RaceDwarf,
}
var StoneGiant Unit = Unit{
	LbxFile:                "units2.lbx",
	Index:                  64,
	Name:                   "Stone Giant",
	CombatLbxFile:          "figure13.lbx",
	CombatIndex:            32,
	UpkeepMana:             9,
	Count:                  1,
	Realm:                  data.NatureMagic,
	MovementSpeed:          2,
	MeleeAttackPower:       15,
	RangedAttackPower:      15,
	RangedAttackDamageType: DamageRangedBoulder,
	RangedAttacks:          2,
	Defense:                8,
	Resistance:             9,
	HitPoints:              20,
	Abilities: []Ability{
		MakeAbilityValue(AbilityToHit, 20),
		MakeAbility(AbilityMountaineer),
		MakeAbility(AbilityPoisonImmunity),
		MakeAbility(AbilityStoningImmunity),
		MakeAbility(AbilityWallCrusher),
	},
	Race: data.RaceFantastic,
}
var StormGiant Unit = Unit{
	LbxFile:                "units2.lbx",
	Index:                  73,
	Name:                   "Storm Giant",
	CombatLbxFile:          "figure13.lbx",
	CombatIndex:            104,
	UpkeepMana:             10,
	Count:                  1,
	Realm:                  data.SorceryMagic,
	MovementSpeed:          2,
	MeleeAttackPower:       12,
	RangedAttackPower:      10,
	RangedAttacks:          4,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                7,
	Resistance:             9,
	HitPoints:              20,

	Abilities: []Ability{
		MakeAbilityValue(AbilityToHit, 20),
		MakeAbility(AbilityWallCrusher),
		MakeAbility(AbilityArmorPiercing),
	},
	Race: data.RaceFantastic,
}
var Trireme Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             35,
	CombatLbxFile:     "figures3.lbx",
	CombatIndex:       40,
	Name:              "Trireme",
	ProductionCost:    60,
	UpkeepGold:        2,
	UpkeepFood:        1,
	Count:             1,
	Swimming:          true,
	MovementSpeed:     2,
	MeleeAttackPower:  6,
	Defense:           4,
	Resistance:        4,
	HitPoints:         10,
	Abilities:         []Ability{MakeAbilityValue(AbilityTransport, 2)},
	RequiredBuildings: []building.Building{building.BuildingShipwrightsGuild},
	Race:              data.RaceAll,
}
var TrollHalberdiers Unit = Unit{
	LbxFile:           "units2.lbx",
	Index:             29,
	CombatLbxFile:     "figure10.lbx",
	CombatIndex:       112,
	Name:              "Halberdiers",
	ProductionCost:    120,
	UpkeepGold:        3,
	UpkeepFood:        1,
	Count:             4,
	MovementSpeed:     1,
	MeleeAttackPower:  6,
	Defense:           3,
	Resistance:        7,
	HitPoints:         4,
	Abilities:         []Ability{MakeAbility(AbilityNegateFirstStrike), MakeAbility(AbilityRegeneration)},
	RequiredBuildings: []building.Building{building.BuildingArmory},
	Race:              data.RaceTroll,
}
var TrollSettlers Unit = Unit{
	LbxFile:        "units2.lbx",
	Index:          31,
	CombatLbxFile:  "figure11.lbx",
	CombatIndex:    8,
	Name:           "Settlers",
	ProductionCost: 180,
	UpkeepGold:     4,
	UpkeepFood:     1,
	Count:          1,
	MovementSpeed:  1,
	Defense:        1,
	Resistance:     7,
	HitPoints:      40,
	Abilities:      []Ability{MakeAbility(AbilityCreateOutpost), MakeAbility(AbilityRegeneration)},
	Race:           data.RaceTroll,
}
var TrollShamans Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            30,
	CombatLbxFile:    "figure11.lbx",
	CombatIndex:      0,
	Name:             "Shamans",
	ProductionCost:   180,
	UpkeepGold:       4,
	UpkeepFood:       1,
	Count:            4,
	MovementSpeed:    1,
	MeleeAttackPower: 4,

	RangedAttackPower:      2,
	RangedAttacks:          4,
	RangedAttackDamageType: DamageRangedMagical,
	Defense:                3,
	Resistance:             8,
	HitPoints:              4,
	Abilities:              []Ability{MakeAbility(AbilityHealer), MakeAbility(AbilityPurify), MakeAbility(AbilityRegeneration)},
	RequiredBuildings:      []building.Building{building.BuildingShrine},
	Race:                   data.RaceTroll,
}
var TrollSpearmen Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            27,
	CombatLbxFile:    "figure10.lbx",
	CombatIndex:      96,
	Name:             "Spearmen",
	ProductionCost:   30,
	UpkeepFood:       1,
	Count:            4,
	MovementSpeed:    1,
	MeleeAttackPower: 3,
	Defense:          2,
	Resistance:       7,
	HitPoints:        4,
	Abilities:        []Ability{MakeAbility(AbilityRegeneration)},
	Race:             data.RaceTroll,
}
var TrollSwordsmen Unit = Unit{
	LbxFile:           "units2.lbx",
	Index:             28,
	CombatLbxFile:     "figure10.lbx",
	CombatIndex:       104,
	Name:              "Swordsmen",
	ProductionCost:    60,
	UpkeepGold:        2,
	UpkeepFood:        1,
	Count:             4,
	MovementSpeed:     1,
	MeleeAttackPower:  5,
	Defense:           2,
	Resistance:        7,
	HitPoints:         4,
	Abilities:         []Ability{MakeAbility(AbilityLargeShield), MakeAbility(AbilityRegeneration)},
	RequiredBuildings: []building.Building{building.BuildingBarracks, building.BuildingSmithy},
	Race:              data.RaceTroll,
}
var Unicorn Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            55,
	CombatLbxFile:    "figure12.lbx",
	CombatIndex:      80,
	Name:             "Unicorns",
	UpkeepMana:       5,
	Count:            4,
	MovementSpeed:    2,
	MeleeAttackPower: 5,
	Defense:          3,
	Resistance:       7,
	HitPoints:        6,
	Abilities: []Ability{
		MakeAbilityValue(AbilityToHit, 20),
		MakeAbilityValue(AbilityResistanceToAll, 2),
		MakeAbility(AbilityTeleporting),
		MakeAbility(AbilityPoisonImmunity),
	},
	Race:  data.RaceFantastic,
	Realm: data.LifeMagic,
}
var UnitNone Unit = Unit{
	Index: -1,
}
var WarBear Unit = Unit{
	LbxFile:          "units2.lbx",
	Name:             "War Bears",
	Index:            59,
	CombatLbxFile:    "figure15.lbx",
	CombatIndex:      0,
	Count:            2,
	UpkeepMana:       2,
	Realm:            data.NatureMagic,
	MeleeAttackPower: 7,
	Defense:          3,
	Resistance:       6,
	HitPoints:        8,
	MovementSpeed:    2,
	Abilities:        []Ability{MakeAbility(AbilityForester)},
	Race:             data.RaceFantastic,
}
var WarMammoths Unit = Unit{
	LbxFile:           "units2.lbx",
	Index:             33,
	CombatLbxFile:     "figure11.lbx",
	CombatIndex:       24,
	Name:              "War Mammoths",
	ProductionCost:    240,
	UpkeepGold:        5,
	UpkeepFood:        1,
	Count:             2,
	MovementSpeed:     2,
	MeleeAttackPower:  10,
	Defense:           6,
	Resistance:        9,
	HitPoints:         12,
	Abilities:         []Ability{MakeAbility(AbilityWallCrusher), MakeAbility(AbilityFirstStrike)},
	RequiredBuildings: []building.Building{building.BuildingArmorersGuild, building.BuildingStables},
	Race:              data.RaceTroll,
}
var WarTrolls Unit = Unit{
	LbxFile:           "units2.lbx",
	Index:             32,
	CombatLbxFile:     "figure11.lbx",
	CombatIndex:       16,
	Name:              "War Trolls",
	ProductionCost:    160,
	UpkeepGold:        4,
	UpkeepFood:        1,
	Count:             4,
	MovementSpeed:     2,
	MeleeAttackPower:  8,
	Defense:           4,
	Resistance:        8,
	HitPoints:         5,
	Abilities:         []Ability{MakeAbility(AbilityRegeneration)},
	RequiredBuildings: []building.Building{building.BuildingFightersGuild},
	Race:              data.RaceTroll,
}
var Warlocks Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  64,
	CombatLbxFile:          "figures5.lbx",
	CombatIndex:            32,
	Name:                   "Warlocks",
	ProductionCost:         240,
	UpkeepGold:             5,
	UpkeepFood:             1,
	Count:                  4,
	MovementSpeed:          1,
	MeleeAttackPower:       1,
	RangedAttackDamageType: DamageRangedMagical,
	RangeAttackIndex:       16,
	RangedAttackPower:      7,
	RangedAttacks:          4,
	RangeAttackSound:       RangeAttackSoundFireball,
	Defense:                4,
	Resistance:             9,
	HitPoints:              1,
	MovementSound:          MovementSoundShuffle,
	Abilities:              []Ability{MakeAbilityValue(AbilityDoomBoltSpell, 1), MakeAbility(AbilityMissileImmunity)},
	RequiredBuildings:      []building.Building{building.BuildingWizardsGuild},
	Race:                   data.RaceDarkElf,
}
var Warship Unit = Unit{
	LbxFile:                "units1.lbx",
	Index:                  38,
	CombatLbxFile:          "figures3.lbx",
	CombatIndex:            64,
	Name:                   "Warship",
	ProductionCost:         160,
	UpkeepGold:             4,
	UpkeepFood:             1,
	Count:                  1,
	MovementSpeed:          4,
	Swimming:               true,
	MeleeAttackPower:       10,
	RangedAttackPower:      10,
	RangedAttacks:          99,
	RangedAttackDamageType: DamageRangedBoulder,
	Defense:                5,
	Resistance:             7,
	HitPoints:              30,
	Abilities:              []Ability{MakeAbilityValue(AbilityTransport, 3), MakeAbility(AbilityLongRange)},
	RequiredBuildings:      []building.Building{building.BuildingMaritimeGuild},
	Race:                   data.RaceAll,
}
var WereWolf Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            48,
	CombatLbxFile:    "figure12.lbx",
	CombatIndex:      24,
	Name:             "WereWolves",
	UpkeepMana:       5,
	Count:            6,
	MovementSpeed:    2,
	MeleeAttackPower: 5,
	Defense:          1,
	Resistance:       6,
	HitPoints:        5,
	Abilities: []Ability{
		MakeAbilityValue(AbilityToHit, 10),
		MakeAbility(AbilityRegeneration),
		MakeAbility(AbilityPoisonImmunity),
		MakeAbility(AbilityIllusionsImmunity),
		MakeAbility(AbilityColdImmunity),
		MakeAbility(AbilityDeathImmunity),
		MakeAbility(AbilityWeaponImmunity),
	},
	Realm: data.DeathMagic,
	Race:  data.RaceFantastic,
}
var WolfRiders Unit = Unit{
	LbxFile:           "units1.lbx",
	Index:             88,
	CombatLbxFile:     "figures6.lbx",
	CombatIndex:       104,
	Name:              "Wolf Riders",
	ProductionCost:    100,
	UpkeepGold:        2,
	UpkeepFood:        1,
	Count:             4,
	MovementSpeed:     3,
	MeleeAttackPower:  7,
	Defense:           3,
	Resistance:        4,
	HitPoints:         5,
	RequiredBuildings: []building.Building{building.BuildingBarracks, building.BuildingStables},
	Race:              data.RaceGnoll,
}
var Wraith Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            50,
	CombatLbxFile:    "figure12.lbx",
	CombatIndex:      40,
	Name:             "Wraiths",
	UpkeepMana:       5,
	Count:            4,
	Flying:           true,
	MovementSpeed:    2,
	MeleeAttackPower: 7,
	Defense:          6,
	Resistance:       8,
	HitPoints:        8,
	Abilities: []Ability{
		MakeAbilityValue(AbilityToHit, 20),
		MakeAbilityValue(AbilityLifeSteal, -3),
		MakeAbility(AbilityPoisonImmunity),
		MakeAbility(AbilityIllusionsImmunity),
		MakeAbility(AbilityColdImmunity),
		MakeAbility(AbilityDeathImmunity),
		MakeAbility(AbilityWeaponImmunity),
		MakeAbility(AbilityNonCorporeal),
	},
	Realm: data.DeathMagic,
	Race:  data.RaceFantastic,
}
var WyvernRiders Unit = Unit{
	LbxFile:           "units2.lbx",
	Index:             26,
	CombatLbxFile:     "figure10.lbx",
	CombatIndex:       88,
	Name:              "Wyvern Riders",
	ProductionCost:    200,
	UpkeepGold:        4,
	UpkeepFood:        1,
	Count:             2,
	Flying:            true,
	MovementSpeed:     3,
	MeleeAttackPower:  5,
	Defense:           5,
	Resistance:        7,
	HitPoints:         10,
	Abilities:         []Ability{MakeAbilityValue(AbilityPoisonTouch, 6)},
	RequiredBuildings: []building.Building{building.BuildingFantasticStable},
	Race:              data.RaceOrc,
}
var Zombie Unit = Unit{
	LbxFile:          "units2.lbx",
	Index:            54,
	CombatLbxFile:    "figure12.lbx",
	CombatIndex:      72,
	Name:             "Zombies",
	Count:            6,
	MovementSpeed:    1,
	MeleeAttackPower: 4,
	Defense:          3,
	Resistance:       3,
	HitPoints:        3,
	Abilities: []Ability{
		MakeAbilityValue(AbilityToHit, 10),
		MakeAbility(AbilityPoisonImmunity),
		MakeAbility(AbilityIllusionsImmunity),
		MakeAbility(AbilityColdImmunity),
		MakeAbility(AbilityDeathImmunity),
	},
	Realm: data.DeathMagic,
	Race:  data.RaceFantastic,
}

func ChooseRandomUnit

func ChooseRandomUnit(race data.Race) Unit

func UnitsByRace

func UnitsByRace(race data.Race) []Unit

func (*Unit) Equals

func (unit *Unit) Equals(other Unit) bool

func (*Unit) GetAbilities

func (unit *Unit) GetAbilities() []Ability

func (*Unit) GetBaseDefense

func (unit *Unit) GetBaseDefense() int

func (*Unit) GetBaseHitPoints

func (unit *Unit) GetBaseHitPoints() int

func (*Unit) GetBaseMeleeAttackPower

func (unit *Unit) GetBaseMeleeAttackPower() int

func (*Unit) GetBaseRangedAttackPower

func (unit *Unit) GetBaseRangedAttackPower() int

func (*Unit) GetBaseResistance

func (unit *Unit) GetBaseResistance() int

func (*Unit) GetCombatIndex

func (unit *Unit) GetCombatIndex(facing Facing) int

func (*Unit) GetCombatLbxFile

func (unit *Unit) GetCombatLbxFile() string

func (*Unit) GetCombatRangeIndex

func (unit *Unit) GetCombatRangeIndex(facing Facing) int

func (*Unit) GetCount

func (unit *Unit) GetCount() int

func (*Unit) GetDefense

func (unit *Unit) GetDefense() int

func (*Unit) GetHitPoints

func (unit *Unit) GetHitPoints() int

func (*Unit) GetMaxHealth

func (unit *Unit) GetMaxHealth() int

maximum health is the number of figures * the number of hit points per figure

func (*Unit) GetMeleeAttackPower

func (unit *Unit) GetMeleeAttackPower() int

func (*Unit) GetMovementSpeed

func (unit *Unit) GetMovementSpeed() int

func (*Unit) GetName

func (unit *Unit) GetName() string

func (*Unit) GetProductionCost

func (unit *Unit) GetProductionCost() int

func (*Unit) GetRangedAttackDamageType

func (unit *Unit) GetRangedAttackDamageType() Damage

func (*Unit) GetRangedAttackPower

func (unit *Unit) GetRangedAttackPower() int

func (*Unit) GetResistance

func (unit *Unit) GetResistance() int

func (*Unit) GetUpkeepFood

func (unit *Unit) GetUpkeepFood() int

func (*Unit) GetUpkeepGold

func (unit *Unit) GetUpkeepGold() int

func (*Unit) GetUpkeepMana

func (unit *Unit) GetUpkeepMana() int

func (*Unit) HasAbility

func (unit *Unit) HasAbility(ability AbilityType) bool

func (*Unit) IsNone

func (unit *Unit) IsNone() bool

func (*Unit) IsSettlers

func (unit *Unit) IsSettlers() bool

func (*Unit) String

func (unit *Unit) String() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL