|
@@ -0,0 +1,101 @@
|
|
|
|
+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);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|