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"); } )); } }
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); } }
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); } }
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); } } }