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
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
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
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))
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)
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))
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))
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))
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)
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
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
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)
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)
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
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
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)
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
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)
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))
def impl(context, character_name): character = get_character(context, character_name) assert_that(character.hit_points, equal_to(character.max_hp))
def impl(context, attacker_name, target_name): attacker = get_character(context, attacker_name) target = get_character(context, target_name) make(attacker, hit(target))
def impl(context, character_name, portal_name): character = get_character(context, character_name) pyherc.vtable['\ufdd0:move'](character, Direction.enter)
def step_impl(context, character_name): character = get_character(context, character_name) assert_that(character, is_not(is_dead()))
def impl(context, character_name, item_name): character = get_character(context, character_name) item = get_item(context, item_name) make(character, drop(item))
def impl(context, caster_name): caster = get_character(context, caster_name) caster.spirit = 0
def impl(context, character_name): character = get_character(context, character_name) model = context.model model.player = character
def impl(context, item_name, character_name): item = get_item(context, item_name) character = get_character(context, character_name) assert item.location == character.location
def impl(context, character_name): character = get_character(context, character_name) make(character, take_random_step())
def step_impl(context, character_name): character = get_character(context, character_name) make(character, wait_())
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)))
def impl(context, character_name): character = get_character(context, character_name) character.hit_points = 1
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'])))