Beispiel #1
0
 public void RemoveModifier(StatModifer mod)
 {
     if (mods.Contains(mod))
     {
         mods.Remove(mod);
     }
 }
    public void RemoveStatModifer(StatModifer modifer, AttributeEnum attributeType)
    {
        switch (attributeType)
        {
        case AttributeEnum.MovementSpeed:
            this.MovementSpeed.RemoveModifer(modifer);
            break;

        case AttributeEnum.LightningResistance:
            this.LightningResistance.RemoveModifer(modifer);
            break;

        case AttributeEnum.FrostResistance:
            this.FrostResistance.RemoveModifer(modifer);
            break;

        case AttributeEnum.EarthResitance:
            this.EarthResitance.RemoveModifer(modifer);
            break;

        case AttributeEnum.FireResistance:
            this.FireResistance.RemoveModifer(modifer);
            break;

        case AttributeEnum.WaterResistance:
            this.WaterResistance.RemoveModifer(modifer);
            break;
        }
        UpdateStats();
    }
Beispiel #3
0
        public override IEnumerator DoEffect(LivingEntity entity)
        {
            float elapsedTime = 0;
            var   stacks      = entity.GetComponent <StatusEffectSystem>().GetStacksFromStackEffect(this);

            while (effectLifeTime >= elapsedTime)
            {
                if (stacks.Count >= maxStacks)
                {
                    resultingAbillity.TriggerAbility(entity.gameObject, entity.centerPosition.transform.position);
                    EndEffect(entity);
                    yield break;
                }
                yield return(null);
            }

            if (stacks.Count > 0)
            {
                StatModifer modifer = stacks.Pop();
                entity.RemoveStatModifer(modifer, attriEnum);
                float value = entity.GetStat(attriEnum).Value;

                entity.StartCoroutine(DoEffect(entity));
            }
            else
            {
                EndEffect(entity);
            }

            yield return(null);
        }
Beispiel #4
0
        public void ModifyStat(StatModifer mod)
        {
            mods.Add(mod);
            //Debug.Log(mod.modType + " is the mod type");

            Debug.Log(statType + " now has a value of " + GetModifiedValue());
        }
Beispiel #5
0
 public bool RemoveModifer(StatModifer mod)
 {
     if (statModifers.Remove(mod))
     {
         isDirty = true;
         return(true);
     }
     return(false);
 }
Beispiel #6
0
 public void AddModifer(StatModifer mod)
 {
     if (mod.Order == 0)
     {
         mod.Order = (int)mod.Type;
     }
     statModifers.Add(mod);
     statModifers.Sort(CompareModifer);
     isDirty = true;
 }
Beispiel #7
0
    public void ApplyTrackedMod(BaseStatType statType, StatModifer mod)
    {
        BaseStat targetStat = GetStat(statType);

        if (targetStat == null)
        {
            Debug.Log("Stat: " + statType + " not found");
            return;
        }
        targetStat.ModifyStat(mod);
    }
Beispiel #8
0
 private int CompareModifer(StatModifer a, StatModifer b)
 {
     if (a.Order < b.Order)
     {
         return(-1);
     }
     else if (a.Order > b.Order)
     {
         return(1);
     }
     return(0);
 }
Beispiel #9
0
    public void AddToStack(StackableEffect stackEffect)
    {
        var modifer    = stackEffect.modifer;
        var newModifer = new StatModifer(modifer.Value, modifer.Type, modifer.Order, modifer.Source);

        var stacks = stackableEffects[stackEffect];

        if (stacks != null)
        {
            entity.AddStatModifer(newModifer, stackEffect.attriEnum);
            stacks.Push(newModifer);
        }
    }
        public override IEnumerator DoEffect(LivingEntity entity)
        {
            var modifer = new StatModifer(Amount, type, this);

            entity.AddStatModifer(modifer, attributeEnum);
            if (!isPersistent)
            {
                yield return(new WaitForSeconds(effectLifeTime));

                entity.RemoveStatModifer(modifer, attributeEnum);
                entity.GetComponent <StatusEffectSystem>().RegisterDebuffCooldown(new Cooldown(reapplyCooldown, name));
                EndEffect(entity);
                yield return(null);
            }
        }
Beispiel #11
0
    public void RemoveTrackedMod(Constants.BaseStatType statType, StatModifer mod)
    {
        BaseStat targetStat = GetStat(statType);

        targetStat.RemoveModifier(mod);
    }
Beispiel #12
0
    public void ApplyTrackedMod(Constants.BaseStatType statType, StatModifer mod)
    {
        BaseStat targetStat = GetStat(statType);

        targetStat.ModifyStat(mod);
    }
Beispiel #13
0
 public void ModifyStat(StatModifer mod)
 {
     mods.Add(mod);
 }