Hunter_402010.cs 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. 
  2. using CommonAI.Zone;
  3. using XmdsCommon.Plugin;
  4. using XmdsCommonSkill.Plugin.Buffs;
  5. using XmdsCommonServer.Plugin;
  6. using XmdsCommonServer.Plugin.XmdsSkillTemplate.Skills;
  7. using XmdsCommonServer.XLS.Data;
  8. using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator;
  9. using CommonLang;
  10. namespace XmdsCommonSkill.Plugin.Skills.Hunter
  11. {
  12. /// <summary>
  13. /// 重伤: 使自动射击在命中敌人时,x%概率造成敌人受伤,x秒内总共流失对方x%生命,流血期间敌人受到的治疗效果降低x%.
  14. /// </summary>
  15. public class Hunter_402010 : Hunter_400010
  16. {
  17. public static new int ID = 402010;
  18. /// 点燃BUFFID.
  19. public static int Buff_ID = (int)XmdsBuffBase.XmdsBuffList.ZHONG_SHANG;
  20. public static XmdsSkillValue BuffDamageHP;
  21. /// BUFF伤害 - 治疗效果下降.
  22. public static XmdsSkillValue BuffDamageTreat;
  23. public override int SkillID { get { return ID; } }
  24. protected override void OnSkillLogicEvent(BattleParams param)
  25. {
  26. // 流血
  27. UnitBuff ub = param.Attacker.GetRegisBuffVirtual(Buff_ID, 0);
  28. if (ub != null)
  29. {
  30. XmdsBuff_Bleed buff = ub as XmdsBuff_Bleed;
  31. int bb = this.GetTargetFormulaValue(param.Attacker.SkillHelper.GetGameSkill(SkillID).TalentSkillLevel1, BuffDamageHP);
  32. bb = CUtils.CastInt(bb / XmdsDamageCalculator.PERER * param.Hitter.MirrorProp.MaxHP);
  33. buff.ChangeValue = bb / 5;
  34. }
  35. // 治疗效果
  36. XmdsBuff_PropChange bf = param.Attacker.GetRegisBuffVirtual(Buff_ID, 1) as XmdsBuff_PropChange;
  37. bf.CurentChangeType = XmdsVirtual.UnitAttributeType.HealEffect;
  38. bf.IsPercent = true;
  39. bf.CurrentValue = -this.GetTargetFormulaValue(param.GameSkill.TalentSkillLevel1, BuffDamageTreat);
  40. // 设置buff时长
  41. BuffTemplate bt = param.Attacker.GetRegistBuff(Buff_ID);
  42. bt.LifeTimeMS = 5000;
  43. // 上buff
  44. param.Hitter.mUnit.AddBuff(Buff_ID, param.Attacker.mUnit);
  45. }
  46. /// <summary>
  47. /// 初始化.
  48. /// </summary>
  49. /// <param name="info"></param>
  50. /// <param name="unit"></param>
  51. /// <param name="template"></param>
  52. protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template)
  53. {
  54. XmdsBuffPack pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_ID);
  55. XmdsBuff_Bleed buff = (XmdsBuff_Bleed)pack.GetXmdsBuff(XmdsBuffProperties.XmdsBuffAbility.Bleed);
  56. BuffTemplate bt = pack.mBuffTemplate;
  57. bt.IsHarmful = true;
  58. pack.BindTemplateAndDispose();
  59. unit.RegistSendBuff(bt);
  60. base.OnInit(info, unit, ref template);
  61. }
  62. protected override void OnInitSkillParam()
  63. {
  64. base.OnInitSkillParam();
  65. XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
  66. InitData(data, out BuffDamageHP, XmdsSkillData.XmdsSkillDataKey.ValueSet);
  67. InitData(data, out BuffDamageTreat, XmdsSkillData.XmdsSkillDataKey.ValueSet2);
  68. }
  69. }
  70. }