public DivineStrategist(Classes.Cleric cleric)
 {
     Name = "Divine Strategist";
     ArchetypeAbilities = new List <ArchetypeAbility>
     {
         new ArchetypeAbility
         {
             Name              = "Domain",
             Level             = 1,
             ReplacedAbilities = new List <ClassAbility> {
                 cleric.Domains
             },
         },
         new ArchetypeAbility
         {
             Name              = "Master Tactician",
             Level             = 1,
             ReplacedAbilities = new List <ClassAbility>(cleric.ClassAbilities.Where(a => a.Name.Contains("Channel Energy")))
         },
         new ArchetypeAbility
         {
             Name  = "Caster Support",
             Level = 1,
         },
         new ArchetypeAbility
         {
             Name  = "Tactical Expertise",
             Level = 8,
         }
     };
 }
Esempio n. 2
0
 public Cardinal(Classes.Cleric cleric)
 {
     Name = "Cardinal";
     ArchetypeAbilities = new List <ArchetypeAbility>
     {
         new ArchetypeAbility
         {
             Name  = "Political Skill",
             Level = 1,
             Add   = () =>
             {
                 // Skills per level
                 cleric.BaseAttackBonus = BaseAttackBonus.Half;
             },
             Remove = () =>
             {
                 // Skills per level
                 cleric.BaseAttackBonus = BaseAttackBonus.Medium;
             }
         },
         new ArchetypeAbility
         {
             Name              = "Domain",
             Level             = 1,
             ReplacedAbilities = new List <ClassAbility> {
                 cleric.Domains
             },
         }
     };
 }
        public DivineScourge(Classes.Cleric cleric)
        {
            Name = "Divine Scourge";
            ArchetypeAbilities = new List <ArchetypeAbility>
            {
                new ArchetypeAbility
                {
                    Name              = "Curser",
                    Level             = 1,
                    ReplacedAbilities = new List <ClassAbility> {
                        cleric.Domains
                    },
                },
                new ArchetypeAbility
                {
                    // Divine Hexes
                    ReplacedAbilities = new List <ClassAbility>(cleric.ClassAbilities.Where(a => a.Name.Contains("Channel Energy"))),
                }
            };

            for (int i = 3; i <= 20; i += 4)
            {
                ArchetypeAbilities.Add(new ArchetypeAbility
                {
                    Name  = "Divine Hex",
                    Level = i,
                });
            }
        }
Esempio n. 4
0
        public DemonicApostle(Classes.Cleric cleric)
        {
            Name = "Demonic Apostle";
            ArchetypeAbilities = new List <ArchetypeAbility>
            {
                new ArchetypeAbility
                {
                    Name              = "Demonic Magic",
                    Level             = 1,
                    ReplacedAbilities = new List <ClassAbility> {
                        cleric.Domains
                    },
                },
                new ArchetypeAbility
                {
                    Name  = "Demonic Familiar",
                    Level = 1,
                },
            };

            ArchetypeAbilities.AddRange(cleric.ClassAbilities
                                        .Where(a => a.Name.Contains("Channel Energy"))
                                        .Select(a => new ArchetypeAbility
            {
                Name              = a.Name.Replace("Channel Energy", "Demonic Channel"),
                Level             = a.Level,
                ReplacedAbilities = new List <ClassAbility> {
                    a
                },
            }));
        }
Esempio n. 5
0
        public Crusader(Classes.Cleric cleric)
        {
            Name = "Crusader";
            ArchetypeAbilities = new List <ArchetypeAbility>
            {
                new ArchetypeAbility
                {
                    Name   = "Diminished Spellcasting",
                    Level  = 1,
                    Add    = () => cleric.DiminishedSpellCasting(true),
                    Remove = () => cleric.DiminishedSpellCasting(false),
                },
                new ArchetypeAbility
                {
                    Name  = "Bonus Feat",
                    Level = 1,
                },
                new ArchetypeAbility
                {
                    Name  = "Legion's Blessing",
                    Level = 1,
                }
            };

            for (int i = 5; i <= 20; i += 5)
            {
                ArchetypeAbilities.Add(new ArchetypeAbility
                {
                    Name  = "Bonus Feat",
                    Level = i,
                });
            }
        }
Esempio n. 6
0
 public AsmodeanAdvocate(Classes.Cleric cleric)
 {
     Name = "Asmodean Advocate";
     ArchetypeAbilities = new List <ArchetypeAbility>
     {
         new ArchetypeAbility
         {
             Name              = "Pact-Bound",
             Level             = 1,
             ReplacedAbilities = new List <ClassAbility> {
                 cleric.Domains
             },
         },
         new ArchetypeAbility
         {
             Name  = "Serpent",
             Level = 1,
         },
         new ArchetypeAbility
         {
             Name  = "Devil in the Details",
             Level = 1,
         },
         new ArchetypeAbility
         {
             Name  = "Shoulder Devil",
             Level = 8,
         }
     };
 }
Esempio n. 7
0
 public CloisteredCleric(Classes.Cleric cleric)
 {
     Name = "Cloistered Cleric";
     ArchetypeAbilities = new List <ArchetypeAbility>
     {
         new ArchetypeAbility
         {
             Name              = "Diminished Spellcasting",
             Level             = 1,
             ReplacedAbilities = new List <ClassAbility> {
                 cleric.Spells
             },
             Add    = () => cleric.DiminishedSpellCasting(true),
             Remove = () => cleric.DiminishedSpellCasting(false)
         },
         new ArchetypeAbility
         {
             Name              = "Domain",
             Level             = 1,
             ReplacedAbilities = new List <ClassAbility> {
                 cleric.Domains
             },
         },
         new ArchetypeAbility
         {
             Name  = "Breadth of Knowledge",
             Level = 1,
         },
         new ArchetypeAbility
         {
             Name  = "Well-Read",
             Level = 2,
         },
         new ArchetypeAbility
         {
             Name  = "Verbal Instruction",
             Level = 3,
         },
         new ArchetypeAbility
         {
             Name  = "Scribe Scroll",
             Level = 4,
         }
     };
 }
Esempio n. 8
0
        public Ecclesitheurge(Classes.Cleric cleric)
        {
            Name = "Ecclesitheurge";
            ArchetypeAbilities = new List <ArchetypeAbility>
            {
                new ArchetypeAbility
                {
                    Name  = "Ecclesitheurge's Vow",
                    Level = 1,
                },
                new ArchetypeAbility
                {
                    Name  = "Blessing of the Faithful",
                    Level = 1,
                },
                new ArchetypeAbility
                {
                    Name              = "Domain Mastery",
                    Level             = 1,
                    ReplacedAbilities = new List <ClassAbility> {
                        cleric.Domains
                    },
                },
                new ArchetypeAbility
                {
                    Name              = "Bonded Holy Symbol",
                    Level             = 3,
                    ReplacedAbilities = new List <ClassAbility> {
                        cleric.ChannelEnergy2
                    },
                }
            };

            ArchetypeAbilities.AddRange(cleric.ClassAbilities
                                        .Where(a => a.Name.Contains("Channel Energy") && a.Level > 3)
                                        .Select(a => new ArchetypeAbility
            {
                Name              = $"Channel Energy {Math.Round(0.5 * a.Level - 0.5)}d6",
                Level             = a.Level,
                ReplacedAbilities = new List <ClassAbility> {
                    a
                },
            }));
        }
        public AngelfireApostle(Classes.Cleric cleric)
        {
            Name = "Angelfire Apostle";
            ArchetypeAbilities = new List <ArchetypeAbility>
            {
                new ArchetypeAbility
                {
                    Name              = "Diminished Spellcasting",
                    Level             = 1,
                    ReplacedAbilities = new List <ClassAbility> {
                        cleric.Spells
                    },
                    Add    = () => cleric.DiminishedSpellCasting(true),
                    Remove = () => cleric.DiminishedSpellCasting(false)
                },
                new ArchetypeAbility
                {
                    Name  = "Extra Channel",
                    Level = 1,
                },
                new ArchetypeAbility
                {
                    Name  = "Versatile Healing Channel",
                    Level = 5,
                },
                new ArchetypeAbility
                {
                    Name  = "Cleansing Flames",
                    Level = 9,
                }
            };

            ArchetypeAbilities.AddRange(cleric.ClassAbilities
                                        .Where(a => a.Name.Contains("Channel Energy"))
                                        .Select(a => new ArchetypeAbility
            {
                Name              = a.Name.Replace("Channel Energy", "Channel Angelfire"),
                Level             = a.Level,
                ReplacedAbilities = new List <ClassAbility> {
                    a
                },
            }));
        }
Esempio n. 10
0
 public ChannelerOfTheUnknown(Classes.Cleric cleric)
 {
     Name = "Channeler of the Unknown";
     ArchetypeAbilities = new List <ArchetypeAbility>
     {
         new ArchetypeAbility
         {
             Name              = "Spells",
             Level             = 1,
             ReplacedAbilities = new List <ClassAbility> {
                 cleric.Spells
             },
             Add    = () => cleric.DiminishedSpellCasting(true),
             Remove = () => cleric.DiminishedSpellCasting(false),
         },
         new ArchetypeAbility
         {
             Name              = "Unknown Aura",
             Level             = 1,
             ReplacedAbilities = new List <ClassAbility> {
                 cleric.Aura
             },
         },
         new ArchetypeAbility
         {
             Name              = "Power of the Unknown",
             Level             = 1,
             ReplacedAbilities = new List <ClassAbility> {
                 cleric.Domains
             },
         },
         new ArchetypeAbility
         {
             Name              = "Spontaneous Casting",
             Level             = 1,
             ReplacedAbilities = new List <ClassAbility> {
                 cleric.SpontaneousCasting
             },
         }
     };
 }
        public Appeaser(Classes.Cleric cleric)
        {
            Name = "Appeaser";
            ArchetypeAbilities = new List <ArchetypeAbility>
            {
                new ArchetypeAbility
                {
                    Name              = "Aura",
                    Level             = 1,
                    ReplacedAbilities = new List <ClassAbility> {
                        cleric.Aura
                    },
                },
                new ArchetypeAbility
                {
                    Name  = "Divine Apologist",
                    Level = 1,
                },
                new ArchetypeAbility
                {
                    Name              = "Mollified Domain",
                    Level             = 1,
                    ReplacedAbilities = new List <ClassAbility> {
                        cleric.Domains
                    },
                }
            };

            ArchetypeAbilities.AddRange(cleric.ClassAbilities
                                        .Where(a => a.Name.Contains("Channel Energy"))
                                        .Select(a => new ArchetypeAbility
            {
                Name              = a.Name.Replace("Channel Energy", "Channel Utility"),
                Level             = a.Level,
                ReplacedAbilities = new List <ClassAbility> {
                    a
                },
            }));
        }
 public DivineParagon(Classes.Cleric cleric)
 {
     Name = "Divine Paragon";
     ArchetypeAbilities = new List <ArchetypeAbility>
     {
         new ArchetypeAbility
         {
             Name              = "Devoted Domain",
             Level             = 1,
             ReplacedAbilities = new List <ClassAbility> {
                 cleric.Domains
             },
         },
         new ArchetypeAbility
         {
             Name              = "Divine Brand",
             Level             = 1,
             ReplacedAbilities = new List <ClassAbility> {
                 cleric.Aura
             },
         }
     };
 }
Esempio n. 13
0
        public BlossomingLight(Classes.Cleric cleric)
        {
            Name = "Blossoming Light";
            ArchetypeAbilities = new List <ArchetypeAbility>
            {
                new ArchetypeAbility
                {
                    Name  = "Promise of Faith",
                    Level = 1,
                },
                new ArchetypeAbility
                {
                    Name  = "Promise of Purity",
                    Level = 1,
                },
                new ArchetypeAbility
                {
                    Name              = "Luminous Font",
                    Level             = 1,
                    ReplacedAbilities = new List <ClassAbility> {
                        cleric.Domains
                    },
                }
            };

            ArchetypeAbilities.AddRange(cleric.ClassAbilities
                                        .Where(a => a.Name.Contains("Channel Energy"))
                                        .Select(a => new ArchetypeAbility
            {
                Name              = a.Name,
                Level             = a.Level,
                ReplacedAbilities = new List <ClassAbility> {
                    a
                },
            }));
        }
Esempio n. 14
0
        public CrashingWave(Classes.Cleric cleric)
        {
            Name = "Crashing Wave";
            ArchetypeAbilities = new List <ArchetypeAbility>
            {
                new ArchetypeAbility
                {
                    Name  = "Sworn to the Sea",
                    Level = 1,
                },
                new ArchetypeAbility
                {
                    Name  = "Speech of the Sea",
                    Level = 1,
                },
                new ArchetypeAbility
                {
                    Name              = "Spontaneous Casting",
                    Level             = 1,
                    ReplacedAbilities = new List <ClassAbility> {
                        cleric.SpontaneousCasting
                    },
                }
            };

            ArchetypeAbilities.AddRange(cleric.ClassAbilities
                                        .Where(a => a.Name.Contains("Channel Energy"))
                                        .Select(a => new ArchetypeAbility
            {
                Name              = a.Name.Replace("Channel Energy", "Balanced Channel"),
                Level             = a.Level,
                ReplacedAbilities = new List <ClassAbility> {
                    a
                },
            }));
        }
Esempio n. 15
0
        public ElderMythosCultist(Classes.Cleric cleric)
        {
            Name = "Elder Mythos Cultist";
            ArchetypeAbilities = new List <ArchetypeAbility>
            {
                new ArchetypeAbility
                {
                    Name              = "Domain",
                    Level             = 1,
                    ReplacedAbilities = new List <ClassAbility> {
                        cleric.Domains
                    },
                },
                new ArchetypeAbility
                {
                    Name  = "Forbidden Knowledge",
                    Level = 1,
                },
                new ArchetypeAbility
                {
                    Name  = "Unhinged Mind",
                    Level = 1,
                },
                new ArchetypeAbility
                {
                    Name              = "Channel the Void",
                    Level             = 1,
                    ReplacedAbilities = new List <ClassAbility> {
                        cleric.SpontaneousCasting
                    },
                },
                new ArchetypeAbility
                {
                    Name              = "Maddening Gaze",
                    Level             = 5,
                    ReplacedAbilities = new List <ClassAbility> {
                        cleric.ChannelEnergy3, cleric.ChannelEnergy6, cleric.ChannelEnergy10
                    },
                }
            };

            ArchetypeAbilities.AddRange(cleric.ClassAbilities
                                        .Where(a => a.Name.Contains("Channel Energy") && a.Level < 5)
                                        .Select(a => new ArchetypeAbility
            {
                Name              = $"Channel the Void {Math.Round(0.5 * a.Level + 0.5)}d6",
                Level             = a.Level,
                ReplacedAbilities = new List <ClassAbility> {
                    a
                },
            }));

            ArchetypeAbilities.AddRange(cleric.ClassAbilities
                                        .Where(a => a.Name.Contains("Channel Energy") && a.Level > 5 && a.Level < 11)
                                        .Select(a => new ArchetypeAbility
            {
                Name              = $"Channel the Void {Math.Round(0.5 * a.Level - 0.5)}d6",
                Level             = a.Level,
                ReplacedAbilities = new List <ClassAbility> {
                    a
                },
            }));

            ArchetypeAbilities.AddRange(cleric.ClassAbilities
                                        .Where(a => a.Name.Contains("Channel Energy") && a.Level > 11 && a.Level < 19)
                                        .Select(a => new ArchetypeAbility
            {
                Name              = $"Channel the Void {Math.Round(0.5 * a.Level - 1.5)}d6",
                Level             = a.Level,
                ReplacedAbilities = new List <ClassAbility> {
                    a
                },
            }));
        }
        static public Agents.Player buildCharacter(string uname)
        {
            uname = uname.TrimStart(new char[] { '\0', ':' });
            try
            {
                if (!connDB.State.HasFlag(ConnectionState.Open))
                {
                    connDB.Open();
                }
            }
            catch (OdbcException e)
            {
                Console.WriteLine(e.Message + "\n\n" + e.StackTrace);
            }

            data = new DataSet();
            dbAdapter.SelectCommand = new OdbcCommand("SELECT * FROM users WHERE twitch_name='" + uname + "';", connDB);
            dbAdapter.Fill(data);

            if (data.Tables[0].Rows.Count == 0)
            {
                throw new GameApplication.Exceptions.NoSuchPlayerException("There is no " + uname + " in the database.");
            }

            var levelBoost = .04 * float.Parse(data.Tables[0].Rows[0]["level"].ToString());

            levelBoost += 1;

            Abstracts.Class spec;
            Abstracts.Race  race;

            int temper    = (int)(levelBoost * float.Parse(data.Tables[0].Rows[0]["temper"].ToString()));
            int cheer     = (int)(levelBoost * float.Parse(data.Tables[0].Rows[0]["cheer"].ToString()));
            int curiosity = (int)(levelBoost * float.Parse(data.Tables[0].Rows[0]["curiosity"].ToString()));
            int charisma  = (int)(levelBoost * float.Parse(data.Tables[0].Rows[0]["charisma"].ToString()));
            int empathy   = (int)(levelBoost * float.Parse(data.Tables[0].Rows[0]["empathy"].ToString()));

            //[0] = highest stat
            //[1] = second highest stat
            //[2] = lowest stat
            int[] statpicks = new int[] { 0, 1, 0 };

            int[] stats = new int[] { temper, cheer, curiosity, charisma, empathy };

            for (int i = 1; i < 5; i++)
            {
                if (stats[i] > stats[statpicks[0]])
                {
                    statpicks[1] = statpicks[0];
                    statpicks[0] = i;
                }
                else if (stats[i] > stats[statpicks[1]])
                {
                    statpicks[1] = i;
                }

                if (stats[i] < stats[statpicks[2]])
                {
                    statpicks[2] = i;
                }
            }

            foreach (int stat in stats)
            {
                Console.WriteLine(stat);
            }
            foreach (int pick in statpicks)
            {
                Console.WriteLine(pick);
            }

            if ((statpicks[0] == 0 && statpicks[1] == 1) || (statpicks[0] == 1 && statpicks[1] == 0))
            {
                spec = new Classes.Barbarian();
            }
            else if ((statpicks[0] == 0 && statpicks[1] == 2) || (statpicks[0] == 2 && statpicks[1] == 0))
            {
                spec = new Classes.Sorcerer();
            }
            else if ((statpicks[0] == 0 && statpicks[1] == 3) || (statpicks[0] == 3 && statpicks[1] == 0))
            {
                spec = new Classes.Paladin();
            }
            else if ((statpicks[0] == 0 && statpicks[1] == 4) || (statpicks[0] == 4 && statpicks[1] == 0))
            {
                spec = new Classes.Fighter();
            }
            else if ((statpicks[0] == 1 && statpicks[1] == 2) || (statpicks[0] == 2 && statpicks[1] == 1))
            {
                spec = new Classes.Druid();
            }
            else if ((statpicks[0] == 1 && statpicks[1] == 3) || (statpicks[0] == 3 && statpicks[1] == 1))
            {
                spec = new Classes.Bard();
            }
            else if ((statpicks[0] == 1 && statpicks[1] == 4) || (statpicks[0] == 4 && statpicks[1] == 1))
            {
                spec = new Classes.Cleric();
            }
            else if ((statpicks[0] == 2 && statpicks[1] == 3) || (statpicks[0] == 3 && statpicks[1] == 2))
            {
                spec = new Classes.Wizard();
            }
            else if ((statpicks[0] == 2 && statpicks[1] == 4) || (statpicks[0] == 4 && statpicks[1] == 2))
            {
                spec = new Classes.Warlock();
            }
            else
            {
                spec = new Classes.Rogue();
            }

            Console.WriteLine(spec.getName());

            if ((statpicks[0] == 1 && statpicks[2] == 0))
            {
                race = new Races.Halfling();
            }
            else if ((statpicks[0] == 0 && statpicks[2] == 3))
            {
                race = new Races.Orc();
            }
            else if ((statpicks[0] == 4 && statpicks[2] == 1) || (statpicks[0] == 3 && statpicks[2] == 1))
            {
                race = new Races.Drow();
            }
            else if ((statpicks[0] == 4 && statpicks[2] == 0))
            {
                race = new Races.Tiefling();
            }
            else if ((statpicks[0] == 2 && statpicks[2] == 4) || (statpicks[0] == 3 && statpicks[2] == 4))
            {
                race = new Races.Gnome();
            }
            else if ((statpicks[0] == 2 && statpicks[2] == 1) || (statpicks[0] == 3 && statpicks[2] == 0))
            {
                race = new Races.Elf();
            }
            else if ((statpicks[0] == 0 && statpicks[2] == 1) || (statpicks[0] == 2 && statpicks[2] == 3))
            {
                race = new Races.HalfElf();
            }
            else if ((statpicks[0] == 1 && statpicks[2] == 4) || (statpicks[0] == 1 && statpicks[2] == 3) ||
                     (statpicks[0] == 4 && statpicks[2] == 2) || (statpicks[0] == 3 && statpicks[2] == 2))
            {
                race = new Races.Dwarf();
            }
            else
            {
                race = new Races.Human();
            }



            int baseHealth = race.getBaseHealth() + (int)((1f / 3f) * temper + (int)((1f / 4f) * empathy));
            //Console.WriteLine("baseHealth" + baseHealth);
            int strength = race.getBaseStrength() + (int)((1f / 4f) * temper);
            //Console.WriteLine("strength" + strength);
            int mind = race.getBaseMind() + (int)((1f / 3f) * curiosity);
            //Console.WriteLine("mind" + mind);
            int mastery = (int)((1f / 2f) * empathy);
            //Console.WriteLine("mastery" + mastery);
            int concentration = (int)((1f / 2f) * charisma);
            //Console.WriteLine("concentration" + concentration);
            int spirit = race.getBaseSpirit() + (int)((1f / 3f) * cheer);
            var skills = new List <Abstracts.Skill>();

            if (spec.getBaseSkill() != null)
            {
                skills.Add(spec.getBaseSkill());
            }
            int speed = race.getBaseSpeed() + (int)((1f / 4f) * cheer) + (int)((1f / 4f) * charisma);

            //Console.WriteLine("speed" + speed);

            Agents.Player player = new Agents.Player(baseHealth, strength, mind, concentration, mastery, spirit, skills, speed, spec, race, uname);
            connDB.Close();

            return(player);
        }
Esempio n. 17
0
        public Evangelist(Classes.Cleric cleric)
        {
            Name = "Evangelist";
            ArchetypeAbilities = new List <ArchetypeAbility>
            {
                new ArchetypeAbility
                {
                    Name              = "Single-Minded",
                    Level             = 1,
                    ReplacedAbilities = new List <ClassAbility> {
                        cleric.Domains
                    },
                },
                new ArchetypeAbility
                {
                    Name  = "Public Speaker",
                    Level = 1,
                },
                new ArchetypeAbility
                {
                    Name              = "Sermonic Performance",
                    Level             = 1,
                    ReplacedAbilities = new List <ClassAbility> {
                        cleric.ChannelEnergy1, cleric.ChannelEnergy5, cleric.ChannelEnergy8
                    },
                },
                new ArchetypeAbility
                {
                    Name              = "Spontaneous Casting",
                    Level             = 1,
                    ReplacedAbilities = new List <ClassAbility> {
                        cleric.SpontaneousCasting
                    },
                }
            };

            ArchetypeAbilities.AddRange(cleric.ClassAbilities
                                        .Where(a => a.Name.Contains("Channel Energy") && a.Level > 1 && a.Level < 9)
                                        .Select(a => new ArchetypeAbility
            {
                Name              = $"Channel Energy {Math.Round(0.5 * a.Level - 0.5)}d6",
                Level             = a.Level,
                ReplacedAbilities = new List <ClassAbility> {
                    a
                },
            }));

            ArchetypeAbilities.AddRange(cleric.ClassAbilities
                                        .Where(a => a.Name.Contains("Channel Energy") && a.Level > 9 && a.Level < 15)
                                        .Select(a => new ArchetypeAbility
            {
                Name              = $"Channel Energy {Math.Round(0.5 * a.Level - 1.5)}d6",
                Level             = a.Level,
                ReplacedAbilities = new List <ClassAbility> {
                    a
                },
            }));

            ArchetypeAbilities.AddRange(cleric.ClassAbilities
                                        .Where(a => a.Name.Contains("Channel Energy") && a.Level > 15)
                                        .Select(a => new ArchetypeAbility
            {
                Name              = $"Channel Energy {Math.Round(0.5 * a.Level - 2.5)}d6",
                Level             = a.Level,
                ReplacedAbilities = new List <ClassAbility> {
                    a
                },
            }));
        }