Return of #circus IRC Real Time Mafia Bots!

Yeti

dark saturday
is a Community Contributor Alumnus
I guess this thread fits in OSI as an announcement so here goes:

internet and I both have the folder for his !crazy RTM mafia script (a wilder variant of old #fluodome mafiabot) and it's working for both. He is working on adding some new roles to his copy and I have the original as he sent it to me.

If you see mothboth (internet's) or Ho-Oh (mine) online, feel free to type !crazy to start up a game.

There's also Lugia who is a clone of Ho-Oh but a test bot for flavor gimmick scripts (IE all the roles as Smogon users). She starts games with !smogon not !crazy.

Ho-Oh is set up to identify and is grouped with my nick so she has the same access as me (if you ever want her to join some other channel). mothboth is deregged so it'll be mulling with the statusless.

This bot runs games of varying sizes from 3-15 or so with sub-1-minute night, day discussion and day voting cycles. So the games are extremely fast-paced and often chaotic due to the crazy roles - but very fun! Standard roles like hooker, inspector, bg, mafia partners, etc. are in the game. Larger games will get two sets of mafias and the largest of games will get either Russian mafia with 3 members and a werewolf or 3 members on French Canadian and Italian mafias.

Usually hooker or martyr will claim, or inspector if not in the game, to get the BG protecting them. They will then try to find scum. If they hook 1 mafia partner even if it's not the one doing the kill, the kill fails. You can claim in PM to people so it is not channel-only NOC.

Crazy roles different from mafiabot's:
Supervillain: has a mayor vote and a low priority kill. Is a solo baddie.

Devil: Knows everyone's roles, has a mayor vote. Is a solo baddie.

Kidnapper: hooks+silences a player. Is a solo baddie.

Village Silencer: yep

If both happen to be online at the same time you will probably want to have an op kick or mute either mothboth or Ho-Oh (mothboth is easier since no access) unless everyone wants to play two games at once.

I'm sure internet would love some more suggestions for roles to play with and if anyone more skilled at Python than us wants to look at how the script works and take a stab at adding new modes/roles that would be great too.

You can find them both in the synirc #circus channel, unfortunately no idea how to port the script to a Showdown bot yet so they are IRC-only atm. Drop by for some games now that the bots are lurking again!
 
Last edited:

Ampharos

tag walls, punch fascists
is a Community Contributor Alumnus
I know some Python and have some ideas so lemme take a look tomorrow and I'll see what I can come up with
 

UncleSam

Leading this village
is a Forum Moderator Alumnus
Are the bots written in Python?

I'll have time later tonight to look into how Showdown bots are written, it looked pretty complicated when I took a brief look at it a few weeks ago though.
 

internet

no longer getting paid to moderate
is an Artist Alumnusis a Forum Moderator Alumnus
I've managed to implement recruits/converters/whatever you call a role that changes others' alignments so if anyone has ideas for setups involving them that'd be excellent.

The Witch (hooks a target+nullifies their voting power until the witch dies) has proven beyond my skill to implement, specifically the "until the witch dies" part.
 

Yeti

dark saturday
is a Community Contributor Alumnus
Are the bots written in Python?

I'll have time later tonight to look into how Showdown bots are written, it looked pretty complicated when I took a brief look at it a few weeks ago though.
TWD said the PS bots are written in JS and thus incompatible with this one which yes is Python. I can see the script I just have 0 clue wat do if I edit it to make things happen lol.
 

Yeti

dark saturday
is a Community Contributor Alumnus
The Witch (hooks a target+nullifies their voting power until the witch dies) has proven beyond my skill to implement, specifically the "until the witch dies" part.
Do you want to post the code for the Witch and see if someone can figure out how to make it work right?

Sry 4 double post mobile is hard if someone wants to merge that's gucci.
 
if it's in python i may be able to help out
w/o knowing how the roles are structured I dunno if there's an easy fix for the witch problem but I can think of an extremely annoying one that is pretty much just hardcoding it buuuut w/e
 

internet

no longer getting paid to moderate
is an Artist Alumnusis a Forum Moderator Alumnus
phoenix, a townie who can !resurrect after being lynched any number of times, has been implemented. Variations upon the role shouldn't prove terribly difficult.
 

Yeti

dark saturday
is a Community Contributor Alumnus
Lugia Flavor Reskins

Type !smogon to play this mode if Lugia is on

Walrein: werewolf
Slim Guldo: mafia
billymills Cartel Friend: kidnapper
Da Letter El: hooker
Yeti: bodyguard
UncleSam: mayor
shade: inspector
LightWolf: martyr
vonFiedler: supervillain
The GoatWolf: devil
Blazade: safeguard
internet: witch
Peasant Mareep: villager
Ullar: jester (requested)
jalmont: tracker
billymills: sheriff
Aura Guardian: rogue
Paperblade: phoenix
zorbees: missionary
jumpluff: red sorcerer
porygon3: blue sorcerer
Twin: twin

Taking suggestions for names for the roles I haven't renamed yet plus additional flavor you'd like to see on that bot. Ho-Oh retains the standard names/flavor.
 
Last edited:

internet

no longer getting paid to moderate
is an Artist Alumnusis a Forum Moderator Alumnus
newly finished roles:

Red sorcerer (converts, low prio)
Blue sorcerer (converts+bg, high prio obv)
Witch (hooks+vote nullifies targets until death)
Jester (neutral, wins when lynched)
Safeguard
 

internet

no longer getting paid to moderate
is an Artist Alumnusis a Forum Moderator Alumnus
Current setups:

3player: wolf, mayor, villager

4player: hooker, bodyguard, mafia, werewolf

5player: werewolf, kidnapper or jester, mayor, hooker, bodyguard

6player: bodyguard, inspector, werewolf, devil, mayor, villager

7-10 players: hooker, bg, werewolf, devil or kidnapper, supervillain or red sorceror, inspector or if there's 10 players sheriff, filled out with villagers.

10-13 players: Hooker, Martyr, Twin, Twin, Kidnapper or Jester, bg, 2 mafia, devil, supervillain or red sorc, filled out with villagers

12-15 players: mayor, hooker or martyr, inspector or sheriff, bg, russsiansx2, russian silencer, devil, supervillain or redsorc, another mayor, filled out with villagers.

14-20 players, old mafiabot setup: 3x frenches, 3x italians, rogue, mayor, bodyguard, slight chance of ghost or joker, a piece of code that picks some number from hooker inspector sheriff and martyr, filled out with villagers

this is the mentioned piece of code:

possible = [Inspector(), Sheriff(), Hooker(), Martyr()]
for i in xrange(1): idx = randint(0, len(possible)-1); possible[idx:idx+1] = []
 

zorbees

Chwa for no reason!
is a Forum Moderator Alumnus
zorbees: missionary
lol ofc i get the role that isnt explained anywhere, what is this

this is the mentioned piece of code:

possible = [Inspector(), Sheriff(), Hooker(), Martyr()]
for i in xrange(1): idx = randint(0, len(possible)-1); possible[idx:idx+1] = []
i'm guessing this is what randomly determines which of those roles are present and which arent, because im pretty sure i've seen a few different combinations in larger fc/italian games
 

Yeti

dark saturday
is a Community Contributor Alumnus
missionary converts a baddie to group: good people. so far i've only seen it in 2-player with the werewolf so i don't think it's implemented into any of the larger modes yet. i feel like it could work well in a baddy-heavy mode [yet to be designed?]

i am working on green sorcerer who can enchant his target, who, if killed, will be able to !resurrect. but i'm not really sure how to modify the rogue role to not be self-revive, but target-revive, or if i can give the revived person their role back or if they're just vanilla like normal rogue. if anyone wants to halp would b appreciated.
 

internet

no longer getting paid to moderate
is an Artist Alumnusis a Forum Moderator Alumnus
I've created a green sorcerer who enchants any number of players, albeit one per night, allowing them to come back as vanilla villagers from their first death after being enchanted, probably aligned with the village too but that hasn't been tested.
 
Last edited:

Ampharos

tag walls, punch fascists
is a Community Contributor Alumnus
at some point i'd like to code a two-man setup I'm currently calling the WIFOM game, which is basically involves one player choosing to poison either his opponent's goblet or his own and then the other player needing to successfully vote for the unpoisoned goblet. if anyone beats me to writing this that's fine but like i said i'll do it at some point
 

Nineage

Pugnacious.
is a Programmeris a Community Contributoris a Tiering Contributoris a Top Contributoris a Site Content Manager Alumnusis a Forum Moderator Alumnus
I'm not a circus guy but I know Showdown bots (I've written various scripts for them in the past, etc). If people are interested, I could definitely port the IRC bot code over to a PS bot. Someone let me know if I should!
Might need some help explaining how these games actually work...
 

UncleSam

Leading this village
is a Forum Moderator Alumnus
I'm not a circus guy but I know Showdown bots (I've written various scripts for them in the past, etc). If people are interested, I could definitely port the IRC bot code over to a PS bot. Someone let me know if I should!
Might need some help explaining how these games actually work...
If you could do that it would be a huge help. I'll add you to the PM with the IRC bot code in Python.
 

Yeti

dark saturday
is a Community Contributor Alumnus
Proper mothboth/Ho-Oh Roles List:
(aka bored @ work)

Neutrals/Not-Town
Werewolf: high priority killer, 1 vote
Supervillain: slower than wolf faster than mafia killer, 2 votes
Mafia: slowest killer, may be a team of 2, 1 vote (if the martyr/hooker target either 1 of them, the kill will be blocked)
French Canadian/Italian mafia: two mafia teams of two, Italian are faster than FC, only appear in larger games, 1 vote
Russian mafia + silencer: team of 3, 2 mafia killers and 1 silencer, only appear in 12-15p, 1 vote
Devil: no kill, knows what every player is, 2 votes
Joker: former-villager who turns into a solo killer after the Day 1 lynch, faster than mafia slower than wolf, 1 vote
Ghost: former-villager who turns into an unkillable ghost who can 'spook' (hook) anyone and wins with whoever is left, 0 vote
Kidnapper: no kill, hooks his target and silences them, 1 vote (debate about if he should have 2 votes)
Witch: no kill, hexes (hooks) her target and permanently 0 votes them until she dies, 1 vote
Red Sorcerer: converter to the Reds, faster prio convert, 1 vote
Blue Sorcerer: converter to the Blues, slower prio convert + bg, 1 vote
Psychopath*: the formerly-village twin2 if twin1 dies via LYNCH, now a killer slower than werewolf, 1 vote
Jester: no kill, the game ends and he is the sole winner if he gets lynched, also wins with the winning team if he survives (thus can win with WW, SV, town, etc)

Town
Hooker: hooks target to stop their action, cannot target same person 2 nights in a row, will die from hooking the wolf if not BGed
Bodyguard: protects target from dying (does not die in doing so)
Inspector: obtains the role of his target
Martyr: forces target to target the martyr, can die from this if not BGed
Mayor: 2 votes
Villager: vanilla town, can turn joker/ghost
Twins: 2 twins, when one dies the other gains the ability to kill, see: Psychopath* and Vigilante*
Vigilante*: the still-village twin2 if twin1 is nightkilled, now a town-aligned killer slower than werewolf
Sheriff: checks if target is a plain villager or not (could be non-town or could be a town power role)
Rogue: stalks target, if his target's team kills him, he can !resurrect at any point before the game ends, if he rogued the wrong person he stays dead
Missionary: converts target to town team (currently only in 2p)
Green Sorcerer: enchants target so that if they are killed that night (by anyone), they can !resurrect at any point before the game ends as vanilla town (currently not enabled)
Safeguard: protects target from non-kill actions such as converts/hexes/kidnaps (currently not enabled I believe)

It looks like the town roles could use the most expansion of diversity, there are a ton of new neuts but the village roles (enabled in games) are all the same as they were on the old Fluobot. Suggestions for new town roles welcome!!

Link this post to anyone needing to know what the roles do. Link the Lugia Reskin list ( http://spo.ink/USsux ) if someone is playing Lugia for the first time as well.
 
Last edited:

zorbees

Chwa for no reason!
is a Forum Moderator Alumnus
did you guys change sheriff from the old bot? the old sheriff just checked if his target was a vanilla villager or not
 

Yeti

dark saturday
is a Community Contributor Alumnus
did you guys change sheriff from the old bot? the old sheriff just checked if his target was a vanilla villager or not
Oh oops you are totally right, sheriff in the bot's code is just nilla villager check or not. It's been so long since I've seen sheriff I forgot what it does. I also think I confused it with the !c5 coding which has the 4 cops' roles right below sheriff in the script (and they do say bad/good).
Do you think it would be possible to implement a game mode where we can select the roles we want?
Someone much better at Python than me would have to answer this as it is 100% beyond my scope. I think it is a very good suggestion if possible but I have no clue on the plausibility of that 'if' lol.
Right now the only user-selection stuff we can do is starting/joining the game and picking a target, telling the bot "give me this role" might be possible off of that but I don't quite know how to get there from the scripts currently in place. If anyone can work on that, that'd be solid.
 
For porting Python to JS, a quick google search brings this up:
http://pyjs.org/
I've never heard of it but maybe?

As for what can be implemented in Python and what can't, the short answer is "anything is possible". If enough people want a feature to be implemented, I could try my hand at it, or anyone else who knows enough Python features and has had a good look at mafiabot.py.
 

Users Who Are Viewing This Thread (Users: 1, Guests: 0)

Top