// Update is called once per frame
    protected override void Update()
    {
        if (!IsDead)
        {
            if (PlayerInSight() && currentState == BossStage.None)
            {
                ChangeCurrentStage();
            }

            if (currentState == BossStage.Stage1)
            {
                //print("Stage1");
                base.Update();
            }

            if (currentState == BossStage.Stage2)
            {
                CanTakeDamage = false;
                NavMesh.speed = 15.0f;
                MoveEnemy(cocoon.transform.position);

                if (NavMesh.remainingDistance == 0)
                {
                    NavMesh.Stop();
                    GetAnimator.SetTrigger("Cocoon");
                    EnableCocoon();
                    SpawnBroodlings();
                }
            }

            if (currentState == BossStage.Stage3)
            {
                DisableCocoon();
                NavMesh.Resume();
                NavMesh.speed = 6.0f;
                CanTakeDamage = true;
                EnableAcidPools();
                base.Update();
            }

            if (CurrentHealth == (getMaxHealth() - getMaxHealth() / 3) && currentState == BossStage.Stage1)
            {
                ChangeCurrentStage();
            }

            if (!brood1.activeSelf && !brood2.activeSelf && !brood3.activeSelf && currentState == BossStage.Stage2)
            {
                CurrentHealth = CurrentHealth - getMaxHealth() / 3;
                ChangeCurrentStage();
            }
        }
        else
        {
            //Completion of level one indicated in character
            player.GetComponent <Character>().FinishedLevel(0);
            player.GetComponent <Character>().finishedLevel = true;
        }
    }
Beispiel #2
0
    void Attack()
    {
        if (IsAttack == true)
        {
            return;
        }

        GetAnimator.SetTrigger("Attack");
    }
Beispiel #3
0
    public override void OnHurt(int amount)
    {
        GetAnimator.SetTrigger("Hurt");
        base.OnHurt(amount);
        OffAttack();

        if (Health <= 0)
        {
            Dead();
        }
    }
    void OnCollisionEnter(Collision col)
    {
        if (col.gameObject.CompareTag("Player"))
        {
            GetAnimator.SetTrigger("Attack");
        }

        if (col.gameObject.CompareTag("Weapon") && canTakeDamage && !sheildOn && base.IsAlive)
        {
            print("BOSS HIT");
            CurrentHealth -= 25.0f;
            StartCoroutine(damageDelay());
        }
    }