| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 | 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{    /// <summary>    /// 青莲净体诀  前方槽位功法在命中目标时会获得青莲之气,青莲气体达到{0}层时清除自己{1}个随机debuff,并恢复{2}%最大生命    /// 后方槽位也能获得青莲之气    ///如果为相生功法,各自获得的青莲之气数*2    /// </summary>    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<CombatHeroSkillControl>();                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<BuffBasic> 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<CombatHeroHitPoint>(true), v,                        AttType.Skill);                }            }        }    }}
 |