Пример #1
0
def impl(context, character_name):
    character = get_character(context, character_name)

    old_time = get_history_value(character, 'tick')
    new_time = character.tick

    assert new_time > old_time
Пример #2
0
def impl(context, character_name):
    character = get_character(context, character_name)

    old_hit_points = get_history_value(character, 'hit_points')
    new_hit_points = character.hit_points

    assert new_hit_points < old_hit_points
Пример #3
0
def impl(context, character_name):
    character = get_character(context, character_name)

    old_hit_points = get_history_value(character, "hit_points")
    new_hit_points = character.hit_points

    assert new_hit_points < old_hit_points
Пример #4
0
def step_impl(context, character_name):
    character = get_character(context, character_name)

    effects = [effect for effect in character.get_effects()
               if effect.damage_type == 'fire']

    assert_that(effects, has_length(1))
Пример #5
0
def impl(context, character_name, target_name):
    character = get_character(context, character_name)
    target = get_character(context, target_name)

    if not target.level:
        room = Level()
        room['name'] = 'room'
        context.places.append(room)
        place(target, middle_of(room))

    level = target.level
    location = (target.location[0] + 3,
                target.location[1])

    remove_character(level, character)
    add_character(level, location, character)
Пример #6
0
def impl(context, character_name, location_name):
    room = Level()
    room['name'] = location_name
    context.places.append(room)

    character = get_character(context, character_name)

    place(character, middle_of(room))
Пример #7
0
def impl(context, caster_name, spell_and_target):
    caster = get_character(context, caster_name)
    split_text = spell_and_target.split()

    if 'on' in split_text:
        on_index = split_text.index('on')
        spell = " ".join(split_text[:on_index])
        target_name = " ".join(split_text[on_index + 1:])
    else:
        spell = spell_and_target
        target_name = None

    if target_name:
        target = get_character(context=context, character_name=target_name)
    else:
        target = None

    make(caster, cast_spell(spell_name=spell, target=target))
Пример #8
0
def step_impl(context, character_name):
    character = get_character(context, character_name)

    effects = [
        effect for effect in character.get_effects()
        if effect.damage_type == 'fire'
    ]

    assert_that(effects, has_length(1))
Пример #9
0
def impl(context, character_name, effect_name):

    if effect_name == 'weak poison':
        poison_spec = weak_poison()
    elif effect_name == 'strong poison':
        poison_spec = potent_poison()

    character = get_character(context, character_name)

    affect(character, poison_spec)
Пример #10
0
def impl(context, caster_name, spell_and_target):
    caster = get_character(context, caster_name)
    split_text = spell_and_target.split()

    if 'on' in split_text:
        on_index = split_text.index('on')
        spell = " ".join(split_text[:on_index])
        target_name = " ".join(split_text[on_index + 1:])
    else:
        spell = spell_and_target
        target_name = None

    if target_name:
        target = get_character(context=context,
                               character_name=target_name)
    else:
        target = None

    make(caster, cast_spell(spell_name=spell,
                            target=target))
Пример #11
0
def impl(context, character_name, delta, armour_name):
    character = get_character(context, character_name)
    armour = get_item(context, armour_name)

    if delta == 'slower':
        assert_that(character.tick,
                    is_(greater_than(character.speed * Duration.fast)))
    elif delta == 'faster':
        assert_that(character.tick,
                    is_(less_than(character.speed * Duration.fast)))
    else:
        assert False
Пример #12
0
def impl(context, item_name, location_name):
    if 'inventory' in location_name:
        (word1, word2, character_name) = location_name.split(' ')
        item = get_item(context, item_name)
        character = get_character(context, character_name)

        assert item not in character.inventory
    else:
        item = get_item(context, item_name)
        room = get_location(context, location_name)

        assert item.level != room
Пример #13
0
def impl(context, character_name, damage_type):
    character = get_character(context, character_name)

    modifier = DamageModifier(modifier=2,
                              damage_type=damage_type,
                              duration=None,
                              frequency=None,
                              tick=None,
                              icon=101,
                              title='weak against {0}'.format(damage_type),
                              description='{0} causes extra damage'.format(damage_type))
    character.add_effect(modifier)
Пример #14
0
def impl(context, item_name, location_name):
    if 'inventory' in location_name:
        (word1, word2, character_name) = location_name.split(' ')
        item = get_item(context, item_name)
        character = get_character(context, character_name)

        assert item not in character.inventory
    else:
        item = get_item(context, item_name)
        room = get_location(context, location_name)

        assert item.level != room
Пример #15
0
def impl(context, character_name, item_name):
    if item_name in context.armour_list:
        item = context.armour_list[item_name]()
    elif item_name in context.weapon_list:
        item = context.weapon_list[item_name]()
    elif item_name in context.misc_item_list:
        item = context.misc_item_list[item_name]()
    elif item_name in context.boots_list:
        item = context.boots_list[item_name]()

    context.items.append(item)

    character = get_character(context, character_name)

    character.inventory.append(item)
Пример #16
0
def impl(context, character_name, item_name):
    if item_name in context.armour_list:
        item = context.armour_list[item_name]()
    elif item_name in context.boots_list:
        item = context.boots_list[item_name]()

    context.items.append(item)

    character = get_character(context, character_name)
    character.inventory.append(item)

    if is_armour(item):
        character.inventory.armour = item
    elif is_boots(item):
        character.inventory.boots = item
Пример #17
0
def impl(context, character_name):
    character = get_character(context, character_name)

    old_hit_points = get_history_value(character, "hit_points")
    new_hit_points = character.hit_points
    total_damage_suffered = old_hit_points - new_hit_points

    attack_hit_events = (x for x in context.observer.events if e_event_type(x) == "attack hit")
    matching_events = [x for x in attack_hit_events if e_target(x).name == character_name]
    hit_event = matching_events[0]
    attacker = e_attacker(hit_event)

    total_damage_from_weapon = sum([x[0] for x in attacker.inventory.weapon.weapon_data.damage])

    assert total_damage_suffered > total_damage_from_weapon
Пример #18
0
def impl(context, character_name, item_name):
    if item_name in context.armour_list:
        item = context.armour_list[item_name]()
    elif item_name in context.weapon_list:
        item = context.weapon_list[item_name]()
    elif item_name in context.misc_item_list:
        item = context.misc_item_list[item_name]()
    elif item_name in context.boots_list:
        item = context.boots_list[item_name]()

    context.items.append(item)

    character = get_character(context, character_name)

    character.inventory.append(item)
Пример #19
0
def impl(context, character_name, item_name):
    if item_name in context.armour_list:
        item = context.armour_list[item_name]()
    elif item_name in context.boots_list:
        item = context.boots_list[item_name]()

    context.items.append(item)

    character = get_character(context, character_name)
    character.inventory.append(item)

    if is_armour(item):
        character.inventory.armour = item
    elif is_boots(item):
        character.inventory.boots = item
Пример #20
0
def impl(context, character_name, location_name):
    character = get_character(context, character_name)
    place = get_location(context, location_name)

    path, connections, updated = a_star(whole_level,
                                        character.location, #TODO: adjacent nodes as first param
                                        place.location,
                                        character.level)
    assert len(path) > 1

    for tile in path[1:]:
        direction = find_direction(character.location,
                                   tile)
        pyherc.vtable['\ufdd0:move'](character,
                                     direction)
Пример #21
0
def impl(context, character_name, weapon_name):

    character = get_character(context, character_name)

    if 'and' in weapon_name:
        weapons = weapon_name.split(' and ')
        weapon = context.weapon_list[weapons[0]]()
        ammunition = context.weapon_list[weapons[1]]()

        character.inventory.append(ammunition)
        character.inventory.projectiles = ammunition
    else:
        weapon = context.weapon_list[weapon_name]()

    context.items.append(weapon)
    character.inventory.append(weapon)
    character.inventory.weapon = weapon
Пример #22
0
def impl(context, character_name, weapon_name):

    character = get_character(context, character_name)

    if 'and' in weapon_name:
        weapons = weapon_name.split(' and ')
        weapon = context.weapon_list[weapons[0]]()
        ammunition = context.weapon_list[weapons[1]]()

        character.inventory.append(ammunition)
        character.inventory.projectiles = ammunition
    else:
        weapon = context.weapon_list[weapon_name]()

    context.items.append(weapon)
    character.inventory.append(weapon)
    character.inventory.weapon = weapon
Пример #23
0
def impl(context, character_name):
    character = get_character(context, character_name)

    old_hit_points = get_history_value(character, 'hit_points')
    new_hit_points = character.hit_points
    total_damage_suffered = old_hit_points - new_hit_points

    attack_hit_events = (x for x in context.observer.events
                         if e_event_type(x) == 'attack hit')
    matching_events = [
        x for x in attack_hit_events if e_target(x).name == character_name
    ]
    hit_event = matching_events[0]
    attacker = e_attacker(hit_event)

    total_damage_from_weapon = sum(
        [x[0] for x in attacker.inventory.weapon.weapon_data.damage])

    assert (total_damage_suffered > total_damage_from_weapon)
Пример #24
0
def step_impl(context, caster_name, item_name, domain_name):
    caster = get_character(context, caster_name)
    item = get_item(context, item_name)

    make(caster, gain_domain_(item=item,
                              domain=domain_name))
Пример #25
0
def impl(context, character_name):
    character = get_character(context, character_name)

    assert_that(character.hit_points, equal_to(character.max_hp))
Пример #26
0
def impl(context, attacker_name, target_name):
    attacker = get_character(context, attacker_name)
    target = get_character(context, target_name)

    make(attacker, hit(target))
Пример #27
0
def impl(context, character_name):
    character = get_character(context, character_name)

    assert_that(character.hit_points, equal_to(character.max_hp))
Пример #28
0
def impl(context, character_name, portal_name):
    character = get_character(context, character_name)

    pyherc.vtable['\ufdd0:move'](character, Direction.enter)
Пример #29
0
def step_impl(context, character_name):
    character = get_character(context, character_name)
    assert_that(character, is_not(is_dead()))
Пример #30
0
def impl(context, character_name, item_name):
    character = get_character(context, character_name)
    item = get_item(context, item_name)

    make(character, drop(item))
Пример #31
0
def impl(context, character_name, item_name):
    character = get_character(context, character_name)
    item = get_item(context, item_name)

    make(character, drop(item))
Пример #32
0
def impl(context, caster_name):
    caster = get_character(context, caster_name)
    caster.spirit = 0
Пример #33
0
def impl(context, character_name):
    character = get_character(context, character_name)

    model = context.model
    model.player = character
Пример #34
0
def impl(context, item_name, character_name):
    item = get_item(context, item_name)
    character = get_character(context, character_name)

    assert item.location == character.location
Пример #35
0
def step_impl(context, caster_name, item_name, domain_name):
    caster = get_character(context, caster_name)
    item = get_item(context, item_name)

    make(caster, gain_domain_(item=item, domain=domain_name))
Пример #36
0
def impl(context, character_name):
    character = get_character(context, character_name)
    make(character, take_random_step())
Пример #37
0
def step_impl(context, character_name):
    character = get_character(context, character_name)

    make(character, wait_())
Пример #38
0
def impl(context, character_name, weapon_name):
    character = get_character(context, character_name)
    weapon = get_item(context, weapon_name)

    assert_that(character.tick,
                is_(greater_than(character.speed * Duration.normal)))
Пример #39
0
def impl(context, item_name, character_name):
    item = get_item(context, item_name)
    character = get_character(context, character_name)

    assert item.location == character.location
Пример #40
0
def impl(context, character_name):
    character = get_character(context, character_name)

    character.hit_points = 1
Пример #41
0
def impl(context, attacker_name, target_name):
    attacker = get_character(context, attacker_name)
    target = get_character(context, target_name)

    make(attacker, hit(target))
Пример #42
0
def impl(context, caster_name):
    caster = get_character(context, caster_name)
    caster.spirit = 0
Пример #43
0
def impl(context, character_name, place_name):
    character = get_character(context, character_name)
    place = get_location(context, place_name)

    assert_that(character, is_not(is_in(place['\ufdd0:characters'])))