xhads/source/effect.adb

57 lines
4.3 KiB
Ada

-- Copyright (c) 2024 - Ognjen 'xolatile' Milan Robovic
--
-- GNU General Public Licence (version 3 or later)
with core, notification, attribute, skill, resource, deity, material, magic, equipment, unit, construction, chad, world;
use type core.point;
package body effect is
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
procedure apply (data : in value) is
begin
case data.operation is
when idle => null;
when offense => core.increment (world.map.chads (1).attributes (attribute.offense).value, data.modifier);
when defense => core.increment (world.map.chads (1).attributes (attribute.defense).value, data.modifier);
when wisdom => core.increment (world.map.chads (1).attributes (attribute.wisdom).value, data.modifier);
when stamina => core.increment (world.map.chads (1).attributes (attribute.stamina).value, data.modifier);
when speed => core.increment (world.map.chads (1).attributes (attribute.speed).value, data.modifier);
when reach => core.increment (world.map.chads (1).attributes (attribute.reach).value, data.modifier);
when alchemy => core.increment (world.map.chads (1).skills (skill.alchemy).value, data.modifier);
when archery => core.increment (world.map.chads (1).skills (skill.archery).value, data.modifier);
when architecture => core.increment (world.map.chads (1).skills (skill.architecture).value, data.modifier);
when athletics => core.increment (world.map.chads (1).skills (skill.athletics).value, data.modifier);
when diplomacy => core.increment (world.map.chads (1).skills (skill.diplomacy).value, data.modifier);
when estates => core.increment (world.map.chads (1).skills (skill.estates).value, data.modifier);
when exploration => core.increment (world.map.chads (1).skills (skill.exploration).value, data.modifier);
when leadership => core.increment (world.map.chads (1).skills (skill.leadership).value, data.modifier);
when logistics => core.increment (world.map.chads (1).skills (skill.logistics).value, data.modifier);
when medicine => core.increment (world.map.chads (1).skills (skill.medicine).value, data.modifier);
when mercantile => core.increment (world.map.chads (1).skills (skill.mercantile).value, data.modifier);
when mysticism => core.increment (world.map.chads (1).skills (skill.mysticism).value, data.modifier);
when necromancy => core.increment (world.map.chads (1).skills (skill.necromancy).value, data.modifier);
when resistance => core.increment (world.map.chads (1).skills (skill.resistance).value, data.modifier);
when skirmish => core.increment (world.map.chads (1).skills (skill.skirmish).value, data.modifier);
when sorcery => core.increment (world.map.chads (1).skills (skill.sorcery).value, data.modifier);
when tactics => core.increment (world.map.chads (1).skills (skill.tactics).value, data.modifier);
when thaumaturgy => core.increment (world.map.chads (1).skills (skill.thaumaturgy).value, data.modifier);
when gold => core.increment (world.map.chads (1).resources (resource.gold).value, data.modifier);
when wood => core.increment (world.map.chads (1).resources (resource.wood).value, data.modifier);
when stone => core.increment (world.map.chads (1).resources (resource.stone).value, data.modifier);
when metal => core.increment (world.map.chads (1).resources (resource.metal).value, data.modifier);
when leather => core.increment (world.map.chads (1).resources (resource.leather).value, data.modifier);
when gem => core.increment (world.map.chads (1).resources (resource.gem).value, data.modifier);
--
when take_material => core.increment (world.map.chads (1).materials (material.enumeration'val (data.modifier)).value, data.amount);
end case;
--
notification.show (data.notify);
end apply;
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
end effect;