// Resistiré - Acciones del Asesor de Moncloa
// (mantenemos el nombre 'mejorasData' para compatibilidad con motor)

const mejorasData = {
    // ===== NEGACIONISMO (olas 1-2) =====
    noSeContagia: {
        id: 'noSeContagia',
        nombre: 'No se contagia entre humanos',
        descripcion: '"Es un virus muy localizado, no llegará a España"',
        categoria: 'negacionismo',
        disponibleDesde: 1,
        disponibleHasta: 2,
        coste: { dinero: 0 },
        efecto: {
            playerResources: { relato: 10, popularidad: 5 },
            recursosGlobales: { saludPoblacional: -15 }
        },
        puntos: 50,
        frase: 'noSeContagia'
    },
    gripeComun: {
        id: 'gripeComun',
        nombre: 'Es como una gripe normal',
        descripcion: 'Minimizar la amenaza para evitar pánico (y consultas médicas)',
        categoria: 'negacionismo',
        disponibleDesde: 1,
        disponibleHasta: 3,
        coste: { dinero: 0 },
        efecto: {
            playerResources: { ego: 5, relato: 5 },
            recursosGlobales: { saludPoblacional: -10, sanidadDisponible: -5 }
        },
        puntos: 40,
        frase: 'gripeComun'
    },
    niñosInmunes: {
        id: 'niñosInmunes',
        nombre: 'Los niños no se contagian',
        descripcion: 'Mantener los colegios abiertos. Los padres lo agradecerán',
        categoria: 'negacionismo',
        disponibleDesde: 1,
        disponibleHasta: 3,
        coste: { dinero: 0 },
        efecto: {
            playerResources: { popularidad: 8 },
            recursosGlobales: { saludPoblacional: -20 }
        },
        puntos: 50,
        frase: 'niñosInmunes'
    },
    omsExagera: {
        id: 'omsExagera',
        nombre: 'La OMS exagera',
        descripcion: 'Llamar al director de la OMS "alarmista" en off the record',
        categoria: 'negacionismo',
        disponibleDesde: 1,
        disponibleHasta: 2,
        coste: { dinero: 0 },
        efecto: {
            playerResources: { relato: 5, ego: 10 },
            recursosGlobales: { saludPoblacional: -10 }
        },
        puntos: 30,
        frase: 'omsExagera'
    },

    // ===== TEATRO POLÍTICO (olas 2-4) =====
    permitirOrgullo: {
        id: 'permitirOrgullo',
        nombre: 'Permitir el Orgullo (con foto)',
        descripcion: 'Manifestación masiva con virus circulando. Bandera al hombro',
        categoria: 'teatro',
        disponibleDesde: 2,
        disponibleHasta: 3,
        coste: { dinero: 0 },
        efecto: {
            playerResources: { socios: 15, popularidad: 12 },
            recursosGlobales: { saludPoblacional: -25, sanidadDisponible: -10 }
        },
        puntos: 90,
        frase: 'orgullo'
    },
    comparecenciaDominical: {
        id: 'comparecenciaDominical',
        nombre: 'Comparecencia dominical',
        descripcion: 'Rueda de prensa los domingos. Sin preguntas. Plasma',
        categoria: 'teatro',
        disponibleDesde: 1,
        coste: { dinero: 0 },
        efecto: {
            playerResources: { relato: 8, ego: 3 },
            recursosGlobales: { libertades: -3 }
        },
        puntos: 25,
        repeatable: true,
        frase: 'comparecencia'
    },
    aplausosOcho: {
        id: 'aplausosOcho',
        nombre: 'Aplausos a las 8',
        descripcion: 'Vecinos aplaudiendo a sanitarios para que olviden los recortes',
        categoria: 'teatro',
        disponibleDesde: 3,
        disponibleHasta: 5,
        coste: { dinero: 0 },
        efecto: {
            playerResources: { popularidad: 7, ego: 3, relato: 5 }
        },
        puntos: 30,
        repeatable: true,
        frase: 'aplausos'
    },
    heHabladoConCasaBlanca: {
        id: 'heHabladoConCasaBlanca',
        nombre: 'He hablado con la Casa Blanca',
        descripcion: 'Filtrar a Moncloa una llamada que duró 38 segundos',
        categoria: 'teatro',
        disponibleDesde: 1,
        coste: { dinero: 0 },
        efecto: {
            playerResources: { ego: 10, relato: 5 }
        },
        puntos: 20,
        repeatable: true,
        frase: 'biden'
    },

    // ===== COMPRAS DE PÁNICO (olas 3-5) =====
    mascarillasHongKong: {
        id: 'mascarillasHongKong',
        nombre: 'Mascarillas a Hong Kong',
        descripcion: 'Comprar 640M unidades a una empresa fantasma. Sin filtro real',
        categoria: 'compras',
        disponibleDesde: 3,
        disponibleHasta: 5,
        coste: { socios: 5 },
        efecto: {
            playerResources: { enchufes: 30, popularidad: 5 },
            recursosGlobales: { sanidadDisponible: -8, economia: -5 }
        },
        puntos: 70,
        frase: 'mascarillasChina'
    },
    testRapidosFantasma: {
        id: 'testRapidosFantasma',
        nombre: 'Test rápidos defectuosos',
        descripcion: 'Comprar 640.000 test rápidos a una empresa fantasma con 30% de fiabilidad. Devolverlos no',
        categoria: 'compras',
        disponibleDesde: 3,
        disponibleHasta: 5,
        coste: { dinero: 0 },
        efecto: {
            playerResources: { enchufes: 20 },
            recursosGlobales: { sanidadDisponible: -10, saludPoblacional: -5 }
        },
        puntos: 50,
        frase: 'testFantasma'
    },
    gelHidroalcoholico: {
        id: 'gelHidroalcoholico',
        nombre: 'Gel sin homologar',
        descripcion: 'Reparto masivo a colegios y centros. Sale más barato',
        categoria: 'compras',
        disponibleDesde: 2,
        coste: { dinero: 0 },
        efecto: {
            playerResources: { popularidad: 5, enchufes: 8 },
            recursosGlobales: { sanidadDisponible: -3 }
        },
        puntos: 25,
        repeatable: true,
        frase: 'gel'
    },

    // ===== MEDIDAS ABSURDAS (olas 4-6) =====
    cerrarParquesInfantiles: {
        id: 'cerrarParquesInfantiles',
        nombre: 'Cerrar parques infantiles',
        descripcion: 'Pero las terrazas siguen abiertas. Por la economía',
        categoria: 'absurdas',
        disponibleDesde: 4,
        disponibleHasta: 5,
        coste: { dinero: 0 },
        efecto: {
            playerResources: { popularidad: 10, relato: 5 },
            recursosGlobales: { libertades: -8, saludPoblacional: 2 }
        },
        puntos: 35,
        frase: 'parques'
    },
    prohibirNadar: {
        id: 'prohibirNadar',
        nombre: 'Prohibir bañarse en la playa',
        descripcion: 'Pero pasear por la arena sí. Y montar en bici también',
        categoria: 'absurdas',
        disponibleDesde: 4,
        disponibleHasta: 5,
        coste: { dinero: 0 },
        efecto: {
            playerResources: { popularidad: 5, ego: 5 },
            recursosGlobales: { libertades: -10, economia: -3 }
        },
        puntos: 25,
        frase: 'playa'
    },
    estadoAlarma: {
        id: 'estadoAlarma',
        nombre: 'Estado de alarma',
        descripcion: 'Confinamiento total. Solo 1 vez al supermercado. (Spoiler: lo declararán inconstitucional)',
        categoria: 'absurdas',
        disponibleDesde: 4,
        disponibleHasta: 5,
        coste: { socios: 15 },
        efecto: {
            playerResources: { popularidad: 25, ego: 15 },
            recursosGlobales: { libertades: -25, economia: -15, saludPoblacional: 10 }
        },
        puntos: 100,
        frase: 'alarma'
    },
    toqueQueda: {
        id: 'toqueQueda',
        nombre: 'Toque de queda diferenciado',
        descripcion: 'Cada CCAA con horario distinto. Que se confunda quien quiera',
        categoria: 'absurdas',
        disponibleDesde: 5,
        coste: { dinero: 0 },
        efecto: {
            playerResources: { popularidad: 8 },
            recursosGlobales: { libertades: -10 }
        },
        puntos: 30,
        repeatable: true,
        frase: 'toqueQueda'
    },
    cordónSanitario: {
        id: 'cordónSanitario',
        nombre: 'Cierre perimetral cambiante',
        descripcion: 'Se cierra Madrid los lunes y miércoles. Galicia los martes. Así tres meses',
        categoria: 'absurdas',
        disponibleDesde: 4,
        coste: { dinero: 0 },
        efecto: {
            playerResources: { popularidad: 4, relato: 3 },
            recursosGlobales: { libertades: -6, economia: -4 }
        },
        puntos: 20,
        repeatable: true,
        frase: 'cordon'
    },

    // ===== MANIOBRAS POLÍTICAS (olas 5-6) =====
    illaACataluña: {
        id: 'illaACataluña',
        nombre: 'Mandar al ministro a Cataluña',
        descripcion: 'En plena pandemia el ministro de Sanidad dimite para presentarse a las catalanas',
        categoria: 'maniobras',
        disponibleDesde: 5,
        disponibleHasta: 6,
        coste: { popularidad: 5 },
        efecto: {
            playerResources: { socios: 12, ego: 15, popularidad: -5 },
            recursosGlobales: { sanidadDisponible: -12 }
        },
        puntos: 80,
        frase: 'illa'
    },
    rescatePlusUltra: {
        id: 'rescatePlusUltra',
        nombre: 'Rescatar Plus Ultra',
        descripcion: 'Rescatar a una aerolínea zombi venezolana con dinero del Estado. Por motivos',
        categoria: 'maniobras',
        disponibleDesde: 5,
        disponibleHasta: 6,
        coste: { popularidad: 8 },
        efecto: {
            playerResources: { enchufes: 35, popularidad: -8 },
            recursosGlobales: { economia: -10 }
        },
        puntos: 90,
        frase: 'plusUltra'
    },
    vicepresidenteAlChalet: {
        id: 'vicepresidenteAlChalet',
        nombre: 'Vicepresidente al chalet',
        descripcion: 'Vicepresidente confinado en su chalet de 600m². Pide responsabilidad ciudadana en directo',
        categoria: 'maniobras',
        disponibleDesde: 4,
        disponibleHasta: 6,
        coste: { dinero: 0 },
        efecto: {
            playerResources: { socios: 8, enchufes: 10, popularidad: -3 }
        },
        puntos: 40,
        frase: 'falcon'
    },
    hemosDoblegadoLaCurva: {
        id: 'hemosDoblegadoLaCurva',
        nombre: 'Hemos doblegado la curva',
        descripcion: 'Anunciar la victoria sobre el virus mientras los hospitales colapsan',
        categoria: 'maniobras',
        disponibleDesde: 4,
        coste: { dinero: 0 },
        efecto: {
            playerResources: { relato: 12, ego: 8, popularidad: 5 },
            recursosGlobales: { saludPoblacional: -3 }
        },
        puntos: 35,
        repeatable: true,
        frase: 'curva'
    },
    vacunaConHumo: {
        id: 'vacunaConHumo',
        nombre: 'Anunciar vacuna milagrosa',
        descripcion: 'Comprar 80M dosis de un laboratorio sin ensayos clínicos publicados',
        categoria: 'maniobras',
        disponibleDesde: 5,
        disponibleHasta: 6,
        coste: { enchufes: 8 },
        efecto: {
            playerResources: { popularidad: 18, enchufes: 12 },
            recursosGlobales: { saludPoblacional: 8, sanidadDisponible: -5 }
        },
        puntos: 60,
        frase: 'vacuna'
    },
    convocarElecciones: {
        id: 'convocarElecciones',
        nombre: 'Convocar elecciones anticipadas',
        descripcion: '"He resistido". Llamar a las urnas con la pandemia aún caliente',
        categoria: 'maniobras',
        disponibleDesde: 6,
        disponibleHasta: 6,
        coste: { socios: 20 },
        efecto: {
            playerResources: { ego: 25, popularidad: 10, relato: 10 },
            recursosGlobales: { libertades: -5 }
        },
        puntos: 100,
        frase: 'elecciones'
    },

    // ===== MEDIOS Y COMUNICACIÓN =====
    botsTwitter: {
        id: 'botsTwitter',
        nombre: 'Tropa de bots en Twitter',
        descripcion: 'Contratar 5.000 cuentas falsas para defender al Gobierno en redes',
        categoria: 'medios',
        disponibleDesde: 1,
        coste: { enchufes: 5 },
        efecto: {
            playerResources: { relato: 10, popularidad: 3 }
        },
        puntos: 30,
        repeatable: true,
        frase: 'bots'
    },
    subvencionPrensa: {
        id: 'subvencionPrensa',
        nombre: 'Subvención exprés a un periódico',
        descripcion: 'Inyectar publicidad institucional al medio que más conviene esta semana',
        categoria: 'medios',
        disponibleDesde: 2,
        coste: { enchufes: 8 },
        efecto: {
            playerResources: { relato: 18 },
            recursosGlobales: { economia: -3 }
        },
        puntos: 50,
        frase: 'subvencion'
    },
    demandarPeriodista: {
        id: 'demandarPeriodista',
        nombre: 'Demandar a periodista crítico',
        descripcion: 'Querella por "noticias falsas" contra quien publica las compras opacas',
        categoria: 'medios',
        disponibleDesde: 3,
        coste: { socios: 8 },
        efecto: {
            playerResources: { ego: 8, relato: 8 },
            recursosGlobales: { libertades: -10 }
        },
        puntos: 40,
        frase: 'demandar'
    },

    // ===== DIPLOMACIA Y ESCAPADAS =====
    fotoDavos: {
        id: 'fotoDavos',
        nombre: 'Foto en Davos con la élite',
        descripcion: 'Saltarse el confinamiento por compromiso internacional. Hay foto.',
        categoria: 'diplomacia',
        disponibleDesde: 4,
        disponibleHasta: 6,
        coste: { popularidad: 8 },
        efecto: {
            playerResources: { ego: 18, enchufes: 6 }
        },
        puntos: 50,
        frase: 'davos'
    },
    bilateralMarruecos: {
        id: 'bilateralMarruecos',
        nombre: 'Bilateral con Marruecos',
        descripcion: 'Cesión "diplomática" en el Sáhara para que cierren la frontera al virus',
        categoria: 'diplomacia',
        disponibleDesde: 2,
        coste: { socios: 12 },
        efecto: {
            playerResources: { ego: 10, relato: 8 },
            recursosGlobales: { saludPoblacional: 5 }
        },
        puntos: 45,
        frase: 'marruecos'
    },

    // ===== DECRETAZOS Y FAVORES =====
    decretoExpres: {
        id: 'decretoExpres',
        nombre: 'Decreto-ley exprés',
        descripcion: 'Colar 47 normas en un decreto sin debate parlamentario. Por la urgencia',
        categoria: 'decretazos',
        disponibleDesde: 2,
        coste: { socios: 5 },
        efecto: {
            playerResources: { relato: 5, ego: 5 },
            recursosGlobales: { libertades: -8 }
        },
        puntos: 30,
        repeatable: true,
        frase: 'decreto'
    },
    indultoMalversadores: {
        id: 'indultoMalversadores',
        nombre: 'Indulto a malversadores',
        descripcion: 'Liberar a aliados condenados. Toca en algún momento',
        categoria: 'decretazos',
        disponibleDesde: 4,
        coste: { popularidad: 12 },
        efecto: {
            playerResources: { socios: 22, enchufes: 5 }
        },
        puntos: 50,
        frase: 'indulto'
    },
    fiscalAfin: {
        id: 'fiscalAfin',
        nombre: 'Fiscal General "afín"',
        descripcion: 'Nombrar a alguien de confianza al frente de la Fiscalía. La justicia es lo que es',
        categoria: 'decretazos',
        disponibleDesde: 3,
        coste: { socios: 8 },
        efecto: {
            playerResources: { ego: 12, relato: 6 },
            recursosGlobales: { libertades: -6 }
        },
        puntos: 35,
        frase: 'fiscal'
    },

    // ===== DISTRACTORES =====
    leyMemoriaReforzada: {
        id: 'leyMemoriaReforzada',
        nombre: 'Ley de Memoria Reforzada',
        descripcion: 'Sacar a Franco del debate público durante una semana entera',
        categoria: 'distractores',
        disponibleDesde: 3,
        coste: { popularidad: 5 },
        efecto: {
            playerResources: { socios: 15, relato: 10 }
        },
        puntos: 35,
        frase: 'memoria'
    },
    renombrarAeropuerto: {
        id: 'renombrarAeropuerto',
        nombre: 'Renombrar el aeropuerto',
        descripcion: 'Madrid-Barajas pasa a llamarse como un expresidente. Cuál importa menos',
        categoria: 'distractores',
        disponibleDesde: 2,
        efecto: {
            playerResources: { ego: 8, relato: 5, socios: 5 }
        },
        puntos: 20,
        frase: 'aeropuerto'
    },
    leyTransSobrevenida: {
        id: 'leyTransSobrevenida',
        nombre: 'Ley exprés contra la oposición',
        descripcion: 'Sacar una ley polémica para que los medios olviden el dato del día',
        categoria: 'distractores',
        disponibleDesde: 3,
        coste: { popularidad: 6 },
        efecto: {
            playerResources: { socios: 12, relato: 12 }
        },
        puntos: 35,
        repeatable: true,
        frase: 'distraccion'
    },

    // ===== TRAMAS Y COMISIONES =====
    // (Inspiradas en casos reales de la gestión COVID española. Sin nombres propios.)
    mordidaMascarillas: {
        id: 'mordidaMascarillas',
        nombre: 'Mordida por contrato de mascarillas',
        descripcion: 'El asesor de un ministerio cobra el 5% de un contrato de 53M. Pasa por empresa de un familiar',
        categoria: 'tramas',
        disponibleDesde: 3,
        coste: { socios: 5 },
        efecto: {
            playerResources: { enchufes: 35 },
            recursosGlobales: { economia: -8, libertades: -3 }
        },
        puntos: 80,
        frase: 'mordida'
    },
    comisionistaMaletines: {
        id: 'comisionistaMaletines',
        nombre: 'Mediador con maletines',
        descripcion: 'Un comisionista mueve sobres entre Moncloa y empresarios afines. Nadie sabe nada, todos cobran',
        categoria: 'tramas',
        disponibleDesde: 3,
        coste: { socios: 6 },
        efecto: {
            playerResources: { enchufes: 22 },
            recursosGlobales: { libertades: -5 }
        },
        puntos: 50,
        repeatable: true,
        frase: 'comisionista'
    },
    adjudicacionCCAAAliada: {
        id: 'adjudicacionCCAAAliada',
        nombre: 'Adjudicación a CCAA aliada',
        descripcion: 'Sin concurso, sin auditoría. La empresa contratada es del cuñado del consejero',
        categoria: 'tramas',
        disponibleDesde: 3,
        coste: { socios: 3 },
        efecto: {
            playerResources: { enchufes: 16 },
            recursosGlobales: { sanidadDisponible: -5, economia: -3 }
        },
        puntos: 35,
        repeatable: true,
        frase: 'adjudicacion'
    },
    cenaConfinamiento: {
        id: 'cenaConfinamiento',
        nombre: 'Cena VIP saltándose el confinamiento',
        descripcion: 'Diputados y empresarios cenan en un reservado mientras el resto del país está encerrado',
        categoria: 'tramas',
        disponibleDesde: 4,
        coste: { popularidad: 8 },
        efecto: {
            playerResources: { enchufes: 20, ego: 8 }
        },
        puntos: 45,
        frase: 'cena'
    },
    recibimientoVIPAeropuerto: {
        id: 'recibimientoVIPAeropuerto',
        nombre: 'Recibimiento VIP en pista',
        descripcion: 'Un ministro recibe en zona blindada del aeropuerto a una alta cargo extranjera bajo sanciones europeas',
        categoria: 'tramas',
        disponibleDesde: 3,
        coste: { socios: 8 },
        efecto: {
            playerResources: { enchufes: 18, relato: 8, popularidad: -10 }
        },
        puntos: 40,
        frase: 'recibimientoVIP'
    },
    enchufarHermano: {
        id: 'enchufarHermano',
        nombre: 'Enchufar al hermano del presidente',
        descripcion: 'Crear plaza ad hoc en una diputación de aliados para el hermano del jefe',
        categoria: 'tramas',
        disponibleDesde: 4,
        coste: { socios: 3 },
        efecto: {
            playerResources: { enchufes: 14, popularidad: -8 }
        },
        puntos: 30,
        frase: 'hermano'
    },
    catedraAmedida: {
        id: 'catedraAmedida',
        nombre: 'Cátedra universitaria a medida',
        descripcion: 'Crear una cátedra en una universidad pública con software inflado para que la dirija la pareja del presidente',
        categoria: 'tramas',
        disponibleDesde: 4,
        coste: { popularidad: 6 },
        efecto: {
            playerResources: { enchufes: 16, ego: 8 },
            recursosGlobales: { libertades: -3 }
        },
        puntos: 35,
        frase: 'catedra'
    },
    mediacionFamiliarAerolinea: {
        id: 'mediacionFamiliarAerolinea',
        nombre: 'Mediación familiar en rescate aéreo',
        descripcion: 'La pareja del presidente intercede en favor del rescate de una aerolínea privada en quiebra',
        categoria: 'tramas',
        disponibleDesde: 5,
        coste: { popularidad: 12 },
        efecto: {
            playerResources: { enchufes: 30 },
            recursosGlobales: { economia: -10 }
        },
        puntos: 60,
        frase: 'mediacionAerolinea'
    },
    filtrarDatosFiscales: {
        id: 'filtrarDatosFiscales',
        nombre: 'Filtrar datos fiscales del rival',
        descripcion: 'Conseguir y filtrar a la prensa los datos fiscales del entorno del líder de la oposición',
        categoria: 'tramas',
        disponibleDesde: 5,
        coste: { socios: 5 },
        efecto: {
            playerResources: { relato: 15, ego: 10 },
            recursosGlobales: { libertades: -12 }
        },
        puntos: 50,
        frase: 'filtrarFiscal'
    },
    vacunarCupula: {
        id: 'vacunarCupula',
        nombre: 'Vacunar a la cúpula primero',
        descripcion: 'Adelantar la vacunación de altos cargos militares y diputados antes que sanitarios',
        categoria: 'tramas',
        disponibleDesde: 5,
        disponibleHasta: 6,
        coste: { popularidad: 10 },
        efecto: {
            playerResources: { ego: 15, enchufes: 5 },
            recursosGlobales: { sanidadDisponible: -3 }
        },
        puntos: 35,
        frase: 'cupulaVacuna'
    }
};

// Función idéntica a Boomermania
function getMejorasDisponibles(decada, playerResources, mejorasUsadas) {
    const disponibles = [];

    for (const [id, mejora] of Object.entries(mejorasData)) {
        if (mejora.disponibleDesde && decada < mejora.disponibleDesde) continue;
        if (mejora.disponibleHasta && decada > mejora.disponibleHasta) continue;

        if (!mejora.repeatable && mejorasUsadas.includes(id)) continue;

        if (mejora.requisitos) {
            let cumple = true;
            for (const [recurso, req] of Object.entries(mejora.requisitos)) {
                const valorActual = playerResources[recurso] || 0;
                if (typeof req === 'number') {
                    if (valorActual < req) cumple = false;
                } else if (typeof req === 'object') {
                    if (req.min !== undefined && valorActual < req.min) cumple = false;
                    if (req.max !== undefined && valorActual > req.max) cumple = false;
                }
            }
            if (!cumple) continue;
        }

        disponibles.push({ ...mejora, id });
    }

    return disponibles;
}
