// El Puro Drug, Recipe, Skill Tree & Achievement Configuration const DRUG_CATALOG = [ { id: 'weed', name: 'Cannabis (Weed)', category: 'botanical', icon: 'game-icons:cannabis', color: '#39ff14', rawName: 'Seeds & Soil', productName: 'Cured Bud', rawCost: 10, sellPrice: 16, unlockCost: 0, supplierName: 'Seed Courier', supplierCost: 75, supplyRate: 1.0, workerName: 'Grower', dealerName: 'Corner Pusher', workerCost: 100, dealerCost: 150, produceRate: 1.0, sellRate: 1.0, unlockedDefault: true }, { id: 'shrooms', name: 'Magic Mushrooms', category: 'botanical', icon: 'game-icons:mushroom-gills', color: '#a3e635', rawName: 'Spores & Grain', productName: 'Dried Caps', rawCost: 35, sellPrice: 65, unlockCost: 500, supplierName: 'Spore Forager', supplierCost: 300, supplyRate: 0.8, workerName: 'Mycologist', dealerName: 'Festival Plug', workerCost: 450, dealerCost: 650, produceRate: 0.8, sellRate: 0.8, unlockedDefault: false }, { id: 'adderall', name: 'Pharma Speed (Addy)', category: 'pharma', icon: 'game-icons:pills', color: '#f59e0b', rawName: 'Diverted Blisters', productName: 'Pressed Salts', rawCost: 120, sellPrice: 240, unlockCost: 2500, supplierName: 'Pharmacy Diverter', supplierCost: 1500, supplyRate: 0.6, workerName: 'Pharma Tech', dealerName: 'Campus Runner', workerCost: 2000, dealerCost: 3000, produceRate: 0.6, sellRate: 0.6, unlockedDefault: false }, { id: 'meth', name: 'Meth (Blue Sky)', category: 'synthetic', icon: 'game-icons:flasks', color: '#00e5ff', rawName: 'Methylamine & Sudafed', productName: 'Blue Shards', rawCost: 400, sellPrice: 950, unlockCost: 10000, supplierName: 'Chemical Smuggler', supplierCost: 6000, supplyRate: 0.5, workerName: 'Lab Cook', dealerName: 'Trailer Boss', workerCost: 8000, dealerCost: 12000, produceRate: 0.5, sellRate: 0.5, unlockedDefault: false }, { id: 'mdma', name: 'MDMA (Ecstasy)', category: 'party', icon: 'game-icons:pill', color: '#ec4899', rawName: 'Safrole Oil & Binder', productName: 'Tesla Presses', rawCost: 1200, sellPrice: 3200, unlockCost: 35000, supplierName: 'Safrole Importer', supplierCost: 20000, supplyRate: 0.4, workerName: 'Rave Chemist', dealerName: 'Club Promoter', workerCost: 28000, dealerCost: 40000, produceRate: 0.4, sellRate: 0.4, unlockedDefault: false }, { id: 'ketamine', name: 'Ketamine (Special K)', category: 'synthetic', icon: 'game-icons:test-tubes', color: '#8b5cf6', rawName: 'Veterinary Liquid', productName: 'Cooked Powder', rawCost: 3800, sellPrice: 11000, unlockCost: 120000, supplierName: 'Vet Clinic Insider', supplierCost: 75000, supplyRate: 0.35, workerName: 'Vet Contact', dealerName: 'Afterparty Plug', workerCost: 95000, dealerCost: 140000, produceRate: 0.35, sellRate: 0.35, unlockedDefault: false }, { id: 'cocaine', name: 'Cocaine (Pure White)', category: 'cartel', icon: 'game-icons:powder', color: '#ffffff', rawName: 'Andean Coca Paste', productName: 'Pure Flake', rawCost: 12000, sellPrice: 38000, unlockCost: 400000, supplierName: 'Jungle Smuggler', supplierCost: 250000, supplyRate: 0.3, workerName: 'Cartel Chemist', dealerName: 'VIP Broker', workerCost: 320000, dealerCost: 480000, produceRate: 0.3, sellRate: 0.3, unlockedDefault: false }, { id: 'crack', name: 'Crack Cocaine', category: 'street', icon: 'game-icons:rock', color: '#fbbf24', rawName: 'Flake & Ammonia Base', productName: 'Cooked Rocks', rawCost: 35000, sellPrice: 115000, unlockCost: 1200000, supplierName: 'Base Sourcing Crew', supplierCost: 700000, supplyRate: 0.25, workerName: 'Trap Master', dealerName: 'Block Captain', workerCost: 900000, dealerCost: 1400000, produceRate: 0.25, sellRate: 0.25, unlockedDefault: false }, { id: 'heroin', name: 'Heroin (Black Tar)', category: 'opioid', icon: 'game-icons:syringe', color: '#78350f', rawName: 'Raw Opium Latex', productName: 'Refined Tar', rawCost: 110000, sellPrice: 420000, unlockCost: 4500000, supplierName: 'Poppy Harvester', supplierCost: 2800000, supplyRate: 0.2, workerName: 'Poppy Refiner', dealerName: 'Network Distributor', workerCost: 3500000, dealerCost: 5500000, produceRate: 0.2, sellRate: 0.2, unlockedDefault: false }, { id: 'fentanyl', name: 'Fentanyl (The Apex)', category: 'synthetic', icon: 'game-icons:biohazard', color: '#ef4444', rawName: 'Hazardous Precursors', productName: 'Microgram Purity', rawCost: 450000, sellPrice: 2100000, unlockCost: 20000000, supplierName: 'Cartel Procurement Agent', supplierCost: 12000000, supplyRate: 0.15, workerName: 'Hazmat Synthesizer', dealerName: 'Ghost Syndicate', workerCost: 15000000, dealerCost: 24000000, produceRate: 0.15, sellRate: 0.15, unlockedDefault: false } ]; // Synthesis & Recipe Combinations const SYNTHESIS_RECIPES = [ { id: 'calvin_klein', name: 'Calvin Klein (CK)', ingredients: { cocaine: 5, ketamine: 5 }, batchOutput: 8, sellPrice: 95000, description: 'Elite blend of pure flake and horse tranquilizer. Elite nightclub hype.', icon: 'game-icons:two-shadows' }, { id: 'speedball', name: 'Speedball', ingredients: { heroin: 3, cocaine: 3 }, batchOutput: 5, sellPrice: 850000, description: 'Lethal upper-downer cocktail. Highly sought after by desperate spenders.', icon: 'game-icons:lightning-trio' }, { id: 'candy_flip', name: 'Candy Flip', ingredients: { shrooms: 15, mdma: 10 }, batchOutput: 15, sellPrice: 75000, description: 'Psychedelic empathogen fusion. Raves pay top dollar instantly.', icon: 'game-icons:sparkles' } ]; // Branching Skill Tree (The Spiderweb) const SKILL_TREE = [ // Chemist Branch { id: 'chem_1', branch: 'chemist', name: 'Lab Grade Glassware', desc: '+15% Production speed across all labs.', cost: 500, prereqs: [], applied: false }, { id: 'chem_2', branch: 'chemist', name: 'Precursor Synthesis', desc: '-15% Raw material costs globally.', cost: 15000, prereqs: ['chem_1'], applied: false }, { id: 'chem_3', branch: 'chemist', name: '99.1% Crystallization', desc: '10% chance on manual or worker tick to produce 3x product yield.', cost: 250000, prereqs: ['chem_2'], applied: false }, // Kingpin Branch { id: 'king_1', branch: 'kingpin', name: 'Corner Lookouts', desc: '+20% Dealer selling throughput.', cost: 1000, prereqs: [], applied: false }, { id: 'king_2', branch: 'kingpin', name: 'Bulk Wholesaling', desc: '+25% Selling price on all products.', cost: 35000, prereqs: ['king_1'], applied: false }, { id: 'king_3', branch: 'kingpin', name: 'Monopoly Territory', desc: 'Auto-dealers consume product and generate cash 50% faster.', cost: 600000, prereqs: ['king_2'], applied: false }, // Smuggler Branch { id: 'smug_1', branch: 'smuggler', name: 'Burner Relay', desc: 'Police Heat rises 35% slower.', cost: 2000, prereqs: [], applied: false }, { id: 'smug_2', branch: 'smuggler', name: 'Bribe Network', desc: 'Police raid bribe costs reduced by 50%.', cost: 50000, prereqs: ['smug_1'], applied: false }, { id: 'smug_3', branch: 'smuggler', name: 'Swiss Shell Corp', desc: 'Money Laundering converts dirty cash with +50% more Clean Bonds.', cost: 1000000, prereqs: ['smug_2'], applied: false } ]; // --- UNIT MILESTONES (1, 5, 10, 25, 50, 100...) --- const UNIT_MILESTONES = [1, 5, 10, 25, 50, 100, 200, 300, 400, 500, 750, 1000, 1500, 2000]; // --- CLEVER HELPERS (AI Syndicate Advisors & Automated Assistants) --- const CLEVER_HELPERS = [ { id: 'bulk_buyer', name: 'Logistics Quartermaster', title: 'Bulk Procurement & Multi-Buying', icon: 'game-icons:cargo-crate', cost: 2500, desc: 'Unlocks advanced bulk purchasing pipelines (10x, 100x, Next Milestone, and Max Affordable) across all raw suppliers, lab technicians, and street dealers.', feature: 'Multi-Unit Bulk Purchases' }, { id: 'roi_advisor', name: 'Cartel Quant / ROI Advisor', title: 'Real-Time Capital Efficiency Engine', icon: 'game-icons:progression', cost: 15000, desc: 'Calculates marginal cost per revenue gain ($ / $/s) across raw procurement, production facilities, and street distribution to highlight the optimal investment right now.', feature: 'Live ROI Analytics & Best Target Recommendation' }, { id: 'smart_allocator', name: 'Chief Syndicate Strategist', title: 'Portfolio Percentage Allocation', icon: 'game-icons:chess-king', cost: 75000, desc: 'Empowers one-click instant investments of 10%, 25%, 50%, or 100% of available cash into the highest-ROI units automatically.', feature: '10% / 25% / 50% / 100% Cash Portfolio Injection' } ]; // --- SWISS OFFSHORE PERKS (Permanent upgrades bought with Clean Bonds) --- const OFFSHORE_PERKS = [ { id: 'swiss_vault', name: 'Swiss Vault Secrecy', icon: 'game-icons:safe', desc: 'Heavy suppression on police surveillance. Heat rises slower during all operations.', costs: [1, 3, 8, 20, 50], bonusPerLevel: 0.12, formatBonus: (lvl) => `-${lvl * 12}% Heat Rise` }, { id: 'auto_contracts', name: 'Procurement Pipeline', icon: 'game-icons:conveyor-belt', desc: 'Unlocking drug formulas grants free starter suppliers & workers immediately.', costs: [2, 5, 12, 30], bonusPerLevel: 1, formatBonus: (lvl) => `+${lvl} Free Starter Suppliers & Workers` }, { id: 'corrupt_judiciary', name: 'Corrupt Judiciary', icon: 'game-icons:judge-wig', desc: 'Discounts on police raid bribes and lighter consequences during blockades.', costs: [2, 6, 15, 40], bonusPerLevel: 0.20, formatBonus: (lvl) => `-${lvl * 20}% Raid Bribe Cost` }, { id: 'bulk_discount', name: 'Wholesale Black Market', icon: 'game-icons:price-tag', desc: 'Reduces unit price scaling factor from 1.15 down towards 1.11.', costs: [5, 15, 35, 80], bonusPerLevel: 0.01, formatBonus: (lvl) => `Scaling: ${(1.15 - lvl * 0.01).toFixed(2)}x (was 1.15x)` }, { id: 'compound_interest', name: 'Compound Bond Yield', icon: 'game-icons:gold-bar', desc: 'Each Clean Bond yields an extra +2% global sales multiplier.', costs: [4, 10, 25, 60, 150], bonusPerLevel: 0.02, formatBonus: (lvl) => `+${(4 + lvl * 2)}% Global Sales / Bond` } ]; // --- MULTI-TIERED TROPHIES & ACHIEVEMENTS --- const ACHIEVEMENT_TIERS = [ { id: 'dirty_empire', name: 'Dirty Empire', category: 'finance', icon: 'game-icons:money-stack', desc: 'Accumulate career revenue.', statKey: 'totalEarned', formatValue: (v) => `$${fmtNum(v)}`, tiers: [ { req: 10000, name: 'Street Hustler', rewardDesc: '+5% Global Sales Value', bonusType: 'sell_multi', bonusVal: 0.05 }, { req: 250000, name: 'Trap Lord', rewardDesc: '+10% Global Sales Value', bonusType: 'sell_multi', bonusVal: 0.10 }, { req: 5000000, name: 'Syndicate Boss', rewardDesc: '+15% Global Sales Value', bonusType: 'sell_multi', bonusVal: 0.15 }, { req: 100000000, name: 'Kingpin of Kings', rewardDesc: '+25% Global Sales Value', bonusType: 'sell_multi', bonusVal: 0.25 }, { req: 1000000000, name: 'El Puro Supremo', rewardDesc: '+50% Global Sales Value', bonusType: 'sell_multi', bonusVal: 0.50 } ] }, { id: 'master_synthesizer', name: 'Master Synthesizer', category: 'production', icon: 'game-icons:flask', desc: 'Synthesize product in active labs.', statKey: 'totalProduced', formatValue: (v) => `${fmtNum(v)}g`, tiers: [ { req: 100, name: 'Test Tube Cook', rewardDesc: '+5% Production Speed', bonusType: 'prod_multi', bonusVal: 0.05 }, { req: 1000, name: 'Lab Technician', rewardDesc: '+10% Production Speed', bonusType: 'prod_multi', bonusVal: 0.10 }, { req: 15000, name: 'Chief Chemist', rewardDesc: '+15% Production Speed', bonusType: 'prod_multi', bonusVal: 0.15 }, { req: 200000, name: 'Industrial Alchemist', rewardDesc: '+25% Production Speed', bonusType: 'prod_multi', bonusVal: 0.25 }, { req: 2500000, name: 'Synthesis God', rewardDesc: '+50% Production Speed', bonusType: 'prod_multi', bonusVal: 0.50 } ] }, { id: 'street_monopoly', name: 'Corner Network', category: 'distribution', icon: 'game-icons:hand-truck', desc: 'Distribute grams on the streets.', statKey: 'totalSold', formatValue: (v) => `${fmtNum(v)}g`, tiers: [ { req: 100, name: 'Corner Pitcher', rewardDesc: '+5% Dealer Throughput', bonusType: 'dealer_speed', bonusVal: 0.05 }, { req: 1500, name: 'Neighborhood Hub', rewardDesc: '+10% Dealer Throughput', bonusType: 'dealer_speed', bonusVal: 0.10 }, { req: 25000, name: 'Metropolitan Monopoly', rewardDesc: '+15% Dealer Throughput', bonusType: 'dealer_speed', bonusVal: 0.15 }, { req: 300000, name: 'Continental Route', rewardDesc: '+25% Dealer Throughput', bonusType: 'dealer_speed', bonusVal: 0.25 }, { req: 3000000, name: 'Global Cartel Distribution', rewardDesc: '+50% Dealer Throughput', bonusType: 'dealer_speed', bonusVal: 0.50 } ] }, { id: 'supply_baron', name: 'Supply Chain Baron', category: 'logistics', icon: 'game-icons:sprout', desc: 'Harvest & cultivate raw materials via suppliers.', statKey: 'totalSupplied', formatValue: (v) => `${fmtNum(v)} raw`, tiers: [ { req: 250, name: 'Seedling Sprout', rewardDesc: '+5% Supplier Speed', bonusType: 'supplier_speed', bonusVal: 0.05 }, { req: 3000, name: 'Greenhouse Fleet', rewardDesc: '+10% Supplier Speed', bonusType: 'supplier_speed', bonusVal: 0.10 }, { req: 50000, name: 'Agricultural Consortium', rewardDesc: '+15% Supplier Speed', bonusType: 'supplier_speed', bonusVal: 0.15 }, { req: 500000, name: 'Precursor Monopoly', rewardDesc: '+25% Supplier Speed', bonusType: 'supplier_speed', bonusVal: 0.25 } ] }, { id: 'vault_hoarder', name: 'Liquid Vault', category: 'finance', icon: 'game-icons:vault', desc: 'Hold liquid cash simultaneously on hand.', statKey: 'cash', formatValue: (v) => `$${fmtNum(v)}`, tiers: [ { req: 50000, name: 'Shoebox Stash', rewardDesc: '-5% Raw Material Costs', bonusType: 'raw_discount', bonusVal: 0.05 }, { req: 500000, name: 'Duffel Bag Stack', rewardDesc: '-10% Raw Material Costs', bonusType: 'raw_discount', bonusVal: 0.10 }, { req: 10000000, name: 'Private Bank Vault', rewardDesc: '-15% Raw Material Costs', bonusType: 'raw_discount', bonusVal: 0.15 }, { req: 250000000, name: 'Central Bank Infiltrator', rewardDesc: '-25% Raw Material Costs', bonusType: 'raw_discount', bonusVal: 0.25 } ] }, { id: 'syndicate_army', name: 'Syndicate Army', category: 'workforce', icon: 'game-icons:crowd-dive', desc: 'Hire total workforce (Suppliers + Workers + Dealers).', statKey: 'totalPersonnel', formatValue: (v) => `${fmtInt(v)} staff`, tiers: [ { req: 25, name: 'Crew of 25', rewardDesc: '+5% All Unit Speeds', bonusType: 'all_speed', bonusVal: 0.05 }, { req: 100, name: 'Centurion 100', rewardDesc: '+10% All Unit Speeds', bonusType: 'all_speed', bonusVal: 0.10 }, { req: 500, name: 'Battalion 500', rewardDesc: '+15% All Unit Speeds', bonusType: 'all_speed', bonusVal: 0.15 }, { req: 2500, name: 'Legion 2,500', rewardDesc: '+25% All Unit Speeds', bonusType: 'all_speed', bonusVal: 0.25 } ] }, { id: 'purity_legend', name: '99.1% Crystallization', category: 'chemistry', icon: 'game-icons:crystal-growth', desc: 'Trigger rare 3x Purity Syntheses.', statKey: 'purityProcs', formatValue: (v) => `${fmtInt(v)} procs`, tiers: [ { req: 5, name: 'Blue Crystal Spark', rewardDesc: '+2% Extra 3x Proc Chance', bonusType: 'proc_chance', bonusVal: 0.02 }, { req: 25, name: 'Glass Master', rewardDesc: '+4% Extra 3x Proc Chance', bonusType: 'proc_chance', bonusVal: 0.04 }, { req: 100, name: 'Cook of Legend', rewardDesc: '+8% Extra 3x Proc Chance', bonusType: 'proc_chance', bonusVal: 0.08 }, { req: 500, name: 'Absolute 100% Purity', rewardDesc: '+15% Extra 3x Proc Chance', bonusType: 'proc_chance', bonusVal: 0.15 } ] }, { id: 'shadow_cartel', name: 'Heat Evasion', category: 'stealth', icon: 'game-icons:police-officer-head', desc: 'Survive raids by bribe or breakout.', statKey: 'raidsSurvived', formatValue: (v) => `${fmtInt(v)} survived`, tiers: [ { req: 3, name: 'Friendly Sheriff', rewardDesc: '-10% Police Heat Generation', bonusType: 'heat_reduction', bonusVal: 0.10 }, { req: 10, name: 'Bought Precinct', rewardDesc: '-20% Police Heat Generation', bonusType: 'heat_reduction', bonusVal: 0.20 }, { req: 30, name: 'Immunity Pass', rewardDesc: '-35% Police Heat Generation', bonusType: 'heat_reduction', bonusVal: 0.35 } ] }, { id: 'swiss_kingpin', name: 'Swiss Laundromat', category: 'prestige', icon: 'game-icons:tied-scroll', desc: 'Perform Offshore Prestige Laundering.', statKey: 'prestigeCount', formatValue: (v) => `${fmtInt(v)} resets`, tiers: [ { req: 1, name: 'First Swiss Wire', rewardDesc: '+$250 Starting Cash on Reset', bonusType: 'prestige_start_cash', bonusVal: 250 }, { req: 3, name: 'Geneva Account', rewardDesc: '+$2,500 Starting Cash on Reset', bonusType: 'prestige_start_cash', bonusVal: 2500 }, { req: 10, name: 'Zurich Private Vault', rewardDesc: '+$25,000 Starting Cash on Reset', bonusType: 'prestige_start_cash', bonusVal: 25000 }, { req: 25, name: 'Shadow World Bank', rewardDesc: '+$250,000 Starting Cash on Reset', bonusType: 'prestige_start_cash', bonusVal: 250000 } ] }, { id: 'formula_expansion', name: 'Cartel Formulary', category: 'discovery', icon: 'game-icons:dna1', desc: 'Unlock classified substance formulas.', statKey: 'unlockedCount', formatValue: (v) => `${fmtInt(v)} / 10 formulas`, tiers: [ { req: 3, name: '3 Formulas Mastered', rewardDesc: '+5% All Production', bonusType: 'prod_multi', bonusVal: 0.05 }, { req: 6, name: '6 Formulas Mastered', rewardDesc: '+10% All Production', bonusType: 'prod_multi', bonusVal: 0.10 }, { req: 8, name: '8 Formulas Mastered', rewardDesc: '+15% All Production', bonusType: 'prod_multi', bonusVal: 0.15 }, { req: 10, name: 'Apex Spectrum (All 10)', rewardDesc: '+30% All Production', bonusType: 'prod_multi', bonusVal: 0.30 } ] } ]; // Backwards-compatibility alias const ACHIEVEMENTS = ACHIEVEMENT_TIERS;