Add support for one-sided alliances
Adds supported for one-sided alliances exactly (I hope) how they worked in S2. This makes it possible to achieve the same alliance logic as in the campaigns designed for S2 (tested with the Roman campaign and the FANpaign). FANpaign in particular makes almost no sense to play without such alliances being possible. See video1 and video2 for a short demonstration.
Adds an addon for catapults to attack allies, which was the case in S2 (defaults to disabled in RttR). This also makes old campaigns more viable since many scenarios rely on a slow catapult creep without starting a war.
These should probably be split into 2 PR's, but I am modifying campaign scripts in both so I worked on one branch and the addon does not make much sense without modifying campaign alliances.
Related to issues #743 and #1177
Great work! Just two questions: Does this work in multiplayer? Is it possible to break such pact via diplomacy window as well?
Great work! Just two questions: Does this work in multiplayer? Is it possible to break such pact via diplomacy window as well?
This type of pact does not appear in the diplomacy window, so you cannot suggest or break such an alliance this way.
I was designing this with only single player in mind, thus the human can always attack (even their allies), as it was in S2. As it stands the pact does not make sense in multiplayer unless AIs are also involved and it can only be made through scripts. I think it could be made to work with multiplayer by adding one additional if statement in bool GamePlayer::CanAttack(const unsigned char otherPlayerId) const, I just didn't think much about multiplayer other than disallowing suggesting such a pact.