コード例 #1
0
 private void SetupPhase(BossPhase phase)
 {
     foreach (var mechanic in phase.mechanics)
     {
         AddAbilitiesForMechanic(mechanic);
     }
 }
コード例 #2
0
    public void StartBossFight()
    {
        AudioSources.instance.PlayMusic((int)AudiosMusic.CombatTheme);
        Invoke("PlayVoice", 0.9f);
        Debug.Log("start boss fight");
        turretsManager.RestartBossCombat();

        isAwaken = true;
        //if (rocketSpawnManager != null)
        //{
        //    GameObject prefab;
        //    prefab = (GameObject)Instantiate(rocketSpawnManager);
        //    prefab.name = "RocketSpawnManager";
        //}
        UpdateHpSlider();

        canvasGO.SetActive(true);
        if (bossCam)
        {
            bossCam.StartFollowing();
        }
        if (bossPhases.Length > 0)
        {
            currentPhaseId = 0;
            currentPhase   = bossPhases[currentPhaseId];
            currentPhase.StartPhase();
        }
    }
コード例 #3
0
ファイル: Boss.cs プロジェクト: DavidXT/ZeldaLike
 protected override void Attack()
 {
     if (fireCountdown <= zero)                //Check si le boss peut tirer
     {
         if (currentState == BossPhase.Phase1) //Check la phase du boss
         {
             //Phase 1
             AttackPhase1();
             if ((float)currentHP / (float)HP <= deuxTier)
             {
                 currentState = BossPhase.Phase2;
             }
         }
         if (currentState == BossPhase.Phase2)
         {
             //Phase 2
             AttackMagicNumbers();
             if ((float)currentHP / (float)HP <= unTier)
             {
                 GameObject bossfield = GameObject.FindGameObjectWithTag("bossField");
                 Destroy(bossfield);
                 currentState = BossPhase.Phase3;
             }
         }
         if (currentState == BossPhase.Phase3)
         {
             //Phase 3
             AttackMagicNumbers();
         }
         fireCountdown = entier1 / fireRate;
     }
     fireCountdown -= Time.deltaTime;
 }
コード例 #4
0
ファイル: Enemy.cs プロジェクト: hoggins/StressTestJam3
        public void TryTakeBossDamage(int lettersCount)
        {
            if (lettersCount == 0)
            {
                _speedMod = 50;
            }

            if (lettersCount >= _currentPhase.LettersCount)
            {
                _speedMod = -60f;

                BossDamageTakenTimes++;
                if (BossDamageTakenTimes >= _currentPhase.HitsCount)
                {
                    _currentBossPhase++;
                    if (_currentBossPhase >= _bossPhases.Count)
                    {
                        StartCoroutine(DoDie());
                    }
                    else
                    {
                        _currentPhase = _bossPhases[_currentBossPhase];
                    }
                }
            }
        }
コード例 #5
0
ファイル: Boss.cs プロジェクト: PeachTreeOath/Mages
    // Use this for initialization
    protected virtual void Start()
    {
        startTime = Time.time;
        totalHp   = hp;
        switch (name)
        {
        case "Genie":
            hpCanvas = GameObject.Find("HPBars").transform.Find("GenieCanvas").gameObject;
            break;

        case "Sphinx":
            hpCanvas = GameObject.Find("HPBars").transform.Find("SphinxCanvas").gameObject;
            break;

        case "Aladdin":
            hpCanvas = GameObject.Find("HPBars").transform.Find("AladdinCanvas").gameObject;
            break;
        }
        hpCanvas.SetActive(true);
        hpMeterImage = hpCanvas.GetComponentInChildren <GameObjectFinder> ().GetComponent <Image> ();

        BossPhase nextPhase = phases[currentPhaseIndex];

        currentPhase = (BossPhase)Instantiate(nextPhase, transform.position, transform.rotation);

        currentPhase.transform.parent = this.transform;

        nextPhaseChangePercent = 1f - ((currentPhaseIndex + 1f) / (float)phases.Length);

        startingPosition = transform.position;
    }
コード例 #6
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.tag == "PlayerProjectile")
        {
            bossHealth--;
            BossHealth.Instance.UpdateHealth(bossHealth);

            if (bossHealth <= 250)
            {
                if (bossPhase != BossPhase.SecondPhase)
                {
                    bossPhase     = BossPhase.SecondPhase;
                    spawnlingMax  = 12;
                    moveSpeed    += 2f;
                    spawnTimerMax = .75f;
                }
            }
            if (bossHealth <= 0)
            {
                BossHealth.Instance.Hide();

                Scoreboard.Instance.AddScore(scoreAmount);

                WinScreenUI.Instance.Show();

                Destroy(gameObject);
            }
            Destroy(collision.gameObject);
        }
    }
コード例 #7
0
        public WizardPear()
        {
            Name = "Wizard Pear";
            TextureID = 29;

            bossPhase = BossPhase.Walk;

            //BaseHealth = 100;
            BaseHealth = 3000;

            //Calculate true health based on the wave number
            Health = BaseHealth;
            CurrentHealth = Health;

            Bounty = 150;

            Damage = 20;

            BaseMovementSpeed = 30;
            MovementSpeed = BaseMovementSpeed;

            Keywords = new List<Keyword>();
            Weaknesses = new float[] { 1f, 1f, 1f, 1f, 1f };

            CurrentState = MonsterState.Normal;

            //base.Initialize();
        }
コード例 #8
0
    protected override void BossAlarm(BossPhase bossPhase)
    {
        switch (bossPhase)
        {
        case BossPhase.Attack:
            GamePlayLine.SetActive(false);
            PaddleChanger.Instance.SetPaddle(PaddleMode.Freedom);
            if (BallObject != null)
            {
                ballPool.push(BallObject);
            }
            brickGenerator.gameObject.SetActive(false);

            StartCoroutine(AttackLoop());
            break;

        case BossPhase.Defense:
            GamePlayLine.SetActive(true);
            PaddleChanger.Instance.SetPaddle(PaddleMode.Limited);

            SpawnBall();

            brickGenerator.gameObject.SetActive(true);
            break;

        default:
            break;
        }
    }
コード例 #9
0
        public void Chooses_Attacks_Randomly()
        {
            SetupTest();
            BossPhase  phase  = CreatePhase("test", 0, 0, 10);
            BossAttack attack = engine.GetNextAttack(phase.Attacks);

            Assert.True(phase.Attacks.Contains(attack));
        }
コード例 #10
0
 public void ChangePhase(BossPhase _newPhase)
 {
     if (currentPhase == _newPhase)
     {
         return;
     }
     currentPhase = _newPhase;
 }
コード例 #11
0
 void startPhase5()
 {
     invincible = false;
     activeShield.GetComponent <EnemyObject>().invincible = false;
     activeShield.SendMessage("takeDamage", 1);
     growl();
     phase = BossPhase.FIVE;
 }
コード例 #12
0
    // Use this for initialization
    void Start()
    {
        phase = BossPhase.phase1;
        GenerateRandomTrap();
        GenerateQTE();

        delayBeforeNextQTE -= Mathf.Clamp(delayBeforeNextQTE * GameController.Instance.gameRatio, 1, 2);
    }
コード例 #13
0
        public void Chooses_Attacks_Single()
        {
            SetupTest();
            BossPhase  phase  = CreatePhase("test", 0, 0, 1);
            BossAttack attack = engine.GetNextAttack(phase.Attacks);

            Assert.AreEqual(attack, phase.Attacks[0]);
        }
コード例 #14
0
        public void Chooses_Attacks_No_Duplicates()
        {
            SetupTest();
            BossPhase  phase   = CreatePhase("test", 0, 0, 2);
            BossAttack attack1 = engine.GetNextAttack(phase.Attacks);
            BossAttack attack2 = engine.GetNextAttack(phase.Attacks, attack1);

            Assert.AreNotEqual(attack1.Name, attack2.Name);
        }
コード例 #15
0
 /* Simply have the mainboss come in
  * And Growl
  */
 void phase0()
 {
     transform.position += transform.up * -1 * (Time.deltaTime * 3);
     if (transform.position.y < mainBossEndingPoint.y)
     {
         phase = BossPhase.ONE;
         growl();
     }
 }
コード例 #16
0
    private void Start()
    {
        BossHealth.Instance.Show();
        BossHealth.Instance.UpdateHealth(bossHealth);

        bossTransform = GetComponent <Transform>();
        // spawnTimer = spawnTimerMax;
        bossPhase = BossPhase.Intro;
    }
コード例 #17
0
    private void Start()
    {
        m_currentPhase = m_phases[0];
        m_currentPhase.Phase.Init(m_movement, m_weapon);

        if (!CurrentIsLastPhase())
        {
            m_nextPhase = m_phases[m_currentPhaseIndex + 1];
        }
    }
コード例 #18
0
ファイル: SquidBoss.cs プロジェクト: Sfalvo1/MoonshotGun
    void Start()
    {
        BossHealth.Instance.Show();
        BossHealth.Instance.UpdateHealth(bossHealth);

        shootTimer = shootTimerMax;

        player = GetComponent <Enemy>().player;

        bossPhase = BossPhase.Intro;
    }
コード例 #19
0
 private void IntroMovement()
 {
     if (Vector2.Distance((Vector2)transform.position, enterPosition) > .1f)
     {
         transform.position = Vector2.MoveTowards((Vector2)transform.position, enterPosition, 3f * Time.deltaTime);
     }
     else
     {
         bossPhase = BossPhase.FirstPhase;
     }
 }
コード例 #20
0
 private void jumping()
 {
     if (CheckFeet())
     {
         rb.velocity = new Vector2(direction.x * speed * Time.fixedDeltaTime, jumpForce);
     }
     if (lookForPlayer())
     {
         currentPhase = BossPhase.Looking;
     }
 }
コード例 #21
0
    private float phase6Cooldown = 0;     //cooldown between lasers to reduce performance demand

    // Use this for initialization
    new void Start()
    {
        base.Start();
        allOfTheOrbs             = new List <GameObject>();
        minions                  = new List <GameObject>();
        phase                    = BossPhase.ZERO;
        transform.localPosition  = mainBossStartingPoint;
        mAnimator                = GetComponent <Animator>();
        mAnimator.enabled        = false;
        GameManager.infinityBoss = this;
    }
コード例 #22
0
        public void SetPhase(BossPhase bossPhase)
        {
            if (ActivePhase == bossPhase)
            {
                return;
            }

            _phases[ActivePhase]?.OnExit();
            ActivePhase = bossPhase;
            _phases[ActivePhase]?.OnEnter();
        }
コード例 #23
0
    void startPhase4()
    {
        invincible   = true;
        activeShield = (GameObject)Instantiate(shieldInstance, transform.position, Quaternion.identity);

        for ( ; numMinionsSpawned < 7; numMinionsSpawned++)
        {
            spawnMinion();
        }

        phase = BossPhase.FOUR;
    }
コード例 #24
0
    private void ChangePhase(BossPhase phase)
    {
        Spawner.Pattern = phase.weapon;

        if (phase.weapon != null)
        {
            ShootCooldown = phase.weapon.shootDelay;
        }

        movement.movementBehaviour = phase.movement;
        nextPhaseTime = Time.time + phase.phaseTimeLength;
    }
コード例 #25
0
    public void OnActivatePhase()
    {
        if (phase >= Phases.Count)
        {
            return;
        }
        BossPhase p = Phases[phase];

        turretsDestroyed = 0;
        foreach (TurretController t in p.Turrets)
        {
            t.ActivateTurret();
        }
    }
コード例 #26
0
    public void OnTurretDestroyed()
    {
        BossPhase p = Phases[phase];

        turretsDestroyed++;
        if (turretsDestroyed == p.Turrets.Count)
        {
            if (p.TriggerName != "")
            {
                animator.SetTrigger(p.TriggerName);
                phase++;
            }
        }
    }
コード例 #27
0
 protected override void Start()
 {
     base.Start();
     animator  = gameObject.GetComponent <Animator>();
     direction = Vector3.zero;
     wallMask  = LayerMask.GetMask("ground");
     canDie    = false;
     playerFilter.SetLayerMask(LayerMask.GetMask("player"));
     playerFilter.useLayerMask = true;
     startPosition             = transform.position;
     startRotation             = transform.rotation;
     currentPhase       = BossPhase.Looking;
     timeLastSeenPlayer = Time.time;
 }
コード例 #28
0
 void TerminateCurrentPhase()
 {
     currentPhase.TerminatePhase();
     currentPhaseId++;
     if (currentPhaseId < bossPhases.Length)
     {
         currentPhase = bossPhases[currentPhaseId];
         currentPhase.StartPhase();
     }
     else
     {
         BossDeath();
     }
 }
コード例 #29
0
ファイル: DesertBoss.cs プロジェクト: rpez/DesertMod
 // Check boss phase
 private void CheckBossPhase()
 {
     if (npc.life >= npc.lifeMax / 2)
     {
         currentPhase = BossPhase.HEALTHY;
     }
     else if (npc.life <= npc.lifeMax / 2 && npc.life >= npc.lifeMax / 3)
     {
         currentPhase = BossPhase.DAMAGED;
     }
     else
     {
         currentPhase = BossPhase.ENRAGED;
     }
 }
コード例 #30
0
    public override IEnumerator ExecuteTurn()
    {
        yield return(base.ExecuteTurn());

        turnsUntilSpawn--;
        if (turnsUntilSpawn <= 0)
        {
            BossPhase phaseData = phaseGroups[CurrentPhase];
            BattleController.Instance.SpawnEnemies(phaseData.spawnGroups, phaseData.numEnemies);
            turnsUntilSpawn = numPhases - CurrentPhase + 1;
            yield return(new WaitForSeconds(1));
        }

        BattleController.Instance.StartPlayerPhase();
    }
コード例 #31
0
ファイル: IAController.cs プロジェクト: eloymore/Proyecto1G06
 /// <summary>
 /// Si su array de células está vacío.
 /// </summary>
 public void CelulaDestroyed()
 {
     numCelulas--;
     if (numCelulas == celulas.Length / 2)
     {
         phase             = BossPhase.Second;
         combinedMaxHealth = celulas[0].maxHealth + celulas[1].maxHealth;
         SetVulnerable(celulas, screen);
     }
     else if (numCelulas == 0)
     {
         phase             = BossPhase.Third;
         combinedMaxHealth = screen.maxHealth;
         SetVulnerable(celulas, screen);
     }
 }
コード例 #32
0
        public AlexanderHamilton()
        {
            Name = "Alexander Hamilton";
            TextureID = 17;

            //BaseHealth = 200;
            BaseHealth = 45000;
            //Calculate true health based on the wave number
            Health = BaseHealth;
            CurrentHealth = Health;

            Bounty = 150;

            Damage = 100;

            currentPhase = 1;
            bossPhase = BossPhase.Walk;

            BaseMovementSpeed = 25;
            MovementSpeed = BaseMovementSpeed;

            Keywords = new List<Keyword>();
            Weaknesses = new float[] { 1f, 1f, 1f, 1f, 1f };

            CarnageColor = Color.White;

            CurrentState = MonsterState.Normal;

            //TEST THIS SHIT!
            //In actuality, have this set the time to a couple seconds after spawning
            nextOrbTime = 2f;

            ShowMessage("Here I come, Garrett!");

            //base.Initialize();
        }
コード例 #33
0
        // Checks the boss's health to see if it needs to enter the next phase
        public void CheckHealth()
        {
            if (healthPercentage < .78f && currentPhase == 1)
            {
                // Go to phase 2
                currentPhase = 2;

                TeleportToSpawn();
                GetPath(GameScene.CurrentMap.CastleTile);
                shieldActive = true;
                bossPhase = BossPhase.ShieldWalk;

                isFrozen = false;
                isBurning = false;
                isPoisoned = false;

                SetShieldImmunity();
                ShowMessage("Hide behind your walls all you please.  We'll see what happens when your weapons are rendered useless!");
            }

            if (healthPercentage < .55f && currentPhase == 2)
            {
                currentPhase = 3;

                shieldActive = false;

                isFrozen = false;
                isBurning = false;
                isPoisoned = false;

                TeleportToSpawn();
                GetPath(GameScene.CurrentMap.CastleTile);

                bossPhase = BossPhase.AttackWalk;
                nextOrbTime = (float)currentGameTime.TotalGameTime.TotalSeconds + 4f;
                ShowMessage("I shall raze your stronghold to the ground!  Behold the ruins of your ambition!");
            }

            if (healthPercentage < .28f && currentPhase == 3)
            {
                currentPhase = 4;

                TeleportToSpawn();
                GetPath(GameScene.CurrentMap.CastleTile);

                isFrozen = false;
                isBurning = false;
                isPoisoned = false;

                Visible = true;

                bossPhase = BossPhase.Walk;

                // Fade out the music, instead of just stopping it
                AudioManager.StopMusic();

                ShowFinalPhaseMessage1();
            }
        }
コード例 #34
0
    void ChangeState(BossPhase targPhase)
    {
        #region Phases
        #region Primary
        if (phase == BossPhase.Primary)
        {
            gunSpark.ResetSignal();
            gunSpark.enabled = false;
            gunSpark.counter = -3;
            GetComponent<AudioSource>().clip = newAge;
            GetComponent<AudioSource>().Play();
            ChangeTokens(true);
            shield.SetActive(true);
            ChangeAtmoLight(atmosphereLights[1], transDuration, .10f);
            platformIgniter.enabled = true;
            platformIgniter.ignited = Igniter.PlatformGroup.Inner;
        }
        #endregion
        #region Transition
        if (phase == BossPhase.Transition)
        {
            NextTelePlane();
            spawner.enabled = true;
            platformIgniter.enabled = true;
        }
        #endregion
        #region Secondary
        if (phase == BossPhase.Secondary)
        {
            platformIgniter.DisableAll();
            platformIgniter.enabled = false;
            gunSpark.enabled = false;
            gunSpark.ResetSignal();
            gunSpark.counter = -3;
            spawner.counter = -5;
            spawner.enabled = false;
            ChangeTokens(false);
            GetComponent<AudioSource>().clip = abyssBeckons;
            GetComponent<AudioSource>().Play();
            ChangeAtmoLight(atmosphereLights[2], morphDuration, .10f);
        }
        #endregion
        #region Morph
        if (phase == BossPhase.Morph)
        {
            NextTelePlane();
            platformIgniter.enabled = true;
            gunSpark.enabled = true;
            spawner.enabled = true;
            shield.SetActive(false);
        }
        #endregion
        #region Final
        if (phase == BossPhase.Final)
        {
            platformIgniter.DisableAll();
            platformIgniter.enabled = false;
            gunSpark.enabled = false;
            gunSpark.ResetSignal();
            spawner.enabled = false;
            GetComponent<AudioSource>().clip = lastWords;
            GetComponent<AudioSource>().Play();
            ChangeAtmoLight(atmosphereLights[0], dyingDuration, .1f);
            ResetTelePlane();
            GameObject player = GameObject.FindGameObjectWithTag("Player");
            player.transform.position = player.GetComponent<TeleTarget>().teleTarget.transform.position;
            player.transform.rotation = player.GetComponent<TeleTarget>().teleTarget.transform.rotation;
            player.GetComponent<PlayerStats>().healPlayer(1000);
            player.GetComponent<CharacterMotor>().SetVelocity(new Vector3());
        }
        #endregion
        #region Dying
        //if (phase == BossPhase.Dying)
        //{ //This code can't ever happen. ChangeState is never called when the boss is dying.
        //    audio.Play();
        //}
        #endregion
        #endregion

        //Debug.Log("Changed State from " + phase + " to " + targPhase);

        stateCounter = 0.0f;
        phase = targPhase;
    }
コード例 #35
0
        public void OnBossAddDeath()
        {
            totalBossAdds -= 1;
            if(totalBossAdds <= 0)
            {
                currentPhase = BossPhase.Two;
                _bossBehaviorScript.AddPhaseAttacks(currentPhase);
                GameObject shield = transform.Find("Shield").gameObject;
                if(shield != null)
                    shield.SetActive(false);

            }
        }
コード例 #36
0
 public void OnHealingObjectDeath()
 {
     currentPhase = BossPhase.Three;
     _bossBehaviorScript.AddPhaseAttacks(currentPhase);
     StartCoroutine(ChangeState(BossState.Search));
 }
コード例 #37
0
 public void NextPhase(GameTime gameTime)
 {
     switch (lives)
     {
         case 4:
             bossPhase = BossPhase.Summon;
             summonInterval = 2f;
             nextSummonTime = (float)gameTime.TotalGameTime.TotalSeconds + summonInterval;
             break;
         case 3:
             bossPhase = BossPhase.Walk;
             BaseMovementSpeed += 10;
             MovementSpeed = BaseMovementSpeed;
             TeleportToSpawn();
             break;
         case 2:
             bossPhase = BossPhase.Summon;
             summonInterval = 1f;
             nextSummonTime = (float)gameTime.TotalGameTime.TotalSeconds + summonInterval;
             break;
         case 1:
             bossPhase = BossPhase.Walk;
             BaseMovementSpeed += 10;
             MovementSpeed = BaseMovementSpeed;
             TeleportToSpawn();
             break;
         default:
             break;
     }
 }