using CommonAI.Zone; using XmdsCommon.Plugin; using XmdsCommonServer.Plugin; using XmdsCommonSkill.Plugin.Buffs; using XmdsCommonServer.XLS.Data; using CommonAI.Zone.Instance; namespace XmdsCommonSkill.Plugin.Skills.Assassin { /// /// 潜伏: 使隐身的持续时间延长到X秒,且受到伤害时不会取消隐身状态. /// public class Assassin_202050 : Assassin_200050 { public static new int ID = 202050; public static new int Buff_ID = (int)XmdsBuffBase.XmdsBuffList.YIN_SHEN2; public override int SkillID { get { return ID; } } protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template) { //施放技能监听. unit.RegistTryLaunchSkillEvent(OnTryLaunchSkillEventHandle, info, true); //技能技能初始化,常用作为修改BUFF能力等等. XmdsBuffPack pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_ID); XmdsBuff_Stealth buff = (XmdsBuff_Stealth)pack.GetXmdsBuff(XmdsBuffProperties.XmdsBuffAbility.Stealth); buff.ChangePercent = -GetTargetFormulaValue(info.SkillLevel, Buff_Value); BuffTemplate bt = pack.mBuffTemplate; bt.IsHarmful = false; pack.BindTemplateAndDispose(); unit.RegistSendBuff(bt); //避免多余的监听浪费性能,不再调用父类的onInit方法. } protected override void OnSkillLogicEvent(BattleParams param) { BuffTemplate bt = param.Attacker.GetRegistBuff(Buff_ID); bt.LifeTimeMS = 5000; param.Attacker.mUnit.AddBuff(Buff_ID, param.Attacker.mUnit); } protected override void OnInitSkillParam() { base.OnInitSkillParam(); } protected override bool OnTryLaunchSkillEventHandle(GameSkill skillInfo, ref InstanceUnit.SkillState skill, XmdsVirtual launcher, ref InstanceUnit.LaunchSkillParam param) { //只要施放的不是隐身和疾跑技能,其余全部消除. if (skill.Data.ID != SkillID && (skill.Data.ID != Assassin_200060.ID && skill.Data.ID != Assassin_201060.ID && skill.Data.ID != Assassin_202060.ID)) { launcher.mUnit.removeBuff(Buff_ID); } return true; } } }