From 3a33d54f705e79cb049ec2bd5711c37e6f73ad08 Mon Sep 17 00:00:00 2001
From: liuzhiwei <liuzhiwei@qq.com>
Date: Tue, 08 Dec 2020 15:36:45 +0800
Subject: [PATCH] 火精灵timeline

---
 Assets/Scripts/TowerDefense/Level/EndlessBuff/EndlessBuffManager.cs |   50 +++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 41 insertions(+), 9 deletions(-)

diff --git a/Assets/Scripts/TowerDefense/Level/EndlessBuff/EndlessBuffManager.cs b/Assets/Scripts/TowerDefense/Level/EndlessBuff/EndlessBuffManager.cs
index dfed43a..cf96f33 100644
--- a/Assets/Scripts/TowerDefense/Level/EndlessBuff/EndlessBuffManager.cs
+++ b/Assets/Scripts/TowerDefense/Level/EndlessBuff/EndlessBuffManager.cs
@@ -36,6 +36,10 @@
                 new SlowDown(),
                 new FireRateAdd(),
                 new SkillLevelUp(),
+                new DecreaseWoodChargeTime(),
+                new FrostProbabilityAdd(),
+                new FrostDamageAdd(),
+                new FrostTimeAdd()
             };
         }
 
@@ -54,14 +58,17 @@
             BuffList.Add(buff);
             EndlessBuff endlessBuff = GetBuffInstanceByType((EndlessBuffEffectType)buff.Config.buff_effect[0]);
 
-            endlessBuff.BuffList.Add(buff);
-            endlessBuff.Handle();
-
-            // 如果是一次性生效的buff,直接移除掉
-            if (buff.LifeCycleType == EndlessBuffLifeCycleType.Once)
+            if (endlessBuff != null)
             {
-                endlessBuff.BuffList.Remove(buff);
-                RemoveBuff(buff);
+                endlessBuff.BuffList.Add(buff);
+                endlessBuff.Handle();
+
+                // 如果是一次性生效的buff,直接移除掉
+                if (buff.LifeCycleType == EndlessBuffLifeCycleType.Once)
+                {
+                    endlessBuff.BuffList.Remove(buff);
+                    RemoveBuff(buff);
+                }
             }
         }
 
@@ -73,7 +80,7 @@
         {
             BuffList.Remove(buff);
             EndlessBuff endlessBuff = GetBuffInstanceByType((EndlessBuffEffectType)buff.Config.buff_effect[0]);
-            endlessBuff.LoseEffect();
+            endlessBuff?.LoseEffect();
         }
 
         /// <summary>
@@ -112,7 +119,7 @@
         {
             List<EndlessBuffConfig> ret = new List<EndlessBuffConfig>();
             // 暂且先这么处理吧 如果1:火 2:水 3:木
-            int attributeId = (int)Mathf.Floor(id / 10000f);
+            int attributeId = (int)Mathf.Floor(id / 100f);
 
             for (int i = 0; i < BuffList.Count; ++i)
             {
@@ -148,7 +155,32 @@
         /// <returns></returns>
         public EndlessBuff GetBuffInstanceByType(EndlessBuffEffectType type)
         {
+            int tmp = (int)type - 1;
+            if ((int)type - 1 >= instanceList.Count) return null;
+
             return instanceList[(int)type - 1];
         }
+
+        /// <summary>
+        /// 处理PVE无尽模式buff增加的伤害
+        /// </summary>
+        /// <param name="finalDamage"></param>
+        public float ProcessEndlessBuffAttack(float finalDamage, int elfId)
+        {
+            List<EndlessBuffConfig> list = EndlessBuffManager.instance.GetBuffListByEffectType(EndlessBuffEffectType.AttackAdd, elfId);
+
+            if (list.Count == 0) return 0;
+
+            float ratio = 0;
+            float add = 0;
+
+            for (int i = 0; i < list.Count; ++i)
+            {
+                ratio += list[i].Config.buff_effect[1];
+                add += list[i].Config.buff_effect[2];
+            }
+
+            return finalDamage * (ratio / 100f) + add;
+        }
     }
 }
\ No newline at end of file

--
Gitblit v1.9.1