Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Expedition Calculator</title>
- <style>
- body {
- font-family: Arial, sans-serif;
- margin: 20px;
- }
- .container {
- max-width: 600px;
- margin: 0 auto;
- padding: 20px;
- border: 1px solid #ccc;
- border-radius: 8px;
- background-color: #333;
- }
- .form-group {
- margin-bottom: 10px;
- }
- label {
- display: block;
- margin-bottom: 5px;
- }
- select, input[type="number"], input[type="checkbox"] {
- width: calc(100% - 20px);
- padding: 8px;
- box-sizing: border-box;
- margin-bottom: 5px;
- }
- button {
- padding: 10px 20px;
- margin-top: 10px;
- display: block;
- width: 100%;
- background-color: #007bff;
- color: #fff;
- border: none;
- border-radius: 4px;
- cursor: pointer;
- }
- button:hover {
- background-color: #0056b3;
- }
- .result {
- margin-top: 20px;
- padding: 10px;
- background-color: #444;
- border: 1px solid #ccc;
- border-radius: 4px;
- }
- body {
- background-color: #222;
- color: #fff;
- font-family: Arial, sans-serif;
- max-width: 800px; /* Set maximum width */
- margin: 0 auto; /* Center content */
- padding: 20px; /* Add some padding */
- }
- table {
- width: 100%;
- border-collapse: collapse;
- }
- th, td {
- border: 1px solid #444;
- padding: 8px;
- text-align: left;
- }
- th {
- background-color: #333;
- }
- h1, h2, h3 {
- color: #fff;
- }
- div {
- margin-bottom: 20px;
- }
- </style>
- </head>
- <body>
- <div class="container">
- <h1>Expedition Calculator</h1>
- <div class="form-group">
- <label for="top-points">Top 1 Player Points:</label>
- <select id="top-points">
- <option value="2500">Less than 100k</option>
- <option value="6000">Less than 1M</option>
- <option value="9000">Less than 5M</option>
- <option value="12000">Less than 25M</option>
- <option value="15000">Less than 50M</option>
- <option value="18000">Less than 75M</option>
- <option value="21000">Less than 100M</option>
- <option value="25000">More than 100M</option>
- </select>
- </div>
- <div class="form-group">
- <label for="universe-speed">Universe Speed:</label>
- <select id="universe-speed">
- <option value="1">1x</option>
- <option value="2">2x</option>
- <option value="3">3x</option>
- <option value="4">4x</option>
- <option value="8">8x</option>
- <option value="10">10x</option>
- <option value="16">16x</option>
- </select>
- </div>
- <div class="form-group">
- <input type="checkbox" id="pathfinder">
- <label for="pathfinder" style="display: inline;">Pathfinder (Doubles the rewards)</label>
- </div>
- <div class="form-group">
- <input type="checkbox" id="discover-expedition-bonus">
- <label for="discover-expedition-bonus" style="display: inline;">Discover: Expedition Bonus (1.5x Universe Economic Speed)</label>
- </div>
- <div class="form-group">
- <input type="number" min="0" max="100" value="0" id="lifeform-bonus">
- <label for="lifeform-bonus" style="display: inline;">Expedition Resource Bonus (%)</label>
- </div>
- <div class="form-group">
- <label for="expeditions-per-day">Expected Expeditions Per Day:</label>
- <input type="number" min="0" id="expeditions-per-day" value="0">
- </div>
- <button onclick="calculateExpedition()">Calculate</button>
- <div id="result" class="result"></div>
- </div>
- <script>
- function calculateExpedition() {
- const expeditionPoints = parseInt(document.getElementById('top-points').value);
- const lifeform = parseInt(document.getElementById('lifeform-bonus').value);
- const universeSpeed = parseInt(document.getElementById('universe-speed').value);
- const pathfinder = document.getElementById('pathfinder').checked;
- const discoverBonus = document.getElementById('discover-expedition-bonus').checked;
- const expeditionsPerDay = parseInt(document.getElementById('expeditions-per-day').value);
- // Resource Discovery Factors
- const normalDiscoveryFactor = 50; // highest factor for normal discovery
- const largeDiscoveryFactor = 100; // highest factor for large discovery
- const xLargeDiscoveryFactor = 200; // highest factor for X-large discovery
- // Minimum Discovery Factors
- const minNormalDiscoveryFactor = 10;
- const minLargeDiscoveryFactor = 50;
- const minXLargeDiscoveryFactor = 100;
- // Calculate factor for Metal, Crystal, and Deuterium
- const metalFactor = 3 / 3;
- const crystalFactor = 2 / 3;
- const deuteriumFactor = 1 / 3;
- // Resource Discovery Calculations
- let metalNormal = normalDiscoveryFactor * expeditionPoints * metalFactor * universeSpeed;
- let crystalNormal = normalDiscoveryFactor * expeditionPoints * crystalFactor * universeSpeed;
- let deuteriumNormal = normalDiscoveryFactor * expeditionPoints * deuteriumFactor * universeSpeed;
- let metalLarge = largeDiscoveryFactor * expeditionPoints * metalFactor * universeSpeed;
- let crystalLarge = largeDiscoveryFactor * expeditionPoints * crystalFactor * universeSpeed;
- let deuteriumLarge = largeDiscoveryFactor * expeditionPoints * deuteriumFactor * universeSpeed;
- let metalXLarge = xLargeDiscoveryFactor * expeditionPoints * metalFactor * universeSpeed;
- let crystalXLarge = xLargeDiscoveryFactor * expeditionPoints * crystalFactor * universeSpeed;
- let deuteriumXLarge = xLargeDiscoveryFactor * expeditionPoints * deuteriumFactor * universeSpeed;
- // Minimum Resource Discovery Calculations
- let minMetalNormal = minNormalDiscoveryFactor * expeditionPoints * metalFactor * universeSpeed;
- let minCrystalNormal = minNormalDiscoveryFactor * expeditionPoints * crystalFactor * universeSpeed;
- let minDeuteriumNormal = minNormalDiscoveryFactor * expeditionPoints * deuteriumFactor * universeSpeed;
- let minMetalLarge = minLargeDiscoveryFactor * expeditionPoints * metalFactor * universeSpeed;
- let minCrystalLarge = minLargeDiscoveryFactor * expeditionPoints * crystalFactor * universeSpeed;
- let minDeuteriumLarge = minLargeDiscoveryFactor * expeditionPoints * deuteriumFactor * universeSpeed;
- let minMetalXLarge = minXLargeDiscoveryFactor * expeditionPoints * metalFactor * universeSpeed;
- let minCrystalXLarge = minXLargeDiscoveryFactor * expeditionPoints * crystalFactor * universeSpeed;
- let minDeuteriumXLarge = minXLargeDiscoveryFactor * expeditionPoints * deuteriumFactor * universeSpeed;
- // Pathfinder check
- if (pathfinder) {
- metalNormal *= 2;
- crystalNormal *= 2;
- deuteriumNormal *= 2;
- metalLarge *= 2;
- crystalLarge *= 2;
- deuteriumLarge *= 2;
- metalXLarge *= 2;
- crystalXLarge *= 2;
- deuteriumXLarge *= 2;
- minMetalNormal *= 2;
- minCrystalNormal *= 2;
- minDeuteriumNormal *= 2;
- minMetalLarge *= 2;
- minCrystalLarge *= 2;
- minDeuteriumLarge *= 2;
- minMetalXLarge *= 2;
- minCrystalXLarge *= 2;
- minDeuteriumXLarge *= 2;
- }
- // Discover Bonus check
- var multiplier = 1
- if (discoverBonus) {
- multiplier = 1.5;
- }
- multiplier = multiplier + (lifeform/100)
- metalNormal *= multiplier;
- crystalNormal *= multiplier;
- deuteriumNormal *= multiplier;
- metalLarge *= multiplier;
- crystalLarge *= multiplier;
- deuteriumLarge *= multiplier;
- metalXLarge *= multiplier;
- crystalXLarge *= multiplier;
- deuteriumXLarge *= multiplier;
- minMetalNormal *= multiplier;
- minCrystalNormal *= multiplier;
- minDeuteriumNormal *= multiplier;
- minMetalLarge *= multiplier;
- minCrystalLarge *= multiplier;
- minDeuteriumLarge *= multiplier;
- minMetalXLarge *= multiplier;
- minCrystalXLarge *= multiplier;
- minDeuteriumXLarge *= multiplier;
- // Calculate daily expected resources
- const resourceDiscoveryChance = 0.325;
- const metalChance = 0.685;
- const crystalChance = 0.24;
- const deuteriumChance = 0.075;
- const metalPerDay = expeditionsPerDay * resourceDiscoveryChance * (
- 0.89 * (metalNormal * metalChance) +
- 0.10 * (metalLarge * metalChance) +
- 0.01 * (metalXLarge * metalChance)
- );
- const crystalPerDay = expeditionsPerDay * resourceDiscoveryChance * (
- 0.89 * (crystalNormal * crystalChance) +
- 0.10 * (crystalLarge * crystalChance) +
- 0.01 * (crystalXLarge * crystalChance)
- );
- const deuteriumPerDay = expeditionsPerDay * resourceDiscoveryChance * (
- 0.89 * (deuteriumNormal * deuteriumChance) +
- 0.10 * (deuteriumLarge * deuteriumChance) +
- 0.01 * (deuteriumXLarge * deuteriumChance)
- );
- // Calculate minimal daily expected resources
- const minMetalPerDay = expeditionsPerDay * resourceDiscoveryChance * (
- 0.89 * (minMetalNormal * metalChance) +
- 0.10 * (minMetalLarge * metalChance) +
- 0.01 * (minMetalXLarge * metalChance)
- );
- const minCrystalPerDay = expeditionsPerDay * resourceDiscoveryChance * (
- 0.89 * (minCrystalNormal * crystalChance) +
- 0.10 * (minCrystalLarge * crystalChance) +
- 0.01 * (minCrystalXLarge * crystalChance)
- );
- const minDeuteriumPerDay = expeditionsPerDay * resourceDiscoveryChance * (
- 0.89 * (minDeuteriumNormal * deuteriumChance) +
- 0.10 * (minDeuteriumLarge * deuteriumChance) +
- 0.01 * (minDeuteriumXLarge * deuteriumChance)
- );
- // Format numbers
- function formatNumber(num) {
- if (num >= 1000000) {
- return (num / 1000000).toFixed(2) + 'm';
- } else if (num >= 1000) {
- return (num / 1000).toFixed(2) + 'k';
- } else {
- return num.toFixed(2);
- }
- }
- // Displaying Results
- const resultDiv = document.getElementById('result');
- resultDiv.innerHTML = `
- <h3>Expedition</h3>
- <p>Large Cargo: ${(expeditionPoints.toFixed(2)) / 60}</p>
- <p>Small Cargo: ${(expeditionPoints.toFixed(2)) / 20}</p>
- <p>Minimal amount of ships to trigger events with max values. This is not recomended amount, just minimal</p>
- <hr>
- <h4>Normal Discovery (89% chance)</h4>
- <p>Metal: ${formatNumber(minMetalNormal)}-${formatNumber(metalNormal)}</p>
- <p>Crystal: ${formatNumber(minCrystalNormal)}-${formatNumber(crystalNormal)}</p>
- <p>Deuterium: ${formatNumber(minDeuteriumNormal)}-${formatNumber(deuteriumNormal)}</p>
- <hr>
- <h4>Large Discovery (10% chance)</h4>
- <p>Metal: ${formatNumber(minMetalLarge)}-${formatNumber(metalLarge)}</p>
- <p>Crystal: ${formatNumber(minCrystalLarge)}-${formatNumber(crystalLarge)}</p>
- <p>Deuterium: ${formatNumber(minDeuteriumLarge)}-${formatNumber(deuteriumLarge)}</p>
- <hr>
- <h4>X-Large Discovery (1% chance)</h4>
- <p>Metal: ${formatNumber(minMetalXLarge)}-${formatNumber(metalXLarge)}</p>
- <p>Crystal: ${formatNumber(minCrystalXLarge)}-${formatNumber(crystalXLarge)}</p>
- <p>Deuterium: ${formatNumber(minDeuteriumXLarge)}-${formatNumber(deuteriumXLarge)}</p>
- <hr>
- <h3>Expected Resources per Day (${expeditionsPerDay} expeditions)</h3>
- <p>Metal: ${formatNumber(metalPerDay*0.6)} - ${formatNumber(metalPerDay*0.8)}</p>
- <p>Crystal: ${formatNumber(crystalPerDay*0.6)} - ${formatNumber(crystalPerDay*0.8)}</p>
- <p>Deuterium: ${formatNumber(deuteriumPerDay*0.6)} - ${formatNumber(deuteriumPerDay*0.8)}</p>
- <p>SUM(Adjusted): ${formatNumber(((deuteriumPerDay*3)+(crystalPerDay*(3/2))+metalPerDay)*0.5)} - ${formatNumber(((deuteriumPerDay*3)+(crystalPerDay*(3/2))+metalPerDay)*0.7)}</p>
- `;
- }
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement