Spraypaint should theoretically be quite easy to implement, and thus a good start. Just have an object names "Spray_can", have a variable for quantity of paint left, and each time the can is used when in hand, a function checks its target. If the target is in a list of paintable things (which would include walls, floors, etc...) and the quantity of paint left is greater than zero, a text box pops up asking what the user wants to write on the object. Then, that string is added to the objects desc variable, so that when someone examines it, it turns out something like: "This is a wall. On it, someone has written 'DOWN WITH THE CONSERVATIVES!' with paint."
Now, this would be easy THEORETICALLY. The problem with implementing it in SS13, is that we have no idea how this piece of code should fit with the rest:
-What object type do we use for our spray can? (This is important as otherwise it can't be equipped/used as other items can)
-What variables are needed on this type of item (size? damage? resistance to fire? weight?...) and what should these variables be for a spray-can-like object (eg: is a size 1 object as big as a bowling ball or as big as a human finger? We need to know so as to know what variable would be appropriate for our spray can)
-Are there pre-defined functions for what we are trying to make the spray-can do, or do we have to make our own? If the second choice, how do we make sure our function doesnt conflict with other functions on other items??
-and a whole lot of other stuff...
All these problems wouldnt exist if we had a more organized code base and maybe a guide explaining how it all works.