{
  num: -13010,
  accuracy: true,
  basePower: 250,
  category: "Physical",
  name: "Jakuho Raikoben",
  pp: 1,
  priority: 0,
  flags: { mirror: 1, metronome: 1, bullet: 1 },
  breaksProtect: true,
  infiltrates: true,
  bankaiOnly(source, move) {
    if (!source) return false;
    const species = source.species || source.template || {};
    const speciesName = species.name || species.species || "";
    const speciesId = species.id || "";
    const types = source.getTypes ? source.getTypes() : [];
    if (source.hasAbility?.("assassinswarhead")) return true;
    if (speciesName === "Soifon-Mega" || speciesName === "Soifon-Bankai" || speciesId === "soifonmega" || speciesId === "soifonbankai") return true;
    if (species.forme === "Mega" && (species.baseSpecies === "Soifon" || speciesName.includes("Soifon"))) return true;
    if ((source.baseSpecies?.baseSpecies === "Soifon" || species.baseSpecies === "Soifon" || speciesName === "Soifon") && types.includes("Fire")) return true;
    this.add("-fail", source, move);
    this.attrLastMove("[still]");
    return false;
  },
  onTryMove(source, target, move) {
    if (!this.effect.bankaiOnly.call(this, source, move)) return null;
    if (source?.jakuhoRaikobenUsed) {
      this.add("-fail", source, move);
      this.attrLastMove("[still]");
      return null;
    }
  },
  onTry(source, target, move) {
    if (!this.effect.bankaiOnly.call(this, source, move)) return null;
    if (source?.jakuhoRaikobenUsed) {
      this.add("-fail", source, move);
      this.attrLastMove("[still]");
      return null;
    }
  },
  onTryHit(target, source, move) {
    if (!this.effect.bankaiOnly.call(this, source, move)) return null;
  },
  onAfterMove(source, target, move) {
    if (!source || move.id !== "jakuhoraikoben") return;
    
    
    if (source.jakuhoRaikobenUsed) return;
    if (source.moveThisTurnResult === false) return;
    source.jakuhoRaikobenUsed = true;
    source.assassinsWarheadReady = false;
    source.assassinsWarheadFired = true;
    this.damage(Math.max(1, Math.floor((source.baseMaxhp || source.maxhp) / 2)), source, source, move);
    this.boost({ spe: -3 }, source, source, move);
  },
  target: "allAdjacentFoes",
  type: "Fire",
  zMove: { basePower: 250 },
  contestType: "Tough",
  desc: "Bankai-only and once per battle. An unavoidable warhead blast that hits all adjacent foes, pierces Substitute, breaks protection, then costs the user half its max HP and drops Speed by 3 stages."
}
