ProductionGame/frontend/js/config.js

584 lines
21 KiB
JavaScript

// 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;