Simple Gym Helper

Hides gym stats for stat whoring or stacking.

// ==UserScript==
// @name         Simple Gym Helper
// @namespace    https://www.torn.com/
// @version      v1.4
// @description  Hides gym stats for stat whoring or stacking.
// @author       AngryGod
// @license      MIT
// @match        https://www.torn.com/gym.php
// @icon         https://www.google.com/s2/favicons?sz=64&domain=torn.com
// @grant        none
// ==/UserScript==

(function() {
    'use strict';


    function waitForElementMutation(selector, callback) {
        const observer = new MutationObserver((mutationsList, observer) => {
            for (const mutation of mutationsList) {
                if (mutation.type === 'childList' && mutation.addedNodes.length > 0) {
                    const element = document.querySelector(selector);
                    if (element) {
                        callback(element);
                        observer.disconnect(); // Stop observing once the element is found
                        return;
                    }
                }
            }
        });

        observer.observe(document.body, { childList: true, subtree: true });

    };

    $(document).ready(function() {


        waitForElementMutation('.messageWrapper___mxBvg', function(element)  {

            var Def =  $('.defense___LITyA');
            var Speed = $('.speed___qNMTy');
            var Dex = $('.dexterity___6ayVQ');
            var Str =  $('.strength___UwX1Y');
            var AllStats = $('.properties___dT3ke');

            var newCheckboxes = `
      <div style="text-align:center;">
      <Span>Please check one.</span>
        <input type="checkbox" id="Strength" name="Strength" value="Strength">
        <label for="Strength">Strength</label>

        <input type="checkbox" id="Defense" name="Defense" value="Defense">
        <label for="Defense">Defense</label>

        <input type="checkbox" id="Speed" name="Speed" value="Speed">
        <label for="Speed">Speed</label>

        <input type="checkbox" id="Dexterity" name="Dexterity" value="Dexterity">
        <label for="Dexterity">Dexterity</label>

        <input type="checkbox" id="Stacking" name="Stacking" value="Stacking">
        <label for="Stacking">Stacking</label>
      </div>
    `;
            $(".messageWrapper___mxBvg p").append(newCheckboxes);
            //setting up checkboxes
            //strength checkbox
            function SetStrength() {
                Def.css('display','none');
                Speed.css('display','none');
                Dex.css('display','none');
                Str.css('margin','0 auto');
                $('#Defense').prop('disabled', true);
                $('#Speed').prop('disabled', true);
                $('#Dexterity').prop('disabled', true);
                $('#Stacking').prop('disabled', true);
            };
            var Strengthstate = localStorage.getItem('StrengthCheckboxState');
            if (Strengthstate === 'true') {
                $('#Strength').prop('checked', true);
                SetStrength();
            } else if (Strengthstate === 'false') {
                $('#Strength').prop('checked', false);
            }
            $('#Strength').change(function() {
                if ($(this).is(':checked')) {
                    console.log('Checkbox is checked!');
                    localStorage.setItem('StrengthCheckboxState', this.checked);
                    SetStrength();
                } else {
                    console.log('Checkbox is unchecked!');
                    localStorage.removeItem('StrengthCheckboxState');
                    Def.css('display','block');
                    Speed.css('display','block');
                    Dex.css('display','block');
                    $('#Defense').prop('disabled', false);
                    $('#Speed').prop('disabled', false);
                    $('#Dexterity').prop('disabled', false);
                    $('#Stacking').prop('disabled', false);
                }
            });
            //Defense Checkbox
            function SetDefense() {
                Str.css('display','none');
                Speed.css('display','none');
                Dex.css('display','none');
                Def.css('margin','0 auto');
                $('#Strength').prop('disabled', true);
                $('#Speed').prop('disabled', true);
                $('#Dexterity').prop('disabled', true);
                $('#Stacking').prop('disabled', true);
            };
            var Defensestate = localStorage.getItem('DefenseCheckboxState');
            if (Defensestate === 'true') {
                $('#Defense').prop('checked', true);
                SetDefense();
            } else if (Defensestate === 'false') {
                $('#Defense').prop('checked', false);
            };
            $('#Defense').change(function() {
                if ($(this).is(':checked')) {
                    console.log('Checkbox is checked!');
                    localStorage.setItem('DefenseCheckboxState', this.checked);
                    SetDefense()

                } else {
                    console.log('Checkbox is unchecked!');
                    localStorage.removeItem('DefenseCheckboxState');
                    Str.css('display','block');
                    Speed.css('display','block');
                    Dex.css('display','block');
                    $('#Strength').prop('disabled', false);
                    $('#Speed').prop('disabled', false);
                    $('#Dexterity').prop('disabled', false);
                    $('#Stacking').prop('disabled', false);
                }

            });
            //Speed Checkbox
            function SetSpeed() {
                Str.css('display','none');
                Def.css('display','none');
                Dex.css('display','none');
                Speed.css('margin','0 auto');
                $('#Strength').prop('disabled', true);
                $('#Defense').prop('disabled', true);
                $('#Dexterity').prop('disabled', true);
                $('#Stacking').prop('disabled', true);
            };
            var Speedstate = localStorage.getItem('SpeedCheckboxState');
            if (Speedstate === 'true') {
                $('#Speed').prop('checked', true);
                SetSpeed();
            } else if (Speedstate === 'false') {
                $('#Speed').prop('checked', false);
            };
            $('#Speed').change(function() {
                if ($(this).is(':checked')) {
                    console.log('Checkbox is checked!');
                    localStorage.setItem('SpeedCheckboxState', this.checked);
                    SetSpeed();


                } else {
                    console.log('Checkbox is unchecked!');
                    localStorage.removeItem('SpeedCheckboxState');
                    Str.css('display','block');
                    Def.css('display','block');
                    Dex.css('display','block');
                    $('#Strength').prop('disabled', false);
                    $('#Defense').prop('disabled', false);
                    $('#Dexterity').prop('disabled', false);
                    $('#Stacking').prop('disabled', false);
                }
            });

            //Dexterity checkbox
            function SetDexterity() {
                Str.css('display','none');
                Def.css('display','none');
                Speed.css('display','none');
                Dex.css('margin','0 auto');
                $('#Strength').prop('disabled', true);
                $('#Defense').prop('disabled', true);
                $('#Speed').prop('disabled', true);
                $('#Stacking').prop('disabled', true);
            };
            var Dexteritystate = localStorage.getItem('DexterityCheckboxState');
            if (Dexteritystate === 'true') {
                $('#Dexterity').prop('checked', true);
                SetDexterity();
            } else if (Dexteritystate === 'false') {
                $('#Dexterity').prop('checked', false);
            };
            $('#Dexterity').change(function() {
                if ($(this).is(':checked')) {
                    console.log('Checkbox is checked!');
                    localStorage.setItem('DexterityCheckboxState', this.checked);
                    SetDexterity();
                } else {
                    console.log('Checkbox is unchecked!');
                    localStorage.removeItem('DexterityCheckboxState');
                    Str.css('display','block');
                    Def.css('display','block');
                    Speed.css('display','block');
                    $('#Strength').prop('disabled', false);
                    $('#Defense').prop('disabled', false);
                    $('#Speed').prop('disabled', false);
                    $('#Stacking').prop('disabled', false);
                }
            });
            //Stacking Checkbox
            var GymTrain =  $('.propertyContent___O7nDG');
            function SetStacking() {
                AllStats.css('pointer-events', 'none');
                GymTrain.css('filter','blur(1px)');
                $('#Dexterity').prop('disabled', true);
                $('#Strength').prop('disabled', true);
                $('#Defense').prop('disabled', true);
                $('#Speed').prop('disabled', true);

            };
            var Stackingstate = localStorage.getItem('StackingCheckboxState');
            if (Stackingstate === 'true') {
                $('#Stacking').prop('checked', true);
                SetStacking();
            } else if (Stackingstate === 'false') {
                $('#Stacking').prop('checked', false);
            };
            $('#Stacking').change(function() {
                if ($(this).is(':checked')) {
                    console.log('Checkbox is checked!');
                    localStorage.setItem('StackingCheckboxState', this.checked);
                    SetStacking();
                } else {
                    console.log('Checkbox is unchecked!');
                    localStorage.removeItem('StackingCheckboxState');
                    AllStats.css('pointer-events', 'auto');
                    GymTrain.css('filter','blur(0px)');
                    $('#Strength').prop('disabled', false);
                    $('#Defense').prop('disabled', false);
                    $('#Speed').prop('disabled', false);
                    $('#Dexterity').prop('disabled', false);
                }
            });

            //End of checkboxes.

        });

    });

    // Your code here...
})();