Globally calculated difficulty damage

This commit is contained in:
Marco 2025-04-09 16:58:36 +02:00
commit 4d62a0a385
4 changed files with 12 additions and 22 deletions

View file

@ -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));

View file

@ -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))

View file

@ -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;

View file

@ -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();