import random
players_file = open("players.txt", "r")
roles_file = open("roles.txt", "r")
players_list = []
roles_list = []
for player in players_file:
players_list.append(player)
for role in roles_file:
roles_list.append(role)
num_players = len(players_list)
# make sure there wasn't an error in the files with mismatched number of players and roles
if num_players != len(roles_list):
print(f"%d players and %d roles. \nThis is a mismatch. Exiting program. Fix the files!", num_players, len(roles_list))
exit(1)
# only need to shuffle one of the two lists in order to randomize the assignments
# as I tend to list the roles by faction in roles.txt this also means that townies, mafia, etc have their players listed in a contiguous block
# rather than all over
random.shuffle(players_list)
# now we can print the players and their role assignments
for i in range(num_players):
print(players_list[i] + " is a " + roles_list[i])
DDB limits how many PMs I can send so still going through that. But if it's an hour later and you still haven't received a Role PM, please let me know.
Not a new game. Just a potential replacement for one of the current players. (Still need to double-check on things, but it's a realistic possibility at the moment.)
Same
forgot about a simple twist of fate
cool
Pronouns: She/Her
Gender: Nonbinary Female, 1/3 human, 1/3 feline, 1/3 dragon
Mentally and emotionally unstable, anorexic (currently in remission!), autism, ADHD, anger issues
I hope I get something good.
Kasrik Argentum Stellaris Fiddlesticks the Wizard, Lord of Stars, Master Trickster, and Creator of both the Mosh of Stardust Hornets and Mimiczilla.
"You're never fully dressed without a smile!" >:3
"Honk."
Same
Hello! I am a perfectly sane gibberer. Hi! :D
Locations are dead, the Temple of Potassium has fallen but its ideals live on
A mysterious link of chain... (Extended signature). PRAISE JEFF THE EVIL ROOMBA! REALLY cool video.
One of the Warlock Patrons on the forums. Low, low price of your soul, firstborn child and liver!
Titles: The Echoing Story Spewer (Drummer), the Endless Maws (Isis), the Mad Murderer (PJ), more on my extended sig
Really hoping for Krampus.
Kasrik Argentum Stellaris Fiddlesticks the Wizard, Lord of Stars, Master Trickster, and Creator of both the Mosh of Stardust Hornets and Mimiczilla.
"You're never fully dressed without a smile!" >:3
"Honk."
I want murder
Pronouns: She/Her
Gender: Nonbinary Female, 1/3 human, 1/3 feline, 1/3 dragon
Mentally and emotionally unstable, anorexic (currently in remission!), autism, ADHD, anger issues
I would be better at murderer, I've done it several times before and got the title to prove it!
Hello! I am a perfectly sane gibberer. Hi! :D
Locations are dead, the Temple of Potassium has fallen but its ideals live on
A mysterious link of chain... (Extended signature). PRAISE JEFF THE EVIL ROOMBA! REALLY cool video.
One of the Warlock Patrons on the forums. Low, low price of your soul, firstborn child and liver!
Titles: The Echoing Story Spewer (Drummer), the Endless Maws (Isis), the Mad Murderer (PJ), more on my extended sig
Roles are assigned. Gonna start writing up the thread and PMs.
If you're curious how the roles were assigned, I used this Python code.
-----------------------------------------------------------------------------------------------------------------
import random players_file = open("players.txt", "r") roles_file = open("roles.txt", "r") players_list = [] roles_list = [] for player in players_file: players_list.append(player) for role in roles_file: roles_list.append(role) num_players = len(players_list) # make sure there wasn't an error in the files with mismatched number of players and roles if num_players != len(roles_list): print(f"%d players and %d roles. \nThis is a mismatch. Exiting program. Fix the files!", num_players, len(roles_list)) exit(1) # only need to shuffle one of the two lists in order to randomize the assignments # as I tend to list the roles by faction in roles.txt this also means that townies, mafia, etc have their players listed in a contiguous block # rather than all over random.shuffle(players_list) # now we can print the players and their role assignments for i in range(num_players): print(players_list[i] + " is a " + roles_list[i])This is a signature. It was a simple signature. But it has been upgraded.
Belolonandalogalo, Sunny
Eggo Lass, Bone and Oblivion | Tendilius Mondhaven Paxaramus, Drakkenheim
Karl Erikson, No Guts No Glory | Chipper, Curse of Strahd
Silverwood Group 1 | Silverwood Group 2
Get rickrolled here. Awesome music here. Track 51, 10/23/25, Viva La Vida
Game Thread: here
DDB limits how many PMs I can send so still going through that. But if it's an hour later and you still haven't received a Role PM, please let me know.
This is a signature. It was a simple signature. But it has been upgraded.
Belolonandalogalo, Sunny
Eggo Lass, Bone and Oblivion | Tendilius Mondhaven Paxaramus, Drakkenheim
Karl Erikson, No Guts No Glory | Chipper, Curse of Strahd
Silverwood Group 1 | Silverwood Group 2
Get rickrolled here. Awesome music here. Track 51, 10/23/25, Viva La Vida
I might be looking for a replacement player. Let me know if you're interested.
This is a signature. It was a simple signature. But it has been upgraded.
Belolonandalogalo, Sunny
Eggo Lass, Bone and Oblivion | Tendilius Mondhaven Paxaramus, Drakkenheim
Karl Erikson, No Guts No Glory | Chipper, Curse of Strahd
Silverwood Group 1 | Silverwood Group 2
Get rickrolled here. Awesome music here. Track 51, 10/23/25, Viva La Vida
What's going on? New game?
You guys are awesome and mean so much to me. And mean so much to each other.
Not a new game. Just a potential replacement for one of the current players. (Still need to double-check on things, but it's a realistic possibility at the moment.)
This is a signature. It was a simple signature. But it has been upgraded.
Belolonandalogalo, Sunny
Eggo Lass, Bone and Oblivion | Tendilius Mondhaven Paxaramus, Drakkenheim
Karl Erikson, No Guts No Glory | Chipper, Curse of Strahd
Silverwood Group 1 | Silverwood Group 2
Get rickrolled here. Awesome music here. Track 51, 10/23/25, Viva La Vida