summaryrefslogtreecommitdiff |
diff options
author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2019-10-20 22:02:46 +0200 |
---|---|---|
committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2019-10-20 22:02:46 +0200 |
commit | c2bff6b098480af6a21bde453494f8ff64219ea7 (patch) | |
tree | 9003b093e3ba47134e94294629960b52e9e1bb9f | |
parent | 08fab636c981574a703baffad9ebb52ff4308f17 (diff) |
...
-rw-r--r-- | src/battle/mechanic/skill/btl_skill_attack_anywhere.erl | 30 | ||||
-rw-r--r-- | src/battle/mechanic/skill/btl_skill_shields_up.erl | 18 | ||||
-rw-r--r-- | src/battle/mechanic/skill/btl_skill_static_heal.erl | 111 | ||||
-rw-r--r-- | src/shared/struct/inventory/shr_skill.erl.m4 | 116 |
4 files changed, 132 insertions, 143 deletions
diff --git a/src/battle/mechanic/skill/btl_skill_attack_anywhere.erl b/src/battle/mechanic/skill/btl_skill_attack_anywhere.erl index bcc8519..78a0a08 100644 --- a/src/battle/mechanic/skill/btl_skill_attack_anywhere.erl +++ b/src/battle/mechanic/skill/btl_skill_attack_anywhere.erl @@ -2,6 +2,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-include("tacticians/conditions.hrl"). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -22,31 +23,12 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -spec cast ( - shr_skill:variant(), + shr_skill:type(), 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 - ). + ) + -> btl_character_turn_update:type(). +cast (_Skill, _UserIX, _TargetIXs, _Locations, S0Update) -> + S0Update. diff --git a/src/battle/mechanic/skill/btl_skill_shields_up.erl b/src/battle/mechanic/skill/btl_skill_shields_up.erl index 32af8c2..b7873ad 100644 --- a/src/battle/mechanic/skill/btl_skill_shields_up.erl +++ b/src/battle/mechanic/skill/btl_skill_shields_up.erl @@ -2,7 +2,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --include("tacticians/skills.hrl") +-include("tacticians/conditions.hrl"). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -23,18 +23,12 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -spec cast ( - shr_skill:variant(), + shr_skill:type(), 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. + ) + -> btl_character_turn_update:type(). +cast (_Skill, _UserIX, _TargetIXs, _Locations, S0Update) -> + S0Update. diff --git a/src/battle/mechanic/skill/btl_skill_static_heal.erl b/src/battle/mechanic/skill/btl_skill_static_heal.erl index 7a9bf35..b1b7018 100644 --- a/src/battle/mechanic/skill/btl_skill_static_heal.erl +++ b/src/battle/mechanic/skill/btl_skill_static_heal.erl @@ -2,8 +2,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --include("tacticians/skills.hrl") --include("tacticians/conditions.hrl") +-include("tacticians/conditions.hrl"). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -18,120 +17,18 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec cast_logic - ( - non_neg_integer(), - non_neg_integer(), - btl_character_turn_update:type() - ) - -> btl_character_turn_update:type(). -cast_logic (TargetIX, Amount, S0Update) -> - Healing = - btl_condition:new - ( - ?CONDITION_EFFECT_HEAL, - [], - -1, - 1, - {TargetIX, HealAmount} - ), - - {_S1HealindAndUpdate, S1Update} = - btl_cond_heal:apply - ( - Healing, - S0Update - ), - - % TODO: Add a btl_turn_result showing the heal to S1Update. - - S1Update. - --spec group_cast_logic - ( - list(non_neg_integer()), - non_neg_integer(), - non_neg_integer(), - btl_character_turn_update:type() - ) - -> btl_character_turn_update:type(). -group_cast_logic (TargetIXs, MaxTargets, Amount, S0Update) -> - case (length(TargetIXs) > MaxTargets) of - true -> error({skill, target, TargetIXs}); - false -> ok - end, - - lists:foldl - ( - fun (TargetIX, S1Update) -> - cast_logic(Amount, TargetIX, S1Update) - end, - S0Update, - TargetIXs - ). - --spec player_cast_logic - ( - non_neg_integer(), - non_neg_integer(), - btl_character_turn_update:type() - ) - -> btl_character_turn_update:type(). -player_cast_logic (TargetIX, Amount, S0Update) -> - Characters = todo, %TODO - TargetRef = todo, %TODO - TargetPlayerIX = todo, %TODO - - % TODO: - % apply `cast_logic(Amount, TargetIX, S1Update)` on all characters whose - % PlayerIX == TargetPlayerIX. - S0Update. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -spec cast ( - shr_skill:variant(), + shr_skill:type(), non_neg_integer(), list(non_neg_integer()), list(shr_location:type()), btl_character_turn_update:type() ) -> btl_character_turn_update:type(). -cast (?SKILL_VARIANT_ALPHA_0, _UserIX, [TargetIX], _Locations, S0Update) -> - cast_logic(20, TargetIX, S0Update); -cast (?SKILL_VARIANT_ALPHA_1, _UserIX, [TargetIX], _Locations, S0Update) -> - cast_logic(40, TargetIX, S0Update); -cast (?SKILL_VARIANT_ALPHA_2, _UserIX, [TargetIX], _Locations, S0Update) -> - cast_logic(60, TargetIX, S0Update); -cast (?SKILL_VARIANT_ALPHA_3, _UserIX, [TargetIX], _Locations, S0Update) -> - cast_logic(80, TargetIX, S0Update); -cast (?SKILL_VARIANT_ALPHA_4, _UserIX, [TargetIX], _Locations, S0Update) -> - cast_logic(100, TargetIX, S0Update); -cast (?SKILL_VARIANT_PHI_0, _UserIX, TargetIXs, _Locations, S0Update) -> - group_cast_logic(TargetIXs, 2, 20, S0Update); -cast (?SKILL_VARIANT_PHI_1, _UserIX, TargetIXs, _Locations, S0Update) -> - group_cast_logic(TargetIXs, 2, 60, S0Update); -cast (?SKILL_VARIANT_PHI_2, _UserIX, TargetIXs, _Locations, S0Update) -> - group_cast_logic(TargetIXs, 2, 100, S0Update); -cast (?SKILL_VARIANT_PHI_3, _UserIX, TargetIXs, _Locations, S0Update) -> - group_cast_logic(TargetIXs, 4, 20, S0Update); -cast (?SKILL_VARIANT_PHI_4, _UserIX, TargetIXs, _Locations, S0Update) -> - group_cast_logic(TargetIXs, 4, 60, S0Update); -cast (?SKILL_VARIANT_PHI_5, _UserIX, TargetIXs, _Locations, S0Update) -> - group_cast_logic(TargetIXs, 4, 100, S0Update); -cast (?SKILL_VARIANT_PHI_6, _UserIX, TargetIXs, _Locations, S0Update) -> - group_cast_logic(TargetIXs, 8, 20, S0Update); -cast (?SKILL_VARIANT_PHI_7, _UserIX, TargetIXs, _Locations, S0Update) -> - group_cast_logic(TargetIXs, 8, 60, S0Update); -cast (?SKILL_VARIANT_PHI_8, _UserIX, TargetIXs, _Locations, S0Update) -> - group_cast_logic(TargetIXs, 8, 100, S0Update); -cast (?SKILL_VARIANT_PSI_0, _UserIX, [TargetIX], _Locations, S0Update) -> - player_cast_logic(TargetIX, 20, S0Update); -cast (?SKILL_VARIANT_PSI_1, _UserIX, [TargetIX], _Locations, S0Update) -> - player_cast_logic(TargetIX, 40, S0Update); -cast (?SKILL_VARIANT_PSI_2, _UserIX, [TargetIX], _Locations, S0Update) -> - player_cast_logic(TargetIX, 60, S0Update); -cast (?SKILL_VARIANT_PSI_3, _UserIX, [TargetIX], _Locations, S0Update) -> - player_cast_logic(TargetIX, 80, S0Update). +cast (_Skill, _UserIX, _TargetIXs, _Locations, S0Update) -> + S0Update. diff --git a/src/shared/struct/inventory/shr_skill.erl.m4 b/src/shared/struct/inventory/shr_skill.erl.m4 new file mode 100644 index 0000000..e1f1a29 --- /dev/null +++ b/src/shared/struct/inventory/shr_skill.erl.m4 @@ -0,0 +1,116 @@ +-module(shr_skill). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-type id() :: binary(). + +-record +( + skill, + { + id :: id(), + module :: atom(), + name :: binary(), + cost :: non_neg_integer(), + reserve :: non_neg_integer(), + targets :: (non_neg_integer() | -1), + locations :: (non_neg_integer() | -1), + duration :: (non_neg_integer() | -1), + uses :: (non_neg_integer() | -1), + chance :: (0..100 | -1), + power :: (non_neg_integer() | -1), + range :: (non_neg_integer() | -1) + } +). + +-opaque type() :: #skill{}. + +-export_type([type/0, id/0]). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%% Accessors +-export +( + [ + get_id/1, + get_module/1, + get_name/1, + get_cost/1, + get_reserve/1, + get_targets/1, + get_locations/1, + get_duration/1, + get_uses/1, + get_chance/1, + get_power/1, + get_range/1 + ] +). + +-export +( + [ + default/0, + default_id/0, + from_id/1 + ] +). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%% Accessors +-spec get_id (type()) -> id(). +get_id (Skill) -> Skill#skill.id. + +-spec get_module (type()) -> atom(). +get_module (Skill) -> Skill#skill.module. + +-spec get_name (type()) -> binary(). +get_name (Skill) -> Skill#skill.name. + +-spec get_cost (type()) -> non_neg_integer(). +get_cost (Skill) -> Skill#skill.cost. + +-spec get_reserve (type()) -> non_neg_integer(). +get_reserve (Skill) -> Skill#skill.reserve. + +-spec get_targets (type()) -> (non_neg_integer() | -1). +get_targets (Skill) -> Skill#skill.targets. + +-spec get_locations (type()) -> (non_neg_integer() | -1). +get_locations (Skill) -> Skill#skill.locations. + +-spec get_duration (type()) -> (non_neg_integer() | -1). +get_duration (Skill) -> Skill#skill.duration. + +-spec get_uses (type()) -> (non_neg_integer() | -1). +get_uses (Skill) -> Skill#skill.uses. + +-spec get_power (type()) -> (non_neg_integer() | -1). +get_power (Skill) -> Skill#skill.power. + +-spec get_chance (type()) -> (0..100 | -1). +get_chance (Skill) -> Skill#skill.chance. + +-spec get_range (type()) -> (non_neg_integer() | -1). +get_range (Skill) -> Skill#skill.range. + +-spec from_id (id()) -> type(). +m4_include(__MAKEFILE_DATA_DIR/skill/global.m4.conf)m4_dnl +m4_include(__MAKEFILE_DATA_DIR/skill/basic.m4d)m4_dnl +from_id (_) -> + default(). + +-spec default () -> type(). +default () -> from_id(<<"0">>). + +-spec default_id () -> id(). +default_id () -> <<"0">>. |