カード(発見)の効果に関する考察 - aharalabMeiji/fireplaceAharaLab GitHub Wiki

定義

DISCOVERの定義は

DISCOVER = lambda *args: Discover(CONTROLLER, *args)

である。使用者が発見するためのアーギュメントを右辺に書けばよい。

用例1

class BT_321:
	"""Netherwalker"""
	play = DISCOVER(RandomCollectible(race=Race.DEMON))

(意味)悪魔属性のカードを発見する。

class BT_022:
	"""Apexis Smuggler"""
	events = Play(CONTROLLER, SECRET).after(DISCOVER(RandomSpell()))

(意味)秘策を用いたのち、呪文カードを発見する。

class BT_021:
	"""Font of Power"""
	powered_up = -FindDuplicates(FRIENDLY_DECK)
	play = powered_up & (Give(CONTROLLER, RandomMinion(card_class=CardClass.MAGE)) * 3) | (
		DISCOVER(RandomMinion(card_class=CardClass.MAGE)))

(意味)自分のデッキに重複がない場合、メイジカードを3枚得るか、さもなくばメイジカードを発見する。

class TB_010:
	"""Deckbuilding Enchant"""
	events = (
		OWN_TURN_BEGIN.on(DISCOVER(RandomCollectible())),
		Play(CONTROLLER).on(Shuffle(CONTROLLER, Copy(Play.CARD))),
		OWN_TURN_END.on(Shuffle(CONTROLLER, FRIENDLY_HAND))
	)

(意味)自分のターンが始まるときに、入手可能カードを発見し、カードを使用するときそのカードのコピーをデッキに加え、自分のターンが終わるときに自分のハンドと同じものをデッキに加えて混ぜる。

class CFM_605:
	"""Drakonid Operative"""
	powered_up = HOLDING_DRAGON

	def play(self):
		decklist = [i.id for i in self.controller.opponent.deck]
		if decklist:
			yield HOLDING_DRAGON & DISCOVER(RandomID(*decklist))

(意味)相手のデッキが空でなければ、かつドラゴンを持っているならば、相手のデッキの任意のカードを発見する。

class CFM_313:
	"""Finders Keepers"""
	play = DISCOVER(RandomCollectible(card_class=CardClass.SHAMAN, overload=True))

(意味)シャーマンの入手可能カードでオーバーロードであるようなカードを発見する。(1点overload)

class CFM_940:
	"""I Know a Guy"""
	play = DISCOVER(RandomMinion(taunt=True))

(意味)挑発をもつミニオンカードを発見する

class KAR_062:
	"""Netherspite Historian"""
	powered_up = HOLDING_DRAGON
	play = powered_up & DISCOVER(RandomDragon())

(意味)ドラゴンを持っているとき、ドラゴンのカードを発見する。

課題

断末魔をもつカードを発見する、に対しては

	play = DISCOVER(RandomMinion(deathrattle=True))

でOK