| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src/battle/mechanic/action')
3 files changed, 10 insertions, 184 deletions
| diff --git a/src/battle/mechanic/action/btl_action_attack.erl b/src/battle/mechanic/action/btl_action_attack.erl index 5989ad8..1953096 100644 --- a/src/battle/mechanic/action/btl_action_attack.erl +++ b/src/battle/mechanic/action/btl_action_attack.erl @@ -1,4 +1,4 @@ --module(btl_turn_actions_attack). +-module(btl_action_attack).  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -46,7 +46,7 @@ roll_precision_modifier (Statistics, TargetStatistics, TargetLuck) ->        shr_statistics:type(),        integer()     ) -   -> {boolean(), integer(), integer()}. +   -> {float(), integer(), integer()}.  roll_critical_modifier (Statistics, Luck) ->     CriticalHitChance = shr_statistics:get_critical_hits(Statistics),     {_Roll, IsSuccess, PositiveModifier, NegativeModifier} = @@ -328,8 +328,8 @@ effect_of_attack           Category,           PrecisionModifier,           CriticalModifier, -         S1AttackerLuck, -         S1DefenderLuck +         ParryIsSuccessful, +         Damage        ),     % If we "ataxia update" here, we'll get redundant ataxia updates, since @@ -511,7 +511,11 @@ handle_attack_sequence        )     of        true -> -         Statistics = shr_character:get_statistics(S0Character), +         Statistics = +            shr_character:get_statistics +            ( +               btl_character:get_base_character(S0Character) +            ),           DoubleAttackChance = shr_statistics:get_double_hits(Statistics),           {_Roll, IsSuccessful, PositiveModifier, NegativeModifier} =              shr_roll:percentage_with_luck(DoubleAttackChance, S0PlayerLuck), diff --git a/src/battle/mechanic/action/btl_action_switch_weapon.erl b/src/battle/mechanic/action/btl_action_switch_weapon.erl index cf1a31a..7d8a81b 100644 --- a/src/battle/mechanic/action/btl_action_switch_weapon.erl +++ b/src/battle/mechanic/action/btl_action_switch_weapon.erl @@ -1,4 +1,4 @@ --module(btl_turn_actions_switch_weapon). +-module(btl_action_switch_weapon).  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/battle/mechanic/action/btl_turn_actions_opportunity_attack.erl b/src/battle/mechanic/action/btl_turn_actions_opportunity_attack.erl deleted file mode 100644 index c1dbbdd..0000000 --- a/src/battle/mechanic/action/btl_turn_actions_opportunity_attack.erl +++ /dev/null @@ -1,178 +0,0 @@ --module(btl_turn_actions_opportunity_attack). -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --export -( -   [ -      handle/2 -   ] -). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec handle -   ( -      btl_action:type(), -      btl_character_turn_update:type() -   ) -   -> {ok, btl_character_turn_update:type()}. -handle (BattleAction, Update) -> -   {S0Update, Battle} = btl_character_turn_update:get_battle(Update), -   {S1Update, Character} = btl_character_turn_update:get_character(S0Update), - -   DefendingPlayerIX = btl_character:get_player_index(Character), -   DefendingPlayer = btl_battle:get_player(DefendingPlayerIX, Battle), -   DefendingPlayerLuck = btl_player:get_luck(DefendingPlayer), - -   AttackerIX = btl_action:get_target_ix(BattleAction), -   AttackerRef = btl_battle:get_character(AttackerIX, Battle), -   Attacker = btl_battle:resolve_character(AttackerRef, Battle), - -   AttackingPlayerIX = btl_character:get_player_index(Attacker), -   AttackingPlayer = btl_battle:get_player(AttackingPlayerIX, Battle), -   AttackingPlayerLuck = btl_player:get_luck(AttackingPlayer), - -   Attack = btl_attack:attack_of_opportunity(), - -   AttackEffect = -      btl_attack:get_description_of -      ( -         Attack, -         btl_character:get_base_character(Character), -         btl_character:get_base_character(Attacker), -         AttackingPlayerLuck, -         DefendingPlayerLuck -      ), - -   { -      AttackResult, -      NewAttackerHealth, -      S0NewAttackerLuck, -      NewDefenderHealth, -      S0NewDefenderLuck -   } = -      btl_attack:apply_to_healths_and_lucks -      ( -         AttackEffect, -         btl_character:get_current_health(Attacker), -         AttackingPlayerLuck, -         btl_character:get_current_health(Character), -         DefendingPlayerLuck -      ), - -   S1NewAttackerLuck = -      case {(S0NewAttackerLuck =< -2), (S0NewAttackerLuck >= 2)}  of -         {true, _} -> (S0NewAttackerLuck + 2); -         {_, true} -> (S0NewAttackerLuck - 2); -         _ -> 0 -      end, - -   S1NewDefenderLuck = -      case {(S0NewDefenderLuck =< -2), (S0NewDefenderLuck >= 2)}  of -         {true, _} -> (S0NewDefenderLuck + 2); -         {_, true} -> (S0NewDefenderLuck - 2); -         _ -> 0 -      end, - -   {UpdatedAttackingPlayer, AttackingPlayerAtaxiaUpdate} = -      btl_player:ataxia_set_luck(S1NewAttackerLuck, AttackingPlayer), - -   {UpdatedDefendingPlayer, DefendingPlayerAtaxiaUpdate} = -      btl_player:ataxia_set_luck(S1NewDefenderLuck, DefendingPlayer), - -   {UpdatedCharacter, CharacterAtaxiaUpdate} = -      btl_character:ataxia_set_current_health(NewDefenderHealth, Character), - -   {UpdatedAttackerRef, AttackerRefAtaxiaUpdate} = -      btl_character:ataxia_set_current_health(NewAttackerHealth, AttackerRef), - -   {S0Battle, BattleAtaxiaUpdate0} = -      btl_battle:ataxia_set_player -      ( -         AttackingPlayerIX, -         UpdatedAttackingPlayer, -         AttackingPlayerAtaxiaUpdate, -         Battle -      ), - -   {S1Battle, BattleAtaxiaUpdate1} = -      btl_battle:ataxia_set_player -      ( -         DefendingPlayerIX, -         UpdatedDefendingPlayer, -         DefendingPlayerAtaxiaUpdate, -         S0Battle -      ), - -   {S2Battle, BattleAtaxiaUpdate2} = -      btl_battle:ataxia_set_character -      ( -         AttackerIX, -         UpdatedAttackerRef, -         AttackerRefAtaxiaUpdate, -         S1Battle -      ), - -   % Potential danger ahead: we're going to update both the 'character' and -   % 'battle' members of a btl_character_turn_update. -   % 'S1Update' is sure to have both up to date (as it's the result of 'get' -   % requests for both) and there is no risk of the 'battle' update influencing -   % 'character', making what follows safe. - -   S2Update = -      btl_character_turn_update:ataxia_set_battle -      ( -         S2Battle, -         false, -         ataxic:optimize -         ( -            ataxic:sequence -            ( -               [ -                  BattleAtaxiaUpdate0, -                  BattleAtaxiaUpdate1, -                  BattleAtaxiaUpdate2 -               ] -            ) -         ), -         S1Update -      ), - -   S3Update = -      btl_character_turn_update:ataxia_set_character -      ( -         UpdatedCharacter, -         CharacterAtaxiaUpdate, -         S2Update -      ), - -   TimelineItem = -      btl_turn_result:new_character_attacked -      ( -         AttackerIX, -         btl_character_turn_update:get_character_ix(S3Update), -         AttackResult, -         S0NewAttackerLuck, -         S0NewDefenderLuck -      ), - -   S4Update = btl_character_turn_update:add_to_timeline(TimelineItem, S3Update), - -   S5Update = -      case (NewDefenderHealth > 0) of -         true -> S4Update; -         false -> -            btl_victory_progression:handle_character_loss(Character, S4Update) -      end, - -   {ok, S5Update}. | 


