def roll_values(self, values): v = values[-1] if type(v) == list: v = v[1] if v == 10: return roll_d10() if v == 100: return roll_d100()
def step_5(self, table): result, index = self.roll_on_table(table, with_index=True, with_input=97) result_dict = {"age": result["age"] + roll_d10()} if index == 0: self.next_step = 8 if result.get("next"): next_table = self.get_from_target(result["next"]) next_result = self.advanced_age(next_table) result_dict.update(next_result) return {"title": table.get("title", ""), "desc": table.get("desc", ""), "result": result_dict}
def step_3(self, table): result, index = self.roll_on_table(table, with_index=True) backgrounds = [] ignore_others = False agi_uplift = None self.pp += int(result["roll"]) * int(result["select"]) for i in range(result["roll"]): next_table = self.get_from_target(result["next"]) next_result = self.roll_on_table(next_table) final_table = self.get_from_target(next_result["next"]) final_result, final_index = self.roll_on_table(final_table, with_index=True) if type(final_result) == dict: if final_result.get("next"): final_table = self.get_from_target(final_result["next"]) final_result, final_index = self.roll_on_table(final_table, with_index=True) else: final_result = self.roll_on_table(final_result) target_table = self.get_from_target(final_table["target"]) background = target_table[final_result] morph = final_table["morph"][final_index] if type(morph) == dict: if "next" in morph: morph = self.get_random_morph(morph.get("ignore")) else: morph = self.roll_on_table(morph) next = final_table["next"][final_index] desc = final_table["desc"][final_index] if type(next) == dict: next = self.roll_on_table(next) if next_result["next"] == "3.9": if final_index < 3: agi_uplift = "infolife" elif final_index > 3: agi_uplift = "uplift" if desc.endswith("*"): roll = roll_d10() if desc.endswith("**"): roll = 1 if roll < 4: backgrounds = [] ignore_others = True self.next_step = 9 backgrounds.append( { "title": final_table.get("title", ""), "desc": desc, "package": final_result, "result": clear_package(background, result["select"]), "pkg_type": "background", "morph": morph, # ONLY THE FINAL NEXT VALUE COUNTS "next": next, } ) if ignore_others: break return { "title": table.get("title", ""), "desc": table.get("desc", "")[index], "result": backgrounds, "agi-uplift": agi_uplift, }