public void ClearPopulation() { population = 0.0f; farmers = builders = traders = soldiers = scholars = 0; foodUnits = 0.0f; foodEfficiency = 1.2f; sanitation = 30; healthcare = -0.2f; unrestDecay = 0.8f; lastPopGrowth = 0.0f; storedFood = 0.0f; unrest = unrestCultural = unrestReligious = 0.0f; culture = null; cultureBonus = 0.0f; disaster = null; disasterDuration = 0; religion = null; religionBonus = 0.0f; infrastructurePoints = 0.0f; for (int i = 0; i < infrastructureLevels.Length; i++) { infrastructureLevels[i] = 1; } plannedInfrastructure = null; constructionBonus = 0.0f; government = null; prosperity = 0.0f; foreach (WS_ResourceStack stack in resStacks) { stack.amount = 0; } caravan = null; qualityBonus = 1.0f; exploitationBonus = 1.0f; armyBonus = 0.5f; defenseBonus = 1.0f; currentTech = null; storedTechPoints = 0.0f; availableTech.Clear(); researchedTech.Clear(); }
protected override bool SuccessCheck() { int selector = Mathf.FloorToInt(Random.Range(0.0f, tile.government.borderingGovernments.Count - 0.01f)); target = tile.government.borderingGovernments[selector]; foreach (WS_Treaty treaty in tile.government.treaties) { if (treaty.target == target) { return(false); } } treaty = TreatyType.NONE; opinion = tile.government.borderingOpinions[selector]; if (opinion > 40.0f) { treaty = TreatyType.ALLIANCE; } else if (opinion > 20.0f) { treaty = TreatyType.TRADE_AGREEMENT; } else if (opinion > 10.0f) { treaty = TreatyType.NON_AGGRESSION; } else if (opinion > -50.0f && opinion < -20) { treaty = TreatyType.TRADE_EMBARGO; } else if (tile.government.soldierPool == 0) { treaty = TreatyType.WAR; } if (treaty == TreatyType.WAR) { return(Random.Range(0.0f, 1.0f) < 0.03f); } else { return(Random.Range(0.0f, 1.0f) < 0.2f); } }
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; } } }