fix(core): Optimizes strings / .NET 5 compatibility changes (#354)

- [X] Removes some string allocations (e.g. split)
- [X] Optimizes some collections
- [X] Converts insensitive to extension methods of built-ins.
- [X] Adds ordinal (case sensitive) string helpers
- [X] Fixes conditionals for in-game commands so they use Ordinal comparisons.
- [X] Replaces ToLower.Contains with InsensitiveContains
- [X] Adds ValueStringBuilder
- [X] Implements ValueStringBuilder in a few places where it makes sense
- [X] Removes the redundant Wrap function and replaces it with an optimized version
- [X] Fixes list conversions in Utility

Closes #351

Bumps release version
This commit is contained in:
Kamron Batman 2020-12-20 23:21:55 -08:00 • committed by GitHub
parent 92aae8d482
commit 77ce2e1980
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
117 changed files with 2000 additions and 1226 deletions

View file

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

View file

@ -176,7 +176,7 @@ namespace Server.Misc
if (entry != null)
{
if (entry.Message.StartsWith("[Automated: Change Password]", StringComparison.Ordinal))
if (entry.Message.StartsWithOrdinal("[Automated: Change Password]"))
{
from.SendMessage("You already have a password change request in the help system queue.");
}
@ -288,9 +288,9 @@ namespace Server.Misc
return null;
}
var isSafe = !(un.StartsWith(" ", StringComparison.Ordinal) ||
un.EndsWith(" ", StringComparison.Ordinal) ||
un.EndsWith(".", StringComparison.Ordinal));
var isSafe = !(un.StartsWithOrdinal(" ") ||
un.EndsWithOrdinal(" ") ||
un.EndsWithOrdinal("."));
for (var i = 0; isSafe && i < un.Length; ++i)
{

View file

@ -2,20 +2,21 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using Microsoft.Toolkit.HighPerformance.Extensions;
namespace Server
{
public static class Firewall
{
private const string firewallConfigPath = "firewall.cfg";
static Firewall()
{
List = new List<IFirewallEntry>();
Set = new HashSet<IFirewallEntry>();
var path = "firewall.cfg";
if (File.Exists(path))
if (File.Exists(firewallConfigPath))
{
using var ip = new StreamReader(path);
using var ip = new StreamReader(firewallConfigPath);
string line;
while ((line = ip.ReadLine()) != null)
@ -27,24 +28,12 @@ namespace Server
continue;
}
List.Add(ToFirewallEntry(line));
/*
object toAdd;
IPAddress addr;
if (IPAddress.TryParse( line, out addr ))
toAdd = addr;
else
toAdd = line;
m_Blocked.Add( toAdd.ToString() );
* */
Set.Add(ToFirewallEntry(line));
}
}
}
public static List<IFirewallEntry> List { get; }
public static HashSet<IFirewallEntry> Set { get; }
public static IFirewallEntry ToFirewallEntry(object entry)
{
@ -59,111 +48,79 @@ namespace Server
public static IFirewallEntry ToFirewallEntry(string entry)
{
if (entry == null)
{
return null;
}
if (IPAddress.TryParse(entry, out var addr))
{
return new IPFirewallEntry(addr);
}
// Try CIDR parse
var str = entry?.Split('/');
var tokenizer = entry.Tokenize('/');
var ip = tokenizer.MoveNext() ? tokenizer.Current : null;
var length = tokenizer.MoveNext() ? tokenizer.Current : null;
if (str?.Length == 2)
if (
length != null &&
IPAddress.TryParse(ip, out var cidrPrefix) &&
int.TryParse(length, out var cidrLength)
)
{
if (IPAddress.TryParse(str[0], out var cidrPrefix))
{
if (int.TryParse(str[1], out var cidrLength))
{
return new CIDRFirewallEntry(cidrPrefix, cidrLength);
}
}
return new CIDRFirewallEntry(cidrPrefix, cidrLength);
}
return new WildcardIPFirewallEntry(entry);
}
public static void RemoveAt(int index)
{
List.RemoveAt(index);
Save();
}
public static void Remove(object obj)
{
var entry = ToFirewallEntry(obj);
if (entry != null)
{
List.Remove(entry);
Set.Remove(entry);
Save();
}
}
public static void Add(object obj)
{
if (obj is IPAddress address)
{
Add(address);
}
else if (obj is string s)
{
Add(s);
}
else if (obj is IFirewallEntry entry)
{
Add(entry);
}
Add(ToFirewallEntry(obj));
}
public static void Add(IFirewallEntry entry)
{
if (!List.Contains(entry))
{
List.Add(entry);
}
Set.Add(entry);
Save();
}
public static void Add(string pattern)
{
var entry = ToFirewallEntry(pattern);
if (!List.Contains(entry))
{
List.Add(entry);
}
Save();
Add(ToFirewallEntry(pattern));
}
public static void Add(IPAddress ip)
{
IFirewallEntry entry = new IPFirewallEntry(ip);
if (!List.Contains(entry))
{
List.Add(entry);
}
Save();
Add(ToFirewallEntry(ip));
}
public static void Save()
{
var path = "firewall.cfg";
using var op = new StreamWriter(path);
for (var i = 0; i < List.Count; ++i)
using var op = new StreamWriter(firewallConfigPath);
foreach (var entry in Set)
{
op.WriteLine(List[i]);
op.WriteLine(entry);
}
}
public static bool IsBlocked(IPAddress ip)
{
for (var i = 0; i < List.Count; i++)
foreach (var entry in Set)
{
if (List[i].IsBlocked(ip))
if (entry.IsBlocked(ip))
{
return true;
}
@ -189,24 +146,13 @@ namespace Server
public override bool Equals(object obj)
{
if (obj is IPAddress)
return obj switch
{
return obj.Equals(m_Address);
}
if (obj is string s)
{
if (IPAddress.TryParse(s, out var otherAddress))
{
return otherAddress.Equals(m_Address);
}
}
else if (obj is IPFirewallEntry entry)
{
return m_Address.Equals(entry.m_Address);
}
return false;
IPAddress => obj.Equals(m_Address),
string s when IPAddress.TryParse(s, out var otherAddress) => otherAddress.Equals(m_Address),
IPFirewallEntry entry => m_Address.Equals(entry.m_Address),
_ => false
};
}
public override int GetHashCode() => m_Address.GetHashCode();
@ -259,21 +205,11 @@ namespace Server
{
private readonly string m_Entry;
private bool m_Valid;
private bool m_Valid = true;
public WildcardIPFirewallEntry(string entry) => m_Entry = entry;
public bool IsBlocked(IPAddress address)
{
if (!m_Valid)
{
return false; // Why process if it's invalid? it'll return false anyway after processing it.
}
var matched = Utility.IPMatch(m_Entry, address, out var valid);
m_Valid = valid;
return matched;
}
public bool IsBlocked(IPAddress address) => m_Valid && Utility.IPMatch(m_Entry, address, out m_Valid);
public override string ToString() => m_Entry;

View file

@ -29,7 +29,7 @@ namespace Server.Accounting.Security
public string EncryptPassword(string plainPassword)
{
var password = plainPassword.AsSpan(0, Math.Min(256, plainPassword.Length));
var bytes = new byte[Encoding.ASCII.GetByteCount(password)];
var bytes = GC.AllocateUninitializedArray<byte>(Encoding.ASCII.GetByteCount(password));
Encoding.ASCII.GetBytes(password, bytes);
return m_MD5HashProvider.ComputeHash(bytes).ToHexString();

View file

@ -29,7 +29,7 @@ namespace Server.Accounting.Security
public string EncryptPassword(string plainPassword)
{
var password = plainPassword.AsSpan(0, Math.Min(256, plainPassword.Length));
var bytes = new byte[Encoding.ASCII.GetByteCount(password)];
var bytes = GC.AllocateUninitializedArray<byte>(Encoding.ASCII.GetByteCount(password));
Encoding.ASCII.GetBytes(password, bytes);
return m_SHA1HashProvider.ComputeHash(bytes).ToHexString();

View file

@ -27,7 +27,7 @@ namespace Server.Accounting.Security
public string EncryptPassword(string plainPassword)
{
var password = plainPassword.AsSpan(0, Math.Min(256, plainPassword.Length));
var bytes = new byte[Encoding.ASCII.GetByteCount(password)];
var bytes = GC.AllocateUninitializedArray<byte>(Encoding.ASCII.GetByteCount(password));
Encoding.ASCII.GetBytes(password, bytes);
return m_SHA2HashProvider.ComputeHash(bytes).ToHexString();

View file

@ -208,7 +208,7 @@ namespace Server.Commands
public void GetDetails(out string command, out string argString, out string[] args)
{
var indexOf = Command.IndexOf(' ', StringComparison.Ordinal);
var indexOf = Command.IndexOfOrdinal(' ');
if (indexOf >= 0)
{

View file

@ -331,7 +331,7 @@ namespace Server.Commands
if (type.IsGenericType)
{
var index = type.Name.IndexOf('`', StringComparison.Ordinal);
var index = type.Name.IndexOfOrdinal('`');
if (index > 0)
{
@ -406,19 +406,14 @@ namespace Server.Commands
public static string SanitizeType(string name)
{
var anonymousType = name.Contains('<', StringComparison.Ordinal);
var anonymousType = name.ContainsOrdinal('<');
var sb = new StringBuilder(name);
for (var i = 0; i < ReplaceChars.Length; ++i)
{
sb.Replace(ReplaceChars[i], '-');
}
if (anonymousType)
{
return $"(Anonymous-Type){sb}";
}
return sb.ToString();
return anonymousType ? $"(Anonymous-Type){sb}" : sb.ToString();
}
public static string AliasForName(string name)
@ -465,7 +460,7 @@ namespace Server.Commands
return true;
}
if (type.Namespace.StartsWith("Server", StringComparison.Ordinal))
if (type.Namespace.StartsWithOrdinal("Server"))
{
return false;
}
@ -604,7 +599,7 @@ namespace Server.Commands
if (realType?.IsGenericType == true)
{
FormatGeneric(realType, out _, out _, out var linkName);
aliased = linkName.Replace("@directory@", null, StringComparison.Ordinal);
aliased = linkName.ReplaceOrdinal("@directory@", null);
}
else
{
@ -1719,7 +1714,7 @@ namespace Server.Commands
{
line = line.Trim();
if (line.Length == 0 || line.StartsWith("#", StringComparison.Ordinal))
if (line.Length == 0 || line.StartsWithOrdinal("#"))
{
continue;
}
@ -2030,8 +2025,8 @@ namespace Server.Commands
var aliases = attrs.Length == 0 ? null : attrs[0] as AliasesAttribute;
var descString = desc.Description
.Replace("<", "&lt;", StringComparison.Ordinal)
.Replace(">", "&gt;", StringComparison.Ordinal);
.ReplaceOrdinal("<", "&lt;")
.ReplaceOrdinal(">", "&gt;");
list.Add(new DocCommandEntry(e.AccessLevel, e.Command, aliases?.Aliases, usage.Usage, descString));
}
@ -2058,8 +2053,8 @@ namespace Server.Commands
}
desc = desc
.Replace("<", "&lt;", StringComparison.Ordinal)
.Replace(">", "&gt;", StringComparison.Ordinal);
.ReplaceOrdinal("<", "&lt;")
.ReplaceOrdinal(">", "&gt;");
if (command.Supports != CommandSupport.Single)
{
@ -2136,8 +2131,8 @@ namespace Server.Commands
}
desc = desc
.Replace("<", "&lt;", StringComparison.Ordinal)
.Replace(">", "&gt;", StringComparison.Ordinal);
.ReplaceOrdinal("<", "&lt;")
.ReplaceOrdinal(">", "&gt;");
list.Add(new DocCommandEntry(command.AccessLevel, cmd, aliases, usage, desc));
}
@ -2237,8 +2232,8 @@ namespace Server.Commands
html.Write(
"<td class=\"rentry\"><b>Usage: {0}</b><br>{1}</td>",
usage
.Replace("<", "&lt;", StringComparison.Ordinal)
.Replace(">", "&gt;", StringComparison.Ordinal),
.ReplaceOrdinal("<", "&lt;")
.ReplaceOrdinal(">", "&gt;"),
desc
);
}
@ -2247,8 +2242,8 @@ namespace Server.Commands
html.Write(
"<td class=\"rentry\"><b>Usage: {0}</b><br>Alias{1}: ",
usage
.Replace("<", "&lt;", StringComparison.Ordinal)
.Replace(">", "&gt;", StringComparison.Ordinal),
.ReplaceOrdinal("<", "&lt;")
.ReplaceOrdinal(">", "&gt;"),
aliases.Length == 1 ? "" : "es"
);
@ -2567,7 +2562,7 @@ namespace Server.Commands
if (ifaceInfo == null)
{
FormatGeneric(iface, out _, out _, out var linkName);
typeHtml.Write($"<!-- DBG-2.1 -->{linkName.Replace("@directory@", null, StringComparison.Ordinal)}");
typeHtml.Write($"<!-- DBG-2.1 -->{linkName.ReplaceOrdinal("@directory@", null)}");
}
else
{
@ -2913,7 +2908,7 @@ namespace Server.Commands
public string FileName => m_FileName;
public string TypeName => m_TypeName;
public string LinkName(string dirRoot) => m_LinkName.Replace("@directory@", dirRoot, StringComparison.Ordinal);
public string LinkName(string dirRoot) => m_LinkName.ReplaceOrdinal("@directory@", dirRoot);
}
private class SpeechEntry

View file

@ -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", StringComparison.Ordinal))
result.StartsWithOrdinal("Getting this property"))
{
LogFailure(result);
}

View file

@ -28,7 +28,7 @@ namespace Server.Commands.Generic
{
var offset = 0;
if (Insensitive.Equals(e.GetString(0), "view"))
if (e.GetString(0).InsensitiveEquals("view"))
{
++offset;
}

View file

@ -148,7 +148,7 @@ namespace Server.Commands.Generic
{
var style = NumberStyles.Integer;
if (Insensitive.StartsWith(toParse, "0x"))
if (toParse.InsensitiveStartsWith("0x"))
{
style = NumberStyles.HexNumber;
toParse = toParse.Substring(2);
@ -231,7 +231,6 @@ namespace Server.Commands.Generic
NotEqual,
Contains,
StartsWith,
EndsWith
}
@ -260,39 +259,74 @@ namespace Server.Commands.Generic
{
var inverse = false;
Type type = m_IgnoreCase ? typeof(InsensitiveStringHelpers) : typeof(OrdinalStringHelpers);
string methodName;
switch (m_Operator)
{
case StringOperator.Equal:
methodName = "Equals";
break;
case StringOperator.NotEqual:
methodName = "Equals";
inverse = true;
break;
{
inverse = true;
goto case StringOperator.Equal;
}
case StringOperator.Equal:
{
if (m_IgnoreCase)
{
methodName = "InsensitiveEquals";
}
else
{
methodName = "EqualsOrdinal";
}
break;
}
case StringOperator.Contains:
methodName = "Contains";
break;
{
if (m_IgnoreCase)
{
methodName = "InsensitiveContains";
}
else
{
methodName = "ContainsOrdinal";
}
break;
}
case StringOperator.StartsWith:
methodName = "StartsWith";
break;
{
if (m_IgnoreCase)
{
methodName = "InsensitiveStartsWith";
}
else
{
methodName = "StartsWithOrdinal";
}
break;
}
case StringOperator.EndsWith:
methodName = "EndsWith";
break;
{
if (m_IgnoreCase)
{
methodName = "InsensitiveEndsWith";
}
else
{
methodName = "EndsWithOrdinal";
}
break;
}
default:
throw new InvalidOperationException("Invalid string comparison operator.");
}
if (m_IgnoreCase || methodName == "Equals")
if (m_Operator == StringOperator.Equal || m_Operator == StringOperator.NotEqual)
{
var type = m_IgnoreCase ? typeof(Insensitive) : typeof(string);
emitter.BeginCall(
type.GetMethod(
methodName,
@ -334,7 +368,7 @@ namespace Server.Commands.Generic
emitter.LoadLocal(temp);
emitter.BeginCall(
typeof(string).GetMethod(
type.GetMethod(
methodName,
BindingFlags.Public | BindingFlags.Instance,
null,

View file

@ -45,7 +45,7 @@ namespace Server.Commands.Generic
throw new Exception("Invalid ordering syntax.");
}
if (Insensitive.Equals(arguments[offset], "by"))
if (arguments[offset].InsensitiveEquals("by"))
{
++offset;
--size;

View file

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Text;
using Server.Buffers;
namespace Server.Commands.Generic
{
@ -185,7 +186,7 @@ namespace Server.Commands.Generic
// NOTE: this does not preserve the case where quotation marks are used on a single word
var sb = new StringBuilder();
using var sb = new ValueStringBuilder(stackalloc char[64]);
for (var i = 0; i < args.Length; ++i)
{
@ -194,7 +195,7 @@ namespace Server.Commands.Generic
sb.Append(' ');
}
if (args[i].Contains(' ', StringComparison.Ordinal))
if (args[i].ContainsOrdinal(' '))
{
sb.Append('"');
sb.Append(args[i]);

View file

@ -71,7 +71,7 @@ namespace Server.Commands.Generic
for (var i = 0; i < args.Length; ++i)
{
if (Insensitive.Equals(args[i], "where"))
if (args[i].InsensitiveEquals("where"))
{
var origArgs = args;
@ -111,9 +111,7 @@ namespace Server.Commands.Generic
}
var conditions = new List<ICondition[]>();
var current = new List<ICondition>();
current.Add(TypeCondition.Default);
var current = new List<ICondition> { TypeCondition.Default };
var index = 1;
@ -123,7 +121,7 @@ namespace Server.Commands.Generic
var inverse = false;
if (Insensitive.Equals(cur, "not") || cur == "!")
if (cur.InsensitiveEquals("not") || cur == "!")
{
inverse = true;
++index;
@ -133,7 +131,7 @@ namespace Server.Commands.Generic
throw new Exception("Improperly formatted object conditional.");
}
}
else if (Insensitive.Equals(cur, "or") || cur == "||")
else if (cur.InsensitiveEquals("or") || cur == "||")
{
if (current.Count > 1)
{
@ -199,7 +197,7 @@ namespace Server.Commands.Generic
"contains" => new StringCondition(prop, inverse, StringOperator.Contains, val, false),
"contains~" => new StringCondition(prop, inverse, StringOperator.Contains, val, true),
"~contains" => new StringCondition(prop, inverse, StringOperator.Contains, val, true),
_ => null
_ => null
};
if (condition == null)

View file

@ -582,7 +582,7 @@ namespace Server.Commands
continue;
}
if (Insensitive.Equals(name, map.Name))
if (name.InsensitiveEquals(map.Name))
{
from.Map = map;
return;
@ -595,7 +595,7 @@ namespace Server.Commands
{
var r = kvp.Value;
if (Insensitive.Equals(r.Name, name))
if (r.Name.InsensitiveEquals(name))
{
from.Location = new Point3D(r.GoLocation);
return;
@ -613,7 +613,7 @@ namespace Server.Commands
foreach (var r in map.Regions.Values)
{
if (Insensitive.Equals(r.Name, name))
if (r.Name.InsensitiveEquals(name))
{
from.MoveToWorld(r.GoLocation, map);
return;
@ -676,8 +676,8 @@ namespace Server.Commands
e.GetInt32(0),
e.GetInt32(4),
e.GetInt32(1),
Insensitive.Equals(e.GetString(5), "E"),
Insensitive.Equals(e.GetString(2), "S")
e.GetString(5).InsensitiveEquals("E"),
e.GetString(2).InsensitiveEquals("S")
);
if (p != Point3D.Zero)

View file

@ -94,8 +94,8 @@ namespace Server.Commands
var aliases = attrs.Length == 0 ? null : attrs[0] as AliasesAttribute;
var descString = desc.Description
.Replace("<", "(", StringComparison.Ordinal)
.Replace(">", ")", StringComparison.Ordinal);
.ReplaceOrdinal("<", "(")
.ReplaceOrdinal(">", ")");
if (aliases == null)
{
@ -140,8 +140,8 @@ namespace Server.Commands
}
desc = desc
.Replace("<", "(", StringComparison.Ordinal)
.Replace(">", ")", StringComparison.Ordinal);
.ReplaceOrdinal("<", "(")
.ReplaceOrdinal(">", ")");
if (command.Supports != CommandSupport.Single)
{
@ -229,8 +229,8 @@ namespace Server.Commands
}
desc = desc
.Replace("<", ")", StringComparison.Ordinal)
.Replace(">", ")", StringComparison.Ordinal);
.ReplaceOrdinal("<", ")")
.ReplaceOrdinal(">", ")");
list.Add(new CommandInfo(command.AccessLevel, cmd, aliases, usage, desc));
@ -413,8 +413,8 @@ namespace Server.Commands
sb.Append("Usage: ");
var usage = info.Usage
.Replace("<", "(", StringComparison.Ordinal)
.Replace(">", ")", StringComparison.Ordinal);
.ReplaceOrdinal("<", "(")
.ReplaceOrdinal(">", ")");
sb.Append(usage);
sb.Append("<BR>");

View file

@ -114,7 +114,7 @@ namespace Server.Commands
for (var i = 0; isSafe && i < m_NotSafe.Length; ++i)
{
isSafe = !ip.Contains(m_NotSafe[i], StringComparison.Ordinal);
isSafe = !ip.ContainsOrdinal(m_NotSafe[i]);
}
if (isSafe)

View file

@ -89,7 +89,7 @@ namespace Server.Commands
for (var i = 0; i < args.Length; ++i)
{
if (Insensitive.Equals(args[i], "set"))
if (args[i].InsensitiveEquals("set"))
{
var remains = args.Length - i - 1;
@ -179,7 +179,7 @@ namespace Server.Commands
for (var j = 0; thisProp == null && j < allProps.Length; ++j)
{
if (Insensitive.Equals(propName, allProps[j].Name))
if (propName.InsensitiveEquals(allProps[j].Name))
{
thisProp = allProps[j];
}
@ -300,7 +300,7 @@ namespace Server.Commands
object obj = value;
if (value?.StartsWith("0x", StringComparison.Ordinal) == true)
if (value.StartsWithOrdinal("0x"))
{
if (IsSignedNumeric(type))
{

View file

@ -134,7 +134,7 @@ namespace Server.Gumps
var t = types[i];
if ((typeofMobile.IsAssignableFrom(t) || typeofItem.IsAssignableFrom(t)) &&
t.Name.ToLower().Contains(match, StringComparison.Ordinal) && !results.Contains(t))
t.Name.InsensitiveContains(match) && !results.Contains(t))
{
var ctors = t.GetConstructors();

View file

@ -304,7 +304,7 @@ namespace Server.Commands
var text = lines[index].Text;
var start = text.IndexOf('(', StringComparison.Ordinal);
var start = text.IndexOfOrdinal('(');
if (start < 0)
{

View file

@ -103,9 +103,9 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("LabelNumber", StringComparison.Ordinal))
if (m_Params[i].StartsWithOrdinal("LabelNumber"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -123,9 +123,9 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("LabelNumber", StringComparison.Ordinal))
if (m_Params[i].StartsWithOrdinal("LabelNumber"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -171,9 +171,9 @@ namespace Server.Commands
{
locked = true;
}
else if (m_Params[i].StartsWith("TargetMap", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("TargetMap"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -200,54 +200,54 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Range", StringComparison.Ordinal))
if (m_Params[i].StartsWithOrdinal("Range"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
range = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("WarningString", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("WarningString"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
messageString = m_Params[i].Substring(++indexOf);
}
}
else if (m_Params[i].StartsWith("WarningNumber", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("WarningNumber"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
messageNumber = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("HintString", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("HintString"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
hintString = m_Params[i].Substring(++indexOf);
}
}
else if (m_Params[i].StartsWith("HintNumber", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("HintNumber"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
hintNumber = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("ResetDelay", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("ResetDelay"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -273,36 +273,36 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Range", StringComparison.Ordinal))
if (m_Params[i].StartsWithOrdinal("Range"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
range = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("WarningString", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("WarningString"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
messageString = m_Params[i].Substring(++indexOf);
}
}
else if (m_Params[i].StartsWith("WarningNumber", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("WarningNumber"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
messageNumber = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("ResetDelay", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("ResetDelay"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -324,9 +324,9 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("CannonDirection", StringComparison.Ordinal))
if (m_Params[i].StartsWithOrdinal("CannonDirection"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -348,27 +348,27 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Word", StringComparison.Ordinal))
if (m_Params[i].StartsWithOrdinal("Word"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
word = m_Params[i].Substring(++indexOf);
}
}
else if (m_Params[i].StartsWith("DestStart", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("DestStart"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
destination.Start = Point2D.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("DestEnd", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("DestEnd"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -386,9 +386,9 @@ namespace Server.Commands
for (var i = 0; !fill && i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Content", StringComparison.Ordinal))
if (m_Params[i].StartsWithOrdinal("Content"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -417,9 +417,9 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Facing", StringComparison.Ordinal))
if (m_Params[i].StartsWithOrdinal("Facing"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -447,9 +447,9 @@ namespace Server.Commands
{
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("SpawnLocation", StringComparison.Ordinal))
if (m_Params[i].StartsWithOrdinal("SpawnLocation"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -515,45 +515,45 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Spawn", StringComparison.Ordinal))
if (m_Params[i].StartsWithOrdinal("Spawn"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
sp.AddEntry(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("MinDelay", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("MinDelay"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
sp.MinDelay = TimeSpan.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("MaxDelay", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("MaxDelay"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
sp.MaxDelay = TimeSpan.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("NextSpawn", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("NextSpawn"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
sp.NextSpawn = TimeSpan.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Count", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Count"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -564,36 +564,36 @@ namespace Server.Commands
}
}
}
else if (m_Params[i].StartsWith("Team", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Team"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
sp.Team = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("HomeRange", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("HomeRange"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
sp.HomeRange = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Running", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Running"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
sp.Running = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Group", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Group"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -606,36 +606,36 @@ namespace Server.Commands
{
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Description", StringComparison.Ordinal))
if (m_Params[i].StartsWithOrdinal("Description"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
rune.Description = m_Params[i].Substring(++indexOf);
}
}
else if (m_Params[i].StartsWith("Marked", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Marked"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
rune.Marked = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("TargetMap", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("TargetMap"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
rune.TargetMap = Map.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Target", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Target"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -648,108 +648,108 @@ namespace Server.Commands
{
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Skill", StringComparison.Ordinal))
if (m_Params[i].StartsWithOrdinal("Skill"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
st.Skill = (SkillName)Enum.Parse(typeof(SkillName), m_Params[i].Substring(++indexOf), true);
}
}
else if (m_Params[i].StartsWith("RequiredFixedPoint", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("RequiredFixedPoint"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
st.Required = Utility.ToInt32(m_Params[i].Substring(++indexOf)) * 0.1;
}
}
else if (m_Params[i].StartsWith("Required", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Required"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
st.Required = Utility.ToDouble(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("MessageString", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("MessageString"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
st.MessageString = m_Params[i].Substring(++indexOf);
}
}
else if (m_Params[i].StartsWith("MessageNumber", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("MessageNumber"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
st.MessageNumber = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("PointDest", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("PointDest"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
st.PointDest = Point3D.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("MapDest", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("MapDest"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
st.MapDest = Map.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Creatures", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Creatures"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
st.Creatures = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("SourceEffect", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("SourceEffect"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
st.SourceEffect = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("DestEffect", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("DestEffect"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
st.DestEffect = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("SoundID", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("SoundID"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
st.SoundID = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Delay", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Delay"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -767,90 +767,90 @@ namespace Server.Commands
{
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Substring", StringComparison.Ordinal))
if (m_Params[i].StartsWithOrdinal("Substring"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
kt.Substring = m_Params[i].Substring(++indexOf);
}
}
else if (m_Params[i].StartsWith("Keyword", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Keyword"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
kt.Keyword = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Range", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Range"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
kt.Range = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("PointDest", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("PointDest"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
kt.PointDest = Point3D.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("MapDest", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("MapDest"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
kt.MapDest = Map.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Creatures", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Creatures"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
kt.Creatures = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("SourceEffect", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("SourceEffect"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
kt.SourceEffect = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("DestEffect", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("DestEffect"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
kt.DestEffect = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("SoundID", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("SoundID"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
kt.SoundID = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Delay", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Delay"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -868,63 +868,63 @@ namespace Server.Commands
{
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("PointDest", StringComparison.Ordinal))
if (m_Params[i].StartsWithOrdinal("PointDest"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
tp.PointDest = Point3D.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("MapDest", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("MapDest"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
tp.MapDest = Map.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Creatures", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Creatures"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
tp.Creatures = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("SourceEffect", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("SourceEffect"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
tp.SourceEffect = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("DestEffect", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("DestEffect"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
tp.DestEffect = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("SoundID", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("SoundID"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
tp.SoundID = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Delay", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Delay"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -942,9 +942,9 @@ namespace Server.Commands
{
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("ContentType", StringComparison.Ordinal))
if (m_Params[i].StartsWithOrdinal("ContentType"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -971,18 +971,18 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Light", StringComparison.Ordinal))
if (m_Params[i].StartsWithOrdinal("Light"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
item.Light = (LightType)Enum.Parse(typeof(LightType), m_Params[i].Substring(++indexOf), true);
}
}
else if (m_Params[i].StartsWith("Hue", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Hue"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -998,18 +998,18 @@ namespace Server.Commands
}
}
}
else if (m_Params[i].StartsWith("Name", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Name"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
item.Name = m_Params[i].Substring(++indexOf);
}
}
else if (m_Params[i].StartsWith("Amount", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Amount"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -1248,7 +1248,7 @@ namespace Server.Commands
{
line = line.Trim();
if (line.Length > 0 && !line.StartsWith("#", StringComparison.Ordinal))
if (line.Length > 0 && !line.StartsWithOrdinal("#"))
{
break;
}
@ -1261,7 +1261,7 @@ namespace Server.Commands
var list = new DecorationList();
var indexOf = line.IndexOf(' ', StringComparison.Ordinal);
var indexOf = line.IndexOfOrdinal(' ');
list.m_Type = AssemblyHandler.FindFirstTypeForName(line.Substring(0, indexOf++), true);
@ -1271,14 +1271,14 @@ namespace Server.Commands
}
line = line.Substring(indexOf);
indexOf = line.IndexOf('(', StringComparison.Ordinal);
indexOf = line.IndexOfOrdinal('(');
if (indexOf >= 0)
{
list.m_ItemID = Utility.ToInt32(line.Substring(0, indexOf - 1));
var parms = line.Substring(++indexOf);
if (line.EndsWith(")", StringComparison.Ordinal))
if (line.EndsWithOrdinal(")"))
{
parms = parms.Substring(0, parms.Length - 1);
}
@ -1307,7 +1307,7 @@ namespace Server.Commands
break;
}
if (line.StartsWith("#", StringComparison.Ordinal))
if (line.StartsWithOrdinal("#"))
{
continue;
}
@ -1337,7 +1337,7 @@ namespace Server.Commands
public static void Pop(out string v, ref string line)
{
var space = line.IndexOf(' ', StringComparison.Ordinal);
var space = line.IndexOfOrdinal(' ');
if (space >= 0)
{

View file

@ -100,9 +100,9 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("LabelNumber", StringComparison.Ordinal))
if (m_Params[i].StartsWithOrdinal("LabelNumber"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -120,9 +120,9 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("LabelNumber", StringComparison.Ordinal))
if (m_Params[i].StartsWithOrdinal("LabelNumber"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -168,9 +168,9 @@ namespace Server.Commands
{
locked = true;
}
else if (m_Params[i].StartsWith("TargetMap", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("TargetMap"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -197,54 +197,54 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Range", StringComparison.Ordinal))
if (m_Params[i].StartsWithOrdinal("Range"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
range = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("WarningString", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("WarningString"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
messageString = m_Params[i].Substring(++indexOf);
}
}
else if (m_Params[i].StartsWith("WarningNumber", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("WarningNumber"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
messageNumber = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("HintString", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("HintString"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
hintString = m_Params[i].Substring(++indexOf);
}
}
else if (m_Params[i].StartsWith("HintNumber", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("HintNumber"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
hintNumber = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("ResetDelay", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("ResetDelay"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -270,36 +270,36 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Range", StringComparison.Ordinal))
if (m_Params[i].StartsWithOrdinal("Range"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
range = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("WarningString", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("WarningString"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
messageString = m_Params[i].Substring(++indexOf);
}
}
else if (m_Params[i].StartsWith("WarningNumber", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("WarningNumber"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
messageNumber = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("ResetDelay", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("ResetDelay"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -321,9 +321,9 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("CannonDirection", StringComparison.Ordinal))
if (m_Params[i].StartsWithOrdinal("CannonDirection"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -345,27 +345,27 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Word", StringComparison.Ordinal))
if (m_Params[i].StartsWithOrdinal("Word"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
word = m_Params[i].Substring(++indexOf);
}
}
else if (m_Params[i].StartsWith("DestStart", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("DestStart"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
destination.Start = Point2D.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("DestEnd", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("DestEnd"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -383,9 +383,9 @@ namespace Server.Commands
for (var i = 0; !fill && i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Content", StringComparison.Ordinal))
if (m_Params[i].StartsWithOrdinal("Content"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -414,9 +414,9 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Facing", StringComparison.Ordinal))
if (m_Params[i].StartsWithOrdinal("Facing"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -444,9 +444,9 @@ namespace Server.Commands
{
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("SpawnLocation", StringComparison.Ordinal))
if (m_Params[i].StartsWithOrdinal("SpawnLocation"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -512,45 +512,45 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Spawn", StringComparison.Ordinal))
if (m_Params[i].StartsWithOrdinal("Spawn"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
sp.AddEntry(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("MinDelay", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("MinDelay"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
sp.MinDelay = TimeSpan.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("MaxDelay", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("MaxDelay"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
sp.MaxDelay = TimeSpan.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("NextSpawn", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("NextSpawn"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
sp.NextSpawn = TimeSpan.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Count", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Count"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -561,36 +561,36 @@ namespace Server.Commands
}
}
}
else if (m_Params[i].StartsWith("Team", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Team"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
sp.Team = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("HomeRange", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("HomeRange"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
sp.HomeRange = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Running", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Running"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
sp.Running = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Group", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Group"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -603,36 +603,36 @@ namespace Server.Commands
{
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Description", StringComparison.Ordinal))
if (m_Params[i].StartsWithOrdinal("Description"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
rune.Description = m_Params[i].Substring(++indexOf);
}
}
else if (m_Params[i].StartsWith("Marked", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Marked"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
rune.Marked = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("TargetMap", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("TargetMap"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
rune.TargetMap = Map.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Target", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Target"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -645,108 +645,108 @@ namespace Server.Commands
{
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Skill", StringComparison.Ordinal))
if (m_Params[i].StartsWithOrdinal("Skill"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
st.Skill = (SkillName)Enum.Parse(typeof(SkillName), m_Params[i].Substring(++indexOf), true);
}
}
else if (m_Params[i].StartsWith("RequiredFixedPoint", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("RequiredFixedPoint"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
st.Required = Utility.ToInt32(m_Params[i].Substring(++indexOf)) * 0.1;
}
}
else if (m_Params[i].StartsWith("Required", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Required"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
st.Required = Utility.ToDouble(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("MessageString", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("MessageString"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
st.MessageString = m_Params[i].Substring(++indexOf);
}
}
else if (m_Params[i].StartsWith("MessageNumber", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("MessageNumber"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
st.MessageNumber = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("PointDest", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("PointDest"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
st.PointDest = Point3D.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("MapDest", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("MapDest"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
st.MapDest = Map.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Creatures", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Creatures"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
st.Creatures = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("SourceEffect", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("SourceEffect"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
st.SourceEffect = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("DestEffect", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("DestEffect"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
st.DestEffect = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("SoundID", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("SoundID"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
st.SoundID = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Delay", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Delay"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -764,90 +764,90 @@ namespace Server.Commands
{
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Substring", StringComparison.Ordinal))
if (m_Params[i].StartsWithOrdinal("Substring"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
kt.Substring = m_Params[i].Substring(++indexOf);
}
}
else if (m_Params[i].StartsWith("Keyword", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Keyword"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
kt.Keyword = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Range", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Range"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
kt.Range = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("PointDest", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("PointDest"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
kt.PointDest = Point3D.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("MapDest", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("MapDest"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
kt.MapDest = Map.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Creatures", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Creatures"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
kt.Creatures = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("SourceEffect", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("SourceEffect"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
kt.SourceEffect = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("DestEffect", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("DestEffect"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
kt.DestEffect = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("SoundID", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("SoundID"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
kt.SoundID = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Delay", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Delay"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -865,63 +865,63 @@ namespace Server.Commands
{
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("PointDest", StringComparison.Ordinal))
if (m_Params[i].StartsWithOrdinal("PointDest"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
tp.PointDest = Point3D.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("MapDest", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("MapDest"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
tp.MapDest = Map.Parse(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Creatures", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Creatures"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
tp.Creatures = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("SourceEffect", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("SourceEffect"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
tp.SourceEffect = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("DestEffect", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("DestEffect"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
tp.DestEffect = Utility.ToBoolean(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("SoundID", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("SoundID"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
tp.SoundID = Utility.ToInt32(m_Params[i].Substring(++indexOf));
}
}
else if (m_Params[i].StartsWith("Delay", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Delay"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -939,9 +939,9 @@ namespace Server.Commands
{
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("ContentType", StringComparison.Ordinal))
if (m_Params[i].StartsWithOrdinal("ContentType"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -968,18 +968,18 @@ namespace Server.Commands
for (var i = 0; i < m_Params.Length; ++i)
{
if (m_Params[i].StartsWith("Light", StringComparison.Ordinal))
if (m_Params[i].StartsWithOrdinal("Light"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
item.Light = (LightType)Enum.Parse(typeof(LightType), m_Params[i].Substring(++indexOf), true);
}
}
else if (m_Params[i].StartsWith("Hue", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Hue"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -995,18 +995,18 @@ namespace Server.Commands
}
}
}
else if (m_Params[i].StartsWith("Name", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Name"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
item.Name = m_Params[i].Substring(++indexOf);
}
}
else if (m_Params[i].StartsWith("Amount", StringComparison.Ordinal))
else if (m_Params[i].StartsWithOrdinal("Amount"))
{
var indexOf = m_Params[i].IndexOf('=', StringComparison.Ordinal);
var indexOf = m_Params[i].IndexOfOrdinal('=');
if (indexOf >= 0)
{
@ -1235,7 +1235,7 @@ namespace Server.Commands
{
line = line.Trim();
if (line.Length > 0 && !line.StartsWith("#", StringComparison.Ordinal))
if (line.Length > 0 && !line.StartsWithOrdinal("#"))
{
break;
}
@ -1248,7 +1248,7 @@ namespace Server.Commands
var list = new DecorationListMag();
var indexOf = line.IndexOf(' ', StringComparison.Ordinal);
var indexOf = line.IndexOfOrdinal(' ');
list.m_Type = AssemblyHandler.FindFirstTypeForName(line.Substring(0, indexOf++), true);
@ -1258,14 +1258,14 @@ namespace Server.Commands
}
line = line.Substring(indexOf);
indexOf = line.IndexOf('(', StringComparison.Ordinal);
indexOf = line.IndexOfOrdinal('(');
if (indexOf >= 0)
{
list.m_ItemID = Utility.ToInt32(line.Substring(0, indexOf - 1));
var parms = line.Substring(++indexOf);
if (line.EndsWith(")", StringComparison.Ordinal))
if (line.EndsWithOrdinal(")"))
{
parms = parms.Substring(0, parms.Length - 1);
}
@ -1294,7 +1294,7 @@ namespace Server.Commands
break;
}
if (line.StartsWith("#", StringComparison.Ordinal))
if (line.StartsWithOrdinal("#"))
{
continue;
}
@ -1324,7 +1324,7 @@ namespace Server.Commands
public void Pop(out string v, ref string line)
{
var space = line.IndexOf(' ', StringComparison.Ordinal);
var space = line.IndexOfOrdinal(' ');
if (space >= 0)
{

View file

@ -76,7 +76,7 @@ namespace Server.Commands
}
}
private static bool CIEqual(string l, string r) => Insensitive.Equals(l, r);
private static bool CIEqual(string l, string r) => l.InsensitiveEquals(r);
public static CPA GetCPA(PropertyInfo p)
{
@ -254,7 +254,7 @@ namespace Server.Commands
{
var valueString = args[1 + i * 2];
if (valueString.StartsWith("0x", StringComparison.Ordinal))
if (valueString.StartsWithOrdinal("0x"))
{
realValues[i] = Convert.ToInt32(valueString.Substring(2), 16);
}
@ -483,7 +483,7 @@ namespace Server.Commands
{
toSet = null;
}
else if (value.StartsWith("0x", StringComparison.Ordinal) && IsNumeric(type))
else if (value.StartsWithOrdinal("0x") && IsNumeric(type))
{
try
{

View file

@ -108,7 +108,7 @@ namespace Server.Commands
Item sign;
if (name.StartsWith("#", StringComparison.Ordinal))
if (name.StartsWithOrdinal("#"))
{
sign = new LocalizedSign(itemID, Utility.ToInt32(name.Substring(1)));
}

View file

@ -1,3 +1,4 @@
using System;
using System.Collections.Generic;
using System.IO;
using Server.Commands;
@ -715,7 +716,7 @@ namespace Server
if (m_Buffer == null || length > m_Buffer.Length)
{
m_Buffer = new byte[length];
m_Buffer = GC.AllocateUninitializedArray<byte>(length);
}
mulStream.Read(m_Buffer, 0, length);

View file

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

View file

@ -76,7 +76,7 @@ namespace Server.Engines.Chat
public bool IsVoiced(ChatUser user) => m_Voices.Contains(user);
public bool ValidatePassword(string password) => m_Password == null || Insensitive.Equals(m_Password, password);
public bool ValidatePassword(string password) => m_Password == null || m_Password.InsensitiveEquals(password);
public bool ValidateModerator(ChatUser user)
{

View file

@ -86,7 +86,7 @@ namespace Server.Engines.Chat
public static void PrivateMessage(ChatUser from, Channel channel, string param)
{
var indexOf = param.IndexOf(' ', StringComparison.Ordinal);
var indexOf = param.IndexOfOrdinal(' ');
var name = param.Substring(0, indexOf);
var text = param.Substring(indexOf + 1);
@ -173,7 +173,7 @@ namespace Server.Engines.Chat
string name;
string password = null;
var start = param.IndexOf('\"', StringComparison.Ordinal);
var start = param.IndexOfOrdinal('\"');
if (start >= 0)
{
@ -191,7 +191,7 @@ namespace Server.Engines.Chat
}
else
{
var indexOf = param.IndexOf(' ', StringComparison.Ordinal);
var indexOf = param.IndexOfOrdinal(' ');
if (indexOf >= 0)
{
@ -228,7 +228,7 @@ namespace Server.Engines.Chat
string name;
string password = null;
var start = param.IndexOf('{', StringComparison.Ordinal);
var start = param.IndexOfOrdinal('{');
if (start >= 0)
{

View file

@ -1396,7 +1396,7 @@ namespace Server.Engines.ConPVP
return;
}
if (Insensitive.Contains(e.Speech, "i wish to duel"))
if (e.Speech.InsensitiveContains("i wish to duel"))
{
if (!pm.CheckAlive())
{
@ -1432,7 +1432,7 @@ namespace Server.Engines.ConPVP
e.Handled = true;
}
}
else if (Insensitive.Equals(e.Speech, "change arena preferences"))
else if (e.Speech.InsensitiveEquals("change arena preferences"))
{
if (!pm.CheckAlive())
{
@ -1448,7 +1448,7 @@ namespace Server.Engines.ConPVP
}
}
}
else if (Insensitive.Equals(e.Speech, "showladder"))
else if (e.Speech.InsensitiveEquals("showladder"))
{
e.Blocked = true;
if (!pm.CheckAlive())
@ -1487,7 +1487,7 @@ namespace Server.Engines.ConPVP
}
}
}
else if (Insensitive.Equals(e.Speech, "viewladder"))
else if (e.Speech.InsensitiveEquals("viewladder"))
{
e.Blocked = true;
@ -1509,7 +1509,7 @@ namespace Server.Engines.ConPVP
}
}
}
else if (Insensitive.Contains(e.Speech, "i yield"))
else if (e.Speech.InsensitiveContains("i yield"))
{
if (!pm.CheckAlive())
{

View file

@ -122,7 +122,10 @@ namespace Server.Engines.ConPVP
{
for (var i = 0; i < entries.Count; ++i)
{
var teamInfo = entries[i] as DDTeamInfo;
if (entries[i] is not DDTeamInfo teamInfo)
{
continue;
}
AddImage(30, 70 + i * 75, 10152);
AddImage(30, 85 + i * 75, 10151);
@ -884,7 +887,7 @@ namespace Server.Engines.ConPVP
}
}
if (i == winner.TeamID)
if (i == winner?.TeamID)
{
continue;
}
@ -898,7 +901,10 @@ namespace Server.Engines.ConPVP
}
}
m_Context.Finish(m_Context.Participants[winner.TeamID]);
if (winner != null)
{
m_Context.Finish(m_Context.Participants[winner.TeamID]);
}
}
public override void OnStop()

View file

@ -279,7 +279,7 @@ namespace Server.Engines.ConPVP
AddPage(0);
AddBackground(0, 0, 300, 300, 9380);
var pList = m_List?.CastListCovariant<object, TourneyParticipant>()
var pList = m_List?.SafeConvertList<object, TourneyParticipant>()
?? new List<TourneyParticipant>(tourney.Participants);
AddLeftArrow(25, 11, ToButtonID(0, 0));
@ -412,10 +412,6 @@ namespace Server.Engines.ConPVP
AddLeftArrow(25, 11, ToButtonID(0, 0));
AddHtml(25, 35, 250, 20, Center("Rounds"));
// List<PyramidLevel> levelsList = m_List != null
// ? Utility.CastListCovariant<object, PyramidLevel>(m_List)
// : new List<PyramidLevel>(tourney.Pyramid.Levels);
StartPage(out var index, out var count, out var y, 12);
for (var i = 0; i < count; ++i, y += 18)
@ -439,7 +435,7 @@ namespace Server.Engines.ConPVP
}
var matchesList = m_List != null
? m_List.CastListCovariant<object, TourneyMatch>()
? m_List.SafeConvertList<object, TourneyMatch>()
: new List<TourneyMatch>(level.Matches);
AddRightArrow(

View file

@ -151,7 +151,7 @@ namespace Server.Ethics
continue;
}
if (!Insensitive.Equals(ethic.Definition.JoinPhrase.String, e.Speech))
if (!ethic.Definition.JoinPhrase.String.InsensitiveEquals(e.Speech))
{
continue;
}
@ -185,7 +185,7 @@ namespace Server.Ethics
{
var power = ethic.Definition.Powers[i];
if (!Insensitive.Equals(power.Definition.Phrase.String, e.Speech))
if (!power.Definition.Phrase.String.InsensitiveEquals(e.Speech))
{
continue;
}

View file

@ -1277,7 +1277,7 @@ namespace Server.Factions
{
var faction = factions[i];
if (Insensitive.Equals(faction.Definition.FriendlyName, name))
if (faction.Definition.FriendlyName.InsensitiveEquals(name))
{
return faction;
}

View file

@ -536,7 +536,7 @@ namespace Server.Factions
{
var town = towns[i];
if (Insensitive.Equals(town.Definition.FriendlyName, name))
if (town.Definition.FriendlyName.InsensitiveEquals(name))
{
return town;
}

View file

@ -205,7 +205,7 @@ namespace Server.Factions
{
var name = Name;
return name != null && Insensitive.StartsWith(speech, name);
return name != null && speech.InsensitiveStartsWith(name);
}
public override void OnSpeech(SpeechEventArgs e)
@ -216,7 +216,7 @@ namespace Server.Factions
if (!e.Handled && InRange(from, ListenRange) && from.Alive)
{
if (e.HasKeyword(0xE6) && (Insensitive.Equals(e.Speech, "orders") || WasNamed(e.Speech))) // *orders*
if (e.HasKeyword(0xE6) && (e.Speech.InsensitiveEquals("orders") || WasNamed(e.Speech))) // *orders*
{
if (m_Town?.IsSheriff(from) != true)
{
@ -240,15 +240,15 @@ namespace Server.Factions
var understood = true;
ReactionType newType = 0;
if (Insensitive.Contains(e.Speech, "attack"))
if (e.Speech.InsensitiveContains("attack"))
{
newType = ReactionType.Attack;
}
else if (Insensitive.Contains(e.Speech, "warn"))
else if (e.Speech.InsensitiveContains("warn"))
{
newType = ReactionType.Warn;
}
else if (Insensitive.Contains(e.Speech, "ignore"))
else if (e.Speech.InsensitiveContains("ignore"))
{
newType = ReactionType.Ignore;
}
@ -261,7 +261,7 @@ namespace Server.Factions
{
understood = false;
if (Insensitive.Contains(e.Speech, "civil"))
if (e.Speech.InsensitiveContains("civil"))
{
ChangeReaction(null, newType);
understood = true;
@ -273,14 +273,14 @@ namespace Server.Factions
{
var faction = factions[i];
if (faction != m_Faction && Insensitive.Contains(e.Speech, faction.Definition.Keyword))
if (faction != m_Faction && e.Speech.InsensitiveContains(faction.Definition.Keyword))
{
ChangeReaction(faction, newType);
understood = true;
}
}
}
else if (Insensitive.Contains(e.Speech, "patrol"))
else if (e.Speech.InsensitiveContains("patrol"))
{
Home = Location;
RangeHome = 6;
@ -289,7 +289,7 @@ namespace Server.Factions
Say(1005146); // This spot looks like it needs protection! I shall guard it with my life.
understood = true;
}
else if (Insensitive.Contains(e.Speech, "follow"))
else if (e.Speech.InsensitiveContains("follow"))
{
Home = Location;
RangeHome = 6;

View file

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

View file

@ -44,7 +44,7 @@ namespace Server.Engines.MLQuests
{
line = line.Trim();
if (line.Length == 0 || line.StartsWith("#", StringComparison.Ordinal))
if (line.Length == 0 || line.StartsWithOrdinal("#"))
{
continue;
}

View file

@ -245,7 +245,7 @@ namespace Server.Movement
{
itemData = TileData.ItemTable[tile.ID & TileData.MaxItemValue];
if (m.Flying && Insensitive.Equals(itemData.Name, "hover over"))
if (m.Flying && itemData.Name.InsensitiveEquals("hover over"))
{
newZ = tile.Z;
return true;
@ -350,7 +350,7 @@ namespace Server.Movement
itemData = item.ItemData;
flags = itemData.Flags;
if (m.Flying && Insensitive.Equals(itemData.Name, "hover over"))
if (m.Flying && itemData.Name.InsensitiveEquals("hover over"))
{
newZ = item.Z;
return true;

View file

@ -519,7 +519,7 @@ namespace Server.Engines.Spawners
for (var j = 0; thisProp == null && j < allProps.Length; ++j)
{
if (Insensitive.Equals(propName, allProps[j].Name))
if (propName.InsensitiveEquals(allProps[j].Name))
{
thisProp = allProps[j];
}

View file

@ -167,7 +167,7 @@ namespace Server.Gumps
AddLabel(150, 150, LabelHue, banned.ToString());
AddLabel(20, 170, LabelHue, "Firewalled:");
AddLabel(150, 170, LabelHue, Firewall.List.Count.ToString());
AddLabel(150, 170, LabelHue, Firewall.Set.Count.ToString());
AddLabel(20, 190, LabelHue, "Clients:");
AddLabel(150, 190, LabelHue, TcpServer.Instances.Count.ToString());
@ -196,8 +196,8 @@ namespace Server.Gumps
AddLabel(20, 350, LabelHue, "Operating System: ");
var os = Environment.OSVersion.ToString();
os = os.Replace("Microsoft", "MSFT", StringComparison.Ordinal);
os = os.Replace("Service Pack", "SP", StringComparison.Ordinal);
os = os.ReplaceOrdinal("Microsoft", "MSFT");
os = os.ReplaceOrdinal("Service Pack", "SP");
AddLabel(150, 350, LabelHue, os);
@ -612,11 +612,12 @@ namespace Server.Gumps
if (m_List == null)
{
sharedAccounts = GetAllSharedAccounts();
m_List = sharedAccounts.CastListContravariant<KeyValuePair<IPAddress, List<Account>>, object>();
// TODO: Find a better way, don't use KVPs?
m_List = sharedAccounts.ConvertAll(kvp => (object)kvp);
}
else
{
sharedAccounts = m_List.CastListCovariant<object, KeyValuePair<IPAddress, List<Account>>>();
sharedAccounts = m_List.SafeConvertList<object, KeyValuePair<IPAddress, List<Account>>>();
}
AddLabelCropped(12, 120, 60, 20, LabelHue, "Count");
@ -1004,11 +1005,11 @@ namespace Server.Gumps
if (m_List == null)
{
ipAddresses = a.LoginIPs.ToList();
m_List = ipAddresses.CastListContravariant<IPAddress, object>();
m_List = ipAddresses.ToList<object>();
}
else
{
ipAddresses = m_List.CastListCovariant<object, IPAddress>();
ipAddresses = m_List.SafeConvertList<object, IPAddress>();
}
AddHtml(10, 195, 400, 20, Color(Center("Client Addresses"), LabelColor32));
@ -1076,11 +1077,11 @@ namespace Server.Gumps
if (m_List == null)
{
ipRestrictions = a.IPRestrictions.ToList();
m_List = ipRestrictions.CastListContravariant<string, object>();
m_List = ipRestrictions.ToList<object>();
}
else
{
ipRestrictions = m_List.CastListCovariant<object, string>();
ipRestrictions = m_List.SafeConvertList<object, string>();
}
AddHtml(10, 195, 400, 20, Color(Center("Address Restrictions"), LabelColor32));
@ -1260,16 +1261,16 @@ namespace Server.Gumps
{
AddFirewallHeader();
List<Firewall.IFirewallEntry> firewallEntries;
HashSet<Firewall.IFirewallEntry> firewallEntries;
if (m_List == null)
{
firewallEntries = Firewall.List;
m_List = firewallEntries.CastListContravariant<Firewall.IFirewallEntry, object>();
firewallEntries = Firewall.Set;
m_List = firewallEntries.ToList<object>();
}
else
{
firewallEntries = m_List.CastListCovariant<object, Firewall.IFirewallEntry>();
firewallEntries = m_List.SafeConvertSet<object, Firewall.IFirewallEntry>();
}
AddLabelCropped(12, 120, 358, 20, LabelHue, "IP Address");
@ -1296,17 +1297,22 @@ namespace Server.Gumps
{
AddLabel(12, 140, LabelHue, "The firewall list is empty.");
}
for (int i = 0, index = listPage * 12;
i < 12 && index >= 0 && index < firewallEntries.Count;
++i, ++index)
else
{
var firewallEntry = firewallEntries[index];
var i = 0;
var index = listPage * 12;
foreach (var firewallEntry in firewallEntries)
{
if (i >= 12)
{
break;
}
var offset = 140 + i * 20;
var offset = 140 + i++ * 20;
AddLabelCropped(12, offset, 358, 20, LabelHue, firewallEntry.ToString());
AddButton(380, offset - 1, 0xFA5, 0xFA7, GetButtonID(6, index + 4));
AddLabelCropped(12, offset, 358, 20, LabelHue, firewallEntry.ToString());
AddButton(380, offset - 1, 0xFA5, 0xFA7, GetButtonID(6, index++ + 4));
}
}
break;
@ -1351,11 +1357,11 @@ namespace Server.Gumps
}
blockedAccts.Sort(AccountComparer.Instance);
m_List = blockedAccts.CastListContravariant<Account, object>();
m_List = blockedAccts.ToList<object>();
}
else
{
blockedAccts = m_List.CastListCovariant<object, Account>();
blockedAccts = m_List.SafeConvertList<object, Account>();
}
if (listPage > 0)
@ -1968,7 +1974,7 @@ namespace Server.Gumps
if (m_PageType == AdminGumpPage.Accounts)
{
var list = m_List.CastListCovariant<object, Account>();
var list = m_List.SafeConvertList<object, Account>();
if (list != null && m_State is List<Account> rads)
{
@ -2453,12 +2459,12 @@ namespace Server.Gumps
var m = ns.Mobile;
var a = ns.Account;
isMatch = m?.Name.ToLower().Contains(match, StringComparison.Ordinal) == true
|| a?.Username.ToLower().Contains(match, StringComparison.Ordinal) == true;
isMatch = m?.Name.InsensitiveContains(match) == true
|| a?.Username.InsensitiveContains(match) == true;
}
else
{
isMatch = ns.ToString().Contains(match, StringComparison.Ordinal);
isMatch = ns.ToString().ContainsOrdinal(match);
}
if (isMatch)
@ -2508,7 +2514,7 @@ namespace Server.Gumps
from,
AdminGumpPage.Clients,
0,
results.CastListContravariant<NetState, object>(),
results.ToList<object>(),
"One match found."
)
);
@ -2521,7 +2527,7 @@ namespace Server.Gumps
from,
AdminGumpPage.Clients,
0,
results.CastListContravariant<NetState, object>(),
results.ToList<object>(),
notice ?? (results.Count == 0 ? "Nothing matched your search terms." : null)
)
);
@ -2715,8 +2721,7 @@ namespace Server.Gumps
else
{
results = Accounts.GetAccounts()
.Where(acct =>
acct.Username.ToLower().Contains(match, StringComparison.Ordinal))
.Where(acct => acct.Username.InsensitiveContains(match))
.ToList();
results.Sort(AccountComparer.Instance);
}
@ -2741,7 +2746,7 @@ namespace Server.Gumps
from,
AdminGumpPage.Accounts,
0,
results.CastListContravariant<IAccount, object>(),
results.ToList<object>(),
results.Count == 0 ? "Nothing matched your search terms." : null,
new List<object>()
)
@ -2869,7 +2874,7 @@ namespace Server.Gumps
from,
AdminGumpPage.Accounts,
0,
list.CastListContravariant<Account, object>(),
list.ToList<object>(),
null,
new List<object>()
)
@ -3492,7 +3497,7 @@ namespace Server.Gumps
from,
AdminGumpPage.Accounts,
0,
kvp.Value.CastListContravariant<Account, object>(),
kvp.Value.ToList<object>(),
null,
new List<object>()
)
@ -3525,13 +3530,13 @@ namespace Server.Gumps
}
else
{
for (var i = 0; i < Firewall.List.Count; ++i)
foreach (var check in Firewall.Set)
{
var check = Firewall.List[i].ToString();
var checkStr = check.ToString();
if (check?.Contains(match, StringComparison.Ordinal) == true)
if (checkStr.ContainsOrdinal(match))
{
results.Add(Firewall.List[i]);
results.Add(check);
}
}
}
@ -3958,7 +3963,7 @@ namespace Server.Gumps
from,
AdminGumpPage.Accounts,
0,
list.CastListContravariant<Account, object>(),
list.ToList<object>(),
null,
new List<object>()
)
@ -4222,7 +4227,7 @@ namespace Server.Gumps
return -1;
}
return aMob.AccessLevel < bMob.AccessLevel ? 1 : Insensitive.Compare(aMob.Name, bMob.Name);
return aMob.AccessLevel < bMob.AccessLevel ? 1 : aMob.Name.InsensitiveCompare(bMob.Name);
}
}
@ -4265,7 +4270,7 @@ namespace Server.Gumps
return -1;
}
return aLevel < bLevel ? 1 : Insensitive.Compare(x.Username, y.Username);
return aLevel < bLevel ? 1 : x.Username.InsensitiveCompare(y.Username);
}
}
}

View file

@ -1,3 +1,4 @@
using System.Linq;
using Server.Guilds;
using Server.Prompts;
@ -36,7 +37,7 @@ namespace Server.Gumps
if (text.Length >= 3)
{
var guilds = BaseGuild.Search(text).CastListCovariant<BaseGuild, Guild>();
var guilds = BaseGuild.Search(text).SafeConvertList<BaseGuild, Guild>();
GuildGump.EnsureClosed(m_Mobile);

View file

@ -22,7 +22,7 @@ namespace Server.Gumps
Design();
m_List = new List<Guild>(list);
m_List = list;
for (var i = 0; i < m_List.Count; ++i)
{

View file

@ -120,7 +120,7 @@ namespace Server.Guilds
for (var i = 0; i < disallowed.Length; i++)
{
if (s.IndexOf(disallowed[i], StringComparison.Ordinal) != -1)
if (s.IndexOfOrdinal(disallowed[i]) != -1)
{
return false;
}

View file

@ -26,7 +26,7 @@ namespace Server.Guilds
"",
0,
GuildDisplayType.All,
World.Guilds.Values.CastListCovariant<BaseGuild, Guild>(),
World.Guilds.Values.SafeConvertList<BaseGuild, Guild>(),
1063136 + (int)GuildDisplayType.All
)
{
@ -44,7 +44,7 @@ namespace Server.Guilds
filter,
startNumber,
display,
World.Guilds.Values.CastListCovariant<BaseGuild, Guild>(),
World.Guilds.Values.SafeConvertList<BaseGuild, Guild>(),
1063136 + (int)display
)
{
@ -224,7 +224,7 @@ namespace Server.Guilds
}
}
return !(Insensitive.Contains(g.Name, filter) || Insensitive.Contains(g.Abbreviation, filter));
return !(g.Name.InsensitiveContains(filter) || g.Abbreviation.InsensitiveContains(filter));
}
public override Gump GetResentGump(
@ -285,7 +285,7 @@ namespace Server.Guilds
return 1;
}
return Insensitive.Compare(x.Name, y.Name);
return x.Name.InsensitiveCompare(y.Name);
}
}
@ -365,7 +365,7 @@ namespace Server.Guilds
return 1;
}
return Insensitive.Compare(x.Abbreviation, y.Abbreviation);
return x.Abbreviation.InsensitiveCompare(y.Abbreviation);
}
}
}

View file

@ -277,7 +277,7 @@ namespace Server.Guilds
}
else
{
if (Insensitive.Equals(title, "none"))
if (title.InsensitiveEquals("none"))
{
m_Member.GuildTitle = null;
}

View file

@ -85,7 +85,7 @@ namespace Server.Guilds
return true;
}
return !Insensitive.Contains(pm.Name, filter);
return !pm.Name.InsensitiveContains(filter);
}
public override Gump GetResentGump(
@ -208,7 +208,7 @@ namespace Server.Guilds
return 1;
}
return Insensitive.Compare(x.Name, y.Name);
return x.Name.InsensitiveCompare(y.Name);
}
}
@ -276,7 +276,7 @@ namespace Server.Guilds
return 1;
}
return Insensitive.Compare(x.GuildTitle, y.GuildTitle);
return x.GuildTitle.InsensitiveCompare(y.GuildTitle);
}
}

View file

@ -242,7 +242,7 @@ namespace Server.Gumps
if (m_House.Sign != null)
{
var lines = Wrap(m_House.Sign.GetName());
var lines = m_House.Sign.GetName().Wrap(10, 6);
for (int i = 0, y = (101 - lines.Count * 14) / 2; i < lines.Count; ++i, y += 14)
{
@ -402,75 +402,6 @@ namespace Server.Gumps
}
}
private List<string> Wrap(string value)
{
if (value == null || (value = value.Trim()).Length <= 0)
{
return null;
}
var values = value.Split(' ');
var list = new List<string>();
var current = "";
for (var i = 0; i < values.Length; ++i)
{
var val = values[i];
var v = current.Length == 0 ? val : $"{current} {val}";
if (v.Length < 10)
{
current = v;
}
else if (v.Length == 10)
{
list.Add(v);
if (list.Count == 6)
{
return list;
}
current = "";
}
else if (val.Length <= 10)
{
list.Add(current);
if (list.Count == 6)
{
return list;
}
current = val;
}
else
{
while (v.Length >= 10)
{
list.Add(v.Substring(0, 10));
if (list.Count == 6)
{
return list;
}
v = v.Substring(10);
}
current = v;
}
}
if (current.Length > 0)
{
list.Add(current);
}
return list;
}
private string GetOwnerName()
{
var m = m_House.Owner;

View file

@ -115,7 +115,7 @@ namespace Server.Gumps
if (m_House.Sign != null)
{
var lines = Wrap(m_House.Sign.GetName());
var lines = m_House.Sign.GetName().Wrap(10, 6);
for (int i = 0, y = (114 - lines.Count * 14) / 2; i < lines.Count; ++i, y += 14)
{
@ -1739,74 +1739,5 @@ namespace Server.Gumps
}
}
}
private List<string> Wrap(string value)
{
if (value == null || (value = value.Trim()).Length <= 0)
{
return null;
}
var values = value.Split(' ');
var list = new List<string>();
var current = "";
for (var i = 0; i < values.Length; ++i)
{
var val = values[i];
var v = current.Length == 0 ? val : $"{current} {val}";
if (v.Length < 10)
{
current = v;
}
else if (v.Length == 10)
{
list.Add(v);
if (list.Count == 6)
{
return list;
}
current = "";
}
else if (val.Length <= 10)
{
list.Add(current);
if (list.Count == 6)
{
return list;
}
current = val;
}
else
{
while (v.Length >= 10)
{
list.Add(v.Substring(0, 10));
if (list.Count == 6)
{
return list;
}
v = v.Substring(10);
}
current = v;
}
}
if (current.Length > 0)
{
list.Add(current);
}
return list;
}
}
}

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", StringComparison.Ordinal))
if (s.StartsWithOrdinal("0x"))
{
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], StringComparison.Ordinal))
if (DisplayName.StartsWithOrdinal(m_GroupNames[i]))
{
DisplayName = DisplayName.Substring(m_GroupNames[i].Length);
break;

View file

@ -103,7 +103,7 @@ namespace Server.Gumps
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().Contains(filter, StringComparison.Ordinal) != true)
if (filter != null && !m.Name.InsensitiveContains(filter))
{
continue;
}
@ -330,7 +330,7 @@ namespace Server.Gumps
return -1;
}
return x.AccessLevel < y.AccessLevel ? 1 : Insensitive.Compare(x.Name, y.Name);
return x.AccessLevel < y.AccessLevel ? 1 : x.Name.InsensitiveCompare(y.Name);
}
}
}

View file

@ -23,7 +23,7 @@ namespace Server.Engines.Events
private static void EventSink_Speech(SpeechEventArgs e)
{
if (Insensitive.Contains(e.Speech, "trick or treat"))
if (e.Speech.InsensitiveContains("trick or treat"))
{
e.Mobile.Target = new TrickOrTreatTarget();

View file

@ -81,17 +81,17 @@ namespace Server.Items
if (format != null)
{
if (format.StartsWith("the head of ", StringComparison.Ordinal))
if (format.StartsWithOrdinal("the head of "))
{
format = format.Substring(14); // "the head of|..."
}
if (format.EndsWith(", taken in a duel", StringComparison.Ordinal))
if (format.EndsWithOrdinal(", taken in a duel"))
{
format = format.Substring(0, format.Length - ", taken in a duel".Length);
HeadType = HeadType.Duel;
}
else if (format.EndsWith(", taken in a tournament", StringComparison.Ordinal))
else if (format.EndsWithOrdinal(", taken in a tournament"))
{
format = format.Substring(0, format.Length - ", taken in a tournament".Length);
HeadType = HeadType.Tournament;

View file

@ -2,6 +2,7 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using Server.Buffers;
using Server.ContextMenus;
using Server.Gumps;
using Server.Multis;
@ -119,7 +120,7 @@ namespace Server.Items
{
get
{
var sb = new StringBuilder();
using var sb = new ValueStringBuilder(stackalloc char[256]);
foreach (var bpi in Pages)
{

View file

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Text;
using Server.Buffers;
using Server.Mobiles;
using Server.Network;
using Server.Spells;
@ -594,7 +595,7 @@ namespace Server.Items
{
isMatch = true;
}
else if (m_Substring != null && e.Speech.ToLower().Contains(m_Substring.ToLower(), StringComparison.Ordinal))
else if (m_Substring != null && e.Speech.InsensitiveContains(m_Substring))
{
isMatch = true;
}
@ -1189,7 +1190,7 @@ namespace Server.Items
{
base.GetProperties(list);
var props = new StringBuilder();
using var props = new ValueStringBuilder(stackalloc char[128]);
if (GetFlag(ConditionFlag.DenyMounted))
{

View file

@ -262,7 +262,7 @@ namespace Server.Gumps
return 1;
}
var result = Insensitive.Compare(x.From.Name, y.From.Name);
var result = x.From.Name.InsensitiveCompare(y.From.Name);
return result == 0 ? x.Date.CompareTo(y.Date) : result;
}
@ -310,7 +310,7 @@ namespace Server.Gumps
return 1;
}
var result = Insensitive.Compare(a.Username, b.Username);
var result = a.Username.InsensitiveCompare(b.Username);
return result == 0 ? x.Date.CompareTo(y.Date) : result;
}

View file

@ -168,7 +168,7 @@ namespace Server.Misc
{
var info = new DirectoryInfo(paths[i]);
if (info.Name.StartsWith(match, StringComparison.Ordinal))
if (info.Name.StartsWithOrdinal(match))
{
return info;
}
@ -182,7 +182,7 @@ namespace Server.Misc
private static string FindTimeStamp(string input)
{
var start = input.IndexOf('(', StringComparison.Ordinal);
var start = input.IndexOfOrdinal('(');
if (start >= 0)
{

View file

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Text;
using Server.Buffers;
namespace Server.Misc
{
@ -316,9 +317,10 @@ namespace Server.Misc
return string.Concat(syllables);
}
public string ConstructSentance(int wordCount)
// TODO: Should be changed a preset table that is built
public string ConstructSentence(int wordCount)
{
var sentance = new StringBuilder();
using var sentence = new ValueStringBuilder(stackalloc char[256]);
var needUpperCase = true;
@ -330,56 +332,33 @@ namespace Server.Misc
if (random < 11)
{
sentance.Append(' ');
sentence.Append(' ');
}
else
{
needUpperCase = true;
if (random > 13)
{
sentance.Append("! ");
}
else
{
sentance.Append(". ");
}
sentence.Append(random > 13 ? "! " : ". ");
}
}
int syllableCount;
if (Utility.Random(100) < 30)
{
syllableCount = Utility.Random(1, 5);
}
else
{
syllableCount = Utility.Random(1, 3);
}
var syllableCount = Utility.Random(1, Utility.Random(100) < 30 ? 5 : 3);
var word = ConstructWord(syllableCount);
sentance.Append(word);
sentence.Append(word);
if (needUpperCase)
{
sentance.Replace(word[0], char.ToUpper(word[0]), sentance.Length - word.Length, 1);
sentence.Replace(word[0], char.ToUpper(word[0]), sentence.Length - word.Length, 1);
}
needUpperCase = false;
}
if (Utility.RandomMinMax(1, 5) == 1)
{
sentance.Append('!');
}
else
{
sentance.Append('.');
}
sentence.Append(Utility.RandomMinMax(1, 5) == 1 ? '!' : '.');
return sentance.ToString();
return sentence.ToString();
}
public void SayRandomTranslate(Mobile mob, params string[] sentancesInEnglish)
@ -435,44 +414,43 @@ namespace Server.Misc
if (keywordsFound.Count > 0)
{
string responseWord;
if (Utility.RandomBool())
{
responseWord = GetRandomResponseWord(keywordsFound);
}
else
{
responseWord = keywordsFound.RandomElement();
}
var responseWord = Utility.RandomBool() ?
GetRandomResponseWord(keywordsFound) : keywordsFound.RandomElement();
var secondResponseWord = GetRandomResponseWord(keywordsFound);
var response = new StringBuilder();
using var response = new ValueStringBuilder(stackalloc char[256]);
switch (Utility.Random(6))
{
default:
case 0:
{
response.Append("Me ").Append(responseWord).Append('?');
response.Append("Me ");
response.Append(responseWord);
response.Append('?');
break;
}
case 1:
{
response.Append(responseWord).Append(" thee!");
response.Append(responseWord);
response.Append(" thee!");
response.Replace(responseWord[0], char.ToUpper(responseWord[0]), 0, 1);
break;
}
case 2:
{
response.Append(responseWord).Append('?');
response.Append(responseWord);
response.Append('?');
response.Replace(responseWord[0], char.ToUpper(responseWord[0]), 0, 1);
break;
}
case 3:
{
response.Append(responseWord).Append("! ").Append(secondResponseWord).Append('.');
response.Append(responseWord);
response.Append("! ");
response.Append(secondResponseWord);
response.Append('.');
response.Replace(responseWord[0], char.ToUpper(responseWord[0]), 0, 1);
response.Replace(
secondResponseWord[0],
@ -484,13 +462,17 @@ namespace Server.Misc
}
case 4:
{
response.Append(responseWord).Append('.');
response.Append(responseWord);
response.Append('.');
response.Replace(responseWord[0], char.ToUpper(responseWord[0]), 0, 1);
break;
}
case 5:
{
response.Append(responseWord).Append("? ").Append(secondResponseWord).Append('.');
response.Append(responseWord);
response.Append("? ");
response.Append(secondResponseWord);
response.Append('.');
response.Replace(responseWord[0], char.ToUpper(responseWord[0]), 0, 1);
response.Replace(
secondResponseWord[0],
@ -502,16 +484,7 @@ namespace Server.Misc
}
}
var maxWords = split.Length / 2 + 1;
if (maxWords < 2)
{
maxWords = 2;
}
else if (maxWords > 6)
{
maxWords = 6;
}
var maxWords = Math.Clamp(split.Length / 2 + 1, 2, 6);
SaySentance(mob, Utility.RandomMinMax(2, maxWords));
mob.Say(response.ToString());
@ -617,7 +590,7 @@ namespace Server.Misc
public void SaySentance(Mobile mob, int wordCount)
{
mob.Say(ConstructSentance(wordCount));
mob.Say(ConstructSentence(wordCount));
mob.PlaySound(Sound);
}
}

View file

@ -201,7 +201,7 @@ namespace Server.Misc
for (var i = 0; i < disallowed.Length; ++i)
{
var indexOf = name.IndexOf(disallowed[i], StringComparison.Ordinal);
var indexOf = name.IndexOfOrdinal(disallowed[i]);
if (indexOf == -1)
{
@ -235,7 +235,7 @@ namespace Server.Misc
for (var i = 0; i < startDisallowed.Length; ++i)
{
if (name.StartsWith(startDisallowed[i], StringComparison.Ordinal))
if (name.StartsWithOrdinal(startDisallowed[i]))
{
return false;
}

View file

@ -34,7 +34,7 @@ namespace Server.Misc
for (var i = 0; i < disallowed.Length; i++)
{
if (name.IndexOf(disallowed[i], StringComparison.Ordinal) != -1)
if (name.IndexOfOrdinal(disallowed[i]) != -1)
{
from.SendLocalizedMessage(1072622); // That name isn't very polite.
return;

View file

@ -870,22 +870,22 @@ namespace Server.Items
/// </summary>
public static CraftResource GetFromOreInfo(OreInfo info)
{
if (info.Name.Contains("Spined", StringComparison.Ordinal))
if (info.Name.ContainsOrdinal("Spined"))
{
return CraftResource.SpinedLeather;
}
if (info.Name.Contains("Horned", StringComparison.Ordinal))
if (info.Name.ContainsOrdinal("Horned"))
{
return CraftResource.HornedLeather;
}
if (info.Name.Contains("Barbed", StringComparison.Ordinal))
if (info.Name.ContainsOrdinal("Barbed"))
{
return CraftResource.BarbedLeather;
}
if (info.Name.Contains("Leather", StringComparison.Ordinal))
if (info.Name.ContainsOrdinal("Leather"))
{
return CraftResource.RegularLeather;
}

View file

@ -393,7 +393,7 @@ namespace Server.Misc
do
{
++count;
index = title.IndexOf("<br>", index + 1, StringComparison.Ordinal);
index = title.IndexOfOrdinal("<br>", index + 1);
} while (index >= 0);
return count;

View file

@ -56,7 +56,7 @@ namespace Server
{
line = line.Trim();
if (line.Length == 0 || line.StartsWith("#", StringComparison.Ordinal))
if (line.Length == 0 || line.StartsWithOrdinal("#"))
{
continue;
}

View file

@ -143,14 +143,12 @@ namespace Server.Misc
offset = Math.Min(offset - m.Fame / 100, 0);
}
if (m.Fame + offset > MaxFame)
offset = (m.Fame + offset) switch
{
offset = MaxFame - m.Fame;
}
else if (m.Fame + offset < MinFame)
{
offset = MinFame - m.Fame;
}
> MaxFame => MaxFame - m.Fame,
< MinFame => MinFame - m.Fame,
_ => offset
};
m.Fame += offset;
@ -219,14 +217,12 @@ namespace Server.Misc
offset = Math.Min(offset - m.Karma / 100, 0);
}
if (m.Karma + offset > MaxKarma)
offset = (m.Karma + offset) switch
{
offset = MaxKarma - m.Karma;
}
else if (m.Karma + offset < MinKarma)
{
offset = MinKarma - m.Karma;
}
> MaxKarma => MaxKarma - m.Karma,
< MinKarma => MinKarma - m.Karma,
_ => offset
};
var wasPositiveKarma = m.Karma >= 0;
@ -288,11 +284,6 @@ namespace Server.Misc
var showSkillTitle = beheld.ShowFameTitle && (beholder == beheld || fame >= 5000);
/*if (beheld.Kills >= 5)
{
title.AppendFormat( beheld.Fame >= 10000 ? "The Murderer {1} {0}" : "The Murderer {0}", beheld.Name, beheld.Female ? "Lady" : "Lord" );
}
else*/
if (beheld.ShowFameTitle || beholder == beheld)
{
for (var i = 0; i < m_FameEntries.Length; ++i)
@ -345,15 +336,12 @@ namespace Server.Misc
}
}
var offset = 0;
if (highestValue > 800)
var offset = highestValue switch
{
offset = 3;
}
else if (highestValue > 300)
{
offset = highestValue / 300;
}
> 800 => 3,
> 300 => highestValue / 300,
_ => 0
};
if (offset > 0)
{
@ -369,7 +357,7 @@ namespace Server.Misc
var customTitle = beheld.Title;
if (customTitle != null && (customTitle = customTitle.Trim()).Length > 0)
if ((customTitle = customTitle?.Trim())?.Length > 0)
{
title.AppendFormat(" {0}", customTitle);
}
@ -395,7 +383,7 @@ namespace Server.Misc
var skillLevel = GetSkillLevel(highest);
var skillTitle = highest.Info.Title;
if (mob.Female && skillTitle.EndsWith("man", StringComparison.Ordinal))
if (mob.Female && skillTitle.EndsWithOrdinal("man"))
{
skillTitle = $"{skillTitle.Substring(0, skillTitle.Length - 3)}woman";
}

View file

@ -156,7 +156,7 @@ namespace Server.Mobiles
{
var name = m_Mobile.Name;
return name != null && Insensitive.StartsWith(speech, name);
return name != null && speech.InsensitiveStartsWith(name);
}
public virtual void GetContextMenuEntries(Mobile from, List<ContextMenuEntry> list)
@ -786,7 +786,7 @@ namespace Server.Mobiles
{
var word = str[i];
if (Insensitive.Equals(word, "obey"))
if (word.InsensitiveEquals("obey"))
{
m_Mobile.SetControlMaster(e.Mobile);

View file

@ -3775,12 +3775,12 @@ namespace Server.Mobiles
{
var word = wordsString[i];
if (Insensitive.Equals(word, wordName))
if (word.InsensitiveEquals(wordName))
{
bFound = true;
}
if (bWithAll && Insensitive.Equals(word, "all"))
if (bWithAll && word.InsensitiveEquals("all"))
{
return true;
}

View file

@ -238,7 +238,7 @@ namespace Server.Mobiles
}
else
{
for (var i = 0; i < entries.Count; ++i)
for (var i = 0; i < entries!.Count; ++i)
{
var tce = entries[i];

View file

@ -771,33 +771,7 @@ namespace Server.Mobiles
public virtual void CapitalizeTitle()
{
var title = Title;
if (title == null)
{
return;
}
var split = title.Split(' ');
for (var i = 0; i < split.Length; ++i)
{
if (Insensitive.Equals(split[i], "the"))
{
continue;
}
if (split[i].Length > 1)
{
split[i] = char.ToUpper(split[i][0]) + split[i].Substring(1);
}
else if (split[i].Length > 0)
{
split[i] = char.ToUpper(split[i][0]).ToString();
}
}
Title = string.Join(" ", split);
Title = Title.Capitalize();
}
public virtual int GetHairHue() => Race.RandomHairHue();

View file

@ -308,7 +308,7 @@ namespace Server.Mobiles
++stabled;
if (claimByName && !Insensitive.Equals(pet.Name, petName))
if (claimByName && !pet.Name.InsensitiveEquals(petName))
{
continue;
}
@ -387,7 +387,7 @@ namespace Server.Mobiles
CloseClaimList(e.Mobile);
var index = e.Speech.IndexOf(' ', StringComparison.Ordinal);
var index = e.Speech.IndexOfOrdinal(' ');
if (index != -1)
{

View file

@ -65,7 +65,7 @@ namespace Server.Mobiles
{
var name = Name;
return name != null && Insensitive.StartsWith(speech, name);
return name != null && speech.InsensitiveStartsWith(name);
}
public override bool HandlesOnSpeech(Mobile from)

View file

@ -297,7 +297,7 @@ namespace Server.Mobiles
continue;
}
if (Insensitive.Equals(keyword, e.Speech))
if (keyword.InsensitiveEquals(e.Speech))
{
var message = rumor.Message;

View file

@ -1249,7 +1249,7 @@ namespace Server.Mobiles
public override bool HandlesOnSpeech(Mobile from) => from.Alive && from.GetDistanceToSqrt(this) <= 3;
public bool WasNamed(string speech) => Name != null && Insensitive.StartsWith(speech, Name);
public bool WasNamed(string speech) => Name != null && speech.InsensitiveStartsWith(Name);
public override void OnSpeech(SpeechEventArgs e)
{

View file

@ -236,7 +236,7 @@ namespace Server.Regions
return;
}
if (Core.ML && Insensitive.Equals(e.Speech, "I wish to resize my house"))
if (Core.ML && e.Speech.InsensitiveEquals("I wish to resize my house"))
{
if (from.Map != sign.Map || !from.InRange(sign, 0))
{

View file

@ -1,5 +1,6 @@
using System;
using System.Text;
using Server.Buffers;
using Server.Items;
using Server.Mobiles;
using Server.Targeting;
@ -75,12 +76,12 @@ namespace Server.SkillHandlers
if (c.Looters.Count > 0)
{
var sb = new StringBuilder();
using var sb = new ValueStringBuilder(stackalloc char[128]);
for (var i = 0; i < c.Looters.Count; i++)
{
if (i > 0)
{
sb.Append(", ");
sb.Append(i == c.Looters.Count - 1 ? ", and " : ", ");
}
sb.Append(c.Looters[i].Name);
@ -89,7 +90,7 @@ namespace Server.SkillHandlers
from.SendLocalizedMessage(
1042752,
sb.ToString()
); // This body has been distrubed by ~1_PLAYER_NAMES~
); // This body has been disturbed by ~1_PLAYER_NAMES~
}
else
{

View file

@ -1,5 +1,6 @@
using System;
using System.Text;
using Microsoft.Toolkit.HighPerformance.Extensions;
using Server.Commands;
using Server.Gumps;
using Server.Network;
@ -31,43 +32,50 @@ namespace Server.Misc
return;
}
if (Insensitive.StartsWith(args.Speech, "set"))
if (args.Speech.InsensitiveStartsWith("set"))
{
var from = args.Mobile;
var split = args.Speech.Split(' ');
if (split.Length == 3)
var tokenizer = args.Speech.Tokenize(' ');
if (!tokenizer.MoveNext())
{
try
{
var name = split[1];
var value = Convert.ToDouble(split[2]);
return;
}
if (Insensitive.Equals(name, "str"))
{
ChangeStrength(from, (int)value);
}
else if (Insensitive.Equals(name, "dex"))
{
ChangeDexterity(from, (int)value);
}
else if (Insensitive.Equals(name, "int"))
{
ChangeIntelligence(from, (int)value);
}
else
{
ChangeSkill(from, name, value);
}
}
catch
var name = tokenizer.MoveNext() ? tokenizer.Current : null;
var valueStr = tokenizer.MoveNext() ? tokenizer.Current : null;
if (valueStr == null)
{
return;
}
var value = double.Parse(valueStr);
try
{
if (name.InsensitiveEquals("str"))
{
// ignored
ChangeStrength(from, (int)value);
}
else if (name.InsensitiveEquals("dex"))
{
ChangeDexterity(from, (int)value);
}
else if (name.InsensitiveEquals("int"))
{
ChangeIntelligence(from, (int)value);
}
else
{
ChangeSkill(from, name.ToString(), value);
}
}
catch
{
// ignored
}
}
else if (Insensitive.Equals(args.Speech, "help"))
else if (args.Speech.InsensitiveEquals("help"))
{
args.Mobile.SendGump(new TCHelpGump());
args.Handled = true;

View file

@ -152,7 +152,7 @@ namespace Server.Spells
public static Spell NewSpell(string name, Mobile caster, Item scroll)
{
name = name.Replace(" ", "", StringComparison.Ordinal);
name = name.RemoveOrdinal(" ");
for (var i = 0; i < m_CircleNames.Length; ++i)
{

View file

@ -29,6 +29,7 @@
<IncludeInPackage>false</IncludeInPackage>
</ProjectReference>
<PackageReference Include="MailKit" Version="2.8.0" />
<PackageReference Include="Microsoft.Toolkit.HighPerformance" Version="7.0.0-preview4" />
<PackageReference Include="Zlib.Bindings" Version="1.4.0" />
<PackageReference Include="Argon2.Bindings" Version="1.8.0" />
</ItemGroup>