From ab458ee9813a8342442f7c5f4f622b876a5bdd5f Mon Sep 17 00:00:00 2001 From: IM23a-spirgif Date: Sun, 15 Sep 2024 12:42:24 +0200 Subject: [PATCH 1/2] Fixed modifiers and added all the item buffs, bloxy cola does not yet work because it applies 2 buffs. --- static/filterWeapons.js | 85 +++++++++++++++--------- static/modifiers.json | 142 +++++++++++++++++++++++++++++++++++----- 2 files changed, 177 insertions(+), 50 deletions(-) diff --git a/static/filterWeapons.js b/static/filterWeapons.js index 0fe7b98..fbc022f 100644 --- a/static/filterWeapons.js +++ b/static/filterWeapons.js @@ -101,66 +101,77 @@ function populateModifiers(modifiers) { modifiersContainer.appendChild(createModifierSection('Operative Perks', modifiers.operativePerks)); // Add Ability Perks - modifiersContainer.appendChild(createModifierSection('Ability Perks', modifiers.abilityPerks)); + modifiersContainer.appendChild(createModifierSection('Abilities', modifiers.abilityPerks)); // Add event listener to recalculate DPS/DPM when modifiers are toggled modifiersContainer.addEventListener('change', applyModifiers); } // Function to apply the modifiers and recalculate DPS and DPM +// Function to apply the modifiers and recalculate damage, RPM, and reloadTime +// Function to apply the modifiers and recalculate damage, RPM, and reloadTime function applyModifiers() { if (!selectedWeapon) return; - const damage = selectedWeapon.damage; - let rpm = selectedWeapon.rpm; - const magSize = selectedWeapon.mag_size; - const reloadTime = selectedWeapon.reload_time; + // Get the base stats from the selected weapon + let baseDamage = selectedWeapon.damage; + let baseRpm = selectedWeapon.rpm; + let baseReloadTime = selectedWeapon.reload_time; - let dpsModifier = { additive: 0, multiplicative: 1 }; - let dpmModifier = { additive: 0, multiplicative: 1 }; - let rpmModifier = { additive: 0, multiplicative: 1 }; + // Initialize the modifier objects + let damageModifier = {additive: 0, multiplicative: 1, flat: 0}; + let rpmModifier = {additive: 0, multiplicative: 1}; + let reloadTimeModifier = {additive: 0, multiplicative: 1}; // Collect checked modifier values document.querySelectorAll('#modifiers input:checked').forEach(mod => { const modType = mod.dataset.type; const modValue = parseFloat(mod.value); + // Apply damage modifiers + if (mod.id.includes('damage')) { + if (modType === 'multiplicative') damageModifier.multiplicative *= modValue; // Multiplicative + else if (modType === 'additive') damageModifier.additive += modValue; // Additive + } - if (mod.id.includes('dps')) { - if (modType === 'additive') dpsModifier.additive += modValue; - else dpsModifier.multiplicative *= modValue; - } - if (mod.id.includes('dpm')) { - if (modType === 'additive') dpmModifier.additive += modValue; - else dpmModifier.multiplicative *= modValue; - } + // Apply RPM modifiers if (mod.id.includes('rpm')) { - if (modType === 'additive') rpmModifier.additive += modValue; - else rpmModifier.multiplicative *= modValue; + if (modType === 'multiplicative') rpmModifier.multiplicative *= modValue; + else if (modType === 'additive') rpmModifier.additive += modValue; + } + + // Apply Reload Time modifiers + if (mod.id.includes('reloadTime')) { + if (modType === 'multiplicative') reloadTimeModifier.multiplicative *= modValue; + else if (modType === 'additive') reloadTimeModifier.additive += modValue; } }); - // Apply RPM modifiers - rpm = rpm + (rpm * rpmModifier.additive); - rpm = rpm * rpmModifier.multiplicative; + // Apply the damage modifiers + let damage = baseDamage * damageModifier.multiplicative; // First apply multiplicative modifiers// Then apply percentage-based additive modifiers + damage += damageModifier.additive; // Finally, add the flat additive modifier (e.g., HE Rounds) - // Recalculate DPS and DPM with modifiers - calculateDPSAndDPM(damage, rpm, magSize, reloadTime, dpsModifier, dpmModifier); + // Apply the RPM modifiers + let rpm = baseRpm * rpmModifier.multiplicative; + rpm = rpm + (rpm * rpmModifier.additive); + + // Apply the reload time modifiers + let reloadTime = baseReloadTime * reloadTimeModifier.multiplicative; + reloadTime = reloadTime + (reloadTime * reloadTimeModifier.additive); + + // Recalculate DPS and DPM with the modified stats + calculateDPSAndDPM(damage, rpm, selectedWeapon.mag_size, reloadTime); + + // Update the displayed weapon stats with the modified values + updateModifiedWeaponStats(damage, rpm, reloadTime); } -// Function to calculate DPS, DPM, and RPS with optional modifiers // Function to calculate DPS and DPM with optional modifiers -function calculateDPSAndDPM(damage, rpm, magSize, reloadTime, dpsModifier = { additive: 0, multiplicative: 1 }, dpmModifier = { additive: 0, multiplicative: 1 }) { +function calculateDPSAndDPM(damage, rpm, magSize, reloadTime) { const rps = rpm / 60; // Rounds per second let dps = damage * rps; const reloadTimeMin = reloadTime / 60; let dpm = (magSize * damage) / (reloadTimeMin + (magSize / rpm)); - // Apply modifiers - dps = dps + (dps * dpsModifier.additive); - dps = dps * dpsModifier.multiplicative; - dpm = dpm + (dpm * dpmModifier.additive); - dpm = dpm * dpmModifier.multiplicative; - // Display the calculated stats const resultElement = document.getElementById('calculated-stats'); resultElement.innerHTML = ` @@ -169,7 +180,17 @@ function calculateDPSAndDPM(damage, rpm, magSize, reloadTime, dpsModifier = { ad `; } +// Function to display the modified weapon's stats in the UI +function updateModifiedWeaponStats(damage, rpm, reloadTime) { + const statsElement = document.getElementById('weapon-stats'); + statsElement.innerHTML = ` +

Modified Damage: ${damage.toFixed(2)}

+

Modified RPM: ${rpm.toFixed(2)}

+

Mag Size: ${selectedWeapon.mag_size}

+

Modified Reload Time: ${reloadTime.toFixed(2)} seconds

+ `; +} // Call the fetch function to load the data and populate the dropdown on page load fetchWeaponsData(); -fetchModifiers(); +fetchModifiers(); \ No newline at end of file diff --git a/static/modifiers.json b/static/modifiers.json index bea8d1d..61546df 100644 --- a/static/modifiers.json +++ b/static/modifiers.json @@ -1,26 +1,132 @@ { "itemBuffs": [ - { "id": "dps-item-additive", "label": "DPS Additive (10%)", "value": 0.1, "type": "additive" }, - { "id": "dps-item-multiplicative", "label": "DPS Multiplicative (20%)", "value": 1.2, "type": "multiplicative" }, - { "id": "dpm-item-additive", "label": "DPM Additive (10%)", "value": 0.1, "type": "additive" }, - { "id": "dpm-item-multiplicative", "label": "DPM Multiplicative (20%)", "value": 1.2, "type": "multiplicative" }, - { "id": "rpm-item-additive", "label": "RPM Additive (5%)", "value": 0.05, "type": "additive" }, - { "id": "rpm-item-multiplicative", "label": "RPM Multiplicative (10%)", "value": 1.1, "type": "multiplicative" } + { + "id": "damage-item-additive", + "label": "Elite HE Rounds (+14 damage)", + "value": 14, + "type": "additive" + }, + { + "id": "damage-item-additive", + "label": "HE Rounds (+8 damage)", + "value": 8, + "type": "additive" + }, + { + "id": "damage-item-multiplicative", + "label": "Strength Mixture (+20% damage)", + "value": 1.2, + "type": "multiplicative" + }, + { + "id": "damage-item-multiplicative", + "label": "Fortunos Necklace (+15% damage)", + "value": 1.15, + "type": "multiplicative" + }, + { + "id": "multiple-buffs", + "label": "Bloxy Cola (+25% Firerate, +100% Reload Speed)", + "buffs": [ + { + "type": "rpm", + "value": 1.25, + "buffType": "multiplicative" + }, + { + "type": "reloadTime", + "value": 0, + "buffType": "multiplicative" + } + ] + }, + { + "id": "damage-item-multiplicative", + "label": "Enhancer (+10% damage)", + "value": 1.1, + "type": "multiplicative" + }, + { + "id": "damage-item-multiplicative", + "label": "Teleport Device (+25% damage)", + "value": 1.25, + "type": "multiplicative" + } ], "operativePerks": [ - { "id": "dps-perk-additive", "label": "DPS Additive (15%)", "value": 0.15, "type": "additive" }, - { "id": "dps-perk-multiplicative", "label": "DPS Multiplicative (30%)", "value": 1.3, "type": "multiplicative" }, - { "id": "dpm-perk-additive", "label": "DPM Additive (15%)", "value": 0.15, "type": "additive" }, - { "id": "dpm-perk-multiplicative", "label": "DPM Multiplicative (30%)", "value": 1.3, "type": "multiplicative" }, - { "id": "rpm-perk-additive", "label": "RPM Additive (10%)", "value": 0.1, "type": "additive" }, - { "id": "rpm-perk-multiplicative", "label": "RPM Multiplicative (20%)", "value": 1.2, "type": "multiplicative" } + { + "id": "damage-perk-additive", + "label": "Operative Damage Additive +15%", + "value": 0.15, + "type": "additive" + }, + { + "id": "damage-perk-multiplicative", + "label": "Operative Damage Multiplicative +30%", + "value": 1.3, + "type": "multiplicative" + }, + { + "id": "rpm-perk-additive", + "label": "Operative RPM Additive +10%", + "value": 0.1, + "type": "additive" + }, + { + "id": "rpm-perk-multiplicative", + "label": "Operative RPM Multiplicative +20%", + "value": 1.2, + "type": "multiplicative" + }, + { + "id": "reloadTime-perk-additive", + "label": "Operative Reload Time Additive -10%", + "value": -0.1, + "type": "additive" + }, + { + "id": "reloadTime-perk-multiplicative", + "label": "Operative Reload Time Multiplicative -20%", + "value": 0.8, + "type": "multiplicative" + } ], "abilityPerks": [ - { "id": "dps-ability-additive", "label": "DPS Additive (20%)", "value": 0.2, "type": "additive" }, - { "id": "dps-ability-multiplicative", "label": "DPS Multiplicative (40%)", "value": 1.4, "type": "multiplicative" }, - { "id": "dpm-ability-additive", "label": "DPM Additive (20%)", "value": 0.2, "type": "additive" }, - { "id": "dpm-ability-multiplicative", "label": "DPM Multiplicative (40%)", "value": 1.4, "type": "multiplicative" }, - { "id": "rpm-ability-additive", "label": "RPM Additive (10%)", "value": 0.1, "type": "additive" }, - { "id": "rpm-ability-multiplicative", "label": "RPM Multiplicative (30%)", "value": 1.3, "type": "multiplicative" } + { + "id": "damage-ability-additive", + "label": "Ability Damage Additive +20%", + "value": 0.2, + "type": "additive" + }, + { + "id": "damage-ability-multiplicative", + "label": "Ability Damage Multiplicative +40%", + "value": 1.4, + "type": "multiplicative" + }, + { + "id": "rpm-ability-additive", + "label": "Ability RPM Additive +10%", + "value": 0.1, + "type": "additive" + }, + { + "id": "rpm-ability-multiplicative", + "label": "Ability RPM Multiplicative +30%", + "value": 1.3, + "type": "multiplicative" + }, + { + "id": "reloadTime-ability-additive", + "label": "Ability Reload Time Additive -5%", + "value": -0.05, + "type": "additive" + }, + { + "id": "reloadTime-ability-multiplicative", + "label": "Ability Reload Time Multiplicative -15%", + "value": 0.85, + "type": "multiplicative" + } ] } From 4a27c4e5e1c3b54866a4fd1bb637e2fa348a8e55 Mon Sep 17 00:00:00 2001 From: IM23a-spirgif Date: Sun, 15 Sep 2024 12:44:10 +0200 Subject: [PATCH 2/2] Grammar is important, monkey(SUGGESTION -> SUGGESTIONS & FEEDBACK) --- templates/about_us.html | 2 +- templates/calculator.html | 2 +- templates/index.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/templates/about_us.html b/templates/about_us.html index c29f059..d31efde 100644 --- a/templates/about_us.html +++ b/templates/about_us.html @@ -40,7 +40,7 @@ diff --git a/templates/calculator.html b/templates/calculator.html index 1d2f007..1b9080c 100644 --- a/templates/calculator.html +++ b/templates/calculator.html @@ -41,7 +41,7 @@ diff --git a/templates/index.html b/templates/index.html index aa58024..806743d 100644 --- a/templates/index.html +++ b/templates/index.html @@ -38,7 +38,7 @@