New worker action

Nik-W

Chieftain
Joined
Sep 20, 2006
Messages
3
Location
UK
Is it possible to add a new action to worker units that allow them to plant corn? I've looked through the XMLs and I can see how removing a forest/jungle works, but forests and jungles are features, whereas corn is a bonus. Can anyone give me any info on if this can be done (and where to start looking if it can)?:)
 
Yeap, the section you want is the onImprovementBuilt python function in CvEventManager.py. Here is the one we use in FfH2:

Code:
	def onImprovementBuilt(self, argsList):
		'Improvement Built'
		iImprovement, iX, iY = argsList
		pPlot = CyMap().plot(iX,iY)
		iDesert = gc.getInfoTypeForString('TERRAIN_DESERT')
		iFallout = gc.getInfoTypeForString('FEATURE_FALLOUT')
		iForestAncient = gc.getInfoTypeForString('FEATURE_FOREST_ANCIENT')
		iForest = gc.getInfoTypeForString('FEATURE_FOREST')

		if iImprovement == gc.getInfoTypeForString('IMPROVEMENT_MANA_BODY'):
			pPlot.setBonusType(gc.getInfoTypeForString('BONUS_MANA_BODY'))
		if iImprovement == gc.getInfoTypeForString('IMPROVEMENT_MANA_CHAOS'):
			pPlot.setBonusType(gc.getInfoTypeForString('BONUS_MANA_CHAOS'))
		if iImprovement == gc.getInfoTypeForString('IMPROVEMENT_MANA_DEATH'):
			pPlot.setBonusType(gc.getInfoTypeForString('BONUS_MANA_DEATH'))
		if iImprovement == gc.getInfoTypeForString('IMPROVEMENT_MANA_DIMENSIONAL'):
			pPlot.setBonusType(gc.getInfoTypeForString('BONUS_MANA_DIMENSIONAL'))
		if iImprovement == gc.getInfoTypeForString('IMPROVEMENT_MANA_EARTH'):
			pPlot.setBonusType(gc.getInfoTypeForString('BONUS_MANA_EARTH'))
		if iImprovement == gc.getInfoTypeForString('IMPROVEMENT_MANA_ENCHANTMENT'):
			pPlot.setBonusType(gc.getInfoTypeForString('BONUS_MANA_ENCHANTMENT'))
		if iImprovement == gc.getInfoTypeForString('IMPROVEMENT_MANA_ENTROPY'):
			pPlot.setBonusType(gc.getInfoTypeForString('BONUS_MANA_ENTROPY'))
		if iImprovement == gc.getInfoTypeForString('IMPROVEMENT_MANA_FIRE'):
			pPlot.setBonusType(gc.getInfoTypeForString('BONUS_MANA_FIRE'))
		if iImprovement == gc.getInfoTypeForString('IMPROVEMENT_MANA_LAW'):
			pPlot.setBonusType(gc.getInfoTypeForString('BONUS_MANA_LAW'))
		if iImprovement == gc.getInfoTypeForString('IMPROVEMENT_MANA_LIFE'):
			pPlot.setBonusType(gc.getInfoTypeForString('BONUS_MANA_LIFE'))
		if iImprovement == gc.getInfoTypeForString('IMPROVEMENT_MANA_MIND'):
			pPlot.setBonusType(gc.getInfoTypeForString('BONUS_MANA_MIND'))
		if iImprovement == gc.getInfoTypeForString('IMPROVEMENT_MANA_NATURE'):
			pPlot.setBonusType(gc.getInfoTypeForString('BONUS_MANA_NATURE'))
		if iImprovement == gc.getInfoTypeForString('IMPROVEMENT_MANA_SPIRIT'):
			pPlot.setBonusType(gc.getInfoTypeForString('BONUS_MANA_SPIRIT'))
		if iImprovement == gc.getInfoTypeForString('IMPROVEMENT_MANA_WATER'):
			pPlot.setBonusType(gc.getInfoTypeForString('BONUS_MANA_WATER'))

		if (not self.__LOG_IMPROVEMENT):
			return
		CvUtil.pyPrint('Improvement %s was built at %d, %d'
			%(PyInfo.ImprovementInfo(iImprovement).getDescription(), iX, iY))

Notice how if a 'Improvement Mana Water' is built on the tile it pops a 'Bonus Mana Water'. You would want something like that so that whenever a far (or a corn farm, or however you want to do it) is built it pops a Corn bonus.
 
Back
Top Bottom