summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle/struct')
-rw-r--r--src/battle/struct/btl_attack.erl23
-rw-r--r--src/battle/struct/btl_battle.erl33
2 files changed, 55 insertions, 1 deletions
diff --git a/src/battle/struct/btl_attack.erl b/src/battle/struct/btl_attack.erl
index 189cb0e..6d7f32e 100644
--- a/src/battle/struct/btl_attack.erl
+++ b/src/battle/struct/btl_attack.erl
@@ -36,7 +36,7 @@
get_sequence/3,
get_description_of/5,
apply_to_healths_and_lucks/5,
- new_opportunity/2,
+ attack_of_opportunity/0
]
).
@@ -411,8 +411,26 @@ get_description_of
CanParry,
DefenderLuck,
AttackerLuck
+ );
+get_description_of
+(
+ opportunity,
+ Attacker,
+ Defender,
+ AttackerLuck,
+ DefenderLuck
+) ->
+ effect_of_attack
+ (
+ opportunity,
+ Attacker,
+ Defender,
+ false,
+ AttackerLuck,
+ DefenderLuck
).
+
-spec apply_to_healths_and_lucks
(
maybe_type(),
@@ -555,6 +573,9 @@ get_sequence (AttackRange, AttackerWeapon, DefenderWeapon) ->
_ -> [First, Second]
end.
+-spec attack_of_opportunity () -> opportunity.
+attack_of_opportunity () -> opportunity.
+
-spec encode (type()) -> {list(any())}.
encode (Attack) ->
Order = Attack#attack.order,
diff --git a/src/battle/struct/btl_battle.erl b/src/battle/struct/btl_battle.erl
index aedd8da..c1f4d68 100644
--- a/src/battle/struct/btl_battle.erl
+++ b/src/battle/struct/btl_battle.erl
@@ -89,6 +89,13 @@
]
).
+-export
+(
+ [
+ resolve_character/2
+ ]
+).
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -468,6 +475,32 @@ new (Map) ->
current_player_turn = btl_player_turn:new(0, 0)
}.
+-spec resolve_character
+ (
+ btl_character:unresolved(),
+ type()
+ )
+ -> btl_character:type().
+resolve_character (CharacterRef, Battle) ->
+ btl_character:resolve
+ (
+ shr_tile:get_omnimods
+ (
+ shr_tile:from_id
+ (
+ shr_tile_instance:get_tile_id
+ (
+ shr_map:get_tile_instance
+ (
+ btl_character:get_location(CharacterRef),
+ Battle#battle.map
+ )
+ )
+ )
+ ),
+ CharacterRef
+ ).
+
-spec get_characters_field () -> non_neg_integer().
get_characters_field () -> #battle.characters.