-ifndef(SKILL_HRL).
|
|
-define(SKILL_HRL, ok).
|
|
|
|
%% 技能用途类型
|
|
-define(SKILL_CAREER_NORMAL, 0). %% 普通技能
|
|
-define(SKILL_CAREER_ROLE, 1). %% 职业技能
|
|
-define(SKILL_CAREER_COMMON, 10). %% 通用技能(职业通用技能)
|
|
-define(SKILL_CAREER_MON, 11). %% 怪物技能
|
|
-define(SKILL_CAREER_PET, 12). %% 宠物技能
|
|
-define(SKILL_CAREER_JUMP, 13). %% 神器技能
|
|
-define(SKILL_CAREER_MOUNT, 14). %% 坐骑技能
|
|
-define(SKILL_CAREER_WING, 15). %% 翅膀技能
|
|
-define(SKILL_CAREER_BABY, 16). %% 宝具技能
|
|
-define(SKILL_CAREER_GOD_WEAPON, 17). %% 神兵技能
|
|
-define(SKILL_CAREER_WARSOUL, 18). %% 战魂技能
|
|
% -define(SKILL_CAREER_MAGIC_BEAST, 19). %% 幻兽技能
|
|
-define(SKILL_CAREER_GUILD, 20). %% 公会技能
|
|
-define(SKILL_CAREER_DUN, 21). %% 副本技能
|
|
-define(SKILL_CAREER_CHILD, 22). %% 宝宝技能
|
|
-define(SKILL_CAREER_NUCLEON, 23). %% 灵能技能
|
|
-define(SKILL_CAREER_PARTNER, 24). %% 伙伴/ai娘技能
|
|
-define(SKILL_CAREER_GOD, 25). %% 仙翼技能
|
|
% -define(SKILL_CAREER_STAR_SOUL, 26). %% 仙武技能 旧功能删除,新仙武系统预留
|
|
% -define(SKILL_CAREER_DEITY, 27). %% 仙骑技能 旧功能删除,新仙骑系统预留
|
|
-define(SKILL_RING_SKILL, 28). %% 婚姻技能
|
|
-define(SKILL_FOSTER_SKILL, 29). %% 珍宝技能
|
|
-define(SKILL_CAREER_GOD_1, 30). %% 唤神技能
|
|
-define(SKILL_CAREER_DUN_CHILD, 31). %% 宝宝副本特殊技能
|
|
-define(SKILL_SEVEN_DAYS_GOAL, 32). %% 七日目标技能
|
|
-define(SKILL_CAREER_AI_POINT, 36). %% 怪物ai特殊技能
|
|
|
|
%% 技能类型
|
|
-define(SKILL_TYPE_ACTIVE, 1). %% 主动
|
|
-define(SKILL_TYPE_PASSIVE, 2). %% 被动
|
|
-define(SKILL_TYPE_ASSIST, 3). %% 辅助
|
|
-define(SKILL_TYPE_PERMANENT_GAIN, 4). %% 永久增益
|
|
|
|
%% Buff类型
|
|
-define(SKILL_NORMAL_BUFF, 0). %% 普通buff
|
|
-define(SKILL_BUFF, 1). %% 增益buff
|
|
-define(SKILL_DEBUFF, 2). %% 减益buff
|
|
-define(SKILL_CTRL_BUFF, 3). %% 控制buff
|
|
-define(SKILL_SP_BUFF, 4). %% 特殊buff
|
|
|
|
%% buff作用方
|
|
-define(SKILL_AFFECT_MYSELF, 1). %% 作用对象是自己
|
|
-define(SKILL_AFFECT_ENEMY, 2). %% 作用对象是别人
|
|
-define(SKILL_AFFECT_ALL, 3). %% 作用对象是双方
|
|
|
|
%% 被动技能触发条件的类型
|
|
-define(SKILL_BUFF_TRIGGER, 0). %% 无条件触发
|
|
-define(SKILL_BUFF_TRIGGER_GET, 1). %% 受到某个特殊效果时触发
|
|
-define(SKILL_BUFF_TRIGGER_HAVE, 2). %% 身上有特殊效果时触发
|
|
-define(SKILL_BUFF_TRIGGER_HP, 3). %% 血量低于一定比例触发
|
|
-define(SKILL_BUFF_TRIGGER_CRIT, 4). %% 战斗中发生暴击触发
|
|
-define(SKILL_BUFF_TRIGGER_HPRESUME, 5). %% 回血时触发
|
|
-define(SKILL_BUFF_TRIGGER_DIE, 6). %% 受到致死伤害时触发
|
|
-define(SKILL_BUFF_TRIGGER_MISS, 7). %% 闪避时触发
|
|
-define(SKILL_BUFF_TRIGGER_HAVE_LIST, 8). %% 身上有任一特殊效果时触发
|
|
-define(SKILL_BUFF_TRIGGER_HURT_TYPE_LIST, 9). %% 某任一伤害类型时触发
|
|
-define(SKILL_BUFF_TRIGGER_SKILL_ID, 10). %% 使用某一技能时触发
|
|
-define(SKILL_BUFF_TRIGGER_TEAM, 11). %% 组队状态检查触发
|
|
-define(SKILL_BUFF_TRIGGER_LV_LARGER, 12). %% 等级高于怪物对方时触发
|
|
-define(SKILL_BUFF_TRIGGER_B_SIGN, 13). %% 被动技能实际影响方的战斗身份标识
|
|
|
|
%% 被动技能触发时机
|
|
-define(SKILL_BUFF_TG_TIME, 0). %% 特殊血量不分前后触发
|
|
-define(SKILL_BUFF_TG_TIME_ATTBF, 1). %% 攻击者触发 -> 计算伤害前触发
|
|
-define(SKILL_BUFF_TG_TIME_DEFBF, 2). %% 防守者触发 -> 计算伤害前触发
|
|
-define(SKILL_BUFF_TG_TIME_ATTAF, 3). %% 攻击者触发 -> 计算伤害后触发
|
|
-define(SKILL_BUFF_TG_TIME_DEFAF, 4). %% 防守者触发 -> 计算伤害后触发
|
|
-define(SKILL_BUFF_TG_TIME_GOLD_REVIVE, 5). %% 彩钻原地复活时无条件触发
|
|
|
|
%% 天赋技能
|
|
-define(TALENT_RESET_GOOD, 38120001). %% 重置消耗的物品
|
|
-define(DEF_SKILL_POINT, 5). %% 天赋技能开启给予的默认技能点
|
|
|
|
-define(DEFAULT_SKILL_LV, 1). %% 默认技能等级
|
|
|
|
%%%------------------------------------------------
|
|
%% 特殊技能ID
|
|
-define(SP_SKILL_HP_RESUME, 109100). % 特殊回血:独立配置计算回血量
|
|
-define(SP_SKILL_INVINCIBLE_MADNESS, 1110000015). % 狂战领域怪物无敌技能
|
|
-define(SP_SKILL_DEL_HURT_GWAR, 1110000016). % 减伤技能-百团大战
|
|
-define(SP_SKILL_BUFF_ENCOURAGE, 400001). % 伤害鼓舞 通用
|
|
-define(SP_SKILL_DEL_HURT, 400002). % 减伤护佑技能-护送
|
|
-define(SP_SKILL_NO_BATTLE, 400003). % 无敌技能,既不能攻击被人也不能被攻击-护送
|
|
|
|
-define(SP_SKILL_KILLING, 0). % 荆棘之心(个人反伤和队伍反伤被动): 旧待删
|
|
-define(SP_SKILL_HOPE, 0). % 不灭希望(主动): 旧待删
|
|
%% 怪物默认技能(未配置技能时)
|
|
-define(MON_DEFAUL_SKILL, 1110000001).
|
|
%%%------------------------------------------------
|
|
|
|
%% 技能
|
|
-record(status_skill, {
|
|
skill_attr = [], % 技能属性值[]
|
|
skill_attr_other = [], % 技能其他类系属性值[]
|
|
skill_cd = [], % 技能cd[{id1, time1},{id2, time2}...]
|
|
%% 职业技能
|
|
skill_list = [], % 技能列表[{id1, lv1}, {id2, lv2}...]
|
|
skill_power = 0, % 技能额外增加战力
|
|
tmp_skill_list = [], % 临时技能列表[{id1, lv1}, {id2, lv2}...]
|
|
skill_passive = [], % 战斗计算时触发的buff效果的被动技能,从已学被动技能中过滤得到[{id1, lv1}, {id2, lv2}...]
|
|
combo_skill_ref=undefined, % 副技能
|
|
%% 天赋技能
|
|
skill_talent_list = [], % 总天赋技能列表 [{SkillId, SkillLv}]
|
|
skill_talent_passive = [], % 战斗中触发的天赋被动技能列表 [{SkillId, SkillLv}]
|
|
skill_talent_active_list = [], % 天赋主动技能列表 [{SkillId, SkillLv}]
|
|
skill_talent_active_triggers=[],% 天赋主动技能触发列表 [{SkillId, EndTime}]
|
|
skill_talent_attr = [], % 天赋技能属性值#attr{}
|
|
skill_talent_power = 0, % 天赋技能战力
|
|
use_point = 0, % 使用的技能点数
|
|
point = 0, % 技能总点数
|
|
skill_talent_attr_other = [] % 天赋技能其他类系属性值
|
|
,hp_resume_spcl_add = 0 % 特殊技能血量回复增量值
|
|
}).
|
|
|
|
%% 技能等级数据
|
|
-record(skill_lv, {
|
|
condition = [], % 学习条件[{point, 天赋技能类型, 类型总投入技能点}, {pre_skill, 前置技能id, 等级}]
|
|
power = 0, % 基础战力
|
|
%% 基础属性效果(被动技能永久增益)
|
|
%% 格式1:[{FuncId, AttrId, Int|float}] {作用Id, 属性类型(属性id和属性类型万分比id), 整数加的数值|万分比数值}
|
|
%% 格式2:[{FuncId, AttrId, BaseVal, LevelPeriod, ValAddPerPeriod}]
|
|
base_attr = [],
|
|
%% 触发时机,参考 ?SKILL_BUFF_TRIGGER 等
|
|
trigger = [],
|
|
cd = 0, % 触发cd
|
|
distance = 0, % 攻击距离
|
|
area = 0, % 每级的攻击范围
|
|
num = [0, 0], % [攻击人数,攻击怪物数量]
|
|
attr = [], % 基础属性效果[{属性类型ID,buff类型,概率,作用方,整数值,小数值,持续时间,叠加层数,特效id},...]
|
|
hurt = 0, % 伤害加成倍率效果(填整数,万倍数)
|
|
hurt_val = 0, % 伤害加成固定值
|
|
effect = [] % 特殊效果效果:[{特殊效果ID,buff类型,概率,作用方,整数值,小数值,属性类型ID,持续时间,作用次数,特效id},...]
|
|
}).
|
|
|
|
%% 技能
|
|
-record(skill, {
|
|
id = 0, % 技能id
|
|
name = "", % 技能名字
|
|
lv = 1, % 等级
|
|
career = 0, % 技能用途类型:1职业;10通用;11;怪物;12宠物
|
|
sex = 0, % 性别
|
|
type = 0, % 技能类型:(1主动, 2被动, 3辅助, 4.永久增益 5.天赋攻击 6.天赋防守 7.天赋通用)
|
|
is_normal = 0, % 是否普攻
|
|
is_combo = 0, % 是否组合技副技能(0|1)
|
|
is_anger = 0, % 是否怒气技能
|
|
refind_target=0, % 是否重新选取目标(0|1) del
|
|
mod = 0, % 技能模式(1单体,2群体)
|
|
obj = 0, % 释放目标(1自己,2最近敌方,3最近队友,4朝向,5最少血队友,6指定怪物,7主人,8相同类型队友)
|
|
att_obj = 0, % 攻击参照对象(1.自己; 2.选择目标)
|
|
calc= 1, % 是否计算伤害
|
|
release=1, % 技能释放模式 1.普通为即时释放 2.蓄能表示伤害以蓄能时间长短来计算 3.移动施法
|
|
around_hurt=1000, % 群攻周围伤害比
|
|
range=1, % 群攻范围模式(1圆形,2直线,3扇形)
|
|
talent=[], % 天赋技能id列表 [{技能id,概率(千分制),持续时间(毫秒)}...]
|
|
combo=[], % 组合技能的组成
|
|
skill_link=[], % 关联技能,如三连击
|
|
time=0, % 技能施放时间
|
|
is_shake_pre = 0, % 是否前摇技能
|
|
broadcast = 0, % 是否在服务器返回在播放动作
|
|
repel = 0, % 击退参数 Distance,0为不击退,大于0为击退像素数
|
|
multistage = 1, % 多段技能最大阶段数(默认1,按阶段顺序施放,可中断但不允许从中段开始。小于1将按1处理)
|
|
stage_cd = 1000, % 多段技能各阶段之间cd时间
|
|
lv_data=#skill_lv{} % 各等级数据
|
|
}).
|
|
|
|
%% 技能调整功能,相关附带参数,用于特定的ai计算调整参数使用
|
|
-record(adjust_params, {
|
|
copy_id = 0
|
|
,aer_x = 0
|
|
,aer_y = 0
|
|
}).
|
|
|
|
%% skill
|
|
-define(sql_get_all_skill, <<"select skill_id, lv from skill where id = ~w">>).
|
|
-define(sql_insert_skill, <<"insert into skill set id = ~w, skill_id = ~w, lv = ~w">>).
|
|
-define(sql_update_skill_lv, <<"update skill set lv = ~w where id = ~w and skill_id = ~w">>).
|
|
-define(sql_reset_skill_lv, <<"update skill set lv = ~w where id = ~w">>).
|
|
-define(sql_del_skill, <<"delete from skill where id = ~w and skill_id = ~w">>).
|
|
-define(sql_batch_del_skill, <<"delete from skill where id = ~w and skill_id in (~ts)">>).
|
|
|
|
%% talent skill
|
|
-define(sql_get_all_talent_skill, <<"select skill_id, lv from talent_skill where role_id = ~w">>).
|
|
-define(sql_replace_talent_skill, <<"replace into talent_skill (role_id, skill_id, lv) values (~w, ~w, ~w)">>).
|
|
-define(sql_reset_talent_skill, <<"delete from talent_skill where role_id = ~w">>).
|
|
-define(sql_update_talent_skill_point, <<"update `player_state` set `skill_extra_point` = ~p where id=~w ">>).
|
|
|
|
-endif.
|