Example #1
0
        public override void OnGaveMeleeAttack(Mobile defender)
        {
            base.OnGaveMeleeAttack(defender);

            if (Utility.RandomBool())
            {
                if (Rotworm.IsDiseased(defender))
                {
                    // * The bloodworm is repulsed by your diseased blood. *
                    defender.SendLocalizedMessage(1111668, "", 0x25);
                }
                else
                {
                    // *The bloodworm drains some of your blood to replenish its health.*
                    defender.SendLocalizedMessage(1111698, "", 0x25);

                    Hits += (defender.HitsMax - defender.Hits);
                }
            }

            if (0.1 > Utility.RandomDouble() && !IsAnemic(defender) && !FontOfFortune.HasBlessing(defender, FontOfFortune.BlessingType.Protection))
            {
                defender.SendLocalizedMessage(1111669);                   // The bloodworm's attack weakens you. You have become anemic.

                defender.AddStatMod(new StatMod(StatType.Str, "[Bloodworm] Str Malus", -40, TimeSpan.FromSeconds(15.0)));
                defender.AddStatMod(new StatMod(StatType.Dex, "[Bloodworm] Dex Malus", -40, TimeSpan.FromSeconds(15.0)));
                defender.AddStatMod(new StatMod(StatType.Int, "[Bloodworm] Int Malus", -40, TimeSpan.FromSeconds(15.0)));

                Effects.SendPacket(defender, defender.Map, new GraphicalEffect(EffectType.FixedFrom, defender.Serial, Serial.Zero, 0x375A, defender.Location, defender.Location, 9, 20, true, false));
                Effects.SendTargetParticles(defender, 0x373A, 1, 15, 0x26B9, EffectLayer.Head);
                Effects.SendLocationParticles(defender, 0x11A6, 9, 32, 0x253A);

                defender.PlaySound(0x1ED);

                Timer.DelayCall(TimeSpan.FromSeconds(15.0), new TimerCallback(
                                    delegate
                {
                    // You recover from your anemia.
                    defender.SendLocalizedMessage(1111670);

                    defender.RemoveStatMod("[Bloodworm] Str Malus");
                    defender.RemoveStatMod("[Bloodworm] Dex Malus");
                    defender.RemoveStatMod("[Bloodworm] Int Malus");
                }
                                    ));
            }
        }
Example #2
0
        public override void OnGotMeleeAttack(Mobile m, Mobile attacker)
        {
            if (FontOfFortune.HasBlessing(attacker, FontOfFortune.BlessingType.Protection))
            {
                return;
            }

            if (!m_Table.ContainsKey(attacker) && m.InRange(attacker, 1))
            {
                // The rotworm has infected you with blood disease!!
                attacker.SendLocalizedMessage(1111672, "", 0x25);

                attacker.PlaySound(0x213);
                Effects.SendTargetParticles(attacker, 0x373A, 1, 15, 0x26B9, EffectLayer.Head);

                var timer = new InternalTimer(attacker);
                timer.Start();

                m_Table.Add(attacker, timer);
            }
        }
Example #3
0
        public override void OnGotMeleeAttack(Mobile attacker)
        {
            base.OnGotMeleeAttack(attacker);

            if (!m_BloodDiseaseTable.ContainsKey(attacker) && this.InRange(attacker, 1) && 0.25 > Utility.RandomDouble() && !FontOfFortune.HasBlessing(attacker, FontOfFortune.BlessingType.Protection))
            {
                // The rotworm has infected you with blood disease!!
                attacker.SendLocalizedMessage(1111672, "", 0x25);

                attacker.PlaySound(0x213);
                Effects.SendTargetParticles(attacker, 0x373A, 1, 15, 0x26B9, EffectLayer.Head);

                BloodDiseaseTimer timer = new BloodDiseaseTimer(attacker);
                timer.Start();

                m_BloodDiseaseTable.Add(attacker, timer);
            }
        }
Example #4
0
        public override void OnMovement(Mobile m, Point3D oldLocation)
        {
            if (m.Alive && !m.IsDeadBondedPet)
            {
                if (0.2 > Utility.RandomDouble() && !m_TangleCooldown.Contains(m) && this.InRange(m, 6) && !FontOfFortune.HasBlessing(m, FontOfFortune.BlessingType.Protection))
                {
                    m.Frozen = true;
                    m.MoveToWorld(Location, Map);

                    m.PlaySound(0x1FE);
                    m.SendLocalizedMessage(1111641);                       // You become entangled in the acid drenched roots.

                    m_TangleCooldown.Add(m);

                    Timer.DelayCall(TimeSpan.FromSeconds(Utility.RandomMinMax(3, 6)), new TimerStateCallback <Mobile>(Untangle), m);
                    Timer.DelayCall(TimeSpan.FromSeconds(15.0), new TimerStateCallback <Mobile>(RemoveCooldown), m);
                }

                if (m.InRange(this, 1) && !m_DamageTable.ContainsKey(m))
                {
                    // Should start the timer
                    m_DamageTable[m] = Timer.DelayCall(TimeSpan.Zero, TimeSpan.FromSeconds(1.0), new TimerStateCallback <Mobile>(DoDamage), m);
                }
            }
        }