2017-12-26 15:33:05 -06:00
|
|
|
from card import Card
|
|
|
|
|
from random import randint
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Militia(Card):
|
|
|
|
|
def effect(self):
|
|
|
|
|
for player in self._Card__owner.get_table().get_players():
|
|
|
|
|
if self._Card__owner != player:
|
|
|
|
|
player.print_hand()
|
|
|
|
|
print("Player " + str(self._Card__owner.get_table().get_players().index(player)) + ", you MUST discard "
|
|
|
|
|
"down to 3 cards.")
|
|
|
|
|
self.__force_discard(self._Card__owner.get_std_chances(), player)
|
|
|
|
|
|
|
|
|
|
def __force_discard(self, chances, player):
|
2017-12-26 16:57:31 -06:00
|
|
|
if player.get_hand().get_remaining() > 3 and chances > 0:
|
2017-12-26 15:33:05 -06:00
|
|
|
hand_index = int(input("\nPlease identify a card from hand you would like to discard by providing "
|
2017-12-26 16:57:31 -06:00
|
|
|
"its index 0 to " + str(player.get_hand().get_remaining() - 1) + ": "))
|
2017-12-26 15:33:05 -06:00
|
|
|
|
2017-12-26 16:57:31 -06:00
|
|
|
if chances <= 0:
|
|
|
|
|
print("Somehow chances ran out, you'll randomly discard a card now.")
|
|
|
|
|
self.__force_discard(chances, player)
|
|
|
|
|
elif 0 > hand_index or hand_index >= self._Card__owner.get_hand().get_remaining():
|
|
|
|
|
print("Acceptable inputs range from 0 to " + str(player.get_hand().get_remaining() - 1) +
|
|
|
|
|
". 1 chance lost.")
|
|
|
|
|
self.__force_discard(chances - 1, player)
|
2017-12-26 15:33:05 -06:00
|
|
|
else:
|
|
|
|
|
print("Discarding " + player.get_hand().get_card(hand_index).get_name() + ".")
|
|
|
|
|
player.discard_from_hand(hand_index)
|
2017-12-26 16:57:31 -06:00
|
|
|
player.print_hand()
|
2017-12-26 15:33:05 -06:00
|
|
|
self.__force_discard(chances, player)
|
|
|
|
|
elif self._Card__owner.get_hand().get_remaining() > 3 and chances < 0:
|
|
|
|
|
print("You're out of chances to select a valid card to discard, randomly selecting for you.")
|
|
|
|
|
player.discard_from_hand(randint(0, self.__hand.get_remaining() - 1))
|
|
|
|
|
|