Mastering Foxhole Logistics: The Ultimate Calculator Guide
In the persistent war game Foxhole, logistics (Logi) is the lifeblood of the war effort. Every rifle, bandage, and tank shell must be manufactured by players from raw resources. Whether you are a solo scraper or a regiment quartermaster, calculating the exact amount of raw materials needed for a Mass Production Factory (MPF) queue is critical to efficiency.
This Foxhole Logi Calculator helps you plan your production runs by converting crate costs into raw gathering requirements (Scrap, Components, Sulfur). It accounts for the varying costs of Basic Materials (Bmats), Refined Materials (Rmats), and Explosive Materials (Emats/HEmats).
Understanding the Ratios
To use this calculator effectively, it helps to understand the standard refinery ratios used in the game logic:
Components to Rmats: 20:1 ratio. (20 Components = 1 Rmat).
Sulfur to HEmats: 20:1 ratio. (20 Sulfur = 1 HEmat).
Salvage to Emats: 10:1 ratio (approximate standard, varies by refinery queue bonus but treated as base 10:1 for planning).
How to Use the Calculator
Select a Preset (Optional): Choose a common item like "Soldier Supplies" or "120mm Artillery" to auto-fill the material costs per crate.
Enter Crate Count: Input how many crates you intend to produce. For a full MPF queue, this is usually 9 queues of 5-9 crates depending on the category.
Apply MPF Discount: If you are using the Mass Production Factory, you get a discount for queuing multiple crates. A full queue can offer up to a ~50% discount on Bmat/Rmat costs. Enter the percentage (e.g., 40 or 50) to adjust the requirements.
Review Output: The calculator breaks down exactly how much raw scrap, components, or sulfur you need to mine, and how many truck trips it will take to transport the finished crates.
Logistics Efficiency Tips
Experienced logi players know that "Scrooping" (gathering scrap) is only half the battle. Transport efficiency is key. Remember that a standard logistics truck carries 15 slots. Most crates stack to 1, but raw materials stack to 100. Using a Flatbed with a Shipping Container allows you to move 60 crates at once, significantly reducing travel time to the front lines.
Note: Game updates can occasionally tweak costs and ratios. Always verify current war recipe costs at the factory interface.
function loadPreset() {
var preset = document.getElementById('itemPreset').value;
var bmatInput = document.getElementById('bmatCost');
var rmatInput = document.getElementById('rmatCost');
var ematInput = document.getElementById('ematCost');
var hematInput = document.getElementById('hematCost');
// Reset
if (preset === 'custom') {
bmatInput.value = 0;
rmatInput.value = 0;
ematInput.value = 0;
hematInput.value = 0;
return;
}
// Preset Data (Approximations based on standard Vanilla Foxhole)
var presets = {
'shirts': { b: 80, r: 0, e: 0, h: 0 }, // Soldier Supplies
'rifle': { b: 100, r: 0, e: 0, h: 0 }, // Standard Rifle
'ammo762': { b: 40, r: 0, e: 0, h: 0 }, // 7.62mm
'gsupps': { b: 75, r: 0, e: 0, h: 0 }, // Garrison Supplies (Msupps merged)
'40mm': { b: 160, r: 0, e: 120, h: 0 }, // 40mm Tank Shell
'120mm': { b: 60, r: 0, e: 10, h: 0 }, // Artillery Shell (varies widely, using approx)
'rpg': { b: 60, r: 0, e: 75, h: 0 }, // RPG
'sticky': { b: 50, r: 0, e: 50, h: 0 } // Sticky Bomb
};
if (presets[preset]) {
bmatInput.value = presets[preset].b;
rmatInput.value = presets[preset].r;
ematInput.value = presets[preset].e;
hematInput.value = presets[preset].h;
}
}
function calculateLogi() {
// Get Inputs
var crateCount = parseFloat(document.getElementById('crateCount').value) || 0;
var discountPercent = parseFloat(document.getElementById('mpfDiscount').value) || 0;
var bmatCost = parseFloat(document.getElementById('bmatCost').value) || 0;
var rmatCost = parseFloat(document.getElementById('rmatCost').value) || 0;
var ematCost = parseFloat(document.getElementById('ematCost').value) || 0;
var hematCost = parseFloat(document.getElementById('hematCost').value) || 0;
// Apply Discount Factor (MPF Discount applies to material cost)
// Note: In Foxhole, discounts apply to Bmats/Rmats/Emats/HEmats usually.
var discountFactor = 1 – (discountPercent / 100);
// Total Material Calculation
var totalBmats = Math.ceil(crateCount * bmatCost * discountFactor);
var totalRmats = Math.ceil(crateCount * rmatCost * discountFactor);
var totalEmats = Math.ceil(crateCount * ematCost * discountFactor);
var totalHemats = Math.ceil(crateCount * hematCost * discountFactor);
// Raw Resource Ratios
// Scrap -> Bmat = 2:1
// Scrap -> Emat = 10:1 (Base refinery rate)
// Comp -> Rmat = 20:1
// Sulfur -> HEmat = 20:1
var scrapForBmats = totalBmats * 2;
var scrapForEmats = totalEmats * 10;
var totalScrap = scrapForBmats + scrapForEmats;
var totalComps = totalRmats * 20;
var totalSulfur = totalHemats * 20;
// Transport Calculation
// Truck = 15 slots (Logi truck)
// Container = 60 crates
var truckTrips = Math.ceil(crateCount / 15);
var containerTrips = Math.ceil(crateCount / 60);
// Update UI
document.getElementById('resBmats').innerText = totalBmats.toLocaleString();
document.getElementById('resRmats').innerText = totalRmats.toLocaleString();
document.getElementById('resEmats').innerText = totalEmats.toLocaleString();
document.getElementById('resHemats').innerText = totalHemats.toLocaleString();
document.getElementById('rawScrap').innerText = totalScrap.toLocaleString();
document.getElementById('rawComps').innerText = totalComps.toLocaleString();
document.getElementById('rawSulfur').innerText = totalSulfur.toLocaleString();
document.getElementById('truckTrips').innerText = truckTrips;
document.getElementById('containerTrips').innerText = containerTrips;
// Show Results
document.getElementById('resultsSection').style.display = 'block';
}