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"); } } }