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.Warrior
{
	/// <summary>
	/// 五技能 5-5(烈焰风暴释放期间,移动速度提高n%,妖兽免伤上升n% 。)
	/// </summary>
	public class Warrior_110550 : Warrior_110540
	{
        private static readonly int ID = 110550;

        //减伤比例提升, 妖兽免伤
        protected XmdsSkillValue mValueSet3;
        private static readonly int Buff_ID_5_5 = (int)XmdsBuffBase.XmdsBuffList.IGNORCTRL_AND_SPPEDCHG;               // 剑刃风暴,免控buf

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

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

			// 释放剑刃风暴获得buff
			var pack1 = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_ID_5_5);
			var buff = (XmdsBuff_IgnorCtrlAndSpeedChg)pack1.GetXmdsBuff(0);
			buff.speedChange = mValueSet3.GetValue(info.TalentSkillLevel2, 1);           //移速提高万分之N

			//怪物免伤
			var buff2 = pack1.GetXmdsBuff(1) as XmdsBuff_PropChange;
			buff2.CurentChangeType = XmdsVirtual.UnitAttributeType.MonsterDamageReduce;
			buff2.CurrentValue = mValueSet3.GetValue(info.TalentSkillLevel2, 2);
			buff2.IsPercent = true;


			var bt1 = pack1.mBuffTemplate;
			bt1.IsHarmful = true;
			bt1.LifeTimeMS = DAMAGE_SPELL_TIME;          //时间由spell确定,所以写死
			pack1.BindTemplateAndDispose();
			unit.RegistSendBuff(bt1);
        }

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

			var buff1 = unit.GetRegisBuffVirtual(Buff_ID_5_5, 0) as XmdsBuff_IgnorCtrlAndSpeedChg;
			buff1.speedChange = mValueSet3.GetValue(gs.TalentSkillLevel2, 1);

			var buff2 = unit.GetRegisBuffVirtual(Buff_ID_5_5, 1) as XmdsBuff_PropChange;
			buff2.CurrentValue = mValueSet3.GetValue(gs.TalentSkillLevel2, 2);
		}

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

			//扩展配置
			InitData(data, out mValueSet5, XmdsSkillData.XmdsSkillDataKey.ValueSet5);
			InitData(data, out mValueSet6, XmdsSkillData.XmdsSkillDataKey.ValueSet6);
			InitData(data, out mValueSet8, XmdsSkillData.XmdsSkillDataKey.ValueSet8);
		}
    }
}