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

namespace XmdsCommonSkill.Plugin.Skills.Magic
{
	/// <summary>
	/// 法师三技能 3- 2(修改(2020.6.3. 15:00 )->命中减少冷却时间)
	/// </summary>
	public class Magic_310320 : Magic_310310
	{
        /// 技能ID.
        private static int ID = 310320;
		
		// 命中减少冷却时间
		public XmdsSkillValue mValueSet3;

		//
		protected SkillState BindSkill;
		protected bool IsFirstHit = true;

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

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

		protected virtual int OnLaunchSkillOver(GameSkill info, XmdsCommonServer.Plugin.XmdsVirtual launcher,
			CommonAI.Zone.Instance.InstanceUnit.SkillState skill)
		{
			this.IsFirstHit = true;
			this.BindSkill = skill;
			return 0;
		}

		protected override void OnSkillLogicEvent(BattleParams param)
		{
			if (this.IsFirstHit && BindSkill != null)
			{
				this.IsFirstHit = false;
				//System.Console.WriteLine("减少cd: " + mValueSet3.GetValue(param.GameSkill.TalentSkillLevel2) * 4);
				BindSkill.setTriggerDecreaseTime(mValueSet3.GetValue(param.GameSkill.TalentSkillLevel2), true);
			}
		}

		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 mValueSet5, XmdsSkillData.XmdsSkillDataKey.ValueSet5);
			InitData(data, out mValueSet7, XmdsSkillData.XmdsSkillDataKey.ValueSet7);
		}
    }
}