Beispiel #1
0
    private static IEnumerator Tremor(Gun gun, BulletScript script)
    {
        script.coroutines_running++;
        while (!script.has_collided && !script.Target)//Wait for collision and check target validity
        {
            yield return(new WaitForEndOfFrame());
        }
        string layer = "";

        if (gun.client_user)
        {
            layer = LayerMask.LayerToName(
                gun.client_user.gameObject.layer);
        }
        else
        {
            layer = LayerMask.LayerToName(
                gun.GetComponentInParent <HealthDefence>()
                .gameObject.layer);
        }
        Collider[] target_colliders = Physics.OverlapSphere(script.gameObject.transform.position, 7,
                                                            LayerMask.GetMask(layer), QueryTriggerInteraction.Collide);
        foreach (Collider col in target_colliders)
        {
            UnitHealthDefence HP = col.GetComponent <UnitHealthDefence>();
            if (HP && script.Target.netId != HP.netId)
            {
                HP.DetermineStun(1);
            }
        }
        script.coroutines_running--;
    }
Beispiel #2
0
    private static IEnumerator Gunslinger(Gun gun, BulletScript script)
    {
        script.coroutines_running++;
        while (!script.has_collided && !script.Target)//Wait for collision and check target validity
        {
            yield return(new WaitForEndOfFrame());
        }
        UnitHealthDefence tgt = script.Target as UnitHealthDefence;

        if (tgt)
        {
            const int STUN_TIME = 2;
            tgt.DetermineStun(STUN_TIME);
        }
        script.coroutines_running--;
    }
Beispiel #3
0
    private static IEnumerator Epidemic(Gun gun, BulletScript script)
    {
        bool         chill  = false;
        bool         stun   = false;
        bool         burn   = false;
        bool         mez    = false;
        bool         sunder = false;
        const double num    = .05;

        while (script)
        {
            while (!script.Target)
            {
                yield return(new WaitForEndOfFrame());
            }
            if (burn)
            {
                int damage = script.lower_bound_damage
                             + (script.upper_bound_damage - script.lower_bound_damage) / 2
                             - script.Target.defence;
                script.Target.StartCoroutine(script.Target.DetermineBurn(num, damage));
            }
            if (sunder)
            {
                int damage = script.lower_bound_damage
                             + (script.upper_bound_damage - script.lower_bound_damage) / 2
                             - script.Target.defence;
                script.Target.StartCoroutine(script.Target.DetermineSunder(num, damage));
            }
            UnitHealthDefence tgt = script.Target as UnitHealthDefence;
            if (tgt)
            {
                if (chill)
                {
                    tgt.StartCoroutine(tgt.DetermineChill(num));
                }
                if (stun)
                {
                    tgt.DetermineStun(1);
                }
                if (mez)
                {
                    tgt.StartCoroutine(tgt.DetermineMezmerize(num));
                }
            }
            if (script.Target.sundered)
            {
                sunder = true;
            }
            if (script.Target.burning)
            {
                burn = true;
            }
            if (tgt)
            {
                if (tgt.chilling)
                {
                    chill = true;
                }
                if (tgt.mezmerized)
                {
                    mez = true;
                }
                if (tgt.stunned)
                {
                    stun = true;
                }
            }
            yield return(new WaitForEndOfFrame());
        }
    }