using System.Collections.Generic; using Common.Utility.CombatEvent; using Fort23.Core; using GameLogic.Combat.Buff; using GameLogic.Combat.CombatTool; using GameLogic.Combat.Hero; namespace GameLogic.Combat.Skill { /// /// 青莲净体诀 前方槽位功法在命中目标时会获得青莲之气,青莲气体达到{0}层时清除自己{1}个随机debuff,并恢复{2}%最大生命 /// 后方槽位也能获得青莲之气 ///如果为相生功法,各自获得的青莲之气数*2 /// public class S2009 : SkillBasic { private int currCount; private bool isSymbiosis; protected override void ProUseSkill() { } protected override void ProInitSkill() { currCount = 0; isSymbiosis = false; CombatEventManager.Instance.AddEventListener(CombatEventType.HeroInjured, HeroInjured); } protected override void ProActiveSkill() { if (SelfSkillConfig.PromoteLanPara_1.Length > 1) { CombatHeroSkillControl combatHeroSkillControl = CombatHeroEntity.CombatHeroSkillControl.This(); SkillBasic skillBasic = combatHeroSkillControl.GetSkillQueueForIndex(index + 1); SkillBasic skillBasic2 = combatHeroSkillControl.GetSkillQueueForIndex(index - 1); if (skillBasic != null && skillBasic2 != null) { isSymbiosis = CombatCalculateTool.Instance.IsSymbiosis(skillBasic.wuXingType, skillBasic2.wuXingType); } } } private void HeroInjured(IEventData eventData) { HeroInjuredEventData heroInjuredEventData = eventData as HeroInjuredEventData; HarmReturnInfo harmReturnInfo = heroInjuredEventData.HarmReturnInfo; if (harmReturnInfo.source != CombatHeroEntity) { return; } SkillBasic skillBasic = harmReturnInfo.triggerData.Source as SkillBasic; if (IsPassiveActivateSkill(skillBasic)) { object iBarrier = heroInjuredEventData.HarmReturnInfo.triggerData.IBarrier; if (iBarrier != null) { return; } if (isSymbiosis) { currCount += 2; } else { currCount++; } if (currCount >= effectValue[0]) //满足层数 { currCount = 0; List buffBasics = CombatHeroEntity.BuffControl.GetBuffBasicForBuffType(2); int count = (int)effectValue[1]; for (int i = 0; i < count; i++) { if (buffBasics.Count <= 0) { break; } int index = CombatCalculateTool.Instance.GetOdd(0, buffBasics.Count); BuffBasic buffBasic = buffBasics[index]; CombatHeroEntity.BuffControl.RemoveBuff(buffBasic); buffBasics.RemoveAt(index); } long maxHp = CombatHeroEntity.MaxCombatHeroInfo.hp.Value; long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(maxHp, effectValue[2]); Recover(CombatHeroEntity, CombatHeroEntity.GetMainHotPoin(true), v, AttType.Skill); } } } } }