mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 05:21:29 +00:00
Fix some bard stacking issues (mainly AE DOT)
Please report if it breaks anything (shouldn't)
This commit is contained in:
parent
bfe85a2f1b
commit
bbbee6e6b2
@ -1122,6 +1122,20 @@ bool IsStackableDot(uint16 spell_id)
|
||||
return IsEffectInSpell(spell_id, SE_CurrentHP) || IsEffectInSpell(spell_id, SE_GravityEffect);
|
||||
}
|
||||
|
||||
bool IsBardOnlyStackEffect(int effect)
|
||||
{
|
||||
switch(effect) {
|
||||
case SE_CurrentMana:
|
||||
case SE_ManaRegen_v2:
|
||||
case SE_CurrentHP:
|
||||
case SE_HealOverTime:
|
||||
case SE_BardAEDot:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool IsCastWhileInvis(uint16 spell_id)
|
||||
{
|
||||
if (!IsValidSpell(spell_id))
|
||||
|
||||
@ -968,6 +968,7 @@ uint32 GetPartialMeleeRuneAmount(uint32 spell_id);
|
||||
uint32 GetPartialMagicRuneAmount(uint32 spell_id);
|
||||
bool NoDetrimentalSpellAggro(uint16 spell_id);
|
||||
bool IsStackableDot(uint16 spell_id);
|
||||
bool IsBardOnlyStackEffect(int effect);
|
||||
bool IsCastWhileInvis(uint16 spell_id);
|
||||
bool IsEffectIgnoredInStacking(int spa);
|
||||
|
||||
|
||||
@ -3021,6 +3021,10 @@ int Mob::CheckStackConflict(uint16 spellid1, int caster_level1, uint16 spellid2,
|
||||
if(effect1 != effect2)
|
||||
continue;
|
||||
|
||||
if (IsBardOnlyStackEffect(effect1) && GetSpellLevel(spellid1, BARD) != 255 &&
|
||||
GetSpellLevel(spellid2, BARD) != 255)
|
||||
continue;
|
||||
|
||||
// big ol' list according to the client, wasn't that nice!
|
||||
if (IsEffectIgnoredInStacking(effect1))
|
||||
continue;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user