public override void SecondaryAbility() { GameObject fball = Instantiate("DaenerysFireball"); fball.transform.SetPosition(GetSecondaryPosition(curr_position)); fball.transform.SetRotation(player.transform.GetRotation()); Fireball fballscript = fball.GetComponent <Fireball>(); fballscript.vfront = curr_forward; fballscript.fireball_particles = daenerys_fireball_particles; fballscript.fireball_particles2 = daenerys_fireball_particles2; fballscript.fireball_particles3 = daenerys_fireball_particles3; fballscript.fireball_particles4 = daenerys_fireball_particles4; fballscript.SetDamage(sec_ability_dmg); GameObject coll_object = PhysX.RayCast(curr_position, curr_forward, 254.0f); if (coll_object != null) { coll_object.GetTag(); if (coll_object.CompareTag("Enemy")) { fballscript.vfront = GetSecondaryForwardToEnemy(fball.transform.GetPosition(), coll_object.transform.GetPosition()); } } // Decrease stamina ----------- DecreaseStamina(sec_ability_cost); }
public override void ControlCharacter() { //Debug.Log(state, Department.PLAYER, Color.PINK); curr_hp = health.GetCurrentHealth(); // First check if you are alive if (curr_hp > 0) { //Check play breath audio base.CheckHealth(curr_hp, max_hp, "DaenerysBreathing"); // Check if player is moving to block attacks/abilities if (!movement.IsMoving()) { /* Player is alive */ switch (state) { case State.IDLE: { //Check For Input + It has to check if she's moving to block attack (¿?) CheckAttack(); break; } case State.ATTACKING: { AttackLeftTimer += Time.deltaTime; //Check for end of the Attack animation if (anim_controller.IsAnimationStopped("Idle")) { if (anim_controller.IsAnimOverXTime(0.6f) && play_audio_roar) { GameObject flamethr = Instantiate("CorrectDaenerysFireBreath"); flamethr.transform.SetPosition(GetFlameBreathPosition(curr_position)); flamethr.transform.SetRotation(flamethr.transform.GetRotation()); Fireball fballscript = flamethr.GetComponent <Fireball>(); fballscript.vfront = curr_forward; fballscript.SetDamage(left_ability_dmg); fballscript.SetDistance(left_ability_distance); GameObject coll_object = PhysX.RayCast(curr_position, curr_forward, 254.0f); if (coll_object != null) { coll_object.GetTag(); if (coll_object.CompareTag("Enemy")) { fballscript.vfront = GetSecondaryForwardToEnemy(flamethr.transform.GetPosition(), coll_object.transform.GetPosition()); } } PlayFx("DaenerysDragonRoar"); play_audio_roar = false; } if (anim_controller.IsAnimationStopped("AttackLeft")) { state = State.IDLE; } } else if (play_audio_roar == false) { state = State.IDLE; } if (AttackLeftTimer >= 1.35f) { state = State.IDLE; } break; } case State.FIRE_WALL: { //Check for end of the Attack animation if (anim_controller.IsAnimationStopped("Idle")) { if (set_fire_wall == false && anim_controller.IsAnimOverXTime(0.3f)) { int tile_x, tile_y; movement.GetPlayerPos(out tile_x, out tile_y); Vector3 player_pos = player.GetComponent <Transform>().GetPosition(); player_pos.y -= 9.1f; MovementController.Direction direction = movement.curr_dir; switch (direction) { case MovementController.Direction.NORTH: { tile_y -= 1; player_pos.z -= 25.4f; break; } case MovementController.Direction.SOUTH: { tile_y += 1; player_pos.z += 25.4f; break; } case MovementController.Direction.EAST: { tile_x += 1; player_pos.x += 25.4f; break; } case MovementController.Direction.WEST: { tile_x -= 1; player_pos.x -= 25.4f; break; } default: { break; } } //GET TILE POS! GameObject fire_wall = Instantiate("FireWall"); fire_wall.transform.SetPosition(player_pos); FireWall fire_wall_controller = fire_wall.GetComponent <FireWall>(); fire_wall_controller.SetTiles(tile_x, tile_y); fire_wall_controller.SetDamage(right_ability_dmg); set_fire_wall = true; } if (anim_controller.IsAnimOverXTime(0.8f)) { state = State.IDLE; } } else if (set_fire_wall == true && IsAnimationStopped("AttackRight")) { state = State.IDLE; } break; } case State.HIT: { //Check for end of the Attack animation if (anim_controller.IsAnimationStopped("Hit")) { state = State.IDLE; } break; } case State.DEAD: { break; } default: { break; } } } } }