erm, no, I need more explanation

lol...
Objects have set values... You can not "add" more values, other than what they have, or "remove" the types used. Thus... MyCreature has TONS of useless data attached to it, even if I don't use any of them. Plus, I can not make my own "attributes" that only "my script" uses, which will not interfere with other scripts. (EG, I can replace "DamagePhysical" with something like "Speed", but any object that is not mine, will assume that value is still "DamagePhysical".... And, my script will assume that a swords "DamagePhysical" is the "speed", and attempt to make it drive fast, as a car, unless I code more... telling it not to read a sword as a car, and telling it not to send that data to the "PhysX" controller.)
To elaborate...
If there are no pre-defined values which you can recycle, you have to fake-it. But that only gets you the value, not the correct value-processing which would be associated with that value... Like my lotto-numbers... I would have 3,000,000 swords possibly winning the lotto, if I used the "DamagePhysical" value, instead of my own custom "LottoNumbers" value.
To make your own values, you need to tell the game what "Type" of data it is... Bit/Boolean, Byte, INT/UINT, LONG/ULONG, Single/USingle, Double/Udouble, String, BLOB, etc... Or set a type as a type... MyValue as MyArray(bit,byte,bit,bit,string[40])... Then the game has to create a database for those custom values, so they can be sorted, called, etc... Which it does not have the ability to do, since it uses it's own data-structures.
Again... If a sword doesn't have a "Coolness" value... or a "Sparks" value... You can't add one, unless you recycle another existing value, or create scripts to fake it, using formulated values for coolness or sparks, for all weapons.