Thank you very much for the in depth break down/critique, it really does help someone like me who's still learning! I apologize for missing the custom sheet forum initially, but I still appreciate the response given. I wasn't aware of your site which seems like a really great resource for me to read up on. Thanks a bunch! GiGs said: Here's an expansion of your code, based on the direction I think you are going. First, the selects: < select name= "attr_ingredient1" > < option value= "" selected> (Click One) </ option > < option > Apple </ option > < option > Banana </ option > < option > Peach </ option > </ select > < select name= "attr_ingredient2" > < option value= "" selected > (Click One) </ option > < option > Apple </ option > < option > Banana </ option > < option > Peach </ option > </ select > This is just the selects - you'll need to include your own labels. This takes into account two things: In Roll20, a select has a value before you click it (undefined), even though it looks like the first item in the list is selected (it isn't). That's why a dummy first item is added here. In a select, you only need a value if the option value is different from the text you included. Here we are using the text as written (Apply, etc), so we don't need a separate value. Then in the HTML, we add an array of valid ingredient names, and check the selected options against those. Ifyou change the ingredients, you'll need to expand this array but the required format should be obvious. on ( 'change:ingredient1 change:ingredient2' , function () { getAttrs ([ "ingredient1" , "ingredient2" ], function ( values ) { var ingredient1Value = values . ingredient1 ; var ingredient2Value = values . ingredient2 ; var recipeOutput = "" ; var ingredients = [ "Apple" , "Banana" , "Peach" ]; if ( ingredients . includes ( ingredient1Value ) && ingredients . includes ( ingredient2Value )) { recipeOutput = ` ${ ingredient1Value } ${ ingredient2Value } Thing` ; } else { recipeOutput = "No recipe available for selected ingredients" ; } setAttrs ({ "textoutput" : recipeOutput }); }); });