源战役
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

191 lines
12 KiB

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