From 5567ef2d41367733589295e9b8c66f48c4490547 Mon Sep 17 00:00:00 2001 From: hanqin Date: Tue, 5 May 2026 14:26:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=80=E4=B8=AA=E6=9A=B4?= =?UTF-8?q?=E5=87=BB=E4=BC=A4=E5=AE=B3=E7=9A=84=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Build_God_Api/Build_God_Api/DB/Equipment.cs | 2 +- .../CharacterAttributeCalculateService.cs | 21 ++++++++++++++----- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/Build_God_Api/Build_God_Api/DB/Equipment.cs b/Build_God_Api/Build_God_Api/DB/Equipment.cs index c68b22f..5084cef 100644 --- a/Build_God_Api/Build_God_Api/DB/Equipment.cs +++ b/Build_God_Api/Build_God_Api/DB/Equipment.cs @@ -116,7 +116,7 @@ namespace Build_God_Api.DB /// public int RequirdLevelId { get; set; } -/// + /// /// 套装ID /// [SugarColumn(IsNullable = true)] diff --git a/Build_God_Api/Build_God_Api/Services/Game/CharacterAttributeCalculateService.cs b/Build_God_Api/Build_God_Api/Services/Game/CharacterAttributeCalculateService.cs index 08e54e2..174e87d 100644 --- a/Build_God_Api/Build_God_Api/Services/Game/CharacterAttributeCalculateService.cs +++ b/Build_God_Api/Build_God_Api/Services/Game/CharacterAttributeCalculateService.cs @@ -29,6 +29,8 @@ namespace Build_God_Api.Services.Game public decimal CriticalRate { get; set; } public decimal BaseCriticalRate { get; set; } public decimal BonusCriticalRate { get; set; } + public decimal BaseCriticalDamage { get; set; } + public decimal BonusCriticalDamage { get; set; } } public class CharacterAttributeCalculateService(ISqlSugarClient context): ICharacterAttributeCalculateService @@ -77,7 +79,7 @@ namespace Build_God_Api.Services.Game return (attackBonus, defendBonus, hpBonus); } - private async Task<(decimal AttackBonus, decimal DefendBonus, decimal HPBonus, decimal CriticalBonus)> CalculateEquipmentBonusAsync(int characterBagId) + private async Task<(decimal AttackBonus, decimal DefendBonus, decimal HPBonus, decimal CriticalBonus, decimal CriticalDamageBonus)> CalculateEquipmentBonusAsync(int characterBagId) { var equipmentInstances = await _context.Queryable() .Where(x => x.CharacterBagId == characterBagId) @@ -87,6 +89,7 @@ namespace Build_God_Api.Services.Game decimal defendBonus = 0; decimal hpBonus = 0; decimal criticalBonus = 0; + decimal criticalDamage = 0; foreach (var instance in equipmentInstances) { @@ -117,9 +120,12 @@ namespace Build_God_Api.Services.Game break; case EquipmentAttributeType.HealthBonusPercent: break; - case EquipmentAttributeType.CriticalPercent: + case EquipmentAttributeType.CriticalRate: criticalBonus += attr.Value; break; + case EquipmentAttributeType.CriticalDamage: + criticalDamage += attr.Value; + break; } } } @@ -129,7 +135,7 @@ namespace Build_God_Api.Services.Game } } - return (attackBonus, defendBonus, hpBonus, criticalBonus); + return (attackBonus, defendBonus, hpBonus, criticalBonus, criticalDamage); } public async Task CalculateAttributesAsync(Character character) @@ -144,22 +150,25 @@ namespace Build_God_Api.Services.Game decimal baseAttack = CalculateAttack(character, profession); decimal baseDefend = CalculateDefend(character, profession); decimal baseCritical = 0; + decimal baseCriticalDamage = 0; decimal bonusAttack = 0; decimal bonusDefend = 0; decimal bonusHP = 0; decimal bonusCritical = 0; + decimal bonusCriticalDamage = 0; var characterBag = await _context.Queryable().FirstAsync(x => x.CharacterId == character.Id); if (characterBag != null) { var (scrapAttack, scrapDefend, scrapHP) = await CalculateScrapBonusAsync(characterBag.Id); - var (equipAttack, equipDefend, equipHP, equipCritical) = await CalculateEquipmentBonusAsync(characterBag.Id); + var (equipAttack, equipDefend, equipHP, equipCritical,equipmentCriticalDamage) = await CalculateEquipmentBonusAsync(characterBag.Id); bonusAttack = scrapAttack + equipAttack; bonusDefend = scrapDefend + equipDefend; bonusHP = scrapHP + equipHP; bonusCritical = equipCritical; + bonusCriticalDamage = equipmentCriticalDamage; } return new CharacterAttributes @@ -176,7 +185,9 @@ namespace Build_God_Api.Services.Game BonusDefend = bonusDefend, CriticalRate = baseCritical + bonusCritical, BaseCriticalRate = baseCritical, - BonusCriticalRate = bonusCritical + BonusCriticalRate = bonusCritical, + BaseCriticalDamage = baseCriticalDamage, + BonusCriticalDamage = bonusCriticalDamage }; }