using CommonAI.Zone; using CommonAI.Zone.Formula; using XmdsCommon.Plugin; using XmdsCommonServer.Plugin; using XmdsCommonSkill.Plugin.Buffs; using XmdsCommonServer.XLS.Data; using XmdsCommonSkill.Plugin.Skills.Hunter; using XmdsCommonSkill.Plugin.Skills; using CommonAI.Zone.Instance; namespace XmdsCommonSkill.Plugin.PassiveSkills { /// /// 强化分裂箭:使分裂箭附带减速效果,使被命中的敌人移动速度降低x%,持续x秒. /// 但分裂箭的冷却时间延长为x秒. /// public class Hunter_402020 : Hunter_400020 { public static new int ID = 402020; public static int Buff_ID = (int)XmdsBuffBase.XmdsBuffList.JIAN_SU; /// BUFF伤害. public static XmdsSkillValue Buff_Value; /// CD时间. public static XmdsSkillValue CD_TimeAdd; public override int SkillID { get { return ID; } } protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template) { base.OnInit(info, unit, ref template); XmdsBuffPack pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_ID); BuffTemplate bt = pack.mBuffTemplate; bt.IsHarmful = true; pack.BindTemplateAndDispose(); unit.RegistSendBuff(bt); unit.RegistTryLaunchSkillEvent(OnTryLaunchSkillEventHandle, info); } private bool OnTryLaunchSkillEventHandle(GameSkill skillInfo, ref InstanceUnit.SkillState skill, XmdsVirtual launcher, ref InstanceUnit.LaunchSkillParam param) { if (skill.ID == this.SkillID) { //修改这个技能的CD时间. int t = this.GetTargetFormulaValue(launcher.SkillHelper.GetGameSkill(SkillID).SkillLevel, CD_TimeAdd); skill.SetDecreaseTotalTimeMS(-t); } return true; } protected override void OnSkillLogicEvent(BattleParams param) { XmdsBuff_MoveSpeedDown buff = (XmdsBuff_MoveSpeedDown)param.Attacker.GetRegisBuffVirtual(Buff_ID); buff.ChangePercent = -this.GetTargetFormulaValue(param.GameSkill.TalentSkillLevel1, Buff_Value); BuffTemplate bt = param.Attacker.GetRegistBuff(Buff_ID); bt.LifeTimeMS = 5000; param.Hitter.mUnit.AddBuff(Buff_ID, param.Attacker.mUnit); base.OnSkillLogicEvent(param); } protected override void OnInitSkillParam() { base.OnInitSkillParam(); XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID); InitData(data, out Buff_Value, XmdsSkillData.XmdsSkillDataKey.ValueSet); InitData(data, out CD_TimeAdd, XmdsSkillData.XmdsSkillDataKey.ValueSet2); } } }