Railroads now provide 25% production bonus to connected cities

Added techs and builings up to middle of modern era
This commit is contained in:
Yair Morgenstern
2017-12-09 22:11:16 +02:00
parent 13974b635b
commit 45869c5a0b
4 changed files with 188 additions and 7 deletions

View File

@ -288,6 +288,15 @@
unique:"FreeGreatArtistAppears",
requiredTech:"Archaeology"
},
{
name:"Public School",
description: "+1 science per 2 population",
science:3,
requiredBuilding:"University",
maintainance:3,
unique:"SciencePer2Pop",
requiredTech:"Scientific Theory"
},
{
name:"Hospital",
description: "",
@ -305,6 +314,88 @@
requiredResource:"Coal",
requiredTech:"Steam Power"
},
{
name:"Stock Exchange",
description: "",
gold:3,
percentStatBonus:{gold:25},
requiredBuilding:"Bank",
requiredTech:"Electricity"
},
{
name:"Cristo Redentor",
description: "Culture cost of adopting new Policies reduced by 10% - todo",
culture:5,
isWonder:true,
unique:"PolicyCostReduction",
requiredTech:"Telegraph"
},
{
name:"Broadcst Tower",
description: "",
culture:3,
percentStatBonus:{culture:33},
requiredBuilding:"Museum",
maintainance:3,
requiredTech:"Radio"
},
{
name:"Eiffel Tower",
description: "Provides 1 happiness per social policy - todo",
culture:1,
happiness:5
isWonder:true,
unique:"HappinessPerSocialPolicy",
requiredTech:"Radio"
},
{
name:"Medical Lab",
description: "25% of food carried over after a new citizen is born - todo",
requiredBuilding:"Hospital",
maintainance:3,
requiredTech:"Penicillin"
},
{
name:"Research Lab",
description: "",
science:4,
percentStatBonus:{science:50},
requiredBuilding:"Public School",
maintainance:3,
requiredTech:"Plastics"
},
{
name:"Hydro Plant",
description: "Provides +1 production to tiles near rivers",
maintainance:3,
requiredResource:"Aluminum",
requiredTech:"Plastics"
},
{
name:"Stadium",
description: "",
happiness:4,
requiredBuilding:"Theatre",
maintainance:2,
requiredTech:"Mass Media"
},
{
name:"Eiffel Tower",
description: "Provides 1 free social policy - todo",
culture:1,
percentStatBonus:{culture:50},
isWonder:true,
unique:"HappinessPerSocialPolicy",
requiredTech:"Radio"
},
{
name:"Stadium",
description: "",
happiness:4,
requiredBuilding:"Theatre",
maintainance:2,
requiredTech:"Mass Media"
},
]

View File

@ -344,7 +344,7 @@
name:"Electricity",
row:4,
prerequisites:["Biology","Steam Power"],
description:"Reveals Aluminium on map and allows construction of stock exchange, providing gold - todo"
description:"Reveals Aluminium on map and allows construction of stock exchange, providing gold"
},
{
name:"Replaceable Parts",
@ -356,7 +356,88 @@
name:"Railroad",
row:8,
prerequisites:["Steam Power","Dynamite"],
description:"Allows construction of railroads, providing fast transport and a 25% production boost to cities - todo"
description:"Allows construction of railroads, providing fast transport and a 25% production boost to cities"
}
]
},
{
columnNumber: 11,
techCost: 4505,
buildingCost:500,
wonderCost:1250,
techs:[
{
name:"Refrigeration",
row:2,
prerequisites:["Electricity"],
description:"Does nothing since we have no sea tiles - In theory, allows construction of offshore platforms and submarines"
},
{
name:"Telegraph",
row:4,
prerequisites:["Electricity"],
description:"Allows construction of the Crito Redentor, reducing cost of new policie"
},
{
name:"Radio",
row:5,
prerequisites:["Electricity"],
description:"Allows construction of broadcast towers and the Eiffel Tower, increasing culture"
},
{
name:"Flight",
row:6,
prerequisites:["Replaceable Parts"],
description:"Contributes only war-relatied things - on hold until AI is introduced - todo"
},
{
name:"Combustion",
row:8,
prerequisites:["Replaceable Parts"],
description:"Contributes only war-relatied things - on hold until AI is introduced - todo"
}
]
},
{
columnNumber: 12,
techCost: 5605,
buildingCost:500,
wonderCost:1250,
techs:[
{
name:"Penicillin",
row:1,
prerequisites:["Refrigeration"],
description:"Enables construction of medical labs, alowing for greater city growth"
},
{
name:"Plastics",
row:2,
prerequisites:["Refrigeration"],
description:"Allows construction of Research Lab, increasing science"
},
{
name:"Electronics",
row:5,
prerequisites:["Electricity"],
description:"Contributes only war-relatied things - on hold until AI is introduced - todo" },
{
name:"Mass Media",
row:6,
prerequisites:["Radio"],
description:"Allows construction of Stadiums and the Sydney Opera House, boosting happiness"
},
{
name:"Radar",
row:8,
prerequisites:["Radio","Flight","Combustion"],
description:"Contributes only war-relatied things - on hold until AI is introduced - todo"
},
{
name:"Atomic Theory",
row:8,
prerequisites:["Combustion"],
description:"Contributes only war-relatied things - on hold until AI is introduced - todo"
}
]
}

View File

@ -142,7 +142,12 @@ public class CityBuildings
{
FullStats stats = new FullStats();
for(Building building : getBuiltBuildings()) stats.add(building);
if(getCity().getBuildingUniques().contains("SciencePer2Pop")) stats.science+=getCity().population/2; // Library unique
stats.science += getCity().getBuildingUniques().count(new Predicate<String>() {
@Override
public boolean evaluate(String arg0) {
return arg0.equals("SciencePer2Pop");
}
}) * getCity().population/2; // Library and public school unique (not actualy unique, though...hmm)
return stats;
}

View File

@ -122,7 +122,8 @@ public class CityInfo {
stats.production += getFreePopulation();
stats.food -= population * 2;
if(!isCapital() && isConnectedToCapital()) { // Calculated by http://civilization.wikia.com/wiki/Trade_route_(Civ5)
if(!isCapital() && isConnectedToCapital(RoadStatus.Road)) {
// Calculated by http://civilization.wikia.com/wiki/Trade_route_(Civ5)
double goldFromTradeRoute = CivilizationInfo.current().getCapital().population * 0.15
+ population * 1.1 - 1;
if(CivilizationInfo.current().getBuildingUniques().contains("TradeRouteGoldIncrease")) goldFromTradeRoute*=1.25; // Machu Pichu speciality
@ -132,6 +133,7 @@ public class CityInfo {
stats.add(cityBuildings.getStats());
FullStats statPercentBonuses = cityBuildings.getStatPercentBonuses();
if(isConnectedToCapital(RoadStatus.Railroad)) statPercentBonuses.production += 25;
stats.food*=1+statPercentBonuses.food/100;
stats.gold*=1+statPercentBonuses.gold/100;
stats.production*=1+statPercentBonuses.production/100;
@ -246,7 +248,7 @@ public class CityInfo {
private boolean isCapital(){ return CivilizationInfo.current().getCapital() == this; }
private boolean isConnectedToCapital(){
private boolean isConnectedToCapital(RoadStatus roadType){
TileInfo capitalTile = CivilizationInfo.current().getCapital().getTile();
LinqCollection<TileInfo> tilesReached = new LinqCollection<TileInfo>();
LinqCollection<TileInfo> tilesToCheck = new LinqCollection<TileInfo>();
@ -255,7 +257,9 @@ public class CityInfo {
LinqCollection<TileInfo> newTiles = new LinqCollection<TileInfo>();
for(TileInfo tile : tilesToCheck)
for (TileInfo maybeNewTile : getTileMap().getTilesInDistance(tile.position,1))
if(!tilesReached.contains(maybeNewTile) && !tilesToCheck.contains(maybeNewTile) && !newTiles.contains(maybeNewTile))
if(!tilesReached.contains(maybeNewTile) && !tilesToCheck.contains(maybeNewTile) && !newTiles.contains(maybeNewTile)
&& (roadType != RoadStatus.Road || maybeNewTile.roadStatus != RoadStatus.None)
&& (roadType!=RoadStatus.Railroad || maybeNewTile.roadStatus == roadType))
newTiles.add(maybeNewTile);
if(newTiles.contains(capitalTile)) return true;
@ -277,7 +281,7 @@ public class CityInfo {
public String GetBy(Building arg0) {
return arg0.unique;
}
}).unique();
});
}
}