using Common.Utility.CombatEvent; using Fort23.Core; using GameLogic.Combat.CombatTool; using GameLogic.Player; using Utility; namespace GameLogic.Combat.Skill { /// /// 玄黄道 :每次使用功法时在当前位置留下一道属性印记,下一个放上来的功法如果和以前功法相生则功法效果提升50%,每次使用功法时都会治疗对应相生属性的伤势。(均衡性功法搭配,转盘改变,变为金、水、木、火、土) /// public class DS60103 : SkillBasic { protected Map WuXingTypeMap = new Map(); 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; } } } 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); } } }