Prototype game engine for Heroes of Might & Magic, featuring a gameplay plot-twist...
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
2.4KB

  1. -- Copyright (c) 2024 - Ognjen 'xolatile' Milan Robovic
  2. --
  3. -- GNU General Public Licence (version 3 or later)
  4. with core, effect;
  5. package magic is
  6. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  7. type school is (
  8. air, dark, earth, fire, light, water
  9. );
  10. type enumeration is (
  11. -- Air
  12. arrow_storm,
  13. -- Dark
  14. torment,
  15. -- Earth
  16. stone_armour,
  17. -- Fire
  18. fireball,
  19. -- Light
  20. heal,
  21. -- Water
  22. ice_armour
  23. );
  24. ------------------------------------------------------------------------------------------
  25. subtype level_limit is natural range 0 .. 6;
  26. type definition is record
  27. name : core.short_string;
  28. kind : school;
  29. level : level_limit;
  30. evoke : effect.information;
  31. text : core.long_string;
  32. end record;
  33. ------------------------------------------------------------------------------------------
  34. count : constant natural := enumeration'pos (enumeration'last) + 1;
  35. description : constant array (enumeration) of definition := (
  36. arrow_storm => ("Arrow Storm ", air, 1, effect.none, "Arrow Storm increases the range of your ranged units. "),
  37. torment => ("Torment ", dark, 1, effect.none, "Torment causes targeted friend or foe to feel pain and shit. "),
  38. stone_armour => ("Stone Armour ", earth, 1, effect.none, "Stone Armour increases defense of selected unit. "),
  39. fireball => ("Fireball ", fire, 1, effect.none, "Fireball conjures a literal ball of fire that flies go brr. "),
  40. heal => ("Heal ", light, 1, effect.none, "Heal does what it says it will do, keeps the promise. "),
  41. ice_armour => ("Ice Armour ", water, 1, effect.none, "Ice Armour increases defense and stamina of selected unit. ")
  42. );
  43. view_width : constant natural := 64;
  44. view_height : constant natural := 64;
  45. view : array (enumeration) of core.sprite;
  46. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  47. end magic;