public Buff(BuffKind buffKind, double amount, bool percent, int remain) { _buffKind = buffKind; _amount = amount; _percent = percent; _remain = remain; }
public void RemoveBuffs(BuffKind kind, int count) { var own = GetOwner(); if (own == null) { return; } if (_effects == null) { return; } foreach (var e in new List <Effect>(_effects)) { if (e != null) { if (e.Template is BuffTemplate template && template.Kind != kind) { continue; } if (e.Template is BuffEffect effect && effect.Buff.Kind != kind) { continue; } e.Exit(); count--; if (count == 0) { return; } } } }
public AbstractBuffSkill(SkillKind skillKind, string name, int manaConsumption, float timeout, BuffKind buffKind, float duration, float amount, bool periodic) : base(skillKind, name, manaConsumption, timeout) { this.duration = duration; this.amount = amount; this.buffKind = buffKind; this.periodic = periodic; this.periodicApplyTimer = PERIODIC_APPLY_TIMER; }
//计算数值受所有buff影响后的数值 private double Buff_affect(double num, BuffKind buffKind) { for (int i = 0, len = _buffs.Count; i < len; i++) { if (_buffs[i]._buffKind == buffKind) //判断是否为增加获得治疗量的buff { num = _buffs[i].Count(num); //若是,则根据buff增减治疗量 } } //由于排序时百分比buff在后面,数值buff在前面,所以遍历时会先加数值再乘百分比 return(num); }
public DebuffSkill(string name, int manaConsumption, float timeout, BuffKind buffKind, float duration, int amount, bool periodic) : base(SkillKind.DEBUFF, name, manaConsumption, timeout, buffKind, duration, amount, periodic) { this.periodic = periodic; }
public BuffSkill(string name, int manaConsumption, float timeout, BuffKind buffKind, float duration, float amount) : base(SkillKind.BUFF, name, manaConsumption, timeout, buffKind, duration, amount, false) { }