I'm very JS-ignorant and have limited experience with sheetworkers, and I wonder if anyone can help me spot what I'm doing wrong. I'm using the following sheetworker in a custom White Wolf Aberrant sheet of mine. It basically works; however, the nested case statement is returning the default value no matter what I enter. "SpecAttrName" is the name of the attribute being called (such as "strength") Value 1: "strength" and etc. are the value of a raw attribute (0, 1, 2, etc.) Value 2: "m_strength" and etc. are the value of a raw "mega" attribute (0, 1, 2, etc.) Value 3: "m_strength_mod" and etc. are calculated values based on the corresponding "mega" attributes ("m_strength," etc.); due to the formula I have to use to calculate these, the "mod" value defaults to a minimum of 1, so I need to check to see if the base mega value is 0; if it's not 0, I need to use the calculated value, and otherwise I need to use 0. Based on the name of the attribute entered, the worker correctly pulls the value for the raw attribute ("strength," etc.). It can pull the calculated values as well ("m_strength_mod," etc.), but it returns the calculated mod value for the mega attribute even if the mega attribute is 0. Basically, I just need to be able to check if value 2 is 0. If it's 0, I need to return 0. If it's <0, I need to return value 3. I hope that makes sense. However, it always returns value 3, no matter what the input is, and never returns 0. Can anyone help me spot what I'm doing wrong here? on("change:repeating_specials:SpecAttrName", function() { getAttrs(["repeating_specials_SpecAttrName","strength","m_strength","m_strength_mod","charisma","m_charisma","m_charisma_mod","intelligence","m_intelligence","m_intelligence_mod","dexterity","m_dexterity","m_dexterity_mod","manipulation","m_manipulation","m_manipulation_mod","wits","m_wits","m_wits_mod","stamina","m_stamina","m_stamina_mod","composure","m_composure","m_composure_mod","resolve","m_resolve","m_resolve_mod"], function(values) { let mySpAttrName = values.repeating_specials_SpecAttrName; let mystrength = values.m_strength; let mycharisma = values.m_charisma; let myintelligence = values.m_intelligence; let mydexterity = values.m_dexterity; let mymanipulation = values.m_manipulation; let mywits = values.m_wits; let mystamina = values.m_stamina; let mycomposure = values.m_composure; let myresolve = values.m_resolve; let mySpAttr = 0; let mySpEAttr = 0; switch (mySpAttrName) { case "strength": mySpAttr = values.strength; switch (mystrength) { case 0: mySpEAttr = 0; break; default: mySpEAttr = values.m_strength_mod; } break; case "charisma": mySpAttr = values.charisma; switch (mycharisma) { case 0: mySpEAttr = 0; break; default: mySpEAttr = values.m_charisma_mod; } break; case "intelligence": mySpAttr = values.intelligence; switch (myintelligence) { case 0: mySpEAttr = 0; break; default: mySpEAttr = values.m_intelligence_mod; } break; case "dexterity": mySpAttr = values.dexterity; switch (mydexterity) { case 0: mySpEAttr = 0; break; default: mySpEAttr = values.m_dexterity_mod; } break; case "manipulation": mySpAttr = values.manipulation; switch (mymanipulation) { case 0: mySpEAttr = 0; break; default: mySpEAttr = values.m_manipulation_mod; } break; case "wits": mySpAttr = values.wits; switch (mywits) { case 0: mySpEAttr = 0; break; default: mySpEAttr = values.m_wits_mod; } break; case "stamina": mySpAttr = values.stamina; switch (mystamina) { case 0: mySpEAttr = 0; break; default: mySpEAttr = values.m_stamina_mod; } break; case "composure": mySpAttr = values.composure; switch (mycomposure) { case 0: mySpEAttr = 0; break; default: mySpEAttr = values.m_composure_mod; } break; case "resolve": mySpAttr = values.resolve; switch (myresolve) { case 0: mySpEAttr = 0; break; default: mySpEAttr = values.m_resolve_mod; } break; } setAttrs({ repeating_specials_AttrSpec1:mySpAttr, repeating_specials_MAttrSpec1:mySpEAttr }); }); }); Thanks for any insights!