summaryrefslogtreecommitdiff |
diff options
author | nsensfel <SpamShield0@noot-noot.org> | 2019-06-05 11:24:52 +0200 |
---|---|---|
committer | nsensfel <SpamShield0@noot-noot.org> | 2019-06-05 11:24:52 +0200 |
commit | 1afb69a11b0e291c7bfd6c24bdd8e55742e61889 (patch) | |
tree | 21c09b15ddcc3272bbb8fa8d41676ffa56ca3130 /src/battle/mechanic/btl_turn_actions_management.erl | |
parent | 1aec9784102855c4bf2e5d2ad9a945166aed2051 (diff) |
[Broken] Changing how actions are handled...
Diffstat (limited to 'src/battle/mechanic/btl_turn_actions_management.erl')
-rw-r--r-- | src/battle/mechanic/btl_turn_actions_management.erl | 50 |
1 files changed, 39 insertions, 11 deletions
diff --git a/src/battle/mechanic/btl_turn_actions_management.erl b/src/battle/mechanic/btl_turn_actions_management.erl index eefe812..0981ab4 100644 --- a/src/battle/mechanic/btl_turn_actions_management.erl +++ b/src/battle/mechanic/btl_turn_actions_management.erl @@ -37,15 +37,6 @@ deactivate_character (Update) -> S1Update. --spec main_character_is_alive - ( - btl_character_turn_update:type() - ) - -> {boolean(), btl_character_turn_update:type()}. -main_character_is_alive (Update) -> - {S0Update, MainCharacter} = btl_character_turn_update:get_character(Update), - {btl_character:get_is_alive(MainCharacter), S0Update}. - -spec handle_actions ( list(btl_action:type()), @@ -54,8 +45,45 @@ main_character_is_alive (Update) -> -> btl_character_turn_update:type(). handle_actions ([], Update) -> Update; handle_actions ([BattleAction|FutureBattleActions], Update) -> - {MainCharacterIsAlive, S0Update} = main_character_is_alive(Update), - + case btl_action:get_actor_index(BattleAction) of + -1 -> handle_actions(FutureBattleActions, S0Update); + CharacterIX -> + S0Battle = btl_character_turn_update:get_battle(S0Update), + {Character, S1Battle} = + btl_battle:get_resolved_character(CharacterIX, S0Battle), + + S1Update = btl_character_turn_update:set_battle(S1Battle, S0Update), + + case btl_character:is_alive(Character) of + false -> handle_actions(FutureBattleActions, S1Update); + true -> + ActionResult = + case btl_action:get_category(BattleAction) of + move -> + btl_event_move:handle + ( + BattleAction, + Character, + S1Update + ); + + attack -> + case + btl_event_attack:handle + ( + BattleAction, + Character, + S1Update + ); + + attack_of_opportunity -> + btl_event_attack_of_opportunity:handle + ( + BattleAction, + Character, + S1Update + ); + end. ActionResult = case {MainCharacterIsAlive, btl_action:get_category(BattleAction)} of {false, _} -> {ok, S0Update}; |