From 4d62a0a38562b43f6abf176d3503fa4d7a6acfaf Mon Sep 17 00:00:00 2001 From: Marco Date: Wed, 9 Apr 2025 16:58:36 +0200 Subject: [PATCH] Globally calculated difficulty damage --- Scripts/Components/Actors/GenericDamageReceiver.cs | 8 +------- Scripts/Components/Actors/PlayerDamageReceiver.cs | 8 +------- Scripts/Components/FSM/Player/PlayerGrazingModule.cs | 10 ++-------- Scripts/Utils/SessionSettings.cs | 8 ++++++++ 4 files changed, 12 insertions(+), 22 deletions(-) diff --git a/Scripts/Components/Actors/GenericDamageReceiver.cs b/Scripts/Components/Actors/GenericDamageReceiver.cs index a43af4a9..25577029 100644 --- a/Scripts/Components/Actors/GenericDamageReceiver.cs +++ b/Scripts/Components/Actors/GenericDamageReceiver.cs @@ -70,13 +70,7 @@ public partial class GenericDamageReceiver : Area2D, IHittable if (Invulnerable) return; // Change value based on difficulty - float difficultyReducedDmg = GlobalState.Instance.SessionSettings.Difficulty switch - { - DifficultyLevel.Easy => damage * 5, - DifficultyLevel.Normal => damage * 2, - DifficultyLevel.Hard or DifficultyLevel.Lunatic => damage, - _ => damage - }; + float difficultyReducedDmg = damage * GlobalState.Instance.SessionSettings.DifficultyDamageMultiplier; var dmg = DamageResistances.Aggregate(difficultyReducedDmg, (current, resistance) => current * resistance.CalculateDamage(current, damageType)); diff --git a/Scripts/Components/Actors/PlayerDamageReceiver.cs b/Scripts/Components/Actors/PlayerDamageReceiver.cs index f60015db..770ff20a 100644 --- a/Scripts/Components/Actors/PlayerDamageReceiver.cs +++ b/Scripts/Components/Actors/PlayerDamageReceiver.cs @@ -185,13 +185,7 @@ public partial class PlayerDamageReceiver : Area2D if (!Enabled) return; // Change value based on difficulty - float difficultyReducedDmg = GlobalState.Instance.SessionSettings.Difficulty switch - { - DifficultyLevel.Easy => damage / 5, - DifficultyLevel.Normal => damage / 2, - DifficultyLevel.Hard or DifficultyLevel.Lunatic => damage, - _ => damage - }; + float difficultyReducedDmg = damage / GlobalState.Instance.SessionSettings.DifficultyDamageMultiplier; // Check if the shield is empty or damage has skip attributes if (CurrentShield <= 0 || ShieldDamageResistances.Where(x => x.DamageType == type).Any(x => x.Attribute is DamageAttribute.Skip)) diff --git a/Scripts/Components/FSM/Player/PlayerGrazingModule.cs b/Scripts/Components/FSM/Player/PlayerGrazingModule.cs index 5d251fa7..5efe0325 100644 --- a/Scripts/Components/FSM/Player/PlayerGrazingModule.cs +++ b/Scripts/Components/FSM/Player/PlayerGrazingModule.cs @@ -42,14 +42,8 @@ public partial class PlayerGrazingModule : PlayerArea2DModule bullet.Graze(); //bullet.IsGrazed = true; var baseGrazeValue = bullet.BulletInfo.GrazeValue; - - float grazeShield = GlobalState.Instance.SessionSettings.Difficulty switch - { - DifficultyLevel.Easy => baseGrazeValue * 5, - DifficultyLevel.Normal => baseGrazeValue * 2, - DifficultyLevel.Hard or DifficultyLevel.Lunatic => baseGrazeValue, - _ => baseGrazeValue - }; + + float grazeShield = baseGrazeValue * GlobalState.Instance.SessionSettings.DifficultyDamageMultiplier; Shield.CurrentResource += grazeShield; diff --git a/Scripts/Utils/SessionSettings.cs b/Scripts/Utils/SessionSettings.cs index aedfdb85..7786721c 100644 --- a/Scripts/Utils/SessionSettings.cs +++ b/Scripts/Utils/SessionSettings.cs @@ -19,6 +19,14 @@ public class SessionSettings public float Health { get; set; } public float Shield { get; set; } + public float DifficultyDamageMultiplier => this.Difficulty switch + { + DifficultyLevel.Easy => 4f, + DifficultyLevel.Normal => 2f, + DifficultyLevel.Hard or DifficultyLevel.Lunatic => 1f, + _ => 1f + }; + public void NewSession() { Items = new();