浏览代码

修改bug

DESKTOP-FB72PO8\Administrator 5 天之前
父节点
当前提交
609eed849c

+ 23 - 1
Assets/Scripts/GameLogic/Combat/Buff/BuffControl.cs

@@ -1,4 +1,5 @@
 using System;
+using System.Collections.Generic;
 using Common.Utility.CombatEvent;
 using Fort23.Core;
 
@@ -22,12 +23,13 @@ namespace GameLogic.Combat.Buff
             startAddBuffEventData.BuffInfo = buffInfo;
             startAddBuffEventData.source = source;
             startAddBuffEventData.target = _combatHeroEntity;
-            CombatEventManager.Instance.Dispatch(CombatEventType.StartAddBuff, startAddBuffEventData,false);
+            CombatEventManager.Instance.Dispatch(CombatEventType.StartAddBuff, startAddBuffEventData, false);
             if (startAddBuffEventData.isNotAddBuff)
             {
                 startAddBuffEventData.Recycle();
                 return null;
             }
+
             startAddBuffEventData.Recycle();
             BuffBasic buffBasic = GetBuffBasicForIdGroup(buffInfo.BuffConfig.buffGroup);
             if (buffBasic == null)
@@ -86,6 +88,26 @@ namespace GameLogic.Combat.Buff
             return null;
         }
 
+        /// <summary>
+        /// 获得对应buff
+        /// </summary>
+        /// <param name="buffType"> 1=buff 2=debuff 3=中立</param>
+        /// <returns></returns>
+        public List<BuffBasic> GetBuffBasicForBuffType(int buffType)
+        {
+            List<BuffBasic> buffBasics = new List<BuffBasic>();
+            for (int i = 0; i < _allBuff.Count; i++)
+            {
+                BuffBasic b = _allBuff[i];
+                if (b.buffInf.BuffConfig.buffType == buffType)
+                {
+                    buffBasics.Add(b);
+                }
+            }
+
+            return buffBasics;
+        }
+
         public BuffBasic GetBuffBasicForIdGroup(int idGroup)
         {
             for (int i = 0; i < _allBuff.Count; i++)

+ 101 - 0
Assets/Scripts/GameLogic/Combat/Skill/S2009.cs

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

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Skill/S2009.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 05fbe9c8e6e14e469c5fa60739c8af2f
+timeCreated: 1749710466

+ 42 - 0
Assets/Scripts/GameLogic/Combat/Skill/S2010.cs

@@ -0,0 +1,42 @@
+using Common.Utility.CombatEvent;
+using Fort23.Core;
+using GameLogic.Combat.CombatTool;
+using GameLogic.Combat.Hero;
+
+namespace GameLogic.Combat.Skill
+{
+    /// <summary>
+    /// 碧霄回春术  功法在经过木系区域时会触发生机,为角色治疗{0}生命值
+    /// </summary>
+    public class S2010 : SkillBasic
+    {
+        protected override void ProUseSkill()
+        {
+        }
+
+        protected override void ProActiveSkill()
+        {
+            CombatEventManager.Instance.AddEventListener(CombatEventType.TriggerSkillSlots, TriggerSkillSlots);
+        }
+
+        protected override void ProDispose()
+        {
+            CombatEventManager.Instance.RemoveEventListener(CombatEventType.TriggerSkillSlots, TriggerSkillSlots);
+        }
+
+        private void TriggerSkillSlots(IEventData ieventData)
+        {
+            TriggerSkillSlotsEventData triggerSkillSlotsEventData = ieventData as TriggerSkillSlotsEventData;
+            if (triggerSkillSlotsEventData.SkillBasic == this)
+            {
+                if (triggerSkillSlotsEventData.triggerType == 2) //触发到木的位置
+                {
+                    long maxHp = CombatHeroEntity.MaxCombatHeroInfo.hp.Value;
+                    long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(maxHp, effectValue[0]);
+                    Recover(CombatHeroEntity, CombatHeroEntity.GetMainHotPoin<CombatHeroHitPoint>(true), v,
+                        AttType.Skill);
+                }
+            }
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Skill/S2010.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 51d9df94eebf4ae9a9f87c5656858606
+timeCreated: 1749783019

+ 4 - 4
Assets/Scripts/GameLogic/Combat/Skill/SkillBasic.cs

@@ -328,7 +328,7 @@ namespace GameLogic.Combat.Skill
         }
 
         public HarmReturnInfo Recover(CombatHeroEntity source, CombatHeroHitPoint target, long att,
-            AttType attType, HarmType harmType)
+            AttType attType, HarmType harmType=HarmType.Recover)
         {
             return CombatCalculateTool.Instance.Recover(source, target, att, attType, harmType, triggerData);
         }
@@ -603,14 +603,14 @@ namespace GameLogic.Combat.Skill
                 return false;
             }
 
-            if (SelfSkillConfig.PromoteLanPara == null)
+            if (SelfSkillConfig.PromoteLanPara_1 == null)
             {
                 return false;
             }
 
-            for (int i = 0; i < SelfSkillConfig.PromoteLanPara.Length; i++)
+            for (int i = 0; i < SelfSkillConfig.PromoteLanPara_1.Length; i++)
             {
-                int configIndex = (int)SelfSkillConfig.PromoteLanPara[i];
+                int configIndex = (int)SelfSkillConfig.PromoteLanPara_1[i];
                 if (targetSkillBasic.index == configIndex + index)
                 {
                     return true;

文件差异内容过多而无法显示
+ 328 - 277
UserSettings/Layouts/default-2022.dwlt


部分文件因为文件数量过多而无法显示