Hi jkp!
I am impressed by your events, in particular the pirates events. I have a couple of questions:
Is it possible to scale the fleet requirements to the number of coastal cities, as well as map size? So that it would require, say, one ship per coastal city, PLUS a number depending on map size? I think that would be a neat way to take into account not just the map size, but also the map type. On a archipelago map, you're bound to have more coastal cities, than on a pangea map, for example.
The second question: How often do these events fire per game? If I'm not mistaken, there's a chance they won't fire at all in any particular game? But if it DOES fire, how many times per game can they fire?
def canTriggerBlessedSea(argsList):
kTriggeredData = argsList[0]
map = gc.getMap()
[B]#### Start of JKP1187's fix
pPlayer = gc.getPlayer(kTriggeredData.ePlayer)
iGalley = CvUtil.findInfoTypeNum(gc.getUnitClassInfo, gc.getNumUnitClassInfos(), 'UNITCLASS_GALLEY')
iCaravel = CvUtil.findInfoTypeNum(gc.getUnitClassInfo, gc.getNumUnitClassInfos(), 'UNITCLASS_CARAVEL')
iGalleon = CvUtil.findInfoTypeNum(gc.getUnitClassInfo, gc.getNumUnitClassInfos(), 'UNITCLASS_GALLEON')
pPlayerGY = pPlayer.getUnitClassCount(iGalley)
pPlayerCL = pPlayer.getUnitClassCount(iCaravel)
pPlayerGN = pPlayer.getUnitClassCount(iGalleon)
pAggregate = pPlayerGY + pPlayerCL + pPlayerGN
if pAggregate < 1:
return False
#### End of JKP1187's fix[/B]
if gc.getGame().isOption(GameOptionTypes.GAMEOPTION_ONE_CITY_CHALLENGE) and gc.getPlayer(kTriggeredData.ePlayer).isHuman():
return false
iMapMinLandmass = 2 * gc.getWorldInfo(map.getWorldSize()).getDefaultPlayers()
iOurMaxLandmass = gc.getWorldInfo(map.getWorldSize()).getDefaultPlayers() / 2
if (map.getNumLandAreas() < iMapMinLandmass):
return false
iOurLandmasses = 0
for i in range(map.getIndexAfterLastArea()):
area = map.getArea(i)
if not area.isNone() and not area.isWater() and area.getCitiesPerPlayer(kTriggeredData.ePlayer) > 0:
iOurLandmasses += 1
if (iOurLandmasses > iOurMaxLandmass):
return false
return true
def canTriggerBlessedSea(argsList):
kTriggeredData = argsList[0]
map = gc.getMap()
if gc.getGame().isOption(GameOptionTypes.GAMEOPTION_ONE_CITY_CHALLENGE) and gc.getPlayer(kTriggeredData.ePlayer).isHuman():
return false
iMapMinLandmass = 2 * gc.getWorldInfo(map.getWorldSize()).getDefaultPlayers()
iOurMaxLandmass = gc.getWorldInfo(map.getWorldSize()).getDefaultPlayers() / 2
if (map.getNumLandAreas() < iMapMinLandmass):
return false
iOurLandmasses = 0
for i in range(map.getIndexAfterLastArea()):
area = map.getArea(i)
if not area.isNone() and not area.isWater() and area.getCitiesPerPlayer(kTriggeredData.ePlayer) > 0:
iOurLandmasses += 1
if (iOurLandmasses > iOurMaxLandmass):
return false
[B] player = gc.getPlayer(kTriggeredData.ePlayer)
if player.getUnitClassCount(CvUtil.findInfoTypeNum(gc.getUnitClassInfo, gc.getNumUnitClassInfos(), 'UNITCLASS_GALLEY')) == 0:
if player.getUnitClassCount(CvUtil.findInfoTypeNum(gc.getUnitClassInfo, gc.getNumUnitClassInfos(), 'UNITCLASS_CARAVEL')) == 0:
if player.getUnitClassCount(CvUtil.findInfoTypeNum(gc.getUnitClassInfo, gc.getNumUnitClassInfos(), 'UNITCLASS_GALLEON')) == 0:
return false[/B]
return true