147 lines
13 KiB
Ada
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;
|