584 lines
21 KiB
JavaScript
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;
|