public void TesteGeraValorMag() { GeradorValorMag gerador = new GeradorValorMag(); ValorMag valorMag1 = new ValorMag(10, 3); ValorMag valorMag2 = new ValorMag(10, 5); ValorMag resultado = gerador.GerarEntre(valorMag1, valorMag2, rnd); Assert.IsTrue(Convert.ToInt32(resultado.ValorReal) >= Convert.ToInt32(valorMag1.ValorReal)); Assert.IsTrue(Convert.ToInt32(resultado.ValorReal) <= Convert.ToInt32(valorMag2.ValorReal)); }
//Calcula subatributos BASE de um ser sem modificadores public Ser CalculaSubatributos(Ser ser) { GeradorValorMag genValorMag = new GeradorValorMag(); CalculadorNumero calculador = new CalculadorNumero(); Random rnd = new Random(); //Iniciativa = Destreza.Iniciativa ser.Iniciativa = ser.Destreza.Iniciativa; //Destria = Pontos Destreza / 10 (até o maximo da espécie) if (ser.Destreza.Pontos / 10 > ser.Especies[0].DestriaMax) { ser.Destria = ser.Especies[0].DestriaMax; } else if (ser.Destreza.Pontos / 10 < ser.Especies[0].DestriaMin) { ser.Destria = ser.Especies[0].DestriaMin; } else { ser.Destria = ser.Destreza.Pontos / 10; } //Acao = vigor + vitalidade * dinamica ser.Acao = calculador.SomaValorMag(ser.Forca.Vigor, ser.Materia.Vitalidade); ser.Acao = calculador.MultiplicaValorMag(ser.Acao, Convert.ToDouble(ser.Destreza.Dinamica)); //Reacao = Vitalidade * Dinamica ser.Reacao = calculador.MultiplicaValorMag(ser.Materia.Vitalidade, Convert.ToDouble(ser.Destreza.Dinamica)); //Turno = valor minimo da especie dominante + 20% da maior especie ser.Turno = ser.Especies[0].TurnoMin + (int)calculador.CalculaPorcentagem(20, (long)(from e in ser.Especies select e.TurnoMin).Max()); //Altura = aleatorio a partir da especie dominante if (ser.Altura.Valor == 0) { ser.Altura = genValorMag.GerarEntre(ser.Especies[0].AlturaMin, ser.Especies[0].AlturaMax, rnd); } ser.Comprimento = new ValorMag(Convert.ToString(ser.Materia.Pontos)); //Largura = Aleatorio entre largura min e largura max da especie dominante if (ser.Largura.Valor == 0) { ser.Largura = genValorMag.GerarEntre(ser.Especies[0].LarguraMin, ser.Especies[0].LarguraMax, rnd); } //Massa = Volume * Densidade da Especie ValorMag volume = calculador.MultiplicaValorMag(ser.Altura, ser.Comprimento); volume = calculador.MultiplicaValorMag(volume, ser.Largura); ser.Massa = calculador.MultiplicaValorMag(volume, ser.Especies[0].Densidade); //Instinto = (Ideia + Destreza) / 2 ser.Instinto = calculador.SomaValorMag(ser.Ideia.Porcentagem, ser.Destreza.Porcentagem); ser.Instinto = calculador.DivideValorMag(ser.Instinto, 2); //Raciocinio = (Intelecto + Criatividade) / 2 ser.Raciocinio = calculador.SomaValorMag(ser.Intelecto.Porcentagem, ser.Criatividade.Porcentagem); ser.Raciocinio = calculador.DivideValorMag(ser.Raciocinio, 2); //Subconsciencia = (Existencia + Ideia) / 2 ser.Subconsciencia = calculador.SomaValorMag(ser.Existencia.Porcentagem, ser.Ideia.Porcentagem); ser.Subconsciencia = calculador.DivideValorMag(ser.Subconsciencia, 2); //Autocontrole = (Intelecto + Existencia) / 2 ser.Autocontrole = calculador.SomaValorMag(ser.Intelecto.Porcentagem, ser.Existencia.Porcentagem); ser.Autocontrole = calculador.DivideValorMag(ser.Subconsciencia, 2); //Anatomia = (Materia + Força + Destreza) /3 ser.Anatomia = calculador.SomaValorMag(ser.Materia.Porcentagem, ser.Forca.Porcentagem); ser.Anatomia = calculador.SomaValorMag(ser.Anatomia, ser.Destreza.Porcentagem); ser.Anatomia = calculador.DivideValorMag(ser.Anatomia, 3); //Animo = (Criatividade + Existencia)/2 ser.Animo = calculador.SomaValorMag(ser.Criatividade.Porcentagem, ser.Existencia.Porcentagem); ser.Animo = calculador.DivideValorMag(ser.Animo, 2); //Movimento = (Destreza + Forca*2) /3 ser.Movimento = calculador.MultiplicaValorMag(ser.Forca.Porcentagem, 2); ser.Movimento = calculador.SomaValorMag(ser.Movimento, ser.Destreza.Porcentagem); ser.Movimento = calculador.DivideValorMag(ser.Movimento, 3); //Precisao = (Forca*2 + Destreza) / 3 ser.Precisao = calculador.MultiplicaValorMag(ser.Forca.Porcentagem, 2); ser.Precisao = calculador.SomaValorMag(ser.Movimento, ser.Destreza.Porcentagem); ser.Precisao = calculador.DivideValorMag(ser.Movimento, 3); //Composição = Dureza + Resistencia Conversor conver = new Conversor(); ser.Composicao = conver.StringParaValorMag(Convert.ToString(ser.Forca.Dureza)); ser.Composicao = calculador.SomaValorMag(ser.Composicao, ser.Materia.Resistencia); //HP MP AP SP //HP = Materia //AP = Força Materia Destreza Intelecto Existência //MP = Criatividade + Ideia //SP = ((15*(pontos de todos atributos-7))*7) (somar tracinhos) ser.BonusHP = ser.Materia.BonusHP; ser.BonusCP = ser.Forca.BonusCP + ser.Materia.BonusCP; ser.BonusCP = ser.BonusCP + ser.Destreza.BonusCP; ser.BonusCP = ser.BonusCP + ser.Intelecto.BonusCP; ser.BonusCP = Math.Floor(ser.BonusCP + ser.Existencia.BonusCP); ser.BonusMP = calculador.SomaValorMag(ser.Criatividade.BonusMP, ser.Ideia.BonusMP); ser.BonusSP = CalculaBonusSP(ser); return(ser); }