Caza del álbum
La mayoría de los bots atacan a los tres rivales que la arena ofrezca. Eso está bien para el honor y no sirve para el álbum, porque esos tres nombres los elige el juego, no lo que a ti te falta.
Mercy SF rastrea el Salón de la Fama en segundo plano, recuerda el equipo de cada jugador que ve y manda el siguiente ataque contra el mejor objetivo vencible a nivel global: el que lleva más objetos que tu álbum aún no tiene.

Actívalo con auto_scrapbook y pon arena_mode en Scrapbook.
Cómo funciona el conjunto
El rastreador construye en memoria, por cuenta, un conjunto de jugadores y su equipo. Cada combate se elige después de ese conjunto y no de la lista de sugerencias de la arena.
El conjunto vive lo que dure la sesión y ni un minuto más, y es a propósito. Guardarlo parecía conocimiento gratis y no lo era:
- crecía sin límite. Una cuenta medida llegó a 187.136 jugadores en 119 MB y seguía subiendo unos 20 MB cada veinte minutos;
- cada cambio reescribía el archivo entero de forma síncrona, mientras retenía el bloqueo que el bot necesita para elegir combate y que la pantalla de Arena necesita para dibujarse. Medido: una reescritura de 119 MB cada 27 segundos;
- la escritura no era atómica, y un fallo al leerlo caía a una caché vacía, así que un cierre inesperado a media escritura descartaba en silencio todo el rastreo de todos modos;
- el equipo guardado es una foto de lo que alguien llevaba, y los jugadores cambian de equipo constantemente, así que casi todo lo que sobrevivía a un reinicio estaba mal.
Reescanear en cada ejecución es lo que hace la herramienta de referencia en la que esto se inspira, por el mismo motivo.
Elegir un objetivo
Un jugador del conjunto tiene que pasar varios filtros antes de merecer un ataque.
| Filtro | Ajuste | Por defecto | Qué significa |
|---|---|---|---|
| Techo de nivel | scrapbook_max_level_diff | 0 | Cuántos niveles por encima del tuyo puede estar un objetivo. 0 es «nunca por encima de mí». |
| Suelo de nivel | scrapbook_min_level_diff | 0 | Cuántos niveles por debajo del tuyo puede estar un objetivo. 0 es sin suelo. |
| Fuerza | scrapbook_max_attribute_pct | 120 | Tope a los atributos totales de un objetivo como porcentaje de los tuyos. 100 sería «nunca más fuerte que yo». |
| Lista de bloqueo | arena_never_attack | vacío | Nombres que nunca se atacan, lleven lo que lleven. |
| Vivo | Los nombres que el servidor ha rechazado con «jugador no encontrado» se recuerdan y se saltan. |
Los dos límites de nivel existen porque fallan en direcciones opuestas. Muy por encima de ti los combates se pierden; muy por debajo se ganan sin esfuerzo pero el equipo es de gama baja, así que con un álbum casi completo cuestan un combate gratuito y no devuelven nada.
Los atributos predicen el resultado mucho mejor que el nivel, así que scrapbook_max_attribute_pct es la perilla que decide de verdad. El valor por defecto de 120 admite un objetivo hasta una quinta parte más fuerte que tú, que es un combate perdido con la frecuencia suficiente para notarse. Bájalo a 100 si prefieres no perder ninguno.
La lista de bloqueo se comprueba contra todas las fuentes: las tres sugerencias de la arena, el Salón de la Fama y el conjunto del rastreador. Un nombre al que has dicho que no no puede volver por otra puerta.
La banda de búsqueda
scrapbook_search_band_enabled está activado, y cambia cómo se busca en el conjunto, no quién cumple.
En una cuenta asentada el conjunto llega a seis cifras, y el jugador con mejor puntuación está muchas veces en el extremo del rango de niveles, lo que da un combate o imposible de ganar o sin valor. Así que la búsqueda empieza en una banda alrededor de tu propio nivel y solo se ensancha cuando esa banda se agota.
| Ajuste | Por defecto | Qué significa |
|---|---|---|
scrapbook_search_band_start | 10 | Semianchura de la banda con la que empieza la búsqueda, en niveles. |
scrapbook_search_band_step | 10 | Niveles que crece la banda cada vez que se agota. |
scrapbook_search_band_max | 100 | Lo más ancha que llega la banda antes de volver al principio. |
Ese regreso también limpia. Haber barrido todos los niveles hasta el máximo sin encontrar objetivo se explica mejor porque lo recordado ha caducado que porque el servidor esté vacío.
Envejecimiento
scrapbook_cache_max_age_hours viene en 72. El equipo guardado es una foto, y los jugadores cambian de equipo sin parar, así que una entrada rastreada hace una semana dice más de lo que alguien llevaba que de lo que lleva ahora. Peor aún: un conjunto que ya has coleccionado es indistinguible de uno que nunca valió nada. Ponerlo a 0 desactiva el envejecimiento por completo.
Nombres muertos
A los jugadores se les cambia el nombre, se les borra y se les traslada de servidor. El servidor responde «jugador no encontrado», y sin memoria una entrada caducada del conjunto propagaría ese error y aparcaría el módulo entero durante una hora. Esos nombres se recuerdan por cuenta, así que el objetivo muerto de una cuenta nunca esconde a un jugador perfectamente válido para otra.
El conjunto está acotado en diez mil nombres. Llegar ahí significa que ha rotado mucho más de lo que rota una sesión real, así que se vacía y los pocos nombres que aún importan se vuelven a aprender a coste de una consulta desperdiciada cada uno.
Ritmo del rastreo
Dos ajustes, y hacen trabajos distintos.
| Ajuste | Por defecto | Qué limita |
|---|---|---|
scrapbook_max_hof_lookups | 20 | Consultas por ciclo del bot. |
scrapbook_crawl_requests_per_min | 60 | Consultas por minuto, en toda la cuenta. 0 desactiva el límite. |
Sesenta al minuto es más o menos una consulta por segundo sostenida: suficiente para hacer crecer el conjunto de forma continua sin las ráfagas de peticiones que produciría subir solo el presupuesto por ciclo. Justo por eso existen los dos. Si quieres que el rastreo apriete más, sube ambos.
Otros ajustes

| Ajuste | Por defecto | Qué hace |
|---|---|---|
auto_scrapbook | activado | El módulo en sí. |
scrapbook_crawler_enabled | activado | Rastrear el Salón de la Fama de forma continua en vez de leer solo las sugerencias de la arena. |
scrapbook_after_xp_wins | activado | Cazar objetivos de álbum solo después de hechos los combates de experiencia. |
scrapbook_scan_arena_opponents | activado | Registrar también el equipo de los tres rivales que ofrece la arena, que es información gratis. |
scrapbook_early_game_priority | activado | Preferir combates de álbum mientras el personaje es de nivel bajo, que es cuando el álbum se llena más rápido. |
scrapbook_hof_rankup | activado | Mantener una lista de candidatos para subir en el Salón de la Fama, y no solo para objetos. |
scrapbook_notify_at | 0 | Avisarme cuando el álbum llegue a estos objetos. 0 significa nunca. |
buy_scrapbook | activado | Comprar entradas del álbum donde el juego las ponga a la venta. |
Dónde se decide
Vale la pena saberlo si lees el código: el álbum era antes un módulo de bot propio, y eso era un fallo. Él y el módulo de arena creían ambos que el enfriamiento de la arena era suyo, se copiaban los filtros mutuamente y no se ponían de acuerdo en si un mínimo de probabilidad puede vetar un combate gratuito.
La mitad que decide vive ahora en el módulo de combate. Lo que queda bajo «álbum» es la maquinaria que mantiene el conjunto digno de elegir: el rastreador, el envejecimiento, los límites de nivel y la lista de candidatos para subir.