Milaga
Prince
- Joined
- Jan 19, 2008
- Messages
- 470
The dao worldspell isn't working properly - all four elder elementals spawn on every tile that doesn't have an improvement on it.
This fixes the elementals spawning everywhere (and crashing your economy unless you spend a few hours deleting them all.)
Spoiler python/entrypoints/CvSpellInterface.py :
Code:
def reqElementalSwarm(caster):
pPlayer = gc.getPlayer(caster.getOwner())
iWater = pPlayer.getImprovementCount(gc.getInfoTypeForString('IMPROVEMENT_MANA_WATER'))
iFire = pPlayer.getImprovementCount(gc.getInfoTypeForString('IMPROVEMENT_MANA_FIRE'))
iEarth = pPlayer.getImprovementCount(gc.getInfoTypeForString('IMPROVEMENT_MANA_EARTH'))
iAir = pPlayer.getImprovementCount(gc.getInfoTypeForString('IMPROVEMENT_MANA_AIR'))
if pPlayer.isHuman() == False:
if (iWater + iFire + iEarth + iAir) < 3:
return False
return True
def spellElementalSwarm(caster):
iPlayer = caster.getOwner()
pPlayer = gc.getPlayer(iPlayer)
iWaterAncestry = gc.getInfoTypeForString('PROMOTION_ANCESTRY_WATER')
iFireAncestry = gc.getInfoTypeForString('PROMOTION_ANCESTRY_FIRE')
iEarthAncestry = gc.getInfoTypeForString('PROMOTION_ANCESTRY_EARTH')
iAirAncestry = gc.getInfoTypeForString('PROMOTION_ANCESTRY_AIR')
for i in range (CyMap().numPlots()):
pPlot = CyMap().plotByIndex(i)
if pPlot.isOwned():
if pPlot.getOwner() == iPlayer:
if pPlot.getImprovementType() == gc.getInfoTypeForString('IMPROVEMENT_MANA_WATER'):
newUnit = pPlayer.initUnit(gc.getInfoTypeForString('UNIT_WATER_ELEMENTAL_ELDER'), pPlot.getX(), pPlot.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_SOUTH)
if pPlot.getImprovementType() == gc.getInfoTypeForString('IMPROVEMENT_MANA_FIRE'):
newUnit = pPlayer.initUnit(gc.getInfoTypeForString('UNIT_FIRE_ELEMENTAL_ELDER'), pPlot.getX(), pPlot.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_SOUTH)
if pPlot.getImprovementType() == gc.getInfoTypeForString('IMPROVEMENT_MANA_EARTH'):
newUnit = pPlayer.initUnit(gc.getInfoTypeForString('UNIT_EARTH_ELEMENTAL_ELDER'), pPlot.getX(), pPlot.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_SOUTH)
if pPlot.getImprovementType() == gc.getInfoTypeForString('IMPROVEMENT_MANA_AIR'):
newUnit = pPlayer.initUnit(gc.getInfoTypeForString('UNIT_AIR_ELEMENTAL_ELDER'), pPlot.getX(), pPlot.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_SOUTH)
iCount = 0
for pUnit in pPlayer.getUnitList():
if pUnit.getDuration() == 0:
if pUnit.isHasPromotion(gc.getInfoTypeForString('PROMOTION_ELEMENTAL')):
iCount = (iCount + 1)
if pUnit.isHasPromotion(gc.getInfoTypeForString('PROMOTION_ELEMENTAL_HUGE')):
iCount = (iCount + 1)
for pUnit in pPlayer.getUnitList():
if (pUnit.isHasPromotion(iWaterAncestry) or pUnit.isHasPromotion(iFireAncestry) or pUnit.isHasPromotion(iEarthAncestry) or pUnit.isHasPromotion(iAirAncestry)):
pUnit.changeExperience(iCount, -1, False, False, False, False)