Пример #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);
    }