platyping
Sleeping Dragon
Weird, that was a test code I added to test the scenarios...
I thought I removed it before uploading...
Re-uploaded without it.
I thought I removed it before uploading...
Re-uploaded without it.
try :
self.customEM.removeEventHandler( "BeginGameTurn", customEM.onBeginGameTurn )
self.customEM.addEventHandler( "BeginGameTurn", self.onBeginGameTurn )
except ValueError :
print "Failed to remove 'onBeginGameTurn', perhaps not registered"
self.customEM.setEventHandler( "BeginGameTurn", self.onBeginGameTurn )
################################### Reinforcement Script ##########################################
## Modified by Platyping
##
## Change Reinforcement.loadEvents("Mods/ReinforcementScript/Assets/XML/CustomXML/Reinforcement.xml") in CvEventManager
## to point to correct location after merging to own mods
##
## <Owner> Specific Civilization or Specific Leader
## <iDate> "NONE" to ignore, "-" to represent BC
## <iTurn> "-1" to ignore, <iTurn> overwrites <iDate>
## <sTriggerMap> Specific Map to Trigger
## <sIgnoreMap> Specific Map to Ignore
##
## <Type> Unit Type or Unit Class Type
## <LeaderUnit> Unit Type or Unit Class Type
## <iQuantity>
## <iPlotX>
## <iPlotY>
## <bCapital> Spawns at Capital, Overwrites <iPlotX> and </iPlotY>
## <sName>
## <iLevel>
## <iExperience>
## <iImmobile> Number of Immobile Turns
## <iDamage> % Damage
## <Promotion> List of Promotions
## <Message> "NONE" to ignore, Adds a pop up for Human Player
##
###############################################################################################
<SkriptInfo>
<Event>
<Owner>CIVILIZATION_FRANCE</Owner>
<iDate>-3920</iDate>
<iTurn>4</iTurn>
<sTriggerMap>NONE</sTriggerMap>
<sIgnoreMap>NONE</sIgnoreMap>
<Units>
<Unit>
<Type>UNITCLASS_ARCHER</Type>
<LeaderUnit>UNITCLASS_GREAT_GENERAL</LeaderUnit>
<iQuantity>1</iQuantity>
<iPlotX>2</iPlotX>
<iPlotY>4</iPlotY>
<sName>Platyping</sName>
<iLevel>3</iLevel>
<iExperience>25</iExperience>
<Promotion>PROMOTION_COMBAT1</Promotion>
<Promotion>PROMOTION_LEADER</Promotion>
<Promotion>PROMOTION_COMBAT2</Promotion>
</Unit>
<Unit>
<Type>UNITCLASS_ARCHER</Type>
<iQuantity>3</iQuantity>
<iPlotX>2</iPlotX>
<iPlotY>4</iPlotY>
<iLevel>1</iLevel>
<iDamage>30</iDamage>
</Unit>
</Units>
<Message>NONE</Message>
</Event>
</SkriptInfo>
###civil war - custom event - generic
def canTriggerCivilWar_Generic(argsList):
kTriggeredData = argsList[0]
player = gc.getPlayer(kTriggeredData.ePlayer)
pCity = player.getCity(kTriggeredData.iCityId)
if gc.getMAX_CIV_PLAYERS ()==CyGame().countCivPlayersAlive ():
return False
if player.getNumCities () <=1:
return False
if pCity.isCapital():
return False
return True
def applyCivilWar_Generic(argsList):
kTriggeredData = argsList[1]
DeclareWar = True
dice = gc.getGame().getMapRand()
lAllive = []
del lAllive[:]
iMaxCiv = gc.getMAX_CIV_PLAYERS ()
for i in range(iMaxCiv):
pPlayer = gc.getPlayer(i)
lAllive.append(pPlayer.getCivilizationType () )
lAllive.append(-1)
iAllCivs = gc.getNumPlayableCivilizationInfos ()
pPlayer = gc.getPlayer(kTriggeredData.ePlayer)
iDerivative = gc.getCivilizationInfo(pPlayer.getCivilizationType()).getDerivativeCiv ()
if not iDerivative in lAllive:
iNewCiv = iDerivative
else:
lNotAllive = []
del lNotAllive[:]
for i in range (iAllCivs):
if i in lAllive:continue
lNotAllive.append(i)
iTempCiv = dice.get(len(lNotAllive) , "OracleSayMeCiv" )
iNewCiv = lNotAllive[iTempCiv]
CurCiv = gc.getCivilizationInfo(iNewCiv)
NumLeaders = CurCiv.getNumLeaders ()
LeaderNum = dice.get(NumLeaders , "OracleSayMeTheLeader" )
LeaderCounter=0
for iLeaders in range(gc.getNumLeaderHeadInfos ()):
if CurCiv.isLeaders(iLeaders):
if NumLeaders==1:
NewLeaderID =iLeaders
break
else:
if LeaderCounter==LeaderNum:
NewLeaderID=iLeaders
break
LeaderCounter=LeaderCounter+1
###find ID for new civ start
iNewID = -1
for iID in range (iMaxCiv):
pTestPlayer = gc.getPlayer(iID)
if not pTestPlayer.isAlive():
iNewID = iID
break
else:
return False
###find ID for new civ end
### add the player to the game
CyGame().addPlayer(iNewID,NewLeaderID,iNewCiv)
pNewPlayer = gc.getPlayer(iNewID)
pNewTeam = gc.getTeam(pNewPlayer.getTeam())
pPlayer = gc.getPlayer(kTriggeredData.ePlayer)
pCity = pPlayer.getCity(kTriggeredData.iCityId)
pTriggerTeam=gc.getTeam(pPlayer.getTeam())
###give new team open borders tech
###easier to handle over units with that solution
iMaxTech = gc.getNumTechInfos ()
for OBtech in range (iMaxTech):
pTech = gc.getTechInfo(OBtech)
if pTech.isOpenBordersTrading ():
pNewTeam.setHasTech(OBtech,True,iNewID,False,False)
break
pNewTeam.signOpenBorders(pTriggerTeam.getID())
###add techs to new player
iMaxTech = gc.getNumTechInfos ()
for counter in range (iMaxTech):
if ((pTriggerTeam.isHasTech(counter)==true)and ((pNewTeam.isHasTech(counter)==false))):
pNewTeam.setHasTech(counter,true,iNewID,false,false)
###handle over cities
iX = pCity.getX()
iY = pCity.getY()
#CyInterface().addMessage(0,False,15,str(kTriggeredData.iCityId),'',0,'Art/Interface/Buttons/General/happy_person.dds',ColorTypes(44), iX, iY, True,True)
pNewPlayer.acquireCity(pCity,False,False)
pPlot = CyMap().plot(iX,iY)
iMaxNumUnits = pPlot.getNumUnits ()
for iUnits in range(iMaxNumUnits,-1,-1):
pUnit = pPlot.getUnit(iUnits)
if pUnit.getOwner()==pPlayer.getID():
pUnit.doCommand(CommandTypes.COMMAND_GIFT,-1,-1)
iUnitClassType = CvUtil.findInfoTypeNum(gc.getUnitClassInfo, gc.getNumUnitClassInfos(), 'UNITCLASS_MODERN_ARMOR')
iUnitType = gc.getCivilizationInfo(pNewPlayer.getCivilizationType( )).getCivilizationUnits(iUnitClassType)
for i in range(2):
pNewPlayer.initUnit(iUnitType, iX,iY, UnitAITypes.UNITAI_ATTACK, DirectionTypes.NO_DIRECTION )
iUnitClassType = CvUtil.findInfoTypeNum(gc.getUnitClassInfo, gc.getNumUnitClassInfos(), 'UNITCLASS_MECHANIZED_INFANTRY')
iUnitType = gc.getCivilizationInfo(pNewPlayer.getCivilizationType( )).getCivilizationUnits(iUnitClassType)
for i in range(2):
pNewPlayer.initUnit(iUnitType, iX,iY, UnitAITypes.UNITAI_CITY_DEFENSE, DirectionTypes.NO_DIRECTION )
###remove open borders tech
###just in case, you never know
pNewTeam.setHasTech(OBtech,False,iNewID,False,False)
###declare war
if DeclareWar:
pNewTeam.declareWar(pTriggerTeam.getID(),False,WarPlanTypes.WARPLAN_LIMITED)
return True