using CommonAI.Zone; using CommonAI.Zone.Instance; using CommonLang; using XmdsCommon.Plugin; using XmdsCommonServer.Plugin; using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator; using XmdsCommonServer.XLS.Data; using XmdsCommonSkill.Plugin.Buffs; namespace XmdsCommonSkill.Plugin.FunctionEvent { /// /// 单挑王事件.首次恢复最大血量5%,之后每秒回复1%,持续5秒. /// public class XmdsBattleFunctionEvent_10000 : XmdsBattleFunctionEventBase { public static readonly int EventID = 10000; private int BuffValue_1 = 0; // 一次性回血量:5%. private int BuffValue_2 = 0; // 后续每秒回血量:1%. private int Buff_LifeTime = 0; // buff持续时间. public override int GetEventID() { return EventID; } protected override bool OnInit() { BuffConfig config = base.GetBuffConfig(); BuffValue_1 = System.Int32.Parse(config.ValueSet1); BuffValue_2 = System.Int32.Parse(config.ValueSet2); Buff_LifeTime = System.Int32.Parse(config.ValueSet3); return XmdsBuffFactory.GetInstance().XmdsBuffPackTest(base.mBuff_ID, XmdsBuffProperties.XmdsBuffAbility.AddHP); } protected override void OnTriggerEvent(XmdsVirtual target, XmdsVirtual sender) { //首次回血量计算. int hp1 = CUtils.CastInt(BuffValue_1 * XmdsUnitProp.PER * target.MirrorProp.MaxHP); //执行首次回血. target.AddHP(hp1, null, true); //每秒回血计算. int hp2 = CUtils.CastInt(BuffValue_2 * XmdsUnitProp.PER * target.MirrorProp.MaxHP); XmdsBuffPack pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(base.mBuff_ID); XmdsBuff_AddHP buff = (XmdsBuff_AddHP)pack.GetXmdsBuff(XmdsBuffProperties.XmdsBuffAbility.AddHP); buff.ChangeValue = hp2; BuffTemplate bt = pack.mBuffTemplate; bt.IsHarmful = false; bt.LifeTimeMS = Buff_LifeTime; bt.FirstTimeEnable = false; (bt.Properties as XmdsBuffProperties).Dispelled = false; pack.BindTemplateAndDispose(); target.mUnit.AddBuff(bt, sender.mUnit); } } }