Documentation
¶
Index ¶
- Variables
- func GetUnitBackgroundImage(banner data.BannerType, imageCache *util.ImageCache) (*ebiten.Image, error)
- func MakeUpdateUnitColorsFunc(banner data.BannerType) util.ImageTransformFunc
- type AttackSound
- type BusyStatus
- type Damage
- type ExperienceData
- type ExperienceInfo
- type Facing
- type HeroExperienceLevel
- type MovementSound
- type NoExperienceInfo
- type NormalExperienceLevel
- type NormalizeCoordinateFunc
- type OverworldUnit
- func (unit *OverworldUnit) AddEnchantment(enchantment data.UnitEnchantment)
- func (unit *OverworldUnit) AddExperience(amount int)
- func (unit *OverworldUnit) AdjustHealth(amount int)
- func (unit *OverworldUnit) CanTouchAttack(damage Damage) bool
- func (unit *OverworldUnit) GetAbilities() []data.Ability
- func (unit *OverworldUnit) GetAbilityValue(ability data.AbilityType) float32
- func (unit *OverworldUnit) GetArtifactSlots() []artifact.ArtifactSlot
- func (unit *OverworldUnit) GetArtifacts() []*artifact.Artifact
- func (unit *OverworldUnit) GetAttackSound() AttackSound
- func (unit *OverworldUnit) GetBanner() data.BannerType
- func (unit *OverworldUnit) GetBaseDefense() int
- func (unit *OverworldUnit) GetBaseHitPoints() int
- func (unit *OverworldUnit) GetBaseMeleeAttackPower() int
- func (unit *OverworldUnit) GetBaseRangedAttackPower() int
- func (unit *OverworldUnit) GetBaseResistance() int
- func (unit *OverworldUnit) GetBusy() BusyStatus
- func (unit *OverworldUnit) GetCombatIndex(facing Facing) int
- func (unit *OverworldUnit) GetCombatLbxFile() string
- func (unit *OverworldUnit) GetCombatRangeIndex(facing Facing) int
- func (unit *OverworldUnit) GetCount() int
- func (unit *OverworldUnit) GetDefense() int
- func (unit *OverworldUnit) GetEnchantments() []data.UnitEnchantment
- func (unit *OverworldUnit) GetExperience() int
- func (unit *OverworldUnit) GetExperienceData() ExperienceData
- func (unit *OverworldUnit) GetExperienceLevel() NormalExperienceLevel
- func (unit *OverworldUnit) GetHealth() int
- func (unit *OverworldUnit) GetHeroExperienceLevel() HeroExperienceLevel
- func (unit *OverworldUnit) GetHitPoints() int
- func (unit *OverworldUnit) GetKnownSpells() []string
- func (unit *OverworldUnit) GetLbxFile() string
- func (unit *OverworldUnit) GetLbxIndex() int
- func (unit *OverworldUnit) GetMaxHealth() int
- func (unit *OverworldUnit) GetMeleeAttackPower() int
- func (unit *OverworldUnit) GetMovementSound() MovementSound
- func (unit *OverworldUnit) GetMovementSpeed() int
- func (unit *OverworldUnit) GetMovesLeft() fraction.Fraction
- func (unit *OverworldUnit) GetName() string
- func (unit *OverworldUnit) GetPlane() data.Plane
- func (unit *OverworldUnit) GetProductionCost() int
- func (unit *OverworldUnit) GetRace() data.Race
- func (unit *OverworldUnit) GetRangeAttackSound() RangeAttackSound
- func (unit *OverworldUnit) GetRangedAttackDamageType() Damage
- func (unit *OverworldUnit) GetRangedAttackPower() int
- func (unit *OverworldUnit) GetRangedAttacks() int
- func (unit *OverworldUnit) GetRawUnit() Unit
- func (unit *OverworldUnit) GetRealm() data.MagicType
- func (unit *OverworldUnit) GetResistance() int
- func (unit *OverworldUnit) GetSightRange() int
- func (unit *OverworldUnit) GetSpellChargeSpells() map[spellbook.Spell]int
- func (unit *OverworldUnit) GetTitle() string
- func (unit *OverworldUnit) GetToHitMelee() int
- func (unit *OverworldUnit) GetUpkeepFood() int
- func (unit *OverworldUnit) GetUpkeepGold() int
- func (unit *OverworldUnit) GetUpkeepMana() int
- func (unit *OverworldUnit) GetWeaponBonus() data.WeaponBonus
- func (unit *OverworldUnit) GetX() int
- func (unit *OverworldUnit) GetY() int
- func (unit *OverworldUnit) HasAbility(ability data.AbilityType) bool
- func (unit *OverworldUnit) HasEnchantment(enchantment data.UnitEnchantment) bool
- func (unit *OverworldUnit) HasItemAbility(ability data.ItemAbility) bool
- func (unit *OverworldUnit) HasMovesLeft() bool
- func (unit *OverworldUnit) IsFlying() bool
- func (unit *OverworldUnit) IsHero() bool
- func (unit *OverworldUnit) IsLandWalker() bool
- func (unit *OverworldUnit) IsSailing() bool
- func (unit *OverworldUnit) IsSwimmer() bool
- func (unit *OverworldUnit) IsUndead() bool
- func (unit *OverworldUnit) Move(dx int, dy int, cost fraction.Fraction, normalize NormalizeCoordinateFunc)
- func (unit *OverworldUnit) NaturalHeal(rate float64)
- func (unit *OverworldUnit) RemoveEnchantment(toRemove data.UnitEnchantment)
- func (unit *OverworldUnit) ResetMoves()
- func (unit *OverworldUnit) SetBanner(banner data.BannerType)
- func (unit *OverworldUnit) SetBusy(busy BusyStatus)
- func (unit *OverworldUnit) SetId(id uint64)
- func (unit *OverworldUnit) SetMovesLeft(moves fraction.Fraction)
- func (unit *OverworldUnit) SetPlane(plane data.Plane)
- func (unit *OverworldUnit) SetWeaponBonus(bonus data.WeaponBonus)
- func (unit *OverworldUnit) SetX(x int)
- func (unit *OverworldUnit) SetY(y int)
- type RangeAttackSound
- type StackUnit
- type Unit
- func (unit *Unit) Equals(other Unit) bool
- func (unit *Unit) GetAbilities() []data.Ability
- func (unit *Unit) GetAbilityValue(ability data.AbilityType) float32
- func (unit *Unit) GetBaseDefense() int
- func (unit *Unit) GetBaseHitPoints() int
- func (unit *Unit) GetBaseMeleeAttackPower() int
- func (unit *Unit) GetBaseRangedAttackPower() int
- func (unit *Unit) GetBaseResistance() int
- func (unit *Unit) GetCombatIndex(facing Facing) int
- func (unit *Unit) GetCombatLbxFile() string
- func (unit *Unit) GetCombatRangeIndex(facing Facing) int
- func (unit *Unit) GetCount() int
- func (unit *Unit) GetDefense() int
- func (unit *Unit) GetHitPoints() int
- func (unit *Unit) GetMaxHealth() int
- func (unit *Unit) GetMeleeAttackPower() int
- func (unit *Unit) GetMovementSpeed() int
- func (unit *Unit) GetName() string
- func (unit *Unit) GetProductionCost() int
- func (unit *Unit) GetRangedAttackDamageType() Damage
- func (unit *Unit) GetRangedAttackPower() int
- func (unit *Unit) GetResistance() int
- func (unit *Unit) GetUpkeepFood() int
- func (unit *Unit) GetUpkeepGold() int
- func (unit *Unit) GetUpkeepMana() int
- func (unit *Unit) HasAbility(ability data.AbilityType) bool
- func (unit *Unit) IsNone() bool
- func (unit *Unit) IsSettlers() bool
- func (unit *Unit) String() string
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 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 BusyStatus ¶
type BusyStatus int
reasons a unit might be unable to move
const ( BusyStatusNone BusyStatus = iota BusyStatusBuildRoad // for engineers BusyStatusPurify // for priests BusyStatusPatrol // any unit can patrol )
type ExperienceData ¶
type ExperienceInfo ¶
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 MovementSoundFly2 MovementSoundBigSteps MovementSoundBigSteps2 MovementSoundMerge MovementSoundShuffle MovementSoundBoat MovementSoundSilent )
func (MovementSound) LbxIndex ¶
func (sound MovementSound) LbxIndex() int
type NoExperienceInfo ¶
type NoExperienceInfo struct { }
func (*NoExperienceInfo) Crusade ¶
func (noInfo *NoExperienceInfo) Crusade() bool
func (*NoExperienceInfo) HasWarlord ¶
func (noInfo *NoExperienceInfo) HasWarlord() bool
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 // to get the level, use the conversion functions in experience.go Experience int WeaponBonus data.WeaponBonus Undead bool Busy BusyStatus Enchantments []data.UnitEnchantment }
func MakeOverworldUnit ¶
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) CanTouchAttack ¶
func (unit *OverworldUnit) CanTouchAttack(damage Damage) bool
func (*OverworldUnit) GetAbilities ¶
func (unit *OverworldUnit) GetAbilities() []data.Ability
func (*OverworldUnit) GetAbilityValue ¶
func (unit *OverworldUnit) GetAbilityValue(ability data.AbilityType) float32
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) GetBusy ¶
func (unit *OverworldUnit) GetBusy() BusyStatus
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) GetHeroExperienceLevel ¶
func (unit *OverworldUnit) GetHeroExperienceLevel() HeroExperienceLevel
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) 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) GetRealm ¶
func (unit *OverworldUnit) GetRealm() data.MagicType
func (*OverworldUnit) GetResistance ¶
func (unit *OverworldUnit) GetResistance() int
func (*OverworldUnit) GetSightRange ¶
func (unit *OverworldUnit) GetSightRange() int
func (*OverworldUnit) GetSpellChargeSpells ¶
func (unit *OverworldUnit) GetSpellChargeSpells() map[spellbook.Spell]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 data.AbilityType) bool
an ability can either be inherint to the unit or granted by an enchantment
func (*OverworldUnit) HasEnchantment ¶
func (unit *OverworldUnit) HasEnchantment(enchantment data.UnitEnchantment) bool
func (*OverworldUnit) HasItemAbility ¶
func (unit *OverworldUnit) HasItemAbility(ability data.ItemAbility) 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) IsLandWalker ¶
func (unit *OverworldUnit) IsLandWalker() bool
func (*OverworldUnit) IsSailing ¶
func (unit *OverworldUnit) IsSailing() bool
func (*OverworldUnit) IsSwimmer ¶
func (unit *OverworldUnit) IsSwimmer() bool
func (*OverworldUnit) IsUndead ¶
func (unit *OverworldUnit) IsUndead() bool
func (*OverworldUnit) Move ¶
func (unit *OverworldUnit) Move(dx int, dy int, cost fraction.Fraction, normalize NormalizeCoordinateFunc)
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) SetBanner ¶
func (unit *OverworldUnit) SetBanner(banner data.BannerType)
func (*OverworldUnit) SetBusy ¶
func (unit *OverworldUnit) SetBusy(busy BusyStatus)
func (*OverworldUnit) SetId ¶
func (unit *OverworldUnit) SetId(id uint64)
func (*OverworldUnit) SetMovesLeft ¶
func (unit *OverworldUnit) SetMovesLeft(moves fraction.Fraction)
func (*OverworldUnit) SetPlane ¶
func (unit *OverworldUnit) SetPlane(plane data.Plane)
func (*OverworldUnit) SetWeaponBonus ¶
func (unit *OverworldUnit) SetWeaponBonus(bonus data.WeaponBonus)
func (*OverworldUnit) SetX ¶
func (unit *OverworldUnit) SetX(x int)
func (*OverworldUnit) SetY ¶
func (unit *OverworldUnit) SetY(y int)
type RangeAttackSound ¶
type RangeAttackSound int
const ( RangeAttackSoundNone RangeAttackSound = iota RangeAttackSoundFireball RangeAttackSoundMagic RangeAttackSoundMagic2 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) IsFlying() bool IsSwimmer() bool IsSailing() bool IsLandWalker() bool GetName() string GetTitle() string GetPlane() data.Plane SetPlane(data.Plane) GetMovesLeft() fraction.Fraction SetMovesLeft(fraction.Fraction) GetRace() data.Race GetRealm() data.MagicType GetUpkeepGold() int GetUpkeepFood() int GetUpkeepMana() int GetEnchantments() []data.UnitEnchantment AddEnchantment(data.UnitEnchantment) HasEnchantment(data.UnitEnchantment) bool RemoveEnchantment(data.UnitEnchantment) IsUndead() bool GetBanner() data.BannerType SetBanner(data.BannerType) SetWeaponBonus(data.WeaponBonus) GetWeaponBonus() data.WeaponBonus GetX() int GetY() int SetX(int) SetY(int) IsHero() bool Move(int, int, fraction.Fraction, NormalizeCoordinateFunc) GetLbxFile() string GetLbxIndex() int GetKnownSpells() []string HasAbility(data.AbilityType) bool HasItemAbility(data.ItemAbility) bool GetAbilityValue(data.AbilityType) float32 GetAbilities() []data.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 GetExperienceLevel() NormalExperienceLevel GetHeroExperienceLevel() HeroExperienceLevel GetRawUnit() Unit GetToHitMelee() int CanTouchAttack(Damage) bool GetArtifactSlots() []artifact.ArtifactSlot GetArtifacts() []*artifact.Artifact GetSpellChargeSpells() map[spellbook.Spell]int GetBusy() BusyStatus SetBusy(BusyStatus) GetSightRange() int }
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 // true if the unit can swim, but also be on land (like lizardmen) Swimming bool // true for water-only units, such as trieme Sailing bool Abilities []data.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 // For fantastic units CastingCost int }
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, MovementSound: MovementSoundFly, AttackSound: AttackSoundMonster2, MovementSpeed: 5, MeleeAttackPower: 15, Defense: 8, Resistance: 9, HitPoints: 10, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityToHit, 10), data.MakeAbility(data.AbilityPoisonImmunity), data.MakeAbility(data.AbilityStoningImmunity), data.MakeAbility(data.AbilityWeaponImmunity), data.MakeAbility(data.AbilityInvisibility), }, CastingCost: 50, }
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, MovementSound: MovementSoundFly, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundLaunch, RangeAttackIndex: 32, MovementSpeed: 4, MeleeAttackPower: 5, RangedAttackPower: 10, RangedAttacks: 10, RangedAttackDamageType: DamageRangedBoulder, Defense: 5, Resistance: 8, HitPoints: 20, Abilities: []data.Ability{data.MakeAbilityValue(data.AbilityScouting, 2), data.MakeAbility(data.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, MovementSound: MovementSoundFly2, AttackSound: AttackSoundNormal, MovementSpeed: 3, MeleeAttackPower: 13, Defense: 7, Resistance: 8, HitPoints: 15, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityToHit, 20), data.MakeAbilityValue(data.AbilityHolyBonus, 1), data.MakeAbility(data.AbilityIllusionsImmunity), data.MakeAbility(data.AbilityDispelEvil), }, Race: data.RaceFantastic, Realm: data.LifeMagic, CastingCost: 550, }
var ArchAngel Unit = Unit{ LbxFile: "units2.lbx", Index: 58, CombatLbxFile: "figure12.lbx", CombatIndex: 104, Name: "Arch Angel", UpkeepMana: 20, Count: 1, Flying: true, MovementSound: MovementSoundFly2, AttackSound: AttackSoundNormal, 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: []data.Ability{ data.MakeAbilityValue(data.AbilityToHit, 30), data.MakeAbilityValue(data.AbilityCaster, 40), data.MakeAbilityValue(data.AbilityHolyBonus, 2), data.MakeAbility(data.AbilityIllusionsImmunity), }, Race: data.RaceFantastic, Realm: data.LifeMagic, CastingCost: 950, }
var BarbarianBowmen Unit = Unit{ LbxFile: "units1.lbx", Index: 41, Name: "Bowmen", CombatLbxFile: "figures3.lbx", CombatIndex: 88, ProductionCost: 30, UpkeepGold: 1, UpkeepFood: 1, Count: 6, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundArrow, RangeAttackIndex: 8, 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, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, MovementSpeed: 2, MeleeAttackPower: 4, Defense: 2, Resistance: 5, HitPoints: 3, Abilities: []data.Ability{data.MakeAbility(data.AbilityFirstStrike), data.MakeAbilityValue(data.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, AttackSound: AttackSoundNormal, MovementSound: MovementSoundShuffle, Abilities: []data.Ability{data.MakeAbility(data.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, MovementSound: MovementSoundShuffle, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic, RangeAttackIndex: 88, MovementSpeed: 1, MeleeAttackPower: 2, RangedAttackPower: 2, RangedAttacks: 4, RangedAttackDamageType: DamageRangedMagical, Defense: 3, Resistance: 7, HitPoints: 1, Abilities: []data.Ability{data.MakeAbility(data.AbilityHealer), data.MakeAbility(data.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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, MovementSpeed: 1, MeleeAttackPower: 1, Defense: 2, Resistance: 5, HitPoints: 1, Abilities: []data.Ability{data.MakeAbilityValue(data.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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, MovementSpeed: 1, MeleeAttackPower: 3, Defense: 2, Resistance: 5, HitPoints: 1, Abilities: []data.Ability{data.MakeAbility(data.AbilityLargeShield), data.MakeAbilityValue(data.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, MovementSound: MovementSoundBigSteps2, AttackSound: AttackSoundMonster2, MovementSpeed: 2, MeleeAttackPower: 15, Defense: 4, Resistance: 7, HitPoints: 30, Abilities: []data.Ability{data.MakeAbilityValue(data.AbilityToHit, 10), data.MakeAbilityValue(data.AbilityStoningGaze, -1)}, Race: data.RaceFantastic, CastingCost: 325, }
var BeastmenBowmen Unit = Unit{ LbxFile: "units1.lbx", Index: 49, CombatLbxFile: "figures4.lbx", CombatIndex: 32, Name: "Bowmen", ProductionCost: 60, UpkeepGold: 2, UpkeepFood: 1, Count: 6, MovementSound: MovementSoundMarching, MovementSpeed: 1, MeleeAttackPower: 2, RangedAttackPower: 1, RangedAttacks: 8, RangedAttackDamageType: DamageRangedPhysical, RangeAttackIndex: 8, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundArrow, 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, MovementSound: MovementSoundShuffle, AttackSound: AttackSoundNormal, MovementSpeed: 1, MeleeAttackPower: 2, Defense: 1, Resistance: 5, HitPoints: 2, Abilities: []data.Ability{data.MakeAbility(data.AbilityConstruction), data.MakeAbility(data.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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, 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, MovementSound: MovementSoundShuffle, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic, RangeAttackIndex: 72, MovementSpeed: 1, MeleeAttackPower: 2, RangedAttackPower: 5, RangedAttacks: 4, RangedAttackDamageType: DamageRangedMagical, Defense: 3, Resistance: 9, HitPoints: 2, Abilities: []data.Ability{data.MakeAbility(data.AbilityMissileImmunity), data.MakeAbilityValue(data.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, MovementSound: MovementSoundShuffle, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic, RangeAttackIndex: 88, MovementSpeed: 1, MeleeAttackPower: 4, RangedAttackPower: 4, RangedAttacks: 4, RangedAttackDamageType: DamageRangedMagical, Defense: 4, Resistance: 8, HitPoints: 2, Abilities: []data.Ability{data.MakeAbility(data.AbilityHealer), data.MakeAbility(data.AbilityPurify), data.MakeAbilityValue(data.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, AttackSound: AttackSoundNormal, MovementSound: MovementSoundShuffle, Abilities: []data.Ability{data.MakeAbility(data.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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, 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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, MovementSpeed: 1, MeleeAttackPower: 4, Defense: 2, Resistance: 5, HitPoints: 2, Abilities: []data.Ability{data.MakeAbility(data.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, MovementSound: MovementSoundBigSteps, AttackSound: AttackSoundMonster2, Realm: data.NatureMagic, MovementSpeed: 2, MeleeAttackPower: 25, Defense: 9, Resistance: 10, HitPoints: 45, Race: data.RaceFantastic, Abilities: []data.Ability{data.MakeAbilityValue(data.AbilityToHit, 20)}, CastingCost: 700, }
var Berserkers Unit = Unit{ LbxFile: "units1.lbx", Index: 45, CombatLbxFile: "figures4.lbx", CombatIndex: 0, Name: "Berserkers", ProductionCost: 120, UpkeepGold: 3, UpkeepFood: 1, Count: 6, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, MovementSpeed: 1, MeleeAttackPower: 7, Defense: 3, Resistance: 7, HitPoints: 3, Abilities: []data.Ability{data.MakeAbilityValue(data.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, MovementSound: MovementSoundShuffle, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundLaunch, RangeAttackIndex: 32, MovementSpeed: 1, RangedAttackPower: 10, RangedAttacks: 10, RangedAttackDamageType: DamageRangedBoulder, Defense: 2, Resistance: 4, HitPoints: 10, RequiredBuildings: []building.Building{building.BuildingMechaniciansGuild}, Abilities: []data.Ability{data.MakeAbility(data.AbilityWallCrusher), data.MakeAbility(data.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, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundArrow, RangeAttackIndex: 8, 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, MovementSound: MovementSoundShuffle, AttackSound: AttackSoundNormal, MovementSpeed: 1, UpkeepMana: 12, Flying: true, Count: 1, MeleeAttackPower: 1, Defense: 6, Resistance: 10, HitPoints: 15, Abilities: []data.Ability{ data.MakeAbility(data.AbilityCauseFear), data.MakeAbilityValue(data.AbilityPoisonTouch, 4), data.MakeAbilityValue(data.AbilityDoomGaze, 4), data.MakeAbilityValue(data.AbilityDeathGaze, 4), data.MakeAbilityValue(data.AbilityStoningGaze, 4), }, Race: data.RaceFantastic, CastingCost: 500, }
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, MovementSound: MovementSoundFly, AttackSound: AttackSoundMonster2, MeleeAttackPower: 7, Defense: 5, Resistance: 8, HitPoints: 8, Abilities: []data.Ability{data.MakeAbilityValue(data.AbilityFireBreath, 4), data.MakeAbilityValue(data.AbilityToHit, 10)}, Race: data.RaceFantastic, CastingCost: 350, }
var Cockatrices Unit = Unit{ LbxFile: "units2.lbx", Index: 61, Name: "Cockatrices", CombatLbxFile: "figure13.lbx", CombatIndex: 8, UpkeepMana: 8, Realm: data.NatureMagic, Count: 4, MovementSound: MovementSoundFly, AttackSound: AttackSoundMonster2, MovementSpeed: 2, Flying: true, MeleeAttackPower: 4, Defense: 3, Resistance: 7, HitPoints: 3, Abilities: []data.Ability{data.MakeAbilityValue(data.AbilityToHit, 10), data.MakeAbilityValue(data.AbilityStoningTouch, -3)}, Race: data.RaceFantastic, CastingCost: 275, }
var Colossus Unit = Unit{ LbxFile: "units2.lbx", Index: 65, Name: "Colossus", CombatLbxFile: "figure13.lbx", CombatIndex: 40, UpkeepMana: 17, Count: 1, Realm: data.NatureMagic, MovementSound: MovementSoundBigSteps, AttackSound: AttackSoundMonster2, RangeAttackSound: RangeAttackSoundLaunch, RangeAttackIndex: 32, MovementSpeed: 2, RangedAttackPower: 20, RangedAttacks: 2, RangedAttackDamageType: DamageRangedBoulder, MeleeAttackPower: 20, Defense: 10, Resistance: 15, HitPoints: 30, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityToHit, 30), data.MakeAbility(data.AbilityPoisonImmunity), data.MakeAbility(data.AbilityStoningImmunity), data.MakeAbility(data.AbilityWallCrusher), data.MakeAbility(data.AbilityFirstStrike), }, Race: data.RaceFantastic, CastingCost: 800, }
var DarkElfCavalry Unit = Unit{ LbxFile: "units1.lbx", Index: 60, CombatLbxFile: "figures5.lbx", CombatIndex: 0, Name: "Cavalry", ProductionCost: 100, UpkeepGold: 2, UpkeepFood: 1, Count: 4, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic2, RangeAttackIndex: 80, MovementSpeed: 2, MeleeAttackPower: 4, RangedAttackPower: 1, RangedAttacks: 4, RangedAttackDamageType: DamageRangedMagical, Defense: 2, Resistance: 7, HitPoints: 3, Abilities: []data.Ability{data.MakeAbility(data.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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic2, RangeAttackIndex: 80, 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, MovementSound: MovementSoundShuffle, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic2, RangeAttackIndex: 80, MovementSpeed: 1, MeleeAttackPower: 3, RangedAttackPower: 6, RangedAttacks: 4, RangedAttackDamageType: DamageRangedMagical, Defense: 4, Resistance: 10, HitPoints: 1, Abilities: []data.Ability{data.MakeAbility(data.AbilityHealer), data.MakeAbility(data.AbilityPurify), data.MakeAbilityValue(data.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, AttackSound: AttackSoundNormal, MovementSound: MovementSoundShuffle, Abilities: []data.Ability{data.MakeAbility(data.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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic2, RangeAttackIndex: 80, 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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic2, RangeAttackIndex: 80, MovementSpeed: 1, MeleeAttackPower: 3, RangedAttackPower: 1, RangedAttacks: 4, RangedAttackDamageType: DamageRangedMagical, Defense: 2, Resistance: 7, HitPoints: 1, Abilities: []data.Ability{data.MakeAbility(data.AbilityLargeShield)}, RequiredBuildings: []building.Building{building.BuildingBarracks, building.BuildingSmithy}, Race: data.RaceDarkElf, }
var DeathKnights Unit = Unit{ LbxFile: "units2.lbx", Index: 52, CombatLbxFile: "figure12.lbx", CombatIndex: 56, Name: "Death Knights", UpkeepMana: 8, Count: 4, Flying: true, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, MovementSpeed: 3, MeleeAttackPower: 9, Defense: 8, Resistance: 10, HitPoints: 8, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityToHit, 30), data.MakeAbilityValue(data.AbilityLifeSteal, -4), data.MakeAbility(data.AbilityArmorPiercing), data.MakeAbility(data.AbilityFirstStrike), data.MakeAbility(data.AbilityPoisonImmunity), data.MakeAbility(data.AbilityWeaponImmunity), data.MakeAbility(data.AbilityIllusionsImmunity), data.MakeAbility(data.AbilityColdImmunity), data.MakeAbility(data.AbilityDeathImmunity), }, Realm: data.DeathMagic, Race: data.RaceFantastic, CastingCost: 600, }
var Demon Unit = Unit{ LbxFile: "units2.lbx", Index: 49, Name: "Demon", Race: data.RaceFantastic, CombatLbxFile: "figure12.lbx", CombatIndex: 32, Count: 1, Realm: data.DeathMagic, MovementSound: MovementSoundFly2, AttackSound: AttackSoundNormal, MovementSpeed: 2, Flying: true, MeleeAttackPower: 14, Defense: 6, Resistance: 7, HitPoints: 12, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityToHit, 10), data.MakeAbility(data.AbilityPoisonImmunity), data.MakeAbility(data.AbilityIllusionsImmunity), data.MakeAbility(data.AbilityColdImmunity), data.MakeAbility(data.AbilityDeathImmunity), data.MakeAbility(data.AbilityWeaponImmunity), data.MakeAbility(data.AbilityMissileImmunity), }, }
var DemonLord Unit = Unit{ LbxFile: "units2.lbx", Index: 53, CombatLbxFile: "figure12.lbx", CombatIndex: 64, Name: "Demon Lord", UpkeepMana: 15, Count: 1, Flying: true, MovementSound: MovementSoundFly2, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic, RangeAttackIndex: 48, MovementSpeed: 2, MeleeAttackPower: 20, RangedAttackPower: 10, RangedAttacks: 8, RangedAttackDamageType: DamageRangedMagical, Defense: 10, Resistance: 12, HitPoints: 20, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityToHit, 30), data.MakeAbilityValue(data.AbilityLifeSteal, -5), data.MakeAbilityValue(data.AbilitySummonDemons, 3), data.MakeAbility(data.AbilityPoisonImmunity), data.MakeAbility(data.AbilityWeaponImmunity), data.MakeAbility(data.AbilityIllusionsImmunity), data.MakeAbility(data.AbilityColdImmunity), data.MakeAbility(data.AbilityDeathImmunity), data.MakeAbility(data.AbilityCauseFear), }, Realm: data.DeathMagic, Race: data.RaceFantastic, CastingCost: 1000, }
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, MovementSound: MovementSoundFly2, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic, RangeAttackIndex: 88, 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: []data.Ability{ data.MakeAbilityValue(data.AbilityToHit, 30), data.MakeAbilityValue(data.AbilityCaster, 20), data.MakeAbility(data.AbilityTeleporting), data.MakeAbility(data.AbilityWindWalking), }, Race: data.RaceFantastic, CastingCost: 650, }
var DoomBat Unit = Unit{ LbxFile: "units2.lbx", Index: 41, Name: "Doom Bat", CombatLbxFile: "figure11.lbx", CombatIndex: 88, MovementSound: MovementSoundFly, AttackSound: AttackSoundNormal, MovementSpeed: 4, UpkeepMana: 8, Realm: data.ChaosMagic, Flying: true, MeleeAttackPower: 10, Defense: 5, Resistance: 9, Count: 1, HitPoints: 20, Abilities: []data.Ability{data.MakeAbilityValue(data.AbilityToHit, 10), data.MakeAbility(data.AbilityImmolation)}, Race: data.RaceFantastic, CastingCost: 300, }
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, MovementSound: MovementSoundFly, AttackSound: AttackSoundNormal, MovementSpeed: 3, MeleeAttackPower: 8, Defense: 3, Resistance: 9, HitPoints: 10, Abilities: []data.Ability{data.MakeAbilityValue(data.AbilityScouting, 2), data.MakeAbilityValue(data.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, MovementSound: MovementSoundFly, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundArrow, RangeAttackIndex: 8, 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, MovementSound: MovementSoundFly, AttackSound: AttackSoundNormal, MovementSpeed: 2, MeleeAttackPower: 4, Defense: 4, Resistance: 6, HitPoints: 1, Abilities: []data.Ability{data.MakeAbilityValue(data.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, MovementSound: MovementSoundFly, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic, RangeAttackIndex: 72, MovementSpeed: 2, MeleeAttackPower: 1, RangedAttackPower: 5, RangedAttacks: 4, RangedAttackDamageType: DamageRangedMagical, Defense: 4, Resistance: 10, HitPoints: 1, Abilities: []data.Ability{data.MakeAbility(data.AbilityMissileImmunity), data.MakeAbilityValue(data.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, AttackSound: AttackSoundNormal, MovementSound: MovementSoundFly, Abilities: []data.Ability{data.MakeAbility(data.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, MovementSound: MovementSoundFly, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic, RangeAttackIndex: 88, MovementSpeed: 2, MeleeAttackPower: 2, RangedAttackPower: 2, RangedAttackDamageType: DamageRangedMagical, RangedAttacks: 4, Defense: 4, Resistance: 8, HitPoints: 1, Abilities: []data.Ability{data.MakeAbility(data.AbilityHealer), data.MakeAbility(data.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, MovementSound: MovementSoundFly, AttackSound: AttackSoundNormal, MovementSpeed: 2, MeleeAttackPower: 1, Defense: 3, Resistance: 6, HitPoints: 1, Abilities: []data.Ability{data.MakeAbilityValue(data.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, MovementSound: MovementSoundFly, AttackSound: AttackSoundNormal, MovementSpeed: 2, MeleeAttackPower: 3, Defense: 3, Resistance: 6, HitPoints: 1, Abilities: []data.Ability{data.MakeAbility(data.AbilityLargeShield), data.MakeAbilityValue(data.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: []data.Ability{data.MakeAbilityValue(data.AbilityFireBreath, 5)}, ProductionCost: 100, UpkeepGold: 2, UpkeepFood: 1, Count: 1, MovementSound: MovementSoundBigSteps2, AttackSound: AttackSoundNormal, 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, MovementSound: MovementSoundShuffle, AttackSound: AttackSoundNormal, MovementSpeed: 1, MeleeAttackPower: 1, Defense: 1, Resistance: 8, HitPoints: 3, Abilities: []data.Ability{data.MakeAbility(data.AbilityConstruction), data.MakeAbility(data.AbilityWallCrusher), data.MakeAbility(data.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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, MovementSpeed: 1, MeleeAttackPower: 4, Defense: 3, Resistance: 8, HitPoints: 3, Abilities: []data.Ability{data.MakeAbility(data.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, AttackSound: AttackSoundNormal, MovementSound: MovementSoundShuffle, Abilities: []data.Ability{data.MakeAbility(data.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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, MovementSpeed: 1, MeleeAttackPower: 3, Defense: 2, Resistance: 8, HitPoints: 3, Abilities: []data.Ability{data.MakeAbility(data.AbilityLargeShield), data.MakeAbility(data.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, MovementSound: MovementSoundBigSteps, AttackSound: AttackSoundMonster2, MeleeAttackPower: 25, Defense: 4, MovementSpeed: 1, Resistance: 8, HitPoints: 30, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityToHit, 10), data.MakeAbility(data.AbilityPoisonImmunity), data.MakeAbility(data.AbilityStoningImmunity), data.MakeAbility(data.AbilityWallCrusher), }, CastingCost: 60, }
var Efreet Unit = Unit{ LbxFile: "units2.lbx", Index: 42, Name: "Efreet", CombatLbxFile: "figure11.lbx", CombatIndex: 96, MovementSound: MovementSoundFly2, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic, RangeAttackIndex: 88, 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: []data.Ability{data.MakeAbility(data.AbilityFireImmunity), data.MakeAbilityValue(data.AbilityToHit, 20), data.MakeAbilityValue(data.AbilityCaster, 20)}, Race: data.RaceFantastic, CastingCost: 550, }
var ElvenLord Unit = Unit{ LbxFile: "units1.lbx", Index: 102, CombatLbxFile: "figures7.lbx", CombatIndex: 96, Name: "ElvenLord", ProductionCost: 160, UpkeepGold: 4, UpkeepFood: 1, Count: 4, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, MovementSpeed: 2, MeleeAttackPower: 5, Defense: 4, Resistance: 9, HitPoints: 3, Abilities: []data.Ability{data.MakeAbility(data.AbilityForester), data.MakeAbilityValue(data.AbilityToHit, 20), data.MakeAbility(data.AbilityArmorPiercing), data.MakeAbility(data.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, AttackSound: AttackSoundMonsterVsNormal, MovementSound: MovementSoundFly2, MovementSpeed: 1, MeleeAttackPower: 12, Defense: 4, Resistance: 6, HitPoints: 10, Abilities: []data.Ability{data.MakeAbility(data.AbilityFireImmunity), data.MakeAbility(data.AbilityPoisonImmunity), data.MakeAbility(data.AbilityStoningImmunity)}, CastingCost: 20, }
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, MovementSound: MovementSoundBigSteps2, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundLaunch, RangeAttackIndex: 32, MeleeAttackPower: 10, RangedAttackPower: 10, RangedAttackDamageType: DamageRangedBoulder, RangedAttacks: 2, HitPoints: 15, Defense: 5, Resistance: 7, Abilities: []data.Ability{data.MakeAbilityValue(data.AbilityToHit, 10), data.MakeAbility(data.AbilityMountaineer), data.MakeAbility(data.AbilityWallCrusher), data.MakeAbility(data.AbilityFireImmunity)}, Race: data.RaceFantastic, CastingCost: 150, }
var FloatingIsland Unit = Unit{ LbxFile: "units2.lbx", Index: 70, CombatLbxFile: "figure13.lbx", CombatIndex: 80, Count: 1, UpkeepMana: 5, MovementSound: MovementSoundSilent, MovementSpeed: 2, Name: "Floating Island", Swimming: true, Defense: 0, Resistance: 10, HitPoints: 45, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityTransport, 8), data.MakeAbility(data.AbilityPoisonImmunity), data.MakeAbility(data.AbilityDeathImmunity), data.MakeAbility(data.AbilityStoningImmunity), }, Race: data.RaceFantastic, Realm: data.SorceryMagic, CastingCost: 50, }
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, Sailing: true, MovementSound: MovementSoundBoat, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundArrow, RangeAttackIndex: 8, MovementSpeed: 3, MeleeAttackPower: 8, RangedAttackPower: 2, RangedAttacks: 8, RangedAttackDamageType: DamageRangedPhysical, Defense: 4, Resistance: 6, HitPoints: 20, RequiredBuildings: []building.Building{building.BuildingShipYard}, Abilities: []data.Ability{data.MakeAbilityValue(data.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, MovementSound: MovementSoundFly2, AttackSound: AttackSoundNormal, MovementSpeed: 2, Flying: true, MeleeAttackPower: 4, Count: 4, Defense: 8, Resistance: 7, HitPoints: 4, Abilities: []data.Ability{data.MakeAbilityValue(data.AbilityToHit, 10), data.MakeAbility(data.AbilityPoisonImmunity), data.MakeAbility(data.AbilityStoningImmunity)}, Race: data.RaceFantastic, CastingCost: 200, }
var Ghoul Unit = Unit{ LbxFile: "units2.lbx", Index: 46, CombatLbxFile: "figure12.lbx", CombatIndex: 8, Name: "Ghouls", UpkeepMana: 1, Count: 4, MovementSound: MovementSoundShuffle, AttackSound: AttackSoundNormal, MovementSpeed: 1, MeleeAttackPower: 4, Defense: 3, Resistance: 6, HitPoints: 3, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityToHit, 10), data.MakeAbilityValue(data.AbilityPoisonTouch, 1), data.MakeAbility(data.AbilityCreateUndead), data.MakeAbility(data.AbilityPoisonImmunity), data.MakeAbility(data.AbilityIllusionsImmunity), data.MakeAbility(data.AbilityColdImmunity), data.MakeAbility(data.AbilityDeathImmunity), }, Realm: data.DeathMagic, Race: data.RaceFantastic, CastingCost: 80, }
var GiantSpiders Unit = Unit{ LbxFile: "units2.lbx", Index: 63, Name: "Giant Spiders", CombatLbxFile: "figure13.lbx", CombatIndex: 24, Realm: data.NatureMagic, UpkeepMana: 4, Count: 2, MovementSound: MovementSoundShuffle, AttackSound: AttackSoundNormal, MovementSpeed: 2, MeleeAttackPower: 4, Defense: 3, Resistance: 7, HitPoints: 10, Abilities: []data.Ability{data.MakeAbilityValue(data.AbilityToHit, 10), data.MakeAbilityValue(data.AbilityWebSpell, 1), data.MakeAbilityValue(data.AbilityPoisonTouch, 4)}, Race: data.RaceFantastic, CastingCost: 200, }
var GnollBowmen Unit = Unit{ LbxFile: "units1.lbx", Index: 86, CombatLbxFile: "figures6.lbx", CombatIndex: 88, Name: "Bowmen", ProductionCost: 30, UpkeepGold: 1, UpkeepFood: 1, Count: 6, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundArrow, RangeAttackIndex: 8, 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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, MovementSpeed: 1, MeleeAttackPower: 6, Defense: 3, Resistance: 4, HitPoints: 1, Abilities: []data.Ability{data.MakeAbility(data.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, AttackSound: AttackSoundNormal, MovementSound: MovementSoundShuffle, Abilities: []data.Ability{data.MakeAbility(data.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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, 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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, MovementSpeed: 1, MeleeAttackPower: 5, Defense: 2, Resistance: 4, HitPoints: 1, Abilities: []data.Ability{data.MakeAbility(data.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, MovementSound: MovementSoundBigSteps2, AttackSound: AttackSoundNormal, MovementSpeed: 1, MeleeAttackPower: 12, Defense: 8, Resistance: 15, HitPoints: 20, Abilities: []data.Ability{data.MakeAbility(data.AbilityPoisonImmunity), data.MakeAbility(data.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, MovementSound: MovementSoundFly, AttackSound: AttackSoundMonster2, MeleeAttackPower: 8, Defense: 7, Resistance: 9, HitPoints: 9, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityToHit, 20), data.MakeAbilityValue(data.AbilityStoningGaze, -2), }, Race: data.RaceFantastic, CastingCost: 600, }
var GreatDrake Unit = Unit{ LbxFile: "units2.lbx", Index: 44, CombatLbxFile: "figure11.lbx", CombatIndex: 112, Name: "Great Drake", Race: data.RaceFantastic, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityFireBreath, 30), data.MakeAbilityValue(data.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, CastingCost: 900, }
var GreatWyrm Unit = Unit{ LbxFile: "units2.lbx", Index: 69, Name: "Great Wyrm", CombatLbxFile: "figure13.lbx", CombatIndex: 72, UpkeepMana: 20, Count: 1, MovementSound: MovementSoundMerge, AttackSound: AttackSoundMonster1, Realm: data.NatureMagic, MovementSpeed: 3, MeleeAttackPower: 25, Defense: 12, Resistance: 12, HitPoints: 45, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityToHit, 30), data.MakeAbilityValue(data.AbilityPoisonTouch, 15), data.MakeAbility(data.AbilityMerging), }, Race: data.RaceFantastic, CastingCost: 1000, }
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, MovementSound: MovementSoundFly, AttackSound: AttackSoundNormal, Defense: 5, Resistance: 7, HitPoints: 10, Abilities: []data.Ability{data.MakeAbility(data.AbilityArmorPiercing), data.MakeAbility(data.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, MovementSound: MovementSoundSilent, AttackSound: AttackSoundNormal, MeleeAttackPower: 10, Defense: 4, Resistance: 10, HitPoints: 10, Race: data.RaceFantastic, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityResistanceToAll, 1), data.MakeAbility(data.AbilityMeld), data.MakeAbility(data.AbilityNonCorporeal), }, Realm: data.LifeMagic, CastingCost: 80, }
var HalflingBowmen Unit = Unit{ LbxFile: "units1.lbx", Index: 91, CombatLbxFile: "figures7.lbx", CombatIndex: 8, Name: "Bowmen", ProductionCost: 45, UpkeepGold: 1, UpkeepFood: 1, Count: 6, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundArrow, RangeAttackIndex: 8, MovementSpeed: 1, MeleeAttackPower: 1, RangedAttackPower: 1, RangedAttacks: 8, RangedAttackDamageType: DamageRangedPhysical, Defense: 1, Resistance: 6, HitPoints: 1, Abilities: []data.Ability{data.MakeAbility(data.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, AttackSound: AttackSoundNormal, MovementSound: MovementSoundShuffle, Abilities: []data.Ability{data.MakeAbility(data.AbilityCreateOutpost), data.MakeAbility(data.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, MovementSound: MovementSoundShuffle, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic2, RangeAttackIndex: 88, MovementSpeed: 1, MeleeAttackPower: 1, RangedAttackPower: 2, RangedAttacks: 4, RangedAttackDamageType: DamageRangedMagical, Defense: 3, Resistance: 8, HitPoints: 1, Abilities: []data.Ability{data.MakeAbility(data.AbilityHealer), data.MakeAbility(data.AbilityPurify), data.MakeAbility(data.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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, MovementSpeed: 1, MeleeAttackPower: 1, Defense: 2, Resistance: 6, HitPoints: 1, Abilities: []data.Ability{data.MakeAbility(data.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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, MovementSpeed: 1, MeleeAttackPower: 2, Defense: 2, Resistance: 6, HitPoints: 1, Abilities: []data.Ability{data.MakeAbility(data.AbilityLargeShield), data.MakeAbility(data.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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, MovementSpeed: 1, MeleeAttackPower: 8, Defense: 4, Resistance: 9, HitPoints: 4, Abilities: []data.Ability{data.MakeAbility(data.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, MovementSound: MovementSoundShuffle, AttackSound: AttackSoundNormal, MovementSpeed: 2, Realm: data.ChaosMagic, MeleeAttackPower: 3, Count: 4, Defense: 2, Resistance: 6, HitPoints: 4, Abilities: []data.Ability{data.MakeAbilityValue(data.AbilityFireBreath, 3), data.MakeAbilityValue(data.AbilityToHit, 10)}, Race: data.RaceFantastic, CastingCost: 40, }
var HeroAerie Unit = Unit{ LbxFile: "units1.lbx", Index: 25, CombatLbxFile: "figures2.lbx", CombatIndex: 80, Name: "Aerie", Count: 1, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic, RangeAttackIndex: 72, MovementSpeed: 2, UpkeepGold: 10, MeleeAttackPower: 1, RangedAttackPower: 5, RangedAttackDamageType: DamageRangedMagical, Defense: 4, Resistance: 6, HitPoints: 5, Abilities: []data.Ability{data.MakeAbilityValue(data.AbilityCaster, 10), data.MakeAbility(data.AbilityMissileImmunity), data.MakeAbility(data.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, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundArrow, RangeAttackIndex: 8, MovementSpeed: 2, MeleeAttackPower: 5, RangedAttackPower: 8, RangedAttackDamageType: DamageRangedPhysical, RangedAttacks: 8, Defense: 6, Resistance: 6, HitPoints: 6, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityCaster, 5), data.MakeAbility(data.AbilityForester), data.MakeAbility(data.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, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic, RangeAttackIndex: 72, MovementSpeed: 2, MeleeAttackPower: 6, RangedAttackPower: 6, RangedAttackDamageType: DamageRangedMagical, Defense: 6, Resistance: 6, HitPoints: 6, Abilities: []data.Ability{data.MakeAbilityValue(data.AbilityCaster, 5)}, Race: data.RaceHero, }
var HeroBShan Unit = Unit{ LbxFile: "units1.lbx", Index: 3, CombatLbxFile: "figures1.lbx", CombatIndex: 24, Count: 1, Name: "B'Shan", MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundArrow, RangeAttackIndex: 8, MovementSpeed: 2, MeleeAttackPower: 4, RangedAttackPower: 4, RangedAttacks: 8, RangedAttackDamageType: DamageRangedPhysical, Defense: 4, Resistance: 6, HitPoints: 6, Abilities: []data.Ability{data.MakeAbility(data.AbilityNoble)}, Race: data.RaceHero, }
var HeroBahgtru Unit = Unit{ LbxFile: "units1.lbx", Index: 6, CombatLbxFile: "figures1.lbx", CombatIndex: 48, Count: 1, Name: "Bahgtru", UpkeepGold: 2, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, MovementSpeed: 2, MeleeAttackPower: 6, Defense: 4, Resistance: 6, HitPoints: 8, Race: data.RaceHero, Abilities: []data.Ability{data.MakeAbilityValue(data.AbilityThrown, 3), data.MakeAbility(data.AbilityMountaineer)}, }
var HeroBrax Unit = Unit{ LbxFile: "units1.lbx", Index: 0, CombatLbxFile: "figures1.lbx", CombatIndex: 0, UpkeepGold: 2, Name: "Brax", Count: 1, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, MovementSpeed: 2, MeleeAttackPower: 5, Defense: 4, Resistance: 10, HitPoints: 10, Abilities: []data.Ability{ data.MakeAbility(data.AbilityMountaineer), data.MakeAbility(data.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, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, MovementSpeed: 2, MeleeAttackPower: 6, Defense: 5, Resistance: 6, HitPoints: 10, Abilities: []data.Ability{ data.MakeAbility(data.AbilityLeadership), data.MakeAbility(data.AbilityLegendary), data.MakeAbility(data.AbilityArmsmaster), data.MakeAbility(data.AbilityConstitution), data.MakeAbility(data.AbilityMight), }, Race: data.RaceHero, }
var HeroElana Unit = Unit{ LbxFile: "units1.lbx", Index: 27, CombatLbxFile: "figures2.lbx", CombatIndex: 96, Count: 1, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic, RangeAttackIndex: 72, MovementSpeed: 2, MeleeAttackPower: 2, RangedAttackPower: 8, RangedAttackDamageType: DamageRangedMagical, Defense: 5, Resistance: 6, HitPoints: 5, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityCaster, 12.5), data.MakeAbility(data.AbilityHealer), data.MakeAbility(data.AbilityPurify), data.MakeAbility(data.AbilityArcanePower), data.MakeAbility(data.AbilitySuperPrayermaster), data.MakeAbility(data.AbilityCharmed), data.MakeAbility(data.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, MovementSound: MovementSoundFly, AttackSound: AttackSoundNormal, MovementSpeed: 3, MeleeAttackPower: 7, Defense: 5, Resistance: 6, HitPoints: 8, Abilities: []data.Ability{data.MakeAbility(data.AbilityMight), data.MakeAbilityValue(data.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, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic, RangeAttackIndex: 72, MeleeAttackPower: 1, RangedAttackPower: 8, RangedAttackDamageType: DamageRangedMagical, Defense: 5, Resistance: 6, HitPoints: 6, Abilities: []data.Ability{data.MakeAbilityValue(data.AbilityCaster, 7.5), data.MakeAbilityValue(data.AbilityScouting, 3), data.MakeAbility(data.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, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, MovementSpeed: 2, MeleeAttackPower: 5, Defense: 3, Resistance: 6, HitPoints: 9, Name: "Gunther", Race: data.RaceHero, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityThrown, 5), data.MakeAbility(data.AbilityMight), }, }
var HeroJaer Unit = Unit{ LbxFile: "units1.lbx", Index: 15, CombatLbxFile: "figures2.lbx", CombatIndex: 0, Count: 1, UpkeepGold: 4, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic, RangeAttackIndex: 72, MovementSpeed: 2, MeleeAttackPower: 1, RangedAttackPower: 6, RangedAttackDamageType: DamageRangedMagical, Defense: 5, Resistance: 6, HitPoints: 5, Abilities: []data.Ability{data.MakeAbilityValue(data.AbilityCaster, 7.5), data.MakeAbility(data.AbilityMissileImmunity), data.MakeAbility(data.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, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic, RangeAttackIndex: 16, MovementSpeed: 2, MeleeAttackPower: 1, RangedAttackPower: 8, RangedAttackDamageType: DamageRangedMagical, Defense: 5, Resistance: 10, HitPoints: 5, Name: "Malleus", Abilities: []data.Ability{data.MakeAbilityValue(data.AbilityCaster, 10), data.MakeAbility(data.AbilityMissileImmunity), data.MakeAbility(data.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, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundArrow, RangeAttackIndex: 8, MovementSpeed: 2, MeleeAttackPower: 6, RangedAttackPower: 5, RangedAttacks: 8, RangedAttackDamageType: DamageRangedPhysical, Defense: 5, Resistance: 6, HitPoints: 8, Abilities: []data.Ability{data.MakeAbilityValue(data.AbilityCaster, 5), data.MakeAbilityValue(data.AbilityScouting, 2), data.MakeAbility(data.AbilityPathfinding), data.MakeAbility(data.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, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic, RangeAttackIndex: 72, MovementSpeed: 2, MeleeAttackPower: 1, RangedAttackPower: 8, RangedAttackDamageType: DamageRangedMagical, Defense: 5, Resistance: 6, HitPoints: 5, Abilities: []data.Ability{data.MakeAbilityValue(data.AbilityCaster, 10), data.MakeAbility(data.AbilityMissileImmunity), data.MakeAbility(data.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, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, MovementSpeed: 2, MeleeAttackPower: 9, Defense: 5, Resistance: 6, HitPoints: 10, Abilities: []data.Ability{ data.MakeAbility(data.AbilityMagicImmunity), data.MakeAbility(data.AbilityFirstStrike), data.MakeAbility(data.AbilityArmorPiercing), data.MakeAbility(data.AbilityLegendary), data.MakeAbility(data.AbilityBlademaster), data.MakeAbility(data.AbilityConstitution), data.MakeAbility(data.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, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic, RangeAttackIndex: 72, MeleeAttackPower: 5, RangedAttackPower: 5, RangedAttackDamageType: DamageRangedMagical, Defense: 4, Resistance: 10, HitPoints: 8, Abilities: []data.Ability{data.MakeAbilityValue(data.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, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, MeleeAttackPower: 5, Defense: 4, UpkeepGold: 2, Resistance: 6, MovementSpeed: 2, Race: data.RaceHero, Abilities: []data.Ability{data.MakeAbilityValue(data.AbilityCaster, 5), data.MakeAbilityValue(data.AbilityScouting, 3), data.MakeAbility(data.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, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic, RangeAttackIndex: 72, MovementSpeed: 2, MeleeAttackPower: 1, RangedAttackPower: 7, RangedAttackDamageType: DamageRangedMagical, Defense: 5, Resistance: 6, HitPoints: 5, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityLifeSteal, 0), data.MakeAbilityValue(data.AbilityCaster, 12.5), data.MakeAbility(data.AbilityMissileImmunity), data.MakeAbility(data.AbilityArcanePower), }, Race: data.RaceHero, }
var HeroReywind Unit = Unit{ LbxFile: "units1.lbx", Index: 12, CombatLbxFile: "figures1.lbx", CombatIndex: 96, UpkeepGold: 3, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic, RangeAttackIndex: 72, MovementSpeed: 2, MeleeAttackPower: 4, RangedAttackPower: 4, RangedAttackDamageType: DamageRangedMagical, Defense: 4, Resistance: 6, HitPoints: 7, Count: 1, Name: "Reywind", Abilities: []data.Ability{data.MakeAbilityValue(data.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, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, MovementSpeed: 2, MeleeAttackPower: 9, Defense: 5, Resistance: 6, HitPoints: 8, Abilities: []data.Ability{ data.MakeAbility(data.AbilityMissileImmunity), data.MakeAbility(data.AbilityHealer), data.MakeAbility(data.AbilityFirstStrike), data.MakeAbility(data.AbilityArmorPiercing), data.MakeAbility(data.AbilityLegendary), data.MakeAbility(data.AbilitySuperMight), data.MakeAbility(data.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, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic, RangeAttackIndex: 72, MovementSpeed: 2, MeleeAttackPower: 3, RangedAttackPower: 6, RangedAttackDamageType: DamageRangedMagical, Defense: 5, Resistance: 7, HitPoints: 5, Abilities: []data.Ability{data.MakeAbility(data.AbilityHealer), data.MakeAbilityValue(data.AbilityCaster, 7.5)}, Race: data.RaceHero, }
var HeroShalla Unit = Unit{ LbxFile: "units1.lbx", Index: 22, CombatLbxFile: "figures2.lbx", CombatIndex: 56, Count: 1, UpkeepGold: 6, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, MovementSpeed: 2, MeleeAttackPower: 7, Defense: 4, Resistance: 6, HitPoints: 8, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityThrown, 4), data.MakeAbility(data.AbilityBlademaster), data.MakeAbility(data.AbilityMight), data.MakeAbility(data.AbilityCharmed), }, Name: "Shalla", Race: data.RaceHero, }
var HeroShinBo Unit = Unit{ LbxFile: "units1.lbx", Index: 20, CombatLbxFile: "figures2.lbx", CombatIndex: 40, Count: 1, UpkeepGold: 6, MovementSound: MovementSoundSilent, AttackSound: AttackSoundNormal, MovementSpeed: 2, MeleeAttackPower: 6, Defense: 5, Resistance: 6, HitPoints: 7, Abilities: []data.Ability{data.MakeAbility(data.AbilityInvisibility), data.MakeAbility(data.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, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic, RangeAttackIndex: 72, MovementSpeed: 2, MeleeAttackPower: 5, RangedAttackPower: 4, RangedAttacks: 8, RangedAttackDamageType: DamageRangedPhysical, Defense: 3, Resistance: 6, HitPoints: 7, Abilities: []data.Ability{data.MakeAbility(data.AbilityPathfinding), data.MakeAbility(data.AbilityBlademaster)}, Race: data.RaceHero, }
var HeroSirHarold Unit = Unit{ LbxFile: "units1.lbx", Index: 31, CombatLbxFile: "figures3.lbx", CombatIndex: 8, Count: 1, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, MovementSpeed: 2, MeleeAttackPower: 8, Defense: 5, Resistance: 6, HitPoints: 9, Abilities: []data.Ability{ data.MakeAbility(data.AbilitySuperLeadership), data.MakeAbility(data.AbilitySuperLegendary), data.MakeAbility(data.AbilityConstitution), data.MakeAbility(data.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, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, MovementSpeed: 2, MeleeAttackPower: 7, Defense: 5, Resistance: 6, HitPoints: 8, Abilities: []data.Ability{data.MakeAbility(data.AbilityLeadership), data.MakeAbility(data.AbilitySuperLegendary)}, Name: "Spyder", Race: data.RaceHero, }
var HeroTaki Unit = Unit{ LbxFile: "units1.lbx", Index: 11, CombatLbxFile: "figures1.lbx", CombatIndex: 88, Name: "Taki", UpkeepGold: 3, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, MovementSpeed: 2, Count: 1, MeleeAttackPower: 6, Defense: 5, Resistance: 6, HitPoints: 6, Abilities: []data.Ability{data.MakeAbility(data.AbilitySuperAgility)}, Race: data.RaceHero, }
var HeroTheria Unit = Unit{ LbxFile: "units1.lbx", Index: 9, CombatLbxFile: "figures1.lbx", CombatIndex: 72, Name: "Theria", Count: 1, UpkeepGold: 2, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, MovementSpeed: 2, MeleeAttackPower: 5, Defense: 5, Resistance: 6, HitPoints: 7, Abilities: []data.Ability{data.MakeAbility(data.AbilityAgility), data.MakeAbility(data.AbilityCharmed)}, Race: data.RaceHero, }
var HeroTorin Unit = Unit{ LbxFile: "units1.lbx", Index: 34, CombatLbxFile: "figures3.lbx", CombatIndex: 32, Name: "Torin", Count: 1, UpkeepMana: 12, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, MovementSpeed: 2, MeleeAttackPower: 12, Defense: 8, Resistance: 12, HitPoints: 12, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityCaster, 15), data.MakeAbility(data.AbilityMagicImmunity), data.MakeAbility(data.AbilityMissileImmunity), data.MakeAbility(data.AbilitySuperLeadership), data.MakeAbility(data.AbilityConstitution), data.MakeAbility(data.AbilitySuperMight), data.MakeAbility(data.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, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, MeleeAttackPower: 3, Defense: 5, Resistance: 6, HitPoints: 6, Abilities: []data.Ability{data.MakeAbilityValue(data.AbilityPoisonTouch, 5), data.MakeAbility(data.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, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, MeleeAttackPower: 4, Defense: 5, Resistance: 6, HitPoints: 6, MovementSpeed: 2, Abilities: []data.Ability{data.MakeAbilityValue(data.AbilityCaster, 5), data.MakeAbility(data.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, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundFireball, RangeAttackIndex: 16, MovementSpeed: 2, MeleeAttackPower: 8, RangedAttackPower: 8, RangedAttackDamageType: DamageRangedMagical, Defense: 5, Resistance: 9, HitPoints: 8, Count: 1, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityCaster, 10), data.MakeAbility(data.AbilityArmorPiercing), data.MakeAbility(data.AbilityConstitution), data.MakeAbility(data.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, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, RangeAttackIndex: 72, RangeAttackSound: RangeAttackSoundFireball, Defense: 5, Resistance: 10, HitPoints: 5, Abilities: []data.Ability{data.MakeAbilityValue(data.AbilityCaster, 15), data.MakeAbility(data.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, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, RangeAttackIndex: 72, RangeAttackSound: RangeAttackSoundFireball, Defense: 4, Resistance: 6, HitPoints: 5, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityCaster, 7.5), data.MakeAbility(data.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, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, MovementSpeed: 2, MeleeAttackPower: 4, Defense: 2, Resistance: 6, HitPoints: 3, RequiredBuildings: []building.Building{building.BuildingBarracks, building.BuildingStables}, Abilities: []data.Ability{data.MakeAbilityValue(data.AbilityToHit, 10), data.MakeAbility(data.AbilityForester), data.MakeAbility(data.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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, MovementSpeed: 1, MeleeAttackPower: 4, Defense: 3, Resistance: 6, HitPoints: 1, RequiredBuildings: []building.Building{building.BuildingArmory}, Abilities: []data.Ability{data.MakeAbility(data.AbilityForester), data.MakeAbilityValue(data.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, MovementSound: MovementSoundShuffle, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic, RangeAttackIndex: 72, MovementSpeed: 2, MeleeAttackPower: 1, RangedAttackPower: 5, RangedAttacks: 4, RangedAttackDamageType: DamageRangedMagical, Defense: 3, Resistance: 10, HitPoints: 1, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityFireballSpell, 1), data.MakeAbilityValue(data.AbilityToHit, 10), data.MakeAbility(data.AbilityMissileImmunity), data.MakeAbility(data.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: 10, Defense: 1, AttackSound: AttackSoundNormal, MovementSound: MovementSoundShuffle, Abilities: []data.Ability{data.MakeAbility(data.AbilityCreateOutpost), data.MakeAbilityValue(data.AbilityToHit, 10), data.MakeAbility(data.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: []data.Ability{data.MakeAbility(data.AbilityForester), data.MakeAbilityValue(data.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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, MovementSpeed: 1, MeleeAttackPower: 3, Defense: 2, Resistance: 6, HitPoints: 1, Abilities: []data.Ability{data.MakeAbility(data.AbilityLargeShield), data.MakeAbilityValue(data.AbilityToHit, 10), data.MakeAbility(data.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, AttackSound: AttackSoundNormal, 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, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, MovementSpeed: 2, MeleeAttackPower: 4, Defense: 2, Resistance: 4, HitPoints: 3, RequiredBuildings: []building.Building{building.BuildingBarracks, building.BuildingStables}, Abilities: []data.Ability{data.MakeAbility(data.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, MovementSound: MovementSoundShuffle, AttackSound: AttackSoundNormal, MeleeAttackPower: 1, Defense: 1, Resistance: 4, HitPoints: 1, MovementSpeed: 1, RequiredBuildings: []building.Building{building.BuildingBuildersHall}, Abilities: []data.Ability{data.MakeAbility(data.AbilityConstruction), data.MakeAbility(data.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, MovementSound: MovementSoundShuffle, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic, RangeAttackIndex: 72, MovementSpeed: 1, MeleeAttackPower: 1, RangedAttackPower: 5, RangedAttacks: 4, Defense: 3, Resistance: 8, HitPoints: 1, Abilities: []data.Ability{data.MakeAbility(data.AbilityMissileImmunity), data.MakeAbilityValue(data.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, AttackSound: AttackSoundNormal, MovementSound: MovementSoundMarching, Defense: 3, Resistance: 5, HitPoints: 1, RequiredBuildings: []building.Building{building.BuildingFightersGuild}, Abilities: []data.Ability{data.MakeAbility(data.AbilityNegateFirstStrike), data.MakeAbility(data.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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic, RangeAttackIndex: 72, MovementSpeed: 1, MeleeAttackPower: 3, RangedAttackPower: 4, RangedAttacks: 4, RangedAttackDamageType: DamageRangedMagical, Defense: 4, Resistance: 7, HitPoints: 1, Abilities: []data.Ability{data.MakeAbility(data.AbilityHealer), data.MakeAbility(data.AbilityPurify), data.MakeAbilityValue(data.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, AttackSound: AttackSoundNormal, MovementSound: MovementSoundShuffle, Abilities: []data.Ability{data.MakeAbility(data.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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, 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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, MovementSpeed: 1, MeleeAttackPower: 3, Defense: 2, Resistance: 4, HitPoints: 1, RequiredBuildings: []building.Building{building.BuildingBarracks, building.BuildingSmithy}, Abilities: []data.Ability{data.MakeAbility(data.AbilityLargeShield)}, Race: data.RaceHighMen, }
var Hydra Unit = Unit{ LbxFile: "units2.lbx", Index: 43, Name: "Hydra", CombatLbxFile: "figure11.lbx", CombatIndex: 104, UpkeepMana: 14, Count: 1, MovementSound: MovementSoundBigSteps, AttackSound: AttackSoundMonster2, Realm: data.ChaosMagic, MovementSpeed: 1, MeleeAttackPower: 6, Defense: 4, Resistance: 11, HitPoints: 10, Abilities: []data.Ability{data.MakeAbility(data.AbilityRegeneration), data.MakeAbilityValue(data.AbilityToHit, 10), data.MakeAbilityValue(data.AbilityFireBreath, 5)}, Race: data.RaceFantastic, CastingCost: 650, }
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, MovementSound: MovementSoundShuffle, AttackSound: AttackSoundNormal, MovementSpeed: 1, MeleeAttackPower: 1, Defense: 1, Resistance: 5, HitPoints: 1, Abilities: []data.Ability{data.MakeAbility(data.AbilityConstruction), data.MakeAbility(data.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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, 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, AttackSound: AttackSoundNormal, MovementSound: MovementSoundShuffle, Abilities: []data.Ability{data.MakeAbility(data.AbilityConstruction)}, 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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, 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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, MovementSpeed: 1, MeleeAttackPower: 3, Defense: 4, Resistance: 5, HitPoints: 1, Abilities: []data.Ability{data.MakeAbility(data.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: []data.Ability{data.MakeAbility(data.AbilityNegateFirstStrike)}, ProductionCost: 40, UpkeepGold: 1, UpkeepFood: 1, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, 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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundArrow, RangeAttackIndex: 64, 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, AttackSound: AttackSoundNormal, MovementSound: MovementSoundShuffle, Abilities: []data.Ability{data.MakeAbility(data.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, MovementSound: MovementSoundShuffle, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic, RangeAttackIndex: 88, 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: []data.Ability{data.MakeAbility(data.AbilityHealer), data.MakeAbility(data.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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, 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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, MovementSpeed: 1, Swimming: true, MeleeAttackPower: 3, Defense: 3, Resistance: 4, HitPoints: 4, Abilities: []data.Ability{data.MakeAbility(data.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, RangeAttackIndex: 8, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundArrow, Defense: 2, Resistance: 6, HitPoints: 1, Abilities: []data.Ability{data.MakeAbility(data.AbilityForester), data.MakeAbilityValue(data.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, MovementSound: MovementSoundFly2, AttackSound: AttackSoundNormal, MovementSpeed: 1, Swimming: true, Count: 1, MeleeAttackPower: 5, Defense: 4, Resistance: 8, HitPoints: 10, Abilities: []data.Ability{data.MakeAbility(data.AbilityMeld), data.MakeAbility(data.AbilityNonCorporeal)}, Race: data.RaceFantastic, CastingCost: 30, }
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, MovementSound: MovementSoundFly2, AttackSound: AttackSoundNormal, MovementSpeed: 2, MeleeAttackPower: 5, Defense: 3, Resistance: 6, HitPoints: 7, Abilities: []data.Ability{data.MakeAbilityValue(data.AbilityScouting, 2), data.MakeAbilityValue(data.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, AttackSound: AttackSoundNormal, MovementSound: MovementSoundShuffle, Defense: 4, Resistance: 7, HitPoints: 12, Abilities: []data.Ability{data.MakeAbilityValue(data.AbilityToHit, 20), data.MakeAbility(data.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, MovementSound: MovementSoundShuffle, AttackSound: AttackSoundNormal, MeleeAttackPower: 4, Defense: 3, Resistance: 7, HitPoints: 6, Race: data.RaceFantastic, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityToHit, 10), data.MakeAbilityValue(data.AbilityPoisonTouch, 4), data.MakeAbility(data.AbilityFirstStrike), }, CastingCost: 100, }
var NightStalker Unit = Unit{ LbxFile: "units2.lbx", Index: 47, Name: "Night Stalker", CombatLbxFile: "figure12.lbx", CombatIndex: 16, UpkeepMana: 1, Count: 1, MovementSound: MovementSoundSilent, AttackSound: AttackSoundNormal, MovementSpeed: 2, MeleeAttackPower: 7, Defense: 3, Resistance: 8, HitPoints: 10, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityToHit, 10), data.MakeAbilityValue(data.AbilityDeathGaze, 2), data.MakeAbility(data.AbilityInvisibility), data.MakeAbility(data.AbilityPoisonImmunity), data.MakeAbility(data.AbilityIllusionsImmunity), data.MakeAbility(data.AbilityColdImmunity), data.MakeAbility(data.AbilityDeathImmunity), }, Realm: data.DeathMagic, Race: data.RaceFantastic, CastingCost: 250, }
var Nightblades Unit = Unit{ LbxFile: "units1.lbx", Index: 63, CombatLbxFile: "figures5.lbx", CombatIndex: 24, Name: "Nightblades", ProductionCost: 120, UpkeepGold: 3, UpkeepFood: 1, Count: 6, MovementSound: MovementSoundSilent, AttackSound: AttackSoundNormal, MovementSpeed: 1, MeleeAttackPower: 4, Defense: 3, Resistance: 7, HitPoints: 1, Abilities: []data.Ability{data.MakeAbility(data.AbilityInvisibility), data.MakeAbilityValue(data.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, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic2, RangeAttackIndex: 80, MovementSpeed: 3, Flying: true, MeleeAttackPower: 8, RangedAttackPower: 5, RangedAttacks: 4, RangedAttackDamageType: DamageRangedMagical, Defense: 4, Resistance: 8, HitPoints: 10, Abilities: []data.Ability{data.MakeAbilityValue(data.AbilityScouting, 2)}, 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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundArrow, RangeAttackIndex: 8, 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, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundArrow, RangeAttackIndex: 8, 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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, MovementSpeed: 1, MeleeAttackPower: 5, Defense: 3, Resistance: 5, HitPoints: 1, Abilities: []data.Ability{data.MakeAbility(data.AbilityNegateFirstStrike), data.MakeAbility(data.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, MovementSound: MovementSoundShuffle, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic, RangeAttackIndex: 88, MovementSpeed: 1, MeleeAttackPower: 3, RangedAttackPower: 4, RangedAttacks: 4, RangedAttackDamageType: DamageRangedMagical, Defense: 4, Resistance: 7, HitPoints: 1, Abilities: []data.Ability{data.MakeAbility(data.AbilityHealer), data.MakeAbility(data.AbilityPurify), data.MakeAbilityValue(data.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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundArrow, RangeAttackIndex: 8, MovementSpeed: 2, MeleeAttackPower: 4, RangedAttackPower: 3, RangedAttacks: 8, RangedAttackDamageType: DamageRangedPhysical, Defense: 4, Resistance: 6, HitPoints: 2, Abilities: []data.Ability{data.MakeAbility(data.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, AttackSound: AttackSoundNormal, MovementSound: MovementSoundShuffle, Abilities: []data.Ability{data.MakeAbility(data.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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, 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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, MovementSpeed: 1, MeleeAttackPower: 3, Defense: 2, Resistance: 4, HitPoints: 1, Abilities: []data.Ability{data.MakeAbility(data.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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundArrow, RangeAttackIndex: 8, 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, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, 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, MovementSound: MovementSoundShuffle, AttackSound: AttackSoundNormal, MovementSpeed: 1, MeleeAttackPower: 1, Defense: 1, Resistance: 4, HitPoints: 1, Abilities: []data.Ability{data.MakeAbility(data.AbilityConstruction), data.MakeAbility(data.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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, 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, MovementSound: MovementSoundShuffle, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic, RangeAttackIndex: 72, MovementSpeed: 1, MeleeAttackPower: 1, RangedAttackPower: 5, RangedAttacks: 4, RangedAttackDamageType: DamageRangedMagical, Defense: 3, Resistance: 8, HitPoints: 1, Abilities: []data.Ability{data.MakeAbility(data.AbilityMissileImmunity), data.MakeAbilityValue(data.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, AttackSound: AttackSoundNormal, MovementSound: MovementSoundShuffle, Abilities: []data.Ability{data.MakeAbility(data.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, MovementSound: MovementSoundShuffle, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic, RangeAttackIndex: 88, MovementSpeed: 1, MeleeAttackPower: 2, RangedAttackPower: 2, RangedAttacks: 4, RangedAttackDamageType: DamageRangedMagical, Defense: 3, Resistance: 6, HitPoints: 1, Abilities: []data.Ability{data.MakeAbility(data.AbilityHealer), data.MakeAbility(data.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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, 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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, MovementSpeed: 1, MeleeAttackPower: 3, Defense: 2, Resistance: 4, HitPoints: 1, Abilities: []data.Ability{data.MakeAbility(data.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, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, MovementSpeed: 2, MeleeAttackPower: 6, Defense: 5, Resistance: 8, HitPoints: 4, RequiredBuildings: []building.Building{building.BuildingArmorersGuild, building.BuildingCathedral}, Abilities: []data.Ability{ data.MakeAbility(data.AbilityMagicImmunity), data.MakeAbilityValue(data.AbilityHolyBonus, 1), data.MakeAbility(data.AbilityArmorPiercing), data.MakeAbility(data.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, MovementSound: MovementSoundFly2, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundArrow, RangeAttackIndex: 8, MovementSpeed: 3, MeleeAttackPower: 5, RangedAttackPower: 3, RangedAttacks: 8, RangedAttackDamageType: DamageRangedPhysical, Defense: 4, Resistance: 8, HitPoints: 5, RequiredBuildings: []building.Building{building.BuildingFantasticStable}, Race: data.RaceHighElf, Abilities: []data.Ability{data.MakeAbilityValue(data.AbilityScouting, 2), data.MakeAbilityValue(data.AbilityToHit, 10)}, }
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, MovementSound: MovementSoundSilent, AttackSound: AttackSoundMonster2, MeleeAttackPower: 18, MovementSpeed: 2, Resistance: 8, HitPoints: 20, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityToHit, 10), data.MakeAbility(data.AbilityPoisonImmunity), data.MakeAbility(data.AbilityDeathImmunity), data.MakeAbility(data.AbilityStoningImmunity), data.MakeAbility(data.AbilityNonCorporeal), data.MakeAbility(data.AbilityIllusion), }, CastingCost: 35, }
var PhantomWarrior Unit = Unit{ LbxFile: "units2.lbx", Index: 72, CombatLbxFile: "figure13.lbx", CombatIndex: 96, Realm: data.SorceryMagic, Name: "Phantom Warriors", MovementSound: MovementSoundSilent, AttackSound: AttackSoundNormal, MovementSpeed: 1, Count: 6, MeleeAttackPower: 3, Defense: 0, HitPoints: 1, Resistance: 6, Abilities: []data.Ability{ data.MakeAbility(data.AbilityPoisonImmunity), data.MakeAbility(data.AbilityDeathImmunity), data.MakeAbility(data.AbilityStoningImmunity), data.MakeAbility(data.AbilityNonCorporeal), data.MakeAbility(data.AbilityIllusion), }, Race: data.RaceFantastic, CastingCost: 10, }
var ShadowDemons Unit = Unit{ LbxFile: "units2.lbx", Index: 51, CombatLbxFile: "figure12.lbx", CombatIndex: 48, Name: "Shadow Demons", UpkeepMana: 7, Count: 4, Flying: true, MovementSound: MovementSoundFly2, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic, RangeAttackIndex: 48, MovementSpeed: 1, MeleeAttackPower: 5, RangedAttackPower: 4, RangedAttacks: 8, RangedAttackDamageType: DamageRangedMagical, Defense: 4, Resistance: 8, HitPoints: 5, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityToHit, 20), data.MakeAbility(data.AbilityPlaneShift), data.MakeAbility(data.AbilityNonCorporeal), data.MakeAbility(data.AbilityRegeneration), data.MakeAbility(data.AbilityPoisonImmunity), data.MakeAbility(data.AbilityWeaponImmunity), data.MakeAbility(data.AbilityIllusionsImmunity), data.MakeAbility(data.AbilityColdImmunity), data.MakeAbility(data.AbilityDeathImmunity), }, Realm: data.DeathMagic, Race: data.RaceFantastic, CastingCost: 325, }
var Skeleton Unit = Unit{ LbxFile: "units2.lbx", Index: 45, CombatLbxFile: "figure12.lbx", CombatIndex: 0, Name: "Skeletons", UpkeepMana: 1, Count: 6, MovementSound: MovementSoundShuffle, AttackSound: AttackSoundNormal, MovementSpeed: 1, MeleeAttackPower: 3, Defense: 4, Resistance: 5, HitPoints: 1, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityToHit, 10), data.MakeAbility(data.AbilityPoisonImmunity), data.MakeAbility(data.AbilityMissileImmunity), data.MakeAbility(data.AbilityIllusionsImmunity), data.MakeAbility(data.AbilityColdImmunity), data.MakeAbility(data.AbilityDeathImmunity), }, Race: data.RaceFantastic, Realm: data.DeathMagic, CastingCost: 25, }
var SkyDrake Unit = Unit{ LbxFile: "units2.lbx", Index: 76, Name: "Sky Drake", Realm: data.SorceryMagic, CombatLbxFile: "figure14.lbx", CombatIndex: 8, UpkeepMana: 25, Count: 1, MovementSound: MovementSoundFly, AttackSound: AttackSoundMonster2, MovementSpeed: 4, Flying: true, MeleeAttackPower: 20, Defense: 10, Resistance: 14, HitPoints: 25, Race: data.RaceFantastic, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityToHit, 30), data.MakeAbilityValue(data.AbilityLightningBreath, 20), data.MakeAbility(data.AbilityMagicImmunity), data.MakeAbility(data.AbilityIllusionsImmunity), }, CastingCost: 1000, }
var Slingers Unit = Unit{ LbxFile: "units1.lbx", Index: 94, CombatLbxFile: "figures7.lbx", CombatIndex: 32, Name: "Slingers", ProductionCost: 100, UpkeepGold: 2, UpkeepFood: 1, Count: 8, MovementSound: MovementSoundShuffle, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundSling, RangeAttackIndex: 40, MovementSpeed: 1, MeleeAttackPower: 1, RangedAttackPower: 2, RangedAttacks: 6, RangedAttackDamageType: DamageRangedBoulder, Defense: 2, Resistance: 6, HitPoints: 1, Abilities: []data.Ability{data.MakeAbility(data.AbilityLucky)}, RequiredBuildings: []building.Building{building.BuildingArmory}, Race: data.RaceHalfling, }
var Sprites 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, MovementSound: MovementSoundFly2, AttackSound: AttackSoundWeak, RangeAttackSound: RangeAttackSoundMagic, MovementSpeed: 2, Defense: 2, Resistance: 8, HitPoints: 1, Flying: true, Abilities: []data.Ability{data.MakeAbilityValue(data.AbilityToHit, 10), data.MakeAbility(data.AbilityForester)}, Race: data.RaceFantastic, CastingCost: 100, }
var StagBeetle Unit = Unit{ LbxFile: "units1.lbx", Index: 119, CombatLbxFile: "figures8.lbx", CombatIndex: 112, Name: "Stag Beetle", RequiredBuildings: []building.Building{building.BuildingArmorersGuild, building.BuildingStables}, ProductionCost: 160, UpkeepGold: 4, UpkeepFood: 1, Count: 1, MovementSpeed: 2, MovementSound: MovementSoundBigSteps, AttackSound: AttackSoundNormal, MeleeAttackPower: 15, Defense: 7, Resistance: 6, HitPoints: 20, Abilities: []data.Ability{data.MakeAbilityValue(data.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, MovementSound: MovementSoundShuffle, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundLaunch, RangeAttackIndex: 32, 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, MovementSound: MovementSoundBigSteps, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundLaunch, RangeAttackIndex: 32, MovementSpeed: 2, MeleeAttackPower: 15, RangedAttackPower: 15, RangedAttackDamageType: DamageRangedBoulder, RangedAttacks: 2, Defense: 8, Resistance: 9, HitPoints: 20, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityToHit, 20), data.MakeAbility(data.AbilityMountaineer), data.MakeAbility(data.AbilityPoisonImmunity), data.MakeAbility(data.AbilityStoningImmunity), data.MakeAbility(data.AbilityWallCrusher), }, Race: data.RaceFantastic, CastingCost: 450, }
var StormGiant Unit = Unit{ LbxFile: "units2.lbx", Index: 73, Name: "Storm Giant", CombatLbxFile: "figure13.lbx", CombatIndex: 104, UpkeepMana: 10, Count: 1, Realm: data.SorceryMagic, MovementSound: MovementSoundBigSteps, AttackSound: AttackSoundMonster2, RangeAttackSound: RangeAttackSoundMagic, RangeAttackIndex: 0, MovementSpeed: 2, MeleeAttackPower: 12, RangedAttackPower: 10, RangedAttacks: 4, RangedAttackDamageType: DamageRangedMagical, Defense: 7, Resistance: 9, HitPoints: 20, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityToHit, 20), data.MakeAbility(data.AbilityWallCrusher), data.MakeAbility(data.AbilityArmorPiercing), }, Race: data.RaceFantastic, CastingCost: 500, }
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, Sailing: true, MovementSound: MovementSoundBoat, AttackSound: AttackSoundNormal, MovementSpeed: 2, MeleeAttackPower: 6, Defense: 4, Resistance: 4, HitPoints: 10, Abilities: []data.Ability{data.MakeAbilityValue(data.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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, MovementSpeed: 1, MeleeAttackPower: 6, Defense: 3, Resistance: 7, HitPoints: 4, Abilities: []data.Ability{data.MakeAbility(data.AbilityNegateFirstStrike), data.MakeAbility(data.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, AttackSound: AttackSoundNormal, MovementSound: MovementSoundShuffle, Abilities: []data.Ability{data.MakeAbility(data.AbilityCreateOutpost), data.MakeAbility(data.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, MovementSound: MovementSoundShuffle, AttackSound: AttackSoundNormal, RangeAttackSound: RangeAttackSoundMagic, RangeAttackIndex: 88, MovementSpeed: 1, MeleeAttackPower: 4, RangedAttackPower: 2, RangedAttacks: 4, RangedAttackDamageType: DamageRangedMagical, Defense: 3, Resistance: 8, HitPoints: 4, Abilities: []data.Ability{data.MakeAbility(data.AbilityHealer), data.MakeAbility(data.AbilityPurify), data.MakeAbility(data.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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, MovementSpeed: 1, MeleeAttackPower: 3, Defense: 2, Resistance: 7, HitPoints: 4, Abilities: []data.Ability{data.MakeAbility(data.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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, MovementSpeed: 1, MeleeAttackPower: 5, Defense: 2, Resistance: 7, HitPoints: 4, Abilities: []data.Ability{data.MakeAbility(data.AbilityLargeShield), data.MakeAbility(data.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, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, Defense: 3, Resistance: 7, HitPoints: 6, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityToHit, 20), data.MakeAbilityValue(data.AbilityResistanceToAll, 2), data.MakeAbility(data.AbilityTeleporting), data.MakeAbility(data.AbilityPoisonImmunity), }, Race: data.RaceFantastic, Realm: data.LifeMagic, CastingCost: 250, }
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, MovementSound: MovementSoundShuffle, AttackSound: AttackSoundNormal, Defense: 3, Resistance: 6, HitPoints: 8, MovementSpeed: 2, Abilities: []data.Ability{data.MakeAbility(data.AbilityForester)}, Race: data.RaceFantastic, CastingCost: 70, }
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, MovementSound: MovementSoundBigSteps2, AttackSound: AttackSoundNormal, MovementSpeed: 2, MeleeAttackPower: 10, Defense: 6, Resistance: 9, HitPoints: 12, Abilities: []data.Ability{data.MakeAbility(data.AbilityWallCrusher), data.MakeAbility(data.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, MovementSound: MovementSoundMarching, AttackSound: AttackSoundNormal, MovementSpeed: 2, MeleeAttackPower: 8, Defense: 4, Resistance: 8, HitPoints: 5, Abilities: []data.Ability{data.MakeAbility(data.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, AttackSound: AttackSoundNormal, MeleeAttackPower: 1, RangedAttackDamageType: DamageRangedMagical, RangeAttackIndex: 16, RangedAttackPower: 7, RangedAttacks: 4, RangeAttackSound: RangeAttackSoundFireball, Defense: 4, Resistance: 9, HitPoints: 1, MovementSound: MovementSoundShuffle, Abilities: []data.Ability{data.MakeAbilityValue(data.AbilityDoomBoltSpell, 1), data.MakeAbility(data.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, Sailing: true, MovementSound: MovementSoundBoat, AttackSound: AttackSoundNormal, RangeAttackIndex: 32, RangeAttackSound: RangeAttackSoundLaunch, MeleeAttackPower: 10, RangedAttackPower: 10, RangedAttacks: 99, RangedAttackDamageType: DamageRangedBoulder, Defense: 5, Resistance: 7, HitPoints: 30, Abilities: []data.Ability{data.MakeAbilityValue(data.AbilityTransport, 3), data.MakeAbility(data.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, MovementSound: MovementSoundShuffle, AttackSound: AttackSoundNormal, MovementSpeed: 2, MeleeAttackPower: 5, Defense: 1, Resistance: 6, HitPoints: 5, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityToHit, 10), data.MakeAbility(data.AbilityRegeneration), data.MakeAbility(data.AbilityPoisonImmunity), data.MakeAbility(data.AbilityIllusionsImmunity), data.MakeAbility(data.AbilityColdImmunity), data.MakeAbility(data.AbilityDeathImmunity), data.MakeAbility(data.AbilityWeaponImmunity), }, Realm: data.DeathMagic, Race: data.RaceFantastic, CastingCost: 180, }
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, MovementSound: MovementSoundHorse, AttackSound: AttackSoundNormal, 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, MovementSound: MovementSoundFly2, AttackSound: AttackSoundNormal, MovementSpeed: 2, MeleeAttackPower: 7, Defense: 6, Resistance: 8, HitPoints: 8, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityToHit, 20), data.MakeAbilityValue(data.AbilityLifeSteal, -3), data.MakeAbility(data.AbilityPoisonImmunity), data.MakeAbility(data.AbilityIllusionsImmunity), data.MakeAbility(data.AbilityColdImmunity), data.MakeAbility(data.AbilityDeathImmunity), data.MakeAbility(data.AbilityWeaponImmunity), data.MakeAbility(data.AbilityNonCorporeal), }, Realm: data.DeathMagic, Race: data.RaceFantastic, CastingCost: 500, }
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, MovementSound: MovementSoundFly, AttackSound: AttackSoundNormal, MovementSpeed: 3, MeleeAttackPower: 5, Defense: 5, Resistance: 7, HitPoints: 10, Abilities: []data.Ability{data.MakeAbilityValue(data.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, MovementSound: MovementSoundShuffle, AttackSound: AttackSoundNormal, MovementSpeed: 1, MeleeAttackPower: 4, Defense: 3, Resistance: 3, HitPoints: 3, Abilities: []data.Ability{ data.MakeAbilityValue(data.AbilityToHit, 10), data.MakeAbility(data.AbilityPoisonImmunity), data.MakeAbility(data.AbilityIllusionsImmunity), data.MakeAbility(data.AbilityColdImmunity), data.MakeAbility(data.AbilityDeathImmunity), }, Realm: data.DeathMagic, Race: data.RaceFantastic, }
func ChooseRandomUnit ¶
func GetUnitByName ¶
func UnitsByRace ¶
func (*Unit) GetAbilities ¶
func (*Unit) GetAbilityValue ¶
func (unit *Unit) GetAbilityValue(ability data.AbilityType) float32
func (*Unit) GetBaseDefense ¶
func (*Unit) GetBaseHitPoints ¶
func (*Unit) GetBaseMeleeAttackPower ¶
func (*Unit) GetBaseRangedAttackPower ¶
func (*Unit) GetBaseResistance ¶
func (*Unit) GetCombatIndex ¶
func (*Unit) GetCombatLbxFile ¶
func (*Unit) GetCombatRangeIndex ¶
func (*Unit) GetDefense ¶
func (*Unit) GetHitPoints ¶
func (*Unit) GetMaxHealth ¶
maximum health is the number of figures * the number of hit points per figure
func (*Unit) GetMeleeAttackPower ¶
func (*Unit) GetMovementSpeed ¶
func (*Unit) GetProductionCost ¶
func (*Unit) GetRangedAttackDamageType ¶
func (*Unit) GetRangedAttackPower ¶
func (*Unit) GetResistance ¶
func (*Unit) GetUpkeepFood ¶
func (*Unit) GetUpkeepGold ¶
func (*Unit) GetUpkeepMana ¶
func (*Unit) HasAbility ¶
func (unit *Unit) HasAbility(ability data.AbilityType) bool
func (*Unit) IsSettlers ¶
Click to show internal directories.
Click to hide internal directories.