If you ever run under or over the required number of Ethics, the System will make it up by picking the "most supported" ethic to make up the difference.
That is how you got from Xenophobe + Fanatic Pacifist too Fanatic Xenophobe + Miltiarist.
That you switcehd all the way to fanactic Xenophile does indeed seem like a bug. When you switched from Fanatic Pacifist to Militarist, there was a trait point to few.
It should have done a in-place replacement of militarist to pacifist.
I agree this does sound like a bug.
- You embrace pacifism, causing the least supported ethic to be consumed, that happens to be fan. xenophobe, your intermediate ethics become militarist, xenophobe and pacifist
- Game checks if you have any violations of ethics. You do, can't have pacifist and militarist at the same time. So militarist gets dropped.
- Then it assigns the freed ethic point where there is the strongest support, which happens to be xenophile. This means your ethics are pacifist, xenophile and xenophobe.
- Game checks again if you have any violations of ethics. You do, can't be a phile and phobe at the same time. Checks which one is strongest, xenophile, then drops xenophope.
- Then it assigns the free ethic point to the strongest ethic in your empire, which is, not surprisingly, still xenophile.
The game does have proper tracking of the "Axis" for each Ethic. on the Xen axis:
Fanatic Xenophobe - 0
Xenophobe - 1
Fanatic Xenophile - 4
Xenophile - 3
For example, trying to go from Fanatic Materialist (4 SPI), Authoritarian (1 COL), to Fanatic Materialsit (4 SPI)/Pacifist(3 MIL) is ended up:
Embracing Pacfist:
Materialist (SPI 3), Authoritarian (1 Col), Pacifist (3 MIL).
Embracing Materialsit:
Fanatic Materialist (4 SPI), Pacifist (3 MIL).
It looks like a properly made enumeration (with 2 being there for "neutral" in the axis and not displayed). However that would require a underflow when it did the change:
It somehow went from 0 to 4 (or 256 depending how the code works in this part).
Could also ahve to do with this part at the start of the file (but it predates Ethic changes and I never figured out what it does - my guess was Diplomatic Opinion, but those seem actually more hardcoded in the Opinion File):
Code:
ethic_categories = {
col = {
opinions = { 1 1 1 1 1 }
}
xen = {
opinions = { 0 0 1 1 1 }
}
mil = {
opinions = { 1 1 1 1 1 }
}
spi = {
opinions = { 1 1 1 1 1 }
}
}
It defintely looks like a bug/unintended behavior.
I would be very intersted wich value is written into the savegame file. So I would definitely add those to the bug report.
If this is not a Ironman game, you can propably modify the value in the savegame.