Exemple #1
0
    public void SubisciDannoMagico(float danni)
    {
        int danniSubiti = Mathf.RoundToInt(((((danni / stats.difMagica) * 100) * (danni / 2)) / 100) * (Random.Range(1, 1.125f)));

        if (nTurnoProtezione > 0)
        {
            danniSubiti = (danniSubiti * 10) / 100;
            //TODO aggiungere di cancellare l'effetto sprite qui
            nTurnoProtezione = 0;
        }

        if (stats.hp - danniSubiti <= 0)
        {
            stats.hp = 0;
            CombatController cc = FindObjectOfType <CombatController>();
            List <int>       n  = new List <int>();
            base.grid.cells[(int)this.pos.x, (int)this.pos.y].isOccupied = false;
            base.grid.cells[(int)this.pos.x, (int)this.pos.y].occupier   = null;
            //cc.player.RemoveAll(item => item == enemy);
            for (int j = cc.turno + 1; j < cc.player.Count; j++)
            {
                if (cc.player[j] == this.gameObject)
                {
                    n.Add(j);
                }
            }
            for (int i = n.Count - 1; i >= 0; i--)
            {
                cc.player.RemoveAt(n[i]);
            }

            if (cc.CheckLose())
            {
                cc.Lose();
            }


            UiController ui1 = FindObjectOfType <UiController>();
            ui1.AggiornaVita(stats.hpMax, stats.hp, uiInfo);
            ui1.DamageText(this.gameObject, danniSubiti, Color.red);
            Death();
            Destroy(this.gameObject);
        }
        else
        {
            stats.hp = stats.hp - danniSubiti;
        }
        UiController ui = FindObjectOfType <UiController>();

        ui.AggiornaVita(stats.hpMax, stats.hp, uiInfo);
        ui.DamageText(this.gameObject, danniSubiti, Color.red);
    }
Exemple #2
0
    public void Cura(GameObject _player)
    {
        //costo e variabili
        int        mp           = costoAbilita[0];
        Player     playerTarget = _player.GetComponent <Player>();
        GameObject effect       = Instantiate(spriteCura);

        effect.transform.position = _player.transform.position;
        // Suono
        AudioSource audio = GameObject.Find("SoundManager").GetComponent <AudioSource>();

        audio.PlayOneShot(audioCura);
        //calcola effetto
        int cura = Mathf.RoundToInt(this.player.stats.attMagico * (Random.Range(1f, 1.25f)));

        if (playerTarget.stats.hp + cura > playerTarget.stats.hpMax)
        {
            playerTarget.stats.hp = playerTarget.stats.hpMax;
        }
        else
        {
            playerTarget.stats.hp += cura;
        }
        Animator anim = player.GetComponent <Animator>();

        if (playerTarget.pos.x >= player.pos.x)
        {
            anim.SetTrigger("AttackRight");
        }
        else
        {
            anim.SetTrigger("AttackLeft");
        }
        //scala il danno dal nemico e gli mp al player
        SpriteRenderer sr = _player.GetComponent <SpriteRenderer>();

        sr.color              = Color.white;
        this.player.stats.mp -= mp;
        // Roba UI
        UiController ui = FindObjectOfType <UiController>();

        ui.AggiornaVita(playerTarget.stats.hpMax, playerTarget.stats.hp, playerTarget.uiInfo);
        ui.DamageText(playerTarget.gameObject, cura, Color.green);
        ui.AggiornaMana(this.player.stats.mpMax, this.player.stats.mp, this.player.uiInfo);
        DestroyBuffBox();
        DestroyEnemyButton();
        ui.CoSvuotaPanel();
    }
Exemple #3
0
    void CheckVeleno()
    {
        UiController ui = FindObjectOfType <UiController>();

        int danno = Mathf.RoundToInt(((stats.hpMax * 5) / 100) * Random.Range(1.0f, 1.5f));

        stats.hp = stats.hp - danno;
        ui.AggiornaVita(stats.hpMax, stats.hp, uiInfo);
        CombatController cc = FindObjectOfType <CombatController>();

        ui.DamageText(this.gameObject, danno, Color.red);
        if (stats.hp <= 0)
        {
            List <int> n = new List <int>();
            base.grid.cells[(int)this.pos.x, (int)this.pos.y].isOccupied = false;
            base.grid.cells[(int)this.pos.x, (int)this.pos.y].occupier   = null;
            //cc.player.RemoveAll(item => item == enemy);
            for (int j = cc.turno + 1; j < cc.player.Count; j++)
            {
                if (cc.player[j] == this.gameObject)
                {
                    n.Add(j);
                }
            }
            for (int i = n.Count - 1; i >= 0; i--)
            {
                cc.player.RemoveAt(n[i]);
            }

            if (!cc.CheckWinner())
            {
                cc.EndOfTurn();
            }
            else
            {
                cc.Lose();
            }
            Death();
            Destroy(this.gameObject);
        }

        turniVeleno--;
        if (turniVeleno == 0)
        {
            Destroy(transform.GetChild(0).gameObject);
        }
    }