|
|
|
|
|
|
| |
|
|
|
|
| import random |
|
|
|
|
| |
| import random |
|
|
| races = { |
| "human": {"str": 1, "dex": 1, "con": 1, "int": 1, "wis": 1, "cha": 1}, |
| |
| "elf": {"str": 0, "dex": 2, "con": 0, "int": 0, "wis": 0, "cha": 0}, |
| "high_elf": {"str": 0, "dex": 2, "con": 0, "int": 1, "wis": 0, "cha": 0}, |
| "wood_elf": {"str": 0, "dex": 2, "con": 0, "int": 0, "wis": 1, "cha": 0}, |
| "dark_elf": {"str": 0, "dex": 2, "con": 0, "int": 0, "wis": 0, "cha": 1}, |
|
|
| "dwarf": {"str": 0, "dex": 0, "con": 2, "int": 0, "wis": 0, "cha": 0}, |
| "hill_dwarf": {"str": 0, "dex": 0, "con": 2, "int": 0, "wis": 1, "cha": 0}, |
| "mountain_dwarf": {"str": 2, "dex": 0, "con": 2, "int": 0, "wis": 0, "cha": 0}, |
|
|
| "halfling": {"str": 0, "dex": 2, "con": 0, "int": 0, "wis": 0, "cha": 0}, |
| "lightfoot_halfling": {"str": 0, "dex": 2, "con": 0, "int": 0, "wis": 0, "cha": 1}, |
| "stout_halfling": {"str": 0, "dex": 2, "con": 1, "int": 0, "wis": 0, "cha": 0}, |
|
|
| "dragonborn": {"str": 2, "dex": 0, "con": 0, "int": 0, "wis": 0, "cha": 1}, |
| "gnome": {"str": 0, "dex": 0, "con": 0, "int": 2, "wis": 0, "cha": 0}, |
| "forest_gnome": {"str": 0, "dex": 1, "con": 0, "int": 2, "wis": 0, "cha": 0}, |
| "rock_gnome": {"str": 0, "dex": 0, "con": 1, "int": 2, "wis": 0, "cha": 0}, |
|
|
| "half_elf": {"str": 0, "dex": 0, "con": 0, "int": 0, "wis": 0, "cha": 2}, |
| "half_orc": {"str": 2, "dex": 0, "con": 1, "int": 0, "wis": 0, "cha": 0}, |
|
|
| "tiefling": {"str": 0, "dex": 0, "con": 0, "int": 1, "wis": 0, "cha": 2} |
| } |
|
|
| class Race: |
| def __init__(self, name, base_bonus, subraces=None): |
| self.name = name |
| self.base_bonus = base_bonus |
| self.subraces = subraces or {} |
|
|
| def get_bonus(self, subrace=None): |
| bonus = self.base_bonus.copy() |
| if subrace and subrace in self.subraces: |
| for stat, value in self.subraces[subrace].items(): |
| bonus[stat] = bonus.get(stat, 0) + value |
| return bonus |
|
|
| class NPC(): |
| def __init__(self): |
| self.str |
| self.dex |
| self.con |
| self.int |
| self.wis |
| self.char |
|
|
| self.race |
| self.stats = self.roll_stats |
| |
| def roll_stats(self): |
| stats = [] |
| for _ in range(6): |
| rolls = [] |
| for _ in range(4): |
| rolls.append(random.randint(1, 6)) |
| stat = max(sum(rolls) - min(rolls), 8) |
| print(stat) |
| stats.append(stat) |
|
|
|
|
| stats.sort(reverse=True) |
| |
| return stats |
|
|
| def roll_race(self, context): |
| |
| |
| if "Ferramar" in context: |
| return random.choice(["human", "draconato", "aasimar"]) |
| elif "Ressamar" in context: |
| return random.choice(["human", "tritão", "tabaxi"]) |
| elif "Andarilhos" in context: |
| return random.choice(["human", "tabaxi", "tiefling"]) |
| elif "Gluckslott" in context: |
| return random.choice(["anão", "gnomo", "draconato"]) |
| elif "Fortunasue" in context: |
| return random.choice(["human", "tiefling", "halfling"]) |
| elif "Maraven" in context: |
| return random.choice(["human", "halfling", "tiefling"]) |
| elif "MataReal" in context: |
| return random.choice(["human", "orc", "meio-orc", "tabaxi"]) |
| elif "SilvanVale" in context: |
| return random.choice(["human", "aasimar", "gnomo"]) |
| elif "Steinberg" in context: |
| return random.choice(["anão", "gnomo", "draconato"]) |
| else: |
| return random.choice(list(races.keys())) |
| |
| """ |
| Ferramar |
| - Humanos |
| - Draconatos |
| - Aasimar (militares) |
| Ressamar |
| - Humanos |
| - Tritões (minorias costeiras) |
| - Tabaxi |
| Andarilhos |
| - Humanos |
| - Tabaxi |
| - Tieflings |
| Gluckslott |
| - Anões |
| - Gnomos |
| - Draconatos |
| Fortunasue |
| - Humanos |
| - Tieflings |
| - Halflings |
| Maraven |
| - Humanos (majoritários) |
| - Halflings (fortes no comércio) |
| - Tieflings (minoria urbana) |
| MataReal |
| - Humanos |
| - Orcs e Meio-orcs |
| - Tabaxi (rotas nômades) |
| SilvanVale |
| - Humanos |
| - Aasimar (raros, ligados a ordens naturais) |
| - Gnomos (engenharia leve e hidráulica)] |
| Steinberg |
| - Anões (majoritários) |
| - Gnomos |
| - Alguns Draconatos (minorias técnicas/militares) |
| |
| |
| |
| """ |
| pass |
|
|
|
|
| class Combative_NPC(NPC): |
| def __init__(self): |
|
|
| self.classe |
|
|
| def roll_class(self): |
| pass |
|
|
| def background(): |
| NotImplemented |
|
|
| def define_stats(self): |
| |
| |
|
|
| pass |
|
|
| class Non_Combative_NPC(NPC): |
| def __init__(self): |
| pass |
|
|
|
|
|
|
|
|
| def get_npc_context(npc_name): |
| |
| |
| return "Contexto do NPC: " + npc_name |
|
|
|
|
| def generate_npc(npc_name): |
| context = get_npc_context(npc_name) |
| npc = Combative_NPC() |
| stats = npc.roll_stats(1) |
| |
| npc_description = "Descrição do NPC: " + npc_name + " - " + context |
| return npc_description |
|
|
|
|
| def main(): |
| npc_name = "Gandalf" |
| npc = generate_npc(npc_name) |
| print(npc) |
| |
| if __name__ == "__main__": |
| main() |