summaryrefslogtreecommitdiff |
diff options
author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2019-10-14 22:44:01 +0200 |
---|---|---|
committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2019-10-14 22:44:01 +0200 |
commit | 374d81b1cc1b638ae8b2504f8e8c7b4929a679a7 (patch) | |
tree | f47bfa7896da4d24fec106b07e91084b33403078 /src/battle/mechanic/action | |
parent | 0e980b08f266b48d9b40f5d58fa40e1a748f8bbf (diff) |
...
Diffstat (limited to 'src/battle/mechanic/action')
-rw-r--r-- | src/battle/mechanic/action/btl_action_attack.erl | 148 |
1 files changed, 27 insertions, 121 deletions
diff --git a/src/battle/mechanic/action/btl_action_attack.erl b/src/battle/mechanic/action/btl_action_attack.erl index 1024f44..91c886b 100644 --- a/src/battle/mechanic/action/btl_action_attack.erl +++ b/src/battle/mechanic/action/btl_action_attack.erl @@ -25,75 +25,6 @@ should_reverse_roles (IsParry, AttackCategory) -> or ((AttackCategory =/= counter) and (IsParry == true)) ). --spec apply_condition_to_character - ( - non_neg_integer(), - shr_condition:trigger(), - any(), - VolatileDataType, - btl_character_turn_update:type() - ) - -> {VolatileDataType, btl_character_turn_update:type()}. -apply_condition_to_character -( - ActorIX, - Trigger, - ReadOnlyData, - S0VolatileData, - S0Update -) -> - S0Battle = btl_character_turn_update:get_battle(S0Update), - {S0Actor, S1Battle} = btl_battle:get_resolved_character(ActorIX, S0Battle), - S1Update = btl_character_turn_update:set_battle(S1Battle, S0Update), - - { - S1VolatileContext, - ActorConditionsAtaxicUpdate, - S2Update - } = - btl_condition:ataxia_apply_trigger - ( - {Trigger, ReadOnlyData, S0VolatileData}, - S1Update, - btl_character:get_conditions(S0Actor) - ), - - %%%%% Actor and Battle may have been modified %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - S1Battle = btl_character_turn_update:get_battle(S2Update), - {S1Actor, S2Battle} = btl_battle:get_resolved_character(ActorIX, S1Battle), - S0Conditions = btl_character:get_conditions(S1Actor), - - S1Conditions = - ataxic:basic_apply_to(ActorConditionsAtaxicUpdate, S0Conditions), - - {S2Actor, ActorAtaxicUpdate} = - btl_character:ataxia_set_conditions - ( - S1Conditions, - ActorConditionsAtaxicUpdate, - S1Actor - ), - - {S3Battle, BattleAtaxicUpdate} = - btl_battle:ataxia_set_character - ( - ActorIX, - S2Actor, - ActorAtaxicUpdate, - S2Battle - ), - - S2Update = - btl_character_turn_update:ataxia_set_battle - ( - S3Battle, - BattleAtaxicUpdate, - S1Update - ), - - {S1VolatileContext, S2Update}. - -spec apply_mirror_conditions ( boolean(), @@ -130,7 +61,7 @@ apply_mirror_conditions end, {S1VolatileContext, S1Update} = - apply_condition_to_character + blt_condition:apply_to_character ( ActorIX, OwnTriggerName, @@ -140,7 +71,7 @@ apply_mirror_conditions ), {S2VolatileContext, S2Update} = - apply_condition_to_character + blt_condition:apply_to_character ( TargetIX, OtherTriggerName, @@ -149,41 +80,16 @@ apply_mirror_conditions S1Update ), - S0Battle = btl_character_turn_update:get_battle(S2Update), - - { - S3VolatileContext, - BattleConditionsAtaxicUpdate, - S5Update - } = - btl_condition:ataxia_apply_trigger - ( - {GlobalTriggerName, ReadOnlyContext, S2VolatileContext}, - S2Update, - btl_battle:get_conditions(S0Battle) - ), - - %%%% Battle may have been modified (and very likely has) %%%%%%%%%%%%%%%%%%%% - S1Battle = btl_character_turn_update:get_battle(S2Update), - UpdatedBattleConditions = - ataxic:basic_apply_to - ( - btl_battle:get_conditions(S1Battle), - BattleConditionsAtaxicUpdate - ), - - {S2Battle, BattleAtaxicUpdate} = - btl_battle:ataxia_set_conditions(UpdatedBattleConditions, S1Battle), - - S5Update = - btl_character_turn_update:ataxia_set_battle + {S3VolatileContext, S3Update} = + blt_condition:apply_to_battle ( - S2Battle, - BattleAtaxicUpdate, + GlobalTriggerName, + ReadOnlyContext, + S2VolatileContext, S2Update ), - {S3VolatileContext, S2Update}. + {S3VolatileContext, S3Update}. -spec roll_for_precision ( @@ -402,68 +308,68 @@ handle_end_of_attack (Action, S0Update) -> S2Update = btl_character_turn_update:set_battle(S2Battle, S1Update), - S0ActorIsDead = (not btl_character:get_is_alive(Actor)), - S0TargetIsDead = (not btl_character:get_is_alive(Actor)), + S0ActorIsDead = (not btl_character:get_is_alive(S0Actor)), + S0TargetIsDead = (not btl_character:get_is_alive(S0Target)), S3Update = case S0ActorIsDead of false -> S2Update; true -> - {_None, NextUpdate} = + {_None, V0NextUpdate} = apply_mirror_conditions ( false, - ?CONDITION_TRIGGER_COMPUTED_WAS_KILLED, - ?CONDITION_TRIGGER_COMPUTED_HAS_KILLED, - ?CONDITION_TRIGGER_COMPUTED_ANY_KILL, + ?CONDITION_TRIGGER_MAY_HAVE_BEEN_KILLED, + ?CONDITION_TRIGGER_MAY_HAVE_KILLED, + ?CONDITION_TRIGGER_ANY_POSSIBLE_KILL, Action, none, S2Update ), - NextUpdate + V0NextUpdate end, S4Update = case S0TargetIsDead of false -> S3Update; true -> - {_None, NextUpdate} = + {_None, V1NextUpdate} = apply_mirror_conditions ( true, - ?CONDITION_TRIGGER_COMPUTED_WAS_KILLED, - ?CONDITION_TRIGGER_COMPUTED_HAS_KILLED, - ?CONDITION_TRIGGER_COMPUTED_ANY_KILL, + ?CONDITION_TRIGGER_MAY_HAVE_BEEN_KILLED, + ?CONDITION_TRIGGER_MAY_HAVE_KILLED, + ?CONDITION_TRIGGER_ANY_POSSIBLE_KILL, Action, none, S3Update ), - NextUpdate + V1NextUpdate end, S3Battle = btl_character_turn_update:get_battle(S4Update), - {S1Actor, S1Battle} = btl_battle:get_resolved_character(ActorIX, S0Battle), - {S1Target, S2Battle} = btl_battle:get_resolved_character(TargetIX, S1Battle), + {S1Actor, S4Battle} = btl_battle:get_resolved_character(ActorIX, S3Battle), + {S1Target, S5Battle} = btl_battle:get_resolved_character(TargetIX, S4Battle), - S5Update = btl_character_turn_update:set_battle(S2Battle, S4Update), + S5Update = btl_character_turn_update:set_battle(S5Battle, S4Update), - S1ActorIsDead = (not btl_character:get_is_alive(Actor)), - S1TargetIsDead = (not btl_character:get_is_alive(Actor)), + S1ActorIsDead = (not btl_character:get_is_alive(S1Actor)), + S1TargetIsDead = (not btl_character:get_is_alive(S1Target)), S6Update = case S1ActorIsDead of false -> S5Update; true -> - btl_victory_progression:handle_character_loss(S1Actor, S5Update) + btl_victory_progression:handle_character_loss(ActorIX, S5Update) end, S7Update = case S1TargetIsDead of false -> S6Update; true -> - btl_victory_progression:handle_character_loss(S1Target, S6Update) + btl_victory_progression:handle_character_loss(TargetIX, S6Update) end, S7Update. |