mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-14 17:59:11 +07:00
Added Compass tech and Harbor building
This commit is contained in:
@ -139,6 +139,7 @@ All the following are from [the Noun Project](https://thenounproject.com) licenc
|
|||||||
* [Cambodia](https://thenounproject.com/term/cambodia/1809152/) By Wichai Wi for Angkor Wat
|
* [Cambodia](https://thenounproject.com/term/cambodia/1809152/) By Wichai Wi for Angkor Wat
|
||||||
* [Books](https://thenounproject.com/term/books/1140218/) By Abir Alward for Oxford University
|
* [Books](https://thenounproject.com/term/books/1140218/) By Abir Alward for Oxford University
|
||||||
* [Forge](https://thenounproject.com/term/forge/1044767/) By Monjin Friends
|
* [Forge](https://thenounproject.com/term/forge/1044767/) By Monjin Friends
|
||||||
|
* [Anchor](https://thenounproject.com/term/anchor/1258518/) By Saeful Muslim for Harbor
|
||||||
* [Hand saw](https://thenounproject.com/term/hand-saw/990902/) By b farias for Workshop
|
* [Hand saw](https://thenounproject.com/term/hand-saw/990902/) By b farias for Workshop
|
||||||
* [Hagia Sophia](https://thenounproject.com/term/hagia-sophia/1907752/) By Felipe Alvarado
|
* [Hagia Sophia](https://thenounproject.com/term/hagia-sophia/1907752/) By Felipe Alvarado
|
||||||
* [Factory](https://thenounproject.com/term/factory/1624235/) By Maxim Kulikov for Ironworks
|
* [Factory](https://thenounproject.com/term/factory/1624235/) By Maxim Kulikov for Ironworks
|
||||||
@ -298,6 +299,7 @@ All the following are from [the Noun Project](https://thenounproject.com) licenc
|
|||||||
### Medieval
|
### Medieval
|
||||||
* [Judaism](https://thenounproject.com/term/judaism/324145/) By Ben Davis for Theology
|
* [Judaism](https://thenounproject.com/term/judaism/324145/) By Ben Davis for Theology
|
||||||
* [Institution](https://thenounproject.com/term/institution/260586/) By Luis Prado for Civil Service
|
* [Institution](https://thenounproject.com/term/institution/260586/) By Luis Prado for Civil Service
|
||||||
|
* [Compass](https://thenounproject.com/term/compass/821505/) By Bernar Novalyi
|
||||||
* [Education](https://thenounproject.com/term/education/1817512/) By Tomas Knopp
|
* [Education](https://thenounproject.com/term/education/1817512/) By Tomas Knopp
|
||||||
* [Casting](https://thenounproject.com/term/casting/10773/) By Jasmine Rae Friedrich
|
* [Casting](https://thenounproject.com/term/casting/10773/) By Jasmine Rae Friedrich
|
||||||
* [Bar association](https://thenounproject.com/term/bar-association/217443/) By Miroslav Kurdov for Guilds
|
* [Bar association](https://thenounproject.com/term/bar-association/217443/) By Miroslav Kurdov for Guilds
|
||||||
|
BIN
android/Images/BuildingIcons/Harbor.png
Normal file
BIN
android/Images/BuildingIcons/Harbor.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.9 KiB |
BIN
android/Images/TechIcons/Compass.png
Normal file
BIN
android/Images/TechIcons/Compass.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.5 KiB |
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Before Width: | Height: | Size: 900 KiB After Width: | Height: | Size: 905 KiB |
@ -276,6 +276,13 @@
|
|||||||
resourceBonusStats:{production:1},
|
resourceBonusStats:{production:1},
|
||||||
requiredTech:"Metal Casting"
|
requiredTech:"Metal Casting"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name:"Harbor",
|
||||||
|
maintenance:2,
|
||||||
|
hurryCostModifier:25,
|
||||||
|
uniques:["+1 production from all sea resources worked by the city","Connects trade routes over water"]
|
||||||
|
requiredTech:"Compass"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name:"University",
|
name:"University",
|
||||||
maintenance:2,
|
maintenance:2,
|
||||||
|
@ -177,13 +177,11 @@
|
|||||||
buildingCost:200,
|
buildingCost:200,
|
||||||
wonderCost:500,
|
wonderCost:500,
|
||||||
techs:[
|
techs:[
|
||||||
/*{
|
{
|
||||||
name:"Compass",
|
name:"Compass",
|
||||||
row:1,
|
row:1,
|
||||||
cost:415,
|
prerequisites:["Optics","Theology"],
|
||||||
prerequisites:["Optics"],
|
},
|
||||||
baseDescription:"Does nothing since we have no sea tiles - In theory, allows construction of harbors"
|
|
||||||
},*/
|
|
||||||
{
|
{
|
||||||
name:"Education",
|
name:"Education",
|
||||||
row:3,
|
row:3,
|
||||||
|
@ -239,8 +239,7 @@
|
|||||||
food:1,
|
food:1,
|
||||||
gold:1,
|
gold:1,
|
||||||
improvement:"Fishing Boats",
|
improvement:"Fishing Boats",
|
||||||
improvementStats:{food:1},
|
improvementStats:{food:1}
|
||||||
building:"Harbor"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name:"Pearls",
|
name:"Pearls",
|
||||||
@ -248,7 +247,6 @@
|
|||||||
terrainsCanBeFoundOn:["Coast"],
|
terrainsCanBeFoundOn:["Coast"],
|
||||||
gold:2,
|
gold:2,
|
||||||
improvement:"Fishing Boats",
|
improvement:"Fishing Boats",
|
||||||
improvementStats:{food:1},
|
improvementStats:{food:1}
|
||||||
building:"Harbor"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
@ -2500,6 +2500,10 @@
|
|||||||
Dutch:"Ruimteschip onderdeel"
|
Dutch:"Ruimteschip onderdeel"
|
||||||
Spanish:"Parte de Nave Espacial"
|
Spanish:"Parte de Nave Espacial"
|
||||||
}
|
}
|
||||||
|
"Can only be built in coastal cities":{}
|
||||||
|
"All military naval units receive +1 movement and +1 sight":{}
|
||||||
|
"+1 production from all sea resources worked by the city":{}
|
||||||
|
"Connects trade routes over water":{}
|
||||||
|
|
||||||
// Unit types
|
// Unit types
|
||||||
"Civilian":{
|
"Civilian":{
|
||||||
@ -3226,6 +3230,8 @@
|
|||||||
Romanian:"Chichen Itza"
|
Romanian:"Chichen Itza"
|
||||||
Spanish:"Chichén Itzá"
|
Spanish:"Chichén Itzá"
|
||||||
}
|
}
|
||||||
|
"Lighthouse":{}
|
||||||
|
"The Great Lighthouse"{}
|
||||||
"Stable":{
|
"Stable":{
|
||||||
Italian:"Scuderia"
|
Italian:"Scuderia"
|
||||||
Russian:"Конюшня"
|
Russian:"Конюшня"
|
||||||
@ -3284,7 +3290,6 @@
|
|||||||
}
|
}
|
||||||
"Mint":{
|
"Mint":{
|
||||||
Russian:"Монетный двор"
|
Russian:"Монетный двор"
|
||||||
//don't know what this mint
|
|
||||||
Spanish:"Casa de la moneda"
|
Spanish:"Casa de la moneda"
|
||||||
}
|
}
|
||||||
"Machu Pichu":{
|
"Machu Pichu":{
|
||||||
@ -3315,6 +3320,7 @@
|
|||||||
Romanian:"Forja"
|
Romanian:"Forja"
|
||||||
Spanish:"Forja"
|
Spanish:"Forja"
|
||||||
}
|
}
|
||||||
|
"Harbor":{}
|
||||||
"University":{
|
"University":{
|
||||||
Italian:"Università"
|
Italian:"Università"
|
||||||
Russian:"Университет"
|
Russian:"Университет"
|
||||||
@ -3761,6 +3767,7 @@
|
|||||||
Spanish:"Desbloqueado en"
|
Spanish:"Desbloqueado en"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Tradition branch
|
||||||
"Tradition":{
|
"Tradition":{
|
||||||
Russian:"Традиция"
|
Russian:"Традиция"
|
||||||
Spanish:"Tradición"
|
Spanish:"Tradición"
|
||||||
@ -3817,7 +3824,8 @@
|
|||||||
Russian:"+15% роста и +2 еды во всех городах"
|
Russian:"+15% роста и +2 еды во всех городах"
|
||||||
Spanish:"+15% crecimiento y +2 comida en todas las ciudades"
|
Spanish:"+15% crecimiento y +2 comida en todas las ciudades"
|
||||||
}
|
}
|
||||||
// And so on for all the policies. I can't be bothered to add them all now...
|
|
||||||
|
// Liberty branch
|
||||||
"Liberty":{
|
"Liberty":{
|
||||||
Russian:"Воля"
|
Russian:"Воля"
|
||||||
Spanish:"Liberación"
|
Spanish:"Liberación"
|
||||||
|
@ -26,7 +26,7 @@ class GameStarter(){
|
|||||||
|
|
||||||
val distanceAroundStartingPointNoOneElseWillStartIn = 5
|
val distanceAroundStartingPointNoOneElseWillStartIn = 5
|
||||||
val freeTiles = gameInfo.tileMap.values
|
val freeTiles = gameInfo.tileMap.values
|
||||||
.filter { it.getBaseTerrain().type==TerrainType.Land && vectorIsWithinNTilesOfEdge(it.position,3)}
|
.filter { it.isLand() && vectorIsWithinNTilesOfEdge(it.position,3)}
|
||||||
.toMutableList()
|
.toMutableList()
|
||||||
val playerPosition = freeTiles.getRandom().position
|
val playerPosition = freeTiles.getRandom().position
|
||||||
val playerCiv = CivilizationInfo(newGameParameters.nation, gameInfo)
|
val playerCiv = CivilizationInfo(newGameParameters.nation, gameInfo)
|
||||||
|
@ -81,7 +81,7 @@ class UnitAutomation{
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun hasWorkableSeaResource(tileInfo: TileInfo): Boolean {
|
private fun hasWorkableSeaResource(tileInfo: TileInfo): Boolean {
|
||||||
return tileInfo.resource!=null && tileInfo.getBaseTerrain().type==TerrainType.Water && tileInfo.improvement==null
|
return tileInfo.resource!=null && tileInfo.isWater() && tileInfo.improvement==null
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun automateWorkBoats(unit: MapUnit) {
|
private fun automateWorkBoats(unit: MapUnit) {
|
||||||
@ -129,7 +129,7 @@ class UnitAutomation{
|
|||||||
fun containsAttackableEnemy(tile: TileInfo, unit: MapUnit): Boolean {
|
fun containsAttackableEnemy(tile: TileInfo, unit: MapUnit): Boolean {
|
||||||
if(unit.isEmbarked()){
|
if(unit.isEmbarked()){
|
||||||
if(unit.baseUnit.unitType.isRanged()) return false
|
if(unit.baseUnit.unitType.isRanged()) return false
|
||||||
if(tile.getBaseTerrain().type==TerrainType.Water) return false // can't attack water units while embarked, only land
|
if(tile.isWater()) return false // can't attack water units while embarked, only land
|
||||||
}
|
}
|
||||||
val tileCombatant = Battle(unit.civInfo.gameInfo).getMapCombatantOfTile(tile)
|
val tileCombatant = Battle(unit.civInfo.gameInfo).getMapCombatantOfTile(tile)
|
||||||
if(tileCombatant==null) return false
|
if(tileCombatant==null) return false
|
||||||
|
@ -6,7 +6,6 @@ import com.unciv.logic.map.MapUnit
|
|||||||
import com.unciv.logic.map.RoadStatus
|
import com.unciv.logic.map.RoadStatus
|
||||||
import com.unciv.logic.map.TileInfo
|
import com.unciv.logic.map.TileInfo
|
||||||
import com.unciv.models.gamebasics.GameBasics
|
import com.unciv.models.gamebasics.GameBasics
|
||||||
import com.unciv.models.gamebasics.tile.TerrainType
|
|
||||||
import com.unciv.models.gamebasics.tile.TileImprovement
|
import com.unciv.models.gamebasics.tile.TileImprovement
|
||||||
|
|
||||||
class WorkerAutomation(val unit: MapUnit) {
|
class WorkerAutomation(val unit: MapUnit) {
|
||||||
@ -30,7 +29,7 @@ class WorkerAutomation(val unit: MapUnit) {
|
|||||||
if(reachedTile!=tile) unit.doPreTurnAction() // otherwise, we get a situation where the worker is automated, so it tries to move but doesn't, then tries to automate, then move, etc, forever. Stack overflow exception!
|
if(reachedTile!=tile) unit.doPreTurnAction() // otherwise, we get a situation where the worker is automated, so it tries to move but doesn't, then tries to automate, then move, etc, forever. Stack overflow exception!
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (tile.improvementInProgress == null && tile.getBaseTerrain().type==TerrainType.Land) {
|
if (tile.improvementInProgress == null && tile.isLand()) {
|
||||||
val improvement = chooseImprovement(tile)
|
val improvement = chooseImprovement(tile)
|
||||||
if (tile.canBuildImprovement(improvement, unit.civInfo)) {
|
if (tile.canBuildImprovement(improvement, unit.civInfo)) {
|
||||||
// What if we're stuck on this tile but can't build there?
|
// What if we're stuck on this tile but can't build there?
|
||||||
@ -83,7 +82,7 @@ class WorkerAutomation(val unit: MapUnit) {
|
|||||||
.filter {
|
.filter {
|
||||||
(it.civilianUnit== null || it == currentTile)
|
(it.civilianUnit== null || it == currentTile)
|
||||||
&& it.improvement == null
|
&& it.improvement == null
|
||||||
&& it.getBaseTerrain().type==TerrainType.Land
|
&& it.isLand()
|
||||||
&& it.canBuildImprovement(chooseImprovement(it), unit.civInfo)
|
&& it.canBuildImprovement(chooseImprovement(it), unit.civInfo)
|
||||||
&& {val city=it.getCity(); city==null || it.getCity()?.civInfo == unit.civInfo}() // don't work tiles belonging to another civ
|
&& {val city=it.getCity(); city==null || it.getCity()?.civInfo == unit.civInfo}() // don't work tiles belonging to another civ
|
||||||
}.sortedByDescending { getPriority(it, unit.civInfo) }.toMutableList()
|
}.sortedByDescending { getPriority(it, unit.civInfo) }.toMutableList()
|
||||||
|
@ -107,13 +107,13 @@ class MapUnit {
|
|||||||
|
|
||||||
fun canPassThrough(tile: TileInfo):Boolean{
|
fun canPassThrough(tile: TileInfo):Boolean{
|
||||||
val tileOwner = tile.getOwner()
|
val tileOwner = tile.getOwner()
|
||||||
if(tile.getBaseTerrain().type==TerrainType.Water && baseUnit.unitType.isLandUnit()){
|
if(tile.isWater() && baseUnit.unitType.isLandUnit()){
|
||||||
if(!civInfo.tech.isResearched("Optics"))
|
if(!civInfo.tech.isResearched("Optics"))
|
||||||
return false
|
return false
|
||||||
if(tile.baseTerrain == "Ocean" && !civInfo.tech.isResearched("Astronomy"))
|
if(tile.baseTerrain == "Ocean" && !civInfo.tech.isResearched("Astronomy"))
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
if(tile.getBaseTerrain().type==TerrainType.Land && baseUnit.unitType.isWaterUnit())
|
if(tile.isLand() && baseUnit.unitType.isWaterUnit())
|
||||||
return false
|
return false
|
||||||
if(tile.baseTerrain=="Ocean" && baseUnit.uniques.contains("Cannot enter ocean tiles until Astronomy")
|
if(tile.baseTerrain=="Ocean" && baseUnit.uniques.contains("Cannot enter ocean tiles until Astronomy")
|
||||||
&& !civInfo.tech.isResearched("Astronomy"))
|
&& !civInfo.tech.isResearched("Astronomy"))
|
||||||
|
@ -5,10 +5,7 @@ import com.unciv.UnCivGame
|
|||||||
import com.unciv.logic.city.CityInfo
|
import com.unciv.logic.city.CityInfo
|
||||||
import com.unciv.logic.civilization.CivilizationInfo
|
import com.unciv.logic.civilization.CivilizationInfo
|
||||||
import com.unciv.models.gamebasics.GameBasics
|
import com.unciv.models.gamebasics.GameBasics
|
||||||
import com.unciv.models.gamebasics.tile.ResourceType
|
import com.unciv.models.gamebasics.tile.*
|
||||||
import com.unciv.models.gamebasics.tile.Terrain
|
|
||||||
import com.unciv.models.gamebasics.tile.TileImprovement
|
|
||||||
import com.unciv.models.gamebasics.tile.TileResource
|
|
||||||
import com.unciv.models.stats.Stats
|
import com.unciv.models.stats.Stats
|
||||||
import com.unciv.ui.utils.tr
|
import com.unciv.ui.utils.tr
|
||||||
import kotlin.math.abs
|
import kotlin.math.abs
|
||||||
@ -142,6 +139,9 @@ open class TileInfo {
|
|||||||
if(resource.name=="Oil" && city!=null
|
if(resource.name=="Oil" && city!=null
|
||||||
&& city.getBuildingUniques().contains("+2 Gold for each source of Oil and oasis"))
|
&& city.getBuildingUniques().contains("+2 Gold for each source of Oil and oasis"))
|
||||||
stats.gold += 2
|
stats.gold += 2
|
||||||
|
if(city!=null && isWater()
|
||||||
|
&& city.getBuildingUniques().contains("+1 production from all sea resources worked by the city"))
|
||||||
|
stats.production+=1
|
||||||
}
|
}
|
||||||
|
|
||||||
val improvement = getTileImprovement()
|
val improvement = getTileImprovement()
|
||||||
@ -258,6 +258,9 @@ open class TileInfo {
|
|||||||
return city!=null && city.workedTiles.contains(position)
|
return city!=null && city.workedTiles.contains(position)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun isLand() = getBaseTerrain().type==TerrainType.Land
|
||||||
|
fun isWater() = getBaseTerrain().type==TerrainType.Water
|
||||||
|
|
||||||
fun arialDistanceTo(otherTile:TileInfo): Int {
|
fun arialDistanceTo(otherTile:TileInfo): Int {
|
||||||
val xDelta = position.x-otherTile.position.x
|
val xDelta = position.x-otherTile.position.x
|
||||||
val yDelta = position.y-otherTile.position.y
|
val yDelta = position.y-otherTile.position.y
|
||||||
|
@ -1,15 +1,14 @@
|
|||||||
package com.unciv.logic.map
|
package com.unciv.logic.map
|
||||||
|
|
||||||
import com.badlogic.gdx.math.Vector2
|
import com.badlogic.gdx.math.Vector2
|
||||||
import com.unciv.models.gamebasics.tile.TerrainType
|
|
||||||
|
|
||||||
class UnitMovementAlgorithms(val unit:MapUnit) {
|
class UnitMovementAlgorithms(val unit:MapUnit) {
|
||||||
val tileMap = unit.getTile().tileMap
|
val tileMap = unit.getTile().tileMap
|
||||||
|
|
||||||
private fun getMovementCostBetweenAdjacentTiles(from: TileInfo, to: TileInfo): Float {
|
private fun getMovementCostBetweenAdjacentTiles(from: TileInfo, to: TileInfo): Float {
|
||||||
|
|
||||||
if(from.getBaseTerrain().type==TerrainType.Land && to.getBaseTerrain().type==TerrainType.Water
|
if(from.isLand() && to.isWater()
|
||||||
|| from.getBaseTerrain().type==TerrainType.Water && to.getBaseTerrain().type==TerrainType.Land)
|
|| from.isWater() && to.isLand())
|
||||||
return 100f // this is embarkment or disembarkment, and will take the entire turn
|
return 100f // this is embarkment or disembarkment, and will take the entire turn
|
||||||
|
|
||||||
if (from.roadStatus === RoadStatus.Railroad && to.roadStatus === RoadStatus.Railroad)
|
if (from.roadStatus === RoadStatus.Railroad && to.roadStatus === RoadStatus.Railroad)
|
||||||
|
@ -10,7 +10,6 @@ import com.unciv.UnCivGame
|
|||||||
import com.unciv.logic.HexMath
|
import com.unciv.logic.HexMath
|
||||||
import com.unciv.logic.civilization.CivilizationInfo
|
import com.unciv.logic.civilization.CivilizationInfo
|
||||||
import com.unciv.logic.map.TileInfo
|
import com.unciv.logic.map.TileInfo
|
||||||
import com.unciv.models.gamebasics.tile.TerrainType
|
|
||||||
import com.unciv.ui.utils.ImageGetter
|
import com.unciv.ui.utils.ImageGetter
|
||||||
import com.unciv.ui.utils.onClick
|
import com.unciv.ui.utils.onClick
|
||||||
|
|
||||||
@ -74,10 +73,9 @@ class Minimap(val tileMapHolder: TileMapHolder) : ScrollPane(null){
|
|||||||
val exploredTiles = cloneCivilization.exploredTiles
|
val exploredTiles = cloneCivilization.exploredTiles
|
||||||
for(tileInfo in tileMapHolder.tileMap.values) {
|
for(tileInfo in tileMapHolder.tileMap.values) {
|
||||||
val hex = tileImages[tileInfo]!!
|
val hex = tileImages[tileInfo]!!
|
||||||
val isWaterTile = tileInfo.getBaseTerrain().type==TerrainType.Water
|
|
||||||
if (!(exploredTiles.contains(tileInfo.position) || UnCivGame.Current.viewEntireMapForDebug)) hex.color = Color.BLACK
|
if (!(exploredTiles.contains(tileInfo.position) || UnCivGame.Current.viewEntireMapForDebug)) hex.color = Color.BLACK
|
||||||
else if (tileInfo.isCityCenter() && !isWaterTile) hex.color = tileInfo.getOwner()!!.getNation().getSecondaryColor()
|
else if (tileInfo.isCityCenter() && !tileInfo.isWater()) hex.color = tileInfo.getOwner()!!.getNation().getSecondaryColor()
|
||||||
else if (tileInfo.getCity() != null && !isWaterTile) hex.color = tileInfo.getOwner()!!.getNation().getColor()
|
else if (tileInfo.getCity() != null && !tileInfo.isWater()) hex.color = tileInfo.getOwner()!!.getNation().getColor()
|
||||||
else hex.color = tileInfo.getBaseTerrain().getColor().lerp(Color.GRAY, 0.5f) // Todo add to baseterrain as function
|
else hex.color = tileInfo.getBaseTerrain().getColor().lerp(Color.GRAY, 0.5f) // Todo add to baseterrain as function
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,6 @@ import com.unciv.logic.automation.WorkerAutomation
|
|||||||
import com.unciv.logic.map.MapUnit
|
import com.unciv.logic.map.MapUnit
|
||||||
import com.unciv.models.gamebasics.Building
|
import com.unciv.models.gamebasics.Building
|
||||||
import com.unciv.models.gamebasics.GameBasics
|
import com.unciv.models.gamebasics.GameBasics
|
||||||
import com.unciv.models.gamebasics.tile.TerrainType
|
|
||||||
import com.unciv.models.gamebasics.unit.UnitType
|
import com.unciv.models.gamebasics.unit.UnitType
|
||||||
import com.unciv.ui.pickerscreens.ImprovementPickerScreen
|
import com.unciv.ui.pickerscreens.ImprovementPickerScreen
|
||||||
import com.unciv.ui.pickerscreens.PromotionPickerScreen
|
import com.unciv.ui.pickerscreens.PromotionPickerScreen
|
||||||
@ -131,7 +130,7 @@ class UnitActions {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(unit.name == "Work Boats" && tile.improvement==null && tile.resource!=null
|
if(unit.name == "Work Boats" && tile.improvement==null && tile.resource!=null
|
||||||
&& tile.getBaseTerrain().type==TerrainType.Water)
|
&& tile.isWater())
|
||||||
actionList += UnitAction("Create Fishing Boats",{
|
actionList += UnitAction("Create Fishing Boats",{
|
||||||
tile.improvement = "Fishing Boats"
|
tile.improvement = "Fishing Boats"
|
||||||
unit.destroy()
|
unit.destroy()
|
||||||
|
Reference in New Issue
Block a user