xhads/source/monster.ads

60 lines
3.0 KiB
Ada

-- Copyright (c) 2024 - Ognjen 'xolatile' Milan Robovic
--
-- GNU General Public Licence (version 3 or later)
with core, attribute, material, effect;
package monster is
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
type enumeration is (
none,
hill_troll, cave_troll, mountain_troll, swamp_worm, sand_worm, ash_worm
);
------------------------------------------------------------------------------------------
type definition is record
name : access string := new string'("--");
attributes : attribute.bonus := (others => 0);
size : core.vector := (1, 1);
materials : access material.drops := new material.drops'((material.meat, 1, 1), (material.bone, 1, 1));
evoke : effect.information := effect.none;
end record;
type information is record
index : enumeration := enumeration'first;
state : core.animation := core.idle;
x : integer := 0;
y : integer := 0;
health : core.point := (24, 24);
mana : core.point := (24, 24);
stamina : core.point := (24, 24);
end record;
type informations is array (natural range <>) of information;
------------------------------------------------------------------------------------------
count : constant natural := enumeration'pos (enumeration'last) + 1;
description : constant array (enumeration) of definition := (
none => (others => <>),
--
hill_troll => (new string'("Hill Troll"), (3, 3, 3, 6, 6, 6), (2, 2), new material.drops'((material.meat, 3, 6), (material.skull, 1, 1)), effect.none),
cave_troll => (new string'("Cave Troll"), (3, 3, 3, 6, 6, 6), (2, 2), new material.drops'((material.meat, 3, 6), (material.skull, 1, 1)), effect.none),
mountain_troll => (new string'("Mountain Troll"), (3, 3, 3, 6, 6, 6), (2, 2), new material.drops'((material.meat, 3, 6), (material.skull, 1, 1)), effect.none),
swamp_worm => (new string'("Swamp Worm"), (2, 3, 3, 4, 6, 6), (2, 2), new material.drops'((material.meat, 3, 6), (material.bone, 1, 3)), effect.none),
sand_worm => (new string'("Sand Word"), (2, 3, 3, 4, 6, 6), (2, 2), new material.drops'((material.meat, 3, 6), (material.bone, 1, 3)), effect.none),
ash_worm => (new string'("Ash Worm"), (2, 3, 3, 4, 6, 6), (2, 2), new material.drops'((material.meat, 3, 6), (material.bone, 1, 3)), effect.none)
);
game : array (enumeration) of core.sprite;
icon : array (enumeration) of core.sprite;
view : array (enumeration) of core.sprite;
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
end monster;