예제 #1
0
 def __init__(self, char):
     BaseClass.__init__(self, char.level)
     MagicChr.__init__(self)
     cant_ct = 2
     self.level = int(char.level)
     self.set_magic(self.level, cant_ct, "druid")
     self.str_mod = char.strength
     self.dex_mod = char.dexterity
     self.wis_mod = char.wisdom
     self.int_mod = char.intelligence
     self.cha_mod = char.charisma
     self.con_mod = char.constitution
     self.level_scores([3, 7, 11, 15, 18])
     all_skills = list({"arcana", "animal handling", "insight", "medicine", "nature", "perception", "religion", "survival"} - set(char.race.skills))
     archetype_opts = ["dreams", "land", "moon", "shepherd", "spores", "twilight"]
     level_features = [[1, "Wild Shape"], [17, ["Timeless Body", "Beast Spells"]], [19, "Archdruid"]]
     wpn_opts = [["Wooden Shield", "Any other simple weapon (please input)"], ["A Scimitar", "Any other simple melee weapon (please input)"]]
     self.saving_throws = ["intelligence", "wisdom"]
     self.magic_throw = "wisdom"
     self.magic_dc = 8 + self.prof_bonus + self.wis_mod
     utilities.append_proficiencies(self, ["light armor", "medium armor", "shields", "clubs", "daggers", "darts", "javelins", "maces",
                         "quarterstaffs", "scimitars", "sickles", "slings", "spears", "herbalism kit"])
     self.set_equip(wpn_opts, True)
     self.armor.append(["Leather Armor", "11"])
     self.languages.append("Druidic")
     utilities.set_skills(self, 2, all_skills)
     self.init_hit_dice(8)
     self.init_hp(8, "constitution", 8)
     for item in ["explorer's pack", "druidic focus"]:
         self.equipment.append(item)
     self.level_features(level_features)
     if self.level > 1:
         arch_choice = self.init_archetype(archetype_opts)
         self.set_arch(arch_choice)
예제 #2
0
파일: wizard.py 프로젝트: CMRicketts/dnd2.0
 def __init__(self, char):
     BaseClass.__init__(self, char.level)
     MagicChr.__init__(self)
     cant_ct = 3
     self.level = int(char.level)
     self.set_magic(self.level, cant_ct, "wizard")
     self.str_mod = char.strength
     self.dex_mod = char.dexterity
     self.wis_mod = char.wisdom
     self.int_mod = char.intelligence
     self.cha_mod = char.charisma
     self.con_mod = char.constitution
     self.level_scores([3, 7, 11, 15, 18])
     all_skills = list({
         "arcana", "history", "insight", "investigation", "medicine",
         "religion"
     } - set(char.race.skills))
     archetype_opts = [
         "Artificer", "Bladeslinging", "Lore Mastery",
         "School of Abjuration", "School of Conjuration",
         "School of Divination", "School of Enchantment",
         "School of Evocation", "School of Illusion", "School of Invention",
         "School of Necromancy", "School of Transmutation", "Technomancy",
         "Theurgy", "War Magic"
     ]
     level_features = [[
         0, ["Ritual Casting", "Spellcasting Focus", "Arcane Recovery"]
     ], [17, "Spell Mastery"], [19, "Signature Spells"]]
     wpn_opts = [["Quarterstaff", "Dagger"]]
     eqp_opts = [["Explorer's Pack", "Scholar's Pack"],
                 ["Component Pouch", "Arcane Focus"]]
     self.saving_throws = ["intelligence", "wisdom"]
     self.magic_throw = "intelligence"
     self.magic_dc = 8 + self.prof_bonus + self.int_mod
     utilities.append_proficiencies(
         self,
         ["daggers", "darts", "slings", "quarterstaffs", "light crossbows"])
     self.set_equip(wpn_opts, True)
     self.set_equip(eqp_opts, False)
     self.equipment.append("Spellbook")
     self.spell_master = []
     self.sig_spells = []
     utilities.set_skills(self, 2, all_skills)
     self.init_hit_dice(6)
     self.init_hp(6, "constitution", 6)
     self.level_features(level_features)
     if self.level > 1:
         arch_choice = self.init_archetype(archetype_opts)
         self.set_arch(arch_choice)
     if self.level > 17:
         one = utilities.get_from_list(self.one[1], 1, "mastered spell")
         self.spell_master.append(one)
         two = utilities.get_from_list(self.two[1], 1, "mastered spell")
         self.spell_master.append(two)
     if self.level > 19:
         three = utilities.get_from_list(self.three[1], 2,
                                         "signature spell")
         self.sig_spells.extend(three)
예제 #3
0
    def __init__(self, char):
        BaseClass.__init__(self, char.level)
        self.level = int(char.level)
        self.str_mod = char.strength
        self.dex_mod = char.dexterity
        self.wis_mod = char.wisdom
        self.int_mod = char.intelligence
        self.cha_mod = char.charisma
        self.con_mod = char.constitution
        self.level_scores([3, 7, 11, 15, 18])
        all_skills = list({"acrobatics", "athletics", "history", "insight", "religion", "stealth"} - set(char.race.skills))
        archetype_opts = ["drunken master", "four elements", "kensei", "long death", "open hand", "shadow", "sun soul", "tranquility"] # base hotel and casino
        level_features = [[0, ["Unarmored Defense", "Martial Arts"]], [1, ["Ki", "Unarmored Movement"]], [2, "Deflect Missiles"],
                          [3, "Slow Fall"],  [4, "Extra Attack"],
                          [5, "Ki-Empowered Strikes"], [6, ["Evasion", "Stillness of Mind"]],
                          [12, "Tongue of the Sun and Moon"], [13, "Diamond Soul"],
                          [14, "Timeless Body"]]
        ki_features = [[1, ["Flurry of Blows", "Patient Defense", "Step of the Wild"]],
                       [4, "Stunning Strike"], [13, "Diamond Soul"], [17, "Empty Body"], [19, "Perfect Self"]]

        for item in ["disease", "poison"]:
            if self.level > 9:
                self.resistances.append(item)
        if self.level > 12:
            self.languages.append("All Languages (Monk Feature)")
        if self.level > 13:
            self.saving_throws = ["strength", "wisdom", "dexterity", "intelligence", "charisma", "constitution"]
        else:
            self.saving_throws = ["strength", "dexterity"]
        self.ki_features = []
        self.ki_dc = 0
        self.elem_feat = []
        wpn_opts = [["shortsword", "any simple weapon (please input)"]]
        eqp_opts = [["dungeoneer's pack", "explorer's pack"]]
        prof = utilities.get_from_list(["artisans tools", "musical instrument"], 1, "proficiency")
        if prof == "musical instrument":
            prof = input("Which instrument do you want to be proficient in?\n")
        utilities.append_proficiencies(self, ["simple weapons", "shortswords", prof])
        self.set_equip(wpn_opts, True)
        self.set_equip(eqp_opts, False)
        utilities.equip(self, "10 darts")
        utilities.set_skills(self, 2, all_skills)
        self.init_hit_dice(8)
        self.init_hp(10, "constitution", 8)
        self.level_features(level_features)
        for item in ki_features:
            lvl = item[0]
            ch = item[1]
            if self.level > int(lvl):
                if isinstance(ch, list):
                    for feat in ch:
                        self.ki_features.append(feat)
                else:
                    self.ki_features.append(ch)
        if self.level > 1:
            self.ki_dc = 8 + self.prof_bonus + self.wis_mod
        arch_choice = self.init_archetype(archetype_opts)
        self.set_arch(arch_choice)
예제 #4
0
 def set_arch(self, arch_choice, char):
     arch = {}
     if arch_choice == "glamour":
         arch['feature'] = [[0, "Mantle of Inspiration"],
                            [0, "Enthralling Performance"],
                            [5, "Mantle of Majesty"],
                            [13, "Unbreakable Majesty"]]
     elif arch_choice == "lore":
         all_skills = list(
             set(utilities.valid_skills()) - set(char.race.skills) -
             set(self.skills))
         utilities.set_skills(self, 3, all_skills)
         arch['feature'] = [[2, "Cutting Words"],
                            [5, "Additional Magic Secrets"],
                            [13, "Peerless Skill"]]
     elif arch_choice == "satire":
         arch['proficiency'] = [[0, "Thieves' tools"]]
         arch['skill'] = [[0, "sleight of hand"]]
         all_skills = list(
             set(utilities.valid_skills()) - set(char.race.skills) -
             set(self.skills))
         utilities.set_skills(self, 1, all_skills)
         arch['feature'] = [[0, "Tumbling Fool"], [5, "Fool's Insight"],
                            [13, "Fool's Luck"]]
         arch['spells'] = [[[5, "two"], ["Detect Thoughts"]]]
     elif arch_choice == "sword":
         arch['proficiency'] = [[0, ["medium armor", "scimitar"]]]
         opts = ["dueling", "two weapon"]
         print(
             "College of Swords: Which fighting style do you want to join? They're listed below"
         )
         print("dueling")
         print("two weapon")
         style = input("")
         arch['feature'] = [[0, "Blade Flourish"], [5, "Extra Attack"],
                            [13, "Master's Flourish"]]
         flag = True
         while flag:
             if utilities.is_valid_input(style, opts):
                 if style == "dueling":
                     print("dueling\n\n")
                     arch['feature'].append([0, ["Dueling (Bard)"]])
                 else:
                     print("other archetype\n\n")
                     arch['feature'].append(
                         [0, ["Two-Weapon Fighting (Bard)"]])
                 flag = False
     elif arch_choice == "valor":
         arch['proficiency'] = [[0, ["medium armor"]], [0, ["shields"]],
                                [0, ["martial weapons"]]]
         arch['feature'] = [[0, "Combat Inspiration"], [5, "Extra Attack"],
                            [13, "Battle Magic"]]
     else:
         arch_choice = "whisper"
         arch['feature'] = [[0, ["Psychic Blades", "Words of Terror"]],
                            [5, ["Mantle of Whispers"]],
                            [13, ["Shadow Lore"]]]
     self.level_arch(arch)
예제 #5
0
 def __init__(self, char):
     BaseClass.__init__(self, char.level)
     MagicChr.__init__(self)
     cant_ct = 2
     self.level = int(char.level)
     self.set_magic(self.level, cant_ct, "bard")
     self.str_mod = char.strength
     self.dex_mod = char.dexterity
     self.wis_mod = char.wisdom
     self.int_mod = char.intelligence
     self.cha_mod = char.charisma
     self.con_mod = char.constitution
     self.level_scores([3, 7, 11, 15, 18])
     self.expert_skills = []
     all_skills = list(
         set(utilities.valid_skills()) - set(char.race.skills))
     archetype_opts = [
         "glamour", "lore", "satire", "sword", "valor", "whisper"
     ]
     level_features = [[1, ["Jack of all Trades", "Song of Rest"]],
                       [2, ["Expertise"]], [4, ["Font of Inspiration"]],
                       [5, ["Countercharm"]], [9, "Magical Secrets"],
                       [13, "Magical Secrets x2"],
                       [17, "Magical Secrets x3"],
                       [19, ["Superior Inspiration"]]]
     equip_opts = [[
         "rapier", "longsword", "any other simple weapon (please input)"
     ]]
     non_wpn_equip = [["Diplomats pack", "Entertainers pack"],
                      [
                          "a lute",
                          "any other musical instrument (please input)"
                      ]]
     self.saving_throws = ["dexterity", "charisma"]
     self.magic_throw = "charisma"
     self.magic_dc = 8 + self.prof_bonus + self.cha_mod
     utilities.append_features(
         self,
         ["Ritual Casting", "Spellcasting Focus", "Bardic Inspiration"])
     utilities.append_proficiencies(self, [
         "light armor", "simple weapons", "hand crossbows", "longswords",
         "rapiers", "shortswords"
     ])
     self.add_instrument(3)
     self.set_equip(equip_opts, True)
     self.set_equip(non_wpn_equip, False)
     self.armor.append(["leather", "11"])
     utilities.equip(self, "dagger")
     utilities.set_skills(self, 3, all_skills)
     self.init_hit_dice(8)
     self.init_hp(8, "constitution", 8)
     self.level_features(level_features)
     if self.level > 2:
         arch_choice = self.init_archetype(archetype_opts)
         self.set_arch(arch_choice, char)
         self.set_expertise(char, 2)
     if self.level > 9:
         self.set_expertise(char, 2)
예제 #6
0
파일: ranger.py 프로젝트: CMRicketts/dnd2.0
 def __init__(self, char):
     BaseClass.__init__(self, char.level)
     MagicChr.__init__(self)
     cant_ct = 0
     self.level = int(char.level)
     self.set_magic(self.level, cant_ct, "ranger")
     self.str_mod = char.strength
     self.dex_mod = char.dexterity
     self.wis_mod = char.wisdom
     self.int_mod = char.intelligence
     self.cha_mod = char.charisma
     self.con_mod = char.constitution
     self.level_scores([3, 7, 11, 15, 18])
     all_skills = list({
         "animal handling", "athletics", "insight", "investigation",
         "nature", "perception", "stealth", "survival"
     } - set(char.race.skills))
     archetype_opts = [
         "Beast Master", "Gloom Stalker", "Horizon Walker", "Hunter",
         "Monster Slayer", "Primeval Guardian"
     ]
     level_features = [[0, ["Favored Enemy", "Natural Explorer"]],
                       [1, "Spellcasting"], [2, "Primeval Awareness"],
                       [4, "Extra Attack"], [7, "Land's Stride"],
                       [9, "Hide in Plain Sight"], [13, "Vanish"],
                       [17, "Feral Senses"], [19, "Foe Slayer"]]
     wpn_opts = [[
         "Two shortswords", "Two simple martial weapons (please input)"
     ]]
     eqp_opts = [["Dungeoneer's Pack", "Explorer's Pack"]]
     amor = utilities.get_from_list(["Scale Mail", "Leather Armor"], 1,
                                    "armor")
     if amor == "Scale Mail":
         self.armor.append(["Scale Mail", "14"])
     else:
         self.armor.append(["Leather Armor", "11"])
     self.saving_throws = ["strength", "dexterity"]
     self.magic_throw = "wisdom"
     self.magic_dc = self.prof_bonus + self.wis_mod + 8
     utilities.set_skills(self, 3, all_skills)
     self.init_hit_dice(10)
     self.init_hp(10, "constitution", 10)
     self.styles = []
     utilities.append_proficiencies(self, [
         "light armor", "medium armor", "shields", "simple weapons",
         "martial weapons"
     ])
     self.set_equip(wpn_opts, True)
     self.set_equip(eqp_opts, False)
     utilities.equip(self, "Longbow and Quiver of 20 arrows")
     self.level_features(level_features)
     if self.level > 1:
         self.set_style()
     if self.level > 2:
         arch_choice = self.init_archetype(archetype_opts)
         self.set_arch(arch_choice)
예제 #7
0
 def __init__(self, char):
     BaseClass.__init__(self, char.level)
     MagicChr.__init__(self)
     cant_ct = 4
     self.level = int(char.level)
     self.set_magic(self.level, cant_ct, "sorcerer")
     self.str_mod = char.strength
     self.dex_mod = char.dexterity
     self.wis_mod = char.wisdom
     self.int_mod = char.intelligence
     self.cha_mod = char.charisma
     self.con_mod = char.constitution
     self.level_scores([3, 7, 11, 15, 18])
     all_skills = list(
         {"arcana", "deception", "insight", "persuasion", "religion"} -
         set(char.race.skills))
     archetype_opts = [
         "Divine Soul", "Draconic Bloodline", "Giant Soul",
         "Phoenix Sorcery", "Sea Sorcery", "Shadow Magic", "Stone Sorcery",
         "Storm Sorcery", "Wild Magic", "Pyromancer"
     ]
     level_features = [[0, "Spellcasting Focus"],
                       [1, ["Sorcery Points", "Flexible Casting"]],
                       [2, "Metamagic"], [19, "Sorcerous Restoration"]]
     wpn_opts = [[
         "A Light crossbow with 20 bolts",
         "Any simple weapon (please input)"
     ]]
     eqp_opts = [["Dungeoneer's pack", "Explorer's Pack"],
                 ["Component Pouch", "Arcane Focus"]]
     self.saving_throws = ["constitution", "charisma"]
     self.magic_throw = "charisma"
     self.magic_dc = 8 + self.prof_bonus + self.cha_mod
     utilities.append_proficiencies(
         self,
         ["daggers", "darts", "slings", "quarterstaffs", "light crossbows"])
     self.set_equip(wpn_opts, True)
     self.set_equip(eqp_opts, False)
     utilities.set_skills(self, 2, all_skills)
     self.init_hit_dice(6)
     self.init_hp(6, "constitution", 6)
     utilities.equip(self, "two daggers")
     self.level_features(level_features)
     self.metamagic_features = []
     self.color = ""
     self.fly_speed = 0
     for level in [2, 2, 9, 16]:
         if self.level > level:
             self.set_metamagic()
     if self.level > 2:
         self.sorcery_pts = self.level
         arch_choice = self.init_archetype(archetype_opts)
         self.set_arch(arch_choice, char)
예제 #8
0
파일: rogue.py 프로젝트: CMRicketts/dnd2.0
 def __init__(self, char):
     BaseClass.__init__(self, char.level)
     self.level = int(char.level)
     self.str_mod = char.strength
     self.dex_mod = char.dexterity
     self.wis_mod = char.wisdom
     self.int_mod = char.intelligence
     self.cha_mod = char.charisma
     self.con_mod = char.constitution
     self.level_scores([3, 7, 11, 15, 18])
     all_skills = list({
         "acrobatics", "athletics", "deception", "insight", "intimidation",
         "investigation", "perception", "performance", "persuasion",
         "sleight of hand", "stealth"
     } - set(char.race.skills))
     archetype_opts = [
         "Arcane Trickster", "Assassin", "Inquisitive", "Mastermind",
         "Scout", "Swashbuckler", "Thief"
     ]
     level_features = [[0, ["Thieves' Cant", "Sneak Attack"]],
                       [1, "Cunning Action"], [4, "Uncanny Dodge"],
                       [6, "Evasion"], [10, "Reliable Talent"],
                       [13, "Blindsense"], [17, "Elusive"],
                       [19, "Stroke of Luck"]]
     wpn_opts = [["Shortsword", "Shortbow and quiver of 20 arrows"],
                 ["Shortsword", "Rapier"]]
     eqp_opts = [["Burglar's Pack", "Dungeoneer's Pack", "Explorer's Pack"]]
     self.saving_throws = ["dexterity", "intelligence"]
     if self.level > 15:
         self.saving_throws.append("wisdom")
     utilities.append_proficiencies(self, [
         "light armor", "simple weapons", "hand crossbow", "longswords",
         "rapiers", "shortswords", "thieves' tools"
     ])
     self.set_equip(wpn_opts, True)
     self.set_equip(eqp_opts, False)
     utilities.equip(self, "Two daggers")
     self.equipment.append("Thieves' tools")
     self.armor = ["Leather armor", "11"]
     utilities.set_skills(self, 4, all_skills)
     self.init_hit_dice(8)
     self.init_hp(8, "constitution", 8)
     self.sneak_dmg = 0
     self.expert_skills = []
     self.level_features(level_features)
     if self.level > 0:
         self.set_expertise(char, 2)
     if self.level > 2:
         arch_choice = self.init_archetype(archetype_opts)
         self.set_arch(arch_choice)
     if self.level > 5:
         self.set_expertise(char, 2)
     self.set_sneak_attack_dmg()
예제 #9
0
 def __init__(self, char):
     BaseClass.__init__(self, char.level)
     self.level = int(char.level)
     self.str_mod = char.strength
     self.dex_mod = char.dexterity
     self.wis_mod = char.wisdom
     self.int_mod = char.intelligence
     self.cha_mod = char.charisma
     self.con_mod = char.constitution
     self.level_scores([3, 5, 7, 11, 13, 15, 18])
     all_skills = list({
         "acrobatics", "animal handling", "athletics", "history", "insight",
         "intimidation"
     } - set(char.race.skills))
     archetype_opts = [
         "arcane", "battle", "brute", "cavalier", "champion", "eldritch",
         "monster", "purple", "samurai", "scout", "sharpshooter"
     ]
     level_features = [[0, "Second Wind"], [1, "Action Surge"],
                       [4, "Extra Attack"], [8, "Indomitable"]]
     wpn_opts = [["A martial weapon and a shield", "Two martial weapons"],
                 ["A light crossbow and 20 bolts", "Two handaxes"]]
     eqp_opts = [["Dungeoneer's Pack", "Explorer's Pack"]]
     self.saving_throws = ["strength", "constitution"]
     utilities.append_proficiencies(
         self, ["All armors", "All shields", "All weapons"])
     self.set_equip(wpn_opts, True)
     self.set_equip(eqp_opts, False)
     spnch = utilities.get_from_list(
         ["leather armor and longbow", "chain mail"], 1)
     if spnch == "leather armor and longbow":
         utilities.equip(self, "Longbow with 20 arrows")
         self.armor = ["Leather Armor", "11"]
     else:
         self.armor = ["Chain Mail", "16"]
     utilities.set_skills(self, 2, all_skills)
     self.init_hit_dice("10")
     self.init_hp(10, "constitution", "10")
     self.maneuvers = []
     self.styles = []
     self.sup_dice_ct = None
     self.sup_dice = None
     self.level_features(level_features)
     self.set_style()
     if self.level > 2:
         arch_choice = self.init_archetype(archetype_opts)
         self.set_arch(arch_choice, char)
예제 #10
0
    def __init__(self, char):
        BaseClass.__init__(self, char.level)
        MagicChr.__init__(self)
        cant_ct = 3
        self.level = int(char.level)
        self.set_magic(self.level, cant_ct, "necromancer")
        self.str_mod = char.strength
        self.dex_mod = char.dexterity
        self.wis_mod = char.wisdom
        self.int_mod = char.intelligence
        self.cha_mod = char.charisma
        self.con_mod = char.constitution
        self.level_scores([3, 7, 11, 15, 18])
        all_skills = list({
            "arcana", "deception", "history", "intimidation", "medicine",
            "perception", "religion"
        } - set(char.race.skills))
        archetype_opts = ["keeper", "reaper", "undertaker"]

        level_features = [[0, ["Spellcasting", "Life Tap"]],
                          [1, "Necromancer Occult"], [2, ["Soul Harvest"]],
                          [4, ["Spontaneous Unburial"]],
                          [6, ["Animate Major Undead"]],
                          [13, ["Ritualistic Unburial"]], [17, ["Macabre"]],
                          [19, ["Seance", "Grim Harvest"]]]

        wpn_opts = [["Crescent Scythe", "Two Daggers"]]
        equip_opts = [["Leather Armor", "Padded Armor"],
                      ["Dungeoneer's Pack", "Explorer's Pack"]]
        self.saving_throws = ["constitution", "charisma"]
        self.magic_throw = "charisma"
        self.magic_dc = 8 + self.prof_bonus + self.cha_mod
        utilities.append_proficiencies(self, ["light armor", "simple weapons"])
        self.set_equip(wpn_opts, True)
        self.set_equip(equip_opts, False)
        utilities.set_skills(self, 2, all_skills)
        self.init_hit_dice(6)
        self.init_hp(6, "constitution", 6)
        self.equipment.append("Spellcasting Focus")
        self.level_features(level_features)
        if self.level > 1:
            arch_choice = self.init_archetype(archetype_opts)
            self.set_arch(arch_choice)
예제 #11
0
 def set_arch(self, arch_choice):
     print(arch_choice)
     arch = {}
     if arch_choice == "drunken master":
         self.skills.append("Performance")
         self.proficiencies.append("Brewer's Supplies")
         arch['feature'] = [[0, "Drunken Technique"], [5, ["Leap to Your Feet", "Redirect Attack"]], [16, "Intoxicated Frenzy"]]
         if self.level > 10:
             self.ki_features.append("Drunkard's Luck")
     elif arch_choice == "four elements":
         self.elem_feat.append("Elemental Attunement")
         self.set_elem()
         for level in [5, 10, 16]:
             if self.level > level:
                 self.set_elem()
     elif arch_choice == "kensei":
         arch['feature'] = [[0, "Path of the Kensei"], [5, "One with the Blade"], [10, "Sharpen the Blade"],
                            [16, "Unerring Accuracy"]]
     elif arch_choice == "long death":
         arch['feature'] = [[0, "Touch of Death"], [5, "Hour of Reaping"], [10, "Mastery of Death"],
                            [16, "Touch of the Long Death"]]
     elif arch_choice == "open hand":
         arch['feature'] = [[0, "Open Hand Technique"], [5, "Wholeness of Body"], [10, "Tranquility"], [16, "Quivering Palm"]]
     elif arch_choice == "shadow":
         MagicChr.__init__(self)
         cant_ct = 1
         self.set_magic(self.level, cant_ct, "monk")
         self.ki_features.append("Shadow Arts")
         arch['feature'] = [[5, "Shadow Step"], [10, "Cloak of Shadows"], [16, "Opportunist"]]
     elif arch_choice == "sun soul":
         arch['feature'] = [[0, "Radiant Sun Bolt"], [5, "Searing Arc Strike"], [10, "Searing Sunburst"], [16, "Sun Shield"]]
         arch['attack'] = [[0, "Radiant Sun Bolt"], [10, "Searing Sunburst"]]
         if self.level > 5:
             self.ki_features.append("Searing Arc Strike")
     else:
         arch_choice = "tranquility"
         arch['feature'] = [[0, ["Path of Tranquility", "Healing Hands"]], [5, "Emissary of Peace"], [10, "Douse the Flames of Anger"], [16, "Anger of a Gentle Soul"]]
         if self.level > 5:
             utilities.set_skills(self, 1, ["performance", "persuasion"])
     self.level_arch(arch)
예제 #12
0
    def set_arch(self, arch_choice, char):
        arch = {}
        if arch_choice == "arcane":
            MagicChr.__init__(self)
            self.magic_throw = "intelligence"
            self.magic_dc = 8 + self.prof_bonus + self.int_mod
            cantrip = utilities.get_from_list(
                ["druidcraft", "prestidigitation"], 1, "cantrip")
            self.add_spell([[0, "cantrip"], [cantrip]], 0)
            utilities.set_skills(self, 1, ["arcana", "nature"])
            self.arcane_choices = []
            self.arcane_shot_desc = []
            for trig in [0, 0, 6, 9, 14, 17]:
                if self.level > trig:
                    self.arcane_shot(1)
            arch['feature'] = [[6, ["Magic Arrow", "Curving Shot"]],
                               [14, "Ever-Ready Shot"]]

        elif arch_choice == "battle":
            self.sup_dice_ct = 6 if self.level > 14 else 5 if self.level > 6 else 4
            self.sup_dice = str(
                self.sup_dice_ct
            ) + "d12" if self.level > 17 else "d10" if self.level > 9 else "d8"
            arch['feature'] = [[0, ["Superiority Dice", "Maneuvers"]],
                               [6, "Know Your Enemy"], [14, "Relentless"]]
            for level in [0, 0, 0, 6, 6, 9, 9, 14, 14]:
                if self.level > level:
                    self.set_maneuver(1)

        elif arch_choice == "brute":
            arch['feature'] = [[0, "Brute Force"], [6, "Brutish Durability"],
                               [14, "Devastating Critical"], [17, "Survivor"]]
            if self.level > 9:
                self.set_style()

        elif arch_choice == "cavalier":
            ch = utilities.get_from_list(["language", "skill"], 1, "option")
            if ch == "language":
                self.languages.append(
                    input("What language do you want to learn?"))
            else:
                utilities.set_skills(self, 1, [
                    "animal handling", "history", "insight", "performance",
                    "persuasion"
                ])
            arch['feature'] = [[
                0, ["Born to the Saddle", "Unwavering Maneuver"]
            ], [6, "Warding Maneuver"], [9, "Hold the Line"],
                               [14, "Ferocious Charger"],
                               [17, "Vigilant Defender"]]

        elif arch_choice == "champion":
            arch['feature'] = [[0, "Improved Critical"],
                               [6, "Remarkable Athlete"],
                               [14, "Superior Critical"], [17, "Survivor"]]
            if self.level > 9:
                self.set_style()

        elif arch_choice == "eldritch":
            MagicChr.set_magic(self, self.level, 2, "eldritch")
            self.magic_dc = 8 + self.prof_bonus + self.int_mod
            self.magic_throw = "intelligence"
            arch['feature'] = [[0, "Weapon Bond"], [6, "War Magic"],
                               [9, "Eldritch Strike"], [14, "Arcane Charge"],
                               [17, "Improved War Magic"]]

        elif arch_choice == "monster":
            ch = utilities.get_from_list(
                ["proficient in a new skill", "proficient in a new tool"], 1)
            if ch == "proficient in a new tool":
                self.proficiencies.append(
                    input("What toolset do you want to be proficient in?"))
            else:
                utilities.set_skills(self, 2, [
                    "arcana", "history", "insight", "investigation", "nature",
                    "perception"
                ])
            self.sup_dice_ct = 6 if self.level > 14 else 5 if self.level > 6 else 4
            self.sup_dice = str(
                self.sup_dice_ct
            ) + "d12" if self.level > 17 else "d10" if self.level > 9 else "d8"
            arch['feature'] = [[0, ["Superiority Dice", "Hunter's Mysticism"]],
                               [6, "Monster Slayer"], [14, "Relentless"]]
        elif arch_choice == "purple":
            arch['feature'] = [[0, "Rallying Cry"], [6, "Royal Envoy"],
                               [9, "Inspiring Surge"], [14, "Bulwark"]]
            if self.level > 6:
                if "persuasion" not in self.skills or char.skills:
                    self.skills.append("persuasion")
                else:
                    utilities.set_skills(self, 1, [
                        "animal handling", "insight", "intimidation",
                        "performance"
                    ])

        elif arch_choice == "samurai":
            arch['feature'] = [[0, "Fighting Spirit"], [6, "Elegant Courtier"],
                               [9, "Tireless Spirit"], [14, "Rapid Strike"],
                               [17, "Strength Before Death"]]
            arch['skill'] = [[
                6,
                utilities.get_from_list(
                    ["history", "insight", "performance", "persuasion"], 1,
                    "skill")
            ]]

        elif arch_choice == "scout":
            utilities.set_skills(self, 3, [
                "acrobatics", "athletics", "investigation", "medicine",
                "nature", "perception", "stealth", "survival"
            ])
            arch['feature'] = [[
                0, ["Natural Explorer (Fighter)", "Superiority Dice"]
            ], [14, "Relentless"]]
            self.sup_dice_ct = 6 if self.level > 14 else 5 if self.level > 6 else 4
            self.sup_dice = str(
                self.sup_dice_ct
            ) + "d12" if self.level > 17 else "d10" if self.level > 9 else "d8"

        else:
            arch_choice = "sharpshooter"
            arch['feature'] = [[0, "Steady Aim"], [6, "Careful Eyes"],
                               [9, "Close-Quarters Shooting"],
                               [14, "Rapid Strike"], [17, "Snap Shot"]]
            arch['skill'] = [[
                6,
                utilities.get_from_list(
                    ["perception", "investigation", "survival"], 1, "skill")
            ]]
        self.level_arch(arch)
예제 #13
0
 def __init__(self, char):
     BaseClass.__init__(self, char.level)
     self.level = int(char.level)
     self.rage_ct = 2
     self.rage_dmg = 2
     self.str_mod = char.strength
     self.dex_mod = char.dexterity
     self.wis_mod = char.wisdom
     self.int_mod = char.intelligence
     self.cha_mod = char.charisma
     self.con_mod = char.constitution
     self.level_scores([3, 7, 11, 15, 18])
     all_skills = list({
         "animal handling", "athletics", "intimidation", "nature",
         "perception", "survival"
     } - set(char.race.skills))
     archetype_opts = [
         "cannibal", "ancestor", "berserker", "storm", "totem", "zealot"
     ]
     if char.race_name == "dwarf":
         archetype_opts.append("battlerager")
     level_features = [[1, ["Reckless Attack", "Danger Sense"]],
                       [4, ["Extra Attack", "Fast Movement"]],
                       [6, ["Feral Instinct"]], [8, ["Brutal Critical"]],
                       [10, ["Relentless Rage"]], [14, ["Persistant Rage"]],
                       [17, ["Indomitable Might"]],
                       [20, ["Primal Champion"]]]
     utilities.append_features(self, ["Rage", "Unarmored Defense"])
     utilities.append_proficiencies(self, [
         "light armor", "medium armor", "shields", "simple weapons",
         "martial weapons"
     ])
     equip_opts = [[
         "greataxe", "any other martial melee weapon (please input)"
     ], ["two handaxes", "any other simple melee weapon (please input)"]]
     self.saving_throws = ["strength", "constitution"]
     if self.level > 1:
         self.advantages.append("Dexterity against effects you can see")
     if self.level > 2:
         arch_choice = self.init_archetype(archetype_opts)
         self.rage_ct = 3
         self.set_arch(arch_choice)
     if self.level > 5:
         self.rage_ct = 4
     if self.level > 6:
         self.advantages.append("Initiative rolls")
     if self.level > 8:
         self.rage_dmg = 3
     if self.level > 11:
         self.rage_ct = 5
     if self.level > 15:
         self.rage_dmg = 4
     if self.level > 16:
         self.rage_ct = 6
     if self.level > 19:
         self.str_mod += 4
         self.con_mod += 4
         self.rage_ct = 7
     utilities.set_skills(self, 2, all_skills)
     self.init_hit_dice(12)
     self.init_hp(12, "charisma", 12)
     self.level_features(level_features)
     self.set_equip(equip_opts, True)
     utilities.equip(self, "Javelin x4")
     self.equipment.append("Explorer's Pack")
예제 #14
0
 def __init__(self, char):
     BaseClass.__init__(self, char.level)
     MagicChr.__init__(self)
     cant_ct = 2
     self.level = int(char.level)
     self.set_magic(self.level, cant_ct, "warlock")
     self.str_mod = char.strength
     self.dex_mod = char.dexterity
     self.wis_mod = char.wisdom
     self.int_mod = char.intelligence
     self.cha_mod = char.charisma
     self.con_mod = char.constitution
     self.level_scores([3, 7, 11, 15, 18])
     all_skills = list({
         "arcana", "deception", "history", "intimidation", "nature",
         "religion"
     } - set(char.race.skills))
     archetype_opts = [
         "Archfey", "Celestial", "Fiend", "Ghost in the Machine",
         "Great Old One", "Hexblade", "Raven Queen", "Seeker", "Undying"
     ]
     level_features = [[10, "Mystic Arcanum"], [19, "Eldritch Master"]]
     wpn_opts = [[
         "Light crossbow with 20 bolts", "Any simple weapon (please input)"
     ]]
     eqp_opts = [["Dungeoneer's pack", "Scholar's pack"],
                 ["Component pouch", "Arcane focus"]]
     self.saving_throws = ["wisdom", "charisma"]
     self.magic_throw = "charisma"
     self.magic_dc = 8 + self.prof_bonus + self.cha_mod
     utilities.append_proficiencies(self, ["light armor", "simple weapons"])
     self.set_equip(wpn_opts, True)
     self.set_equip(eqp_opts, False)
     utilities.set_skills(self, 2, all_skills)
     self.init_hit_dice(8)
     self.init_hp(8, "constitution", 8)
     for item in [
             "two daggers",
             input(
                 "Initialization: What simple weapon do you want to have?\n"
             )
     ]:
         utilities.equip(self, item)
     self.armor = ["leather armor", "11"]
     self.invocations = []
     self.pact = ""
     self.pact_desc = []
     self.level_features(level_features)
     arch_choice = self.init_archetype(archetype_opts)
     self.set_arch(arch_choice)
     if self.level > 1:
         self.set_pact()
     if self.level == 1:
         self.invocation_ct = 2
     elif 2 < self.level < 11:
         self.invocation_ct = int(math.ceil(self.level / 2))
     elif self.level > 10:
         self.invocation_ct = 5
     elif self.level > 11:
         self.invocation_ct = 6
     elif self.level > 14:
         self.invocation_ct = 7
     elif self.level > 17:
         self.invocation_ct = 8
     for x in range(0, int(self.invocation_ct)):
         self.choose_inv()
예제 #15
0
 def __init__(self, char):
     BaseClass.__init__(self, char.level)
     MagicChr.__init__(self)
     cant_ct = 0
     self.level = int(char.level)
     self.set_magic(self.level, cant_ct, "paladin")
     self.str_mod = char.strength
     self.dex_mod = char.dexterity
     self.wis_mod = char.wisdom
     self.int_mod = char.intelligence
     self.cha_mod = char.charisma
     self.con_mod = char.constitution
     self.level_scores([3, 7, 11, 15, 18])
     all_skills = list({
         "athletics", "insight", "intimidation", "medicine", "persuasion",
         "religion"
     } - set(char.race.skills))
     archetype_opts = [
         "ancients", "conquest", "crown", "devotion", "redemption",
         "vengeance"
     ]
     if "Evil" in char.alignment:
         archetype_opts.extend(["oathbreaker", "treachery"])
     level_features = [[0, ["Divine Sense", "Lay on Hands"]],
                       [
                           1,
                           [
                               "Fighting Style", "Divine Smite",
                               "Spellcasting", "Spellcasting Focus"
                           ]
                       ], [2, "Divine Health"], [4, "Extra Attack"],
                       [5, "Aura of Protection"], [9, "Aura of Courage"],
                       [10, "Improved Divine Smite"],
                       [13, "Cleansing Touch"]]
     wpn_opts = [[
         "5 javelins", "any other simple melee weapon (please input)"
     ], ["one martial weapon and a shield", "two martial weapons"]]
     eqp_opts = [["Priest's Pack", "Explorer's Pack"]]
     self.saving_throws = ["wisdom", "charisma"]
     self.magic_throw = "charisma"
     self.magic_dc = 8 + self.prof_bonus + utilities.get_modifier(
         self, "charisma", True)
     self.styles = []
     utilities.append_proficiencies(
         self,
         ["all armor", "shields", "simple weapons", "martial weapons"])
     self.set_equip(wpn_opts, True)
     self.set_equip(eqp_opts, False)
     self.equipment.append(input("What holy symbol do you want to use?\n"))
     self.armor.append(["chain mail", "16"])
     utilities.set_skills(self, 2, all_skills)
     self.init_hit_dice(10)
     self.init_hp(10, "constitution", 10)
     self.level_features(level_features)
     if self.level > 1:
         self.set_style()
         self.attack.append("Divine Smite")
     if self.level > 2:
         self.resistances.append("Immune to Disease")
         arch_choice = self.init_archetype(archetype_opts)
         self.set_arch(arch_choice)
     if self.level > 10:
         self.attack.append("Improved Divine Smite")