public IEnumerator FireDamage(GameObject target, int totalDamage, float duration) { int tickDamage = Mathf.RoundToInt(totalDamage / duration); int curentDamage = 0; GameObject fireFx = transform.Find("FX/fire").gameObject; BossSystem bossSystem = target.GetComponent <BossSystem>(); if (bossSystem != null) { fireFx.SetActive(true); fireFx.GetComponent <ParticleSystem>().Play(); } while (curentDamage < totalDamage) { if (bossSystem != null) { bossSystem.TakeDamage(tickDamage); } yield return(new WaitForSeconds(1f)); curentDamage += tickDamage; } if (bossSystem != null) { fireFx.GetComponent <ParticleSystem>().Stop(); fireFx.SetActive(false); } }
//controls the text void Start() { waves = 0; targetTime = 10f; wavesText.text = ""; StartCoroutine(HazardSpawnWaves()); StartCoroutine(EnemySpawnWaves()); bS = GetComponent <BossSystem> (); gC = GetComponent <GameController> (); }
public void SetBossSystem(BossSystem bossSystem) => this.bossSystem = bossSystem;
public void onBossHit(GameObject target) { BossSystem bossSystem = target.GetComponent <BossSystem>(); int bonusDamage = (orbController.combo / orbController.damageIncreaseStep) * orbController.damageComboIncrease; if (bonusDamage > orbController.maxComboDamage) { bonusDamage = orbController.maxComboDamage; } int damageTaken = baseDamage + bonusDamage; switch (behaviouralPower) { case GameManager.PowerType.LargeOrb: damageTaken += largeOrbDamage; break; case GameManager.PowerType.Shield: damageTaken -= mitigatedDamage; break; case GameManager.PowerType.Slug: damageTaken -= mitigatedDamageSlug; break; } switch (elementalPower) { case GameManager.PowerType.Fire: //update in score manager ScoreManager.scoreManager.statusAilmentApplied++; if (bossSystem.actualFireCoroutine != null) { StopCoroutine(bossSystem.actualFireCoroutine); } if (isActivatedByBrazier) { bossSystem.actualFireCoroutine = bossSystem.StartCoroutine(bossSystem.FireDamage(bossSystem.gameObject, fireTicksDamageBrazier, fireTickDurationBrazier)); } else { bossSystem.actualFireCoroutine = bossSystem.StartCoroutine(bossSystem.FireDamage(bossSystem.gameObject, fireTicksDamage, fireTickDuration)); } damageTaken += fireDamage; break; case GameManager.PowerType.Electric: //update in score manager ScoreManager.scoreManager.statusAilmentApplied++; GameObject elecFx = bossSystem.gameObject.transform.Find("FX/electricity").gameObject; Debug.Log(elecFx != null); elecFx.SetActive(true); elecFx.GetComponent <ParticleSystem>().Play(); StartCoroutine(ElectricZappingCoroutine(transform.position, target, true)); damageTaken += electricDamage; DeactivatePower(elementalPower); break; } //apply damage to boss bossSystem.TakeDamage(damageTaken); //update in score manager (to keep track of who's given the last hit) if (GameManager.gameManager.orb.GetComponent <OrbController>().toPlayer2) { ScoreManager.scoreManager.damageDealtBossP1 += damageTaken; bossSystem.lastHitByP1 = true; bossSystem.lastHitByP2 = false; } else { ScoreManager.scoreManager.damageDealtBossP2 += damageTaken; bossSystem.lastHitByP1 = false; bossSystem.lastHitByP2 = true; } //heals players if leachlife is on if (behaviouralPower == GameManager.PowerType.LeechLife) { OrbController controller = GameManager.gameManager.orb.GetComponent <OrbController>(); if (controller.toPlayer2) { GameManager.gameManager.spawnHealingOrbs(1, (int)(damageTaken / (100 / lifeSteel)), "leechLife"); } else { GameManager.gameManager.spawnHealingOrbs(2, (int)(damageTaken / (100 / lifeSteel)), "leechLife"); } } }
private void OnEnable() { bossSystem = gameObject.GetComponent <BossSystem>(); rotationCoroutine = StartCoroutine(RotationCoroutine()); }