Beispiel #1
0
        public Ser RemoveModificador(ModDivideValorMag mod, Ser ser)
        {
            PropertyInfo propriedade = ser.GetType().GetProperty(mod.Alvo);

            if (propriedade.PropertyType == typeof(ValorMag))
            {
                CalculadorNumero calculador = new CalculadorNumero();
                ValorMag         resultado  = new ValorMag();

                resultado = calculador.MultiplicaValorMag((ValorMag)propriedade.GetValue(ser, null), mod.Valor);

                propriedade.SetValue(ser, resultado);

                return(ser);
            }
            else
            {
                throw new System.ArgumentException("Propriedade não é ValorMag.", mod.Alvo);
            }
        }
Beispiel #2
0
        public Modificador GerarComOrigem(string origem, int id, Random rnd, char tipo = 'R')
        {
            GeradorInteiro    rng           = new GeradorInteiro();
            GeradorValorMag   rvmg          = new GeradorValorMag();
            GeradorPericia    genPericia    = new GeradorPericia();
            GeradorHabilidade genHabilidade = new GeradorHabilidade();
            int tipoModificador             = rng.GerarEntre(1, 10, rnd);

            PropertyInfo[] propriedades = typeof(Ser).GetTypeInfo().DeclaredProperties.Where(p => p.PropertyType == typeof(int)).ToArray <PropertyInfo>();
            string         alvo         = propriedades[rng.GerarEntre(0, propriedades.Count() - 1, rnd)].Name;

            switch (tipoModificador)
            {
            case 1:
                ModSomaValorMag modSomaValorMag = new ModSomaValorMag()
                {
                    Alvo   = alvo,
                    Origem = origem,
                    Valor  = rvmg.GerarEntre(new ValorMag(10, 1), new ValorMag(99, 10), rnd)
                };
                return(modSomaValorMag);

            case 2:
                ModSubtraiValorMag modSubtraiValorMag = new ModSubtraiValorMag()
                {
                    Alvo   = alvo,
                    Origem = origem,
                    Valor  = rvmg.GerarEntre(new ValorMag(10, 1), new ValorMag(99, 10), rnd)
                };
                return(modSubtraiValorMag);

            case 3:
                ModSomaNumero modSomaNumero = new ModSomaNumero()
                {
                    Alvo   = alvo,
                    Origem = origem,
                    Valor  = rng.GerarEntre(1, 10000, rnd)
                };
                return(modSomaNumero);

            case 4:
                ModSubtraiNumero modSubtraiNumero = new ModSubtraiNumero()
                {
                    Alvo   = alvo,
                    Origem = origem,
                    Valor  = rng.GerarEntre(1, 10000, rnd)
                };
                return(modSubtraiNumero);

            case 5:
                ModMultiplicaNumero modMultiplicaNumero = new ModMultiplicaNumero()
                {
                    Alvo   = alvo,
                    Origem = origem,
                    Valor  = rng.GerarEntre(1, 10000, rnd)
                };
                return(modMultiplicaNumero);

            case 6:
                ModMultiplicaValorMag modMultiplicaValorMag = new ModMultiplicaValorMag()
                {
                    Alvo   = alvo,
                    Origem = origem,
                    Valor  = rvmg.GerarEntre(new ValorMag(10, 1), new ValorMag(99, 10), rnd)
                };
                return(modMultiplicaValorMag);

            case 7:
                ModDivideNumero modDivideNumero = new ModDivideNumero()
                {
                    Alvo   = alvo,
                    Origem = origem,
                    Valor  = rng.GerarEntre(1, 100, rnd)
                };
                return(modDivideNumero);

            case 8:
                ModDivideValorMag modDivideValorMag = new ModDivideValorMag()
                {
                    Alvo   = alvo,
                    Origem = origem,
                    Valor  = rvmg.GerarEntre(new ValorMag(10, 1), new ValorMag(99, 5), rnd)
                };
                return(modDivideValorMag);

            case 9:
                ModAdicionaHabilidade modAdicionaHabilidade = new ModAdicionaHabilidade()
                {
                    Alvo   = genHabilidade.Gerar(rnd),
                    Origem = origem
                };
                return(modAdicionaHabilidade);

            case 10:
                ModAdicionaPericia modAdicionaPericia = new ModAdicionaPericia()
                {
                    Alvo   = genPericia.Gerar(rnd),
                    Origem = origem
                };
                return(modAdicionaPericia);

            default:
                return(null);
            }
        }