Пример #1
0
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))),
        )))
Пример #2
0
class Bison(Animal):
    name = "Bison"
    hit_dice = dice.D8(4)
    attack_bonus = AttackBonusTable.get_by_hit_dice(hit_dice.amount)
    attack_sets = [AttackSet(Headbutt(dice.D8(1)))]
    base_armor_class = 13

    morale = 5
    movement = movement.MovementSet(walk=units.FeetPerGameTurn(80), turning_distance=units.Feet(10))
    no_appearing = AppearingSet(dice_wild=dice.D10(3))
    save_as = Fighter.level_table.levels[hit_dice.amount].saving_throws_set
    xp = 240
Пример #3
0
class Mace(Bludgeon):
    name = "Mace"

    melee_damage = dice.D8(1)
    price = coins.Gold(6)
    size = Size.Medium
    weight = units.Pound(10)
Пример #4
0
class Longsword(Sword):
    name = "Longsword"

    melee_damage = dice.D8(1)
    price = coins.Gold(10)
    size = Size.Medium
    weight = units.Pound(4)
Пример #5
0
class Scimitar(Sword):
    name = "Scimitar"

    melee_damage = dice.D8(1)
    price = coins.Gold(10)
    size = Size.Medium
    weight = units.Pound(4)
Пример #6
0
class BattleAxe(Axe):
    name = "Battle Axe"

    melee_damage = dice.D8(1)
    price = coins.Gold(7)
    size = Size.Medium
    weight = units.Pound(7)
Пример #7
0
class HeavyQuarrel(Bolt):
    name = "Heavy Quarrel"

    ammunition_type = Bolt
    ammunition_damage = dice.D8(1)
    price = coins.Silver(4)
    weight = units.Pound(0.1)
Пример #8
0
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,
        )))
Пример #9
0
class AssassinVine(Plant):
    name = "Assassin Vine"
    hit_dice = dice.D8(6)

    attack_bonus = AttackBonusTable.get_by_hit_dice(hit_dice.amount)
    attack_sets = [
        AttackSet(Crush(dice.D8(1)),
                  special_properties=(CrushingEntanglement, ))
    ]
    base_armor_class = 15
    morale = 12
    movement = movement.MovementSet(walk=units.FeetPerGameTurn(5))
    no_appearing = AppearingSet(dice_dungeon=dice.D4(1, 1))
    save_as = Fighter.level_table.levels[hit_dice.amount].saving_throws_set
    size = Size.Small
    treasure_type = TreasureType.U
    weight = units.Pound(15)
    xp = 500
Пример #10
0
class PolarBear(Bear):
    name = "Polar Bear"
    hit_dice = dice.D8(6)
    attack_bonus = AttackBonusTable.get_by_hit_dice(hit_dice.amount)
    attack_sets = [
        AttackChain(
            AttackSet(Claw(dice.D6(1)), amount=2, special_properties=specialproperties.BearHug),
            AttackSet(Bite(dice.D10(1)))
        ),
        AttackSet(Crush(dice.D8(2)))
    ]
    base_armor_class = 14

    morale = 8
    movement = movement.MovementSet(walk=units.FeetPerGameTurn(40))
    no_appearing = AppearingSet(dice_dungeon=dice.D1(1), dice_wild=dice.D2(1), dice_lair=dice.D2(1))
    save_as = Fighter.level_table.levels[hit_dice.amount].saving_throws_set
    special_abilities = SpecialAbilitySet((LastBreath,))
    size = Size.Large
    weight = units.Pound(992)
    xp = 500
Пример #11
0
class CarnivorousApe(Animal):
    name = "Carnivorous Ape"
    hit_dice = dice.D8(4)
    attack_bonus = AttackBonusTable.get_by_hit_dice(hit_dice.amount)
    attack_sets = [AttackSet(Claw(dice.D4(1)), amount=2)]
    base_armor_class = 14

    morale = 7
    movement = movement.MovementSet(walk=units.FeetPerGameTurn(40))
    no_appearing = AppearingSet(dice_dungeon=dice.D6(1), dice_wild=dice.D4(2), dice_lair=dice.D4(2))
    save_as = Fighter.level_table.levels[hit_dice.amount].saving_throws_set
    xp = 240
Пример #12
0
class CaveBear(Animal):
    name = "Cave Bear"
    hit_dice = dice.D8(7)
    attack_bonus = AttackBonusTable.get_by_hit_dice(hit_dice.amount)
    attack_sets = [
        AttackChain(
            AttackSet(Claw(dice.D8(1)),
                      amount=2,
                      special_properties=specialproperties.BearHug),
            AttackSet(Bite(dice.D6(2)))),
        AttackSet(Crush(dice.D8(2)))
    ]
    base_armor_class = 15

    morale = 9
    movement = movement.MovementSet(walk=units.FeetPerGameTurn(40))
    no_appearing = AppearingSet(dice_dungeon=dice.D2(1),
                                dice_wild=dice.D2(1),
                                dice_lair=dice.D2(1))
    save_as = Fighter.level_table.levels[hit_dice.amount].saving_throws_set
    special_abilities = SpecialAbilitySet((LastBreath, ))
    xp = 670
Пример #13
0
class Moose(Antelope):
    name = "Moose"
    hit_dice = dice.D8(3)
    attack_bonus = AttackBonusTable.get_by_hit_dice(hit_dice.amount)
    attack_sets = [AttackSet(Headbutt(dice.D6(1)))]
    base_armor_class = 13

    morale = 5
    movement = movement.MovementSet(walk=units.FeetPerGameTurn(80), turning_distance=units.Feet(10))
    no_appearing = AppearingSet(dice_wild=dice.D10(3))
    save_as = Fighter.level_table.levels[hit_dice.amount].saving_throws_set
    size = Size.Large
    weight = units.Pound(1190)
    xp = 145
Пример #14
0
class Pony(Horse):
    name = "Pony"
    attack_bonus = AttackBonusTable.get_by_hit_dice(1)
    attack_sets = [AttackSet(Bite(dice.D4(1)))]
    base_armor_class = 13
    carry_capacity = CarryCapacity(units.Pound(275), units.Pound(550))
    hit_dice = dice.D8(2)
    morale = 6
    movement = movement.MovementSet(walk=units.FeetPerGameTurn(40),
                                    turning_distance=units.Feet(10))
    no_appearing = None
    save_as = Fighter.level_table.levels[1].saving_throws_set
    special_abilities = None
    treasure_type = None
    xp = 25
Пример #15
0
class DraftHorse(Horse):
    name = "Draft Horse"
    attack_bonus = AttackBonusTable.get_by_hit_dice(3)
    attack_sets = [AttackSet(Hoof(dice.D4(1)), amount=2)]
    base_armor_class = 13
    carry_capacity = CarryCapacity(units.Pound(350), units.Pound(700))
    hit_dice = dice.D8(3)
    morale = 7
    movement = movement.MovementSet(walk=units.FeetPerGameTurn(60),
                                    turning_distance=units.Feet(10))
    no_appearing = None
    save_as = Fighter.level_table.levels[3].saving_throws_set
    special_abilities = None
    treasure_type = None
    xp = 145
Пример #16
0
class GiantBat(Animal):
    name = "Giant Bat"
    hit_dice = dice.D8(2)
    attack_bonus = AttackBonusTable.get_by_hit_dice(hit_dice.amount)
    attack_sets = [AttackSet(Bite(dice.D4(1)))]
    base_armor_class = 14

    morale = 8
    movement = movement.MovementSet(walk=units.FeetPerGameTurn(10),
                                    fly=units.FeetPerGameTurn(60))
    no_appearing = AppearingSet(dice_dungeon=dice.D10(1),
                                dice_wild=dice.D10(1),
                                dice_lair=dice.D10(1))
    save_as = Fighter.level_table.levels[hit_dice.amount].saving_throws_set
    xp = 75
Пример #17
0
class Donkey(Horse):
    name = "Donkey"
    attack_bonus = AttackBonusTable.get_by_hit_dice(2)
    attack_sets = [AttackSet(Bite(dice.D2(1)))]
    base_armor_class = 13
    carry_capacity = CarryCapacity(units.Pound(400), units.Pound(800))
    hit_dice = dice.D8(2)
    morale = 7
    movement = movement.MovementSet(walk=units.FeetPerGameTurn(40),
                                    turning_distance=units.Feet(10))
    no_appearing = AppearingSet(dice_wild=dice.D4(2))
    save_as = Fighter.level_table.levels[2].saving_throws_set
    special_abilities = None
    treasure_type = None
    xp = 75
Пример #18
0
class GiantBombardierBeetle(Beetle):
    name = "Giant Bombardier Beetle"
    hit_dice = dice.D8(2)

    attack_bonus = AttackBonusTable.get_by_hit_dice(hit_dice.amount)
    attack_sets = [AttackSet(Bite(dice.D4(1)))]
    base_armor_class = 16
    morale = 9
    movement = movement.MovementSet(walk=units.FeetPerGameTurn(10), fly=units.Feet(50))
    no_appearing = AppearingSet(dice_dungeon=dice.D6(1), dice_wild=dice.D6(1), dice_lair=dice.D6(5))
    save_as = Fighter.level_table.levels[hit_dice.amount].saving_throws_set
    size = Size.Small
    special_abilities = specialabilities.CombatFrenzy,
    treasure_type = TreasureType.Special
    weight = units.Pound(50)
    xp = 13
Пример #19
0
class GiantAnt(Ant):
    name = "Giant Ant"
    hit_dice = dice.D8(4)

    attack_bonus = AttackBonusTable.get_by_hit_dice(hit_dice.amount)
    attack_sets = [AttackSet(Bite(dice.D6(2)))]
    base_armor_class = 17
    morale = 7
    movement = movement.MovementSet(walk=units.FeetPerGameTurn(60), turning_distance=units.Feet(10))
    no_appearing = AppearingSet(dice_dungeon=dice.D6(2), dice_wild=dice.D6(2), dice_lair=dice.D6(4))
    save_as = Fighter.level_table.levels[hit_dice.amount].saving_throws_set
    size = Size.Medium
    special_abilities = specialabilities.CombatFrenzy,
    treasure_type = TreasureType.U
    weight = units.Pound(200)
    xp = 25
Пример #20
0
class Orc(Humanoid):
    name = "Orc"
    hit_dice = dice.D8(1)
    attack_bonus = AttackBonusTable.get_by_hit_dice(1)
    attack_sets = None
    base_armor_class = 11

    morale = 8
    movement = movement.MovementSet(walk=units.FeetPerGameTurn(40))
    no_appearing = AppearingSet(dice_dungeon=dice.D4(2),
                                dice_wild=dice.D6(3),
                                dice_lair=dice.D10(6))
    save_as = Fighter.level_table.levels[hit_dice.amount].saving_throws_set
    special_abilities = SpecialAbilitySet((Darkvision, ))
    size = Size.Medium
    weight = units.Pound(210)
    xp = 25
Пример #21
0
class GemsAndJewelryQualityTable(object):
    rows = [
        GJQRow(0, 20, QualityType.Ornamental, 10, dice.D10(1)),
        GJQRow(21, 45, QualityType.Semiprecious, 50, dice.D8(1)),
        GJQRow(46, 75, QualityType.Fancy, 100, dice.D6(1)),
        GJQRow(76, 95, QualityType.Precious, 500, dice.D4(1)),
        GJQRow(96, 100, QualityType.Gem, 1000, dice.D2(1)),
        GJQRow(None, None, QualityType.Fancy, 5000, 1),
    ]
    _inner_table = {row.quality_type: row for row in rows}

    @classmethod
    def get_row_from_percent(cls, percent):
        return next((row for row in cls.rows
                     if row.min_percent <= percent <= row.max_percent))

    @classmethod
    def get_row_from_quality(cls, quality_type):
        return cls._inner_table.get(quality_type)
Пример #22
0
class Skeleton(Undead):
    name = "Skeleton"
    hit_dice = dice.D8(1)

    attack_bonus = AttackBonusTable.get_by_hit_dice(hit_dice.amount)
    base_armor_class = 13
    morale = 12
    movement = movement.MovementSet(walk=units.FeetPerGameTurn(40))
    no_appearing = AppearingSet(dice_dungeon=dice.D6(3), dice_wild=dice.D10(3))
    save_as = Fighter.level_table.levels[hit_dice.amount].saving_throws_set
    size = Size.Medium
    special_abilities = (specialabilities.EdgedWeaponResistance,
                         specialabilities.ProjectileResistance,
                         specialabilities.SleepImmunity,
                         specialabilities.CharmImmunity,
                         specialabilities.HoldImmunity,
                         specialabilities.Mindless)
    treasure_type = None
    weight = units.Pound(100)
    xp = 25
Пример #23
0
class Basilisk(Reptilian):
    name = "Basilisk"
    hit_dice = dice.D8(6)

    attack_bonus = AttackBonusTable.get_by_hit_dice(hit_dice.amount)
    attack_sets = [
        AttackSet(Bite(dice.D10(1))),
        AttackSet(Gaze(None), special_properties=specialproperties.Petrify)
    ]
    base_armor_class = 16
    morale = 9
    movement = movement.MovementSet(walk=units.FeetPerGameTurn(20),
                                    turning_distance=units.Feet(10))
    no_appearing = AppearingSet(dice_dungeon=dice.D6(1),
                                dice_wild=dice.D6(1),
                                dice_lair=dice.D6(1))
    save_as = Fighter.level_table.levels[hit_dice.amount].saving_throws_set
    size = Size.Large
    special_abilities = specialabilities.CombatFrenzy,
    treasure_type = TreasureType.F
    weight = units.Pound(300)
    xp = 610
Пример #24
0
class Fighter(CharacterClass):
    name = "Fighter"
    restriction_set = restrictions.RestrictionSet(
        ability_score=restrictions.AbilityScoreRestrictionSet(
            minimum_set=abilityscores.AbilityScoreSet(strength=9)), )
    level_table = LevelTable(
        levels=(Level(value=1,
                      attack_bonus=1,
                      experience_required=0,
                      hit_dice=dice.D8(1),
                      saving_throws_set=SavingThrowSet(death_poison=12,
                                                       dragon_breath=15,
                                                       paralysis_stone=14,
                                                       spells=17,
                                                       wands=13)),
                Level(
                    value=2,
                    attack_bonus=1,
                    experience_required=2000,
                    hit_dice=dice.D8(2),
                    saving_throws_set=SavingThrowSet(death_poison=11,
                                                     dragon_breath=15,
                                                     paralysis_stone=14,
                                                     spells=16,
                                                     wands=12),
                ),
                Level(
                    value=3,
                    attack_bonus=1,
                    experience_required=4000,
                    hit_dice=dice.D8(3),
                    saving_throws_set=SavingThrowSet(death_poison=11,
                                                     dragon_breath=15,
                                                     paralysis_stone=14,
                                                     spells=16,
                                                     wands=12),
                ),
                Level(
                    value=4,
                    attack_bonus=3,
                    experience_required=8000,
                    hit_dice=dice.D8(4),
                    saving_throws_set=SavingThrowSet(death_poison=11,
                                                     dragon_breath=14,
                                                     paralysis_stone=13,
                                                     spells=15,
                                                     wands=11),
                ),
                Level(
                    value=5,
                    attack_bonus=4,
                    experience_required=16000,
                    hit_dice=dice.D8(5),
                    saving_throws_set=SavingThrowSet(death_poison=11,
                                                     dragon_breath=14,
                                                     paralysis_stone=13,
                                                     spells=15,
                                                     wands=11),
                ),
                Level(
                    value=6,
                    attack_bonus=4,
                    experience_required=32000,
                    hit_dice=dice.D8(6),
                    saving_throws_set=SavingThrowSet(death_poison=10,
                                                     dragon_breath=14,
                                                     paralysis_stone=12,
                                                     spells=15,
                                                     wands=11),
                ),
                Level(
                    value=7,
                    attack_bonus=5,
                    experience_required=64000,
                    hit_dice=dice.D8(7),
                    saving_throws_set=SavingThrowSet(death_poison=10,
                                                     dragon_breath=14,
                                                     paralysis_stone=12,
                                                     spells=15,
                                                     wands=11),
                ),
                Level(
                    value=8,
                    attack_bonus=6,
                    experience_required=120000,
                    hit_dice=dice.D8(8),
                    saving_throws_set=SavingThrowSet(death_poison=9,
                                                     dragon_breath=13,
                                                     paralysis_stone=12,
                                                     spells=14,
                                                     wands=10),
                ),
                Level(
                    value=9,
                    attack_bonus=6,
                    experience_required=240000,
                    hit_dice=dice.D8(9),
                    saving_throws_set=SavingThrowSet(death_poison=9,
                                                     dragon_breath=13,
                                                     paralysis_stone=12,
                                                     spells=14,
                                                     wands=10),
                ),
                Level(
                    value=10,
                    attack_bonus=6,
                    experience_required=360000,
                    hit_dice=dice.D8(9),
                    hit_dice_flat_bonus=2,
                    saving_throws_set=SavingThrowSet(death_poison=9,
                                                     dragon_breath=12,
                                                     paralysis_stone=11,
                                                     spells=13,
                                                     wands=9),
                ),
                Level(
                    value=11,
                    attack_bonus=7,
                    experience_required=480000,
                    hit_dice=dice.D8(9),
                    hit_dice_flat_bonus=4,
                    saving_throws_set=SavingThrowSet(death_poison=9,
                                                     dragon_breath=12,
                                                     paralysis_stone=11,
                                                     spells=13,
                                                     wands=9),
                ),
                Level(
                    value=12,
                    attack_bonus=7,
                    experience_required=600000,
                    hit_dice=dice.D8(9),
                    hit_dice_flat_bonus=6,
                    saving_throws_set=SavingThrowSet(death_poison=8,
                                                     dragon_breath=12,
                                                     paralysis_stone=10,
                                                     spells=13,
                                                     wands=9),
                ),
                Level(
                    value=13,
                    attack_bonus=8,
                    experience_required=720000,
                    hit_dice=dice.D8(9),
                    hit_dice_flat_bonus=8,
                    saving_throws_set=SavingThrowSet(death_poison=8,
                                                     dragon_breath=12,
                                                     paralysis_stone=10,
                                                     spells=13,
                                                     wands=9),
                ),
                Level(
                    value=14,
                    attack_bonus=8,
                    experience_required=840000,
                    hit_dice=dice.D8(9),
                    hit_dice_flat_bonus=10,
                    saving_throws_set=SavingThrowSet(death_poison=7,
                                                     dragon_breath=11,
                                                     paralysis_stone=10,
                                                     spells=12,
                                                     wands=8),
                ),
                Level(
                    value=15,
                    attack_bonus=8,
                    experience_required=960000,
                    hit_dice=dice.D8(9),
                    hit_dice_flat_bonus=12,
                    saving_throws_set=SavingThrowSet(death_poison=7,
                                                     dragon_breath=11,
                                                     paralysis_stone=10,
                                                     spells=12,
                                                     wands=8),
                ),
                Level(
                    value=16,
                    attack_bonus=9,
                    experience_required=1080000,
                    hit_dice=dice.D8(9),
                    hit_dice_flat_bonus=14,
                    saving_throws_set=SavingThrowSet(death_poison=7,
                                                     dragon_breath=10,
                                                     paralysis_stone=9,
                                                     spells=11,
                                                     wands=7),
                ),
                Level(
                    value=17,
                    attack_bonus=9,
                    experience_required=1200000,
                    hit_dice=dice.D8(9),
                    hit_dice_flat_bonus=16,
                    saving_throws_set=SavingThrowSet(death_poison=7,
                                                     dragon_breath=10,
                                                     paralysis_stone=9,
                                                     spells=11,
                                                     wands=7),
                ),
                Level(
                    value=18,
                    attack_bonus=10,
                    experience_required=1320000,
                    hit_dice=dice.D8(9),
                    hit_dice_flat_bonus=18,
                    saving_throws_set=SavingThrowSet(death_poison=6,
                                                     dragon_breath=10,
                                                     paralysis_stone=8,
                                                     spells=11,
                                                     wands=7),
                ),
                Level(
                    value=19,
                    attack_bonus=10,
                    experience_required=1440000,
                    hit_dice=dice.D8(9),
                    hit_dice_flat_bonus=20,
                    saving_throws_set=SavingThrowSet(death_poison=6,
                                                     dragon_breath=10,
                                                     paralysis_stone=8,
                                                     spells=11,
                                                     wands=7),
                ),
                Level(
                    value=20,
                    attack_bonus=10,
                    experience_required=1560000,
                    hit_dice=dice.D8(9),
                    hit_dice_flat_bonus=22,
                    saving_throws_set=SavingThrowSet(death_poison=5,
                                                     dragon_breath=9,
                                                     paralysis_stone=8,
                                                     spells=10,
                                                     wands=6),
                )))
Пример #25
0
class TreasureTable(object):
    rows = [
        TreasureRow(TreasureType.A,
                    TreasureElement(50, coins.Copper, dice.D6(5)),
                    TreasureElement(60, coins.Silver, dice.D6(5)),
                    TreasureElement(40, coins.Electrum, dice.D4(5)),
                    TreasureElement(70, coins.Gold, dice.D6(10)),
                    TreasureElement(50, coins.Platinum, dice.D10(1)),
                    TreasureElement(50, (Gem, ), dice.D6(6)),
                    TreasureElement(50, (Jewelry, ), dice.D6(6)),
                    TreasureElement(30, (RandomMagicItem, ), 3)),
        TreasureRow(TreasureType.B,
                    TreasureElement(75, coins.Copper, dice.D10(5)),
                    TreasureElement(50, coins.Silver, dice.D6(5)),
                    TreasureElement(50, coins.Electrum, dice.D4(5)),
                    TreasureElement(50, coins.Gold, dice.D6(3)),
                    TreasureElement(25, Gem, dice.D6(1)),
                    TreasureElement(25, Jewelry, dice.D6(1)),
                    TreasureElement(10, (
                        Armor,
                        Weapon,
                    ), 1)),
        TreasureRow(TreasureType.C,
                    TreasureElement(60, coins.Copper, dice.D6(6)),
                    TreasureElement(60, coins.Silver, dice.D4(5)),
                    TreasureElement(30, coins.Electrum, dice.D6(2)),
                    TreasureElement(25, Gem, dice.D4(1)),
                    TreasureElement(25, Jewelry, dice.D4(1)),
                    TreasureElement(15, (
                        Armor,
                        Weapon,
                    ), dice.D2(1))),
        TreasureRow(TreasureType.D,
                    TreasureElement(30, coins.Copper, dice.D6(4)),
                    TreasureElement(45, coins.Silver, dice.D6(6)),
                    TreasureElement(90, coins.Gold, dice.D8(5)),
                    TreasureElement(30, Gem, dice.D8(1)),
                    TreasureElement(30, Jewelry, dice.D8(1)),
                    TreasureElement(20, RandomMagicItem, dice.D2(1), Potion)),
        TreasureRow(
            TreasureType.E, TreasureElement(30, coins.Copper, dice.D8(2)),
            TreasureElement(60, coins.Silver, dice.D6(10)),
            TreasureElement(50, coins.Electrum, dice.D8(3)),
            TreasureElement(50, coins.Gold, dice.D10(4)),
            TreasureElement(10, Gem, dice.D10(1)),
            TreasureElement(10, Jewelry, dice.D10(1)),
            TreasureElement(30, RandomMagicItem, dice.D4(1), MagicScroll)),
        TreasureRow(
            TreasureType.F, TreasureElement(40, coins.Silver, dice.D8(3)),
            TreasureElement(50, coins.Electrum, dice.D8(4)),
            TreasureElement(85, coins.Gold, dice.D10(6)),
            TreasureElement(70, coins.Platinum, dice.D8(2)),
            TreasureElement(20, Gem, dice.D12(2)),
            TreasureElement(10, Jewelry, dice.D12(1)),
            TreasureElement(35, RandomMagicItem, dice.D4(1), Potion,
                            MagicScroll)),
        TreasureRow(
            TreasureType.G,
            TreasureElement(90, coins.Gold, dice.D6(4, multiplier=10)),
            TreasureElement(75, coins.Platinum, dice.D8(5)),
            TreasureElement(25, Gem, dice.D6(3)),
            TreasureElement(25, Jewelry, dice.D10(1)),
            TreasureElement(50, RandomMagicItem, dice.D4(1), MagicScroll)),
        TreasureRow(
            TreasureType.H, TreasureElement(75, coins.Copper, dice.D10(8)),
            TreasureElement(75, coins.Silver, dice.D10(6, multiplier=10)),
            TreasureElement(75, coins.Electrum, dice.D10(3, multiplier=10)),
            TreasureElement(75, coins.Gold, dice.D8(5, multiplier=10)),
            TreasureElement(75, coins.Platinum, dice.D8(9)),
            TreasureElement(50, Gem, dice.D100(1)),
            TreasureElement(50, Jewelry, dice.D4(10)),
            TreasureElement(20, RandomMagicItem, dice.D4(1), Potion,
                            MagicScroll)),
        TreasureRow(TreasureType.I,
                    TreasureElement(80, coins.Platinum, dice.D10(3)),
                    TreasureElement(50, Gem, dice.D6(2)),
                    TreasureElement(50, Jewelry, dice.D6(2)),
                    TreasureElement(15, RandomMagicItem, 1)),
        TreasureRow(
            TreasureType.J,
            TreasureElement(45, coins.Copper, dice.D8(3)),
            TreasureElement(45, coins.Silver, dice.D8(1)),
        ),
        TreasureRow(
            TreasureType.K,
            TreasureElement(90, coins.Silver, dice.D10(2)),
            TreasureElement(35, coins.Electrum, dice.D8(1)),
        ),
        TreasureRow(
            TreasureType.L,
            TreasureElement(50, Gem, dice.D4(1)),
        ),
        TreasureRow(
            TreasureType.M,
            TreasureElement(90, coins.Gold, dice.D10(4)),
            TreasureElement(90, coins.Platinum, dice.D8(2, multiplier=10)),
            TreasureElement(55, Gem, dice.D4(5)),
            TreasureElement(45, Jewelry, dice.D6(2)),
        ),
        TreasureRow(
            TreasureType.N,
            TreasureElement(40, Potion, dice.D4(2)),
        ),
        TreasureRow(
            TreasureType.O,
            TreasureElement(50, MagicScroll, dice.D4(1)),
        ),
        TreasureRow(
            TreasureType.P,
            TreasureElement(100, coins.Copper, dice.D8(3)),
        ),
        TreasureRow(
            TreasureType.Q,
            TreasureElement(100, coins.Silver, dice.D6(3)),
        ),
        TreasureRow(
            TreasureType.R,
            TreasureElement(100, coins.Electrum, dice.D6(2)),
        ),
        TreasureRow(
            TreasureType.S,
            TreasureElement(100, coins.Gold, dice.D4(2)),
        ),
        TreasureRow(
            TreasureType.T,
            TreasureElement(100, coins.Platinum, dice.D6(1)),
        ),
        TreasureRow(
            TreasureType.U,
            TreasureElement(50, coins.Copper, dice.D20(1)),
            TreasureElement(50, coins.Silver, dice.D20(1)),
            TreasureElement(25, coins.Gold, dice.D20(1)),
            TreasureElement(5, Gem, dice.D4(1)),
            TreasureElement(5, Jewelry, dice.D4(1)),
            TreasureElement(2, RandomMagicItem, 1),
        ),
        TreasureRow(
            TreasureType.V,
            TreasureElement(25, coins.Silver, dice.D20(1)),
            TreasureElement(25, coins.Electrum, dice.D20(1)),
            TreasureElement(50, coins.Gold, dice.D20(1)),
            TreasureElement(25, coins.Platinum, dice.D20(1)),
            TreasureElement(10, Gem, dice.D4(1)),
            TreasureElement(10, Jewelry, dice.D4(1)),
            TreasureElement(5, RandomMagicItem, 1),
        ),
    ]
    inner_table = {row.treasure_type: row for row in rows}

    @classmethod
    def get_row(cls, treasure_type):
        """
        :type treasure_type: TreasureType
        :rtype: TreasureRow
        """
        return cls.inner_table.get(treasure_type)
Пример #26
0
class Blade(Trap):
    name = "Blade Trap"
    attack = WeaponAttack(dice.D8(1, flat_bonus=1), attack_bonus=1)
    target_type = targettypes.AreaOfEffect(Shape.Line, units.Feet(10))