/// <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; } } }