Everything works now, less content, placeholders...

This commit is contained in:
Ognjen Milan Robovic 2024-04-25 03:46:07 -04:00
parent 3750a8727b
commit 206bd28fa8
9 changed files with 101 additions and 550 deletions

1
.gitignore vendored
View File

@ -1,5 +1,4 @@
source/*.o
source/*.ali
xhads
sprite/*
song/*

View File

@ -9,49 +9,15 @@ package construction is
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
type codex is (
boar_glen, enchanters_hollow, hovel, nomad_tent, rogue_cavern, thatched_hut,
trolls_bridge, crystalized_cave, frozen_cliffs, magic_forest, pyramid, sulfurous_lair,
treetop_tower,
--
guardhouse, watchtower, griffin_tower, barracks, monastery, training_grounds,
holy_portal,
--
goblin_shed, wolf_pen, orc_tower, ogre_fort, cliff_nest, cyclops_cave,
behemoth_lair,
--
imp_crucible, hall_of_sins, kennels, demon_gate, hell_hole, fire_lake,
forsaken_palace,
--
workshop, parapet, golem_factory, mage_tower, altar_of_wishes, golden_pavilion,
cloud_temple,
--
little_lantern, air_shrine, water_shrine, fire_shrine, earth_shrine, magic_shrine,
flamewhirl,
--
cursed_shrine, graveyard, tomb_of_souls, estate, mausoleum, hall_of_darkness,
bone_vault,
--
centaur_stables, dwarf_cottage, homestead, enchanted_spring, dendroid_arches, unicorn_glades,
dragon_cliffs,
--
gnoll_hut, lizard_den, dragonfly_hive, basilisk_pit, gorgon_lair, wyvern_nest,
hydra_pond,
--
warren, harpy_loft, pillar_of_eyes, chappel_of_voice, labyrinth, manticore_lair,
dragon_cave
a, b, c, d, e, f
);
------------------------------------------------------------------------------------------
subtype grade_limit is natural range 0 .. 3;
subtype level_limit is natural range 0 .. 6;
type information is
record
name : core.short_string;
kind : faction.codex;
level : level_limit;
grade : grade_limit;
price : resource.points;
frames : integer;
evoke : effect.codex;
@ -62,91 +28,12 @@ package construction is
count : constant natural := codex'pos (codex'last) + 1;
trait : constant array (codex) of information := (
("Boar Glen ", faction.neutral, 1, 1, ( 90, others => 0), 1, effect.none),
("Enchanter's Hollow ", faction.neutral, 1, 1, (120, others => 0), 1, effect.none),
("Hovel ", faction.neutral, 2, 1, (180, others => 0), 1, effect.none),
("Nomad Tent ", faction.neutral, 3, 1, (240, others => 0), 1, effect.none),
("Rogue Cavern ", faction.neutral, 3, 1, (180, others => 0), 1, effect.none),
("Thatched Hut ", faction.neutral, 4, 1, (300, others => 0), 3, effect.none),
("Troll's Bridge ", faction.neutral, 5, 1, (360, others => 0), 1, effect.none),
("Crystalized Cave ", faction.neutral, 1, 1, ( 90, others => 0), 1, effect.none),
("Frozen Cliffs ", faction.neutral, 1, 1, (120, others => 0), 1, effect.none),
("Magic Forest ", faction.neutral, 2, 1, (180, others => 0), 3, effect.none),
("Pyramid ", faction.neutral, 3, 1, (240, others => 0), 1, effect.none),
("Sulfurous Lair ", faction.neutral, 3, 1, (180, others => 0), 1, effect.none),
("Treetop Tower ", faction.neutral, 4, 1, (300, others => 0), 1, effect.none),
--
("Guardhouse ", faction.castle, 1, 1, ( 90, others => 0), 1, effect.none),
("Watchtower ", faction.castle, 1, 1, (120, others => 0), 1, effect.none),
("Griffin Tower ", faction.castle, 2, 1, (180, others => 0), 1, effect.none),
("Barracks ", faction.castle, 3, 1, (240, others => 0), 1, effect.none),
("Monastery ", faction.castle, 3, 1, (180, others => 0), 1, effect.none),
("Training Grounds ", faction.castle, 4, 1, (300, others => 0), 1, effect.none),
("Holy Portal ", faction.castle, 5, 1, (360, others => 0), 1, effect.none),
--
("Goblin Shed ", faction.stronghold, 1, 1, ( 90, others => 0), 1, effect.none),
("Wolf Pen ", faction.stronghold, 1, 1, (120, others => 0), 1, effect.none),
("Orc Tower ", faction.stronghold, 2, 1, (180, others => 0), 1, effect.none),
("Ogre Fort ", faction.stronghold, 3, 1, (240, others => 0), 1, effect.none),
("Cliff Nest ", faction.stronghold, 3, 1, (180, others => 0), 1, effect.none),
("Cyclops Cave ", faction.stronghold, 4, 1, (300, others => 0), 1, effect.none),
("Behemoth Lair ", faction.stronghold, 5, 1, (360, others => 0), 3, effect.none),
--
("Imp Crucible ", faction.inferno, 5, 1, (360, others => 0), 3, effect.none),
("Hall of Sins ", faction.inferno, 5, 1, (360, others => 0), 3, effect.none),
("Kennels ", faction.inferno, 5, 1, (360, others => 0), 1, effect.none),
("Demon Gate ", faction.inferno, 5, 1, (360, others => 0), 1, effect.none),
("Hell Hole ", faction.inferno, 5, 1, (360, others => 0), 3, effect.none),
("Fire Lake ", faction.inferno, 5, 1, (360, others => 0), 3, effect.none),
("Forsaken Palace ", faction.inferno, 5, 1, (360, others => 0), 1, effect.none),
--
("Workshop ", faction.tower, 5, 1, (360, others => 0), 3, effect.none),
("Parapet ", faction.tower, 5, 1, (360, others => 0), 1, effect.none),
("Golem Factory ", faction.tower, 5, 1, (360, others => 0), 3, effect.none),
("Mage Tower ", faction.tower, 5, 1, (360, others => 0), 1, effect.none),
("Altar of Wishes ", faction.tower, 5, 1, (360, others => 0), 1, effect.none),
("Golden Pavilion ", faction.tower, 5, 1, (360, others => 0), 1, effect.none),
("Cloud Temple ", faction.tower, 5, 1, (360, others => 0), 1, effect.none),
--
("Little Lantern ", faction.conflux, 5, 1, (360, others => 0), 3, effect.none),
("Air Shrine ", faction.conflux, 5, 1, (360, others => 0), 3, effect.none),
("Water Shrine ", faction.conflux, 5, 1, (360, others => 0), 3, effect.none),
("Fire Shrine ", faction.conflux, 5, 1, (360, others => 0), 3, effect.none),
("Earth Shrine ", faction.conflux, 5, 1, (360, others => 0), 3, effect.none),
("Magic Shrine ", faction.conflux, 5, 1, (360, others => 0), 1, effect.none),
("Flamewhirl ", faction.conflux, 5, 1, (360, others => 0), 3, effect.none),
--
("Cursed Shrine ", faction.necropolis, 1, 1, ( 90, others => 0), 1, effect.none),
("Graveyard ", faction.necropolis, 1, 1, (120, others => 0), 1, effect.none),
("Tomb of Souls ", faction.necropolis, 2, 1, (180, others => 0), 1, effect.none),
("Estate ", faction.necropolis, 3, 1, (240, others => 0), 1, effect.none),
("Mausoleum ", faction.necropolis, 3, 1, (180, others => 0), 1, effect.none),
("Hall of Darkness ", faction.necropolis, 4, 1, (300, others => 0), 1, effect.none),
("Bone Vault ", faction.necropolis, 5, 1, (360, others => 0), 1, effect.none),
--
("Centaur Stables ", faction.rampart, 5, 1, (360, others => 0), 1, effect.none),
("Dwarf Cottage ", faction.rampart, 5, 1, (360, others => 0), 1, effect.none),
("Homestead ", faction.rampart, 5, 1, (360, others => 0), 1, effect.none),
("Enchanted Spring ", faction.rampart, 5, 1, (360, others => 0), 3, effect.none),
("Dendroid Arches ", faction.rampart, 5, 1, (360, others => 0), 1, effect.none),
("Unicorn Glades ", faction.rampart, 5, 1, (360, others => 0), 1, effect.none),
("Dragon Cliffs ", faction.rampart, 5, 1, (360, others => 0), 1, effect.none),
--
("Gnoll Hut ", faction.fortress, 5, 1, (360, others => 0), 1, effect.none),
("Lizard Den ", faction.fortress, 5, 1, (360, others => 0), 1, effect.none),
("Dragonfly Hive ", faction.fortress, 5, 1, (360, others => 0), 3, effect.none),
("Basilisk Pit ", faction.fortress, 5, 1, (360, others => 0), 1, effect.none),
("Gorgon Lair ", faction.fortress, 5, 1, (360, others => 0), 1, effect.none),
("Wyvern Next ", faction.fortress, 5, 1, (360, others => 0), 1, effect.none),
("Hydra Pond ", faction.fortress, 5, 1, (360, others => 0), 1, effect.none),
--
("Warren ", faction.dungeon, 5, 1, (360, others => 0), 1, effect.none),
("Harpy Loft ", faction.dungeon, 5, 1, (360, others => 0), 1, effect.none),
("Pillar of Eyes ", faction.dungeon, 5, 1, (360, others => 0), 1, effect.none),
("Chappel of Voice ", faction.dungeon, 5, 1, (360, others => 0), 1, effect.none),
("Labyrinth ", faction.dungeon, 5, 1, (360, others => 0), 1, effect.none),
("Manticore Lair ", faction.dungeon, 5, 1, (360, others => 0), 1, effect.none),
("Dragon Cave ", faction.dungeon, 5, 1, (360, others => 0), 1, effect.none)
("A ", faction.dwarf, (others => 0), 1, effect.none),
("B ", faction.fairy, (others => 0), 1, effect.none),
("C ", faction.gnoll, (others => 0), 1, effect.none),
("D ", faction.goblin, (others => 0), 1, effect.none),
("E ", faction.imp, (others => 0), 1, effect.none),
("F ", faction.kobold, (others => 0), 1, effect.none)
);
------------------------------------------------------------------------------------------

View File

@ -210,6 +210,10 @@ package body core is
this.frames := frames;
this.states := states;
--
if this.width = 0 or this.height = 0 then
echo (failure, "./" & file_path);
end if;
--
return this;
end import_sprite;
@ -285,7 +289,7 @@ package body core is
procedure move (data : in sprite; x, y, frame, state : in integer) is
begin
render_sprite (data.index, x, y, state * data.width, (animation_time mod frame) * data.height, data.width, data.height);
render_sprite (data.index, x, y, (animation_time mod frame) * data.width, state * data.height, data.width, data.height);
end move;
------------------------------------------------------------------------------------------

View File

@ -69,7 +69,7 @@ package core is
------------------------------------------------------------------------------------------
icon : constant natural := 32;
base : constant natural := 32;
base : constant natural := 16;
gameplay_framerate : constant natural := 60;
animation_framerate : constant natural := 6;
@ -94,11 +94,13 @@ package core is
gameplay_time : natural := 0;
animation_time : natural := 0;
camera : vector := (0, 0);
zoom : boolean := false;
hexagon_grid_sprite : sprite;
hexagon_fill_sprite : sprite;
camera : vector := (0, 0);
text_box : volatile;
------------------------------------------------------------------------------------------

View File

@ -14,29 +14,7 @@ package item is
);
type codex is (
admirals_hat, ambassadors_sash, undertakers_amulet, angel_feather_arrows, angelic_alliance, angel_wings,
armageddons_blade, armor_of_the_damned, armor_of_wonder, arms_of_legion, badge_of_courage, bird_of_perception,
blackshard, boots_of_levitation, boots_of_polarity, boots_of_speed, elven_bow, sharpshooters_bow,
unicorns_string, brimstone_armour, wooden_breastplate, gnolls_buckler, cape_of_conjuring, cape_of_velocity,
cards_of_prophecy, celestial_necklace, centaurs_axe, charm_of_mana, balanced_cloak, clover_of_fortune,
collar_of_conjuring, cornucopia, crest_of_valor, crown_of_dragontooth, crown_of_magician, dead_mans_boots,
diplomats_ring, dragonbone_greaves, dragon_scale_armor, dragon_scale_shield, dragon_wing_tabard, elixir_of_life,
emblem_of_cognizance, endless_bag_of_gold, endless_purse_of_gold, endless_sack_of_gold, equestrians_gloves, everflowing_crystal,
vial_of_mercury, ring_of_sulfur, interference_choker, glyph_of_gallantry, golden_bow, greater_gnolls_flail,
head_of_legion, hellstorm_helmet, helm_of_chaos, helm_of_heavens, helm_of_the_alabaster, evil_hour,
cart_of_lumber, cart_of_ore, ladybird_of_luck, legs_of_legion, shield_of_courage, loins_of_legion,
mystic_orb_of_mana, dragonteeth_necklace, ocean_guidance, necklace_of_swiftness, ogres_club_of_havoc, orb_of_driving_rain,
orb_of_inhibition, orb_of_silt, orb_of_hell_tempest, orb_of_the_firmament, orb_of_vulnerability, pendant_of_courage,
pendant_of_death, pendant_of_dispassion, pendant_of_free_will, pendant_of_holiness, pendant_of_life, pendant_of_negativity,
pendant_of_renderer, pendant_of_memory, dragon_father_armour, quiet_eye, recanters_cloak, flammenwerfer,
rib_cage, ring_of_conjuring, ring_of_infinite_gems, ring_of_life, ring_of_the_magi, ring_of_the_wayfarer,
ring_of_vitality, sandals_of_the_saint, basilisk_chestplate, sea_captains_hat, sentinels_shield, shackles_of_war,
fortrans_shield, oakenshield, undead_shield, skull_helmet, speculum, spellbinders_hat,
sphere_of_permanence, spirit_of_oppression, spyglass, statesmans_medal, statue_of_legion, cs_ring,
stoic_watchman, counterpoise, sword_of_hellfire, adas_claymore, talisman_of_mana, targ,
thunder_helmet, titans_cuirass, titans_gladius, titans_thunder, tome_of_air, tome_of_earth,
tome_of_fire, tome_of_water, torso_of_legion, cyclops_tunic, vampires_cowl, vial_of_dragon_blood,
vial_of_lifeblood, wizards_well
a, b
);
------------------------------------------------------------------------------------------
@ -56,140 +34,8 @@ package item is
count : constant natural := codex'pos (codex'last) + 1;
trait : constant array (codex) of information := (
("Admiral's Hat ", head, 0, effect.none),
("Ambassador's Sash ", full_body, 0, effect.none),
("Undertaker's Amulet ", neck, 1, effect.none),
("Angel Feather Arrows ", bag, 1, effect.none),
("Angelic Alliance ", main_hand, 2, effect.none),
("Angel Wings ", full_body, 2, effect.none),
("Armageddon's Blade ", main_hand, 3, effect.none),
("Armor of The Damned ", chest, 3, effect.none),
("Armor of Wonder ", chest, 0, effect.none),
("Arms of Legion ", bag, 0, effect.none),
("Badge of Courage ", bag, 1, effect.none),
("Bird of Perception ", bag, 1, effect.none),
("Blackshard ", main_hand, 2, effect.none),
("Boot's of Levitation ", feet, 2, effect.none),
("Boot's of Polarity ", feet, 3, effect.none),
("Boot's of Speed ", feet, 3, effect.none),
("Elven Bow ", off_hand, 0, effect.none),
("Sharpshooter's Bow ", off_hand, 0, effect.none),
("Unicorn's String ", bag, 1, effect.none),
("Brimstone Armour ", chest, 1, effect.none),
("Wooden Breastplate ", chest, 2, effect.none),
("Gnoll's Buckler ", off_hand, 2, effect.none),
("Cape of Conjuring ", full_body, 3, effect.none),
("Cape of Velocity ", full_body, 3, effect.none),
("Card's of Prophecy ", bag, 0, effect.none),
("Celestial Necklace ", neck, 0, effect.none),
("Centaur's Axe ", main_hand, 1, effect.none),
("Charm of Mana ", neck, 1, effect.none),
("Balanced Cloak ", full_body, 2, effect.none),
("Clover of Fortune ", bag, 2, effect.none),
("Collar of Conjuring ", neck, 3, effect.none),
("Cornucopia ", bag, 3, effect.none),
("Crest of Valor ", bag, 0, effect.none),
("Crown of Dragontooth ", head, 0, effect.none),
("Crown of Magician ", head, 1, effect.none),
("Dead Man's Boots ", feet, 1, effect.none),
("Diplomat's Ring ", finger, 2, effect.none),
("Dragonbone Greaves ", feet, 2, effect.none),
("Dragon Scale Armor ", chest, 3, effect.none),
("Dragon Scale Shield ", off_hand, 3, effect.none),
("Dragon Wing Tabard ", full_body, 0, effect.none),
("Elixir of Life ", bag, 0, effect.none),
("Emblem of Cognizance ", neck, 1, effect.none),
("Endles's Bag of Gold ", bag, 1, effect.none),
("Endles's Purse of Gold ", bag, 2, effect.none),
("Endles's Sack of Gold ", bag, 2, effect.none),
("Equestrian's Gloves ", hands, 3, effect.none),
("Everflowing Crystal ", full_body, 3, effect.none),
("Vial of Mercury ", bag, 0, effect.none),
("Ring of Sulfur ", finger, 0, effect.none),
("Interference Choker ", neck, 1, effect.none),
("Glyph of Gallantry ", bag, 1, effect.none),
("Golden Bow ", off_hand, 2, effect.none),
("Greater Gnoll's Flail ", main_hand, 2, effect.none),
("Head of Legion ", bag, 3, effect.none),
("Hellstorm Helmet ", head, 3, effect.none),
("Helm of Chaos ", head, 0, effect.none),
("Helm of Heavens ", head, 0, effect.none),
("Helm of The Alabaster ", head, 1, effect.none),
("Evil Hour ", bag, 1, effect.none),
("Cart of Lumber ", bag, 2, effect.none),
("Cart of Ore ", bag, 2, effect.none),
("Ladybird of Luck ", bag, 3, effect.none),
("Leg's of Legion ", bag, 3, effect.none),
("Shield of Courage ", off_hand, 0, effect.none),
("Loin's of Legion ", bag, 0, effect.none),
("Mystic Orb of Mana ", neck, 0, effect.none),
("Dragonteeth Necklace ", neck, 0, effect.none),
("Ocean Guidance ", neck, 0, effect.none),
("Necklace of Swiftness ", neck, 0, effect.none),
("Ogre's Club of Havoc ", main_hand, 0, effect.none),
("Orb of Driving Rain ", bag, 0, effect.none),
("Orb of Inhibition ", bag, 1, effect.none),
("Orb of Silt ", bag, 1, effect.none),
("Orb of Hell Tempest ", bag, 1, effect.none),
("Orb of The Firmament ", bag, 1, effect.none),
("Orb of Vulnerability ", bag, 1, effect.none),
("Pendant of Courage ", neck, 1, effect.none),
("Pendant of Death ", neck, 1, effect.none),
("Pendant of Dispassion ", neck, 1, effect.none),
("Pendant of Free Will ", neck, 2, effect.none),
("Pendant of Holiness ", neck, 2, effect.none),
("Pendant of Life ", neck, 2, effect.none),
("Pendant of Negativity ", neck, 2, effect.none),
("Pendant of Renderer ", neck, 2, effect.none),
("Pendant of Memory ", neck, 2, effect.none),
("Dragon Father Armour ", chest, 2, effect.none),
("Quiet Eye ", finger, 2, effect.none),
("Recanter's Cloak ", full_body, 3, effect.none),
("Flammenwerfer ", main_hand, 3, effect.none),
("Rib Cage ", chest, 3, effect.none),
("Ring of Conjuring ", finger, 3, effect.none),
("Ring of Infinite Gems ", finger, 3, effect.none),
("Ring of Life ", finger, 3, effect.none),
("Ring of The Magi ", finger, 3, effect.none),
("Ring of The Wayfarer ", finger, 3, effect.none),
("Ring of Vitality ", finger, 3, effect.none),
("Sandal's of The Saint ", feet, 3, effect.none),
("Basilisk Chestplate ", chest, 3, effect.none),
("Sea Captain's Hat ", head, 3, effect.none),
("Sentinel's Shield ", off_hand, 3, effect.none),
("Shackle's of War ", hands, 3, effect.none),
("Fortran's Shield ", off_hand, 3, effect.none),
("Oakenshield ", off_hand, 3, effect.none),
("Undead Shield ", off_hand, 3, effect.none),
("Skull Helmet ", head, 3, effect.none),
("Speculum ", bag, 3, effect.none),
("Spellbinder's Hat ", head, 3, effect.none),
("Sphere of Permanence ", bag, 3, effect.none),
("Spirit of Oppression ", bag, 3, effect.none),
("Spyglass ", bag, 3, effect.none),
("Statesman's Medal ", neck, 3, effect.none),
("Statue of Legion ", bag, 3, effect.none),
("C's Ring ", finger, 3, effect.none),
("Stoic Watchman ", bag, 3, effect.none),
("Counterpoise ", full_body, 3, effect.none),
("Sword of Hellfire ", main_hand, 3, effect.none),
("Ada's Claymore ", main_hand, 3, effect.none),
("Talisman of Mana ", bag, 3, effect.none),
("Targ ", off_hand, 3, effect.none),
("Thunder Helmet ", head, 3, effect.none),
("Titan's Cuirass ", chest, 3, effect.none),
("Titan's Gladius ", main_hand, 3, effect.none),
("Titan's Thunder ", main_hand, 3, effect.none),
("Tome of Air ", off_hand, 3, effect.none),
("Tome of Earth ", off_hand, 3, effect.none),
("Tome of Fire ", off_hand, 3, effect.none),
("Tome of Water ", off_hand, 3, effect.none),
("Torso of Legion ", bag, 3, effect.none),
("Cyclop's Tunic ", chest, 3, effect.none),
("Vampire's Cowl ", full_body, 3, effect.none),
("Vial of Dragon Blood ", bag, 3, effect.none),
("Vial of Lifeblood ", bag, 3, effect.none),
("Wizard's Well ", bag, 3, effect.none)
("A ", head, 0, effect.none),
("B ", full_body, 0, effect.none)
);
------------------------------------------------------------------------------------------

View File

@ -4,8 +4,7 @@
pragma ada_2012;
--~with core, ui, effect, attribute, skill, resource, faction, might, magic, item, unit, construction, chad, world, ai;
with core, ui, effect, attribute, skill, resource, faction, chad, ai;
with core, ui, effect, attribute, skill, resource, faction, might, magic, item, unit, construction, chad, world, ai;
procedure main is
@ -21,52 +20,52 @@ procedure main is
------------------------------------------------------------------------------------------
--~type menu_index is (
--~menu_none, menu_attribute, menu_skill, menu_resource, menu_unit, menu_might, menu_magic
--~);
type menu_index is (
menu_none, menu_attribute, menu_skill, menu_resource, menu_unit, menu_might, menu_magic
);
--~menu_limit : constant integer := 3;
--~menu_count : integer := 0;
menu_limit : constant integer := 3;
menu_count : integer := 0;
--~menu_stack : array (1 .. menu_limit) of menu_index := (others => menu_none);
menu_stack : array (1 .. menu_limit) of menu_index := (others => menu_none);
--~procedure menu_insert (index : in menu_index) is
--~begin
--~if menu_count = menu_limit then return; end if;
--~--
--~menu_count := menu_count mod menu_limit + 1;
--~--
--~menu_stack (menu_count) := index;
--~end menu_insert;
procedure menu_insert (index : in menu_index) is
begin
if menu_count = menu_limit then return; end if;
--
menu_count := menu_count mod menu_limit + 1;
--
menu_stack (menu_count) := index;
end menu_insert;
--~procedure menu_remove is
--~begin
--~if menu_count = 0 then return; end if;
--~--
--~menu_stack (menu_count) := menu_none;
--~--
--~menu_count := menu_count - 1;
--~end menu_remove;
procedure menu_remove is
begin
if menu_count = 0 then return; end if;
--
menu_stack (menu_count) := menu_none;
--
menu_count := menu_count - 1;
end menu_remove;
--~procedure menu_render is
--~begin
--~if menu_count > 0 then
--~core.overlay;
--~end if;
--~--
--~for index in 1 .. menu_limit
--~loop
--~case menu_stack (index) is
--~when menu_none => null;
--~when menu_attribute => attribute.menu (100, 100, false);
--~when menu_skill => skill.menu (200, 200, false);
--~when menu_resource => resource.menu (300, 300, false);
--~when menu_unit => unit.menu (0, 0, true);
--~when menu_might => might.menu (0, 0, true);
--~when menu_magic => magic.menu (0, 0, true);
--~end case;
--~end loop;
--~end menu_render;
procedure menu_render is
begin
if menu_count > 0 then
core.overlay;
end if;
--
for index in 1 .. menu_limit
loop
case menu_stack (index) is
when menu_none => null;
when menu_attribute => attribute.menu (100, 100, false);
when menu_skill => skill.menu (200, 200, false);
when menu_resource => resource.menu (300, 300, false);
when menu_unit => unit.menu (0, 0, true);
when menu_might => might.menu (0, 0, true);
when menu_magic => magic.menu (0, 0, true);
end case;
end loop;
end menu_render;
------------------------------------------------------------------------------------------
@ -75,26 +74,26 @@ procedure main is
procedure move_camera_down is begin core.camera.y := core.camera.y + 1; end move_camera_down;
procedure move_camera_left is begin core.camera.x := core.camera.x - 1; end move_camera_left;
procedure move_camera_right is begin core.camera.x := core.camera.x + 1; end move_camera_right;
--~procedure show_attribute_menu is begin menu_insert (menu_attribute); end show_attribute_menu;
--~procedure show_skill_menu is begin menu_insert (menu_skill); end show_skill_menu;
--~procedure show_resource_menu is begin menu_insert (menu_resource); end show_resource_menu;
--~procedure show_unit_menu is begin menu_insert (menu_unit); end show_unit_menu;
--~procedure show_might_menu is begin menu_insert (menu_might); end show_might_menu;
--~procedure show_magic_menu is begin menu_insert (menu_magic); end show_magic_menu;
--~procedure hide_top_menu is begin menu_remove; end hide_top_menu;
procedure show_attribute_menu is begin menu_insert (menu_attribute); end show_attribute_menu;
procedure show_skill_menu is begin menu_insert (menu_skill); end show_skill_menu;
procedure show_resource_menu is begin menu_insert (menu_resource); end show_resource_menu;
procedure show_unit_menu is begin menu_insert (menu_unit); end show_unit_menu;
procedure show_might_menu is begin menu_insert (menu_might); end show_might_menu;
procedure show_magic_menu is begin menu_insert (menu_magic); end show_magic_menu;
procedure hide_top_menu is begin menu_remove; end hide_top_menu;
signal_list : constant array (core.signal_code) of access procedure := (
core.signal_up => move_camera_up'access,
core.signal_down => move_camera_down'access,
core.signal_left => move_camera_left'access,
core.signal_right => move_camera_right'access,
--~core.signal_a => show_attribute_menu'access,
--~core.signal_s => show_skill_menu'access,
--~core.signal_r => show_resource_menu'access,
--~core.signal_u => show_unit_menu'access,
--~core.signal_m => show_might_menu'access,
--~core.signal_n => show_magic_menu'access,
--~core.signal_grave => hide_top_menu'access,
core.signal_a => show_attribute_menu'access,
core.signal_s => show_skill_menu'access,
core.signal_r => show_resource_menu'access,
core.signal_u => show_unit_menu'access,
core.signal_m => show_might_menu'access,
core.signal_n => show_magic_menu'access,
core.signal_grave => hide_top_menu'access,
others => idle'access
);
@ -118,16 +117,16 @@ begin
attribute.configure;
skill.configure;
resource.configure;
--~might.configure;
--~magic.configure;
--~item.configure;
--~unit.configure;
--~construction.configure;
might.configure;
magic.configure;
item.configure;
unit.configure;
construction.configure;
chad.configure;
--~world.configure;
world.configure;
ai.configure;
--~world.make (world.rough, 120, 100);
world.make (world.grass, 120, 100);
preview_width := core.window_width - side_panel;
preview_height := core.window_height;
@ -145,13 +144,10 @@ begin
--
ui.active := (if core.cursor_mode = 3 then ui.default else ui.steam);
--
--~core.draw (core.hexagon_fill_sprite, 0, 0);
--~core.draw (core.hexagon_grid_sprite, 0, 0);
core.camera.x := core.clip (core.camera.x, 0, world.map.width - preview_width / core.base);
core.camera.y := core.clip (core.camera.y, 0, world.map.height - preview_height / core.base);
--
--~core.camera.x := core.clip (core.camera.x, 0, world.map.width - preview_width / core.base);
--~core.camera.y := core.clip (core.camera.y, 0, world.map.height - preview_height / core.base);
--
--~world.draw (preview_x, preview_y, preview_width - 2 * preview_x, preview_height - 2 * preview_y - 32, core.signal_mode = core.signal_code'pos (core.signal_g));
world.draw (preview_x, preview_y, preview_width - 2 * preview_x, preview_height - 2 * preview_y - 32, core.signal_mode = core.signal_code'pos (core.signal_g));
--
--~core.draw_central_grid (preview_x, preview_y, preview_width - 2 * preview_x, preview_height - 2 * preview_y);
--~core.draw_squared_grid (preview_x, preview_y, preview_width - 2 * preview_x, preview_height - 2 * preview_y);
@ -164,15 +160,12 @@ begin
--
signal_list (core.signal_code'val (core.signal_mode)).all;
--
--~ai.review;
--~ai.view_actor_state (1);
--
--~magic.menu (0, 0, true);
--~might.menu (0, 0, true);
--
--~menu_render;
menu_render;
--
--~ui.write (menu_count'image, 16, 16);
ui.write (menu_count'image, 16, 16);
--
ui.draw_text_box (0, core.window_height - 32, core.window_width, 32);
end loop gameplay;

View File

@ -29,7 +29,7 @@ package body unit is
folder : constant string := core.lowercase (faction.codex'image (trait (index).kind));
file : constant string := core.lowercase (codex'image (index));
begin
sprite (index) := core.import_sprite ("./sprite/unit/" & folder & "/" & file & ".png", 6, 6);
sprite (index) := core.import_sprite ("./sprite/unit/" & folder & "/" & file & ".png", 4, 6);
icon_sprite (index) := core.import_sprite ("./sprite/unit/icon/" & file & ".png", 1, 1);
view_sprite (index) := core.import_sprite ("./sprite/unit/view/" & file & ".png", 1, 1);
end;

View File

@ -9,49 +9,11 @@ package unit is
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
type animation is (
idle, wounded, dead, moving, toggle_moving, attack
idle, walk, melee, shoot, wounded, dead
);
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
dwarf_male, fairy_male, gnoll_male, goblin_male, imp_male, kobold_male
);
------------------------------------------------------------------------------------------
@ -70,155 +32,12 @@ package unit is
count : constant natural := codex'pos (codex'last) + 1;
trait : constant array (codex) of information := (
("Azure Dragon ", faction.neutral, (others => 1), effect.none, "Powerful and majestic dragon known for its devastating attacks. "),
("Boar ", faction.neutral, (others => 1), effect.none, "Wild animal with tusks, often used as frontline warriors. "),
("Crystal Dragon ", faction.neutral, (others => 1), effect.none, "Crystal-encrusted dragon with powerful magical abilities. "),
("Enchanter ", faction.neutral, (others => 1), effect.none, "Spellcaster specializing in enchantments and buffs. "),
("Faerie Dragon ", faction.neutral, (others => 1), effect.none, "Mischievous creature with potent magical abilities. "),
("Gold Golem ", faction.neutral, (others => 1), effect.none, "Construct made of pure gold, resistant to magic. "),
("Halfing ", faction.neutral, (others => 1), effect.none, "Small, nimble creature with stealth and ranged abilities. "),
("Mummy ", faction.neutral, (others => 1), effect.none, "Undead creature wrapped in bandages, capable of curses. "),
("Nomad ", faction.neutral, (others => 1), effect.none, "Skilled ranged fighter from the desert with high mobility. "),
("Peasant ", faction.neutral, (others => 1), effect.none, "Basic unit, typically low-cost and expendable. "),
("Rogue ", faction.neutral, (others => 1), effect.none, "Sneaky unit specialized in stealth and surprise attacks. "),
("Rust Dragon ", faction.neutral, (others => 1), effect.none, "Dragon with corrosive breath, capable of weakening enemies. "),
("Sharpshooter ", faction.neutral, (others => 1), effect.none, "Highly skilled ranged unit with exceptional accuracy. "),
("Troll ", faction.neutral, (others => 1), effect.none, "Regenerating and powerful brute, often used as a tank. "),
--
("Pikeman ", faction.castle, (others => 1), effect.none, "Basic spear-wielding infantry unit with a defensive stance. "),
("Halberdier ", faction.castle, (others => 1), effect.none, "Advanced infantry unit armed with a versatile halberd. "),
("Archer ", faction.castle, (others => 1), effect.none, "Ranged unit proficient in shooting arrows at enemies. "),
("Crossbowman ", faction.castle, (others => 1), effect.none, "Highly skilled archer with superior accuracy and damage. "),
("Griffin ", faction.castle, (others => 1), effect.none, "Majestic creature with flying capabilities and swift attacks. "),
("Royal Griffin ", faction.castle, (others => 1), effect.none, "Upgraded version of the Griffin with enhanced stats and abilities. "),
("Swordsman ", faction.castle, (others => 1), effect.none, "Skillful melee fighter equipped with a sharp blade. "),
("Crusader ", faction.castle, (others => 1), effect.none, "Holy warrior with strong offensive and defensive capabilities. "),
("Monk ", faction.castle, (others => 1), effect.none, "Mystic unit with healing and support spells. "),
("Zealot ", faction.castle, (others => 1), effect.none, "Fanatic warrior dedicated to their cause, often infused with magic. "),
("Cavalier ", faction.castle, (others => 1), effect.none, "Mounted knight unit with speed and impact in battle. "),
("Champion ", faction.castle, (others => 1), effect.none, "Elite warrior with exceptional combat skills and resilience. "),
("Angel ", faction.castle, (others => 1), effect.none, "Divine being with powerful healing and offensive abilities. "),
("Arch-Angel ", faction.castle, (others => 1), effect.none, "Superior celestial being with extraordinary powers and influence. "),
--
("Goblin ", faction.stronghold, (others => 1), effect.none, "Small and mischievous creature known for its cunning and traps. "),
("Hobgoblin ", faction.stronghold, (others => 1), effect.none, "Stronger and more vicious version of the goblin, often brave warriors. "),
("Wolf Rider ", faction.stronghold, (others => 1), effect.none, "Fast-moving unit mounted on wolves for quick strikes. "),
("Wolf Raider ", faction.stronghold, (others => 1), effect.none, "Upgraded version of the Wolf Rider with enhanced strength and ferocity. "),
("Orc ", faction.stronghold, (others => 1), effect.none, "Brutal and fierce humanoid warrior with a penchant for melee combat. "),
("Orc Chieftain ", faction.stronghold, (others => 1), effect.none, "Leader of orcish tribes, commanding respect and fear among his folk. "),
("Orge ", faction.stronghold, (others => 1), effect.none, "Huge and powerful creature capable of crushing foes with its strength. "),
("Ogre Magi ", faction.stronghold, (others => 1), effect.none, "Magical variant of the ogre, using berserk spell in addition to mace. "),
("Roc ", faction.stronghold, (others => 1), effect.none, "Gigantic bird of prey with the ability to carry friendly units. "),
("Thunderbird ", faction.stronghold, (others => 1), effect.none, "Mythical bird with control over lightning and thunder. "),
("Cyclops ", faction.stronghold, (others => 1), effect.none, "One-eyed giant wielding massive clubs for devastating blows. "),
("Cyclops King ", faction.stronghold, (others => 1), effect.none, "Sovereign ruler among the cyclops race, commanding great respect. "),
("Behemoth ", faction.stronghold, (others => 1), effect.none, "Enormous and unstoppable monster wreaking havoc on the battlefield. "),
("Ancient Behemoth ", faction.stronghold, (others => 1), effect.none, "Legendary and exceptionally powerful behemoth with devastating attacks. "),
--
("Imp ", faction.inferno, (others => 1), effect.none, "Small, agile demon known for its cunning and mischief. "),
("Familiar ", faction.inferno, (others => 1), effect.none, "Devilish creature bound to a sorcerer, aiding in magic and combat. "),
("Gog ", faction.inferno, (others => 1), effect.none, "Mighty and brutish humanoid warrior wielding a massive club. "),
("Magog ", faction.inferno, (others => 1), effect.none, "Elite version of the Gog, boasting enhanced strength and aggression. "),
("Hell Hound ", faction.inferno, (others => 1), effect.none, "Fiery canine creature with a fierce bite and burning breath. "),
("Cerberus ", faction.inferno, (others => 1), effect.none, "Three-headed dog guarding the gates of the underworld with ferocity. "),
("Demon ", faction.inferno, (others => 1), effect.none, "Malevolent creature from the abyss, wielding dark powers and strength. "),
("Horned Demon ", faction.inferno, (others => 1), effect.none, "Upgraded demon with greater power and enhanced abilities. "),
("Pit Fiend ", faction.inferno, (others => 1), effect.none, "Terrifying demon lord commanding legions of infernal forces. "),
("Pit Lord ", faction.inferno, (others => 1), effect.none, "Ruthless ruler of demonic realms, instilling fear in all who oppose. "),
("Efreeti ", faction.inferno, (others => 1), effect.none, "Fiery elemental being capable of unleashing inferno upon enemies. "),
("Efreet Sultan ", faction.inferno, (others => 1), effect.none, "Powerful and regal efreet lord commanding fire and magic. "),
("Devil ", faction.inferno, (others => 1), effect.none, "Cunning and manipulative fiend striking deals for souls and power. "),
("Arch Devil ", faction.inferno, (others => 1), effect.none, "Ultimate demon lord embodying darkness and corruption. "),
--
("Gremlin ", faction.tower, (others => 1), effect.none, "Small, mischievous creature known for its trickery and cunning. "),
("Master Gremlin ", faction.tower, (others => 1), effect.none, "A more powerful version of the Gremlin with enhanced abilities. "),
("Stone Gargoyle ", faction.tower, (others => 1), effect.none, "Stone creature resembling a grotesque statue, often found in ruins. "),
("Obisidian Gargoyle ", faction.tower, (others => 1), effect.none, "Stronger variant of the Stone Gargoyle, with increased durability. "),
("Stone Golem ", faction.tower, (others => 1), effect.none, "Humanoid construct made entirely of stone, animated through magic. "),
("Iron Golem ", faction.tower, (others => 1), effect.none, "Stronger and more resilient golem crafted from iron and alloys. "),
("Mage ", faction.tower, (others => 1), effect.none, "Spellcaster wielding elemental magic and arcane powers in battles. "),
("Arch Mage ", faction.tower, (others => 1), effect.none, "Masterful mage with unparalleled mastery over various schools of magic. "),
("Geany ", faction.tower, (others => 1), effect.none, "Mystical creature capable of granting wishes, blessing his friends. "),
("Master Geany ", faction.tower, (others => 1), effect.none, "Higher-ranking Geany possessing greater magical prowess and wisdom. "),
("Naga ", faction.tower, (others => 1), effect.none, "Serpentine creature with a humanoid upper body, wielding deadly poison. "),
("Naga Queen ", faction.tower, (others => 1), effect.none, "Powerful matriarch among the Naga, ruling with pride and confidence. "),
("Giant ", faction.tower, (others => 1), effect.none, "Enormous humanoid known for its immense strength and sheer size. "),
("Titan ", faction.tower, (others => 1), effect.none, "Colossal and ancient being of immense power throwing lightning. "),
--
("Pixie ", faction.conflux, (others => 1), effect.none, "Tiny, sprite-like creature known for its magical abilities. "),
("Spirit ", faction.conflux, (others => 1), effect.none, "An actual sprite, but I used that name for image data sadly. "),
("Air Elemental ", faction.conflux, (others => 1), effect.none, "Elemental creature using the power of air, controling winds and storms. "),
("Storm Elemental ", faction.conflux, (others => 1), effect.none, "Powerful entity of turbulent weather, commanding lightning and thunder. "),
("Water Elemental ", faction.conflux, (others => 1), effect.none, "Entity formed of pure water, capable of manipulating rivers and rain. "),
("Ice Elemental ", faction.conflux, (others => 1), effect.none, "Elemental creature embodying the chilling power of ice and frost. "),
("Fire Elemental ", faction.conflux, (others => 1), effect.none, "Being of living flames and intense heat, wreaking havoc with its fire. "),
("Energy Elemental ", faction.conflux, (others => 1), effect.none, "Elemental entity representing raw energy in its most potent form. "),
("Earth Elemental ", faction.conflux, (others => 1), effect.none, "Elemental creature tied to the earth itself, possessing great strength. "),
("Magma Elemental ", faction.conflux, (others => 1), effect.none, "Fusion of fire and earth elements, embodying molten rock. "),
("Psychic Elemental ", faction.conflux, (others => 1), effect.none, "Entity harnessing the power of the mind, capable of psionic attacks. "),
("Magic Elemental ", faction.conflux, (others => 1), effect.none, "An elemental creature infused with pure arcane energy. "),
("Fire Bird ", faction.conflux, (others => 1), effect.none, "A mythical avian creature with feathers of flame, embodying the flames. "),
("Phoenix ", faction.conflux, (others => 1), effect.none, "Legendary bird of rebirth and renewal, reborn from its ashes. "),
--
("Skeleton ", faction.necropolis, (others => 1), effect.none, "Animated pile of bones, devoid of flesh or soul, controlled by magic. "),
("Skeleton Warrior ", faction.necropolis, (others => 1), effect.none, "Reanimated skeletal being armed for battle, serving as undead soldiers. "),
("Walking Dead ", faction.necropolis, (others => 1), effect.none, "Reanimated corpses stumbling aimlessly, driven by dark magic or curses. "),
("Zombie ", faction.necropolis, (others => 1), effect.none, "Flesh-eating undead creatures, reanimated through necromantic rituals. "),
("Wight ", faction.necropolis, (others => 1), effect.none, "Undead creature with malevolent powers, often draining life energy. "),
("Wraith ", faction.necropolis, (others => 1), effect.none, "Spectral entity dwelling in darkness, feeding on fear and despair. "),
("Vampire ", faction.necropolis, (others => 1), effect.none, "Immortal creature of the night, sustained by blood and flesh. "),
("Vampire Lord ", faction.necropolis, (others => 1), effect.none, "Powerful vampire noble with enhanced abilities and commanding undead. "),
("Lich ", faction.necropolis, (others => 1), effect.none, "Undead sorcerer achieving immortality through dark magic. "),
("Power Lich ", faction.necropolis, (others => 1), effect.none, "Elite lich with heightened magical prowess and devastating spells. "),
("Black Knight ", faction.necropolis, (others => 1), effect.none, "Undead warrior clad in dark armor, serving dark lords to spread terror. "),
("Dread Knight ", faction.necropolis, (others => 1), effect.none, "Elite black knight of immense power and skill, feared on the front. "),
("Bone Dragon ", faction.necropolis, (others => 1), effect.none, "Undead dragon reanimated from ancient bones, breathing death and decay. "),
("Ghost Dragon ", faction.necropolis, (others => 1), effect.none, "Spectral dragon of ethereal essence, haunting the living beings. "),
--
("Centaur ", faction.rampart, (others => 1), effect.none, "Half-human, half-horse creature known for archery and speed in combat. "),
("Centaur Captain ", faction.rampart, (others => 1), effect.none, "Distinguished centaur leader commanding troops with precision. "),
("Dwarf ", faction.rampart, (others => 1), effect.none, "Stout and sturdy underground-dwelling beings skilled in craftsmanship. "),
("Battle Dwarf ", faction.rampart, (others => 1), effect.none, "Ferocious dwarf warrior renowned for their combat prowess. "),
("Wood Elf ", faction.rampart, (others => 1), effect.none, "Graceful forest-dwelling elves attuned to nature and archery. "),
("Grand Elf ", faction.rampart, (others => 1), effect.none, "Elite wood elf warrior with exceptional skills in marksmanship. "),
("Pegasus ", faction.rampart, (others => 1), effect.none, "Majestic winged horse revered for its speed and grace in battle. "),
("Silver Pegasus ", faction.rampart, (others => 1), effect.none, "Rare and ethereal pegasus with shimmering silver wings and light aura. "),
("Dendroid Guard ", faction.rampart, (others => 1), effect.none, "Towering tree-like creature standing as a guardian of the forest. "),
("Dendroid Soldier ", faction.rampart, (others => 1), effect.none, "Animated tree warrior fiercely protecting nature with its wooden might. "),
("Unicorn ", faction.rampart, (others => 1), effect.none, "Magical horse-like creature with a spiraling horn, symbolizing grace. "),
("War Unicorn ", faction.rampart, (others => 1), effect.none, "Armored unicorn charging into battle with unmatched strength and valor. "),
("Green Dragon ", faction.rampart, (others => 1), effect.none, "Powerful dragon associated with nature and known for fire breath. "),
("Gold Dragon ", faction.rampart, (others => 1), effect.none, "Noble and majestic dragon of great wisdom and power. "),
--
("Gnoll ", faction.fortress, (others => 1), effect.none, "Agile and aggressive hyena-like humanoid known for their savagery. "),
("Gnoll Marauder ", faction.fortress, (others => 1), effect.none, "Ruthless and cunning gnoll leader skilled in hit-and-run tactics. "),
("Lizardman ", faction.fortress, (others => 1), effect.none, "Reptilian humanoid proficient in swamp and jungle environments. "),
("Lizard Warrior ", faction.fortress, (others => 1), effect.none, "Strong and resilient lizardman warrior with great archery skills. "),
("Serpentfly ", faction.fortress, (others => 1), effect.none, "Agile flying creature with a venomous sting, hunting prey from the air. "),
("Dragonfly ", faction.fortress, (others => 1), effect.none, "Swift flying insect-like creature known for its large wings. "),
("Basilisk ", faction.fortress, (others => 1), effect.none, "Terrifying creature capable of petrifying its victims. "),
("Greater Basilisk ", faction.fortress, (others => 1), effect.none, "Larger and more deadly variant of the basilisk, feared for its gaze. "),
("Gorgon ", faction.fortress, (others => 1), effect.none, "Mythical creature with the ability to turn foes to stone with a glance. "),
("Mighty Gorgon ", faction.fortress, (others => 1), effect.none, "Enhanced and formidable Gorgon, striking fear into enemies. "),
("Wyvern ", faction.fortress, (others => 1), effect.none, "Winged dragon-like creature with a barbed tail and a fierce nature. "),
("Wyvern Monarch ", faction.fortress, (others => 1), effect.none, "Sovereign wyvern of colossal size and power with its venomous breath. "),
("Hydra ", faction.fortress, (others => 1), effect.none, "Mythical multi-headed serpent known for its regenerative abilities. "),
("Chaos Hydra ", faction.fortress, (others => 1), effect.none, "Chaotic variant of the hydra with devastating attacks. "),
--
("Troglodyte ", faction.dungeon, (others => 1), effect.none, "Primitive subterranean humanoid with a keen sense of smell. "),
("Infernal Troglodyte ", faction.dungeon, (others => 1), effect.none, "Corrupted troglodyte infused with infernal power and dark magic. "),
("Harpy ", faction.dungeon, (others => 1), effect.none, "Half-bird, half-human creature known for its aerial attacks. "),
("Harpy Hag ", faction.dungeon, (others => 1), effect.none, "Malevolent and powerful harpy matriarch capable of casting curses. "),
("Evil Eye ", faction.dungeon, (others => 1), effect.none, "Floating creature with a deadly gaze that can weaken its victims. "),
("Beholder ", faction.dungeon, (others => 1), effect.none, "Floating abomination with multiple eye stalks that shoot venom. "),
("Medusa ", faction.dungeon, (others => 1), effect.none, "Mythical creature with a gaze that turns beings to stone. "),
("Medusa Queen ", faction.dungeon, (others => 1), effect.none, "Powerful and regal medusa with a deadly gaze, ruling over medusas. "),
("Minotaur ", faction.dungeon, (others => 1), effect.none, "Bull-headed humanoid known for its brute strength. "),
("Minotaur King ", faction.dungeon, (others => 1), effect.none, "Majestic and formidable minotaur leader with combat prowess. "),
("Manticore ", faction.dungeon, (others => 1), effect.none, "Mythical creature with a lion's body, bat-like wings, and a spiky tail. "),
("Scorpicore ", faction.dungeon, (others => 1), effect.none, "Hybrid creature combining traits of a manticore and a scorpion. "),
("Red Dragon ", faction.dungeon, (others => 1), effect.none, "Massive fire-breathing dragon with a fearsome reputation. "),
("Black Dragon ", faction.dungeon, (others => 1), effect.none, "Scheming and malevolent beast boasting fire breath and a cruel demeanor.")
("Dwarf ", faction.dwarf, (others => 1), effect.none, " "),
("Fairy ", faction.fairy, (others => 1), effect.none, " "),
("Gnoll ", faction.gnoll, (others => 1), effect.none, " "),
("Goblin ", faction.goblin, (others => 1), effect.none, " "),
("Imp ", faction.imp, (others => 1), effect.none, " "),
("Kobold ", faction.kobold, (others => 1), effect.none, " ")
);
------------------------------------------------------------------------------------------

View File

@ -2,7 +2,7 @@
--
-- GNU General Public Licence (version 3 or later)
with ada.strings.fixed;
--~with ada.strings.fixed;
with core, resource, item, unit, construction, world;
use world;
@ -24,7 +24,7 @@ package body world is
blocks : core.sprite;
landmarks : landmark_sprite_array := (others => null);
limit : constant limit_array := (29, 64, 70, 94, 51, 94);
limit : constant limit_array := (2, 2, 2, 2, 2, 2);
landmark_limit : constant integer := 140;
construction_limit : constant integer := 40;
@ -45,7 +45,8 @@ package body world is
loop
declare
folder : constant string := core.lowercase (codex'image (index));
file : constant string := ada.strings.fixed.trim (value'image, ada.strings.left);
--~file : constant string := ada.strings.fixed.trim (value'image, ada.strings.left);
file : constant string := value'image;
begin
landmarks (index) (value) := core.import_sprite ("./sprite/world/landmark/" & folder & "/" & file & ".png", 1, 1);
end;