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
This commit is contained in:
Pedro Gomes 2024-08-13 22:36:01 +01:00
parent 8743db5347
commit 8917c36ad8
65 changed files with 3679 additions and 1138 deletions

View File

@ -39,6 +39,7 @@ namespace Kryz.CharacterStats
public CharacterStat(float baseValue) : this() public CharacterStat(float baseValue) : this()
{ {
isDirty = true;
BaseValue = baseValue; BaseValue = baseValue;
} }

View File

@ -15,37 +15,40 @@ namespace Kryz.CharacterStats.Examples
public CharacterStat Vitality; public CharacterStat Vitality;
//Secondary //Secondary
public CharacterStat CritChance;
public CharacterStat CritDamage;
public CharacterStat AttackDamage; public CharacterStat AttackDamage;
public CharacterStat SpellDamage; public CharacterStat SpellDamage;
public CharacterStat CritChance;
public CharacterStat CritDamage;
public CharacterStat MaxHealth; public CharacterStat MaxHealth;
public CharacterStat Armor; public CharacterStat Armor;
public CharacterStat MagicResistance; public CharacterStat MagicResistance;
public Dictionary<string, CharacterStat> statsDictionary = new Dictionary<string, CharacterStat>(); public Dictionary<string, CharacterStat> primaryStatsDictionary = new Dictionary<string, CharacterStat>();
public Dictionary<string, CharacterStat> secondaryStatsDictionary = new Dictionary<string, CharacterStat>();
public UnityEvent onUpdateStatValues = new UnityEvent(); public UnityEvent onUpdateStatValues = new UnityEvent();
protected virtual void Awake() protected virtual void Awake()
{ {
statsDictionary.Add(nameof(Strength).ToLower(), Strength); primaryStatsDictionary.Add(nameof(Strength).ToLower(), Strength);
statsDictionary.Add(nameof(Agility).ToLower(), Agility); primaryStatsDictionary.Add(nameof(Agility).ToLower(), Agility);
statsDictionary.Add(nameof(Intelligence).ToLower(), Intelligence); primaryStatsDictionary.Add(nameof(Intelligence).ToLower(), Intelligence);
statsDictionary.Add(nameof(Spirit).ToLower(), Spirit); primaryStatsDictionary.Add(nameof(Spirit).ToLower(), Spirit);
statsDictionary.Add(nameof(Vitality).ToLower(), Vitality); primaryStatsDictionary.Add(nameof(Vitality).ToLower(), Vitality);
statsDictionary.Add(nameof(CritChance).ToLower(), CritChance); secondaryStatsDictionary.Add(nameof(AttackDamage).ToLower(), AttackDamage);
statsDictionary.Add(nameof(CritDamage).ToLower(), CritDamage); secondaryStatsDictionary.Add(nameof(SpellDamage).ToLower(), SpellDamage);
statsDictionary.Add(nameof(AttackDamage).ToLower(), AttackDamage); secondaryStatsDictionary.Add(nameof(CritChance).ToLower(), CritChance);
statsDictionary.Add(nameof(SpellDamage).ToLower(), SpellDamage); secondaryStatsDictionary.Add(nameof(CritDamage).ToLower(), CritDamage);
statsDictionary.Add(nameof(MaxHealth).ToLower(), MaxHealth); secondaryStatsDictionary.Add(nameof(MaxHealth).ToLower(), MaxHealth);
statsDictionary.Add(nameof(Armor).ToLower(), Armor); secondaryStatsDictionary.Add(nameof(Armor).ToLower(), Armor);
statsDictionary.Add(nameof(MagicResistance).ToLower(), MagicResistance); secondaryStatsDictionary.Add(nameof(MagicResistance).ToLower(), MagicResistance);
onUpdateStatValues.AddListener(UpdateSecondaryStatsBasedOnPrimaryStats); onUpdateStatValues.AddListener(UpdateSecondaryStatsBasedOnPrimaryStats);
} }
@ -64,6 +67,12 @@ namespace Kryz.CharacterStats.Examples
public void UpdateSecondaryStatsBasedOnPrimaryStats() public void UpdateSecondaryStatsBasedOnPrimaryStats()
{ {
//Remove previous //Remove previous
AttackDamage.RemoveAllModifiersFromSource(GameConstants.ObjectSources.StrengthSource);
AttackDamage.RemoveAllModifiersFromSource(GameConstants.ObjectSources.AgilitySource);
SpellDamage.RemoveAllModifiersFromSource(GameConstants.ObjectSources.IntelligenceSource);
SpellDamage.RemoveAllModifiersFromSource(GameConstants.ObjectSources.SpiritSource);
CritChance.RemoveAllModifiersFromSource(GameConstants.ObjectSources.AgilitySource); CritChance.RemoveAllModifiersFromSource(GameConstants.ObjectSources.AgilitySource);
CritChance.RemoveAllModifiersFromSource(GameConstants.ObjectSources.IntelligenceSource); CritChance.RemoveAllModifiersFromSource(GameConstants.ObjectSources.IntelligenceSource);
@ -71,12 +80,6 @@ namespace Kryz.CharacterStats.Examples
CritDamage.RemoveAllModifiersFromSource(GameConstants.ObjectSources.AgilitySource); CritDamage.RemoveAllModifiersFromSource(GameConstants.ObjectSources.AgilitySource);
CritDamage.RemoveAllModifiersFromSource(GameConstants.ObjectSources.IntelligenceSource); CritDamage.RemoveAllModifiersFromSource(GameConstants.ObjectSources.IntelligenceSource);
AttackDamage.RemoveAllModifiersFromSource(GameConstants.ObjectSources.StrengthSource);
AttackDamage.RemoveAllModifiersFromSource(GameConstants.ObjectSources.AgilitySource);
SpellDamage.RemoveAllModifiersFromSource(GameConstants.ObjectSources.IntelligenceSource);
SpellDamage.RemoveAllModifiersFromSource(GameConstants.ObjectSources.SpiritSource);
MaxHealth.RemoveAllModifiersFromSource(GameConstants.ObjectSources.SpiritSource); MaxHealth.RemoveAllModifiersFromSource(GameConstants.ObjectSources.SpiritSource);
MaxHealth.RemoveAllModifiersFromSource(GameConstants.ObjectSources.VitalitySource); MaxHealth.RemoveAllModifiersFromSource(GameConstants.ObjectSources.VitalitySource);
@ -90,6 +93,12 @@ namespace Kryz.CharacterStats.Examples
//Add new values //Add new values
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));
CritChance.AddModifier(new StatModifier(Agility.Value * GameConstants.CharacterStatsBalancing.CritChanceIncreaseFromAgility, StatModType.Flat, GameConstants.ObjectSources.AgilitySource)); 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)); CritChance.AddModifier(new StatModifier(Intelligence.Value * GameConstants.CharacterStatsBalancing.CritChanceIncreaseFromIntelligence, StatModType.Flat, GameConstants.ObjectSources.IntelligenceSource));
@ -97,12 +106,6 @@ namespace Kryz.CharacterStats.Examples
CritDamage.AddModifier(new StatModifier(Agility.Value * GameConstants.CharacterStatsBalancing.CritDamageIncreaseFromAgility, StatModType.Flat, GameConstants.ObjectSources.AgilitySource)); 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)); 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(Spirit.Value * GameConstants.CharacterStatsBalancing.MaxHealthIncreaseFromSpirit, StatModType.Flat, GameConstants.ObjectSources.SpiritSource));
MaxHealth.AddModifier(new StatModifier(Vitality.Value * GameConstants.CharacterStatsBalancing.MaxHealthIncreaseFromVitality, StatModType.Flat, GameConstants.ObjectSources.VitalitySource)); MaxHealth.AddModifier(new StatModifier(Vitality.Value * GameConstants.CharacterStatsBalancing.MaxHealthIncreaseFromVitality, StatModType.Flat, GameConstants.ObjectSources.VitalitySource));

View File

@ -2,67 +2,128 @@
namespace Kryz.CharacterStats.Examples namespace Kryz.CharacterStats.Examples
{ {
public enum EquipmentType public enum EquipmentType
{ {
Helmet, Helmet,
Chest, Chest,
Gloves, Gloves,
Boots, Boots,
MainWeapon, MainWeapon,
OffWeapon, OffWeapon,
Accessory, Accessory,
Amulet, Amulet,
} }
[CreateAssetMenu] [CreateAssetMenu]
public class EquippableItem : Item public class EquippableItem : Item
{ {
public int StrengthBonus; public int StrengthBonus;
public int AgilityBonus; public int AgilityBonus;
public int IntelligenceBonus; public int IntelligenceBonus;
public int SpiritBonus; public int SpiritBonus;
public int VitalityBonus; public int VitalityBonus;
[Space] [Space]
public float StrengthPercentBonus; public float StrengthPercentBonus;
public float AgilityPercentBonus; public float AgilityPercentBonus;
public float IntelligencePercentBonus; public float IntelligencePercentBonus;
public float SpiritPercentBonus; public float SpiritPercentBonus;
public float VitalityPercentBonus; public float VitalityPercentBonus;
[Space] [Space]
public EquipmentType EquipmentType; public int AttackDamageBonus;
public int SpellDamageBonus;
public int CritChanceBonus;
public int CritDamageBonus;
public int MaxHealthBonus;
public int ArmorBonus;
public int MagicResistanceBonus;
[Space]
public int AttackDamagePercentBonus;
public int SpellDamagePercentBonus;
public int CritChancePercentBonus;
public int CritDamagePercentBonus;
public int MaxHealthPercentBonus;
public int ArmorPercentBonus;
public int MagicResistancePercentBonus;
public EquipmentType EquipmentType;
public void Equip(PlayerCharacterStats c) public void Equip(PlayerCharacterStats c)
{ {
if (StrengthBonus != 0) if (StrengthBonus != 0)
c.Strength.AddModifier(new StatModifier(StrengthBonus, StatModType.Flat, this)); c.Strength.AddModifier(new StatModifier(StrengthBonus, StatModType.Flat, this));
if (AgilityBonus != 0) if (AgilityBonus != 0)
c.Agility.AddModifier(new StatModifier(AgilityBonus, StatModType.Flat, this)); c.Agility.AddModifier(new StatModifier(AgilityBonus, StatModType.Flat, this));
if (IntelligenceBonus != 0) if (IntelligenceBonus != 0)
c.Intelligence.AddModifier(new StatModifier(IntelligenceBonus, StatModType.Flat, this)); c.Intelligence.AddModifier(new StatModifier(IntelligenceBonus, StatModType.Flat, this));
if (SpiritBonus != 0) if (SpiritBonus != 0)
c.Spirit.AddModifier(new StatModifier(SpiritBonus, StatModType.Flat, this)); c.Spirit.AddModifier(new StatModifier(SpiritBonus, StatModType.Flat, this));
if (VitalityBonus != 0) if (VitalityBonus != 0)
c.Vitality.AddModifier(new StatModifier(VitalityBonus, StatModType.Flat, this)); c.Vitality.AddModifier(new StatModifier(VitalityBonus, StatModType.Flat, this));
if (StrengthPercentBonus != 0) if (StrengthPercentBonus != 0)
c.Strength.AddModifier(new StatModifier(StrengthPercentBonus, StatModType.PercentMult, this)); c.Strength.AddModifier(new StatModifier(StrengthPercentBonus, StatModType.PercentMult, this));
if (AgilityPercentBonus != 0) if (AgilityPercentBonus != 0)
c.Agility.AddModifier(new StatModifier(AgilityPercentBonus, StatModType.PercentMult, this)); c.Agility.AddModifier(new StatModifier(AgilityPercentBonus, StatModType.PercentMult, this));
if (IntelligencePercentBonus != 0) if (IntelligencePercentBonus != 0)
c.Intelligence.AddModifier(new StatModifier(IntelligencePercentBonus, StatModType.PercentMult, this)); c.Intelligence.AddModifier(new StatModifier(IntelligencePercentBonus, StatModType.PercentMult, this));
if (SpiritPercentBonus != 0) if (SpiritPercentBonus != 0)
c.Spirit.AddModifier(new StatModifier(SpiritPercentBonus, StatModType.PercentMult, this)); c.Spirit.AddModifier(new StatModifier(SpiritPercentBonus, StatModType.PercentMult, this));
if (VitalityPercentBonus != 0) if (VitalityPercentBonus != 0)
c.Vitality.AddModifier(new StatModifier(VitalityPercentBonus, StatModType.PercentMult, this)); c.Vitality.AddModifier(new StatModifier(VitalityPercentBonus, StatModType.PercentMult, this));
}
public void Unequip(PlayerCharacterStats c)
{
c.Strength.RemoveAllModifiersFromSource(this); if (AttackDamageBonus != 0)
c.Agility.RemoveAllModifiersFromSource(this); c.AttackDamage.AddModifier(new StatModifier(AttackDamageBonus, StatModType.Flat, this));
c.Intelligence.RemoveAllModifiersFromSource(this); if (SpellDamageBonus != 0)
c.Spirit.RemoveAllModifiersFromSource(this); c.SpellDamage.AddModifier(new StatModifier(SpellDamageBonus, StatModType.Flat, this));
c.Vitality.RemoveAllModifiersFromSource(this);
} if (CritChanceBonus != 0)
} c.CritChance.AddModifier(new StatModifier(CritChanceBonus, StatModType.Flat, this));
if (CritDamageBonus != 0)
c.CritDamage.AddModifier(new StatModifier(CritDamageBonus, StatModType.Flat, this));
if (MaxHealthBonus != 0)
c.MaxHealth.AddModifier(new StatModifier(MaxHealthBonus, StatModType.Flat, this));
if (ArmorBonus != 0)
c.Armor.AddModifier(new StatModifier(ArmorBonus, StatModType.Flat, this));
if (MagicResistanceBonus != 0)
c.MagicResistance.AddModifier(new StatModifier(MagicResistanceBonus, StatModType.Flat, this));
if (AttackDamagePercentBonus != 0)
c.AttackDamage.AddModifier(new StatModifier(AttackDamagePercentBonus, StatModType.PercentAdd, this));
if (SpellDamagePercentBonus != 0)
c.SpellDamage.AddModifier(new StatModifier(SpellDamagePercentBonus, StatModType.PercentAdd, this));
if (CritChancePercentBonus != 0)
c.CritChance.AddModifier(new StatModifier(CritChancePercentBonus, StatModType.PercentAdd, this));
if (CritDamagePercentBonus != 0)
c.CritDamage.AddModifier(new StatModifier(CritDamagePercentBonus, StatModType.PercentAdd, this));
if (MaxHealthPercentBonus != 0)
c.MaxHealth.AddModifier(new StatModifier(MaxHealthPercentBonus, StatModType.PercentAdd, this));
if (ArmorPercentBonus != 0)
c.Armor.AddModifier(new StatModifier(ArmorPercentBonus, StatModType.PercentAdd, this));
if (MagicResistancePercentBonus != 0)
c.MagicResistance.AddModifier(new StatModifier(MagicResistancePercentBonus, StatModType.PercentAdd, this));
}
public void Unequip(PlayerCharacterStats c)
{
c.Strength.RemoveAllModifiersFromSource(this);
c.Agility.RemoveAllModifiersFromSource(this);
c.Intelligence.RemoveAllModifiersFromSource(this);
c.Spirit.RemoveAllModifiersFromSource(this);
c.Vitality.RemoveAllModifiersFromSource(this);
c.AttackDamage.RemoveAllModifiersFromSource(this);
c.SpellDamage.RemoveAllModifiersFromSource(this);
c.CritChance.RemoveAllModifiersFromSource(this);
c.CritDamage.RemoveAllModifiersFromSource(this);
c.MaxHealth.RemoveAllModifiersFromSource(this);
c.Armor.RemoveAllModifiersFromSource(this);
c.MagicResistance.RemoveAllModifiersFromSource(this);
}
}
} }

View File

@ -53,6 +53,10 @@ namespace Kryz.CharacterStats.Examples
if (!photonView.IsMine) return; if (!photonView.IsMine) return;
//Debug.Log("HEALTH GET BASE MAX VALUE: " + health.GetBaseMaxValue());
MaxHealth.BaseValue = health.GetBaseMaxValue();
//Debug.Log("MAX HEALTH GET BASE MAX VALUE: " + MaxHealth.BaseValue);
characterData = PlayerDataHandler.Instance.LoadCharacterData(PlayerDataHandler.Instance.currentPlayerName.Value, PlayerDataHandler.Instance.currentCharacterName.Value); characterData = PlayerDataHandler.Instance.LoadCharacterData(PlayerDataHandler.Instance.currentPlayerName.Value, PlayerDataHandler.Instance.currentCharacterName.Value);
if (characterData != null) if (characterData != null)
@ -60,7 +64,7 @@ namespace Kryz.CharacterStats.Examples
Debug.Log("Success Loading CharacterData"); Debug.Log("Success Loading CharacterData");
level = new Level(characterData.currentLevel, characterData.currentExperience); level = new Level(characterData.currentLevel, characterData.currentExperience);
for (int i = 0; i < statsDictionary.Keys.Count; i++) for (int i = 0; i < primaryStatsDictionary.Keys.Count; i++)
{ {
AllocatedStatPoints.Add(characterData.allocatedStatPoints[i]); AllocatedStatPoints.Add(characterData.allocatedStatPoints[i]);
} }
@ -73,7 +77,7 @@ namespace Kryz.CharacterStats.Examples
{ {
characterData = new CharacterData(); characterData = new CharacterData();
for (int i = 0; i < statsDictionary.Keys.Count; i++) for (int i = 0; i < primaryStatsDictionary.Keys.Count; i++)
{ {
AllocatedStatPoints.Add(0); AllocatedStatPoints.Add(0);
} }
@ -102,6 +106,7 @@ namespace Kryz.CharacterStats.Examples
statPanel.SetPlayerStats(this); statPanel.SetPlayerStats(this);
statPanel.SetStats(Strength, Agility, Intelligence, Spirit, Vitality); statPanel.SetStats(Strength, Agility, Intelligence, Spirit, Vitality);
statPanel.SetSecondaryStats(AttackDamage, SpellDamage, CritChance, CritDamage, MaxHealth, Armor, MagicResistance);
statPanel.UpdateStatValues(); statPanel.UpdateStatValues();
statPanel.SetCharacterInfo(PlayerDataHandler.Instance.currentCharacterName.Value, level.currentLevel.ToString()); statPanel.SetCharacterInfo(PlayerDataHandler.Instance.currentCharacterName.Value, level.currentLevel.ToString());
statPanel.ToggleAllocateButtonsInteractable(AvailablePointsToAllocate > 0); statPanel.ToggleAllocateButtonsInteractable(AvailablePointsToAllocate > 0);
@ -262,12 +267,18 @@ namespace Kryz.CharacterStats.Examples
Spirit.RemoveAllModifiersFromSource(GameConstants.ObjectSources.LevelSource); Spirit.RemoveAllModifiersFromSource(GameConstants.ObjectSources.LevelSource);
Vitality.RemoveAllModifiersFromSource(GameConstants.ObjectSources.LevelSource); Vitality.RemoveAllModifiersFromSource(GameConstants.ObjectSources.LevelSource);
MaxHealth.RemoveAllModifiersFromSource(GameConstants.ObjectSources.LevelSource);
Strength.AddModifier(new StatModifier((level.currentLevel - 1), StatModType.Flat, GameConstants.ObjectSources.LevelSource)); Strength.AddModifier(new StatModifier((level.currentLevel - 1), StatModType.Flat, GameConstants.ObjectSources.LevelSource));
Agility.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)); Intelligence.AddModifier(new StatModifier((level.currentLevel - 1), StatModType.Flat, GameConstants.ObjectSources.LevelSource));
Spirit.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)); Vitality.AddModifier(new StatModifier((level.currentLevel - 1), StatModType.Flat, GameConstants.ObjectSources.LevelSource));
//Debug.Log("MAX HEALTH BASE VALUE: " + MaxHealth.BaseValue);
MaxHealth.AddModifier(new StatModifier(MaxHealth.BaseValue * (level.currentLevel - 1) * GameConstants.CharacterStatsBalancing.BaseMaxHealthGrowthPerLevel, StatModType.Flat, GameConstants.ObjectSources.LevelSource));
onUpdateStatValues.Invoke(); onUpdateStatValues.Invoke();
} }
@ -287,6 +298,8 @@ namespace Kryz.CharacterStats.Examples
} }
} }
((EquippableItem)slots[i].Item).Equip(this); ((EquippableItem)slots[i].Item).Equip(this);
statPanel.UpdateStatValues();
onUpdateStatValues.Invoke();
} }
} }
} }

View File

@ -7,12 +7,15 @@ namespace Kryz.CharacterStats.Examples
{ {
[SerializeField] private Transform statDisplaysParent; [SerializeField] private Transform statDisplaysParent;
[SerializeField] StatDisplay[] statDisplays; [SerializeField] StatDisplay[] statDisplays;
[SerializeField] private StatDisplay[] secondaryStatDisplays;
[SerializeField] string[] statNames; [SerializeField] string[] statNames;
[SerializeField] Button[] addStatButtons; [SerializeField] Button[] addStatButtons;
[SerializeField] private string[] secondaryStatNames;
[SerializeField] private Text characterName; [SerializeField] private Text characterName;
[SerializeField] private Text characterLevel; [SerializeField] private Text characterLevel;
[SerializeField] private StatDisplay unallocated; [SerializeField] private StatDisplay unallocated;
private CharacterStat[] stats; private CharacterStat[] stats;
private CharacterStat[] secondaryStats;
private PlayerCharacterStats playerStats; private PlayerCharacterStats playerStats;
private bool InitializedListeners = false; private bool InitializedListeners = false;
@ -24,8 +27,8 @@ namespace Kryz.CharacterStats.Examples
statDisplays = statDisplaysParent.GetComponentsInChildren<StatDisplay>(); statDisplays = statDisplaysParent.GetComponentsInChildren<StatDisplay>();
UpdateStatNames(); UpdateStatNames();
UpdateSecondaryStatNames();
} }
} }
public void SetPlayerStats(PlayerCharacterStats playerStats) public void SetPlayerStats(PlayerCharacterStats playerStats)
@ -61,6 +64,21 @@ namespace Kryz.CharacterStats.Examples
addStatButtons[3].onClick.AddListener(() => AllocateStat(3)); addStatButtons[3].onClick.AddListener(() => AllocateStat(3));
addStatButtons[4].onClick.AddListener(() => AllocateStat(4)); addStatButtons[4].onClick.AddListener(() => AllocateStat(4));
} }
public void SetSecondaryStats(params CharacterStat[] secondaryStats)
{
this.secondaryStats = secondaryStats;
if (secondaryStats.Length > secondaryStatDisplays.Length)
{
Debug.LogError("Not Enough Stat Displays!");
return;
}
for (int i = 0; i < secondaryStatDisplays.Length; i++)
{
secondaryStatDisplays[i].Stat = secondaryStats[i];
}
}
public void AllocateStat(int index) public void AllocateStat(int index)
{ {
@ -89,6 +107,8 @@ namespace Kryz.CharacterStats.Examples
{ {
statDisplays[i].ValueText.text = stats[i].Value.ToString(); statDisplays[i].ValueText.text = stats[i].Value.ToString();
} }
UpdateSecondaryStatValues();
} }
public void UpdateStatNames() public void UpdateStatNames()
@ -98,6 +118,20 @@ namespace Kryz.CharacterStats.Examples
statDisplays[i].NameText.text = statNames[i]; statDisplays[i].NameText.text = statNames[i];
} }
} }
public void UpdateSecondaryStatNames()
{
for (int i = 0; i < secondaryStatNames.Length; i++)
{
secondaryStatDisplays[i].NameText.text = secondaryStatNames[i];
}
}
public void UpdateSecondaryStatValues()
{
for (int i = 0; i < secondaryStats.Length; i++)
{
secondaryStatDisplays[i].ValueText.text = secondaryStatDisplays[i].NameText.text.Contains("crit") ? secondaryStats[i].Value.ToString() + " %" : secondaryStats[i].Value.ToString();
}
}
public void ToggleAllocateButtonsInteractable(bool interactable) public void ToggleAllocateButtonsInteractable(bool interactable)
{ {

File diff suppressed because it is too large Load Diff

View File

@ -48,7 +48,7 @@ TextureImporter:
alignment: 0 alignment: 0
spritePivot: {x: 0.5, y: 0.5} spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100 spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteBorder: {x: 2, y: 2, z: 2, w: 2}
spriteGenerateFallbackPhysicsShape: 1 spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1 alphaUsage: 1
alphaIsTransparency: 1 alphaIsTransparency: 1
@ -120,7 +120,7 @@ TextureImporter:
physicsShape: [] physicsShape: []
bones: [] bones: []
spriteID: 5e97eb03825dee720800000000000000 spriteID: 5e97eb03825dee720800000000000000
internalID: 0 internalID: 1537655665
vertices: [] vertices: []
indices: indices:
edges: [] edges: []

View File

@ -5269,6 +5269,7 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
currentValue: 0 currentValue: 0
maxValue: 20 maxValue: 20
baseMaxValue: 20
flatRegen: 0 flatRegen: 0
percentRegen: 1 percentRegen: 1
timeBetweenRegens: 1 timeBetweenRegens: 1
@ -5299,6 +5300,7 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
currentValue: 0 currentValue: 0
maxValue: 50 maxValue: 50
baseMaxValue: 50
flatRegen: 0 flatRegen: 0
percentRegen: 1 percentRegen: 1
timeBetweenRegens: 1 timeBetweenRegens: 1

View File

@ -93,10 +93,18 @@ PrefabInstance:
propertyPath: maxValue propertyPath: maxValue
value: 30 value: 30
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2475434436818348713, guid: faa4fe928f5c2d34280baa419f0819bc, type: 3}
propertyPath: baseMaxValue
value: 30
objectReference: {fileID: 0}
- target: {fileID: 2475434436818348714, guid: faa4fe928f5c2d34280baa419f0819bc, type: 3} - target: {fileID: 2475434436818348714, guid: faa4fe928f5c2d34280baa419f0819bc, type: 3}
propertyPath: maxValue propertyPath: maxValue
value: 80 value: 80
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2475434436818348714, guid: faa4fe928f5c2d34280baa419f0819bc, type: 3}
propertyPath: baseMaxValue
value: 80
objectReference: {fileID: 0}
- target: {fileID: 2475434436818348715, guid: faa4fe928f5c2d34280baa419f0819bc, type: 3} - target: {fileID: 2475434436818348715, guid: faa4fe928f5c2d34280baa419f0819bc, type: 3}
propertyPath: Strength.BaseValue propertyPath: Strength.BaseValue
value: 3 value: 3

View File

@ -81,10 +81,18 @@ PrefabInstance:
propertyPath: maxValue propertyPath: maxValue
value: 60 value: 60
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2475434436818348713, guid: faa4fe928f5c2d34280baa419f0819bc, type: 3}
propertyPath: baseMaxValue
value: 60
objectReference: {fileID: 0}
- target: {fileID: 2475434436818348714, guid: faa4fe928f5c2d34280baa419f0819bc, type: 3} - target: {fileID: 2475434436818348714, guid: faa4fe928f5c2d34280baa419f0819bc, type: 3}
propertyPath: maxValue propertyPath: maxValue
value: 25 value: 25
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2475434436818348714, guid: faa4fe928f5c2d34280baa419f0819bc, type: 3}
propertyPath: baseMaxValue
value: 25
objectReference: {fileID: 0}
- target: {fileID: 2475434436818348715, guid: faa4fe928f5c2d34280baa419f0819bc, type: 3} - target: {fileID: 2475434436818348715, guid: faa4fe928f5c2d34280baa419f0819bc, type: 3}
propertyPath: Intelligence.BaseValue propertyPath: Intelligence.BaseValue
value: 2 value: 2

View File

@ -11,10 +11,18 @@ PrefabInstance:
propertyPath: maxValue propertyPath: maxValue
value: 25 value: 25
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2475434436818348713, guid: faa4fe928f5c2d34280baa419f0819bc, type: 3}
propertyPath: baseMaxValue
value: 25
objectReference: {fileID: 0}
- target: {fileID: 2475434436818348714, guid: faa4fe928f5c2d34280baa419f0819bc, type: 3} - target: {fileID: 2475434436818348714, guid: faa4fe928f5c2d34280baa419f0819bc, type: 3}
propertyPath: maxValue propertyPath: maxValue
value: 25 value: 25
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2475434436818348714, guid: faa4fe928f5c2d34280baa419f0819bc, type: 3}
propertyPath: baseMaxValue
value: 25
objectReference: {fileID: 0}
- target: {fileID: 2475434436818348715, guid: faa4fe928f5c2d34280baa419f0819bc, type: 3} - target: {fileID: 2475434436818348715, guid: faa4fe928f5c2d34280baa419f0819bc, type: 3}
propertyPath: Agility.BaseValue propertyPath: Agility.BaseValue
value: 2 value: 2

View File

@ -11,6 +11,10 @@ PrefabInstance:
propertyPath: maxValue propertyPath: maxValue
value: 30 value: 30
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2475434436818348714, guid: faa4fe928f5c2d34280baa419f0819bc, type: 3}
propertyPath: baseMaxValue
value: 30
objectReference: {fileID: 0}
- target: {fileID: 2475434436818348715, guid: faa4fe928f5c2d34280baa419f0819bc, type: 3} - target: {fileID: 2475434436818348715, guid: faa4fe928f5c2d34280baa419f0819bc, type: 3}
propertyPath: Strength.BaseValue propertyPath: Strength.BaseValue
value: 2 value: 2

View File

@ -81,10 +81,18 @@ PrefabInstance:
propertyPath: maxValue propertyPath: maxValue
value: 25 value: 25
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2475434436818348713, guid: faa4fe928f5c2d34280baa419f0819bc, type: 3}
propertyPath: baseMaxValue
value: 25
objectReference: {fileID: 0}
- target: {fileID: 2475434436818348714, guid: faa4fe928f5c2d34280baa419f0819bc, type: 3} - target: {fileID: 2475434436818348714, guid: faa4fe928f5c2d34280baa419f0819bc, type: 3}
propertyPath: maxValue propertyPath: maxValue
value: 45 value: 45
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2475434436818348714, guid: faa4fe928f5c2d34280baa419f0819bc, type: 3}
propertyPath: baseMaxValue
value: 45
objectReference: {fileID: 0}
- target: {fileID: 2475434436818348715, guid: faa4fe928f5c2d34280baa419f0819bc, type: 3} - target: {fileID: 2475434436818348715, guid: faa4fe928f5c2d34280baa419f0819bc, type: 3}
propertyPath: Vitality.BaseValue propertyPath: Vitality.BaseValue
value: 2 value: 2

View File

@ -320,6 +320,7 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
currentValue: 0 currentValue: 0
maxValue: 250 maxValue: 250
baseMaxValue: 250
flatRegen: 0 flatRegen: 0
percentRegen: 0 percentRegen: 0
timeBetweenRegens: 10000 timeBetweenRegens: 10000
@ -350,6 +351,7 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
currentValue: 0 currentValue: 0
maxValue: 250 maxValue: 250
baseMaxValue: 250
flatRegen: 0 flatRegen: 0
percentRegen: 1 percentRegen: 1
timeBetweenRegens: 1 timeBetweenRegens: 1

View File

@ -15,10 +15,18 @@ PrefabInstance:
propertyPath: maxValue propertyPath: maxValue
value: 300 value: 300
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 457396336866213365, guid: d9b43fa944715a7489818765baa8fc11, type: 3}
propertyPath: baseMaxValue
value: 300
objectReference: {fileID: 0}
- target: {fileID: 457396336866213366, guid: d9b43fa944715a7489818765baa8fc11, type: 3} - target: {fileID: 457396336866213366, guid: d9b43fa944715a7489818765baa8fc11, type: 3}
propertyPath: maxValue propertyPath: maxValue
value: 180 value: 180
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 457396336866213366, guid: d9b43fa944715a7489818765baa8fc11, type: 3}
propertyPath: baseMaxValue
value: 180
objectReference: {fileID: 0}
- target: {fileID: 457396336866213367, guid: d9b43fa944715a7489818765baa8fc11, type: 3} - target: {fileID: 457396336866213367, guid: d9b43fa944715a7489818765baa8fc11, type: 3}
propertyPath: Spirit.BaseValue propertyPath: Spirit.BaseValue
value: 8 value: 8

View File

@ -1724,10 +1724,18 @@ PrefabInstance:
propertyPath: maxValue propertyPath: maxValue
value: 500 value: 500
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 457396336866213365, guid: d9b43fa944715a7489818765baa8fc11, type: 3}
propertyPath: baseMaxValue
value: 500
objectReference: {fileID: 0}
- target: {fileID: 457396336866213366, guid: d9b43fa944715a7489818765baa8fc11, type: 3} - target: {fileID: 457396336866213366, guid: d9b43fa944715a7489818765baa8fc11, type: 3}
propertyPath: maxValue propertyPath: maxValue
value: 200 value: 200
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 457396336866213366, guid: d9b43fa944715a7489818765baa8fc11, type: 3}
propertyPath: baseMaxValue
value: 200
objectReference: {fileID: 0}
- target: {fileID: 457396336866213367, guid: d9b43fa944715a7489818765baa8fc11, type: 3} - target: {fileID: 457396336866213367, guid: d9b43fa944715a7489818765baa8fc11, type: 3}
propertyPath: Spirit.BaseValue propertyPath: Spirit.BaseValue
value: 10 value: 10

View File

@ -27,10 +27,18 @@ PrefabInstance:
propertyPath: maxValue propertyPath: maxValue
value: 200 value: 200
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 457396336866213365, guid: d9b43fa944715a7489818765baa8fc11, type: 3}
propertyPath: baseMaxValue
value: 200
objectReference: {fileID: 0}
- target: {fileID: 457396336866213366, guid: d9b43fa944715a7489818765baa8fc11, type: 3} - target: {fileID: 457396336866213366, guid: d9b43fa944715a7489818765baa8fc11, type: 3}
propertyPath: maxValue propertyPath: maxValue
value: 400 value: 400
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 457396336866213366, guid: d9b43fa944715a7489818765baa8fc11, type: 3}
propertyPath: baseMaxValue
value: 400
objectReference: {fileID: 0}
- target: {fileID: 457396336866213367, guid: d9b43fa944715a7489818765baa8fc11, type: 3} - target: {fileID: 457396336866213367, guid: d9b43fa944715a7489818765baa8fc11, type: 3}
propertyPath: Spirit.BaseValue propertyPath: Spirit.BaseValue
value: 3 value: 3

View File

@ -105,10 +105,18 @@ PrefabInstance:
propertyPath: maxValue propertyPath: maxValue
value: 200 value: 200
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 457396336866213365, guid: d9b43fa944715a7489818765baa8fc11, type: 3}
propertyPath: baseMaxValue
value: 200
objectReference: {fileID: 0}
- target: {fileID: 457396336866213366, guid: d9b43fa944715a7489818765baa8fc11, type: 3} - target: {fileID: 457396336866213366, guid: d9b43fa944715a7489818765baa8fc11, type: 3}
propertyPath: maxValue propertyPath: maxValue
value: 400 value: 400
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 457396336866213366, guid: d9b43fa944715a7489818765baa8fc11, type: 3}
propertyPath: baseMaxValue
value: 400
objectReference: {fileID: 0}
- target: {fileID: 457396336866213367, guid: d9b43fa944715a7489818765baa8fc11, type: 3} - target: {fileID: 457396336866213367, guid: d9b43fa944715a7489818765baa8fc11, type: 3}
propertyPath: Spirit.BaseValue propertyPath: Spirit.BaseValue
value: 3 value: 3

View File

@ -127,6 +127,10 @@ PrefabInstance:
propertyPath: maxValue propertyPath: maxValue
value: 10000 value: 10000
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 5460205518301792024, guid: 4d5cd1124d0c47647899411ebcfe8b8a, type: 3}
propertyPath: baseMaxValue
value: 10000
objectReference: {fileID: 0}
- target: {fileID: 5460205518301792025, guid: 4d5cd1124d0c47647899411ebcfe8b8a, type: 3} - target: {fileID: 5460205518301792025, guid: 4d5cd1124d0c47647899411ebcfe8b8a, type: 3}
propertyPath: targetTag.Array.size propertyPath: targetTag.Array.size
value: 3 value: 3
@ -159,6 +163,10 @@ PrefabInstance:
propertyPath: maxValue propertyPath: maxValue
value: 999999 value: 999999
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 5460205518301792027, guid: 4d5cd1124d0c47647899411ebcfe8b8a, type: 3}
propertyPath: baseMaxValue
value: 999999
objectReference: {fileID: 0}
- target: {fileID: 5460205518301792028, guid: 4d5cd1124d0c47647899411ebcfe8b8a, type: 3} - target: {fileID: 5460205518301792028, guid: 4d5cd1124d0c47647899411ebcfe8b8a, type: 3}
propertyPath: sceneViewId propertyPath: sceneViewId
value: 0 value: 0

View File

@ -412,6 +412,7 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
currentValue: 0 currentValue: 0
maxValue: 40 maxValue: 40
baseMaxValue: 40
flatRegen: 0 flatRegen: 0
percentRegen: 0 percentRegen: 0
timeBetweenRegens: 10000 timeBetweenRegens: 10000
@ -442,6 +443,7 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
currentValue: 0 currentValue: 0
maxValue: 100 maxValue: 100
baseMaxValue: 100
flatRegen: 0 flatRegen: 0
percentRegen: 1 percentRegen: 1
timeBetweenRegens: 1 timeBetweenRegens: 1

View File

@ -144,10 +144,18 @@ PrefabInstance:
propertyPath: maxValue propertyPath: maxValue
value: 50 value: 50
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 1708233211970282801, guid: 5e02787002b78154db83a830e460a4a9, type: 3}
propertyPath: baseMaxValue
value: 50
objectReference: {fileID: 0}
- target: {fileID: 1708233211970282802, guid: 5e02787002b78154db83a830e460a4a9, type: 3} - target: {fileID: 1708233211970282802, guid: 5e02787002b78154db83a830e460a4a9, type: 3}
propertyPath: maxValue propertyPath: maxValue
value: 50 value: 50
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 1708233211970282802, guid: 5e02787002b78154db83a830e460a4a9, type: 3}
propertyPath: baseMaxValue
value: 50
objectReference: {fileID: 0}
- target: {fileID: 1708233211970282803, guid: 5e02787002b78154db83a830e460a4a9, type: 3} - target: {fileID: 1708233211970282803, guid: 5e02787002b78154db83a830e460a4a9, type: 3}
propertyPath: targetTag.Array.size propertyPath: targetTag.Array.size
value: 2 value: 2

View File

@ -153,10 +153,18 @@ PrefabInstance:
propertyPath: maxValue propertyPath: maxValue
value: 80 value: 80
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 1708233211970282801, guid: 5e02787002b78154db83a830e460a4a9, type: 3}
propertyPath: baseMaxValue
value: 80
objectReference: {fileID: 0}
- target: {fileID: 1708233211970282802, guid: 5e02787002b78154db83a830e460a4a9, type: 3} - target: {fileID: 1708233211970282802, guid: 5e02787002b78154db83a830e460a4a9, type: 3}
propertyPath: maxValue propertyPath: maxValue
value: 50 value: 50
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 1708233211970282802, guid: 5e02787002b78154db83a830e460a4a9, type: 3}
propertyPath: baseMaxValue
value: 50
objectReference: {fileID: 0}
- target: {fileID: 1708233211970282803, guid: 5e02787002b78154db83a830e460a4a9, type: 3} - target: {fileID: 1708233211970282803, guid: 5e02787002b78154db83a830e460a4a9, type: 3}
propertyPath: targetTag propertyPath: targetTag
value: value:

View File

@ -79,10 +79,18 @@ PrefabInstance:
propertyPath: maxValue propertyPath: maxValue
value: 80 value: 80
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 1708233211970282801, guid: 5e02787002b78154db83a830e460a4a9, type: 3}
propertyPath: baseMaxValue
value: 80
objectReference: {fileID: 0}
- target: {fileID: 1708233211970282802, guid: 5e02787002b78154db83a830e460a4a9, type: 3} - target: {fileID: 1708233211970282802, guid: 5e02787002b78154db83a830e460a4a9, type: 3}
propertyPath: maxValue propertyPath: maxValue
value: 50 value: 50
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 1708233211970282802, guid: 5e02787002b78154db83a830e460a4a9, type: 3}
propertyPath: baseMaxValue
value: 50
objectReference: {fileID: 0}
- target: {fileID: 1708233211970282803, guid: 5e02787002b78154db83a830e460a4a9, type: 3} - target: {fileID: 1708233211970282803, guid: 5e02787002b78154db83a830e460a4a9, type: 3}
propertyPath: targetTag propertyPath: targetTag
value: value:

View File

@ -472,10 +472,18 @@ PrefabInstance:
propertyPath: maxValue propertyPath: maxValue
value: 50 value: 50
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 9115515025738910048, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
propertyPath: baseMaxValue
value: 50
objectReference: {fileID: 0}
- target: {fileID: 9176951908243474339, guid: 9c432d220280f704684a6d5b9354c782, type: 3} - target: {fileID: 9176951908243474339, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
propertyPath: maxValue propertyPath: maxValue
value: 150 value: 150
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 9176951908243474339, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
propertyPath: baseMaxValue
value: 150
objectReference: {fileID: 0}
m_RemovedComponents: [] m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 9c432d220280f704684a6d5b9354c782, type: 3} m_SourcePrefab: {fileID: 100100000, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
--- !u!114 &1170972516368154780 stripped --- !u!114 &1170972516368154780 stripped

View File

@ -97,24 +97,24 @@ PrefabInstance:
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 7687765528848249431, guid: 9c432d220280f704684a6d5b9354c782, type: 3} - target: {fileID: 7687765528848249431, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
propertyPath: ObservedComponents.Array.size propertyPath: ObservedComponents.Array.size
value: 7 value: 6
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 7687765528848249431, guid: 9c432d220280f704684a6d5b9354c782, type: 3} - target: {fileID: 7687765528848249431, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
propertyPath: ObservedComponents.Array.data[2] propertyPath: ObservedComponents.Array.data[2]
value: value:
objectReference: {fileID: 3661498298690416707} objectReference: {fileID: 3678179689714089600}
- target: {fileID: 7687765528848249431, guid: 9c432d220280f704684a6d5b9354c782, type: 3} - target: {fileID: 7687765528848249431, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
propertyPath: ObservedComponents.Array.data[3] propertyPath: ObservedComponents.Array.data[3]
value: value:
objectReference: {fileID: 3678179689714089600} objectReference: {fileID: 6087418188798982533}
- target: {fileID: 7687765528848249431, guid: 9c432d220280f704684a6d5b9354c782, type: 3} - target: {fileID: 7687765528848249431, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
propertyPath: ObservedComponents.Array.data[4] propertyPath: ObservedComponents.Array.data[4]
value: value:
objectReference: {fileID: 6087418188798982533} objectReference: {fileID: 8856054663210089579}
- target: {fileID: 7687765528848249431, guid: 9c432d220280f704684a6d5b9354c782, type: 3} - target: {fileID: 7687765528848249431, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
propertyPath: ObservedComponents.Array.data[5] propertyPath: ObservedComponents.Array.data[5]
value: value:
objectReference: {fileID: 8856054663210089579} objectReference: {fileID: 5587652594478694127}
- target: {fileID: 7687765528848249431, guid: 9c432d220280f704684a6d5b9354c782, type: 3} - target: {fileID: 7687765528848249431, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
propertyPath: ObservedComponents.Array.data[6] propertyPath: ObservedComponents.Array.data[6]
value: value:
@ -199,6 +199,10 @@ PrefabInstance:
propertyPath: maxValue propertyPath: maxValue
value: 150 value: 150
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 9176951908243474339, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
propertyPath: baseMaxValue
value: 150
objectReference: {fileID: 0}
m_RemovedComponents: [] m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 9c432d220280f704684a6d5b9354c782, type: 3} m_SourcePrefab: {fileID: 100100000, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
--- !u!4 &3087337436435136644 stripped --- !u!4 &3087337436435136644 stripped
@ -206,17 +210,6 @@ Transform:
m_CorrespondingSourceObject: {fileID: 7445357712997283684, guid: 9c432d220280f704684a6d5b9354c782, type: 3} m_CorrespondingSourceObject: {fileID: 7445357712997283684, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
m_PrefabInstance: {fileID: 5587652594317244384} m_PrefabInstance: {fileID: 5587652594317244384}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
--- !u!114 &3661498298690416707 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 9176951908243474339, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
m_PrefabInstance: {fileID: 5587652594317244384}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e27fb8d81ab0d814ca4415089c513fe3, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &3678179689714089600 stripped --- !u!114 &3678179689714089600 stripped
MonoBehaviour: MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 9115515025738910048, guid: 9c432d220280f704684a6d5b9354c782, type: 3} m_CorrespondingSourceObject: {fileID: 9115515025738910048, guid: 9c432d220280f704684a6d5b9354c782, type: 3}

View File

@ -97,24 +97,24 @@ PrefabInstance:
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 7687765528848249431, guid: 9c432d220280f704684a6d5b9354c782, type: 3} - target: {fileID: 7687765528848249431, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
propertyPath: ObservedComponents.Array.size propertyPath: ObservedComponents.Array.size
value: 7 value: 6
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 7687765528848249431, guid: 9c432d220280f704684a6d5b9354c782, type: 3} - target: {fileID: 7687765528848249431, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
propertyPath: ObservedComponents.Array.data[2] propertyPath: ObservedComponents.Array.data[2]
value: value:
objectReference: {fileID: 6413872799929113776} objectReference: {fileID: 6402257099963093619}
- target: {fileID: 7687765528848249431, guid: 9c432d220280f704684a6d5b9354c782, type: 3} - target: {fileID: 7687765528848249431, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
propertyPath: ObservedComponents.Array.data[3] propertyPath: ObservedComponents.Array.data[3]
value: value:
objectReference: {fileID: 6402257099963093619} objectReference: {fileID: 4586982804749702518}
- target: {fileID: 7687765528848249431, guid: 9c432d220280f704684a6d5b9354c782, type: 3} - target: {fileID: 7687765528848249431, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
propertyPath: ObservedComponents.Array.data[4] propertyPath: ObservedComponents.Array.data[4]
value: value:
objectReference: {fileID: 4586982804749702518} objectReference: {fileID: 1240144468001624216}
- target: {fileID: 7687765528848249431, guid: 9c432d220280f704684a6d5b9354c782, type: 3} - target: {fileID: 7687765528848249431, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
propertyPath: ObservedComponents.Array.data[5] propertyPath: ObservedComponents.Array.data[5]
value: value:
objectReference: {fileID: 1240144468001624216} objectReference: {fileID: 8112063480741076945}
- target: {fileID: 7687765528848249431, guid: 9c432d220280f704684a6d5b9354c782, type: 3} - target: {fileID: 7687765528848249431, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
propertyPath: ObservedComponents.Array.data[6] propertyPath: ObservedComponents.Array.data[6]
value: value:
@ -183,10 +183,18 @@ PrefabInstance:
propertyPath: maxValue propertyPath: maxValue
value: 150 value: 150
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 9115515025738910048, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
propertyPath: baseMaxValue
value: 150
objectReference: {fileID: 0}
- target: {fileID: 9176951908243474339, guid: 9c432d220280f704684a6d5b9354c782, type: 3} - target: {fileID: 9176951908243474339, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
propertyPath: maxValue propertyPath: maxValue
value: 80 value: 80
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 9176951908243474339, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
propertyPath: baseMaxValue
value: 80
objectReference: {fileID: 0}
m_RemovedComponents: [] m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 9c432d220280f704684a6d5b9354c782, type: 3} m_SourcePrefab: {fileID: 100100000, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
--- !u!114 &1240144468001624216 stripped --- !u!114 &1240144468001624216 stripped
@ -249,17 +257,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 389de3cac2aa89247bd947ebc2fb91ac, type: 3} m_Script: {fileID: 11500000, guid: 389de3cac2aa89247bd947ebc2fb91ac, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
--- !u!114 &6413872799929113776 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 9176951908243474339, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
m_PrefabInstance: {fileID: 2763436073792215827}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e27fb8d81ab0d814ca4415089c513fe3, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1001 &3150237142380810807 --- !u!1001 &3150237142380810807
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@ -462,6 +462,10 @@ PrefabInstance:
propertyPath: maxValue propertyPath: maxValue
value: 60 value: 60
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 9115515025738910048, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
propertyPath: baseMaxValue
value: 60
objectReference: {fileID: 0}
- target: {fileID: 9176951908243474339, guid: 9c432d220280f704684a6d5b9354c782, type: 3} - target: {fileID: 9176951908243474339, guid: 9c432d220280f704684a6d5b9354c782, type: 3}
propertyPath: maxValue propertyPath: maxValue
value: 100 value: 100

View File

@ -521,6 +521,7 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
currentValue: 0 currentValue: 0
maxValue: 100 maxValue: 100
baseMaxValue: 100
flatRegen: 1 flatRegen: 1
percentRegen: 1 percentRegen: 1
timeBetweenRegens: 1 timeBetweenRegens: 1
@ -551,6 +552,7 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
currentValue: 0 currentValue: 0
maxValue: 100 maxValue: 100
baseMaxValue: 100
flatRegen: 1 flatRegen: 1
percentRegen: 1 percentRegen: 1
timeBetweenRegens: 1 timeBetweenRegens: 1
@ -578,6 +580,7 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
currentValue: 0 currentValue: 0
maxValue: 40 maxValue: 40
baseMaxValue: 0
flatRegen: 0 flatRegen: 0
percentRegen: 0 percentRegen: 0
timeBetweenRegens: 40 timeBetweenRegens: 40

View File

@ -38,7 +38,7 @@ RenderSettings:
m_ReflectionIntensity: 1 m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0} m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0} m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0.06330291, g: 0.12668097, b: 0.13224432, a: 1} m_IndirectSpecularColor: {r: 0.06420599, g: 0.12851389, b: 0.13417785, a: 1}
m_UseRadianceAmbientProbe: 0 m_UseRadianceAmbientProbe: 0
--- !u!157 &3 --- !u!157 &3
LightmapSettings: LightmapSettings:
@ -1458,6 +1458,38 @@ PrefabInstance:
m_Modification: m_Modification:
m_TransformParent: {fileID: 0} m_TransformParent: {fileID: 0}
m_Modifications: m_Modifications:
- target: {fileID: 578454789652854986, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 578454789652854986, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 578454789652854986, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 578454789652854986, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 578454789652854986, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 578454789652854986, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1018665628191068227, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1018665628191068227, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1937322274624059534, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3} - target: {fileID: 1937322274624059534, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMax.y propertyPath: m_AnchorMax.y
value: 0 value: 0
@ -1474,6 +1506,30 @@ PrefabInstance:
propertyPath: m_AnchoredPosition.y propertyPath: m_AnchoredPosition.y
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 1999072482994337745, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1999072482994337745, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1999072482994337745, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1999072482994337745, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1999072482994337745, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1999072482994337745, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2018906784613884011, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3} - target: {fileID: 2018906784613884011, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: isAlphaKey propertyPath: isAlphaKey
value: 0 value: 0
@ -1498,6 +1554,78 @@ PrefabInstance:
propertyPath: m_AnchoredPosition.y propertyPath: m_AnchoredPosition.y
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2665462991944594731, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2665462991944594731, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2665462991944594731, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2665462991944594731, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2665462991944594731, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 2665462991944594731, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3362019307542080697, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3362019307542080697, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3362019307542080697, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3362019307542080697, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3362019307542080697, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3362019307542080697, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3495900885075453762, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3495900885075453762, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3495900885075453762, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3495900885075453762, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3495900885075453762, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3495900885075453762, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3572373654598039533, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3} - target: {fileID: 3572373654598039533, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMax.y propertyPath: m_AnchorMax.y
value: 0 value: 0
@ -1562,6 +1690,54 @@ PrefabInstance:
propertyPath: m_AnchoredPosition.y propertyPath: m_AnchoredPosition.y
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 4208542538286627393, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4208542538286627393, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4208542538286627393, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4208542538286627393, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4208542538286627393, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4208542538286627393, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4302328313319839050, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4302328313319839050, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4302328313319839050, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4302328313319839050, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4302328313319839050, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4302328313319839050, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4759723387849467176, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3} - target: {fileID: 4759723387849467176, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMax.y propertyPath: m_AnchorMax.y
value: 0 value: 0
@ -1610,6 +1786,30 @@ PrefabInstance:
propertyPath: m_AnchoredPosition.y propertyPath: m_AnchoredPosition.y
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 5685675862757478633, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5685675862757478633, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5685675862757478633, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5685675862757478633, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5685675862757478633, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5685675862757478633, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6134643950268578271, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3} - target: {fileID: 6134643950268578271, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMax.y propertyPath: m_AnchorMax.y
value: 0 value: 0
@ -2718,6 +2918,38 @@ PrefabInstance:
propertyPath: m_AnchoredPosition.y propertyPath: m_AnchoredPosition.y
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 7914201880011963280, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7914201880011963280, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8083453151734818947, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8083453151734818947, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMin.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8083453151734818947, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8083453151734818947, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8083453151734818947, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8083453151734818947, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8244038924219432218, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3} - target: {fileID: 8244038924219432218, guid: 7cf303e1116e7fb46ba92e7d73321eeb, type: 3}
propertyPath: m_AnchorMax.y propertyPath: m_AnchorMax.y
value: 0 value: 0

View File

@ -19,11 +19,9 @@ MonoBehaviour:
- {fileID: 11400000, guid: 3ac5bfbf7e1fbdd4baec1c17bd3d874c, type: 2} - {fileID: 11400000, guid: 3ac5bfbf7e1fbdd4baec1c17bd3d874c, type: 2}
tags: tags:
- {fileID: 11400000, guid: 4e6f036fb4aad9b428694360fcc62f88, type: 2} - {fileID: 11400000, guid: 4e6f036fb4aad9b428694360fcc62f88, type: 2}
- {fileID: 11400000, guid: 8b74e81cfcd772243b988990f4a8a634, type: 2} - {fileID: 11400000, guid: 09eb68d1a036a1643b74420197b999bd, type: 2}
- {fileID: 11400000, guid: ff27e4f0bff17a145af826f8ade78c8a, type: 2}
- {fileID: 11400000, guid: 9bbf01c0977dc98408db3efec6685c56, type: 2}
abilityEffects: abilityEffects:
- {fileID: 11400000, guid: a498169b6ba3bf74db9624645a5af0b3, type: 2} - {fileID: 11400000, guid: bd8fe57349044204bae5f2521f36aa6c, type: 2}
castTime: 0.5 castTime: 0.5
manaCost: 0 manaCost: 0
healthCost: 0 healthCost: 0

View File

@ -19,11 +19,11 @@ MonoBehaviour:
- {fileID: 11400000, guid: 3ac5bfbf7e1fbdd4baec1c17bd3d874c, type: 2} - {fileID: 11400000, guid: 3ac5bfbf7e1fbdd4baec1c17bd3d874c, type: 2}
tags: tags:
- {fileID: 11400000, guid: 4e6f036fb4aad9b428694360fcc62f88, type: 2} - {fileID: 11400000, guid: 4e6f036fb4aad9b428694360fcc62f88, type: 2}
- {fileID: 11400000, guid: 8b74e81cfcd772243b988990f4a8a634, type: 2} - {fileID: 11400000, guid: 09eb68d1a036a1643b74420197b999bd, type: 2}
- {fileID: 11400000, guid: ff27e4f0bff17a145af826f8ade78c8a, type: 2} - {fileID: 11400000, guid: 918ee6f8846e6a9449166ac16b6330ae, type: 2}
- {fileID: 11400000, guid: 9bbf01c0977dc98408db3efec6685c56, type: 2}
abilityEffects: abilityEffects:
- {fileID: 11400000, guid: 6fe02d03bd1c0de4084f9818353b7027, type: 2} - {fileID: 11400000, guid: f3a0cc743303e174d9ab58e34d57b1ff, type: 2}
- {fileID: 11400000, guid: 3b1dad1cf88449a43ba68b59f3ec636a, type: 2}
castTime: 0.5 castTime: 0.5
manaCost: 15 manaCost: 15
healthCost: 0 healthCost: 0

View File

@ -19,11 +19,9 @@ MonoBehaviour:
- {fileID: 11400000, guid: 3ac5bfbf7e1fbdd4baec1c17bd3d874c, type: 2} - {fileID: 11400000, guid: 3ac5bfbf7e1fbdd4baec1c17bd3d874c, type: 2}
tags: tags:
- {fileID: 11400000, guid: 4e6f036fb4aad9b428694360fcc62f88, type: 2} - {fileID: 11400000, guid: 4e6f036fb4aad9b428694360fcc62f88, type: 2}
- {fileID: 11400000, guid: 8b74e81cfcd772243b988990f4a8a634, type: 2} - {fileID: 11400000, guid: 918ee6f8846e6a9449166ac16b6330ae, type: 2}
- {fileID: 11400000, guid: ff27e4f0bff17a145af826f8ade78c8a, type: 2}
- {fileID: 11400000, guid: 9bbf01c0977dc98408db3efec6685c56, type: 2}
abilityEffects: abilityEffects:
- {fileID: 11400000, guid: 15e27cf15aabe9f47bd69e637e4ab879, type: 2} - {fileID: 11400000, guid: a089c7e3cbe33f14b90591e0b315d414, type: 2}
castTime: 0.5 castTime: 0.5
manaCost: 30 manaCost: 30
healthCost: 0 healthCost: 0

View File

@ -18,14 +18,14 @@ MonoBehaviour:
- {fileID: 11400000, guid: 93dd72cde2a0f904fae3c6ef79d83d65, type: 2} - {fileID: 11400000, guid: 93dd72cde2a0f904fae3c6ef79d83d65, type: 2}
tags: tags:
- {fileID: 11400000, guid: 4e6f036fb4aad9b428694360fcc62f88, type: 2} - {fileID: 11400000, guid: 4e6f036fb4aad9b428694360fcc62f88, type: 2}
- {fileID: 11400000, guid: 8b74e81cfcd772243b988990f4a8a634, type: 2} - {fileID: 11400000, guid: 09eb68d1a036a1643b74420197b999bd, type: 2}
- {fileID: 11400000, guid: ff27e4f0bff17a145af826f8ade78c8a, type: 2} - {fileID: 11400000, guid: 918ee6f8846e6a9449166ac16b6330ae, type: 2}
- {fileID: 11400000, guid: 9bbf01c0977dc98408db3efec6685c56, type: 2}
- {fileID: 11400000, guid: f2044d584b586454f99656097deaa52f, type: 2} - {fileID: 11400000, guid: f2044d584b586454f99656097deaa52f, type: 2}
- {fileID: 11400000, guid: 0edcb3dc0f6e9a241b3a30502dd59cbd, type: 2} - {fileID: 11400000, guid: 0edcb3dc0f6e9a241b3a30502dd59cbd, type: 2}
abilityEffects: abilityEffects:
- {fileID: 11400000, guid: 653bdd7e27d762a4a826faa0fba4aef8, type: 2} - {fileID: 11400000, guid: 539bffc5701ed4b4d8a34876b804b840, type: 2}
- {fileID: 11400000, guid: bb92d18643e5f254d87a907329ecf88e, type: 2} - {fileID: 11400000, guid: 805859fe47cddae49af4826e6dd96df2, type: 2}
- {fileID: 11400000, guid: 80bc6f8fda80d1544b3bd36bba0e07b1, type: 2}
castTime: 0.5 castTime: 0.5
manaCost: 0 manaCost: 0
healthCost: 0 healthCost: 0

View File

@ -15,7 +15,7 @@ MonoBehaviour:
tags: tags:
- {fileID: 11400000, guid: 4e6f036fb4aad9b428694360fcc62f88, type: 2} - {fileID: 11400000, guid: 4e6f036fb4aad9b428694360fcc62f88, type: 2}
influencingStats: [] influencingStats: []
baseValue: 0.3 baseValue: 0.35
AlliedTargetMultiplier: 1 AlliedTargetMultiplier: 1
EnemyTargetMultiplier: 1 EnemyTargetMultiplier: 1
applyToClassResourceInstead: 1 applyToClassResourceInstead: 1

View File

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

View File

@ -0,0 +1,24 @@
%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: 081df6f2fd69b7643a4844062a82871f, type: 3}
m_Name: 0-Vampire_SanguineSlashWithEvent_InstantEffect_SecondaryScale
m_EditorClassIdentifier:
tags:
- {fileID: 11400000, guid: 4e6f036fb4aad9b428694360fcc62f88, type: 2}
influencingStats:
- statTag: {fileID: 11400000, guid: 09eb68d1a036a1643b74420197b999bd, type: 2}
percentInfluence: 0.5
baseValue: 2
AlliedTargetMultiplier: 1
EnemyTargetMultiplier: 1
applyToClassResourceInstead: 0
applyToSelfResourceInsteadOfHit: 0

View File

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

View File

@ -0,0 +1,24 @@
%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: 081df6f2fd69b7643a4844062a82871f, type: 3}
m_Name: 1-Vampire_BloodBath_Impact_InstantEffect_Attack_SecondaryScale
m_EditorClassIdentifier:
tags:
- {fileID: 11400000, guid: 4e6f036fb4aad9b428694360fcc62f88, type: 2}
influencingStats:
- statTag: {fileID: 11400000, guid: 09eb68d1a036a1643b74420197b999bd, type: 2}
percentInfluence: 0.4
baseValue: 3
AlliedTargetMultiplier: 1
EnemyTargetMultiplier: 1
applyToClassResourceInstead: 0
applyToSelfResourceInsteadOfHit: 0

View File

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

View File

@ -0,0 +1,24 @@
%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: 081df6f2fd69b7643a4844062a82871f, type: 3}
m_Name: 1-Vampire_BloodBath_Impact_InstantEffect_Spell_SecondaryScale
m_EditorClassIdentifier:
tags:
- {fileID: 11400000, guid: 4e6f036fb4aad9b428694360fcc62f88, type: 2}
influencingStats:
- statTag: {fileID: 11400000, guid: 918ee6f8846e6a9449166ac16b6330ae, type: 2}
percentInfluence: 0.45
baseValue: 3
AlliedTargetMultiplier: 1
EnemyTargetMultiplier: 1
applyToClassResourceInstead: 0
applyToSelfResourceInsteadOfHit: 0

View File

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

View File

@ -0,0 +1,24 @@
%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: 081df6f2fd69b7643a4844062a82871f, type: 3}
m_Name: 2-Vampire_BloodRose_InstantEffect_Tick_Spell_SecondaryScale
m_EditorClassIdentifier:
tags:
- {fileID: 11400000, guid: 4e6f036fb4aad9b428694360fcc62f88, type: 2}
influencingStats:
- statTag: {fileID: 11400000, guid: 918ee6f8846e6a9449166ac16b6330ae, type: 2}
percentInfluence: 0.3
baseValue: 3
AlliedTargetMultiplier: 1
EnemyTargetMultiplier: 1
applyToClassResourceInstead: 0
applyToSelfResourceInsteadOfHit: 0

View File

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

View File

@ -0,0 +1,26 @@
%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: af01294d38acd8c4ba867154b71b9ec6, type: 3}
m_Name: C-Vampire_BloodVacuum_BleedEffect_Attack_SecondaryScale
m_EditorClassIdentifier:
tags:
- {fileID: 11400000, guid: f2044d584b586454f99656097deaa52f, type: 2}
- {fileID: 11400000, guid: 0edcb3dc0f6e9a241b3a30502dd59cbd, type: 2}
influencingStats:
- statTag: {fileID: 11400000, guid: 09eb68d1a036a1643b74420197b999bd, type: 2}
percentInfluence: 0.05
duration: 3
applyToTargetsHit: 1
applyToSelf: 0
baseDamagePerTick: 1
tickRate: 1
damageType: 2

View File

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

View File

@ -0,0 +1,24 @@
%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: 081df6f2fd69b7643a4844062a82871f, type: 3}
m_Name: C-Vampire_BloodVacuum_InstantEffect_Tick_Attack_SecondaryScale
m_EditorClassIdentifier:
tags:
- {fileID: 11400000, guid: 4e6f036fb4aad9b428694360fcc62f88, type: 2}
influencingStats:
- statTag: {fileID: 11400000, guid: 09eb68d1a036a1643b74420197b999bd, type: 2}
percentInfluence: 0.3
baseValue: 1.5
AlliedTargetMultiplier: 0
EnemyTargetMultiplier: 1
applyToClassResourceInstead: 0
applyToSelfResourceInsteadOfHit: 0

View File

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

View File

@ -0,0 +1,24 @@
%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: 081df6f2fd69b7643a4844062a82871f, type: 3}
m_Name: C-Vampire_BloodVacuum_InstantEffect_Tick_Spell_SecondaryScale
m_EditorClassIdentifier:
tags:
- {fileID: 11400000, guid: 4e6f036fb4aad9b428694360fcc62f88, type: 2}
influencingStats:
- statTag: {fileID: 11400000, guid: 918ee6f8846e6a9449166ac16b6330ae, type: 2}
percentInfluence: 0.3
baseValue: 1.5
AlliedTargetMultiplier: 0
EnemyTargetMultiplier: 1
applyToClassResourceInstead: 0
applyToSelfResourceInsteadOfHit: 0

View File

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

View File

@ -0,0 +1,7 @@
[System.Serializable]
public enum DamageType
{
Attack,
Spell
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: fefca06912d206c4fb3a8115344ece67
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -48,10 +48,14 @@ public class AbsorbEffect : StatusEffect
foreach (var statInfluence in influencingStats) foreach (var statInfluence in influencingStats)
{ {
if (stats.statsDictionary.TryGetValue(statInfluence.statTag.name.ToLower(), out CharacterStat stat)) if (stats.primaryStatsDictionary.TryGetValue(statInfluence.statTag.name.ToLower(), out CharacterStat stat))
{ {
finalAmount += stat.Value * statInfluence.percentInfluence; finalAmount += stat.Value * statInfluence.percentInfluence;
} }
else if (stats.secondaryStatsDictionary.TryGetValue(statInfluence.statTag.name.ToLower(), out CharacterStat secondaryStat))
{
finalAmount += secondaryStat.Value * statInfluence.percentInfluence;
}
} }
return finalAmount; return finalAmount;

View File

@ -39,10 +39,14 @@ public class DamageIncomeModifierEffect : StatusEffect
foreach (var statInfluence in influencingStats) foreach (var statInfluence in influencingStats)
{ {
if (stats.statsDictionary.TryGetValue(statInfluence.statTag.name.ToLower(), out CharacterStat stat)) if (stats.primaryStatsDictionary.TryGetValue(statInfluence.statTag.name.ToLower(), out CharacterStat stat))
{ {
finalAmount += stat.Value * statInfluence.percentInfluence; finalAmount += stat.Value * statInfluence.percentInfluence;
} }
else if (stats.secondaryStatsDictionary.TryGetValue(statInfluence.statTag.name.ToLower(), out CharacterStat secondaryStat))
{
finalAmount += secondaryStat.Value * statInfluence.percentInfluence;
}
} }
return finalAmount; return finalAmount;

View File

@ -62,10 +62,14 @@ public class DamageOverTimeEffect : StatusEffect
foreach (var statInfluence in influencingStats) foreach (var statInfluence in influencingStats)
{ {
if (stats.statsDictionary.TryGetValue(statInfluence.statTag.name.ToLower(), out CharacterStat stat)) if (stats.primaryStatsDictionary.TryGetValue(statInfluence.statTag.name.ToLower(), out CharacterStat stat))
{ {
finalDamage += stat.Value * statInfluence.percentInfluence; finalDamage += stat.Value * statInfluence.percentInfluence;
} }
else if (stats.secondaryStatsDictionary.TryGetValue(statInfluence.statTag.name.ToLower(), out CharacterStat secondaryStat))
{
finalDamage += secondaryStat.Value * statInfluence.percentInfluence;
}
} }
return finalDamage; return finalDamage;

View File

@ -21,6 +21,7 @@ public class InstantValueEffect : BaseEffect
private float finalValue; private float finalValue;
private CharacterStats stats; private CharacterStats stats;
private DamageType damageType = DamageType.Attack;
public override void ApplyEffect(Taggable user, List<Taggable> targets) public override void ApplyEffect(Taggable user, List<Taggable> targets)
{ {
@ -45,7 +46,7 @@ public class InstantValueEffect : BaseEffect
{ {
targetHealth = target.GetComponent<Health>(); targetHealth = target.GetComponent<Health>();
if (targetHealth != null) if (targetHealth != null)
targetHealth.photonView.RPC(nameof(targetHealth.RPC_ChangeValueHealth), targetHealth.photonView.Owner, GetCorrectValueSign(user, target)); targetHealth.photonView.RPC(nameof(targetHealth.RPC_ChangeValueHealth), targetHealth.photonView.Owner, GetCorrectValueSign(user, target), (int)damageType);
//targetHealth.ChangeValue(target.targetTag == TargettingTag.Enemy ? -value : value); //targetHealth.ChangeValue(target.targetTag == TargettingTag.Enemy ? -value : value);
} }
} }
@ -85,12 +86,20 @@ public class InstantValueEffect : BaseEffect
{ {
foreach (var statInfluence in influencingStats) foreach (var statInfluence in influencingStats)
{ {
if (stats.statsDictionary.TryGetValue(statInfluence.statTag.name.ToLower(), out CharacterStat stat)) if (stats.primaryStatsDictionary.TryGetValue(statInfluence.statTag.name.ToLower(), out CharacterStat stat))
{ {
finalValue += stat.Value * statInfluence.percentInfluence; finalValue += stat.Value * statInfluence.percentInfluence;
} }
else if(stats.secondaryStatsDictionary.TryGetValue(statInfluence.statTag.name.ToLower(), out CharacterStat secondaryStat))
{
finalValue += secondaryStat.Value * statInfluence.percentInfluence;
if (statInfluence.statTag.name.ToLower().Contains("Attack")) damageType = DamageType.Attack;
else if (statInfluence.statTag.name.ToLower().Contains("Spell")) damageType = DamageType.Spell;
}
} }
} }
Debug.Log("FinalValue = " + finalValue + " dmgType = " + damageType);
} }
} }

View File

@ -45,10 +45,14 @@ public class MovementSpeedModifierEffect : StatusEffect
foreach (var statInfluence in influencingStats) foreach (var statInfluence in influencingStats)
{ {
if (stats.statsDictionary.TryGetValue(statInfluence.statTag.name.ToLower(), out CharacterStat stat)) if (stats.primaryStatsDictionary.TryGetValue(statInfluence.statTag.name.ToLower(), out CharacterStat stat))
{ {
finalAmount += stat.Value * statInfluence.percentInfluence; finalAmount += stat.Value * statInfluence.percentInfluence;
} }
else if (stats.secondaryStatsDictionary.TryGetValue(statInfluence.statTag.name.ToLower(), out CharacterStat secondaryStat))
{
finalAmount += secondaryStat.Value * statInfluence.percentInfluence;
}
} }
return finalAmount; return finalAmount;

View File

@ -23,18 +23,18 @@ public class UnitDifficultySettings : ScriptableObject
{ {
randomizedMainStat = false; randomizedMainStat = false;
foreach (string stat in stats.statsDictionary.Keys) foreach (string stat in stats.primaryStatsDictionary.Keys)
{ {
if (Random.Range(0, 101) < 40 && !randomizedMainStat) if (Random.Range(0, 101) < 40 && !randomizedMainStat)
{ {
randomizedMainStat = true; randomizedMainStat = true;
stats.statsDictionary[stat].BaseValue += mainBaseStatFlatIncrease; stats.primaryStatsDictionary[stat].BaseValue += mainBaseStatFlatIncrease;
stats.statsDictionary[stat].AddModifier(new StatModifier(mainStatPercentIncrease, StatModType.PercentMult, this)); stats.primaryStatsDictionary[stat].AddModifier(new StatModifier(mainStatPercentIncrease, StatModType.PercentMult, this));
} }
else else
{ {
stats.statsDictionary[stat].BaseValue += secondaryBaseStatsFlatIncrease; stats.primaryStatsDictionary[stat].BaseValue += secondaryBaseStatsFlatIncrease;
stats.statsDictionary[stat].AddModifier(new StatModifier(secondaryStatsPercentIncrease, StatModType.PercentMult, this)); stats.primaryStatsDictionary[stat].AddModifier(new StatModifier(secondaryStatsPercentIncrease, StatModType.PercentMult, this));
} }
} }

View File

@ -63,6 +63,12 @@ public static class GameConstants
public static class CharacterStatsBalancing public static class CharacterStatsBalancing
{ {
public const float AttackDamageIncreaseFromStrength = 1f; //100% str => AttkDmg
public const float AttackDamageIncreaseFromAgility = 0.45f; // 45% agi => AttkDmg
public const float SpellDamageIncreaseFromIntelligence = 1f; //100% int => SpDmg
public const float SpellDamageIncreaseFromSpirit = 0.45f; // 45% spi => SpDmg
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)
@ -70,12 +76,6 @@ public static class GameConstants
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 AttackDamageIncreaseFromStrength = 1f; //100% str => AttkDmg
public const float AttackDamageIncreaseFromAgility = 0.45f; // 45% agi => AttkDmg
public const float SpellDamageIncreaseFromIntelligence = 1f; //100% int => SpDmg
public const float SpellDamageIncreaseFromSpirit = 0.45f; // 45% spi => SpDmg
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 MaxHealthIncreaseFromVitality = 1f; //100% vit => MaxHP
@ -84,9 +84,15 @@ public static class GameConstants
public const float ArmorIncreaseFromVitality = 0.3f; //30% vit => Armor public const float ArmorIncreaseFromVitality = 0.3f; //30% vit => Armor
public const float MagicResistanceIncreaseFromIntelligence = 0.1f; // 10% int => MagicRess public const float MagicResistanceIncreaseFromIntelligence = 0.1f; // 10% int => MagicRess
public const float MagicResistanceIncreaseFromSpirit = 1f; //100% spi => MagicRes public const float MagicResistanceIncreaseFromSpirit = 0.45f; //45% spi => MagicRes
public const float MagicResistanceIncreaseFromVitality = 0.2f; //20% vit => MagicRes public const float MagicResistanceIncreaseFromVitality = 0.2f; //20% vit => MagicRes
public const float PercentArmorIntoDamageReduction = 0.01f; //each point of armor == 0.01% attack dmg reduction
public const float PercentMagicResistanceIntoDamageReduction = 0.01f; // each point of MR == 0.01% spell dmg reduction
public const float MaximumPercentDamageReductionFromArmor = 0.75f;
public const float MaximumPercentDamageReductionFromMagicResistance = 0.75f;
public const float BaseMaxHealthGrowthPerLevel = 0.2f; public const float BaseMaxHealthGrowthPerLevel = 0.2f;
public const float VitalityToHealthRate = 10f; public const float VitalityToHealthRate = 10f;
@ -215,12 +221,13 @@ public static class GameConstants
public static object AllocatedSource = "Allocated"; public static object AllocatedSource = "Allocated";
public static object LevelSource = "Level"; public static object LevelSource = "Level";
public static object BaseValueSource = "Base";
public static object StrengthSource = "STR"; public static object StrengthSource = "Strength";
public static object AgilitySource = "AGI"; public static object AgilitySource = "Agility";
public static object IntelligenceSource = "INT"; public static object IntelligenceSource = "Intelligence";
public static object SpiritSource = "SPI"; public static object SpiritSource = "Spirit";
public static object VitalitySource = "VIT"; public static object VitalitySource = "Vitality";
#endregion #endregion
} }

View File

@ -22,6 +22,8 @@ public class Health : Resource
public bool Invulnerable => invulnerable; public bool Invulnerable => invulnerable;
float incomingValue; float incomingValue;
float percentStatMitigation;
float reducedDamage;
private bool isDead; private bool isDead;
@ -41,9 +43,10 @@ public class Health : Resource
damageIncomeModifierEffectInstance = GetComponent<DamageIncomeModifierEffectInstance>(); damageIncomeModifierEffectInstance = GetComponent<DamageIncomeModifierEffectInstance>();
baseMaxValue = maxValue;
baseFlatRegen = flatRegen; baseFlatRegen = flatRegen;
character.MaxHealth.BaseValue = baseMaxValue;
character.onUpdateStatValues.AddListener(CalculateMaxValueBasedOnStat); character.onUpdateStatValues.AddListener(CalculateMaxValueBasedOnStat);
} }
@ -87,6 +90,31 @@ public class Health : Resource
} }
} }
protected void HandleStatMitigation(DamageType dmgType)
{
if (incomingValue < 0)
{
percentStatMitigation = Mathf.Clamp((dmgType == DamageType.Attack ?
character.Armor.Value * GameConstants.CharacterStatsBalancing.PercentArmorIntoDamageReduction :
character.MagicResistance.Value * GameConstants.CharacterStatsBalancing.PercentMagicResistanceIntoDamageReduction), 0,
dmgType == DamageType.Attack ?
GameConstants.CharacterStatsBalancing.MaximumPercentDamageReductionFromArmor :
GameConstants.CharacterStatsBalancing.MaximumPercentDamageReductionFromMagicResistance);
Debug.Log(gameObject.name + " mitigating = " + percentStatMitigation + " percent");
reducedDamage = incomingValue * percentStatMitigation;
incomingValue += Mathf.Abs(reducedDamage);
Debug.Log(gameObject.name + " receiving dmg = " + incomingValue + $" after mitigations from {(dmgType == DamageType.Attack ? nameof(character.Armor) : nameof(character.MagicResistance))}");
if (incomingValue > 0) //avoid damage ultra mitigated turning into healing
incomingValue = 0;
}
}
protected void HandleMagicResistanceMitigation()
{
}
protected void HandleAbsorbEffects() protected void HandleAbsorbEffects()
{ {
if (incomingValue < 0) if (incomingValue < 0)
@ -131,6 +159,37 @@ public class Health : Resource
onResourceChanged.Invoke(currentValue); onResourceChanged.Invoke(currentValue);
} }
public void ChangeValue(float value, int dmgType)
{
if (!photonView.IsMine) return;
//Debug.Log("Value to change: " + value);
if (isDead) return;
incomingValue = value;
Debug.Log(gameObject.name + " receiving dmg = " + incomingValue + " before mitigations " + (DamageType)dmgType);
if (invulnerable && incomingValue < 0) return;
HandleDamageIncomeModifierEffects();
HandleStatMitigation((DamageType)dmgType);
HandleAbsorbEffects();
currentValue += incomingValue;
currentValue = Mathf.Clamp(currentValue, 0, maxValue);
if (currentValue == 0)
{
//dead;
onDeath.Invoke();
}
//Debug.Log("CurrentHealth: " + currentValue);
onResourceChanged.Invoke(currentValue);
}
public bool EnoughHealth(float cost) public bool EnoughHealth(float cost)
{ {
if (invulnerable) return true; if (invulnerable) return true;
@ -140,11 +199,11 @@ public class Health : Resource
[PunRPC] [PunRPC]
public void RPC_ChangeValueHealth(float value) public void RPC_ChangeValueHealth(float value, int dmgType)
{ {
if (!photonView.IsMine) return; if (!photonView.IsMine) return;
//Debug.Log("Received ChangeValue from RPC from someone"); //Debug.Log("Received ChangeValue from RPC from someone");
ChangeValue(value); ChangeValue(value, dmgType);
} }
public override float GetMaxValue() public override float GetMaxValue()
@ -154,7 +213,7 @@ public class Health : Resource
public virtual void CalculateMaxValueBasedOnStat() public virtual void CalculateMaxValueBasedOnStat()
{ {
maxValue = baseMaxValue + character.MaxHealth.Value; maxValue = character.MaxHealth.Value;
CalculateRegenValueBasedOnStat(); CalculateRegenValueBasedOnStat();

View File

@ -24,7 +24,6 @@ public class Mana : Resource
character = GetComponent<CharacterStats>(); character = GetComponent<CharacterStats>();
photonView = GetComponent<PhotonView>(); photonView = GetComponent<PhotonView>();
baseMaxValue = maxValue;
baseFlatRegen = flatRegen; baseFlatRegen = flatRegen;
character.onUpdateStatValues.AddListener(CalculateMaxValueBasedOnStat); character.onUpdateStatValues.AddListener(CalculateMaxValueBasedOnStat);

View File

@ -1,3 +1,4 @@
using Kryz.CharacterStats;
using Kryz.CharacterStats.Examples; using Kryz.CharacterStats.Examples;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
@ -15,7 +16,11 @@ public class PlayerHealth : Health
{ {
currentLevel = ((PlayerCharacterStats)character).level.currentLevel - 1; currentLevel = ((PlayerCharacterStats)character).level.currentLevel - 1;
maxValue = (baseMaxValue + (baseMaxValue * currentLevel * GameConstants.CharacterStatsBalancing.BaseMaxHealthGrowthPerLevel)) + character.MaxHealth.Value; //character.MaxHealth.RemoveAllModifiersFromSource(GameConstants.ObjectSources.LevelSource);
//
//character.MaxHealth.AddModifier(new StatModifier(baseMaxValue * currentLevel * GameConstants.CharacterStatsBalancing.BaseMaxHealthGrowthPerLevel, StatModType.Flat, GameConstants.ObjectSources.LevelSource));
maxValue = character.MaxHealth.Value;
CalculateRegenValueBasedOnStat(); CalculateRegenValueBasedOnStat();

View File

@ -8,6 +8,7 @@ public class Resource : MonoBehaviour, IPunObservable
{ {
[SerializeField] protected float currentValue; [SerializeField] protected float currentValue;
[SerializeField] protected float maxValue; [SerializeField] protected float maxValue;
[SerializeField] protected float baseMaxValue;
[SerializeField] protected float flatRegen; [SerializeField] protected float flatRegen;
[SerializeField] protected float percentRegen; [SerializeField] protected float percentRegen;
[SerializeField] protected float timeBetweenRegens; [SerializeField] protected float timeBetweenRegens;
@ -16,7 +17,6 @@ public class Resource : MonoBehaviour, IPunObservable
public UnityEvent<float> onResourceChanged = new UnityEvent<float>(); public UnityEvent<float> onResourceChanged = new UnityEvent<float>();
protected float baseMaxValue;
protected float baseFlatRegen; protected float baseFlatRegen;
// Start is called before the first frame update // Start is called before the first frame update

View File

@ -45,6 +45,12 @@ public class ResourceOrbUI : MonoBehaviour
mana.onResourceChanged.AddListener(UpdateCurrentMana); mana.onResourceChanged.AddListener(UpdateCurrentMana);
mana.onMaxManaChanged.AddListener(UpdateMaxMana); mana.onMaxManaChanged.AddListener(UpdateMaxMana);
UpdateCurrentHealth(health.GetCurrentValue());
UpdateMaxHealth(health.GetMaxValue());
UpdateCurrentMana(mana.GetCurrentValue());
UpdateMaxMana(mana.GetMaxValue());
} }
public void UpdateCurrentHealth(float value) public void UpdateCurrentHealth(float value)

View File

@ -94,7 +94,7 @@ Material:
- _Mode: 0 - _Mode: 0
- _OcclusionStrength: 1 - _OcclusionStrength: 1
- _Parallax: 0.02 - _Parallax: 0.02
- _Rotation: 51.168888 - _Rotation: 7.4397726
- _SmoothnessTextureChannel: 0 - _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1 - _SpecularHighlights: 1
- _SrcBlend: 1 - _SrcBlend: 1