Recently I have really been looking to programming with OOP and realized - with some help from the community members here - that Instance.new is a form of OOP. After thinking for a while I thought I would ask if it was possible to create custom objects to create with Instance.new. I will be creating a blacksmith in my tycoon game that will allow players to customize their sword. By paying more they can get stuff like: Better animation, more damage, better looking sword and so on. Now I realize that it might be easier to Clone() things and change IntValues and require a module script or something on the sword. But I really think it would be cool if I could do:
Instance.new("Sword")
Sword.Damage = valueChosenByPlayer
Sword.Animation = animChosenByPlayer -- you get the idea
Even if I could do that, how would I get a model say in server storage be the actual sword that the player gets. Also, how would I access the Instance table or whatever to change it to accept: Instance.new("Sword"). If that wouldn't work I guess that I would have to use a module script and do Sword.new but still I am a little confused how I would get the numbers and the actual sword model chosen to work together. Finally, would it just be easier to Clone() the sword out of serverstorage and change IntValues inside of it than to do all this OOP stuff? If anyone can help I would really appreciate it. Thanks!
Note: I am not asking for you to write any script for me.

1 comment
I think :Clone() is the best option you have for saving time, resources, and it's less of a headache