private void CharacterBody_AddTimedBuff_BuffDef_float_int(On.RoR2.CharacterBody.orig_AddTimedBuff_BuffDef_float_int orig, CharacterBody self, BuffDef buffDef, float duration, int maxStacks) { if (CanCancelBuff(self, buffDef)) { return; } orig(self, buffDef, duration, maxStacks); }
private void CharacterBody_AddTimedBuff_BuffDef_float_int(On.RoR2.CharacterBody.orig_AddTimedBuff_BuffDef_float_int orig, CharacterBody self, BuffDef buffDef, float duration, int maxStacks) { orig(self, buffDef, duration, maxStacks); if (!ignoredBuffDefs.Contains(buffDef)) { var modifiedDuration = GetModifiedDuration(self, buffDef.isDebuff || buffDef.isCooldown || debuffsTreatedAsBuffs.Contains(buffDef), duration); foreach (var timedBuff in self.timedBuffs.Where(x => x.buffIndex == buffDef.buffIndex && x.timer == duration)) { timedBuff.timer = modifiedDuration; } } }