Character Secondary stats (WIP)

This commit is contained in:
Pedro Gomes 2024-08-12 14:14:12 +01:00
parent 4a7430533a
commit bd1659de93
17 changed files with 211 additions and 13 deletions

View File

@ -63,19 +63,55 @@ namespace Kryz.CharacterStats.Examples
public void UpdateSecondaryStatsBasedOnPrimaryStats() public void UpdateSecondaryStatsBasedOnPrimaryStats()
{ {
//Remove previous
CritChance.RemoveAllModifiersFromSource(GameConstants.ObjectSources.AgilitySource);
CritChance.RemoveAllModifiersFromSource(GameConstants.ObjectSources.IntelligenceSource);
CritDamage.RemoveAllModifiersFromSource(GameConstants.ObjectSources.StrengthSource);
CritDamage.RemoveAllModifiersFromSource(GameConstants.ObjectSources.AgilitySource);
CritDamage.RemoveAllModifiersFromSource(GameConstants.ObjectSources.IntelligenceSource);
AttackDamage.RemoveAllModifiersFromSource(GameConstants.ObjectSources.StrengthSource); AttackDamage.RemoveAllModifiersFromSource(GameConstants.ObjectSources.StrengthSource);
AttackDamage.RemoveAllModifiersFromSource(GameConstants.ObjectSources.AgilitySource);
Strength.RemoveAllModifiersFromSource(GameConstants.ObjectSources.LevelSource); SpellDamage.RemoveAllModifiersFromSource(GameConstants.ObjectSources.IntelligenceSource);
Agility.RemoveAllModifiersFromSource(GameConstants.ObjectSources.LevelSource); SpellDamage.RemoveAllModifiersFromSource(GameConstants.ObjectSources.SpiritSource);
Intelligence.RemoveAllModifiersFromSource(GameConstants.ObjectSources.LevelSource);
Spirit.RemoveAllModifiersFromSource(GameConstants.ObjectSources.LevelSource); MaxHealth.RemoveAllModifiersFromSource(GameConstants.ObjectSources.SpiritSource);
Vitality.RemoveAllModifiersFromSource(GameConstants.ObjectSources.LevelSource); MaxHealth.RemoveAllModifiersFromSource(GameConstants.ObjectSources.VitalitySource);
Armor.RemoveAllModifiersFromSource(GameConstants.ObjectSources.StrengthSource);
Armor.RemoveAllModifiersFromSource(GameConstants.ObjectSources.VitalitySource);
MagicResistance.RemoveAllModifiersFromSource(GameConstants.ObjectSources.IntelligenceSource);
MagicResistance.RemoveAllModifiersFromSource(GameConstants.ObjectSources.SpiritSource);
MagicResistance.RemoveAllModifiersFromSource(GameConstants.ObjectSources.VitalitySource);
//Add new values
CritChance.AddModifier(new StatModifier(Agility.Value * GameConstants.CharacterStatsBalancing.CritChanceIncreaseFromAgility, StatModType.Flat, GameConstants.ObjectSources.AgilitySource));
CritChance.AddModifier(new StatModifier(Intelligence.Value * GameConstants.CharacterStatsBalancing.CritChanceIncreaseFromIntelligence, StatModType.Flat, GameConstants.ObjectSources.IntelligenceSource));
CritDamage.AddModifier(new StatModifier(Strength.Value * GameConstants.CharacterStatsBalancing.CritDamageIncreaseFromStrength, StatModType.Flat, GameConstants.ObjectSources.StrengthSource));
CritDamage.AddModifier(new StatModifier(Agility.Value * GameConstants.CharacterStatsBalancing.CritDamageIncreaseFromAgility, StatModType.Flat, GameConstants.ObjectSources.AgilitySource));
CritDamage.AddModifier(new StatModifier(Intelligence.Value * GameConstants.CharacterStatsBalancing.CritDamageIncreaseFromIntelligence, StatModType.Flat, GameConstants.ObjectSources.IntelligenceSource));
AttackDamage.AddModifier(new StatModifier(Strength.Value * GameConstants.CharacterStatsBalancing.AttackDamageIncreaseFromStrength, StatModType.Flat, GameConstants.ObjectSources.StrengthSource));
AttackDamage.AddModifier(new StatModifier(Agility.Value * GameConstants.CharacterStatsBalancing.AttackDamageIncreaseFromAgility, StatModType.Flat, GameConstants.ObjectSources.AgilitySource));
SpellDamage.AddModifier(new StatModifier(Intelligence.Value * GameConstants.CharacterStatsBalancing.SpellDamageIncreaseFromIntelligence, StatModType.Flat, GameConstants.ObjectSources.IntelligenceSource));
SpellDamage.AddModifier(new StatModifier(Spirit.Value * GameConstants.CharacterStatsBalancing.SpellDamageIncreaseFromSpirit, StatModType.Flat, GameConstants.ObjectSources.SpiritSource));
MaxHealth.AddModifier(new StatModifier(Spirit.Value * GameConstants.CharacterStatsBalancing.MaxHealthIncreaseFromSpirit, StatModType.Flat, GameConstants.ObjectSources.SpiritSource));
MaxHealth.AddModifier(new StatModifier(Vitality.Value * GameConstants.CharacterStatsBalancing.MaxHealthIncreaseFromVitality, StatModType.Flat, GameConstants.ObjectSources.VitalitySource));
Armor.AddModifier(new StatModifier(Strength.Value * GameConstants.CharacterStatsBalancing.ArmorIncreaseFromStrength, StatModType.Flat, GameConstants.ObjectSources.StrengthSource));
Armor.AddModifier(new StatModifier(Vitality.Value * GameConstants.CharacterStatsBalancing.ArmorIncreaseFromVitality, StatModType.Flat, GameConstants.ObjectSources.VitalitySource));
MagicResistance.AddModifier(new StatModifier(Intelligence.Value * GameConstants.CharacterStatsBalancing.MagicResistanceIncreaseFromIntelligence, StatModType.Flat, GameConstants.ObjectSources.IntelligenceSource));
MagicResistance.AddModifier(new StatModifier(Spirit.Value * GameConstants.CharacterStatsBalancing.MagicResistanceIncreaseFromSpirit, StatModType.Flat, GameConstants.ObjectSources.SpiritSource));
MagicResistance.AddModifier(new StatModifier(Vitality.Value * GameConstants.CharacterStatsBalancing.MagicResistanceIncreaseFromVitality, StatModType.Flat, GameConstants.ObjectSources.VitalitySource));
//Strength.AddModifier(new StatModifier((level.currentLevel - 1), StatModType.Flat, GameConstants.ObjectSources.LevelSource));
//Agility.AddModifier(new StatModifier((level.currentLevel - 1), StatModType.Flat, GameConstants.ObjectSources.LevelSource));
//Intelligence.AddModifier(new StatModifier((level.currentLevel - 1), StatModType.Flat, GameConstants.ObjectSources.LevelSource));
//Spirit.AddModifier(new StatModifier((level.currentLevel - 1), StatModType.Flat, GameConstants.ObjectSources.LevelSource));
//Vitality.AddModifier(new StatModifier((level.currentLevel - 1), StatModType.Flat, GameConstants.ObjectSources.LevelSource));
} }
} }

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0c3bef5efbccc2845a1c643abd163b3a
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,14 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4cc5b60241d710942888d37734f848d6, type: 3}
m_Name: Armor
m_EditorClassIdentifier:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9ffd1c81aeea68b4eb6b0f054f0d989f
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,14 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4cc5b60241d710942888d37734f848d6, type: 3}
m_Name: AttackDamage
m_EditorClassIdentifier:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 09eb68d1a036a1643b74420197b999bd
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,14 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4cc5b60241d710942888d37734f848d6, type: 3}
m_Name: CritChance
m_EditorClassIdentifier:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 831eab0f4c8fb69459a620afd95f698f
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,14 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4cc5b60241d710942888d37734f848d6, type: 3}
m_Name: CritDamage
m_EditorClassIdentifier:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ad5c133149d9aa641be97f85e426a01f
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,14 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4cc5b60241d710942888d37734f848d6, type: 3}
m_Name: MagicResistance
m_EditorClassIdentifier:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5ff891a32306c504f8f6159f69a1866e
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,14 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4cc5b60241d710942888d37734f848d6, type: 3}
m_Name: MaxHealth
m_EditorClassIdentifier:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4242916f0b1bf6e4e8a04bce7028b3f4
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,14 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4cc5b60241d710942888d37734f848d6, type: 3}
m_Name: SpellDamage
m_EditorClassIdentifier:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 918ee6f8846e6a9449166ac16b6330ae
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -66,9 +66,9 @@ public static class GameConstants
public const float CritChanceIncreaseFromAgility = 0.005f; //0.5% agi => critChance (30% +/- tops) public const float CritChanceIncreaseFromAgility = 0.005f; //0.5% agi => critChance (30% +/- tops)
public const float CritChanceIncreaseFromIntelligence = 0.002f; //0.2% int => critChance (12% +/- tops) public const float CritChanceIncreaseFromIntelligence = 0.002f; //0.2% int => critChance (12% +/- tops)
public const float CritDamageIncreaseFromStrength = 0.002f; //0.2% str => critDmg
public const float CritDamageIncreaseFromAgility = 0.002f; //0.2% agi => critDmg public const float CritDamageIncreaseFromAgility = 0.002f; //0.2% agi => critDmg
public const float CritDamageIncreaseFromIntelligence = 0.001f; //0.1% int => critDmg public const float CritDamageIncreaseFromIntelligence = 0.001f; //0.1% int => critDmg
public const float CritDamageIncreaseFromStrength = 0.002f; //0.2% str => critDmg
public const float AttackDamageIncreaseFromStrength = 1f; //100% str => AttkDmg public const float AttackDamageIncreaseFromStrength = 1f; //100% str => AttkDmg
public const float AttackDamageIncreaseFromAgility = 0.45f; // 45% agi => AttkDmg public const float AttackDamageIncreaseFromAgility = 0.45f; // 45% agi => AttkDmg
@ -76,15 +76,15 @@ public static class GameConstants
public const float SpellDamageIncreaseFromIntelligence = 1f; //100% int => SpDmg public const float SpellDamageIncreaseFromIntelligence = 1f; //100% int => SpDmg
public const float SpellDamageIncreaseFromSpirit = 0.45f; // 45% spi => SpDmg public const float SpellDamageIncreaseFromSpirit = 0.45f; // 45% spi => SpDmg
public const float MaxHealthIncreaseFromVitality = 1f; //100% vit => MaxHP
public const float MaxHealthIncreaseFromSpirit = 0.1f; // 10% spi => MaxHP public const float MaxHealthIncreaseFromSpirit = 0.1f; // 10% spi => MaxHP
public const float MaxHealthIncreaseFromVitality = 1f; //100% vit => MaxHP
public const float ArmorIncreaseFromStrength = 0.1f; //10% str => Armor public const float ArmorIncreaseFromStrength = 0.1f; //10% str => Armor
public const float ArmorIncreaseFromVitality = 0.2f; //20% vit => Armor public const float ArmorIncreaseFromVitality = 0.2f; //20% vit => Armor
public const float MagicResistanceIncreaseFromIntelligence = 0.1f; // 10% int => MagicRess
public const float MagicResistanceIncreaseFromSpirit = 1f; //100% spi => MagicRes public const float MagicResistanceIncreaseFromSpirit = 1f; //100% spi => MagicRes
public const float MagicResistanceIncreaseFromVitality = 0.2f; //20% vit => MagicRes public const float MagicResistanceIncreaseFromVitality = 0.2f; //20% vit => MagicRes
public const float MagicResistanceIncreaseFromIntelligence = 0.1f; // 10% int => MagicRes
public const float BaseMaxHealthGrowthPerLevel = 0.2f; public const float BaseMaxHealthGrowthPerLevel = 0.2f;