Fix villager replace dereference & clipboard error

Closes #722
This commit is contained in:
Kurt
2026-01-27 20:15:16 -06:00
parent 1e32df00db
commit d4df2c6c59
3 changed files with 7 additions and 5 deletions

View File

@@ -1,5 +1,6 @@
using System;
using System.Diagnostics;
using System.Linq;
using NHSE.Core;
using static NHSE.Villagers.Properties.Resources;
@@ -35,6 +36,6 @@ public static VillagerData GetVillager(string villagerName)
Debug.Assert(bv.Length == Villager2.SIZE);
Debug.Assert(bh.Length == VillagerHouse2.SIZE);
return new VillagerData(bv, bh);
return new VillagerData(bv.ToArray(), bh.ToArray());
}
}

View File

@@ -14,8 +14,8 @@ private static VillagerData AdaptVillager(VillagerInfo exist, VillagerData repla
{
var ov = exist.Villager;
var oh = exist.House;
var nv = new Villager2(replace.Villager.ToArray());
_ = new VillagerHouse1(replace.House.ToArray()) {NPC1 = oh.NPC1, NPC2 = oh.NPC2, BuildPlayer = oh.BuildPlayer};
var nv = new Villager2(replace.Villager);
_ = new VillagerHouse1(replace.House) {NPC1 = oh.NPC1, NPC2 = oh.NPC2, BuildPlayer = oh.BuildPlayer};
// Copy Memories
var om = nv.GetMemory(0);

View File

@@ -286,13 +286,14 @@ private void B_ReplaceVillager_Click(object sender, EventArgs e)
return;
}
var internalName = Clipboard.GetText();
var internalName = Clipboard.GetText().Trim();
if (!VillagerResources.IsVillagerDataKnown(internalName))
{
var clip = internalName;
internalName = GameInfo.Strings.VillagerMap.FirstOrDefault(z => string.Equals(z.Value, internalName, StringComparison.InvariantCultureIgnoreCase)).Key;
if (internalName is null)
{
WinFormsUtil.Error(string.Format(MessageStrings.MsgVillagerReplaceUnknownName, internalName));
WinFormsUtil.Error(string.Format(MessageStrings.MsgVillagerReplaceUnknownName, clip));
return;
}
}