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);
- }
- }
- }
- }
- }
|