xhads/source/unit.ads

236 lines
16 KiB
Ada

with core, effect, attribute, faction;
package unit is
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
type animation is (
idle, wounded, dead, moving, toggle_moving, attack
);
type codex is (
azure_dragon, boar, crystal_dragon, enchanter, faerie_dragon, gold_golem,
halfing, mummy, nomad, peasant, rogue, rust_dragon,
sharpshooter, troll,
--
pikeman, halberdier, archer, marksman, griffin, royal_griffin,
swordsman, crusader, monk, zealot, cavalier, champion,
angel, arch_angel,
--
goblin, hobgoblin, wolf_rider, wolf_raider, orc, orc_chieftain,
ogre, ogre_magi, roc, thunderbird, cyclops, cyclops_king,
behemoth, ancient_behemoth,
--
imp, familiar, gog, magog, hell_hound, cerberus,
demon, horned_demon, pit_fiend, pit_lord, efreet, efreet_sultan,
devil, arch_devil,
--
gremlin, master_gremlin, stone_gargoyle, obsidian_gargoyle, stone_golem, iron_golem,
mage, arch_mage, geany, master_geany, naga, naga_queen,
giant, titan,
--
pixie, spirit, air_elemental, storm_elemental, water_elemental, ice_elemental,
fire_elemental, energy_elemental, earth_elemental, magma_elemental, psychic_elemental, magic_elemental,
fire_bird, phoenix,
--
skeleton, skeleton_warrior, walking_dead, zombie, wight, wraith,
vampire, vampire_lord, lich, power_lich, black_knight, dread_knight,
bone_dragon, ghost_dragon,
--
centaur, centaur_captain, dwarf, battle_dwarf, wood_elf, grand_elf,
pegasus, silver_pegasus, dendroid_guard, dendroid_soldier, unicorn, war_unicorn,
green_dragon, gold_dragon,
--
gnoll, gnoll_marauder, lizardman, lizard_warrior, serpentfly, dragonfly,
basilisk, greater_basilisk, gorgon, mighty_gorgon, wyvern, wyvern_monarch,
hydra, chaos_hydra,
--
troglodyte, infernal_troglodyte, harpy, harpy_hag, evil_eye, beholder,
medusa, medusa_queen, minotaur, minotaur_king, manticore, scorpicore,
red_dragon, black_dragon
);
------------------------------------------------------------------------------------------
type information is
record
name : core.short_string;
kind : faction.codex;
attributes : attribute.value_array;
evoke : effect.codex;
end record;
type trait_array is array (codex) of information;
------------------------------------------------------------------------------------------
count : constant natural := codex'pos (codex'last) + 1;
trait : constant trait_array := (
("Azure Dragon ", faction.neutral, (others => 1), effect.none),
("Boar ", faction.neutral, (others => 1), effect.none),
("Crystal Dragon ", faction.neutral, (others => 1), effect.none),
("Enchanter ", faction.neutral, (others => 1), effect.none),
("Faerie Dragon ", faction.neutral, (others => 1), effect.none),
("Gold Golem ", faction.neutral, (others => 1), effect.none),
("Halfing ", faction.neutral, (others => 1), effect.none),
("Mummy ", faction.neutral, (others => 1), effect.none),
("Nomad ", faction.neutral, (others => 1), effect.none),
("Peasant ", faction.neutral, (others => 1), effect.none),
("Rogue ", faction.neutral, (others => 1), effect.none),
("Rust Dragon ", faction.neutral, (others => 1), effect.none),
("Sharpshooter ", faction.neutral, (others => 1), effect.none),
("Troll ", faction.neutral, (others => 1), effect.none),
--
("Pikeman ", faction.castle, (others => 1), effect.none),
("Halberdier ", faction.castle, (others => 1), effect.none),
("Archer ", faction.castle, (others => 1), effect.none),
("Crossbowman ", faction.castle, (others => 1), effect.none),
("Griffin ", faction.castle, (others => 3), effect.none),
("Royal Griffin ", faction.castle, (others => 1), effect.none),
("Swordsman ", faction.castle, (others => 1), effect.none),
("Crusader ", faction.castle, (others => 1), effect.none),
("Monk ", faction.castle, (others => 1), effect.none),
("Zealot ", faction.castle, (others => 1), effect.none),
("Cavalier ", faction.castle, (others => 1), effect.none),
("Champion ", faction.castle, (others => 1), effect.none),
("Angel ", faction.castle, (others => 1), effect.none),
("Arch-Angel ", faction.castle, (others => 1), effect.none),
--
("Goblin ", faction.stronghold, (others => 1), effect.none),
("Hobgoblin ", faction.stronghold, (others => 1), effect.none),
("Wolf Rider ", faction.stronghold, (others => 1), effect.none),
("Wolf Raider ", faction.stronghold, (others => 1), effect.none),
("Orc ", faction.stronghold, (others => 1), effect.none),
("Orc Chieftain ", faction.stronghold, (others => 1), effect.none),
("Orge ", faction.stronghold, (others => 1), effect.none),
("Ogre Magi ", faction.stronghold, (others => 1), effect.none),
("Roc ", faction.stronghold, (others => 1), effect.none),
("Thunderbird ", faction.stronghold, (others => 1), effect.none),
("Cyclops ", faction.stronghold, (others => 1), effect.none),
("Cyclops King ", faction.stronghold, (others => 1), effect.none),
("Behemoth ", faction.stronghold, (others => 1), effect.none),
("Ancient Behemoth ", faction.stronghold, (others => 1), effect.none),
--
("Imp ", faction.inferno, (others => 1), effect.none),
("Familiar ", faction.inferno, (others => 1), effect.none),
("Gog ", faction.inferno, (others => 1), effect.none),
("Magog ", faction.inferno, (others => 1), effect.none),
("Hell Hound ", faction.inferno, (others => 1), effect.none),
("Cerberus ", faction.inferno, (others => 1), effect.none),
("Demon ", faction.inferno, (others => 1), effect.none),
("Horned Demon ", faction.inferno, (others => 1), effect.none),
("Pit Fiend ", faction.inferno, (others => 1), effect.none),
("Pit Lord ", faction.inferno, (others => 1), effect.none),
("Efreeti ", faction.inferno, (others => 1), effect.none),
("Efreet Sultan ", faction.inferno, (others => 1), effect.none),
("Devil ", faction.inferno, (others => 1), effect.none),
("Arch Devil ", faction.inferno, (others => 1), effect.none),
--
("Gremlin ", faction.tower, (others => 1), effect.none),
("Master Gremlin ", faction.tower, (others => 1), effect.none),
("Stone Gargoyle ", faction.tower, (others => 1), effect.none),
("Obisidian Gargoyle ", faction.tower, (others => 1), effect.none),
("Stone Golem ", faction.tower, (others => 1), effect.none),
("Iron Golem ", faction.tower, (others => 1), effect.none),
("Mage ", faction.tower, (others => 1), effect.none),
("Arch Mage ", faction.tower, (others => 1), effect.none),
("Geany ", faction.tower, (others => 1), effect.none),
("Master Geany ", faction.tower, (others => 1), effect.none),
("Naga ", faction.tower, (others => 1), effect.none),
("Naga Queen ", faction.tower, (others => 1), effect.none),
("Giant ", faction.tower, (others => 1), effect.none),
("Titan ", faction.tower, (others => 1), effect.none),
--
("Pixie ", faction.conflux, (others => 1), effect.none),
("Spirit ", faction.conflux, (others => 1), effect.none),
("Air Elemental ", faction.conflux, (others => 1), effect.none),
("Storm Elemental ", faction.conflux, (others => 1), effect.none),
("Water Elemental ", faction.conflux, (others => 1), effect.none),
("Ice Elemental ", faction.conflux, (others => 1), effect.none),
("Fire Elemental ", faction.conflux, (others => 1), effect.none),
("Energy Elemental ", faction.conflux, (others => 1), effect.none),
("Earth Elemental ", faction.conflux, (others => 1), effect.none),
("Magma Elemental ", faction.conflux, (others => 1), effect.none),
("Psychic Elemental ", faction.conflux, (others => 1), effect.none),
("Magic Elemental ", faction.conflux, (others => 1), effect.none),
("Fire Bird ", faction.conflux, (others => 1), effect.none),
("Phoenix ", faction.conflux, (others => 1), effect.none),
--
("Skeleton ", faction.necropolis, (others => 1), effect.none),
("Skeleton Warrior ", faction.necropolis, (others => 1), effect.none),
("Walking Dead ", faction.necropolis, (others => 1), effect.none),
("Zombie ", faction.necropolis, (others => 1), effect.none),
("Wight ", faction.necropolis, (others => 1), effect.none),
("Wraith ", faction.necropolis, (others => 1), effect.none),
("Vampire ", faction.necropolis, (others => 1), effect.none),
("Vampire Lord ", faction.necropolis, (others => 1), effect.none),
("Lich ", faction.necropolis, (others => 1), effect.none),
("Power Lich ", faction.necropolis, (others => 1), effect.none),
("Black Knight ", faction.necropolis, (others => 1), effect.none),
("Dread Knight ", faction.necropolis, (others => 1), effect.none),
("Bone Dragon ", faction.necropolis, (others => 1), effect.none),
("Ghost Dragon ", faction.necropolis, (others => 1), effect.none),
--
("Centaur ", faction.rampart, (others => 1), effect.none),
("Centaur Captain ", faction.rampart, (others => 1), effect.none),
("Dwarf ", faction.rampart, (others => 1), effect.none),
("Battle Dwarf ", faction.rampart, (others => 1), effect.none),
("Wood Elf ", faction.rampart, (others => 1), effect.none),
("Grand Elf ", faction.rampart, (others => 1), effect.none),
("Pegasus ", faction.rampart, (others => 1), effect.none),
("Silver Pegasus ", faction.rampart, (others => 1), effect.none),
("Dendroid Guard ", faction.rampart, (others => 1), effect.none),
("Dendroid Soldier ", faction.rampart, (others => 1), effect.none),
("Unicorn ", faction.rampart, (others => 1), effect.none),
("War Unicorn ", faction.rampart, (others => 1), effect.none),
("Green Dragon ", faction.rampart, (others => 1), effect.none),
("Gold Dragon ", faction.rampart, (others => 1), effect.none),
--
("Gnoll ", faction.fortress, (others => 1), effect.none),
("Gnoll Marauder ", faction.fortress, (others => 1), effect.none),
("Lizardman ", faction.fortress, (others => 1), effect.none),
("Lizard Warrior ", faction.fortress, (others => 1), effect.none),
("Serpentfly ", faction.fortress, (others => 1), effect.none),
("Dragonfly ", faction.fortress, (others => 1), effect.none),
("Basilisk ", faction.fortress, (others => 1), effect.none),
("Greater Basilisk ", faction.fortress, (others => 1), effect.none),
("Gorgon ", faction.fortress, (others => 1), effect.none),
("Mighty Gorgon ", faction.fortress, (others => 1), effect.none),
("Wyvern ", faction.fortress, (others => 1), effect.none),
("Wyvern Monarch ", faction.fortress, (others => 1), effect.none),
("Hydra ", faction.fortress, (others => 1), effect.none),
("Chaos Hydra ", faction.fortress, (others => 1), effect.none),
--
("Troglodyte ", faction.dungeon, (others => 1), effect.none),
("Infernal Troglodyte ", faction.dungeon, (others => 1), effect.none),
("Harpy ", faction.dungeon, (others => 1), effect.none),
("Harpy Hag ", faction.dungeon, (others => 1), effect.none),
("Evil Eye ", faction.dungeon, (others => 1), effect.none),
("Beholder ", faction.dungeon, (others => 1), effect.none),
("Medusa ", faction.dungeon, (others => 1), effect.none),
("Medusa Queen ", faction.dungeon, (others => 1), effect.none),
("Minotaur ", faction.dungeon, (others => 1), effect.none),
("Minotaur King ", faction.dungeon, (others => 1), effect.none),
("Manticore ", faction.dungeon, (others => 1), effect.none),
("Scorpicore ", faction.dungeon, (others => 1), effect.none),
("Red Dragon ", faction.dungeon, (others => 1), effect.none),
("Black Dragon ", faction.dungeon, (others => 1), effect.none)
);
------------------------------------------------------------------------------------------
procedure configure;
procedure draw (index : in codex; state : in animation; x, y : in integer);
procedure icon (index : in codex; x, y : in integer);
procedure view (index : in codex; x, y : in integer);
procedure menu (x, y : in integer; center : in boolean);
procedure stat (index : in codex; x, y : in integer; center : in boolean);
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
end unit;