Ok, so. Pushed an update that fixes hard edges appearing whenever vertices are split in any way other than by normals/shading - well, almost. Turns out that seams in UVs from a UV file will *always* cause hard edges in the shading.
Why?
Despite how the LWO and UV formats store things, at the end of the day, a vertex can only have one of each attribute - one position, one normal, one UV coordinate, etc. (Well there are such things as multiple UV sets but that's not relevant to how this works or the problem at hand pls don't nitpick I mean they're just yet another set of attributes anyway right so like it doesn't matter that they're UVs at all blarghghgh.)
So when you have to have a seam in your UVs, or a hard edge on a corner, you'll actually ultimately end up with split/duplicate vertices - identical in every way, sitting in the same place, except they might have different UV coordinates for a seam in the texture, or different normals to form a hard edge.
Here's a really nice visual explanation I always point to. Though in this case, the problem has more to do when this occurs with UV splits.
So what's the problem exactly? Well, the LWO format doesn't store vertex normals - the game calculates them upon loading. If vertices are split, that'll result in a visible hard edge. That's a-ok.
Except, when you add UV coordinates to the mix, suddenly you have to split some of your vertices for those texture seams. This is pretty much functionally identical to unwelding them to control the smoothing of your model.
If you do this step *after* you've already calculated your UV coordinates, you're fine. Your new split/duplicated vertices will still have normals that line up with each other, and so there won't be any visible seam. This is what the game does for planar textures - after all, planar textures are just info on how to calculate UV coordinates.
But when the game instead loads UV coordinates from a UV file, it splits vertices to accommodate them *before* calculating the normals. And so, there end up being a lot of split vertices - and thus hard edges - you didn't intend there to be, wherever there's seams in the UV map.
That's what seems to be happening anyway. There could be more weird factors to it. God knows what the game's really doing.
Have fun with that :DDD