xhads/source/unit.ads

237 lines
26 KiB
Ada
Raw Normal View History

2024-03-11 15:35:56 -04:00
with core, effect, attribute, faction;
2024-02-15 21:03:09 -05:00
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,
2024-02-15 21:03:09 -05:00
--
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,
2024-02-15 21:03:09 -05:00
devil, arch_devil,
--
gremlin, master_gremlin, stone_gargoyle, obsidian_gargoyle, stone_golem, iron_golem,
2024-02-15 21:03:09 -05:00
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
2024-03-11 15:35:56 -04:00
name : core.short_string;
kind : faction.codex;
attributes : attribute.value_array;
evoke : effect.codex;
text : core.long_string;
2024-02-15 21:03:09 -05:00
end record;
type trait_array is array (codex) of information;
------------------------------------------------------------------------------------------
count : constant natural := codex'pos (codex'last) + 1;
2024-02-15 21:03:09 -05:00
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, (6, 3, 9, 7), effect.none, "Power Lich is a jewish gaylord who practices necromancy and transfusion."),
("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, " ")
2024-02-15 21:03:09 -05:00
);
------------------------------------------------------------------------------------------
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);
2024-02-15 21:03:09 -05:00
2024-03-11 15:35:56 -04:00
procedure stat (index : in codex; x, y : in integer; center : in boolean);
2024-02-15 21:03:09 -05:00
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
end unit;