using System; using System.Collections.Generic; using System.Linq; using System.Text; using CommonAI.Zone; using XmdsCommon.Plugin; using XmdsCommonServer.Plugin; using XmdsCommonSkill.Plugin.Buffs; using CommonAI.Zone.Instance; using XmdsCommonServer.XLS.Data; using CommonAI.Data; namespace XmdsCommonSkill.Plugin.Skills.Assassin { /// <summary> /// 闷棍: 偷袭敌人,造成x倍物攻伤害。若敌人在非战斗状态中,将被瘫痪x秒;若敌人在战斗状态中,则只有x%概率会被瘫痪. /// </summary> public class Assassin_202040 : XmdsSkillBase { public static int ID = 202040; /// 伤害倍数. public static XmdsSkillValue DP_1; public static int Buff_1 = (int)XmdsBuffBase.XmdsBuffList.TAN_HUAN; /// 战斗状态敌人,触发瘫痪几率(配表,可升级). public static XmdsSkillValue Buff_Rate_Up; public override int SkillID { get { return ID; } } protected override void OnSkillDamagePerEvent(BattleParams param) { int ret = CalDamagePer(DP_1, param.GameSkill.SkillLevel); param.SkillDamagePer = ret; } protected override void OnSkillLogicEvent(BattleParams param) { bool f = true; //战斗状态有概率被瘫痪. if (param.Hitter.CombatState != BattleStatus.None) { f = param.Attacker.RandomPercent(this.GetTargetFormulaValue(param.GameSkill.SkillLevel, Buff_Rate_Up)); } //非战斗状态一定被瘫痪. if (f) { BuffTemplate bt = param.Attacker.GetRegistBuff(Buff_1); bt.LifeTimeMS = 5000; param.Hitter.mUnit.AddBuff(Buff_1, param.Attacker.mUnit); } } protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template) { XmdsBuffPack pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_1); BuffTemplate bt = pack.mBuffTemplate; if (bt != null) { bt.IsHarmful = true; pack.BindTemplateAndDispose(); unit.RegistSendBuff(bt); } base.OnInit(info, unit, ref template); } protected override void OnInitSkillParam() { XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID); InitData(data, out DP_1, XmdsSkillData.XmdsSkillDataKey.DmgRate); InitData(data, out Buff_Rate_Up, XmdsSkillData.XmdsSkillDataKey.ValueSet); } } }