I see, in that case for the injurys below is one of my selections <input type="hidden" class="sheet-injurytoggle" name="attr_injury" value="winded" /> <!-- Targeted elements must be direct siblings --> <div class="sheet-winded"> <br /> <button type="roll" name="roll_injury" value="&{template:default} {{name=@{character_name}}} {{Injury: Winded}} {{Received from: Heavy physical exertion, being struck in the stomach, or sudden impact to the chest.}} {{Duration: [[2d10]] rounds. Remaining time (@{winded_time})}} {{effects: Reduces Physicality checks by -2. Movement speed is halved.}}">Display injury</button> <br /> <br /> <label class="txt" style="font-size:1.8em;text-decoration:underline;">Winded</label> <label class="txt" style="font-size:1em;">Received from: Heavy physical exertion, being struck in the stomach, or sudden impact to the chest.</label> <label class="txt" style="font-size:1em;">Duration: 2d10 rounds. Remaining time:</label><input name="winded_time" type="number"></input> <label class="txt" style="font-size:1em;">Effects: Reduces Physicality checks by -2. Movement speed is halved.</label> <span>Injury in effect:</span> <select name="attr_winded" class="sheet-injuryselect"> <option value="0">Not in effect</option> <option value="1">In effect</option> </select> </div> with the script worker being as follows to apply the value <script type="text/worker"> // Define the values each injury contributes to different stats const injuryValues = { winded: { physicality: -2, endurance: 0, mentality: 0, intellect: 0, observation: 0, charm: 0 }, dizzy: { physicality: 0, endurance: 0, mentality: 0, intellect: 0, observation: -3, charm: 0 }, groggy: { physicality: 0, endurance: -2, mentality: -2, intellect: 0, observation: 0, charm: 0 }, disoriented: { physicality: 0, endurance: 0, mentality: 0, intellect: -4, observation: -4, charm: 0 }, nauseous: { physicality: -2, endurance: 0, mentality: 0, intellect: 0, observation: 0, charm: 0 }, blurred_vision: { physicality: 0, endurance: 0, mentality: 0, intellect: 0, observation: -3, charm: 0 }, ringing_ears: { physicality: 0, endurance: 0, mentality: 0, intellect: 0, observation: -2, charm: 0 }, vertigo: { physicality: 0, endurance: 0, mentality: 0, intellect: 0, observation: 0, charm: 0 }, tunnel_vision: { physicality: 0, endurance: 0, mentality: 0, intellect: 0, observation: -3, charm: 0 }, flash_blindness: { physicality: 0, endurance: 0, mentality: 0, intellect: 0, observation: 0, charm: 0 }, shivering: { physicality: -2, endurance: -2, mentality: 0, intellect: 0, observation: 0, charm: 0 }, slurred_speech: { physicality: 0, endurance: 0, mentality: 0, intellect: 0, observation: 0, charm: -3 }, weak_knees: { physicality: 0, endurance: -2, mentality: 0, intellect: 0, observation: 0, charm: 0 }, cold_sweats: { physicality: 0, endurance: 0, mentality: -2, intellect: 0, observation: 0, charm: 0 }, confusion: { physicality: 0, endurance: 0, mentality: 0, intellect: -4, observation: 0, charm: 0 } }; // Listen for changes to all injury attributes const injuryAttrs = [ 'winded', 'dizzy', 'groggy', 'disoriented', 'nauseous', 'blurred_vision', 'ringing_ears', 'vertigo', 'tunnel_vision', 'flash_blindness', 'shivering', 'slurred_speech', 'weak_knees', 'cold_sweats', 'confusion' ]; on(`change:${injuryAttrs.join(' change:')}`, function() { getAttrs(injuryAttrs, function(values) { // Initialize injury totals for each stat let injuryPhysicality = 0; let injuryMentality = 0; let injuryEndurance = 0; let injuryIntellect = 0; let injuryObservation = 0; let injuryCharm = 0; // Loop through each injury and apply its effects if the injury is active injuryAttrs.forEach(attr => { if (parseInt(values[attr], 10) === 1) { injuryPhysicality += injuryValues[attr].physicality; injuryMentality += injuryValues[attr].mentality; injuryEndurance += injuryValues[attr].endurance; injuryIntellect += injuryValues[attr].intellect; injuryObservation += injuryValues[attr].observation; injuryCharm += injuryValues[attr].charm; } }); // Set the calculated injury attributes setAttrs({ injury_physicality: injuryPhysicality, injury_mentality: injuryMentality, injury_endurance: injuryEndurance, injury_intellect: injuryIntellect, injury_observation: injuryObservation, injury_charm: injuryCharm }); }); }); // Initialize injury attributes when the sheet is first opened on('sheet:opened', function() { setAttrs({ injury_physicality: 0, injury_mentality: 0, injury_endurance: 0, injury_intellect: 0, injury_observation: 0, injury_charm: 0 }); }); </script> as for the tabs I literally took the code from the example on the wiki and just copy and pasted my parts in from this CSS Wizardry - Roll20 Wiki but I believe it may be having a problem with the css but im not sure, here is the css Im thinking about /* By deafult, hides all archetypes*/ .charsheet .sheet-winded, .charsheet .sheet-dizzy, .charsheet .sheet-groggy, .charsheet .sheet-disoriented, .charsheet .sheet-nauseous, .charsheet .sheet-blurred_vision, .charsheet .sheet-ringing_ears, .charsheet .sheet-vertigo, .charsheet .sheet-tunnel_vision, .charsheet .sheet-flash_blindness, .charsheet .sheet-shivering, .charsheet .sheet-slurred_speech, .charsheet .sheet-weak_knees, .charsheet .sheet-cold_sweats, .charsheet .sheet-confusion { display: none; } /* Show elements based on input value */ .charsheet .sheet-injurytoggle[value="winded"] ~ div.sheet-winded, .charsheet .sheet-injurytoggle[value="dizzy"] ~ div.sheet-dizzy, .charsheet .sheet-injurytoggle[value="groggy"] ~ div.sheet-groggy, .charsheet .sheet-injurytoggle[value="disoriented"] ~ div.sheet-disoriented, .charsheet .sheet-injurytoggle[value="nauseous"] ~ div.sheet-nauseous, .charsheet .sheet-injurytoggle[value="blurred_vision"] ~ div.sheet-blurred_vision, .charsheet .sheet-injurytoggle[value="ringing_ears"] ~ div.sheet-ringing_ears, .charsheet .sheet-injurytoggle[value="vertigo"] ~ div.sheet-vertigo, .charsheet .sheet-injurytoggle[value="tunnel_vision"] ~ div.sheet-tunnel_vision, .charsheet .sheet-injurytoggle[value="flash_blindness"] ~ div.sheet-flash_blindness, .charsheet .sheet-injurytoggle[value="shivering"] ~ div.sheet-shivering, .charsheet .sheet-injurytoggle[value="slurred_speech"] ~ div.sheet-slurred_speech, .charsheet .sheet-injurytoggle[value="weak_knees"] ~ div.sheet-weak_knees, .charsheet .sheet-injurytoggle[value="cold_sweats"] ~ div.sheet-cold_sweats, .charsheet .sheet-injurytoggle[value="confusion"] ~ div.sheet-confusion { display: block; } .charsheet .sheet-character, .charsheet .sheet-journal, .charsheet .sheet-configuration { display: none !important; } /* Style the active button */ .charsheet .sheet-tabstoggle[value="character"] ~ div .sheet-button0 {outline: 2px solid red;} .charsheet .sheet-tabstoggle[value="journal"] ~ div .sheet-button1 {outline: 2px solid red;} .charsheet .sheet-tabstoggle[value="configuration"] ~ div .sheet-button2 {outline: 2px solid red;} /* Show the selected tab content */ .charsheet .sheet-tabstoggle[value="character"] ~ .sheet-character { display: block !important; } .charsheet .sheet-tabstoggle[value="journal"] ~ .sheet-journal { display: block !important; } .charsheet .sheet-tabstoggle[value="configuration"] ~ .sheet-configuration { display: block !important; } finally for the inventory thing, Im trying to avoid scripts, and just wanted to know if it was possible in a regular character sheet