|
|
- %%%-------------------------------------------------------------------
- %%% @author DY
- %%% @copyright (C) 2020, <COMPANY>
- %%% @doc
- %%% 技能攻击
- %%% 随机伤害值 RAND(min_power ,max_power) * RAND(min_rate, max_rate)
- %%% 返回:SUCCESS
- %%% @end
- %%% Created : 07. 10月 2020 15:13
- %%%-------------------------------------------------------------------
- -module(action_skill_attack).
- -include("eBhv3.hrl").
- -include("example.hrl").
-
- %% API
- -export([tick/2]).
-
- tick(#{properties := Prop} = _BTree, #{uid := UID, rival_list := [RivalUID | _]} = State) ->
- BTreeID = game_dict:get_passivity_btree_id(RivalUID),
- RivalState = get_be_attacker_rival_state(Prop, UID, RivalUID),
- {_, RivalState1} = behavior_tree:execute_sub_tree(BTreeID, RivalState),
- game_dict:put_role_state(RivalUID, RivalState1),
- {?BT_SUCCESS, State}.
-
- get_be_attacker_rival_state(Prop, UID, RivalUID) ->
- #{
- skill_type := SkillType,
- min_power := MinPower, max_power := MaxPower,
- min_rate := MinRate, max_rate := MaxRate
- } = Prop,
- #{rival_list := RivalList} = RivalState = game_dict:get_role_state(RivalUID),
- case lists:member(UID, RivalList) of
- true ->
- RivalList1 = RivalList;
- false ->
- RivalList1 = RivalList ++ [UID]
- end,
- RivalState1 = RivalState#{
- rival_list := RivalList1,
- misc := #{atk_dmg => {SkillType, ?RAND(MinPower, MaxPower) * ?RAND(MinRate, MaxRate)}}
- },
- game_dict:put_role_state(RivalUID, RivalState1),
- ?INFO("~ts:发动了~ts攻击", [UID, SkillType]),
- RivalState1.
|