public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); m_Peerless = reader.ReadMobile() as BasePeerless; m_BossLocation = reader.ReadPoint3D(); m_TeleportDest = reader.ReadPoint3D(); m_ExitDest = reader.ReadPoint3D(); m_Deadline = reader.ReadDateTime(); // deserialize master keys m_MasterKeys = reader.ReadStrongItemList(); // deserialize fightes m_Fighters = reader.ReadStrongMobileList(); // deserialize pets m_Pets = new Dictionary <Mobile, List <Mobile> >(); int count = reader.ReadInt(); for (int i = 0; i < count; i++) { m_Pets.Add(reader.ReadMobile(), reader.ReadStrongMobileList()); } m_Spawned = reader.ReadBool(); FinishSequence(); }
public virtual void FinishSequence() { StopTimers(); // delete peerless if (m_Peerless != null) { if (m_Peerless.Corpse != null && !m_Peerless.Corpse.Deleted) { m_Peerless.Corpse.Delete(); } if (!m_Peerless.Deleted) { m_Peerless.Delete(); } } // teleport party to exit if not already there for (int i = 0; i < m_Fighters.Count; i++) { Exit(m_Fighters[i]); } // delete master keys for (int i = 0; i < m_MasterKeys.Count; i++) { if (m_MasterKeys[i] != null && !m_MasterKeys[i].Deleted) { m_MasterKeys[i].Delete(); } } if (m_MasterKeys != null) { m_MasterKeys.Clear(); } if (m_Fighters != null) { m_Fighters.Clear(); } if (m_Pets != null) { m_Pets.Clear(); } // delete any remaining helpers CleanupHelpers(); // reset summoner, boss m_Peerless = null; m_IsAvailable = true; m_Deadline = DateTime.MinValue; }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 2: case 1: if (reader.ReadBool()) { m_Helpers = reader.ReadStrongMobileList <BaseCreature>(); } goto case 0; case 0: m_Peerless = reader.ReadMobile() as BasePeerless; m_BossLocation = reader.ReadPoint3D(); m_TeleportDest = reader.ReadPoint3D(); m_ExitDest = reader.ReadPoint3D(); m_Deadline = reader.ReadDateTime(); m_MasterKeys = reader.ReadStrongItemList(); m_Fighters = reader.ReadStrongMobileList(); m_Pets = new Dictionary <Mobile, List <Mobile> >(); int count = reader.ReadInt(); for (int i = 0; i < count; i++) { m_Pets.Add(reader.ReadMobile(), reader.ReadStrongMobileList()); } if (version < 2) { reader.ReadBool(); } if (m_Peerless == null && m_Helpers.Count > 0) { Timer.DelayCall(TimeSpan.FromSeconds(30), new TimerCallback(CleanupHelpers)); } break; } FinishSequence(); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 2: case 1: if (reader.ReadBool()) { this.m_Helpers = reader.ReadStrongMobileList <BaseCreature>(); } goto case 0; case 0: this.m_Peerless = reader.ReadMobile() as BasePeerless; this.m_BossLocation = reader.ReadPoint3D(); this.m_TeleportDest = reader.ReadPoint3D(); this.m_ExitDest = reader.ReadPoint3D(); this.m_Deadline = reader.ReadDateTime(); // deserialize master keys this.m_MasterKeys = reader.ReadStrongItemList(); // deserialize fightes this.m_Fighters = reader.ReadStrongMobileList(); // deserialize pets this.m_Pets = new Dictionary <Mobile, List <Mobile> >(); int count = reader.ReadInt(); for (int i = 0; i < count; i++) { this.m_Pets.Add(reader.ReadMobile(), reader.ReadStrongMobileList()); } if (version < 2) { reader.ReadBool(); } break; } this.FinishSequence(); }
public virtual void BeginSequence(Mobile from) { if (this.m_Peerless == null) { // spawn boss this.m_Peerless = this.Boss; if (this.m_Peerless != null) { this.m_Peerless.Home = this.m_BossLocation; this.m_Peerless.RangeHome = 4; this.m_Peerless.MoveToWorld(this.m_BossLocation, this.Map); this.m_Peerless.Altar = this; } else { return; } // set deadline if (this.m_Timer != null) { this.m_Timer.Stop(); } if (this.TimeToSlay != TimeSpan.Zero) { this.m_Deadline = DateTime.Now + this.TimeToSlay; this.m_Timer = Timer.DelayCall(TimeSpan.FromMinutes(5), TimeSpan.FromMinutes(5), new TimerCallback(DeadlineCheck)); this.m_Timer.Priority = TimerPriority.OneMinute; } } // teleport figters for (int i = 0; i < this.m_Fighters.Count; i++) { Mobile fighter = this.m_Fighters[i]; int counter = 1; if (from.InRange(fighter.Location, 5) && this.CanEnter(fighter)) { Timer.DelayCall(TimeSpan.FromSeconds(counter), new TimerStateCallback(Enter_Callback), fighter); counter += 1; } } }
public virtual void BeginSequence(Mobile from) { if (m_Peerless == null) { // spawn boss m_Peerless = Boss; m_IsAvailable = false; if (m_Peerless != null) { m_Peerless.Home = m_BossLocation; m_Peerless.RangeHome = 12; m_Peerless.MoveToWorld(m_BossLocation, Map); m_Peerless.Altar = this; } else { return; } StartSlayTimer(); } Point3D loc = from.Location; // teleport fighters for (int i = 0; i < m_Fighters.Count; i++) { Mobile fighter = m_Fighters[i]; int counter = 1; if (fighter.InRange(loc, 15) && CanEnter(fighter)) { Timer.DelayCall(TimeSpan.FromSeconds(counter), new TimerStateCallback(Enter_Callback), fighter); counter += 1; } } }
public virtual void FinishSequence() { this.StopTimer(); // delete perless if (this.m_Peerless != null) { if (this.m_Peerless.Corpse != null) { this.m_Peerless.Corpse.Delete(); } this.m_Peerless.Delete(); } // teleport pary to exit if not already there for (int i = this.m_Fighters.Count - 1; i >= 0; i--) { this.Exit(this.m_Fighters[i]); } // delete master keys for (int i = this.m_MasterKeys.Count - 1; i >= 0; i--) { this.m_MasterKeys[i].Delete(); } this.m_MasterKeys.Clear(); this.m_Fighters.Clear(); this.m_Pets.Clear(); // delete any remaining helpers this.CleanupHelpers(); // reset summoner, boss this.m_Peerless = null; }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 4: case 3: m_IsAvailable = reader.ReadBool(); goto case 2; case 2: case 1: if (reader.ReadBool()) m_Helpers = reader.ReadStrongMobileList<BaseCreature>(); goto case 0; case 0: m_Peerless = reader.ReadMobile() as BasePeerless; m_BossLocation = reader.ReadPoint3D(); m_TeleportDest = reader.ReadPoint3D(); m_ExitDest = reader.ReadPoint3D(); m_Deadline = reader.ReadDateTime(); m_MasterKeys = reader.ReadStrongItemList(); m_Fighters = reader.ReadStrongMobileList(); if (version < 4) { int count = reader.ReadInt(); for (int i = 0; i < count; i++) { reader.ReadMobile(); reader.ReadStrongMobileList(); } } if (version < 2) reader.ReadBool(); if (m_Peerless == null && m_Helpers.Count > 0) Timer.DelayCall(TimeSpan.FromSeconds(30), new TimerCallback(CleanupHelpers)); break; } if (version == 2) { if (m_Peerless == null) { FinishSequence(); m_IsAvailable = true; } } else if (!m_IsAvailable && m_Peerless == null) { FinishSequence(); } }