Okay, now I have understood what you want to do.
It might even work. I don't know, because it has never been tried before.
But even if it would work, I would still advocate maintaining the distinction between player ships and NPCs. It is cleaner, although it is admittedly a little more work, because you need an extra shipdata.plist-entry for the player-variant of any ship.
If you examine the original shipdata.plist (the one inside your Oolite.app (you're on a Mac, aren't you?)), you will see that it doesn't even use the
like_ship-key. Player ships and non-player ships are simply two different worlds, so each ship is defined as an entity of its own.
Look at the shipdata-keys: In the NPC-ships you don't find
view_position_foo, simply because noone's going to look out of their window. And of course you don't find the
custom_views-array, for the very same reason.
Both of these are of course there - and needed - for player-ships. But in player-ships instead you won't find any
has_foo-key (like
has_ecm,
has_escape_pod,
has_scoop etc.). These keys determine whether an NPC-ship will be added to the Ooniverse with the corresponding equipment. But for a player-ship they make no sense, as the pre-installed equipment is determined by shipyard.plist, not by the shipdata.
If you want to create one single shipdata.plist-entry for every shiptype, which covers both player-ships and NPCs, you would of course need
all the relevant entries in it,
both view_position_foo and
has_foo. So either way, whether the ship would finally be spawned as player or as NPC, it would have a lot of superfluous keys in its shipdata.
And although I don't think that would be harmful (and I am reasonably sure there are a lot of ships out there, which, due to use of
like_ship, actually carry this superfluous ballast with them), it is just not clean scripting.
NB: What I said about those shipdata.plist-keys that are needed for a player-ship only, but not for an NPC, has of course some consequences for your work: If you make ships available to the player that haven't been intended so by their scripters, one important step on the way is that you give the player-variant
view_positions. So you need to insert the four keys
view_position_aft,
view_position_forward,
view_position_port and
view_position_starboard for each ship you plan to make buyable. And then of course you have to assign sensible values to them. Which will also require that you playtest each of the ships, looking through all its windows yourself and firing a laser in each direction, in order to check that the
view_positions and
laser_positions don't interfere (which can in the worst case make his own laser invisible for the player; not a good condition for successful aiming and shooting exercises).
And in the most ideal of all Ooniverses you would then do the same for the external views, so the
custom_views-array. This also has to be inserted to each player-ship's shipdata, and of course to be adjusted to the specific ship's size.
If you are really aiming for an
Ultimate Edition, I think that's what everybody would expect.