Greetings,
I used to be one of the developers for pXI and I'll shed some light on some of the major flaws with the previous versions. Firstly, the latest SVN prior to the shutdown will have long status effect duration enhancements implemented (e.g. hundred fists). Ideally, you'll want to start from that version and build on that rather than 0.6.4.
Updates change the dialog tables and monster lists (visible on POLUtils). These have to be manually changed back. It is possible to develop a fixer app which will scan the file and automatically correct the incorrect entries. You can use the zone cap feature built into FFXIMon for new zones. FFXIMon is a packet capturing tool which can dump packets captured from retail, or can send packets to the FFXI retail servers (!) to request the location of all monsters on the monster list. As far as we know, SE never cared about these packet probes. These results can then be used for pXI.
For new development, it is vital you have a retail version in conjunction with FFXIMon. You can then capture packets and use the @inject command in pXI to see what happens on the client. Using this you can add functionality for a wide range of unimplemented things (dynamis hourglasses, BCNMs, enspell procs, etc).
Scripts will allow full implementation of the remaining (a lot) of quests/missions which do not work. The pXI wiki had a lot of information on how to find the Event IDs which is vital for lua scripting. If I recall, you can use scripting to implement even some advanced things like Fields of Valor pages. For those not familiar with how scripting with quests/missions work:
- You click an NPC. Client sends packet saying 'hey! I clicked this guy!'
- Server looks for the lua script of that NPC, if it doesn't exist it displays an error on the server log. If a script does exist, it executes it.
- The script itself consists of several functions for start/middle/end of the event. When you run a 'cut-scene', this is called an 'Event'. Each NPC has unique event IDs which can be found by looking in the dats, though it's tedious. Once the event is started, it will run through by following the dat commands, and then finish with a CSID/option ID. For multiple choice options, the option you choose is shown in the option ID. At the end of the Event, a CSID is displayed. The functionality is there to do even the most complex events.
There's still an awful lot that wasn't included, which will require some dedicated development:
- Mob 'wandering' (consists of tons of invisible points, monsters can wander between set points. Observe retail to see this.)
- Mob pathing (big problem since players can wander outside of these set points, can probably pseudo do it by making it 'wander' towards the player then when there isn't a near point, go directly. This will simulate the crappy AI pathing in retail FFXI)
- Mob spell casting/tp moves (stressing tp moves, since the damage formulas would need to be known which the FFXI community has little interest in finding out)
- Instancing. (Never true instancing in FFXI, but the structure needs to be worked out for handling multiple groups in BCNMs)
- Global battles (Beseiged/Campaign, handling the AI of friendly NPCs as well as these special monsters (Besieged monsters slowly work towards the AC, campaign monsters focus on the fort, etc)
- Status effects (partly done in this version, but massive work still needed, namely on the scripting front)
- GMs (there's no distinction between admins/normal players on the server)
- etc...
mXI source code was never made public, and as such, no sources exist on the internet. Provided SE doesn't perform some overhaul of the POL/FFXI code, mXI should not break.
Ultimately, SE may do an update one day which will completely cripple pXI or mXI in its current state, and the only reliable way to avoid all development work going to waste is to have an install of FFXI which is never updated, and make pXI use that version. This is the best way to develop pXI without an active development team, as the content will remain static giving the sparse developers time to get a nice stable working version.