def is_valid(self): src = self.source tags = src.tags if tags['turn_count'] <= tags['incite_tag']: return False tgt, victim = self.target_list Pindian(src, tgt).action_shootdown_exception() return LaunchCard(tgt, [victim], InciteAttack(tgt)).can_fire()
def is_valid(self): tags = self.source.tags if tags['suika_failed'] >= tags['turn_count']: raise HeavyDrinkerFailed if self.target in tags['suika_target']: raise ActionLimitExceeded Pindian(self.source, self.target).action_shootdown_exception() return True
def apply_action(self): src, tgt = self.source, self.target g = Game.getgame() src.tags['suika_target'].append(tgt) if g.process_action(Pindian(src, tgt)): g.process_action(LaunchCard(src, [src], HeavyDrinkerWine(src), bypass_check=True)) g.process_action(LaunchCard(tgt, [tgt], HeavyDrinkerWine(src), bypass_check=True)) else: src.tags['suika_failed'] = src.tags['turn_count'] return True
def apply_action(self): src = self.source tags = src.tags tgt, victim = self.target_list tags['incite_tag'] = tags['turn_count'] g = Game.getgame() if g.process_action(Pindian(src, tgt)): g.process_action(LaunchCard(tgt, [victim], InciteAttack(tgt))) else: if user_input([tgt], ChooseOptionInputlet(self, (False, True))): g.process_action(LaunchCard(tgt, [src], InciteFailAttack(tgt))) else: g.process_action(InciteSilentFailAction(src, tgt)) return True
def apply_action(self): src, tgt = self.source, self.target g = Game.getgame() g.process_action(DrawCards(src, 1)) assert tgt.life <= 0 if not tgt.cards and not tgt.showncards: return True if src is tgt: return True if user_input([src], ChooseOptionInputlet(self, (False, True))): if g.process_action(Pindian(src, tgt)): g.process_action(MaxLifeChange(src, tgt, -tgt.maxlife + 1)) else: g.process_action(Heal(src, tgt, -tgt.life + 1)) return True