Пример #1
0
    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();
        }
    }
Пример #2
0
    public void AlterBaseValue(int value)
    {
        baseValue += value;

        if (onStatChanged != null)
        {
            onStatChanged.Invoke();
        }
    }
Пример #3
0
 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);
 }
Пример #4
0
 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
        });
    }
Пример #6
0
        // 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));
        }
Пример #7
0
 public void AttributeModified(Attribute attribute)
 {
     Debug.Log(string.Concat(attribute.type, " was updated! Value is now: ", attribute.value.ModifiedValue));
     OnStatChanged?.Invoke(this, EventArgs.Empty);
 }
Пример #8
0
 public void DamageSkillupsSet(int ind, double val)
 {
     DamageSkillups[ind] = val;
     OnStatChanged?.Invoke(this, new StatModEventArgs(Attr.Skill1 + ind, val));
 }
Пример #9
0
        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));
            }
        }
Пример #10
0
        // 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
                }
            }
        }
Пример #11
0
 public void RemoveStat(string statName, float statValue, StatModifierType addType)
 {
     statController.RemoveStat(new Stat(statName, statValue), addType);
     if (OnStatChanged != null) OnStatChanged.Invoke(this);
 }