Buff Predicates
Buff Predicates¶
Added a system to simplify the code when searching for buffs. You can generate a function that takes a template buff
(nominally of EQ_Affect
, CachedBuff
, or EQ_Spell*
types) that can be passed into a function to count or get buffs.
Four useful classes that inherit from SpellAttribute<T>
were created:
SpellAffect(eEQSPA, (optional) isIncrease = true)
SpellCategory(eEQSPELLCAT)
SpellSubCat(eEQSPELLCAT)
SpellClassMask(PlayerClass...)
These objects can be chained together with normal boolean operators (&&, ||, and the unary ! for SpellClassMask
) to create a predicate function. Use of this is something like:
Example (C++)
auto buffslot = GetSelfBuff(SpellAffect(SPA_AC, true)
&& SpellCategory(SPELLCAT_HP_BUFFS)
&& (SpellSubCat(SPELLCAT_AEGOLISM) || SpellSubCat(SPELLCAT_SYMBOL))
&& SpellClassMask(Cleric));
As part of this change, the following functions have been deprecated, as their functionality has been replaced by this new system:
- GetTargetBuffByCategory()
- GetTargetBuffBySubCat()
- GetTargetBuffBySPA()
- HasCachedTargetBuffSubCat()
- HasCachedTargetBuffSPA()
- GetSelfBuffByCategory()
- GetSelfBuffBySubCat()
- GetSelfBuffBySPA()
- GetSelfShortBuffBySPA()