| | |
| | | new CritDamageAdd(), |
| | | new CritBulletAdd(), |
| | | new SlowDown(), |
| | | new FireRateAdd() |
| | | new FireRateAdd(), |
| | | new SkillLevelUp(), |
| | | new DecreaseWoodChargeTime(), |
| | | new FrostProbabilityAdd(), |
| | | new FrostDamageAdd(), |
| | | new FrostTimeAdd() |
| | | }; |
| | | } |
| | | |
| | |
| | | /// </summary> |
| | | public void AddBuff(EndlessBuffConfig buff) |
| | | { |
| | | Debug.Log($"--- 获得buff:id {buff.Config.id}, name:{buff.Config.name} description:{buff.Config.brief} ---"); |
| | | ++buff.SelectCount; |
| | | |
| | | // 0表示只要被选择过,以后就不再出现了 |
| | | if (buff.Config.is_repeated == 0) |
| | | // 有出现次数限制的 |
| | | if (buff.Config.get_times > 0 && buff.SelectCount >= buff.Config.get_times) |
| | | 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); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | { |
| | | BuffList.Remove(buff); |
| | | EndlessBuff endlessBuff = GetBuffInstanceByType((EndlessBuffEffectType)buff.Config.buff_effect[0]); |
| | | endlessBuff.LoseEffect(); |
| | | endlessBuff?.LoseEffect(); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | { |
| | | 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) |
| | | { |
| | |
| | | /// <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; |
| | | } |
| | | } |
| | | } |