| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 | 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);                    float odds = effectValue[1];                    float currOdds = CombatCalculateTool.Instance.GetOdd(0, 100);                    if (buffBasics.Count > 0 && currOdds <= odds)                    {                        int index = CombatCalculateTool.Instance.GetOdd(0, buffBasics.Count);                        BuffBasic buffBasic = buffBasics[index];                        CombatHeroEntity.BuffControl.RemoveBuff(buffBasic);                        buffBasics.RemoveAt(index);                    }                    long maxHp = CombatHeroEntity.CurrCombatHeroInfo.attack.Value;                    long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(maxHp, effectValue[2]);                    Recover(CombatHeroEntity, CombatHeroEntity.GetMainHotPoin<CombatHeroHitPoint>(true), v,                        AttType.Skill);                }            }        }    }}
 |