コード例 #1
0
    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");
            }
        }
    }