I am currently running into a problem while combining the use of templates (just drag and drop them on the map) and my custom scripts.
So far, when processing an object that was created by using a template, I have not been able to access the values of properties where the property still has the default value specified by the template (aka values that are greyed out in the UI).
I also don’t find a reference to the template on the object (even the type property is not set).
Well, MapObject.type is still there for compatibility reasons. But the problem here is that there is currently no scripting access to MapObject::effectiveClassName, which takes into account tile objects and templates.
Also, I think in Tiled 1.8, accessing MapObject.type actually returned a type set on the template if it wasn’t changed for the instance, so it’s not entirely backwards compatible.