summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2019-10-08 16:24:49 +0200
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2019-10-08 16:24:49 +0200
commit78b67f462da04dba446183d44d5afb03843f4dda (patch)
tree20520feb50cbfac3280428919e9a1b93ff28a673
parent299b1505b138c1ff4f8ad65513672ca35313cea4 (diff)
Trying things...
-rw-r--r--include/tacticians/conditions.hrl.m42
-rw-r--r--include/tacticians/skills.hrl.m467
-rw-r--r--src/battle/mechanic/condition/blt_cond_heal.erl38
-rw-r--r--src/battle/mechanic/skill/blt_skill_attack_anywhere.erl52
-rw-r--r--src/battle/mechanic/skill/blt_skill_shields_up.erl40
-rw-r--r--src/battle/struct/btl_action.erl10
-rw-r--r--src/shared/struct/shr_condition.erl9
7 files changed, 213 insertions, 5 deletions
diff --git a/include/tacticians/conditions.hrl.m4 b/include/tacticians/conditions.hrl.m4
index 5c3e537..8dee61c 100644
--- a/include/tacticians/conditions.hrl.m4
+++ b/include/tacticians/conditions.hrl.m4
@@ -33,5 +33,3 @@ m4_include(__MAKEFILE_DATA_DIR/condition/trigger.m4.conf)
-define(CONDITION_TRIGGER_START_OF_BATTLE, __COND_TRIG_START_OF_BATTLE).
-define(CONDITION_TRIGGER_END_OF_BATTLE, __COND_TRIG_END_OF_BATTLE).
-
--define(CONDITION_TRIGGER_IMMEDIATELY, __COND_TRIG_IMMEDIATELY).
diff --git a/include/tacticians/skills.hrl.m4 b/include/tacticians/skills.hrl.m4
new file mode 100644
index 0000000..5e3e407
--- /dev/null
+++ b/include/tacticians/skills.hrl.m4
@@ -0,0 +1,67 @@
+m4_include(__MAKEFILE_DATA_DIR/skill/variant.m4.conf)
+
+-define(SKILL_VARIANT_ALPHA_0, __SKILL_VAR_ALPHA_0).
+-define(SKILL_VARIANT_ALPHA_1, __SKILL_VAR_ALPHA_1).
+-define(SKILL_VARIANT_ALPHA_2, __SKILL_VAR_ALPHA_2).
+-define(SKILL_VARIANT_ALPHA_3, __SKILL_VAR_ALPHA_3).
+-define(SKILL_VARIANT_ALPHA_4, __SKILL_VAR_ALPHA_4).
+-define(SKILL_VARIANT_ALPHA_5, __SKILL_VAR_ALPHA_5).
+-define(SKILL_VARIANT_ALPHA_6, __SKILL_VAR_ALPHA_6).
+-define(SKILL_VARIANT_ALPHA_7, __SKILL_VAR_ALPHA_7).
+-define(SKILL_VARIANT_ALPHA_8, __SKILL_VAR_ALPHA_8).
+-define(SKILL_VARIANT_ALPHA_9, __SKILL_VAR_ALPHA_9).
+
+-define(SKILL_VARIANT_BETA_0, __SKILL_VAR_BETA_0).
+-define(SKILL_VARIANT_BETA_1, __SKILL_VAR_BETA_1).
+-define(SKILL_VARIANT_BETA_2, __SKILL_VAR_BETA_2).
+-define(SKILL_VARIANT_BETA_3, __SKILL_VAR_BETA_3).
+-define(SKILL_VARIANT_BETA_4, __SKILL_VAR_BETA_4).
+-define(SKILL_VARIANT_BETA_5, __SKILL_VAR_BETA_5).
+-define(SKILL_VARIANT_BETA_6, __SKILL_VAR_BETA_6).
+-define(SKILL_VARIANT_BETA_7, __SKILL_VAR_BETA_7).
+-define(SKILL_VARIANT_BETA_8, __SKILL_VAR_BETA_8).
+-define(SKILL_VARIANT_BETA_9, __SKILL_VAR_BETA_9).
+
+-define(SKILL_VARIANT_GAMMA_0, __SKILL_VAR_GAMMA_0).
+-define(SKILL_VARIANT_GAMMA_1, __SKILL_VAR_GAMMA_1).
+-define(SKILL_VARIANT_GAMMA_2, __SKILL_VAR_GAMMA_2).
+-define(SKILL_VARIANT_GAMMA_3, __SKILL_VAR_GAMMA_3).
+-define(SKILL_VARIANT_GAMMA_4, __SKILL_VAR_GAMMA_4).
+-define(SKILL_VARIANT_GAMMA_5, __SKILL_VAR_GAMMA_5).
+-define(SKILL_VARIANT_GAMMA_6, __SKILL_VAR_GAMMA_6).
+-define(SKILL_VARIANT_GAMMA_7, __SKILL_VAR_GAMMA_7).
+-define(SKILL_VARIANT_GAMMA_8, __SKILL_VAR_GAMMA_8).
+-define(SKILL_VARIANT_GAMMA_9, __SKILL_VAR_GAMMA_9).
+
+-define(SKILL_VARIANT_PHI_0, __SKILL_VAR_PHI_0).
+-define(SKILL_VARIANT_PHI_1, __SKILL_VAR_PHI_1).
+-define(SKILL_VARIANT_PHI_2, __SKILL_VAR_PHI_2).
+-define(SKILL_VARIANT_PHI_3, __SKILL_VAR_PHI_3).
+-define(SKILL_VARIANT_PHI_4, __SKILL_VAR_PHI_4).
+-define(SKILL_VARIANT_PHI_5, __SKILL_VAR_PHI_5).
+-define(SKILL_VARIANT_PHI_6, __SKILL_VAR_PHI_6).
+-define(SKILL_VARIANT_PHI_7, __SKILL_VAR_PHI_7).
+-define(SKILL_VARIANT_PHI_8, __SKILL_VAR_PHI_8).
+-define(SKILL_VARIANT_PHI_9, __SKILL_VAR_PHI_9).
+
+-define(SKILL_VARIANT_CHI_0, __SKILL_VAR_CHI_0).
+-define(SKILL_VARIANT_CHI_1, __SKILL_VAR_CHI_1).
+-define(SKILL_VARIANT_CHI_2, __SKILL_VAR_CHI_2).
+-define(SKILL_VARIANT_CHI_3, __SKILL_VAR_CHI_3).
+-define(SKILL_VARIANT_CHI_4, __SKILL_VAR_CHI_4).
+-define(SKILL_VARIANT_CHI_5, __SKILL_VAR_CHI_5).
+-define(SKILL_VARIANT_CHI_6, __SKILL_VAR_CHI_6).
+-define(SKILL_VARIANT_CHI_7, __SKILL_VAR_CHI_7).
+-define(SKILL_VARIANT_CHI_8, __SKILL_VAR_CHI_8).
+-define(SKILL_VARIANT_CHI_9, __SKILL_VAR_CHI_9).
+
+-define(SKILL_VARIANT_PSI_0, __SKILL_VAR_PSI_0).
+-define(SKILL_VARIANT_PSI_1, __SKILL_VAR_PSI_1).
+-define(SKILL_VARIANT_PSI_2, __SKILL_VAR_PSI_2).
+-define(SKILL_VARIANT_PSI_3, __SKILL_VAR_PSI_3).
+-define(SKILL_VARIANT_PSI_4, __SKILL_VAR_PSI_4).
+-define(SKILL_VARIANT_PSI_5, __SKILL_VAR_PSI_5).
+-define(SKILL_VARIANT_PSI_6, __SKILL_VAR_PSI_6).
+-define(SKILL_VARIANT_PSI_7, __SKILL_VAR_PSI_7).
+-define(SKILL_VARIANT_PSI_8, __SKILL_VAR_PSI_8).
+-define(SKILL_VARIANT_PSI_9, __SKILL_VAR_PSI_9).
diff --git a/src/battle/mechanic/condition/blt_cond_heal.erl b/src/battle/mechanic/condition/blt_cond_heal.erl
new file mode 100644
index 0000000..dd7a820
--- /dev/null
+++ b/src/battle/mechanic/condition/blt_cond_heal.erl
@@ -0,0 +1,38 @@
+-module(btl_cond_heal).
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-export
+(
+ [
+ apply/2
+ ]
+).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-spec apply
+ (
+ non_neg_integer(),
+ non_neg_integer(),
+ btl_battle:type()
+ ) ->
+ {
+ btl_condition:type(),
+ [ataxic:basic()],
+ btl_character:type(),
+ [ataxic:basic()]
+ }.
+apply (Condition, Character) ->
+ % TODO
+ {Condition, [], Character, []}.
+
diff --git a/src/battle/mechanic/skill/blt_skill_attack_anywhere.erl b/src/battle/mechanic/skill/blt_skill_attack_anywhere.erl
new file mode 100644
index 0000000..bcc8519
--- /dev/null
+++ b/src/battle/mechanic/skill/blt_skill_attack_anywhere.erl
@@ -0,0 +1,52 @@
+-module(btl_skill_attack_anywhere).
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-export
+(
+ [
+ cast/5
+ ]
+).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-spec cast
+ (
+ shr_skill:variant(),
+ non_neg_integer(),
+ list(non_neg_integer()),
+ list(shr_location:type()),
+ btl_character_turn_update:type()
+ ) -> btl_character_turn_update:type().
+cast (_Variant, UserIX, TargetIXs, _Locations, Update) ->
+ TargetIX =
+ case TargetIXs of
+ [ValTargetIX] -> ValTargetIX;
+ _ -> error({skill, target, TargetIXs})
+ end,
+
+ % TODO: Add condition to Character[UserIX]:
+ % {
+ % Effect: Attack Range Increase
+ % Trigger: Start of Own Attack
+ % Duration: -1 (Infinite)
+ % Uses: 1
+ % Parameter: Max Value.
+
+ % TODO: Add cast event to Update.
+
+ btl_actions_management:handle
+ (
+ [btl_action:new_attack(UserIX, TargetIX)],
+ Update
+ ).
diff --git a/src/battle/mechanic/skill/blt_skill_shields_up.erl b/src/battle/mechanic/skill/blt_skill_shields_up.erl
new file mode 100644
index 0000000..32af8c2
--- /dev/null
+++ b/src/battle/mechanic/skill/blt_skill_shields_up.erl
@@ -0,0 +1,40 @@
+-module(btl_skill_shields_up).
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-include("tacticians/skills.hrl")
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-export
+(
+ [
+ cast/5
+ ]
+).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-spec cast
+ (
+ shr_skill:variant(),
+ non_neg_integer(),
+ list(non_neg_integer()),
+ list(shr_location:type()),
+ btl_character_turn_update:type()
+ ) -> btl_character_turn_update:type().
+cast (Variant, _UserIX, TargetIXs, _Locations, Update) ->
+ % TODO: Add condition to TargetIXs:
+ % {
+ % Effect: Defense Percentage Increase
+ % Trigger: Start of Own Attack, Start of Target Attack
+ % Duration: {Beta} Turns
+ % Uses: -1 (Infinite)
+ % Parameter: {Alpha}.
+ Update.
diff --git a/src/battle/struct/btl_action.erl b/src/battle/struct/btl_action.erl
index 11b2d06..4940456 100644
--- a/src/battle/struct/btl_action.erl
+++ b/src/battle/struct/btl_action.erl
@@ -66,6 +66,7 @@
(
[
new_move/3,
+ new_attack/2,
new_attack_of_opportunity/2
]
).
@@ -202,6 +203,15 @@ new_attack_of_opportunity (ActorIX, TargetIX) ->
is_opportunistic = true
}.
+-spec new_attack (non_neg_integer(), non_neg_integer()) -> type().
+new_attack (ActorIX, TargetIX) ->
+ #attack
+ {
+ actor_ix = ActorIX,
+ target_ix = TargetIX,
+ is_opportunistic = false
+ }.
+
-spec get_category (type()) -> category().
get_category (Action) when is_record(Action, attack) -> attack;
get_category (Action) when is_record(Action, move) -> move;
diff --git a/src/shared/struct/shr_condition.erl b/src/shared/struct/shr_condition.erl
index 5b6f0e9..ec2493a 100644
--- a/src/shared/struct/shr_condition.erl
+++ b/src/shared/struct/shr_condition.erl
@@ -13,8 +13,7 @@
id :: id(),
name :: binary(),
description :: binary(),
- triggers :: ordset:ordset(trigger()),
- effect :: list()
+ triggers :: ordset:ordset(trigger())
}
).
@@ -25,7 +24,11 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
+-export
+(
+ [
+ ]
+).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%