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 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 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 YandereSpy(Role): name = 'yandere spy' is_yandere = True default_alignment = Alignment.evil abilities = [ ability.SpyAbility(num_uses=math.inf, 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 CloakedPsychicYandere(Role): name = 'cloaked 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), ] appearances = [ 'civilian', 'dayspy', 'tokokyohi', 'hikikomori', 'nurse', 'guardian', 'warrior', 'esper', 'spy', 'shogun' ] safe_to_guard = True