Ejemplo n.º 1
0
        public override void OnGaveMeleeAttack(Mobile defender)
        {
            base.OnGaveMeleeAttack(defender);

            if (m_BunnyType != BunnyType.Ferocious)
            {
                return;
            }

            double effectChance = .15;

            if (Controlled && ControlMaster != null)
            {
                if (ControlMaster is PlayerMobile)
                {
                    if (defender is PlayerMobile)
                    {
                        effectChance = .02;
                    }
                    else
                    {
                        effectChance = .25;
                    }
                }
            }

            SpecialAbilities.FrenzySpecialAbility(effectChance, this, defender, .25, 10, -1, true, "", "", "*becomes frenzied!");
        }
Ejemplo n.º 2
0
        public override void OnGaveMeleeAttack(Mobile defender)
        {
            base.OnGaveMeleeAttack(defender);

            double spawnPercent = (double)intervalCount / (double)totalIntervals;

            double bloodlustChance = .20 + (.20 * spawnPercent);
            double bleedChance     = .20 + +(.20 * spawnPercent);

            if (Utility.RandomDouble() <= bloodlustChance && DateTime.UtcNow > m_NextBloodlustAllowed && DateTime.UtcNow > m_NextAbilityAllowed)
            {
                m_NextBloodlustAllowed = DateTime.UtcNow + TimeSpan.FromSeconds(30 - (20 * spawnPercent));
                m_NextAbilityAllowed   = DateTime.UtcNow + TimeSpan.FromSeconds(10 - (8 * spawnPercent));

                Effects.PlaySound(Combatant.Location, Combatant.Map, 0x28a);

                SpecialAbilities.FrenzySpecialAbility(1.0, this, defender, 0.5, 30, -1, true, "", "", "*becomes consumed with bloodlust*");

                Effects.SendLocationParticles(EffectItem.Create(Location, Map, TimeSpan.FromSeconds(0.25)), 0x3709, 10, 30, 2117, 0, 5029, 0);

                int bloodItem = 5 + (int)(Math.Ceiling(10 * spawnPercent));

                for (int a = 0; a < bloodItem; a++)
                {
                    new Blood().MoveToWorld(new Point3D(defender.Location.X + Utility.RandomMinMax(-3, 3), defender.Location.Y + Utility.RandomMinMax(-3, 3), defender.Location.Z), Map);
                }
            }

            else
            {
                SpecialAbilities.BleedSpecialAbility(bleedChance, this, defender, DamageMax, 8.0, -1, true, "", "Their attack causes you to bleed!", "-1");
            }
        }
Ejemplo n.º 3
0
        public override void OnGaveMeleeAttack(Mobile defender)
        {
            base.OnGaveMeleeAttack(defender);

            double effectChance = .25;

            if (Controlled && ControlMaster != null)
            {
                if (ControlMaster is PlayerMobile)
                {
                    effectChance = .20;
                }
            }

            SpecialAbilities.BleedSpecialAbility(effectChance, this, defender, DamageMax, 8.0, -1, true, "", "Their bite causes you to bleed!", "-1");

            effectChance = .20;

            if (Controlled && ControlMaster != null)
            {
                if (ControlMaster is PlayerMobile)
                {
                    if (defender is PlayerMobile)
                    {
                        effectChance = .05;
                    }
                    else
                    {
                        effectChance = .25;
                    }
                }
            }

            SpecialAbilities.FrenzySpecialAbility(effectChance, this, defender, .25, 10, -1, true, "", "", "*becomes frenzied*");
        }
Ejemplo n.º 4
0
        public override void OnGaveMeleeAttack(Mobile defender)
        {
            base.OnGaveMeleeAttack(defender);

            double effectChance = .2;

            SpecialAbilities.FrenzySpecialAbility(effectChance, this, defender, 1.0, 15, -1, true, "", "", "*becomes frenzied*");
        }
Ejemplo n.º 5
0
        public override void OnGaveMeleeAttack(Mobile defender)
        {
            base.OnGaveMeleeAttack(defender);

            if (Utility.RandomDouble() <= .2)
            {
                PlaySound(GetAngerSound());
                SpecialAbilities.FrenzySpecialAbility(1.0, this, defender, 0.5, 20, -1, true, "", "", "*begins to strike with unnatural quickness*");
            }
        }
Ejemplo n.º 6
0
        public override void OnGaveMeleeAttack(Mobile defender)
        {
            base.OnGaveMeleeAttack(defender);

            if (Utility.RandomDouble() < .1 && DateTime.UtcNow >= m_NextFlurryAllowed)
            {
                SpecialAbilities.FrenzySpecialAbility(1.0, this, defender, 1.0, 10, -1, true, "", "", "*begins to enter a trance*");

                m_NextFlurryAllowed = DateTime.UtcNow + NextFlurryDelay;
            }
        }
Ejemplo n.º 7
0
        public override void OnGaveMeleeAttack(Mobile defender)
        {
            base.OnGaveMeleeAttack(defender);

            double effectChance = .25;

            if (Controlled && ControlMaster != null)
            {
                if (ControlMaster is PlayerMobile)
                {
                    if (defender is PlayerMobile)
                    {
                        effectChance = .05;
                    }
                }
            }

            SpecialAbilities.FrenzySpecialAbility(effectChance, this, defender, .25, 10, -1, true, "", "", "*becomes frenzied*");
        }
Ejemplo n.º 8
0
        public override void OnGaveMeleeAttack(Mobile defender)
        {
            base.OnGaveMeleeAttack(defender);

            m_NextStealthCheckAllowed = DateTime.UtcNow + StealthDelay;

            double effectChance = .1;

            if (Controlled && ControlMaster != null)
            {
                if (ControlMaster is PlayerMobile)
                {
                    if (defender is PlayerMobile)
                    {
                        effectChance = 0.0;
                    }

                    else
                    {
                        effectChance = .1;
                    }
                }
            }

            if (m_NextFlurryAllowed <= DateTime.UtcNow)
            {
                if (Utility.RandomDouble() <= effectChance)
                {
                    m_NextFlurryAllowed = DateTime.UtcNow + FlurryDelay;

                    SpecialAbilities.FrenzySpecialAbility(1.0, this, defender, 1.0, 5, -1, true, "", "", "*becomes a whirling fury of blades*");

                    AIObject.NextMove = DateTime.UtcNow;
                    LastSwingTime     = DateTime.UtcNow;
                }
            }

            m_NextStealthCheckAllowed = DateTime.UtcNow + StealthDelay;
        }
Ejemplo n.º 9
0
        public override void OnGaveMeleeAttack(Mobile defender)
        {
            base.OnGaveMeleeAttack(defender);

            if (Utility.RandomDouble() <= .10 && Body != 317)
            {
                SpecialAbilities.FrenzySpecialAbility(1.0, this, defender, 0.5, 20, -1, true, "", "", "*begins to strike with unnatural quickness*");
            }

            if (Utility.RandomDouble() <= .10 && m_NextFeedAllowed <= DateTime.UtcNow && Body != 317)
            {
                IsFeeding = true;

                m_NextFeedAllowed = DateTime.UtcNow + NextFeedDelay;
                m_FeedExpiration  = DateTime.UtcNow + FeedDuration;

                SpecialAbilities.HinderSpecialAbility(1.0, null, this, 1.0, 10, true, 0, false, "", "", "-1");

                FixedParticles(0x376A, 9, 32, 5030, EffectLayer.Waist);

                Blood blood = new Blood();
                blood.MoveToWorld(new Point3D(defender.X + Utility.RandomMinMax(-1, 1), defender.Y + Utility.RandomMinMax(-1, 1), defender.Z + 1), Map);

                double damage = DamageMax * 6;

                if (defender is BaseCreature)
                {
                    damage *= 1.5;
                }

                PublicOverheadMessage(MessageType.Regular, 0, false, "*begins to feed*");

                Animate(34, 5, 1, true, false, 0);

                SpecialAbilities.EntangleSpecialAbility(1.0, this, defender, 1.0, 10, -1, true, "", "", "-1");
                SpecialAbilities.BleedSpecialAbility(1.0, this, defender, damage, 10.0, 0x44D, true, "", "The creature sinks its fangs into you, ensnaring and feeding upon your blood!", "-1");
            }
        }
Ejemplo n.º 10
0
        public void Enrage()
        {
            double spawnPercent = (double)intervalCount / (double)totalIntervals;

            double directionDelay = .25;
            double initialDelay   = 1;
            double totalDelay     = directionDelay + initialDelay;

            SpecialAbilities.HinderSpecialAbility(1.0, null, this, 1.0, totalDelay, true, 0, false, "", "", "-1");

            m_NextEnrageAllowed  = DateTime.UtcNow + NextEnrageDelay;
            m_NextAbilityAllowed = DateTime.UtcNow + NextAbilityDelay + TimeSpan.FromSeconds(totalDelay);

            AbilityInProgress = true;

            Timer.DelayCall(TimeSpan.FromSeconds(totalDelay), delegate
            {
                if (!SpecialAbilities.Exists(this))
                {
                    return;
                }

                AbilityInProgress = false;
            });

            Effects.PlaySound(Location, Map, 0x4d7);

            PublicOverheadMessage(MessageType.Regular, 0, false, "*enters a fowl mood*");

            Point3D location = Location;
            Map     map      = Map;

            PlaySound(GetAngerSound());
            Animate(16, 8, 1, true, false, 0);

            Timer.DelayCall(TimeSpan.FromSeconds(directionDelay), delegate
            {
                if (!SpecialAbilities.Exists(this))
                {
                    return;
                }

                PlaySound(0x46A);

                FeatherExplosion(Location, Map, 20);

                SpecialAbilities.FrenzySpecialAbility(1.0, this, null, 1.0, EnrageDuration.TotalSeconds, 0, false, "", "", "");
                SpecialAbilities.EnrageSpecialAbility(1.0, null, this, .5, EnrageDuration.TotalSeconds, 0, false, "", "", "");

                Hue = EnragedHue;

                ActiveSpeed  = .25;
                PassiveSpeed = .25;
                CurrentSpeed = .25;

                Timer.DelayCall(EnrageDuration, delegate
                {
                    if (!SpecialAbilities.Exists(this))
                    {
                        return;
                    }

                    Hue = NormalHue;

                    ActiveSpeed  = .35;
                    PassiveSpeed = .35;
                    CurrentSpeed = .35;
                });
            });
        }