wild draw 4 fixes
This commit is contained in:
parent
6830ed13a3
commit
c08c35ca34
|
|
@ -12,7 +12,6 @@
|
|||
|
||||
import re
|
||||
import random
|
||||
|
||||
import supybot.conf as conf
|
||||
import supybot.utils as utils
|
||||
from supybot.commands import *
|
||||
|
|
@ -233,7 +232,7 @@ class Uno(callbacks.Plugin):
|
|||
else:
|
||||
pass
|
||||
|
||||
def _uno_is_valid_play(self, table, card, discard, wildcolor):
|
||||
def _uno_is_valid_play(self, table, card, discard):
|
||||
if card=='Wild':
|
||||
# Wild is always a valid play for now
|
||||
return True
|
||||
|
|
@ -242,7 +241,7 @@ class Uno(callbacks.Plugin):
|
|||
if 'Wild' not in discard:
|
||||
discardcolor=discard.split(' ',1)[0]
|
||||
else:
|
||||
discardcolor=wildcolor
|
||||
discardcolor=self.game[table].get('wildcolor')
|
||||
for c in self.game[table]['players'][turnplayer]['hand']:
|
||||
if discardcolor in c:
|
||||
return False
|
||||
|
|
@ -547,17 +546,16 @@ class Uno(callbacks.Plugin):
|
|||
|
||||
nick=list(self.game[table]['players'].keys())[self.game[table]['turn']]
|
||||
discard=self.game[table]['discard'][-1]
|
||||
wildcolor = self.game[table].get('wildcolor')
|
||||
novalid=True
|
||||
for c in self.game[table]['players'][nick]['hand']:
|
||||
if self._uno_is_valid_play(table, c, discard, wildcolor)==True:
|
||||
if self._uno_is_valid_play(table, c, discard)==True:
|
||||
novalid=False
|
||||
if novalid==True:
|
||||
# draw a card
|
||||
card=self._uno_draw_card(table, nick)
|
||||
self.game[table]['players'][nick]['hasdrawn']=True
|
||||
|
||||
if self._uno_is_valid_play(table, card, discard, wildcolor)==True:
|
||||
if self._uno_is_valid_play(table, card, discard)==True:
|
||||
# always play the card if possible
|
||||
ncards=len(self.game[table]['players'][nick]['hand'])
|
||||
irc.reply("%s draws a card, and plays it; It's a %s (%s cards left in hand)." % (nick, card, ncards), to=channel)
|
||||
|
|
@ -570,7 +568,7 @@ class Uno(callbacks.Plugin):
|
|||
card=''
|
||||
else:
|
||||
# pick a random card
|
||||
playablecards=[c for c in self.game[table]['players'][nick]['hand'] if self._uno_is_valid_play(table, c, discard, wildcolor)==True or 'Wild' in c]
|
||||
playablecards=[c for c in self.game[table]['players'][nick]['hand'] if self._uno_is_valid_play(table, c, discard)==True or 'Wild' in c]
|
||||
card=random.choice(playablecards)
|
||||
if card=='Wild' or card=='Wild Draw 4':
|
||||
# Just do dumb blind color choice
|
||||
|
|
@ -669,11 +667,10 @@ class Uno(callbacks.Plugin):
|
|||
text=text.strip()
|
||||
|
||||
discard=self.game[table]['discard'][-1]
|
||||
wildcolor=self.game[table].get('wildcolor')
|
||||
novalid=True
|
||||
|
||||
for c in self.game[table]['players'][nick]['hand']:
|
||||
if self._uno_is_valid_play(table, c, discard, wildcolor)==True:
|
||||
if self._uno_is_valid_play(table, c, discard)==True:
|
||||
novalid=False
|
||||
|
||||
if text.lower()=='draw':
|
||||
|
|
@ -687,7 +684,7 @@ class Uno(callbacks.Plugin):
|
|||
# Draw a card
|
||||
c=self.game[table]['deck'].pop(random.randint(0,len(self.game[table]['deck'])-1))
|
||||
self.game[table]['players'][nick]['hand'].append(c)
|
||||
if self._uno_is_valid_play(table, c, discard, wildcolor)==True:
|
||||
if self._uno_is_valid_play(table, c, discard)==True:
|
||||
self.reply(irc, 'You draw a %s from the draw pile. You can choose not to play this card using "%suno play done"' % (c, self.prefixChar), to=nick, notice=True, private=True)
|
||||
self.game[table]['players'][nick]['hasdrawn']=True
|
||||
return
|
||||
|
|
@ -753,7 +750,7 @@ class Uno(callbacks.Plugin):
|
|||
return
|
||||
|
||||
# check for illegal move
|
||||
if self._uno_is_valid_play(table, card, discard, wildcolor)==False:
|
||||
if self._uno_is_valid_play(table, card, discard)==False:
|
||||
irc.reply("You can't play that card.")
|
||||
return
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue