using CommonAI.Zone;
using CommonLang;
using System;
using XmdsCommon.Plugin;
using XmdsCommonServer.Plugin;
using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator;
using XmdsCommonServer.XLS.Data;
using XmdsCommonSkill.Plugin.Buffs;

namespace XmdsCommonSkill.Plugin.FunctionEvent
{
	/// <summary>
	/// 流血(每秒损失最大生命值的<$5>%,持续<$6>秒,不可清除)
	/// </summary>
	public class XmdsBattleFunctionEvent_10021 : XmdsBattleFunctionEventBase
    {
        public static readonly int EventID = 10021;

		private int BuffValue_1 = 0;         // 
		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);
			Buff_LifeTime = System.Int32.Parse(config.ValueSet2);

            return XmdsBuffFactory.GetInstance().XmdsBuffPackTest(base.mBuff_ID, XmdsBuffProperties.XmdsBuffAbility.Bleed);
        }

        protected override void OnTriggerEvent(XmdsVirtual target, XmdsVirtual sender)
        {
			XmdsBuffPack pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(base.mBuff_ID);
			var buff = (XmdsBuff_Bleed)pack.GetXmdsBuff(XmdsBuffProperties.XmdsBuffAbility.Bleed);
			buff.ChangeValue = Math.Max(1, CUtils.CastInt(target.mUnit.MaxHP * XmdsUnitProp.PER * BuffValue_1));

			BuffTemplate bt = pack.mBuffTemplate;
			bt.IsHarmful = false;
			bt.LifeTimeMS = Buff_LifeTime;
			(bt.Properties as XmdsBuffProperties).Dispelled = false;
			pack.BindTemplateAndDispose();

			target.mUnit.AddBuff(bt, sender.mUnit);
		}
    }
}