##### Kaiju spawn #####
def canTriggerRebels1(argsList):
kTriggeredData = argsList[0]
player = gc.getPlayer(kTriggeredData.ePlayer)
# If Barbarians are disabled in this game, this event will not occur.
if gc.getGame().isOption(GameOptionTypes.GAMEOPTION_NO_BARBARIANS):
return false
# At least one civ on the board must know "Fission"
bFoundValid = False
iTech = GC.getInfoTypeForString("TECH_FISSION")
for iPlayer in range(GC.getMAX_PC_PLAYERS()):
loopPlayer = GC.getPlayer(iPlayer)
if loopPlayer.isAlive():
if GC.getTeam(loopPlayer.getTeam()).isHasTech(iTech):
bFoundValid = True
break
if not bFoundValid:
return False
# Find an eligible plot
# Plot will be unclaimed water, no units, next to border
map = GC.getMap()
for i in range(map.numPlots()):
plot = map.plotByIndex(i)
if (plot.getOwner() == -1 and plot.isWater() and not plot.isImpassable() and not plot.getNumUnits() > 0 and not plot.isLake() and plot.isAdjacentPlayer(kTriggeredData.ePlayer, True)):
return True
return False
def getHelpKaiju1(argsList):
iEvent = argsList[0]
kTriggeredData = argsList[1]
szHelp = TRNSLTR.getText("TXT_KEY_EVENT_KAIJU_HELP_1", ())
return szHelp
def applyKaiju1(argsList):
iEvent = argsList[0]
kTriggeredData = argsList[1]
pPlayer = GC.getPlayer(kTriggeredData.ePlayer)
listPlots = []
map = GC.getMap()
for i in range(map.numPlots()):
plot = map.plotByIndex(i)
if (plot.getOwner() == -1 and plot.isWater() and not plot.isImpassable() and not plot.getNumUnits() > 0 and not plot.isLake() and plot.isAdjacentPlayer(kTriggeredData.ePlayer, True)):
listPlots.append(i)
if 0 == len(listPlots):
return
plot = map.plotByIndex(listPlots[CyGame().getSorenRandNum(len(listPlots), "Kaiju Event Location")])
if map.getWorldSize() == GC.getInfoTypeForString("WORLDSIZE_DUEL"):
iNumUnit1 = 1
else:
iNumUnit1 = 1
iUnitType1 = GC.getInfoTypeForString("UNIT_GODZILLA")
barbPlayer = GC.getPlayer(GC.getBARBARIAN_PLAYER())
for i in range(iNumUnit1):
barbPlayer.initUnit(iUnitType1, plot.getX(), plot.getY(), UnitAITypes.UNITAI_ATTACK_SEA, DirectionTypes.DIRECTION_SOUTH)
##### Land DRAGON #####
# DRAGON spawn
def canTriggerTerrorist1(argsList):
kTriggeredData = argsList[0]
player = gc.getPlayer(kTriggeredData.ePlayer)
# If Barbarians are disabled in this game, this event will not occur.
if gc.getGame().isOption(GameOptionTypes.GAMEOPTION_NO_BARBARIANS):
return false
# At least one civ on the board must know "Guilds"
bFoundValid = False
iTech = GC.getInfoTypeForString("TECH_GUILDS")
for iPlayer in range(GC.getMAX_PC_PLAYERS()):
loopPlayer = GC.getPlayer(iPlayer)
if loopPlayer.isAlive():
if GC.getTeam(loopPlayer.getTeam()).isHasTech(iTech):
bFoundValid = True
break
if not bFoundValid:
return False
# Find an eligible plot
# Plot will be land, not mountain, and no units or cities
map = gc.getMap()
for i in range(map.numPlots()):
plot = map.plotByIndex(i)
if (plot.getOwner() == 0 and not plot.isWater() and not plot.isImpassable() and not plot.getNumUnits() > 0 and plot.area().getCitiesPerPlayer(kTriggeredData.ePlayer) > 0):
return true
return false
def getHelpDragon1(argsList):
iEvent = argsList[0]
kTriggeredData = argsList[1]
szHelp = localText.getText("TXT_KEY_EVENT_DRAGON_HELP", ())
return szHelp
def applyDragon1(argsList):
iEvent = argsList[0]
kTriggeredData = argsList[1]
player = gc.getPlayer(kTriggeredData.ePlayer)
listPlots = []
map = gc.getMap()
for i in range(map.numPlots()):
plot = map.plotByIndex(i)
if (plot.getOwner() == 0 and not plot.isWater() and not plot.isImpassable() and plot.area().getCitiesPerPlayer(kTriggeredData.ePlayer) > 0):
listPlots.append(i)
if 0 == len(listPlots):
return
plot = map.plotByIndex(listPlots[gc.getGame().getSorenRandNum(len(listPlots), "Dragon event location")])
if map.getWorldSize() == CvUtil.findInfoTypeNum(gc.getWorldInfo, gc.getNumWorldInfos(), 'WORLDSIZE_DUEL'):
iNumUnits = 1
else:
iNumUnits = 1
iUnitType = CvUtil.findInfoTypeNum(gc.getUnitInfo, gc.getNumUnitInfos(), 'UNIT_DRAGON')
barbPlayer = gc.getPlayer(gc.getBARBARIAN_PLAYER())
for i in range(iNumUnits):
barbPlayer.initUnit(iUnitType, plot.getX(), plot.getY(), UnitAITypes.UNITAI_PILLAGE, DirectionTypes.DIRECTION_SOUTH)