using CommonAI.Zone;
using CommonAI.Zone.Helper;
using CommonAI.Zone.Instance;
using XmdsCommon.Plugin;
using XmdsCommonServer.Plugin;
using XmdsCommonServer.XLS.Data;
using XmdsCommonSkill.Plugin.Buffs;

namespace XmdsCommonSkill.Plugin.Skills.Magic
{
    /// 二技能: 2-3(被命中敌人被禁锢1S; 自身对其伤害提高20%,持续3S)
    public class Magic_310230 : Magic_310220
	{
        private static int ID = 310230;

		private static int Buff_1 = (int)XmdsBuffBase.XmdsBuffList.ATTACK_UP_FS_2_3;
		private static int Buff_2 = (int)XmdsBuffBase.XmdsBuffList.JINGU_FS_2_3_1;

        protected XmdsSkillValue mValueSet4;
		//禁锢时间
		protected XmdsSkillValue mValueSet5;

		public override int SkillID { get { return ID; } }

		protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template)
		{
			base.OnInit(info, unit, ref template);

			//法术发送者对其造成伤害提高20%
			XmdsBuffPack pack1 = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_1);
			XmdsBuff_Brand_2 buff1 = (XmdsBuff_Brand_2)pack1.GetXmdsBuff(XmdsBuffProperties.XmdsBuffAbility.Brand_2);
			buff1.BuffValue = mValueSet4.GetValue(info.TalentSkillLevel3, 1);

			BuffTemplate bt1 = pack1.mBuffTemplate;	
			bt1.LifeTimeMS = mValueSet4.GetValue(info.TalentSkillLevel3, 2);
			pack1.BindTemplateAndDispose();
			unit.RegistSendBuff(bt1);

			//禁锢buf
			XmdsBuffPack pack2 = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_2);
			BuffTemplate bt2 = pack2.mBuffTemplate;
			bt2.IsHarmful = true;
			bt2.LifeTimeMS = mValueSet5.GetValue(info.TalentSkillLevel3);
			pack2.BindTemplateAndDispose();
			unit.RegistSendBuff(bt2);		
		}

        protected override void OnSkillDataChange(GameSkill gs, XmdsVirtual unit)
        {
			base.OnSkillDataChange(gs, unit);

			var buff = unit.GetRegisBuffVirtual(Buff_1) as XmdsBuff_Brand_2;
            buff.BuffValue = mValueSet4.GetValue(gs.TalentSkillLevel3, 1);

			var bt1 = unit.GetRegistBuff(Buff_1);
			bt1.LifeTimeMS = mValueSet4.GetValue(gs.TalentSkillLevel3, 2);

			var bt2 = unit.GetRegistBuff(Buff_2);
			bt2.LifeTimeMS = mValueSet5.GetValue(gs.TalentSkillLevel3);
		}

        protected override void OnSkillLogicEvent(BattleParams param)
		{
            //禁锢
			param.Hitter.mUnit.AddBuff(Buff_2, param.Attacker.mUnit);
            //攻击增伤buff
			param.Hitter.mUnit.AddBuff(Buff_1, param.Attacker.mUnit);
		}

		protected override void OnInitConfig()
        {
            XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
            InitData(data, out mValueSet1, XmdsSkillData.XmdsSkillDataKey.ValueSet);
            InitData(data, out mValueSet2, XmdsSkillData.XmdsSkillDataKey.ValueSet2);
            InitData(data, out mValueSet3, XmdsSkillData.XmdsSkillDataKey.ValueSet3);
            InitData(data, out mValueSet4, XmdsSkillData.XmdsSkillDataKey.ValueSet4);

			InitData(data, out mValueSet5, XmdsSkillData.XmdsSkillDataKey.ValueSet5);

			//扩展
			InitData(data, out mValueSet8, XmdsSkillData.XmdsSkillDataKey.ValueSet8);
		}
    }
}