Пример #1
0
 def perform(self, player, game):
     act = True
     page = 0
     while act:
         u()
         tab = player.inventory.tabulate(page=page, sort="rarity")
         minpage = 0
         maxpage = ceil(tab[1] / player.tableLength) - 1
         print(tab[0], "\n")
         if tab[2] >= player.carryWeight:
             p("{}: {}/{}kg".format(Translate('carry_weight'), tc.f + str(
                 round(tab[2])), str(player.carryWeight)) + tc.w)
         else:
             p("{}: {}/{}kg".format(Translate('carry_weight'),
                                    str(round(tab[2])), player.carryWeight))
         print()
         p("Days of food: {}".format(
             player.inventory.calcFoodDays(player.group)))
         p("Days of water: {}".format(
             player.inventory.calcWaterDays(player.group)))
         print()
         p("{} {}/{}".format(Translate('page'), page + 1, maxpage + 1))
         p("d | {}".format(Translate('next_page')))
         p("a | {}".format(Translate('prev_page')))
         p("# | {}".format(Translate('page_number')))
         p("? | {}".format(Translate('detail_mode')))
         print()
         p("Esc/Return | {}".format(Translate('escape')))
         print()
         print("..| ")
         act = getch()
         if act == "?":
             newAct = ViewDetailInventoryAction()
             r = newAct.perform(player, game)
             if not r:
                 return
         elif act == "d" or act == "M":
             if page + 1 <= maxpage:
                 page += 1
         elif act == "a" or act == "K":
             if page - 1 >= minpage:
                 page -= 1
         else:
             if act == "":
                 return
             try:
                 if int(act) in range(minpage + 1, maxpage + 2):
                     page = int(act) - 1
             except:
                 return
Пример #2
0
 def perform(self, group, *pos):
     try:
         group = list(group.values())
     except AttributeError:
         pass
     u()
     print(dv.header("Character Biography"))
     if pos:
         group[pos[0]].printOut()
     else:
         group[0].printOut()
     print("\n\n")
     headers = ["#", ""]
     table = []
     for i in range(len(group)):
         table.append([i, group[i].fullName])
     table.append(["\n", ""])
     table.append([
         tc.w + str(len(group)), "[" + Translate('back_string') + "]" + tc.w
     ])
     print(tb.tabulate(table, headers) + "\n")
     ac = a(Translate('choose_string'), table)
     if ac < len(group):
         self.perform(group, ac)
Пример #3
0
 def perform(self, playerold, gameold):
     global player
     global game
     table = glob.glob("saves/*.dat")
     print(
         tb.tabulate([[i + 1, x.replace(".dat", "")]
                      for i, x in enumerate(table)],
                     headers=["#", "filename"],
                     tablefmt="simple"))
     print("--")
     gamesave = a(Translate("load_game_prompt"), table) + 1
     player, game = loadAllInformation(table[gamesave - 1])
     print(game.chapterDefs[player.chapter].getVignette())
     print()
     p(game.chapterDefs[player.chapter].getDescription())
     return player, game
Пример #4
0
 def perform(self, actions, headers, player=False, game=False):
     alphas = getAlphas(actions)
     table = [[alphas[i], x.name] for i, x in enumerate(actions)]
     print(tb.tabulate(table, headers, "simple"))
     print("--")
     ac = a(Translate('choose_string'), table)
     acTodo = actions[ac]
     if 'group' in acTodo.perform.__code__.co_varnames:
         return acTodo.perform(player.group)
     elif 'player' in acTodo.perform.__code__.co_varnames and 'game' in acTodo.perform.__code__.co_varnames:
         return acTodo.perform(player, game)
     elif 'playerold' in acTodo.perform.__code__.co_varnames and 'gameold' in acTodo.perform.__code__.co_varnames:
         return acTodo.perform(player, game)
     elif 'player' in acTodo.perform.__code__.co_varnames:
         return acTodo.perform(player)
     else:
         return acTodo.perform()
Пример #5
0
    def printOut(self):
        print(self.face)
        table = [[self.fullName], [self.gender]]
        print(tw.indent(tb.tabulate(table), " " * 5))
        preForm = self.stats.getPreformatted()
        table = [
            [Translate('vitality'), preForm[0]],
            [Translate('utility'), preForm[1]],
            [Translate('learning'), preForm[2]],
            [Translate('perception'), preForm[3]],
            [Translate('eloquence'), preForm[4]],
            [Translate('strength'), preForm[5]],
        ]

        print(tw.indent(tb.tabulate(table), " " * 5))
Пример #6
0
 def __init__(self):
     super().__init__(name=Translate('view_inventory_action'),
                      description=Translate('view_inventory_action'))
Пример #7
0
 def inv(self, player, tab, page, selectedItemIndex, maxpage):
     print("\033[{};{}H".format(len(tab[4][page]) + 4, 1))
     p("{} {}/{}".format(Translate('page'), page + 1, maxpage + 1))
     p("w | {}".format(Translate('up_item')))
     p("s | {}".format(Translate('down_item')))
     p("d | {}".format(Translate('next_page')))
     p("a | {}".format(Translate('prev_page')))
     p("f | {}".format(Translate('favourite_item')))
     p("# | {}".format(Translate('page_number')))
     p("+ | {}".format(Translate('add_craft')))
     p("- | {}".format(Translate('remove_craft')))
     print()
     p(tc.c + "e | {}".format(Translate('assign_crafter')) + tc.w)
     print()
     p("Esc/Return | {}".format(Translate('escape')))
     print()
     print("..|")
     maxwidth = max([len(i.label) for i in tab[4][page]]) + 45
     player.inventory.displayCraftDetailsXY(
         tab[4][page][selectedItemIndex],
         player.inventory.makeCraft(tab[4][page][selectedItemIndex]), 1,
         maxwidth, tab[2][page][selectedItemIndex][3],
         tab[2][page][selectedItemIndex][4])
     print("\033[{};{}H".format(len(tab[4][page]) + 15, 1))
Пример #8
0
    def perform(self, player, workType, returnLeeani=True):
        u()
        group = player.group
        headers = [
            "#",
            Translate('fullname'),
            Translate('hitpoints'),
            Translate('vitality_short'),
            Translate('utility_short'),
            Translate('learning_short'),
            Translate('perception_short'),
            Translate('eloquence_short'),
            Translate('strength_short'),
            Translate('work_header')
        ]
        favoured = [
            "vitality", "utility", "learning", "perception", "eloquence",
            "strength"
        ]
        if hasattr(workType, 'skills'):
            f1 = [k for k, v in workType.skills.items() if v == 1][0]
            f2 = [k for k, v in workType.skills.items() if v == 2][0]
            p(
                dv.header(
                    Translate('job_choose_string').format(
                        workType.label.upper())))
            print()
            p(workType.description)
            p("There are {} hours left in the day.{}".format(
                tc.f + str(player.dayLength - player.hour)
                if player.dayLength - player.hour < workType.timeCost() else
                tc.w + str(player.dayLength - player.hour), tc.w))
            if 8 - player.hour < workType.timeCost():
                p("They may return with less resources than expected.")
            p("{0} favours {1}» and {2}›".format(workType.labelDo.title(),
                                                 tc.y + f2.title() + tc.w,
                                                 tc.y + f1.title() + tc.w))
            p(Translate('assignment_suggestion'))

            for i, skill in enumerate(iter(favoured)):
                if skill == f1:
                    headers[i + 3] = tc.y + headers[i + 3] + tc.w + "›"
                if skill == f2:
                    headers[i + 3] = tc.y + headers[i + 3] + tc.w + "»"
        table = [[value.fullName, value.hp] +
                 value.stats.getWorkFormatted(workType) + [value.job.labelDo]
                 for key, value in group.items()]  #type: str, Leeani
        table.append(["[[BACK]]"])
        tableView = [[
            value.fullName if not value.afk else value.fullName + " (away)",
            value.hp
        ] + value.stats.getWorkFormatted(workType) + [value.job.labelDo]
                     for key, value in group.items()]
        tableView.append(["[[BACK]]"])
        for i, x in enumerate(iter(tableView)):  #type: int, list
            x.insert(0, i + 1)
            if "idling" not in x and i != len(tableView) - 1:
                for z in x:
                    zz = x[x.index(z)]
                    if group[table[i][0]].job == workType:
                        x[x.index(z)] = tc.b + tc.bg_w + str(zz)
                    else:
                        x[x.index(z)] = tc.b + str(zz)
            x[-1] = x[-1] + tc.w + tc.bg_b
        print()
        print(tb.tabulate(tableView, headers))
        ## KEY ##
        p("{}={}, {}={}, {}={}, {}={}".format(
            tc.y + "X" + tc.w, Translate("bonus_key"), tc.f + "X" + tc.w,
            Translate("penalty_key"), tc.b + tc.bg_w + "X" + tc.bg_b + tc.w,
            Translate("assigned_key"), tc.b + "X" + tc.w,
            Translate("elsewhere_key")),
          wrap=False,
          gap=True)
        p("Select a leeani for this job:", gap=True)
        sel = a(Translate('choose_string'), table)
        if sel == len(table) or sel == "":
            return False
        try:
            lee = group[table[sel][0]]
        except KeyError:
            return False
        return lee
Пример #9
0
 def __init__(self, location):
     self.location = location
     super().__init__(name=Translate('relocate_action') +
                      " to {}".format(self.location.label.title()),
                      description=Translate('relocate_action'))
Пример #10
0
 def __init__(self):
     super().__init__(Translate('action_lumberfox'),
                      Translate('action_lumberfox_desc'), "lumberfox")
Пример #11
0
 def __init__(self):
     super().__init__(Translate('action_looter'),
                      Translate('action_looter_desc'), "looter")
Пример #12
0
 def __init__(self):
     super().__init__(Translate('action_scavenger'),
                      Translate('action_scavenger_desc'), "scavenger")
Пример #13
0
 def __init__(self):
     super().__init__(Translate('action_fisher'),
                      Translate('action_fisher_desc'), "fisher")
Пример #14
0
 def __init__(self):
     super().__init__(Translate('action_forage'),
                      Translate('action_forage_desc'), "forager")
Пример #15
0
 def __init__(self):
     super().__init__(name=Translate('next_hour_action'),
                      description=Translate('next_hour_action'))
Пример #16
0
 def inv(self, player, tab, page, selectedItemIndex, maxpage):
     print("\033[{};{}H".format(len(tab[2][page]) + 5, 1))
     if tab[4] >= player.carryWeight:
         p("{}: {}/{}kg".format(Translate('carry_weight'), tc.f + str(
             round(tab[4])), str(player.carryWeight)) + tc.w)
     else:
         p("{}: {}/{}kg".format(Translate('carry_weight'),
                                str(round(tab[4])), player.carryWeight))
     print()
     p("Days of food: {}".format(player.inventory.calcFoodDays(
         player.group)))
     p("Days of water: {}".format(
         player.inventory.calcWaterDays(player.group)))
     print()
     p("{} {}/{}".format(Translate('page'), page + 1, maxpage + 1))
     p("w | {}".format(Translate('up_item')))
     p("s | {}".format(Translate('down_item')))
     p("d | {}".format(Translate('next_page')))
     p("a | {}".format(Translate('prev_page')))
     p(tc.f + "x | {}".format(Translate('drop_item')) + tc.w)
     p("# | {}".format(Translate('page_number')))
     p("? | {}".format(Translate('simple_mode')))
     print()
     p("Esc/Return | {}".format(Translate('escape')))
     print()
     print("..|")
     maxwidth = max([len(i.labelResolved()) for i in tab[2][page]]) + 18
     try:
         player.inventory.displayItemDetailsXY(
             tab[2][page][selectedItemIndex],
             tab[3][page][selectedItemIndex][1], 1, maxwidth)
     except IndexError:
         player.inventory.displayItemDetailsXY(tab[2][page][-1],
                                               tab[3][page][-1][1], 1,
                                               maxwidth)
         selectedItemIndex = len(tab[2][page]) - 1
     print("\033[{};{}H ".format(len(tab[2][page]) + 4, 1))
     print("\033[{};{}H".format(len(tab[2][page]) + 15, 1))
     return selectedItemIndex
Пример #17
0
 def __init__(self):
     super().__init__(name=Translate('view_character_action'),
                      description=Translate('view_character_action'))
Пример #18
0
 def __init__(self, location):
     self.location = location
     self.explorer = True
     super().__init__(Translate('action_explore'),
                      Translate('action_explore_desc'), "explorer")
Пример #19
0
 def perform(self, player, game):
     u()
     p(Translate("save_game_prompt"))
     savename = input("  ")
     saveAllInformation(savename, player, game)
Пример #20
0
 def exploreArea(self, player):
     self.name = "{} {}".format(Translate('action_explore'),
                                self.location.label.title())
Пример #21
0
    p("Day {} | {} (Hour {}/{})".format(player.day, player.formTime(),
                                        player.hour, player.dayLength))
    p("{}: {}".format(player.location.label.capitalize(),
                      player.location.description.capitalize()))
    for i in player.location.linked:
        p("A {} is close by ({}% scouted).".format(i.label, i.intel))
    listAction.perform(actions=generateActionList("nomad_day",
                                                  player=player,
                                                  game=game),
                       headers=["", ""],
                       player=player,
                       game=game)


u()
print(Translate("title"))
print("\n")
print("  " + Translate('splash', random=True))
listAction = ListAction(name="list", desc=None)
r = listAction.perform(actions=[
    NewGameAction("New Game", "Creates a new game."),
    LoadGameAction()
],
                       headers=["", ""],
                       player=player,
                       game=game)
if r:
    player, game = r
input(Translate('choose_string'))
player.calcCarryWeight()
while True:
Пример #22
0
 def __init__(self):
     super().__init__(Translate('action_craft'),
                      Translate('action_craft_desc'), "crafter")