Hi. I'm new to modding with Lua, and I've written the following code in order to allow the Iroquois to build certain improvements on forests or jungles. It doesn't work.
Any help is appreciated.
Code:
function Forest(playerID) --allows construction of some improvements on forest
local pPlayer = Players[playerID]
local pCiv = pPlayer:GetCivilizationType()
if pPlayer:IsEverAlive() and pCiv == GameInfoTypes.CIVILIZATION_IROQUOIS then
for pCity in pPlayer:Cities() do
for i = 0, pCity:GetNumCityPlots() - 1, 1 do
local pPlot = pCity:GetCityIndexPlot(i)
if pPlot ~= nil and pPlot:GetOwner() == pCity:GetOwner() then
if pPlot:GetFeatureType() == GameInfoTypes.FEATURE_FOREST or pPlot:GetFeatureType() == GameInfoTypes.FEATURE_JUNGLE then
pPlot:CanBuild(GameInfoTypes.IMPROVEMENT_PLANTATION, pPlayer, 1)
if pPlot:GetTerrainType() ~= GameInfoTypes.TERRAIN_HILL then
pPlot:CanBuild(GameInfoTypes.IMPROVEMENT_FARM, pPlayer, 1)
end
pPlot:CanBuild(GameInfoTypes.IMPROVEMENT_HOLY_SITE, pPlayer, 1)
pPlot:CanBuild(GameInfoTypes.IMPROVEMENT_ACADEMY, pPlayer, 1)
pPlot:CanBuild(GameInfoTypes.IMPROVEMENT_CUSTOMS_HOUSE, pPlayer, 1)
pPlot:CanBuild(GameInfoTypes.IMPROVEMENT_LANDMARK, pPlayer, 1)
local iX = pPlot:GetX()
local iY = pPlot:GetY()
if Teams[pPlayer:GetTeam()]:IsHasTech(GameInfoTypes.TECH_CIVIL_SERVICE) and pPlot:IsFreshWater() and pPlot:GetImprovementType() == GameInfoTypes.IMPROVEMENT_FARM then
Game.SetPlotExtraYield(iX, iY, YieldTypes.YIELD_FOOD, -1)
end
if Teams[pPlayer:GetTeam()]:IsHasTech(GameInfoTypes.TECH_FERTILIZER) and not pPlot:IsFreshWater() and pPlot:GetImprovementType() == GameInfoTypes.IMPROVEMENT_FARM then
Game.SetPlotExtraYield(iX, iY, YieldTypes.YIELD_FOOD, -1)
end
end
end
end
end
end
end
GameEvents.PlayerDoTurn.Add(Forest)
Any help is appreciated.