예제 #1
0
파일: logic.py 프로젝트: serhii73/the-tale
def _create_random_quest_for_hero(hero_info,
                                  start_quests,
                                  without_restrictions=False):
    knowledge_base = get_knowledge_base(
        hero_info, without_restrictions=without_restrictions)

    selector = Selector(knowledge_base,
                        QUESTS_BASE,
                        social_connection_probability=0)

    hero_uid = uids.hero(hero_info.id)

    quests_facts = selector.create_quest_from_place(
        nesting=0,
        initiator_position=selector.place_for(objects=(hero_uid, )),
        allowed=start_quests,
        excluded=[],
        tags=('can_start', ))

    knowledge_base += quests_facts

    transformators.activate_events(
        knowledge_base)  # TODO: after remove restricted states
    transformators.remove_restricted_states(knowledge_base)
    transformators.remove_broken_states(
        knowledge_base)  # MUST be called after all graph changes
    transformators.determine_default_choices(
        knowledge_base, preferred_markers=hero_info.prefered_quest_markers
    )  # MUST be called after all graph changes and on valid graph
    transformators.remove_unused_actors(knowledge_base)

    knowledge_base.validate_consistency(WORLD_RESTRICTIONS)
    knowledge_base.validate_consistency(QUEST_RESTRICTIONS)

    return knowledge_base
예제 #2
0
파일: logic.py 프로젝트: Alkalit/the-tale
def _create_random_quest_for_hero(hero_info, start_quests, without_restrictions=False):
    knowledge_base = get_knowledge_base(hero_info, without_restrictions=without_restrictions)

    selector = Selector(knowledge_base, QUESTS_BASE, social_connection_probability=c.QUESTS_SOCIAL_CONNECTIONS_FRACTION)

    hero_uid = uids.hero(hero_info.id)

    quests_facts = selector.create_quest_from_place(nesting=0,
                                                    initiator_position=selector.place_for(objects=(hero_uid,)),
                                                    allowed=start_quests,
                                                    excluded=[],
                                                    tags=('can_start', ))

    knowledge_base += quests_facts

    transformators.activate_events(knowledge_base) # TODO: after remove restricted states
    transformators.remove_restricted_states(knowledge_base)
    transformators.remove_broken_states(knowledge_base) # MUST be called after all graph changes
    transformators.determine_default_choices(knowledge_base, preferred_markers=hero_info.prefered_quest_markers) # MUST be called after all graph changes and on valid graph
    transformators.remove_unused_actors(knowledge_base)

    knowledge_base.validate_consistency(WORLD_RESTRICTIONS)
    knowledge_base.validate_consistency(QUEST_RESTRICTIONS)

    return knowledge_base
예제 #3
0
    def quest_test_method(self):
        from questgen.selectors import Selector

        from the_tale.game.quests import logic
        from the_tale.game.quests import uids

        knowledge_base = logic.get_knowledge_base(
            logic.create_hero_info(self.hero))

        qb = QuestsBase()
        qb += [q.quest_class for q in quests]

        selector = Selector(knowledge_base, qb)

        hero_uid = uids.hero(self.hero.id)

        quests_facts = selector.create_quest_from_place(
            nesting=0,
            initiator_position=selector.place_for(objects=(hero_uid, )),
            allowed=[quest.quest_class.TYPE],
            excluded=[],
            tags=('can_start', ))

        knowledge_base += quests_facts

        self.check_quest(knowledge_base)
예제 #4
0
    def quest_test_method(self):
        from questgen.selectors import Selector

        from the_tale.game.quests import logic
        from the_tale.game.quests import uids

        knowledge_base = logic.get_knowledge_base(logic.create_hero_info(self.hero))

        qb = QuestsBase()
        qb += [q.quest_class for q in quests]

        selector = Selector(knowledge_base, qb)

        hero_uid = uids.hero(self.hero.id)

        quests_facts = selector.create_quest_from_place(nesting=0,
                                                        initiator_position=selector.place_for(objects=(hero_uid,)),
                                                        allowed=[quest.quest_class.TYPE],
                                                        excluded=[],
                                                        tags=('can_start',))

        knowledge_base += quests_facts

        self.check_quest(knowledge_base)