| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 | using Common.Utility.CombatEvent;using Fort23.Core;using GameLogic.Combat.CombatTool;using GameLogic.Player;using Utility;namespace GameLogic.Combat.Skill{    /// <summary>    /// 玄黄道 :每次使用功法时在当前位置留下一道属性印记,下一个放上来的功法如果和以前功法相生则功法效果提升50%,每次使用功法时都会治疗对应相生属性的伤势。(均衡性功法搭配,转盘改变,变为金、水、木、火、土)    /// </summary>    public class DS60103 : SkillBasic    {        protected Map<int, WuXingType> WuXingTypeMap = new Map<int, WuXingType>();        protected override void ProUseSkill()        {        }        protected override void ProInitSkill()        {            CombatEventManager.Instance.AddEventListener(CombatEventType.AddUseGongFa, AddUseGongFa);            CombatEventManager.Instance.AddEventListener(CombatEventType.SkillSlotsAlter, SkillSlotsAlter);        }        private void AddUseGongFa(IEventData iEventData)        {            AddUseGongFaEventData addUseGongFaEventData = iEventData as AddUseGongFaEventData;            if (addUseGongFaEventData.SkillBasic.CombatHeroEntity == CombatHeroEntity &&                addUseGongFaEventData.SkillBasic.SelfSkillConfig.SkillType == 1)            {                WuXingTypeMap.Add(addUseGongFaEventData.SkillSlots.index, addUseGongFaEventData.SkillBasic.wuXingType);                float v = SelfSkillConfig.effectValue[1];                switch (addUseGongFaEventData.SkillBasic.wuXingType)                {                    case WuXingType.Gold:                        CombatHeroEntity.CurrCombatHeroInfo.Metal_Injury -= v;                        break;                    case WuXingType.Wood:                        CombatHeroEntity.CurrCombatHeroInfo.Wood_Injury -= v;                        break;                    case WuXingType.Water:                        CombatHeroEntity.CurrCombatHeroInfo.Water_Injury -= v;                        break;                    case WuXingType.Fire:                        CombatHeroEntity.CurrCombatHeroInfo.Fire_Injury -= v;                        break;                    case WuXingType.Earth:                        CombatHeroEntity.CurrCombatHeroInfo.Earth_Injury -= v;                        break;                }                HuangDaoAlterSlotsEventData huangDaoAlterSlotsEventData = HuangDaoAlterSlotsEventData.Create();                huangDaoAlterSlotsEventData.WuXingType = addUseGongFaEventData.SkillBasic.wuXingType;                huangDaoAlterSlotsEventData.CombatHeroEntity = CombatHeroEntity;                huangDaoAlterSlotsEventData.index = addUseGongFaEventData.SkillSlots.index;                CombatEventManager.Instance.Dispatch(CombatEventType.HuangDaoAlterSlots, huangDaoAlterSlotsEventData);            }        }        private void SkillSlotsAlter(IEventData iEventData)        {            SkillSlotsAlterEventData skillSlotsAlterEventData = iEventData as SkillSlotsAlterEventData;            if (skillSlotsAlterEventData.SkillBasic != null &&                skillSlotsAlterEventData.SkillBasic.CombatHeroEntity == CombatHeroEntity &&                skillSlotsAlterEventData.SkillBasic.SelfSkillConfig.SkillType == 1)            {                if (WuXingTypeMap.TryGetValue(skillSlotsAlterEventData.SkillSlots.index, out WuXingType wuXingType))                {                    WuXingTypeMap.Remove(skillSlotsAlterEventData.SkillSlots.index);                    bool isSymbiosis = CombatCalculateTool.Instance.IsSymbiosis(                        skillSlotsAlterEventData.SkillBasic.wuXingType,                        wuXingType);                    if (isSymbiosis)                    {                        skillSlotsAlterEventData.SkillBasic.IntensifyingEffect(SelfSkillConfig.effectValue[0]);                    }                }            }        }        private void Finish()        {        }        protected override void ProCombatUpdate(float time)        {        }        protected override void ProDispose()        {            WuXingTypeMap.Clear();            CombatEventManager.Instance.RemoveEventListener(CombatEventType.AddUseGongFa, AddUseGongFa);            CombatEventManager.Instance.RemoveEventListener(CombatEventType.SkillSlotsAlter, SkillSlotsAlter);        }    }}
 |