440 {
443 {
447 for (Unit::AuraApplicationMap::iterator i = Auras.begin(); i != Auras.end(); ++i)
448 {
449 Aura* aura = i->second->GetBase();
451 continue;
452
453
455 if (!(familyFlag[1] & 0x00000080 || familyFlag[0] & 0x0000C000))
456 continue;
458 {
459
460 if (familyFlag[0] & 0x4000)
461 {
462 int32 TickCount = aurEff->GetTotalTicks();
464 basePoint = aurEff->GetAmount();
465 ApplyPct(basePoint, TickCount * 40);
467 }
468
469 else if (familyFlag[1] & 0x00000080)
470 {
473
474
476 int32 casterBasePoint = aurEff->GetAmount() * unitTarget->GetMaxPower(
POWER_MANA) / 50;
477 if (basePoint > casterBasePoint)
478 basePoint = casterBasePoint;
479 ApplyPct(basePoint, TickCount * 60);
480 }
481
482 else if (familyFlag[0] & 0x00008000)
483 {
485 {
487 break;
488
490 }
491
493 }
494
495
497 aurEff->ChangeAmount(aurEff->CalculateAmount(caster), false);
498 }
499 break;
500 }
501
502 if (spellId)
504 }
505 }
std::int32_t int32
Definition Define.h:103
std::uint32_t uint32
Definition Define.h:107
@ POWER_MANA
Definition SharedDefines.h:269
@ DOT
Definition Unit.h:251
T ApplyPct(T &base, U pct)
Definition Util.h:73
T CalculatePct(T base, U pct)
Definition Util.h:61
Definition SpellAuraEffects.h:39
int32 GetTotalTicks() const
Definition SpellAuraEffects.cpp:7375
Definition SpellAuras.h:87
void RefreshDuration(bool withMods=false)
Definition SpellAuras.cpp:880
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
Player * ToPlayer()
Definition Object.h:202
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:113
bool HasSpellCooldown(uint32 spell_id) const override
Definition Player.cpp:16272
void AddSpellCooldown(uint32 spell_id, uint32 itemid, uint32 end_time, bool needSendToClient=false, bool forceSendToSpectator=false) override
Definition Player.cpp:11034
flag96 SpellFamilyFlags
Definition SpellInfo.h:388
Unit * GetHitUnit()
Definition SpellScript.cpp:448
Unit * GetCaster()
Definition SpellScript.cpp:401
std::multimap< uint32, AuraApplication * > AuraApplicationMap
Definition Unit.h:629
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:1236
@ SPELL_HUNTER_CHIMERA_SHOT_SCORPID
Definition spell_hunter.cpp:50
@ SPELL_HUNTER_CHIMERA_SHOT_VIPER
Definition spell_hunter.cpp:49
@ SPELL_HUNTER_CHIMERA_SHOT_SERPENT
Definition spell_hunter.cpp:48