-module(btl_turn_actions_switch_weapon). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -export ( [ handle/1 ] ). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -spec handle ( btl_character_turn_update:type() ) -> btl_character_turn_update:type(). handle (Update) -> Data = btl_character_turn_update:get_data(Update), Character = btl_character_turn_data:get_character(Data), CharacterCurrentData = btl_character_turn_data:get_character_current_data(Data), CharacterIX = btl_character_turn_data:get_character_ix(Data), {PrimaryWeaponID, SecondaryWeaponID} = btl_character:get_weapon_ids(Character), UpdatedWeaponIDs = {SecondaryWeaponID, PrimaryWeaponID}, UpdatedCharacter = btl_character:set_weapon_ids(UpdatedWeaponIDs, Character), S0Data = btl_character_turn_data:set_character(UpdatedCharacter, Data), S1Data = btl_character_turn_data:refresh_character_current_data(S0Data), S0Update = btl_character_turn_update:set_data(S1Data, Update), S1Update = btl_turn_actions:handle_max_health_changes ( CharacterCurrentData, S0Update ), TimelineItem = btl_turn_result:new_character_switched_weapons(CharacterIX), DBQuery = ataxic:update_field ( btl_battle:get_characters_field(), ataxic_sugar:update_orddict_element ( CharacterIX, ataxic:update_field ( btl_character:get_weapons_field(), UpdatedWeaponIDs ) ) ), btl_character_turn_update:add_to_timeline(TimelineItem, DBQuery, S1Update).