| | |
| | | new CritDamageAdd(), |
| | | new CritBulletAdd(), |
| | | new SlowDown(), |
| | | new FireRateAdd() |
| | | new FireRateAdd(), |
| | | new SkillLevelUp(), |
| | | new DecreaseWoodChargeTime(), |
| | | new FrostProbabilityAdd(), |
| | | new FrostDamageAdd(), |
| | | new FrostTimeAdd() |
| | | }; |
| | | } |
| | | |
| | |
| | | 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; |
| | | } |
| | | } |
| | | } |