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);
            }
示例#3
0
    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);
 }