fix: 从存档读取出来的 Skills 可能没有绑定对应的 Item.Guid

This commit is contained in:
milimoe 2024-12-06 00:26:20 +08:00
parent 1fbdae64fb
commit 1a6ed9c216
Signed by: milimoe
GPG Key ID: 05D280912DA6C69E
2 changed files with 4 additions and 1 deletions

View File

@ -592,12 +592,14 @@ namespace Milimoe.FunGame.Core.Entity
if (item.Skills.Active != null) if (item.Skills.Active != null)
{ {
item.Skills.Active.Level = copyLevel ? (Skills.Active?.Level ?? 1) : 1; item.Skills.Active.Level = copyLevel ? (Skills.Active?.Level ?? 1) : 1;
item.Skills.Active.Guid = item.Guid;
} }
foreach (Skill skill in Skills.Passives) foreach (Skill skill in Skills.Passives)
{ {
Skill newskill = skill.Copy(); Skill newskill = skill.Copy();
newskill.Item = item; newskill.Item = item;
newskill.Level = copyLevel ? skill.Level : 1; newskill.Level = copyLevel ? skill.Level : 1;
newskill.Guid = item.Guid;
item.Skills.Passives.Add(newskill); item.Skills.Passives.Add(newskill);
} }
foreach (Skill skill in Skills.Magics) foreach (Skill skill in Skills.Magics)
@ -605,6 +607,7 @@ namespace Milimoe.FunGame.Core.Entity
Skill newskill = skill.Copy(); Skill newskill = skill.Copy();
newskill.Item = item; newskill.Item = item;
newskill.Level = copyLevel ? skill.Level : 1; newskill.Level = copyLevel ? skill.Level : 1;
newskill.Guid = item.Guid;
item.Skills.Magics.Add(newskill); item.Skills.Magics.Add(newskill);
} }
} }

View File

@ -277,7 +277,7 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter
writer.WriteNumber(nameof(Character.ExCritDMG), value.ExCritDMG); writer.WriteNumber(nameof(Character.ExCritDMG), value.ExCritDMG);
writer.WriteNumber(nameof(Character.ExEvadeRate), value.ExEvadeRate); writer.WriteNumber(nameof(Character.ExEvadeRate), value.ExEvadeRate);
writer.WritePropertyName(nameof(Character.Skills)); writer.WritePropertyName(nameof(Character.Skills));
JsonSerializer.Serialize(writer, value.Skills, options); JsonSerializer.Serialize(writer, value.Skills.Where(s => s.Guid == Guid.Empty), options);
writer.WritePropertyName(nameof(Character.Items)); writer.WritePropertyName(nameof(Character.Items));
JsonSerializer.Serialize(writer, value.Items, options); JsonSerializer.Serialize(writer, value.Items, options);
writer.WriteEndObject(); writer.WriteEndObject();