Exemplo n.º 1
0
class CloudKill(Spell):
    name = "Cloudkill"
    class_level_map = {
        classes.MagicUser: 5,
    }
    duration = SpellDuration(duration_per_level=units.CombatRound(6))
    range = SpellRange(base_range=units.Feet(100),
                       range_per_level=units.Feet(10))
Exemplo n.º 2
0
class Fireball(Spell):
    name = "Fireball"
    class_level_map = {
        classes.MagicUser: 3,
    }
    duration = Instantaneous()
    range = SpellRange(base_range=units.Feet(100),
                       range_per_level=units.Feet(10))
Exemplo n.º 3
0
class AnimateObjects(Spell):
    name = "Animate Objects"
    class_level_map = {
        classes.Cleric: 6,
    }
    duration = SpellDuration(duration_per_level=units.CombatRound(1))
    range = SpellRange(base_range=units.Feet(100),
                       range_per_level=units.Feet(10))
Exemplo n.º 4
0
class GrowthOfAnimals(Spell):
    name = "Growth of Animals"
    class_level_map = {
        classes.Cleric: 3,
    }
    duration = SpellDuration(duration_per_level=units.GameTurn(1))
    range = SpellRange(base_range=units.Feet(60),
                       range_per_level=units.Feet(10))
Exemplo n.º 5
0
class Sling(RangedWeapon):
    name = "Sling"

    ranged_range = RangeSet(units.Feet(30), units.Feet(60), units.Feet(90))
    ranged_damage = None
    ranged_ammunition_type = Bullet

    price = coins.Gold(1)
    size = Size.Small
    weight = units.Pound(0.1)
Exemplo n.º 6
0
class Longbow(Bow):
    name = "Longbow"

    melee_damage = dice.D2(1)
    ranged_range = RangeSet(units.Feet(70), units.Feet(140), units.Feet(210))
    ranged_damage = None
    ranged_ammunition_type = LongbowArrow

    price = coins.Silver(2)
    size = Size.Large
    weight = units.Pound(3)
Exemplo n.º 7
0
class Torch(LightItem):
    name = "Torch"

    bright_light_radius = units.Feet(30)
    dim_light_radius = units.Feet(20)
    fuel = None
    fuel_duration = units.GameTurn(4)
    last_life_dice = dice.D4(1)
    light_shape = Shape.Circle
    price = coins.Silver(1)
    weight = units.Pound(0.2)
Exemplo n.º 8
0
class Shortbow(Bow):
    name = "Shortbow"

    melee_damage = dice.D2(1)
    ranged_range = RangeSet(units.Feet(50), units.Feet(100), units.Feet(150))
    ranged_damage = None
    ranged_ammunition_type = ShortbowArrow

    price = coins.Gold(2)
    size = Size.Small
    weight = units.Pound(1)
Exemplo n.º 9
0
class Lantern(LightItem):
    name = "Lantern"

    bright_light_radius = units.Feet(30)
    dim_light_radius = units.Feet(20)
    fuel = items.weapons.throwing.common.OilFlask
    fuel_duration = units.GameTurn(18)
    last_life_dice = dice.D6(1)
    light_shape = Shape.Circle
    price = coins.Gold(5)
    weight = units.Pound(2)
Exemplo n.º 10
0
class Candle(LightItem):
    name = "Torch"

    bright_light_radius = units.Feet(5)
    dim_light_radius = units.Feet(5)
    fuel = None
    fuel_duration = units.GameTurn(4)
    last_life_dice = dice.D4(1)
    light_shape = Shape.Circle
    price = coins.Copper(10)
    weight = units.Pound(0.1)
Exemplo n.º 11
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,
    )
Exemplo n.º 12
0
class Clairvoyance(Spell):
    name = "Blade Barrier"
    class_level_map = {
        classes.MagicUser: 3,
    }
    duration = SpellDuration(duration_per_level=units.GameTurn(12))
    range = SpellRange(base_range=units.Feet(60))
Exemplo n.º 13
0
class CharmMonster(Spell):
    name = "Charm Monster"
    class_level_map = {
        classes.MagicUser: 4,
    }
    duration = Special()
    range = SpellRange(base_range=units.Feet(30))
Exemplo n.º 14
0
class ConjureElemental(Spell):
    name = "Conjure Elemental"
    class_level_map = {
        classes.MagicUser: 5,
    }
    duration = Special()
    range = SpellRange(base_range=units.Feet(240))
Exemplo n.º 15
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)
Exemplo n.º 16
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)
Exemplo n.º 17
0
class AntiMagicShell(Spell):
    name = "Anti-Magic Shell"
    class_level_map = {
        classes.MagicUser: 6,
    }
    duration = SpellDuration(duration_per_level=units.CombatRound(1))
    range = SpellRadius(base_radius=units.Feet(10))
Exemplo n.º 18
0
class ESP(Spell):
    name = "ESP"
    class_level_map = {
        classes.MagicUser: 2,
    }
    duration = SpellDuration(duration_per_level=units.GameTurn(1))
    range = SpellRange(base_range=units.Feet(60))
Exemplo n.º 19
0
class DimensionDoor(Spell):
    name = "Dimension Door"
    class_level_map = {
        classes.MagicUser: 4,
    }
    duration = Instantaneous()
    range = SpellRange(base_range=units.Feet(10))
Exemplo n.º 20
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),
    ))
Exemplo n.º 21
0
class DetectInvisible(Spell):
    name = "Detect Invisible"
    class_level_map = {
        classes.MagicUser: 2,
    }
    duration = SpellDuration(duration_per_level=units.CombatRound(1))
    range = SpellRange(base_range=units.Feet(60))
Exemplo n.º 22
0
class CreateFood(Spell):
    name = "Create Food"
    class_level_map = {
        classes.Cleric: 5,
    }
    duration = Permanent()
    range = SpellRange(base_range=units.Feet(10))
Exemplo n.º 23
0
class Feeblemind(Spell):
    name = "Feeblemind"
    class_level_map = {
        classes.MagicUser: 5,
    }
    duration = Permanent()
    range = SpellRange(base_range=units.Feet(180))
Exemplo n.º 24
0
class Disintegrate(Spell):
    name = "Disintegrate"
    class_level_map = {
        classes.MagicUser: 6,
    }
    duration = Instantaneous()
    range = SpellRange(base_range=units.Feet(60))
Exemplo n.º 25
0
class FindTraps(Spell):
    name = "Find Traps"
    class_level_map = {
        classes.Cleric: 2,
    }
    duration = SpellDuration(base_duration=units.GameTurn(3))
    range = SpellRange(units.Feet(30))
Exemplo n.º 26
0
class DeathSpell(Spell):
    name = "Death Spell"
    class_level_map = {
        classes.MagicUser: 6,
    }
    duration = Instantaneous
    range = SpellRange(units.Feet(240))
Exemplo n.º 27
0
class BladeBarrier(Spell):
    name = "Blade Barrier"
    class_level_map = {
        classes.Cleric: 6,
    }
    duration = SpellDuration(duration_per_level=units.CombatRound(1))
    range = SpellRange(base_range=units.Feet(90))
Exemplo n.º 28
0
class CharmPerson(Spell):
    name = "Charm Person"
    class_level_map = {
        classes.MagicUser: 1,
    }
    duration = Special()
    range = SpellRange(base_range=units.Feet(30))
Exemplo n.º 29
0
class Geas(Spell):
    name = "Geas"
    class_level_map = {
        classes.MagicUser: 6,
    }
    duration = Special()
    range = SpellRange(units.Feet(5))
    reverse_spell = ReverseGeas
Exemplo n.º 30
0
class CharmAnimal(Spell):
    name = "Charm Animal"
    class_level_map = {
        classes.Cleric: 2,
    }
    duration = SpellDuration(base_duration=dice.D4(1),
                             duration_per_level=units.CombatRound(1))
    range = SpellRange(base_range=units.Feet(60))