예제 #1
0
파일: quest.py 프로젝트: Arongil/Adventure
    def activate(self):
        output.proclaim("-- " + self.name + " --")

        if self.autoGive:
            self.given = True

        if not self.given:
            output.proclaim(self.openerText)
            while True:
                choice = input.inputFromOptions("quest", ["decline", "accept"])
                if choice == "accept":
                    self.given = True
                    break
                elif choice == "decline":
                    output.say("Are you sure you want to decline the quest?")
                    if input.yesNo():
                        break
            return


        player = globals.get_player()
        if self.completionCheck(player):
            output.proclaim(self.completeText)
            output.exclaim("You have completed the quest " + self.name + "!")
            self.rewards.activate()
            self.condition = lambda player: False
            player.completedQuests[self.name] = True
        else:
            output.proclaim(self.incompleteText)
예제 #2
0
 def activate(self):
     output.proclaim(self.message)
     if len(self.locations) > 1:
         choice = input.inputFromOptions("go", ["stay"] + self.locations)
         if choice != "stay":
             self.player.changeLocation(choice)
     else:
         if input.yesNo():
             self.player.changeLocation(self.locations[0])
예제 #3
0
 def start(self):
     self.initGame()
     while self.player.alive:
         try:
             self.player.act()
             self.player.interact()
         except Exception:
             output.bar()
             output.declare("! ERROR !")
             output.bar()
             output.bellow("Adventure has crashed. The program will quit after you answer this question. See Python traceback?")
             if input.yesNo():
                 traceback.print_exc()
                 input.getInput("end")
             break
     input.close()
예제 #4
0
 def addBonus(self):
     stats = self.player.stats.getStats()
     output.say("Which stat do you want to boost for " +
                str(self.duration) + " turns?")
     while True:
         stat = input.inputFromOptions(
             "shrine", stats,
             lambda stat: stat.name + " by " + output.formatNumber(
                 self.amounts[stats.index(stat)] * stat.difficultyModifier)
             + ", currently at " + str(stat) + ".")
         index = stats.index(stat)
         output.say("Are you sure you want to boost " + stat.name + " by " +
                    output.formatNumber(self.amounts[index] *
                                        stat.difficultyModifier) + " for " +
                    str(self.duration) + " turns?")
         if input.yesNo():
             self.player.addEffect(self.buffs[index](
                 "shrine bonus", self.duration,
                 self.amounts[index] * stat.difficultyModifier))
             return
예제 #5
0
 def activate(self):
     stats = self.player.stats.getStats()
     output.say("Which stat do you want to boost?")
     while True:
         stat = input.inputFromOptions(
             self.name, stats, lambda stat: stat.name + " by " + str(
                 self.bonuses[stat.name] * stat.difficultyModifier) +
             ", currently at " + str(stat) + ".")
         output.say("Are you sure you want to boost " + str(stat.name) +
                    " by " +
                    str(self.bonuses[stat.name] * stat.difficultyModifier) +
                    "?")
         if input.yesNo():
             stat.add(self.bonuses[stat.name])
             break
     if len(self.abilities) > 0 and self.player.level == self.abilities[0][
             2]:  # check if level is correct
         output.exclaim("You learn a new ability: " +
                        str(self.abilities[0][0]).upper() + "!")
         output.declare(self.abilities[0][1])  # ability description
         self.player.abilities.append(self.abilities[0][0])
         self.abilities.pop(0)
예제 #6
0
 def activate(self):
     output.say("Are you sure you want to quit?")
     if input.yesNo():
         self.player.alive = False
         output.bellow("Thank you for playing!")