fix for green cards and equipment

the cards could be overwritten before
This commit is contained in:
Giulio 2020-12-22 00:29:49 +01:00
parent 79d75374f2
commit 623afcc201
3 changed files with 63 additions and 28 deletions

View File

@ -58,12 +58,7 @@ class Card(ABC):
if not has_weapon: if not has_weapon:
player.equipment.append(self) player.equipment.append(self)
elif self.name in [c.name for c in player.equipment if not isinstance(c, Dinamite)]: elif self.name in [c.name for c in player.equipment if not isinstance(c, Dinamite)]:
for i in range(len(player.equipment)): return False
print('tipo',type(self))
if type(player.equipment[i]) == type(self):
player.game.deck.scrap(player.equipment[i])
player.equipment[i] = self
break
else: else:
player.equipment.append(self) player.equipment.append(self)
if against: if against:
@ -77,6 +72,9 @@ class Card(ABC):
def use_card(self, player): def use_card(self, player):
pass pass
def is_duplicate_card(self, player):
return self.name in [c.name for c in player.equipment]
class Barile(Card): class Barile(Card):
def __init__(self, suit, number): def __init__(self, suit, number):

View File

@ -152,8 +152,11 @@ class Bibbia(Schivata):
pass pass
return False return False
else: else:
if not self.is_duplicate_card(player):
player.equipment.append(self) player.equipment.append(self)
return True return True
else:
return False
class Cappello(Mancato): class Cappello(Mancato):
def __init__(self, suit, number): def __init__(self, suit, number):
@ -168,8 +171,11 @@ class Cappello(Mancato):
pass pass
return False return False
else: else:
if not self.is_duplicate_card(player):
player.equipment.append(self) player.equipment.append(self)
return True return True
else:
return False
class PlaccaDiFerro(Cappello): class PlaccaDiFerro(Cappello):
def __init__(self, suit, number): def __init__(self, suit, number):
@ -195,8 +201,11 @@ class Pugnale(Pugno):
if self.can_be_used_now: if self.can_be_used_now:
return super().play_card(player, against=against) return super().play_card(player, against=against)
else: else:
if not self.is_duplicate_card(player):
player.equipment.append(self) player.equipment.append(self)
return True return True
else:
return False
class Derringer(Pugnale): class Derringer(Pugnale):
def __init__(self, suit, number): def __init__(self, suit, number):
@ -212,8 +221,11 @@ class Derringer(Pugnale):
player.hand.append(player.game.deck.draw()) player.hand.append(player.game.deck.draw())
return super().play_card(player, against=against) return super().play_card(player, against=against)
else: else:
if not self.is_duplicate_card(player):
player.equipment.append(self) player.equipment.append(self)
return True return True
else:
return False
def use_card(self, player): def use_card(self, player):
player.hand.append(player.game.deck.draw()) player.hand.append(player.game.deck.draw())
@ -235,8 +247,11 @@ class Borraccia(Card):
player.notify_self() player.notify_self()
return True return True
else: else:
if not self.is_duplicate_card(player):
player.equipment.append(self) player.equipment.append(self)
return True return True
else:
return False
class PonyExpress(WellsFargo): class PonyExpress(WellsFargo):
def __init__(self, suit, number): def __init__(self, suit, number):
@ -250,8 +265,11 @@ class PonyExpress(WellsFargo):
if self.can_be_used_now: if self.can_be_used_now:
return super().play_card(player, against) return super().play_card(player, against)
else: else:
if not self.is_duplicate_card(player):
player.equipment.append(self) player.equipment.append(self)
return True return True
else:
return False
class Howitzer(Gatling): class Howitzer(Gatling):
def __init__(self, suit, number): def __init__(self, suit, number):
@ -265,8 +283,11 @@ class Howitzer(Gatling):
if self.can_be_used_now: if self.can_be_used_now:
return super().play_card(player, against) return super().play_card(player, against)
else: else:
if not self.is_duplicate_card(player):
player.equipment.append(self) player.equipment.append(self)
return True return True
else:
return False
class CanCan(CatBalou): class CanCan(CatBalou):
def __init__(self, suit, number): def __init__(self, suit, number):
@ -280,8 +301,11 @@ class CanCan(CatBalou):
if self.can_be_used_now: if self.can_be_used_now:
return super().play_card(player, against) return super().play_card(player, against)
else: else:
if not self.is_duplicate_card(player):
player.equipment.append(self) player.equipment.append(self)
return True return True
else:
return False
class Conestoga(Panico): class Conestoga(Panico):
def __init__(self, suit, number): def __init__(self, suit, number):
@ -297,8 +321,11 @@ class Conestoga(Panico):
if self.can_be_used_now: if self.can_be_used_now:
return super().play_card(player, against) return super().play_card(player, against)
else: else:
if not self.is_duplicate_card(player):
player.equipment.append(self) player.equipment.append(self)
return True return True
else:
return False
class Pepperbox(Bang): class Pepperbox(Bang):
def __init__(self, suit, number): def __init__(self, suit, number):
@ -316,8 +343,11 @@ class Pepperbox(Bang):
return True return True
return False return False
else: else:
if not self.is_duplicate_card(player):
player.equipment.append(self) player.equipment.append(self)
return True return True
else:
return False
class FucileDaCaccia(Card): class FucileDaCaccia(Card):
def __init__(self, suit, number): def __init__(self, suit, number):
@ -336,8 +366,11 @@ class FucileDaCaccia(Card):
return True return True
return False return False
else: else:
if not self.is_duplicate_card(player):
player.equipment.append(self) player.equipment.append(self)
return True return True
else:
return False
def get_starting_deck() -> List[Card]: def get_starting_deck() -> List[Card]:
return [ return [

View File

@ -503,6 +503,10 @@ class Player:
self.game.deck.scrap(card) self.game.deck.scrap(card)
else: else:
self.equipment.insert(hand_index-len(self.hand), card) self.equipment.insert(hand_index-len(self.hand), card)
elif card.is_equipment or (card.usable_next_turn and not card.can_be_used_now):
if not did_play_card:
self.hand.insert(hand_index, card)
print("did play card:", did_play_card)
self.notify_self() self.notify_self()
def choose(self, card_index): def choose(self, card_index):