|
|
Line 1: |
Line 1: |
| mw.loader.using(['jquery'], function() {
| |
| $(document).ready(function() {
| |
| // Create the slider
| |
| var slider = $('<input type="range" min="0" max="80" value="0" id="time-slider">');
| |
| var sliderLabel = $('<p>Adjust skilling speed: <span id="slider-value">0</span>%</p>');
| |
|
| |
|
| // Ticket chancing formula calculation
| |
| function calculateChancePerAction(levelRequirement)
| |
| {
| |
| return 1.2 * 0.000005 * ((levelRequirement / 10) * 1.033);
| |
| }
| |
|
| |
| // 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 actionTimeWithSkillSpeed = time * (1 - slider.val() / 100)
| |
| var averageActionsPerTicket = 1 / decimalChance;
| |
| var averageTimeSpentPerTicket = averageActionsPerTicket * actionTimeWithSkillSpeed;
| |
| var averageHours = averageTimeSpentPerTicket / 3600 ;
| |
| $(this).text(averageHours.toFixed(0));
| |
| });
| |
| }
| |
|
| |
| // 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 actionTimeWithSkillSpeed = time * (1 - slider.val() / 100)
| |
| 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 + "%");
| |
| });
| |
| }
| |
|
| |
| // Append slider to the page
| |
| $(".mw-slider-md").append(sliderLabel).append(slider);
| |
|
| |
| // Initial calcualtion after load
| |
| applyChancePerActionChanges();
| |
| applyChancePerDayChanges();
| |
| applyAverageHoursChanges();
| |
|
| |
| // Update the table values when the slider is moved
| |
| slider.on("input", function() {
| |
| var sliderValue = $(this).val();
| |
| $("#slider-value").text(sliderValue);
| |
|
| |
| applyChancePerDayChanges();
| |
| applyAverageHoursChanges();
| |
| });
| |
| });
| |
| });
| |