summaryrefslogtreecommitdiff |
diff options
author | nsensfel <SpamShield0@noot-noot.org> | 2019-06-06 11:30:36 +0200 |
---|---|---|
committer | nsensfel <SpamShield0@noot-noot.org> | 2019-06-06 11:30:36 +0200 |
commit | d6d0920325e77bf39da69006f8e86c2f900ca86b (patch) | |
tree | e0ba129f7623a36faec2af8541cff88d48312ec6 /src/battle/mechanic/btl_attack.erl | |
parent | bfe469efe993a89f3a8ccbb209b47df1c3e55f2d (diff) |
[Broken] ...
Diffstat (limited to 'src/battle/mechanic/btl_attack.erl')
-rw-r--r-- | src/battle/mechanic/btl_attack.erl | 447 |
1 files changed, 0 insertions, 447 deletions
diff --git a/src/battle/mechanic/btl_attack.erl b/src/battle/mechanic/btl_attack.erl deleted file mode 100644 index 8a10cc6..0000000 --- a/src/battle/mechanic/btl_attack.erl +++ /dev/null @@ -1,447 +0,0 @@ --module(btl_attack). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --export -( - [ - ] -). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec effect_of_attack - ( - order(), - shr_character:type(), - shr_character:type(), - boolean(), - integer(), - integer() - ) - -> type(). -effect_of_attack -( - Order, - Attacker, - Defender, - CanParry, - AttackerLuck, - DefenderLuck -) -> - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - %%%% Roll parry to see if the roles have to be swapped. %%%%%%%%%%%%%%%%%%%%% - - DefenderStats = shr_character:get_statistics(Defender), - {ParryIsSuccessful, ParryPositiveLuckMod, ParryNegativeLuckMod} = - case CanParry of - true -> roll_parry(DefenderStats, DefenderLuck); - false -> {false, 0, 0} - end, - - { - ActualAttacker, - ActualDefender, - ActualAttackerLuck, - ActualDefenderLuck - } = - case ParryIsSuccessful of - true -> {Defender, Attacker, DefenderLuck, AttackerLuck}; - false -> {Attacker, Defender, AttackerLuck, DefenderLuck} - end, - - ActualAttackerStats = shr_character:get_statistics(ActualAttacker), - ActualAttackerOmnimods = shr_character:get_omnimods(ActualAttacker), - ActualDefenderStats = shr_character:get_statistics(ActualDefender), - ActualDefenderOmnimods = shr_character:get_omnimods(ActualDefender), - - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - {Precision, PrecisionPositiveLuckMod, PrecisionNegativeLuckMod} = - roll_precision - ( - ActualAttackerStats, - ActualDefenderStats, - ActualDefenderLuck - ), - - - {IsCritical, CriticalPositiveLuckMod, CriticalNegativeLuckMod} = - roll_critical_hit(ActualAttackerStats, ActualAttackerLuck), - - ActualAttackerDamageModifier = - shr_statistics:get_damage_modifier(ActualAttackerStats), - - Damage = - get_damage - ( - Precision, - IsCritical, - ActualAttackerDamageModifier, - ActualAttackerOmnimods, - ActualDefenderOmnimods - ), - - {FinalAttackerLuckMod, FinalDefenderLuckMod} = - case {ParryIsSuccessful, Precision} of - {true, misses} -> - { - ( - % Attacker wasn't the one parrying - ParryNegativeLuckMod - % Attacker was the one evading - + PrecisionPositiveLuckMod - % miss -> no critical hit luck modifier - ), - ( - % Defender was the one parrying - ParryPositiveLuckMod - % Defender wasn't the one evading - + PrecisionNegativeLuckMod - % miss -> no critical hit luck modifier - ) - }; - - {true, _} -> - { - ( - % Attacker wasn't the one parrying - ParryNegativeLuckMod - % Attacker was the one evading - + PrecisionPositiveLuckMod - % Attacker wasn't the one doing a critical - + CriticalNegativeLuckMod - ), - ( - % Defender was the one parrying - ParryPositiveLuckMod - % Defender wasn't the one evading - + PrecisionNegativeLuckMod - % Defender was the one doing a critical - + CriticalPositiveLuckMod - ) - }; - - {false, misses} -> - { - ( - % Attacker wasn't the one parrying - ParryNegativeLuckMod - % Defender was the one evading - + PrecisionNegativeLuckMod - % miss -> no critical hit luck modifier - ), - ( - % Defender was the one parrying - ParryPositiveLuckMod - % Defender was the one evading - + PrecisionPositiveLuckMod - % miss -> no critical hit luck modifier - ) - }; - - {false, _} -> - { - ( - % Attacker wasn't the one parrying - ParryNegativeLuckMod - % Attacker wasn't the one evading - + PrecisionNegativeLuckMod - % Attacker was the one doing a critical - + CriticalPositiveLuckMod - ), - ( - % Defender was the one parrying - ParryPositiveLuckMod - % Defender was the one evading - + PrecisionPositiveLuckMod - % Defender wasn't the one doing a critical - + CriticalNegativeLuckMod - ) - } - end, - - #attack - { - order = Order, - precision = Precision, - is_critical = IsCritical, - is_parry = ParryIsSuccessful, - damage = Damage, - attacker_luck_mod = FinalAttackerLuckMod, - defender_luck_mod = FinalDefenderLuckMod - }. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec get_description_of - ( - step(), - shr_character:type(), - shr_character:type(), - integer(), - integer() - ) - -> maybe_type(). -get_description_of -( - {first, CanParry}, - Attacker, - Defender, - AttackerLuck, - DefenderLuck -) -> - effect_of_attack - ( - first, - Attacker, - Defender, - CanParry, - AttackerLuck, - DefenderLuck - ); -get_description_of -( - {second, CanParry}, - Attacker, - Defender, - AttackerLuck, - DefenderLuck -) -> - AttackerStats = shr_character:get_statistics(Attacker), - AttackerDoubleAttackChance = - shr_statistics:get_double_hits(AttackerStats), - {_Roll, IsSuccessful, PositiveModifier, NegativeModifier} = - shr_roll:percentage_with_luck(AttackerDoubleAttackChance, AttackerLuck), - - NewAttackerLuck = (AttackerLuck + PositiveModifier), - NewDefenderLuck = (DefenderLuck + NegativeModifier), - - case IsSuccessful of - true -> - Result = - effect_of_attack - ( - second, - Attacker, - Defender, - CanParry, - NewAttackerLuck, - NewDefenderLuck - ), - - Result#attack - { - attacker_luck_mod = - (Result#attack.attacker_luck_mod + PositiveModifier), - defender_luck_mod = - (Result#attack.defender_luck_mod + NegativeModifier) - }; - - _ -> {nothing, PositiveModifier, NegativeModifier} - end; -get_description_of -( - {counter, CanParry}, - Attacker, - Defender, - AttackerLuck, - DefenderLuck -) -> - effect_of_attack - ( - counter, - Defender, - Attacker, - CanParry, - DefenderLuck, - AttackerLuck - ). - --spec apply_to_healths_and_lucks - ( - maybe_type(), - non_neg_integer(), - integer(), - non_neg_integer(), - integer() - ) - -> - { - maybe_type(), - non_neg_integer(), - integer(), - non_neg_integer(), - integer() - }. -apply_to_healths_and_lucks -( - _Attack, - AttackerHealth, - AttackerLuck, - DefenderHealth, - DefenderLuck -) -when -( - (AttackerHealth =< 0) - or (DefenderHealth =< 0) -) -> - { - {nothing, 0, 0}, - AttackerHealth, - AttackerLuck, - DefenderHealth, - DefenderLuck - }; -apply_to_healths_and_lucks -( - {nothing, AttackerLuckMod, DefenderLuckMod}, - AttackerHealth, - AttackerLuck, - DefenderHealth, - DefenderLuck -) -> - { - {nothing, AttackerLuckMod, DefenderLuckMod}, - AttackerHealth, - (AttackerLuck + AttackerLuckMod), - DefenderHealth, - (DefenderLuck + DefenderLuckMod) - }; -apply_to_healths_and_lucks -( - Attack, - AttackerHealth, - AttackerLuck, - DefenderHealth, - DefenderLuck -) -when -( - ( - (not Attack#attack.is_parry) - and ((Attack#attack.order == first) or (Attack#attack.order == second)) - ) - or - ( - Attack#attack.is_parry - and (Attack#attack.order == counter) - ) -) -> - Damage = Attack#attack.damage, - - { - Attack, - AttackerHealth, - (AttackerLuck + Attack#attack.attacker_luck_mod), - (DefenderHealth - Damage), - (DefenderLuck + Attack#attack.defender_luck_mod) - }; -apply_to_healths_and_lucks -( - Attack, - AttackerHealth, - AttackerLuck, - DefenderHealth, - DefenderLuck -) -when -( - ( - (not Attack#attack.is_parry) - and (Attack#attack.order == counter) - ) - or - ( - Attack#attack.is_parry - and ((Attack#attack.order == first) or (Attack#attack.order == second)) - ) -) -> - Damage = Attack#attack.damage, - - { - Attack, - (AttackerHealth - Damage), - (AttackerLuck + Attack#attack.attacker_luck_mod), - DefenderHealth, - (DefenderLuck + Attack#attack.defender_luck_mod) - }. - --spec get_sequence - ( - non_neg_integer(), - shr_weapon:type(), - shr_weapon:type() - ) - -> list(step()). -get_sequence (AttackRange, AttackerWeapon, DefenderWeapon) -> - AttackerDefenseRange = shr_weapon:get_minimum_range(AttackerWeapon), - AttackerAttackRange = shr_weapon:get_maximum_range(AttackerWeapon), - DefenderDefenseRange = shr_weapon:get_minimum_range(DefenderWeapon), - DefenderAttackRange = shr_weapon:get_maximum_range(DefenderWeapon), - - AttackerCanAttack = (AttackRange =< AttackerAttackRange), - AttackerCanDefend = - (AttackerCanAttack and (AttackRange > AttackerDefenseRange)), - - true = (AttackerCanAttack == true), - - DefenderCanAttack = (AttackRange =< DefenderAttackRange), - DefenderCanDefend = - (DefenderCanAttack and (AttackRange > DefenderDefenseRange)), - - First = {first, DefenderCanDefend}, - Second = {second, DefenderCanDefend}, - Counter = {counter, AttackerCanDefend}, - - case DefenderCanDefend of - true -> [First, Counter, Second]; - _ -> [First, Second] - end. - --spec standard - ( - - ) - -> - { - % Attack Descriptions, - % Updated Attacker - % Attacker Ataxia Update - % Updated Defender - % Defender Ataxia Update - } - --spec attack_of_opportunity - ( - btl_character:type(), - btl_player:type(), - btl_character:type() - btl_player:type(), - ) - -> - { - % Attack Descriptions, - % Updated Attacker - % Attacker Ataxia Update - % Updated Attacking Player - % Attacking Player Ataxia Update - % Updated Defender - % Defender Ataxia Update - % Updated Defending Player - % Attacking Player Ataxia Update - } - -attack_of_opportunity () -> - [ - {first, false}, - {second, false} - ]. |