xhads/source/item.ads

204 lines
12 KiB
Ada

-- Copyright (c) 2024 - Ognjen 'xolatile' Milan Robovic
--
-- GNU General Public Licence (version 3 or later)
with core, effect;
package item is
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
type slot is (
main_hand, off_hand, head, chest, neck, full_body,
finger, feet, hands, bag
);
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
);
------------------------------------------------------------------------------------------
subtype level_limit is natural range 0 .. 3;
type information is
record
name : core.short_string;
kind : slot;
level : level_limit;
evoke : effect.codex;
end record;
------------------------------------------------------------------------------------------
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)
);
------------------------------------------------------------------------------------------
procedure configure;
procedure draw (index : in codex; x, y : in integer);
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
end item;