{
      duration: 5,
      durationCallback(source, effect) {
        if (source?.hasAbility("persistent")) {
          this.add("-activate", source, "ability: Persistent", "[move] Stasis Room");
          return 7;
        }
        return 5;
      },
      onDamage(damage, target, source, effect) {
        if (effect.effectType !== "Move") {
          if (effect.effectType === "Ability")
            this.add("-activate", source, "ability: " + effect.name);
          return false;
        }
      },
      onDisableMove(pokemon) {
        for (const moveSlot of pokemon.moveSlots) {
          const move = this.dex.moves.get(moveSlot.id);
          if (move.category === "Status" && move.flags["heal"]) {
            pokemon.disableMove(moveSlot.id);
          }
        }
      },
      onBeforeMovePriority: 6,
      onBeforeMove(pokemon, target, move) {
        if (move.category === "Status" && move.flags["heal"]) {
          this.add("cant", pokemon, "move: Stasis Room", move);
          return false;
        }
      },
      onModifyMove(move, pokemon, target) {
        if (move.category === "Status" && move.flags["heal"]) {
          this.add("cant", pokemon, "move: Stasis Room", move);
          return false;
        }
      },
      onTryHeal(damage, target, source, effect) {
        if (effect?.id === "zpower" || this.effectState.isZ)
          return damage;
        return false;
      },
      onFieldStart(field, source) {
        if (source?.hasAbility("persistent")) {
          this.add("-fieldstart", "move: Stasis Room", "[of] " + source, "[persistent]");
        } else {
          this.add("-fieldstart", "move: Stasis Room", "[of] " + source);
        }
      },
      onFieldRestart(target, source) {
        this.field.removePseudoWeather("stasisroom");
      },
      onFieldResidualOrder: 27,
      onFieldResidualSubOrder: 5,
      onFieldEnd() {
        this.add("-fieldend", "move: Stasis Room");
      }
}