60 lines
3.0 KiB
Ada
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;
|