Give command improvements

This commit is contained in:
Chomp
2025-02-03 10:51:14 +00:00
parent f96d51a654
commit d6c59655d2
2 changed files with 15 additions and 12 deletions
@@ -134,13 +134,12 @@ public class GiveSptCommand(
.Select(
i => new
{
Match = StringSimilarity.Match(item.ToLower(), i.ToLower()),
Match = StringSimilarity.Match(item, i, 2, true),
ItemName = i
}
).ToList();
closestItemsMatchedByName.Sort((a1, a2) => (int)a2.Match - (int)a1.Match); // We need to find a similar system to string-similarity-js
closestItemsMatchedByName.Sort((a1, a2) => a2.Match.CompareTo(a1.Match));
if (closestItemsMatchedByName[0].Match >= _acceptableConfidence) {
item = closestItemsMatchedByName[0].ItemName;
@@ -149,7 +148,7 @@ public class GiveSptCommand(
var slicedItems = closestItemsMatchedByName.Slice(0, 10);
// max 10 item names and map them
var itemList = slicedItems
.Select(match => $"{i++}. {match.ItemName} (conf: ${Math.Round(match.Match * 100), 2})");
.Select(match => $"{i++}. {match.ItemName} (conf: {Math.Round(match.Match * 100d), 2})");
_savedCommand.Add(
sessionId,
new SavedCommand(
@@ -159,7 +158,7 @@ public class GiveSptCommand(
_mailSendService.SendUserMessageToPlayer(
sessionId,
commandHandler,
$"Could not find exact match. Closest matches are:\n\n{itemList}\n\nUse 'spt give [number]' to select one.");
$"Could not find exact match. Closest are:\n{string.Join("\n", itemList)}\n\nUse 'spt give [above number]' to select one.");
return request.DialogId;
}
@@ -172,7 +171,7 @@ public class GiveSptCommand(
var tplId = isItemName
? _itemHelper
.GetItems()
.Where(i => IsItemAllowed(i))
.Where(IsItemAllowed)
.FirstOrDefault(i => (localizedGlobal[$"{i?.Id} Name"]?.ToLower() ?? i.Properties.Name) == item).Id
: item;
@@ -258,7 +257,8 @@ public class GiveSptCommand(
templateItem.Id,
[
BaseClasses.HIDEOUT_AREA_CONTAINER, BaseClasses.LOOT_CONTAINER,
BaseClasses.RANDOM_LOOT_CONTAINER, BaseClasses.MOB_CONTAINER
BaseClasses.RANDOM_LOOT_CONTAINER, BaseClasses.MOB_CONTAINER,
BaseClasses.BUILT_IN_INSERTS
]
);
}
@@ -1,4 +1,6 @@
namespace Core.Helpers.Dialogue.Commando.SptCommands.GiveCommand;
using static System.Runtime.InteropServices.JavaScript.JSType;
namespace Core.Helpers.Dialogue.Commando.SptCommands.GiveCommand;
public static class StringSimilarity
{
@@ -25,13 +27,14 @@ public static class StringSimilarity
for (var j = 0; j < str2.Length - (substringLength - 1); j++) {
var substr2 = str2.Substring(j, substringLength);
var count = map.GetValueOrDefault(substr2, 0);
if (count > 0) {
map.Add(substr2, count - 1);
if (count > 0)
{
map[substr2] = count - 1;
match++;
}
}
return match * 2D / (str1.Length + str2.Length - ((substringLength - 1D) * 2D));
return match * 2d / (str1.Length + str2.Length - ((substringLength - 1d) * 2d));
}
}