Papyrus is a threaded scripting language. I've found that, for me at least, thinking about the relationship between game objects and scripts makes more sense when you apply object-oriented programming logic to it. Which makes sense because that is basically what Papyrus is, just without some of the fancier lower-level object creation that would make my day. What I would give to have a (vanilla, sorry SKSE team) function to actually get a FormID past 7F FF FF FF in Papyrus. Maybe I'll get my wish in Starfield. To answer your questions, your script would not be duplicated, each individual helmet created of types A and B would have its own instance of properties and variables. Please note that this is my understanding and I could be a little bit off base on some things, it's been a while since I did research on the inner workings of Papyrus. They all share the same script but will have individual instance / object data. Here is a link to the Papyrus Introduction on the Skyrim Creation Kit Wiki. Ah thank you. I think that cleared a lot of confusion I had. One more question, if the variables/properties are created for each instance of helmet in game, how does it handle items stacking? For example, if I have a helmet with a local variable foo=1 in its attached script lying on the ground and a helmet with a local variable foo=2 in its attach script in the inventory, when I pick up the helmet on the ground, what will happen? Does the game secretly track that you have the same helmet but with different local variables in your inventory?