
Ok, its kind of a gaming aid, kind of an editor. Not sure which forum to put it in. Probably a better term would be an editing platform. It originated in another thread where I was wanting to fuse Python, XCom, and DOSBox.
It's not exactly as easy as I thought it would be (happens to me all the time) but I do have working python code that can manipulate and read most of the game files. There is no 'interface', atleast not a user interface. I've just been using the python interpreter right now, but I'll be working on scripts to make it more 'user-friendly'.
Probably the most 'practical' thing in here right now is the soldier renaming script. It can parse the first, and last names (along with a stat string), and the it will be thrown into a function where you can create your own stat strings. This was one of the motivations for this project as I feel somewhat limited by XCom-Util's system. Don't get me wrong it's a nice and clever system, but you can only add 1 letter at a time or else the entire process stops.
This one is done completely through python, an interpreted language so you have a bit more control, and in some cases ease. One thing I didn't like was the 'ranks' XComUtil would use. It just simply started from A and went up to F for each rank. Over time I got a bit used to it, but in the game I'd be like... C? what rank is that... let's see, rookie, squaddie,... sergeant?
There was also no way of controlling how it mangled the soldiers names. This one can, but can be a bit tricky. Also, it is possible for the script to get information on the base or craft the soldier is at, or even the armor. While the Base and Craft aren't included right now, it wouldn't be difficult.
So ok, let me explain the current status a bit here:
What PyXCOM currently is/does:
- Can view and change values of most XCom Save files (and OBDATA.DAT)
- Can save these changes
- 'Smart' readers that can link up to other files such that you can find what armor the first soldier on the first craft at your first base has (which requires use of SOLDIER.DAT, BASE.DAT, LOC.DAT, and CRAFT.DAT in concert)
- Relatively fast, Python has to be the fastest interpreted language I've seen, this is furthered by the fact that I've designed this from the bottom up to only load files when necessary and only parse entries needed. Thus if you never touch ASTORE.DAT, it will never be loaded (nor parsed). If you just want to look at the layout of your first base, BASE.DAT will be loaded and only one entry parsed.
- Easy to use editor for non-programmers (no user interface)
- Easily deployed, (you need Python as well as this, and of course XCOM)
- A complete editor
- Develop some kind of interface. Will probably be using the DOS command line first (eg: C:\UFO>python rename.py GAME_1), then maybe an actual command line interpreter as supplied by python. I'd like to get a GUI going with a mouse, which can be easily done... on modern machines. The problem is using a pure DOS envinronment as Python was developed after those golden years. I might do a 2 step solution, one with a nicer GUI that requires a modern machine, and another more archaic one that can run where XCom can run.
- Fixes - I'm hoping to possibly correct some issues left over in the game. One of which is the little known bug of 'complete' dirt modules. This can happen with editors like ClarkWheyr or even in normal games. Basically a module that is dirt is completed, but actually eats up monthly expenses, though they are not displayed on the Monthly costs screen.
- Better Soldier Equipping. Even with the Stat strings you usually have to usually manually equip the soldiers. The ingame engine and even XComUtil's is pretty darn good, but there's no real customizing. While XComUtil says you can assign a load out to a particular soldier, I haven't gotten this to work (currently I think it's because I don't have a soldier at every base of mine, which the readme says is a requirement, why don't I just put soldiers in those bases? Because they are new and don't even have living quarters yet! I'm more worried about getting a radar or hangar or stores first.) That all said, I'm hoping to still have a 'generated' load out that could be customized and slightly more intelligent. I hate how it puts the heaviest weapons on soldiers that can't handle them, and how it tries to allocate every piece to every soldier.
- Add some realistic features to the game - One idea spawned is to modify base defense. Stripping away aliens according to how much defense the base has. Another I have is limiting Heavy Plasmas to commanders/leaders, or only to larget UFOs, or until a certain amount of time has passed (basically user customizable).
- Going along with this, it might be possible to have multiple radars of the same type have a use. Since the Long range and Short range detection are stored in a file, we could override them according to how many radars the base has. Only issue is when another radar is completed the game will probably remake its values and you will have to apply the patch again, but see the next entry
- Monitoring system - Another issue I had with XComUtil's renaming was that it was always 1 battle behind, since stats aren't updated until in Geoscape which is after XCU runs. What I actually did was saved the game, switched to a seperate DOS prompt on my computer and issue the XCU command to rename it and then reloaded the file. I'm hoping to make a program or something to automatically 'patch' any saved games, updating soldier names, removing bad 'dirt' modules, updating base Radar stats, etc.