Example #1
0
    private IEnumerator BurnRoutine()
    {
        // TODO - fire particles
        FireDamageArgs args = new FireDamageArgs(spreadingBurnDuration, spreadingBurnDps);

        float timePassed = 0f;

        while (true)
        {
            yield return(new WaitForSeconds(burningSpreadPeriod));

            timePassed += burningSpreadPeriod;
            if (timePassed >= destroyAfterBurningTime)
            {
                break;
            }

            Collider2D[] spreadTargets = Physics2D.OverlapCircleAll(transform.position,
                                                                    burningSpreadRadius, Physics2D.GetLayerCollisionMask(gameObject.layer));
            for (int i = 0; i < spreadTargets.Length; ++i)
            {
                spreadTargets[i].gameObject.SendMessage("OnFireDamage", args, SendMessageOptions.DontRequireReceiver);
            }
        }

        Destroy(gameObject);
    }
Example #2
0
    public void OnFireDamage(FireDamageArgs args)
    {
        FreezeStatus freeze = GetComponent <FreezeStatus>();

        if (freeze != null)
        {
            freeze.duration = 0f;
            return;
        }

        BurnStatus burn = GetComponent <BurnStatus>();

        if (burn != null)
        {
            if (args.duration > burn.duration)
            {
                burn.duration        = args.duration;
                burn.damagePerSecond = args.dps;
            }
        }
        else
        {
            burn                 = gameObject.AddComponent <BurnStatus>();
            burn.duration        = args.duration;
            burn.damagePerSecond = args.dps;
        }
    }
Example #3
0
 public void OnFireDamage(FireDamageArgs args)
 {
     spreadingBurnDuration = args.duration;
     spreadingBurnDps      = args.dps;
     StartCoroutine(BurnRoutine());
 }
Example #4
0
 public void OnFireDamage(FireDamageArgs args)
 {
     lit = true;
 }
Example #5
0
 public void OnFireDamage(FireDamageArgs args)
 {
     frozen = false;
 }