2024-04-25 00:27:13 -04:00
|
|
|
-- Copyright (c) 2024 - Ognjen 'xolatile' Milan Robovic
|
|
|
|
--
|
|
|
|
-- GNU General Public Licence (version 3 or later)
|
|
|
|
|
2024-05-11 03:38:33 -04:00
|
|
|
with core, effect, attribute, faction, equipment;
|
2024-02-15 21:03:09 -05:00
|
|
|
|
|
|
|
package unit is
|
|
|
|
|
|
|
|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
|
2024-04-26 16:05:48 -04:00
|
|
|
type enumeration is (
|
2024-06-05 16:04:29 -04:00
|
|
|
none,
|
|
|
|
dwarf_villager, dwarf_miner, dwarf_blacksmith, dwarf_hunter, dwarf_bowman, dwarf_warrior,
|
|
|
|
dwarf_axeman, dwarf_crossbowman, dwarf_berserker, dwarf_guard, dwarf_elite_guard, dwarf_war_druid,
|
|
|
|
dwarf_pig_rider, dwarf_boar_rider, dwarf_giant_mole_rider, dwarf_siegebowman, dwarf_knight, dwarf_flag_carrier
|
2024-02-15 21:03:09 -05:00
|
|
|
);
|
|
|
|
|
|
|
|
------------------------------------------------------------------------------------------
|
|
|
|
|
2024-06-01 11:46:17 -04:00
|
|
|
type definition is record
|
2024-06-05 16:04:29 -04:00
|
|
|
name : access string := new string'("--");
|
|
|
|
kind : faction.enumeration := faction.neutral;
|
2024-06-09 12:38:38 -04:00
|
|
|
limit : natural := 0;
|
2024-06-05 16:04:29 -04:00
|
|
|
attributes : attribute.bonus := (others => 0);
|
2024-06-09 14:39:09 -04:00
|
|
|
hiring_fee : natural := 0;
|
2024-06-05 16:04:29 -04:00
|
|
|
weekly_fee : natural := 0;
|
|
|
|
battle_fee : natural := 0;
|
|
|
|
equipments : equipment.equip_array := equipment.default;
|
2024-05-09 05:07:20 -04:00
|
|
|
end record;
|
|
|
|
|
2024-06-10 04:38:05 -04:00
|
|
|
type information is record
|
2024-06-14 17:00:08 -04:00
|
|
|
index : enumeration := enumeration'first;
|
2024-06-13 20:54:54 -04:00
|
|
|
state : core.animation := core.idle;
|
|
|
|
x : integer := 0;
|
|
|
|
y : integer := 0;
|
|
|
|
health : core.point := (12, 12);
|
|
|
|
mana : core.point := (12, 12);
|
|
|
|
stamina : core.point := (12, 12);
|
2024-06-10 04:38:05 -04:00
|
|
|
end record;
|
|
|
|
|
|
|
|
type informations is array (natural range <>) of information;
|
|
|
|
|
2024-05-21 11:14:17 -04:00
|
|
|
--~bone_chestplate, bronze_chestplate, chainmail_chestplate, crystal_chestplate, golden_chestplate, iron_chestplate,
|
|
|
|
--~leather_chestplate, mithril_chestplate, steel_chestplate, bone_greaves, bronze_greaves, chainmail_greaves,
|
|
|
|
--~crystal_greaves, golden_greaves, iron_greaves, leather_greaves, mithril_greaves, steel_greaves,
|
|
|
|
--~black_tunic, blue_tunic, cyan_tunic, green_tunic, grey_tunic, lime_tunic,
|
|
|
|
--~orange_tunic, pink_tunic, purple_tunic, red_tunic, white_tunic, yellow_tunic,
|
|
|
|
--~bone_gauntlets, bronze_gauntlets, chainmail_gauntlets, crystal_gauntlets, golden_gauntlets, iron_gauntlets,
|
|
|
|
--~leather_gauntlets, mithril_gauntlets, steel_gauntlets, bone_helmet, bronze_helmet, chainmail_helmet,
|
|
|
|
--~crystal_helmet, golden_helmet, iron_helmet, leather_helmet, mithril_helmet, steel_helmet,
|
|
|
|
--~bone_axe, bone_battleaxe, bone_bow, bone_mace, bone_spear, bone_sword,
|
|
|
|
--~bronze_axe, bronze_greatsword, bronze_mace, bronze_spear, bronze_sword, club,
|
|
|
|
--~crystal_bow, crystal_greatsword, crystal_mace, crystal_spear, crystal_sword, golden_axe,
|
|
|
|
--~golden_battleaxe, golden_bow, golden_greatsword, golden_sword, iron_axe, iron_bow,
|
|
|
|
--~iron_mace, iron_spear, iron_sword, jade_axe, jade_battleaxe, jade_greatsword,
|
|
|
|
--~jade_mace, jade_spear, jade_sword, maul, mithril_axe, mithril_battleaxe,
|
|
|
|
--~mithril_bow, mithril_mace, mithril_spear, sledge_hammer, spiked_club, spiked_staff,
|
|
|
|
--~staff, steel_battleaxe, steel_bow, steel_greatsword, steel_mace, steel_sword,
|
|
|
|
--~wooden_bow, wooden_greatsword, wooden_sword, golden_necklace, bronze_shield, crystal_shield,
|
|
|
|
--~golden_shield, iron_shield, mithril_shield, steel_shield, wooden_shield, wooden_armour,
|
|
|
|
--~fur_armour, fur_greaves, fur_gauntlets, red_hood, white_hood, wooden_helmet,
|
|
|
|
--~human_helmet, human_armour, elven_helmet, elven_armour, orcish_helmet, orcish_armour,
|
|
|
|
--~black_robe, cyan_robe, lime_dress, magenta_dress, orange_robe, pink_dress,
|
|
|
|
--~red_robe, sexy_dress, white_robe, lime_robe, orange_hood, fur_helmet,
|
|
|
|
--~black_hood, cyan_hood, lime_hood
|
|
|
|
|
2024-06-05 16:04:29 -04:00
|
|
|
--~full_body, head, chest, hands,
|
|
|
|
--~feet, neck, main_hand, off_hand
|
2024-05-11 01:45:06 -04:00
|
|
|
|
2024-02-15 21:03:09 -05:00
|
|
|
------------------------------------------------------------------------------------------
|
|
|
|
|
2024-06-13 20:54:54 -04:00
|
|
|
count : constant natural := enumeration'pos (enumeration'last) + 1;
|
|
|
|
|
2024-06-01 11:46:17 -04:00
|
|
|
description : constant array (enumeration) of definition := (
|
2024-06-05 16:04:29 -04:00
|
|
|
none => (others => <>),
|
|
|
|
--
|
2024-06-09 12:38:38 -04:00
|
|
|
dwarf_villager => (new string'("Villager"), faction.dwarf, 120, (2, 1, 1, 1, 2, 1), 2, 1, 1, (
|
2024-06-05 16:04:29 -04:00
|
|
|
equipment.grey_tunic, equipment.none, equipment.none, equipment.none,
|
|
|
|
equipment.none, equipment.none, equipment.club, equipment.none)),
|
2024-06-09 12:38:38 -04:00
|
|
|
dwarf_miner => (new string'("Miner"), faction.dwarf, 120, (2, 1, 1, 1, 2, 1), 2, 1, 1, (
|
2024-06-05 16:04:29 -04:00
|
|
|
equipment.grey_tunic, equipment.none, equipment.none, equipment.fur_gauntlets,
|
2024-06-06 02:42:07 -04:00
|
|
|
equipment.fur_greaves, equipment.none, equipment.pickaxe, equipment.none)),
|
2024-06-09 12:38:38 -04:00
|
|
|
dwarf_blacksmith => (new string'("Blacksmith"), faction.dwarf, 90, (2, 1, 1, 1, 2, 1), 3, 1, 2, (
|
2024-06-05 16:04:29 -04:00
|
|
|
equipment.grey_tunic, equipment.leather_helmet, equipment.none, equipment.leather_gauntlets,
|
|
|
|
equipment.leather_greaves, equipment.none, equipment.sledge_hammer, equipment.none)),
|
2024-06-09 12:38:38 -04:00
|
|
|
dwarf_hunter => (new string'("Hunter"), faction.dwarf, 90, (2, 1, 1, 1, 2, 1), 3, 2, 2, (
|
2024-06-05 16:04:29 -04:00
|
|
|
equipment.grey_tunic, equipment.none, equipment.leather_chestplate, equipment.fur_gauntlets,
|
|
|
|
equipment.fur_greaves, equipment.none, equipment.wooden_bow, equipment.none)),
|
2024-06-09 12:38:38 -04:00
|
|
|
dwarf_bowman => (new string'("Bowman"), faction.dwarf, 90, (2, 1, 1, 1, 2, 1), 5, 3, 2, (
|
2024-06-05 16:04:29 -04:00
|
|
|
equipment.blue_tunic, equipment.leather_helmet, equipment.iron_chestplate, equipment.none,
|
|
|
|
equipment.leather_greaves, equipment.none, equipment.iron_bow, equipment.none)),
|
2024-06-09 12:38:38 -04:00
|
|
|
dwarf_warrior => (new string'("Warrior"), faction.dwarf, 120, (2, 1, 1, 1, 2, 1), 7, 3, 3, (
|
2024-06-05 16:04:29 -04:00
|
|
|
equipment.blue_tunic, equipment.leather_helmet, equipment.iron_chestplate, equipment.leather_gauntlets,
|
|
|
|
equipment.leather_greaves, equipment.none, equipment.iron_mace, equipment.wooden_shield)),
|
2024-06-09 12:38:38 -04:00
|
|
|
dwarf_axeman => (new string'("Axeman"), faction.dwarf, 120, (2, 1, 1, 1, 2, 1), 7, 3, 3, (
|
2024-06-05 16:04:29 -04:00
|
|
|
equipment.blue_tunic, equipment.leather_helmet, equipment.iron_chestplate, equipment.leather_gauntlets,
|
|
|
|
equipment.leather_greaves, equipment.none, equipment.iron_axe, equipment.wooden_shield)),
|
2024-06-09 12:38:38 -04:00
|
|
|
dwarf_crossbowman => (new string'("Crossbowman"), faction.dwarf, 90, (2, 1, 1, 2, 2, 1), 7, 5, 3, (
|
2024-06-06 02:42:07 -04:00
|
|
|
equipment.blue_tunic, equipment.iron_helmet, equipment.iron_chestplate, equipment.leather_gauntlets,
|
|
|
|
equipment.leather_greaves, equipment.none, equipment.light_crossbow, equipment.none)),
|
2024-06-09 12:38:38 -04:00
|
|
|
dwarf_berserker => (new string'("Berserker"), faction.dwarf, 120, (3, 2, 1, 3, 3, 1), 7, 3, 5, (
|
2024-06-06 02:42:07 -04:00
|
|
|
equipment.blue_pants, equipment.none, equipment.none, equipment.leather_gauntlets,
|
2024-05-21 11:14:17 -04:00
|
|
|
equipment.leather_greaves, equipment.none, equipment.iron_axe, equipment.none)),
|
2024-06-09 12:38:38 -04:00
|
|
|
dwarf_guard => (new string'("Guard"), faction.dwarf, 90, (2, 3, 1, 3, 2, 1), 17, 5, 3, (
|
2024-06-05 16:04:29 -04:00
|
|
|
equipment.cyan_tunic, equipment.iron_helmet, equipment.iron_chestplate, equipment.leather_gauntlets,
|
|
|
|
equipment.leather_greaves, equipment.none, equipment.iron_spear, equipment.iron_shield)),
|
2024-06-09 12:38:38 -04:00
|
|
|
dwarf_elite_guard => (new string'("Elite Guard"), faction.dwarf, 90, (3, 3, 1, 3, 2, 1), 23, 7, 2, (
|
2024-06-05 16:04:29 -04:00
|
|
|
equipment.cyan_tunic, equipment.mithril_helmet, equipment.mithril_chestplate, equipment.steel_gauntlets,
|
|
|
|
equipment.steel_greaves, equipment.none, equipment.mithril_spear, equipment.steel_shield)),
|
2024-06-09 12:38:38 -04:00
|
|
|
dwarf_war_druid => (new string'("War Druid"), faction.dwarf, 60, (1, 1, 3, 1, 1, 1), 23, 3, 0, (
|
2024-06-06 02:42:07 -04:00
|
|
|
equipment.black_robe, equipment.black_hood, equipment.mithril_chestplate, equipment.none,
|
|
|
|
equipment.none, equipment.none, equipment.staff_of_earth, equipment.none)),
|
2024-06-09 12:38:38 -04:00
|
|
|
dwarf_pig_rider => (new string'("Pig Rider"), faction.dwarf, 30, others => <>), -- todo
|
|
|
|
dwarf_boar_rider => (new string'("Boar Rider"), faction.dwarf, 30, others => <>), -- todo
|
|
|
|
dwarf_giant_mole_rider => (new string'("Giant Mole Rider"), faction.dwarf, 30, others => <>), -- todo
|
|
|
|
dwarf_siegebowman => (new string'("Siegebowman"), faction.dwarf, 60, others => <>), -- todo
|
|
|
|
dwarf_knight => (new string'("Knight"), faction.dwarf, 60, (5, 3, 2, 3, 3, 1), 29, 7, 13, ( -- todo
|
2024-06-05 16:04:29 -04:00
|
|
|
equipment.cyan_robe, equipment.mithril_helmet, equipment.mithril_chestplate, equipment.mithril_gauntlets,
|
|
|
|
equipment.mithril_greaves, equipment.none, equipment.mithril_battleaxe, equipment.mithril_shield)),
|
2024-06-09 12:38:38 -04:00
|
|
|
dwarf_flag_carrier => (new string'("Flag Carrier"), faction.dwarf, 10, (5, 3, 2, 3, 5, 1), 29, 13, 0, (
|
2024-06-06 02:42:07 -04:00
|
|
|
equipment.cyan_robe, equipment.mithril_helmet, equipment.mithril_chestplate, equipment.mithril_gauntlets,
|
|
|
|
equipment.mithril_greaves, equipment.none, equipment.mithril_mace, equipment.mithril_shield))
|
2024-05-09 05:07:20 -04:00
|
|
|
);
|
|
|
|
|
2024-06-09 13:30:05 -04:00
|
|
|
view_width : constant integer := 64;
|
|
|
|
view_height : constant integer := 96;
|
|
|
|
|
2024-06-09 12:38:38 -04:00
|
|
|
base : array (faction.enumeration) of core.sprite;
|
2024-06-09 13:30:05 -04:00
|
|
|
icon : array (enumeration) of core.sprite;
|
|
|
|
view : array (enumeration) of core.sprite;
|
2024-03-11 15:35:56 -04:00
|
|
|
|
2024-02-15 21:03:09 -05:00
|
|
|
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
end unit;
|