I decided to ditch the duel system as laid out before, and go with idea #2. It's already partly implemented. I got it partly coded on sunday night, did some more on monday morning but in the end it just wasn't that much fun, it was more work than I bargained, and it was a wierd distraction. If you want you can look at it this way, it was either going to be boring in which case it would just be an annoyance, or it was going to be fun in which case it was going to override the basic battle engine. It wasn't really a minigame per se, it was another core component but it added too many core components, like an extra annoying theme to musical piece. Less is truly more!
Reworked part of the person libs (lua) so that they work a little better, look a little cleaner, etc. Things are pretty nice on that front, the duel system works nicely with the code that is already there. There are a few messy bits but it's definitely in-hand. Basically, you can attack anybody at any time, except the "special" NPCs (who aren't really classed as NPCs, and I think it should be obvious enough to the player that they are there as an interface to some other underlying system rather than a real NPC to interact with). I worked a bit on the complaint system, tried to iron out some more holes, changed passports from XP to $ cost (and increased it a bit).
This morning I'm tackling one of the few real annoyances left. There is a problem with the tesselation/interpolation so that sometimes trees can be in the air. It's less noticable with higher res terrain, but my ideal is to get it working great with the lo-rez terrain. Basically, what I am doing is something called bitriangular interpolation which isn't really that hard, it's basically a bilinear interpolation except where each quad-patch is split into two triangles. The problem is the geomap tesselator sometimes puts the triangles in reverse orientation, so I have to detect when that is and reverse the interpolation function. I already tried fixing the tesselator but that's not going to be really possible. At any rate, then there will only be a small error introduced by angular-vs-linear interpolation across the cubemap, and I may or may not compensate for that depending on how it looks overall. I'm leaning towards not, since I'm not especially sure how to do that anyways.
I think maybe a good way of working is like, morning work on more mundane, engine oriented or graphics-oriented tasks, and in the afternoon/eves refine the gameplay model/etc. Since it seems that's when my juices flow best in terms of the massive, insane amount of text that has to go in....