Alright. I had some free time today and took a crack at establishing the basic rules of visibility. So far, this is just explaining the simpler examples where the hexes are in a straight line. I thought it would be good to get a consensus on this framework, before proceeding ahead into the murkier waters of the more complex patterns. Please try to find any holes in my rules! I think it could be a good starting point.
I'll be using the values from the table
@Victoria added in the first page of the thread. Honestly most of them are superfluous to understanding the system. Here are the key values:
Sight = 0 for all flat tiles
Sight = 1 for all hills (including forest/jungle)
Sight = 2 for mountains
Sight Through = 0 for all flat tiles
Sight Through = 1 for bare hills, and flat jungle/forest
Sight Through = 2 for mountains, and forest/jungle hills
"Sight Through" is a pretty terrible name, TBH. "Sight Block" would be more appropriate. But anyways I will be abbreviating these to S and ST values respectively. Also, there are three hexes involved with each calculation:
Hex 0 = Tile with the unit in it
Hex 1 = Tile adjacent to unit
Hex 2 = Tile two hexes out.
If my framework is correct, then there are only three important values:
S0. This is the "Sight" value for the hex with the unit on it. Ranges from 0-1 because you can't put a unit on a mountain.
ST1. This is the "Sight Through" value for the adjacent hex. Ranges from 0-2.
S2. This is the "Sight" value for the tile two hexes out from the unit. Ranges from 0-2.
Now let's move on to the rules I found:
Rule #1: If S0 ≥ ST1, "Hex 2" will always be visible regardless of its S value.
This explains the visibility bonus to the hex with a unit on it, and demonstrates why hills, with an S value of 1, provide better visibility than flat land. They allow a unit to see past other hills, or flat forest/jungles, since those terrain types have an ST value of 1.
Example #1:
S0 (Hill) = 1
ST1 (Hill) = 1
S2 (Flat Jungle Ivory) = 0
1
≥1 so Ivory is visible.
This is also illustrated by the common situation we all intuitively recognize - being surrounded completely by flat land. In that case, all S and ST values equal zero, so you always can see two hexes out.
Rule #2: If S0 < ST1, AND S2 ≤ ST1, then Hex2 will be blocked and not visible.
This rule defines 100% of the instances in which Hex2 will be blocked from sight. In order to be blocked, both S0 and S2 are compared to the ST value of the hex in between, and both checks must pass.
Example #2:
S0 (Flat) = 0
ST1 (Hills) = 1
S2 (Flat Furs) = 0
0<1 AND 0≤1 so Furs are Blocked
Example #3:
S0 (Hill) = 1
ST1 (Jungle Hill) = 2
S2 (Jungle) = 0
1<2 AND 0≤2 so Jungle is Blocked
This rule also explains why you can never see directly over mountains or forest/jungle hills. Those terrains have an ST value of 2, and all hills regardless of forest have an S value of just 1. It's not possible for S0 to overcome the ST value of a mountain or forested hill, and neither is it possible for Hex2 to have a greater value than 2. Therefore, you can never see over these, regardless of what's on the other side.
Example #4:
S0 (Jungle Hill) = 1
ST1 (Forest Hill) = 2
S2 = 2 (mountain)
1<2 AND 2≤2 so Mountain is Blocked
Rule #3: If S0 < ST1, but S2 > ST1, Hex2 will still be visible.
This explains the instances which do not fall into rule #1, but in which Hex2 will still be visible. Basically, this is why mountains sometimes are visible even when they otherwise wouldn't be.
Example #5:
S0 (Forest) = 0
ST1 (Hill) = 1
S2 (Mountain) = 2
The hill is blocking our view, so S0 < ST1, and this doesn't fall into rule #1. However, since Hex2 is a mountain with an S value of two, this fails one of the checks in rule #2 as well. Hence rule #3 comes into play. Basically, the higher S value allows us to see it despite the obstruction of the hill.
Rule #4: A hex in the third ring can also be made visible, if S0 ≥ ST1 AND ST2, and also S3 > 0
Basically, this extends the sight range into the 3rd hex, but only when there are no blockages in either hexes 1 or 2, and also only when Hex3 is a hill or mountain.
Example #6:
S0 (flat) = 0
ST1 (flat) = 0
ST2 (flat) = 0
S3 (hill) = 1
1 > 0 and the other values are also 0, so we can see the hill.
That's basically what I've got so far. Please, try to prove me wrong!