示例#1
0
    IEnumerator FireAttackAsync()
    {
        yield return(new WaitForSeconds(0.15f));

        GameObject       obj = Instantiate(BulletHellPrefab, gameObject.transform.position + new Vector3(0, 1f, 0), new Quaternion());
        DragonBulletHell pbh = obj.GetComponent <DragonBulletHell>();

        obj.transform.localScale = new Vector3(2f, 2f, 2f);
        obj.transform.rotation   = transform.rotation;
        obj.transform.Translate(Vector3.forward * 1);
        pbh.speed = 16f;
        Damage dmg = new Damage(0f, 0f, true, false, false);

        pbh.dmg = stats.RealDamage(dmg);
        pbh.ttl = 5f;
        Damage dmgChild = new Damage(0f, Random.Range(25f * Level, 50f * Level), true, false, true);

        pbh.childDamage = stats.RealDamage(dmgChild);
        yield return(new WaitForSeconds(0.2f));

        if (targetRandomly)
        {
            targetRot = Quaternion.Euler(0, Random.Range(0, 360), 0);
        }
    }
    void MeleeAttack()
    {
        Damage dmg = new Damage(Random.Range(weaponDmgMin, weaponDmgMax), 0f, true, false, false);

        dmg = stats.RealDamage(dmg);
        GameObject remy  = GameObject.Find("remy");
        StatBlock  enemy = remy.GetComponent <StatBlock>();

        if (enemy != null)
        {
            enemy.TakeDamage(dmg, remy);
        }
    }
    protected override void Activate()
    {
        GameObject      obj = Instantiate(projectile, gameObject.transform.position + new Vector3(0f, 2f, 0f), new Quaternion());
        HorizontalSwipe pbh = obj.GetComponent <HorizontalSwipe>();

        obj.transform.LookAt(mpd.CalculateWorldPosition());
        var lookPos = mpd.CalculateWorldPosition() - transform.position;

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

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

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

        // Debug.Log("just like the white winged dove : " + stat.Name + stat.Value + slowdownMult);
        stat = new Stat(stat.Name, StatBlock.CalcMult(stat.Value, slowdownMult));
        tb.Stats.Remove(new Stat(Stat.MOVE_SPEED_MULT));
        tb.Stats.Add(stat);
        tb.Duration += slowdownDur;
        tb.IsUnique  = !slowdownStack;
        pbh.dmg.buffs.Add(tb);
        pbh.friendly = true;
        pbh.ttl      = 4000f;
        pbh.player   = gameObject;
    }
示例#4
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);
    }
    void AttackPlayer()
    {
        // Old code - to be removed...
        // GameObject o = GameObject.CreatePrimitive(PrimitiveType.Sphere);
        // o.transform.position = transform.position;
        // o.GetComponent<Renderer>().material.SetColor("_Color", Color.red);
        // o.transform.LookAt(target.transform);
        // o.transform.localScale = new Vector3(0.4f, 0.4f, 0.4f);
        // o.transform.parent = transform;
        // Damage dmg = new Damage(Random.Range(weaponDmgMin, weaponDmgMax), 0f, true, false, false);
        // dmg = stats.RealDamage(dmg);
        // ProjectileController pb = o.AddComponent<ProjectileController>();
        // pb.dmg = dmg;
        // pb.speed = 10f;
        // pb.ttl = 5f;
        // o.GetComponent<SphereCollider>().isTrigger = true;
        // Rigidbody rb = o.AddComponent<Rigidbody>();
        // rb.useGravity = false;
        // rb.isKinematic = true;

        // Generates projectiles
        var             projectileInstance = Instantiate(projectile, transform.position, transform.rotation);
        ProjectileMover pm = projectileInstance.GetComponent <ProjectileMover>();

        projectileInstance.GetComponent <SphereCollider>().isTrigger = true;
        projectileInstance.transform.parent = transform;

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

        dmg    = stats.RealDamage(dmg);
        pm.dmg = dmg;
    }
示例#6
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);
    }
示例#7
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;
    }
示例#8
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);
    }
    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;
    }
    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;
    }