vera custer

This commit is contained in:
Alberto Xamin 2020-12-16 19:34:03 +01:00
parent 88f452df8f
commit de303b7eb5
No known key found for this signature in database
GPG Key ID: 4F026F48309500A2
3 changed files with 36 additions and 11 deletions

View File

@ -71,6 +71,14 @@ class BelleStar(Character):
self.desc_eng = "During her turn the green cards of the other players do not work." self.desc_eng = "During her turn the green cards of the other players do not work."
self.icon = '' self.icon = ''
class VeraCuster(Character):
def __init__(self):
super().__init__("Vera Custer", max_lives=3)
self.desc = "Prima di pescare le sue carte può scegliere l'abilità speciale di un altro giocatore fino al prossimo turno."
self.desc_eng = "Before drawing, she may choose the special ability on another alive player. This ability is used until next turn."
self.icon = '🎭'
def all_characters() -> List[Character]: def all_characters() -> List[Character]:
return [ return [
PixiePete(), PixiePete(),
@ -83,6 +91,7 @@ def all_characters() -> List[Character]:
ApacheKid(), ApacheKid(),
SeanMallory(), SeanMallory(),
BelleStar(), BelleStar(),
VeraCuster(),
] ]
#Apache Kid: il suo effetto non conta nei duelli #Apache Kid: il suo effetto non conta nei duelli

View File

@ -30,6 +30,7 @@ class Player:
self.equipment: cs.Card = [] self.equipment: cs.Card = []
self.role: r.Role = None self.role: r.Role = None
self.character: chars.Character = None self.character: chars.Character = None
self.real_character: chars.Character = None
self.lives = 0 self.lives = 0
self.max_lives = 0 self.max_lives = 0
self.game: g = None self.game: g = None
@ -55,6 +56,7 @@ class Player:
self.equipment: cs.Card = [] self.equipment: cs.Card = []
self.role: r.Role = None self.role: r.Role = None
self.character: chars.Character = None self.character: chars.Character = None
self.real_character: chars.Character = None
self.lives = 0 self.lives = 0
self.max_lives = 0 self.max_lives = 0
self.is_my_turn = False self.is_my_turn = False
@ -92,13 +94,24 @@ class Player:
def set_character(self, character: str): def set_character(self, character: str):
print(self.available_characters, character) print(self.available_characters, character)
self.character = next( if self.character == None:
x for x in self.available_characters if x.name == character) self.character = next(
self.available_characters = [] x for x in self.available_characters if x.name == character)
print(f'I {self.name} chose character {self.character.name}') self.real_character = self.character
self.sio.emit('chat_message', room=self.game.name, self.available_characters = []
data=f'_did_choose_character|{self.name}') print(f'I {self.name} chose character {self.character.name}')
self.game.notify_character_selection() self.sio.emit('chat_message', room=self.game.name,
data=f'_did_choose_character|{self.name}')
self.game.notify_character_selection()
elif self.real_character and isinstance(self.real_character, chd.VeraCuster):
self.character = next(
x for x in self.available_characters if x.name == character)
self.available_characters = []
self.sio.emit('chat_message', room=self.game.name,
data=f'_did_choose_character|{self.name}')
self.pending_action = PendingAction.DRAW
self.notify_self()
def prepare(self): def prepare(self):
self.max_lives = self.character.max_lives + self.role.health_mod self.max_lives = self.character.max_lives + self.role.health_mod
@ -281,7 +294,10 @@ class Player:
if any([isinstance(c, cs.Dinamite) or isinstance(c, cs.Prigione) for c in self.equipment]): if any([isinstance(c, cs.Dinamite) or isinstance(c, cs.Prigione) for c in self.equipment]):
self.pending_action = PendingAction.PICK self.pending_action = PendingAction.PICK
else: else:
self.pending_action = PendingAction.DRAW if isinstance(self.real_character, chd.VeraCuster):
self.set_available_character([p.character for p in self.game.players if p != self])
else:
self.pending_action = PendingAction.DRAW
self.notify_self() self.notify_self()
def draw(self, pile): def draw(self, pile):

View File

@ -1,7 +1,7 @@
certifi==2020.11.8 certifi==2020.11.8
dnspython==1.16.0 dnspython==1.16.0
eventlet==0.29.1 eventlet==0.30.0
greenlet==0.4.17 greenlet==0.4.17
python-engineio==3.13.2 python-engineio==4.0.0
python-socketio==4.6.0 python-socketio==5.0.3
six==1.15.0 six==1.15.0