Advertisement
Guest User

Ogame Expedition Calculator

a guest
Jun 12th, 2024
385
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 13.88 KB | Gaming | 0 0
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6.     <title>Expedition Calculator</title>
  7.     <style>
  8.         body {
  9.             font-family: Arial, sans-serif;
  10.             margin: 20px;
  11.         }
  12.         .container {
  13.             max-width: 600px;
  14.             margin: 0 auto;
  15.             padding: 20px;
  16.             border: 1px solid #ccc;
  17.             border-radius: 8px;
  18.             background-color: #333;
  19.         }
  20.         .form-group {
  21.             margin-bottom: 10px;
  22.         }
  23.         label {
  24.             display: block;
  25.             margin-bottom: 5px;
  26.         }
  27.         select, input[type="number"], input[type="checkbox"] {
  28.             width: calc(100% - 20px);
  29.             padding: 8px;
  30.             box-sizing: border-box;
  31.             margin-bottom: 5px;
  32.         }
  33.         button {
  34.             padding: 10px 20px;
  35.             margin-top: 10px;
  36.             display: block;
  37.             width: 100%;
  38.             background-color: #007bff;
  39.             color: #fff;
  40.             border: none;
  41.             border-radius: 4px;
  42.             cursor: pointer;
  43.         }
  44.         button:hover {
  45.             background-color: #0056b3;
  46.         }
  47.         .result {
  48.             margin-top: 20px;
  49.             padding: 10px;
  50.             background-color: #444;
  51.             border: 1px solid #ccc;
  52.             border-radius: 4px;
  53.         }
  54.         body {
  55.             background-color: #222;
  56.             color: #fff;
  57.             font-family: Arial, sans-serif;
  58.             max-width: 800px; /* Set maximum width */
  59.             margin: 0 auto; /* Center content */
  60.             padding: 20px; /* Add some padding */
  61.         }
  62.         table {
  63.             width: 100%;
  64.             border-collapse: collapse;
  65.         }
  66.         th, td {
  67.             border: 1px solid #444;
  68.             padding: 8px;
  69.             text-align: left;
  70.         }
  71.         th {
  72.             background-color: #333;
  73.         }
  74.         h1, h2, h3 {
  75.             color: #fff;
  76.         }
  77.         div {
  78.             margin-bottom: 20px;
  79.         }
  80.     </style>
  81. </head>
  82. <body>
  83.     <div class="container">
  84.         <h1>Expedition Calculator</h1>
  85.         <div class="form-group">
  86.             <label for="top-points">Top 1 Player Points:</label>
  87.             <select id="top-points">
  88.                 <option value="2500">Less than 100k</option>
  89.                 <option value="6000">Less than 1M</option>
  90.                 <option value="9000">Less than 5M</option>
  91.                 <option value="12000">Less than 25M</option>
  92.                 <option value="15000">Less than 50M</option>
  93.                 <option value="18000">Less than 75M</option>
  94.                 <option value="21000">Less than 100M</option>
  95.                 <option value="25000">More than 100M</option>
  96.             </select>
  97.         </div>
  98.         <div class="form-group">
  99.             <label for="universe-speed">Universe Speed:</label>
  100.             <select id="universe-speed">
  101.                 <option value="1">1x</option>
  102.                 <option value="2">2x</option>
  103.                 <option value="3">3x</option>
  104.                 <option value="4">4x</option>
  105.                 <option value="8">8x</option>
  106.                 <option value="10">10x</option>
  107.                 <option value="16">16x</option>
  108.             </select>
  109.         </div>
  110.         <div class="form-group">
  111.             <input type="checkbox" id="pathfinder">
  112.             <label for="pathfinder" style="display: inline;">Pathfinder (Doubles the rewards)</label>
  113.         </div>
  114.         <div class="form-group">
  115.             <input type="checkbox" id="discover-expedition-bonus">
  116.             <label for="discover-expedition-bonus" style="display: inline;">Discover: Expedition Bonus (1.5x Universe Economic Speed)</label>
  117.         </div>
  118.         <div class="form-group">
  119.             <input type="number" min="0" max="100" value="0" id="lifeform-bonus">
  120.             <label for="lifeform-bonus" style="display: inline;">Expedition Resource Bonus (%)</label>
  121.         </div>
  122.         <div class="form-group">
  123.             <label for="expeditions-per-day">Expected Expeditions Per Day:</label>
  124.             <input type="number" min="0" id="expeditions-per-day" value="0">
  125.         </div>
  126.         <button onclick="calculateExpedition()">Calculate</button>
  127.         <div id="result" class="result"></div>
  128.     </div>
  129.  
  130.     <script>
  131.         function calculateExpedition() {
  132.             const expeditionPoints = parseInt(document.getElementById('top-points').value);
  133.             const lifeform = parseInt(document.getElementById('lifeform-bonus').value);
  134.             const universeSpeed = parseInt(document.getElementById('universe-speed').value);
  135.             const pathfinder = document.getElementById('pathfinder').checked;
  136.             const discoverBonus = document.getElementById('discover-expedition-bonus').checked;
  137.             const expeditionsPerDay = parseInt(document.getElementById('expeditions-per-day').value);
  138.  
  139.             // Resource Discovery Factors
  140.             const normalDiscoveryFactor = 50;  // highest factor for normal discovery
  141.             const largeDiscoveryFactor = 100;  // highest factor for large discovery
  142.             const xLargeDiscoveryFactor = 200; // highest factor for X-large discovery
  143.  
  144.             // Minimum Discovery Factors
  145.             const minNormalDiscoveryFactor = 10;
  146.             const minLargeDiscoveryFactor = 50;
  147.             const minXLargeDiscoveryFactor = 100;
  148.  
  149.             // Calculate factor for Metal, Crystal, and Deuterium
  150.             const metalFactor = 3 / 3;
  151.             const crystalFactor = 2 / 3;
  152.             const deuteriumFactor = 1 / 3;
  153.  
  154.             // Resource Discovery Calculations
  155.             let metalNormal = normalDiscoveryFactor * expeditionPoints * metalFactor * universeSpeed;
  156.             let crystalNormal = normalDiscoveryFactor * expeditionPoints * crystalFactor * universeSpeed;
  157.             let deuteriumNormal = normalDiscoveryFactor * expeditionPoints * deuteriumFactor * universeSpeed;
  158.  
  159.             let metalLarge = largeDiscoveryFactor * expeditionPoints * metalFactor * universeSpeed;
  160.             let crystalLarge = largeDiscoveryFactor * expeditionPoints * crystalFactor * universeSpeed;
  161.             let deuteriumLarge = largeDiscoveryFactor * expeditionPoints * deuteriumFactor * universeSpeed;
  162.  
  163.             let metalXLarge = xLargeDiscoveryFactor * expeditionPoints * metalFactor * universeSpeed;
  164.             let crystalXLarge = xLargeDiscoveryFactor * expeditionPoints * crystalFactor * universeSpeed;
  165.             let deuteriumXLarge = xLargeDiscoveryFactor * expeditionPoints * deuteriumFactor * universeSpeed;
  166.  
  167.             // Minimum Resource Discovery Calculations
  168.             let minMetalNormal = minNormalDiscoveryFactor * expeditionPoints * metalFactor * universeSpeed;
  169.             let minCrystalNormal = minNormalDiscoveryFactor * expeditionPoints * crystalFactor * universeSpeed;
  170.             let minDeuteriumNormal = minNormalDiscoveryFactor * expeditionPoints * deuteriumFactor * universeSpeed;
  171.  
  172.             let minMetalLarge = minLargeDiscoveryFactor * expeditionPoints * metalFactor * universeSpeed;
  173.             let minCrystalLarge = minLargeDiscoveryFactor * expeditionPoints * crystalFactor * universeSpeed;
  174.             let minDeuteriumLarge = minLargeDiscoveryFactor * expeditionPoints * deuteriumFactor * universeSpeed;
  175.  
  176.             let minMetalXLarge = minXLargeDiscoveryFactor * expeditionPoints * metalFactor * universeSpeed;
  177.             let minCrystalXLarge = minXLargeDiscoveryFactor * expeditionPoints * crystalFactor * universeSpeed;
  178.             let minDeuteriumXLarge = minXLargeDiscoveryFactor * expeditionPoints * deuteriumFactor * universeSpeed;
  179.  
  180.             // Pathfinder check
  181.             if (pathfinder) {
  182.                 metalNormal *= 2;
  183.                 crystalNormal *= 2;
  184.                 deuteriumNormal *= 2;
  185.                 metalLarge *= 2;
  186.                 crystalLarge *= 2;
  187.                 deuteriumLarge *= 2;
  188.                 metalXLarge *= 2;
  189.                 crystalXLarge *= 2;
  190.                 deuteriumXLarge *= 2;
  191.  
  192.                 minMetalNormal *= 2;
  193.                 minCrystalNormal *= 2;
  194.                 minDeuteriumNormal *= 2;
  195.                 minMetalLarge *= 2;
  196.                 minCrystalLarge *= 2;
  197.                 minDeuteriumLarge *= 2;
  198.                 minMetalXLarge *= 2;
  199.                 minCrystalXLarge *= 2;
  200.                 minDeuteriumXLarge *= 2;
  201.             }
  202.  
  203.             // Discover Bonus check
  204.             var multiplier = 1
  205.             if (discoverBonus) {
  206.                 multiplier = 1.5;
  207.             }
  208.  
  209.             multiplier = multiplier + (lifeform/100)
  210.  
  211.             metalNormal *= multiplier;
  212.             crystalNormal *= multiplier;
  213.             deuteriumNormal *= multiplier;
  214.             metalLarge *= multiplier;
  215.             crystalLarge *= multiplier;
  216.             deuteriumLarge *= multiplier;
  217.             metalXLarge *= multiplier;
  218.             crystalXLarge *= multiplier;
  219.             deuteriumXLarge *= multiplier;
  220.  
  221.             minMetalNormal *= multiplier;
  222.             minCrystalNormal *= multiplier;
  223.             minDeuteriumNormal *= multiplier;
  224.             minMetalLarge *= multiplier;
  225.             minCrystalLarge *= multiplier;
  226.             minDeuteriumLarge *= multiplier;
  227.             minMetalXLarge *= multiplier;
  228.             minCrystalXLarge *= multiplier;
  229.             minDeuteriumXLarge *= multiplier;
  230.  
  231.             // Calculate daily expected resources
  232.             const resourceDiscoveryChance = 0.325;
  233.             const metalChance = 0.685;
  234.             const crystalChance = 0.24;
  235.             const deuteriumChance = 0.075;
  236.  
  237.             const metalPerDay = expeditionsPerDay * resourceDiscoveryChance * (
  238.                 0.89 * (metalNormal * metalChance) +
  239.                 0.10 * (metalLarge * metalChance) +
  240.                 0.01 * (metalXLarge * metalChance)
  241.             );
  242.             const crystalPerDay = expeditionsPerDay * resourceDiscoveryChance * (
  243.                 0.89 * (crystalNormal * crystalChance) +
  244.                 0.10 * (crystalLarge * crystalChance) +
  245.                 0.01 * (crystalXLarge * crystalChance)
  246.             );
  247.             const deuteriumPerDay = expeditionsPerDay * resourceDiscoveryChance * (
  248.                 0.89 * (deuteriumNormal * deuteriumChance) +
  249.                 0.10 * (deuteriumLarge * deuteriumChance) +
  250.                 0.01 * (deuteriumXLarge * deuteriumChance)
  251.             );
  252.  
  253.             // Calculate minimal daily expected resources
  254.             const minMetalPerDay = expeditionsPerDay * resourceDiscoveryChance * (
  255.                 0.89 * (minMetalNormal * metalChance) +
  256.                 0.10 * (minMetalLarge * metalChance) +
  257.                 0.01 * (minMetalXLarge * metalChance)
  258.             );
  259.             const minCrystalPerDay = expeditionsPerDay * resourceDiscoveryChance * (
  260.                 0.89 * (minCrystalNormal * crystalChance) +
  261.                 0.10 * (minCrystalLarge * crystalChance) +
  262.                 0.01 * (minCrystalXLarge * crystalChance)
  263.             );
  264.             const minDeuteriumPerDay = expeditionsPerDay * resourceDiscoveryChance * (
  265.                 0.89 * (minDeuteriumNormal * deuteriumChance) +
  266.                 0.10 * (minDeuteriumLarge * deuteriumChance) +
  267.                 0.01 * (minDeuteriumXLarge * deuteriumChance)
  268.             );
  269.  
  270.             // Format numbers
  271.             function formatNumber(num) {
  272.                 if (num >= 1000000) {
  273.                     return (num / 1000000).toFixed(2) + 'm';
  274.                 } else if (num >= 1000) {
  275.                     return (num / 1000).toFixed(2) + 'k';
  276.                 } else {
  277.                     return num.toFixed(2);
  278.                 }
  279.             }
  280.  
  281.             // Displaying Results
  282.             const resultDiv = document.getElementById('result');
  283.             resultDiv.innerHTML = `
  284.                 <h3>Expedition</h3>
  285.                 <p>Large Cargo: ${(expeditionPoints.toFixed(2)) / 60}</p>
  286.                 <p>Small Cargo: ${(expeditionPoints.toFixed(2)) / 20}</p>
  287.                 <p>Minimal amount of ships to trigger events with max values. This is not recomended amount, just minimal</p>
  288.                 <hr>
  289.                 <h4>Normal Discovery (89% chance)</h4>
  290.                 <p>Metal: ${formatNumber(minMetalNormal)}-${formatNumber(metalNormal)}</p>
  291.                 <p>Crystal: ${formatNumber(minCrystalNormal)}-${formatNumber(crystalNormal)}</p>
  292.                 <p>Deuterium: ${formatNumber(minDeuteriumNormal)}-${formatNumber(deuteriumNormal)}</p>
  293.                 <hr>
  294.                 <h4>Large Discovery (10% chance)</h4>
  295.                 <p>Metal: ${formatNumber(minMetalLarge)}-${formatNumber(metalLarge)}</p>
  296.                 <p>Crystal: ${formatNumber(minCrystalLarge)}-${formatNumber(crystalLarge)}</p>
  297.                 <p>Deuterium: ${formatNumber(minDeuteriumLarge)}-${formatNumber(deuteriumLarge)}</p>
  298.                 <hr>
  299.                 <h4>X-Large Discovery (1% chance)</h4>
  300.                 <p>Metal: ${formatNumber(minMetalXLarge)}-${formatNumber(metalXLarge)}</p>
  301.                 <p>Crystal: ${formatNumber(minCrystalXLarge)}-${formatNumber(crystalXLarge)}</p>
  302.                 <p>Deuterium: ${formatNumber(minDeuteriumXLarge)}-${formatNumber(deuteriumXLarge)}</p>
  303.                 <hr>
  304.                 <h3>Expected Resources per Day (${expeditionsPerDay} expeditions)</h3>
  305.                 <p>Metal: ${formatNumber(metalPerDay*0.6)} - ${formatNumber(metalPerDay*0.8)}</p>
  306.                 <p>Crystal: ${formatNumber(crystalPerDay*0.6)} - ${formatNumber(crystalPerDay*0.8)}</p>
  307.                 <p>Deuterium: ${formatNumber(deuteriumPerDay*0.6)} - ${formatNumber(deuteriumPerDay*0.8)}</p>
  308.                 <p>SUM(Adjusted): ${formatNumber(((deuteriumPerDay*3)+(crystalPerDay*(3/2))+metalPerDay)*0.5)} - ${formatNumber(((deuteriumPerDay*3)+(crystalPerDay*(3/2))+metalPerDay)*0.7)}</p>
  309.             `;
  310.         }
  311.     </script>
  312. </body>
  313. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement