From 1fbdae64fb70520590685db99e418ad69b9f5055 Mon Sep 17 00:00:00 2001 From: milimoe Date: Thu, 5 Dec 2024 01:24:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=94=BB=E5=87=BB=E5=8A=9B?= =?UTF-8?q?=E3=80=81=E6=8A=A4=E7=94=B2=E3=80=81=E4=B8=89=E5=9B=B4=E7=9A=84?= =?UTF-8?q?=E7=99=BE=E5=88=86=E6=AF=94=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Entity/Character/Character.cs | 72 ++++++++++++++++--- .../JsonConverter/CharacterConverter.cs | 24 ++++++- 2 files changed, 83 insertions(+), 13 deletions(-) diff --git a/Entity/Character/Character.cs b/Entity/Character/Character.cs index 89ec436..81e6a70 100644 --- a/Entity/Character/Character.cs +++ b/Entity/Character/Character.cs @@ -236,7 +236,7 @@ namespace Milimoe.FunGame.Core.Entity public double ExMP2 { get; set; } = 0; /// - /// 额外魔法值2 [ 额外魔法值% ] + /// 额外魔法值3 [ 额外魔法值% ] /// public double ExMP3 => (BaseMP + ExMP + ExMP2) * ExMPPercentage; @@ -339,11 +339,21 @@ namespace Milimoe.FunGame.Core.Entity /// 额外攻击力2 [ 与技能和物品相关 ] /// public double ExATK2 { get; set; } = 0; + + /// + /// 额外攻击力3 [ 额外攻击力% ] + /// + public double ExATK3 => (BaseATK + ExATK + ExATK2) * ExATKPercentage; /// - /// 攻击力 = 基础攻击力 + 额外攻击力 + 额外攻击力2 + /// 额外攻击力% [ 与技能和物品相关 ] /// - public double ATK => BaseATK + ExATK + ExATK2; + public double ExATKPercentage { get; set; } = 0; + + /// + /// 攻击力 = 基础攻击力 + 额外攻击力 + 额外攻击力2 + 额外攻击力3 + /// + public double ATK => BaseATK + ExATK + ExATK2 + ExATK3; /// /// 初始物理护甲 [ 初始设定 ] @@ -367,9 +377,19 @@ namespace Milimoe.FunGame.Core.Entity public double ExDEF2 { get; set; } = 0; /// - /// 物理护甲 = 基础物理护甲 + 额外物理护甲 + 额外物理护甲2 + /// 额外物理护甲3 [ 额外物理护甲% ] /// - public double DEF => BaseDEF + ExDEF + ExDEF2; + public double ExDEF3 => (BaseDEF + ExDEF + ExDEF2) * ExDEFPercentage; + + /// + /// 额外物理护甲% [ 与技能和物品相关 ] + /// + public double ExDEFPercentage { get; set; } = 0; + + /// + /// 物理护甲 = 基础物理护甲 + 额外物理护甲 + 额外物理护甲2 + 额外物理护甲3 + /// + public double DEF => BaseDEF + ExDEF + ExDEF2 + ExDEF3; /// /// 物理伤害减免(%) = [ 与物理护甲相关 ] + 额外物理伤害减免(%) @@ -575,19 +595,49 @@ namespace Milimoe.FunGame.Core.Entity public double ExINT { get; set; } = 0; /// - /// 力量 = 基础力量 + 额外力量 + /// 额外力量2 [ 额外力量% ] /// - public double STR => BaseSTR + ExSTR; + public double ExSTR2 => (BaseSTR + ExSTR) * ExSTRPercentage; /// - /// 敏捷 = 基础敏捷 + 额外敏捷 + /// 额外敏捷2 [ 额外敏捷% ] /// - public double AGI => BaseAGI + ExAGI; + public double ExAGI2 => (BaseAGI + ExAGI) * ExAGIPercentage; /// - /// 智力 = 基础智力 + 额外智力 + /// 额外智力2 [ 额外智力% ] /// - public double INT => BaseINT + ExINT; + public double ExINT2 => (BaseINT + ExINT) * ExINTPercentage; + + /// + /// 额外力量% [ 与技能和物品相关 ] + /// + public double ExSTRPercentage { get; set; } = 0; + + /// + /// 额外敏捷% [ 与技能和物品相关 ] + /// + public double ExAGIPercentage { get; set; } = 0; + + /// + /// 额外智力% [ 与技能和物品相关 ] + /// + public double ExINTPercentage { get; set; } = 0; + + /// + /// 力量 = 基础力量 + 额外力量 + 额外力量2 + /// + public double STR => BaseSTR + ExSTR + ExSTR2; + + /// + /// 敏捷 = 基础敏捷 + 额外敏捷 + 额外敏捷2 + /// + public double AGI => BaseAGI + ExAGI + ExAGI2; + + /// + /// 智力 = 基础智力 + 额外智力 + 额外智力2 + /// + public double INT => BaseINT + ExINT + ExINT2; /// /// 力量成长值(+BaseSTR/Lv) diff --git a/Library/Common/JsonConverter/CharacterConverter.cs b/Library/Common/JsonConverter/CharacterConverter.cs index 995ad0a..752bcb8 100644 --- a/Library/Common/JsonConverter/CharacterConverter.cs +++ b/Library/Common/JsonConverter/CharacterConverter.cs @@ -89,15 +89,21 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter case nameof(Character.InitialATK): result.InitialATK = reader.GetDouble(); break; - case nameof(Character.ExATK): + case nameof(Character.ExATK2): result.ExATK2 = reader.GetDouble(); break; + case nameof(Character.ExATKPercentage): + result.ExATKPercentage = reader.GetDouble(); + break; case nameof(Character.InitialDEF): result.InitialDEF = reader.GetDouble(); break; - case nameof(Character.ExDEF): + case nameof(Character.ExDEF2): result.ExDEF2 = reader.GetDouble(); break; + case nameof(Character.ExDEFPercentage): + result.ExDEFPercentage = reader.GetDouble(); + break; case nameof(Character.MDF): result.MDF = NetworkUtility.JsonDeserialize(ref reader, options) ?? new(); break; @@ -143,6 +149,15 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter case nameof(Character.ExINT): result.ExINT = reader.GetDouble(); break; + case nameof(Character.ExSTRPercentage): + result.ExSTRPercentage = reader.GetDouble(); + break; + case nameof(Character.ExAGIPercentage): + result.ExAGIPercentage = reader.GetDouble(); + break; + case nameof(Character.ExINTPercentage): + result.ExINTPercentage = reader.GetDouble(); + break; case nameof(Character.STRGrowth): result.STRGrowth = reader.GetDouble(); break; @@ -227,8 +242,10 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter writer.WriteNumber(nameof(Character.EP), value.EP); writer.WriteNumber(nameof(Character.InitialATK), value.InitialATK); writer.WriteNumber(nameof(Character.ExATK2), value.ExATK2); + writer.WriteNumber(nameof(Character.ExATKPercentage), value.ExATKPercentage); writer.WriteNumber(nameof(Character.InitialDEF), value.InitialDEF); writer.WriteNumber(nameof(Character.ExDEF2), value.ExDEF2); + writer.WriteNumber(nameof(Character.ExDEFPercentage), value.ExDEFPercentage); writer.WritePropertyName(nameof(Character.MDF)); JsonSerializer.Serialize(writer, value.MDF, options); writer.WriteNumber(nameof(Character.PhysicalPenetration), value.PhysicalPenetration); @@ -244,6 +261,9 @@ namespace Milimoe.FunGame.Core.Library.Common.JsonConverter writer.WriteNumber(nameof(Character.ExSTR), value.ExSTR); writer.WriteNumber(nameof(Character.ExAGI), value.ExAGI); writer.WriteNumber(nameof(Character.ExINT), value.ExINT); + writer.WriteNumber(nameof(Character.ExSTRPercentage), value.ExSTRPercentage); + writer.WriteNumber(nameof(Character.ExAGIPercentage), value.ExAGIPercentage); + writer.WriteNumber(nameof(Character.ExINTPercentage), value.ExINTPercentage); writer.WriteNumber(nameof(Character.STRGrowth), value.STRGrowth); writer.WriteNumber(nameof(Character.AGIGrowth), value.AGIGrowth); writer.WriteNumber(nameof(Character.INTGrowth), value.INTGrowth);