void UpdateAI(uint32 diff) { if (channelTarget == NULL/* || lastTarget == NULL */|| zealot == NULL) return; if(zealot && (zealot->HasAura(SPELL_TWILIGHT_EVOLUTION) || zealot->isDead())) return; if (uiCheckPlayerIsBetween <= diff) { channelTarget = zealot; Map::PlayerList const &PlayerList = me->GetMap()->GetPlayers(); if (!PlayerList.isEmpty()) { for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i) { if(i->getSource()->IsInBetween(me, zealot, 1.0f)) channelTarget = i->getSource(); } } zealot->SetAuraStack(SPELL_EVOLUTION,channelTarget,channelTarget->GetAuraCount(SPELL_EVOLUTION)+1); if (channelTarget->HasAura(SPELL_EVOLUTION)) channelTarget->GetAura(SPELL_EVOLUTION)->RefreshDuration(); if(channelTarget->GetAuraCount(SPELL_EVOLUTION) == 100) { if(channelTarget == zealot) { channelTarget->RemoveAllAuras(); zealot->CastSpell(channelTarget, SPELL_TWILIGHT_EVOLUTION, true); } if (channelTarget->ToPlayer()) channelTarget->Kill(channelTarget, true); } uiCheckPlayerIsBetween = 175; } else uiCheckPlayerIsBetween -= diff; if (uiNetherEssenceVisual <= diff) { me->CastSpell(me, SPELL_NETHERESSENCE_VISUAL, true); uiNetherEssenceVisual = urand(3500,4000); } else uiNetherEssenceVisual -= diff; }
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { Unit* target = GetTarget(); if (target->GetAuraCount(SPELL_SHADOW_GRASP_VISUAL) == 5) target->CastSpell(target, SPELL_SHADOW_CAGE, true); }
void HandleProc(AuraEffect const* /*aurEff*/, ProcEventInfo& eventInfo) { PreventDefaultAction(); Unit* healer = eventInfo.GetProcTarget(); if (healer->HasAura(SPELL_VITAL_FLAME)) return; bool is25ManHeroic = healer->GetMap()->IsHeroic() && healer->GetMap()->Is25ManRaid(); uint32 stacks = healer->GetAuraCount(SPELL_VITAL_SPARK) + std::min(uint8(ceil(GetStackAmount() / (is25ManHeroic ? 5.0 : 3.0))), uint8(255)); healer->SetAuraStack(SPELL_VITAL_SPARK, healer, stacks); if (Aura* aura = healer->GetAura(SPELL_VITAL_SPARK)) aura->RefreshDuration(); }
void HandleScript(SpellEffIndex /*effIndex*/) { Unit* caster = GetCaster(); if (caster->HasAura(SPELL_TRICKY_TREAT_TRIGGER) && caster->GetAuraCount(SPELL_TRICKY_TREAT_SPEED) > 3 && roll_chance_i(33)) caster->CastSpell(caster, SPELL_UPSET_TUMMY, true); }