Цитата Сообщение от Snake_B Посмотреть сообщение
можешь сделать пример какой-нибудь?
а там я уже по аналогии разобрался бы...
Файл Assets\Python\CvEventManager.py
Функция onUnitBuilt (постройка юнита в городе)
Код:
	pCity = argsList[0]
	pUnit = argsList[1]
# начало изменений
	if pUnit.getUnitClassType() == gc.getInfoTypeForString('UNITCLASS_ARCHER'): # Если юнит принадлежит к класу лучников (<Class>UNITCLASS_ARCHER</Class> в Assets\XML\Units\CIV4UnitInfos.xml). Лучник и Вавилонский лучник.
		if pCity.getNumBonuses(gc.getInfoTypeForString('BONUS_IRON')) > 0: # Если если количество железа в городе больше 0 (<Type>BONUS_IRON</Type> в Assets\XML\Terrain\CIV4BonusInfos.xml)
			pUnit.setHasPromotion(gc.getInfoTypeForString('PROMOTION_IRON_AROWS'), true) # Дать юниту прокачку "Железные стрелы" (<Type>PROMOTION_IRON_AROWS</Type> в Assets\XML\Units\CIV4PromotionInfos.xml). Новую прокачку надо сделать самому
		elif pCity.getNumBonuses(gc.getInfoTypeForString('BONUS_COPPER')) > 0: # или если количество меди в городе больше 0
			pUnit.pUnit.setHasPromotion(gc.getInfoTypeForString('PROMOTION_BRONZE_AROWS'), true) # Дать юниту прокачку "Бронзовые стрелы"
# конец изменений
Файл Assets\Python\CvEventManager.py
Функция onUnitSetXY (изменение координат юнита)
Код:
	pPlot,pUnit = argsList
# начало изменений
	if pUnit.isHasPromotion(gc.getInfoTypeForString('PROMOTION_IRON_AROWS')) or pUnit.isHasPromotion(gc.getInfoTypeForString('PROMOTION_BRONZE_AROWS')): # Если у юнита есть такие прокачки
		if pUnit.getUnitClassType() != gc.getInfoTypeForString('UNITCLASS_ARCHER'): # И юнит не принадлежит к класу лучников
			pUnit.setHasPromotion(gc.getInfoTypeForString('PROMOTION_IRON_AROWS'), false) # Удаляем прокачку
			pUnit.setHasPromotion(gc.getInfoTypeForString('PROMOTION_BRONZE_AROWS'), false) # Удаляем прокачку

	if pPlot.isCity() and pPlot.getOwner() == pUnit.getOwner(): # Если тайл город и владелецы тайла и юнита совпадают
		if pUnit.getUnitClassType() == gc.getInfoTypeForString('UNITCLASS_ARCHER') and not pUnit.isHasPromotion(gc.getInfoTypeForString('PROMOTION_IRON_AROWS')): # если у лучника нету "железных стрел"
			pCity = pPlot.getPlotCity() # Город
			if pCity.getNumBonuses(gc.getInfoTypeForString('BONUS_IRON')) > 0:
				pUnit.setHasPromotion(gc.getInfoTypeForString('PROMOTION_IRON_AROWS'), true)
				pUnit.setHasPromotion(gc.getInfoTypeForString('PROMOTION_BRONZE_AROWS'), false) # Удаляем прокачку
			elif pCity.getNumBonuses(gc.getInfoTypeForString('BONUS_COPPER')) > 0:
				pUnit.setHasPromotion(gc.getInfoTypeForString('PROMOTION_BRONZE_AROWS'), true)
# конец изменений