def getNextContainer(self, currentQuestId): for container in self.containers: if container.hasQuest(currentQuestId): nextContainerIndex = self.containers.index(container) + QuestLinkDB.getQuestLink(currentQuestId) if nextContainerIndex >= len(self.containers): return return self.containers[nextContainerIndex] return
def getNextContainer(self, currentQuestId): for container in self.containers: if container.hasQuest(currentQuestId): nextContainerIndex = self.containers.index(container) + QuestLinkDB.getQuestLink(currentQuestId) if nextContainerIndex >= len(self.containers): return None return self.containers[nextContainerIndex] continue
def getFilteredContainers(self): containerList = self.getContainers() filteredContainerList = [] currIndex = 0 firstQuestId = self.getFirstQuestId() for i in range(len(containerList)): if containerList[i].getName() == firstQuestId: currIndex = i break while currIndex < len(containerList): container = containerList[currIndex] filteredContainerList.append(container) currIndex += 1 + QuestLinkDB.getQuestLink(container.getName()) return filteredContainerList
def getFilteredContainers(self): containerList = self.getContainers() filteredContainerList = [] currIndex = 0 firstQuestId = self.getFirstQuestId() for i in range(len(containerList)): if containerList[i].getName() == firstQuestId: currIndex = i break continue while currIndex < len(containerList): container = containerList[currIndex] filteredContainerList.append(container) currIndex += 1 + QuestLinkDB.getQuestLink(container.getName()) return filteredContainerList
def handleQuestComplete(self, completedQuest, completedContainer, prevCompletedQuests = []): simbase.air.writeServerEvent('questLadder', self.av.doId, 'handleQuestComplete(%s,%s,%s)' % (completedQuest, completedContainer, prevCompletedQuests)) self.notify.debug('QC.handleQuestComplete().name: %s' % self.name) self.notify.debug('QC.handleQuestComplete().completedQuest: %s' % completedQuest.getName()) self.notify.debug('QC.handleQuestComplete().completedQuests: %s' % self.completedQuests) self.notify.debug('QC.handleQuestComplete().completedContainer: %s' % completedContainer.getName()) self.notify.debug('QC.handleQuestComplete().completedContainer.completedQuests %s' % completedContainer.completedQuests) self.notify.debug('QC.handleQuestComplete().prevCompletedQuests: %s' % prevCompletedQuests) self.notify.debug('QC.handleQuestComplete().isComplete?: %s' % self.isComplete()) qId = completedContainer.getName() simbase.air.writeServerEvent('questLadder', self.av.doId, 'ComletedContainer: %s' % qId) skipIndex = 1 + QuestLinkDB.getQuestLink(qId) nextIndex = self.containers.index(completedContainer) + skipIndex if nextIndex >= len(self.containers) and not isinstance(self, QuestChoice): if not self.isComplete(): simbase.air.writeServerEvent('questLadder', self.av.doId, 'Container forced to complete!') isComplete = True else: isComplete = self.isComplete() if isComplete: simbase.air.writeServerEvent('questLadder', self.av.doId, 'Container COMPLETE: %s' % self.getName()) self.av.questStatus.updateHistory(self) qEvent = QuestEvent.QuestContainerCompleted(containerId = self.getName()) simbase.air.questMgr.handleEvent([ self.av], qEvent) if self.parent: simbase.air.writeServerEvent('questLadder', self.av.doId, 'Call handleComlete on parent: %s' % self.parent.getName()) self.updateCompletedQuests(completedQuest, prevCompletedQuests) self.parent.handleQuestComplete(completedQuest, self, self.completedQuests) self.completedQuests = [] else: self.notify.debug('QC.handleQuestComplete(): root ladder is completed %s' % self.isComplete()) self.updateCompletedQuests(completedQuest) quests = completedContainer.completedQuests self.av._swapQuest(oldQuests = quests, giverId = None, questIds = None, rewards = None) self.av.questStatus.handleLadderComplete(self) else: simbase.air.writeServerEvent('questLadder', self.av.doId, 'Container NOT COMPLETE: %s' % self.getName()) simbase.air.writeServerEvent('questLadder', self.av.doId, 'Container skipIndex: %s' % skipIndex) self.av.questStatus.updateHistory(completedContainer) self.updateCompletedQuests(completedQuest) self.advance(completedContainer, skipIndex)
def handleQuestComplete(self, completedQuest, completedContainer, prevCompletedQuests=[]): simbase.air.writeServerEvent('questLadder', self.av.doId, 'handleQuestComplete(%s,%s,%s)' % (completedQuest, completedContainer, prevCompletedQuests)) self.notify.debug('QC.handleQuestComplete().name: %s' % self.name) self.notify.debug('QC.handleQuestComplete().completedQuest: %s' % completedQuest.getName()) self.notify.debug('QC.handleQuestComplete().completedQuests: %s' % self.completedQuests) self.notify.debug('QC.handleQuestComplete().completedContainer: %s' % completedContainer.getName()) self.notify.debug('QC.handleQuestComplete().completedContainer.completedQuests %s' % completedContainer.completedQuests) self.notify.debug('QC.handleQuestComplete().prevCompletedQuests: %s' % prevCompletedQuests) self.notify.debug('QC.handleQuestComplete().isComplete?: %s' % self.isComplete()) qId = completedContainer.getName() simbase.air.writeServerEvent('questLadder', self.av.doId, 'ComletedContainer: %s' % qId) skipIndex = 1 + QuestLinkDB.getQuestLink(qId) nextIndex = self.containers.index(completedContainer) + skipIndex if nextIndex >= len(self.containers): if not isinstance(self, QuestChoice): if not self.isComplete(): simbase.air.writeServerEvent('questLadder', self.av.doId, 'Container forced to complete!') isComplete = True else: isComplete = self.isComplete() if isComplete: simbase.air.writeServerEvent('questLadder', self.av.doId, 'Container COMPLETE: %s' % self.getName()) self.av.questStatus.updateHistory(self) qEvent = QuestEvent.QuestContainerCompleted(containerId=self.getName()) simbase.air.questMgr.handleEvent([self.av], qEvent) self.parent and simbase.air.writeServerEvent('questLadder', self.av.doId, 'Call handleComlete on parent: %s' % self.parent.getName()) self.updateCompletedQuests(completedQuest, prevCompletedQuests) self.parent.handleQuestComplete(completedQuest, self, self.completedQuests) self.completedQuests = [] else: self.notify.debug('QC.handleQuestComplete(): root ladder is completed %s' % self.isComplete()) self.updateCompletedQuests(completedQuest) quests = completedContainer.completedQuests self.av._swapQuest(oldQuests=quests, giverId=None, questIds=None, rewards=None) self.av.questStatus.handleLadderComplete(self) else: simbase.air.writeServerEvent('questLadder', self.av.doId, 'Container NOT COMPLETE: %s' % self.getName()) simbase.air.writeServerEvent('questLadder', self.av.doId, 'Container skipIndex: %s' % skipIndex) self.av.questStatus.updateHistory(completedContainer) self.updateCompletedQuests(completedQuest) self.advance(completedContainer, skipIndex) return