コード例 #1
0
    IEnumerator DoT(float ammount, int time, IEffectable target, SOEffect effect)
    {
        if (ammount != 0)
        {
            bool isHeal = (effect.ID == CONSTANTS.EFFECT_REGEN || effect.ID == CONSTANTS.EFFECT_HEAL);
            for (int i = 0; i < time; i++)
            {
                if (!target.AffectedBy(effect))
                {
                    // perhaps they got cured
                    break;
                }
                if (isHeal)
                {
                    // hurting
                    target.Heal(ammount);
                }
                else
                {
                    // healing
                    target.Harm(ammount);
                }

                yield return(new WaitForSeconds(1));
            }
            target.RemoveEffect(effect);
        }
    }
コード例 #2
0
    IEnumerator ShrinkLarge(float targetScale, float time, IEffectable target, SOEffect effect)
    {
        Vector3 tagetScaleV3 = target.GetDefaultScale() * targetScale;

        for (float i = 0; i < time; i = i + 1f)
        {
            if (!target.AffectedBy(effect))
            {
                // perhaps they got cured
                break;
            }

            Transform t2 = target.GetTransform();
            t2.localScale = tagetScaleV3;
            target.SetTransform(t2);

            yield return(new WaitForSeconds(1));
        }
        Transform t = target.GetTransform();

        t.localScale = target.GetDefaultScale();
        target.SetTransform(t);

        target.RemoveEffect(effect);
    }
コード例 #3
0
 bool applyAffect(SOEffect s, IEffectable target)
 {
     if (target.AffectedBy(s))
     {
         return(false);
     }
     target.AddEffect(s);
     return(true);
 }
コード例 #4
0
    IEnumerator SpeedSlow(float factor, float time, IEffectable target, SOEffect effect)
    {
        float targetSpeed = target.GetDefaultSpeed() * factor;

        for (float i = 0; i < time; i = i + 1f)
        {
            if (!target.AffectedBy(effect))
            {
                // perhaps they got cured
                break;
            }

            target.SetSpeed(targetSpeed);

            yield return(new WaitForSeconds(1));
        }
        target.SetSpeed(target.GetDefaultSpeed());
        target.RemoveEffect(effect);
    }
コード例 #5
0
    IEnumerator Gravupdown(float factor, float time, IEffectable target, SOEffect effect)
    {
        float targetGrav = target.GetDefaultGravity() * factor;
        float jumpHeight = target.GetDefaultJumpHeight() / factor;

        for (float i = 0; i < time; i = i + 1f)
        {
            if (!target.AffectedBy(effect))
            {
                // perhaps they got cured
                break;
            }

            target.SetGravity(targetGrav);
            target.SetJumpHeight(jumpHeight);

            yield return(new WaitForSeconds(1));
        }
        target.SetGravity(target.GetDefaultGravity());
        target.SetJumpHeight(target.GetDefaultJumpHeight());
        target.RemoveEffect(effect);
    }