Exemplo n.º 1
0
def test_init_default_values():
    '''Test how it sets optional values by default'''
    weapon = Weapon(range(7))
    assert weapon.damage == range(7)
    assert not weapon.two_handed
    assert not weapon.ignore_armor
    assert weapon.name is None
    assert weapon.style is None
Exemplo n.º 2
0
def test_init_set_optional_values():
    weapon = Weapon(range(7),
                    name="Vorpal Sword",
                    style="melee",
                    two_handed=True,
                    ignore_armor=True)
    assert weapon.name == "Vorpal Sword"
    assert weapon.style == "melee"
    assert weapon.two_handed
    assert weapon.ignore_armor
Exemplo n.º 3
0
    async def weapon(self, ctx, *, arg):
        weapon_regex = r'([^0-9]+) ([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+)( ignore)?$'

        r = re.match(weapon_regex, arg)
        if not r:
            raise ArgumentParsingError("Argument should be `weapon name 1 2 3 4 5 6 7 [ignore]`")

        weapon_name = r.group(1)
        damage_table = [int(r.group(2)), int(r.group(3)), int(r.group(4)), int(r.group(5)),
                        int(r.group(6)), int(r.group(7)), int(r.group(8))]
        ignore_armor = r.group(9) is not None

        weapon = Weapon(damage_table, name=weapon_name, ignore_armor=ignore_armor)

        library = self.bot.get_cog('LibraryCog')
        library.add_temp_weapon(weapon)
        await ctx.send(f"Added weapon `{weapon_name}` damage `{damage_table}` ignore_armor={ignore_armor}")
def sword():
    return Weapon(name='Sword', damage=[4, 6, 6, 6, 6, 8, 10])
def maul():
    return Weapon(name='Maul',
                  damage=[1, 2, 3, 6, 12, 13, 14],
                  ignore_armor=True)
Exemplo n.º 6
0
def test_weapon_lookup_damage_ceiling():
    damage = range(7)
    w = Weapon(damage)
    assert w.lookup_damage(9) == damage[6]
Exemplo n.º 7
0
def test_weapon_lookup_damage_bad_index():
    w = Weapon(range(7))
    with pytest.raises(ValueError):
        w.lookup_damage(0)
Exemplo n.º 8
0
def test_weapon_lookup_damage():
    damage = range(7)
    w = Weapon(damage)
    assert w.lookup_damage(4) == damage[3]
Exemplo n.º 9
0
def test_attack_damage_mod_roll(mocker):
    '''Sometimes there are bonuses on damage rolls'''
    mocker.patch.object(dice, 'roll_d6', return_value=2)
    w = Weapon(range(7))
    r = w.roll_damage(damage_bonus=2)
    assert r.total == 4
Exemplo n.º 10
0
def test_armor_offset_unarmored_roll(mocker):
    '''Ignoring armor should have no effect on unarmored foes'''
    mocker.patch.object(dice, 'roll_d6', return_value=2)
    w = Weapon(range(7), ignore_armor=True)
    r = w.roll_damage()
    assert r.total == 2
Exemplo n.º 11
0
def test_init_exception():
    '''Throwing an exception'''
    with pytest.raises(ValueError):
        Weapon([0, 1, 3])
Exemplo n.º 12
0
def test_ignore_armor_offset_roll(mocker):
    '''Some weapons ignore one point of the armor offset'''
    mocker.patch.object(dice, 'roll_d6', return_value=3)
    w = Weapon(range(7), ignore_armor=True)
    r = w.roll_damage(armor="Moderate")
    assert r.total == 2
Exemplo n.º 13
0
def test_basic_armor_offset_roll(mocker):
    '''Armor offset should reduce damage roll to a minimum of 1'''
    mocker.patch.object(dice, 'roll_d6', return_value=2)
    w = Weapon(range(7))
    r = w.roll_damage(armor="Medium")
    assert r.total == 1
Exemplo n.º 14
0
def test_basic_damage_roll(mocker):
    '''A basic test of damage rolls'''
    mocker.patch.object(dice, 'roll_d6', return_value=4)
    w = Weapon(range(7))
    r = w.roll_damage()
    assert r.total == 4