xhads/source/equipment.ads

184 lines
14 KiB
Ada

-- Copyright (c) 2024 - Ognjen 'xolatile' Milan Robovic
--
-- GNU General Public Licence (version 3 or later)
with core, effect, attribute, faction;
package equipment is
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
type slot is (
full_body, head, chest, hands, feet, neck,
main_hand, off_hand
);
type enumeration is (
none,
-- 04.05.2024.
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
);
------------------------------------------------------------------------------------------
type information is record
name : core.short_string;
kind : slot;
attributes : attribute.points;
favor : faction.enumeration;
evoke : effect.enumeration;
end record;
type value is record
data : enumeration := equipment.none;
show : boolean := true;
end record;
type equip_array is array (slot) of value;
------------------------------------------------------------------------------------------
empty : constant value := (equipment.none, false);
count : constant natural := enumeration'pos (enumeration'last) + 1;
trait : constant array (enumeration) of information := (
("-- ", head, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("bone_chestplate, ", chest, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("bronze_chestplate, ", chest, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("chainmail_chestplate, ", chest, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("crystal_chestplate, ", chest, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("golden_chestplate, ", chest, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("iron_chestplate, ", chest, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("leather_chestplate, ", chest, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("mithril_chestplate, ", chest, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("steel_chestplate, ", chest, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("bone_greaves, ", feet, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("bronze_greaves, ", feet, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("chainmail_greaves, ", feet, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("crystal_greaves, ", feet, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("golden_greaves, ", feet, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("iron_greaves, ", feet, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("leather_greaves, ", feet, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("mithril_greaves, ", feet, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("steel_greaves, ", feet, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("black_tunic, ", full_body, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("blue_tunic, ", full_body, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("cyan_tunic, ", full_body, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("green_tunic, ", full_body, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("grey_tunic, ", full_body, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("lime_tunic, ", full_body, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("orange_tunic, ", full_body, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("pink_tunic, ", full_body, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("purple_tunic, ", full_body, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("red_tunic, ", full_body, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("white_tunic, ", full_body, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("yellow_tunic, ", full_body, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("bone_gauntlets, ", hands, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("bronze_gauntlets, ", hands, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("chainmail_gauntlets, ", hands, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("crystal_gauntlets, ", hands, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("golden_gauntlets, ", hands, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("iron_gauntlets, ", hands, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("leather_gauntlets, ", hands, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("mithril_gauntlets, ", hands, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("steel_gauntlets, ", hands, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("bone_helmet, ", head, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("bronze_helmet, ", head, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("chainmail_helmet, ", head, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("crystal_helmet, ", head, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("golden_helmet, ", head, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("iron_helmet, ", head, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("leather_helmet, ", head, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("mithril_helmet, ", head, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("steel_helmet, ", head, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("bone_axe, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("bone_battleaxe, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("bone_bow, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("bone_mace, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("bone_spear, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("bone_sword, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("bronze_axe, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("bronze_greatsword, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("bronze_mace, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("bronze_spear, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("bronze_sword, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("club, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("crystal_bow, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("crystal_greatsword, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("crystal_mace, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("crystal_spear, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("crystal_sword, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("golden_axe, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("golden_battleaxe, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("golden_bow, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("golden_greatsword, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("golden_sword, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("iron_axe, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("iron_bow, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("iron_mace, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("iron_spear, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("iron_sword, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("jade_axe, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("jade_battleaxe, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("jade_greatsword, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("jade_mace, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("jade_spear, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("jade_sword, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("maul, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("mithril_axe, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("mithril_battleaxe, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("mithril_bow, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("mithril_mace, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("mithril_spear, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("sledge_hammer, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("spiked_club, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("spiked_staff, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("staff, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("steel_battleaxe, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("steel_bow, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("steel_greatsword, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("steel_mace, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("steel_sword, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("wooden_bow, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("wooden_greatsword, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("wooden_sword, ", main_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("golden_necklace, ", neck, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("bronze_shield, ", off_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("crystal_shield, ", off_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("golden_shield, ", off_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("iron_shield, ", off_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("mithril_shield, ", off_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("steel_shield, ", off_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none),
("wooden_shield ", off_hand, (0, 0, 0, 0, 0, 0), faction.neutral, effect.none)
);
sprite : array (enumeration) of core.sprite;
------------------------------------------------------------------------------------------
procedure configure;
procedure draw (index : in enumeration; state : in core.animation; x, y : in integer);
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
end equipment;