class YandereDoppelganger(Role): name = 'yandere doppelganger' is_yandere = True default_alignment = Alignment.evil abilities = [ ability.VoteKillAbility(num_uses=math.inf, phases=[Phase.night]), ability.VoteKillAbility(num_uses=math.inf, phases=[Phase.day], command_public=True), ] upgrades = [CloakedYandere] safe_to_guard = False
class YandereRonin(Role): name = 'yandere ronin' is_yandere = True default_alignment = Alignment.evil abilities = [ ability.KillAbility(num_uses=1, phases=[Phase.day]), ability.VoteKillAbility(num_uses=math.inf, phases=[Phase.night]), ability.VoteKillAbility(num_uses=math.inf, phases=[Phase.day], command_public=True), ] safe_to_guard = False
class PsychicYandere(Role): name = 'psychic yandere' is_yandere = True default_alignment = Alignment.evil abilities = [ ability.SpyAbility(num_uses=1, phases=[Phase.day]), ability.VoteKillAbility(num_uses=math.inf, phases=[Phase.night]), ability.VoteKillAbility(num_uses=math.inf, phases=[Phase.day], command_public=True), ] upgrades = [YandereSpy] safe_to_guard = False
class Yandere(Role): name = 'yandere' is_yandere = True default_alignment = Alignment.evil abilities = [ ability.VoteKillAbility(num_uses=math.inf, phases=[Phase.night]), ability.VoteKillAbility(num_uses=math.inf, phases=[Phase.day], command_public=True), ] upgrades = [ YandereDoppelganger, CloakedYandere, PsychicYandere, YandereSpy, YandereRonin, YandereSenpai ] safe_to_guard = False
class CloakedYandere(Role): name = 'cloaked yandere' is_yandere = True default_alignment = Alignment.evil abilities = [ ability.VoteKillAbility(num_uses=math.inf, phases=[Phase.night]), ability.VoteKillAbility(num_uses=math.inf, phases=[Phase.day], command_public=True), ] upgrades = [CloakedPsychicYandere] appearances = [ 'civilian', 'tokokyohi', 'hikikomori', 'nurse', 'guardian', 'warrior', 'witness', 'stalker', 'shogun' ] safe_to_guard = True
class DaySpy(Role): name = 'spy' is_yandere = False default_alignment = Alignment.good abilities = [ ability.SpyAbility(num_uses=math.inf, phases=[Phase.day]), ability.VoteKillAbility(num_uses=math.inf, phases=[Phase.day], command_public=True), ]
class Janitor(Role): name = 'janitor' is_yandere = False default_alignment = Alignment.good abilities = [ ability.VoteKillAbility(num_uses=math.inf, phases=[Phase.day], command_public=True), ] upgrades = [Idol]
class PsychicIdiot(Role): name = 'psychic idiot' is_yandere = False default_alignment = Alignment.neutral abilities = [ ability.SpyAbility(num_uses=math.inf, phases=[Phase.day, Phase.night]), ability.VoteKillAbility(num_uses=math.inf, phases=[Phase.day], command_public=True), ]
class Shogun(Role): name = 'shogun' is_yandere = False default_alignment = Alignment.good abilities = [ ability.KillAbility(num_uses=math.inf, phases=[Phase.night]), ability.VoteKillAbility(num_uses=math.inf, phases=[Phase.day], command_public=True), ]
class BakaRanger(Role): name = 'baka ranger' is_yandere = False default_alignment = Alignment.neutral abilities = [ ability.VoteKillAbility(num_uses=math.inf, phases=[Phase.day], command_public=True), ] upgrades = [PsychicIdiot, IdiotSavant, Myth, NullCarrier],
class Hikikomori(Role): name = 'hikikomori' is_yandere = False default_alignment = Alignment.good abilities = [ ability.HideAbility(num_uses=math.inf, phases=[Phase.night]), ability.VoteKillAbility(num_uses=math.inf, phases=[Phase.day], command_public=True), ]
class Myth(Role): name = 'myth' is_yandere = False default_alignment = Alignment.neutral abilities = [ ability.KillAbility(num_uses=math.inf, phases=[Phase.day]), ability.VoteKillAbility(num_uses=math.inf, phases=[Phase.day], command_public=True), ]
class NullCarrier(Role): name = 'null carrier' is_yandere = False default_alignment = Alignment.neutral abilities = [ ability.HideAbility(num_uses=math.inf, phases=[Phase.night]), ability.VoteKillAbility(num_uses=math.inf, phases=[Phase.day], command_public=True), ]
class IdiotSavant(Role): name = 'idiot savant' is_yandere = False default_alignment = Alignment.neutral abilities = [ ability.UpgradeAbility(num_uses=math.inf, phases=[Phase.day]), ability.VoteKillAbility(num_uses=math.inf, phases=[Phase.day], command_public=True), ]
class Civilian(Role): name = 'civilian' is_yandere = False default_alignment = Alignment.good abilities = [ ability.VoteKillAbility(num_uses=math.inf, phases=[Phase.day], command_public=True), ] upgrades = [Tokokyohi, Warrior, Janitor, Esper, Witness, Snoop, Nurse]
class Ronin(Role): name = 'ronin' is_yandere = False default_alignment = Alignment.good abilities = [ ability.KillAbility(num_uses=1, phases=[Phase.day]), ability.VoteKillAbility(num_uses=math.inf, phases=[Phase.day], command_public=True), ] upgrades = [Samurai],
class Idol(Role): name = 'idol' is_yandere = False default_alignment = Alignment.good abilities = [ ability.RevealAbility(num_uses=math.inf, phases=[Phase.day]), ability.VoteKillAbility(num_uses=math.inf, phases=[Phase.day], command_public=True), ] upgrades = [Sensei, Ronin],
class Esper(Role): name = 'esper' is_yandere = False default_alignment = Alignment.good abilities = [ ability.SpyAbility(num_uses=1, phases=[Phase.day, Phase.night]), ability.VoteKillAbility(num_uses=math.inf, phases=[Phase.day], command_public=True), ] upgrades = [Spy, DaySpy]
class Witness(Role): name = 'witness' is_yandere = False default_alignment = Alignment.good abilities = [ ability.StalkAbility(num_uses=1, phases=[Phase.night]), ability.VoteKillAbility(num_uses=math.inf, phases=[Phase.day], command_public=True), ] upgrades = [Stalker]
class Sensei(Role): name = 'sensei' is_yandere = False default_alignment = Alignment.good abilities = [ ability.UpgradeAbility(num_uses=1, phases=[Phase.day]), ability.VoteKillAbility(num_uses=math.inf, phases=[Phase.day], command_public=True), ] upgrades = [Shisho],
class Nurse(Role): name = 'nurse' is_yandere = False default_alignment = Alignment.good abilities = [ ability.GuardAbility(num_uses=1, phases=[Phase.night]), ability.VoteKillAbility(num_uses=math.inf, phases=[Phase.day], command_public=True), ] upgrades = [Guardian]
class Detective(Role): name = 'detective' is_yandere = False default_alignment = Alignment.good abilities = [ ability.CheckAbility(num_uses=math.inf, phases=[Phase.night]), ability.VoteKillAbility(num_uses=math.inf, phases=[Phase.day], command_public=True), ] appearances = [ 'yandere', 'yandere spy', 'yandere doppelganger', 'strawberry yandere' ]
class Tsundere(Role): name = 'tsundere' is_yandere = False default_alignment = Alignment.good abilities = [ ability.VoteKillAbility(num_uses=math.inf, phases=[Phase.day], command_public=True), ] upgrades = [Hikikomori] appearances = [ 'yandere', 'psychic yandere', 'yandere ronin', 'yandere senpai', 'yandere doppelganger', 'chocolate yandere' ]
class Trap(Role): name = 'trap' is_yandere = True default_alignment = Alignment.evil abilities = [ ability.VoteKillAbility(num_uses=math.inf, phases=[Phase.day], command_public=True), ] upgrades = [CloakedYandere, BakaRanger] appearances = [ 'civilian', 'tokokyohi', 'hikikomori', 'nurse', 'guardian', 'warrior', 'witness', 'snoop', 'detective' ] safe_to_guard = True
class Snoop(Role): name = 'snoop' is_yandere = False default_alignment = Alignment.good abilities = [ ability.CheckAbility(num_uses=1, phases=[Phase.night]), ability.VoteKillAbility(num_uses=math.inf, phases=[Phase.day], command_public=True), ] upgrades = [Detective] appearances = [ 'yandere', 'psychic yandere', 'yandere doppelganger', 'vanilla yandere', 'yandere senpai' ]