1. We have added a Gift Upgrades feature that allows you to gift an account upgrade to another member, just in time for the holiday season. You can see the gift option when going to the Account Upgrades screen, or on any user profile screen.
    Dismiss Notice

Terraforming marsh in RFC?

Discussion in 'Rhye's and Fall Modmods' started by Beyondtheocean, Dec 6, 2008.

  1. Deon

    Deon Lt. of Mordor

    Joined:
    Jan 13, 2008
    Messages:
    2,954
    Location:
    St.Petersburg, Russian Federation
    Russia, Saint-Petersburg. People brought stones on carts and basically floored the marsh over.
    It was a plain marsh everywhere, now there's a big city. Peter I was crazy.
     
  2. The Number Pi

    The Number Pi Irrational Number

    Joined:
    Jan 29, 2010
    Messages:
    332
    Location:
    Between 3 and 4
    Hello, I know that this thread is old, but I have been trying for the past few days to mod my game to terraform marsh, but i cannot get it to work. I tried to use the "poineertank" mod as a basis for this, but I don't know what I am doing wrong. This has started to obsess me so much that I joined these forums just to ask this. Could anybody help me?

    I am using RFC 1.186, BTS build version 3.1.9.0 from May 2009.

    My changes are:

    In Civ4ImprovementInfos:
    Spoiler :
    <ImprovementInfo>
    <Type>IMPROVEMENT_DRAIN_MARSH</Type>
    <Description>TXT_KEY_IMPROVEMENT_DRAIN_MARSH</Description>
    <Civilopedia>TXT_KEY_IMPROVEMENT_DRAIN_MARSH_PEDIA</Civilopedia>
    <ArtDefineTag>ART_DEF_IMPROVEMENT_MINE</ArtDefineTag>
    <YieldChanges>
    <iYieldChange>2</iYieldChange>
    <iYieldChange>0</iYieldChange>
    <iYieldChange>0</iYieldChange>
    </YieldChanges>
    <RiverSideYieldChange/>
    <bActsAsCity>0</bActsAsCity>
    <bHillsMakesValid>0</bHillsMakesValid>
    <bFreshWaterMakesValid>0</bFreshWaterMakesValid>
    <bRiverSideMakesValid>0</bRiverSideMakesValid>
    <bNoFreshWater>0</bNoFreshWater>
    <bRequiresFlatlands>1</bRequiresFlatlands>
    <bRequiresRiverSide>0</bRequiresRiverSide>
    <bRequiresIrrigation>0</bRequiresIrrigation>
    <bCarriesIrrigation>0</bCarriesIrrigation>
    <bRequiresFeature>0</bRequiresFeature>
    <bWater>0</bWater>
    <bGoody>0</bGoody>
    <bPermanent>0</bPermanent>
    <bUseLSystem>0</bUseLSystem>
    <iAdvancedStartCost>48</iAdvancedStartCost>
    <iAdvancedStartCostIncrease>0</iAdvancedStartCostIncrease>
    <iTilesPerGoody>0</iTilesPerGoody>
    <iGoodyRange>0</iGoodyRange>
    <iFeatureGrowth>0</iFeatureGrowth>
    <iUpgradeTime>0</iUpgradeTime>
    <iAirBombDefense>0</iAirBombDefense>
    <iDefenseModifier>0</iDefenseModifier>
    <iHappiness>0</iHappiness>
    <iPillageGold>0</iPillageGold>
    <bOutsideBorders>1</bOutsideBorders>
    <TerrainMakesValids>
    <TerrainMakesValid>
    <TerrainType>TERRAIN_MARSH</TerrainType>
    <bMakesValid>1</bMakesValid>
    </TerrainMakesValid>
    </TerrainMakesValids>
    <FeatureMakesValids>
    </FeatureMakesValids>
    <ImprovementPillage/>
    <ImprovementUpgrade/>
    <TechYieldChanges/>
    <RouteYieldChanges/>
    <bGraphicalOnly>0</bGraphicalOnly>
    </ImprovementInfo>


    In Civ4BuildInfos:
    Spoiler :
    <BuildInfo>
    <Type>BUILD_DRAIN_MARSH</Type>
    <Description>TXT_KEY_BUILD_DRAIN_MARSH</Description>
    <Help/>
    <PrereqTech>TECH_CIVIL_SERVICE</PrereqTech>
    <iTime>200</iTime>
    <iCost>0</iCost>
    <bKill>0</bKill>
    <ImprovementType>IMPROVEMENT_DRAIN_MARSH</ImprovementType>
    <RouteType>NONE</RouteType>
    <EntityEvent>ENTITY_EVENT_BUILD</EntityEvent>
    <FeatureStructs/>
    <HotKey>KB_F</HotKey>
    <bAltDown>0</bAltDown>
    <bShiftDown>1</bShiftDown>
    <bCtrlDown>0</bCtrlDown>
    <iHotKeyPriority>1</iHotKeyPriority>
    <Button>,Art/Interface/Buttons/Builds/BuildFarm.dds,Art/Interface/Buttons/Actions_Builds_LeaderHeads_Specialists_Atlas.dds,3,7</Button>
    </BuildInfo>



    In CvEventManager:
    Spoiler :

    def onImprovementBuilt(self, argsList):
    'Improvement Built'
    iImprovement, iX, iY = argsList
    if (not self.__LOG_IMPROVEMENT):
    return
    CvUtil.pyPrint('Improvement %s was built at %d, %d'
    %(PyInfo.ImprovementInfo(iImprovement).getDescription(), iX, iY))
    ###MARSH-LESS Start#############################
    pPlot = CyMap().plot(iX, iY)
    if iImprovement == gc.getInfoTypeForString('IMPROVEMENT_DRAIN_MARSH'):
    print("It worked =)")
    pPlot.setTerrainType(TerrainTypes.TERRAIN_GRASS, True, True)
    pPlot.setBonusType(BonusTypes.NO_BONUS)
    pPlot.setFeatureType(FeatureType.NO_FEATURE)
    pPlot.setImprovementType(-1)
    ###MARSH-LESS END############



    When I have the workers drain a marsh, the improvement is built, but the terrain does not change, and the text is not printed.

    Could anybody please help me?:help:
     
  3. Baldyr

    Baldyr "Hit It"

    Joined:
    Dec 5, 2009
    Messages:
    5,530
    Location:
    Sweden
    Here's what I did in my mod:

    The Swamp terrain is in fact a combination of a base Terrain type, a terrain Feature and a special Resource. So firstly I divided the Swamps into one variety with the Feature and one variety without it. The Feature part can also be drainaged by simply "Cutting" it down, as if it were Forest or Jungle (the other types of Feature, along with Flood Plain). This is an industrial age feature and requires Railroad (for steam powered pumps).

    Also, I permitted some Improvements on Swamp tiles, depending on if the Feature part was still there. Most units can also move through Swamp terrain (not siege units among others) but they receive damage every turn. A Road (or Railroad) effectively takes care of this as units mostly won't stand on the Terrain in between turns. And you can always remove the Feature layer later on (see above).

    If you get your mod to work I'd probably use it as a base for my own modding, so please keep the rest of us posted on the development. I'm not as sure about removing a Swamp from a tile completely though, and absolutely not turn it into Grassland! There's a lot of Swamp in Siberia, and drainaging all of that would make the region anything but the Taiga it should be! :eek:

    So I think that the Swamp terrain shouldn't be removable entirely, but it shouldn't be completely impassable to the majority of units, and it should be workable and improvable. It would probably be some of the worst tiles in a city's BFC and it would probably be better to run specialists instead of working them, even with improvements. I have enabled Forest Preserves on them though (renamed Nature Preserves) and since the other kind is forested you can use them for Lumber Mills later on. Also, you could build riverside Cottages on Swamp tiles but they'd have to be supported by other tiles for :food:.
     
  4. The Number Pi

    The Number Pi Irrational Number

    Joined:
    Jan 29, 2010
    Messages:
    332
    Location:
    Between 3 and 4
    :thanx:Thank you for the advice! I was so focused on why I could not get it to work, that I never realised how unrealistic it was. I decided that it is more realistic/accurate (and easier :p) to just make it an improvement with a smaller bonus. The improvement removes the feature part of the marsh (so all units can enter it) and builds a "drained marsh" that looks like a windmill. this adds 1:food:, and also adds 1:commerce: if it is next to a river. A city can work this for 35 turns to make it into a "thoroughly drained marsh" that adds 1 more:commerce:. With the discovery of plastics, an extra :food: is added (only for the improved one), making it able to sustain 1 population and generate 1-2 :commerce: depending if it is next to a river or not. :D The initial improvement is possible to build with the discovery of machinery, instead of ciliv service.

    The improvements are:
    Spoiler :
    <ImprovementInfo>
    <Type>IMPROVEMENT_DRAIN_MARSH</Type>
    <Description>Drained marsh</Description>
    <Civilopedia>TXT_KEY_IMPROVEMENT_DRAIN_MARSH_PEDIA</Civilopedia>
    <ArtDefineTag>ART_DEF_IMPROVEMENT_WINDMILL</ArtDefineTag>
    <YieldChanges>
    <iYieldChange>1</iYieldChange>
    <iYieldChange>0</iYieldChange>
    <iYieldChange>0</iYieldChange>
    </YieldChanges>
    <RiverSideYieldChange>
    <iYield>0</iYield>
    <iYield>0</iYield>
    <iYield>1</iYield>
    </RiverSideYieldChange>
    <bActsAsCity>0</bActsAsCity>
    <bHillsMakesValid>0</bHillsMakesValid>
    <bFreshWaterMakesValid>0</bFreshWaterMakesValid>
    <bRiverSideMakesValid>0</bRiverSideMakesValid>
    <bNoFreshWater>0</bNoFreshWater>
    <bRequiresFlatlands>1</bRequiresFlatlands>
    <bRequiresRiverSide>0</bRequiresRiverSide>
    <bRequiresIrrigation>0</bRequiresIrrigation>
    <bCarriesIrrigation>0</bCarriesIrrigation>
    <bRequiresFeature>0</bRequiresFeature>
    <bWater>0</bWater>
    <bGoody>0</bGoody>
    <bPermanent>1</bPermanent>
    <bUseLSystem>0</bUseLSystem>
    <iAdvancedStartCost>48</iAdvancedStartCost>
    <iAdvancedStartCostIncrease>0</iAdvancedStartCostIncrease>
    <iTilesPerGoody>0</iTilesPerGoody>
    <iGoodyRange>0</iGoodyRange>
    <iFeatureGrowth>0</iFeatureGrowth>
    <iUpgradeTime>35</iUpgradeTime>
    <iAirBombDefense>0</iAirBombDefense>
    <iDefenseModifier>0</iDefenseModifier>
    <iHappiness>0</iHappiness>
    <iPillageGold>10</iPillageGold>
    <bOutsideBorders>1</bOutsideBorders>
    <TerrainMakesValids>
    <TerrainMakesValid>
    <TerrainType>TERRAIN_MARSH</TerrainType>
    <bMakesValid>1</bMakesValid>
    </TerrainMakesValid>
    </TerrainMakesValids>
    <FeatureMakesValids/>
    <ImprovementPillage/>
    <ImprovementUpgrade>IMPROVEMENT_DRAIN_MARSH2</ImprovementUpgrade>
    <TechYieldChanges/>
    <RouteYieldChanges/>
    <bGraphicalOnly>0</bGraphicalOnly>
    </ImprovementInfo>
    <ImprovementInfo>
    <Type>IMPROVEMENT_DRAIN_MARSH2</Type>
    <Description>Thoroughly drained marsh</Description>
    <Civilopedia>TXT_KEY_IMPROVEMENT_DRAIN_MARSH_PEDIA</Civilopedia>
    <ArtDefineTag>ART_DEF_IMPROVEMENT_WINDMILL</ArtDefineTag>
    <YieldChanges>
    <iYieldChange>1</iYieldChange>
    <iYieldChange>0</iYieldChange>
    <iYieldChange>1</iYieldChange>
    </YieldChanges>
    <RiverSideYieldChange>
    <iYield>0</iYield>
    <iYield>0</iYield>
    <iYield>1</iYield>
    </RiverSideYieldChange>
    <bActsAsCity>0</bActsAsCity>
    <bHillsMakesValid>0</bHillsMakesValid>
    <bFreshWaterMakesValid>0</bFreshWaterMakesValid>
    <bRiverSideMakesValid>0</bRiverSideMakesValid>
    <bNoFreshWater>0</bNoFreshWater>
    <bRequiresFlatlands>0</bRequiresFlatlands>
    <bRequiresRiverSide>0</bRequiresRiverSide>
    <bRequiresIrrigation>0</bRequiresIrrigation>
    <bCarriesIrrigation>0</bCarriesIrrigation>
    <bRequiresFeature>0</bRequiresFeature>
    <bWater>0</bWater>
    <bGoody>0</bGoody>
    <bPermanent>1</bPermanent>
    <bUseLSystem>0</bUseLSystem>
    <iAdvancedStartCost>24</iAdvancedStartCost>
    <iAdvancedStartCostIncrease>0</iAdvancedStartCostIncrease>
    <iTilesPerGoody>0</iTilesPerGoody>
    <iGoodyRange>0</iGoodyRange>
    <iFeatureGrowth>0</iFeatureGrowth>
    <iUpgradeTime>0</iUpgradeTime>
    <iAirBombDefense>5</iAirBombDefense>
    <iDefenseModifier>0</iDefenseModifier>
    <iHappiness>0</iHappiness>
    <iPillageGold>15</iPillageGold>
    <bOutsideBorders>0</bOutsideBorders>
    <TerrainMakesValids/>
    <FeatureMakesValids/>
    <ImprovementPillage/>
    <ImprovementUpgrade/>
    <TechYieldChanges>
    <TechYieldChange>
    <PrereqTech>TECH_PLASTICS</PrereqTech>
    <TechYields>
    <iYield>1</iYield>
    <iYield>0</iYield>
    <iYield>0</iYield>
    </TechYields>
    </TechYieldChange>
    </TechYieldChanges>
    <RouteYieldChanges/>
    <bGraphicalOnly>0</bGraphicalOnly>
    </ImprovementInfo>


    In the ImprovementInfos XML file.

    Do you think this is better?
     
  5. Baldyr

    Baldyr "Hit It"

    Joined:
    Dec 5, 2009
    Messages:
    5,530
    Location:
    Sweden
    Sure, its a nice solution that I'll consider myself also. :goodjob:
     
  6. kochman

    kochman Chieftain

    Joined:
    Jun 8, 2009
    Messages:
    10,818
    New Jersey
     
  7. dragodon64

    dragodon64 Noble

    Joined:
    Jul 7, 2006
    Messages:
    870
    Location:
    Austin, TX, USA
    I think that more than enough example of marshes being drained have been presented, but I think I'll add my own: my hometown of Calcutta (Kolkata) was some swamp until the mid 18th century; now its home to 15ish million people.
     
  8. Rod

    Rod Chieftain

    Joined:
    Sep 22, 2004
    Messages:
    754
    Location:
    Munich / Germany
    I agree that marshes have been drained in human history, but I also shun the micromanagement effort that a worker based solution would pose on us.

    However I believe the same simulation of man made marsh-draining could be accomplished by simply let the feature "grow" negativly (like cottages).

    This grow would of course appear only when the marsh is within cultural boundaries (like forts in FFC which grow into citadels)

    So if a marsh is within cultural boundaries it will simply disappear after some looong while - this would simulate the effort of the native people in settling and draining the land. Certain techs could enhance the speed of draining.
     
  9. kochman

    kochman Chieftain

    Joined:
    Jun 8, 2009
    Messages:
    10,818
    Pretty good idea actually... The only problem is, we choose which places to drain. This would make it somewhat randomized... OR, if it didn't, then all marshes within the cultural boundaries on turn X would all be normalized on turn Y... seems unlikely.
     
  10. Baldyr

    Baldyr "Hit It"

    Joined:
    Dec 5, 2009
    Messages:
    5,530
    Location:
    Sweden
    You choose what marsh to drain by working that tile. Unworked tiles wouldn't be drained either, as no one is utilizing the land and making improvements to it as time goes by.

    So, by making a March into a terrain improvement instead of a base terrain/feature/resource, it could be coded so that it will be cultivated into something else (as a Cottage does) if worked. The reward of working a poor March tiles for a century or two would be to eventually get a tile worthwhile having.

    This could also be a way to keep the graphic of the Marsh bonus while being able to get rid of it. The graphic becomes the Marsh improvement, and it would be an easy task to have it develop into a Windmill or Farm or whatever over time.
     
  11. kochman

    kochman Chieftain

    Joined:
    Jun 8, 2009
    Messages:
    10,818
    No, I agree with you... I was referring directly to Rod's post, which suggested not using workers for it. Pointing out the issue(s) with that proposition.

    I think workers working it is the only way it should happen, because you do have to put resources into such things.
     
  12. Rod

    Rod Chieftain

    Joined:
    Sep 22, 2004
    Messages:
    754
    Location:
    Munich / Germany
    You missunderstood Baldyr's post.
    He was advising to "work" the tile in the city screen like a cottage in order to gain the draining effect. I am not fully convinced that the AI will be able to use the drain in this way, however humans could do it but it would be no less micromanagement than workers...
     
  13. Baldyr

    Baldyr "Hit It"

    Joined:
    Dec 5, 2009
    Messages:
    5,530
    Location:
    Sweden
    Yeah, thank you for clearing that up! :goodjob:
     
  14. kochman

    kochman Chieftain

    Joined:
    Jun 8, 2009
    Messages:
    10,818
    Oh, well, in that case... No... I don't like that idea really at all.
    Stick with workers, make them spend a huge amount of turns on it... perhaps in stages...
    This is the whole point to workers, making tiles more productive so that you can then "work" them within your city.
     
  15. dragodon64

    dragodon64 Noble

    Joined:
    Jul 7, 2006
    Messages:
    870
    Location:
    Austin, TX, USA
    I support kochman's idea, using the citizen's to work it would be a major drain on potential, and really not worth it in the long run.

    On a somewhat related note, I love the historicity of making forests unchoppable until the high middle ages and the economic expansion possible in that era (spoken based on a fairly successful Bulgaria game). I think that similarly allowing marshes to be removed by improvements would be a nice addition in the renaissance.
     
  16. aprogressivist

    aprogressivist Chieftain

    Joined:
    Aug 15, 2009
    Messages:
    62
    Can you make the improvement negate the health penalty from swamps?
     
  17. admfischer

    admfischer Chieftain

    Joined:
    Apr 25, 2010
    Messages:
    31


    Northeast China.
     
  18. The Number Pi

    The Number Pi Irrational Number

    Joined:
    Jan 29, 2010
    Messages:
    332
    Location:
    Between 3 and 4
    Because this penalty is tied to the feature portion of swamps, and the improvement removes feature part when built, the health penalty is already removed.
     
  19. azander12

    azander12 Chieftain

    Joined:
    Jun 5, 2010
    Messages:
    57
    An interesting solution would be to make them workable, with maybe +1 food after the research of Civil Service, and make them clearable with the research of Steam Engine. Many of the world's swamps weren't drained until the discovery of steam-driven pumps.
     
  20. Baldyr

    Baldyr "Hit It"

    Joined:
    Dec 5, 2009
    Messages:
    5,530
    Location:
    Sweden
    This actually sounds very much like what I did myself...
     

Share This Page