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