public string Combatti(Nemico c, out int result) { Random r = new Random(); int rand = r.Next(85, 101); int dannoInflitto = (rand / 50) * (((Attacco / c.Difesa) * ((Livello / 5) + 1)) + 1); rand = r.Next(85, 101); int dannoRicevuto = (rand / 50) * (((c.Attacco / Difesa) * ((c.Livello / 5) + 1)) + 1); bool vivo = true, nemicoVivo = true; string res = ""; rand = r.Next(0, 101); if (Precisione >= rand) { nemicoVivo = c.Danneggia(dannoInflitto); res += String.Format("Hai inflitto {0} danni a {1}!\n", dannoInflitto, c.Nome); } else res += String.Format("Hai mancato {0}!\n", c.Nome); rand = r.Next(0, 101); if (c.Precisione >= rand) { vivo = Danneggia(dannoRicevuto); res += String.Format("{0} ti ha inflitto {1} danni!\n", c.Nome, dannoRicevuto); } else res += String.Format("{0} ti ha mancato!\n", c.Nome); if (vivo) { if (nemicoVivo) { result = 1; return res; } else { result = 0; res += String.Format("Hai sconfitto {0}!\n", c.Nome); if(GuadagnaEsperienza(c.DropExp)) res += String.Format("Hai guadagnato {0} exp e sei salito di livello!\n", c.DropExp); else res += String.Format("Hai guadagnato {0} exp!\n", c.DropExp); return res; } } else { if (nemicoVivo) { result = -1; res += String.Format("Sei morto contro {0}!\n", c.Nome); return res; } else { res += String.Format("Sei moribondo, ma sei riuscito a sconfiggere {0}!\n", c.Nome); Salute = 1; result = 0; return res; } } }
public string Combattimento(Nemico n) { int res; string s = _giocatore.Combatti(n, out res); if (res == 1) { _inCombattimento = true; _combatti.IsEnabled = true; _fuggi.IsEnabled = true; } else if (res == 0) { _inCombattimento = false; foreach (Oggetto o in n.Drop()) { _giocatore.Inv.Aggiungi(o); s += "Hai ottenuto " + o + " dal nemico " + n + "\n"; } CaricaInventarioGiocatore(); Mappa[IndiceStanza].Cose.Remove(n); _avversariCoinvolti.Items.Remove(n); if (_avversariCoinvolti.Items.Count == 0) _combatti.IsEnabled = false; _fuggi.IsEnabled = false; } else FineAvventura(); return s; }