Exemplo n.º 1
0
    IEnumerator AbilTwoAsync()
    {
        yield return(new WaitForSeconds(0.7f));

        GameObject       obj = Instantiate(TrackerPrefab, gameObject.transform.position + new Vector3(0, 2f, 0), new Quaternion());
        ProjectileBehave pbh = obj.GetComponent <ProjectileBehave>();

        obj.transform.localScale = new Vector3(2.5f, 2.5f, 2.5f);
        pbh.speed = 8f + Level / 5f;
        Damage dmg = new Damage(0f, Random.Range(150f, 200f) * Level, true, false, true);

        pbh.dmg = stats.RealDamage(dmg);
        pbh.ttl = 5f + Level / 2f;
        TrackingBehave tbh = obj.GetComponent <TrackingBehave>();

        tbh.RotSpeed = 2.5f + Level / 5f;
        tbh.Target   = player;


        inUse = false;
        animator.SetBool("attack2bool", false);
        float choice = Random.Range(0f, 1f);

        if (choice < 0.8)
        {
            nextAttack = 0;
        }
        else
        {
            nextAttack = 1;
        }
    }
    protected override void Activate()
    {
        GameObject       obj = Instantiate(projectile, gameObject.transform.position + new Vector3(0, 1.5f, 0), new Quaternion());
        ProjectileBehave pbh = obj.GetComponentInChildren <ProjectileBehave>();
        var lookPos          = mpd.CalculateWorldPosition() - transform.position;

        lookPos.y = 0;
        var rotation = Quaternion.LookRotation(lookPos);

        obj.transform.rotation = Quaternion.Slerp(transform.rotation, rotation, 1f);
        obj.transform.Translate(Vector3.forward * 1.3f);
        obj.transform.localScale = new Vector3(3.3f, 1f, 3.3f);
        Damage dmg;

        if (cost < 0.00001)
        {
            dmg = new Damage(Random.Range(dmgMin, dmgMax), 0, false, true, false);
        }
        else
        {
            float hplost = StatBlock.CalcMult(stats.HealthCur, stats.PhantomHpMult) * cost;
            stats.HealthCur -= hplost;
            Debug.Log("Cost player " + hplost + " hp.");
            dmg = new Damage(Random.Range(dmgMin, dmgMax), hplost / 2f, false, true, true);
        }
        pbh.dmg          = stats.RealDamage(dmg);
        pbh.dmg.callback = this;
    }
Exemplo n.º 3
0
    IEnumerator FireProjectile()
    {
        int currRot  = -(int)size;        //30
        int currCast = 0;

        while (currCast < projCount)
        {
            //needs to file projectile along cone shape
            GameObject obj     = Instantiate(projectile, gameObject.transform.position + new Vector3(0f, 2f, 0f), new Quaternion());
            var        lookPos = mpd.CalculateWorldPosition() - transform.position;
            lookPos.y = 0;
            var rotation         = Quaternion.LookRotation(lookPos);
            ProjectileBehave pbh = obj.GetComponent <ProjectileBehave>();
            obj.transform.rotation = Quaternion.Slerp(transform.rotation, rotation, 1f);
            obj.transform.Rotate(new Vector3(Random.Range(0, 10), currRot, 0));
            currRot += (int)((2 * size) / projCount);
            obj.transform.localScale = new Vector3(1.5f, 1.5f, 1.5f);
            pbh.speed = 15f;
            Damage dmg = new Damage(0f, 0.45f * Random.Range(dmgMin, dmgMax), true, false, false);
            pbh.dmg      = stats.RealDamage(dmg);
            pbh.ttl      = 2f;
            pbh.friendly = true;
            ++currCast;
        }
        yield return(null);
    }
Exemplo n.º 4
0
    IEnumerator AbilOneAsync(GameObject target)
    {
        target.GetComponent <StatBlock>().HealthCur = -100;
        bonusDmg           += 20 * Level;
        playerTracker.pause = true;
        transform.rotation  = new Quaternion();
        transform.position  = target.transform.position + new Vector3(0f, 0f, -2f);
        yield return(new WaitForSeconds(0.5f));

        for (int i = 0; i < 5; ++i)
        {
            for (int j = 0; j < 5; ++j)
            {
                GameObject       obj = Instantiate(RangedAttackPrefab, target.transform.position, Quaternion.Euler(0, Random.Range(0f, 360f), 0));
                ProjectileBehave pbh = obj.GetComponent <ProjectileBehave>();
                obj.transform.localScale = new Vector3(2.5f, 2.5f, 2.5f);
                obj.transform.Translate(Vector3.forward * 0.5f);
                Damage dmg = new Damage(0f, bonusDmg / 3f + Random.Range(20 * Level, 30 * Level), true, false, true);
                dmg.buffs.Add(poison.Instance);
                pbh.dmg   = stats.RealDamage(dmg);
                pbh.ttl   = 2.5f;
                pbh.speed = 16f;
            }
            yield return(new WaitForSeconds(0.2f));
        }
        transform.localScale = transform.localScale + new Vector3(0.3f, 0.3f, 0.3f);
        stats.HealthCur     += 600 * Level;
        if (!isDead)
        {
            playerTracker.pause = false;
        }
        inUse      = false;
        nextAttack = 0;
    }
Exemplo n.º 5
0
    IEnumerator RainFire(bool aim)
    {
        float   range = 4.5f;
        Vector3 target;

        if (aim)
        {
            target = player.transform.position + new Vector3(Random.Range(-range, range), 0.5f, Random.Range(-range, range));
        }
        else
        {
            target = new Vector3(Random.Range(arenaStart.x + 2, arenaEnd.x - 2), arenaStart.y + 0.5f, Random.Range(arenaStart.z + 2, arenaEnd.z - 2));
        }
        GameObject o = Instantiate(WarningPrefab, target, Quaternion.Euler(90, 0, 0));

        yield return(new WaitForSeconds(2.25f));

        GameObject       obj = Instantiate(LargeFlamePrefab, target, Quaternion.Euler(90, 0, 0));
        ProjectileBehave pbh = obj.GetComponent <ProjectileBehave>();

        obj.GetComponent <SphereCollider>().radius = 0.31f;
        obj.transform.localScale = new Vector3(6.5f, 6.5f, 6.5f);
        pbh.speed       = 0f;
        pbh.destroyable = false;
        Damage dmg = new Damage(0f, Random.Range(70f, 100f) * Level, false, false, true);

        pbh.dmg = stats.RealDamage(dmg);
        pbh.ttl = 0.2f;
        Destroy(o);
    }
Exemplo n.º 6
0
    protected override void Activate()
    {
        GameObject       obj = Instantiate(projectile, gameObject.transform.position + new Vector3(0, 2f, 0), new Quaternion());
        ProjectileBehave pbh = obj.GetComponent <ProjectileBehave>();
        //obj.transform.LookAt(mpd.CalculateWorldPosition());
        var lookPos = mpd.CalculateWorldPosition() - transform.position;

        lookPos.y = 0;
        var rotation = Quaternion.LookRotation(lookPos);

        obj.transform.rotation   = Quaternion.Slerp(transform.rotation, rotation, 1f);
        obj.transform.localScale = new Vector3(0.4f, 0.4f, 0.4f);
        pbh.speed = projSpeed;
        Damage dmg = new Damage(0f, Random.Range(dmgMin, dmgMax), false, false, true);

        pbh.dmg = stats.RealDamage(dmg);
        TimedBuff tb   = ignite.Instance;
        Stat      stat = tb.Stats.Find(item => item.Name == Stat.HEALTH_REGEN);

        stat.Value   = stats.RealDotDamage(stat.Value, igniteMult, false, true, false, false, true);
        tb.Duration += igniteDur;
        tb.IsUnique  = !igniteStack;
        pbh.dmg.buffs.Add(tb);
        pbh.friendly = true;
        pbh.ttl      = 2f;
    }
Exemplo n.º 7
0
    IEnumerator AbilZeroAsync()
    {
        playerTracker.pause = true;
        Vector3 rotateOffset = new Vector3();
        int     made         = 0;

        while (made < 24)
        {
            GameObject       obj = Instantiate(LargeFlamePrefab, gameObject.transform.position + new Vector3(0, 2f, 0), new Quaternion());
            ProjectileBehave pbh = obj.GetComponent <ProjectileBehave>();
            obj.transform.localScale = new Vector3(2.5f, 2.5f, 2.5f);
            obj.transform.rotation   = transform.rotation;
            obj.transform.Rotate(rotateOffset);
            obj.transform.Translate(Vector3.forward * 2);
            pbh.speed = 11f + Level / 2;
            Damage dmg = new Damage(0f, Random.Range(82.5f, 97.5f) * Level, true, false, false);
            pbh.dmg = stats.RealDamage(dmg);
            pbh.ttl = 5f;
            if (made > 2 && made < 8)
            {
                rotateOffset += new Vector3(0, 7f, 0);
            }
            else if (made > 16 && made < 22)
            {
                rotateOffset += new Vector3(0, 4f, 0);
            }
            else if (made > 2 && made < 22)
            {
                rotateOffset += new Vector3(0, -7f, 0);
            }
            ++made;
            yield return(new WaitForSeconds(0.166f));
        }

        playerTracker.pause = false;
        inUse = false;
        float choice = Random.Range(0f, 1f);

        if (choice < 0.4)
        {
            nextAttack = 0;
        }
        else if (choice < 0.65)
        {
            nextAttack = 2;
        }
        else
        {
            nextAttack = 1;
        }
    }
Exemplo n.º 8
0
    override public void OnDeath()
    {
        int expected = 12;

        for (int i = 0; i < expected; ++i)
        {
            GameObject       obj = Instantiate(smallProj, transform.position, Quaternion.Euler(0, 360 / expected * i, 0));
            ProjectileBehave pbh = obj.GetComponent <ProjectileBehave>();
            obj.transform.localScale = new Vector3(0.7f, 0.7f, 0.7f);
            obj.transform.Translate(Vector3.forward * 0.5f);
            pbh.dmg = childDamage;
            pbh.ttl = 5f;
        }
    }
    protected override void Activate()
    {
        GameObject       obj = Instantiate(projectile, gameObject.transform.position + new Vector3(0, 1.5f, 0), new Quaternion());
        ProjectileBehave pbh = obj.GetComponentInChildren <ProjectileBehave>();

        obj.transform.localScale = new Vector3(10.3f, 1f, 10.3f);
        Damage dmg;
        float  hplost = StatBlock.CalcMult(stats.HealthMax, stats.PhantomHpMult) * cost;

        stats.HealthCur -= hplost;
        Debug.Log("Cost player " + hplost + " hp.");
        dmg     = new Damage(0f, hplost * dmgRatio, false, false, true);
        pbh.dmg = stats.RealDamage(dmg);
    }
    void ProjectileAttack()
    {
        // Generates projectiles
        GameObject       projectileInstance = Instantiate(projectile, transform.position, transform.rotation);
        ProjectileBehave pbh = projectileInstance.GetComponent <ProjectileBehave>();
        var lookPos          = target.transform.position - transform.position;

        lookPos.y = 0;
        var rotation = Quaternion.LookRotation(lookPos);

        projectileInstance.transform.rotation = Quaternion.Slerp(transform.rotation, rotation, 1f);

        Damage dmg = new Damage(Random.Range(weaponDmgMin, weaponDmgMax), 0f, true, false, false);

        pbh.dmg = stats.RealDamage(dmg);
        pbh.ttl = 3f;
    }
Exemplo n.º 11
0
    void FireProjectile()
    {
        GameObject obj     = Instantiate(projectile, gameObject.transform.position + new Vector3(0, 2f, 0), new Quaternion());
        var        lookPos = mpd.CalculateWorldPosition() - transform.position;

        lookPos.y = 0;
        var rotation         = Quaternion.LookRotation(lookPos);
        ProjectileBehave pbh = obj.GetComponent <ProjectileBehave>();

        obj.transform.rotation   = Quaternion.Slerp(transform.rotation, rotation, 1f);
        obj.transform.localScale = new Vector3(1.5f, 1.5f, 1.5f);
        pbh.speed = projSpeed;
        Damage dmg = new Damage(0f, Random.Range(dmgMin, dmgMax), true, false, false);

        pbh.dmg      = stats.RealDamage(dmg);
        pbh.ttl      = 2f;
        pbh.friendly = true;
    }
Exemplo n.º 12
0
    IEnumerator AbilShoot()
    {
        int circleRad = (int)outerShootCount;

        if (innerCircle)
        {
            circleRad = (int)innerShootCount;
        }
        for (int i = 0; i < circleRad; i++)
        {
            GameObject       obj = Instantiate(FireballPrefab, gameObject.transform.position + new Vector3(shootStartRadius, 0.5f, 0), new Quaternion());
            ProjectileBehave pbh = obj.GetComponentInChildren <ProjectileBehave>();
            obj.transform.RotateAround(transform.position, Vector3.up, 360 / circleRad * i);
            Damage dmg = new Damage(0f, Random.Range(82.5f * Level, 97.5f * Level), true, true, false);
            pbh.dmg   = stats.RealDamage(dmg);
            pbh.speed = 0.5f;
        }
        yield return(new WaitForSeconds(0.1f));
    }
Exemplo n.º 13
0
    IEnumerator FireProjectile()
    {
        Vector3 posMod    = Vector3.zero;
        int     rotMod    = 0;
        int     tempCount = 1;
        int     currCount = 0;

        while (currCount < projCount)
        {
            GameObject       obj = Instantiate(projectile, mpd.CalculateWorldPosition() + new Vector3(0, 6, 0), new Quaternion()); //at mouse position, 6m up.
            ProjectileBehave phb = obj.GetComponent <ProjectileBehave>();
            obj.transform.Rotate(90, rotMod, 0);                                                                                   //rotate around pivot
            obj.transform.Translate(posMod);                                                                                       //adjust forward
            obj.transform.localScale = new Vector3(2f, 2f, 2f);
            currCount++;
            rotMod = rotMod + (360 / tempCount);
            if (currCount == 1)
            {
                posMod = new Vector3(2, 0, 0);
                if (projCount != 7)
                {
                    tempCount = (int)((projCount - 1) / 3);
                }
                else
                {
                    tempCount = 6;
                }
            }
            else if (currCount == ((projCount - 1) / 3) + 1 && projCount != 7)
            {
                posMod    = new Vector3(4, 0, 0);
                tempCount = (int)(projCount - 1) - tempCount;
                rotMod    = 0;
            }
            phb.friendly = true;
            phb.speed    = 15;
            Damage dmg = new Damage(0f, Random.Range(dmgMin, dmgMax), true, false, false);
            phb.dmg = stats.RealDamage(dmg);
            phb.ttl = 2f;
        }
        yield return(null);
    }
Exemplo n.º 14
0
    IEnumerator AbilOneAsync()
    {
        yield return(new WaitForSeconds(0.7f));

        int projCast = 0;

        while (projCast < 15)
        {
            ++projCast;
            GameObject       obj = Instantiate(VolleyPrefab, gameObject.transform.position + new Vector3(0, 1.5f, 0), new Quaternion());
            ProjectileBehave pbh = obj.GetComponent <ProjectileBehave>();
            var lookPos          = player.transform.position - transform.position;
            lookPos.y = 0;
            var rotation = Quaternion.LookRotation(lookPos);
            obj.transform.rotation = Quaternion.Slerp(transform.rotation, rotation, 1f);

            obj.transform.Rotate(Vector3.up * 90 * Random.Range(-0.03f, 0.03f), Space.World);
            obj.transform.localScale = new Vector3(1f, 1f, 1f);
            pbh.speed = 35f;
            Damage dmg = new Damage(0f, Random.Range(45f, 60f) * Level, true, false, false);
            pbh.dmg = stats.RealDamage(dmg);
            pbh.ttl = 3f;

            yield return(new WaitForSeconds(0.15f));
        }
        animator.SetBool("attack2bool", false);
        inUse = false;
        float choice = Random.Range(0f, 1f);

        if (choice < 0.6)
        {
            nextAttack = 2;
        }
        else if (choice < 0.85)
        {
            nextAttack = 0;
        }
        else
        {
            nextAttack = 1;
        }
    }
Exemplo n.º 15
0
    public void ProjectileAttack(GameObject projectile, float ttl, float height = 0f)
    {
        // Generate a projectile instance and get its behave script
        GameObject       projectileInstance = Instantiate(projectile, transform.position + new Vector3(0f, height, 0f), transform.rotation);
        ProjectileBehave projectileBehave   = projectileInstance.GetComponent <ProjectileBehave>();

        projectileBehave.ttl = ttl;

        var lookPos = target.transform.position - transform.position;

        lookPos.y = 0;
        var rotation = Quaternion.LookRotation(lookPos);

        projectileInstance.transform.rotation = Quaternion.Slerp(transform.rotation, rotation, 1f);

        // Cause damage
        Damage dmg = new Damage(Random.Range(dmgMin, dmgMax), 0f, false, true, false);

        projectileBehave.dmg = statBlock.RealDamage(dmg);
    }
    void AttackPlayer()
    {
        GameObject o = GameObject.CreatePrimitive(PrimitiveType.Sphere);

        o.transform.position = transform.position;
        o.transform.LookAt(target.transform);
        o.transform.localScale = new Vector3(0.4f, 0.4f, 0.4f);
        Damage dmg = new Damage(Random.Range(weaponDmgMin, weaponDmgMax), 0f, true, false, false);

        dmg = stats.RealDamage(dmg);
        ProjectileBehave pb = o.AddComponent <ProjectileBehave>();

        pb.dmg   = dmg;
        pb.speed = 5f;
        pb.ttl   = 5f;
        o.GetComponent <SphereCollider>().isTrigger = true;
        Rigidbody rb = o.AddComponent <Rigidbody>();

        rb.isKinematic = true;
    }
Exemplo n.º 17
0
    IEnumerator AbilZeroAsync()
    {
        playerTracker.pause = true;
        yield return(new WaitForSeconds(0.25f));

        Vector3 rotateOffset = new Vector3(0, -25f, 0);
        int     made         = 0;

        while (made < 3)
        {
            GameObject       obj = Instantiate(MeleeAttackPrefab, gameObject.transform.position + new Vector3(0, 1.5f, 0), new Quaternion());
            ProjectileBehave pbh = obj.GetComponent <ProjectileBehave>();
            obj.transform.rotation = transform.rotation;
            obj.transform.Rotate(rotateOffset);
            obj.transform.Translate(Vector3.forward * (transform.localScale.x / 2f));
            Damage dmg = new Damage(bonusDmg + Random.Range(50 * Level, 60 * Level), 0f, true, true, false);
            dmg.buffs.Add(poison.Instance);
            pbh.dmg = stats.RealDamage(dmg);
            if (made == 0)
            {
                rotateOffset = new Vector3(0, 25f, 0);
            }
            if (made == 1)
            {
                rotateOffset = new Vector3();
            }
            ++made;
            yield return(new WaitForSeconds(0.2f));
        }

        yield return(new WaitForSeconds(0.2f));

        if (!isDead)
        {
            playerTracker.pause = false;
        }
        inUse = false;
        float choice = Random.Range(0f, 1f);

        nextAttack = 1;
    }
Exemplo n.º 18
0
    IEnumerator AsyncMelee()
    {
        yield return(new WaitForSeconds(0.1f));

        GameObject       obj = Instantiate(MeleeAttackPrefab, gameObject.transform.position + new Vector3(0, 1.5f, 0), new Quaternion());
        ProjectileBehave pbh = obj.GetComponent <ProjectileBehave>();

        obj.transform.rotation = transform.rotation;
        obj.transform.Translate(Vector3.forward * (transform.localScale.x / 2f));
        Damage dmg = new Damage(bonusDmg + Random.Range(40, 45) * Level, 0, false, true, false);

        dmg.buffs.Add(poison.Instance);
        pbh.dmg = stats.RealDamage(dmg);
        yield return(new WaitForSeconds(0.3f));

        if (!isDead)
        {
            playerTracker.pause = false;
        }
        inUse = false;
    }
Exemplo n.º 19
0
    IEnumerator AsyncMelee()
    {
        animator.SetTrigger("swordattack");
        yield return(new WaitForSeconds(0.65f));

        GameObject       obj = Instantiate(MeleeAttackPrefab, gameObject.transform.position + new Vector3(0, 0.5f, 0), new Quaternion());
        ProjectileBehave pbh = obj.GetComponentInChildren <ProjectileBehave>();

        obj.transform.rotation = transform.rotation;
        obj.transform.Translate(Vector3.forward * 4.3f);
        Damage dmg = new Damage(Random.Range(75, 95) * Level, Random.Range(25, 35) * Level, false, true, false);

        pbh.dmg = stats.RealDamage(dmg);
        yield return(new WaitForSeconds(1.1f));

        if (!isDead)
        {
            playerTracker.pause = false;
        }
        inUse = false;
    }
Exemplo n.º 20
0
    IEnumerator AbilOneAsync()
    {
        yield return(new WaitForSeconds(0.36f));


        int made = 0;

        while (made < 75)
        {
            GameObject obj = Instantiate(FireballPrefab, gameObject.transform.position + new Vector3(0, 7.5f, 0), Quaternion.Euler(0, 0, 0));
            obj.transform.rotation = transform.rotation;
            obj.transform.Rotate(new Vector3(Random.Range(20, 60), Random.Range(-45, 45), 0));
            ProjectileBehave pbh  = obj.GetComponent <ProjectileBehave>();
            float            size = Random.Range(0.95f, 1.35f);
            obj.transform.localScale = new Vector3(size, size, size);
            obj.transform.Translate(Vector3.forward * 3);
            pbh.speed = 18f;
            Damage dmg = new Damage(0f, Random.Range(45f, 75f) * size * Level, true, false, true);
            pbh.dmg = stats.RealDamage(dmg);
            pbh.ttl = 0.9f + Random.Range(-0.05f, 0.1f);
            ++made;
            yield return(new WaitForSeconds(0.016f));
        }


        yield return(new WaitForSeconds(0.4f));

        inUse = false;
        float choice = Random.Range(0f, 1f);

        if (choice < 0.4)
        {
            nextAttack = 1;
        }
        else
        {
            nextAttack = 0;
        }
    }
Exemplo n.º 21
0
    void FireProjectile()
    {
        GameObject       obj = Instantiate(projectile, gameObject.transform.position + new Vector3(0, 2f, 0), new Quaternion());
        ProjectileBehave pbh = obj.GetComponent <ProjectileBehave>();
        //obj.transform.LookAt(mpd.CalculateWorldPosition());
        var lookPos = mpd.CalculateWorldPosition() - transform.position;

        lookPos.y = 0;
        var rotation = Quaternion.LookRotation(lookPos);

        obj.transform.rotation   = Quaternion.Slerp(transform.rotation, rotation, 1f);
        obj.transform.localScale = new Vector3(0.4f, 0.4f, 0.4f);

        obj.transform.Rotate(Vector3.up * 90 * Random.Range(-projSpread, projSpread), Space.World);
        pbh.speed = projSpeed;
        Damage dmg = new Damage(0f, Random.Range(dmgMin, dmgMax), false, false, true);

        //Debug.Log("Magic Dmg: " + dmg.magicDmgReal);
        pbh.dmg = stats.RealDamage(dmg);
        //Debug.Log("Real Magic Dmg: " + pbh.dmg.magicDmgReal);
        pbh.friendly = true;
        pbh.ttl      = 2f;
    }
Exemplo n.º 22
0
    IEnumerator AbilZeroAsync()
    {
        playerTracker.pause = true;
        yield return(new WaitForSeconds(0.4f));

        int made = 0;

        while (made < 10)
        {
            GameObject       obj = Instantiate(MeleeAttackPrefab, gameObject.transform.position + new Vector3(0, 0.5f, 0), new Quaternion());
            ProjectileBehave pbh = obj.GetComponentInChildren <ProjectileBehave>();
            obj.transform.rotation = transform.rotation;
            obj.transform.Translate(Vector3.forward * (3 + made * 3.5f));
            Damage dmg = new Damage(0f, Random.Range(120f, 150f) * Level, true, true, false);
            pbh.dmg = stats.RealDamage(dmg);
            ++made;
            yield return(new WaitForSeconds(0.15f));
        }

        yield return(new WaitForSeconds(1f));

        if (!isDead)
        {
            playerTracker.pause = false;
        }
        inUse = false;
        float choice = Random.Range(0f, 1f);

        if (choice < 0.4)
        {
            nextAttack = 0;
        }
        else
        {
            nextAttack = 1;
        }
    }
Exemplo n.º 23
0
    IEnumerator AbilFarTeleport()
    {
        int x = Random.Range(-25, 25);
        int z = Random.Range(-6, 21);

        transform.position = new Vector3(x, 0, z);
        ProjectileBehave[] projectiles = new ProjectileBehave[farTeleportCircleCount];
        for (int i = 0; i < farTeleportCircleCount; i++)
        {
            GameObject       obj = Instantiate(FireballPrefab, gameObject.transform.position + new Vector3(farTeleportDistInner, 0.5f, 0), new Quaternion());
            ProjectileBehave pbh = obj.GetComponentInChildren <ProjectileBehave>();
            obj.transform.RotateAround(transform.position, Vector3.up, 360 / farTeleportCircleCount * i);
            Damage dmg = new Damage(0f, Random.Range(82.5f * Level, 97.5f * Level), true, true, false);
            pbh.dmg        = stats.RealDamage(dmg);
            pbh.speed      = 0.0f;
            projectiles[i] = pbh;
        }
        yield return(new WaitForSeconds(0.5f));

        for (int i = 0; i < projectiles.Length; i++)
        {
            projectiles[i].speed = 0.5f;
        }
    }