summaryrefslogtreecommitdiff |
diff options
-rw-r--r-- | include/tacticians/conditions.hrl.m4 | 2 | ||||
-rw-r--r-- | include/tacticians/skills.hrl.m4 | 67 | ||||
-rw-r--r-- | src/battle/mechanic/condition/blt_cond_heal.erl | 38 | ||||
-rw-r--r-- | src/battle/mechanic/skill/blt_skill_attack_anywhere.erl | 52 | ||||
-rw-r--r-- | src/battle/mechanic/skill/blt_skill_shields_up.erl | 40 | ||||
-rw-r--r-- | src/battle/struct/btl_action.erl | 10 | ||||
-rw-r--r-- | src/shared/struct/shr_condition.erl | 9 |
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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |