diff --git a/Entity/Character/CharacterBuilder.cs b/Entity/Character/CharacterBuilder.cs
index b3a3760..9594063 100644
--- a/Entity/Character/CharacterBuilder.cs
+++ b/Entity/Character/CharacterBuilder.cs
@@ -237,7 +237,7 @@ namespace Milimoe.FunGame.Core.Entity
///
///
///
- ///
+ /// 高危数据警告:传入此项会修改库存中物品的角色引用
/// 对于动态扩展的物品而言,传入已定义的物品表,不使用被复制物品的数据
/// 对于动态扩展的技能而言,传入已定义的技能表,不使用被复制技能的数据
///
diff --git a/Entity/Item/Item.cs b/Entity/Item/Item.cs
index ac24fe3..6b8148d 100644
--- a/Entity/Item/Item.cs
+++ b/Entity/Item/Item.cs
@@ -435,7 +435,7 @@ namespace Milimoe.FunGame.Core.Entity
{
StringBuilder builder = new();
- builder.AppendLine($"【{Name}】");
+ builder.AppendLine($"【{Name}】{(IsLock ? " [锁定]" : "")}");
string itemquality = ItemSet.GetQualityTypeName(QualityType);
string itemtype = ItemSet.GetItemTypeName(ItemType) + (ItemType == ItemType.Weapon && WeaponType != WeaponType.None ? "-" + ItemSet.GetWeaponTypeName(WeaponType) : "");
@@ -568,6 +568,11 @@ namespace Milimoe.FunGame.Core.Entity
sellandtrade.Add("不可交易");
}
+ if (IsLock)
+ {
+ builder.AppendLine("此物品已锁定");
+ }
+
if (sellandtrade.Count > 0) builder.AppendLine(string.Join(" ", sellandtrade).Trim());
if (Description != "") builder.AppendLine($"{Description}");
if (IsEquipment && Character != null) builder.AppendLine($"装备于:{Character.ToStringWithLevelWithOutUser()}");
diff --git a/Library/Common/JsonConverter/ItemConverter.cs b/Library/Common/JsonConverter/ItemConverter.cs
index aa94c3c..513f2b8 100644
--- a/Library/Common/JsonConverter/ItemConverter.cs
+++ b/Library/Common/JsonConverter/ItemConverter.cs
@@ -56,6 +56,9 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter
case nameof(Item.IsInGameItem):
result.IsInGameItem = reader.GetBoolean();
break;
+ case nameof(Item.IsLock):
+ result.IsLock = reader.GetBoolean();
+ break;
case nameof(Item.Equipable):
result.Equipable = reader.GetBoolean();
break;
@@ -133,6 +136,7 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter
writer.WriteNumber(nameof(Item.RarityType), (int)value.RarityType);
writer.WriteNumber(nameof(Item.RankType), (int)value.RankType);
writer.WriteBoolean(nameof(Item.IsInGameItem), value.IsInGameItem);
+ writer.WriteBoolean(nameof(Item.IsLock), value.IsLock);
writer.WriteBoolean(nameof(Item.Equipable), value.Equipable);
writer.WriteBoolean(nameof(Item.Unequipable), value.Unequipable);
writer.WriteNumber(nameof(Item.RemainUseTimes), value.RemainUseTimes);