From aadfae81e6a511cd2c062ab0b05f3ee3419f1a7f Mon Sep 17 00:00:00 2001 From: wangguan <wangguan@kt007.com> Date: Wed, 23 Dec 2020 20:15:14 +0800 Subject: [PATCH] 选中BUFF塔播放相应的特效 --- Assets/Scripts/TowerDefense/Level/EndlessBuff/EndlessBuffManager.cs | 56 ++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 46 insertions(+), 10 deletions(-) diff --git a/Assets/Scripts/TowerDefense/Level/EndlessBuff/EndlessBuffManager.cs b/Assets/Scripts/TowerDefense/Level/EndlessBuff/EndlessBuffManager.cs index 2e930ee..2522a5c 100644 --- a/Assets/Scripts/TowerDefense/Level/EndlessBuff/EndlessBuffManager.cs +++ b/Assets/Scripts/TowerDefense/Level/EndlessBuff/EndlessBuffManager.cs @@ -34,7 +34,12 @@ new CritDamageAdd(), new CritBulletAdd(), new SlowDown(), - new FireRateAdd() + new FireRateAdd(), + new SkillLevelUp(), + new DecreaseWoodChargeTime(), + new FrostProbabilityAdd(), + new FrostDamageAdd(), + new FrostTimeAdd() }; } @@ -51,16 +56,22 @@ EndlessBuffData.RemoveFromBuffPool(buff.Config.id); BuffList.Add(buff); + EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.PlayBuffPS, buff.Config.get_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); + } } } @@ -72,7 +83,7 @@ { BuffList.Remove(buff); EndlessBuff endlessBuff = GetBuffInstanceByType((EndlessBuffEffectType)buff.Config.buff_effect[0]); - endlessBuff.LoseEffect(); + endlessBuff?.LoseEffect(); } /// <summary> @@ -111,7 +122,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) { @@ -147,7 +158,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