override public float Chance(WS_Tile tile) { float chance = 0.0f; foreach (WS_Tile neighbor in tile.Neighbors()) { if (neighbor.seaBody) { chance += 0.0001f; } } return(chance); }
public void CreateSchism(WS_Tile origin, EventModule module) { List <WS_Tile> closedTiles = new List <WS_Tile>(); List <WS_Tile> openTiles = new List <WS_Tile>(); float unrestPower = 500.0f; openTiles.Add(origin); while (openTiles.Count > 0) { WS_Tile currentTile = openTiles[0]; foreach (WS_Tile neighbor in currentTile.Neighbors()) { if (neighbor.population == 0.0f) { continue; } if (neighbor.government != origin.government || origin.government.capital == neighbor) { continue; } switch (module) { case EventModule.POPULATION: if (unrestPower > 100.0f && !openTiles.Contains(neighbor) && !closedTiles.Contains(neighbor)) { unrestPower -= (100.0f - currentTile.unrest); openTiles.Add(neighbor); } break; case EventModule.CULTURE: if (neighbor.culture == origin.culture && !openTiles.Contains(neighbor) && !closedTiles.Contains(neighbor)) { openTiles.Add(neighbor); } break; case EventModule.RELIGION: if (neighbor.religion == origin.religion && !openTiles.Contains(neighbor) && !closedTiles.Contains(neighbor)) { openTiles.Add(neighbor); } break; } } closedTiles.Add(currentTile); openTiles.RemoveAt(0); } if (closedTiles.Count > 4) { WS_Government newGov = new WS_Government(origin); newGov.rulingCulture = origin.culture; newGov.rulingReligion = origin.religion; newGov.preferredTech = (EventModule)Mathf.FloorToInt(Random.Range(0, (int)EventModule.MAX - 1)); foreach (WS_Tile tile in closedTiles) { tile.government = newGov; tile.unrest = tile.unrestCultural = tile.unrestReligious = 0.0f; } } }