254 lines
9.3 KiB
C#
254 lines
9.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
|
|
namespace Wolf
|
|
{
|
|
internal class Player
|
|
{
|
|
public string Name = "";
|
|
public int? id;
|
|
public Role role;
|
|
public bool isAlive = true;
|
|
public List<Tag> tags = new List<Tag>();
|
|
|
|
public Role PlayerRole
|
|
{
|
|
get { return role; }
|
|
set { role = value; }
|
|
}
|
|
|
|
|
|
public enum Role
|
|
{
|
|
werewolf, //wants to kill all villagers
|
|
villager, // wants to kill all werewolves
|
|
seer, //can check one player per night if they are a werewolf or not
|
|
witch, //has one potion to save a player from death and one potion to kill a player
|
|
amor, // shoots two players with arrows at the beginning of the game, those players become lovers and win together if one of them dies
|
|
//thief, // can swap their role with another player at the beginning of the game
|
|
hunter, // if the hunter dies, they can choose to kill another player with them
|
|
littleGirl // can peek during the night, but if they are caught by the werewolves, they die immediately
|
|
}
|
|
|
|
public enum Tag
|
|
{
|
|
lover,
|
|
}
|
|
|
|
public Player(string name, int id)
|
|
{
|
|
Name = name;
|
|
this.id = id;
|
|
}
|
|
|
|
public static List<Role> GetRoleAssignmentForPlayerCount(int playerCount)
|
|
{
|
|
List<Role> roles = new List<Role>();
|
|
|
|
switch (playerCount)
|
|
{
|
|
case 6:
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.seer);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
break;
|
|
|
|
case 7:
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.seer);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
break;
|
|
|
|
case 8:
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.seer);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
break;
|
|
|
|
case 9:
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.seer);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.hunter);
|
|
roles.Add(Role.amor);
|
|
break;
|
|
|
|
case 10:
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.seer);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.littleGirl);
|
|
roles.Add(Role.hunter);
|
|
roles.Add(Role.amor);
|
|
break;
|
|
|
|
case 11:
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.seer);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.witch);
|
|
roles.Add(Role.hunter);
|
|
roles.Add(Role.amor);
|
|
break;
|
|
|
|
case 12:
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.seer);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.littleGirl);
|
|
roles.Add(Role.hunter);
|
|
roles.Add(Role.amor);
|
|
roles.Add(Role.villager);
|
|
break;
|
|
|
|
case 13:
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.seer);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.witch);
|
|
roles.Add(Role.hunter);
|
|
roles.Add(Role.amor);
|
|
roles.Add(Role.villager);
|
|
break;
|
|
|
|
case 14:
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.seer);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.littleGirl);
|
|
roles.Add(Role.hunter);
|
|
roles.Add(Role.amor);
|
|
roles.Add(Role.villager);
|
|
break;
|
|
|
|
case 15:
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.seer);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.witch);
|
|
roles.Add(Role.hunter);
|
|
roles.Add(Role.amor);
|
|
roles.Add(Role.villager);
|
|
break;
|
|
|
|
case 16:
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.seer);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.witch);
|
|
roles.Add(Role.littleGirl);
|
|
roles.Add(Role.hunter);
|
|
roles.Add(Role.amor);
|
|
roles.Add(Role.villager);
|
|
break;
|
|
|
|
case 17:
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.seer);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.witch);
|
|
roles.Add(Role.littleGirl);
|
|
roles.Add(Role.hunter);
|
|
roles.Add(Role.amor);
|
|
roles.Add(Role.villager);
|
|
break;
|
|
|
|
case 18:
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.werewolf);
|
|
roles.Add(Role.seer);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.villager);
|
|
roles.Add(Role.witch);
|
|
roles.Add(Role.littleGirl);
|
|
roles.Add(Role.hunter);
|
|
roles.Add(Role.amor);
|
|
roles.Add(Role.villager);
|
|
break;
|
|
|
|
default:
|
|
throw new ArgumentException($"Spieleranzahl {playerCount} wird nicht unterstützt. Mindestens 6 Spieler erforderlich.");
|
|
}
|
|
|
|
return roles;
|
|
}
|
|
}
|
|
}
|