Esempio n. 1
0
    def finish_sentence(self, caller, npc, dialogue, sentence):
        """
        A sentence finished, do it's action.
        """
        if not caller:
            return
        
        # get dialogue
        dlg = self.get_dialogue(dialogue)
        if not dlg:
            return

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

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

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

        if sentence + 1 >= len(dlg["sentences"]):
            # last sentence
            self.finish_dialogue(caller, dialogue)

        if sen["complete_quest"]:
            caller.quest.complete(sen["complete_quest"])

        if sen["provide_quest"]:
            caller.quest.accept(sen["provide_quest"])
Esempio n. 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:
            SCRIPT_HANDLER.do_action(owner, None, action)

        # 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)
Esempio n. 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"]:
            SCRIPT_HANDLER.do_action(caller, npc, sentence["action"])

        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"])
Esempio n. 4
0
    def complete(self):
        """
        Complete a quest, do its action.
        """
        owner = self.db.owner

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

        # 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)