public void LoseEnergy(float amount) { Energy -= amount; Energy = Mathf.Clamp(Energy, 0, 100); float per = Energy / 100f; EnergyBar.rectTransform.localScale = new Vector3(per, 1f, 1f); if (Energy <= 0) { isEnergyExhausted = true; } if (Energy <= 20 && !isExhausted) { MessageManagement.instance.SetMessage("You became exhausted"); isExhausted = true; isFatigued = true; } if (Energy >= 55) { isExhausted = false; isEnergyExhausted = false; } if (Energy >= 100) { isFatigued = false; } if (onStatChanged != null) { onStatChanged.Invoke(); } }
public void AlterBaseValue(int value) { baseValue += value; if (onStatChanged != null) { onStatChanged.Invoke(); } }
public void RemoveStat(StatController stat, StatModifierType addType) { /*if (stat.statModel != statController.statModel) { Debug.Log("Les deux stats n'ont pas le même modèle, l'opération n'est pas optimisé"); // faire l'opération pas optimisé }*/ statController.Remove(stat, addType); if (OnStatChanged != null) OnStatChanged.Invoke(this); }
public void PlusArmor(int step) { if (!(skillPoints >= 5)) { return; } skillPoints -= 5; armor.Plus(step); if (onStatChangedCallback != null) { onStatChangedCallback.Invoke(); } }
private void Level() { if (currentXP >= XPToLvl) { value++; value = Mathf.Clamp(value, 0, 20); currentXP -= XPToLvl; SetXpToLevel(); } else if (currentXP <= 0) { value--; value = Mathf.Clamp(value, 0, 20); SetXpToLevel(); currentXP += XPToLvl; } OnStatChanged?.Invoke(this, new StatChangedEventArgs { stat = this }); }
// manually sets the Extra stat (used for scoring) public void ExtraSet(Attr extra, double value) { switch (extra) { case Attr.EffectiveHP: EffectiveHP = value; break; case Attr.EffectiveHPDefenseBreak: EffectiveHPDefenseBreak = value; break; case Attr.DamagePerSpeed: DamagePerSpeed = value; break; case Attr.AverageDamage: AverageDamage = value; break; case Attr.MaxDamage: MaxDamage = value; break; case Attr.Skill1: case Attr.Skill2: case Attr.Skill3: case Attr.Skill4: DamageSkillups[extra - Attr.Skill1] = value; break; default: throw new NotImplementedException(); } OnStatChanged?.Invoke(this, new StatModEventArgs(extra, value)); }
public void AttributeModified(Attribute attribute) { Debug.Log(string.Concat(attribute.type, " was updated! Value is now: ", attribute.value.ModifiedValue)); OnStatChanged?.Invoke(this, EventArgs.Empty); }
public void DamageSkillupsSet(int ind, double val) { DamageSkillups[ind] = val; OnStatChanged?.Invoke(this, new StatModEventArgs(Attr.Skill1 + ind, val)); }
public double this[Attr stat] { get { switch (stat) { case Attr.HealthFlat: case Attr.HealthPercent: return(Health); case Attr.AttackFlat: case Attr.AttackPercent: return(Attack); case Attr.DefenseFlat: case Attr.DefensePercent: return(Defense); case Attr.Speed: case Attr.SpeedPercent: return(Speed); case Attr.CritDamage: return(CritDamage); case Attr.CritRate: return(CritRate); case Attr.Accuracy: return(Accuracy); case Attr.Resistance: return(Resistance); case Attr.EffectiveHP: return(EffectiveHP); case Attr.EffectiveHPDefenseBreak: return(EffectiveHPDefenseBreak); case Attr.DamagePerSpeed: return(DamagePerSpeed); case Attr.AverageDamage: return(AverageDamage); case Attr.MaxDamage: return(MaxDamage); } throw new NotImplementedException(); } set { switch (stat) { case Attr.HealthFlat: case Attr.HealthPercent: Health = value; break; case Attr.AttackFlat: case Attr.AttackPercent: Attack = value; break; case Attr.DefenseFlat: case Attr.DefensePercent: Defense = value; break; case Attr.Speed: case Attr.SpeedPercent: Speed = value; break; case Attr.CritDamage: CritDamage = value; break; case Attr.CritRate: CritRate = value; break; case Attr.Accuracy: Accuracy = value; break; case Attr.Resistance: Resistance = value; break; case Attr.EffectiveHP: EffectiveHP = value; break; case Attr.EffectiveHPDefenseBreak: EffectiveHPDefenseBreak = value; break; case Attr.DamagePerSpeed: DamagePerSpeed = value; break; case Attr.AverageDamage: AverageDamage = value; break; case Attr.MaxDamage: MaxDamage = value; break; default: throw new NotImplementedException(); } OnStatChanged?.Invoke(this, new StatModEventArgs(stat, value)); } }
// Allows speedy iteration through the entity public double this[string stat] { get { // TODO: switch from using [string] to [Attr] switch (stat) { case "HP": return(Health); case "ATK": return(Attack); case "DEF": return(Defense); case "SPD": return(Speed); case "CD": return(CritDamage); case "CR": return(CritRate); case "ACC": return(Accuracy); case "RES": return(Resistance); case "WaterATK": return(DamageSkillups[(int)Element.Water - 1]); case "FireATK": return(DamageSkillups[(int)Element.Fire - 1]); case "WindATK": return(DamageSkillups[(int)Element.Wind - 1]); case "LightATK": return(DamageSkillups[(int)Element.Light - 1]); case "DarkATK": return(DamageSkillups[(int)Element.Dark - 1]); default: return(0); //throw new NotImplementedException(); } } set { switch (stat) { case "HP": Health = value; OnStatChanged?.Invoke(this, new StatModEventArgs(Attr.HealthFlat, value)); OnStatChanged?.Invoke(this, new StatModEventArgs(Attr.HealthPercent, value)); break; case "ATK": Attack = value; OnStatChanged?.Invoke(this, new StatModEventArgs(Attr.AttackFlat, value)); OnStatChanged?.Invoke(this, new StatModEventArgs(Attr.AttackPercent, value)); break; case "DEF": Defense = value; OnStatChanged?.Invoke(this, new StatModEventArgs(Attr.DefenseFlat, value)); OnStatChanged?.Invoke(this, new StatModEventArgs(Attr.DefensePercent, value)); break; case "SPD": Speed = value; OnStatChanged?.Invoke(this, new StatModEventArgs(Attr.Speed, value)); break; case "CD": CritDamage = value; OnStatChanged?.Invoke(this, new StatModEventArgs(Attr.CritDamage, value)); break; case "CR": CritRate = value; OnStatChanged?.Invoke(this, new StatModEventArgs(Attr.CritRate, value)); break; case "ACC": Accuracy = value; OnStatChanged?.Invoke(this, new StatModEventArgs(Attr.Accuracy, value)); break; case "RES": Resistance = value; OnStatChanged?.Invoke(this, new StatModEventArgs(Attr.Resistance, value)); break; case "WaterATK": DamageSkillups[0] = value; break; case "FireATK": DamageSkillups[1] = value; break; case "WindATK": DamageSkillups[2] = value; break; case "LightATK": DamageSkillups[3] = value; break; case "DarkATK": DamageSkillups[4] = value; break; default: #if DEBUG throw new NotImplementedException(); #else break; #endif } } }
public void RemoveStat(string statName, float statValue, StatModifierType addType) { statController.RemoveStat(new Stat(statName, statValue), addType); if (OnStatChanged != null) OnStatChanged.Invoke(this); }