using CommonAI.Zone;
using CommonAI.Zone.Instance;
using XmdsCommon.Plugin;
using XmdsCommonServer.Plugin;
using XmdsCommonServer.XLS.Data;

namespace XmdsCommonSkill.Plugin.Skills.Assassin
{
    /// <summary>
    /// 强化剑刃: 剑刃乱舞的暴击率提高x%.
    /// </summary>
    public class Assassin_201040 : Assassin_200040
    {
        /// 技能ID.
        public static new int ID = 201040;

        /// 暴击率上升.
        public static XmdsSkillValue CritAddPer;

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

        protected override void OnRegistEvent()
        {
            this.RegistEvent(EventType.CritRateAdd, OnCritAddEvent);
            base.OnRegistEvent();
        }

        private void OnCritAddEvent(BattleParams param)
        {
            param.CritAdd = this.GetTargetFormulaValue(param.GameSkill.TalentSkillLevel1, CritAddPer);
        }

        protected override void OnStateEndEvent(XmdsVirtual owner, InstanceUnit.StateSkill state, GameSkill gs)
        {
            //技能结束,BUFF结束.
            if (state.SkillData.ID == ID)
            {
                owner.mUnit.removeBuff(TargetBuffID, InstanceUnit.BuffState.EndResult_ByCode);
            }
        }

        protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template)
        {
            //注册技能结束监听.
            unit.RegistStateSkillEndEvent(OnStateEndEvent, info, false);
        }

        protected override void OnInitSkillParam()
        {
            base.OnInitSkillParam();
            XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
            InitData(data, out CritAddPer, XmdsSkillData.XmdsSkillDataKey.ValueSet);
        }
    }
}