One trick to add a new leaderhead without using a player slot for it could be to use the player without a leaderhead, which would be the barbarians.
Yeah, I didn't think about that, it could be handy. I was also thinking we could have an actual Player Advisor that Players can associate with, just to add more life to the game. He could ask the Advisor questions about strategy, hints, and such. Of course, we would have to write all this out but it would add to the immersion I bet. And we could perhaps use the Barbarian Player as the Advisor
Ok, I started thinking that my idea to use CvLeaderHeadInfo::setArtDefineTag would not work because CvInfos are not saved, but I tested it and it works. I added some test code to change the Pope with
GC.getLeaderHeadInfo(GET_PLAYER(ePlayer).getLeaderType()).setArtDefineTag("ART_DEF_LEADER_OLEG") and it worked. The Pope got a face lift, and it was a persistent one. Since we have the Pedia at the Main Menu, I am thinking that Art is loaded and the variables set at game load, at least for LeaderHeads as when the Diplomacy code retrieved the LeaderHead art it didn't pull it from XML but just used the getArtDefineTag. Still, using this changes the Pedia art as well, but I am thinking we can edit the Pedia Python files to compensate if we went this route, however...
Perhaps we could use the Barbarian LeaderHead spot. The Barbarian is actually in the Pedia and shows up as some vanilla Indian. This should be completely removed. Anyway, when this diplomacy is called we can have a variable set in LeaderHeads for Advisor art, we get the Art, and change the Barbarian's Art. Hmm, there is the issue with Name though, we can change our Name in the options, but looking at the code this is all handled in the exe. There is no setName code in the DLL, even the menu that pop's up is handled by the exe. That causes a problem as we can't change the name, and testing just now we can't change the name in the Diplomacy Screen either as that is done with the exe. Unless, we remove the Barbarian name so it doesn't appear and just use the Diplomacy text to explain who is who, we would have odd names. Is the Barbarian name ever used? All the units are set to Hidden so we never see any Owner. So perhaps we could just set his name to Envoy.
Ugh, if we just had our own Diplomacy Screen this wouldn't be an issue
So, what would be the simplest solution, hmm....