mirror of
https://github.com/mangosfour/server.git
synced 2026-01-02 01:37:05 +00:00
[8905] Dispel work with aura stacks fixes.
* Implement set of remove aura functions for remove single aura from stack. Also some order function declarations for more clear show different aura remove functions. * Change Spell::EffectDispel to dispel single aura instead all similar auras from caster.
This commit is contained in:
parent
d63e4798b2
commit
03e16dd08b
4 changed files with 77 additions and 53 deletions
|
|
@ -1235,31 +1235,42 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
|
|||
|
||||
bool AddAura(Aura *aur);
|
||||
|
||||
// removing specific aura stack
|
||||
void RemoveAura(Aura* aura, AuraRemoveMode mode = AURA_REMOVE_BY_DEFAULT);
|
||||
void RemoveAura(AuraMap::iterator &i, AuraRemoveMode mode = AURA_REMOVE_BY_DEFAULT);
|
||||
void RemoveAura(uint32 spellId, uint32 effindex, Aura* except = NULL);
|
||||
void RemoveSingleSpellAurasFromStack(uint32 spellId);
|
||||
void RemoveSingleAuraFromStack(uint32 spellId, uint32 effindex);
|
||||
|
||||
// removing specific aura stacks by diff reasons and selections
|
||||
void RemoveAurasDueToSpell(uint32 spellId, Aura* except = NULL);
|
||||
void RemoveAurasDueToItemSpell(Item* castItem,uint32 spellId);
|
||||
void RemoveAurasByCasterSpell(uint32 spellId, uint64 casterGUID);
|
||||
void RemoveAurasByCasterSpell(uint32 spellId, uint32 effindex, uint64 casterGUID);
|
||||
void RemoveAurasDueToSpellByDispel(uint32 spellId, uint64 casterGUID, Unit *dispeler);
|
||||
void RemoveAurasDueToSpellBySteal(uint32 spellId, uint64 casterGUID, Unit *stealer);
|
||||
void RemoveAurasDueToSpellByCancel(uint32 spellId);
|
||||
void RemoveAurasAtChanneledTarget(SpellEntry const* spellInfo);
|
||||
|
||||
// removing unknown aura stacks by diff reasons and selections
|
||||
void RemoveNotOwnSingleTargetAuras(uint32 newPhase = 0x0);
|
||||
void RemoveAurasAtMechanicImmunity(uint32 mechMask, uint32 exceptSpellId, bool non_positive = false);
|
||||
|
||||
void RemoveSpellsCausingAura(AuraType auraType);
|
||||
void RemoveRankAurasDueToSpell(uint32 spellId);
|
||||
bool RemoveNoStackAurasDueToAura(Aura *Aur);
|
||||
void RemoveAurasWithInterruptFlags(uint32 flags);
|
||||
void RemoveAurasWithDispelType( DispelType type );
|
||||
|
||||
void RemoveAllAuras(AuraRemoveMode mode = AURA_REMOVE_BY_DEFAULT);
|
||||
void RemoveArenaAuras(bool onleave = false);
|
||||
void RemoveAllAurasOnDeath();
|
||||
|
||||
// removing specific aura FROM stack
|
||||
void RemoveSingleAuraFromStack(uint32 spellId, uint32 effindex, AuraRemoveMode mode = AURA_REMOVE_BY_DEFAULT);
|
||||
void RemoveSingleAuraFromStack(AuraMap::iterator &i, AuraRemoveMode mode = AURA_REMOVE_BY_DEFAULT);
|
||||
|
||||
// removing specific aura FROM stack by diff reasons and selections
|
||||
void RemoveSingleSpellAurasFromStack(uint32 spellId, AuraRemoveMode mode = AURA_REMOVE_BY_DEFAULT);
|
||||
void RemoveSingleSpellAurasByCasterSpell(uint32 spellId, uint64 casterGUID, AuraRemoveMode mode = AURA_REMOVE_BY_DEFAULT);
|
||||
void RemoveSingleAuraByCasterSpell(uint32 spellId, uint32 effindex, uint64 casterGUID, AuraRemoveMode mode = AURA_REMOVE_BY_DEFAULT);
|
||||
void RemoveSingleAuraDueToSpellByDispel(uint32 spellId, uint64 casterGUID, Unit *dispeler);
|
||||
|
||||
void DelayAura(uint32 spellId, uint32 effindex, int32 delaytime);
|
||||
|
||||
float GetResistanceBuffMods(SpellSchools school, bool positive) const { return GetFloatValue(positive ? UNIT_FIELD_RESISTANCEBUFFMODSPOSITIVE+school : UNIT_FIELD_RESISTANCEBUFFMODSNEGATIVE+school ); }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue