class Bugbear(CharacterClass): name = "Bugbear" restriction_set = restrictions.RestrictionSet( armor=restrictions.ArmorRestrictionSet(included=(LeatherArmor, ))) level_table = LevelTable(levels=( Level( value=-1, attack_bonus=1, experience_required=-3000, hit_dice=dice.D8(1), saving_throws_set=Fighter.level_table.get(1).saving_throws_set, ), Level(value=0, attack_bonus=2, experience_required=-1500, hit_dice=dice.D8(2), saving_throws_set=Fighter.level_table.get(1).saving_throws_set), Level( value=1, attack_bonus=2, experience_required=0, hit_dice=dice.D8(2), saving_throws_set=Fighter.level_table.get(1).saving_throws_set, special_ability_set=SpecialAbilitySet(( specialabilities.BugBearStealth, specialabilities.MoveSilently(20), specialabilities.Hide(10))), )))
class Gnoll(CharacterClass): name = "Gnoll" restriction_set = restrictions.RestrictionSet( armor=restrictions.ArmorRestrictionSet(included=(LeatherArmor, ))) level_table = LevelTable(levels=( Level(value=0, attack_bonus=1, experience_required=-1500, hit_dice=dice.D8(1), saving_throws_set=Fighter.level_table.get(1).saving_throws_set), Level( value=1, attack_bonus=2, experience_required=0, hit_dice=dice.D8(2), saving_throws_set=Fighter.level_table.get(1).saving_throws_set, )))
class Thief(CharacterClass): name = "Thief" restriction_set = restrictions.RestrictionSet( ability_score=restrictions.AbilityScoreRestrictionSet( minimum_set=abilityscores.AbilityScoreSet(dexterity=9)), armor=restrictions.ArmorRestrictionSet( included=(armor.types.Clothing, armor.types.LightArmor))) special_abilities = specialabilities.SpecialAbilitySet( (specialabilities.SneakAttack)) level_table = LevelTable( levels=(Level(value=1, attack_bonus=1, experience_required=0, hit_dice=dice.D4(1), saving_throws_set=SavingThrowSet(death_poison=13, dragon_breath=16, paralysis_stone=13, spells=15, wands=14), special_ability_set=specialabilities.SpecialAbilitySet(( specialabilities.ClimbWalls(80), specialabilities.Hide(10), specialabilities.Listen(30), specialabilities.MoveSilently(25), specialabilities.OpenLock(25), specialabilities.RemoveTraps(20), specialabilities.PickPockets(30), ))), Level(value=2, attack_bonus=1, experience_required=1500, hit_dice=dice.D4(2), saving_throws_set=SavingThrowSet(death_poison=12, dragon_breath=15, paralysis_stone=12, spells=14, wands=14), special_ability_set=specialabilities.SpecialAbilitySet(( specialabilities.ClimbWalls(81), specialabilities.Hide(15), specialabilities.Listen(34), specialabilities.MoveSilently(30), specialabilities.OpenLock(30), specialabilities.RemoveTraps(25), specialabilities.PickPockets(35), ))), Level(value=3, attack_bonus=2, experience_required=3000, hit_dice=dice.D4(3), saving_throws_set=SavingThrowSet(death_poison=12, dragon_breath=15, paralysis_stone=12, spells=14, wands=14), special_ability_set=specialabilities.SpecialAbilitySet(( specialabilities.ClimbWalls(82), specialabilities.Hide(20), specialabilities.Listen(38), specialabilities.MoveSilently(35), specialabilities.OpenLock(35), specialabilities.RemoveTraps(30), specialabilities.PickPockets(40), ))), Level(value=4, attack_bonus=2, experience_required=6000, hit_dice=dice.D4(4), saving_throws_set=SavingThrowSet(death_poison=11, dragon_breath=14, paralysis_stone=12, spells=13, wands=13), special_ability_set=specialabilities.SpecialAbilitySet(( specialabilities.ClimbWalls(83), specialabilities.Hide(25), specialabilities.Listen(42), specialabilities.MoveSilently(40), specialabilities.OpenLock(40), specialabilities.RemoveTraps(35), specialabilities.PickPockets(45), ))), Level(value=5, attack_bonus=3, experience_required=12000, hit_dice=dice.D4(5), saving_throws_set=SavingThrowSet(death_poison=11, dragon_breath=14, paralysis_stone=12, spells=13, wands=13), special_ability_set=specialabilities.SpecialAbilitySet(( specialabilities.ClimbWalls(84), specialabilities.Hide(30), specialabilities.Listen(46), specialabilities.MoveSilently(45), specialabilities.OpenLock(45), specialabilities.RemoveTraps(40), specialabilities.PickPockets(50), ))), Level(value=6, attack_bonus=3, experience_required=24000, hit_dice=dice.D4(6), saving_throws_set=SavingThrowSet(death_poison=11, dragon_breath=13, paralysis_stone=11, spells=13, wands=13), special_ability_set=specialabilities.SpecialAbilitySet(( specialabilities.ClimbWalls(85), specialabilities.Hide(35), specialabilities.Listen(50), specialabilities.MoveSilently(50), specialabilities.OpenLock(50), specialabilities.RemoveTraps(45), specialabilities.PickPockets(55), ))), Level(value=7, attack_bonus=4, experience_required=48000, hit_dice=dice.D4(7), saving_throws_set=SavingThrowSet(death_poison=11, dragon_breath=13, paralysis_stone=11, spells=13, wands=13), special_ability_set=specialabilities.SpecialAbilitySet(( specialabilities.ClimbWalls(86), specialabilities.Hide(40), specialabilities.Listen(54), specialabilities.MoveSilently(55), specialabilities.OpenLock(55), specialabilities.RemoveTraps(50), specialabilities.PickPockets(60), ))), Level(value=8, attack_bonus=4, experience_required=90000, hit_dice=dice.D4(8), saving_throws_set=SavingThrowSet(death_poison=10, dragon_breath=12, paralysis_stone=11, spells=12, wands=12), special_ability_set=specialabilities.SpecialAbilitySet(( specialabilities.ClimbWalls(87), specialabilities.Hide(45), specialabilities.Listen(58), specialabilities.MoveSilently(60), specialabilities.OpenLock(60), specialabilities.RemoveTraps(55), specialabilities.PickPockets(65), ))), Level(value=9, attack_bonus=5, experience_required=180000, hit_dice=dice.D4(9), saving_throws_set=SavingThrowSet(death_poison=10, dragon_breath=12, paralysis_stone=11, spells=12, wands=12), special_ability_set=specialabilities.SpecialAbilitySet(( specialabilities.ClimbWalls(88), specialabilities.Hide(50), specialabilities.Listen(62), specialabilities.MoveSilently(65), specialabilities.OpenLock(65), specialabilities.RemoveTraps(60), specialabilities.PickPockets(70), ))), Level(value=10, attack_bonus=5, experience_required=270000, hit_dice=dice.D4(9), hit_dice_flat_bonus=2, saving_throws_set=SavingThrowSet(death_poison=9, dragon_breath=11, paralysis_stone=10, spells=11, wands=12), special_ability_set=specialabilities.SpecialAbilitySet(( specialabilities.ClimbWalls(89), specialabilities.Hide(53), specialabilities.Listen(65), specialabilities.MoveSilently(68), specialabilities.OpenLock(68), specialabilities.RemoveTraps(63), specialabilities.PickPockets(74), ))), Level(value=11, attack_bonus=5, experience_required=360000, hit_dice=dice.D4(9), hit_dice_flat_bonus=4, saving_throws_set=SavingThrowSet(death_poison=9, dragon_breath=11, paralysis_stone=10, spells=11, wands=12), special_ability_set=specialabilities.SpecialAbilitySet(( specialabilities.ClimbWalls(90), specialabilities.Hide(56), specialabilities.Listen(68), specialabilities.MoveSilently(71), specialabilities.OpenLock(71), specialabilities.RemoveTraps(66), specialabilities.PickPockets(78), ))), Level(value=12, attack_bonus=6, experience_required=450000, hit_dice=dice.D4(9), hit_dice_flat_bonus=6, saving_throws_set=SavingThrowSet(death_poison=9, dragon_breath=10, paralysis_stone=10, spells=11, wands=10), special_ability_set=specialabilities.SpecialAbilitySet(( specialabilities.ClimbWalls(91), specialabilities.Hide(59), specialabilities.Listen(71), specialabilities.MoveSilently(74), specialabilities.OpenLock(74), specialabilities.RemoveTraps(69), specialabilities.PickPockets(82), ))), Level(value=13, attack_bonus=6, experience_required=540000, hit_dice=dice.D4(9), hit_dice_flat_bonus=8, saving_throws_set=SavingThrowSet(death_poison=9, dragon_breath=10, paralysis_stone=10, spells=11, wands=10), special_ability_set=specialabilities.SpecialAbilitySet(( specialabilities.ClimbWalls(92), specialabilities.Hide(62), specialabilities.Listen(74), specialabilities.MoveSilently(77), specialabilities.OpenLock(77), specialabilities.RemoveTraps(72), specialabilities.PickPockets(86), ))), Level(value=14, attack_bonus=6, experience_required=630000, hit_dice=dice.D4(9), hit_dice_flat_bonus=10, saving_throws_set=SavingThrowSet(death_poison=8, dragon_breath=9, paralysis_stone=9, spells=10, wands=10), special_ability_set=specialabilities.SpecialAbilitySet(( specialabilities.ClimbWalls(93), specialabilities.Hide(65), specialabilities.Listen(77), specialabilities.MoveSilently(80), specialabilities.OpenLock(80), specialabilities.RemoveTraps(75), specialabilities.PickPockets(90), ))), Level(value=15, attack_bonus=7, experience_required=720000, hit_dice=dice.D4(9), hit_dice_flat_bonus=12, saving_throws_set=SavingThrowSet(death_poison=8, dragon_breath=9, paralysis_stone=9, spells=10, wands=10), special_ability_set=specialabilities.SpecialAbilitySet(( specialabilities.ClimbWalls(94), specialabilities.Hide(68), specialabilities.Listen(80), specialabilities.MoveSilently(83), specialabilities.OpenLock(83), specialabilities.RemoveTraps(78), specialabilities.PickPockets(94), ))), Level(value=16, attack_bonus=7, experience_required=810000, hit_dice=dice.D4(9), hit_dice_flat_bonus=14, saving_throws_set=SavingThrowSet(death_poison=7, dragon_breath=8, paralysis_stone=9, spells=9, wands=9), special_ability_set=specialabilities.SpecialAbilitySet(( specialabilities.ClimbWalls(95), specialabilities.Hide(69), specialabilities.Listen(83), specialabilities.MoveSilently(85), specialabilities.OpenLock(84), specialabilities.RemoveTraps(79), specialabilities.PickPockets(95), ))), Level(value=17, attack_bonus=7, experience_required=900000, hit_dice=dice.D4(9), hit_dice_flat_bonus=16, saving_throws_set=SavingThrowSet(death_poison=7, dragon_breath=8, paralysis_stone=9, spells=9, wands=9), special_ability_set=specialabilities.SpecialAbilitySet(( specialabilities.ClimbWalls(96), specialabilities.Hide(70), specialabilities.Listen(86), specialabilities.MoveSilently(87), specialabilities.OpenLock(85), specialabilities.RemoveTraps(80), specialabilities.PickPockets(96), ))), Level(value=18, attack_bonus=8, experience_required=990000, hit_dice=dice.D4(9), hit_dice_flat_bonus=18, saving_throws_set=SavingThrowSet(death_poison=7, dragon_breath=7, paralysis_stone=8, spells=9, wands=9), special_ability_set=specialabilities.SpecialAbilitySet(( specialabilities.ClimbWalls(97), specialabilities.Hide(71), specialabilities.Listen(89), specialabilities.MoveSilently(89), specialabilities.OpenLock(86), specialabilities.RemoveTraps(81), specialabilities.PickPockets(97), ))), Level(value=19, attack_bonus=8, experience_required=1080000, hit_dice=dice.D4(9), hit_dice_flat_bonus=20, saving_throws_set=SavingThrowSet(death_poison=7, dragon_breath=7, paralysis_stone=8, spells=9, wands=9), special_ability_set=specialabilities.SpecialAbilitySet(( specialabilities.ClimbWalls(98), specialabilities.Hide(72), specialabilities.Listen(92), specialabilities.MoveSilently(91), specialabilities.OpenLock(87), specialabilities.RemoveTraps(82), specialabilities.PickPockets(98), ))), Level(value=20, attack_bonus=8, experience_required=1170000, hit_dice=dice.D4(9), hit_dice_flat_bonus=22, saving_throws_set=SavingThrowSet(death_poison=6, dragon_breath=6, paralysis_stone=8, spells=8, wands=8), special_ability_set=specialabilities.SpecialAbilitySet(( specialabilities.ClimbWalls(99), specialabilities.Hide(73), specialabilities.Listen(95), specialabilities.MoveSilently(93), specialabilities.OpenLock(88), specialabilities.RemoveTraps(83), specialabilities.PickPockets(99), )))))
class MagicUser(CharacterClass): name = "Magic-User" restriction_set = restrictions.RestrictionSet( ability_score=restrictions.AbilityScoreRestrictionSet( minimum_set=abilityscores.AbilityScoreSet(intelligence=9) ), armor=restrictions.ArmorRestrictionSet(included=(armor.types.Clothing, ), shields=False), weapons=restrictions.WeaponRestrictionSet( included=( weapons.types.Dagger, weapons.types.Cudgel, weapons.types.WalkingStaff, ) ) ) special_abilities = specialabilities.SpecialAbilitySet( special_abilities=( specialabilities.ArcaneCaster, specialabilities.ReadMagic ) ) level_table = LevelTable( levels=( Level( value=1, attack_bonus=1, experience_required=0, hit_dice=dice.D4(1), saving_throws_set=SavingThrowSet( death_poison=13, dragon_breath=16, paralysis_stone=13, spells=15, wands=14 ), spell_slots_set=SpellSlotSet(level_1=1) ), Level( value=2, attack_bonus=1, experience_required=2500, hit_dice=dice.D4(2), saving_throws_set=SavingThrowSet( death_poison=13, dragon_breath=15, paralysis_stone=13, spells=14, wands=14 ), spell_slots_set=SpellSlotSet(level_1=2) ), Level( value=3, attack_bonus=1, experience_required=5000, hit_dice=dice.D4(3), saving_throws_set=SavingThrowSet( death_poison=13, dragon_breath=15, paralysis_stone=13, spells=14, wands=14 ), spell_slots_set=SpellSlotSet(level_1=2, level_2=1) ), Level( value=4, attack_bonus=2, experience_required=10000, hit_dice=dice.D4(4), saving_throws_set=SavingThrowSet( death_poison=12, dragon_breath=15, paralysis_stone=12, spells=13, wands=13 ), spell_slots_set=SpellSlotSet(level_1=2, level_2=2) ), Level( value=5, attack_bonus=2, experience_required=20000, hit_dice=dice.D4(5), saving_throws_set=SavingThrowSet( death_poison=12, dragon_breath=15, paralysis_stone=12, spells=13, wands=13 ), spell_slots_set=SpellSlotSet(level_1=2, level_2=2, level_3=1) ), Level( value=6, attack_bonus=3, experience_required=40000, hit_dice=dice.D4(6), saving_throws_set=SavingThrowSet( death_poison=12, dragon_breath=14, paralysis_stone=11, spells=13, wands=12 ), spell_slots_set=SpellSlotSet(level_1=3, level_2=2, level_3=2) ), Level( value=7, attack_bonus=3, experience_required=80000, hit_dice=dice.D4(7), saving_throws_set=SavingThrowSet( death_poison=12, dragon_breath=14, paralysis_stone=11, spells=13, wands=12 ), spell_slots_set=SpellSlotSet(level_1=3, level_2=2, level_3=2, level_4=1) ), Level( value=8, attack_bonus=3, experience_required=150000, hit_dice=dice.D4(8), saving_throws_set=SavingThrowSet( death_poison=11, dragon_breath=14, paralysis_stone=10, spells=12, wands=11 ), spell_slots_set=SpellSlotSet(level_1=3, level_2=3, level_3=2, level_4=2) ), Level( value=9, attack_bonus=4, experience_required=300000, hit_dice=dice.D4(9), saving_throws_set=SavingThrowSet( death_poison=11, dragon_breath=14, paralysis_stone=10, spells=12, wands=11 ), spell_slots_set=SpellSlotSet(level_1=3, level_2=3, level_3=2, level_4=2, level_5=1) ), Level( value=10, attack_bonus=4, experience_required=450000, hit_dice=dice.D4(9), hit_dice_flat_bonus=1, saving_throws_set=SavingThrowSet( death_poison=11, dragon_breath=13, paralysis_stone=9, spells=11, wands=10 ), spell_slots_set=SpellSlotSet(level_1=4, level_2=3, level_3=3, level_4=2, level_5=2) ), Level( value=11, attack_bonus=4, experience_required=600000, hit_dice=dice.D4(9), hit_dice_flat_bonus=2, saving_throws_set=SavingThrowSet( death_poison=11, dragon_breath=13, paralysis_stone=9, spells=11, wands=10 ), spell_slots_set=SpellSlotSet(level_1=4, level_2=4, level_3=3, level_4=2, level_5=2, level_6=1) ), Level( value=12, attack_bonus=4, experience_required=750000, hit_dice=dice.D4(9), hit_dice_flat_bonus=3, saving_throws_set=SavingThrowSet( death_poison=10, dragon_breath=13, paralysis_stone=9, spells=11, wands=10 ), spell_slots_set=SpellSlotSet(level_1=4, level_2=4, level_3=3, level_4=3, level_5=2, level_6=2) ), Level( value=13, attack_bonus=5, experience_required=900000, hit_dice=dice.D4(9), hit_dice_flat_bonus=4, saving_throws_set=SavingThrowSet( death_poison=10, dragon_breath=13, paralysis_stone=9, spells=11, wands=10 ), spell_slots_set=SpellSlotSet(level_1=4, level_2=4, level_3=4, level_4=3, level_5=2, level_6=2) ), Level( value=14, attack_bonus=5, experience_required=1050000, hit_dice=dice.D4(9), hit_dice_flat_bonus=5, saving_throws_set=SavingThrowSet( death_poison=10, dragon_breath=12, paralysis_stone=8, spells=10, wands=9 ), spell_slots_set=SpellSlotSet(level_1=4, level_2=4, level_3=4, level_4=3, level_5=3, level_6=2) ), Level( value=15, attack_bonus=5, experience_required=1200000, hit_dice=dice.D4(9), hit_dice_flat_bonus=6, saving_throws_set=SavingThrowSet( death_poison=10, dragon_breath=12, paralysis_stone=8, spells=10, wands=9 ), spell_slots_set=SpellSlotSet(level_1=5, level_2=4, level_3=4, level_4=3, level_5=3, level_6=2) ), Level( value=16, attack_bonus=6, experience_required=1350000, hit_dice=dice.D4(9), hit_dice_flat_bonus=7, saving_throws_set=SavingThrowSet( death_poison=9, dragon_breath=12, paralysis_stone=7, spells=9, wands=8 ), spell_slots_set=SpellSlotSet(level_1=5, level_2=5, level_3=4, level_4=3, level_5=3, level_6=2) ), Level( value=17, attack_bonus=6, experience_required=1500000, hit_dice=dice.D4(9), hit_dice_flat_bonus=8, saving_throws_set=SavingThrowSet( death_poison=9, dragon_breath=12, paralysis_stone=7, spells=9, wands=8 ), spell_slots_set=SpellSlotSet(level_1=5, level_2=5, level_3=4, level_4=4, level_5=3, level_6=3) ), Level( value=18, attack_bonus=6, experience_required=1650000, hit_dice=dice.D4(9), hit_dice_flat_bonus=9, saving_throws_set=SavingThrowSet( death_poison=9, dragon_breath=11, paralysis_stone=6, spells=9, wands=7 ), spell_slots_set=SpellSlotSet(level_1=6, level_2=5, level_3=4, level_4=4, level_5=3, level_6=3) ), Level( value=19, attack_bonus=7, experience_required=1800000, hit_dice=dice.D4(9), hit_dice_flat_bonus=10, saving_throws_set=SavingThrowSet( death_poison=9, dragon_breath=11, paralysis_stone=6, spells=9, wands=7 ), spell_slots_set=SpellSlotSet(level_1=6, level_2=5, level_3=5, level_4=4, level_5=3, level_6=3) ), Level( value=20, attack_bonus=7, experience_required=1950000, hit_dice=dice.D4(9), hit_dice_flat_bonus=11, saving_throws_set=SavingThrowSet( death_poison=8, dragon_breath=11, paralysis_stone=5, spells=8, wands=6 ), spell_slots_set=SpellSlotSet(level_1=6, level_2=5, level_3=5, level_4=4, level_5=4, level_6=3) ) ) )