public override void Damage(Mobile m) { base.Damage(m); if (m.Alive) { Item item = m.FindItemOnLayer(Layer.OuterTorso); if (item is GMRobe) { AOS.Damage(m, 0, 0, 0, 0, 0, 0); } else if (item is GMRobeExplosion) { AOS.Damage(m, 0, 0, 0, 0, 0, 0); m.PlaySound(Utility.RandomList(0x307, 0x308)); } else if (item is GMRobeHoly) { AOS.Damage(m, 0, 0, 0, 0, 0, 0); m.FixedParticles(0x375A, 1, 30, 9966, 88, 2, EffectLayer.Head); m.FixedParticles(0x37B9, 1, 30, 9502, 85, 3, EffectLayer.Head); m.FixedParticles(0x376A, 1, 31, 9961, 80, 0, EffectLayer.Waist); m.FixedParticles(0x37C4, 1, 31, 9502, 88, 2, EffectLayer.Waist); } else if (item is GMRobeTrailfire) { AOS.Damage(m, 0, 0, 0, 0, 0, 0); m.FixedParticles(0x3709, 10, 30, 5052, EffectLayer.LeftFoot); } else { // Wind if (Utility.RandomDouble() < 0.09) { m.PlaySound(Utility.RandomList(0x014, 0x15, 0x016, 0x5C7)); AOS.Damage(m, 0, 0, 0, 0, 0, 0); } // Thunderstorm if (Utility.RandomDouble() < 0.06) { m.PlaySound(Utility.RandomList(0x028, 0x029, 0x206)); AOS.Damage(m, 0, 0, 0, 0, 0, 0); } // Lightning Strike if (Utility.RandomDouble() < 0.01) { m.PlaySound(Utility.RandomList(0x5CE)); m.BoltEffect(0x480); AOS.Damage(m, Utility.RandomMinMax(12, 35), 0, 0, 0, 0, 100); } // Random Encounter 1 if (Utility.RandomDouble() < 0.002) { if (m.Map == Map.Malas) { int x1 = m.X + 12; int y1 = m.Y + 12; int z1 = Map.Malas.GetAverageZ(x1, y1); if (Map.Malas.CanSpawnMobile(x1, y1, z1)) { BaseCreature encountera; switch (Utility.Random(3)) { default: case 0: encountera = new Ettin(); break; case 1: encountera = new Ogre(); break; case 2: encountera = new Troll(); break; } encountera.MoveToWorld(new Point3D(x1, y1, z1), Map.Malas); encountera.Combatant = m; AOS.Damage(m, 0, 0, 0, 0, 0, 0); Timer.DelayCall(TimeSpan.FromMinutes(3.0), new TimerStateCallback(DeleteEncounterA), encountera); } } } // Random Encounter 2 if (Utility.RandomDouble() < 0.002) { if (m.Map == Map.Malas) { int x2 = m.X - 12; int y2 = m.Y - 12; int z2 = Map.Malas.GetAverageZ(x2, y2); if (Map.Malas.CanSpawnMobile(x2, y2, z2)) { BaseCreature encountera; switch (Utility.Random(3)) { default: case 0: encountera = new Ettin(); break; case 1: encountera = new Ogre(); break; case 2: encountera = new Troll(); break; } encountera.MoveToWorld(new Point3D(x2, y2, z2), Map.Malas); encountera.Combatant = m; AOS.Damage(m, 0, 0, 0, 0, 0, 0); Timer.DelayCall(TimeSpan.FromMinutes(3.0), new TimerStateCallback(DeleteEncounterA), encountera); } } } // Tamable Encounter 1 if (Utility.RandomDouble() < 0.002) { if (m.Map == Map.Malas) { int x1 = m.X + 12; int y1 = m.Y + 12; int z1 = Map.Malas.GetAverageZ(x1, y1); if (Map.Malas.CanSpawnMobile(x1, y1, z1)) { BaseCreature tameable; switch (Utility.Random(5)) { default: case 0: tameable = new Bird(); break; case 1: tameable = new BlackBear(); break; case 2: tameable = new DireWolf(); break; case 3: tameable = new Goat(); break; case 4: tameable = new Horse(); break; } tameable.MoveToWorld(new Point3D(x1, y1, z1), Map.Malas); AOS.Damage(m, 0, 0, 0, 0, 0, 0); Timer.DelayCall(TimeSpan.FromMinutes(2.0), new TimerStateCallback(DeleteTameable), tameable); } } } // Tamable Encounter 2 if (Utility.RandomDouble() < 0.002) { if (m.Map == Map.Malas) { int x2 = m.X - 12; int y2 = m.Y - 12; int z2 = Map.Malas.GetAverageZ(x2, y2); if (Map.Malas.CanSpawnMobile(x2, y2, z2)) { BaseCreature tameable; switch (Utility.Random(5)) { default: case 0: tameable = new Bird(); break; case 1: tameable = new BlackBear(); break; case 2: tameable = new DireWolf(); break; case 3: tameable = new Goat(); break; case 4: tameable = new Horse(); break; } tameable.MoveToWorld(new Point3D(x2, y2, z2), Map.Malas); AOS.Damage(m, 0, 0, 0, 0, 0, 0); Timer.DelayCall(TimeSpan.FromMinutes(2.0), new TimerStateCallback(DeleteTameable), tameable); } } } } } }
public override void OnDoubleClick(Mobile from) { if (IsChildOf(from.Backpack)) { int hours, minutes; Clock.GetTime(Map, Location.X, Location.Y, out hours, out minutes); if (hours <= 19) { #region Spawn Random Ambush switch (Utility.Random(3)) { case 0: { from.SendMessage("*As your gaze scans the horizon, you notice a group of brigands closing in*"); #region Define Mobiles To Spawn // I've reserved spawn01-spawn09; however, you can add as many variables as you like as long as they are unique Mobile spawn01 = new Brigand(); Mobile spawn02 = new Brigand(); Mobile spawn03 = new Brigand(); Mobile spawn04 = new Brigand(); Mobile spawn05 = new Brigand(); Mobile spawn06 = new Brigand(); #endregion switch (Utility.Random(2)) { case 1: { /// <summary> /// Don't forget to plug in the spawn variables you add above below: /// </summary> spawn01.MoveToWorld(new Point3D(from.X + 10, from.Y, from.Z), from.Map); spawn02.MoveToWorld(new Point3D(from.X + 10, from.Y, from.Z), from.Map); spawn03.MoveToWorld(new Point3D(from.X + 15, from.Y, from.Z), from.Map); spawn04.MoveToWorld(new Point3D(from.X, from.Y + 10, from.Z), from.Map); spawn05.MoveToWorld(new Point3D(from.X, from.Y + 15, from.Z), from.Map); spawn06.MoveToWorld(new Point3D(from.X, from.Y + 15, from.Z), from.Map); break; } case 0: { switch (Utility.Random(4)) { case 0: from.SendMessage("*As your gaze scans the horizon, all seems too quiet*"); break; case 1: from.SendMessage("*As your gaze scans the horizon, you hear breaking branches in the distance*"); break; // Sometimes a subspawn is the perfect ambiance/ detail to role-playing on a server case 2: from.SendMessage("*You notice the ground moving beneath your feet*"); Mobile subspawn01 = new Rat(); subspawn01.MoveToWorld(new Point3D(from.X, from.Y, from.Z), from.Map); break; case 3: from.SendMessage("*As your gaze scans the horizon, you feel confident all is well*"); break; } break; } } break; } case 1: { from.SendMessage("*As your gaze scans the horizon, you notice an Ettin patrol nearby*"); #region Define Mobiles To Spawn // I've reserved spawn11-spawn19; however, you can add as many variables as you like as long as they are unique Mobile spawn11 = new Ettin(); Mobile spawn12 = new Ettin(); Mobile spawn13 = new Ettin(); Mobile spawn14 = new Ettin(); Mobile spawn15 = new Ettin(); Mobile spawn16 = new Ettin(); #endregion switch (Utility.Random(2)) { case 1: { /// <summary> /// Don't forget to plug in the spawn variables you add above below: /// </summary> spawn11.MoveToWorld(new Point3D(from.X + 10, from.Y, from.Z), from.Map); spawn12.MoveToWorld(new Point3D(from.X + 10, from.Y, from.Z), from.Map); spawn13.MoveToWorld(new Point3D(from.X + 15, from.Y, from.Z), from.Map); spawn14.MoveToWorld(new Point3D(from.X, from.Y + 10, from.Z), from.Map); spawn15.MoveToWorld(new Point3D(from.X, from.Y + 15, from.Z), from.Map); spawn16.MoveToWorld(new Point3D(from.X, from.Y + 15, from.Z), from.Map); break; } case 0: { switch (Utility.Random(2, 4)) { case 0: from.SendMessage("*As your gaze scans the horizon, all seems too quiet*"); break; case 1: from.SendMessage("*As your gaze scans the horizon, you hear breaking branches in the distance*"); break; // Sometimes a subspawn is the perfect ambiance/ detail to role-playing on a server case 2: from.SendMessage("*You notice the ground moving beneath your feet*"); Mobile subspawn11 = new Rat(); subspawn11.MoveToWorld(new Point3D(from.X, from.Y, from.Z), from.Map); break; case 3: from.SendMessage("*As your gaze scans the horizon, you feel confident all is well*"); break; } break; } } break; } case 2: // This case makes the Scout Spyglass act like a normal Spyglass { if (hours < 5 || hours > 17) { from.SendLocalizedMessage(1055040); // You gaze up into the glittering night sky. With great care, you compose a chart of the most prominent star patterns. } else { from.SendLocalizedMessage(1055039); // You gaze up into the sky, but it is not dark enough to see any stars. } break; } } #endregion } else { #region Spawn Random Ambush switch (Utility.Random(3)) { case 0: { from.SendMessage("*As your gaze scans the horizon, you notice a group of black bears closing in*"); #region Define Mobiles To Spawn // I've reserved spawn21-spawn29; however, you can add as many variables as you like as long as they are unique Mobile spawn21 = new BlackBear(); Mobile spawn22 = new BlackBear(); Mobile spawn23 = new BlackBear(); Mobile spawn24 = new BlackBear(); Mobile spawn25 = new BlackBear(); Mobile spawn26 = new BlackBear(); #endregion switch (Utility.Random(2)) { case 1: { /// <summary> /// Don't forget to plug in the spawn variables you add above below: /// </summary> spawn21.MoveToWorld(new Point3D(from.X + 10, from.Y, from.Z), from.Map); spawn22.MoveToWorld(new Point3D(from.X + 15, from.Y, from.Z), from.Map); spawn23.MoveToWorld(new Point3D(from.X + 20, from.Y, from.Z), from.Map); spawn24.MoveToWorld(new Point3D(from.X, from.Y + 10, from.Z), from.Map); spawn25.MoveToWorld(new Point3D(from.X, from.Y + 15, from.Z), from.Map); spawn26.MoveToWorld(new Point3D(from.X, from.Y + 20, from.Z), from.Map); break; } case 0: { switch (Utility.Random(4)) { case 0: from.SendMessage("*As your gaze scans the horizon, all seems too quiet*"); break; case 1: from.SendMessage("*As your gaze scans the horizon, you hear breaking branches in the distance*"); break; // Sometimes a subspawn is the perfect ambiance/ detail to role-playing on a server case 2: from.SendMessage("*You notice the ground moving beneath your feet*"); Mobile subspawn21 = new Rat(); subspawn21.MoveToWorld(new Point3D(from.X, from.Y, from.Z), from.Map); break; case 3: from.SendMessage("*As your gaze scans the horizon, you feel confident all is well*"); break; } break; } } break; } case 1: { from.SendMessage("*As your gaze scans the horizon, you notice an Fire Gargoyle patrol nearby*"); #region Define Mobiles To Spawn // I've reserved spawn31-spawn39; however, you can add as many variables as you like as long as they are unique Mobile spawn31 = new FireGargoyle(); Mobile spawn32 = new FireSteed(); Mobile spawn33 = new FireGargoyle(); Mobile spawn34 = new FireSteed(); Mobile spawn35 = new FireGargoyle(); Mobile spawn36 = new FireBeetle(); #endregion switch (Utility.Random(2)) { case 1: { /// <summary> /// Don't forget to plug in the spawn variables you add above below: /// </summary> spawn31.MoveToWorld(new Point3D(from.X + 10, from.Y, from.Z), from.Map); spawn32.MoveToWorld(new Point3D(from.X + 15, from.Y, from.Z), from.Map); spawn33.MoveToWorld(new Point3D(from.X + 15, from.Y, from.Z), from.Map); spawn34.MoveToWorld(new Point3D(from.X, from.Y + 10, from.Z), from.Map); spawn35.MoveToWorld(new Point3D(from.X, from.Y + 10, from.Z), from.Map); spawn36.MoveToWorld(new Point3D(from.X, from.Y + 15, from.Z), from.Map); break; } case 0: { switch (Utility.Random(4)) { case 0: from.SendMessage("*As your gaze scans the horizon, all seems too quiet*"); break; case 1: from.SendMessage("*As your gaze scans the horizon, you hear breaking branches in the distance*"); break; // Sometimes a subspawn is the perfect ambiance/ detail to role-playing on a server case 2: from.SendMessage("*You notice the ground moving beneath your feet*"); Mobile subspawn31 = new Rat(); subspawn31.MoveToWorld(new Point3D(from.X, from.Y, from.Z), from.Map); break; case 3: from.SendMessage("*As your gaze scans the horizon, you feel confident all is well*"); break; } break; } } break; } case 2: // This case makes the Scout Spyglass act like a normal Spyglass { if (hours < 5 || hours > 17) { from.SendLocalizedMessage(1055040); // You gaze up into the glittering night sky. With great care, you compose a chart of the most prominent star patterns. } else { from.SendLocalizedMessage(1055039); // You gaze up into the sky, but it is not dark enough to see any stars. } break; } } #endregion } --this.UsesRemaining; if (this.UsesRemaining == 0) { this.Delete(); } } else { from.SendLocalizedMessage(1042001); // That must be in your pack for you to use it. } }