summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2019-10-16 12:59:09 +0200
committernsensfel <SpamShield0@noot-noot.org>2019-10-16 12:59:09 +0200
commit48c021b8faeab207abd24e90b67c660d638cd1bd (patch)
treec5fee4f72244d385ffe97e4f084ff967269622b0
parent7c9fdca6dee0ba9953427fe8ade2f7f395686322 (diff)
...
-rw-r--r--src/battle/mechanic/action/btl_action_move.erl14
-rw-r--r--src/battle/mechanic/action/btl_action_switch_weapon.erl111
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.