diff --git a/zone/spells.cpp b/zone/spells.cpp index b8c3023b8..45c52a48b 100644 --- a/zone/spells.cpp +++ b/zone/spells.cpp @@ -3140,7 +3140,7 @@ int Mob::AddBuff(Mob *caster, uint16 spell_id, int duration, int32 level_overrid Log.Out(Logs::Detail, Logs::Spells, "Adding buff %d will overwrite spell %d in slot %d with caster level %d", spell_id, curbuf.spellid, buffslot, curbuf.casterlevel); // If this is the first buff it would override, use its slot - if (!will_overwrite) + if (!will_overwrite && !IsDisciplineBuff(spell_id)) emptyslot = buffslot; will_overwrite = true; overwrite_slots.push_back(buffslot); @@ -3190,7 +3190,7 @@ int Mob::AddBuff(Mob *caster, uint16 spell_id, int duration, int32 level_overrid // if we hadn't found a free slot before, or if this is earlier // we use it - if (emptyslot == -1 || *cur < emptyslot) + if (emptyslot == -1 || (*cur < emptyslot && !IsDisciplineBuff(spell_id))) emptyslot = *cur; } }