summaryrefslogtreecommitdiff |
diff options
author | nsensfel <SpamShield0@noot-noot.org> | 2019-01-28 19:03:19 +0100 |
---|---|---|
committer | nsensfel <SpamShield0@noot-noot.org> | 2019-01-28 19:03:19 +0100 |
commit | dc988b5aa72204954b2034615d644c703b35d294 (patch) | |
tree | 8605e35192f542b960270f9ee35b879584fda8a8 /src/battle/mechanic/turn_action/btl_turn_actions_attack.erl | |
parent | 04212005d8f4e078548738256add0f6c12138946 (diff) |
Adding the luck mechanic...
Diffstat (limited to 'src/battle/mechanic/turn_action/btl_turn_actions_attack.erl')
-rw-r--r-- | src/battle/mechanic/turn_action/btl_turn_actions_attack.erl | 47 |
1 files changed, 41 insertions, 6 deletions
diff --git a/src/battle/mechanic/turn_action/btl_turn_actions_attack.erl b/src/battle/mechanic/turn_action/btl_turn_actions_attack.erl index 52dd3fb..a414588 100644 --- a/src/battle/mechanic/turn_action/btl_turn_actions_attack.erl +++ b/src/battle/mechanic/turn_action/btl_turn_actions_attack.erl @@ -22,17 +22,29 @@ non_neg_integer(), btl_character_current_data:type(), non_neg_integer(), - list(btl_attack:step()) + list(btl_attack:step()), + integer(), + integer() ) - -> {list(btl_attack:type()), non_neg_integer(), non_neg_integer()}. + -> + { + list(btl_attack:type()), + non_neg_integer(), + non_neg_integer(), + integer(), + integer() + }. handle_attack_sequence ( CharacterCurrentData, CharacterCurrentHealth, TargetCurrentData, TargetCurrentHealth, - AttackSequence + AttackSequence, + AttackerLuck, + DefenderLuck ) -> + % TODO lists:foldl over AttackSequence to take luck into account. AttackPlannedEffects = lists:map ( @@ -41,7 +53,9 @@ handle_attack_sequence ( AttackStep, CharacterCurrentData, - TargetCurrentData + TargetCurrentData, + AttackerLuck, + DefenderLuck ) end, AttackSequence @@ -119,26 +133,47 @@ handle (BattleAction, Update) -> CharacterIX = btl_character_turn_data:get_character_ix(Data), CharacterCurrentData = btl_character_turn_data:get_character_current_data(Data), + AttackingPlayer = + btl_battle:get_player(btl_character:get_player_ix(Character), Battle), + AttackingPlayerLuck = btl_player:get_luck(AttackingPlayer), + Map = btl_battle:get_map(Battle), TargetIX = btl_battle_action:get_target_ix(BattleAction), TargetCharacter = btl_battle:get_character(TargetIX, Battle), TargetCurrentData = btl_character_current_data:new(TargetCharacter, Map), + DefendingPlayer = + btl_battle:get_player + ( + btl_character:get_player_ix(TargetCharacter), + Battle + ), + DefendingPlayerLuck = btl_player:get_luck(DefendingPlayer), true = btl_character:get_is_alive(TargetCharacter), AttackSequence = get_attack_sequence(Character, TargetCharacter), - {AttackEffects, RemainingAttackerHealth, RemainingDefenderHealth} = + { + AttackEffects, + RemainingAttackerHealth, + RemainingDefenderHealth, + _NewAttackerLuck, + _NewDefenderLuck + } = handle_attack_sequence ( CharacterCurrentData, btl_character:get_current_health(Character), TargetCurrentData, btl_character:get_current_health(TargetCharacter), - AttackSequence + AttackSequence, + AttackingPlayerLuck, + DefendingPlayerLuck ), + % TODO: update lucks... + UpdatedCharacter = btl_character:set_current_health(RemainingAttackerHealth, Character), |