-- Taxes.lua
-- Author: Genghis.Khan
-- Special Thanks: Hambil; Aforess; FramedArchitecture
--------------------------------------------------------------------------------------------------------
local fTaxes = (60/100)
local cityPopulation = math.floor(city:GetPopulation())
local iNoTaxGold = math.floor (cityPopulation * -3 )
local iNoTaxHappiness = math.floor(city:GetPopulation())
local iLowTaxGold = math.floor (cityPopulation * -0.75) )
local iLowTaxHappiness = math.floor(cityPopulation / 4)
local iMediumTaxGold = math.floor (cityPopulation - cityPopulation )
local iMediumTaxHappiness = math.floor(cityPopulation * -0.25)
local iHighTaxGold = math.floor(cityPopulation * 1.5)
local iHighTaxHappiness = math.floor(cityPopulation * -1)
local iVeryHighTaxGold = math.floor(cityPopulation * 2)
local iVeryHighTaxHappiness = math.floor(cityPopulation * -1.5)
function AddImprovementTax ()
local iOil = 0
local iFarm = 0
local iPasture = 0
local iTradingPost = 0
local iLumberMill = 0
local iMine = 0
local iFishingBoats = 0
local iPlantation = 0
local iPolder = 0
local iQuarry = 0
local iCamp = 0
local iImprovement = math.floor((iOil * 2) + (iFarm * 1) + (iPasture * 0.75) + (iTradingPost * 1.5) + (iLumberMill * 0.75) + (iMine * 0.5) + (iFishingBoats * 0.8) +(iPolder * 0.75) + (iQuarry * 0.5) + (iCamp * 0.8))
local iImprovementHappiness = math.floor(iOil + iFarm + iPasture + iTradingPost + iLumberMill + iMine + iFishingBoats + iPolder + iQuarry + iCamp)
local iImprovementNoTaxes = math.floor(iImprovement * -1)
local iImprovementLowTaxes = math.floor(iImprovement * -0.25)
local iImprovementMediumTaxes = math.floor(iImprovement * 0.5)
local iImprovementHighTaxes = math.floor(iImprovement * 1)
local iImprovementVeryHighTaxes = math.floor(iImprovement * 1.5)
local iImprovementHappinessNoTaxes = math.floor(iImprovementHappiness * 0.5)
local iImprovementHappinessLowTaxes = math.floor(iImprovementHappiness * 0.25)
local iImprovementHapinessMediumTaxes = math.floor(iImprovementHappiness * -0.25)
local iImprovementHapinessHighTaxes = math.floor(iImprovementHappiness * 0.75)
local iImprovementHapinessVeryHighTaxes = math.floor(iImprovementHappiness * 1.15)
for plotLoop = 0, Map.GetNumPlots() - 1, 1 do
local plot = Map.GetPlotByIndex(plotLoop);
local featureType = plot:GetFeatureType();
local improvementType = plot:GetImprovementType();
local terrainType = plot:GetTerrainType();
local activePlayer = Game.getActivePlayer()
if Plot:GetOwner() == activePlayer then
if(Plot:GetImprovementType() == improvementID) then
if ( improvementType == GameInfoTypes["IMPROVEMENT_OFFSHORE_PLATFORM"] or improvementType == GameInfoTypes["IMPROVEMENT_WELL"] ) then
iOil = iOil + 1;
elseif ( improvementType == GameInfoTypes["IMPROVEMENT_FARM"] then
iFarm = iFarm + 1;
elseif ( improvementType == GameInfoTypes["IMPROVEMENT_PASTURE"] then
iPasture = iPasture + 1;
elseif ( improvementType == GameInfoTypes["IMPROVEMENT_TRADING_POST"] then
iTradingPost = iTradingPost + 1;
elseif ( improvementType == GameInfoTypes["IMPROVEMENT_LUMBERMILL"] then
iLumberMill = iLumberMill + 1;
elseif ( improvementType == GameInfoTypes["IMPROVEMENT_MINE"] then
iMine = iMine + 1;
elseif ( improvementType == GameInfoTypes["IMPROVEMENT_FISHING_BOATS"] then
iFishingBoats = iFishingBoats + 1;
elseif ( improvementType == GameInfoTypes["IMPROVEMENT_PLANTATION"] then
iPlantation = iPlantation + 1
elseif ( improvementType == GameInfoTypes["IMPROVEMENT_POLDER"] then
iPolder = iPolder + 1;
elseif ( improvementType == GameInfoTypes["IMPROVEMENT_QUARRY"] then
iQuarry = iQuarry + 1;
elseif ( improvementType == GameInfoTypes["IMPROVEMENT_CAMP"] then
iCamp = iCamp + 1;
-- elseif ( featureType == FeatureTypes.FEATURE_FOREST or terrainType == TerrainTypes.TERRAIN_PLAINS ) then
-- iTerrain = iTerrain + 1;
return iImprovement
return iImprovementNoTaxes
return iImprovementLowTaxes
return iImprovementMediumTaxes
return iImprovementHighTaxes
return iImprovementVeryHighTaxes
return iImprovementHappiness
return iImprovementHappinessNoTaxes
return iImprovementHappinessLowTaxes
return iImprovementHappinessMediumTaxes
return iImprovementHappinessHighTaxes
return iImprovementHappinessVeryHighTaxes
end
end
end
end
function OnTaxSliderValueChanged(sValue, control, bFire)
local iTax = math.floor(fValue * 80)
if iTax = 0 then
pCity:SetNumRealBuilding(GameInfoTypes["BUILDING_HAPPINESS"], math.floor(iNoTaxHappiness + iImprovementHappinessNoTaxes));
pPlayer:ChangeGold (math.floor (iNoTaxGold + iImprovementNoTaxes));
elseif iTax = 20 then
pCity:SetNumRealBuilding(GameInfoTypes["BUILDING_HAPPINESS"], math.floor(iLowTaxHappiness + iImprovementHappinessLowTaxes));
pPlayer:ChangeGold (math.floor (iLowTaxGold + iImprovementLowTaxes);
elseif iTax = 40 then
pCity:SetNumRealBuilding(GameInfoTypes["BUILDING_HAPPINESS"], math.floor (iMediumTaxHappiness + iImprovementHappinessMediumTaxes));
pPlayer:ChangeGold (math.floor(iMediumTaxGold + iImprovementMediumTaxes));
elseif iTax = 60 then
pCity:SetNumRealBuilding(GameInfoTypes["BUILDING_HAPPINESS"], math.floor(iHighTaxHappiness + iImprovementHappinessHighTaxes));
pPlayer:ChangeGold (math.floor(iHighTaxGold + iImprovementHighTaxes));
elseif iTax = 80 then
pCity:SetNumRealBuilding(GameInfoTypes["BUILDING_HAPPINESS"], math.floor(iVeryHighTaxHappiness + iImprovementHappinessVeryHighTaxes));
pPlayer:ChangeGold (math.floor(iVeryHighTaxGold + iImprovementVeryHighTaxes));
end
end
Controls.TaxSlider:RegisterSliderCallback(OnTaxSliderValueChanged)