local FortLayout = civ.ui.loadImage("Images/fortlayout.bmp")
discreteEvents.onCityProcessingComplete(function (turn, tribe)
gen.justOnce("EngineeringFortress"..tostring(tribe.id),function()
if tribe:hasTech(techAliases.Engineering) then
local chosenCity = nil
if tribe.isHuman then
local menuTable = {}
local offset = 3
for city in civ.iterateCities() do
if city.owner == civ.getCurrentTribe() then
menuTable[offset+city.id] = city.name
end
end
local fortChoice = text.menu(menuTable,"We have the materials and expertise for a new fortress. Select a city.","A New Fortress")
if fortChoice >= offset then
chosenCity = civ.getCity(fortChoice-offset)
end
else
local aiChoiceList = {}
local index = 1
for city in civ.iterateCities() do
if city.owner == tribe then
aiChoiceList[index] = city.id
index = index + 1
end
end
if index > 1 then
local aiChoice = aiChoiceList[math.random(1,index-1)]
chosenCity = civ.getCity(aiChoice)
end
end
if civ.isCity(chosenCity) then
local tileList = gen.cityRadiusTiles(chosenCity)
tileList[21] = nil
gen.makeArrayOneToN(tileList)
local choice = nil
if tribe.isHuman then
local dialog = civ.ui.createDialog()
dialog.title = "Select a Location"
dialog.width = 375
dialog:addImage(FortLayout)
local multiLineText = "A new fortress will be constructed near " ..chosenCity.name..".\n^Where should we construct our fortress?\n^Fortresses cannot be built on the sea."
text.addMultiLineTextToDialog(multiLineText,dialog)
dialog:addOption("Northeast, adjacent to city (1)", 1)
dialog:addOption("East, adjacent to city (2)", 2)
dialog:addOption("Southeast, adjacent to city (3)", 3)
dialog:addOption("South, adjacent to city (4)", 4)
dialog:addOption("Southwest, adjacent to city (5)", 5)
dialog:addOption("West, adjacent to city (6)", 6)
dialog:addOption("Northwest, adjacent to city (7)", 7)
dialog:addOption("North, adjacent to city (8)", 8)
dialog:addOption("Northeast (9)", 9)
dialog:addOption("Southeast (10)", 10)
dialog:addOption("Southwest (11)", 11)
dialog:addOption("Northwest (12)", 12)
dialog:addOption("North, slight east (13)", 13)
dialog:addOption("East, slight north (14)", 14)
dialog:addOption("East, slight south (15)", 15)
dialog:addOption("South, slight east (16)", 16)
dialog:addOption("South, slight west (17)", 17)
dialog:addOption("East, slight south (18)", 18)
dialog:addOption("East, slight north (19)", 19)
dialog:addOption("North, slight west (20)", 20)
choice = dialog:show()
else
choice = math.random(9,20)
end
if choice == 1 then
local fortTile = tileList[1]
if fortTile.terrainType == 10 then
if tribe.isHuman then
civ.ui.text("Unfortunate news! Storms and floodwaters have thwarted our attempt to construct a fort. Salvaged materials have been sent to the capital.")
gen.createUnit(unitAliases.Materials1,civ.getCurrentTribe(),{0,0},{count = 1, randomize = false, scatter = false, inCapital = true, veteran = false, homeCity = nil, overrideCanEnter = false, overrideDomain = false, overrideDefender = false})
else
addShieldsToNearestCity(chosenCity,civ.getCurrentTribe(),50)
end
else
gen.placeFortress(fortTile)
end
elseif choice == 2 then
local fortTile = tileList[2]
if fortTile.terrainType == 10 then
if tribe.isHuman then
civ.ui.text("Unfortunate news! Storms and floodwaters have thwarted our attempt to construct a fort. Salvaged materials have been sent to the capital.")
gen.createUnit(unitAliases.Materials1,civ.getCurrentTribe(),{0,0},{count = 1, randomize = false, scatter = false, inCapital = true, veteran = false, homeCity = nil, overrideCanEnter = false, overrideDomain = false, overrideDefender = false})
else
addShieldsToNearestCity(chosenCity,civ.getCurrentTribe(),50)
end
else
gen.placeFortress(fortTile)
end
elseif choice == 3 then
local fortTile = tileList[3]
if fortTile.terrainType == 10 then
if tribe.isHuman then
civ.ui.text("Unfortunate news! Storms and floodwaters have thwarted our attempt to construct a fort. Salvaged materials have been sent to the capital.")
gen.createUnit(unitAliases.Materials1,civ.getCurrentTribe(),{0,0},{count = 1, randomize = false, scatter = false, inCapital = true, veteran = false, homeCity = nil, overrideCanEnter = false, overrideDomain = false, overrideDefender = false})
else
addShieldsToNearestCity(chosenCity,civ.getCurrentTribe(),50)
end
else
gen.placeFortress(fortTile)
end
elseif choice == 4 then
local fortTile = tileList[4]
if fortTile.terrainType == 10 then
if tribe.isHuman then
civ.ui.text("Unfortunate news! Storms and floodwaters have thwarted our attempt to construct a fort. Salvaged materials have been sent to the capital.")
gen.createUnit(unitAliases.Materials1,civ.getCurrentTribe(),{0,0},{count = 1, randomize = false, scatter = false, inCapital = true, veteran = false, homeCity = nil, overrideCanEnter = false, overrideDomain = false, overrideDefender = false})
else
addShieldsToNearestCity(chosenCity,civ.getCurrentTribe(),50)
end
else
gen.placeFortress(fortTile)
end
elseif choice == 5 then
local fortTile = tileList[5]
if fortTile.terrainType == 10 then
if tribe.isHuman then
civ.ui.text("Unfortunate news! Storms and floodwaters have thwarted our attempt to construct a fort. Salvaged materials have been sent to the capital.")
gen.createUnit(unitAliases.Materials1,civ.getCurrentTribe(),{0,0},{count = 1, randomize = false, scatter = false, inCapital = true, veteran = false, homeCity = nil, overrideCanEnter = false, overrideDomain = false, overrideDefender = false})
else
addShieldsToNearestCity(chosenCity,civ.getCurrentTribe(),50)
end
else
gen.placeFortress(fortTile)
end
elseif choice == 6 then
local fortTile = tileList[6]
if fortTile.terrainType == 10 then
if tribe.isHuman then
civ.ui.text("Unfortunate news! Storms and floodwaters have thwarted our attempt to construct a fort. Salvaged materials have been sent to the capital.")
gen.createUnit(unitAliases.Materials1,civ.getCurrentTribe(),{0,0},{count = 1, randomize = false, scatter = false, inCapital = true, veteran = false, homeCity = nil, overrideCanEnter = false, overrideDomain = false, overrideDefender = false})
else
addShieldsToNearestCity(chosenCity,civ.getCurrentTribe(),50)
end
else
gen.placeFortress(fortTile)
end
elseif choice == 7 then
local fortTile = tileList[7]
if fortTile.terrainType == 10 then
if tribe.isHuman then
civ.ui.text("Unfortunate news! Storms and floodwaters have thwarted our attempt to construct a fort. Salvaged materials have been sent to the capital.")
gen.createUnit(unitAliases.Materials1,civ.getCurrentTribe(),{0,0},{count = 1, randomize = false, scatter = false, inCapital = true, veteran = false, homeCity = nil, overrideCanEnter = false, overrideDomain = false, overrideDefender = false})
else
addShieldsToNearestCity(chosenCity,civ.getCurrentTribe(),50)
end
else
gen.placeFortress(fortTile)
end
elseif choice == 8 then
local fortTile = tileList[8]
if fortTile.terrainType == 10 then
if tribe.isHuman then
civ.ui.text("Unfortunate news! Storms and floodwaters have thwarted our attempt to construct a fort. Salvaged materials have been sent to the capital.")
gen.createUnit(unitAliases.Materials1,civ.getCurrentTribe(),{0,0},{count = 1, randomize = false, scatter = false, inCapital = true, veteran = false, homeCity = nil, overrideCanEnter = false, overrideDomain = false, overrideDefender = false})
else
addShieldsToNearestCity(chosenCity,civ.getCurrentTribe(),50)
end
else
gen.placeFortress(fortTile)
end
elseif choice == 9 then
local fortTile = tileList[9]
if fortTile.terrainType == 10 then
if tribe.isHuman then
civ.ui.text("Unfortunate news! Storms and floodwaters have thwarted our attempt to construct a fort. Salvaged materials have been sent to the capital.")
gen.createUnit(unitAliases.Materials1,civ.getCurrentTribe(),{0,0},{count = 1, randomize = false, scatter = false, inCapital = true, veteran = false, homeCity = nil, overrideCanEnter = false, overrideDomain = false, overrideDefender = false})
else
addShieldsToNearestCity(chosenCity,civ.getCurrentTribe(),50)
end
else
gen.placeFortress(fortTile)
end
elseif choice == 10 then
local fortTile = tileList[10]
if fortTile.terrainType == 10 then
if tribe.isHuman then
civ.ui.text("Unfortunate news! Storms and floodwaters have thwarted our attempt to construct a fort. Salvaged materials have been sent to the capital.")
gen.createUnit(unitAliases.Materials1,civ.getCurrentTribe(),{0,0},{count = 1, randomize = false, scatter = false, inCapital = true, veteran = false, homeCity = nil, overrideCanEnter = false, overrideDomain = false, overrideDefender = false})
else
addShieldsToNearestCity(chosenCity,civ.getCurrentTribe(),50)
end
else
gen.placeFortress(fortTile)
end
elseif choice == 11 then
local fortTile = tileList[11]
if fortTile.terrainType == 10 then
if tribe.isHuman then
civ.ui.text("Unfortunate news! Storms and floodwaters have thwarted our attempt to construct a fort. Salvaged materials have been sent to the capital.")
gen.createUnit(unitAliases.Materials1,civ.getCurrentTribe(),{0,0},{count = 1, randomize = false, scatter = false, inCapital = true, veteran = false, homeCity = nil, overrideCanEnter = false, overrideDomain = false, overrideDefender = false})
else
addShieldsToNearestCity(chosenCity,civ.getCurrentTribe(),50)
end
else
gen.placeFortress(fortTile)
end
elseif choice == 12 then
local fortTile = tileList[12]
if fortTile.terrainType == 10 then
if tribe.isHuman then
civ.ui.text("Unfortunate news! Storms and floodwaters have thwarted our attempt to construct a fort. Salvaged materials have been sent to the capital.")
gen.createUnit(unitAliases.Materials1,civ.getCurrentTribe(),{0,0},{count = 1, randomize = false, scatter = false, inCapital = true, veteran = false, homeCity = nil, overrideCanEnter = false, overrideDomain = false, overrideDefender = false})
else
addShieldsToNearestCity(chosenCity,civ.getCurrentTribe(),50)
end
else
gen.placeFortress(fortTile)
end
elseif choice == 13 then
local fortTile = tileList[13]
if fortTile.terrainType == 10 then
if tribe.isHuman then
civ.ui.text("Unfortunate news! Storms and floodwaters have thwarted our attempt to construct a fort. Salvaged materials have been sent to the capital.")
gen.createUnit(unitAliases.Materials1,civ.getCurrentTribe(),{0,0},{count = 1, randomize = false, scatter = false, inCapital = true, veteran = false, homeCity = nil, overrideCanEnter = false, overrideDomain = false, overrideDefender = false})
else
addShieldsToNearestCity(chosenCity,civ.getCurrentTribe(),50)
end
else
gen.placeFortress(fortTile)
end
elseif choice == 14 then
local fortTile = tileList[14]
if fortTile.terrainType == 10 then
if tribe.isHuman then
civ.ui.text("Unfortunate news! Storms and floodwaters have thwarted our attempt to construct a fort. Salvaged materials have been sent to the capital.")
gen.createUnit(unitAliases.Materials1,civ.getCurrentTribe(),{0,0},{count = 1, randomize = false, scatter = false, inCapital = true, veteran = false, homeCity = nil, overrideCanEnter = false, overrideDomain = false, overrideDefender = false})
else
addShieldsToNearestCity(chosenCity,civ.getCurrentTribe(),50)
end
else
gen.placeFortress(fortTile)
end
elseif choice == 15 then
local fortTile = tileList[15]
if fortTile.terrainType == 10 then
if tribe.isHuman then
civ.ui.text("Unfortunate news! Storms and floodwaters have thwarted our attempt to construct a fort. Salvaged materials have been sent to the capital.")
gen.createUnit(unitAliases.Materials1,civ.getCurrentTribe(),{0,0},{count = 1, randomize = false, scatter = false, inCapital = true, veteran = false, homeCity = nil, overrideCanEnter = false, overrideDomain = false, overrideDefender = false})
else
addShieldsToNearestCity(chosenCity,civ.getCurrentTribe(),50)
end
else
gen.placeFortress(fortTile)
end
elseif choice == 16 then
local fortTile = tileList[16]
if fortTile.terrainType == 10 then
if tribe.isHuman then
civ.ui.text("Unfortunate news! Storms and floodwaters have thwarted our attempt to construct a fort. Salvaged materials have been sent to the capital.")
gen.createUnit(unitAliases.Materials1,civ.getCurrentTribe(),{0,0},{count = 1, randomize = false, scatter = false, inCapital = true, veteran = false, homeCity = nil, overrideCanEnter = false, overrideDomain = false, overrideDefender = false})
else
addShieldsToNearestCity(chosenCity,civ.getCurrentTribe(),50)
end
else
gen.placeFortress(fortTile)
end
elseif choice == 17 then
local fortTile = tileList[17]
if fortTile.terrainType == 10 then
if tribe.isHuman then
civ.ui.text("Unfortunate news! Storms and floodwaters have thwarted our attempt to construct a fort. Salvaged materials have been sent to the capital.")
gen.createUnit(unitAliases.Materials1,civ.getCurrentTribe(),{0,0},{count = 1, randomize = false, scatter = false, inCapital = true, veteran = false, homeCity = nil, overrideCanEnter = false, overrideDomain = false, overrideDefender = false})
else
addShieldsToNearestCity(chosenCity,civ.getCurrentTribe(),50)
end
else
gen.placeFortress(fortTile)
end
elseif choice == 18 then
local fortTile = tileList[18]
if fortTile.terrainType == 10 then
if tribe.isHuman then
civ.ui.text("Unfortunate news! Storms and floodwaters have thwarted our attempt to construct a fort. Salvaged materials have been sent to the capital.")
gen.createUnit(unitAliases.Materials1,civ.getCurrentTribe(),{0,0},{count = 1, randomize = false, scatter = false, inCapital = true, veteran = false, homeCity = nil, overrideCanEnter = false, overrideDomain = false, overrideDefender = false})
else
addShieldsToNearestCity(chosenCity,civ.getCurrentTribe(),50)
end
else
gen.placeFortress(fortTile)
end
elseif choice == 19 then
local fortTile = tileList[19]
if fortTile.terrainType == 10 then
if tribe.isHuman then
civ.ui.text("Unfortunate news! Storms and floodwaters have thwarted our attempt to construct a fort. Salvaged materials have been sent to the capital.")
gen.createUnit(unitAliases.Materials1,civ.getCurrentTribe(),{0,0},{count = 1, randomize = false, scatter = false, inCapital = true, veteran = false, homeCity = nil, overrideCanEnter = false, overrideDomain = false, overrideDefender = false})
else
addShieldsToNearestCity(chosenCity,civ.getCurrentTribe(),50)
end
else
gen.placeFortress(fortTile)
end
elseif choice == 20 then
local fortTile = tileList[20]
if fortTile.terrainType == 10 then
if tribe.isHuman then
civ.ui.text("Unfortunate news! Storms and floodwaters have thwarted our attempt to construct a fort. Salvaged materials have been sent to the capital.")
gen.createUnit(unitAliases.Materials1,civ.getCurrentTribe(),{0,0},{count = 1, randomize = false, scatter = false, inCapital = true, veteran = false, homeCity = nil, overrideCanEnter = false, overrideDomain = false, overrideDefender = false})
else
addShieldsToNearestCity(chosenCity,civ.getCurrentTribe(),50)
end
else
gen.placeFortress(fortTile)
end
end
end
end
end)
end)