RiftMayhem/Assets/Scripts/Difficulty/UnitDifficultySettings.cs
Pedro Gomes 8917c36ad8 Character Stat revamp (wip)
- working max health, properly setting health component values and showing scales on UI
- working armor & magic resistance, properly mitigating incoming damage based on damage type
2024-08-13 22:36:01 +01:00

45 lines
1.8 KiB
C#

using Kryz.CharacterStats.Examples;
using Kryz.CharacterStats;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName = "UnitDifficultySettings", menuName = "RiftMayhem/Settings/Difficulty/UnitDifficultySettings", order = 0)]
public class UnitDifficultySettings : ScriptableObject
{
[Header("Main Stat Modifiers:")]
public float mainBaseStatFlatIncrease;
public float mainStatPercentIncrease;
[Header("Secondary Stats Modifiers:")]
public float secondaryBaseStatsFlatIncrease;
public float secondaryStatsPercentIncrease;
[Header("Resources Modifiers:")]
public float maxHealthPercentIncrease;
public float maxManaPercentIncrease;
private bool randomizedMainStat;
public void SetDifficulty(ref Health health, ref Mana mana, ref CharacterStats stats)
{
randomizedMainStat = false;
foreach (string stat in stats.primaryStatsDictionary.Keys)
{
if (Random.Range(0, 101) < 40 && !randomizedMainStat)
{
randomizedMainStat = true;
stats.primaryStatsDictionary[stat].BaseValue += mainBaseStatFlatIncrease;
stats.primaryStatsDictionary[stat].AddModifier(new StatModifier(mainStatPercentIncrease, StatModType.PercentMult, this));
}
else
{
stats.primaryStatsDictionary[stat].BaseValue += secondaryBaseStatsFlatIncrease;
stats.primaryStatsDictionary[stat].AddModifier(new StatModifier(secondaryStatsPercentIncrease, StatModType.PercentMult, this));
}
}
health.SetMaxValue((health.GetMaxValue() * (1f + maxHealthPercentIncrease)));
mana.SetMaxValue((mana.GetMaxValue() * (1f + maxManaPercentIncrease)));
}
}