XmdsBuff_KillCreateSpeel.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using CommonAI.Zone.Instance;
  2. using CommonAI.Zone.Formula;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using XmdsCommon.Plugin;
  8. using XmdsCommonServer.Plugin;
  9. using XmdsCommonServer.Plugin.XmdsSkillTemplate.Skills;
  10. using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator;
  11. using CommonAI.Zone;
  12. using XmdsCommonSkill.Plugin.Interface;
  13. using static XmdsCommonSkill.Plugin.Interface.ComSpellTemplate;
  14. using CommonAI.Data;
  15. using CommonAI.Zone.Helper;
  16. namespace XmdsCommonSkill.Plugin.Buffs
  17. {
  18. /// <summary>
  19. /// 击杀创建法术
  20. /// </summary>
  21. public class XmdsBuff_KillCreateSpeel : XmdsBuffBase
  22. {
  23. public XmdsSpellID spellId = 0;
  24. private int killCount = 0;
  25. private int mHandleUUID = 0;
  26. public override int GetAbilityID()
  27. {
  28. return (int)XmdsCommon.Plugin.XmdsBuffProperties.XmdsBuffAbility.KillCreateSpeel;
  29. }
  30. public override void CopyTo(UnitBuff other)
  31. {
  32. var ret = other as XmdsBuff_KillCreateSpeel;
  33. ret.spellId = this.spellId;
  34. base.CopyTo(other);
  35. }
  36. protected override void OnBuffBegin(XmdsCommonServer.Plugin.XmdsVirtual hitter, XmdsCommonServer.Plugin.XmdsVirtual attacker, InstanceUnit.BuffState state)
  37. {
  38. //注册监听.
  39. killCount = 0;
  40. mHandleUUID = hitter.RegistOnHitOther(OnHandleHitOther, null);
  41. }
  42. private float OnHandleHitOther(float damage, XmdsVirtual hitted, XmdsVirtual attacker, AttackSource source,
  43. ref XmdsVirtual.AtkResult result, DamageType damageType, GameSkill skill, ref bool isEndDispatch)
  44. {
  45. if(hitted.mUnit.CurrentHP < (int)damage)
  46. {
  47. attacker.mUnit.Parent.unitLaunchSpell(XmdsSkillType.none, attacker.mUnit,
  48. ComSpellTemplate.Instance().GetSpellByID(this.spellId),
  49. attacker.mUnit.X, attacker.mUnit.Y, attacker.mUnit.ID, null, ++killCount);
  50. }
  51. return damage;
  52. }
  53. protected override void OnBuffEnd(XmdsCommonServer.Plugin.XmdsVirtual hitter, InstanceUnit.BuffState state, bool replace)
  54. {
  55. //取消监听.
  56. hitter.UnRegistOnHitOther(mHandleUUID);
  57. }
  58. protected override void OnDispose()
  59. {
  60. base.OnDispose();
  61. }
  62. }
  63. }