- [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
59 lines
1.8 KiB
C#
59 lines
1.8 KiB
C#
using System;
|
|
|
|
namespace Server.Misc
|
|
{
|
|
public static class RenameRequests
|
|
{
|
|
public static void Initialize()
|
|
{
|
|
EventSink.RenameRequest += EventSink_RenameRequest;
|
|
}
|
|
|
|
private static void EventSink_RenameRequest(Mobile from, Mobile targ, string name)
|
|
{
|
|
if (from.CanSee(targ) && from.InRange(targ, 12) && targ.CanBeRenamedBy(from))
|
|
{
|
|
name = name.Trim();
|
|
|
|
if (NameVerification.Validate(
|
|
name,
|
|
1,
|
|
16,
|
|
true,
|
|
false,
|
|
true,
|
|
0,
|
|
NameVerification.Empty,
|
|
NameVerification.StartDisallowed,
|
|
Core.ML ? NameVerification.Disallowed : Array.Empty<string>()
|
|
))
|
|
{
|
|
if (Core.ML)
|
|
{
|
|
var disallowed = ProfanityProtection.Disallowed;
|
|
|
|
for (var i = 0; i < disallowed.Length; i++)
|
|
{
|
|
if (name.IndexOfOrdinal(disallowed[i]) != -1)
|
|
{
|
|
from.SendLocalizedMessage(1072622); // That name isn't very polite.
|
|
return;
|
|
}
|
|
}
|
|
|
|
from.SendLocalizedMessage(
|
|
1072623,
|
|
$"{targ.Name}\t{name}"
|
|
); // Pet ~1_OLDPETNAME~ renamed to ~2_NEWPETNAME~.
|
|
}
|
|
|
|
targ.Name = name;
|
|
}
|
|
else
|
|
{
|
|
from.SendMessage("That name is unacceptable.");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|