public static void Generate(Faction faction) { Map facet = Faction.Facet; List <Town> towns = Town.Towns; StrongholdDefinition stronghold = faction.Definition.Stronghold; if (!CheckExistance(stronghold.JoinStone, facet, typeof(JoinStone))) { JoinStone join = new JoinStone(faction); WeakEntityCollection.Add("factions", join); join.MoveToWorld(stronghold.JoinStone, facet); } if (!CheckExistance(stronghold.FactionStone, facet, typeof(FactionStone))) { FactionStone stone = new FactionStone(faction); WeakEntityCollection.Add("factions", stone); stone.MoveToWorld(stronghold.FactionStone, facet); } for (int i = 0; i < stronghold.Monoliths.Length; ++i) { Point3D monolith = stronghold.Monoliths[i]; if (!CheckExistance(monolith, facet, typeof(StrongholdMonolith))) { StrongholdMonolith mono = new StrongholdMonolith(towns[i], faction); WeakEntityCollection.Add("factions", mono); mono.MoveToWorld(monolith, facet); } } }
public static void Generate(Faction faction) { Map facet = Faction.Facet; List<Town> towns = Town.Towns; StrongholdDefinition stronghold = faction.Definition.Stronghold; if (!CheckExistance(stronghold.JoinStone, facet, typeof(JoinStone))) { JoinStone join = new JoinStone(faction); WeakEntityCollection.Add("factions", join); join.MoveToWorld(stronghold.JoinStone, facet); } if (!CheckExistance(stronghold.FactionStone, facet, typeof(FactionStone))) { FactionStone stone = new FactionStone(faction); WeakEntityCollection.Add("factions", stone); stone.MoveToWorld(stronghold.FactionStone, facet); } for (int i = 0; i < stronghold.Monoliths.Length; ++i) { Point3D monolith = stronghold.Monoliths[i]; if (!CheckExistance(monolith, facet, typeof(StrongholdMonolith))) { StrongholdMonolith mono = new StrongholdMonolith(towns[i], faction); WeakEntityCollection.Add("factions", mono); mono.MoveToWorld(monolith, facet); } } }
private void Sigil_OnTarget(Mobile from, object obj) { if (Deleted || !IsChildOf(from.Backpack)) { return; } #region Give To Mobile if (obj is Mobile) { if (obj is PlayerMobile) { PlayerMobile targ = (PlayerMobile)obj; Faction toFaction = Faction.Find(targ); Faction fromFaction = Faction.Find(from); if (toFaction == null) { from.SendLocalizedMessage(1005223); // You cannot give the sigil to someone not in a faction } else if (fromFaction != toFaction) { from.SendLocalizedMessage(1005222); // You cannot give the sigil to someone not in your faction } else if (Sigil.ExistsOn(targ)) { from.SendLocalizedMessage(1005220); // You cannot give this sigil to someone who already has a sigil } else if (!targ.Alive) { from.SendLocalizedMessage(1042248); // You cannot give a sigil to a dead person. } else if (from.NetState != null && targ.NetState != null) { Container pack = targ.Backpack; if (pack != null) { pack.DropItem(this); } } } else { from.SendLocalizedMessage(1005221); //You cannot give the sigil to them } } #endregion else if (obj is BaseMonolith) { #region Put in Stronghold if (obj is StrongholdMonolith) { StrongholdMonolith m = (StrongholdMonolith)obj; if (m.Faction == null || m.Faction != Faction.Find(from)) { from.SendLocalizedMessage(1042246); // You can't place that on an enemy monolith } else if (m.Town == null || m.Town != m_Town) { from.SendLocalizedMessage(1042247); // That is not the correct faction monolith } else { m.Sigil = this; Faction newController = m.Faction; Faction oldController = m_Corrupting; if (oldController == null) { if (m_Corrupted != newController) { BeginCorrupting(newController); } } else if (m_GraceStart > DateTime.MinValue && (m_GraceStart + CorruptionGrace) < DateTime.UtcNow) { if (m_Corrupted != newController) { BeginCorrupting(newController); // grace time over, reset period } else { ClearCorrupting(); } m_GraceStart = DateTime.MinValue; } else if (newController == oldController) { m_GraceStart = DateTime.MinValue; // returned within grace period } else if (m_GraceStart == DateTime.MinValue) { m_GraceStart = DateTime.UtcNow; } m_PurificationStart = DateTime.MinValue; } } #endregion #region Put in Town else if (obj is TownMonolith) { TownMonolith m = (TownMonolith)obj; if (m.Town == null || m.Town != m_Town) { from.SendLocalizedMessage(1042245); // This is not the correct town sigil monolith } else if (m_Corrupted == null || m_Corrupted != Faction.Find(from)) { from.SendLocalizedMessage(1042244); // Your faction did not corrupt this sigil. Take it to your stronghold. } else { m.Sigil = this; m_Corrupting = null; m_PurificationStart = DateTime.UtcNow; m_CorruptionStart = DateTime.MinValue; m_Town.Capture(m_Corrupted); m_Corrupted = null; } } #endregion } else { from.SendLocalizedMessage(1005224); // You can't use the sigil on that } Update(); }
private void Sigil_OnTarget(Mobile from, object obj) { if (Deleted || !IsChildOf(from.Backpack)) { return; } #region Give To Mobile if (obj is Mobile) { if (obj is PlayerMobile) { PlayerMobile targ = (PlayerMobile)obj; Faction toFaction = Faction.Find(targ); Faction fromFaction = Faction.Find(from); if (toFaction == null) { from.SendLocalizedMessage(1005223); // You cannot give the sigil to someone not in a faction } else if (fromFaction != toFaction) { from.SendLocalizedMessage(1005222); // You cannot give the sigil to someone not in your faction } else if (Sigil.ExistsOn(targ)) { from.SendLocalizedMessage(1005220); // You cannot give this sigil to someone who already has a sigil } else if (!targ.Alive) { from.SendLocalizedMessage(1042248); // You cannot give a sigil to a dead person. } else if (from.NetState != null && targ.NetState != null) { Container pack = targ.Backpack; if (pack != null) { pack.DropItem(this); } } } else { from.SendLocalizedMessage(1005221); //You cannot give the sigil to them } } #endregion else if (obj is BaseMonolith) { #region Put in Stronghold if (obj is StrongholdMonolith) { StrongholdMonolith m = (StrongholdMonolith)obj; if (m.Faction == null || m.Faction != Faction.Find(from)) { from.SendLocalizedMessage(1042246); // You can't place that on an enemy monolith } else if (m.Town == null || m.Town != m_Town) { from.SendLocalizedMessage(1042247); // That is not the correct faction monolith } else { m.Sigil = this; Faction newController = m.Faction; Faction oldController = m_Corrupting; if (m_OriginalThief != null && newController != PlayerState.Find(m_OriginalThief).Faction) { UpdateThief(null); } if (oldController == null) { if (m_Corrupted != newController) { BeginCorrupting(newController); } } else if (m_GraceStart > DateTime.MinValue && (m_GraceStart + CorruptionGrace) < DateTime.UtcNow) { if (m_Corrupted != newController) { BeginCorrupting(newController); // grace time over, reset period } else { ClearCorrupting(); } m_GraceStart = DateTime.MinValue; } else if (newController == oldController) { m_GraceStart = DateTime.MinValue; // returned within grace period } else if (m_GraceStart == DateTime.MinValue) { m_GraceStart = DateTime.UtcNow; } m_PurificationStart = DateTime.MinValue; } } #endregion #region Put in Town else if (obj is TownMonolith) { TownMonolith m = (TownMonolith)obj; if (m.Town == null || m.Town != m_Town) { from.SendLocalizedMessage(1042245); // This is not the correct town sigil monolith } else if (m_Corrupted == null || m_Corrupted != Faction.Find(from)) { from.SendLocalizedMessage(1042244); // Your faction did not corrupt this sigil. Take it to your stronghold. } else { m.Sigil = this; m_Corrupting = null; m_PurificationStart = DateTime.UtcNow; m_CorruptionStart = DateTime.MinValue; bool isTownAlreadyOwned = (m_Town.Owner == m_Corrupted); m_Town.Capture(m_Corrupted); m_Corrupted = null; if (!isTownAlreadyOwned && m_OriginalThief != null && m_OriginalThief.NetState != null) { int punkte = 10; int silver = 750; PlayerState ps = PlayerState.Find(m_OriginalThief); Faction deliverersfaction = Faction.Find(from); Faction originalthiefsfaction = Faction.Find(m_OriginalThief); if (ps != null && deliverersfaction == originalthiefsfaction) { ps.KillPoints += punkte; ps.Faction.AwardSilver(m_OriginalThief, silver); string args = String.Format("{0}\t{1}", punkte, silver); m_OriginalThief.SendLocalizedMessage(1094922, args); // Thine heroic efforts in capturing the sigil has yielded ~1_POINTS~ kill points and ~2_SILVER~ silver. } } m_OriginalThief = null; m_PreviousThief = null; } } #endregion } else { from.SendLocalizedMessage(1005224); // You can't use the sigil on that } Update(); }