public static bool AssaultCheck(Mobile m, Soldier s) { if (m == null || m.Deleted) return false; if (!m.Alive || m.IsDeadBondedPet) return false; if (s == null || s.Deleted ) return false; if (!s.Alive) return false; if (s.Government == null || s.Government.Deleted) return false; if (s.ControlOrder == OrderType.Stop) return false; Soldier soldier = s; bool bValid = false; XmlAttachment attachment = null; attachment = XmlAttach.FindAttachment(m, typeof(XmlCriminal), soldier.Nation.ToString()); #region Enemy Guild Handling if (Soldier.VisionCheck(m, soldier, 16) && !soldier.Government.MilitaryPolicies.Exceptions.Contains(m.Name)) { soldier.DebugSay("You are not on the Exceptions list."); if (m is BaseKhaerosMobile && (m as BaseKhaerosMobile).Government != null && !(m as BaseKhaerosMobile).Deleted) { soldier.DebugSay("You are a soldier too."); if (soldier.Government.EnemyGuilds.Contains((m as BaseKhaerosMobile).Government)) bValid = true; } else if (m is PlayerMobile) { soldier.DebugSay("You are a player."); foreach (CustomGuildStone enemyGuild in soldier.Government.EnemyGuilds) { if (CustomGuildStone.IsGuildMember(m as PlayerMobile, enemyGuild) && (m as PlayerMobile).CustomGuilds[enemyGuild].ActiveTitle) { soldier.DebugSay("You are part of an enemy guild!"); bValid = true; continue; } } } } #endregion if (Soldier.VisionCheck(m, soldier, 15) && !bValid && attachment == null && m.Combatant != null && !m.Combatant.Deleted && m.Combatant.Alive) { soldier.DebugSay("I can see you!"); if (!(m is PlayerMobile && CustomGuildStone.IsGuildOfficer(m as PlayerMobile, soldier.Government))) { Mobile attacker = m; #region The defender is a controlled creature. if (attacker.Combatant is BaseCreature && (attacker.Combatant as BaseCreature).Controlled && (attacker.Combatant as BaseCreature).ControlMaster != null && !(attacker.Combatant as BaseCreature).ControlMaster.Deleted && (attacker.Combatant as BaseCreature).ControlMaster is PlayerMobile) { PlayerMobile defender = (attacker.Combatant as BaseCreature).ControlMaster as PlayerMobile; if (!defender.Spar) // If the defender isn't sparring... { soldier.DebugSay("You are not sparring."); #region Is the defender in an enemy guild? bool defenderIsEnemy = false; foreach (CustomGuildStone enemyGuild in soldier.Government.EnemyGuilds) { if (CustomGuildStone.IsGuildMember(defender, enemyGuild) && defender.CustomGuilds[enemyGuild].ActiveTitle) { soldier.DebugSay("The person you are attacking is in an enemy guild!"); defenderIsEnemy = true; // The defender is part of an enemy guild; that's no reason to defend them! continue; } } #endregion if (!defenderIsEnemy) { #region Ally Handling foreach (CustomGuildStone allyGuild in soldier.Government.AlliedGuilds) { if (!(attacker is PlayerMobile && CustomGuildStone.IsGuildMember(attacker as PlayerMobile, soldier.Government))) // If the attacker isn't a member of my guild... { if (CustomGuildStone.IsGuildMember(defender, allyGuild) && defender.CustomGuilds[allyGuild].ActiveTitle) // ... and the defender is an ally ... { soldier.DebugSay("The defender is a player ally!"); bool attackerIsAlly = false; foreach (CustomGuildStone otherAllyGuild in soldier.Government.AlliedGuilds) { if (attacker is PlayerMobile && CustomGuildStone.IsGuildMember(attacker as PlayerMobile, otherAllyGuild)) // Is the attacker ALSO an ally? { soldier.DebugSay("You are an ally."); attackerIsAlly = true; // The attacker is an ally as well; I can't decide! continue; } else if (attacker is Soldier && (attacker as Soldier).Government != null && (attacker as Soldier).Government.Deleted && (attacker as Soldier).Government == otherAllyGuild) // Is the attacker ALSO an ally? { soldier.DebugSay("You are an ally."); attackerIsAlly = true; // The attacker is an ally as well; I can't decide! continue; } } if (!attackerIsAlly) // The attacker is not an ally. { soldier.DebugSay("You are not an ally, I will attack!"); bValid = true; // The defender is an ally! I'll defend him from this unknown. continue; } } } } #endregion #region Government Handling if (!bValid) // So the defender wasn't an ally, nor was the attacker... { if (CustomGuildStone.IsGuildMember(defender, soldier.Government) && defender.CustomGuilds[soldier.Government].ActiveTitle) // Is the defender a member of my government? { soldier.DebugSay("The defender is a member of my government."); if (attacker is PlayerMobile && CustomGuildStone.IsGuildMember(attacker as PlayerMobile, soldier.Government)) // Yes, and so is the attacker! { soldier.DebugSay("You are a member of my guild!"); if ((attacker as PlayerMobile).CustomGuilds[soldier.Government].RankID < defender.CustomGuilds[soldier.Government].RankID) // So who outranks who? I'm with the authority on this one! bValid = true; // Both are members of my government, but the defender outranks the attacker; defend the high-ranking member! } else { soldier.DebugSay("The defender is in my government, but you are neither in my government nor an ally. I will attack you."); bValid = true; // The defender is in my government, but the attacker is neither an ally nor in my government; therefore, I will attack him. } } } #endregion #region Nation Handling if (!bValid && !(attacker is PlayerMobile && CustomGuildStone.IsGuildMember(attacker as PlayerMobile, soldier.Government))) // If the attacker is not an officer of my guild... { #region Checking to make certain the attacker is not an ally. bool attackerIsAlly = false; if (attacker is PlayerMobile || attacker is Soldier) { if (attacker is Soldier && (attacker as Soldier).Government != null && (attacker as Soldier).Government.Deleted && (attacker as Soldier).Government == soldier.Government) { soldier.DebugSay("The attacker is a soldier and an ally!"); attackerIsAlly = true; } else { foreach (CustomGuildStone allyGuild in soldier.Government.AlliedGuilds) { if (attacker is PlayerMobile) { if (CustomGuildStone.IsGuildMember(attacker as PlayerMobile, allyGuild)) { soldier.DebugSay("You are an ally!"); attackerIsAlly = true; continue; } } else if (attacker is Soldier && (attacker as Soldier).Government != null && !(attacker as Soldier).Government.Deleted) { if ((attacker as Soldier).Government == allyGuild) { soldier.DebugSay("You are an ally!"); attackerIsAlly = true; continue; } } } } } #endregion if (!attackerIsAlly && defender.GetDisguisedNation() == soldier.Government.Nation) // ... and the defender is of my own nation ... { soldier.DebugSay("The attacker is not an ally, and the defender is of my nation."); if (attacker is PlayerMobile) { if ((attacker as PlayerMobile).GetDisguisedNation() != soldier.Government.Nation) { soldier.DebugSay("But you are not of my nation, nor are you an ally; I will attack."); bValid = true; } } else { if (attacker is Soldier) { if ((attacker as Soldier).Nation != soldier.Government.Nation) { soldier.DebugSay("But you are not of my nation, nor are you an ally; I will attack."); bValid = true; } } else { soldier.DebugSay("But you are not of my nation, nor are you an ally; I will attack."); bValid = true; } } } } #endregion } } } #endregion #region The defender is a player. else if (attacker.Combatant is PlayerMobile) { soldier.DebugSay("You are a player."); PlayerMobile defender = attacker.Combatant as PlayerMobile; if (!defender.Spar) // If the defender isn't sparring... { soldier.DebugSay("You are not sparring."); #region Is the defender in an enemy guild? bool defenderIsEnemy = false; foreach (CustomGuildStone enemyGuild in soldier.Government.EnemyGuilds) { if (CustomGuildStone.IsGuildMember(defender, enemyGuild) && defender.CustomGuilds[enemyGuild].ActiveTitle) { soldier.DebugSay("The person you are attacking is in an enemy guild!"); defenderIsEnemy = true; // The defender is part of an enemy guild; that's no reason to defend them! continue; } } #endregion if (!defenderIsEnemy) { #region Ally Handling foreach (CustomGuildStone allyGuild in soldier.Government.AlliedGuilds) { if (!(attacker is PlayerMobile && CustomGuildStone.IsGuildMember(attacker as PlayerMobile, soldier.Government))) // If the attacker isn't a member of my guild... { if (CustomGuildStone.IsGuildMember(defender, allyGuild) && defender.CustomGuilds[allyGuild].ActiveTitle) // ... and the defender is an ally ... { soldier.DebugSay("The defender is a player ally!"); bool attackerIsAlly = false; foreach (CustomGuildStone otherAllyGuild in soldier.Government.AlliedGuilds) { if (attacker is PlayerMobile && CustomGuildStone.IsGuildMember(attacker as PlayerMobile, otherAllyGuild)) // Is the attacker ALSO an ally? { soldier.DebugSay("You are an ally."); attackerIsAlly = true; // The attacker is an ally as well; I can't decide! continue; } else if (attacker is Soldier && (attacker as Soldier).Government != null && (attacker as Soldier).Government.Deleted && (attacker as Soldier).Government == otherAllyGuild) // Is the attacker ALSO an ally? { soldier.DebugSay("You are an ally."); attackerIsAlly = true; // The attacker is an ally as well; I can't decide! continue; } } if (!attackerIsAlly) // The attacker is not an ally. { soldier.DebugSay("You are not an ally, I will attack!"); bValid = true; // The defender is an ally! I'll defend him from this unknown. continue; } } } } #endregion #region Government Handling if (!bValid) // So the defender wasn't an ally, nor was the attacker... { if (CustomGuildStone.IsGuildMember(defender, soldier.Government) && defender.CustomGuilds[soldier.Government].ActiveTitle) // Is the defender a member of my government? { soldier.DebugSay("The defender is a member of my government."); if (attacker is PlayerMobile && CustomGuildStone.IsGuildMember(attacker as PlayerMobile, soldier.Government)) // Yes, and so is the attacker! { soldier.DebugSay("You are a member of my guild!"); if ((attacker as PlayerMobile).CustomGuilds[soldier.Government].RankID < defender.CustomGuilds[soldier.Government].RankID) // So who outranks who? I'm with the authority on this one! bValid = true; // Both are members of my government, but the defender outranks the attacker; defend the high-ranking member! } else { soldier.DebugSay("The defender is in my government, but you are neither in my government nor an ally. I will attack you."); bValid = true; // The defender is in my government, but the attacker is neither an ally nor in my government; therefore, I will attack him. } } } #endregion #region Nation Handling if (!bValid && !(attacker is PlayerMobile && CustomGuildStone.IsGuildMember(attacker as PlayerMobile, soldier.Government))) // If the attacker is not an officer of my guild... { #region Checking to make certain the attacker is not an ally. bool attackerIsAlly = false; if (attacker is PlayerMobile || attacker is Soldier) { if (attacker is Soldier && (attacker as Soldier).Government != null && (attacker as Soldier).Government.Deleted && (attacker as Soldier).Government == soldier.Government) { soldier.DebugSay("The attacker is a soldier and an ally!"); attackerIsAlly = true; } else { foreach (CustomGuildStone allyGuild in soldier.Government.AlliedGuilds) { if (attacker is PlayerMobile) { if (CustomGuildStone.IsGuildMember(attacker as PlayerMobile, allyGuild)) { soldier.DebugSay("You are an ally!"); attackerIsAlly = true; continue; } } else if (attacker is Soldier && (attacker as Soldier).Government != null && !(attacker as Soldier).Government.Deleted) { if ((attacker as Soldier).Government == allyGuild) { soldier.DebugSay("You are an ally!"); attackerIsAlly = true; continue; } } } } } #endregion if (!attackerIsAlly && defender.GetDisguisedNation() == soldier.Government.Nation) // ... and the defender is of my own nation ... { soldier.DebugSay("The attacker is not an ally, and the defender is of my nation."); if (attacker is PlayerMobile) { if ((attacker as PlayerMobile).GetDisguisedNation() != soldier.Government.Nation) { soldier.DebugSay("But you are not of my nation, nor are you an ally; I will attack."); bValid = true; } } else { if (attacker is Soldier) { if ((attacker as Soldier).Nation != soldier.Government.Nation) { soldier.DebugSay("But you are not of my nation, nor are you an ally; I will attack."); bValid = true; } } else { soldier.DebugSay("But you are not of my nation, nor are you an ally; I will attack."); bValid = true; } } } } #endregion } } } #endregion #region The defender is a BaseCreature. else if (attacker.Combatant is BaseCreature) { soldier.DebugSay("The defender is a BaseCreature!"); BaseCreature defender = attacker.Combatant as BaseCreature; if (defender.FightMode != FightMode.Berserk && defender.FightMode != FightMode.Closest) { soldier.DebugSay("The defender is not aggressive, so why are you fighting?"); if (!(attacker is PlayerMobile && CustomGuildStone.IsGuildMember(attacker as PlayerMobile, soldier.Government))) { soldier.DebugSay("The attacker is not a member of my guild."); #region Defending NPC is a soldier. if (defender is BaseKhaerosMobile) { soldier.DebugSay("The defender is a BaseKhaerosMobile."); BaseKhaerosMobile khaerosDefender = defender as BaseKhaerosMobile; if (khaerosDefender.Government != null && !khaerosDefender.Government.Deleted) { if (!soldier.Government.EnemyGuilds.Contains(khaerosDefender.Government)) // If the defender isn't part of an enemy government, I'll consider defending him. { #region Is the defending soldier part of my government? if (khaerosDefender.Government == soldier.Government && !(attacker is Soldier && (attacker as Soldier).Government != null && !(attacker as Soldier).Government.Deleted && (attacker as Soldier).Government == soldier.Government)) { soldier.DebugSay("The defender is part of my government, I will attack you!"); bValid = true; } #endregion #region Is the defending soldier an ally of my government? else { bool attackerIsAlly = false; foreach (CustomGuildStone allyGuild in soldier.Government.AlliedGuilds) { if (attacker is PlayerMobile) { if (CustomGuildStone.IsGuildMember(attacker as PlayerMobile, allyGuild)) { soldier.DebugSay("The attacker is an ally."); attackerIsAlly = true; continue; } } else if (attacker is BaseKhaerosMobile) { if ((attacker as BaseKhaerosMobile).Government != null && !(attacker as BaseKhaerosMobile).Government.Deleted && ((attacker as BaseKhaerosMobile).Government == allyGuild || (attacker as BaseKhaerosMobile).Government == soldier.Government || (attacker as BaseKhaerosMobile).Government == khaerosDefender.Government)) { soldier.DebugSay("The attacker is an ally."); attackerIsAlly = true; continue; } } } if (!attackerIsAlly) // If the attacker has proven to not be an ally of my guild... { foreach (CustomGuildStone allyGuild in soldier.Government.AlliedGuilds) { if (khaerosDefender.Government == allyGuild) // ... and you ARE an ally of my guild ... { soldier.DebugSay("The attacker is not an ally and the defender IS an ally."); bValid = true; // I will attack the attacker and defend you, defender. continue; } } } } #endregion } } } #endregion #region Defending NPC Nation Handling if (!bValid) { if (defender.Nation == soldier.Nation && !(attacker is BaseCreature && (attacker as BaseCreature).Nation == soldier.Nation) && !(attacker is PlayerMobile && (attacker as PlayerMobile).Nation == soldier.Nation)) { soldier.DebugSay("The defender's nation is the same as mine."); bool attackerIsAlly = false; foreach (CustomGuildStone allyGuild in soldier.Government.AlliedGuilds) { if (attacker is BaseKhaerosMobile && (attacker as BaseKhaerosMobile).Government != null && !(attacker as BaseKhaerosMobile).Government.Deleted) { if ((attacker as BaseKhaerosMobile).Government == allyGuild) { soldier.DebugSay("The attacker is an ally."); attackerIsAlly = true; continue; } } else if (attacker is PlayerMobile) { if (CustomGuildStone.IsGuildMember(attacker as PlayerMobile, allyGuild) && (attacker as PlayerMobile).CustomGuilds[allyGuild].ActiveTitle) { soldier.DebugSay("The attacker is an ally."); attackerIsAlly = true; continue; } } } if (!attackerIsAlly) { soldier.DebugSay("The attacker is not an ally and the defender is of my Nation. I will attack."); bValid = true; } } } #endregion } } } #endregion } } return bValid; }
public SoldierPatrolTarget(Soldier s) : base(12, true, TargetFlags.None) { m_Sol = s; }
public SoldierUnequipTarget(Soldier s) : base(1000000, true, TargetFlags.None) { m_Soldier = s; AllowNonlocal = true; }
public SoldierEquipTarget(Soldier s) : base(14, true, TargetFlags.None) { m_Soldier = s; }
public ReportTimer(ReportInfo r, Soldier s) : base(TimeSpan.FromSeconds(1), TimeSpan.FromMinutes(30)) { Priority = TimerPriority.OneMinute; m_Report = r; m_Soldier = s; m_Report.Name = m_Soldier.Name.ToString(); m_TimerStarted = DateTime.Now; }
// Checks to see if the player is committing a crime and is not a superior or ally. public static bool ThiefCheck(PlayerMobile m, Soldier s) { if (m == null || m.Deleted || !m.Alive) return false; if (s == null || s.Deleted || !s.Alive) return false; if (m.AccessLevel > AccessLevel.Player) // Don't attack staff! return false; if (s.Government == null || s.Government.Deleted) return false; if (m.CriminalActivity && Soldier.VisionCheck(m, s, 15)) { if (CustomGuildStone.IsGuildOfficer(m, s.Government) && m.CustomGuilds[s.Government].ActiveTitle) return false; int count = s.Government.AlliedGuilds.Count; for (int i = 0; i < count; i++) { CustomGuildStone thisGuild = (CustomGuildStone)s.Government.AlliedGuilds[i]; if (CustomGuildStone.IsGuildOfficer(m, thisGuild) && m.CustomGuilds[thisGuild].ActiveTitle) return false; } return true; } return false; }
public static void RecognizeCrime(Mobile m, Soldier s) { if (m.Deleted || m == null || !m.Alive) return; if (s.Deleted || s == null || !s.Alive) return; if (s.Government == null || s.Government.Deleted) return; if (m is PlayerMobile && CustomGuildStone.IsGuildOfficer(m as PlayerMobile, s.Government)) return; if (m is Soldier && (m as Soldier).Government != null && !(m as Soldier).Government.Deleted && (m as Soldier).Government == s.Government) return; if (m is PlayerMobile && GroupInfo.IsGroupLeader(s, m as PlayerMobile)) return; XmlAttachment attachment = null; attachment = XmlAttach.FindAttachmentOnMobile(m, typeof(XmlCriminal), s.Nation.ToString()); if (attachment == null) { XmlAttach.AttachTo(m, new XmlCriminal(s)); m.SendMessage(CriminalAlertMessage(s.Nation)); if (m is PlayerMobile) { if (((PlayerMobile)m).CriminalActivity) { ((PlayerMobile)m).CriminalActivity = false; ReportInfo newReport = new ReportInfo(m, true, false); newReport.ReporterName = s.Name; s.ReportTimer = new ReportTimer(newReport, s); } else { ReportInfo newReport = new ReportInfo(m, false, true); newReport.ReporterName = s.Name; s.ReportTimer = new ReportTimer(newReport, s); } s.ReportTimer.Start(); } m.RevealingAction(); s.OnThink(); } }
// A random attacking phrase generator; the timer is set so that guards do not endlessly spout there attack phrases. public static String RandomAttackSpeech(Soldier s) { int randomAttackPhrase = Utility.RandomMinMax(1, 16); switch (s.Nation) { case Nation.Alyrian: { if (DateTime.Now >= (s.SpeechInterval + TimeSpan.FromSeconds(Utility.RandomMinMax(120, 600)))) { switch (randomAttackPhrase) { case 1: { s.SpeechInterval = DateTime.Now; return "To victory!"; } case 2: { s.SpeechInterval = DateTime.Now; return "I'll clear the way of you!"; } case 3: { s.SpeechInterval = DateTime.Now; return "Stop right there, criminal scum!"; } case 4: { s.SpeechInterval = DateTime.Now; return "With a red hand!"; } case 5: { s.SpeechInterval = DateTime.Now; return "Your day has come!"; } case 6: { s.SpeechInterval = DateTime.Now; return "Sons of the hounds, come here and get flesh!"; } case 7: { s.SpeechInterval = DateTime.Now; return "There'll be no one to sing your name!"; } case 8: { s.SpeechInterval = DateTime.Now; return "Your story ends here, blighter."; } } } return null; } case Nation.Azhuran: { if (DateTime.Now >= (s.SpeechInterval + TimeSpan.FromSeconds(Utility.RandomMinMax(120, 600)))) { switch (randomAttackPhrase) { case 1: { s.SpeechInterval = DateTime.Now; return "Victory to Xipotec, the Azhurans are here!"; } case 2: { s.SpeechInterval = DateTime.Now; return "A fine sacrifice."; } case 3: { s.SpeechInterval = DateTime.Now; return "Stop right there, criminal scum!"; } case 4: { s.SpeechInterval = DateTime.Now; return "Xipotec is great!"; } case 5: { s.SpeechInterval = DateTime.Now; return "Long live the Ataloa!"; } case 6: { s.SpeechInterval = DateTime.Now; return "You'll know only darkness."; } case 7: { s.SpeechInterval = DateTime.Now; return "Ua! Ua! Ua!"; } case 8: { s.SpeechInterval = DateTime.Now; return "Xipotec! Xipotec! Xipotec!"; } } } return null; } case Nation.Khemetar: { if (DateTime.Now >= (s.SpeechInterval + TimeSpan.FromSeconds(Utility.RandomMinMax(120, 600)))) { switch (randomAttackPhrase) { case 1: { s.SpeechInterval = DateTime.Now; return "Mah'tet wills it."; } case 2: { s.SpeechInterval = DateTime.Now; return "Today is an auspicious day for death!"; } case 3: { s.SpeechInterval = DateTime.Now; return "Stop right there, criminal scum!"; } case 4: { s.SpeechInterval = DateTime.Now; return "I will sweep you away like the wind."; } case 5: { s.SpeechInterval = DateTime.Now; return "The vultures take you!"; } case 6: { s.SpeechInterval = DateTime.Now; return "Black sand!"; } case 7: { s.SpeechInterval = DateTime.Now; return "You should know your place!"; } case 8: { s.SpeechInterval = DateTime.Now; return "Ignorant sow!"; } } } return null; } case Nation.Mhordul: { if (DateTime.Now >= (s.SpeechInterval + TimeSpan.FromSeconds(Utility.RandomMinMax(120, 600)))) { switch (randomAttackPhrase) { case 1: { s.SpeechInterval = DateTime.Now; return "Honorless slave!"; } case 2: { s.SpeechInterval = DateTime.Now; return "Betrayer!"; } case 3: { s.SpeechInterval = DateTime.Now; return "Stop right there, criminal scum!"; } case 4: { s.SpeechInterval = DateTime.Now; return "Boghul! You will regret this!"; } case 5: { s.SpeechInterval = DateTime.Now; return "Fool!"; } case 6: { s.SpeechInterval = DateTime.Now; return "Your death will please Xorgoth."; } case 7: { s.SpeechInterval = DateTime.Now; return "Your bones will make fine armor!"; } case 8: { s.SpeechInterval = DateTime.Now; return "You're already dead."; } } } return null; } case Nation.Tyrean: { if (DateTime.Now >= (s.SpeechInterval + TimeSpan.FromSeconds(Utility.RandomMinMax(120, 600)))) { switch (randomAttackPhrase) { case 1: { s.SpeechInterval = DateTime.Now; return "For the fatherland, forward!"; } case 2: { s.SpeechInterval = DateTime.Now; return "Remember Tyris!"; } case 3: { s.SpeechInterval = DateTime.Now; return "Stop right there, criminal scum!"; } case 4: { s.SpeechInterval = DateTime.Now; return "Cut them down, sons of the north!"; } case 5: { s.SpeechInterval = DateTime.Now; return "Fire at your balls!"; } case 6: { s.SpeechInterval = DateTime.Now; return "Follow me, heroes!"; } case 7: { s.SpeechInterval = DateTime.Now; return "Unworthy swine."; } case 8: { s.SpeechInterval = DateTime.Now; return "Beardless fool!"; } } } return null; } case Nation.Vhalurian: { if (DateTime.Now >= (s.SpeechInterval + TimeSpan.FromSeconds(Utility.RandomMinMax(120, 600)))) { switch (randomAttackPhrase) { case 1: { s.SpeechInterval = DateTime.Now; return "Awake the iron!"; } case 2: { s.SpeechInterval = DateTime.Now; return "Long live Vhaluran!"; } case 3: { s.SpeechInterval = DateTime.Now; return "Stop right there, criminal scum!"; } case 4: { s.SpeechInterval = DateTime.Now; return "Charge, my brothers!"; } case 5: { s.SpeechInterval = DateTime.Now; return "For the Captain!"; } case 6: { s.SpeechInterval = DateTime.Now; return "To arms, to arms!"; } case 7: { s.SpeechInterval = DateTime.Now; return "Halfborn bastard of a Mhordul!"; } case 8: { s.SpeechInterval = DateTime.Now; return "*snooore... snr-rr-snort?!*"; } } } return null; } case Nation.Imperial: { if (DateTime.Now >= (s.SpeechInterval + TimeSpan.FromSeconds(Utility.RandomMinMax(120, 600)))) { switch (randomAttackPhrase) { case 1: { s.SpeechInterval = DateTime.Now; return "For the Empire!"; } case 2: { s.SpeechInterval = DateTime.Now; return "In the name of the Emperor!"; } case 3: { s.SpeechInterval = DateTime.Now; return "Stop right there, criminal scum!"; } case 4: { s.SpeechInterval = DateTime.Now; return "For the honor of the Legion!"; } case 5: { s.SpeechInterval = DateTime.Now; return "Cut them down!"; } case 6: { s.SpeechInterval = DateTime.Now; return "Into the fray, you dogs!"; } case 7: { s.SpeechInterval = DateTime.Now; return "Glory for the first man to die!"; } case 8: { s.SpeechInterval = DateTime.Now; return "Hammer and anvil!"; } } } return null; } case Nation.Sovereign: { if (DateTime.Now >= (s.SpeechInterval + TimeSpan.FromSeconds(Utility.RandomMinMax(120, 600)))) { switch (randomAttackPhrase) { case 1: { s.SpeechInterval = DateTime.Now; return "Freedom or death!"; } case 2: { s.SpeechInterval = DateTime.Now; return "No quarter!"; } case 3: { s.SpeechInterval = DateTime.Now; return "Stop right there, criminal scum!"; } case 4: { s.SpeechInterval = DateTime.Now; return "Brothers! Trust and go forward!"; } case 5: { s.SpeechInterval = DateTime.Now; return "Honorless slave."; } case 6: { s.SpeechInterval = DateTime.Now; return "With a red hand!"; } case 7: { s.SpeechInterval = DateTime.Now; return "Our gods protect us!"; } case 8: { s.SpeechInterval = DateTime.Now; return "Your evil ends here."; } } } return null; } case Nation.Society: { if ( DateTime.Now >= ( s.SpeechInterval + TimeSpan.FromSeconds( Utility.RandomMinMax(120,600) ) ) ) { switch (randomAttackPhrase) { case 1: { s.SpeechInterval = DateTime.Now; return "Mah'tet willed our meeting."; } case 2: { s.SpeechInterval = DateTime.Now; return "Xipotec has revealed your sins."; } case 3: { s.SpeechInterval = DateTime.Now; return "Stop right there, criminal scum!"; } case 4: { s.SpeechInterval = DateTime.Now; return "Xorgoth guide my hand!"; } case 5: { s.SpeechInterval = DateTime.Now; return "By the many dicks of Ohlm!"; } case 6: { s.SpeechInterval = DateTime.Now; return "By Arianthyt's grace!"; } case 7: { s.SpeechInterval = DateTime.Now; return "Elysia have mercy on you."; } case 8: { s.SpeechInterval = DateTime.Now; return "For the Six!!!"; } } } return null; } case Nation.Insularii: { if ( DateTime.Now >= ( s.SpeechInterval + TimeSpan.FromSeconds( Utility.RandomMinMax(120,600) ) ) ) { switch (randomAttackPhrase) { case 1: { s.SpeechInterval = DateTime.Now; return "*readies their weapon*"; } case 2: { s.SpeechInterval = DateTime.Now; return "*growls softly*"; } case 3: { s.SpeechInterval = DateTime.Now; return "*readies for battle*"; } case 4: { s.SpeechInterval = DateTime.Now; return "*chuckles lightly*"; } } } return null; } } return null; }