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
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)
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
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()
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))
def __init__(self): super().__init__(name=Translate('view_inventory_action'), description=Translate('view_inventory_action'))
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))
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
def __init__(self, location): self.location = location super().__init__(name=Translate('relocate_action') + " to {}".format(self.location.label.title()), description=Translate('relocate_action'))
def __init__(self): super().__init__(Translate('action_lumberfox'), Translate('action_lumberfox_desc'), "lumberfox")
def __init__(self): super().__init__(Translate('action_looter'), Translate('action_looter_desc'), "looter")
def __init__(self): super().__init__(Translate('action_scavenger'), Translate('action_scavenger_desc'), "scavenger")
def __init__(self): super().__init__(Translate('action_fisher'), Translate('action_fisher_desc'), "fisher")
def __init__(self): super().__init__(Translate('action_forage'), Translate('action_forage_desc'), "forager")
def __init__(self): super().__init__(name=Translate('next_hour_action'), description=Translate('next_hour_action'))
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
def __init__(self): super().__init__(name=Translate('view_character_action'), description=Translate('view_character_action'))
def __init__(self, location): self.location = location self.explorer = True super().__init__(Translate('action_explore'), Translate('action_explore_desc'), "explorer")
def perform(self, player, game): u() p(Translate("save_game_prompt")) savename = input(" ") saveAllInformation(savename, player, game)
def exploreArea(self, player): self.name = "{} {}".format(Translate('action_explore'), self.location.label.title())
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:
def __init__(self): super().__init__(Translate('action_craft'), Translate('action_craft_desc'), "crafter")