public override void RemovedFrom(DeckLocation location, Player player)
		{
			base.RemovedFrom(location, player);
			if (_CardPutIntoPlayEventHandler != null)
				player.CardPutIntoPlay -= _CardPutIntoPlayEventHandler;
			_CardPutIntoPlayEventHandler = null;
		}
		public override void Play(Player player)
		{
			base.Play(player);

			IEnumerator<Player> enumerator = player._Game.GetPlayersStartingWithEnumerator(player);
			enumerator.MoveNext();
			while (enumerator.MoveNext())
			{
				Player attackee = enumerator.Current;
				// Skip if the attack is blocked (Moat, Lighthouse, etc.)
				if (this.IsAttackBlocked[attackee])
					continue;

				Choice choice = new Choice("Choose cards to discard.  You must discard down to 4 cards in hand", this, attackee.Hand, attackee, false, attackee.Hand.Count - 4, attackee.Hand.Count - 4);
				ChoiceResult result = attackee.MakeChoice(choice);
				attackee.Discard(DeckLocation.Hand, result.Cards);
			}

			if (_CardPutIntoPlayEventHandler != null)
				player.CardPutIntoPlay -= _CardPutIntoPlayEventHandler;
			_CardPutIntoPlayEventHandler = new Player.CardPutIntoPlayEventHandler(ActivePlayer_CardPutIntoPlay);
			player.CardPutIntoPlay += _CardPutIntoPlayEventHandler;
		}