예제 #1
0
class Halfling(Race):
    name = "Halfling"
    average_height = units.Feet(3)
    average_weight = units.Pound(60)
    average_lifespan = timedelta(days=109500)

    restriction_set = restrictions.RestrictionSet(
        ability_score=restrictions.AbilityScoreRestrictionSet(
            minimum_set=abilityscores.AbilityScoreSet(dexterity=9),
            maximum_set=abilityscores.AbilityScoreSet(strength=17),
        ),
        classes=restrictions.ClassRestrictionSet(included=(classes.Cleric,
                                                           classes.Fighter,
                                                           classes.Thief), ),
        hit_dice_max_size=restrictions.HitDiceMaxSizeRestriction(dice.D6),
        weapon_size=restrictions.WeaponSizeRestrictionSet(
            large=restrictions.WeaponSizeRestrictionSet.keywords.CannotWield,
            medium=restrictions.WeaponSizeRestrictionSet.keywords.
            NeedsTwoHands,
            small=restrictions.WeaponSizeRestrictionSet.keywords.CanWield,
        ))
    racial_language = languages.Halfling
    special_ability_set = specialabilities.SpecialAbilitySet(
        (specialabilities.HalflingHide, specialabilities.InitiativeBonus(1),
         specialabilities.MeleeDefenseBonus(2),
         specialabilities.RangedWeaponAccuracyBonus(1)))
    saving_throw_set = savingthrows.SavingThrowSet(death_poison=-4,
                                                   dragon_breath=-3,
                                                   paralysis_stone=-4,
                                                   spells=-4,
                                                   wands=-4)
예제 #2
0
class Goblin(Race):
    name = "Goblin"
    average_height = units.Feet(3)
    average_weight = units.Pound(45)
    average_lifespan = timedelta(days=18250)

    restriction_set = restrictions.RestrictionSet(
        ability_score=restrictions.AbilityScoreRestrictionSet(
            minimum_set=abilityscores.AbilityScoreSet(dexterity=9),
            maximum_set=abilityscores.AbilityScoreSet(strength=16,
                                                      constitution=16),
        ),
        weapon_size=restrictions.WeaponSizeRestrictionSet(
            large=restrictions.WeaponSizeRestrictionSet.keywords.CannotWield,
            medium=restrictions.WeaponSizeRestrictionSet.keywords.
            NeedsTwoHands,
            small=restrictions.WeaponSizeRestrictionSet.keywords.CanWield,
        ))
    racial_language = languages.Goblin
    special_ability_set = specialabilities.SpecialAbilitySet((
        specialabilities.Darkvision,
        specialabilities.FeebleConstitution(1),
        specialabilities.MeleeDefenseBonus(2),
        specialabilities.DetectNewConstructions,
        specialabilities.DetectSecretDoor,
        specialabilities.DetectShiftingWalls,
        specialabilities.DetectSlantingPassages,
        specialabilities.DetectTraps,
        specialabilities.OpenLock(10),
        specialabilities.RemoveTraps(10),
    ))
예제 #3
0
class Dwarf(Race):
    name = "Dwarf"
    average_height = units.Feet(4)
    average_weight = units.Pound(120)
    average_lifespan = timedelta(days=36500)

    restriction_set = restrictions.RestrictionSet(
        ability_score=restrictions.AbilityScoreRestrictionSet(
            minimum_set=abilityscores.AbilityScoreSet(constitution=9),
            maximum_set=abilityscores.AbilityScoreSet(charisma=17),
        ),
        classes=restrictions.ClassRestrictionSet(included=(classes.Cleric,
                                                           classes.Fighter,
                                                           classes.Thief)),
        weapons=restrictions.WeaponRestrictionSet(excluded=(
            bflib.items.weapons.melee.swords.TwoHandedSword,
            bflib.items.weapons.melee.polearms.Polearm,
            bflib.items.weapons.ranged.bows.Longbow,
        )))
    racial_language = languages.Dwarvish
    special_ability_set = specialabilities.SpecialAbilitySet((
        specialabilities.Darkvision,
        specialabilities.DetectNewConstructions,
        specialabilities.DetectShiftingWalls,
        specialabilities.DetectSlantingPassages,
        specialabilities.DetectTraps,
    ))
    saving_throw_set = savingthrows.SavingThrowSet(death_poison=-4,
                                                   dragon_breath=-3,
                                                   paralysis_stone=-4,
                                                   spells=-4,
                                                   wands=-4)
예제 #4
0
class Gnoll(Race):
    name = "Gnoll"
    average_height = units.Feet(7)
    average_weight = units.Pound(300)
    average_lifespan = timedelta(days=27375)

    racial_class = racialclass.Gnoll
    restriction_set = restrictions.RestrictionSet(
        ability_score=restrictions.AbilityScoreRestrictionSet(
            minimum_set=abilityscores.AbilityScoreSet(strength=13,
                                                      constitution=11),
            maximum_set=abilityscores.AbilityScoreSet(charisma=15,
                                                      intelligence=15),
        ),
        classes=restrictions.ClassRestrictionSet(included=(classes.Cleric,
                                                           classes.Fighter,
                                                           classes.MagicUser)),
    )
    racial_language = languages.Bugbear
    special_ability_set = specialabilities.SpecialAbilitySet((
        specialabilities.Darkvision,
        specialabilities.PowerfulScent,
    ))
    saving_throw_set = savingthrows.SavingThrowSet(
        death_poison=-4,
        paralysis_stone=-4,
    )
예제 #5
0
파일: base.py 프로젝트: ChrisLR/BFLib
class Race(object):
    __metaclass__ = abc.ABCMeta

    name = ""
    average_height = units.Feet(0)
    average_weight = units.Pound(0)
    average_lifespan = timedelta(0)

    restriction_set = restrictions.RestrictionSet()
    racial_language = languages.Common
    special_ability_set = specialabilities.SpecialAbilitySet()
    saving_throw_set = savingthrows.SavingThrowSet()
예제 #6
0
class Bugbear(Race):
    name = "Bugbear"
    average_height = units.Feet(6)
    average_weight = units.Pound(180)
    average_lifespan = timedelta(days=27375)

    racial_class = racialclass.Bugbear
    restriction_set = restrictions.RestrictionSet(
        ability_score=restrictions.AbilityScoreRestrictionSet(
            minimum_set=abilityscores.AbilityScoreSet(strength=13,
                                                      dexterity=9),
            maximum_set=abilityscores.AbilityScoreSet(charisma=15,
                                                      intelligence=15),
        ),
        classes=restrictions.ClassRestrictionSet(included=(classes.Cleric,
                                                           classes.Fighter,
                                                           classes.Thief)),
    )
    racial_language = languages.Bugbear
    special_ability_set = specialabilities.SpecialAbilitySet(
        (specialabilities.Darkvision, ))
예제 #7
0
class Race(object):
    __metaclass__ = abc.ABCMeta

    name = ""
    average_height = units.Feet(0)
    average_weight = units.Pound(0)
    average_lifespan = timedelta(0)

    restriction_set = restrictions.RestrictionSet()
    racial_class = None
    racial_language = languages.Common
    size = None
    special_ability_set = specialabilities.SpecialAbilitySet()
    saving_throw_set = savingthrows.SavingThrowSet()

    wear_locations = (
        WearLocation.Head,
        WearLocation.Face,
        WearLocation.Neck,
        WearLocation.Torso,
        WearLocation.Arms,
        WearLocation.Arms,
        WearLocation.Hands,
        WearLocation.Hands,
        WearLocation.Rings,
        WearLocation.Rings,
        WearLocation.Legs,
        WearLocation.Legs,
        WearLocation.Feet,
        WearLocation.Feet,
        WearLocation.Bandolier,
        WearLocation.Back,
        WearLocation.Belt,
        WearLocation.Waist,
    )

    wield_locations = (
        WieldLocation.LeftHand,
        WieldLocation.RightHand,
    )
예제 #8
0
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),
                      )))))
예제 #9
0
파일: cleric.py 프로젝트: ChrisLR/BFLib
class Cleric(CharacterClass):
    name = "Cleric"
    restriction_set = restrictions.RestrictionSet(
        ability_score=restrictions.AbilityScoreRestrictionSet(
            minimum_set=abilityscores.AbilityScoreSet(wisdom=9)),
        weapons=restrictions.WeaponRestrictionSet(
            included=(weapons.types.Club, weapons.types.Mace,
                      weapons.types.Maul, weapons.types.Quarterstaff,
                      weapons.types.Sling, weapons.types.Warhammer)))
    special_abilities = specialabilities.SpecialAbilitySet(
        special_abilities=(specialabilities.DivineCaster,
                           specialabilities.TurnUndead))
    level_table = LevelTable(levels=(
        Level(value=1,
              attack_bonus=1,
              experience_required=0,
              hit_dice=dice.D6(1),
              saving_throws_set=SavingThrowSet(death_poison=11,
                                               dragon_breath=16,
                                               paralysis_stone=14,
                                               spells=15,
                                               wands=12)),
        Level(value=2,
              attack_bonus=1,
              experience_required=1500,
              hit_dice=dice.D6(2),
              saving_throws_set=SavingThrowSet(death_poison=10,
                                               dragon_breath=15,
                                               paralysis_stone=13,
                                               spells=14,
                                               wands=11),
              spell_slots_set=SpellSlotSet(level_1=1)),
        Level(value=3,
              attack_bonus=2,
              experience_required=3000,
              hit_dice=dice.D6(3),
              saving_throws_set=SavingThrowSet(death_poison=10,
                                               dragon_breath=15,
                                               paralysis_stone=13,
                                               spells=14,
                                               wands=11),
              spell_slots_set=SpellSlotSet(level_1=2)),
        Level(value=4,
              attack_bonus=2,
              experience_required=6000,
              hit_dice=dice.D6(4),
              saving_throws_set=SavingThrowSet(death_poison=9,
                                               dragon_breath=15,
                                               paralysis_stone=13,
                                               spells=14,
                                               wands=10),
              spell_slots_set=SpellSlotSet(level_1=2, level_2=1)),
        Level(value=5,
              attack_bonus=3,
              experience_required=12000,
              hit_dice=dice.D6(5),
              saving_throws_set=SavingThrowSet(death_poison=9,
                                               dragon_breath=15,
                                               paralysis_stone=13,
                                               spells=14,
                                               wands=10),
              spell_slots_set=SpellSlotSet(level_1=2, level_2=2)),
        Level(value=6,
              attack_bonus=3,
              experience_required=24000,
              hit_dice=dice.D6(6),
              saving_throws_set=SavingThrowSet(death_poison=9,
                                               dragon_breath=14,
                                               paralysis_stone=12,
                                               spells=13,
                                               wands=10),
              spell_slots_set=SpellSlotSet(level_1=2, level_2=2, level_3=1)),
        Level(value=7,
              attack_bonus=4,
              experience_required=48000,
              hit_dice=dice.D6(7),
              saving_throws_set=SavingThrowSet(death_poison=9,
                                               dragon_breath=14,
                                               paralysis_stone=12,
                                               spells=13,
                                               wands=10),
              spell_slots_set=SpellSlotSet(level_1=3, level_2=2, level_3=2)),
        Level(value=8,
              attack_bonus=4,
              experience_required=90000,
              hit_dice=dice.D6(8),
              saving_throws_set=SavingThrowSet(death_poison=8,
                                               dragon_breath=14,
                                               paralysis_stone=12,
                                               spells=13,
                                               wands=9),
              spell_slots_set=SpellSlotSet(
                  level_1=3, level_2=2, level_3=2, level_4=1)),
        Level(value=9,
              attack_bonus=5,
              experience_required=180000,
              hit_dice=dice.D6(9),
              saving_throws_set=SavingThrowSet(death_poison=8,
                                               dragon_breath=14,
                                               paralysis_stone=12,
                                               spells=13,
                                               wands=9),
              spell_slots_set=SpellSlotSet(
                  level_1=3, level_2=3, level_3=2, level_4=2)),
        Level(value=10,
              attack_bonus=5,
              experience_required=270000,
              hit_dice=dice.D6(9),
              hit_dice_flat_bonus=1,
              saving_throws_set=SavingThrowSet(death_poison=8,
                                               dragon_breath=13,
                                               paralysis_stone=11,
                                               spells=12,
                                               wands=9),
              spell_slots_set=SpellSlotSet(
                  level_1=3, level_2=3, level_3=2, level_4=2, level_5=1)),
        Level(value=11,
              attack_bonus=5,
              experience_required=360000,
              hit_dice=dice.D6(9),
              hit_dice_flat_bonus=2,
              saving_throws_set=SavingThrowSet(death_poison=8,
                                               dragon_breath=13,
                                               paralysis_stone=11,
                                               spells=12,
                                               wands=9),
              spell_slots_set=SpellSlotSet(
                  level_1=4, level_2=3, level_3=3, level_4=2, level_5=2)),
        Level(value=12,
              attack_bonus=6,
              experience_required=450000,
              hit_dice=dice.D6(9),
              hit_dice_flat_bonus=3,
              saving_throws_set=SavingThrowSet(death_poison=7,
                                               dragon_breath=13,
                                               paralysis_stone=11,
                                               spells=12,
                                               wands=8),
              spell_slots_set=SpellSlotSet(level_1=4,
                                           level_2=4,
                                           level_3=3,
                                           level_4=2,
                                           level_5=2,
                                           level_6=1)),
        Level(value=13,
              attack_bonus=6,
              experience_required=540000,
              hit_dice=dice.D6(9),
              hit_dice_flat_bonus=4,
              saving_throws_set=SavingThrowSet(death_poison=7,
                                               dragon_breath=13,
                                               paralysis_stone=11,
                                               spells=12,
                                               wands=8),
              spell_slots_set=SpellSlotSet(level_1=4,
                                           level_2=4,
                                           level_3=3,
                                           level_4=3,
                                           level_5=2,
                                           level_6=2)),
        Level(value=14,
              attack_bonus=6,
              experience_required=630000,
              hit_dice=dice.D6(9),
              hit_dice_flat_bonus=5,
              saving_throws_set=SavingThrowSet(death_poison=7,
                                               dragon_breath=12,
                                               paralysis_stone=10,
                                               spells=11,
                                               wands=8),
              spell_slots_set=SpellSlotSet(level_1=4,
                                           level_2=4,
                                           level_3=4,
                                           level_4=3,
                                           level_5=2,
                                           level_6=2)),
        Level(value=15,
              attack_bonus=7,
              experience_required=720000,
              hit_dice=dice.D6(9),
              hit_dice_flat_bonus=6,
              saving_throws_set=SavingThrowSet(death_poison=7,
                                               dragon_breath=12,
                                               paralysis_stone=10,
                                               spells=11,
                                               wands=8),
              spell_slots_set=SpellSlotSet(level_1=4,
                                           level_2=4,
                                           level_3=4,
                                           level_4=3,
                                           level_5=3,
                                           level_6=2)),
        Level(value=16,
              attack_bonus=7,
              experience_required=810000,
              hit_dice=dice.D6(9),
              hit_dice_flat_bonus=7,
              saving_throws_set=SavingThrowSet(death_poison=6,
                                               dragon_breath=12,
                                               paralysis_stone=10,
                                               spells=11,
                                               wands=7),
              spell_slots_set=SpellSlotSet(level_1=5,
                                           level_2=4,
                                           level_3=4,
                                           level_4=3,
                                           level_5=3,
                                           level_6=2)),
        Level(value=17,
              attack_bonus=7,
              experience_required=900000,
              hit_dice=dice.D6(9),
              hit_dice_flat_bonus=8,
              saving_throws_set=SavingThrowSet(death_poison=6,
                                               dragon_breath=12,
                                               paralysis_stone=10,
                                               spells=11,
                                               wands=7),
              spell_slots_set=SpellSlotSet(level_1=5,
                                           level_2=5,
                                           level_3=4,
                                           level_4=3,
                                           level_5=3,
                                           level_6=2)),
        Level(value=18,
              attack_bonus=8,
              experience_required=990000,
              hit_dice=dice.D6(9),
              hit_dice_flat_bonus=9,
              saving_throws_set=SavingThrowSet(death_poison=6,
                                               dragon_breath=11,
                                               paralysis_stone=9,
                                               spells=10,
                                               wands=7),
              spell_slots_set=SpellSlotSet(level_1=5,
                                           level_2=5,
                                           level_3=4,
                                           level_4=4,
                                           level_5=3,
                                           level_6=3)),
        Level(value=19,
              attack_bonus=8,
              experience_required=1080000,
              hit_dice=dice.D6(9),
              hit_dice_flat_bonus=10,
              saving_throws_set=SavingThrowSet(death_poison=6,
                                               dragon_breath=11,
                                               paralysis_stone=9,
                                               spells=10,
                                               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=20,
              attack_bonus=8,
              experience_required=1170000,
              hit_dice=dice.D6(9),
              hit_dice_flat_bonus=11,
              saving_throws_set=SavingThrowSet(death_poison=5,
                                               dragon_breath=11,
                                               paralysis_stone=9,
                                               spells=10,
                                               wands=6),
              spell_slots_set=SpellSlotSet(level_1=6,
                                           level_2=5,
                                           level_3=5,
                                           level_4=4,
                                           level_5=3,
                                           level_6=3))))
예제 #10
0
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)
            )
        )
    )