Warrior_110200.cs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. using CommonAI.Data;
  2. using CommonAI.Zone;
  3. using CommonAI.Zone.Formula;
  4. using CommonAI.Zone.Helper;
  5. using CommonAI.Zone.Instance;
  6. using System;
  7. using XmdsCommon.Plugin;
  8. using XmdsCommonServer.Plugin;
  9. using XmdsCommonServer.XLS.Data;
  10. using XmdsCommonSkill.Plugin.Buffs;
  11. namespace XmdsCommonSkill.Plugin.Skills.Warrior
  12. {
  13. /// <summary>
  14. /// 二技能: 2 基类
  15. /// 向指定区域冲击,对路径上敌人造成N1%攻击加成伤害,位移终点落地造成一次范围N2%攻击加成伤害,减速N3%,减速持续T秒(身体圆半径1-1.5,终点圆,半径1.5-2,跳跃距离6.5),在整个技能动作帧期间
  16. /// 被打到能免伤N%(持续T秒)并触发怒气提升一次,提升N6 (动作会调整为前冲到指定位置的方式,动作变为二段式,现在的跳跃表现一般)
  17. /// </summary>
  18. public class Warrior_110200 : XmdsSkillBase
  19. {
  20. private static readonly int ID = 110200;
  21. public override int SkillID { get { return ID; } }
  22. protected static readonly int Buff_ID = (int)XmdsBuffBase.XmdsBuffList.ZS_SPEEDDOWN_2;
  23. //释放动作期间免伤
  24. protected static readonly int Buff_INGORE_DAMAGE = (int)XmdsBuffBase.XmdsBuffList.ZS_INGORE_DAMAGE;
  25. /// 伤害倍数: 固定值_百分比
  26. protected XmdsSkillValue mValueSet1;
  27. // 基础-减速数值
  28. protected XmdsSkillValue mValueSet5;
  29. //释放过程中免伤
  30. protected XmdsSkillValue mValueSet8;
  31. //
  32. protected long mSkillAngerTime;
  33. protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template)
  34. {
  35. // Buff修改
  36. var pack2 = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_ID);
  37. var buff2 = pack2.GetXmdsBuff(XmdsBuffProperties.XmdsBuffAbility.MoveSpeedDown) as XmdsBuff_MoveSpeedDown;
  38. buff2.ChangePercent = -mValueSet5.GetValue(GetBaseSpeedDownLv(info), 1);
  39. var bt2 = pack2.mBuffTemplate;
  40. bt2.LifeTimeMS = mValueSet5.GetValue(GetBaseSpeedDownLv(info), 2);
  41. bt2.IsHarmful = true;
  42. pack2.BindTemplateAndDispose();
  43. unit.RegistSendBuff(bt2);
  44. //注册免伤buff
  45. XmdsBuffPack pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_INGORE_DAMAGE);
  46. XmdsBuff_PropChange buff = (XmdsBuff_PropChange)pack.GetXmdsBuff(0);
  47. buff.CurentChangeType = XmdsVirtual.UnitAttributeType.AllDmgReduce;
  48. buff.CurrentValue = mValueSet8.GetValue(info.SkillLevel, 2); // 免伤比例
  49. buff.IsPercent = true;
  50. BuffTemplate bt = pack.mBuffTemplate;
  51. bt.IsHarmful = true;
  52. bt.LifeTimeMS = mValueSet8.GetValue(info.SkillLevel, 1);
  53. pack.BindTemplateAndDispose();
  54. unit.RegistSendBuff(bt);
  55. unit.RegistLaunchSkillOver(OnLaunchSkillOver, info);
  56. unit.RegistOnHitDamage(OnHandleOnHitDamage, info, true);
  57. }
  58. private int OnLaunchSkillOver(GameSkill info, XmdsCommonServer.Plugin.XmdsVirtual launcher, CommonAI.Zone.Instance.InstanceUnit.SkillState skill)
  59. {
  60. launcher.mUnit.AddBuff(Buff_INGORE_DAMAGE);
  61. mSkillAngerTime = CommonLang.CUtils.localTimeMS + mValueSet8.GetValue(info.SkillLevel, 1);
  62. return 0;
  63. }
  64. //单位受击
  65. private float OnHandleOnHitDamage(float damage, XmdsVirtual hitter, XmdsVirtual attacker, AttackSource source,
  66. ref XmdsVirtual.AtkResult result, DamageType damageType, GameSkill skill, ref bool isEndDispatch)
  67. {
  68. //被打到,增加怒气
  69. if(CommonLang.CUtils.localTimeMS < mSkillAngerTime && skill != null)
  70. {
  71. hitter.Talent__Add(mValueSet8.GetValue(skill.SkillLevel, 3));
  72. }
  73. return damage;// * (XmdsDamageCalculator.PERER - buff.CurrentValue) * XmdsUnitProp.PER;
  74. }
  75. protected override void OnSkillDataChange(GameSkill gs, XmdsVirtual unit)
  76. {
  77. base.OnSkillDataChange(gs, unit);
  78. var buff = unit.GetRegisBuffVirtual(Buff_ID) as XmdsBuff_MoveSpeedDown;
  79. buff.ChangePercent = mValueSet5.GetValue(GetBaseSpeedDownLv(gs), 1);
  80. var bt = unit.GetRegistBuff(Buff_ID);
  81. bt.LifeTimeMS = mValueSet5.GetValue(GetBaseSpeedDownLv(gs), 2);
  82. }
  83. protected override void OnSkillDamagePerEvent(BattleParams param)
  84. {
  85. param.SkillDamageAdd = mValueSet1.GetValue(param.GameSkill.SkillLevel, param.AtkProp.DamagePerID);
  86. param.SkillDamagePer = mValueSet1.GetValueExt(param.GameSkill.SkillLevel, param.AtkProp.DamagePerID);
  87. }
  88. protected virtual int GetBaseSpeedDownLv(GameSkill info)
  89. {
  90. return info.SkillLevel;
  91. }
  92. protected override void OnSkillLogicEvent(BattleParams param)
  93. {
  94. //第二段落地,造成减速
  95. if(param.AtkProp.DamagePerID == 2)
  96. {
  97. //命中,加减速buff
  98. param.Hitter.mUnit.AddBuff(Buff_ID, param.Attacker.mUnit);
  99. }
  100. }
  101. protected override void OnInitConfig()
  102. {
  103. XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
  104. InitData(data, out mValueSet1, XmdsSkillData.XmdsSkillDataKey.ValueSet);
  105. // 基础-减速数值
  106. InitData(data, out mValueSet5, XmdsSkillData.XmdsSkillDataKey.ValueSet5);
  107. //释放过程中免伤
  108. InitData(data, out mValueSet8, XmdsSkillData.XmdsSkillDataKey.ValueSet8);
  109. }
  110. }
  111. }