1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
-module(btl_action_switch_weapon).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-export
(
[
handle/3
]
).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-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),
BaseCharacter = btl_character:get_base_character(Character),
{UpdatedBaseCharacter, BaseCharacterAtaxiaUpdate} =
shr_character:ataxia_switch_weapons(BaseCharacter),
{UpdatedCharacter, CharacterAtaxiaUpdate} =
btl_character:ataxia_set_base_character
(
UpdatedBaseCharacter,
BaseCharacterAtaxiaUpdate,
Character
),
{UpdatedBattle, BattleAtaxiaUpdate} =
btl_battle:ataxia_set_character
(
CharacterIX,
UpdatedCharacter,
CharacterAtaxiaUpdate,
btl_character_turn_update:get_battle(S0Update)
),
TimelineItem = btl_turn_result:new_character_switched_weapons(CharacterIX),
S1Update = btl_character_turn_update:add_to_timeline(TimelineItem, S0Update),
S2Update =
btl_character_turn_update:ataxia_set_battle
(
UpdatedBattle,
BattleAtaxiaUpdate,
S1Update
),
{ok, S2Update}.
|