示例#1
0
    def complete(self):
        """
        Complete a quest, do its action.
        """
        owner = self.db.owner

        # get rewards
        obj_list = self.loot_handler.get_obj_list(owner)
        if obj_list:
            # give objects to winner
            owner.receive_objects(obj_list)

        # do quest's action
        action = getattr(self.dfield, "action", None)
        if action:
            STATEMENT_HANDLER.do_action(action, owner, None)

        # remove objective objects
        obj_list = []
        for ordinal in self.objectives:
            if self.objectives[ordinal]["type"] == defines.OBJECTIVE_OBJECT:
                obj_list.append({
                    "object": self.objectives[ordinal]["object"],
                    "number": self.objectives[ordinal]["number"]
                })
        if obj_list:
            owner.remove_objects(obj_list)
示例#2
0
    def complete(self):
        """
        Complete a quest, do its action.
        """
        owner = self.db.owner

        # get rewards
        obj_list = self.loot_handler.get_obj_list(owner)
        if obj_list:
            # give objects to winner
            owner.receive_objects(obj_list)

        # do quest's action
        action = getattr(self.dfield, "action", None)
        if action:
            STATEMENT_HANDLER.do_action(action, owner, None)

        # remove objective objects
        obj_list = []
        for ordinal in self.objectives:
            if self.objectives[ordinal]["type"] == defines.OBJECTIVE_OBJECT:
                obj_list.append({"object": self.objectives[ordinal]["object"],
                                 "number": self.objectives[ordinal]["number"]})
        if obj_list:
            owner.remove_objects(obj_list)
示例#3
0
    def finish_sentence(self, caller, npc, dialogue, sentence_no):
        """
        A sentence finished, do it's action.
        """
        if not caller:
            return

        # get dialogue
        dlg = self.get_dialogue(dialogue)
        if not dlg:
            return

        if sentence_no >= len(dlg["sentences"]):
            return

        sentence = self.get_sentence(dialogue, sentence_no)
        if not sentence:
            return

        # do dialogue's action
        if sentence["action"]:
            STATEMENT_HANDLER.do_action(sentence["action"], caller, npc)

        if sentence["is_last"]:
            # last sentence
            self.finish_dialogue(caller, dialogue)

        if sentence["complete_quest"]:
            caller.quest_handler.complete(sentence["complete_quest"])

        if sentence["provide_quest"]:
            caller.quest_handler.accept(sentence["provide_quest"])
示例#4
0
    def finish_sentence(self, caller, npc, dialogue, sentence_no):
        """
        A sentence finished, do it's action.
        """
        if not caller:
            return
        
        # get dialogue
        dlg = self.get_dialogue(dialogue)
        if not dlg:
            return

        if sentence_no >= len(dlg["sentences"]):
            return

        sentence = self.get_sentence(dialogue, sentence_no)
        if not sentence:
            return

        # do dialogue's action
        if sentence["action"]:
            STATEMENT_HANDLER.do_action(sentence["action"], caller, npc)

        if sentence["is_last"]:
            # last sentence
            self.finish_dialogue(caller, dialogue)

        if sentence["complete_quest"]:
            caller.quest_handler.complete(sentence["complete_quest"])

        if sentence["provide_quest"]:
            caller.quest_handler.accept(sentence["provide_quest"])