But cruiser03x.pof is a mediavp addition and, Taylor, you are coding a feature that will allow to change this alternate model use with just a texture replacement over cruiser03. So maybe future mediavp editions are going to lack cruiser03x and PI is going to crash.
The new texture replacement stuff makes that optional, but it's not going to break with old tables. In my personal VPs I have already switched the Levy to use the standard cruiser01 and the Lilith to use cruiser03. They look exactly the same as before, but use the same POF. If the MediaVPs do the same thing then obviously PI will need to include the missing POF(s) in it's VPs, or change the tables to match. Technically that's a problem either way though. This is going to get off-topic pretty easily, but we probably need to work out community content packs once the next set of MediaVPs comes out. That would allow us to cut down on the base MediaVP content, and then have series of content packs which provide addition models/textures/effects. It adds a dependency issue, but does add considerably to compatibility.
Of course, I know this feature can be quite like a Pandora's box in wrong hands. BUT if you use it wisely (as example only over a secondary mod like Media vps, a set you know is always going to have the same game balance settings), you could build mods which would be fully compatible with all future media vps editions, despite all their changes, and that will even 'autoupdate' art improvements.
Yeah, the "wisely" is the problem. I'm confident that it's beyond my coding abilities to make what you want work properly. There is just too much that can go wrong, and the way my brain works, I can think of new problems all day long. I don't see it really being used that much, and it's probably going to require a significant amount of code work to pull off. But even it were done, the "wisely" part is going to kill us. There is so much room for abuse in a feature like this that we are going to get bug reports, ones that are extremely difficult to diagnose, like there's no tomorrow. Abuse with EFFs only gives you memory issues, but abuse with this can lead to all sorts of mission bugs, game crashes, and who knows what else.
Maybe one of the other coders will have an idea to make this work that I can't think of, but from where I sit, this particular feature isn't remotely worth the work and trouble that it brings. Perhaps karajorma or Goober5000 have something to add which makes the idea more feasible that what I'm thinking of.
what about default templates for tbls? instead of +nocreate: have something like +use template: template name, while nocreate modifies an existing entry, use template copies another entry and then stacks its changes on top of it. take the herc 2 entry, say i want to take the herc's stats, but i want to make it faster and a little more maneuverable, but i don't want to modify the original. so i make a new entry with its own name, say advance herc 2, then i have +use template: herc 2, and i use any other entry for each part i want to change. so now i got what is essentially a herc 2 but its got a new name and a new set of stats.
I thought that you were talking about the same thing as ARSPR at first, but that I realized what you were asking for: not a copy of a ship entry, but a stock template feature. That's actually a pretty damn cool idea.
In either the existing ships.tbl, or in tbms, you could just define a stock template. Those templates would be stored in a dynamic array, only during parsing, and a ship entry could reference that template as it's default values. The array would then be free'd after parse, since those templates would no longer be needed.
So you would have something like:
#Ship Templates
$Template: Fighter01
(normal ship entries which define the template)
#End
And then just reference in the ship entry. You wouldn't waste ship entries on the templates, the templates could be easily expanded via tbm, and you could specify the template and the entries that use it in the same tbm.
Does that should like what you had in mind. If so then that is most certainly doable, and I doubt it would take more than a weekend to code and test.