building yield from great works in building

Download Building Yield From Great Works in Building

If you can't read please download the document

Upload: sukrit-tan

Post on 29-Sep-2015

215 views

Category:

Documents


0 download

DESCRIPTION

Building Yield From Great Works in Building

TRANSCRIPT

-- BuildingYieldFromGreatWorksInBuilding-- Author: Sukritact--=======================================================================================================================-- Prevent Duplicates--=======================================================================================================================if MapModData.BuildingYieldFromGreatWorksInBuilding then return endMapModData.BuildingYieldFromGreatWorksInBuilding = trueEvents.SequenceGameInitComplete.Add(function() MapModData.BuildingYieldFromGreatWorksInBuilding = nil end)--=======================================================================================================================print("loaded")include( "Sukritact_SaveUtils.lua" ); MY_MOD_NAME = "BuildingYieldFromGreatWorksInBuilding";--=======================================================================================================================-- Main Code--=======================================================================================================================local iCulture = GameInfoTypes["YIELD_CULTURE"]local iFaith = GameInfoTypes["YIELD_FAITH"]function BuildingYieldFromGreatWorksInBuilding(iPlayer, pPlayer, bIsTurnStart)for row in GameInfo.Building_YieldFromGreatWorksInBuilding() dolocal iBuilding = GameInfoTypes[row.BuildingType]local iYield = GameInfo.Yields[row.YieldType].IDlocal iDeltaModifier = row.Yieldfor pCity in pPlayer:Cities() dolocal iCity = pCity:GetID()local strBuildingClass = GameInfo.Buildings[iBuilding].BuildingClasslocal iBuildingClass = GameInfo.BuildingClasses[strBuildingClass].IDlocal iGreatWorksNum = pCity:GetNumGreatWorksInBuilding(iBuildingClass)local iDelta = (iGreatWorksNum*iDeltaModifier)if pCity:IsHasBuilding(iBuilding) then-- Building exists, adjust yieldsif iYield == iCulture thenlocal iOldDelta = load( pPlayer, iCity .. "B" .. iBuilding .. "Y" .. iCulture)save( pPlayer, iCity .. "B" .. iBuilding .. "Y" .. iCulture, iDelta)if iOldDelta == nil thenpCity:ChangeJONSCulturePerTurnFromBuildings(iDelta)elsepCity:ChangeJONSCulturePerTurnFromBuildings(iDelta - iOldDelta)endelseif iYield == iFaith thenif bIsTurnStart == true thenpPlayer:ChangeFaith(iDelta)endelselocal iOldDelta = load( pPlayer, iCity .. "B" .. iBuilding .. "Y" .. iYield)save (pPlayer, iCity .. "B" .. iBuilding .. "Y" .. iYield, iDelta)if iOldDelta == nil thenpCity:ChangeBaseYieldRateFromBuildings(iYield, iDelta)elsepCity:ChangeBaseYieldRateFromBuildings(iYield, iDelta - iOldDelta)endend-- Clear data if Building does not exist --elseif iYield == iCulture thenlocal iOldDelta = load( pPlayer, iCity .. "B" .. iBuilding .. "Y" .. iCulture)if iOldDelta == nil thenelseif iOldDelta > 0 thensave (pPlayer, iCity .. "B" .. iBuilding .. "Y" .. iCulture, 0)pCity:ChangeJONSCulturePerTurnFromBuildings(-iOldDelta)--print("Data Cleared")endelseif iYield == iFaith then-- Do Nothingelselocal iOldDelta = load( pPlayer, iCity .. "B" .. iBuilding .. "Y" .. iYield)if iOldDelta == nil thenelseif iOldDelta > 0 thensave (pPlayer, iCity .. "B" .. iBuilding .. "Y" .. iYield, 0)pCity:ChangeBaseYieldRateFromBuildings(iYield, -iOldDelta)endendendendendend--=======================================================================================================================-- Triggers--=======================================================================================================================function BuildingYieldFromGreatWorksInBuildingTurnStart(iPlayer, pPlayer)local pPlayer = Players[iPlayer]local bIsTurnStart = trueBuildingYieldFromGreatWorksInBuilding(iPlayer, pPlayer, bIsTurnStart)endfunction BuildingYieldFromGreatWorksInBuildingSwap()local iPlayer = Game.GetActivePlayer()local pPlayer = Players[iPlayer]if pPlayer:IsTurnActive() thenlocal bIsTurnStart = falseBuildingYieldFromGreatWorksInBuilding(iPlayer, pPlayer, bIsTurnStart)endendGameEvents.PlayerDoTurn.Add(BuildingYieldFromGreatWorksInBuildingTurnStart)Events.SerialEventCityInfoDirty.Add(BuildingYieldFromGreatWorksInBuildingSwap)--=======================================================================================================================--=======================================================================================================================