From bd1659de933df09ec274c3d6604a0f472ca4bf58 Mon Sep 17 00:00:00 2001 From: Pedro Gomes Date: Mon, 12 Aug 2024 14:14:12 +0100 Subject: [PATCH] Character Secondary stats (WIP) --- .../Scripts/CharacterStats.cs | 56 +++++++++++++++---- .../Data/Tags/StatTags/Secondary.meta | 8 +++ .../Data/Tags/StatTags/Secondary/Armor.asset | 14 +++++ .../Tags/StatTags/Secondary/Armor.asset.meta | 8 +++ .../StatTags/Secondary/AttackDamage.asset | 14 +++++ .../Secondary/AttackDamage.asset.meta | 8 +++ .../Tags/StatTags/Secondary/CritChance.asset | 14 +++++ .../StatTags/Secondary/CritChance.asset.meta | 8 +++ .../Tags/StatTags/Secondary/CritDamage.asset | 14 +++++ .../StatTags/Secondary/CritDamage.asset.meta | 8 +++ .../StatTags/Secondary/MagicResistance.asset | 14 +++++ .../Secondary/MagicResistance.asset.meta | 8 +++ .../Tags/StatTags/Secondary/MaxHealth.asset | 14 +++++ .../StatTags/Secondary/MaxHealth.asset.meta | 8 +++ .../Tags/StatTags/Secondary/SpellDamage.asset | 14 +++++ .../StatTags/Secondary/SpellDamage.asset.meta | 8 +++ Assets/Scripts/Game/GameConstants.cs | 6 +- 17 files changed, 211 insertions(+), 13 deletions(-) create mode 100644 Assets/Scriptables/Data/Tags/StatTags/Secondary.meta create mode 100644 Assets/Scriptables/Data/Tags/StatTags/Secondary/Armor.asset create mode 100644 Assets/Scriptables/Data/Tags/StatTags/Secondary/Armor.asset.meta create mode 100644 Assets/Scriptables/Data/Tags/StatTags/Secondary/AttackDamage.asset create mode 100644 Assets/Scriptables/Data/Tags/StatTags/Secondary/AttackDamage.asset.meta create mode 100644 Assets/Scriptables/Data/Tags/StatTags/Secondary/CritChance.asset create mode 100644 Assets/Scriptables/Data/Tags/StatTags/Secondary/CritChance.asset.meta create mode 100644 Assets/Scriptables/Data/Tags/StatTags/Secondary/CritDamage.asset create mode 100644 Assets/Scriptables/Data/Tags/StatTags/Secondary/CritDamage.asset.meta create mode 100644 Assets/Scriptables/Data/Tags/StatTags/Secondary/MagicResistance.asset create mode 100644 Assets/Scriptables/Data/Tags/StatTags/Secondary/MagicResistance.asset.meta create mode 100644 Assets/Scriptables/Data/Tags/StatTags/Secondary/MaxHealth.asset create mode 100644 Assets/Scriptables/Data/Tags/StatTags/Secondary/MaxHealth.asset.meta create mode 100644 Assets/Scriptables/Data/Tags/StatTags/Secondary/SpellDamage.asset create mode 100644 Assets/Scriptables/Data/Tags/StatTags/Secondary/SpellDamage.asset.meta diff --git a/Assets/Character Stats/Examples/Items & Inventory/Scripts/CharacterStats.cs b/Assets/Character Stats/Examples/Items & Inventory/Scripts/CharacterStats.cs index c3aad0bd..944c85ec 100644 --- a/Assets/Character Stats/Examples/Items & Inventory/Scripts/CharacterStats.cs +++ b/Assets/Character Stats/Examples/Items & Inventory/Scripts/CharacterStats.cs @@ -63,19 +63,55 @@ namespace Kryz.CharacterStats.Examples 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.AgilitySource); - Strength.RemoveAllModifiersFromSource(GameConstants.ObjectSources.LevelSource); - Agility.RemoveAllModifiersFromSource(GameConstants.ObjectSources.LevelSource); - Intelligence.RemoveAllModifiersFromSource(GameConstants.ObjectSources.LevelSource); - Spirit.RemoveAllModifiersFromSource(GameConstants.ObjectSources.LevelSource); - Vitality.RemoveAllModifiersFromSource(GameConstants.ObjectSources.LevelSource); + SpellDamage.RemoveAllModifiersFromSource(GameConstants.ObjectSources.IntelligenceSource); + SpellDamage.RemoveAllModifiersFromSource(GameConstants.ObjectSources.SpiritSource); + + MaxHealth.RemoveAllModifiersFromSource(GameConstants.ObjectSources.SpiritSource); + 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)); } } diff --git a/Assets/Scriptables/Data/Tags/StatTags/Secondary.meta b/Assets/Scriptables/Data/Tags/StatTags/Secondary.meta new file mode 100644 index 00000000..0bbd702f --- /dev/null +++ b/Assets/Scriptables/Data/Tags/StatTags/Secondary.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0c3bef5efbccc2845a1c643abd163b3a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scriptables/Data/Tags/StatTags/Secondary/Armor.asset b/Assets/Scriptables/Data/Tags/StatTags/Secondary/Armor.asset new file mode 100644 index 00000000..ad603c81 --- /dev/null +++ b/Assets/Scriptables/Data/Tags/StatTags/Secondary/Armor.asset @@ -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: diff --git a/Assets/Scriptables/Data/Tags/StatTags/Secondary/Armor.asset.meta b/Assets/Scriptables/Data/Tags/StatTags/Secondary/Armor.asset.meta new file mode 100644 index 00000000..dd5052db --- /dev/null +++ b/Assets/Scriptables/Data/Tags/StatTags/Secondary/Armor.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9ffd1c81aeea68b4eb6b0f054f0d989f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scriptables/Data/Tags/StatTags/Secondary/AttackDamage.asset b/Assets/Scriptables/Data/Tags/StatTags/Secondary/AttackDamage.asset new file mode 100644 index 00000000..5bc71e73 --- /dev/null +++ b/Assets/Scriptables/Data/Tags/StatTags/Secondary/AttackDamage.asset @@ -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: diff --git a/Assets/Scriptables/Data/Tags/StatTags/Secondary/AttackDamage.asset.meta b/Assets/Scriptables/Data/Tags/StatTags/Secondary/AttackDamage.asset.meta new file mode 100644 index 00000000..b8b492ca --- /dev/null +++ b/Assets/Scriptables/Data/Tags/StatTags/Secondary/AttackDamage.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 09eb68d1a036a1643b74420197b999bd +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scriptables/Data/Tags/StatTags/Secondary/CritChance.asset b/Assets/Scriptables/Data/Tags/StatTags/Secondary/CritChance.asset new file mode 100644 index 00000000..aafb5f13 --- /dev/null +++ b/Assets/Scriptables/Data/Tags/StatTags/Secondary/CritChance.asset @@ -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: diff --git a/Assets/Scriptables/Data/Tags/StatTags/Secondary/CritChance.asset.meta b/Assets/Scriptables/Data/Tags/StatTags/Secondary/CritChance.asset.meta new file mode 100644 index 00000000..00be84a4 --- /dev/null +++ b/Assets/Scriptables/Data/Tags/StatTags/Secondary/CritChance.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 831eab0f4c8fb69459a620afd95f698f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scriptables/Data/Tags/StatTags/Secondary/CritDamage.asset b/Assets/Scriptables/Data/Tags/StatTags/Secondary/CritDamage.asset new file mode 100644 index 00000000..77ec6c0c --- /dev/null +++ b/Assets/Scriptables/Data/Tags/StatTags/Secondary/CritDamage.asset @@ -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: diff --git a/Assets/Scriptables/Data/Tags/StatTags/Secondary/CritDamage.asset.meta b/Assets/Scriptables/Data/Tags/StatTags/Secondary/CritDamage.asset.meta new file mode 100644 index 00000000..f1b9cb2c --- /dev/null +++ b/Assets/Scriptables/Data/Tags/StatTags/Secondary/CritDamage.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ad5c133149d9aa641be97f85e426a01f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scriptables/Data/Tags/StatTags/Secondary/MagicResistance.asset b/Assets/Scriptables/Data/Tags/StatTags/Secondary/MagicResistance.asset new file mode 100644 index 00000000..0c45e22f --- /dev/null +++ b/Assets/Scriptables/Data/Tags/StatTags/Secondary/MagicResistance.asset @@ -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: diff --git a/Assets/Scriptables/Data/Tags/StatTags/Secondary/MagicResistance.asset.meta b/Assets/Scriptables/Data/Tags/StatTags/Secondary/MagicResistance.asset.meta new file mode 100644 index 00000000..3f8f6df2 --- /dev/null +++ b/Assets/Scriptables/Data/Tags/StatTags/Secondary/MagicResistance.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5ff891a32306c504f8f6159f69a1866e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scriptables/Data/Tags/StatTags/Secondary/MaxHealth.asset b/Assets/Scriptables/Data/Tags/StatTags/Secondary/MaxHealth.asset new file mode 100644 index 00000000..8487587d --- /dev/null +++ b/Assets/Scriptables/Data/Tags/StatTags/Secondary/MaxHealth.asset @@ -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: diff --git a/Assets/Scriptables/Data/Tags/StatTags/Secondary/MaxHealth.asset.meta b/Assets/Scriptables/Data/Tags/StatTags/Secondary/MaxHealth.asset.meta new file mode 100644 index 00000000..e9c18304 --- /dev/null +++ b/Assets/Scriptables/Data/Tags/StatTags/Secondary/MaxHealth.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4242916f0b1bf6e4e8a04bce7028b3f4 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scriptables/Data/Tags/StatTags/Secondary/SpellDamage.asset b/Assets/Scriptables/Data/Tags/StatTags/Secondary/SpellDamage.asset new file mode 100644 index 00000000..f1e421ed --- /dev/null +++ b/Assets/Scriptables/Data/Tags/StatTags/Secondary/SpellDamage.asset @@ -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: diff --git a/Assets/Scriptables/Data/Tags/StatTags/Secondary/SpellDamage.asset.meta b/Assets/Scriptables/Data/Tags/StatTags/Secondary/SpellDamage.asset.meta new file mode 100644 index 00000000..fd69f5d4 --- /dev/null +++ b/Assets/Scriptables/Data/Tags/StatTags/Secondary/SpellDamage.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 918ee6f8846e6a9449166ac16b6330ae +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Game/GameConstants.cs b/Assets/Scripts/Game/GameConstants.cs index 33e16f0e..c381e2d8 100644 --- a/Assets/Scripts/Game/GameConstants.cs +++ b/Assets/Scripts/Game/GameConstants.cs @@ -66,9 +66,9 @@ public static class GameConstants 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 CritDamageIncreaseFromStrength = 0.002f; //0.2% str => critDmg public const float CritDamageIncreaseFromAgility = 0.002f; //0.2% agi => 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 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 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 MaxHealthIncreaseFromVitality = 1f; //100% vit => MaxHP public const float ArmorIncreaseFromStrength = 0.1f; //10% str => 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 MagicResistanceIncreaseFromVitality = 0.2f; //20% vit => MagicRes - public const float MagicResistanceIncreaseFromIntelligence = 0.1f; // 10% int => MagicRes public const float BaseMaxHealthGrowthPerLevel = 0.2f;