Cleanup & Fixes for .NET 5 (#309)

- [X] Fixes several bugs
- [X] Updates more ordinal issues
- [X] Cleans up the code a bit
- [X] Turns classes static that should have been
- [X] Changes TcpServer.Instances to a HashSet

Bumps release version
This commit is contained in:
Kamron Batman 2020-11-15 10:03:50 -08:00 • committed by GitHub
parent 4ad8811df2
commit 525cda5413
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
266 changed files with 1348 additions and 1800 deletions

View file

@ -16,7 +16,7 @@ namespace Server
{
try
{
var ip = ((IPEndPoint)e.Connection.RemoteEndPoint).Address;
var ip = (e.Connection.RemoteEndPoint as IPEndPoint)?.Address;
if (Firewall.IsBlocked(ip))
{

View file

@ -775,7 +775,7 @@ namespace Server.Accounting
}
m_PasswordAlgorithm = algorithm;
Password = password?.Replace("-", string.Empty);
Password = password.Replace("-", string.Empty, StringComparison.Ordinal);
return true;
}

View file

@ -9,7 +9,7 @@ using Server.Regions;
namespace Server.Misc
{
public class AccountHandler
public static class AccountHandler
{
private static int MaxAccountsPerIP;
private static bool AutoAccountCreation;
@ -100,10 +100,9 @@ namespace Server.Misc
}
}
[Usage("Password <newPassword> <repeatPassword>")]
[Description(
"Changes the password of the commanding players account. Requires the same C-class IP address as the account's creator."
)]
[Usage("Password <newPassword> <repeatPassword>"), Description(
"Changes the password of the commanding players account. Requires the same C-class IP address as the account's creator."
)]
public static void Password_OnCommand(CommandEventArgs e)
{
var from = e.Mobile;
@ -177,7 +176,7 @@ namespace Server.Misc
if (entry != null)
{
if (entry.Message.StartsWith("[Automated: Change Password]"))
if (entry.Message.StartsWith("[Automated: Change Password]", StringComparison.Ordinal))
{
from.SendMessage("You already have a password change request in the help system queue.");
}
@ -289,7 +288,9 @@ namespace Server.Misc
return null;
}
var isSafe = !(un.StartsWith(" ") || un.EndsWith(" ") || un.EndsWith("."));
var isSafe = !(un.StartsWith(" ", StringComparison.Ordinal) ||
un.EndsWith(" ", StringComparison.Ordinal) ||
un.EndsWith(".", StringComparison.Ordinal));
for (var i = 0; isSafe && i < un.Length; ++i)
{

View file

@ -5,7 +5,7 @@ using System.Xml;
namespace Server.Accounting
{
public class Accounts
public static class Accounts
{
private static Dictionary<string, IAccount> m_Accounts = new Dictionary<string, IAccount>();
@ -56,6 +56,11 @@ namespace Server.Accounting
var root = doc["accounts"];
if (root == null)
{
throw new FileLoadException("Unable to load xml file");
}
foreach (XmlElement account in root.GetElementsByTagName("account"))
{
try

View file

@ -1,10 +1,11 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
namespace Server
{
public class Firewall
public static class Firewall
{
static Firewall()
{
@ -30,13 +31,13 @@ namespace Server
/*
object toAdd;
IPAddress addr;
if (IPAddress.TryParse( line, out addr ))
toAdd = addr;
else
toAdd = line;
m_Blocked.Add( toAdd.ToString() );
* */
}
@ -47,22 +48,13 @@ namespace Server
public static IFirewallEntry ToFirewallEntry(object entry)
{
if (entry is IFirewallEntry firewallEntry)
return entry switch
{
return firewallEntry;
}
if (entry is IPAddress address)
{
return new IPFirewallEntry(address);
}
if (entry is string s)
{
return ToFirewallEntry(s);
}
return null;
IFirewallEntry firewallEntry => firewallEntry,
IPAddress address => new IPFirewallEntry(address),
string s => ToFirewallEntry(s),
_ => null
};
}
public static IFirewallEntry ToFirewallEntry(string entry)
@ -73,9 +65,9 @@ namespace Server
}
// Try CIDR parse
var str = entry.Split('/');
var str = entry?.Split('/');
if (str.Length == 2)
if (str?.Length == 2)
{
if (IPAddress.TryParse(str[0], out var cidrPrefix))
{
@ -180,7 +172,7 @@ namespace Server
return false;
/*
bool contains = false;
for ( int i = 0; !contains && i < m_Blocked.Count; ++i )
{
if (m_Blocked[i] is IPAddress)
@ -188,14 +180,14 @@ namespace Server
else if (m_Blocked[i] is String)
{
string s = (string)m_Blocked[i];
contains = Utility.IPMatchCIDR( s, ip );
if (!contains)
contains = Utility.IPMatch( s, ip );
}
}
return contains;
* */
}
@ -312,10 +304,10 @@ namespace Server
return obj.Equals(m_Entry);
}
return obj is WildcardIPFirewallEntry entry && m_Entry.Equals(entry.m_Entry);
return obj is WildcardIPFirewallEntry entry && m_Entry == entry.m_Entry;
}
public override int GetHashCode() => m_Entry.GetHashCode();
public override int GetHashCode() => m_Entry.GetHashCode(StringComparison.Ordinal);
}
}
}

View file

@ -4,11 +4,11 @@ using Server.Network;
namespace Server.Misc
{
public class IPLimiter
public static class IPLimiter
{
public static IPAddress[] Exemptions =
public static readonly IPAddress[] Exemptions =
{
// IPAddress.Parse( "127.0.0.1" ),
IPAddress.Parse( "127.0.0.1" )
};
public static bool Enabled { get; private set; }
@ -31,15 +31,11 @@ namespace Server.Misc
return true;
}
var netStates = TcpServer.Instances;
var count = 0;
for (var i = 0; i < netStates.Count; ++i)
foreach (var ns in TcpServer.Instances)
{
var compState = netStates[i];
if (ourAddress.Equals(compState.Address))
if (ourAddress.Equals(ns.Address))
{
++count;

View file

@ -22,7 +22,9 @@ namespace Server.Accounting.Security
public class MD5PasswordProtection : IPasswordProtection
{
public static IPasswordProtection Instance = new MD5PasswordProtection();
#pragma warning disable CA5351
private readonly MD5CryptoServiceProvider m_MD5HashProvider = new MD5CryptoServiceProvider();
#pragma warning restore CA5351
public string EncryptPassword(string plainPassword)
{

View file

@ -26,8 +26,7 @@ namespace Server.Accounting.Security
private const int m_SaltSize = 8;
private const int m_HashSize = 32;
private const int m_OutputSize = 2 + m_SaltSize + m_HashSize;
public static IPasswordProtection Instance = new PBKDF2PasswordProtection();
private static readonly HashAlgorithmName m_Algorithm = HashAlgorithmName.SHA256;
public static readonly IPasswordProtection Instance = new PBKDF2PasswordProtection();
public string EncryptPassword(string plainPassword)
{
@ -35,7 +34,7 @@ namespace Server.Accounting.Security
var iterations = Utility.RandomMinMax(m_MinIterations, m_MaxIterations);
BinaryPrimitives.WriteUInt16LittleEndian(output.Slice(0, 2), (ushort)iterations);
var rfc2898 = new Rfc2898DeriveBytes(plainPassword, m_SaltSize, iterations, m_Algorithm);
var rfc2898 = new Rfc2898DeriveBytes(plainPassword, m_SaltSize, iterations, HashAlgorithmName.SHA256);
rfc2898.Salt.CopyTo(output.Slice(2, m_SaltSize));
rfc2898.GetBytes(m_HashSize).CopyTo(output.Slice(m_SaltSize + 2));
@ -51,7 +50,7 @@ namespace Server.Accounting.Security
var salt = encryptedBytes.Slice(2, m_SaltSize);
ReadOnlySpan<byte> hash =
new Rfc2898DeriveBytes(plainPassword, salt.ToArray(), iterations, m_Algorithm).GetBytes(m_HashSize);
new Rfc2898DeriveBytes(plainPassword, salt.ToArray(), iterations, HashAlgorithmName.SHA256).GetBytes(m_HashSize);
return hash.SequenceEqual(encryptedBytes.Slice(m_SaltSize + 2));
}

View file

@ -22,7 +22,9 @@ namespace Server.Accounting.Security
public class SHA1PasswordProtection : IPasswordProtection
{
public static IPasswordProtection Instance = new SHA1PasswordProtection();
#pragma warning disable CA5350
private readonly SHA1CryptoServiceProvider m_SHA1HashProvider = new SHA1CryptoServiceProvider();
#pragma warning restore CA5350
public string EncryptPassword(string plainPassword)
{

View file

@ -2,6 +2,7 @@ using System;
namespace Server
{
[AttributeUsage(AttributeTargets.Method)]
public class UsageAttribute : Attribute
{
public UsageAttribute(string usage) => Usage = usage;
@ -9,6 +10,7 @@ namespace Server
public string Usage { get; }
}
[AttributeUsage(AttributeTargets.Method)]
public class DescriptionAttribute : Attribute
{
public DescriptionAttribute(string description) => Description = description;
@ -16,6 +18,7 @@ namespace Server
public string Description { get; }
}
[AttributeUsage(AttributeTargets.Method)]
public class AliasesAttribute : Attribute
{
public AliasesAttribute(params string[] aliases) => Aliases = aliases;

View file

@ -187,8 +187,7 @@ namespace Server.Commands
CommandSystem.Register("Batch", AccessLevel.Counselor, Batch_OnCommand);
}
[Usage("Batch")]
[Description("Allows multiple commands to be run at the same time.")]
[Usage("Batch"), Description("Allows multiple commands to be run at the same time.")]
public static void Batch_OnCommand(CommandEventArgs e)
{
e.Mobile.SendGump(new BatchGump(e.Mobile, new Batch()));
@ -209,7 +208,7 @@ namespace Server.Commands
public void GetDetails(out string command, out string argString, out string[] args)
{
var indexOf = Command.IndexOf(' ');
var indexOf = Command.IndexOf(' ', StringComparison.Ordinal);
if (indexOf >= 0)
{

View file

@ -11,7 +11,7 @@ using Server.Network;
namespace Server.Commands
{
public class Docs
public static class Docs
{
private const int Iron = 0xCCCCDD;
private const int DullCopper = 0xAAAAAA;
@ -109,8 +109,7 @@ namespace Server.Commands
CommandSystem.Register("DocGen", AccessLevel.Administrator, DocGen_OnCommand);
}
[Usage("DocGen")]
[Description("Generates RunUO documentation.")]
[Usage("DocGen"), Description("Generates RunUO documentation.")]
private static void DocGen_OnCommand(CommandEventArgs e)
{
World.Broadcast(0x35, true, "Documentation is being generated, please wait.");
@ -332,7 +331,7 @@ namespace Server.Commands
if (type.IsGenericType)
{
var index = type.Name.IndexOf('`');
var index = type.Name.IndexOf('`', StringComparison.Ordinal);
if (index > 0)
{
@ -346,7 +345,7 @@ namespace Server.Commands
: new StringBuilder($"<a href=\"@directory@{rootType}-T-.html\">{rootType}</a>");
nameBuilder.Append("&lt;");
fnamBuilder.Append("-");
fnamBuilder.Append('-');
linkBuilder.Append("&lt;");
var typeArguments = type.GetGenericArguments();
@ -364,7 +363,7 @@ namespace Server.Commands
var aliasedName = AliasForName(sanitizedName);
nameBuilder.Append(sanitizedName);
fnamBuilder.Append("T");
fnamBuilder.Append('T');
if (DontLink(typeArguments[i]))
{
linkBuilder.Append($"<font color=\"blue\">{aliasedName}</font>");
@ -378,7 +377,7 @@ namespace Server.Commands
}
nameBuilder.Append("&gt;");
fnamBuilder.Append("-");
fnamBuilder.Append('-');
linkBuilder.Append("&gt;");
name = nameBuilder.ToString();
@ -407,7 +406,7 @@ namespace Server.Commands
public static string SanitizeType(string name)
{
var anonymousType = name.Contains("<");
var anonymousType = name.Contains('<', StringComparison.Ordinal);
var sb = new StringBuilder(name);
for (var i = 0; i < ReplaceChars.Length; ++i)
{
@ -466,7 +465,7 @@ namespace Server.Commands
return true;
}
if (type.Namespace.StartsWith("Server"))
if (type.Namespace.StartsWith("Server", StringComparison.Ordinal))
{
return false;
}
@ -489,11 +488,12 @@ namespace Server.Commands
}
var index = 0;
var file = string.Concat(name, ext);
var file = $"{name}{ext}";
while (File.Exists(Path.Combine(root, file)))
{
file = string.Concat(name, ++index, ext);
index++;
file = $"{name}{index}{ext}";
}
return file;
@ -604,7 +604,7 @@ namespace Server.Commands
if (realType?.IsGenericType == true)
{
FormatGeneric(realType, out _, out _, out var linkName);
aliased = linkName.Replace("@directory@", null);
aliased = linkName.Replace("@directory@", null, StringComparison.Ordinal);
}
else
{
@ -621,7 +621,7 @@ namespace Server.Commands
aliased ??= realType?.Name ?? "";
}
return string.Concat(prepend, aliased, append, name);
return $"{prepend}{aliased}{append}{name}";
}
private static bool Document()
@ -1719,7 +1719,7 @@ namespace Server.Commands
{
line = line.Trim();
if (line.Length == 0 || line.StartsWith("#"))
if (line.Length == 0 || line.StartsWith("#", StringComparison.Ordinal))
{
continue;
}
@ -2029,16 +2029,11 @@ namespace Server.Commands
var aliases = attrs.Length == 0 ? null : attrs[0] as AliasesAttribute;
var descString = desc.Description.Replace("<", "&lt;").Replace(">", "&gt;");
var descString = desc.Description
.Replace("<", "&lt;", StringComparison.Ordinal)
.Replace(">", "&gt;", StringComparison.Ordinal);
if (aliases == null)
{
list.Add(new DocCommandEntry(e.AccessLevel, e.Command, null, usage.Usage, descString));
}
else
{
list.Add(new DocCommandEntry(e.AccessLevel, e.Command, aliases.Aliases, usage.Usage, descString));
}
list.Add(new DocCommandEntry(e.AccessLevel, e.Command, aliases?.Aliases, usage.Usage, descString));
}
for (var i = 0; i < TargetCommands.AllCommands.Count; ++i)
@ -2062,7 +2057,9 @@ namespace Server.Commands
aliases[j] = cmds[j + 1];
}
desc = desc.Replace("<", "&lt;").Replace(">", "&gt;");
desc = desc
.Replace("<", "&lt;", StringComparison.Ordinal)
.Replace(">", "&gt;", StringComparison.Ordinal);
if (command.Supports != CommandSupport.Single)
{
@ -2138,7 +2135,9 @@ namespace Server.Commands
aliases[j] = cmds[j + 1];
}
desc = desc.Replace("<", "&lt;").Replace(">", "&gt;");
desc = desc
.Replace("<", "&lt;", StringComparison.Ordinal)
.Replace(">", "&gt;", StringComparison.Ordinal);
list.Add(new DocCommandEntry(command.AccessLevel, cmd, aliases, usage, desc));
}
@ -2237,7 +2236,9 @@ namespace Server.Commands
{
html.Write(
"<td class=\"rentry\"><b>Usage: {0}</b><br>{1}</td>",
usage.Replace("<", "&lt;").Replace(">", "&gt;"),
usage
.Replace("<", "&lt;", StringComparison.Ordinal)
.Replace(">", "&gt;", StringComparison.Ordinal),
desc
);
}
@ -2245,7 +2246,9 @@ namespace Server.Commands
{
html.Write(
"<td class=\"rentry\"><b>Usage: {0}</b><br>Alias{1}: ",
usage.Replace("<", "&lt;").Replace(">", "&gt;"),
usage
.Replace("<", "&lt;", StringComparison.Ordinal)
.Replace(">", "&gt;", StringComparison.Ordinal),
aliases.Length == 1 ? "" : "es"
);
@ -2564,7 +2567,7 @@ namespace Server.Commands
if (ifaceInfo == null)
{
FormatGeneric(iface, out _, out _, out var linkName);
typeHtml.Write($"<!-- DBG-2.1 -->{linkName.Replace("@directory@", null)}");
typeHtml.Write($"<!-- DBG-2.1 -->{linkName.Replace("@directory@", null, StringComparison.Ordinal)}");
}
else
{
@ -2910,7 +2913,7 @@ namespace Server.Commands
public string FileName => m_FileName;
public string TypeName => m_TypeName;
public string LinkName(string dirRoot) => m_LinkName.Replace("@directory@", dirRoot);
public string LinkName(string dirRoot) => m_LinkName.Replace("@directory@", dirRoot, StringComparison.Ordinal);
}
private class SpeechEntry
@ -3009,7 +3012,7 @@ namespace Server.Commands
return Body == e?.Body && BodyType == e.BodyType && Name == e.Name;
}
public override int GetHashCode() => Body.BodyID ^ (int)BodyType ^ Name.GetHashCode();
public override int GetHashCode() => Body.BodyID ^ (int)BodyType ^ Name.GetHashCode(StringComparison.Ordinal);
}
public class BodyEntrySorter : IComparer<BodyEntry>

View file

@ -7,8 +7,7 @@ namespace Server.Commands
CommandSystem.Register("DragEffects", AccessLevel.Developer, DragEffects_OnCommand);
}
[Usage("DragEffects [enable=false]")]
[Description("Enables or disables the item drag and drop effects.")]
[Usage("DragEffects [enable=false]"), Description("Enables or disables the item drag and drop effects.")]
public static void DragEffects_OnCommand(CommandEventArgs e)
{
if (e.Length == 0)

View file

@ -13,8 +13,7 @@ namespace Server.Commands
CommandSystem.Register("DupeInBag", AccessLevel.GameMaster, DupeInBag_OnCommand);
}
[Usage("Dupe [amount]")]
[Description("Dupes a targeted item.")]
[Usage("Dupe [amount]"), Description("Dupes a targeted item.")]
private static void Dupe_OnCommand(CommandEventArgs e)
{
var amount = 1;
@ -27,8 +26,7 @@ namespace Server.Commands
e.Mobile.SendMessage("What do you wish to dupe?");
}
[Usage("DupeInBag <count>")]
[Description("Dupes an item at it's current location (count) number of times.")]
[Usage("DupeInBag <count>"), Description("Dupes an item at it's current location (count) number of times.")]
private static void DupeInBag_OnCommand(CommandEventArgs e)
{
var amount = 1;

View file

@ -4,7 +4,7 @@ using Server.Items;
namespace Server.Commands
{
public class ExportCommand
public static class ExportCommand
{
private const string ExportFile = @"C:\Uo\WorldForge\items.wsc";

View file

@ -12,7 +12,7 @@ using Server.Spells;
namespace Server.Commands.Generic
{
public class TargetCommands
public static class TargetCommands
{
public static List<BaseCommand> AllCommands { get; } = new List<BaseCommand>();
@ -788,7 +788,7 @@ namespace Server.Commands.Generic
var result = Properties.GetValue(e.Mobile, obj, e.GetString(i));
if (result == "Property not found." || result == "Property is write only." ||
result.StartsWith("Getting this property"))
result.StartsWith("Getting this property", StringComparison.Ordinal))
{
LogFailure(result);
}

View file

@ -194,7 +194,7 @@ namespace Server.Commands.Generic
sb.Append(' ');
}
if (args[i].IndexOf(' ') >= 0)
if (args[i].Contains(' ', StringComparison.Ordinal))
{
sb.Append('"');
sb.Append(args[i]);

View file

@ -38,11 +38,8 @@ namespace Server.Commands.Generic
var list = new List<object>();
var addresses = new List<IPAddress>();
var states = TcpServer.Instances;
for (var i = 0; i < states.Count; ++i)
foreach (var ns in TcpServer.Instances)
{
var ns = states[i];
var mob = ns.Mobile;
if (mob != null && !addresses.Contains(ns.Address) && ext.IsValid(mob))

View file

@ -103,22 +103,20 @@ namespace Server.Commands.Generic
return Empty;
}
var index = 0;
var objectType = AssemblyHandler.FindFirstTypeForName(args[offset + index], true);
var objectType = AssemblyHandler.FindFirstTypeForName(args[offset], true);
if (objectType == null)
{
throw new Exception($"No type with that name ({args[offset + index]}) was found.");
throw new Exception($"No type with that name ({args[offset]}) was found.");
}
++index;
var conditions = new List<ICondition[]>();
var current = new List<ICondition>();
current.Add(TypeCondition.Default);
var index = 1;
while (index < size)
{
var cur = args[offset + index];

View file

@ -36,11 +36,8 @@ namespace Server.Commands.Generic
var list = new List<object>();
var states = TcpServer.Instances;
for (var i = 0; i < states.Count; ++i)
foreach (var ns in TcpServer.Instances)
{
var ns = states[i];
var mob = ns.Mobile;
if (mob == null)

View file

@ -17,7 +17,7 @@ using Server.Targets;
namespace Server.Commands
{
public class CommandHandlers
public static class CommandHandlers
{
public static void Initialize()
{
@ -76,8 +76,7 @@ namespace Server.Commands
CommandSystem.Register(command, access, handler);
}
[Usage("SpeedBoost [true|false]")]
[Description("Enables a speed boost for the invoker. Disable with parameters.")]
[Usage("SpeedBoost [true|false]"), Description("Enables a speed boost for the invoker. Disable with parameters.")]
private static void SpeedBoost_OnCommand(CommandEventArgs e)
{
var from = e.Mobile;
@ -101,8 +100,7 @@ namespace Server.Commands
}
}
[Usage("Where")]
[Description("Tells the commanding player his coordinates, region, and facet.")]
[Usage("Where"), Description("Tells the commanding player his coordinates, region, and facet.")]
public static void Where_OnCommand(CommandEventArgs e)
{
var from = e.Mobile;
@ -132,10 +130,9 @@ namespace Server.Commands
}
}
[Usage("DropHolding")]
[Description(
"Drops the item, if any, that a targeted player is holding. The item is placed into their backpack, or if that's full, at their feet."
)]
[Usage("DropHolding"), Description(
"Drops the item, if any, that a targeted player is holding. The item is placed into their backpack, or if that's full, at their feet."
)]
public static void DropHolding_OnCommand(CommandEventArgs e)
{
e.Mobile.BeginTarget(-1, false, TargetFlags.None, DropHolding_OnTarget);
@ -221,8 +218,8 @@ namespace Server.Commands
}
}
[Usage("ClearFacet")]
[Description("Deletes all items and mobiles in your facet. Players and their inventory will not be deleted.")]
[Usage("ClearFacet"),
Description("Deletes all items and mobiles in your facet. Players and their inventory will not be deleted.")]
public static void ClearFacet_OnCommand(CommandEventArgs e)
{
var from = e.Mobile;
@ -282,8 +279,7 @@ namespace Server.Commands
}
}
[Usage("GetFollowers")]
[Description("Teleports all pets of a targeted player to your location.")]
[Usage("GetFollowers"), Description("Teleports all pets of a targeted player to your location.")]
public static void GetFollowers_OnCommand(CommandEventArgs e)
{
e.Mobile.BeginTarget(-1, false, TargetFlags.None, GetFollowers_OnTarget);
@ -376,17 +372,16 @@ namespace Server.Commands
}
}
[Usage("ViewEquip")]
[Description("Lists equipment of a targeted mobile. From the list you can move, delete, or open props.")]
[Usage("ViewEquip"),
Description("Lists equipment of a targeted mobile. From the list you can move, delete, or open props.")]
public static void ViewEquip_OnCommand(CommandEventArgs e)
{
e.Mobile.Target = new ViewEqTarget();
}
[Usage("Sound <index> [toAll=true]")]
[Description(
"Plays a sound to players within 12 tiles of you. The (toAll) argument specifies to everyone, or just those who can see you."
)]
[Usage("Sound <index> [toAll=true]"), Description(
"Plays a sound to players within 12 tiles of you. The (toAll) argument specifies to everyone, or just those who can see you."
)]
public static void Sound_OnCommand(CommandEventArgs e)
{
if (e.Length == 1)
@ -433,8 +428,7 @@ namespace Server.Commands
}
}
[Usage("Echo <text>")]
[Description("Relays (text) as a system message.")]
[Usage("Echo <text>"), Description("Relays (text) as a system message.")]
public static void Echo_OnCommand(CommandEventArgs e)
{
var toEcho = e.ArgString.Trim();
@ -449,29 +443,25 @@ namespace Server.Commands
}
}
[Usage("Bank")]
[Description("Opens the bank box of a given target.")]
[Usage("Bank"), Description("Opens the bank box of a given target.")]
public static void Bank_OnCommand(CommandEventArgs e)
{
e.Mobile.Target = new BankTarget();
}
[Usage("Client")]
[Description("Opens the client gump menu for a given player.")]
[Usage("Client"), Description("Opens the client gump menu for a given player.")]
private static void Client_OnCommand(CommandEventArgs e)
{
e.Mobile.Target = new ClientTarget();
}
[Usage("Move")]
[Description("Repositions a targeted item or mobile.")]
[Usage("Move"), Description("Repositions a targeted item or mobile.")]
private static void Move_OnCommand(CommandEventArgs e)
{
e.Mobile.Target = new PickMoveTarget();
}
[Usage("Save")]
[Description("Saves the world.")]
[Usage("Save"), Description("Saves the world.")]
private static void Save_OnCommand(CommandEventArgs e)
{
AutoSave.Save();
@ -494,10 +484,9 @@ namespace Server.Commands
return validMap;
}
[Usage("Go [name | serial | (x y [z]) | (deg min (N | S) deg min (E | W))]")]
[Description(
"With no arguments, this command brings up the go menu. With one argument, (name), you are moved to that regions \"go location.\" Or, if a numerical value is specified for one argument, (serial), you are moved to that object. Two or three arguments, (x y [z]), will move your character to that location. When six arguments are specified, (deg min (N | S) deg min (E | W)), your character will go to an approximate of those sextant coordinates."
)]
[Usage("Go [name | serial | (x y [z]) | (deg min (N | S) deg min (E | W))]"), Description(
"With no arguments, this command brings up the go menu. With one argument, (name), you are moved to that regions \"go location.\" Or, if a numerical value is specified for one argument, (serial), you are moved to that object. Two or three arguments, (x y [z]), will move your character to that location. When six arguments are specified, (deg min (N | S) deg min (E | W)), your character will go to an approximate of those sextant coordinates."
)]
private static void Go_OnCommand(CommandEventArgs e)
{
var from = e.Mobile;
@ -707,8 +696,7 @@ namespace Server.Commands
}
}
[Usage("Help")]
[Description("Lists all available commands.")]
[Usage("Help"), Description("Lists all available commands.")]
public static void Help_OnCommand(CommandEventArgs e)
{
var m = e.Mobile;
@ -755,17 +743,13 @@ namespace Server.Commands
}
}
[Usage("SMsg <text>")]
[Aliases("S", "SM")]
[Description("Broadcasts a message to all online staff.")]
[Usage("SMsg <text>"), Aliases("S", "SM"), Description("Broadcasts a message to all online staff.")]
public static void StaffMessage_OnCommand(CommandEventArgs e)
{
BroadcastMessage(AccessLevel.Counselor, e.Mobile.SpeechHue, $"[{e.Mobile.Name}] {e.ArgString}");
}
[Usage("BCast <text>")]
[Aliases("B", "BC")]
[Description("Broadcasts a message to everyone online.")]
[Usage("BCast <text>"), Aliases("B", "BC"), Description("Broadcasts a message to everyone online.")]
public static void BroadcastMessage_OnCommand(CommandEventArgs e)
{
BroadcastMessage(AccessLevel.Player, 0x482, $"Staff message from {e.Mobile.Name}:");
@ -785,9 +769,7 @@ namespace Server.Commands
}
}
[Usage("AutoPageNotify")]
[Aliases("APN")]
[Description("Toggles your auto-page-notify status.")]
[Usage("AutoPageNotify"), Aliases("APN"), Description("Toggles your auto-page-notify status.")]
public static void APN_OnCommand(CommandEventArgs e)
{
var m = e.Mobile;
@ -797,8 +779,8 @@ namespace Server.Commands
m.SendMessage("Your auto-page-notify has been turned {0}.", m.AutoPageNotify ? "on" : "off");
}
[Usage("Animate <action> <frameCount> <repeatCount> <forward> <repeat> <delay>")]
[Description("Makes your character do a specified animation.")]
[Usage("Animate <action> <frameCount> <repeatCount> <forward> <repeat> <delay>"),
Description("Makes your character do a specified animation.")]
public static void Animate_OnCommand(CommandEventArgs e)
{
if (e.Length == 6)
@ -818,8 +800,7 @@ namespace Server.Commands
}
}
[Usage("Cast <name>")]
[Description("Casts a spell by name.")]
[Usage("Cast <name>"), Description("Casts a spell by name.")]
public static void Cast_OnCommand(CommandEventArgs e)
{
if (e.Length == 1)
@ -846,22 +827,19 @@ namespace Server.Commands
}
}
[Usage("Stuck")]
[Description("Opens a menu of towns, used for teleporting stuck mobiles.")]
[Usage("Stuck"), Description("Opens a menu of towns, used for teleporting stuck mobiles.")]
public static void Stuck_OnCommand(CommandEventArgs e)
{
e.Mobile.Target = new StuckMenuTarget();
}
[Usage("Light <level>")]
[Description("Set your local lightlevel.")]
[Usage("Light <level>"), Description("Set your local lightlevel.")]
public static void Light_OnCommand(CommandEventArgs e)
{
e.Mobile.LightLevel = e.GetInt32(0);
}
[Usage("Stats")]
[Description("View some stats about the server.")]
[Usage("Stats"), Description("View some stats about the server.")]
public static void Stats_OnCommand(CommandEventArgs e)
{
e.Mobile.SendMessage("Open Connections: {0}", TcpServer.Instances.Count);

View file

@ -1,3 +1,4 @@
using System;
using System.Collections.Generic;
using System.Text;
using Server.Commands.Generic;
@ -8,7 +9,7 @@ using CommandInfoSorter = Server.Commands.Docs.CommandEntrySorter;
namespace Server.Commands
{
public class HelpInfo
public static class HelpInfo
{
public static Dictionary<string, CommandInfo> HelpInfos { get; } = new Dictionary<string, CommandInfo>();
@ -22,10 +23,9 @@ namespace Server.Commands
FillTable();
}
[Usage("HelpInfo [<command>]")]
[Description(
"Gives information on a specified command, or when no argument specified, displays a gump containing all commands"
)]
[Usage("HelpInfo [<command>]"), Description(
"Gives information on a specified command, or when no argument specified, displays a gump containing all commands"
)]
private static void HelpInfo_OnCommand(CommandEventArgs e)
{
if (e.Length > 0)
@ -93,7 +93,9 @@ namespace Server.Commands
var aliases = attrs.Length == 0 ? null : attrs[0] as AliasesAttribute;
var descString = desc.Description.Replace("<", "(").Replace(">", ")");
var descString = desc.Description
.Replace("<", "(", StringComparison.Ordinal)
.Replace(">", ")", StringComparison.Ordinal);
if (aliases == null)
{
@ -137,7 +139,9 @@ namespace Server.Commands
aliases[j] = cmds[j + 1];
}
desc = desc.Replace("<", "(").Replace(">", ")");
desc = desc
.Replace("<", "(", StringComparison.Ordinal)
.Replace(">", ")", StringComparison.Ordinal);
if (command.Supports != CommandSupport.Single)
{
@ -224,7 +228,9 @@ namespace Server.Commands
aliases[j] = cmds[j + 1];
}
desc = desc.Replace("<", ")").Replace(">", ")");
desc = desc
.Replace("<", ")", StringComparison.Ordinal)
.Replace(">", ")", StringComparison.Ordinal);
list.Add(new CommandInfo(command.AccessLevel, cmd, aliases, usage, desc));
@ -406,7 +412,10 @@ namespace Server.Commands
var sb = new StringBuilder();
sb.Append("Usage: ");
sb.Append(info.Usage.Replace("<", "(").Replace(">", ")"));
var usage = info.Usage
.Replace("<", "(", StringComparison.Ordinal)
.Replace(">", ")", StringComparison.Ordinal);
sb.Append(usage);
sb.Append("<BR>");
var aliases = info.Aliases;

View file

@ -1,5 +1,4 @@
using System.Collections.Generic;
using System.Globalization;
using Server.Commands.Generic;
using Server.Items;
using Server.Targeting;
@ -43,9 +42,7 @@ namespace Server.Commands
graphics = new List<int>();
foreach (var arg in e.Arguments)
{
var numberStyles = arg.ToLower().StartsWith("0x") ? NumberStyles.HexNumber : NumberStyles.Integer;
if (int.TryParse(arg, numberStyles, CultureInfo.InvariantCulture, out var result))
if (Utility.ToInt32(arg, out var result))
{
graphics.Add(result);
}

View file

@ -5,7 +5,7 @@ using Server.Accounting;
namespace Server.Commands
{
public class CommandLogging
public static class CommandLogging
{
private static readonly char[] m_NotSafe = { '\\', '/', ':', '*', '?', '"', '<', '>', '|' };
public static bool Enabled { get; set; } = true;
@ -44,25 +44,13 @@ namespace Server.Commands
}
}
public static object Format(object o)
{
if (o is Mobile m)
public static object Format(object o) =>
o switch
{
if (m.Account == null)
{
return $"{m} (no account)";
}
return $"{m} ('{m.Account.Username}')";
}
if (o is Item item)
{
return $"0x{item.Serial.Value:X} ({item.GetType().Name})";
}
return o;
}
Mobile m => m.Account == null ? $"{m} (no account)" : $"{m} ('{m.Account.Username}')",
Item item => $"0x{item.Serial.Value:X} ({item.GetType().Name})",
_ => o
};
public static void WriteLine(Mobile from, string format, params object[] args)
{
@ -126,7 +114,7 @@ namespace Server.Commands
for (var i = 0; isSafe && i < m_NotSafe.Length; ++i)
{
isSafe = ip.IndexOf(m_NotSafe[i]) == -1;
isSafe = !ip.Contains(m_NotSafe[i], StringComparison.Ordinal);
}
if (isSafe)

View file

@ -8,7 +8,7 @@ using CPA = Server.CommandPropertyAttribute;
namespace Server.Commands
{
public class Add
public static class Add
{
private static readonly Type m_EntityType = typeof(IEntity);
@ -72,7 +72,7 @@ namespace Server.Commands
sb.AppendFormat("from {0} to {1} in {2}", start, end, from.Map);
}
sb.Append(":");
sb.Append(':');
for (var i = 0; i < args.Length; ++i)
{
@ -300,7 +300,7 @@ namespace Server.Commands
object obj = value;
if (value?.StartsWith("0x") == true)
if (value?.StartsWith("0x", StringComparison.Ordinal) == true)
{
if (IsSignedNumeric(type))
{
@ -670,91 +670,81 @@ namespace Server.Commands
}
}
[Usage("Tile <name> [params] [set {<propertyName> <value> ...}]")]
[Description(
"Tiles an item or npc by name into a targeted bounding box. Optional constructor parameters. Optional set property list."
)]
[Usage("Tile <name> [params] [set {<propertyName> <value> ...}]"), Description(
"Tiles an item or npc by name into a targeted bounding box. Optional constructor parameters. Optional set property list."
)]
public static void Tile_OnCommand(CommandEventArgs e)
{
Internal_OnCommand(e, false);
}
[Usage("TileRXYZ <x> <y> <w> <h> <z> <name> [params] [set {<propertyName> <value> ...}]")]
[Description(
"Tiles an item or npc by name into a given bounding box, (x, y) parameters are relative to your characters position. Optional constructor parameters. Optional set property list."
)]
[Usage("TileRXYZ <x> <y> <w> <h> <z> <name> [params] [set {<propertyName> <value> ...}]"), Description(
"Tiles an item or npc by name into a given bounding box, (x, y) parameters are relative to your characters position. Optional constructor parameters. Optional set property list."
)]
public static void TileRXYZ_OnCommand(CommandEventArgs e)
{
InternalRXYZ_OnCommand(e, false);
}
[Usage("TileXYZ <x> <y> <w> <h> <z> <name> [params] [set {<propertyName> <value> ...}]")]
[Description(
"Tiles an item or npc by name into a given bounding box. Optional constructor parameters. Optional set property list."
)]
[Usage("TileXYZ <x> <y> <w> <h> <z> <name> [params] [set {<propertyName> <value> ...}]"), Description(
"Tiles an item or npc by name into a given bounding box. Optional constructor parameters. Optional set property list."
)]
public static void TileXYZ_OnCommand(CommandEventArgs e)
{
InternalXYZ_OnCommand(e, false);
}
[Usage("TileZ <z> <name> [params] [set {<propertyName> <value> ...}]")]
[Description(
"Tiles an item or npc by name into a targeted bounding box at a fixed Z location. Optional constructor parameters. Optional set property list."
)]
[Usage("TileZ <z> <name> [params] [set {<propertyName> <value> ...}]"), Description(
"Tiles an item or npc by name into a targeted bounding box at a fixed Z location. Optional constructor parameters. Optional set property list."
)]
public static void TileZ_OnCommand(CommandEventArgs e)
{
InternalZ_OnCommand(e, false);
}
[Usage("TileAvg <name> [params] [set {<propertyName> <value> ...}]")]
[Description(
"Tiles an item or npc by name into a targeted bounding box on the map's average Z elevation. Optional constructor parameters. Optional set property list."
)]
[Usage("TileAvg <name> [params] [set {<propertyName> <value> ...}]"), Description(
"Tiles an item or npc by name into a targeted bounding box on the map's average Z elevation. Optional constructor parameters. Optional set property list."
)]
public static void TileAvg_OnCommand(CommandEventArgs e)
{
InternalAvg_OnCommand(e, false);
}
[Usage("Outline <name> [params] [set {<propertyName> <value> ...}]")]
[Description(
"Tiles an item or npc by name around a targeted bounding box. Optional constructor parameters. Optional set property list."
)]
[Usage("Outline <name> [params] [set {<propertyName> <value> ...}]"), Description(
"Tiles an item or npc by name around a targeted bounding box. Optional constructor parameters. Optional set property list."
)]
public static void Outline_OnCommand(CommandEventArgs e)
{
Internal_OnCommand(e, true);
}
[Usage("OutlineRXYZ <x> <y> <w> <h> <z> <name> [params] [set {<propertyName> <value> ...}]")]
[Description(
"Tiles an item or npc by name around a given bounding box, (x, y) parameters are relative to your characters position. Optional constructor parameters. Optional set property list."
)]
[Usage("OutlineRXYZ <x> <y> <w> <h> <z> <name> [params] [set {<propertyName> <value> ...}]"), Description(
"Tiles an item or npc by name around a given bounding box, (x, y) parameters are relative to your characters position. Optional constructor parameters. Optional set property list."
)]
public static void OutlineRXYZ_OnCommand(CommandEventArgs e)
{
InternalRXYZ_OnCommand(e, true);
}
[Usage("OutlineXYZ <x> <y> <w> <h> <z> <name> [params] [set {<propertyName> <value> ...}]")]
[Description(
"Tiles an item or npc by name around a given bounding box. Optional constructor parameters. Optional set property list."
)]
[Usage("OutlineXYZ <x> <y> <w> <h> <z> <name> [params] [set {<propertyName> <value> ...}]"), Description(
"Tiles an item or npc by name around a given bounding box. Optional constructor parameters. Optional set property list."
)]
public static void OutlineXYZ_OnCommand(CommandEventArgs e)
{
InternalXYZ_OnCommand(e, true);
}
[Usage("OutlineZ <z> <name> [params] [set {<propertyName> <value> ...}]")]
[Description(
"Tiles an item or npc by name around a targeted bounding box at a fixed Z location. Optional constructor parameters. Optional set property list."
)]
[Usage("OutlineZ <z> <name> [params] [set {<propertyName> <value> ...}]"), Description(
"Tiles an item or npc by name around a targeted bounding box at a fixed Z location. Optional constructor parameters. Optional set property list."
)]
public static void OutlineZ_OnCommand(CommandEventArgs e)
{
InternalZ_OnCommand(e, true);
}
[Usage("OutlineAvg <name> [params] [set {<propertyName> <value> ...}]")]
[Description(
"Tiles an item or npc by name around a targeted bounding box on the map's average Z elevation. Optional constructor parameters. Optional set property list."
)]
[Usage("OutlineAvg <name> [params] [set {<propertyName> <value> ...}]"), Description(
"Tiles an item or npc by name around a targeted bounding box on the map's average Z elevation. Optional constructor parameters. Optional set property list."
)]
public static void OutlineAvg_OnCommand(CommandEventArgs e)
{
InternalAvg_OnCommand(e, true);

View file

@ -93,10 +93,9 @@ namespace Server.Gumps
CommandSystem.Register("AddMenu", AccessLevel.GameMaster, AddMenu_OnCommand);
}
[Usage("AddMenu [searchString]")]
[Description(
"Opens an add menu, with an optional initial search string. This menu allows you to search for Items or Mobiles and add them interactively."
)]
[Usage("AddMenu [searchString]"), Description(
"Opens an add menu, with an optional initial search string. This menu allows you to search for Items or Mobiles and add them interactively."
)]
private static void AddMenu_OnCommand(CommandEventArgs e)
{
var val = e.ArgString.Trim();
@ -135,7 +134,7 @@ namespace Server.Gumps
var t = types[i];
if ((typeofMobile.IsAssignableFrom(t) || typeofItem.IsAssignableFrom(t)) &&
t.Name.ToLower().IndexOf(match, StringComparison.Ordinal) >= 0 && !results.Contains(t))
t.Name.ToLower().Contains(match, StringComparison.Ordinal) && !results.Contains(t))
{
var ctors = t.GetConstructors();

View file

@ -48,8 +48,7 @@ namespace Server.Commands
CommandSystem.Register("RebuildCategorization", AccessLevel.Administrator, RebuildCategorization_OnCommand);
}
[Usage("RebuildCategorization")]
[Description("Rebuilds the categorization data file used by the Add command.")]
[Usage("RebuildCategorization"), Description("Rebuilds the categorization data file used by the Add command.")]
public static void RebuildCategorization_OnCommand(CommandEventArgs e)
{
var root = new CategoryEntry(null, "Add Menu", new[] { Items, Mobiles });
@ -305,7 +304,7 @@ namespace Server.Commands
var text = lines[index].Text;
var start = text.IndexOf('(');
var start = text.IndexOf('(', StringComparison.Ordinal);
if (start < 0)
{

View file

@ -20,8 +20,7 @@ namespace Server.Commands
CommandSystem.Register("Decorate", AccessLevel.Administrator, Decorate_OnCommand);
}
[Usage("Decorate")]
[Description("Generates world decoration.")]
[Usage("Decorate"), Description("Generates world decoration.")]
private static void Decorate_OnCommand(CommandEventArgs e)
{
m_Mobile = e.Mobile;
@ -104,9 +103,9 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("LabelNumber"))
if (m_Params[i].StartsWith("LabelNumber", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -124,9 +123,9 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("LabelNumber"))
if (m_Params[i].StartsWith("LabelNumber", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -172,9 +171,9 @@ namespace Server.Commands
{
locked = true;
}
else if (m_Params[i].StartsWith("TargetMap"))
else if (m_Params[i].StartsWith("TargetMap", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -201,54 +200,54 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Range"))
if (m_Params[i].StartsWith("Range", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
range = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("WarningString"))
else if (m_Params[i].StartsWith("WarningString", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
messageString = m_Params[i].Substring(++indexOf);
}
}
else if (m_Params[i].StartsWith("WarningNumber"))
else if (m_Params[i].StartsWith("WarningNumber", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
messageNumber = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("HintString"))
else if (m_Params[i].StartsWith("HintString", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
hintString = m_Params[i].Substring(++indexOf);
}
}
else if (m_Params[i].StartsWith("HintNumber"))
else if (m_Params[i].StartsWith("HintNumber", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
hintNumber = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("ResetDelay"))
else if (m_Params[i].StartsWith("ResetDelay", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -274,36 +273,36 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Range"))
if (m_Params[i].StartsWith("Range", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
range = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("WarningString"))
else if (m_Params[i].StartsWith("WarningString", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
messageString = m_Params[i].Substring(++indexOf);
}
}
else if (m_Params[i].StartsWith("WarningNumber"))
else if (m_Params[i].StartsWith("WarningNumber", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
messageNumber = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("ResetDelay"))
else if (m_Params[i].StartsWith("ResetDelay", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -325,9 +324,9 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("CannonDirection"))
if (m_Params[i].StartsWith("CannonDirection", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -349,27 +348,27 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Word"))
if (m_Params[i].StartsWith("Word", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
word = m_Params[i].Substring(++indexOf);
}
}
else if (m_Params[i].StartsWith("DestStart"))
else if (m_Params[i].StartsWith("DestStart", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
destination.Start = Point2D.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("DestEnd"))
else if (m_Params[i].StartsWith("DestEnd", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -387,9 +386,9 @@ namespace Server.Commands
for (var i = 0; !fill && i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Content"))
if (m_Params[i].StartsWith("Content", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -418,9 +417,9 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Facing"))
if (m_Params[i].StartsWith("Facing", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -448,9 +447,9 @@ namespace Server.Commands
{
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("SpawnLocation"))
if (m_Params[i].StartsWith("SpawnLocation", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -516,45 +515,45 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Spawn"))
if (m_Params[i].StartsWith("Spawn", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
sp.AddEntry(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("MinDelay"))
else if (m_Params[i].StartsWith("MinDelay", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
sp.MinDelay = TimeSpan.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("MaxDelay"))
else if (m_Params[i].StartsWith("MaxDelay", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
sp.MaxDelay = TimeSpan.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("NextSpawn"))
else if (m_Params[i].StartsWith("NextSpawn", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
sp.NextSpawn = TimeSpan.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Count"))
else if (m_Params[i].StartsWith("Count", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -565,36 +564,36 @@ namespace Server.Commands
}
}
}
else if (m_Params[i].StartsWith("Team"))
else if (m_Params[i].StartsWith("Team", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
sp.Team = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("HomeRange"))
else if (m_Params[i].StartsWith("HomeRange", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
sp.HomeRange = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Running"))
else if (m_Params[i].StartsWith("Running", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
sp.Running = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Group"))
else if (m_Params[i].StartsWith("Group", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -607,36 +606,36 @@ namespace Server.Commands
{
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Description"))
if (m_Params[i].StartsWith("Description", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
rune.Description = m_Params[i].Substring(++indexOf);
}
}
else if (m_Params[i].StartsWith("Marked"))
else if (m_Params[i].StartsWith("Marked", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
rune.Marked = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("TargetMap"))
else if (m_Params[i].StartsWith("TargetMap", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
rune.TargetMap = Map.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Target"))
else if (m_Params[i].StartsWith("Target", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -649,108 +648,108 @@ namespace Server.Commands
{
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Skill"))
if (m_Params[i].StartsWith("Skill", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
st.Skill = (SkillName)Enum.Parse(typeof(SkillName), m_Params[i].Substring(++indexOf), true);
}
}
else if (m_Params[i].StartsWith("RequiredFixedPoint"))
else if (m_Params[i].StartsWith("RequiredFixedPoint", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
st.Required = Utility.ToInt32(m_Params[i].Substring(++indexOf)) * 0.1;
}
}
else if (m_Params[i].StartsWith("Required"))
else if (m_Params[i].StartsWith("Required", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
st.Required = Utility.ToDouble(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("MessageString"))
else if (m_Params[i].StartsWith("MessageString", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
st.MessageString = m_Params[i].Substring(++indexOf);
}
}
else if (m_Params[i].StartsWith("MessageNumber"))
else if (m_Params[i].StartsWith("MessageNumber", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
st.MessageNumber = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("PointDest"))
else if (m_Params[i].StartsWith("PointDest", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
st.PointDest = Point3D.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("MapDest"))
else if (m_Params[i].StartsWith("MapDest", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
st.MapDest = Map.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Creatures"))
else if (m_Params[i].StartsWith("Creatures", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
st.Creatures = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("SourceEffect"))
else if (m_Params[i].StartsWith("SourceEffect", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
st.SourceEffect = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("DestEffect"))
else if (m_Params[i].StartsWith("DestEffect", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
st.DestEffect = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("SoundID"))
else if (m_Params[i].StartsWith("SoundID", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
st.SoundID = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Delay"))
else if (m_Params[i].StartsWith("Delay", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -768,90 +767,90 @@ namespace Server.Commands
{
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Substring"))
if (m_Params[i].StartsWith("Substring", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
kt.Substring = m_Params[i].Substring(++indexOf);
}
}
else if (m_Params[i].StartsWith("Keyword"))
else if (m_Params[i].StartsWith("Keyword", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
kt.Keyword = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Range"))
else if (m_Params[i].StartsWith("Range", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
kt.Range = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("PointDest"))
else if (m_Params[i].StartsWith("PointDest", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
kt.PointDest = Point3D.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("MapDest"))
else if (m_Params[i].StartsWith("MapDest", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
kt.MapDest = Map.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Creatures"))
else if (m_Params[i].StartsWith("Creatures", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
kt.Creatures = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("SourceEffect"))
else if (m_Params[i].StartsWith("SourceEffect", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
kt.SourceEffect = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("DestEffect"))
else if (m_Params[i].StartsWith("DestEffect", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
kt.DestEffect = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("SoundID"))
else if (m_Params[i].StartsWith("SoundID", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
kt.SoundID = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Delay"))
else if (m_Params[i].StartsWith("Delay", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -869,63 +868,63 @@ namespace Server.Commands
{
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("PointDest"))
if (m_Params[i].StartsWith("PointDest", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
tp.PointDest = Point3D.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("MapDest"))
else if (m_Params[i].StartsWith("MapDest", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
tp.MapDest = Map.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Creatures"))
else if (m_Params[i].StartsWith("Creatures", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
tp.Creatures = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("SourceEffect"))
else if (m_Params[i].StartsWith("SourceEffect", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
tp.SourceEffect = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("DestEffect"))
else if (m_Params[i].StartsWith("DestEffect", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
tp.DestEffect = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("SoundID"))
else if (m_Params[i].StartsWith("SoundID", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
tp.SoundID = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Delay"))
else if (m_Params[i].StartsWith("Delay", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -943,9 +942,9 @@ namespace Server.Commands
{
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("ContentType"))
if (m_Params[i].StartsWith("ContentType", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -972,18 +971,18 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Light"))
if (m_Params[i].StartsWith("Light", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
item.Light = (LightType)Enum.Parse(typeof(LightType), m_Params[i].Substring(++indexOf), true);
}
}
else if (m_Params[i].StartsWith("Hue"))
else if (m_Params[i].StartsWith("Hue", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -999,18 +998,18 @@ namespace Server.Commands
}
}
}
else if (m_Params[i].StartsWith("Name"))
else if (m_Params[i].StartsWith("Name", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
item.Name = m_Params[i].Substring(++indexOf);
}
}
else if (m_Params[i].StartsWith("Amount"))
else if (m_Params[i].StartsWith("Amount", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -1249,7 +1248,7 @@ namespace Server.Commands
{
line = line.Trim();
if (line.Length > 0 && !line.StartsWith("#"))
if (line.Length > 0 && !line.StartsWith("#", StringComparison.Ordinal))
{
break;
}
@ -1262,7 +1261,7 @@ namespace Server.Commands
var list = new DecorationList();
var indexOf = line.IndexOf(' ');
var indexOf = line.IndexOf(' ', StringComparison.Ordinal);
list.m_Type = AssemblyHandler.FindFirstTypeForName(line.Substring(0, indexOf++), true);
@ -1272,14 +1271,14 @@ namespace Server.Commands
}
line = line.Substring(indexOf);
indexOf = line.IndexOf('(');
indexOf = line.IndexOf('(', StringComparison.Ordinal);
if (indexOf >= 0)
{
list.m_ItemID = Utility.ToInt32(line.Substring(0, indexOf - 1));
var parms = line.Substring(++indexOf);
if (line.EndsWith(")"))
if (line.EndsWith(")", StringComparison.Ordinal))
{
parms = parms.Substring(0, parms.Length - 1);
}
@ -1308,7 +1307,7 @@ namespace Server.Commands
break;
}
if (line.StartsWith("#"))
if (line.StartsWith("#", StringComparison.Ordinal))
{
continue;
}
@ -1338,7 +1337,7 @@ namespace Server.Commands
public static void Pop(out string v, ref string line)
{
var space = line.IndexOf(' ');
var space = line.IndexOf(' ', StringComparison.Ordinal);
if (space >= 0)
{

View file

@ -21,8 +21,7 @@ namespace Server.Commands
CommandSystem.Register("DecorateMag", AccessLevel.Administrator, DecorateMag_OnCommand);
}
[Usage("DecorateMag")]
[Description("Generates world decoration.")]
[Usage("DecorateMag"), Description("Generates world decoration.")]
private static void DecorateMag_OnCommand(CommandEventArgs e)
{
m_Mobile = e.Mobile;
@ -101,9 +100,9 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("LabelNumber"))
if (m_Params[i].StartsWith("LabelNumber", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -121,9 +120,9 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("LabelNumber"))
if (m_Params[i].StartsWith("LabelNumber", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -169,9 +168,9 @@ namespace Server.Commands
{
locked = true;
}
else if (m_Params[i].StartsWith("TargetMap"))
else if (m_Params[i].StartsWith("TargetMap", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -198,54 +197,54 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Range"))
if (m_Params[i].StartsWith("Range", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
range = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("WarningString"))
else if (m_Params[i].StartsWith("WarningString", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
messageString = m_Params[i].Substring(++indexOf);
}
}
else if (m_Params[i].StartsWith("WarningNumber"))
else if (m_Params[i].StartsWith("WarningNumber", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
messageNumber = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("HintString"))
else if (m_Params[i].StartsWith("HintString", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
hintString = m_Params[i].Substring(++indexOf);
}
}
else if (m_Params[i].StartsWith("HintNumber"))
else if (m_Params[i].StartsWith("HintNumber", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
hintNumber = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("ResetDelay"))
else if (m_Params[i].StartsWith("ResetDelay", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -271,36 +270,36 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Range"))
if (m_Params[i].StartsWith("Range", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
range = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("WarningString"))
else if (m_Params[i].StartsWith("WarningString", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
messageString = m_Params[i].Substring(++indexOf);
}
}
else if (m_Params[i].StartsWith("WarningNumber"))
else if (m_Params[i].StartsWith("WarningNumber", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
messageNumber = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("ResetDelay"))
else if (m_Params[i].StartsWith("ResetDelay", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -322,9 +321,9 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("CannonDirection"))
if (m_Params[i].StartsWith("CannonDirection", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -346,27 +345,27 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Word"))
if (m_Params[i].StartsWith("Word", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
word = m_Params[i].Substring(++indexOf);
}
}
else if (m_Params[i].StartsWith("DestStart"))
else if (m_Params[i].StartsWith("DestStart", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
destination.Start = Point2D.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("DestEnd"))
else if (m_Params[i].StartsWith("DestEnd", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -384,9 +383,9 @@ namespace Server.Commands
for (var i = 0; !fill && i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Content"))
if (m_Params[i].StartsWith("Content", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -415,9 +414,9 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Facing"))
if (m_Params[i].StartsWith("Facing", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -445,9 +444,9 @@ namespace Server.Commands
{
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("SpawnLocation"))
if (m_Params[i].StartsWith("SpawnLocation", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -513,45 +512,45 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Spawn"))
if (m_Params[i].StartsWith("Spawn", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
sp.AddEntry(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("MinDelay"))
else if (m_Params[i].StartsWith("MinDelay", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
sp.MinDelay = TimeSpan.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("MaxDelay"))
else if (m_Params[i].StartsWith("MaxDelay", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
sp.MaxDelay = TimeSpan.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("NextSpawn"))
else if (m_Params[i].StartsWith("NextSpawn", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
sp.NextSpawn = TimeSpan.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Count"))
else if (m_Params[i].StartsWith("Count", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -562,36 +561,36 @@ namespace Server.Commands
}
}
}
else if (m_Params[i].StartsWith("Team"))
else if (m_Params[i].StartsWith("Team", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
sp.Team = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("HomeRange"))
else if (m_Params[i].StartsWith("HomeRange", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
sp.HomeRange = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Running"))
else if (m_Params[i].StartsWith("Running", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
sp.Running = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Group"))
else if (m_Params[i].StartsWith("Group", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -604,36 +603,36 @@ namespace Server.Commands
{
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Description"))
if (m_Params[i].StartsWith("Description", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
rune.Description = m_Params[i].Substring(++indexOf);
}
}
else if (m_Params[i].StartsWith("Marked"))
else if (m_Params[i].StartsWith("Marked", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
rune.Marked = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("TargetMap"))
else if (m_Params[i].StartsWith("TargetMap", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
rune.TargetMap = Map.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Target"))
else if (m_Params[i].StartsWith("Target", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -646,108 +645,108 @@ namespace Server.Commands
{
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Skill"))
if (m_Params[i].StartsWith("Skill", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
st.Skill = (SkillName)Enum.Parse(typeof(SkillName), m_Params[i].Substring(++indexOf), true);
}
}
else if (m_Params[i].StartsWith("RequiredFixedPoint"))
else if (m_Params[i].StartsWith("RequiredFixedPoint", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
st.Required = Utility.ToInt32(m_Params[i].Substring(++indexOf)) * 0.1;
}
}
else if (m_Params[i].StartsWith("Required"))
else if (m_Params[i].StartsWith("Required", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
st.Required = Utility.ToDouble(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("MessageString"))
else if (m_Params[i].StartsWith("MessageString", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
st.MessageString = m_Params[i].Substring(++indexOf);
}
}
else if (m_Params[i].StartsWith("MessageNumber"))
else if (m_Params[i].StartsWith("MessageNumber", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
st.MessageNumber = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("PointDest"))
else if (m_Params[i].StartsWith("PointDest", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
st.PointDest = Point3D.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("MapDest"))
else if (m_Params[i].StartsWith("MapDest", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
st.MapDest = Map.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Creatures"))
else if (m_Params[i].StartsWith("Creatures", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
st.Creatures = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("SourceEffect"))
else if (m_Params[i].StartsWith("SourceEffect", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
st.SourceEffect = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("DestEffect"))
else if (m_Params[i].StartsWith("DestEffect", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
st.DestEffect = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("SoundID"))
else if (m_Params[i].StartsWith("SoundID", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
st.SoundID = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Delay"))
else if (m_Params[i].StartsWith("Delay", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -765,90 +764,90 @@ namespace Server.Commands
{
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Substring"))
if (m_Params[i].StartsWith("Substring", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
kt.Substring = m_Params[i].Substring(++indexOf);
}
}
else if (m_Params[i].StartsWith("Keyword"))
else if (m_Params[i].StartsWith("Keyword", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
kt.Keyword = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Range"))
else if (m_Params[i].StartsWith("Range", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
kt.Range = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("PointDest"))
else if (m_Params[i].StartsWith("PointDest", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
kt.PointDest = Point3D.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("MapDest"))
else if (m_Params[i].StartsWith("MapDest", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
kt.MapDest = Map.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Creatures"))
else if (m_Params[i].StartsWith("Creatures", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
kt.Creatures = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("SourceEffect"))
else if (m_Params[i].StartsWith("SourceEffect", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
kt.SourceEffect = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("DestEffect"))
else if (m_Params[i].StartsWith("DestEffect", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
kt.DestEffect = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("SoundID"))
else if (m_Params[i].StartsWith("SoundID", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
kt.SoundID = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Delay"))
else if (m_Params[i].StartsWith("Delay", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -866,63 +865,63 @@ namespace Server.Commands
{
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("PointDest"))
if (m_Params[i].StartsWith("PointDest", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
tp.PointDest = Point3D.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("MapDest"))
else if (m_Params[i].StartsWith("MapDest", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
tp.MapDest = Map.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Creatures"))
else if (m_Params[i].StartsWith("Creatures", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
tp.Creatures = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("SourceEffect"))
else if (m_Params[i].StartsWith("SourceEffect", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
tp.SourceEffect = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("DestEffect"))
else if (m_Params[i].StartsWith("DestEffect", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
tp.DestEffect = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("SoundID"))
else if (m_Params[i].StartsWith("SoundID", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
tp.SoundID = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Delay"))
else if (m_Params[i].StartsWith("Delay", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -940,9 +939,9 @@ namespace Server.Commands
{
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("ContentType"))
if (m_Params[i].StartsWith("ContentType", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -969,18 +968,18 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Light"))
if (m_Params[i].StartsWith("Light", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
item.Light = (LightType)Enum.Parse(typeof(LightType), m_Params[i].Substring(++indexOf), true);
}
}
else if (m_Params[i].StartsWith("Hue"))
else if (m_Params[i].StartsWith("Hue", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -996,18 +995,18 @@ namespace Server.Commands
}
}
}
else if (m_Params[i].StartsWith("Name"))
else if (m_Params[i].StartsWith("Name", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
item.Name = m_Params[i].Substring(++indexOf);
}
}
else if (m_Params[i].StartsWith("Amount"))
else if (m_Params[i].StartsWith("Amount", StringComparison.Ordinal))
{
var indexOf = m_Params[i].IndexOf('=');
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -1236,7 +1235,7 @@ namespace Server.Commands
{
line = line.Trim();
if (line.Length > 0 && !line.StartsWith("#"))
if (line.Length > 0 && !line.StartsWith("#", StringComparison.Ordinal))
{
break;
}
@ -1249,7 +1248,7 @@ namespace Server.Commands
var list = new DecorationListMag();
var indexOf = line.IndexOf(' ');
var indexOf = line.IndexOf(' ', StringComparison.Ordinal);
list.m_Type = AssemblyHandler.FindFirstTypeForName(line.Substring(0, indexOf++), true);
@ -1259,14 +1258,14 @@ namespace Server.Commands
}
line = line.Substring(indexOf);
indexOf = line.IndexOf('(');
indexOf = line.IndexOf('(', StringComparison.Ordinal);
if (indexOf >= 0)
{
list.m_ItemID = Utility.ToInt32(line.Substring(0, indexOf - 1));
var parms = line.Substring(++indexOf);
if (line.EndsWith(")"))
if (line.EndsWith(")", StringComparison.Ordinal))
{
parms = parms.Substring(0, parms.Length - 1);
}
@ -1295,7 +1294,7 @@ namespace Server.Commands
break;
}
if (line.StartsWith("#"))
if (line.StartsWith("#", StringComparison.Ordinal))
{
continue;
}
@ -1325,7 +1324,7 @@ namespace Server.Commands
public void Pop(out string v, ref string line)
{
var space = line.IndexOf(' ');
var space = line.IndexOf(' ', StringComparison.Ordinal);
if (space >= 0)
{

View file

@ -19,13 +19,6 @@ namespace Server.Commands
public bool Back { get; set; }
public override string ToString() => $"{{{Source},{Destination},{Back}}}";
public bool Equals(TeleporterDefinition other) =>
Source.Equals(other.Source) && Destination.Equals(other.Destination) && Back == other.Back;
public override bool Equals(object obj) => obj is TeleporterDefinition other && Equals(other);
public override int GetHashCode() => HashCode.Combine(Source, Destination, Back);
}
public static class GenTeleporter
@ -39,8 +32,7 @@ namespace Server.Commands
CommandSystem.Register("TelGenDelete", AccessLevel.Administrator, TelGenDelete_OnCommand);
}
[Usage("TelGenDelete")]
[Description("Destroys world/dungeon teleporters for all facets.")]
[Usage("TelGenDelete"), Description("Destroys world/dungeon teleporters for all facets.")]
public static void TelGenDelete_OnCommand(CommandEventArgs e)
{
var from = e.Mobile;
@ -70,8 +62,7 @@ namespace Server.Commands
from.SendMessage(WarningHue, $"{count} Teleporters Removed.");
}
[Usage("TelGen")]
[Description("Generates world/dungeon teleporters for all facets.")]
[Usage("TelGen"), Description("Generates world/dungeon teleporters for all facets.")]
public static void GenTeleporter_OnCommand(CommandEventArgs e)
{
var from = e.Mobile;

View file

@ -19,8 +19,7 @@ namespace Server.Commands
CommandSystem.Register("SetProfiles", AccessLevel.Administrator, SetProfiles_OnCommand);
}
[Usage("WriteProfiles")]
[Description("Generates a log files containing performance diagnostic information.")]
[Usage("WriteProfiles"), Description("Generates a log files containing performance diagnostic information.")]
public static void WriteProfiles_OnCommand(CommandEventArgs e)
{
try
@ -55,8 +54,8 @@ namespace Server.Commands
}
}
[Usage("SetProfiles [true | false]")]
[Description("Enables, disables, or toggles the state of core packet and timer profiling.")]
[Usage("SetProfiles [true | false]"),
Description("Enables, disables, or toggles the state of core packet and timer profiling.")]
public static void SetProfiles_OnCommand(CommandEventArgs e)
{
if (e.Length == 1)
@ -71,8 +70,8 @@ namespace Server.Commands
e.Mobile.SendMessage("Profiling has been {0}.", Core.Profiling ? "enabled" : "disabled");
}
[Usage("DumpTimers")]
[Description("Generates a log file of all currently executing timers. Used for tracing timer leaks.")]
[Usage("DumpTimers"),
Description("Generates a log file of all currently executing timers. Used for tracing timer leaks.")]
public static void DumpTimers_OnCommand(CommandEventArgs e)
{
try
@ -86,8 +85,7 @@ namespace Server.Commands
}
}
[Usage("CountObjects")]
[Description("Generates a log file detailing all item and mobile types in the world.")]
[Usage("CountObjects"), Description("Generates a log file detailing all item and mobile types in the world.")]
public static void CountObjects_OnCommand(CommandEventArgs e)
{
using (var op = new StreamWriter("objects.log"))
@ -141,8 +139,7 @@ namespace Server.Commands
e.Mobile.SendMessage("Object table has been generated. See the file : <runuo root>/objects.log");
}
[Usage("TraceExpanded")]
[Description("Generates a log file describing all items using expanded memory.")]
[Usage("TraceExpanded"), Description("Generates a log file describing all items using expanded memory.")]
public static void TraceExpanded_OnCommand(CommandEventArgs e)
{
var typeTable = new Dictionary<Type, int[]>();
@ -253,8 +250,7 @@ namespace Server.Commands
}
}
[Usage("TraceInternal")]
[Description("Generates a log file describing all items in the 'internal' map.")]
[Usage("TraceInternal"), Description("Generates a log file describing all items in the 'internal' map.")]
public static void TraceInternal_OnCommand(CommandEventArgs e)
{
var totalCount = 0;
@ -297,8 +293,8 @@ namespace Server.Commands
}
}
[Usage("ProfileWorld")]
[Description("Prints the amount of data serialized for every object type in your world file.")]
[Usage("ProfileWorld"),
Description("Prints the amount of data serialized for every object type in your world file.")]
public static void ProfileWorld_OnCommand(CommandEventArgs e)
{
ProfileWorld("items", "worldprofile_items.log");

View file

@ -49,8 +49,8 @@ namespace Server.Commands
CommandSystem.Register("Props", AccessLevel.Counselor, Props_OnCommand);
}
[Usage("Props [serial]")]
[Description("Opens a menu where you can view and edit all properties of a targeted (or specified) object.")]
[Usage("Props [serial]"),
Description("Opens a menu where you can view and edit all properties of a targeted (or specified) object.")]
private static void Props_OnCommand(CommandEventArgs e)
{
if (e.Length == 1)
@ -254,7 +254,7 @@ namespace Server.Commands
{
var valueString = args[1 + i * 2];
if (valueString.StartsWith("0x"))
if (valueString.StartsWith("0x", StringComparison.Ordinal))
{
realValues[i] = Convert.ToInt32(valueString.Substring(2), 16);
}
@ -483,7 +483,7 @@ namespace Server.Commands
{
toSet = null;
}
else if (value.StartsWith("0x") && IsNumeric(type))
else if (value.StartsWith("0x", StringComparison.Ordinal) && IsNumeric(type))
{
try
{
@ -620,7 +620,7 @@ namespace Server.Commands
namespace Server
{
public abstract class PropertyException : ApplicationException
public abstract class PropertyException : Exception
{
protected Property m_Property;
@ -739,13 +739,15 @@ namespace Server
public PropertyAccess Access { get; private set; }
private void NotYetBound() => throw new NotYetBoundException(this);
public PropertyInfo[] Chain
{
get
{
if (!IsBound)
{
throw new NotYetBoundException(this);
NotYetBound();
}
return m_Chain;
@ -758,7 +760,7 @@ namespace Server
{
if (!IsBound)
{
throw new NotYetBoundException(this);
NotYetBound();
}
return m_Chain[^1].PropertyType;

View file

@ -1,19 +1,19 @@
using System;
using System.Globalization;
namespace Server.Commands
{
public class ShardTime
public static class ShardTime
{
public static void Initialize()
{
CommandSystem.Register("Time", AccessLevel.Player, Time_OnCommand);
}
[Usage("Time")]
[Description("Returns the server's local time.")]
[Usage("Time"), Description("Returns the server's local time.")]
private static void Time_OnCommand(CommandEventArgs e)
{
e.Mobile.SendMessage(DateTime.UtcNow.ToString());
e.Mobile.SendMessage(DateTime.UtcNow.ToString(CultureInfo.InvariantCulture));
}
}
}

View file

@ -1,10 +1,11 @@
using System;
using System.Collections.Generic;
using System.IO;
using Server.Items;
namespace Server.Commands
{
public class SignParser
public static class SignParser
{
private static readonly Queue<Item> m_ToDelete = new Queue<Item>();
@ -13,8 +14,7 @@ namespace Server.Commands
CommandSystem.Register("SignGen", AccessLevel.Administrator, SignGen_OnCommand);
}
[Usage("SignGen")]
[Description("Generates world/shop signs on all facets.")]
[Usage("SignGen"), Description("Generates world/shop signs on all facets.")]
public static void SignGen_OnCommand(CommandEventArgs c)
{
Parse(c.Mobile);
@ -108,14 +108,13 @@ namespace Server.Commands
Item sign;
if (name.StartsWith("#"))
if (name.StartsWith("#", StringComparison.Ordinal))
{
sign = new LocalizedSign(itemID, Utility.ToInt32(name.Substring(1)));
}
else
{
sign = new Sign(itemID);
sign.Name = name;
sign = new Sign(itemID) { Name = name };
}
if (map == Map.Malas)

View file

@ -3,7 +3,7 @@ using Server.Targeting;
namespace Server.Commands
{
public class SkillsCommand
public static class SkillsCommand
{
public static void Initialize()
{
@ -12,8 +12,7 @@ namespace Server.Commands
CommandSystem.Register("SetAllSkills", AccessLevel.GameMaster, SetAllSkills_OnCommand);
}
[Usage("SetSkill <name> <value>")]
[Description("Sets a skill value by name of a targeted mobile.")]
[Usage("SetSkill <name> <value>"), Description("Sets a skill value by name of a targeted mobile.")]
public static void SetSkill_OnCommand(CommandEventArgs arg)
{
if (arg.Length != 2)
@ -33,8 +32,7 @@ namespace Server.Commands
}
}
[Usage("SetAllSkills <name> <value>")]
[Description("Sets all skill values of a targeted mobile.")]
[Usage("SetAllSkills <name> <value>"), Description("Sets all skill values of a targeted mobile.")]
public static void SetAllSkills_OnCommand(CommandEventArgs arg)
{
if (arg.Length != 1)
@ -47,8 +45,7 @@ namespace Server.Commands
}
}
[Usage("GetSkill <name>")]
[Description("Gets a skill value by name of a targeted mobile.")]
[Usage("GetSkill <name>"), Description("Gets a skill value by name of a targeted mobile.")]
public static void GetSkill_OnCommand(CommandEventArgs arg)
{
if (arg.Length != 1)

View file

@ -3,7 +3,7 @@ using Server.Targeting;
namespace Server.Commands
{
public class Skills
public static class SkillsMenu
{
public static void Initialize()
{
@ -15,8 +15,7 @@ namespace Server.Commands
CommandSystem.Register("Skills", AccessLevel.Counselor, Skills_OnCommand);
}
[Usage("Skills")]
[Description("Opens a menu where you can view or edit skills of a targeted mobile.")]
[Usage("Skills"), Description("Opens a menu where you can view or edit skills of a targeted mobile.")]
private static void Skills_OnCommand(CommandEventArgs e)
{
e.Mobile.Target = new SkillsTarget();

View file

@ -6,7 +6,7 @@ using Server.Items;
namespace Server
{
public class Statics
public static class Statics
{
public delegate void FreezeCallback(Mobile from, bool okay, StateInfo si);
@ -47,16 +47,14 @@ namespace Server
CommandSystem.Register("UnfreezeWorld", AccessLevel.Administrator, UnfreezeWorld_OnCommand);
}
[Usage("Freeze")]
[Description("Makes a targeted area of dynamic items static.")]
[Usage("Freeze"), Description("Makes a targeted area of dynamic items static.")]
public static void Freeze_OnCommand(CommandEventArgs e)
{
var from = e.Mobile;
BoundingBoxPicker.Begin(from, (map, start, end) => FreezeBox_Callback(from, map, start, end));
}
[Usage("FreezeMap")]
[Description("Makes every dynamic item in your map static.")]
[Usage("FreezeMap"), Description("Makes every dynamic item in your map static.")]
public static void FreezeMap_OnCommand(CommandEventArgs e)
{
var from = e.Mobile;
@ -76,8 +74,7 @@ namespace Server
}
}
[Usage("FreezeWorld")]
[Description("Makes every dynamic item on all maps static.")]
[Usage("FreezeWorld"), Description("Makes every dynamic item on all maps static.")]
public static void FreezeWorld_OnCommand(CommandEventArgs e)
{
SendWarning(
@ -406,16 +403,14 @@ namespace Server
}
}
[Usage("Unfreeze")]
[Description("Makes a targeted area of static items dynamic.")]
[Usage("Unfreeze"), Description("Makes a targeted area of static items dynamic.")]
public static void Unfreeze_OnCommand(CommandEventArgs e)
{
var from = e.Mobile;
BoundingBoxPicker.Begin(from, (map, start, end) => UnfreezeBox_Callback(from, map, start, end));
}
[Usage("UnfreezeMap")]
[Description("Makes every static item in your map dynamic.")]
[Usage("UnfreezeMap"), Description("Makes every static item in your map dynamic.")]
public static void UnfreezeMap_OnCommand(CommandEventArgs e)
{
var map = e.Mobile.Map;
@ -434,8 +429,7 @@ namespace Server
}
}
[Usage("UnfreezeWorld")]
[Description("Makes every static item on all maps dynamic.")]
[Usage("UnfreezeWorld"), Description("Makes every static item on all maps dynamic.")]
public static void UnfreezeWorld_OnCommand(CommandEventArgs e)
{
SendWarning(

View file

@ -21,10 +21,9 @@ namespace Server.Commands
(m as PlayerMobile)?.VisibilityList.Clear();
}
[Usage("Vis")]
[Description(
"Adds or removes a targeted player from your visibility list. Anyone on your visibility list will be able to see you at all times, even when you're hidden."
)]
[Usage("Vis"), Description(
"Adds or removes a targeted player from your visibility list. Anyone on your visibility list will be able to see you at all times, even when you're hidden."
)]
public static void Vis_OnCommand(CommandEventArgs e)
{
if (e.Mobile is PlayerMobile)
@ -34,8 +33,7 @@ namespace Server.Commands
}
}
[Usage("VisList")]
[Description("Shows the names of everyone in your visibility list.")]
[Usage("VisList"), Description("Shows the names of everyone in your visibility list.")]
public static void VisList_OnCommand(CommandEventArgs e)
{
if (e.Mobile is PlayerMobile pm)
@ -58,8 +56,7 @@ namespace Server.Commands
}
}
[Usage("VisClear")]
[Description("Removes everyone from your visibility list.")]
[Usage("VisClear"), Description("Removes everyone from your visibility list.")]
public static void VisClear_OnCommand(CommandEventArgs e)
{
if (e.Mobile is PlayerMobile pm)

View file

@ -5,7 +5,7 @@ using Server.Multis;
namespace Server.Commands
{
public class Wipe
public static class Wipe
{
[Flags]
public enum WipeType
@ -24,29 +24,25 @@ namespace Server.Commands
CommandSystem.Register("WipeMultis", AccessLevel.GameMaster, WipeMultis_OnCommand);
}
[Usage("Wipe")]
[Description("Wipes all items and npcs in a targeted bounding box.")]
[Usage("Wipe"), Description("Wipes all items and npcs in a targeted bounding box.")]
private static void WipeAll_OnCommand(CommandEventArgs e)
{
BeginWipe(e.Mobile, WipeType.Items | WipeType.Mobiles);
}
[Usage("WipeItems")]
[Description("Wipes all items in a targeted bounding box.")]
[Usage("WipeItems"), Description("Wipes all items in a targeted bounding box.")]
private static void WipeItems_OnCommand(CommandEventArgs e)
{
BeginWipe(e.Mobile, WipeType.Items);
}
[Usage("WipeNPCs")]
[Description("Wipes all npcs in a targeted bounding box.")]
[Usage("WipeNPCs"), Description("Wipes all npcs in a targeted bounding box.")]
private static void WipeNPCs_OnCommand(CommandEventArgs e)
{
BeginWipe(e.Mobile, WipeType.Mobiles);
}
[Usage("WipeMultis")]
[Description("Wipes all multis in a targeted bounding box.")]
[Usage("WipeMultis"), Description("Wipes all multis in a targeted bounding box.")]
private static void WipeMultis_OnCommand(CommandEventArgs e)
{
BeginWipe(e.Mobile, WipeType.Multis);

View file

@ -1,5 +1,4 @@
using Server.Items;
using Server.Network;
using Server.Targeting;
namespace Server.ContextMenus

View file

@ -26,7 +26,7 @@ namespace Server.Engines.BulkOrders
Leather
}
public class BGTClassifier
public static class BGTClassifier
{
public static BulkGenericType Classify(BODType deedType, Type itemType)
{

View file

@ -65,7 +65,7 @@ namespace Server.Engines.BulkOrders
while ((line = ip.ReadLine()) != null)
{
if (line.Length == 0 || line.StartsWith("#"))
if (line.Length == 0 || line.StartsWith("#", StringComparison.Ordinal))
{
continue;
}

View file

@ -1,6 +1,8 @@
using System;
namespace Server.Engines.Chat
{
public class ChatActionHandlers
public static class ChatActionHandlers
{
private static readonly ChatActionHandler[] m_Handlers;
@ -84,7 +86,7 @@ namespace Server.Engines.Chat
public static void PrivateMessage(ChatUser from, Channel channel, string param)
{
var indexOf = param.IndexOf(' ');
var indexOf = param.IndexOf(' ', StringComparison.Ordinal);
var name = param.Substring(0, indexOf);
var text = param.Substring(indexOf + 1);
@ -171,7 +173,7 @@ namespace Server.Engines.Chat
string name;
string password = null;
var start = param.IndexOf('\"');
var start = param.IndexOf('\"', StringComparison.Ordinal);
if (start >= 0)
{
@ -189,7 +191,7 @@ namespace Server.Engines.Chat
}
else
{
var indexOf = param.IndexOf(' ');
var indexOf = param.IndexOf(' ', StringComparison.Ordinal);
if (indexOf >= 0)
{
@ -226,7 +228,7 @@ namespace Server.Engines.Chat
string name;
string password = null;
var start = param.IndexOf('{');
var start = param.IndexOf('{', StringComparison.Ordinal);
if (start >= 0)
{

View file

@ -800,7 +800,7 @@ namespace Server.Engines.ConPVP
{
if (!m_Bomb.m_Flying && m_Bomb.Map != Map.Internal)
{
Effects.SendLocationEffect(m_Bomb.GetWorldLocation(), m_Bomb.Map, 0x377A, 16, 10, m_Bomb.Hue, 0);
Effects.SendLocationEffect(m_Bomb.GetWorldLocation(), m_Bomb.Map, 0x377A, 16, 10, m_Bomb.Hue);
}
if (m_Bomb.Location != m_Bomb.m_Game.Controller.BombHome)

View file

@ -46,7 +46,7 @@ namespace Server.Engines.ConPVP
hasAppended = true;
}
sb.Append(".");
sb.Append('.');
part.AddLog(sb.ToString());
}

View file

@ -1,4 +1,5 @@
using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using System.Text;
@ -25,7 +26,7 @@ namespace Server.Engines.ConPVP
private const int BlackColor32 = 0x000008;
private const int LabelColor32 = 0xFFFFFF;
private readonly Mobile m_From;
private readonly List<object> m_List;
private List<object> m_List;
private readonly object m_Object;
private readonly int m_Page;
private readonly Tournament m_Tournament;
@ -279,9 +280,8 @@ namespace Server.Engines.ConPVP
AddPage(0);
AddBackground(0, 0, 300, 300, 9380);
var pList = m_List != null
? Utility.CastListCovariant<object, TourneyParticipant>(m_List)
: new List<TourneyParticipant>(tourney.Participants);
var pList = m_List?.CastListCovariant<object, TourneyParticipant>()
?? new List<TourneyParticipant>(tourney.Participants);
AddLeftArrow(25, 11, ToButtonID(0, 0));
AddHtml(25, 35, 250, 20, Center($"{pList.Count} Participant{(pList.Count == 1 ? "" : "s")}"));
@ -440,7 +440,7 @@ namespace Server.Engines.ConPVP
}
var matchesList = m_List != null
? Utility.CastListCovariant<object, TourneyMatch>(m_List)
? m_List.CastListCovariant<object, TourneyMatch>()
: new List<TourneyMatch>(level.Matches);
AddRightArrow(
@ -522,31 +522,14 @@ namespace Server.Engines.ConPVP
{
if (m_Tournament.ParticipantsPerMatch == 4)
{
var name = "(null)";
switch (j)
var name = j switch
{
case 0:
{
name = "Minax";
break;
}
case 1:
{
name = "Council of Mages";
break;
}
case 2:
{
name = "True Britannians";
break;
}
case 3:
{
name = "Shadowlords";
break;
}
}
0 => "Minax",
1 => "Council of Mages",
2 => "True Britannians",
3 => "Shadowlords",
_ => "(null)"
};
txt = $"{name} ({part.Players.Count})";
}
@ -658,31 +641,14 @@ namespace Server.Engines.ConPVP
{
if (m_Tournament.ParticipantsPerMatch == 4)
{
var name = "(null)";
switch (i)
var name = i switch
{
case 0:
{
name = "Minax";
break;
}
case 1:
{
name = "Council of Mages";
break;
}
case 2:
{
name = "True Britannians";
break;
}
case 3:
{
name = "Shadowlords";
break;
}
}
0 => "Minax",
1 => "Council of Mages",
2 => "True Britannians",
3 => "Shadowlords",
_ => "(null)"
};
AddRightArrow(
25,

View file

@ -478,7 +478,7 @@ namespace Server.Engines.ConPVP
hasAppended = true;
}
sb.Append(".");
sb.Append('.');
if (TourneyType == TourneyType.Standard)
{
@ -784,35 +784,14 @@ namespace Server.Engines.ConPVP
{
if (m_ParticipantsPerMatch == 4)
{
var name = "(null)";
switch (Pyramid.Levels[0]
.Matches[0]
.Participants.IndexOf(
winner
))
var name = Pyramid.Levels[0].Matches[0].Participants.IndexOf(winner) switch
{
case 0:
{
name = "Minax";
break;
}
case 1:
{
name = "Council of Mages";
break;
}
case 2:
{
name = "True Britannians";
break;
}
case 3:
{
name = "Shadowlords";
break;
}
}
0 => "Minax",
1 => "Council of Mages",
2 => "True Britannians",
3 => "Shadowlords",
_ => "(null)"
};
Alert("The tournament has completed!", $"The {name} team has won!");
}
@ -940,33 +919,14 @@ namespace Server.Engines.ConPVP
{
if (m_ParticipantsPerMatch == 4)
{
var name = "(null)";
switch (Pyramid.Levels[0]
.Matches[0]
.Participants.IndexOf(winner))
var name = Pyramid.Levels[0].Matches[0].Participants.IndexOf(winner) switch
{
case 0:
{
name = "Minax";
break;
}
case 1:
{
name = "Council of Mages";
break;
}
case 2:
{
name = "True Britannians";
break;
}
case 3:
{
name = "Shadowlords";
break;
}
}
0 => "Minax",
1 => "Council of Mages",
2 => "True Britannians",
3 => "Shadowlords",
_ => "(null)"
};
Alert("The tournament has completed!", $"The {name} team has won!");
}

View file

@ -456,7 +456,7 @@ namespace Server.Engines.Craft
{
if (types.Length != amounts.Length)
{
throw new ArgumentException();
throw new ArgumentOutOfRangeException(nameof(types));
}
var items = new Item[types.Length][];

View file

@ -18,7 +18,7 @@ namespace Server.Engines.Craft
NoSkill
}
public class Enhance
public static class Enhance
{
public static EnhanceResult Invoke(
Mobile from, CraftSystem craftSystem, BaseTool tool, Item item,

View file

@ -43,8 +43,7 @@ namespace Server.Engines.Craft
CommandSystem.Register("ForgetAllRecipes", AccessLevel.GameMaster, ForgetAllRecipes_OnCommand);
}
[Usage("LearnAllRecipes")]
[Description("Teaches a player all available recipes.")]
[Usage("LearnAllRecipes"), Description("Teaches a player all available recipes.")]
private static void LearnAllRecipes_OnCommand(CommandEventArgs e)
{
var m = e.Mobile;
@ -73,8 +72,7 @@ namespace Server.Engines.Craft
);
}
[Usage("ForgetAllRecipes")]
[Description("Makes a player forget all the recipes they've learned.")]
[Usage("ForgetAllRecipes"), Description("Makes a player forget all the recipes they've learned.")]
private static void ForgetAllRecipes_OnCommand(CommandEventArgs e)
{
var m = e.Mobile;

View file

@ -5,7 +5,7 @@ using Server.Targeting;
namespace Server.Engines.Craft
{
public class Repair
public static class Repair
{
public static void Do(Mobile from, CraftSystem craftSystem, BaseTool tool)
{

View file

@ -1351,10 +1351,12 @@ namespace Server.Engines.Craft
}
}
[AttributeUsage(AttributeTargets.Class)]
public class ForgeAttribute : Attribute
{
}
[AttributeUsage(AttributeTargets.Class)]
public class AnvilAttribute : Attribute
{
}

View file

@ -189,8 +189,7 @@ namespace Server.Engines.Doom
CommandSystem.Register("GenLeverPuzzle", AccessLevel.Administrator, GenLampPuzzle_OnCommand);
}
[Usage("GenLeverPuzzle")]
[Description("Generates lamp room and lever puzzle in doom.")]
[Usage("GenLeverPuzzle"), Description("Generates lamp room and lever puzzle in doom.")]
public static void GenLampPuzzle_OnCommand(CommandEventArgs e)
{
if (Map.Malas.GetItemsInRange(lp_Center, 0).OfType<LeverPuzzleController>().Any())
@ -372,7 +371,7 @@ namespace Server.Engines.Doom
SendLocationEffect(lp_Center, 0x1153, 0, 60, 1);
PlaySounds(lp_Center, cs1);
Effects.SendBoltEffect(player, true);
Effects.SendBoltEffect(player);
player.MoveToWorld(lr_Enter, Map.Malas);
m_Timer = new LampRoomTimer(this);

View file

@ -3,7 +3,7 @@ using System.Linq;
namespace Server.Factions
{
public class Generator
public static class Generator
{
public static void Initialize()
{
@ -35,14 +35,14 @@ namespace Server.Factions
var def = town.Definition;
if (!CheckExistance(def.Monolith, facet, typeof(TownMonolith)))
if (!CheckExistence(def.Monolith, facet, typeof(TownMonolith)))
{
var mono = new TownMonolith(town);
mono.MoveToWorld(def.Monolith, facet);
mono.Sigil = new Sigil(town);
}
if (!CheckExistance(def.TownStone, facet, typeof(TownStone)))
if (!CheckExistence(def.TownStone, facet, typeof(TownStone)))
{
new TownStone(town).MoveToWorld(def.TownStone, facet);
}
@ -56,12 +56,12 @@ namespace Server.Factions
var stronghold = faction.Definition.Stronghold;
if (!CheckExistance(stronghold.JoinStone, facet, typeof(JoinStone)))
if (!CheckExistence(stronghold.JoinStone, facet, typeof(JoinStone)))
{
new JoinStone(faction).MoveToWorld(stronghold.JoinStone, facet);
}
if (!CheckExistance(stronghold.FactionStone, facet, typeof(FactionStone)))
if (!CheckExistence(stronghold.FactionStone, facet, typeof(FactionStone)))
{
new FactionStone(faction).MoveToWorld(stronghold.FactionStone, facet);
}
@ -70,14 +70,14 @@ namespace Server.Factions
{
var monolith = stronghold.Monoliths[i];
if (!CheckExistance(monolith, facet, typeof(StrongholdMonolith)))
if (!CheckExistence(monolith, facet, typeof(StrongholdMonolith)))
{
new StrongholdMonolith(towns[i], faction).MoveToWorld(monolith, facet);
}
}
}
private static bool CheckExistance(Point3D loc, Map facet, Type type) =>
private static bool CheckExistence(Point3D loc, Map facet, Type type) =>
facet.GetItemsInRange(loc, 0).Any(type.IsInstanceOfType);
}
}

View file

@ -35,7 +35,7 @@ namespace Server.Factions
public TextDefinition Assigned { get; }
}
public class MerchantTitles
public static class MerchantTitles
{
public static MerchantTitleInfo[] Info { get; } =
{

View file

@ -5,7 +5,7 @@ using Server.Utilities;
namespace Server.Factions
{
public class Reflector
public static class Reflector
{
private static List<Town> m_Towns;

View file

@ -286,7 +286,7 @@ namespace Server.Factions
public void ConstructGuardLists()
{
var defs = Owner?.Definition.Guards ?? new GuardDefinition[0];
var defs = Owner?.Definition.Guards ?? Array.Empty<GuardDefinition>();
GuardLists = new List<GuardList>();

View file

@ -80,7 +80,7 @@ namespace Server.Factions
var silverToAward = from.Alive ? 20 : 40;
if (silverToAward > 0 && Placer != null && Faction != null)
if (Placer != null && Faction != null)
{
var victimState = PlayerState.Find(from);

View file

@ -24,7 +24,7 @@ namespace Server.Factions
public override void DoVisibleEffect()
{
Effects.SendLocationEffect(GetWorldLocation(), Map, 0x36BD, 15, 10);
Effects.SendLocationEffect(GetWorldLocation(), Map, 0x36BD, 15);
}
public override void DoAttackEffect(Mobile m)

View file

@ -20,7 +20,7 @@ namespace Server.Factions
public override void DoVisibleEffect()
{
Effects.SendLocationEffect(Location, Map, 0x11AD, 25, 10);
Effects.SendLocationEffect(Location, Map, 0x11AD, 25);
}
public override void DoAttackEffect(Mobile m)

View file

@ -114,7 +114,7 @@ namespace Server.Engines.Help
}
}
public class PageQueue
public static class PageQueue
{
private static readonly Dictionary<Mobile, PageEntry> m_KeyedByHandler = new Dictionary<Mobile, PageEntry>();
private static readonly Dictionary<Mobile, PageEntry> m_KeyedBySender = new Dictionary<Mobile, PageEntry>();
@ -172,8 +172,7 @@ namespace Server.Engines.Help
}
}
[Usage("Pages")]
[Description("Opens the page queue menu.")]
[Usage("Pages"), Description("Opens the page queue menu.")]
private static void Pages_OnCommand(CommandEventArgs e)
{
if (m_KeyedByHandler.TryGetValue(e.Mobile, out var entry))

View file

@ -188,7 +188,7 @@ namespace Server.Engines.Help
while ((line = ip.ReadLine()?.Trim()) != null)
{
if (line.Length == 0 || line.StartsWith("#"))
if (line.Length == 0 || line.StartsWith("#", StringComparison.Ordinal))
{
continue;
}

View file

@ -34,8 +34,7 @@ namespace Server.Engines.Help
CommandSystem.Register("SpeechLog", AccessLevel.Counselor, SpeechLog_OnCommand);
}
[Usage("SpeechLog")]
[Description("Opens the speech log of a given target.")]
[Usage("SpeechLog"), Description("Opens the speech log of a given target.")]
private static void SpeechLog_OnCommand(CommandEventArgs e)
{
var from = e.Mobile;

View file

@ -4,7 +4,7 @@ using Server.Items;
namespace Server.Commands
{
public class GenKhaldun
public static class GenKhaldun
{
private static int m_Count;

View file

@ -42,7 +42,9 @@ namespace Server.Engines.MLQuests
while ((line = sr.ReadLine()) != null)
{
if (line.Length == 0 || line.StartsWith("#"))
line = line.Trim();
if (line.Length == 0 || line.StartsWith("#", StringComparison.Ordinal))
{
continue;
}
@ -176,8 +178,8 @@ namespace Server.Engines.MLQuests
EventSink.QuestGumpRequest += EventSink_QuestGumpRequest;
}
[Usage("MLQuestsInfo")]
[Description("Displays general information about the ML quest system, or a quest by type name.")]
[Usage("MLQuestsInfo"),
Description("Displays general information about the ML quest system, or a quest by type name.")]
public static void MLQuestsInfo_OnCommand(CommandEventArgs e)
{
var m = e.Mobile;
@ -202,8 +204,8 @@ namespace Server.Engines.MLQuests
m.SendMessage("Number of active instances: {0}", quest.Instances.Count);
}
[Usage("SaveQuest <type> [saveEnabled=true]")]
[Description("Allows serialization for a specific quest to be turned on or off.")]
[Usage("SaveQuest <type> [saveEnabled=true]"),
Description("Allows serialization for a specific quest to be turned on or off.")]
public static void SaveQuest_OnCommand(CommandEventArgs e)
{
var m = e.Mobile;
@ -235,8 +237,8 @@ namespace Server.Engines.MLQuests
}
}
[Usage("SaveAllQuests [saveEnabled=true]")]
[Description("Allows serialization for all quests to be turned on or off.")]
[Usage("SaveAllQuests [saveEnabled=true]"),
Description("Allows serialization for all quests to be turned on or off.")]
public static void SaveAllQuests_OnCommand(CommandEventArgs e)
{
var m = e.Mobile;
@ -264,8 +266,8 @@ namespace Server.Engines.MLQuests
}
}
[Usage("InvalidQuestItems")]
[Description("Provides an overview of all quest items not located in the top-level of a player's backpack.")]
[Usage("InvalidQuestItems"),
Description("Provides an overview of all quest items not located in the top-level of a player's backpack.")]
public static void InvalidQuestItems_OnCommand(CommandEventArgs e)
{
var m = e.Mobile;

View file

@ -295,8 +295,7 @@ namespace Server.PathAlgorithms.FastAStar
int y;
switch (i)
{
default:
case 0:
default: // 0
x = 0;
y = -1;
break;

View file

@ -99,13 +99,13 @@ namespace Server.PathAlgorithms.SlowAStar
var yBacktrack = curNode.py;
var zBacktrack = curNode.pz;
path[pathCount++] = (Direction)curNode.dir;
if (pathCount == MaxNodes)
{
break;
}
path[pathCount++] = (Direction)curNode.dir;
while (xBacktrack != startNode.x || yBacktrack != startNode.y || zBacktrack != startNode.z)
{
var found = false;

View file

@ -1,7 +1,6 @@
using System;
using Server.Items;
using Server.Mobiles;
using Server.Network;
namespace Server.Engines.Quests.Necro
{
@ -32,21 +31,46 @@ namespace Server.Engines.Quests.Necro
return;
}
if (from is PlayerMobile pm)
if (!(from is PlayerMobile pm))
{
var qs = pm.Quest;
return;
}
if (qs is DarkTidesQuest)
var qs = pm.Quest;
if (qs is DarkTidesQuest)
{
if (qs.IsObjectiveInProgress(typeof(FindMardothAboutKronusObjective)))
{
if (qs.IsObjectiveInProgress(typeof(FindMardothAboutKronusObjective)))
pm.SendLocalizedMessage(
1060151,
"",
0x41
); // You read the scroll, but decide against performing the calling until you are instructed to do so by Mardoth.
}
else if (qs.IsObjectiveInProgress(typeof(FindWellOfTearsObjective)))
{
pm.SendLocalizedMessage(
1060152,
"",
0x41
); // You must be at the Well of Tears in the city of Necromancers to use this scroll.
}
else if (qs.IsObjectiveInProgress(typeof(UseCallingScrollObjective)))
{
if (pm.Map == m_WellOfTearsMap && m_WellOfTearsArea.Contains(pm))
{
pm.SendLocalizedMessage(
1060151,
"",
0x41
); // You read the scroll, but decide against performing the calling until you are instructed to do so by Mardoth.
QuestObjective obj = qs.FindObjective<UseCallingScrollObjective>();
if (obj?.Completed == false)
{
obj.Complete();
}
Delete();
new CallingTimer(pm).Start();
}
else if (qs.IsObjectiveInProgress(typeof(FindWellOfTearsObjective)))
else
{
pm.SendLocalizedMessage(
1060152,
@ -54,37 +78,14 @@ namespace Server.Engines.Quests.Necro
0x41
); // You must be at the Well of Tears in the city of Necromancers to use this scroll.
}
else if (qs.IsObjectiveInProgress(typeof(UseCallingScrollObjective)))
{
if (pm.Map == m_WellOfTearsMap && m_WellOfTearsArea.Contains(pm))
{
QuestObjective obj = qs.FindObjective<UseCallingScrollObjective>();
if (obj?.Completed == false)
{
obj.Complete();
}
Delete();
new CallingTimer(pm).Start();
}
else
{
pm.SendLocalizedMessage(
1060152,
"",
0x41
); // You must be at the Well of Tears in the city of Necromancers to use this scroll.
}
}
else
{
pm.SendLocalizedMessage(
1060150,
"",
0x41
); // A strange terror grips your heart as you attempt to read the scroll. You decide it would be a bad idea to read it out loud.
}
}
else
{
pm.SendLocalizedMessage(
1060150,
"",
0x41
); // A strange terror grips your heart as you attempt to read the scroll. You decide it would be a bad idea to read it out loud.
}
}
}

View file

@ -78,9 +78,9 @@ namespace Server.Engines.Quests.Necro
Maabus.Delete();
Maabus = null;
foreach (MaabusCoffinComponent c in Components)
foreach (var c in Components)
{
c.TurnToFull();
(c as MaabusCoffinComponent)?.TurnToFull();
}
}

View file

@ -49,7 +49,7 @@ namespace Server.Engines.Quests.Hag
Corpse = new HagApprenticeCorpse();
Corpse.MoveToWorld(m_CorpseLocation, map);
Effects.SendLocationEffect(m_CorpseLocation, map, 0x3728, 10, 10);
Effects.SendLocationEffect(m_CorpseLocation, map, 0x3728, 10);
Effects.PlaySound(m_CorpseLocation, map, 0x1FE);
Mobile imp = new Zeefzorpul();
@ -65,7 +65,7 @@ namespace Server.Engines.Quests.Hag
{
if (m?.Deleted == false)
{
Effects.SendLocationEffect(m.Location, m.Map, 0x3728, 10, 10);
Effects.SendLocationEffect(m.Location, m.Map, 0x3728, 10);
Effects.PlaySound(m.Location, m.Map, 0x1FE);
m.Delete();
@ -213,7 +213,7 @@ namespace Server.Engines.Quests.Hag
Mobile from = System.From;
var map = from.Map;
Effects.SendLocationEffect(ImpLocation, map, 0x3728, 10, 10);
Effects.SendLocationEffect(ImpLocation, map, 0x3728, 10);
Effects.PlaySound(ImpLocation, map, 0x1FE);
Mobile imp = new Zeefzorpul();
@ -228,7 +228,7 @@ namespace Server.Engines.Quests.Hag
{
if (imp is Mobile m && !m.Deleted)
{
Effects.SendLocationEffect(m.Location, m.Map, 0x3728, 10, 10);
Effects.SendLocationEffect(m.Location, m.Map, 0x3728, 10);
Effects.PlaySound(m.Location, m.Map, 0x1FE);
m.Delete();

View file

@ -228,12 +228,8 @@ namespace Server.Items
return true;
}
if (i is ITokunoDyable)
{
return true;
}
return IsInTypeList(t, TreasuresOfTokuno.LesserArtifactsTotal)
return IsInTypeList(t, TreasuresOfTokuno.TokunoDyable)
|| IsInTypeList(t, TreasuresOfTokuno.LesserArtifactsTotal)
|| IsInTypeList(t, TreasuresOfTokuno.GreaterArtifacts)
|| IsInTypeList(t, DemonKnight.ArtifactRarity10)
|| IsInTypeList(t, DemonKnight.ArtifactRarity11)
@ -251,7 +247,7 @@ namespace Server.Items
{
for (var i = 0; i < list.Length; i++)
{
if (list[i] == t)
if (list[i].IsAssignableFrom(t))
{
return true;
}

View file

@ -783,8 +783,7 @@ namespace Server.Items
}
}
[Furniture]
[Flippable(0x2811, 0x2812)]
[Furniture, Flippable(0x2811, 0x2812)]
public class ChestOfHeirlooms : LockableContainer
{
[Constructible]

View file

@ -20,7 +20,7 @@ namespace Server.Misc
ToTThree
}
public class TreasuresOfTokuno
public static class TreasuresOfTokuno
{
public const int ItemsPerReward = 10;
@ -80,6 +80,12 @@ namespace Server.Misc
typeof(ChestOfHeirlooms)
};
public static Type[] TokunoDyable { get; } =
{
typeof(DupresShield), typeof(CrimsonCincture), typeof(OssianGrimoire), typeof(QuiverOfInfinity),
typeof(BaseFormTalisman), typeof(BaseWand), typeof(JesterHatofChuckles)
};
public static TreasuresOfTokunoEra DropEra { get; set; } = TreasuresOfTokunoEra.None;
public static TreasuresOfTokunoEra RewardEra { get; set; } = TreasuresOfTokunoEra.ToTOne;
@ -338,7 +344,7 @@ namespace Server.Gumps
public ToTTurnInGump(Mobile collector, List<ItemTileButtonInfo> buttons) : base(
1071012,
Utility.CastListContravariant<ItemTileButtonInfo, ImageTileButtonInfo>(buttons)
buttons.ToList<ImageTileButtonInfo>()
) // Click a minor artifact to give it to Ihara Soko.
=>
m_Collector = collector;

View file

@ -5,7 +5,7 @@ using Server.Mobiles;
namespace Server.Engines.VeteranRewards
{
public class RewardSystem
public static class RewardSystem
{
private static RewardCategory[] m_Categories;
private static RewardList[] m_Lists;

View file

@ -3,7 +3,7 @@ using Server.Mobiles;
namespace Server
{
public class CompassionVirtue
public static class CompassionVirtue
{
private const int LossAmount = 500;
private static readonly TimeSpan LossDelay = TimeSpan.FromDays(7.0);

View file

@ -6,7 +6,7 @@ using Server.Targeting;
namespace Server
{
public class HonorVirtue
public static class HonorVirtue
{
private static readonly TimeSpan UseDelay = TimeSpan.FromMinutes(5.0);

View file

@ -6,6 +6,7 @@ using Server.Targeting;
namespace Server
{
#pragma warning disable CA1052
public class JusticeVirtue
{
private const int LossAmount = 950;
@ -285,4 +286,5 @@ namespace Server
}
}
}
#pragma warning restore CA1052
}

View file

@ -6,7 +6,7 @@ using Server.Targeting;
namespace Server
{
public class SacrificeVirtue
public static class SacrificeVirtue
{
private const int LossAmount = 500;
private static readonly TimeSpan GainDelay = TimeSpan.FromDays(1.0);

View file

@ -5,7 +5,7 @@ using Server.Targeting;
namespace Server
{
public class ValorVirtue
public static class ValorVirtue
{
private const int LossAmount = 250;
private static readonly TimeSpan LossDelay = TimeSpan.FromDays(7.0);

View file

@ -23,7 +23,7 @@ namespace Server
Honesty
}
public class VirtueHelper
public static class VirtueHelper
{
public static bool HasAny(Mobile from, VirtueName virtue) => from.Virtues.GetValue((int)virtue) > 0;

View file

@ -102,8 +102,7 @@ namespace Server.Gumps
CommandSystem.Register("AddDoor", AccessLevel.GameMaster, AddDoor_OnCommand);
}
[Usage("AddDoor")]
[Description("Displays a menu from which you can interactively add doors.")]
[Usage("AddDoor"), Description("Displays a menu from which you can interactively add doors.")]
public static void AddDoor_OnCommand(CommandEventArgs e)
{
e.Mobile.SendGump(new AddDoorGump());

View file

@ -196,8 +196,8 @@ namespace Server.Gumps
AddLabel(20, 350, LabelHue, "Operating System: ");
var os = Environment.OSVersion.ToString();
os = os.Replace("Microsoft", "MSFT");
os = os.Replace("Service Pack", "SP");
os = os.Replace("Microsoft", "MSFT", StringComparison.Ordinal);
os = os.Replace("Service Pack", "SP", StringComparison.Ordinal);
AddLabel(150, 350, LabelHue, os);
@ -243,7 +243,7 @@ namespace Server.Gumps
sb.Append(curIOCP);
sb.Append("<br>Usage: ");
sb.Append((maxIOCP - curIOCP) * 100 / maxIOCP);
sb.Append("%");
sb.Append('%');
AddLabel(20, 200, LabelHue, "Pooling:");
AddHtml(20, 220, 380, 150, sb.ToString(), true, true);
@ -446,7 +446,7 @@ namespace Server.Gumps
{
if (m_List == null)
{
var states = TcpServer.Instances;
var states = TcpServer.Instances.ToList();
states.Sort(NetStateComparer.Instance);
m_List = states.ToList<object>();
@ -612,14 +612,11 @@ namespace Server.Gumps
if (m_List == null)
{
sharedAccounts = GetAllSharedAccounts();
m_List = Utility.CastListContravariant<KeyValuePair<IPAddress, List<Account>>, object>(
sharedAccounts
);
m_List = sharedAccounts.CastListContravariant<KeyValuePair<IPAddress, List<Account>>, object>();
}
else
{
sharedAccounts =
Utility.CastListCovariant<object, KeyValuePair<IPAddress, List<Account>>>(m_List);
sharedAccounts = m_List.CastListCovariant<object, KeyValuePair<IPAddress, List<Account>>>();
}
AddLabelCropped(12, 120, 60, 20, LabelHue, "Count");
@ -1007,11 +1004,11 @@ namespace Server.Gumps
if (m_List == null)
{
ipAddresses = a.LoginIPs.ToList();
m_List = Utility.CastListContravariant<IPAddress, object>(ipAddresses);
m_List = ipAddresses.CastListContravariant<IPAddress, object>();
}
else
{
ipAddresses = Utility.CastListCovariant<object, IPAddress>(m_List);
ipAddresses = m_List.CastListCovariant<object, IPAddress>();
}
AddHtml(10, 195, 400, 20, Color(Center("Client Addresses"), LabelColor32));
@ -1079,11 +1076,11 @@ namespace Server.Gumps
if (m_List == null)
{
ipRestrictions = a.IPRestrictions.ToList();
m_List = Utility.CastListContravariant<string, object>(ipRestrictions);
m_List = ipRestrictions.CastListContravariant<string, object>();
}
else
{
ipRestrictions = Utility.CastListCovariant<object, string>(m_List);
ipRestrictions = m_List.CastListCovariant<object, string>();
}
AddHtml(10, 195, 400, 20, Color(Center("Address Restrictions"), LabelColor32));
@ -1268,11 +1265,11 @@ namespace Server.Gumps
if (m_List == null)
{
firewallEntries = Firewall.List;
m_List = Utility.CastListContravariant<Firewall.IFirewallEntry, object>(firewallEntries);
m_List = firewallEntries.CastListContravariant<Firewall.IFirewallEntry, object>();
}
else
{
firewallEntries = Utility.CastListCovariant<object, Firewall.IFirewallEntry>(m_List);
firewallEntries = m_List.CastListCovariant<object, Firewall.IFirewallEntry>();
}
AddLabelCropped(12, 120, 358, 20, LabelHue, "IP Address");
@ -1354,11 +1351,11 @@ namespace Server.Gumps
}
blockedAccts.Sort(AccountComparer.Instance);
m_List = Utility.CastListContravariant<Account, object>(blockedAccts);
m_List = blockedAccts.CastListContravariant<Account, object>();
}
else
{
blockedAccts = Utility.CastListCovariant<object, Account>(m_List);
blockedAccts = m_List.CastListCovariant<object, Account>();
}
if (listPage > 0)
@ -1485,10 +1482,9 @@ namespace Server.Gumps
CommandSystem.Register("Admin", AccessLevel.Administrator, Admin_OnCommand);
}
[Usage("Admin")]
[Description(
"Opens an interface providing server information and administration features including client, account, and firewall management."
)]
[Usage("Admin"), Description(
"Opens an interface providing server information and administration features including client, account, and firewall management."
)]
public static void Admin_OnCommand(CommandEventArgs e)
{
e.Mobile.SendGump(new AdminGump(e.Mobile, AdminGumpPage.Clients));
@ -1972,7 +1968,7 @@ namespace Server.Gumps
if (m_PageType == AdminGumpPage.Accounts)
{
var list = Utility.CastListCovariant<object, Account>(m_List);
var list = m_List.CastListCovariant<object, Account>();
if (list != null && m_State is List<Account> rads)
{
@ -2350,12 +2346,10 @@ namespace Server.Gumps
if (level > AccessLevel.Player)
{
var clients = TcpServer.Instances;
var count = 0;
for (var i = 0; i < clients.Count; ++i)
foreach (var ns in TcpServer.Instances)
{
var ns = clients[i];
var a = ns.Account;
if (a == null)
@ -2450,12 +2444,8 @@ namespace Server.Gumps
}
else
{
var instances = TcpServer.Instances;
for (var i = 0; i < instances.Count; ++i)
foreach (var ns in TcpServer.Instances)
{
var ns = instances[i];
bool isMatch;
if (forName)
@ -2463,12 +2453,12 @@ namespace Server.Gumps
var m = ns.Mobile;
var a = ns.Account;
isMatch = m?.Name.ToLower().IndexOf(match, StringComparison.Ordinal) >= 0
|| a?.Username.ToLower().IndexOf(match, StringComparison.Ordinal) >= 0;
isMatch = m?.Name.ToLower().Contains(match, StringComparison.Ordinal) == true
|| a?.Username.ToLower().Contains(match, StringComparison.Ordinal) == true;
}
else
{
isMatch = ns.ToString().IndexOf(match, StringComparison.Ordinal) >= 0;
isMatch = ns.ToString().Contains(match, StringComparison.Ordinal);
}
if (isMatch)
@ -2518,7 +2508,7 @@ namespace Server.Gumps
from,
AdminGumpPage.Clients,
0,
Utility.CastListContravariant<NetState, object>(results),
results.CastListContravariant<NetState, object>(),
"One match found."
)
);
@ -2531,7 +2521,7 @@ namespace Server.Gumps
from,
AdminGumpPage.Clients,
0,
Utility.CastListContravariant<NetState, object>(results),
results.CastListContravariant<NetState, object>(),
notice ?? (results.Count == 0 ? "Nothing matched your search terms." : null)
)
);
@ -2726,7 +2716,7 @@ namespace Server.Gumps
{
results = Accounts.GetAccounts()
.Where(acct =>
acct.Username.ToLower().IndexOf(match, StringComparison.Ordinal) >= 0)
acct.Username.ToLower().Contains(match, StringComparison.Ordinal))
.ToList();
results.Sort(AccountComparer.Instance);
}
@ -2751,7 +2741,7 @@ namespace Server.Gumps
from,
AdminGumpPage.Accounts,
0,
Utility.CastListContravariant<IAccount, object>(results),
results.CastListContravariant<IAccount, object>(),
results.Count == 0 ? "Nothing matched your search terms." : null,
new List<object>()
)
@ -2879,7 +2869,7 @@ namespace Server.Gumps
from,
AdminGumpPage.Accounts,
0,
Utility.CastListContravariant<Account, object>(list),
list.CastListContravariant<Account, object>(),
null,
new List<object>()
)
@ -3502,7 +3492,7 @@ namespace Server.Gumps
from,
AdminGumpPage.Accounts,
0,
Utility.CastListContravariant<Account, object>(kvp.Value),
kvp.Value.CastListContravariant<Account, object>(),
null,
new List<object>()
)
@ -3539,7 +3529,7 @@ namespace Server.Gumps
{
var check = Firewall.List[i].ToString();
if (check?.IndexOf(match) >= 0)
if (check?.Contains(match, StringComparison.Ordinal) == true)
{
results.Add(Firewall.List[i]);
}
@ -3691,7 +3681,7 @@ namespace Server.Gumps
{
index -= 4;
if (m_List != null && index >= 0 && index < m_List.Count)
if (m_List != null && index < m_List.Count)
{
from.SendGump(
new AdminGump(from, AdminGumpPage.FirewallInfo, 0, null, null, m_List[index])
@ -3899,7 +3889,7 @@ namespace Server.Gumps
}
case 8:
{
if (m_List != null && index >= 0 && index < m_List.Count)
if (m_List != null && index < m_List.Count)
{
if (!(m_State is Account a))
{
@ -3943,7 +3933,7 @@ namespace Server.Gumps
}
case 9:
{
if (m_List != null && index >= 0 && index < m_List.Count)
if (m_List != null && index < m_List.Count)
{
if (m_PageType == AdminGumpPage.AccountDetails_Access_ClientIPs)
{
@ -3968,7 +3958,7 @@ namespace Server.Gumps
from,
AdminGumpPage.Accounts,
0,
Utility.CastListContravariant<Account, object>(list),
list.CastListContravariant<Account, object>(),
null,
new List<object>()
)
@ -3994,7 +3984,7 @@ namespace Server.Gumps
}
case 10:
{
if (m_List != null && index >= 0 && index < m_List.Count)
if (m_List != null && index < m_List.Count)
{
if (m_PageType == AdminGumpPage.AccountDetails_Access_ClientIPs)
{

View file

@ -62,8 +62,7 @@ namespace Server.Gumps
CommandSystem.Register("Comments", AccessLevel.Counselor, Comments_OnCommand);
}
[Usage("Comments")]
[Description("View/Modify/Add account comments.")]
[Usage("Comments"), Description("View/Modify/Add account comments.")]
private static void Comments_OnCommand(CommandEventArgs args)
{
args.Mobile.SendMessage("Select the player to view account comments.");

View file

@ -36,7 +36,7 @@ namespace Server.Gumps
if (text.Length >= 3)
{
var guilds = Utility.CastListCovariant<BaseGuild, Guild>(BaseGuild.Search(text));
var guilds = BaseGuild.Search(text).CastListCovariant<BaseGuild, Guild>();
GuildGump.EnsureClosed(m_Mobile);

View file

@ -26,7 +26,7 @@ namespace Server.Guilds
"",
0,
GuildDisplayType.All,
Utility.CastListCovariant<BaseGuild, Guild>(new List<BaseGuild>(World.Guilds.Values)),
World.Guilds.Values.CastListCovariant<BaseGuild, Guild>(),
1063136 + (int)GuildDisplayType.All
)
{
@ -44,7 +44,7 @@ namespace Server.Guilds
filter,
startNumber,
display,
Utility.CastListCovariant<BaseGuild, Guild>(new List<BaseGuild>(World.Guilds.Values)),
World.Guilds.Values.CastListCovariant<BaseGuild, Guild>(),
1063136 + (int)display
)
{

View file

@ -28,7 +28,7 @@ namespace Server.Guilds
: base(
pm,
g,
Utility.SafeConvertList<Mobile, PlayerMobile>(g.Members),
g.Members.SafeConvertList<Mobile, PlayerMobile>(),
currentComparer,
ascending,
filter,

View file

@ -1,6 +1,6 @@
namespace Server.Gumps
{
public class PropsConfig
public static class PropsConfig
{
public static readonly bool OldStyle = false;
@ -13,7 +13,7 @@ namespace Server.Gumps
public static readonly int OffsetGumpID = 0x0A40; // Pure black
public static readonly int
HeaderGumpID = OldStyle ? 0x0BBC : 0x0E14; // Light offwhite, textured : Dark navy blue, textured
HeaderGumpID = OldStyle ? 0x0BBC : 0x0E14; // Light off-white, textured : Dark navy blue, textured
public static readonly int EntryGumpID = 0x0BBC; // Light offwhite, textured
public static readonly int BackGumpID = 0x13BE; // Gray slate/stoney

View file

@ -757,7 +757,7 @@ namespace Server.Gumps
if (t == typeof(byte) || t == typeof(sbyte) || t == typeof(short) || t == typeof(ushort) || t == typeof(int) ||
t == typeof(uint) || t == typeof(long) || t == typeof(ulong))
{
if (s.StartsWith("0x"))
if (s.StartsWith("0x", StringComparison.Ordinal))
{
if (t == typeof(ulong) || t == typeof(uint) || t == typeof(ushort) || t == typeof(byte))
{

View file

@ -310,7 +310,7 @@ namespace Server.Gumps
for (var i = 0; i < m_GroupNames.Length; ++i)
{
if (DisplayName.StartsWith(m_GroupNames[i]))
if (DisplayName.StartsWith(m_GroupNames[i], StringComparison.Ordinal))
{
DisplayName = DisplayName.Substring(m_GroupNames[i].Length);
break;

View file

@ -120,8 +120,7 @@ namespace Server.Gumps
CommandSystem.Register("ToTAdmin", AccessLevel.Administrator, ToTAdmin_OnCommand);
}
[Usage("ToTAdmin")]
[Description("Displays a menu to configure Treasures of Tokuno.")]
[Usage("ToTAdmin"), Description("Displays a menu to configure Treasures of Tokuno.")]
public static void ToTAdmin_OnCommand(CommandEventArgs e)
{
ToTAdminGump tg;

View file

@ -160,10 +160,9 @@ namespace Server.Gumps
CommandSystem.Register("ViewHouses", AccessLevel.GameMaster, ViewHouses_OnCommand);
}
[Usage("ViewHouses")]
[Description(
"Displays a menu listing all houses of a targeted player. The menu also contains specific house details, and options to: go to house, open house menu, and demolish house."
)]
[Usage("ViewHouses"), Description(
"Displays a menu listing all houses of a targeted player. The menu also contains specific house details, and options to: go to house, open house menu, and demolish house."
)]
public static void ViewHouses_OnCommand(CommandEventArgs e)
{
e.Mobile.BeginTarget(-1, false, TargetFlags.None, ViewHouses_OnTarget);

View file

@ -83,9 +83,8 @@ namespace Server.Gumps
CommandSystem.Register("WhoList", AccessLevel.Counselor, WhoList_OnCommand);
}
[Usage("WhoList [filter]")]
[Aliases("Who")]
[Description("Lists all connected clients. Optionally filters results by name.")]
[Usage("WhoList [filter]"), Aliases("Who"),
Description("Lists all connected clients. Optionally filters results by name.")]
private static void WhoList_OnCommand(CommandEventArgs e)
{
e.Mobile.SendGump(new WhoGump(e.Mobile, e.ArgString));
@ -96,16 +95,15 @@ namespace Server.Gumps
var filter = rawFilter.Trim().ToLower().DefaultIfNullOrEmpty(null);
var list = new List<Mobile>();
var states = TcpServer.Instances;
for (var i = 0; i < states.Count; ++i)
foreach (var ns in TcpServer.Instances)
{
var m = states[i].Mobile;
var m = ns.Mobile;
if (m != null && (m == owner || !m.Hidden || owner.AccessLevel >= m.AccessLevel ||
m is PlayerMobile mobile && mobile.VisibilityList.Contains(owner)))
{
if (filter != null && !(m.Name?.ToLower().IndexOf(filter, StringComparison.Ordinal) >= 0))
if (filter != null && m.Name?.ToLower().Contains(filter, StringComparison.Ordinal) != true)
{
continue;
}
@ -317,9 +315,14 @@ namespace Server.Gumps
public int Compare(Mobile x, Mobile y)
{
if (x == null || y == null)
if (x == null)
{
throw new ArgumentException();
throw new ArgumentNullException(nameof(x));
}
if (y == null)
{
throw new ArgumentNullException(nameof(y));
}
if (x.AccessLevel > y.AccessLevel)
@ -327,12 +330,7 @@ namespace Server.Gumps
return -1;
}
if (x.AccessLevel < y.AccessLevel)
{
return 1;
}
return Insensitive.Compare(x.Name, y.Name);
return x.AccessLevel < y.AccessLevel ? 1 : Insensitive.Compare(x.Name, y.Name);
}
}
}

View file

@ -1,7 +1,6 @@
namespace Server.Items.Holiday
{
[TypeAlias("Server.Items.AngelDecoration")]
[Flippable(0x46FA, 0x46FB)]
[TypeAlias("Server.Items.AngelDecoration"), Flippable(0x46FA, 0x46FB)]
public class AngelDecoration : Item
{
public AngelDecoration() : base(0x46FA)

View file

@ -1,7 +1,6 @@
namespace Server.Items.Holiday
{
[TypeAlias("Server.Items.RockingHorse")]
[Flippable(0x4214, 0x4215)]
[TypeAlias("Server.Items.RockingHorse"), Flippable(0x4214, 0x4215)]
public class RockingHorse : Item
{
public RockingHorse() : base(0x4214)

View file

@ -5,7 +5,7 @@ using Server.Items;
namespace Server.Engines.Events
{
public class PumpkinPatchSpawner
public static class PumpkinPatchSpawner
{
private static Timer m_Timer;
@ -31,7 +31,7 @@ namespace Server.Engines.Events
}
}
protected static void PumpkinPatchSpawnerCallback()
private static void PumpkinPatchSpawnerCallback()
{
AddPumpkin(Map.Felucca);
AddPumpkin(Map.Trammel);

View file

@ -6,7 +6,7 @@ using Server.Mobiles;
namespace Server.Engines.Events
{
public class HalloweenHauntings
public static class HalloweenHauntings
{
private static Timer m_Timer;
private static Timer m_ClearTimer;

View file

@ -181,8 +181,7 @@ namespace Server.Items
[CommandProperty(AccessLevel.GameMaster)]
public Point3D Offset { get; set; }
[Hue]
[CommandProperty(AccessLevel.GameMaster)]
[Hue, CommandProperty(AccessLevel.GameMaster)]
public override int Hue
{
get => base.Hue;

View file

@ -26,8 +26,7 @@ namespace Server.Items
[CommandProperty(AccessLevel.GameMaster)]
public Point3D Offset { get; set; }
[Hue]
[CommandProperty(AccessLevel.GameMaster)]
[Hue, CommandProperty(AccessLevel.GameMaster)]
public override int Hue
{
get => base.Hue;

View file

@ -78,10 +78,7 @@ namespace Server.Items
private ScoreEntry GetEntryFor(Mobile from)
{
if (m_Entries == null)
{
m_Entries = new Dictionary<Mobile, ScoreEntry>();
}
m_Entries ??= new Dictionary<Mobile, ScoreEntry>();
if (!m_Entries.TryGetValue(from, out var e))
{

View file

@ -44,8 +44,7 @@ namespace Server.Items
public virtual bool ShareHue => true;
[Hue]
[CommandProperty(AccessLevel.GameMaster)]
[Hue, CommandProperty(AccessLevel.GameMaster)]
public override int Hue
{
get => base.Hue;

Some files were not shown because too many files have changed in this diff Show more