Browse Source

修改bug

DESKTOP-FB72PO8\Administrator 1 month ago
parent
commit
c11239de17

+ 130 - 0
Assets/Scripts/GameLogic/Combat/CombatTool/CombatCalculateTool.cs

@@ -6,9 +6,12 @@ using Excel2Json;
 using Fort23.Core;
 using Fort23.UTool;
 using GameLogic.Combat.Hero;
+using GameLogic.Combat.Skill;
 using GameLogic.Player;
+using UnityEngine;
 using Utility;
 using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
+using Random = System.Random;
 
 namespace GameLogic.Combat.CombatTool
 {
@@ -231,6 +234,133 @@ namespace GameLogic.Combat.CombatTool
                 default: return 5; // 无效元素
             }
         }
+        public int GetRestrained(WuXingType WuXingType,WuXingType targetWuXingType)
+        {
+            int c = 0;
+            if (WuXingType.HasFlag(WuXingType.Gold))
+            {
+                if (targetWuXingType.HasFlag(WuXingType.Wood))
+                {
+                    c++;
+                }
+            }
+
+            if (WuXingType.HasFlag(WuXingType.Wood))
+            {
+                if (targetWuXingType.HasFlag(WuXingType.Earth))
+                {
+                    c++;
+                }
+            }
+
+            if (WuXingType.HasFlag(WuXingType.Water))
+            {
+                if (targetWuXingType.HasFlag(WuXingType.Fire))
+                {
+                    c++;
+                }
+            }
+
+            if (WuXingType.HasFlag(WuXingType.Fire))
+            {
+                if (targetWuXingType.HasFlag(WuXingType.Gold))
+                {
+                    c++;
+                }
+            }
+
+            if (WuXingType.HasFlag(WuXingType.Earth))
+            {
+                if (targetWuXingType.HasFlag(WuXingType.Wood))
+                {
+                    c++;
+                }
+            }
+
+            return c;
+        }
+        public void FaBaoPengZhuang(CombatMagicWeaponEntity a, CombatMagicWeaponEntity b)
+        {
+            CombatHeroEntity heroEntityA= a.MagicWeaponControl.combatHeroEntity;
+            CombatHeroEntity heroEntityB = b.MagicWeaponControl.combatHeroEntity;
+            int myRestrained = GetRestrained(a.WuXingType, b.WuXingType);
+            int targetRestrained = GetRestrained(b.WuXingType,a.WuXingType);
+            float lg_a = heroEntityA.CurrCombatHeroInfo.GetWuXingShuXing(a.WuXingType);
+            float lg_b = heroEntityB.CurrCombatHeroInfo.GetWuXingShuXing(b.WuXingType);
+            int c = myRestrained - targetRestrained;
+            long myHp = (long)(a.HpBl);
+            long targetHp = (long)(b.HpBl);
+
+            float p2 = 100;
+            if (c < 0) //a被压制
+            {
+                p2 = Mathf.Max(100, Mathf.Min(200, 30 + lg_b - lg_a));
+                targetHp = (long)(targetHp * p2);
+            }
+            else if (c > 0)
+            {
+                p2 = Mathf.Max(100, Mathf.Min(200, 30 + lg_a - lg_b));
+                myHp = (long)(myHp * p2);
+            }
+
+
+            if (myHp > targetHp)
+            {
+                myHp -= targetHp;
+                a.HpBl = myHp;
+            }
+            else if (myHp < targetHp)
+            {
+                targetHp -= myHp;
+                b.HpBl = targetHp;
+            }
+            else if (myHp == targetHp)
+            {
+                a.HpBl = 0;
+                b.HpBl = 0;
+            }
+        }
+
+        public void GongFaPengZhuang(SkillFeaturesData a, SkillFeaturesData b, CombatHeroEntity heroEntityA,
+            CombatHeroEntity heroEntityB)
+        {
+            int myRestrained = GetRestrained(a.WuXingType, b.WuXingType);
+            int targetRestrained = GetRestrained(b.WuXingType,a.WuXingType);
+            float lg_a = heroEntityA.CurrCombatHeroInfo.GetWuXingShuXing(a.WuXingType);
+            float lg_b = heroEntityB.CurrCombatHeroInfo.GetWuXingShuXing(b.WuXingType);
+            int c = myRestrained - targetRestrained;
+            long myHp = (long)(a.hp);
+            long targetHp = (long)(b.hp);
+
+            float p2 = 100;
+            if (c < 0) //a被压制
+            {
+                p2 = Mathf.Max(100, Mathf.Min(200, 30 + lg_b - lg_a));
+                targetHp = (long)(targetHp * p2);
+            }
+            else if (c > 0)
+            {
+                p2 = Mathf.Max(100, Mathf.Min(200, 30 + lg_a - lg_b));
+                myHp = (long)(myHp * p2);
+            }
+
+
+            if (myHp > targetHp)
+            {
+                myHp -= targetHp;
+                a.hp = myHp;
+            }
+            else if (myHp < targetHp)
+            {
+                targetHp -= myHp;
+                b.hp = targetHp;
+            }
+            else if (myHp == targetHp)
+            {
+                a.hp = 0;
+                b.hp = 0;
+            }
+        }
 
         /// <summary>
         /// 是否相生

+ 15 - 16
Assets/Scripts/GameLogic/Combat/CombatTool/MagicWeaponCollisionInfo.cs

@@ -30,6 +30,7 @@ namespace GameLogic.Combat.CombatTool
         protected bool _isOne;
 
         protected ParticleSystemPool ParticleSystemPool;
+        private int triigerCount;
 
         public void Init(CombatMagicWeaponEntity a, CombatMagicWeaponEntity b, int id)
         {
@@ -59,7 +60,7 @@ namespace GameLogic.Combat.CombatTool
                 return;
             }
 
-            if ((a.HpBl <= 30 || b.HpBl < 20))
+            if (triigerCount >= 2)
             {
                 MagicWeaponPingDouState.MagicWeaponPingDouData rollingStateData =
                     CObjectPool.Instance.Fetch<MagicWeaponPingDouState.MagicWeaponPingDouData>();
@@ -90,8 +91,8 @@ namespace GameLogic.Combat.CombatTool
                         particleSystemPool.transform.rotation =
                             a.GameObject.transform.rotation;
                     });
-
-                a.ReduceHp(40);
+                triigerCount++;
+                // a.ReduceHp(40);
                 // _trigger = true;
                 // _triggerTime = 0.5f;
             }
@@ -105,10 +106,7 @@ namespace GameLogic.Combat.CombatTool
 
             _besselPathA.controlPoints.Add(b.GameObject.transform.TransformPoint(new Vector3(12.66f, 1, -5)));
             _besselPathA.controlPoints.Add(b.dotPos);
-            // GameObject G = new GameObject("BesselPathMono11");
-            // BesselPathMono besselPathMono = G.AddComponent<BesselPathMono>();
-            // besselPathMono.isRun = true;
-            // besselPathMono.BesselPath = _besselPathA;
+
             _besselPathB = new BesselPath();
             _besselPathB.controlPoints.Add(b.dotPos);
             _besselPathB.controlPoints.Add(
@@ -117,10 +115,6 @@ namespace GameLogic.Combat.CombatTool
             _besselPathB.controlPoints.Add(
                 a.GameObject.transform.TransformPoint(new Vector3(12.67f, -3.03f, -3.5f)));
             _besselPathB.controlPoints.Add(a.dotPos);
-            // GameObject G2 = new GameObject("BesselPathMono22");
-            // BesselPathMono besselPathMono2 = G2.AddComponent<BesselPathMono>();
-            // besselPathMono2.isRun = true;
-            // besselPathMono2.BesselPath = _besselPathB;
         }
 
         protected void SetBesselB()
@@ -196,17 +190,21 @@ namespace GameLogic.Combat.CombatTool
             else if (State == 2)
             {
                 _currTime += t;
-                if (_currTime > 0.1f)
+                if (_currTime >2)
                 {
+                    State = 3;
                     _currTime = 0;
-                    if (a != null)
+                    CombatCalculateTool.Instance.FaBaoPengZhuang(a,b);
+                    CombatMagicWeaponEntity combatMagicWeaponEntityA = a;
+                    CombatMagicWeaponEntity combatMagicWeaponEntityB = b;
+                    if (combatMagicWeaponEntityA.HpBl<=0)
                     {
-                        a.ReduceHp(1);
+                        combatMagicWeaponEntityA.MagicWeaponDie();
                     }
 
-                    if (b != null)
+                    if (combatMagicWeaponEntityB.HpBl<=0)
                     {
-                        b.ReduceHp(1);
+                        combatMagicWeaponEntityB.MagicWeaponDie();
                     }
                 }
             }
@@ -246,6 +244,7 @@ namespace GameLogic.Combat.CombatTool
 
             GObjectPool.Instance.Recycle(ParticleSystemPool);
             ParticleSystemPool = null;
+            triigerCount = 0;
         }
 
         public string tag { get; }

+ 10 - 5
Assets/Scripts/GameLogic/Combat/Hero/CombatHeroInfo.cs

@@ -55,27 +55,27 @@ public class CombatHeroInfo
     /// <summary>
     /// 金
     /// </summary>
-    public float Metal;
+    public float Metal=100;
 
     /// <summary>
     /// 木
     /// </summary>
-    public float Wood;
+    public float Wood = 100;
 
     /// <summary>
     /// 水
     /// </summary>
-    public float Water;
+    public float Water = 100;
 
     /// <summary>
     /// 火
     /// </summary>
-    public float Fire;
+    public float Fire = 100;
 
     /// <summary>
     /// 土
     /// </summary>
-    public float Earth;
+    public float Earth = 100;
 
     /// <summary>
     /// 金
@@ -158,6 +158,11 @@ public class CombatHeroInfo
         _AttributeCacheValue[attributeType] = value;
     }
 
+    /// <summary>
+    /// 获取五行灵根属性
+    /// </summary>
+    /// <param name="wuXingType"></param>
+    /// <returns></returns>
     public float GetWuXingShuXing(WuXingType wuXingType)
     {
         switch (wuXingType)

+ 2 - 2
Assets/Scripts/GameLogic/Combat/Hero/CombatHeroSkillControlBasic.cs

@@ -72,8 +72,8 @@ namespace GameLogic.Combat.Hero
             }
 
 
-            skillBasic.InitSkillConfig(skillInfo);
-            skillBasic.InitSkill(_combatHeroEntity);
+            skillBasic.InitSkillConfig(_combatHeroEntity,skillInfo);
+            // skillBasic.InitSkill(_combatHeroEntity);
             allSkill.Add(skillBasic);
             return skillBasic;
         }

+ 10 - 12
Assets/Scripts/GameLogic/Combat/Hero/CombatMagicWeaponEntity.cs

@@ -8,6 +8,7 @@ using GameLogic.Combat.CombatTool;
 using GameLogic.Combat.Hero.State;
 using GameLogic.Combat.Skill;
 using GameLogic.Hero;
+using GameLogic.Player;
 using UnityEngine;
 using UnityEngine.AI;
 
@@ -18,20 +19,17 @@ namespace GameLogic.Combat.Hero
     /// </summary>
     public class CombatMagicWeaponEntity : CombatHeroEntity
     {
-        /// <summary>
-        /// 碰撞的target
-        /// </summary>
-        public CombatMagicWeaponEntity CollidingTarget;
-
         public int MagicWeaponCollisionId = -1;
         protected FabaoConfig _magicWeaponConfig;
         public float cd = 2;
 
-
+        public WuXingType WuXingType;
         private FaBaoInfo _faBaoInfo;
+
         public float HpBl
         {
             get { return _HpBl; }
+            set { _HpBl = value; }
         }
 
         private float _HpBl = 100;
@@ -56,12 +54,11 @@ namespace GameLogic.Combat.Hero
         {
             get { return magicWeaponConfig.cd; }
         }
+
         private FabaoConfig magicWeaponConfig;
 
-        public void ReduceHp(float value)
+        public void MagicWeaponDie()
         {
-            _HpBl -= value;
-            if (_HpBl <= 0)
             {
                 HeroDieEventData heroDieEventData = HeroDieEventData.Create();
                 heroDieEventData.combatHeroEntity = this;
@@ -116,7 +113,7 @@ namespace GameLogic.Combat.Hero
             CombatHeroSkillControl.Init(this);
             int id = magicWeaponConfig.SkillGroupID * 10 + 1;
             // SkillConfig skillConfig = ConfigComponent.Instance.Get<SkillConfig>(id);
-            SkillInfo skillInfo=new SkillInfo(id, 1);
+            SkillInfo skillInfo = new SkillInfo(id, 1);
             CombatHeroSkillControl.AddSkill(skillInfo);
 
 
@@ -156,11 +153,12 @@ namespace GameLogic.Combat.Hero
         {
             if (cd > 0 || _magicWeaponControl.combatHeroEntity.CombatAIBasic.currFocusTarget == null)
             {
-               return;
+                return;
             }
+
             _HpBl = _faBaoInfo.FabaoPowerupConfig.Power;
             cd = magicWeaponConfig.cd;
-            CollidingTarget = null;
+
             _magicWeaponControl.UseMagicWeapon(this);
         }
 

+ 1 - 1
Assets/Scripts/GameLogic/Combat/Hero/State/MagicWeaponMoveState.cs

@@ -54,7 +54,7 @@ namespace GameLogic.Combat.Hero.State
         private void OnTriggerEnter(Collider collider,ITriggerEntity triggerEntity)
         {
             HeroEntityMono heroEntityMono = collider.GetComponent<HeroEntityMono>();
-            if (heroEntityMono == null || heroEntityMono.combatHeroEntity != myCombatMagicWeaponEntity.CollidingTarget)
+            if (heroEntityMono == null )
             {
                 return;
             }

+ 14 - 11
Assets/Scripts/GameLogic/Combat/Skill/SkillBasic.cs

@@ -138,13 +138,6 @@ namespace GameLogic.Combat.Skill
             return (T)(object)this;
         }
 
-        public void InitSkill(CombatHeroEntity combatHeroEntity)
-        {
-            wuXingType = (WuXingType)SelfSkillConfig.attribute;
-            SkillFeaturesData.isEnemy = combatHeroEntity.IsEnemy;
-            _combatHeroEntity = combatHeroEntity;
-            ProInitSkill();
-        }
 
         public void IntensifyingEffect(float bl)
         {
@@ -171,7 +164,11 @@ namespace GameLogic.Combat.Skill
 
         public SkillFeaturesData GetSkillFeaturesData()
         {
-            return SkillFeaturesData.CapyFeaturesData();
+            SkillFeaturesData skillFeaturesData = SkillFeaturesData.CapyFeaturesData();
+            skillFeaturesData.hp =
+                (long)(skillFeaturesData.hp * CombatHeroEntity.CurrCombatHeroInfo.GetWuXingShuXing(wuXingType));
+            skillFeaturesData.maxHp = skillFeaturesData.hp;
+            return skillFeaturesData;
         }
 
         public override void ActiveObj()
@@ -249,16 +246,20 @@ namespace GameLogic.Combat.Skill
             ProStartGame();
         }
 
-        public void InitSkillConfig(SkillInfo skillInfo)
+        public void InitSkillConfig(CombatHeroEntity combatHeroEntity, SkillInfo skillInfo)
         {
+            _combatHeroEntity = combatHeroEntity;
             SelfSkillConfig = skillInfo.skillConfig;
             SkillMaxCd = SelfSkillConfig.cd;
             _skillCd = SkillMaxCd;
-           
+
+            wuXingType = (WuXingType)SelfSkillConfig.attribute;
             SkillFeaturesData = new SkillFeaturesData();
+            SkillFeaturesData.isEnemy = combatHeroEntity.IsEnemy;
+
             SkillFeaturesData.WuXingType = wuXingType;
             SkillFeaturesData.hp = skillInfo.qiangDu;
-            
+
             UseCount = SelfSkillConfig.SkillType * 100000;
             skillGuid = SelfSkillConfig.ID;
             // if (SkillIntensifierData == null)
@@ -286,6 +287,8 @@ namespace GameLogic.Combat.Skill
             }
 
             ProInitSkillConfig();
+
+            ProInitSkill();
             // LogTool.Log("初始化技能"+skillConfig.scriptName);
         }
 

+ 6 - 46
Assets/Scripts/GameLogic/Combat/Skill/SkillFeaturesData.cs

@@ -10,57 +10,17 @@ namespace GameLogic.Combat.Skill
         /// 生命值
         /// </summary>
         public long hp;
-
+        /// <summary>
+        /// 最大时的Hp
+        /// </summary>
+        public long maxHp;
+        
         public bool isEnemy;
 
 
         public WuXingType WuXingType;
 
-        public int GetRestrained(WuXingType targetWuXingType)
-        {
-            int c = 0;
-            if (WuXingType.HasFlag(WuXingType.Gold))
-            {
-                if (targetWuXingType.HasFlag(WuXingType.Wood))
-                {
-                    c++;
-                }
-            }
-
-            if (WuXingType.HasFlag(WuXingType.Wood))
-            {
-                if (targetWuXingType.HasFlag(WuXingType.Earth))
-                {
-                    c++;
-                }
-            }
-
-            if (WuXingType.HasFlag(WuXingType.Water))
-            {
-                if (targetWuXingType.HasFlag(WuXingType.Fire))
-                {
-                    c++;
-                }
-            }
-
-            if (WuXingType.HasFlag(WuXingType.Fire))
-            {
-                if (targetWuXingType.HasFlag(WuXingType.Gold))
-                {
-                    c++;
-                }
-            }
-
-            if (WuXingType.HasFlag(WuXingType.Earth))
-            {
-                if (targetWuXingType.HasFlag(WuXingType.Wood))
-                {
-                    c++;
-                }
-            }
-
-            return c;
-        }
+      
 
         public SkillFeaturesData CapyFeaturesData()
         {

+ 8 - 26
Assets/Scripts/GameLogic/Paritcle/ParitcleLogic/FxParabolaBulletLogic.cs

@@ -17,7 +17,7 @@ namespace Common.Combat.FxAILogic
         public float speed;
         private IUnRegister UnRegister = null;
 
-         
+
         public enum CurveType
         {
             DynamicCurve,
@@ -111,7 +111,7 @@ namespace Common.Combat.FxAILogic
                     }
 
 
-                    moveBezierPath.controlPoints.Add(gameObject.transform.TransformPoint(p/(size*size)));
+                    moveBezierPath.controlPoints.Add(gameObject.transform.TransformPoint(p / (size * size)));
                 }
 
 
@@ -171,38 +171,20 @@ namespace Common.Combat.FxAILogic
                 {
                     return;
                 }
-
-                int myRestrained = SkillFeaturesData.GetRestrained(skillFeaturesData.WuXingType);
-                int targetRestrained = skillFeaturesData.GetRestrained(SkillFeaturesData.WuXingType);
-                int c = myRestrained - targetRestrained;
-                long myHp = SkillFeaturesData.hp;
-                long targetHp = skillFeaturesData.hp;
-                if (c < 0) //我被压制
-                {
-                    myHp -= CombatCalculateTool.Instance.GetVlaueRatioForLong(myHp, 10 * (Mathf.Abs(c)));
-                }
-                else if (c > 0)
+                CombatCalculateTool.Instance.GongFaPengZhuang(SkillFeaturesData, skillFeaturesData, CombatHeroEntity,
+                    fxAILogicBasic.CombatHeroEntity);
+                if (SkillFeaturesData.hp > 0)
                 {
-                    targetHp -= CombatCalculateTool.Instance.GetVlaueRatioForLong(targetHp, 10 * (Mathf.Abs(c)));
-                }
-
-                if (myHp > targetHp)
-                {
-                    myHp -= targetHp;
-                    SkillFeaturesData.hp = myHp;
                     fxAILogicBasic.PlayHit();
                     fxAILogicBasic.Dispose();
                 }
-                else if (myHp < targetHp)
+                else if (skillFeaturesData.hp > 0)
                 {
-                    targetHp -= myHp;
-                    skillFeaturesData.hp = targetHp;
                     Dispose();
                     PlayHit();
                 }
-                else if (myHp == targetHp)
+                else 
                 {
-                    myHp = 0;
                     fxAILogicBasic.PlayHit();
                     fxAILogicBasic.Dispose();
                     Dispose();
@@ -258,7 +240,7 @@ namespace Common.Combat.FxAILogic
                     timeLineTriggerEvent.TimeLineTrigger(
                         TimeLineEventParticleLogicBasic.TimeLineEventLogicGroup.groupName,
                         target.GetMainHotPoin<ILifetCycleHitPoint>(), this, triggerData);
-                    
+
                     if (!string.IsNullOrEmpty(hitFxName))
                     {
                         FinishHit(collision.ClosestPoint(gameObject.transform.position), hitFxName);

File diff suppressed because it is too large
+ 0 - 0
Assets/StreamingAssets/assetConfig.txt


Some files were not shown because too many files changed in this diff