code: def play(self, target=None, index=None, choose=None):
  		
  		if choose:
  			if self.must_choose_one:
  				choose = card = self.choose_cards.filter(id=choose)[0]
  				self.log("%r: choosing %r", self, choose)
  			else:
  				raise InvalidAction("%r cannot be played with choice %r" % (self, choose))
  		else:
  			if self.must_choose_one:
  				raise InvalidAction("%r requires a choice (one of %r)" % (self, self.choose_cards))
  			card = self
  		if not self.is_playable():
  			raise InvalidAction("%r isn't playable." % (self))
  		if card.requires_target():
  			if not target:
  				raise InvalidAction("%r requires a target to play." % (self))
  			elif target not in self.play_targets:
  				raise InvalidAction("%r is not a valid target for %r." % (target, self))
  		elif target:
  			self.logger.warning("%r does not require a target, ignoring target %r", self, target)
  		self.game.play_card(self, target, index, choose)
  		return self
docs: Queue a Play action on the card.