Quick Modding Questions Thread

Where i can found this ( http://forums.civfanatics.com/downloads.php?do=file&id=2780 ), but for BTS ? I search for source files (.cpp and .h), in some mod whatever.

I have something similar in some of my mods. There are 3 scenarios that I use all of which are subtly different, so not sure which you would be looking for:

1 - Building II replaces Building I
In conceptual terms this is where Building I is destroyed and Building II is constructed on its site; if Building II is subsequently destroyed you are left with nothing

2 - Building II obsoletes Building I
In conceptual terms Building II is built in addition to Building I and the population stop using Building I and use Building II in preference. Building I is not seen in the city screen and its effects are ignored; If Building II is subsequently destroyed people will go back to using Building I.

3 - Building II extends Building I
In conceptual terms this is like a new area being built on an existing structure, e.g. turrets or a dungeon being built added to a castle. The effects of both buildings are used; If Building I is destroyed all extensions are also destroyed so Building II would also disappear.


I have a concept of replaceable buildings in my slavery mod here. If that is not what you are looking for I could see if I could isolate the other 2 variants from my main mod, but you may need to wait a bit for that as I am in the middle of some other changes just now.

I originally got the obsolete & extensions from RoM:AND here but I have changed the code a bit over time I believe in my mod.
 
Hi. A relatively quick locating question.
History: I edited all cathedrals to have double production from spiritual trait. I noticed that the game (inelegantly) lists them separately at the trait, unlike the different temples, which are referred to categorically as "Temple". The temples themselves do not even show spiritual in buildinginfos.
Question: where is this kind of info stored, as I couldn't find it? Especially, what should I modify in order to have the spiritual trait to refer thus: "Double production speed of Cathedral"; as in Cathedral type buildings, like the trait already refers Temple.
Religious buildings are grouped as "special buildings". You can find them in XML\Buildings\CIV4SpecialBuildingInfos.xml, where you can also modify their production speed from traits.
 
Religious buildings are grouped as "special buildings". You can find them in XML\Buildings\CIV4SpecialBuildingInfos.xml, where you can also modify their production speed from traits.

Thank you kindly. For once there was an easy answer for seemingly simple problem. :)
 
Yeah, though admittedly you got lucky that Firaxis already did the same thing for temples, otherwise there likely wouldn't be a proper XML tag for this ;)
 
Where is the (X,Y) = (0,0) plot of the map?

As a mathematician I would expect it to be in the South-West corner of the mini-map but knowing programmers it is possible they put it in the North-West corner if they are write from left to right or either of the East corners if they write from right to left.

I am assuming that the equator is at maxY/2 and the zero longitude is at maxX/2 unless it is s scenario with a special map.
 
South-West = (0,0)

The equator is at MaxY / 2

I don't believe that there is a concept of longitude in the game and I'm not sure of the value of it as the player and the AI can both see the their whole world known and the relative position of any ship within that known space.
 
Only the BUG mod introduces longitude, if I recall correctly.
 
South-West = (0,0)

The equator is at MaxY / 2

I don't believe that there is a concept of longitude in the game and I'm not sure of the value of it as the player and the AI can both see the their whole world known and the relative position of any ship within that known space.

Thanks. The placement of resources is by distance from the equator but you can't say which hemisphere in BtS.

Only the BUG mod introduces longitude, if I recall correctly.

The left most edge of the mini map is considered to be the date line or 180 degrees longitude. But you are probable right in that it is a BUG concept.
 
Not always true.
This is highlands map. There isn't even a latitude 0 in this case, and latitude 1 is almost at the bottom.
 

Attachments

  • Highland0000.JPG
    Highland0000.JPG
    181.4 KB · Views: 86
I have something similar in some of my mods. There are 3 scenarios that I use all of which are subtly different, so not sure which you would be looking for:

1 - Building II replaces Building I
In conceptual terms this is where Building I is destroyed and Building II is constructed on its site; if Building II is subsequently destroyed you are left with nothing

2 - Building II obsoletes Building I
In conceptual terms Building II is built in addition to Building I and the population stop using Building I and use Building II in preference. Building I is not seen in the city screen and its effects are ignored; If Building II is subsequently destroyed people will go back to using Building I.

3 - Building II extends Building I
In conceptual terms this is like a new area being built on an existing structure, e.g. turrets or a dungeon being built added to a castle. The effects of both buildings are used; If Building I is destroyed all extensions are also destroyed so Building II would also disappear.


I have a concept of replaceable buildings in my slavery mod here. If that is not what you are looking for I could see if I could isolate the other 2 variants from my main mod, but you may need to wait a bit for that as I am in the middle of some other changes just now.

I originally got the obsolete & extensions from RoM:AND here but I have changed the code a bit over time I believe in my mod.

Thanks Archid i will have this on mind, i am so busy now, after 25-th i will look/try, if that is not something what i want i will try to convert from Civ4 to BTS 3.19.

Where does one get the original BtS source files exactly?

On my Win7, that is here:
E:\Program Files (x86)\Firaxis Games\Sid Meier's Civilization 4\Beyond the Sword\CvGameCoreDLL
 
On my Win7, that is here:
E:\Program Files (x86)\Firaxis Games\Sid Meier's Civilization 4\Beyond the Sword\CvGameCoreDLL
You mean they gave that with the basic install??? I did not know that. Now I feel like a goose - never took that basic step to look at the original source files. lol
 
You mean they gave that with the basic install??? I did not know that. Now I feel like a goose - never took that basic step to look at the original source files. lol

Of course Thunderbrd with original install man.
 
According to the modding wiki, iNumFreeBonuses does the following:
Connected to the FreeBonus tag, this determines how many of the specified resource to provide. -1 gives 5 of the above bonuses. Any number >= 0 is itself, i.e. 10 here with a BONUS_DRAMA in the FreeBonus tag means 10 Hit Musicals from your city. Anything below -1 shows up as that negative number.
Does that mean a value of, -2 for example, would take away two of those bonuses from the civ?
 
I looked at the code and apparently that is exactly what happens! No idea what happens if you end up with a negative total of one bonus type though.
 
I have a small unit art problem: I'm currently trying to include melcher_kürzer's Noblewoman art, but it shows up kind of distorted in the game:
Spoiler :
attachment.php


Here are my art defines:
Code:
		<UnitArtInfo>
			<Type>ART_DEF_UNIT_FEMALE_STATESMAN</Type>
			<Button>Art/Interface/Buttons/Units/Noble_Woman.dds</Button>
			<fScale>0.44</fScale>
			<fInterfaceScale>1.0</fInterfaceScale>
			<bActAsLand>0</bActAsLand>
			<bActAsAir>0</bActAsAir>
			<NIF>Art/Units/Noble_Woman/Expert_Sugar_Planter.nif</NIF>
			<KFM>Art/Units/Noble_Woman/Expert_Sugar_Planter.kfm</KFM>
			<SHADERNIF>Art/Units/Noble_Woman/Expert_Sugar_Planter.nif</SHADERNIF>
			<ShadowDef>
				<ShadowNIF>Art/Units/01_UnitShadows/UnitShadow.nif</ShadowNIF>
				<ShadowAttachNode>Bip01 Pelvis</ShadowAttachNode>
				<fShadowScale>0.9</fShadowScale>
			</ShadowDef>
			<fBattleDistance>0.35</fBattleDistance>
			<fRangedDeathTime>0.31</fRangedDeathTime>
			<bActAsRanged>0</bActAsRanged>
			<TrainSound>AS2D_UNIT_BUILD_UNIT</TrainSound>
			<AudioRunSounds>
				<AudioRunTypeLoop/>
				<AudioRunTypeEnd/>
			</AudioRunSounds>
		</UnitArtInfo>

And the art files as downloaded:
Spoiler :
attachment.php


Where's my mistake?
 

Attachments

  • Civ4ScreenShot0032.JPG
    Civ4ScreenShot0032.JPG
    258 KB · Views: 473
  • Artfiles.png
    Artfiles.png
    59.2 KB · Views: 375
Question for Python modders (Map script) :
- I have one map script i am successful change terrain ( i have some crazy space terrains instead grass, plains, desert, tundra and snow ) i have problem with water i am replace water terrains (Ocean and Coast with my water terrains but that don't work)

Planetfall.py
Spoiler :
Code:
def generateTerrainTypes():
	NiTextOut("Generating Terrain (Python PlanetFall Highlands) ...")

	gc = CyGlobalContext()
	map = CyMap()
	iW = map.getGridWidth()
	iH = map.getGridHeight()
	dice = gc.getGame().getMapRand()

	iCoast = gc.getInfoTypeForString("TERRAIN_PF_COAST")
	iShelf = gc.getInfoTypeForString("TERRAIN_SHELF")
	iOcean = gc.getInfoTypeForString("TERRAIN_PF_OCEAN")
	iIce = gc.getInfoTypeForString("FEATURE_ICE")
	iTrench = gc.getInfoTypeForString("FEATURE_TRENCH")
	iTrenchImp = gc.getInfoTypeForString("IMPROVEMENT_TRENCH")
	prob_base = 1.00
	prob_shelf = 0
	prob_mod = 0.30
	prob_spawn = -0.30
	prob_trench = 0.45
	
	for x in range(iW):
		for y in range(iH):
			if ( y < 2 or y > (iH-2) or x == 0 or x == iW ) :
				continue
			pPlot = map.plot(x, y)
			if pPlot.getTerrainType() != iCoast:


CvMapGeneratorUtil.py
Spoiler :
Code:
class PlanetfallTerrainGenerator:
	"If iDesertPercent=35, then about 35% of all land will be desert. Plains is similar. \
	Note that all percentages are approximate, as values have to be roughened to achieve a natural look."
	
	def __init__(self, iDesertPercent=32, iPlainsPercent=18,
	             fSnowLatitude=0.7, fTundraLatitude=0.6,
	             fGrassLatitude=0.1, fDesertBottomLatitude=0.2,
	             fDesertTopLatitude=0.5, fracXExp=-1,
	             fracYExp=-1, grain_amount=4):
		
		self.gc = CyGlobalContext()
		self.map = CyMap()

		grain_amount += self.gc.getWorldInfo(self.map.getWorldSize()).getTerrainGrainChange()
		
		self.grain_amount = grain_amount

		self.iWidth = self.map.getGridWidth()
		self.iHeight = self.map.getGridHeight()

		self.mapRand = self.gc.getGame().getMapRand()
		
		self.iFlags = 0  # Disallow FRAC_POLAR flag, to prevent "zero row" problems.
		if self.map.isWrapX(): self.iFlags += CyFractal.FracVals.FRAC_WRAP_X
		if self.map.isWrapY(): self.iFlags += CyFractal.FracVals.FRAC_WRAP_Y

		self.deserts=CyFractal()
		self.plains=CyFractal()
		self.variation=CyFractal()

		iDesertPercent += self.gc.getClimateInfo(self.map.getClimate()).getDesertPercentChange()
		iDesertPercent = min(iDesertPercent, 100)
		iDesertPercent = max(iDesertPercent, 0)

		self.iDesertPercent = iDesertPercent
		self.iPlainsPercent = iPlainsPercent

		self.iDesertTopPercent = 100
		self.iDesertBottomPercent = max(0,int(100-iDesertPercent))
		self.iPlainsTopPercent = 100
		self.iPlainsBottomPercent = max(0,int(100-iDesertPercent-iPlainsPercent))
		self.iMountainTopPercent = 75
		self.iMountainBottomPercent = 60

		fSnowLatitude += self.gc.getClimateInfo(self.map.getClimate()).getSnowLatitudeChange()
		fSnowLatitude = min(fSnowLatitude, 1.0)
		fSnowLatitude = max(fSnowLatitude, 0.0)
		self.fSnowLatitude = fSnowLatitude

		fTundraLatitude += self.gc.getClimateInfo(self.map.getClimate()).getTundraLatitudeChange()
		fTundraLatitude = min(fTundraLatitude, 1.0)
		fTundraLatitude = max(fTundraLatitude, 0.0)
		self.fTundraLatitude = fTundraLatitude

		fGrassLatitude += self.gc.getClimateInfo(self.map.getClimate()).getGrassLatitudeChange()
		fGrassLatitude = min(fGrassLatitude, 1.0)
		fGrassLatitude = max(fGrassLatitude, 0.0)
		self.fGrassLatitude = fGrassLatitude

		fDesertBottomLatitude += self.gc.getClimateInfo(self.map.getClimate()).getDesertBottomLatitudeChange()
		fDesertBottomLatitude = min(fDesertBottomLatitude, 1.0)
		fDesertBottomLatitude = max(fDesertBottomLatitude, 0.0)
		self.fDesertBottomLatitude = fDesertBottomLatitude

		fDesertTopLatitude += self.gc.getClimateInfo(self.map.getClimate()).getDesertTopLatitudeChange()
		fDesertTopLatitude = min(fDesertTopLatitude, 1.0)
		fDesertTopLatitude = max(fDesertTopLatitude, 0.0)
		self.fDesertTopLatitude = fDesertTopLatitude
		
		self.fracXExp = fracXExp
		self.fracYExp = fracYExp

		self.initFractals()
		
	def initFractals(self):
		self.deserts.fracInit(self.iWidth, self.iHeight, self.grain_amount, self.mapRand, self.iFlags, self.fracXExp, self.fracYExp)
		self.iDesertTop = self.deserts.getHeightFromPercent(self.iDesertTopPercent)
		self.iDesertBottom = self.deserts.getHeightFromPercent(self.iDesertBottomPercent)

		self.plains.fracInit(self.iWidth, self.iHeight, self.grain_amount+1, self.mapRand, self.iFlags, self.fracXExp, self.fracYExp)
		self.iPlainsTop = self.plains.getHeightFromPercent(self.iPlainsTopPercent)
		self.iPlainsBottom = self.plains.getHeightFromPercent(self.iPlainsBottomPercent)

		self.variation.fracInit(self.iWidth, self.iHeight, self.grain_amount, self.mapRand, self.iFlags, self.fracXExp, self.fracYExp)

		#############################
		# Modified for Planetfall
		#############################
		#self.terrainDesert = self.gc.getInfoTypeForString("TERRAIN_DESERT")
		#self.terrainPlains = self.gc.getInfoTypeForString("TERRAIN_PLAINS")
		#self.terrainIce = self.gc.getInfoTypeForString("TERRAIN_SNOW")
		#self.terrainTundra = self.gc.getInfoTypeForString("TERRAIN_TUNDRA")
		#self.terrainGrass = self.gc.getInfoTypeForString("TERRAIN_GRASS")
		#############################
		# Allow for multiple types of desert and plains.
		self.terrainDesert = (self.gc.getInfoTypeForString("TERRAIN_FLAT_ARID"),
				      self.gc.getInfoTypeForString("TERRAIN_FLAT_ARID"),
				      self.gc.getInfoTypeForString("TERRAIN_ROCKY_ARID") )
		self.terrainPlains = (self.gc.getInfoTypeForString("TERRAIN_FLAT_MOIST"),
				      self.gc.getInfoTypeForString("TERRAIN_FLAT_MOIST"),
				      self.gc.getInfoTypeForString("TERRAIN_ROCKY_MOIST") )
		self.terrainIce = (self.gc.getInfoTypeForString("TERRAIN_FLAT_POLAR"),
				      self.gc.getInfoTypeForString("TERRAIN_FLAT_POLAR"),
				      self.gc.getInfoTypeForString("TERRAIN_ROCKY_POLAR") )
		#self.terrainTundra = self.gc.getInfoTypeForString("TERRAIN_TUNDRA")
		self.terrainGrass = (self.gc.getInfoTypeForString("TERRAIN_FLAT_RAINY"),
				      self.gc.getInfoTypeForString("TERRAIN_FLAT_RAINY"),
				      self.gc.getInfoTypeForString("TERRAIN_ROCKY_RAINY") )
		self.terrainCoast = self.gc.getInfoTypeForString("TERRAIN_PF_COAST")
		self.terrainOcean = self.gc.getInfoTypeForString("TERRAIN_PF_OCEAN")
		#################################
		# End Modified for Planetfall
		#################################

Where i make mistake ?

remark:
i am do this in Planetfall.py because i am make new class PlanetfallTerrainGenerator

terraingen = PlanetfallTerrainGenerator()
terrainTypes = terraingen.generateTerrain()
return terrainTypes
 
I have similar trouble with coast and ocean tiles. In C2C we have polar, temperate and tropical coasts and oceans. They are defined in the XML but I could not get them to work in the map scripts.

What I ended up doing was adding a step that ran at the end of CvMapGeneratorUtil.py to convert the existing coats and ocean plots to the ones we wanted based on latitude.
 
I have similar trouble with coast and ocean tiles. In C2C we have polar, temperate and tropical coasts and oceans. They are defined in the XML but I could not get them to work in the map scripts.

What I ended up doing was adding a step that ran at the end of CvMapGeneratorUtil.py to convert the existing coats and ocean plots to the ones we wanted based on latitude.

I am solve the problem. I am replace any COAST and OCEAN terrain in map script with my own PF_COAST and PF_OCEAN terrain.

Key of this problem is in def generateTerrainTypes(): in mapscript

what i am do ? Just look at spoiler. In map generator i have my new own class PlanetfallTerrainGenerator: which is modified class TerrainGenerator: (i have both in CvMapGeneratorUtil.py). If you replace water plots (default water terrain) in CvMapGeneratorUtil.py with your own water terrain that will not have any effect, this only have effects for land terrain and features. Water terrain must implements in def generateTerrainTypes(): that is key. You have tropic, polar and normal water terrains, in generateTerrainTypes, you can separate height on 5 parts (2 polar, 2 normal and one tropic, just calculate coordinates, this is just idea, prototype, sketch, i will try similar in future map scripts)

Planetfall.py
Spoiler :
Code:
def generateTerrainTypes():
	NiTextOut("Generating Terrain (Python PlanetFall Highlands) ...")

	gc = CyGlobalContext()
	map = CyMap()
	iW = map.getGridWidth()
	iH = map.getGridHeight()
	dice = gc.getGame().getMapRand()

	iCoast = gc.getInfoTypeForString("TERRAIN_PF_COAST")
	iShelf = gc.getInfoTypeForString("TERRAIN_SHELF")
	iOcean = gc.getInfoTypeForString("TERRAIN_PF_OCEAN")
	iIce = gc.getInfoTypeForString("FEATURE_ICE")
	iTrench = gc.getInfoTypeForString("FEATURE_TRENCH")
	iTrenchImp = gc.getInfoTypeForString("IMPROVEMENT_TRENCH")
	prob_base = 1.00
	prob_shelf = 0
	prob_mod = 0.30
	prob_spawn = -0.30
	prob_trench = 0.45
	
	for x in range(iW):
		for y in range(iH):
			if ( y < 2 or y > (iH-2) or x == 0 or x == iW ) :
				continue
			pPlot = map.plot(x, y)
			[B][COLOR="Green"]### ZLATKO START ###
			if pPlot.getPlotType() == PlotTypes.PLOT_OCEAN:
				if pPlot.getTerrainType() == gc.getInfoTypeForString("TERRAIN_COAST"):
					#pPlot.setPlotType(newPlot, True, True)
					pPlot.setTerrainType(iCoast, false, false)
				elif pPlot.getTerrainType() == gc.getInfoTypeForString("TERRAIN_OCEAN"):
					pPlot.setTerrainType(iOcean, false, false)
			### ZLATKO END ###[/COLOR][/B]
			if pPlot.getTerrainType() != iCoast:
				continue
				
			ocean_counter = 0
			trench_counter = 0
			highland_counter = 0
			prob_drop = 0.0
			
			pP1 = map.plot(x-1, y)

CvMapGeneratorUtil.py

Spoiler :
Code:
class PlanetfallTerrainGenerator:
	"If iDesertPercent=35, then about 35% of all land will be desert. Plains is similar. \
	Note that all percentages are approximate, as values have to be roughened to achieve a natural look."
	
	def __init__(self, iDesertPercent=32, iPlainsPercent=18,
	             fSnowLatitude=0.7, fTundraLatitude=0.6,
	             fGrassLatitude=0.1, fDesertBottomLatitude=0.2,
	             fDesertTopLatitude=0.5, fracXExp=-1,
	             fracYExp=-1, grain_amount=4):
		
		self.gc = CyGlobalContext()
		self.map = CyMap()

		grain_amount += self.gc.getWorldInfo(self.map.getWorldSize()).getTerrainGrainChange()
		
		self.grain_amount = grain_amount

		self.iWidth = self.map.getGridWidth()
		self.iHeight = self.map.getGridHeight()

		self.mapRand = self.gc.getGame().getMapRand()
		
		self.iFlags = 0  # Disallow FRAC_POLAR flag, to prevent "zero row" problems.
		if self.map.isWrapX(): self.iFlags += CyFractal.FracVals.FRAC_WRAP_X
		if self.map.isWrapY(): self.iFlags += CyFractal.FracVals.FRAC_WRAP_Y

		self.deserts=CyFractal()
		self.plains=CyFractal()
		self.variation=CyFractal()

		iDesertPercent += self.gc.getClimateInfo(self.map.getClimate()).getDesertPercentChange()
		iDesertPercent = min(iDesertPercent, 100)
		iDesertPercent = max(iDesertPercent, 0)

		self.iDesertPercent = iDesertPercent
		self.iPlainsPercent = iPlainsPercent

		self.iDesertTopPercent = 100
		self.iDesertBottomPercent = max(0,int(100-iDesertPercent))
		self.iPlainsTopPercent = 100
		self.iPlainsBottomPercent = max(0,int(100-iDesertPercent-iPlainsPercent))
		self.iMountainTopPercent = 75
		self.iMountainBottomPercent = 60

		fSnowLatitude += self.gc.getClimateInfo(self.map.getClimate()).getSnowLatitudeChange()
		fSnowLatitude = min(fSnowLatitude, 1.0)
		fSnowLatitude = max(fSnowLatitude, 0.0)
		self.fSnowLatitude = fSnowLatitude

		fTundraLatitude += self.gc.getClimateInfo(self.map.getClimate()).getTundraLatitudeChange()
		fTundraLatitude = min(fTundraLatitude, 1.0)
		fTundraLatitude = max(fTundraLatitude, 0.0)
		self.fTundraLatitude = fTundraLatitude

		fGrassLatitude += self.gc.getClimateInfo(self.map.getClimate()).getGrassLatitudeChange()
		fGrassLatitude = min(fGrassLatitude, 1.0)
		fGrassLatitude = max(fGrassLatitude, 0.0)
		self.fGrassLatitude = fGrassLatitude

		fDesertBottomLatitude += self.gc.getClimateInfo(self.map.getClimate()).getDesertBottomLatitudeChange()
		fDesertBottomLatitude = min(fDesertBottomLatitude, 1.0)
		fDesertBottomLatitude = max(fDesertBottomLatitude, 0.0)
		self.fDesertBottomLatitude = fDesertBottomLatitude

		fDesertTopLatitude += self.gc.getClimateInfo(self.map.getClimate()).getDesertTopLatitudeChange()
		fDesertTopLatitude = min(fDesertTopLatitude, 1.0)
		fDesertTopLatitude = max(fDesertTopLatitude, 0.0)
		self.fDesertTopLatitude = fDesertTopLatitude
		
		self.fracXExp = fracXExp
		self.fracYExp = fracYExp

		self.initFractals()
		
	def initFractals(self):
		self.deserts.fracInit(self.iWidth, self.iHeight, self.grain_amount, self.mapRand, self.iFlags, self.fracXExp, self.fracYExp)
		self.iDesertTop = self.deserts.getHeightFromPercent(self.iDesertTopPercent)
		self.iDesertBottom = self.deserts.getHeightFromPercent(self.iDesertBottomPercent)

		self.plains.fracInit(self.iWidth, self.iHeight, self.grain_amount+1, self.mapRand, self.iFlags, self.fracXExp, self.fracYExp)
		self.iPlainsTop = self.plains.getHeightFromPercent(self.iPlainsTopPercent)
		self.iPlainsBottom = self.plains.getHeightFromPercent(self.iPlainsBottomPercent)

		self.variation.fracInit(self.iWidth, self.iHeight, self.grain_amount, self.mapRand, self.iFlags, self.fracXExp, self.fracYExp)

		#############################
		# Modified for Planetfall
		#############################
		#self.terrainDesert = self.gc.getInfoTypeForString("TERRAIN_DESERT")
		#self.terrainPlains = self.gc.getInfoTypeForString("TERRAIN_PLAINS")
		#self.terrainIce = self.gc.getInfoTypeForString("TERRAIN_SNOW")
		#self.terrainTundra = self.gc.getInfoTypeForString("TERRAIN_TUNDRA")
		#self.terrainGrass = self.gc.getInfoTypeForString("TERRAIN_GRASS")
		#############################
		# Allow for multiple types of desert and plains.
		[B][COLOR="Teal"]self.terrainDesert = (self.gc.getInfoTypeForString("TERRAIN_FLAT_ARID"),
				      self.gc.getInfoTypeForString("TERRAIN_FLAT_ARID"),
				      self.gc.getInfoTypeForString("TERRAIN_ROCKY_ARID") )
		self.terrainPlains = (self.gc.getInfoTypeForString("TERRAIN_FLAT_MOIST"),
				      self.gc.getInfoTypeForString("TERRAIN_FLAT_MOIST"),
				      self.gc.getInfoTypeForString("TERRAIN_ROCKY_MOIST") )
		self.terrainIce = (self.gc.getInfoTypeForString("TERRAIN_FLAT_POLAR"),
				      self.gc.getInfoTypeForString("TERRAIN_FLAT_POLAR"),
				      self.gc.getInfoTypeForString("TERRAIN_ROCKY_POLAR") )
		#self.terrainTundra = self.gc.getInfoTypeForString("TERRAIN_TUNDRA")
		self.terrainGrass = (self.gc.getInfoTypeForString("TERRAIN_FLAT_RAINY"),
				      self.gc.getInfoTypeForString("TERRAIN_FLAT_RAINY"),
				      self.gc.getInfoTypeForString("TERRAIN_ROCKY_RAINY") )[/COLOR][/B]
		#################################
		# End Modified for Planetfall
		#################################
[B][COLOR="Green"]....
...
As you can see water is not necessary here !
...
...
...[/COLOR][/B]
 
I have a small unit art problem: I'm currently trying to include melcher_kürzer's Noblewoman art, but it shows up kind of distorted in the game:

[...]

Where's my mistake?
Okay, the art works within Colonization.

I've always assumed that since both games run on the same engine, art could be freely shared among them. Is there a reason why Colonization art wouldn't work in BtS, and maybe a way to get around this?
 
Back
Top Bottom