# PyWerwolf Trying to rebuild [https://github.com/foin137/werwolfonline.eu](https://github.com/foin137/werwolfonline.eu) in python ## Phases of the game ```plantuml @startuml(id=overview) hide empty description state WaitingForPlayers [*] --> WaitingForPlayers: Created WaitingForPlayers --> StartGame: Start && ready StartGame : Assign Player Roles StartGame : Show Introduction StartGame --> MainPhaseNight : all ready state MainPhaseNight { !include https://gitea.d1v3.de/matthias/pywerewolf/raw/branch/master/README.md!TheNight } MainPhaseNight --> Award: No Villagers left MainPhaseNight --> MainPhaseDay: Some Villagers left state MainPhaseDay { !include https://gitea.d1v3.de/matthias/pywerewolf/raw/branch/master/README.md!TheDay } MainPhaseDay --> Award: No Werewolfes left MainPhaseDay --> MainPhaseNight: Some Werewolfes left @enduml ``` ```plantuml @startuml(id=TheNight) hide empty description [*] --> NightPhaseCupin: NightPhaseCupin --> InformLovedOnes: Cupin selected InformLovedOnes --> NightPhaseMain: ack NightPhaseCupin --> NightPhaseMain : Cupin already selected or No Cupin ' state NightPhaseCupinEnd <> ' NightPhaseCupin --> WaitToContinueCupin: !Cupin ' NightPhaseCupin --> SelectLovedOnes: Cupin ' WaitToContinueCupin --> NightPhaseCupinEnd ' SelectLovedOnes --> NightPhaseCupinEnd: selected and confirmed loved ones ' state NightPhaseLovedOnes <> ' state NightPhaseLovedOnesEnd <> ' NightPhaseCupinEnd --> NightPhaseLovedOnes ' NightPhaseLovedOnes --> LovedOnesAwake: Selected Loved Ones ' NightPhaseLovedOnes --> WaitForLovedOnes: other ' LovedOnesAwake --> NightPhaseLovedOnesEnd: ready ' WaitForLovedOnes --> NightPhaseLovedOnesEnd ' ' NightPhaseLovedOnesEnd --> NightPhaseMain : all ready state NightPhaseMain NightPhaseMain --> NightPhaseLate : Witch/Leaderwolf &&\nvoted &&\nactions done and all ready state NightPhaseLate NightPhaseMain --> [*]: no Witch/Leaderwolf &&\nvoted &&\nactions done and all ready NightPhaseLate --> [*]: actions taken @enduml ``` ```plantuml @startuml(id=TheDay) hide empty description [*] --> ShowDead: Done ShowDead: Show the Dead of the night ShowDead --> Election: No Major Election --> Discussion: Major elected ShowDead --> Discussion: all ready || major ready Discussion --> Accuse: time is up / major forwarded Accuse --> Poll : Accuse ok Poll --> ShootTheConvict: Poll successfull Poll --> Voting: Poll unsuccessfull Voting --> ShootTheConvict: Voting Completed ShootTheConvict --> [*]: Done @enduml ``` ```plantuml @startuml(id=NightPhaseMain) hide empty description state NightPhaseMainStart <> [*] --> NightPhaseMainStart NightPhaseMainStart --> SelectVictim: Werewolfes || Spy NightPhaseMainStart --> SelectIdentity: Seer NightPhaseMainStart --> SelectProtectee: Protector NightPhaseMainStart --> SeeWerewolfes: ParanormalInvestigator NightPhaseMainStart --> Sleep: Villager state NightPhaseMainEnd <> SelectVictim --> NightPhaseMainEnd: Werewolfes || Spy SelectIdentity --> NightPhaseMainEnd: Done SelectProtectee --> NightPhaseMainEnd: Done SeeWerewolfes --> NightPhaseMainEnd: Done Sleep --> NightPhaseMainEnd: Ready NightPhaseMainEnd --> [*] @enduml ``` ```plantuml @startuml(id=NightPhaseLate) hide empty description state NightPhaseLateStart <> [*] --> NightPhaseLateStart state "Witch selects\nHealing or Poison" as SelectHealOrPoison state "Leaderwolf selects victim\nfor conversion" as SelectLeaderVictim NightPhaseLateStart --> SelectHealOrPoison: Witch NightPhaseLateStart --> SelectLeaderVictim: Leaderwolf NightPhaseLateStart --> SleepAgain: Villager state NightPhaseLateEnd <> SelectHealOrPoison --> NightPhaseLateEnd: Selection finished SelectHealOrPoison -left-> SelectHealOrPoison: Next selection SelectLeaderVictim --> NightPhaseLateEnd: Done SleepAgain --> NightPhaseLateEnd NightPhaseLateEnd --> [*] @enduml ```