Wow yes I did not know you cannot make your own instance_create script. That's awful!
Could we not have option in the object properties to set a default layer or depth? Then you don't need to remove instance_create because it will use the default setting.
Deprecating instance_create() feels like a move on the part of YYG to get everyone used to thinking in terms of layers, and making use of the new layer system.
Certainly, allowing us to create our own script named instance_create, and to code it to work however we would like it to work, should be allowed. But I also think it makes more sense to keep the old function around, seeing as how it was a reserved name in GML for many years.
Since we can't import 1.4 projects to see what it does to them, can someone from YYG comment on what the compatibility script is like for instance_create()? How ever it behaves, this should probably be the model for how a retained instance_create in GMS2 should work.
Without knowing what the compatibility script solution looks like, I would think the solution of allowing instance_create() to stick around, and it giving everything a default layer makes sense; in old GM, everything has a default depth of 0. A GMS2 room has a default instance layer for Instances. So, it seems reasonable that if we were to keep instance_create around, it would essentially work like
instance_create_layer(x, y, INSTANCES, obj) where
INSTANCES is hardcoded to be the layer named Instances.
Alternately, instance_create could work like
instance_create_depth(x,y, 0, obj).
The only weirdness about this is that objects no longer have a depth; only instances have depth, and really to emulate the way GMS1.x works, it would need to respect a default object depth property that could vary, object by object.