构建角色添加是否回复状态的选项;修复加速系数公式错误;修改小队数组为 ID 数组

This commit is contained in:
milimoe 2024-12-28 21:09:48 +08:00
parent 93eeb195bb
commit 3b78270112
Signed by: milimoe
GPG Key ID: 05D280912DA6C69E
6 changed files with 25 additions and 15 deletions

View File

@ -699,7 +699,7 @@ namespace Milimoe.FunGame.Core.Entity
{ {
get get
{ {
double value = INT * General.GameplayEquilibriumConstant.INTtoAccelerationCoefficientMultiplier + ExActionCoefficient; double value = INT * General.GameplayEquilibriumConstant.INTtoAccelerationCoefficientMultiplier + ExAccelerationCoefficient;
return Calculation.PercentageCheck(value); return Calculation.PercentageCheck(value);
} }
} }
@ -1509,7 +1509,7 @@ namespace Milimoe.FunGame.Core.Entity
if (Effects.Where(e => e.EffectType != EffectType.Item).Any()) if (Effects.Where(e => e.EffectType != EffectType.Item).Any())
{ {
builder.AppendLine("== 状态栏 =="); builder.AppendLine("== 状态栏 ==");
builder.Append(string.Join("", Effects.Select(e => e.Name))); builder.Append(string.Join("", Effects.Where(e => e.EffectType != EffectType.Item).Select(e => e.Name)));
} }
return builder.ToString(); return builder.ToString();
@ -1551,7 +1551,7 @@ namespace Milimoe.FunGame.Core.Entity
builder.AppendLine($"硬直时间:{hardnessTimes:0.##}"); builder.AppendLine($"硬直时间:{hardnessTimes:0.##}");
if (Effects.Count > 0) if (Effects.Where(e => e.EffectType != EffectType.Item).Any())
{ {
builder.AppendLine("== 状态栏 =="); builder.AppendLine("== 状态栏 ==");
foreach (Effect effect in Effects.Where(e => e.EffectType != EffectType.Item)) foreach (Effect effect in Effects.Where(e => e.EffectType != EffectType.Item))
@ -1583,10 +1583,10 @@ namespace Milimoe.FunGame.Core.Entity
builder.AppendLine($"核心属性:{PrimaryAttributeValue:0.##}" + (ExPrimaryAttributeValue != 0 ? $" [{BasePrimaryAttributeValue:0.##} {(ExPrimaryAttributeValue >= 0 ? "+" : "-")} {Math.Abs(ExPrimaryAttributeValue):0.##}]" : "")); builder.AppendLine($"核心属性:{PrimaryAttributeValue:0.##}" + (ExPrimaryAttributeValue != 0 ? $" [{BasePrimaryAttributeValue:0.##} {(ExPrimaryAttributeValue >= 0 ? "+" : "-")} {Math.Abs(ExPrimaryAttributeValue):0.##}]" : ""));
builder.AppendLine($"硬直时间:{hardnessTimes:0.##}"); builder.AppendLine($"硬直时间:{hardnessTimes:0.##}");
if (Effects.Count > 0) if (Effects.Where(e => e.EffectType != EffectType.Item).Any())
{ {
builder.AppendLine("== 状态栏 =="); builder.AppendLine("== 状态栏 ==");
builder.Append(string.Join("", Effects.Select(e => e.Name))); builder.Append(string.Join("", Effects.Where(e => e.EffectType != EffectType.Item).Select(e => e.Name)));
} }
return builder.ToString(); return builder.ToString();

View File

@ -104,8 +104,9 @@ namespace Milimoe.FunGame.Core.Entity
/// <param name="inventory"></param> /// <param name="inventory"></param>
/// <param name="itemsDefined"></param> /// <param name="itemsDefined"></param>
/// <param name="skillsDefined"></param> /// <param name="skillsDefined"></param>
/// <param name="recovery"></param>
/// <returns>构建的新角色</returns> /// <returns>构建的新角色</returns>
public Character Build(IEnumerable<Skill> skills, IEnumerable<Item> items, bool newItemGuid = true, EquipSlot? equips = null, Inventory? inventory = null, IEnumerable<Item>? itemsDefined = null, IEnumerable<Skill>? skillsDefined = null) public Character Build(IEnumerable<Skill> skills, IEnumerable<Item> items, bool newItemGuid = true, EquipSlot? equips = null, Inventory? inventory = null, IEnumerable<Item>? itemsDefined = null, IEnumerable<Skill>? skillsDefined = null, bool recovery = true)
{ {
Character character = Factory.GetCharacter(); Character character = Factory.GetCharacter();
character.Id = Id; character.Id = Id;
@ -226,7 +227,7 @@ namespace Milimoe.FunGame.Core.Entity
} }
} }
} }
character.Recovery(); if (recovery) character.Recovery();
return character; return character;
} }
@ -240,10 +241,11 @@ namespace Milimoe.FunGame.Core.Entity
/// <param name="inventory"></param> /// <param name="inventory"></param>
/// <param name="itemsDefined">对于动态扩展的物品而言,传入已定义的物品表,不使用被复制物品的数据</param> /// <param name="itemsDefined">对于动态扩展的物品而言,传入已定义的物品表,不使用被复制物品的数据</param>
/// <param name="skillsDefined">对于动态扩展的技能而言,传入已定义的技能表,不使用被复制技能的数据</param> /// <param name="skillsDefined">对于动态扩展的技能而言,传入已定义的技能表,不使用被复制技能的数据</param>
/// <param name="recovery"></param>
/// <returns>构建的新角色</returns> /// <returns>构建的新角色</returns>
public static Character Build(Character reference, bool newItemGuid = true, bool copyLevel = true, Inventory? inventory = null, IEnumerable<Item>? itemsDefined = null, IEnumerable<Skill>? skillsDefined = null) public static Character Build(Character reference, bool newItemGuid = true, bool copyLevel = true, Inventory? inventory = null, IEnumerable<Item>? itemsDefined = null, IEnumerable<Skill>? skillsDefined = null, bool recovery = true)
{ {
Character character = new CharacterBuilder(reference).Build(reference.Skills, reference.Items, newItemGuid, reference.EquipSlot, inventory, itemsDefined, skillsDefined); Character character = new CharacterBuilder(reference).Build(reference.Skills, reference.Items, newItemGuid, reference.EquipSlot, inventory, itemsDefined, skillsDefined, recovery);
if (copyLevel) if (copyLevel)
{ {
character.Level = reference.Level; character.Level = reference.Level;

View File

@ -68,7 +68,7 @@ namespace Milimoe.FunGame.Core.Entity
/// <summary> /// <summary>
/// 小队 /// 小队
/// </summary> /// </summary>
public HashSet<Character> Squad { get; set; } = []; public HashSet<long> Squad { get; set; } = [];
/// <summary> /// <summary>
/// 练级中的角色 /// 练级中的角色

View File

@ -86,6 +86,12 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter
case nameof(Character.ExMPPercentage): case nameof(Character.ExMPPercentage):
result.ExMPPercentage = reader.GetDouble(); result.ExMPPercentage = reader.GetDouble();
break; break;
case nameof(Character.HP):
result.HP = reader.GetDouble();
break;
case nameof(Character.MP):
result.MP = reader.GetDouble();
break;
case nameof(Character.EP): case nameof(Character.EP):
result.EP = reader.GetDouble(); result.EP = reader.GetDouble();
break; break;
@ -249,6 +255,8 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter
writer.WriteNumber(nameof(Character.InitialMP), value.InitialMP); writer.WriteNumber(nameof(Character.InitialMP), value.InitialMP);
writer.WriteNumber(nameof(Character.ExMP2), value.ExMP2); writer.WriteNumber(nameof(Character.ExMP2), value.ExMP2);
writer.WriteNumber(nameof(Character.ExMPPercentage), value.ExMPPercentage); writer.WriteNumber(nameof(Character.ExMPPercentage), value.ExMPPercentage);
writer.WriteNumber(nameof(Character.HP), value.HP);
writer.WriteNumber(nameof(Character.MP), value.MP);
writer.WriteNumber(nameof(Character.EP), value.EP); writer.WriteNumber(nameof(Character.EP), value.EP);
writer.WriteNumber(nameof(Character.InitialATK), value.InitialATK); writer.WriteNumber(nameof(Character.InitialATK), value.InitialATK);
writer.WriteNumber(nameof(Character.ExATK2), value.ExATK2); writer.WriteNumber(nameof(Character.ExATK2), value.ExATK2);

View File

@ -47,10 +47,10 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter
} }
break; break;
case nameof(Inventory.Squad): case nameof(Inventory.Squad):
HashSet<Character> squad = NetworkUtility.JsonDeserialize<HashSet<Character>>(ref reader, options) ?? []; HashSet<long> squad = NetworkUtility.JsonDeserialize<HashSet<long>>(ref reader, options) ?? [];
foreach (Character character in squad) foreach (long cid in squad)
{ {
result.Squad.Add(character); result.Squad.Add(cid);
} }
break; break;
case nameof(Inventory.Training): case nameof(Inventory.Training):

View File

@ -76,9 +76,9 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter
result.Inventory.Items.Add(item); result.Inventory.Items.Add(item);
} }
result.Inventory.MainCharacter = inventory.MainCharacter; result.Inventory.MainCharacter = inventory.MainCharacter;
foreach (Character character in inventory.Squad) foreach (long cid in inventory.Squad)
{ {
result.Inventory.Squad.Add(character); result.Inventory.Squad.Add(cid);
} }
foreach (long cid in inventory.Training.Keys) foreach (long cid in inventory.Training.Keys)
{ {