Assassin_202050.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. 
  2. using CommonAI.Zone;
  3. using XmdsCommon.Plugin;
  4. using XmdsCommonServer.Plugin;
  5. using XmdsCommonSkill.Plugin.Buffs;
  6. using XmdsCommonServer.XLS.Data;
  7. using CommonAI.Zone.Instance;
  8. namespace XmdsCommonSkill.Plugin.Skills.Assassin
  9. {
  10. /// <summary>
  11. /// 潜伏: 使隐身的持续时间延长到X秒,且受到伤害时不会取消隐身状态.
  12. /// </summary>
  13. public class Assassin_202050 : Assassin_200050
  14. {
  15. public static new int ID = 202050;
  16. public static new int Buff_ID = (int)XmdsBuffBase.XmdsBuffList.YIN_SHEN2;
  17. public override int SkillID { get { return ID; } }
  18. protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template)
  19. {
  20. //施放技能监听.
  21. unit.RegistTryLaunchSkillEvent(OnTryLaunchSkillEventHandle, info, true);
  22. //技能技能初始化,常用作为修改BUFF能力等等.
  23. XmdsBuffPack pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_ID);
  24. XmdsBuff_Stealth buff = (XmdsBuff_Stealth)pack.GetXmdsBuff(XmdsBuffProperties.XmdsBuffAbility.Stealth);
  25. buff.ChangePercent = -GetTargetFormulaValue(info.SkillLevel, Buff_Value);
  26. BuffTemplate bt = pack.mBuffTemplate;
  27. bt.IsHarmful = false;
  28. pack.BindTemplateAndDispose();
  29. unit.RegistSendBuff(bt);
  30. //避免多余的监听浪费性能,不再调用父类的onInit方法.
  31. }
  32. protected override void OnSkillLogicEvent(BattleParams param)
  33. {
  34. BuffTemplate bt = param.Attacker.GetRegistBuff(Buff_ID);
  35. bt.LifeTimeMS = 5000;
  36. param.Attacker.mUnit.AddBuff(Buff_ID, param.Attacker.mUnit);
  37. }
  38. protected override void OnInitSkillParam()
  39. {
  40. base.OnInitSkillParam();
  41. }
  42. protected override bool OnTryLaunchSkillEventHandle(GameSkill skillInfo, ref InstanceUnit.SkillState skill,
  43. XmdsVirtual launcher, ref InstanceUnit.LaunchSkillParam param)
  44. {
  45. //只要施放的不是隐身和疾跑技能,其余全部消除.
  46. if (skill.Data.ID != SkillID
  47. && (skill.Data.ID != Assassin_200060.ID && skill.Data.ID != Assassin_201060.ID && skill.Data.ID != Assassin_202060.ID))
  48. {
  49. launcher.mUnit.removeBuff(Buff_ID);
  50. }
  51. return true;
  52. }
  53. }
  54. }