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