430 {
433 {
437 for (Unit::AuraApplicationMap::iterator i = Auras.begin(); i != Auras.end(); ++i)
438 {
439 Aura* aura = i->second->GetBase();
441 continue;
442
443
445 if (!(familyFlag[1] & 0x00000080 || familyFlag[0] & 0x0000C000))
446 continue;
448 {
449
450 if (familyFlag[0] & 0x4000)
451 {
452 int32 TickCount = aurEff->GetTotalTicks();
454 basePoint = aurEff->GetAmount();
455 ApplyPct(basePoint, TickCount * 40);
457 }
458
459 else if (familyFlag[1] & 0x00000080)
460 {
463
464
466 int32 casterBasePoint = aurEff->GetAmount() * unitTarget->GetMaxPower(
POWER_MANA) / 50;
467 if (basePoint > casterBasePoint)
468 basePoint = casterBasePoint;
469 ApplyPct(basePoint, TickCount * 60);
470 }
471
472 else if (familyFlag[0] & 0x00008000)
473 {
475 {
477 break;
478
480 }
481
483 }
484
485
487 aurEff->ChangeAmount(aurEff->CalculateAmount(caster), false);
488 }
489 break;
490 }
491
492 if (spellId)
494 }
495 }
std::int32_t int32
Definition: Define.h:104
std::uint32_t uint32
Definition: Define.h:108
T ApplyPct(T &base, U pct)
Definition: Util.h:73
T CalculatePct(T base, U pct)
Definition: Util.h:61
@ DOT
Definition: Unit.h:437
@ SPELL_HUNTER_CHIMERA_SHOT_SCORPID
Definition: spell_hunter.cpp:53
@ SPELL_HUNTER_CHIMERA_SHOT_VIPER
Definition: spell_hunter.cpp:52
@ SPELL_HUNTER_CHIMERA_SHOT_SERPENT
Definition: spell_hunter.cpp:51
@ POWER_MANA
Definition: SharedDefines.h:241
Player * ToPlayer()
Definition: Object.h:195
static ObjectGuid GetGUID(Object const *o)
Definition: Object.h:106
bool HasSpellCooldown(uint32 spell_id) const override
Definition: Player.cpp:16214
void AddSpellCooldown(uint32 spell_id, uint32 itemid, uint32 end_time, bool needSendToClient=false, bool forceSendToSpectator=false) override
Definition: Player.cpp:10983
std::multimap< uint32, AuraApplication * > AuraApplicationMap
Definition: Unit.h:1299
SpellCastResult CastCustomSpell(Unit *victim, uint32 spellId, int32 const *bp0, int32 const *bp1, int32 const *bp2, bool triggered, Item *castItem=nullptr, AuraEffect const *triggeredByAura=nullptr, ObjectGuid originalCaster=ObjectGuid::Empty)
Definition: Unit.cpp:1226
Definition: SpellAuraEffects.h:39
int32 GetTotalTicks() const
Definition: SpellAuraEffects.cpp:7006
Definition: SpellAuras.h:87
void RefreshDuration(bool withMods=false)
Definition: SpellAuras.cpp:894
ObjectGuid GetCasterGUID() const
Definition: SpellAuras.h:105
AuraEffect * GetEffect(uint8 effIndex) const
Definition: SpellAuras.h:175
uint8 GetStackAmount() const
Definition: SpellAuras.h:148
SpellInfo const * GetSpellInfo() const
Definition: SpellAuras.h:100
flag96 SpellFamilyFlags
Definition: SpellInfo.h:386
Unit * GetHitUnit()
Definition: SpellScript.cpp:448
Unit * GetCaster()
Definition: SpellScript.cpp:401