public override void OnThink()
        {
            base.OnThink();

            DateTime now = DateTime.UtcNow;

            if (!this.InCombat())
            {
                return;
            }

            if (now > _NextCast)
            {
                _NextCast = now + CastInterval;

                if (CurrentSpell == null)
                {
                    CurrentSpell = new List <Timer>();
                }

                if (now > _NextShadowStep)
                {
                    _NextShadowStep = now + ShadowStepInterval;

                    CurrentSpell.Clear();

                    CurrentSpell.Add(Timer.DelayCall(TimeSpan.FromSeconds(1), Throw_Poop));
                }
            }
        }
Exemple #2
0
        public void UltimaImpact_Callback(Point3D impactloc)
        {
            CurrentSpell.Clear();
            var queue = new EffectQueue();

            queue.Deferred = true;

            BaseExplodeEffect e = ExplodeFX.Smoke.CreateInstance(
                impactloc, Map, 8, 0, TimeSpan.FromMilliseconds(1000 - ((10) * 100)), null, () =>
            {
                foreach (Mobile mobile in AcquireAllTargets(impactloc, 8))
                {
                    if (mobile is PlayerMobile)
                    {
                        mobile.Damage(UltimaDamage, this);
                    }
                    else
                    {
                        mobile.Damage(UltimaPetDamage, this);
                    }
                }
            });

            e.Send();

            queue.Process();
            CantWalk = false;
        }
        public override void OnThink()
        {
            base.OnThink();

            DateTime now = DateTime.UtcNow;

            if (!this.InCombat())
            {
                return;
            }

            if (now > _NextCast)
            {
                _NextCast = now + CastInterval;

                if (CurrentSpell == null)
                {
                    CurrentSpell = new List <Timer>();
                }

                if (now > _NextShadowStep)
                {
                    _NextShadowStep = now + ShadowStepInterval;

                    CurrentSpell.Clear();

                    HideEffect();
                    CantWalk  = true;
                    Hidden    = true;
                    Blessed   = true;
                    Combatant = null;
                    CurrentSpell.Add(Timer.DelayCall(TimeSpan.FromSeconds(1), BackStab_Callback));
                }
            }
        }
Exemple #4
0
        public override void OnThink()
        {
            base.OnThink();

            DateTime now = DateTime.UtcNow;

            if (!this.InCombat())
            {
                return;
            }

            if (now > _NextCast)
            {
                _NextCast = now + CastInterval;

                if (CurrentSpell == null)
                {
                    CurrentSpell = new List <Timer>();
                }

                if (now > _NextShadowStep && CurrentSpell.Count == 0)
                {
                    _NextShadowStep = now + ShadowStepInterval;

                    CurrentSpell.Clear();

                    HideEffect();
                    CantWalk  = true;
                    Hidden    = true;
                    Blessed   = true;
                    Combatant = null;
                    CurrentSpell.Add(Timer.DelayCall(TimeSpan.FromSeconds(1), BackStab_Callback));
                }
                else if (now > _NextUltima && CurrentSpell.Count == 0)
                {
                    _NextUltima = now + UltimaInterval;

                    CurrentSpell.Clear();

                    CantWalk  = true;
                    Combatant = null;
                    Say("*Begins to cast Ultima*");
                    AnimateSpell();
                    CurrentSpell.Add(Timer.DelayCall(TimeSpan.FromSeconds(2), Ultima_Callback));
                }
                else if (now > _NextMirrorImage && CurrentSpell.Count == 0)
                {
                    _NextMirrorImage = now + MirrorImageInterval;

                    CurrentSpell.Clear();

                    CantWalk  = true;
                    Combatant = null;
                    Say("*Begins to cast Mirror Image*");
                    AnimateSpell();
                    CurrentSpell.Add(Timer.DelayCall(TimeSpan.FromSeconds(2), MirrorImage_Callback));
                }
            }
        }
Exemple #5
0
        public void MirrorImage_Callback()
        {
            HideEffect();
            Hidden   = true;
            CantWalk = true;
            Blessed  = true;
            var mob1 = new LockeColeMirrorImage();
            var mob2 = new LockeColeMirrorImage();
            var mob3 = new LockeColeMirrorImage();

            mob1.Hidden   = true;
            mob1.CantWalk = true;
            mob1.Blessed  = true;
            mob2.Hidden   = true;
            mob2.CantWalk = true;
            mob2.Blessed  = true;
            mob3.Hidden   = true;
            mob3.CantWalk = true;
            mob3.Blessed  = true;

            SetHits(Hits);

            Timer.DelayCall(TimeSpan.FromSeconds(2), () =>
            {
                mob1.MoveToWorld(Location, Map);
                mob2.MoveToWorld(Location, Map);
                mob3.MoveToWorld(Location, Map);

                mob1.SetHits(MirrorImageHealth);
                mob2.SetHits(MirrorImageHealth);
                mob3.SetHits(MirrorImageHealth);

                HideEffect();
                mob1.HideEffect();
                mob2.HideEffect();
                mob3.HideEffect();

                Hidden   = false;
                CantWalk = false;
                Blessed  = false;

                mob1.Hidden   = false;
                mob1.CantWalk = false;
                mob1.Blessed  = false;
                mob2.Hidden   = false;
                mob2.CantWalk = false;
                mob2.Blessed  = false;
                mob3.Hidden   = false;
                mob3.CantWalk = false;
                mob3.Blessed  = false;

                CurrentSpell.Clear();
            });
        }
Exemple #6
0
        protected void BackStab_Callback()
        {
            Random        rnd       = new Random();
            List <Mobile> rangelist = AcquireTargets(Location, 15).OrderBy(x => rnd.Next()).Take(5).ToList();

            Point3D origloc = Location;
            int     count   = 1;

            foreach (var mobile in rangelist)
            {
                Mobile mobile1 = mobile;
                Timer.DelayCall(TimeSpan.FromSeconds(2.5 * count), () =>
                {
                    Location = mobile1.Location;
                    Hidden   = false;
                    HideEffect();
                    Timer.DelayCall(TimeSpan.FromSeconds(0.2), () =>
                    {
                        Say("*Stabs you in the back.*");
                        Animate();
                    });
                    if (mobile1.Hits <= ShadowStepKill)
                    {
                        mobile1.Damage(mobile1.Hits + 1, this);
                    }
                    else
                    {
                        mobile1.Hits = ShadowStepDamage;
                        mobile1.ApplyPoison(this, Poison.Lethal);
                    }
                    Timer.DelayCall(TimeSpan.FromSeconds(1.5), () =>
                    {
                        HideEffect();
                        Hidden = true;
                    });
                });
                count++;
            }
            Timer.DelayCall(TimeSpan.FromSeconds(2.5 * count), () =>
            {
                Location = origloc;
                Timer.DelayCall(TimeSpan.FromSeconds(1), () =>
                {
                    Blessed = false;
                    HideEffect();
                    Hidden   = false;
                    CantWalk = false;
                    CurrentSpell.Clear();
                });
            });
        }
        public override void OnThink()
        {
            base.OnThink();

            DateTime now = DateTime.UtcNow;

            if (!this.InCombat())
            {
                return;
            }

            if (now > _NextCast)
            {
                _NextCast = now + CastInterval;

                if (CurrentSpell == null)
                {
                    CurrentSpell = new List <Timer>();
                }

                if (Hits < HitsMax * .75)
                {
                    ToggleSummon = true;
                }
                if (ToggleSummon && now > _NextSummon)
                {
                    _NextSummon = now + SummonInterval;

                    CurrentSpell.Clear();
                    CurrentSpell.Add(Timer.DelayCall(TimeSpan.FromSeconds(3.0), Summon_Callback));
                }

                else if (now > _NextFeast)
                {
                    _NextFeast = now + FeastInterval;

                    CurrentSpell.Clear();
                    CurrentSpell.Add(Timer.DelayCall(TimeSpan.FromSeconds(3.0), Feast_Callback));
                }
                else if (now > _NextMerciless)
                {
                    _NextMerciless = now + MercilessInterval;

                    CurrentSpell.Clear();
                    CurrentSpell.Add(Timer.DelayCall(TimeSpan.FromSeconds(3.5), Merciless_Callback));
                }
            }
        }
Exemple #8
0
        public override void OnThink()
        {
            base.OnThink();

            DateTime now = DateTime.UtcNow;

            if (!this.InCombat())
            {
                return;
            }

            if (now > _NextCast)
            {
                _NextCast = now + CastInterval;

                if (CurrentSpell == null)
                {
                    CurrentSpell = new List <Timer>();
                }

                if (now > _NextUltima && CurrentSpell.Count == 0)
                {
                    _NextUltima = now + UltimaInterval;

                    CurrentSpell.Clear();

                    CantWalk  = true;
                    Combatant = null;
                    AnimateSpell();
                    CurrentSpell.Clear();
                    CurrentSpell.Add(Timer.DelayCall(TimeSpan.FromSeconds(2.0), Ultima_Callback));
                    CurrentSpell.Add(Timer.DelayCall(TimeSpan.FromSeconds(3.0), Ultima_Callback));
                    CurrentSpell.Add(Timer.DelayCall(TimeSpan.FromSeconds(4.0), Ultima_Callback));
                    CurrentSpell.Add(Timer.DelayCall(TimeSpan.FromSeconds(5.0), Ultima_Callback));
                    CurrentSpell.Add(Timer.DelayCall(TimeSpan.FromSeconds(6.0), Ultima_Callback));
                    CurrentSpell.Add(Timer.DelayCall(TimeSpan.FromSeconds(7.0), Ultima_Callback));
                    CurrentSpell.Add(Timer.DelayCall(TimeSpan.FromSeconds(8.0), Ultima_Callback));
                }
            }
        }
        public override void OnThink()
        {
            base.OnThink();

            DateTime now = DateTime.UtcNow;

            if (!this.InCombat())
            {
                return;
            }

            if (now > _NextCast)
            {
                _NextCast = now + CastInterval;

                if (CurrentSpell == null)
                {
                    CurrentSpell = new List <Timer>();
                }

                if (Hits < HitsMax * .75)
                {
                    ToggleSummon = true;
                }
                if (ToggleMeteor && now > _NextMeteor && Transformed)
                {
                    _NextMeteor = now + MeteorInterval;

                    Yell(Utility.RandomBool() ? "Corp Por Kal Des Ylem" : "The heavens betray you! METEOR!!!");

                    Animate();

                    CurrentSpell.Clear();
                    CurrentSpell.Add(Timer.DelayCall(TimeSpan.FromSeconds(3.0), Meteor_Callback));
                    CurrentSpell.Add(Timer.DelayCall(TimeSpan.FromSeconds(4.0), Meteor_Callback));
                }

                else if (ToggleSummon && now > _NextSummon)
                {
                    _NextSummon = now + SummonInterval;

                    Yell(Utility.RandomBool() ? "Kal Xen Bal Beh" : "From the darkest abyss, I summon thee!");

                    Animate();

                    CurrentSpell.Clear();
                    CurrentSpell.Add(Timer.DelayCall(TimeSpan.FromSeconds(3.0), Summon_Callback));
                }

                else if (ToggleGreaterExplosion && now > _NextGreaterExplosion)
                {
                    _NextGreaterExplosion = now + GreaterExplosionInterval;

                    Yell(Utility.RandomBool() ? "Kal Vas Ort Flam" : "MAY YOU BE REDUCED TO ASHES");

                    Animate();

                    CurrentSpell.Clear();
                    CurrentSpell.Add(Timer.DelayCall(TimeSpan.FromSeconds(3.0), GreaterExplosion_Callback));
                }
                else if (TogglePoisonExplosion && now > _NextPoisonExplosion)
                {
                    _NextPoisonExplosion = now + PoisonExplosionInterval;

                    Yell(Utility.RandomBool() ? "In Vas Ort Nox" : "Breathe deep the underworld..");

                    Animate();

                    CurrentSpell.Clear();
                    CurrentSpell.Add(Timer.DelayCall(TimeSpan.FromSeconds(3.5), PoisonExplosion_Callback));
                }
            }
        }
        public override void OnThink()
        {
            base.OnThink();

            DateTime now = DateTime.UtcNow;

            if (!this.InCombat())
            {
                return;
            }

            if (now > _NextCast)
            {
                _NextCast = now + CastInterval;

                if (CurrentSpell == null)
                {
                    CurrentSpell = new List <Timer>();
                }

                if (Hits < HitsMax * .75)
                {
                    ToggleSummon = true;
                }
                if (ToggleMeteor && now > _NextMeteor && Transformed)
                {
                    _NextMeteor = now + MeteorInterval;

                    Yell("FEEL THE WRATH OF THE ONE TRUE EASTER BUNNY");

                    Animate();

                    CurrentSpell.Clear();
                    CurrentSpell.Add(Timer.DelayCall(TimeSpan.FromSeconds(3.0), Meteor_Callback));
                    CurrentSpell.Add(Timer.DelayCall(TimeSpan.FromSeconds(4.0), Meteor_Callback));
                }

                else if (ToggleSummon && now > _NextSummon)
                {
                    _NextSummon = now + SummonInterval;

                    Yell(Utility.RandomBool() ? "Fluff Cand Choc Suga" : "Aid me my fluffy brethren!");

                    Animate();

                    CurrentSpell.Clear();
                    CurrentSpell.Add(Timer.DelayCall(TimeSpan.FromSeconds(3.0), Summon_Callback));
                }

                else if (ToggleGreaterExplosion && now > _NextGreaterExplosion)
                {
                    _NextGreaterExplosion = now + GreaterExplosionInterval;

                    Yell(Utility.RandomBool() ? "I FART IN YOUR GENERAL DIRECTION" : "ISN'T EASTER FUN?");

                    Animate();

                    CurrentSpell.Clear();
                    CurrentSpell.Add(Timer.DelayCall(TimeSpan.FromSeconds(3.0), GreaterExplosion_Callback));
                }

                else if (TogglePoisonExplosion && now > _NextPoisonExplosion)
                {
                    _NextPoisonExplosion = now + PoisonExplosionInterval;

                    Yell("DIABETES!");

                    Animate();

                    CurrentSpell.Clear();
                    CurrentSpell.Add(Timer.DelayCall(TimeSpan.FromSeconds(3.5), PoisonExplosion_Callback));
                }
            }
        }