From 16f872c93638859897b5a118042c31c8405eb532 Mon Sep 17 00:00:00 2001 From: LP Date: Wed, 23 Apr 2025 19:56:46 +0100 Subject: [PATCH] Adding regen rate in as standard --- .../Extensions/EntityStatVariableExtensions.cs | 5 ++++- .../Stats/Populators/Partial/FantasyVitalsStatPopulator.cs | 4 ++++ src/OpenRpg.Genres.Fantasy/Types/FantasyEffectTypes.cs | 3 ++- .../Types/FantasyEntityStatsVariableTypes.cs | 2 ++ .../Extensions/EntityStatVariableExtensions.cs | 6 +++++- src/OpenRpg.Genres/Types/GenreEffectTypes.cs | 5 +++++ src/OpenRpg.Genres/Types/GenreEntityStatsVariableTypes.cs | 2 ++ 7 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/OpenRpg.Genres.Fantasy/Extensions/EntityStatVariableExtensions.cs b/src/OpenRpg.Genres.Fantasy/Extensions/EntityStatVariableExtensions.cs index ea80692..8aae215 100644 --- a/src/OpenRpg.Genres.Fantasy/Extensions/EntityStatVariableExtensions.cs +++ b/src/OpenRpg.Genres.Fantasy/Extensions/EntityStatVariableExtensions.cs @@ -1,3 +1,4 @@ +using System.Collections.Generic; using OpenRpg.Entities.Stats.Variables; using OpenRpg.Genres.Fantasy.Types; @@ -23,7 +24,9 @@ public static class EntityStatVariableExtensions public static void ManaRegen(this EntityStatsVariables stats, float value) => stats[FantasyEntityStatsVariableTypes.ManaRegen] = value; public static float ManaRegen(this EntityStatsVariables stats) => stats.Get(FantasyEntityStatsVariableTypes.ManaRegen); - + public static float ManaRegenRate(this EntityStatsVariables stats) => stats.Get(FantasyEntityStatsVariableTypes.ManaRegenRate); + public static void ManaRegenRate(this EntityStatsVariables stats, float regenRate) => stats[FantasyEntityStatsVariableTypes.ManaRegenRate] = regenRate; + public static float IceDamage(this EntityStatsVariables stats) => stats.Get(FantasyEntityStatsVariableTypes.IceDamage); public static float FireDamage(this EntityStatsVariables stats) => stats.Get(FantasyEntityStatsVariableTypes.FireDamage); public static float WindDamage(this EntityStatsVariables stats) => stats.Get(FantasyEntityStatsVariableTypes.WindDamage); diff --git a/src/OpenRpg.Genres.Fantasy/Stats/Populators/Partial/FantasyVitalsStatPopulator.cs b/src/OpenRpg.Genres.Fantasy/Stats/Populators/Partial/FantasyVitalsStatPopulator.cs index 4d6d688..ed86499 100644 --- a/src/OpenRpg.Genres.Fantasy/Stats/Populators/Partial/FantasyVitalsStatPopulator.cs +++ b/src/OpenRpg.Genres.Fantasy/Stats/Populators/Partial/FantasyVitalsStatPopulator.cs @@ -31,6 +31,10 @@ public void Populate(EntityStatsVariables stats, ComputedEffects computedEffects stats.ManaRegen(computedEffects.CalculateTotalValueFor(FantasyEffectTypes.ManaRegenBonusAmount, FantasyEffectTypes.ManaRegenBonusPercentage)); stats.StaminaRegen(computedEffects.CalculateTotalValueFor(FantasyEffectTypes.StaminaRegenBonusAmount, FantasyEffectTypes.StaminaRegenBonusPercentage)); + stats.HealthRegenRate(computedEffects.CalculateTotalValueFor(FantasyEffectTypes.HealthRegenRateBonusAmount, FantasyEffectTypes.HealthRegenRateBonusPercentage)); + stats.ManaRegenRate(computedEffects.CalculateTotalValueFor(FantasyEffectTypes.ManaRegenRateBonusAmount, FantasyEffectTypes.ManaRegenRateBonusPercentage)); + stats.StaminaRegenRate(computedEffects.CalculateTotalValueFor(FantasyEffectTypes.StaminaRegenRateBonusAmount, FantasyEffectTypes.StaminaRegenRateBonusPercentage)); + stats.MovementSpeed(computedEffects.CalculateTotalValueFor(FantasyEffectTypes.MovementSpeedBonusAmount, FantasyEffectTypes.MovementSpeedBonusPercentage)); } } diff --git a/src/OpenRpg.Genres.Fantasy/Types/FantasyEffectTypes.cs b/src/OpenRpg.Genres.Fantasy/Types/FantasyEffectTypes.cs index 4b39680..2949600 100644 --- a/src/OpenRpg.Genres.Fantasy/Types/FantasyEffectTypes.cs +++ b/src/OpenRpg.Genres.Fantasy/Types/FantasyEffectTypes.cs @@ -31,7 +31,8 @@ public interface FantasyEffectTypes : Genres.Types.GenreEffectTypes public static readonly int ManaBonusPercentage = 235; public static readonly int ManaRestoreAmount = 236; public static readonly int ManaRestorePercentage = 237; - + public static readonly int ManaRegenRateBonusAmount = 238; + public static readonly int ManaRegenRateBonusPercentage = 239; // Melee Damage (Damage Types) public static readonly int SlashingDamageAmount = 260; diff --git a/src/OpenRpg.Genres.Fantasy/Types/FantasyEntityStatsVariableTypes.cs b/src/OpenRpg.Genres.Fantasy/Types/FantasyEntityStatsVariableTypes.cs index b00e471..15e765d 100644 --- a/src/OpenRpg.Genres.Fantasy/Types/FantasyEntityStatsVariableTypes.cs +++ b/src/OpenRpg.Genres.Fantasy/Types/FantasyEntityStatsVariableTypes.cs @@ -2,8 +2,10 @@ namespace OpenRpg.Genres.Fantasy.Types { public interface FantasyEntityStatsVariableTypes : Genres.Types.GenreEntityStatsVariableTypes { + // Mana stats public static readonly int MaxMana = 50; public static readonly int ManaRegen = 51; + public static readonly int ManaRegenRate = 52; // Base stats public static readonly int Strength = 60; diff --git a/src/OpenRpg.Genres/Extensions/EntityStatVariableExtensions.cs b/src/OpenRpg.Genres/Extensions/EntityStatVariableExtensions.cs index de3cb9b..6b75cdb 100644 --- a/src/OpenRpg.Genres/Extensions/EntityStatVariableExtensions.cs +++ b/src/OpenRpg.Genres/Extensions/EntityStatVariableExtensions.cs @@ -33,10 +33,14 @@ public static class EntityStatVariableExtensions public static float HealthRegen(this EntityStatsVariables stats) => stats.GetValueOrDefault(GenreEntityStatsVariableTypes.HealthRegen, 0); public static void HealthRegen(this EntityStatsVariables stats, float staminaRegen) => stats[GenreEntityStatsVariableTypes.HealthRegen] = staminaRegen; - public static float StaminaRegen(this EntityStatsVariables stats) => stats.GetValueOrDefault(GenreEntityStatsVariableTypes.StaminaRegen, 0); public static void StaminaRegen(this EntityStatsVariables stats, float staminaRegen) => stats[GenreEntityStatsVariableTypes.StaminaRegen] = staminaRegen; + public static float HealthRegenRate(this EntityStatsVariables stats) => stats.GetValueOrDefault(GenreEntityStatsVariableTypes.HealthRegenRate, 0); + public static void HealthRegenRate(this EntityStatsVariables stats, float regenRate) => stats[GenreEntityStatsVariableTypes.HealthRegenRate] = regenRate; + public static float StaminaRegenRate(this EntityStatsVariables stats) => stats.GetValueOrDefault(GenreEntityStatsVariableTypes.StaminaRegenRate, 0); + public static void StaminaRegenRate(this EntityStatsVariables stats, float regenRate) => stats[GenreEntityStatsVariableTypes.StaminaRegenRate] = regenRate; + public static float MovementSpeed(this EntityStatsVariables stats) => stats.GetValueOrDefault(GenreEntityStatsVariableTypes.MovementSpeed, 0); public static void MovementSpeed(this EntityStatsVariables stats, float movementSpeed) => stats[GenreEntityStatsVariableTypes.MovementSpeed] = movementSpeed; } diff --git a/src/OpenRpg.Genres/Types/GenreEffectTypes.cs b/src/OpenRpg.Genres/Types/GenreEffectTypes.cs index 611236e..d4d258c 100644 --- a/src/OpenRpg.Genres/Types/GenreEffectTypes.cs +++ b/src/OpenRpg.Genres/Types/GenreEffectTypes.cs @@ -37,6 +37,11 @@ public interface GenreEffectTypes public static readonly int StaminaRestorePercentage = 69; public static readonly int StaminaRegenBonusAmount = 70; public static readonly int StaminaRegenBonusPercentage = 71; + public static readonly int HealthRegenRateBonusAmount = 72; + public static readonly int HealthRegenRateBonusPercentage = 73; + public static readonly int StaminaRegenRateBonusAmount = 74; + public static readonly int StaminaRegenRateBonusPercentage = 75; + // Ability Related public static readonly int AttackRangeBonusAmount = 90; diff --git a/src/OpenRpg.Genres/Types/GenreEntityStatsVariableTypes.cs b/src/OpenRpg.Genres/Types/GenreEntityStatsVariableTypes.cs index 627cc15..2f70b1b 100644 --- a/src/OpenRpg.Genres/Types/GenreEntityStatsVariableTypes.cs +++ b/src/OpenRpg.Genres/Types/GenreEntityStatsVariableTypes.cs @@ -10,6 +10,8 @@ public interface GenreEntityStatsVariableTypes : CoreEntityStatsVariableTypes public static readonly int MaxStamina = 3; public static readonly int StaminaRegen = 4; public static readonly int MovementSpeed = 5; + public static readonly int HealthRegenRate = 6; + public static readonly int StaminaRegenRate = 7; // Attack stats public static readonly int Damage = 10;