xhads/source/magic.ads

147 lines
13 KiB
Ada

-- Copyright (c) 2024 - Ognjen 'xolatile' Milan Robovic
--
-- GNU General Public Licence (version 3 or later)
with core, effect;
package magic is
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
type school is (
neutral, air, dark, earth, fire, light,
prime, water
);
type enumeration is (
-- Neutral
magic_arrow, chain_magic_arrow,
-- Air
blow_away, chain_lightning, grounded, lightning, storm_arrows, storm_winds,
summon_air_elemental, thunderclap,
-- Dark
agony_mass, agony, despair_mass, despair, life_drain_mass, life_drain,
purge, summon_dark_elemental, terror, weakness_mass, weakness,
-- Earth
earthquake, erosion, petrification, poison_cloud, regeneration_mass, regeneration,
rockwalls, stone_skin_mass, stone_skin, summon_earth_elemental,
-- Fire
determination_mass, determination, fireball, fire_bolt, fire_shield, fire_storm,
frenzy, immolation, inner_fire_mass, inner_fire, summon_fire_elemental,
-- Light
blindness, celestial_armor_mass, celestial_armor, heal_mass, heal, purify,
retribution_heal, retribution_mana, retribution_shot, summon_light_elemental, sunburst,
-- Prime
dispel_magic_mass, dispel_magic, disruption, haste_mass, haste, implosion,
mana_drain, slow_mass, slow, teleport, time_statis,
-- Water
blizzard, eternal_winter, frozen_ground, ice_armor_mass, ice_armor, ice_bolt,
ice_breaker, ice_wall, summon_water_elemental, winter_circle
);
------------------------------------------------------------------------------------------
subtype level_limit is natural range 0 .. 6;
type information is record
name : core.short_string;
kind : school;
level : level_limit;
evoke : effect.enumeration;
text : core.long_string;
end record;
------------------------------------------------------------------------------------------
count : constant natural := enumeration'pos (enumeration'last) + 1;
trait : constant array (enumeration) of information := (
("Magic Arrow ", neutral, 0, effect.none, "Primary spell that channels mana through the air in order to do damage. "),
("Chain Magic Arrow ", neutral, 0, effect.none, "Advanced primary spell that chains mana to damage multiple foes. "),
("Blow Away ", air, 0, effect.none, "Weak spell that creates a strong gust of wind to knock back enemies. "),
("Chain Lightning ", air, 0, effect.none, "A spell that sends a bolt of lightning jumping from target to target. "),
("Grounded ", air, 0, effect.none, "A protective spell that renders the target immune to electrical attacks."),
("Lightning ", air, 0, effect.none, "This spell releases a bolt of lightning to strike a single target. "),
("Storm Arrows ", air, 0, effect.none, "Enchants arrows with the power of a storm, enhancing their range. "),
("Storm Winds ", air, 0, effect.none, "A spell that summons powerful winds to hinder enemies projectiles. "),
("Summon Air Elemental ", air, 0, effect.none, "This spell calls forth a powerful elemental creature of magic winds. "),
("Thunderclap ", air, 0, effect.none, "A spell that creates a sudden, deafening clap of thunder to disorient. "),
("Agony Mass ", dark, 0, effect.none, "A spell that inflicts excruciating pain on multiple targets. "),
("Agony ", dark, 0, effect.none, "This spell causes intense suffering and torment to a target. "),
("Despair Mass ", dark, 0, effect.none, "Ordinary spell that spreads feelings of hopelessness and despair. "),
("Despair ", dark, 0, effect.none, "A spell that overwhelms a target with feelings of profound sadness. "),
("Life Drain Mass ", dark, 0, effect.none, "A spell that drains life force from multiple targets to heal the caster."),
("Life Drain ", dark, 0, effect.none, "This spell allows the caster to drain the life essence of a foe. "),
("Purge ", dark, 0, effect.none, "A spell that cleanses a target from curses, diseases, and negativity. "),
("Summon Dark Elemental ", dark, 0, effect.none, "This spell summons a sinister creature of darkness to serve the caster. "),
("Terror ", dark, 0, effect.none, "A spell that instills intense fear in the target, causing them to flee. "),
("Weakness Mass ", dark, 0, effect.none, "A spell that reduces the strength and abilities of multiple targets. "),
("Weakness ", dark, 0, effect.none, "This spell weakens the target, reducing their physical prowess. "),
("Earthquake ", earth, 0, effect.none, "This spell causes the ground to shake violently, damaging the area. "),
("Erosion ", earth, 0, effect.none, "A spell that gradually wears away and weakens the defenses of the foes. "),
("Petrification ", earth, 0, effect.none, "A powerful spell that turns the target to stone, rendering them useless."),
("Poison Cloud ", earth, 0, effect.none, "This spell creates a toxic cloud that poisons and harms all in it. "),
("Regeneration Mass ", earth, 0, effect.none, "A spell that rapidly heals and rejuvenates multiple enemies. "),
("Regeneration ", earth, 0, effect.none, "This spell accelerates the natural healing process of a single target. "),
("Rockwalls ", earth, 0, effect.none, "A spell that summons sturdy walls of rock for defense or to block paths."),
("Stone Skin Mass ", earth, 0, effect.none, "A spell that hardens the skin of multiple friends, increasing defense. "),
("Stone Skin ", earth, 0, effect.none, "This spell encases one unit in tough stone armor, reducing damage taken."),
("Summon Earth Elemental ", earth, 0, effect.none, "This spell summons a elemental creature of earth to aid the caster. "),
("Determination Mass ", fire, 0, effect.none, "A spell that boosts the resolve and strength of multiple targets. "),
("Determination ", fire, 0, effect.none, "This spell enhances the determination and willpower of a single target. "),
("Fireball ", fire, 0, effect.none, "A powerful projectile of fiery energy that explodes on impact. "),
("Fire Bolt ", fire, 0, effect.none, "A quick and focused bolt of fire that can be launched at a target. "),
("Fire Shield ", fire, 0, effect.none, "This spell creates a protective barrier of flames around the caster. "),
("Fire Storm ", fire, 0, effect.none, "A spell that unleashes a fierce rain of fire upon all foes in the area. "),
("Frenzy ", fire, 0, effect.none, "This spell increases the speed and aggression of a target in combat. "),
("Immolation ", fire, 0, effect.none, "A spell that engulfs the target in flames, causing continuous burning. "),
("Inner Fire Mass ", fire, 0, effect.none, "A spell that ignites the inner fire of multiple targets. "),
("Inner Fire ", fire, 0, effect.none, "This spell increases the inner strength and power of a single target. "),
("Summon Fire Elemental ", fire, 0, effect.none, "A spell that calls forth a formidable elemental creature of flames. "),
("Blindness ", light, 0, effect.none, "A spell that causes the target to be temporarily blinded. "),
("Celestial Armor Mass ", light, 0, effect.none, "This spell grants multiple targets celestial protection. "),
("Celestial Armor ", light, 0, effect.none, "A spell that bestows celestial armor upon a single target. "),
("Heal Mass ", light, 0, effect.none, "A spell that heals multiple targets simultaneously. "),
("Heal ", light, 0, effect.none, "This spell restores health to a single friendly target. "),
("Purify ", light, 0, effect.none, "A spell that removes curse or misfortune from a single target. "),
("Retribution Heal ", light, 0, effect.none, "A healing spell that also inflicts damage to attackers of a unit. "),
("Retribution Mana ", light, 0, effect.none, "This spell damages enemies and replenishes the caster's mana. "),
("Retribution Shot ", light, 0, effect.none, "A spell that deals damage to foes and heals the caster. "),
("Summon Light Elemental ", light, 0, effect.none, "This spell summons a radiant elemental being to aid the caster. "),
("Sunburst ", light, 0, effect.none, "A powerful spell that releases a blinding burst of light. "),
("Dispel Magic Mass ", prime, 0, effect.none, "A spell that removes magical effects from multiple targets at once. "),
("Dispel Magic ", prime, 0, effect.none, "This spell cancels out magical buffs and effects on a single target. "),
("Disruption ", prime, 0, effect.none, "A spell that disrupts the flow of magic, causing chaos and instability. "),
("Haste Mass ", prime, 0, effect.none, "This spell accelerates the movement and actions of multiple targets. "),
("Haste ", prime, 0, effect.none, "A spell that boosts the speed and agility of a single target. "),
("Implosion ", prime, 0, effect.none, "A powerful spell that collapses the target in on itself, dealing damage."),
("Mana Drain ", prime, 0, effect.none, "This spell siphons mana from the target, depleting their magical energy."),
("Slow Mass ", prime, 0, effect.none, "This spell reduces the speed and reaction time of multiple targets. "),
("Slow ", prime, 0, effect.none, "A spell that decreases the speed and movement of a single target. "),
("Teleport ", prime, 0, effect.none, "A spell that instantly transports the caster to another location. "),
("Time Statis ", prime, 0, effect.none, "A spell that suspends a foe, rendering them temporarily unable to act. "),
("Blizzard ", water, 0, effect.none, "A spell that conjures a fierce snowstorm, dealing cold damage. "),
("Eternal Winter ", water, 0, effect.none, "This spell creates a perpetual winter environment in the targeted area. "),
("Frozen Ground ", water, 0, effect.none, "A spell that freezes the ground, creating ice that hinders movement. "),
("Ice Armor Mass ", water, 0, effect.none, "This spell envelops multiple targets in protective ice armor. "),
("Ice Armor ", water, 0, effect.none, "A spell that forms a protective ice shield around a single target. "),
("Ice Bolt ", water, 0, effect.none, "A basic spell that launches a bolt of ice towards a target. "),
("Ice Breaker ", water, 0, effect.none, "A spell that shatters ice-based defenses and immunities on a target. "),
("Ice Wall ", water, 0, effect.none, "This spell creates a barrier of solid ice, blocking movement and arrows."),
("Summon Water Elemental ", water, 0, effect.none, "A spell that summons a powerful water elemental ally to aid in combat. "),
("Winter Circle ", water, 0, effect.none, "This spell creates a magical circle that enhances ice-based spells. ")
);
------------------------------------------------------------------------------------------
procedure configure;
procedure icon (index : in enumeration; x, y : in integer);
procedure view (index : in enumeration; x, y : in integer);
procedure menu (x, y : in integer; center : in boolean);
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
end magic;