using CommonAI.Zone; using CommonLang; using XmdsCommon.Plugin; using XmdsCommonServer.Plugin; using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator; using XmdsCommonServer.XLS.Data; using XmdsCommonSkill.Plugin.Buffs; namespace XmdsCommonSkill.Plugin.Skills.Monster { /// ///被魔化的艾克 - 定时炸弹:对一个敌人释放黑暗魔法,使其在5秒后爆炸,对敌人和其身边5米内的敌人造成敌人生命x%的魔法伤害. /// public class Monster_10330402 : XmdsSkillBase { public static int ID = 10330402; /// 伤害倍数. public static XmdsSkillValue DamageHPPer; /// 定时炸弹BUFFID.. public static int Buff_ID = (int)XmdsBuffBase.XmdsBuffList.DSZD_MONSTER; public override int SkillID {get{ return ID; }} protected override void OnSkillLogicEvent(BattleParams param) { // +debuff. if (param.AtkProp.DamagePerID == 1) { param.UseDamageType = CommonAI.Data.DamageType.None; XmdsBuffBase b3 = (XmdsBuffBase)param.Attacker.GetRegisBuffVirtual(Buff_ID); b3.SetOnHitCallBack(param.GameSkill, OnXmdsBuffHitEvent); param.Hitter.mUnit.AddBuff(Buff_ID, param.Attacker.mUnit); } else if (param.AtkProp.DamagePerID == 2) { param.UseDamageType = CommonAI.Data.DamageType.Damage; int d = CUtils.CastInt(GetTargetFormulaValue(param.GameSkill.SkillLevel, DamageHPPer) / XmdsDamageCalculator.PERER * param.Hitter.MirrorProp.MaxHP); d = XmdsDamageCalculator.GetDamage(d, param.Attacker, param.Hitter, param.Source); param.Hitter.AddHP(-d); } } private void OnXmdsBuffHitEvent(BattleParams param) { //重新 this.OnDoSkillHitProcess(ref param); } protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template) { XmdsBuffPack pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_ID); BuffTemplate bt = pack.mBuffTemplate; pack.BindTemplateAndDispose(); bt.IsHarmful = true; unit.RegistSendBuff(bt); } protected override void OnInitSkillParam() { XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID); InitData(data, out DamageHPPer, XmdsSkillData.XmdsSkillDataKey.ValueSet); } } }