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"])
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)
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"])
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)