It would be cool to allow the maximum access to the game engine through a scripting language to allow modders to change stuff, such as adding new weapons, graphics, game rules, AI, etc. This could be done using a popular scripting language (Lua, Python, AngelScript).

Just saying because I would very much like to see/implement riot shields, grappling hooks and other stuff into the game, and feel that the project would benefit by using a design of this kind.

That would be cool. I think that after finishing reimplementing x-com functionality, it would be great if most of game logic (prices, technologies, alien species, mission types) could be softcoded. That way C++ code could only contain engine, while actual game could be implemented in some scripting language. This would allow experimenting with game without requirement to compile code.

AngelScript could be best choice if you would like to stick to c++ like syntax. I would suggest also lua - many games are using it. For example corsix-th (open source engine for theme hospital) has all high-level logic written in lua:https://code.google.com/p/corsix-th/wiki/LuaAndC

While it will be a while before the game can be easily modded, I am designing it with that in mind. Currently all the static value stuff like crafts, weapons, items, aliens, research tree, base layout, etc, are all kept separate from the engine. So the engine treats all that stuff equally. Whether it's a Skyranger or an Avenger it won't care, it'll just look at the values like "soldier capacity" or "acceleration", so you can easily make your own stuff and later it'll all be loaded from XML or something.

I haven't looked at stuff like Lua and external scripting though. I know it's all the rage but I imagine it's a lot more work than it looks, and I'm not sure of the advantage of softcoding everything and turning it into a generic game engine just for moddability's sake.

I'd strongly advise into putting all the content data-driven (UI screens, soldier names, base facilities, aircrafts, etc.) instead of hard coded within the game logic. A good example of great externalization is what they did with Jagged Alliance 2 1.13; making the game fully customizable.As for LUA, it is really not that hard to integrate, but I'm not sure it would serve much purpose, except maybe for the AI.

I haven't looked at stuff like Lua and external scripting though. I know it's all the rage but I imagine it's a lot more work than it looks, and I'm not sure of the advantage of softcoding everything and turning it into a generic game engine just for moddability's sake.

For mods for such things like new craft etc. You wouldn't need scripting, you could just read in the data like you do with the current UFO data.

The only thing I could think you'd need scripting for is for things like building a non-standard weapons (like the Blaster Launcher), or a teleporting device (like Unreal Tornament's Translocator)

People who are interested in a scriptable xcom compatible engine may consider ufo2000 as an alternative

Regarding lua vs. xml. Being able to use scripts as opposed to just a plain structured data representation gives a bit more flexibility. For example, ufo2000 uses lua scripts for random maps generation (in order to ensure properly aligned roads, etc.).

AI is another good candidate for scripting, but it was mentioned already.