MediaWiki:Gadget-calc-skillingparty.js: Difference between revisions
From Idle Clans wiki
m (attempt 1) Tag: Reverted |
m (attempt 2) Tag: Reverted |
||
Line 1: | Line 1: | ||
mw.loader.using(["jquery"], function () { | mw.loader.using(["jquery"], function () { | ||
$(document).ready(function () { | $(document).ready(function () { | ||
// Select the existing slider | |||
var slider = $("#time-slider"); | |||
// Ensure the slider exists before proceeding | |||
if (slider.length === 0) { | |||
console.error("Slider element not found!"); | |||
return; | |||
} | |||
// Create the Gatherers Upgrade Checkbox | // Create the Gatherers Upgrade Checkbox | ||
var gatherersCheckbox = $('<input type="checkbox" id="gatherers-upgrade">'); | var gatherersCheckbox = $('<input type="checkbox" id="gatherers-upgrade">'); | ||
var gatherersLabel = $( | var gatherersLabel = $('<label for="gatherers-upgrade"> Gatherers Upgrade</label><br>'); | ||
// | // Append checkbox below the existing slider | ||
$("<br>").insertAfter(slider); | |||
gatherersCheckbox.insertAfter(slider); | |||
gatherersLabel.insertAfter(gatherersCheckbox); | |||
); | |||
// Ticket chancing formula calculation | // Ticket chancing formula calculation | ||
Line 56: | Line 60: | ||
} | } | ||
var averageActionsPerTicket = 1 / decimalChance; | var averageActionsPerTicket = 1 / decimalChance; | ||
var averageTimeSpentPerTicket = | var averageTimeSpentPerTicket = averageActionsPerTicket * actionTimeWithSkillSpeed; | ||
var averageHours = averageTimeSpentPerTicket / 3600; | var averageHours = averageTimeSpentPerTicket / 3600; | ||
$(this).text(averageHours.toFixed(2)); | $(this).text(averageHours.toFixed(2)); | ||
Line 69: | Line 72: | ||
var decimalChance = calculateChancePerAction(levelRequirement); | var decimalChance = calculateChancePerAction(levelRequirement); | ||
var averageActionsPerTicket = 1 / decimalChance; | var averageActionsPerTicket = 1 / decimalChance; | ||
var textChance = | var textChance = "1 in " + Math.ceil(averageActionsPerTicket).toLocaleString(); | ||
$(this).text(textChance); | $(this).text(textChance); | ||
}); | }); | ||
Line 97: | Line 99: | ||
}); | }); | ||
} | } | ||
// Initial calculation after load | // Initial calculation after load | ||
Line 107: | Line 106: | ||
applyAverageHoursChanges(); | applyAverageHoursChanges(); | ||
// Update the table values when the | // Update the table values when the checkbox changes | ||
$(document).on("change", "#gatherers-upgrade", function () { | $(document).on("change", "#gatherers-upgrade", function () { | ||
getTaskTimeWithBoost(); | getTaskTimeWithBoost(); | ||
Line 116: | Line 115: | ||
// Update the table values when the slider is moved | // Update the table values when the slider is moved | ||
slider.on("input", function () { | slider.on("input", function () { | ||
$("#slider-value").text($(this).val()); | |||
$("#slider-value").text( | |||
getTaskTimeWithBoost(); | getTaskTimeWithBoost(); | ||
applyChancePerDayChanges(); | applyChancePerDayChanges(); |
Revision as of 04:20, 23 February 2025
mw.loader.using(["jquery"], function () { $(document).ready(function () { // Select the existing slider var slider = $("#time-slider"); // Ensure the slider exists before proceeding if (slider.length === 0) { console.error("Slider element not found!"); return; } // Create the Gatherers Upgrade Checkbox var gatherersCheckbox = $('<input type="checkbox" id="gatherers-upgrade">'); var gatherersLabel = $('<label for="gatherers-upgrade"> Gatherers Upgrade</label><br>'); // Append checkbox below the existing slider $("<br>").insertAfter(slider); gatherersCheckbox.insertAfter(slider); gatherersLabel.insertAfter(gatherersCheckbox); // Ticket chancing formula calculation function calculateChancePerAction(levelRequirement) { return 1.2 * 0.000005 * ((levelRequirement / 10) * 1.033); } // Function to determine if the skill qualifies for the Gatherers boost function isGatherersSkill(skill) { return ["Fishing", "Mining", "Woodcutting", "Foraging"].includes(skill); } // Task time with boost column function getTaskTimeWithBoost() { $(".modified-time").each(function () { var time = $(this).data("time") / 100; var sliderValue = slider.val() / 100; var actionTimeWithSkillSpeed = time * (1 - sliderValue); // Apply 5% faster time if Gatherers is checked and skill qualifies var skill = $(this).closest("tr").find("td:first").text().trim(); if ($("#gatherers-upgrade").is(":checked") && isGatherersSkill(skill)) { actionTimeWithSkillSpeed *= 0.95; } $(this).text(actionTimeWithSkillSpeed.toFixed(2)); }); } // Average hours Column function applyAverageHoursChanges() { $(".average-hours").each(function () { var levelRequirement = $(this).data("level"); var time = $(this).data("time") / 100; var decimalChance = calculateChancePerAction(levelRequirement); var sliderValue = slider.val() / 100; var actionTimeWithSkillSpeed = time * (1 - sliderValue); // Apply 5% faster time if Gatherers is checked and skill qualifies var skill = $(this).closest("tr").find("td:first").text().trim(); if ($("#gatherers-upgrade").is(":checked") && isGatherersSkill(skill)) { actionTimeWithSkillSpeed *= 0.95; } var averageActionsPerTicket = 1 / decimalChance; var averageTimeSpentPerTicket = averageActionsPerTicket * actionTimeWithSkillSpeed; var averageHours = averageTimeSpentPerTicket / 3600; $(this).text(averageHours.toFixed(2)); }); } // Chance per action Column function applyChancePerActionChanges() { $(".chance-per-action").each(function () { var levelRequirement = $(this).data("level"); var decimalChance = calculateChancePerAction(levelRequirement); var averageActionsPerTicket = 1 / decimalChance; var textChance = "1 in " + Math.ceil(averageActionsPerTicket).toLocaleString(); $(this).text(textChance); }); } // Chance for at least 1 ticket per day Column function applyChancePerDayChanges() { $(".chance-per-day").each(function () { var levelRequirement = $(this).data("level"); var time = $(this).data("time") / 100; var decimalChance = calculateChancePerAction(levelRequirement); var sliderValue = slider.val() / 100; var actionTimeWithSkillSpeed = time * (1 - sliderValue); // Apply 5% faster time if Gatherers is checked and skill qualifies var skill = $(this).closest("tr").find("td:first").text().trim(); if ($("#gatherers-upgrade").is(":checked") && isGatherersSkill(skill)) { actionTimeWithSkillSpeed *= 0.95; } var actionsPerDay = (24 * 3600) / actionTimeWithSkillSpeed; var failureChance = 1 - decimalChance; var consecutiveFailureChance = Math.pow(failureChance, actionsPerDay); var successChance = 1 - consecutiveFailureChance; var successPercentage = (successChance * 100).toFixed(2); $(this).text(successPercentage + "%"); }); } // Initial calculation after load getTaskTimeWithBoost(); applyChancePerActionChanges(); applyChancePerDayChanges(); applyAverageHoursChanges(); // Update the table values when the checkbox changes $(document).on("change", "#gatherers-upgrade", function () { getTaskTimeWithBoost(); applyChancePerDayChanges(); applyAverageHoursChanges(); }); // Update the table values when the slider is moved slider.on("input", function () { $("#slider-value").text($(this).val()); getTaskTimeWithBoost(); applyChancePerDayChanges(); applyAverageHoursChanges(); }); }); });