XmdsBuff.cs 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510
  1. using System;
  2. using CommonAI.Zone.Formula;
  3. using XmdsCommonServer.Plugin;
  4. using XmdsCommonServer.Plugin.XmdsSkillTemplate.Skills;
  5. using XmdsCommonSkill.Plugin.Skills;
  6. using XmdsCommon.Plugin;
  7. using CommonAI.Zone.Instance;
  8. using CommonLang.Log;
  9. namespace XmdsCommonSkill.Plugin.Buffs
  10. {
  11. /// <summary>
  12. /// FileName: XmdsBuff.cs
  13. /// Author: Alex.Yu
  14. /// Corporation:...
  15. /// Description:
  16. /// DateTime: 2015/6/8 20:48:06
  17. /// </summary>
  18. public class XmdsBuffBase : UnitBuff
  19. {
  20. protected static Logger log = LoggerFactory.GetLogger("XmdsBuffBase");
  21. public enum XmdsBuffUseType : int
  22. {
  23. Times = 1, //作用次数型.
  24. LifeTime = 2 //作用时间型.
  25. }
  26. public enum XmdsBuffList : int
  27. {
  28. CHAO_FENG = 100060, //嘲讽.
  29. //----------------------------------------------------------.
  30. LIAN_JI_DIAN = 200010, //连击点.
  31. AN_YIN_ZHI_REN = 200020, //暗影之刃(多段伤害).
  32. YIN_SHEN = 200050, //隐身.
  33. SPEED_UP = 200060, //疾跑.
  34. DU_SHANG = 201010, //荼毒.
  35. YIN_SHEN_HUI_XUE = 201050, //隐身回血(不可打断).
  36. JI_PAO_MIAN_SHANG = 201060, //疾跑免伤.
  37. YING_XI_ZHUANG_TAI = 202020,//影袭状态.
  38. CHEN_MO = 202030, //沉默.
  39. TAN_HUAN = 202040, //瘫痪.
  40. MEN_GUN = 202041, //闷棍(旧).
  41. YIN_SHEN2 = 202050, //强化隐身.
  42. JI_PAO_MIAN_KONG = 202060, //疾跑免控.
  43. //----------------------------------------------------------.
  44. DIAN_RAN = 300010, //点燃.
  45. BING_SHUANG = 300030, //冰霜.
  46. DING_SHI_ZHA_DAN = 301020, //定时炸弹(3s).
  47. MIAN_SHANG_2 = 301040, //免伤(比例).
  48. MO_KANG_DOWN = 301050, //闪电掌握(魔抗↓).
  49. ZHI_LIAO_XIAO_GUO = 301070, //受治疗效果↑.
  50. DONG_JIE = 302030, //冰霜冻结.
  51. YUN_XUAN_LEI_BAO = 302040, //雷暴(晕眩).
  52. AO_SHU_GUANG_HUI = 302070, //奥术光辉(魔攻↑).
  53. HAN_BING_PING_ZHANG = 302090,//寒冰屏障(锁帧+免伤免控).
  54. //----------------------------------------------------------.
  55. FEN_LIE_JIAN = 400020, // 分裂箭(标志).
  56. CHONG_NENG = 400060, // 充能(伤害↑).
  57. ZHONG_SHANG = 402010, // 重伤(流血+治疗效果下降).
  58. SHAN_BI_UP = 402040, // 闪避↑.
  59. //----------------------------------------------------------.
  60. SHEN_SHENG_FANG_HU = 501040,//神圣防护(魔抗↓).
  61. AN_YIN_XING_TAI = 501050, //暗影形态(护甲+移速+耗法).
  62. ZHENG_JIU = 501060, //拯救(免伤+恢复生命).
  63. CONG_RONG = 501080, //护盾+抵挡一次控制.
  64. BIAN_TA = 502010, //鞭挞(魔抗↓-有层叠).
  65. JIAN_SU = 502030, //减速.
  66. SHEN_SHENG_ZHI_LI = 502040, //神圣之力(治疗效果↑).
  67. CHAN_HUI = 502070, //忏悔(眩晕).
  68. //---------------------------------------------------------.
  69. SHOU_REN_ZHAN_HOU = 10060302, // 兽人队长 - 战吼(攻击+防御↑).
  70. CHAN_RAO = 10760402, // 古树之灵 - 缠绕(不动+点燃).
  71. DSZD_MONSTER = 10330402, // 被魔化的艾克 - 定时炸弹(5s).
  72. KUANG_NU_MONSTER = 10340502, // 科斯林伯爵 - 狂怒(攻击+防御↑).
  73. MA_BI = 10480202, // 毒血卫士 - 麻痹(先中毒,后麻痹).
  74. DSZD_MONSTER2 = 10530503, // 火焰女王罗曼提 - 定时炸弹(5s).
  75. WU_SHU_ZU_ZHOU = 10540502, // 黑暗女王萨缇娜 - 巫术诅咒.
  76. WEN_YI = 6061204, // 疫病之王亚巴 - 瘟疫(流血 + 5s后传给别人).
  77. XSSH_MONSTER = 6050602, // 狂暴护盾(吸收伤害 + 10s结束后再释放一个增加自己物攻的buff).
  78. SHI_HUA = 1508003, // 石化(不能释放技能不能移动 + 物防↑).
  79. JG_CANSPELL = 9140503, // 地宫执事-禁锢(移动速度↓ + 可施法).
  80. ANYINGLAOLONG = 604093, //暗影牢笼
  81. //---------------------------------------------------
  82. WU_DI = 1010, // 无敌.
  83. HUI_XUE_DA_DUAN = 1020, // 回血(可打断)-单挑王用.
  84. JJC_TIANSHEN = 1031, // 竞技场天神
  85. JJC_HUICHUN = 1032, // 竞技场回春
  86. JJC_TANLAN = 1033, // 竞技场贪婪
  87. JJC_JIASU = 1034, // 竞技场加速
  88. JJC_WUDI = 1035, // 竞技场无敌
  89. PVP_FLAG_DAMAGEREDUCE = 1038, // PVP旗子标记
  90. LIU_XUE = 1050, // 流血.
  91. MO_KANG_DOWN2 = 1060, // 魔抗↓.
  92. WU_FANG_DOWN = 1070, // 物防↓.
  93. YUN_XUAN = 1080, // 晕眩.
  94. FANG_YU_DOWN = 1090, // 防御下降.
  95. ATTACK_UP = 1100, // 攻击力↑.
  96. DIAN_RAN_TONGYONG = 1110, // 点燃(buffIcon共用“灼烧”).
  97. CHI_XU_DAMAGE = 1120, // 持续伤害.
  98. DU = 1130, // 毒伤害.
  99. BING_DONG = 1150, // 冰冻.
  100. ZHUO_SHAO = 1160, // 灼烧(buffIcon共用“点燃”).
  101. WU_GONG_UP = 1210, // 物攻↑.
  102. FEAR = 1220, // 恐惧(沉默+乱走).
  103. IRON_MAIDEN = 1230, // 反弹护盾(程序还未实现,占坑).
  104. SPEED_DOWN = 1240, // 移动速度↓.
  105. INVICIBLE_CANNOTMOVE = 1241, // 无敌,无法移动
  106. SLEEP = 1270, // 沉睡
  107. IGNORE_DAMAGE = 1280, // 全部免伤
  108. PROP_CHANGE_1 = 1281, // 属性变更 - 一种
  109. PROP_CHANGE_2 = 1282, //属性变更 - 两种
  110. PROP_CHANGE_3 = 1283, //属性变更 - 三种
  111. COM_INGORE_CTRL = 1284, // 免控(霸体)
  112. ADD_HP_EVERYSEC = 1285, // 每秒回血
  113. // 新增
  114. COM_JINGU = 1286, // 通用禁锢
  115. COM_BRAND = 1287, // 通用灼烧
  116. COM_SLIENT = 1288, // 通用沉默
  117. ////////////////////////////////////////////////////////////////////////////////////
  118. ///////////////////// 战士buf /////////////////////
  119. ////////////////////////////////////////////////////////////////////////////////////
  120. ATTACK_UP_ZS_1_1 = 110110, // 战士1-1技能命中后,再次命中,伤害提高
  121. ZS_YUNXIAN_1_6 = 110160, // 战士1-6晕眩
  122. ZS_SPEEDDOWN_2 = 110200, // 战士2-减速
  123. ZS_INGORE_DAMAGE = 110201, // 战士2-动作期间免伤
  124. ZS_ADD_ATTACK = 110210, // 战士2-1,落地提升攻击
  125. ZS_REDUCE_ATTACK = 110211, // 战士2-4, 劈中减攻
  126. HUDUN_ZS_2_5 = 110250, // 战士2-5技能护盾
  127. HUDUN_ZS_2_6 = 110260, // 战士2-6护盾
  128. ZS_SPEEDDOWN_3 = 110300, // 战士3-减速
  129. ZS_INGOREDMG_3 = 110301, // 战士3-免伤
  130. ZS_ATTACKUP_3_1 = 110310, // 战士3-1,攻击提升
  131. ZHUO_SHAO_ZS_3_2 = 110320, // 点燃3-2, 每秒扣血
  132. ZS_YUNXUAN_3_3 = 110330, // 3-3 满蓄附带眩晕
  133. ZS_DEFENCEUP_3_4 = 110340, // 3-4,防御提升
  134. ZS_SPEEDUP_3_5 = 110350, // 3-5,火焰路径,自己加速
  135. ZS_CAOFENG = 110400, // 4-0嘲讽
  136. ZS_4_ADD_TALENT = 110401, // 4-0气动山河
  137. ATTCK_UP_ZS_4_2 = 110420, // 根据损失生命值提高攻击力
  138. LOCK_HP_ZS_4_3 = 110430, // 战士锁血
  139. HitAddHp_ZS_4_5 = 110450, // 受击恢复生命
  140. HPReduce_Damage_4_6 = 110460, // 受伤,对周围造成伤害
  141. LAUNCH_BUF_ZS_5 = 110500, // 免硬控,并转换成减速debuf
  142. //Bleed_ZS_5 = 110501, // 每0.5s造成伤害
  143. TRY_LAUNCH_BUF_ZS_5 = 110502, // 聚气阶段buf
  144. IGNORCTRL_AND_SPPEDCHG = 110503, // 免控,并且速度变更
  145. HUANYUAN_SZ_6 = 110600, // 战士被动,荒原血统
  146. ////////////////////////////////////////////////////////////////////////////////////
  147. ///////////////////// 法师buf /////////////////////
  148. ////////////////////////////////////////////////////////////////////////////////////
  149. ATTACK_SPPED_FS_1_4 = 310140, // 提高攻速
  150. //FS_1_6_SPEED_DOWN = 310160, // 移速下降
  151. ATTACK_UP_FS_2_2 = 310220, // 攻击标记敌人,触发,造成额外伤害
  152. ATTACK_UP_FS_2_3 = 310230, // 攻击禁锢敌人,伤害提高
  153. JINGU_FS_2_3_1 = 310231, // 禁锢
  154. FS_YAZHI_3_5 = 310350, // 压制
  155. FS_TAG_3_5 = 310351, // 寒霜区域标记1
  156. FS_TAG_3_5Ext = 310352, // 寒霜区域标记2
  157. FS_BUFF_3_6 = 310360, // 3-6加速,加攻
  158. FS_YAZHI_4 = 310400, // 压制
  159. SkillDamageUp_FS_4_3 = 310430, // 法师技能伤害变更
  160. SwordCut_FS_5_2 = 310520, // 剑伤debuf
  161. FS_SPEEDDOWN_5_3 = 310530, // 5-3减速
  162. FS_HUDUN_5_6 = 310560, // 法师护盾
  163. PASSIVE_FS_6 = 310600, // 法师被动,标记敌人
  164. PASSIVE_FS_6_1 = 310601, // 法师被动,剑影
  165. PASSIVE_FS_6_SPEEDDOWN = 310602, // 法师被动-减速
  166. ////////////////////////////////////////////////////////////////////////////////////
  167. ///////////////////// 治疗buf /////////////////////
  168. ////////////////////////////////////////////////////////////////////////////////////
  169. HIT_ATTACKUP = 510150, // 命中提高攻击
  170. REMEDY_2_0_ADDHP = 510200, // 治疗加血buff
  171. REMEDY_2_1_DEFENCEUP = 510210, // 治疗加防
  172. REMEDY_2_2_HUDUN = 510220, // 治疗护盾
  173. REMEDY_2_4_ATTACKUP = 510240, // 攻击提升
  174. REMEDY_2_6_HEALEDDOWN = 510260, // 降低敌方治疗效果
  175. REMEDY_3_3_TAG = 510330, // 命中降防
  176. REMEDY_3_4_TAG = 510340, // 治疗3-4技能标记
  177. REMEDY_3_5_TAG = 510350, // 治疗3-5弹射标记
  178. REMEDY_4_JINGU = 510400, // 禁锢
  179. REMEDY_4_JINGUEXT = 510401, // 禁锢后减速
  180. REMEDY_4_JINGU_SPEEDDOWN = 510402, // 禁锢减速
  181. REMEDY_4_3_ATTACKADDHP = 510430, // 治疗4-3藤蔓debuff,队友和自己攻击增加回血
  182. REMEDY_4_4_SPEEDDOWN = 510440, // 治疗4-4,毒爆后减速
  183. REMEDY_4_6_DEBUFF = 510460, // 延时藤蔓debuff
  184. REMEDY_4_6_JINGUEXT = 510461, // 延时藤蔓-禁锢
  185. GOLDEN_BODY_5 = 510500, // 金身buff
  186. IGNORE_DAMAGE_5 = 510501, // 技能
  187. AttackRoundAddHP = 510510, // 攻击范围回血
  188. REMEDY_5_2_PROPCHG = 510520, // 属性变更 - 两种
  189. REMEDY_5_3_TAG = 510530, // 光环标记
  190. REMEDY_5_3_ALLIESTAG = 510531, // 光环标记-队友
  191. //REMEDY_5_5_TAG = 510540, // 治疗5-4普攻标记
  192. REMEDY_5_6_TAG = 510560, // 光环标记
  193. REMEDY_5_6_ALLIESTAG = 510561, // 光环标记-队友
  194. NORMAL_ATTACK_STRENGTH = 510600, // 普攻强化buff
  195. REMEDY_POISON = 510610, // 挂毒buff
  196. ////////////////////////////////////////////////////////////////////////////////////
  197. ///////////////////// 宠物被动buff //////////////////////
  198. ////////////////////////////////////////////////////////////////////////////////////
  199. PET_ATK_6 = 910000, //攻6 - 攻速buff
  200. PET_ATK_2 = 910001, //防2-减伤buf
  201. PET_DEFENCE_2_1 = 910002, //防2-减伤buf
  202. PET_DEFENCE_4_1 = 910006, //防4-护盾buff
  203. PET_DEFENCE_6_1 = 910008, //防6-防御buff
  204. PET_CRIT_2_1 = 910010, //爆2-技能附带灼烧buff
  205. PET_CRIT_4_1 = 910012, //爆4-位移后提高穿透buff
  206. PET_CONSUM_6_1 = 910003, //耗6-伤害提高buff
  207. PET_ASSIST_4_1 = 910021, //辅4-治疗伤害者buff
  208. PET_ASSIST_6 = 910022, //辅6-衰减减速
  209. ////////////////////////////////////////////////////////////////////////////////////
  210. ///////////////////// 宠物主动buff ///////////////////////
  211. ////////////////////////////////////////////////////////////////////////////////////
  212. PET_DEFENCE_MOVE = 910100, //防御+移速 buff
  213. PET_REMEDY_MOVE = 910101, //治疗+移速 buff
  214. PET_CRIT_HPADD = 910102, //下次普攻暴击+生命偷取Buff
  215. PET_DEFENCE_ATTACK = 910103, //降防->加攻
  216. PET_HUDUN = 910104, //护盾
  217. PET_CURSE = 910105, //引燃,真实伤害+降低治疗效果
  218. PET_AMULET = 910106, //护符
  219. PET_ATTACK_REMIT = 910107, //减伤,攻击-》免伤
  220. PET_ROUND_SPEEDDOWN = 910108, //群体减速标记
  221. PET_NEXT_SCOPEATTACK = 910109, //下次攻击范围伤害
  222. PET_NEXT_SPURTINGATTACK = 910110, //下次攻击溅射伤害
  223. PET_ATTACK_SPEEDUP = 910111, //加攻+加速
  224. PET_WUDI = 910112, //无敌
  225. ////////////////////////////////////////////////////////////////////////////////////
  226. ///////////////////// boss buff //////////////////////
  227. ////////////////////////////////////////////////////////////////////////////////////
  228. BOSS_HUDUN_DEFENCE = 910201, // 护盾 + 防御增加
  229. BOSS_SUNDERARMOR = 910202, // 破甲
  230. BOSS_ZB_BLESS = 910203, // 周本1号boss-流血
  231. TAG_WATER = 910204, // 水标记
  232. TAG_FIRE = 910205, // 火标记
  233. TAG_POISON = 910206, // 毒标记
  234. BOSS_ZB_TAG_SKILLLAUNCH = 910207, // 水火无情冷却标记
  235. BOSS_ZB_TAG_ELEMENTS = 910208, // 五行元素
  236. BOSS_ZB_TRAP = 910209, // 捆仙索
  237. BOSS_CRAZE = 910210, // boss狂暴
  238. BOSS_WEAK = 920001, // boss虚弱状态
  239. ////////////////////////////////////////////////////////////////////////////////////
  240. ///////////////////// 新版本宠物2020.5.15 //////////////////////
  241. ////////////////////////////////////////////////////////////////////////////////////
  242. NEWPET_CONTINUE_DAMAGE = 910300, // 持续伤害
  243. NEWPET_CRITRATE_CHG = 910301, // 爆1:暴击几率提升
  244. NEWPET_NEXTATK_CRIT = 910302, // 爆2:下次普攻暴击
  245. NEWPET_DAMAGE_CHG = 910303, // 爆4:提高造成伤害
  246. NEWPET_CHAOFENG = 910304, // 防1:嘲讽
  247. NEWPET_DEFENCEUP = 910305, // 防2:防御提升
  248. NEWPET_REBOUND_DAMAGE = 910306, // 防3:反伤
  249. NEWPET_DAMAGEREDUCE = 910307, // 防4:免伤
  250. NEWPET_ATTACK_CHANGE = 910308, // 血1:降低攻击
  251. NEWPET_ADDHP = 910309, // 血3:回血
  252. NEWPET_ATTACKSPEED_DOWN = 910310, // 血4:降低攻速
  253. NEWPET_DEFENCE_DOWN = 910311, // 辅1:破防
  254. NEWPET_INGOREDEFENCE_UP = 910312, // 辅2:提高穿透
  255. NEWPET_ATTACKSPEED_UP = 910313, // 辅3:提高攻速
  256. NEWPET_DAMAGE_DEEP = 910314, // 辅4:伤害加深
  257. NEWPET_ATTACK_UP = 910315, // 攻4:攻击提升
  258. ////////////////////////////////////////////////////////////////////////////////////
  259. ///////////////////// 宠物装备2021.6.16 //////////////////////
  260. ////////////////////////////////////////////////////////////////////////////////////
  261. PET_EQUIPSKILL_RAGE = 80200, // 狂暴
  262. PET_EQUIPSKILL_HUDUN = 80260, // 护盾
  263. PET_EQUIPSKILL_RAGE_DEAD = 80280, // 狂暴-死亡
  264. PET_EQUIPSKILL_ADDHP = 80290, // 死亡加血
  265. ////////////////////////////////////////////////////////////////////////////////////
  266. ///////////////////// 斩妖技2020.7.27 //////////////////////
  267. ////////////////////////////////////////////////////////////////////////////////////
  268. ZHANYAO_ZS_1 = 70010,
  269. ZHANYAO_ZS_2 = 70011,
  270. ZHANYAO_ZS_S_1 = 70012,
  271. ZHANYAO_ZS_S_2 = 70013,
  272. ZHANYAO_FS_1 = 70020,
  273. ZHANYAO_FS_2 = 70021,
  274. ZHANYAO_FS_S_1 = 70022,
  275. ZHANYAO_FS_S_2 = 70023,
  276. ZHANYAO_NM_1 = 70030,
  277. ZHANYAO_NM_2 = 70031,
  278. ZHANYAO_NM_S_1 = 70032,
  279. ZHANYAO_NM_S_2 = 70033,
  280. LINGBAO_BUFF = 100100, // 灵宝攻击提升buff
  281. TINAHU_DAMAGE_TAG_1 = 100101, // 天书-伤害标记buff
  282. TINAHU_DAMAGE_TAG_2 = 100102, // 天书-伤害标记buff
  283. TINAHU_DAMAGE_TAG_3 = 100103, // 天书-伤害标记buff
  284. TINAHU_DAMAGE_TAG_4 = 100104, // 天书-伤害标记buff
  285. TINAHU_DAMAGE_TAG_5 = 100105, // 天书-伤害标记buff
  286. ////////////////////////////////////////////////////////////////////////////////////
  287. ///////////////////// 卡牌技能buff2021.8.12 //////////////////////
  288. ////////////////////////////////////////////////////////////////////////////////////
  289. CARD_STORE_ENERGY = 1999000, // 蓄势
  290. // ---------------------------------------青龙---------------------------------------
  291. CARD_QINGLONG = 1100000, // 青龙之力
  292. CARD_QL_ADDHP = 1100001, // 青龙- 加血buff
  293. CARD_QL_DEFENCEUP = 1100002, // 青龙- 防御提升
  294. // ---------------------------------------朱雀---------------------------------------
  295. CARD_ZHUQUE = 1200000, // 朱雀之力
  296. CARD_CRATE_UP = 1200001, // 暴击率提升
  297. // ---------------------------------------白虎---------------------------------------
  298. CARD_BAIHU = 1300000, // 白虎之力
  299. CARD_DEFENCE_DOWN = 1300001, // 减防
  300. // ---------------------------------------玄武---------------------------------------
  301. CARD_XUANWU = 1400000, // 玄武之力
  302. CARD_XW_HUDUN = 1400001, // 普通护盾反伤
  303. CARD_XW_DEFENCE_UP = 1400002, // 护盾- 加防
  304. CARD_XW_FORZEN = 1400003, // 冰冻效果
  305. CARD_XW_IGNORECTRL_HUDUN = 1400004, // 免控护盾
  306. CARD_XW_ALLIES_SPEED_DEFENCE = 1400005, // 队友移速,防御提高
  307. // ---------------------------------------BOSS---------------------------------------
  308. CARD_BOSS_DMG_DEEPER = 1999900, //boss-灼伤,受伤增加
  309. CARD_BOSS_SPEED_DMG_DOWN = 1999901, //boss-虚弱,移速降低,伤害降低
  310. }
  311. /// <summary>
  312. ////作用类型.
  313. /// </summary>
  314. public int BuffUseType = (int)XmdsBuffUseType.LifeTime;
  315. /// <summary>
  316. /// 时间/次数.
  317. /// </summary>
  318. public int BuffUseTime = 0;
  319. public event XmdsSkillBase.ScriptHandler OnXmdsBuffHitEvent;
  320. public delegate void OnBuffEndEvent(XmdsCommonServer.Plugin.XmdsVirtual hitter, InstanceUnit.BuffState state);
  321. public event OnBuffEndEvent OnHandleBuffEndEvent;
  322. public delegate void OnBuffBeginEvent(XmdsVirtual hitter, XmdsVirtual attacker, InstanceUnit.BuffState state);
  323. public event OnBuffBeginEvent OnHandleBuffBeginEvent;
  324. private GameSkill mGameSkill = null;
  325. private bool mShowBuffTips = true;
  326. //BUFF是否需要飘字.
  327. public bool ShowBuffTips { get { return mShowBuffTips; } set { mShowBuffTips = value; } }
  328. public override int GetAbilityID()
  329. {
  330. return (int)(XmdsBuffProperties.XmdsBuffAbility.None);
  331. }
  332. /** buff是否已失效 */
  333. protected bool BuffInvaildCheck()
  334. {
  335. if (mInvalid == true)
  336. {
  337. return mInvalid;
  338. }
  339. bool ret = false;
  340. //时间型按照BUFF时间来.
  341. if (BuffUseType == (int)XmdsBuffBase.XmdsBuffUseType.LifeTime)
  342. {
  343. ret = false;
  344. }
  345. else
  346. {
  347. BuffUseTime--;
  348. if (BuffUseTime <= 0)
  349. {
  350. ret = true;
  351. }
  352. else
  353. {
  354. ret = false;
  355. }
  356. }
  357. if (ret == true)
  358. {
  359. mInvalid = true;
  360. }
  361. return mInvalid;
  362. }
  363. public override void BuffBegin(XmdsVirtual hitter, XmdsVirtual attacker, InstanceUnit.BuffState state)
  364. {
  365. mInvalid = false;
  366. if (OnHandleBuffBeginEvent != null)
  367. {
  368. OnHandleBuffBeginEvent.Invoke(hitter, attacker, state);
  369. }
  370. OnBuffBegin(hitter, attacker, state);
  371. }
  372. public override void BuffEnd(XmdsVirtual hitter, InstanceUnit.BuffState state, bool replace)
  373. {
  374. if (OnHandleBuffEndEvent != null)
  375. {
  376. OnHandleBuffEndEvent.Invoke(hitter, state);
  377. }
  378. OnBuffEnd(hitter, state, replace);
  379. state.Tag = null;
  380. Dispose();
  381. }
  382. public override int BuffHit(XmdsVirtual hitter, XmdsVirtual attacker, AttackSource source, ref XmdsVirtual.AtkResult result)
  383. {
  384. return OnBuffHit(hitter, attacker, source, ref result);
  385. }
  386. public override void BuffUpdate(XmdsVirtual unit, InstanceUnit.BuffState state) { }
  387. protected virtual void OnBuffBegin(XmdsVirtual hitter, XmdsVirtual attacker, InstanceUnit.BuffState state) { }
  388. protected virtual void OnBuffEnd(XmdsVirtual hitter, InstanceUnit.BuffState state, bool replace) { }
  389. protected virtual int OnBuffHit(XmdsVirtual hitter, XmdsVirtual attacker, AttackSource source, ref XmdsVirtual.AtkResult result)
  390. {
  391. if (OnXmdsBuffHitEvent != null)
  392. {
  393. BattleParams param = BattleParams.AllocAutoRelease();
  394. try
  395. {
  396. //param.AttackRlt = result.rlt;
  397. param.Attacker = attacker;
  398. param.Hitter = hitter;
  399. param.Source = source;
  400. param.GameSkill = mGameSkill;
  401. OnXmdsBuffHitEvent.Invoke(param);
  402. int ret = param.FinalSkillDamage;
  403. //result.rlt = param.AttackRlt;
  404. return ret;
  405. }
  406. finally
  407. {
  408. param.Dispose();
  409. }
  410. }
  411. return 0;
  412. }
  413. public GameSkill GetGameSkill()
  414. {
  415. return mGameSkill;
  416. }
  417. public void SetOnHitCallBack(GameSkill gs, XmdsSkillBase.ScriptHandler callBack)
  418. {
  419. mGameSkill = gs;
  420. OnXmdsBuffHitEvent = callBack;
  421. }
  422. protected override void OnDispose()
  423. {
  424. OnHandleBuffBeginEvent = null;
  425. OnHandleBuffEndEvent = null;
  426. OnXmdsBuffHitEvent = null;
  427. base.OnDispose();
  428. }
  429. public override void CopyTo(UnitBuff other)
  430. {
  431. var ret = (other as XmdsBuffBase);
  432. ret.mGameSkill = this.mGameSkill;
  433. ret.OnHandleBuffBeginEvent = this.OnHandleBuffBeginEvent;
  434. ret.OnHandleBuffEndEvent = this.OnHandleBuffEndEvent;
  435. ret.OnXmdsBuffHitEvent = this.OnXmdsBuffHitEvent;
  436. ret.BuffUseType = this.BuffUseType;
  437. ret.BuffUseTime = this.BuffUseTime;
  438. ret.ShowBuffTips = this.ShowBuffTips;
  439. this.OnHandleBuffBeginEvent = null;
  440. this.OnHandleBuffEndEvent = null;
  441. this.OnXmdsBuffHitEvent = null;
  442. this.mGameSkill = null;
  443. base.CopyTo(other);
  444. }
  445. }
  446. }