源战役
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

212 lines
7.6 KiB

пре 4 недеља
  1. %%%-------------------------------------------------------------------
  2. %% 唤神
  3. %% 说明
  4. %% 唤神装备的格子sell = 唤神id * 100 + pos
  5. %% 辅助唤神位置id = 主站 pos * 100 + 位置
  6. %% 神血 = 唤神生命 + 套装附带的神血 + 玩家生命*20%
  7. %% 神攻 = 唤神攻击 + 玩家攻击
  8. %% 神防 = 唤神防御 + 玩家防御
  9. %%% @end
  10. %%%-------------------------------------------------------------------
  11. -author("liushl").
  12. %% 出战位置判断 1-99为出战位置|101-9999为援护位置
  13. -define(IS_PRIMARY_GOD(Pos), Pos >=1 andalso Pos =< 99).
  14. -define(IS_SECONDARY_GOD(Pos), Pos >= 101 andalso Pos =< 9999).
  15. %% Pos2 是不是 Pos1 的辅助位
  16. -define(IS_THE_SECONDARY_GOD(Pos1, Pos2),
  17. (?IS_PRIMARY_GOD(Pos1)
  18. andalso ?IS_SECONDARY_GOD(Pos2)
  19. andalso Pos2 div ?POS_OFFSET =:= Pos1)).
  20. %% 出战位置偏移量
  21. -define(POS_OFFSET, 100).
  22. %% 唤神装备位置偏移量
  23. -define(CELL_OFFSET, 100).
  24. %% 默认解锁的主出战位大小
  25. -define(DEFAULT_POS, 3).
  26. %% 援助唤神属性折扣
  27. -define(ASSISTANCE, 0.5).
  28. %% 装备位置
  29. -define(DEFAULT_EQUIP_POS, [1,2,3,4,5,6]).
  30. %% 装备5级时产生变异属性
  31. -define(GOD_EQUIP_SP_LV, 5).
  32. %% 操作信息
  33. -define(LOG_ACTIVE, 1). % 激活 {1,0, time}
  34. -define(LOG_STAR_UP, 2). % 升星:每升一星{2, 星级,time}
  35. -define(LOG_LV_UP, 3). % 升级:升到整50级 {3, 等级, time}
  36. -define(LOG_SUIT, 4). % 激活套装:首次激活某6件套装{4, 套装类型,time}
  37. -define(LOG_SKILL, 5). % 技能满级:某个技能满级{5, 技能id,time}
  38. -define(LOG_EQUIP_UP, 6). % 装备强化
  39. -define(LOG_GOD_FRONT, 7). % 唤神上阵变化
  40. %% 召唤流程
  41. -define(GOD_SUMMON_BEGIN, 1). % 初次召唤
  42. -define(GOD_SUMMON_NEXT, 2). % 切换为下一个
  43. -define(GOD_SUMMON_END, 3). % 结束
  44. %%奖池类型
  45. -define(NORMAL_POOL, 1). % 普通奖池
  46. -define(LIMIT_POOL, 2). % 限时奖池
  47. %% 效果类型
  48. -define(TYPE_SUIT_SKILL_FRONT_GOD, 1). %% 上阵唤神属性加成
  49. -define(TYPE_SUIT_SKILL_FRONT_ROLE, 2). %% 上阵玩家属性加成
  50. -define(TYPE_SUIT_SKILL_FIGHT_ROLE, 3). %% 出战玩家属性加成
  51. -define(TYPE_SUIT_SKILL_SPECIAL, 9). %% 特殊效果
  52. %% 套装技能
  53. -define(SUIT_SKILL_ROLE_CRIT_ADD , 1). % 上阵提升2000暴击
  54. -define(SUIT_SKILL_GOD_ATT , 2). % 装备后神攻 翻倍
  55. -define(SUIT_SKILL_ROLE_TEN , 3). % 上阵提升2000坚韧
  56. -define(SUIT_SKILL_GOD_DEF , 4). % 装备后神防 翻倍
  57. -define(SUIT_SKILL_ROLE_DODGE , 5). % 上阵提升2000闪避
  58. -define(SUIT_SKILL_GOD_HP , 6). % 装备后神血 翻倍
  59. -define(SUIT_SKILL_ROLE_PARRY_RATIO , 7). % 上阵提升5%格挡几率
  60. -define(SUIT_SKILL_ROLE_UNCRIT_ADD_RATIO, 8). % 唤神+20%暴击抵抗
  61. -define(SUIT_SKILL_GOD_CALL_ONE , 9). % 上阵后单个神祗召唤时间+5s
  62. -define(SUIT_SKILL_GOD_CALL , 10). % 上阵后所有神祗召唤时间+5s
  63. -define(SUIT_SKILL_ROLE_CRIT_HURT , 11). % 装备的唤神+15%暴击几率
  64. -define(SUIT_SKILL_ADD_POS , 12). % 上阵后出战阵位+1
  65. -define(SUIT_SKILL_ROLE_HURT_ADD_RATIO, 13). % 提升5%伤害加成
  66. -define(SUIT_SKILL_ROLE_NO_CTRL , 14). % 出战战斗时免疫所有控制 减速/流血/眩晕 等
  67. -define(SUIT_SKILL_STAB_RATIO , 15). % 提升5%格挡穿透
  68. -define(SUIT_SKILL_ROLE_NO_HURT , 16). % 出战时前2s免疫所有伤害
  69. -define(SUIT_SKILL_ROLE_ASSIST_PLUS1 , 17). % 该唤神护佑时属性加成为60%
  70. -define(SUIT_SKILL_ROLE_ASSIST_PLUS2 , 18). % 该唤神护佑时属性加成为80%
  71. %% 出战中的唤神信息
  72. -record(god_fighting, {
  73. id = 0
  74. , att = 0 % 攻
  75. , def = 0 % 防
  76. , hp = 0 % 血
  77. , hp_lim = 0 % 血上限
  78. , skills = [] % 技能 [{skill_id, lv}|_]
  79. , battle_effect = [] % 战斗特殊效果(一般是装备套装效果)[skill_id|_]
  80. , time = 0 % 变身时间戳 utime:longunixtime()
  81. , continue = 0 % 变身持续时间
  82. }).
  83. %% 唤神召唤出战信息
  84. -record(god_summon, {
  85. ref = [],
  86. fighters = [] % 按出战顺序排列#god_fighting{}发到场景去
  87. }).
  88. %% 玩家唤神数据
  89. -record(role_god, {
  90. god_info = [] % 玩家激活的唤神
  91. ,unlock = [] % 出战解锁信息[出战位置/援助位置|_]
  92. ,summon_time = 0 % 召唤时间,CD过后才能继续召唤
  93. ,god_summon = undefined % 召唤出战信息。召唤时才有数据#god_summon{}
  94. ,temp_attr = [] % 某些唤神 出战时 会给玩家提供额外属性
  95. ,attr = [] % 提供给玩家的总属性列表:上阵的唤神才计算
  96. ,god_power = 0 % 唤神战力:包括唤神技能额外战力+神属性战力
  97. ,role_power = 0 % 总战力,人物属性战力
  98. }).
  99. %% 单个唤神
  100. -record(god, {
  101. id = 0, % 唤神id
  102. star = 0, % 唤神星级
  103. lv = 1, % 唤神等级
  104. exp = 0, % 唤神经验
  105. pos = 0, % 出战位置:0未出战|1-99为出战位置|101-9999为援护位置
  106. attr = [], % 上阵提供给玩家的属性:培养属性/技能属性/装备属性
  107. equip_attr = [], % 装备属性 只在装备变更时刷新
  108. god_attr = [], % 唤神属性:变身战斗时附加给为玩家的 攻/血/防
  109. % 主唤神:包括自己的成长属性+套装效果+人物继承
  110. % 援助唤神:0.5*自己的成长属性+套装效果
  111. % 未上阵:[]
  112. skills = [], % 战斗技能[{skill_id, lv}|_]
  113. suit_info = [], % 套装效果,统计装备属性的时候计算
  114. suit_skills = [], % 套装技能
  115. extra_power = 0, % 额外战力:技能战力/
  116. power_show = 0 % 前端展示战力
  117. }).
  118. %%%===================================================================
  119. %%% 配置
  120. %%%===================================================================
  121. %% 唤神配置
  122. -record(base_god_info, {
  123. id = 0,
  124. name = <<>>,
  125. star = 0,
  126. cost = [],
  127. need_lv = 0,
  128. attr = [],
  129. god_attr = [],
  130. skills = [],
  131. goods_id = 0,
  132. skill_max = 0,
  133. type = 0
  134. }).
  135. %% 唤神装备配置
  136. -record(base_god_equip, {
  137. id = 0,
  138. name = <<>>,
  139. attr = [],
  140. extra_attr = [],
  141. pos = 0,
  142. quality = 0,
  143. exp = 0,
  144. suit_id = 0
  145. }).
  146. %% 唤神套装配置
  147. -record(base_god_equip_suit, {
  148. name = <<>>,
  149. type = 0, %% 1属性百分比加成/2属性直接加成/3其他
  150. effect = [] %%
  151. }).
  152. %% 唤神限时抽奖期数
  153. -record(base_god_limit_phase, {
  154. phase = 0,
  155. god_id = 0,
  156. count_award = [],
  157. blessing_award = [],
  158. days = 0
  159. }).
  160. %% 唤神普通抽奖期数
  161. -record(base_god_normal_phase, {
  162. phase = 0,
  163. awards = 0
  164. }).
  165. %% 唤神抽奖奖品
  166. -record(base_god_limit_award, {
  167. id = 0,
  168. awards = [],
  169. broadcast = 0,
  170. weight = 0,
  171. need_lv = 0,
  172. phase = 0
  173. }).
  174. %% 唤神抽奖奖品
  175. -record(base_god_normal_award, {
  176. id = 0,
  177. awards = [],
  178. broadcast = 0,
  179. weight = 0,
  180. need_lv = 0,
  181. phase = 0,
  182. show = 0
  183. }).
  184. -define(SELECT_ROLE_GOD_INFO,
  185. <<"SELECT god_id, star, lv, exp, pos, skills FROM role_god_info WHERE role_id = ~p">>).
  186. -define(SELECT_ROLE_GOD,
  187. <<"SELECT unlock_pos FROM role_god WHERE role_id = ~p">>).
  188. -define(REPLACE_INTO_ROLE_GOD_INFO,
  189. <<"REPLACE INTO role_god_info(role_id, god_id, star, lv, exp, pos, skills) VALUES(~p, ~p, ~p, ~p, ~p, ~p, '~ts')">>).
  190. -define(REPLACE_INTO_ROLE_GOD,
  191. <<"REPLACE INTO role_god(role_id,unlock_pos) VALUES(~p, '~ts')">>).