From 2df0db54d42a54fe5bec35bdf9996376164c23e7 Mon Sep 17 00:00:00 2001 From: Nathanael Sensfelder Date: Fri, 11 Oct 2019 23:39:11 +0200 Subject: ... --- src/battle/mechanic/condition/blt_cond_heal.erl | 187 ------------------------ src/battle/mechanic/condition/btl_cond_heal.erl | 125 ++++++++++++++++ 2 files changed, 125 insertions(+), 187 deletions(-) delete mode 100644 src/battle/mechanic/condition/blt_cond_heal.erl create mode 100644 src/battle/mechanic/condition/btl_cond_heal.erl (limited to 'src/battle/mechanic/condition') diff --git a/src/battle/mechanic/condition/blt_cond_heal.erl b/src/battle/mechanic/condition/blt_cond_heal.erl deleted file mode 100644 index 021739f..0000000 --- a/src/battle/mechanic/condition/blt_cond_heal.erl +++ /dev/null @@ -1,187 +0,0 @@ --module(btl_cond_heal). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --include("tacticians/conditions.hrl"). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --export -( - [ - apply/3 - ] -). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec apply_to_character - ( - btl_condition:type(), - btl_character:type() - ) - -> - { - btl_condition:type(), - btl_condition:update_action(), - [{btl_character:type(), ataxic:basic()}] - }. -apply_to_character (Condition, S0Character) -> - {_TargetIX, Amount} = btl_condition:get_parameters(Condition), - - case btl_character:get_is_alive(S0Character) of - false -> {Condition, none, []}; - true -> - RemainingUses = btl_condition:get_remaining_uses(Condition), - CurrentHealth = btl_character:get_current_health(S0Character), - MaxHealth = - shr_attributes:get_health - ( - shr_character:get_attributes - ( - btl_character:get_base_character(S0Character) - ) - ), - - UpdatedHealth = min(MaxHealth, (CurrentHealth + Amount)), - UpdatedRemainingUses = - - {S1Character, CharacterUpdate} = - btl_character:ataxia_set_current_health(UpdatedHealth, S0Character), - - if - (RemainingUses == -1) -> - { - Condition, - do_nothing, - [{S1Character, CharacterUpdate}] - }; - - (RemainingUses == 1) -> - { - btl_condition:set_remaining_uses - ( - UpdatedRemainingUses, - Condition - ), - remove, - [{S1Character, CharacterUpdate}] - }; - - (RemainingUses == 0) -> - { - Condition, - remove, - [{S1Character, CharacterUpdate}] - }; - - true -> - {UpdatedCondition, ConditionUpdate} = - btl_condition:ataxia_set_remaining_uses - ( - UpdatedRemainingUses, - Condition - ), - { - UpdatedCondition, - {update, ConditionUpdate}, - [{S1Character, CharacterUpdate}] - } - end - end. - --spec handle_trigger - ( - btl_condition:trigger(), - btl_condition:type() - ) - -> btl_condition:trigger(). -handle_trigger ({TriggerType, S0TriggerData}, Condition) -> - {TargetIX, _Amount} = btl_condition:get_parameters(Condition), - - case - ( - (TriggerType == ?CONDITION_TRIGGER_START_OF_OWN_ATTACK) - or (TriggerType == ?CONDITION_TRIGGER_END_OF_OWN_ATTACK) - or (TriggerType == ?CONDITION_TRIGGER_START_OF_OWN_HIT) - or (TriggerType == ?CONDITION_TRIGGER_END_OF_OWN_HIT) - or (TriggerType == ?CONDITION_TRIGGER_OWN_DODGE) - or (TriggerType == ?CONDITION_TRIGGER_OWN_CRITICAL) - or (TriggerType == ?CONDITION_TRIGGER_OWN_DOUBLE_HIT) - or (TriggerType == ?CONDITION_TRIGGER_OWN_DAMAGE) - or (TriggerType == ?CONDITION_TRIGGER_START_OF_TARGET_ATTACK) - or (TriggerType == ?CONDITION_TRIGGER_END_OF_TARGET_ATTACK) - or (TriggerType == ?CONDITION_TRIGGER_START_OF_TARGET_HIT) - or (TriggerType == ?CONDITION_TRIGGER_END_OF_TARGET_HIT) - or (TriggerType == ?CONDITION_TRIGGER_TARGET_DODGE) - or (TriggerType == ?CONDITION_TRIGGER_TARGET_CRITICAL) - or (TriggerType == ?CONDITION_TRIGGER_TARGET_DOUBLE_HIT) - or (TriggerType == ?CONDITION_TRIGGER_TARGET_DAMAGE) - ) - of - false -> {TriggerType, S0TriggerData}; - true -> - {Char0IX, Char0, Char1IX, Char1} = TriggerData, - if - (Char0IX == TargetIX) -> - {_UpdatedCondition, _UpdateOrder, UpdatedChar} = - apply_to_character(Condition, Char0), - - { - TriggerType, - { - Char0IX - UpdatedChar, - Char1IX, - Char1 - } - }; - - (Char1IX == TargetIX) -> - {_UpdatedCondition, _UpdateOrder, UpdatedChar} = - apply_to_character(Condition, Char0), - - { - TriggerType, - { - Char0IX - Char0, - Char1IX, - UpdatedChar - } - }; - - true -> {TriggerType, S0TriggerData} - end - end. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec apply - ( - btl_condition:trigger(), - btl_condition:type(), - btl_character_turn_update:type() - ) -> - { - btl_condition:type(), - btl_condition:update_action(), - btl_condition:trigger(), - btl_character_turn_update:type() - }. -apply (S0Trigger, Condition, Update) -> - S1Trigger = handle_trigger(S0Trigger, Condition), - - Parameters, - Condition, - Update) -> - {TargetIX, Amount} = - case btl_condition:get_parameters(Condition) of - {StoredTargetIX, StoredAmount} -> {StoredTargetIX, StoredAmount}; - Other -> error({condition, parameter, Other}) - end, - {[{Condition, []}], Update}. diff --git a/src/battle/mechanic/condition/btl_cond_heal.erl b/src/battle/mechanic/condition/btl_cond_heal.erl new file mode 100644 index 0000000..bbbbc96 --- /dev/null +++ b/src/battle/mechanic/condition/btl_cond_heal.erl @@ -0,0 +1,125 @@ +-module(btl_cond_heal). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-include("tacticians/conditions.hrl"). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-export +( + [ + apply/3 + ] +). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-spec apply_to_character + ( + btl_condition:type(), + btl_character:type() + ) + -> + { + btl_condition:type(), + btl_condition:update_action(), + [{btl_character:type(), ataxic:basic()}] + }. +apply_to_character (Condition, S0Character) -> + {_TargetIX, Amount} = btl_condition:get_parameters(Condition), + + case btl_character:get_is_alive(S0Character) of + false -> {Condition, none, []}; + true -> + RemainingUses = btl_condition:get_remaining_uses(Condition), + CurrentHealth = btl_character:get_current_health(S0Character), + MaxHealth = + shr_attributes:get_health + ( + shr_character:get_attributes + ( + btl_character:get_base_character(S0Character) + ) + ), + + UpdatedHealth = min(MaxHealth, (CurrentHealth + Amount)), + UpdatedRemainingUses = + + {S1Character, CharacterUpdate} = + btl_character:ataxia_set_current_health(UpdatedHealth, S0Character), + + if + (RemainingUses == -1) -> + { + Condition, + none, + [{S1Character, CharacterUpdate}] + }; + + (RemainingUses == 1) -> + { + btl_condition:set_remaining_uses + ( + UpdatedRemainingUses, + Condition + ), + remove, + [{S1Character, CharacterUpdate}] + }; + + (RemainingUses == 0) -> + { + Condition, + remove, + [{S1Character, CharacterUpdate}] + }; + + true -> + {UpdatedCondition, ConditionUpdate} = + btl_condition:ataxia_set_remaining_uses + ( + UpdatedRemainingUses, + Condition + ), + { + UpdatedCondition, + {update, ConditionUpdate}, + [{S1Character, CharacterUpdate}] + } + end + end. + +-spec handle_context + ( + shr_condition:context(), + btl_condition:type() + ) + -> shr_condition:context(). +handle_context ({Trigger, ReadOnly, VolatileData}, Condition) -> + {_TargetIX, _Amount} = btl_condition:get_parameters(Condition), + {Trigger, ReadOnly, VolatileData}. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-spec apply + ( + shr_condition:context(), + btl_condition:type(), + btl_character_turn_update:type() + ) -> + { + shr_condition:context(), + btl_character_turn_update:type(), + btl_condition:update_action() + }. +apply (S0Context, S0Condition, S0Update) -> + S1Context = handle_context(S0Context, S0Condition), + + {TargetIX, Amount} = btl_condition:get_parameters(S0Condition), + + {S1Context, S0Update, none}. -- cgit v1.2.3-70-g09d2