def can_do_action(self, msg_fn=None): super_result = super().can_do_action(msg_fn) if super_result == self.Inactive: return super_result if any(Race.Demon in e.race for e in ext.collect_all(self, oop=False)): return self.Active else: if msg_fn: msg_fn('No valid target, I can\'t use it!') return self.Inactive
def run_battlecry(self, target, **kwargs): return [ std_events.DistributedDamage( self.game, self, 3, collect_fn=lambda: ext.collect_all(self, player_id=1 - self. player_id, ignore_dead=True, except_list=(self, )), ) ]
def process(self, event: respond[0]): if event.card is not self.owner: return [] targets = ext.collect_all(self, except_self=False, oop=True) return [std_events.AreaDamage(self.game, self.owner, targets, [2 for _ in targets])]
def run_battlecry(self, target, **kwargs): targets = ext.collect_all(self, oop=True, except_list=(self,)) return [std_events.AreaDamage(self.game, self, targets, [1 for _ in targets])]
def run(self, target, **kwargs): targets = ext.collect_all(self, oop=True) return [std_events.AreaDamage(self.game, self, targets, [self.dh_values[0] for _ in targets])]
def run_battlecry(self, target, **kwargs): targets = ext.collect_all(self, oop=True, except_list=(self, )) return [ std_events.AreaDamage(self.game, self, targets, [1 for _ in targets]) ]
def run(self, target, **kwargs): targets = ext.collect_all(self, oop=True) return [ std_events.AreaDamage(self.game, self, targets, [self.dh_values[0] for _ in targets]) ]
def process(self, event: respond[0]): if event.card is not self.owner: return [] targets = ext.collect_all(self, oop=True) return [std_events.AreaDamage(self.game, self.owner, targets, [2 for _ in targets])]