| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src')
| -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">>. | 


