Dutch Will

This commit is contained in:
Alberto Xamin 2021-06-17 15:45:20 +02:00
parent e86de193c7
commit 28555509a3
No known key found for this signature in database
GPG Key ID: 4F026F48309500A2
3 changed files with 24 additions and 0 deletions

View File

@ -1,4 +1,5 @@
from abc import ABC, abstractmethod
from bang.expansions import *
from typing import List
class Character(ABC):
@ -158,4 +159,6 @@ def all_characters(expansions: List[str]):
]
if 'dodge_city' in expansions:
base_chars.extend(DodgeCity.get_characters())
if 'gold_rush' in expansions:
base_chars.extend(GoldRush.get_characters())
return base_chars

View File

@ -7,3 +7,8 @@ class DodgeCity():
def get_cards():
from bang.expansions.dodge_city import cards
return cards.get_starting_deck()
class GoldRush():
def get_characters():
from bang.expansions.gold_rush import characters
return characters.all_characters()

View File

@ -401,6 +401,12 @@ class Player:
self.choose_text = 'choose_card_to_get'
self.pending_action = PendingAction.CHOOSE
self.notify_self()
elif self.character.check(self.game, grch.DutchWill):
self.is_drawing = True
self.available_cards = [self.game.deck.draw() for i in range(2)]
self.choose_text = 'choose_card_to_get'
self.pending_action = PendingAction.CHOOSE
self.notify_self()
elif self.character.check(self.game, chd.PatBrennan) and type(pile) == str and pile != self.name and pile in self.game.players_map and len(self.game.get_player_named(pile).equipment) > 0:
self.is_drawing = True
self.available_cards = self.game.get_player_named(pile).equipment
@ -747,6 +753,16 @@ class Player:
self.pending_action = PendingAction.PLAY
self.manette()
self.notify_self()
elif self.is_drawing and self.character.check(self.game, grch.DutchWill):
self.hand.append(self.available_cards.pop(card_index))
if self.game.check_event(ceh.IlTreno) or len([c for c in self.gold_rush_equipment if isinstance(c, grc.Piccone)]) > 0:
self.hand.append(self.available_cards.pop(0))
else:
self.game.deck.scrap(self.available_cards.pop(0), True)
self.gold_nuggets += 1
self.is_drawing = False
self.pending_action = PendingAction.PLAY
self.notify_self()
elif self.is_drawing and self.character.check(self.game, chd.PatBrennan):
self.is_drawing = False
card = self.available_cards.pop(card_index)