// --- DATOS DE PRIVILEGIOS (Sistema de Ascensión) ---
// Privilegios del Estado Profundo - bonificaciones permanentes entre runs

const privilegiosData = {
    // === TIER 1 (1-5 Casta) - Básicos ===
    maletin_andorra: {
        id: 'maletin_andorra',
        name: "Maletín de Andorra",
        emoji: "💼",
        desc: "+5% VPS permanente",
        cost: 1,
        tier: 1,
        effect: { vpsMultiplier: 0.05 }
    },
    cuenta_suiza: {
        id: 'cuenta_suiza',
        name: "Cuenta en Suiza",
        emoji: "🏦",
        desc: "-5% coste edificios",
        cost: 2,
        tier: 1,
        effect: { costReduction: 0.05 }
    },
    contacto_hacienda: {
        id: 'contacto_hacienda',
        name: "Contacto en Hacienda",
        emoji: "🧾",
        desc: "+1 voto/click",
        cost: 3,
        tier: 1,
        effect: { clickBonus: 1 }
    },
    heredero_regimen: {
        id: 'heredero_regimen',
        name: "Heredero del Régimen",
        emoji: "👑",
        desc: "Empiezas con 10K votos",
        cost: 4,
        tier: 1,
        effect: { startingVotes: 10000 }
    },
    la_paguita: {
        id: 'la_paguita',
        name: "La Paguita",
        emoji: "💸",
        desc: "+1 VPS sin edificios",
        cost: 5,
        tier: 1,
        effect: { baseVps: 1 }
    },

    // === TIER 2 (10-25 Casta) - Intermedios ===
    red_chiringuitos: {
        id: 'red_chiringuitos',
        name: "Red de Chiringuitos",
        emoji: "🏖️",
        desc: "Primeros 5 edificios -50% coste",
        cost: 10,
        tier: 2,
        effect: { earlyBuildingDiscount: 0.5, earlyBuildingCount: 5 }
    },
    puerta_giratoria: {
        id: 'puerta_giratoria',
        name: "Puerta Giratoria",
        emoji: "🚪",
        desc: "+25% VPS de Fiscalía/Eurodiputado",
        cost: 15,
        tier: 2,
        effect: { buildingBonus: { fiscalia: 0.25, eurodiputado: 0.25 } }
    },
    amigos_bruselas: {
        id: 'amigos_bruselas',
        name: "Amigos en Bruselas",
        emoji: "🇪🇺",
        desc: "-20% growth rivales permanente",
        cost: 20,
        tier: 2,
        effect: { rivalGrowthReduction: 0.20 }
    },
    aforamiento_blindado: {
        id: 'aforamiento_blindado',
        name: "Aforamiento Blindado",
        emoji: "🛡️",
        desc: "Eventos negativos -30% impacto",
        cost: 25,
        tier: 2,
        effect: { negativeEventReduction: 0.30 }
    },
    dedos_de_oro: {
        id: 'dedos_de_oro',
        name: "Dedos de Oro",
        emoji: "👆",
        desc: "+2% VPS por click permanente",
        cost: 40,
        tier: 2,
        effect: { clickVpsRatioBonus: 0.02 }
    },

    // === TIER 3 (50-100 Casta) - Avanzados ===
    conexion_casa_real: {
        id: 'conexion_casa_real',
        name: "Conexión Casa Real",
        emoji: "🏰",
        desc: "Desbloquea edificio Emérito (5000 VPS)",
        cost: 50,
        tier: 3,
        effect: { unlockBuilding: 'emerito' }
    },
    control_cis: {
        id: 'control_cis',
        name: "Control del CIS",
        emoji: "📈",
        desc: "+50% efectividad upgrades",
        cost: 75,
        tier: 3,
        effect: { upgradeEffectiveness: 0.50 }
    },
    estado_profundo: {
        id: 'estado_profundo',
        name: "Estado Profundo",
        emoji: "🐙",
        desc: "Casta ganada x1.5",
        cost: 80,
        tier: 3,
        effect: { castaMultiplier: 0.50 }
    },
    red_colegas: {
        id: 'red_colegas',
        name: "Red de Colegas",
        emoji: "🤝",
        desc: "Empiezas con 3 Charos + 2 Aliades gratis",
        cost: 100,
        tier: 3,
        effect: { startingBuildings: { charo: 3, aliade: 2 } }
    },

    // === TIER 4 (200-500 Casta) - Elite ===
    pacto_masonico: {
        id: 'pacto_masonico',
        name: "Pacto Masónico",
        emoji: "🔺",
        desc: "Desbloquea Logia del 33 (10000 VPS)",
        cost: 200,
        tier: 4,
        effect: { unlockBuilding: 'logia33' }
    },
    sanchismo_eterno: {
        id: 'sanchismo_eterno',
        name: "Sanchismo Eterno",
        emoji: "♾️",
        desc: "+100% VPS, pero victoria a 75M",
        cost: 300,
        tier: 4,
        effect: { vpsMultiplier: 1.00, victoryThresholdIncrease: 25000000 }
    },
    golpe_estado: {
        id: 'golpe_estado',
        name: "Golpe de Estado",
        emoji: "⚔️",
        desc: "Elimina UN rival permanentemente por run",
        cost: 500,
        tier: 4,
        effect: { eliminateRival: true }
    },

    // === PRIVILEGIOS VOX (requieren jugar como VOX) ===
    ejercito_nacional: {
        id: 'ejercito_nacional',
        name: "Ejército Nacional",
        emoji: "🪖",
        desc: "+15% VPS (solo VOX)",
        cost: 30,
        tier: 2,
        partyExclusive: 'vox',
        effect: { vpsMultiplier: 0.15 }
    },
    fundacion_denaes: {
        id: 'fundacion_denaes',
        name: "Fundación DENAES",
        emoji: "🏢",
        desc: "Edificios patriotas +25% VPS (solo VOX)",
        cost: 60,
        tier: 3,
        partyExclusive: 'vox',
        effect: { buildingBonus: { guardia_civil: 0.25, ejercito: 0.25, reconquista: 0.25 } }
    },
    abascal_legado: {
        id: 'abascal_legado',
        name: "Legado de Abascal",
        emoji: "🐴",
        desc: "Empiezas con 25K votos (solo VOX)",
        cost: 100,
        tier: 3,
        partyExclusive: 'vox',
        effect: { startingVotes: 25000 }
    },

    // === PRIVILEGIOS PODEMOS (requieren jugar como Podemos) ===
    pueblo_unido_priv: {
        id: 'pueblo_unido_priv',
        name: "Pueblo Unido",
        emoji: "✊",
        desc: "+15% VPS (solo Podemos)",
        cost: 30,
        tier: 2,
        partyExclusive: 'podemos',
        effect: { vpsMultiplier: 0.15 }
    },
    fundacion_ceps: {
        id: 'fundacion_ceps',
        name: "Fundación CEPS",
        emoji: "📚",
        desc: "Edificios sociales +25% VPS (solo Podemos)",
        cost: 60,
        tier: 3,
        partyExclusive: 'podemos',
        effect: { buildingBonus: { plaza_podemos: 0.25, colectivo_lgtbi: 0.25, red_socialista: 0.25 } }
    },
    iglesias_legado: {
        id: 'iglesias_legado',
        name: "Legado de Iglesias",
        emoji: "📺",
        desc: "Empiezas con 25K votos (solo Podemos)",
        cost: 100,
        tier: 3,
        partyExclusive: 'podemos',
        effect: { startingVotes: 25000 }
    }
};

// Edificios desbloqueables por privilegios
const ascensionBuildingsData = {
    emerito: {
        name: "Emérito en Abu Dabi",
        emoji: "👴",
        cost: 10000000,
        baseCost: 10000000,
        baseVps: 5000,
        desc: "Influencia desde el exilio dorado.",
        requiresPrivilege: 'conexion_casa_real'
    },
    logia33: {
        name: "Logia del 33",
        emoji: "🔺",
        cost: 50000000,
        baseCost: 50000000,
        baseVps: 10000,
        desc: "El poder detrás del poder.",
        requiresPrivilege: 'pacto_masonico'
    }
};

// Helper: calcular poder total de privilegios comprados
function calcularPoderTotal() {
    if (!gameState.privilegiosComprados) return 0;
    let poder = 0;
    for (const privId of gameState.privilegiosComprados) {
        const priv = privilegiosData[privId];
        if (priv) poder += priv.cost;
    }
    return poder;
}

// Helper: calcular Casta que se ganaría al ascender
function calcularCastaPreview() {
    let totalVotos = partidos[partidoElegido].votos;

    // Si completó gobierno, usar los votos con los que empezó (antes de perderlos)
    if (gameState.governmentCompleted && gameState.governmentStartVotos >= VICTORIA_VOTOS) {
        totalVotos = gameState.governmentStartVotos;
    }

    if (totalVotos < VICTORIA_VOTOS) return 0;

    // Base: sqrt(votos / 10M)
    let casta = Math.floor(Math.sqrt(totalVotos / 10000000));

    // Bonus por edificios totales (cada 50 edificios = +1)
    let totalEdificios = 0;
    for (let key in gameState.buildings) {
        totalEdificios += gameState.buildings[key].count || 0;
    }
    casta += Math.floor(totalEdificios / 50);

    // Bonus por upgrades comprados
    let upgradesComprados = 0;
    for (let key in gameState.upgrades) {
        if (gameState.upgrades[key].bought) upgradesComprados++;
    }
    casta += upgradesComprados;

    // Multiplicador por privilegio Estado Profundo
    if (gameState.privilegiosComprados && gameState.privilegiosComprados.includes('estado_profundo')) {
        casta = Math.floor(casta * 1.5);
    }

    return casta;
}

// Helper: obtener Casta disponible para gastar
function getCastaDisponible() {
    return (gameState.castaAcumulada || 0) - (gameState.castaGastada || 0);
}

// Helper: verificar si un privilegio está comprado
function tienePrivilegio(privId) {
    return gameState.privilegiosComprados && gameState.privilegiosComprados.includes(privId);
}

// Helper: calcular todos los bonuses de privilegios activos
function calcularBonusesPrivilegios() {
    const bonuses = {
        vpsMultiplier: 0,
        costReduction: 0,
        clickBonus: 0,
        clickVpsRatioBonus: 0,
        startingVotes: 0,
        baseVps: 0,
        earlyBuildingDiscount: 0,
        earlyBuildingCount: 0,
        buildingBonus: {},
        rivalGrowthReduction: 0,
        negativeEventReduction: 0,
        upgradeEffectiveness: 0,
        castaMultiplier: 0,
        victoryThresholdIncrease: 0,
        startingBuildings: {},
        unlockedBuildings: [],
        eliminateRival: false
    };

    if (!gameState.privilegiosComprados) return bonuses;

    for (const privId of gameState.privilegiosComprados) {
        const priv = privilegiosData[privId];
        if (!priv || !priv.effect) continue;

        const eff = priv.effect;

        if (eff.vpsMultiplier) bonuses.vpsMultiplier += eff.vpsMultiplier;
        if (eff.costReduction) bonuses.costReduction += eff.costReduction;
        if (eff.clickBonus) bonuses.clickBonus += eff.clickBonus;
        if (eff.clickVpsRatioBonus) bonuses.clickVpsRatioBonus += eff.clickVpsRatioBonus;
        if (eff.startingVotes) bonuses.startingVotes += eff.startingVotes;
        if (eff.baseVps) bonuses.baseVps += eff.baseVps;
        if (eff.earlyBuildingDiscount) {
            bonuses.earlyBuildingDiscount = Math.max(bonuses.earlyBuildingDiscount, eff.earlyBuildingDiscount);
            bonuses.earlyBuildingCount = Math.max(bonuses.earlyBuildingCount, eff.earlyBuildingCount || 0);
        }
        if (eff.buildingBonus) {
            for (const [bldg, mult] of Object.entries(eff.buildingBonus)) {
                bonuses.buildingBonus[bldg] = (bonuses.buildingBonus[bldg] || 0) + mult;
            }
        }
        if (eff.rivalGrowthReduction) bonuses.rivalGrowthReduction += eff.rivalGrowthReduction;
        if (eff.negativeEventReduction) bonuses.negativeEventReduction += eff.negativeEventReduction;
        if (eff.upgradeEffectiveness) bonuses.upgradeEffectiveness += eff.upgradeEffectiveness;
        if (eff.castaMultiplier) bonuses.castaMultiplier += eff.castaMultiplier;
        if (eff.victoryThresholdIncrease) bonuses.victoryThresholdIncrease += eff.victoryThresholdIncrease;
        if (eff.startingBuildings) {
            for (const [bldg, count] of Object.entries(eff.startingBuildings)) {
                bonuses.startingBuildings[bldg] = (bonuses.startingBuildings[bldg] || 0) + count;
            }
        }
        if (eff.unlockBuilding) {
            bonuses.unlockedBuildings.push(eff.unlockBuilding);
        }
        if (eff.eliminateRival) bonuses.eliminateRival = true;
    }

    return bonuses;
}

// Helper: calcular escalado de dificultad basado en poder
function calcularEscaladoDificultad() {
    let poder = calcularPoderTotal();

    // Reducir poder por cada reset de dificultad (50% acumulativo)
    const resets = gameState.dificultadResetCount || 0;
    if (resets > 0) {
        poder *= Math.pow(0.5, resets);
    }

    return {
        // IA growth bonus: +0.5% por punto de poder, cap 50% (antes +1.5%/150%)
        aiGrowthBonus: Math.min(poder * 0.005, 0.5),
        // Rivales empiezan con ventaja: 1K por punto de poder, cap 500K (antes 10K/3M)
        rivalStartBonus: Math.min(poder * 1000, 500000),
        // Multiplicador de costes: +0.5% por punto de poder, cap 50% (1.5x)
        costMultiplier: 1 + Math.min(poder * 0.005, 0.5)
    };
}

// Resetear escalado de dificultad (reduce poder en 50%)
function resetEscaladoDificultad() {
    const currentResets = gameState.dificultadResetCount || 0;
    const maxResets = 5; // Máximo 5 resets (poder reducido a ~3%)

    if (currentResets >= maxResets) {
        return false;
    }

    gameState.dificultadResetCount = currentResets + 1;

    // Guardar el juego
    if (typeof saveGame === 'function') {
        saveGame();
    }

    return true;
}
