werewolf-1.5.1.1: A game engine for playing werewolf within an arbitrary chat client

Copyright | (c) Henry J. Wylde 2016
License | BSD3
Maintainer | public@hjwylde.com
Safe Haskell | None
Language | Haskell2010

Game.Werewolf.Role

Contents

- Role
  - Instances
    - The Ambiguous
    - The Loners
    - The Villagers
    - The Werewolves

Description

Roles are split into four categories:

- The Ambiguous.
- The Loners.
- The Villagers.
- The Werewolves.

Synopsis

- data Role
- tag :: Lens' Role Text
- name :: Lens' Role Text
- allegiance :: Lens' Role Allegiance
- balance :: Lens' Role Int
- activity :: Lens' Role Activity
- description :: Lens' Role Text
- rules :: Lens' Role Text
- data Allegiance
  - = NoOne
  - | Necromancer
  - | Villagers
  - | Werewolves
- _NoOne :: Prism' Allegiance ()
- _Necromancer :: Prism' Allegiance ()
- _Villagers :: Prism' Allegiance ()
- _Werewolves :: Prism' Allegiance ()
- data Activity
  - = Diurnal
  - | Nocturnal
- _Diurnal :: Prism' Activity ()
- _Nocturnal :: Prism' Activity ()
- allRoles :: [Role]
- restrictedRoles :: [Role]
- orphanRole :: Role
- villageDrunkRole :: Role
- dullahanRole :: Role
- fallenAngelRole :: Role
- necromancerRole :: Role
- zombieRole :: Role
- beholderRole :: Role
- crookedSenatorRole :: Role
- druidRole :: Role
- hunterRole :: Role
- jesterRole :: Role
- lycanRole :: Role
- medusaRole :: Role
- oracleRole :: Role
- protectorRole :: Role
- saintRole :: Role
- scapegoatRole :: Role
- seerRole :: Role
- simpleVillagerRole :: Role
- spitefulVillagerRole :: Role
- trueVillagerRole :: Role
- witchRole :: Role
- alphaWolfRole :: Role
- simpleWerewolfRole :: Role

# Role

data Role Source #

Role definitions require only a few pieces of information.

The `balance` attribute on a role indicates the allegiance it favours. For example, a Simple Werewolf has a balance of -4 while the Seer has a balance of 2. A balance of 0 means it favours neither allegiance.

N.B., role equality is defined on just the `tag` as a role's `allegiance` may change throughout the game.

Instances

Eq Role Source # |
Methods (==) :: Role -> Role -> Bool # (/=) :: Role -> Role -> Bool #
Read Role Source # |
Methods readsPrec :: Int -> ReadS Role # readList :: ReadS [Role] # readPrec :: ReadPrec Role # readListPrec :: ReadPrec [Role] #
Show Role Source # |
Methods showsPrec :: Int -> Role -> ShowS # show :: Role -> String # showList :: [Role] -> ShowS #
Humanise Role Source # |
Methods humanise :: Role -> Text Source #

tag :: Lens' Role Text Source #

name :: Lens' Role Text Source #

allegiance :: Lens' Role Allegiance Source #

balance :: Lens' Role Int Source #

activity :: Lens' Role Activity Source #

description :: Lens' Role Text Source #

rules :: Lens' Role Text Source #

data Allegiance Source #

The `NoOne` allegiance is used for the Loners. It is not used to determine who has won (i.e., if one Loner wins, the others still lose).

Constructors

NoOne |
Necromancer |
Villagers |
Werewolves |

Instances

Eq Allegiance Source # |
Methods (==) :: Allegiance -> Allegiance -> Bool # (/=) :: Allegiance -> Allegiance -> Bool #
Read Allegiance Source # |
Methods readsPrec :: Int -> ReadS Allegiance # readList :: ReadS [Allegiance] # readPrec :: ReadPrec Allegiance # readListPrec :: ReadPrec [Allegiance] #
Show Allegiance Source # |
Methods showsPrec :: Int -> Allegiance -> ShowS # show :: Allegiance -> String # showList :: [Allegiance] -> ShowS #
Humanise Allegiance Source # |
Methods humanise :: Allegiance -> Text Source #

_NoOne :: Prism' Allegiance () Source #

_Necromancer :: Prism' Allegiance () Source #

_Villagers :: Prism' Allegiance () Source #

_Werewolves :: Prism' Allegiance () Source #

data Activity Source #

Defines whether a role is diurnal or nocturnal. I.e., if the role's turn occurs during the day or night.

Constructors

Diurnal |
Nocturnal |

Instances

Eq Activity Source # |
Methods (==) :: Activity -> Activity -> Bool # (/=) :: Activity -> Activity -> Bool #
Read Activity Source # |
Methods readsPrec :: Int -> ReadS Activity # readList :: ReadS [Activity] # readPrec :: ReadPrec Activity # readListPrec :: ReadPrec [Activity] #
Show Activity Source # |
Methods showsPrec :: Int -> Activity -> ShowS # show :: Activity -> String # showList :: [Activity] -> ShowS #
Humanise Activity Source # |
Methods humanise :: Activity -> Text Source #

_Diurnal :: Prism' Activity () Source #

_Nocturnal :: Prism' Activity () Source #

## Instances

allRoles :: [Role] Source #

A list containing all the roles defined in this file.

restrictedRoles :: [Role] Source #

A list containing roles that are restricted to a single instance per `Game`.

      restrictedRoles = allRoles \\ [simpleVillagerRole, simpleWerewolfRole, spitefulVillagerRole, zombieRole]

### The Ambiguous

No-one knows the true nature of the Ambiguous, sometimes not even the Ambiguous themselves!

The Ambiguous are able to change allegiance throughout the game.

orphanRole :: Role Source #

Abandoned by their parents as a child, with no-one wanting to look after another mouth to feed, the Orphan was left to fend for themself. No-one looked twice at the Orphan and even fewer showed kindness towards the lonely child. One day however, one townsperson changed all this. He offered the Orphan food, water and a roof over their head. Grateful for his chairty and affection, the Orphan made him their role model. Pray that no ill should befall their role model, for they are the only one conforming the Orphan as a Villager.

On the first night, the Orphan chooses a player to become their role model. So long as the role model is alive, the Orphan is a Villager. If however the role model is eliminated, then the Orphan becomes a Werewolf.

villageDrunkRole :: Role Source #

Hah, maybe not as liked as the Jester, but the Drunk sure does their fair share of stupid things in the night! No-one knows if they even actually make it home; sometimes people see them sleeping outside the Blacksmith's home, others say they see them wandering towards the woods. It's pointless quizzing the Village Drunk in the morning about their doings; they can never remember what they did!

The Village Drunk is initially aligned with the Villagers.

On the third night the Village Drunk sobers up and is randomly assigned a new alignment, either Villagers or Werewolves.

### The Loners

The Loners look out for themselves and themselves alone.

dullahanRole :: Role Source #

Normally the Dullahan carries their head under one arm, however while amongst the Villagers, they ere on the side of caution and rest it in a more traditional place. The Dullahan rides a black horse as dark as night and hunts down travellers in the countryside. Beware if the Dullahan knows your name, for you are then marked for death and you should avoid them at all /costs.

The Dullahan is given a list of player names at the start of the game. To win, they must eliminate all of them before the end of the game.

fallenAngelRole :: Role Source #

Long ago during the War in Heaven, angels fell from the sky as one by one those that followed Lucifer were defeated. For centuries they lived amongst mortal Villagers as punishment for their sins and wrongdoings. The Fallen Angel was one such being and is now one of the few angels left on Earth. Nothing is worse punishment for them, the Fallen Angel yearns for death to once again be free!

The Fallen Angel wins if they manage to get lynched by the Villagers before the end of the game.

necromancerRole :: Role Source #

The dead are feared among the living; the dead outnumber the living. In most villages the dead remain that way, but not when the Necromancer is present. The Necromancer devoted their life to learning black magic and methods of bringing people back to life. Unfortunately this art is hard to perfect and all they can manage to bring back are soulless Zombies.

Once per game the Necromancer can choose to resurrect all dead players as Zombies. The Zombies are aligned with the Necromancer and they cannot be lynched or devoured.

If the Necromancer is killed, all Zombies die with them.

The Necromancer and Zombies win if they are the last ones alive.

zombieRole :: Role Source #

A loyal follower of the Necromancer. A Zombie has no mind of its own and blindly obeys every command of their master.

A Zombie wins with the Necromancer. They cannot be killed, however they die when the Necromancer dies.

### The Villagers

Fraught with fear of the unseen enemy, the Villagers must work together to determine the truth and eliminate the threat to Fougères. The task before them will not be easy, but a certain few have learnt some tricks over the years that may turn out rather useful.

beholderRole :: Role Source #

Awareness comes easy to the Beholder. They listen to their senses and trust their hunches. Over the years the Beholder has grown to know a certain few of the village just by paying attention. Little cues here and there, the way someone talks, the way they move - it all gives clues as to their true nature and role.

At the start of the game the Beholder is informed the Seer's identity.

crookedSenatorRole :: Role Source #

Never trust a politician. Nor a Crooked Senator for that matter. The Crooked Senator may seem like he has the village's best interests at heart, but let's be honest, when put in a tough situation he looks after no-one but himself. Even when safe, the Crooked Senator may decide to toy with the Villagers' emotions and try pit them against one another.

The Crooked Senator looks at the village votes as they come in.

druidRole :: Role Source #

How honoured we are to be in the presence of such a noble leader. The return of the Druid marks an exceptional time in Fougères's history! Friend of the woodland creatures, practiced philosopher and now, with the help of Ferina their companion, a bane to the Werewolves themselves! My does she have a nose on her, strong enough to sniff out lycanthropes in close proximity! Listen for her grunt and heed her warning for she will not let you down.

Each morning when Ferina wakes from her slumber she will be alert and cautious. If the Druid is next to a Werewolf in the player `circle` then Ferina will grunt in warning.

hunterRole :: Role Source #

A skilled marksman with quick reflexes. In the unfortunate situation that they are jumped and killed unjustly, they let off a shot at their attacker, killing them instantly. The Hunter never misses.

If the Hunter is killed they choose one player, believed to be an attacker, to kill immediately.

jesterRole :: Role Source #

Every village needs a Jester; they're so stupid, but provide so much entertainment! The Jester may not have any special abilities, but at least no-one in the village wants to hurt them.

If the village votes to lynch the Jester, their identity is revealed. The village realise there's no point in burning them and so they are set free.

The Jester continues to play but may no longer vote as no-one can take them seriously.

lycanRole :: Role Source #

Traditionally a Werewolf once transformed loses all memories and personality. Over years of transforming, the Lycan has slowly evolved and learnt how to retain themself. Night after night of devouring with the other Werewolves took its toll. The screams alone were enough to turn the Lycan and make them question their true nature.

The Lycan is aligned with the Villagers, but appears to nature-seeing roles (e.g., the Seer) as a Werewolf.

medusaRole :: Role Source #

A beautiful flirt, the Medusa is aligned with the Villagers but harbours a terrifying secret. During the day they are well known in the village of Fougères for their stunning appearance which captures the eye and love of all the townsfolk. However when their secret takes ahold at sundown, their true self is revealed. Any who gaze upon her true form would see live snakes for hair and the few that further look into her eyes are turned to stone.

If Medusa attracts the attention of a Werewolf during the night and is devoured, the first Werewolf to their left in the player `circle` will catch their gaze and turn to stone, instantly killing the lupine predator.

oracleRole :: Role Source #

Originally rejected by the townsfolk, the Oracle's prophetic divinations has earned trust within the village. With constant precognition - and concern for the future - the Oracle knows the village will only live if they work together.

Each night the Oracle chooses a player to divine. They are then informed of the player's role the following morning. This wisdom is for the Oracle to use to ensure the future of Fougères.

protectorRole :: Role Source #

The Protector is one of the few pure of heart and altruistic Villagers; they are forever putting others needs above their own. Each night they fight against the Werewolves with naught but a sword and shield, potentially saving an innocents life.

Each night the Protector chooses a player deemed worthy of their protection. That player is safe for that night (and only that night) against the Werewolves.

The Protector may not protect the same player two nights in a row.

saintRole :: Role Source #

The Saint, also historically known as a hallow, is recognized as having an exceptional degree of holiness and likeness to God. They are a humble Villager and shine light on these dark times. Extinguishing this light would not be wise

If the Saint is lynched by the village, all who voted for them die.

scapegoatRole :: Role Source #

Werewolves don't just spring up out of the ground! That's where dwarves come from. Clearly someone is to blame for this affliction to Fougères. Unluckily for the Scapegoat, since no-one actually knows who brought them here, the blame is always laid upon them!

If the village's vote ends in a tie, it's the Scapegoat who is eliminated instead of no-one.

In this event, the Scapegoat has one last task to complete: they must choose whom is permitted to vote or not on the next day.

seerRole :: Role Source #

The Seer has the ability to see into fellow townsfolk and determine their true nature. This ability to see is not given out lightly, for certain it is a gift! The visions will always be true, but only for the present as not even the Seer knows what the future holds.

Each night the Seer sees the allegiance of one player of their choice.

simpleVillagerRole :: Role Source #

A simple, ordinary townsperson in every way. Some may be cobblers, others bakers or even nobles. No matter their differences though, the plight of Werewolves in Fougères unites all the Villagers in this unfortunate time.

The Simple Villager has no special abilities, they must use their guile to determine whom among them is not who they say they are.

spitefulVillagerRole :: Role Source #

A simple, ordinary townsperson in every way. Some may be cobblers, others bakers or even nobles. No matter their differences though, the plight of Werewolves in Fougères unites all the Villagers in this unfortunate time.

Yet the Spiteful Villager has no loyalty in the afterlife; whoever causes them harm may find themselves in trouble.

When the Spiteful Villager is killed, they are informed of everyone's roles and may haunt the village as they wish.

trueVillagerRole :: Role Source #

The True Villager has a heart and soul as clear as day! Their allegiance and devotion to the village are beyond reproach. If there is one person whom you should confide in, listen to and trust, it is the True Villager.

At the start of the game the True Villager's identity is revealed.

witchRole :: Role Source #

Somehow forgotten with the coming of the Werewolves, the Witch has a chance to prove themself valuable to the village and maybe abolish the absurd pastime of burning and drowning their cult. The Witch is blessed (or maybe cursed) with the ability to make two powerful potions; one of which heals a victim of the Werewolves, the other poisons a player.

The Witch is called after the Werewolves. They are able to heal and poison one player per game. There is no restriction on using both potions in one night or on healing themself.

### The Werewolves

Hiding in plain sight, the Werewolves are not a small trifle.

alphaWolfRole :: Role Source #

The Alpha Wolf leads the Werewolves in the raids against Fougères each night and not even the Seer can see them coming. If the Werewolves caused the Villagers to question and accuse one another beforehand, the Alpha Wolf eliminates any shred of humanity left. No-one can be trusted anymore and no-one knows the truth.

The Alpha Wolf appears to nature-seeing roles (e.g., the Seer) as a Villager.

simpleWerewolfRole :: Role Source #

The Simple Werewolf is a fearsome lupine, cunning like no other creature that roams the forest. Their origin is unknown, but that matters little, for they present a grave threat to Fougères. While each day they hide in plain sight as an ordinary Villager, each night they transform and devour an innocent. There is little hope left for the village.

A Werewolf may never devour another Werewolf.