public static void SetupDespise_OnCommand(CommandEventArgs e) { if (DespiseController.Instance == null) { DespiseController.RemoveAnkh(); DespiseController controller = new DespiseController(); WeakEntityCollection.Add("despise", controller); controller.MoveToWorld(new Point3D(5571, 626, 30), Map.Trammel); DespiseAnkh ankh = new DespiseAnkh(Alignment.Good); WeakEntityCollection.Add("despise", ankh); ankh.MoveToWorld(new Point3D(5474, 525, 79), Map.Trammel); ankh = new DespiseAnkh(Alignment.Evil); WeakEntityCollection.Add("despise", ankh); ankh.MoveToWorld(new Point3D(5472, 754, 10), Map.Trammel); SetupTeleporters(); //Teleporters IPooledEnumerable eable = Map.Trammel.GetItemsInRange(new Point3D(5588, 631, 30), 2); DespiseTeleporter tele = null; //Wisp MysteriousWisp wisp = new MysteriousWisp(); WeakEntityCollection.Add("despise", wisp); wisp.MoveToWorld(new Point3D(1303, 1088, 0), Map.Trammel); foreach (Item item in eable) { if (item is Teleporter old) { tele = new DespiseTeleporter(); WeakEntityCollection.Add("despise", tele); tele.PointDest = old.PointDest; tele.MapDest = old.MapDest; tele.MoveToWorld(old.Location, old.Map); old.Delete(); } } eable.Free(); e.Mobile.SendMessage("Despise setup complete"); } else { e.Mobile.SendMessage("Despise appears to already be setup"); } if (DespiseController.Instance != null) { DespiseController.Instance.CheckSpawnersVersion3(); } }
public DespiseController() : base(3806) { Movable = false; Visible = false; m_Enabled = true; m_Instance = this; m_NextBossEncounter = DateTime.Now; m_Boss = null; if(m_Enabled) BeginTimer(); CreateSpawners(); }
public override void OnDeath(Mobile m) { base.OnDeath(m); if (m is DespiseBoss) { DespiseController controller = DespiseController.Instance; if (controller != null && controller.Boss == m) { controller.OnBossSlain(); } } else if (m is PlayerMobile && m_LowerLevel) { KickFromRegion(m, false); } }
public DespiseController() : base(3806) { Movable = false; Visible = false; m_Enabled = true; m_Instance = this; m_NextBossEncounter = DateTime.UtcNow; m_Boss = null; if (m_Enabled) { BeginTimer(); } CreateSpawners(); }
public override void OnDeath(Mobile m) { base.OnDeath(m); if (m is DespiseBoss) { DespiseController controller = DespiseController.Instance; if (controller != null && controller.Boss == m) { Server.Engines.Quests.WhisperingWithWispsQuest.OnBossSlain((DespiseBoss)m); controller.OnBossSlain(); } } else if (m is PlayerMobile && m_LowerLevel) { KickFromRegion(m, false); } }
public override void OnEnter(Mobile m) { if (m.AccessLevel > AccessLevel.Player) { return; } if (!IsInStartRegion(m.Location) && m is BaseCreature && !(m is DespiseCreature) && !(m is CorruptedWisp) && !(m is EnsorcledWisp) && (((BaseCreature)m).Controlled || ((BaseCreature)m).Summoned)) { KickPet(m); } if (m is PlayerMobile && IsInLowerRegion(m.Location)) { WispOrb orb = DespiseController.GetWispOrb(m); if (orb == null) { Timer.DelayCall(TimeSpan.FromSeconds(1), new TimerStateCallback(Kick_Callback), m); } } }
public static void OnLogin(LoginEventArgs e) { Mobile from = e.Mobile; DespiseController controller = m_Instance; if (controller != null && controller.LowerRegion != null) { if (from.Region != null && from.Region.IsPartOf(controller.LowerRegion) && !controller.IsInSequence) { WispOrb orb = GetWispOrb(from); Rectangle2D bounds = EvilKickBounds; if (orb != null && orb.Alignment == Alignment.Good) { bounds = GoodKickBounds; } while (true) { int x = Utility.RandomMinMax(bounds.X, bounds.X + bounds.Width); int y = Utility.RandomMinMax(bounds.Y, bounds.Y + bounds.Height); int z = Map.Trammel.GetAverageZ(x, y); if (Map.Trammel.CanSpawnMobile(x, y, z)) { from.MoveToWorld(new Point3D(x, y, z), Map.Trammel); if (orb != null && orb.Pet != null && orb.Pet.Alive) { orb.Pet.MoveToWorld(new Point3D(x, y, z), Map.Trammel); } break; } } } } }
private void KickFromRegion(Mobile m, bool telepet) { while (true) { int x = Utility.RandomMinMax(m_KickBounds.X, m_KickBounds.X + m_KickBounds.Width); int y = Utility.RandomMinMax(m_KickBounds.Y, m_KickBounds.Y + m_KickBounds.Height); int z = Map.Trammel.GetAverageZ(x, y); Point3D p = new Point3D(x, y, z); if (this.Map.CanSpawnMobile(p)) { if (m.Corpse != null) { m.Corpse.MoveToWorld(p, Map.Trammel); } m.MoveToWorld(p, Map.Trammel); if (telepet) { WispOrb.TeleportPet(m); } else { WispOrb orb = DespiseController.GetWispOrb(m); if (orb != null && orb.Pet != null) { orb.Pet.Kill(); } } break; } } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); m_EvilSpawners = new List<XmlSpawner>(); m_GoodSpawners = new List<XmlSpawner>(); m_Instance = this; m_Enabled = reader.ReadBool(); m_NextBossEncounter = reader.ReadDateTime(); m_Boss = reader.ReadMobile() as DespiseBoss; m_DeadLine = reader.ReadDateTime(); m_SequenceAlignment = (Alignment)reader.ReadInt(); int count = reader.ReadInt(); for (int i = 0; i < count; i++) { XmlSpawner spawner = reader.ReadItem() as XmlSpawner; if (spawner != null) m_GoodSpawners.Add(spawner); } count = reader.ReadInt(); for (int i = 0; i < count; i++) { XmlSpawner spawner = reader.ReadItem() as XmlSpawner; if (spawner != null) m_EvilSpawners.Add(spawner); } //Conversion to new Point System if (version == 0) { count = reader.ReadInt(); for (int i = 0; i < count; i++) { Mobile m = reader.ReadMobile(); int points = reader.ReadInt(); if (m != null && points > 0) Server.Engines.Points.PointsSystem.DespiseCrystals.ConvertFromOldSystem((PlayerMobile)m, points); //m_PointsTable[m] = points; } } if(!m_Enabled) return; BeginTimer(); if(m_DeadLine > DateTime.Now) { if(m_Boss != null && m_Boss.Alive) { BeginSequenceTimer(); return; } } else if (m_DeadLine != DateTime.MinValue) { BeginCleanupTimer(); return; } EndSequence(); if (m_GoodSpawners.Count == 0 && m_EvilSpawners.Count == 0) CreateSpawners(); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); m_EvilSpawners = new List <XmlSpawner>(); m_GoodSpawners = new List <XmlSpawner>(); m_Instance = this; m_Enabled = reader.ReadBool(); m_NextBossEncounter = reader.ReadDateTime(); m_Boss = reader.ReadMobile() as DespiseBoss; m_DeadLine = reader.ReadDateTime(); m_SequenceAlignment = (Alignment)reader.ReadInt(); if (version < 4) { Timer.DelayCall(TimeSpan.FromSeconds(30), CheckSpawnersVersion3); } int count = reader.ReadInt(); for (int i = 0; i < count; i++) { XmlSpawner spawner = reader.ReadItem() as XmlSpawner; if (spawner != null) { m_GoodSpawners.Add(spawner); } } count = reader.ReadInt(); for (int i = 0; i < count; i++) { XmlSpawner spawner = reader.ReadItem() as XmlSpawner; if (spawner != null) { m_EvilSpawners.Add(spawner); } } //Conversion to new Point System if (version == 0) { count = reader.ReadInt(); for (int i = 0; i < count; i++) { Mobile m = reader.ReadMobile(); int points = reader.ReadInt(); if (m != null && points > 0) { Server.Engines.Points.PointsSystem.DespiseCrystals.ConvertFromOldSystem((PlayerMobile)m, points); } } } if (!m_Enabled) { return; } BeginTimer(); if (m_DeadLine > DateTime.UtcNow) { if (m_Boss != null && m_Boss.Alive) { BeginSequenceTimer(); return; } } else if (m_DeadLine != DateTime.MinValue) { BeginCleanupTimer(); return; } EndSequence(); if (m_GoodSpawners.Count == 0 && m_EvilSpawners.Count == 0) { CreateSpawners(); } if (version < 2) { Timer.DelayCall(TimeSpan.FromSeconds(30), RemoveAnkh); } }
public static void SetupDespise_OnCommand(CommandEventArgs e) { if (DespiseController.Instance == null) { foreach (Region region in Region.Regions) { if (region.Name == "Despise" && region.Map == Map.Trammel) { foreach (Sector sector in region.Sectors) { List<Item> list = new List<Item>(sector.Items); foreach (Item item in list) { if (item is XmlSpawner) ((XmlSpawner)item).DoReset = true; } list.Clear(); } } } CommandEventArgs args = new CommandEventArgs(e.Mobile, null, null, new string[] { @"Data\Monsters\NewDespise" }); XmlSpawner.Load_OnCommand(args); DespiseController controller = new DespiseController(); controller.MoveToWorld(new Point3D(5571, 626, 30), Map.Trammel); DespiseAnkh ankh = new DespiseAnkh(Alignment.Good); ankh.MoveToWorld(new Point3D(5474, 525, 79), Map.Trammel); ankh = new DespiseAnkh(Alignment.Evil); ankh.MoveToWorld(new Point3D(5472, 754, 10), Map.Trammel); Moongate gate1 = new Moongate(false); Moongate gate2 = new Moongate(false); //Gate1 gate1.MoveToWorld(new Point3D(5475, 735, 5), Map.Trammel); gate2.MoveToWorld(new Point3D(5458, 610, 50), Map.Trammel); HueGates(gate1, gate2); LinkGates(gate1, gate2); gate1 = new Moongate(false); gate2 = new Moongate(false); //Gate2 gate1.MoveToWorld(new Point3D(5459, 674, 20), Map.Trammel); gate2.MoveToWorld(new Point3D(5454, 522, 60), Map.Trammel); HueGates(gate1, gate2); LinkGates(gate1, gate2); gate1 = new Moongate(false); gate2 = new Moongate(false); //Gate3 gate1.MoveToWorld(new Point3D(5388, 753, 5), Map.Trammel); gate2.MoveToWorld(new Point3D(5387, 628, 30), Map.Trammel); HueGates(gate1, gate2); LinkGates(gate1, gate2); //Teleporters IPooledEnumerable eable = Map.Trammel.GetItemsInRange(new Point3D(5588, 631, 30), 2); DespiseTeleporter tele = null; //Wisp MysteriousWisp wisp = new MysteriousWisp(); wisp.MoveToWorld(new Point3D(1303, 1088, 0), Map.Trammel); foreach (Item item in eable) { if (item is Teleporter) { Teleporter old = (Teleporter)item; tele = new DespiseTeleporter(); tele.PointDest = old.PointDest; tele.MapDest = old.MapDest; tele.MoveToWorld(old.Location, old.Map); old.Delete(); } } eable.Free(); e.Mobile.SendMessage("Despise Revamped setup! Don't forget to setup mob spawners an activate it!"); } else e.Mobile.SendMessage("This has already been setup."); }
public static void SetupDespise_OnCommand(CommandEventArgs e) { if (DespiseController.Instance == null) { DespiseController controller = new DespiseController(); WeakEntityCollection.Add("despise", controller); controller.MoveToWorld(new Point3D(5571, 626, 30), Map.Trammel); DespiseAnkh ankh = new DespiseAnkh(Alignment.Good); WeakEntityCollection.Add("despise", ankh); ankh.MoveToWorld(new Point3D(5474, 525, 79), Map.Trammel); ankh = new DespiseAnkh(Alignment.Evil); WeakEntityCollection.Add("despise", ankh); ankh.MoveToWorld(new Point3D(5472, 754, 10), Map.Trammel); Moongate gate1 = new Moongate(false); Moongate gate2 = new Moongate(false); WeakEntityCollection.Add("despise", gate1); WeakEntityCollection.Add("despise", gate2); //Gate1 gate1.MoveToWorld(new Point3D(5475, 735, 5), Map.Trammel); gate2.MoveToWorld(new Point3D(5458, 610, 50), Map.Trammel); HueGates(gate1, gate2); LinkGates(gate1, gate2); gate1 = new Moongate(false); gate2 = new Moongate(false); WeakEntityCollection.Add("despise", gate1); WeakEntityCollection.Add("despise", gate2); //Gate2 gate1.MoveToWorld(new Point3D(5459, 674, 20), Map.Trammel); gate2.MoveToWorld(new Point3D(5454, 522, 60), Map.Trammel); HueGates(gate1, gate2); LinkGates(gate1, gate2); gate1 = new Moongate(false); gate2 = new Moongate(false); WeakEntityCollection.Add("despise", gate1); WeakEntityCollection.Add("despise", gate2); //Gate3 gate1.MoveToWorld(new Point3D(5388, 753, 5), Map.Trammel); gate2.MoveToWorld(new Point3D(5387, 628, 30), Map.Trammel); HueGates(gate1, gate2); LinkGates(gate1, gate2); //Teleporters IPooledEnumerable eable = Map.Trammel.GetItemsInRange(new Point3D(5588, 631, 30), 2); DespiseTeleporter tele = null; //Wisp MysteriousWisp wisp = new MysteriousWisp(); WeakEntityCollection.Add("despise", wisp); wisp.MoveToWorld(new Point3D(1303, 1088, 0), Map.Trammel); foreach (Item item in eable) { if (item is Teleporter) { Teleporter old = (Teleporter)item; tele = new DespiseTeleporter(); WeakEntityCollection.Add("despise", tele); tele.PointDest = old.PointDest; tele.MapDest = old.MapDest; tele.MoveToWorld(old.Location, old.Map); old.Delete(); } } eable.Free(); e.Mobile.SendMessage("Despise setup complete"); } else { e.Mobile.SendMessage("Despise appears to already be setup"); } }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); m_EvilSpawners = new List <XmlSpawner>(); m_GoodSpawners = new List <XmlSpawner>(); m_Instance = this; m_Enabled = reader.ReadBool(); m_NextBossEncounter = reader.ReadDateTime(); m_Boss = reader.ReadMobile() as DespiseBoss; m_DeadLine = reader.ReadDateTime(); m_SequenceAlignment = (Alignment)reader.ReadInt(); int count = reader.ReadInt(); for (int i = 0; i < count; i++) { XmlSpawner spawner = reader.ReadItem() as XmlSpawner; if (spawner != null) { m_GoodSpawners.Add(spawner); } } count = reader.ReadInt(); for (int i = 0; i < count; i++) { XmlSpawner spawner = reader.ReadItem() as XmlSpawner; if (spawner != null) { m_EvilSpawners.Add(spawner); } } count = reader.ReadInt(); for (int i = 0; i < count; i++) { Mobile m = reader.ReadMobile(); int points = reader.ReadInt(); if (m != null && points > 0) { m_PointsTable[m] = points; } } if (!m_Enabled) { return; } BeginTimer(); if (m_DeadLine > DateTime.Now) { if (m_Boss != null && m_Boss.Alive) { BeginSequenceTimer(); return; } } else if (m_DeadLine != DateTime.MinValue) { BeginCleanupTimer(); return; } EndSequence(); }
public static void SetupDespise_OnCommand(CommandEventArgs e) { if (DespiseController.Instance == null) { foreach (Region region in Region.Regions) { if (region.Name == "Despise" && region.Map == Map.Trammel) { foreach (Sector sector in region.Sectors) { List <Item> list = new List <Item>(sector.Items); foreach (Item item in list) { if (item is XmlSpawner) { ((XmlSpawner)item).DoReset = true; } } list.Clear(); } } } CommandEventArgs args = new CommandEventArgs(e.Mobile, null, null, new string[] { @"Data\Monsters\NewDespise" }); XmlSpawner.Load_OnCommand(args); DespiseController controller = new DespiseController(); controller.MoveToWorld(new Point3D(5571, 626, 30), Map.Trammel); DespiseAnkh ankh = new DespiseAnkh(Alignment.Good); ankh.MoveToWorld(new Point3D(5474, 525, 79), Map.Trammel); ankh = new DespiseAnkh(Alignment.Evil); ankh.MoveToWorld(new Point3D(5472, 754, 10), Map.Trammel); Moongate gate1 = new Moongate(false); Moongate gate2 = new Moongate(false); //Gate1 gate1.MoveToWorld(new Point3D(5475, 735, 5), Map.Trammel); gate2.MoveToWorld(new Point3D(5458, 610, 50), Map.Trammel); HueGates(gate1, gate2); LinkGates(gate1, gate2); gate1 = new Moongate(false); gate2 = new Moongate(false); //Gate2 gate1.MoveToWorld(new Point3D(5459, 674, 20), Map.Trammel); gate2.MoveToWorld(new Point3D(5454, 522, 60), Map.Trammel); HueGates(gate1, gate2); LinkGates(gate1, gate2); gate1 = new Moongate(false); gate2 = new Moongate(false); //Gate3 gate1.MoveToWorld(new Point3D(5388, 753, 5), Map.Trammel); gate2.MoveToWorld(new Point3D(5387, 628, 30), Map.Trammel); HueGates(gate1, gate2); LinkGates(gate1, gate2); //Teleporters IPooledEnumerable eable = Map.Trammel.GetItemsInRange(new Point3D(5588, 631, 30), 2); DespiseTeleporter tele = null; //Wisp MysteriousWisp wisp = new MysteriousWisp(); wisp.MoveToWorld(new Point3D(1303, 1088, 0), Map.Trammel); foreach (Item item in eable) { if (item is Teleporter) { Teleporter old = (Teleporter)item; tele = new DespiseTeleporter(); tele.PointDest = old.PointDest; tele.MapDest = old.MapDest; tele.MoveToWorld(old.Location, old.Map); old.Delete(); } } eable.Free(); e.Mobile.SendMessage("Despise Revamped setup! Don't forget to setup mob spawners an activate it!"); } else { e.Mobile.SendMessage("This has already been setup."); } }
public static void SetupDespise_OnCommand(CommandEventArgs e) { if (DespiseController.Instance == null) { DespiseController controller = new DespiseController(); WeakEntityCollection.Add("despise", controller); controller.MoveToWorld(new Point3D(5571, 626, 30), Map.Trammel); DespiseAnkh ankh = new DespiseAnkh(Alignment.Good); WeakEntityCollection.Add("despise", ankh); ankh.MoveToWorld(new Point3D(5474, 525, 79), Map.Trammel); ankh = new DespiseAnkh(Alignment.Evil); WeakEntityCollection.Add("despise", ankh); ankh.MoveToWorld(new Point3D(5472, 754, 10), Map.Trammel); Moongate gate1 = new Moongate(false); Moongate gate2 = new Moongate(false); WeakEntityCollection.Add("despise", gate1); WeakEntityCollection.Add("despise", gate2); //Gate1 gate1.MoveToWorld(new Point3D(5475, 735, 5), Map.Trammel); gate2.MoveToWorld(new Point3D(5458, 610, 50), Map.Trammel); HueGates(gate1, gate2); LinkGates(gate1, gate2); gate1 = new Moongate(false); gate2 = new Moongate(false); WeakEntityCollection.Add("despise", gate1); WeakEntityCollection.Add("despise", gate2); //Gate2 gate1.MoveToWorld(new Point3D(5459, 674, 20), Map.Trammel); gate2.MoveToWorld(new Point3D(5454, 522, 60), Map.Trammel); HueGates(gate1, gate2); LinkGates(gate1, gate2); gate1 = new Moongate(false); gate2 = new Moongate(false); WeakEntityCollection.Add("despise", gate1); WeakEntityCollection.Add("despise", gate2); //Gate3 gate1.MoveToWorld(new Point3D(5388, 753, 5), Map.Trammel); gate2.MoveToWorld(new Point3D(5387, 628, 30), Map.Trammel); HueGates(gate1, gate2); LinkGates(gate1, gate2); //Teleporters IPooledEnumerable eable = Map.Trammel.GetItemsInRange(new Point3D(5588, 631, 30), 2); DespiseTeleporter tele = null; //Wisp MysteriousWisp wisp = new MysteriousWisp(); WeakEntityCollection.Add("despise", wisp); wisp.MoveToWorld(new Point3D(1303, 1088, 0), Map.Trammel); foreach (Item item in eable) { if (item is Teleporter) { Teleporter old = (Teleporter)item; tele = new DespiseTeleporter(); WeakEntityCollection.Add("despise", tele); tele.PointDest = old.PointDest; tele.MapDest = old.MapDest; tele.MoveToWorld(old.Location, old.Map); old.Delete(); } } eable.Free(); e.Mobile.SendMessage("Despise setup complete"); } else e.Mobile.SendMessage("Despise appears to already be setup"); }