XmdsBuff_Bleed.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using CommonAI.Zone;
  2. using CommonAI.Zone.Instance;
  3. using CommonLang;
  4. using XmdsCommon.Plugin;
  5. using XmdsCommonServer.Plugin;
  6. using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator;
  7. using XmdsCommonServer.Plugin.XmdsSkillTemplate.Skills;
  8. namespace XmdsCommonSkill.Plugin.Buffs
  9. {
  10. public class XmdsBuff_Bleed : XmdsBuffBase
  11. {
  12. /// <summary>
  13. ///攻击值
  14. /// </summary>
  15. public int ChangeValue = 0;
  16. //流血加深系数
  17. public float deepValue = 1.0f;
  18. //伤害加深
  19. private bool damageDeepByOverlayer = false;
  20. private int Overlayer = 1;
  21. public override int GetAbilityID()
  22. {
  23. return (int)XmdsCommon.Plugin.XmdsBuffProperties.XmdsBuffAbility.Bleed;
  24. }
  25. public override void CopyTo(UnitBuff other)
  26. {
  27. var ret = other as XmdsBuff_Bleed;
  28. ret.ChangeValue = this.ChangeValue;
  29. ret.deepValue = this.deepValue;
  30. base.CopyTo(other);
  31. }
  32. protected override void OnBindTemplate(ref BuffTemplate buffTemplate)
  33. {
  34. //DOT类技能首帧无效.
  35. base.OnBindTemplate(ref buffTemplate);
  36. }
  37. protected override void OnBuffBegin(XmdsCommonServer.Plugin.XmdsVirtual hitter, XmdsCommonServer.Plugin.XmdsVirtual attacker, InstanceUnit.BuffState state)
  38. {
  39. this.Overlayer = state.OverlayLevel;
  40. }
  41. protected override void OnBuffEnd(XmdsCommonServer.Plugin.XmdsVirtual hitter, InstanceUnit.BuffState state, bool replace)
  42. {
  43. }
  44. protected override int OnBuffHit(XmdsVirtual hitter,
  45. XmdsVirtual attacker, CommonAI.Zone.Formula.AttackSource source,
  46. ref XmdsVirtual.AtkResult result)
  47. {
  48. if (ChangeValue != 0)
  49. {
  50. double damageValue = XmdsUnitProp.PER * this.ChangeValue;
  51. // 伤害加深逻辑
  52. if(this.damageDeepByOverlayer && this.Overlayer > 0)
  53. {
  54. for(int i = 0; i < this.Overlayer; i++)
  55. {
  56. damageValue = damageValue * deepValue;
  57. }
  58. }
  59. //造成伤害.
  60. //int damage = CUtils.CastInt(base.OnBuffHit(hitter, attacker, source, ref result) * damageValue);
  61. return ChangeValue;
  62. }
  63. return base.OnBuffHit(hitter, attacker, source, ref result);
  64. }
  65. }
  66. }