def powerfulaxe(attacker, defender): check_energy_cost(attacker, 2, Fire=1, Metal=1) damage = 10 for key in attacker.energy.keys(): if key.upper() in Type.__members__: damage += 40 * attacker.energy[key] defender.take_damage(damage, attacker)
def waterarrow(attacker, defender): check_energy_cost(attacker, 1, Water=1) target = attacker.player.prompt_select_opp() if target == defender: defender.take_damage(20, attacker) else: target.take_damage(20, attacker, "noweak", "nores")
def batonpass(attacker, defender): check_energy_cost(attacker, 2) defender.take_damage(40, attacker) switch = attacker.player.prompt_select_ally() if switch != attacker: attacker.player.active = switch attacker.player.bench.append(attacker)
def creativeburst(attacker, defender): if attacker.player.gx_used: return check_energy_cost(attacker, 4, Psychic=2) for _ in range(2): attacker.player.play_pokemon(attacker.player.prompt_card_from_deck("ispokemon")) attacker.player.gx_used = True
def luringflame(attacker, defender): check_energy_cost(attacker, 1, Fire=1) target = attacker.player.prompt_select_opp("notactive") defender.player.bench.append(defender) defender.player.bench.remove(target) defender.active = target target.tokens.append("burned")
def argentwing(attacker, defender): check_energy_cost(attacker, 3) damage = 60 if len(defender.global_abilities) + len(defender.abilities) + len( defender.personal_abilities) > 0: damage += 60 defender.take_damage(damage, attacker)
def reversethrust(attacker, defender): check_energy_cost(attacker, 1, Water=1) defender.take_damage(30, attacker) switch = attacker.player.prompt_select_ally("notactive") attacker.player.bench.remove(switch) attacker.player.bench.append(attacker) attacker.player.active = switch
def ragingout(attacker, defender): if attacker.player.gx_used: return check_energy_cost(attacker, 3, Fire=1) for _ in range(10): defender.player.discard.append(defender.player.deck.stack.pop(0)) attacker.player.gx_used = True
def photongeyser(attacker, defender): check_energy_cost(attacker, 2, Metal=1, Psychic=1) damage = 20 + 80 * attacker.energy["Psychic"] for _ in range(attacker.energy["Psychic"]): attacker.other_attached.remove("psychic") attacker.player.discard.append("psychic") attacker.energy.pop("Psychic") defender.take_damage(damage, attacker)
def aeroforce(attacker, defender): check_energy_cost(attacker, 4) defender.take_damage(130) energy = attacker.player.prompt_select_other( attacker.energy.as_card_list()) attacker.energy[energy.typestring] -= 1 attacker.other_attached.remove(energy.id) attacker.player.discard.append(energy.id)
def aquaring(attacker, defender): check_energy_cost(attacker, 1) defender.take_damage(20, attacker) switch = attacker.player.prompt_select_ally() if switch in attacker.player.bench: attacker.player.bench.remove(switch) attacker.player.bench.append(attacker) attacker.player.active = switch
def blackray(attacker, defender): if attacker.player.gx_used: return check_energy_cost(attacker, 3) for i in defender.player.bench + [defender]: if i.flair in [Flair.EX, Flair.GX]: i.take_damage(100, "noweak") attacker.player.gx_used = True
def flamethrower(attacker, defender): check_energy_cost(attacker, 3, Fire=2) defender.take_damage(80, attacker) energy = attacker.player.prompt_select_other( attacker.energy.as_card_list()) attacker.energy[energy.typestring] -= 1 attacker.other_attached.remove(energy.id) attacker.player.discard.append(energy.id)
def gyroball(attacker, defender): check_energy_cost(attacker, 3, Metal=1) defender.take_damage(60, attacker) switch = attacker.player.prompt_select_ally("notactive", "remove") attacker.player.bench.append(attacker) attacker.player.active = switch switch = defender.player.prompt_select_ally("notactive", "remove") defender.player.bench.append(defender) defender.player.active = switch
def skyjudgment(attacker, defender): check_energy_cost(attacker, 4, Fire=1, Electric=2) defender.take_damage(190, attacker) for _ in range(3): energy = attacker.player.prompt_select_other( attacker.energy.as_card_list()) attacker.energy[energy.typestring] -= 1 attacker.other_attached.remove(energy.id) attacker.player.discard.append(energy.id)
def crunch(attacker, defender): check_energy_cost(attacker, 2) defender.take_damage(30, attacker) if attacker.player.flip_coin(): _type = defender.player.prompt_select_other(defender.energy.keys()) defender.energy[_type] -= 1 if defender.energy[_type] == 0: defender.energy.pop(_type) defender.player.discard.append(_type)
def crimsonstorm(attacker, defender): check_energy_cost(attacker, 5, Fire=3) defender.take_damage(300, attacker) for _ in range(3): energy = attacker.player.prompt_select_other( attacker.energy.as_card_list(), _type="fire") attacker.energy["Fire"] -= 1 attacker.other_attached.remove(energy.id) attacker.player.discard.append(energy.id)
def toweringsplash(attacker, defender): if attacker.player.gx_used: return check_energy_cost(attacker, 1, Water=1) defender.take_damage(10, attacker) if attacker.energy["Water"] >= 8: for i in defender.player.bench: i.take_damage(100, attacker, "noweak", "nores") attacker.player.gx_used = True
def skyscorchinglight(attacker, defender): check_energy_cost(attacker, 2, Metal=1, Psychic=1) if attacker.player.gx_used: return if len(attacker.player.prize) + len(defender.player.prize) > 6: return for i in [defender] + defender.player.bench: i.take_damage(60, "nomod") attacker.player.gx_used = True
def fierylicks(attacker, defender): check_energy_cost(attacker, 3, Fire=3) damage = 0 for _ in range(4): card = attacker.player.deck.draw() if card.id == "fire": damage += 50 attacker.player.discard.append(card.id) defender.take_damage(damage, attacker)
def firestream(attacker, defender): check_energy_cost(attacker, 3, Fire=1) defender.take_damage(90, attacker) energy = attacker.player.prompt_select_other( attacker.energy.as_card_list(), _type="fire") attacker.energy["Fire"] -= 1 attacker.other_attached.remove(energy.id) attacker.player.discard.append(energy.id) for p in defender.player.bench: p.take_damage(20, attacker, "noweak")
def oceanloop(attacker, defender): check_energy_cost(attacker, 4, Water=3) defender.take_damage(210, attacker) for _ in range(2): energy = attacker.player.prompt_select_other(attacker.energy.as_card_list(), _type="water") attacker.player.hand.append(energy) attacker.energy["Water"] -= 1 if attacker.energy["Water"] == 0: attacker.energy.pop("Water") attacker.other_attached.remove("water")
def dragonburst(attacker, defender): check_energy_cost(attacker, 2, Fire=1, Electric=1) energy_type = attacker.player.prompt_select_other( [get("fire"), get("electric")]).id damage = attacker.energy[energy_type.title()] * 60 for _ in range(attacker.energy[energy_type.title()]): attacker.player.discard.append(energy_type.lower()) attacker.energy.pop(energy_type.title()) attacker.other_attached = [ i for i in attacker.other_attached if i != energy_type ] defender.take_damage(damage, attacker)
def hydroshot(attacker, defender): check_energy_cost(attacker, 3, Water=2) for _ in range(2): energy = attacker.player.prompt_select_other( attacker.energy.as_card_list(), _type="fire") attacker.energy["Fire"] -= 1 attacker.other_attached.remove(energy.id) attacker.player.discard.append(energy.id) target = attacker.player.prompt_select_opp() if target == defender: defender.take_damage(120, attacker) else: target.take_damage(120, attacker, "noweak", "nores")
def prismaticburst(attacker, defender): check_energy_cost(attacker, 3) damage = 10 if "Psychic" in attacker.energy.keys(): damage += 60 * attacker.energy["Psychic"] attacker.energy.pop("Psychic") if "Prism" in attacker.energy.keys(): damage += 60 * attacker.energy["Prism"] attacker.energy.pop("Prism") attacker.other_attached = [ i for i in attacker.other_attached if i not in ["psychic", "bwnd-93/99"] ]
def ragingdestruction(attacker, defender): check_energy_cost(attacker, 1, Fire=1) for _ in range(8): c = attacker.player.deck.draw() if c.id == "fire": c.override_cap = True c.use(attacker) elif type(c) == TrainerCard and c.trainertype == TrainerType.ENRG: c.data["overridecap"] = True c.data["target"] = attacker c.use() else: attacker.player.discard.append(c.id)
def crimsonflamepillar(attacker, defender): if attacker.player.gx_used: return check_energy_cost(attacker, 1, Fire=1) for _ in range(5): energy = attacker.player.prompt_select_other( [get(i) for i in attacker.player.discard], "isenergy", "basic") target = attacker.player.prompt_select_ally() energy.override_cap = True energy.use(target) if attacker.energy.total() >= 2: defender.rotation = "confused" defender.tokens.append("burned")
def celestialroar(attacker, defender): check_energy_cost(attacker, 1) cards = [attacker.player.deck.draw() for _ in range(3)] for i in cards: if type(i) == EnergyCard: i.override_cap = True i.use(attacker) elif type(i) == TrainerCard and i.trainertype == TrainerType.ENRG: i.data["overridecap"] = True i.data["target"] = attacker i.use() else: attacker.player.discard.append(i.id)
def energyloop(attacker, defender): check_energy_cost(attacker, 1, Metal=1) defender.take_damage(30, attacker) energy = attacker.player.prompt_select_other(attacker.energy) attacker.energy[energy] -= 1 if attacker.energy[energy] == 0: attacker.energy.pop(energy) if energy.upper() in Type.__members__: attacker.player.hand.append(get(energy.lower(), attacker.player)) else: for id in attacker.special_energy: c = get(id) if energy in c.name: attacker.player.hand.append(c) break
def dreadfulflames(attacker, defender): if attacker.player.gx_used: return check_energy_cost(attacker, 5, Fire=2) defender.take_damage(250, attacker) for i in defender.player.hand + [defender]: if i.energy.total() > 1: e = attacker.player.prompt_select_other(i.energy.as_card_list()) i.other_attached.remove(e.id) i.energy[e.id.title()] -= 1 if i.energy[e.id.title()] == 0: i.energy.pop(e.id.title()) elif i.energy.total() == 1: eid = i.energy.keys()[0] i.other_attached.remove(eid) i.energy.pop(eid.title())