The game looks for PK3 files in a specific order, if it finds duplicate files inside those PK3s it overwrites previously loaded ones with the most recently read ones. So no, you aren't limited to only replacing things, you can add things too. Just create .ufo files that include all the old stuff but also have additional new stuff, and make sure the game loads your custom files last.
Any sort of "Just create new files that combine existing files with new stuff" is a disaster. As soon as the original file is modified by a patch, the "new additional" campaign fails, because it has the wrong old standard. Worse, you can't combine two different addons from two different people because they both assume that there is only one addon.
Addons, to add a campaign, have to be *ADDITIONAL*, not *replacements*.
It sounds like you didn't read through all the .ufo files, which is something you should do - If you did you would have gone through the several that control the research tree and research topics, which would answer some of what you were asking about. You can copy the .ufo files and, again, make a custom duplicate with additional topics and such for additional campaigns.
I did read them all. Maybe not every line of every one. Again, I don't want to duplicate and modify.
We have things like:
tech rs_laser
{
name "_Continuous Wave Laser Operation"
type tech
up_chapter tech
description {
default "_laser_txt"
}
pre_description {
default "_laser_pre_txt"
}
mail_pre
{
from "_mail_from_paul_navarre"
to "_mail_to_base_commander"
// subject defined by "name"
icon icons/tech
}
mail
{
from "_mail_from_paul_navarre"
to "_mail_to_base_commander"
// subject defined by "name"
icon icons/tech
}
time 6000
image techs/continuous_wave_laser_operation
}
There's no requires section in there, so unless I replace or modify that, there is no way to define a new tech tree that doesn't have that.
More to the point, there's no way with the current tech items to say "This item belongs to this campaign". There's no way to say "This is campaign X with modification Y". There's not one human campaign with 5 modifications, there's 5 different human campaigns, and there's only one tech tree.
This isn't rocket science, I've made custom .ufo files before on my own that create additional campaigns before quite easily and within a few quick minutes. The same goes for adding additional weapons (with new models) into the game, something I've also done, as well as aircraft and other stuff.
Ok, have you made a new campaign that has its own tech tree, that isn't just a variation of the old campaign, that doesn't have the "starting tech research", without having to remove stuff from the base?
===
The research_logic.ufo file seems to have some events that are triggered by game code. So, some new campaigns will require modifying the executable.
researched_list.ufo seems interesting. There's stock "humans knows this" and "humans can learn that". There could have been tags for things like continuous lasers so that it would be tied to the standard campaign.
Here's my question: Can you make it possible to play the humans OR the aliens? If there was code in there to run the human side, could you make the aliens playable? As far as I can tell, the answer is no. Everything from only a single set of UFO topics (instead of a per-campaign set of topics), to research trees that assume there's only one campaign and you start with X available, etc.
If I wanted (somewhat serious) to make a special tutorial campaign, with a custom subset of the research tree, with a smaller set of UfoPedia chapters, how would I do it without replacing the existing? How would I be able to say "You can play standard campaign in 5 variations, or tutorial campaign in 3 variations"?