Ejemplo n.º 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
Ejemplo n.º 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
Ejemplo n.º 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
Ejemplo n.º 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))
Ejemplo n.º 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)
Ejemplo n.º 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))
Ejemplo n.º 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))
Ejemplo n.º 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))
Ejemplo n.º 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)
Ejemplo n.º 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))
Ejemplo n.º 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
Ejemplo n.º 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
Ejemplo n.º 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)
Ejemplo n.º 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
Ejemplo n.º 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)
Ejemplo n.º 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
Ejemplo n.º 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
Ejemplo n.º 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)
Ejemplo n.º 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
Ejemplo n.º 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)
Ejemplo n.º 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
Ejemplo n.º 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
Ejemplo n.º 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)
Ejemplo n.º 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))
Ejemplo n.º 25
0
def impl(context, character_name):
    character = get_character(context, character_name)

    assert_that(character.hit_points, equal_to(character.max_hp))
Ejemplo n.º 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))
Ejemplo n.º 27
0
def impl(context, character_name):
    character = get_character(context, character_name)

    assert_that(character.hit_points, equal_to(character.max_hp))
Ejemplo n.º 28
0
def impl(context, character_name, portal_name):
    character = get_character(context, character_name)

    pyherc.vtable['\ufdd0:move'](character, Direction.enter)
Ejemplo n.º 29
0
def step_impl(context, character_name):
    character = get_character(context, character_name)
    assert_that(character, is_not(is_dead()))
Ejemplo n.º 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))
Ejemplo n.º 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))
Ejemplo n.º 32
0
def impl(context, caster_name):
    caster = get_character(context, caster_name)
    caster.spirit = 0
Ejemplo n.º 33
0
def impl(context, character_name):
    character = get_character(context, character_name)

    model = context.model
    model.player = character
Ejemplo n.º 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
Ejemplo n.º 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))
Ejemplo n.º 36
0
def impl(context, character_name):
    character = get_character(context, character_name)
    make(character, take_random_step())
Ejemplo n.º 37
0
def step_impl(context, character_name):
    character = get_character(context, character_name)

    make(character, wait_())
Ejemplo n.º 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)))
Ejemplo n.º 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
Ejemplo n.º 40
0
def impl(context, character_name):
    character = get_character(context, character_name)

    character.hit_points = 1
Ejemplo n.º 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))
Ejemplo n.º 42
0
def impl(context, caster_name):
    caster = get_character(context, caster_name)
    caster.spirit = 0
Ejemplo n.º 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'])))