summaryrefslogtreecommitdiff |
diff options
author | nsensfel <SpamShield0@noot-noot.org> | 2019-10-16 12:59:09 +0200 |
---|---|---|
committer | nsensfel <SpamShield0@noot-noot.org> | 2019-10-16 12:59:09 +0200 |
commit | 48c021b8faeab207abd24e90b67c660d638cd1bd (patch) | |
tree | c5fee4f72244d385ffe97e4f084ff967269622b0 | |
parent | 7c9fdca6dee0ba9953427fe8ade2f7f395686322 (diff) |
...
-rw-r--r-- | src/battle/mechanic/action/btl_action_move.erl | 14 | ||||
-rw-r--r-- | src/battle/mechanic/action/btl_action_switch_weapon.erl | 111 |
2 files changed, 87 insertions, 38 deletions
diff --git a/src/battle/mechanic/action/btl_action_move.erl b/src/battle/mechanic/action/btl_action_move.erl index 347ca93..bdefee9 100644 --- a/src/battle/mechanic/action/btl_action_move.erl +++ b/src/battle/mechanic/action/btl_action_move.erl @@ -448,11 +448,7 @@ commit_move (CharacterIX, Character, S0Update, Path, NewLocation) -> btl_action:type(), btl_character_turn_update:type() ) - -> - ( - {'ok', btl_character_turn_update:type()} - | {'events', list(btl_action:type()), btl_character_turn_update:type()} - ). + -> btl_character_turn_update:type(). handle (Action, S0Update) -> ActorIX = btl_action:get_actor_index(Action), @@ -526,9 +522,11 @@ handle (Action, S0Update) -> ), case RemainingPath of - [] -> {ok, S6Update}; + [] -> S6Update; _ -> - {events, + btl_character_turn_update:add_actions + ( + false, ( Interruptions ++ @@ -542,5 +540,5 @@ handle (Action, S0Update) -> ] ), S6Update - } + ) end. diff --git a/src/battle/mechanic/action/btl_action_switch_weapon.erl b/src/battle/mechanic/action/btl_action_switch_weapon.erl index 7d8a81b..354c328 100644 --- a/src/battle/mechanic/action/btl_action_switch_weapon.erl +++ b/src/battle/mechanic/action/btl_action_switch_weapon.erl @@ -2,6 +2,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-include("tacticians/conditions.hrl"). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -9,7 +10,7 @@ -export ( [ - handle/3 + handle/2 ] ). @@ -23,44 +24,94 @@ -spec handle ( btl_action:type(), - btl_character:type(), btl_character_turn_update:type() ) - -> {'ok', btl_character_turn_update:type()}. -handle (Action, Character, S0Update) -> - CharacterIX = btl_action:get_actor_index(Action), + -> btl_character_turn_update:type(). +handle (Action, S0Update) -> + ActorIX = btl_action:get_actor_index(Action), - BaseCharacter = btl_character:get_base_character(Character), + S0PerformSwitch = true, - {UpdatedBaseCharacter, BaseCharacterAtaxiaUpdate} = - shr_character:ataxia_switch_weapons(BaseCharacter), - - {UpdatedCharacter, CharacterAtaxiaUpdate} = - btl_character:ataxia_set_base_character + {S1PerformSwitch, S1Update} = + btl_condition:apply_to_character ( - UpdatedBaseCharacter, - BaseCharacterAtaxiaUpdate, - Character + ActorIX, + ?CONDITION_TRIGGER_ABOUT_TO_SWITCH_WEAPONS, + Action, + S0PerformSwitch, + S0Update ), - {UpdatedBattle, BattleAtaxiaUpdate} = - btl_battle:ataxia_set_character + {S2PerformSwitch, S2Update} = + btl_condition:apply_to_battle ( - CharacterIX, - UpdatedCharacter, - CharacterAtaxiaUpdate, - btl_character_turn_update:get_battle(S0Update) + ?CONDITION_TRIGGER_A_CHARACTER_IS_ABOUT_TO_SWITCH_WEAPONS, + Action, + S1PerformSwitch, + S1Update ), - TimelineItem = btl_turn_result:new_character_switched_weapons(CharacterIX), + case S2PerformSwitch of + false -> S2Update; + true -> + S0Battle = btl_character_turn_update:get_battle(S2Update), + {S0Actor, S1Battle} = + btl_battle:get_resolved_character(ActorIX, S0Battle), - S1Update = btl_character_turn_update:add_to_timeline(TimelineItem, S0Update), - S2Update = - btl_character_turn_update:ataxia_set_battle - ( - UpdatedBattle, - BattleAtaxiaUpdate, - S1Update - ), + S0BaseActor = btl_character:get_base_character(S0Actor), + + {S1BaseActor, BaseActorAtaxicUpdate} = + shr_character:ataxia_switch_weapons(S0BaseActor), + + {S1Actor, ActorAtaxicUpdate} = + btl_character:ataxia_set_base_character + ( + S1BaseActor, + BaseActorAtaxicUpdate, + S0Actor + ), + + {S1Battle, BattleAtaxicUpdate} = + btl_battle:ataxia_set_character + ( + ActorIX, + S1Actor, + ActorAtaxicUpdate, + S0Battle + ), + + TimelineItem = + btl_turn_result:new_character_switched_weapons(ActorIX), + + S3Update = + btl_character_turn_update:add_to_timeline(TimelineItem, S2Update), + + S4Update = + btl_character_turn_update:ataxia_set_battle + ( + S1Battle, + BattleAtaxicUpdate, + S3Update + ), + + {_V0Nothing, S5Update} = + btl_condition:apply_to_character + ( + ActorIX, + ?CONDITION_TRIGGER_HAS_SWITCHED_WEAPONS, + Action, + none, + S4Update + ), + + {_V1Nothing, S6Update} = + btl_condition:apply_to_battle + ( + ?CONDITION_TRIGGER_A_CHARACTER_HAS_SWITCHED_WEAPONS, + Action, + none, + S5Update + ), - {ok, S2Update}. + S6Update + end. |