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