コード例 #1
0
    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);
        }
    }
コード例 #2
0
    //controls the text


    void Start()
    {
        waves          = 0;
        targetTime     = 10f;
        wavesText.text = "";
        StartCoroutine(HazardSpawnWaves());
        StartCoroutine(EnemySpawnWaves());

        bS = GetComponent <BossSystem> ();
        gC = GetComponent <GameController> ();
    }
コード例 #3
0
ファイル: Boss.cs プロジェクト: ParkHyeonJae/2020_SDHS
 public void SetBossSystem(BossSystem bossSystem) => this.bossSystem = bossSystem;
コード例 #4
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");
            }
        }
    }
コード例 #5
0
 private void OnEnable()
 {
     bossSystem        = gameObject.GetComponent <BossSystem>();
     rotationCoroutine = StartCoroutine(RotationCoroutine());
 }