Cuteunit
Danse Macabre
- Joined
- Sep 5, 2007
- Messages
- 618
Settlers adds a few Settler replacements, the Colonist and the Pioneer, who found cities that come with a few basics like a lighthouse et al, and a higher pop.
But it causes OOS in multiplayer every single time one is used to found a city.
this is the SettlersEventManager.py from the Rise of Mankind mod.
How can I edit this to allow these units to work as intended in multi? Please advise.
But it causes OOS in multiplayer every single time one is used to found a city.
this is the SettlersEventManager.py from the Rise of Mankind mod.
Code:
from CvPythonExtensions import *
gc = CyGlobalContext()
class SettlersEventManager:
def __init__(self, eventManager):
eventManager.addEventHandler("cityBuilt", self.onCityBuilt)
def onCityBuilt(self, argsList):
'City Built'
city = argsList[0]
pUnit = CyInterface().getHeadSelectedUnit()
if pUnit:
#if pUnit.getUnitClassType() == gc.getInfoTypeForString("UNITCLASS_SETTLER"):
# ## Do Nothing
# pass
if pUnit.getUnitClassType() == gc.getInfoTypeForString("UNITCLASS_COLONIST"):
city.setPopulation(3)
_addBuilding(city, "BUILDINGCLASS_BARRACKS")
_addBuilding(city, "BUILDINGCLASS_GRANARY")
_addBuilding(city, "BUILDINGCLASS_FORGE")
_addBuilding(city, "BUILDINGCLASS_MARKET")
if city.plot().isCoastalLand():
_addBuilding(city, "BUILDINGCLASS_HARBOR")
_addBuilding(city, "BUILDINGCLASS_LIGHTHOUSE")
_addBuilding(city, "BUILDINGCLASS_FISHERMAN_HUT")
elif pUnit.getUnitClassType() == gc.getInfoTypeForString("UNITCLASS_PIONEER"):
city.setPopulation(4)
_addBuilding(city, "BUILDINGCLASS_GARRISON")
_addBuilding(city, "BUILDINGCLASS_GRANARY")
_addBuilding(city, "BUILDINGCLASS_FORGE")
_addBuilding(city, "BUILDINGCLASS_COURTHOUSE")
_addBuilding(city, "BUILDINGCLASS_MARKET")
_addBuilding(city, "BUILDINGCLASS_STABLE")
_addBuilding(city, "BUILDINGCLASS_GROCER")
_addBuilding(city, "BUILDINGCLASS_DOCTOR")
_addBuilding(city, "BUILDINGCLASS_BANK")
_addBuilding(city, "BUILDINGCLASS_LIBRARY")
if city.plot().isCoastalLand():
_addBuilding(city, "BUILDINGCLASS_PORT")
_addBuilding(city, "BUILDINGCLASS_LIGHTHOUSE")
_addBuilding(city, "BUILDINGCLASS_FISHERMAN_HUT")
#elif pUnit.getUnitClassType() == gc.getInfoTypeForString("UNITCLASS_ARCHITECT"):
# _addBuilding(city, "BUILDINGCLASS_BARRACKS")
# _addBuilding(city, "BUILDINGCLASS_GRANARY")
# _addBuilding(city, "BUILDINGCLASS_COURTHOUSE")
# _addBuilding(city, "BUILDINGCLASS_MARKET")
# _addBuilding(city, "BUILDINGCLASS_STABLE")
# _addBuilding(city, "BUILDINGCLASS_GROCER")
# _addBuilding(city, "BUILDINGCLASS_AQUEDUCT")
# _addBuilding(city, "BUILDINGCLASS_BANK")
# _addBuilding(city, "BUILDINGCLASS_FORGE")
# _addBuilding(city, "BUILDINGCLASS_LIBRARY")
# _addBuilding(city, "BUILDINGCLASS_JAIL")
# _addBuilding(city, "BUILDINGCLASS_OBSERVATORY")
# _addBuilding(city, "BUILDINGCLASS_THEATRE")
# _addBuilding(city, "BUILDINGCLASS_CUSTOM_HOUSE")
# _addBuilding(city, "BUILDINGCLASS_INDUSTRIAL_PARK")
# _addBuilding(city, "BUILDINGCLASS_LEVEE")
# _addBuilding(city, "BUILDINGCLASS_PUBLIC_TRANSPORTATION")
# if city.plot().isCoastalLand():
# _addBuilding(city, "BUILDINGCLASS_HARBOR")
# _addBuilding(city, "BUILDINGCLASS_LIGHTHOUSE")
def _addBuilding(pCity, szBuilding):
iBuilding = gc.getInfoTypeForString(szBuilding)
iUniqueBuilding = gc.getCivilizationInfo(gc.getPlayer(pCity.getOwner()).getCivilizationType()).getCivilizationBuildings(iBuilding)
if iUniqueBuilding > -1:
if pCity.canConstruct(iUniqueBuilding, False, True, False):
pCity.setNumRealBuilding(iUniqueBuilding, pCity.getNumRealBuilding(iUniqueBuilding) + 1)
How can I edit this to allow these units to work as intended in multi? Please advise.