EnumSelectorまわり - aharalabMeiji/fireplaceAharaLab GitHub Wiki

selector.py のAttrValue(SelectorEntityValue)まわり

selector.py には AttrValue(SelectorEntityValue) というクラスがあり、これを用いて、たとえば

      ARMOR = AttrValue(GameTag.ARMOR)
      ATK = AttrValue(GameTag.ATK)
      CONTROLLER = AttrValue(GameTag.CONTROLLER)
      MAX_HEALTH = AttrValue(GameTag.HEALTH)
      CURRENT_HEALTH = AttrValue("health")
      COST = AttrValue(GameTag.COST)
      DAMAGE = AttrValue(GameTag.DAMAGE)

などと定義されている。これらのセレクターはカード実装で頻繁に現れる。これらのゲームタグに入っている「値」を返しているようではあるが、値は

      	def value(self, entity, source):
      		if isinstance(self.tag, str):
      			return getattr(entity, self.tag, 0)
      		return entity.tags.get(self.tag, 0)

と定義されている。

      class SCH_537:#OK
      	"""Trick Totem	Rare"""
      	#At the end of your turn, cast a random spell that costs (3) or less.
      	events = OWN_TURN_END.on(CastSpell(RANDOM(SPELL + (COST==3)))) 

こんな感じ。