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