示例#1
0
    /// <summary>
    /// Initial call to start the ability
    /// </summary>
    /// <param name="colour">Type of colour to use with ability</param>
    public void Aoe_Abilitiy(int colour)
    {
        player_Colour = colour;
        if (!aoe_Attack_Is_On_Colldown)
        {
            //Setting animation trigger for ability
            anim.SetTrigger("Spell");
            local_Player_Manager.Aoe_Sound.Play();
            local_Camera_Controller.StartCoroutine("Chromatic");


            switch (local_Player_Manager.local_Selected_Colour)
            {
            case Player_Manager.Selected_Colour.RED:
                StartCoroutine("Play_Particle_Effect", aoe_Particles_Red);
                break;

            case Player_Manager.Selected_Colour.BLUE:
                StartCoroutine("Play_Particle_Effect", aoe_Particles_Blue);
                break;

            case Player_Manager.Selected_Colour.YELLOW:
                StartCoroutine("Play_Particle_Effect", aoe_Particles_Yellow);
                break;

            case Player_Manager.Selected_Colour.PURPLE:
                StartCoroutine("Play_Particle_Effect", aoe_Particles_Purple);
                break;

            case Player_Manager.Selected_Colour.GREEN:
                StartCoroutine("Play_Particle_Effect", aoe_Particles_Green);
                break;

            case Player_Manager.Selected_Colour.ORANGE:
                StartCoroutine("Play_Particle_Effect", aoe_Particles_Orange);
                break;

            case Player_Manager.Selected_Colour.DEFAULT:
                StartCoroutine("Play_Particle_Effect", aoe_Particles_Default);
                break;
            }

            local_Player_Input.StopCoroutine("Halt_Player");
            local_Player_Input.StartCoroutine("Halt_Player");
            local_UI_Manager.aoe_Cooldown_Timer = aoe_Attack_Cooldown;
            enemies_Hit = Physics.OverlapSphere(gameObject.transform.position, aoe_Radius);
            StartCoroutine("Knock_Enemies_Back");
            StartCoroutine("Stop_Knockback");
            StartCoroutine("Reset_Knockback_cooldown");
        }
    }
    /// <summary>
    /// checks for the players selected colour, and sets damage reductions to certain colours based on this
    /// </summary>
    /// <param name="colour"></param>
    public void Shield_Ability(int colour)
    {
        if (can_Cast)
        {
            //Setting animation trigger for ability
            anim.SetTrigger("Spell");
            local_Player_manager.Shield_Sound.Play();
            local_Player_Input.StopCoroutine("Halt_Player");
            local_Player_Input.StartCoroutine("Halt_Player");
            can_Cast = false;
            local_UI_Manager.shield_Cooldown_Timer = cooldown;
            switch (colour)
            {
            case 0:
                Shield_Particles_Red.SetActive(true);
                local_Player_manager.red_Damage_Reduction    = selected_Colour_Reduction;
                local_Player_manager.blue_Damage_Reduction   = base_Reduction;
                local_Player_manager.yellow_Damage_Reduction = base_Reduction;
                local_Player_manager.purple_Damage_Reduction = base_Reduction;
                local_Player_manager.green_Damage_Reduction  = base_Reduction;
                local_Player_manager.orange_Damage_Reduction = base_Reduction;

                StartCoroutine("End_Shield", Shield_Particles_Red);
                break;

            case 1:
                Shield_Particles_Blue.SetActive(true);
                local_Player_manager.red_Damage_Reduction    = base_Reduction;
                local_Player_manager.blue_Damage_Reduction   = selected_Colour_Reduction;
                local_Player_manager.yellow_Damage_Reduction = base_Reduction;
                local_Player_manager.purple_Damage_Reduction = base_Reduction;
                local_Player_manager.green_Damage_Reduction  = base_Reduction;
                local_Player_manager.orange_Damage_Reduction = base_Reduction;
                StartCoroutine("End_Shield", Shield_Particles_Blue);
                break;

            case 2:
                Shield_Particles_Yellow.SetActive(true);
                local_Player_manager.red_Damage_Reduction    = base_Reduction;
                local_Player_manager.blue_Damage_Reduction   = base_Reduction;
                local_Player_manager.yellow_Damage_Reduction = selected_Colour_Reduction;
                local_Player_manager.purple_Damage_Reduction = base_Reduction;
                local_Player_manager.green_Damage_Reduction  = base_Reduction;
                local_Player_manager.orange_Damage_Reduction = base_Reduction;
                StartCoroutine("End_Shield", Shield_Particles_Yellow);
                break;

            case 3:
                Shield_Particles_Purple.SetActive(true);
                local_Player_manager.red_Damage_Reduction    = base_Reduction;
                local_Player_manager.blue_Damage_Reduction   = base_Reduction;
                local_Player_manager.yellow_Damage_Reduction = base_Reduction;
                local_Player_manager.purple_Damage_Reduction = selected_Colour_Reduction;
                local_Player_manager.green_Damage_Reduction  = base_Reduction;
                local_Player_manager.orange_Damage_Reduction = base_Reduction;
                StartCoroutine("End_Shield", Shield_Particles_Purple);
                break;

            case 4:
                Shield_Particles_Green.SetActive(true);
                local_Player_manager.red_Damage_Reduction    = base_Reduction;
                local_Player_manager.blue_Damage_Reduction   = base_Reduction;
                local_Player_manager.yellow_Damage_Reduction = base_Reduction;
                local_Player_manager.purple_Damage_Reduction = base_Reduction;
                local_Player_manager.green_Damage_Reduction  = selected_Colour_Reduction;
                local_Player_manager.orange_Damage_Reduction = base_Reduction;
                StartCoroutine("End_Shield", Shield_Particles_Green);
                break;

            case 5:
                Shield_Particles_Orange.SetActive(true);
                local_Player_manager.red_Damage_Reduction    = base_Reduction;
                local_Player_manager.blue_Damage_Reduction   = base_Reduction;
                local_Player_manager.yellow_Damage_Reduction = base_Reduction;
                local_Player_manager.purple_Damage_Reduction = base_Reduction;
                local_Player_manager.green_Damage_Reduction  = base_Reduction;
                local_Player_manager.orange_Damage_Reduction = selected_Colour_Reduction;
                StartCoroutine("End_Shield", Shield_Particles_Orange);
                break;

            case 6:
                Shield_Particles_Default.SetActive(true);
                local_Player_manager.red_Damage_Reduction    = base_Reduction;
                local_Player_manager.blue_Damage_Reduction   = base_Reduction;
                local_Player_manager.yellow_Damage_Reduction = base_Reduction;
                local_Player_manager.purple_Damage_Reduction = base_Reduction;
                local_Player_manager.green_Damage_Reduction  = base_Reduction;
                local_Player_manager.orange_Damage_Reduction = base_Reduction;
                StartCoroutine("End_Shield", Shield_Particles_Default);
                break;

            default:
                break;
            }

            StartCoroutine("Cooldown_Reset");
        }
    }
    /// <summary>
    /// selects a rune from a certain array, based on player colour, calls for it to be initialised and then moves the index of the array on
    /// </summary>
    /// <param name="colour">Colour of rune used</param>
    public void Rune_Drop(int colour)
    {
        if (number_Of_Runes_Placed < player_Rune_Capacity)
        {
            //Setting animation trigger for ability
            anim.SetTrigger("Spell");
            local_Player_Manager.Rune_Sound.Play();
            local_Player_Input.StopCoroutine("Halt_Player");
            local_Player_Input.StartCoroutine("Halt_Player");
            switch ((int)local_Player_Manager.local_Selected_Colour)
            {
            case 0:
                red_Rune_Drop_Objects[current_Red_Rune_Drop_Object].transform.position = new Vector3(gameObject.transform.position.x, red_Rune_Drop_Objects[current_Red_Rune_Drop_Object].transform.position.y, gameObject.transform.position.z);
                red_Rune_Drop_Objects[current_Red_Rune_Drop_Object].SetActive(true);
                red_Rune_Drop_Objects[current_Red_Rune_Drop_Object].GetComponent <Rune_Manager>().Set_Up_Rune(slow_Amount, damage_Per_Rune, rune_Blast_Radius, slow_Duration, colour, rune_Trigger_Radius);
                number_Of_Runes_Placed++;
                current_Red_Rune_Drop_Object++;
                if (current_Red_Rune_Drop_Object > red_Rune_Drop_Objects.Length - 1)
                {
                    current_Red_Rune_Drop_Object = 0;
                }
                break;

            case 1:
                blue_Rune_Drop_Objects[current_Blue_Rune_Drop_Object].transform.position = new Vector3(gameObject.transform.position.x, blue_Rune_Drop_Objects[current_Blue_Rune_Drop_Object].transform.position.y, gameObject.transform.position.z);
                blue_Rune_Drop_Objects[current_Blue_Rune_Drop_Object].SetActive(true);
                blue_Rune_Drop_Objects[current_Blue_Rune_Drop_Object].GetComponent <Rune_Manager>().Set_Up_Rune(slow_Amount, damage_Per_Rune, rune_Blast_Radius, slow_Duration, colour, rune_Trigger_Radius);
                number_Of_Runes_Placed++;
                current_Blue_Rune_Drop_Object++;
                if (current_Blue_Rune_Drop_Object > blue_Rune_Drop_Objects.Length - 1)
                {
                    current_Blue_Rune_Drop_Object = 0;
                }
                break;

            case 2:
                yellow_Rune_Drop_Objects[current_Yellow_Rune_Drop_Object].transform.position = new Vector3(gameObject.transform.position.x, yellow_Rune_Drop_Objects[current_Yellow_Rune_Drop_Object].transform.position.y, gameObject.transform.position.z);
                yellow_Rune_Drop_Objects[current_Yellow_Rune_Drop_Object].SetActive(true);
                yellow_Rune_Drop_Objects[current_Yellow_Rune_Drop_Object].GetComponent <Rune_Manager>().Set_Up_Rune(slow_Amount, damage_Per_Rune, rune_Blast_Radius, slow_Duration, colour, rune_Trigger_Radius);
                number_Of_Runes_Placed++;
                current_Yellow_Rune_Drop_Object++;
                if (current_Yellow_Rune_Drop_Object > yellow_Rune_Drop_Objects.Length - 1)
                {
                    current_Yellow_Rune_Drop_Object = 0;
                }
                break;

            case 3:
                purple_Rune_Drop_Objects[current_Purple_Rune_Drop_Object].transform.position = new Vector3(gameObject.transform.position.x, purple_Rune_Drop_Objects[current_Purple_Rune_Drop_Object].transform.position.y, gameObject.transform.position.z);
                purple_Rune_Drop_Objects[current_Purple_Rune_Drop_Object].SetActive(true);
                purple_Rune_Drop_Objects[current_Purple_Rune_Drop_Object].GetComponent <Rune_Manager>().Set_Up_Rune(slow_Amount, damage_Per_Rune, rune_Blast_Radius, slow_Duration, colour, rune_Trigger_Radius);
                number_Of_Runes_Placed++;
                current_Purple_Rune_Drop_Object++;
                if (current_Purple_Rune_Drop_Object > purple_Rune_Drop_Objects.Length - 1)
                {
                    current_Purple_Rune_Drop_Object = 0;
                }
                break;

            case 4:
                green_Rune_Drop_Objects[current_Green_Rune_Drop_Object].transform.position = new Vector3(gameObject.transform.position.x, green_Rune_Drop_Objects[current_Green_Rune_Drop_Object].transform.position.y, gameObject.transform.position.z);
                green_Rune_Drop_Objects[current_Green_Rune_Drop_Object].SetActive(true);
                green_Rune_Drop_Objects[current_Green_Rune_Drop_Object].GetComponent <Rune_Manager>().Set_Up_Rune(slow_Amount, damage_Per_Rune, rune_Blast_Radius, slow_Duration, colour, rune_Trigger_Radius);
                number_Of_Runes_Placed++;
                current_Green_Rune_Drop_Object++;
                if (current_Green_Rune_Drop_Object > green_Rune_Drop_Objects.Length - 1)
                {
                    current_Green_Rune_Drop_Object = 0;
                }
                break;

            case 5:
                orange_Rune_Drop_Objects[current_Orange_Rune_Drop_Object].transform.position = new Vector3(gameObject.transform.position.x, orange_Rune_Drop_Objects[current_Orange_Rune_Drop_Object].transform.position.y, gameObject.transform.position.z);
                orange_Rune_Drop_Objects[current_Orange_Rune_Drop_Object].SetActive(true);
                orange_Rune_Drop_Objects[current_Orange_Rune_Drop_Object].GetComponent <Rune_Manager>().Set_Up_Rune(slow_Amount, damage_Per_Rune, rune_Blast_Radius, slow_Duration, colour, rune_Trigger_Radius);
                number_Of_Runes_Placed++;
                current_Orange_Rune_Drop_Object++;
                if (current_Orange_Rune_Drop_Object > orange_Rune_Drop_Objects.Length - 1)
                {
                    current_Orange_Rune_Drop_Object = 0;
                }
                break;

            case 6:
                default_Rune_Drop_Objects[current_Default_Rune_Drop_Object].transform.position = new Vector3(gameObject.transform.position.x, default_Rune_Drop_Objects[current_Default_Rune_Drop_Object].transform.position.y, gameObject.transform.position.z);
                default_Rune_Drop_Objects[current_Default_Rune_Drop_Object].SetActive(true);
                default_Rune_Drop_Objects[current_Default_Rune_Drop_Object].GetComponent <Rune_Manager>().Set_Up_Rune(slow_Amount, damage_Per_Rune, rune_Blast_Radius, slow_Duration, colour, rune_Trigger_Radius);
                number_Of_Runes_Placed++;
                current_Default_Rune_Drop_Object++;
                if (current_Default_Rune_Drop_Object > default_Rune_Drop_Objects.Length - 1)
                {
                    current_Default_Rune_Drop_Object = 0;
                }
                break;

            default:
                break;
            }
        }
    }