Well, there's a sliiiiight hitch with that:
(I'm pretty positive on all of this)
It would act like the SetMaterialCel() verb, where as all 3do's of that name would be affected, because JK keeps 1 copy of the 3do in memory. It was discussed some time ago, that one only need copy the model information, and change the thing's pointer to that new unique model, and the rest can be achieved from there. It would be possible to change individual surfaces, but intamate knowledge of your 3do would be required. Eh, then again, maybe not, cuz you can find out what material a 3do surface is using, so just search and replace would be possible.
IE, ReplaceThingMaterial(thing, old_mat, new_mat);
I'm not too sure how easy it would be to copy the model's info, what with the resource limit and all. I think we might be able to wire in some static limits of our own, albeit, much much higher than JKs.
Just take a look at what Sige has discovered in memory so far, we're sitting on a gold mine! I bet my balls we could create 3dos, materials, sectors, everything; dynamically.
(How well it'd sync up with MP, who knows...... probably not so good)
It it my intent to do some JK.exe hacking myself, hopefully it won't take up too much time, but it's a nice breather from the ordinary cogging and whatnot. LOL, before I could finish this post, I just had a whooooooole lot of explaining from Sige, on how to use Ollydbg and hacking into JK.exe, so here goes nothin.