| 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/struct | |
| parent | 0e980b08f266b48d9b40f5d58fa40e1a748f8bbf (diff) | |
...
Diffstat (limited to 'src/battle/struct')
| -rw-r--r-- | src/battle/struct/btl_condition.erl | 124 | 
1 files changed, 123 insertions, 1 deletions
| diff --git a/src/battle/struct/btl_condition.erl b/src/battle/struct/btl_condition.erl index 13d6387..78ee9b6 100644 --- a/src/battle/struct/btl_condition.erl +++ b/src/battle/struct/btl_condition.erl @@ -65,7 +65,9 @@  -export  (     [ -      ataxia_apply_trigger/3 +      ataxia_apply_trigger/3, +      apply_to_character/5, +      apply_to_battle/4     ]  ). @@ -333,5 +335,125 @@ ataxia_apply_trigger (Context, S0Update, Conditions) ->     {LastVolatileData, ConditionsAtaxiaUpdate, LastUpdate}. +-spec apply_to_character +   ( +      non_neg_integer(), +      shr_condition:trigger(), +      any(), +      VolatileDataType, +      btl_character_turn_update:type() +   ) +   -> {VolatileDataType, btl_character_turn_update:type()}. +apply_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 +   } = +      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_to_battle +   ( +      shr_condition:trigger(), +      any(), +      VolatileDataType, +      btl_character_turn_update:type() +   ) +   -> {VolatileDataType, btl_character_turn_update:type()}. +apply_to_battle +( +   Trigger, +   ReadOnlyData, +   S0VolatileData, +   S0Update +) -> +   S0Battle = btl_character_turn_update:get_battle(S0Update), + +   { +      S1VolatileContext, +      BattleConditionsAtaxicUpdate, +      S1Update +   } = +      ataxia_apply_trigger +      ( +         {Trigger, ReadOnlyData, S0VolatileData}, +         S0Update, +         btl_battle:get_conditions(S0Battle) +      ), + +   %%%% Battle may have been modified (and very likely has) %%%%%%%%%%%%%%%%%%%% +   S1Battle = btl_character_turn_update:get_battle(S1Update), +   UpdatedBattleConditions = +      ataxic:basic_apply_to +      ( +         btl_battle:get_conditions(S1Battle), +         BattleConditionsAtaxicUpdate +      ), + +   {S2Battle, BattleAtaxicUpdate} = +      btl_battle:ataxia_set_conditions(UpdatedBattleConditions, S1Battle), + +   S1Update = +      btl_character_turn_update:ataxia_set_battle +      ( +         S2Battle, +         BattleAtaxicUpdate, +         S1Update +      ), + +   {S1VolatileContext, S1Update}. +  -spec encode (type()) -> {list({binary(), any()})}.  encode (Condition) -> {[]}. % TODO | 


