private void SetupPhase(BossPhase phase) { foreach (var mechanic in phase.mechanics) { AddAbilitiesForMechanic(mechanic); } }
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(); } }
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; }
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]; } } } }
// 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; }
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); } }
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(); }
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; } }
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)); }
public void ChangePhase(BossPhase _newPhase) { if (currentPhase == _newPhase) { return; } currentPhase = _newPhase; }
void startPhase5() { invincible = false; activeShield.GetComponent <EnemyObject>().invincible = false; activeShield.SendMessage("takeDamage", 1); growl(); phase = BossPhase.FIVE; }
// Use this for initialization void Start() { phase = BossPhase.phase1; GenerateRandomTrap(); GenerateQTE(); delayBeforeNextQTE -= Mathf.Clamp(delayBeforeNextQTE * GameController.Instance.gameRatio, 1, 2); }
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]); }
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); }
/* 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(); } }
private void Start() { BossHealth.Instance.Show(); BossHealth.Instance.UpdateHealth(bossHealth); bossTransform = GetComponent <Transform>(); // spawnTimer = spawnTimerMax; bossPhase = BossPhase.Intro; }
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]; } }
void Start() { BossHealth.Instance.Show(); BossHealth.Instance.UpdateHealth(bossHealth); shootTimer = shootTimerMax; player = GetComponent <Enemy>().player; bossPhase = BossPhase.Intro; }
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; } }
private void jumping() { if (CheckFeet()) { rb.velocity = new Vector2(direction.x * speed * Time.fixedDeltaTime, jumpForce); } if (lookForPlayer()) { currentPhase = BossPhase.Looking; } }
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; }
public void SetPhase(BossPhase bossPhase) { if (ActivePhase == bossPhase) { return; } _phases[ActivePhase]?.OnExit(); ActivePhase = bossPhase; _phases[ActivePhase]?.OnEnter(); }
void startPhase4() { invincible = true; activeShield = (GameObject)Instantiate(shieldInstance, transform.position, Quaternion.identity); for ( ; numMinionsSpawned < 7; numMinionsSpawned++) { spawnMinion(); } phase = BossPhase.FOUR; }
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; }
public void OnActivatePhase() { if (phase >= Phases.Count) { return; } BossPhase p = Phases[phase]; turretsDestroyed = 0; foreach (TurretController t in p.Turrets) { t.ActivateTurret(); } }
public void OnTurretDestroyed() { BossPhase p = Phases[phase]; turretsDestroyed++; if (turretsDestroyed == p.Turrets.Count) { if (p.TriggerName != "") { animator.SetTrigger(p.TriggerName); phase++; } } }
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; }
void TerminateCurrentPhase() { currentPhase.TerminatePhase(); currentPhaseId++; if (currentPhaseId < bossPhases.Length) { currentPhase = bossPhases[currentPhaseId]; currentPhase.StartPhase(); } else { BossDeath(); } }
// 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; } }
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(); }
/// <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); } }
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(); }
// 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(); } }
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; }
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); } }
public void OnHealingObjectDeath() { currentPhase = BossPhase.Three; _bossBehaviorScript.AddPhaseAttacks(currentPhase); StartCoroutine(ChangeState(BossState.Search)); }
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; } }