platyping
Sleeping Dragon
No comments without knowing the intended purpose
No comments without knowing the intended purpose
if (pPlayer.isHuman() and pPlayer.getCivilizationType() == iFremen):
CyInterface().addMessage(pWinner.getOwner(), True, 20, CyTranslator().getText("TXT_KEY_MESSAGE_CITY_ADD_WATER_ENEMY",(CityArray[iCity].getName(), pLoser.getName())), None, 2, 'Art\Interface\Buttons\water.dds', ColorTypes(54), CityArray[iCity].getX(), CityArray[iCity].getY(), True, True)
elif (pPlayerLoser.isHuman() and pPlayerLoser.getCivilizationType() == iFremen):
CyInterface().addMessage(pLoser.getOwner(), True, 20, CyTranslator().getText("TXT_KEY_MESSAGE_CITY_ADD_WATER_FREMEN",(CityArray[iCity].getName(), pLoser.getName())), None, 2, 'Art\Interface\Buttons\water.dds', ColorTypes(54), CityArray[iCity].getX(), CityArray[iCity].getY(), True, True)
def onCombatResult(self, argsList):
pWinner,pLoser = argsList
playerX = PyPlayer(pWinner.getOwner())
unitX = PyInfo.UnitInfo(pWinner.getUnitType())
playerY = PyPlayer(pLoser.getOwner())
unitY = PyInfo.UnitInfo(pLoser.getUnitType())
pPlayer = gc.getPlayer(pWinner.getOwner())
pPlayerLoser = gc.getPlayer(pLoser.getOwner())
pPlotLoser = pLoser.plot()
eTeam = gc.getTeam(pPlayer.getTeam())
iFremen = gc.getInfoTypeForString("CIVILIZATION_FREMEN")
iEcaz = gc.getInfoTypeForString('CIVILIZATION_ECAZ')
iGess = gc.getInfoTypeForString('CIVILIZATION_GESSERIT')
iMelee = gc.getInfoTypeForString('UNITCOMBAT_MELEE')
iGuard = gc.getInfoTypeForString('UNITCOMBAT_GUARDSMAN')
iMech = gc.getInfoTypeForString('UNITCOMBAT_MECH')
self.lInspiredProms = {
gc.getInfoTypeForString('PROMOTION_INSPIRED1') : 1,
gc.getInfoTypeForString('PROMOTION_INSPIRED2') : 1,
gc.getInfoTypeForString('PROMOTION_INSPIRED3') : 1,
gc.getInfoTypeForString('PROMOTION_INSPIRED4') : 1
}
#Ecaz: combat bribe
if pPlayer.getCivilizationType() == iEcaz:
if CyGame().getSorenRandNum(100, "Bribe") < 20:
iBribe = (pLoser.getExperience() / 2 + pLoser.baseCombatStr() * 5)
iBriber = pPlayer.getID()
if pPlayer.getGold() > iBribe:
if pPlotLoser.getOwner() == iBriber:
if not pLoser.isBarbarian():
if not pLoser.getUnitCombatType() == iMech:
if pPlotLoser.getNumVisibleEnemyDefenders(pWinner) > 1:
newUnit = pPlayer.initUnit(pLoser.getUnitType(), pWinner.getX(), pWinner.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.NO_DIRECTION)
else:
newUnit = pPlayer.initUnit(pLoser.getUnitType(), pLoser.getX(), pLoser.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.NO_DIRECTION)
for i in range(gc.getNumPromotionInfos()):
if self.lInspiredProms.has_key(i): continue
newUnit.setHasPromotion(i, pLoser.isHasPromotion(i))
newUnit.setLevel(pLoser.getLevel())
newUnit.setExperience(pLoser.getExperience(), -1)
newUnit.finishMoves()
newUnit.setDamage(90, newUnit.getOwner())
if not pPlayer.isHuman():
pPlayer.changeGold(-iBribe)
CyInterface().addMessage(pLoser.getOwner(), True, 20, CyTranslator().getText("TXT_KEY_BRIBED_MULTI",(newUnit.getName(),)), None, 2, gc.getUnitInfo(newUnit.getUnitType()).getButton(), ColorTypes(7), newUnit.getX(), newUnit.getY(), True, True)
else:
if not gc.getGame().isGameMultiPlayer():
#popup
inewUnitX = newUnit.getX()
inewUnitY = newUnit.getY()
iUnitBribed = newUnit.getID()
popupInfo = CyPopupInfo()
popupInfo.setButtonPopupType(ButtonPopupTypes.BUTTONPOPUP_PYTHON)
popupInfo.setText(CyTranslator().getText("TXT_KEY_MESSAGE_BRIBE", (iBribe, pLoser.getName(), pPlayerLoser.getCivilizationAdjectiveKey())))
popupInfo.setData1(inewUnitX)
popupInfo.setData2(inewUnitY)
popupInfo.setData3(iUnitBribed)
popupInfo.setOnClickedPythonCallback("Bribe")
popupInfo.addPythonButton(CyTranslator().getText("TXT_KEY_BRIBE_UNIT", ()), pLoser.getButton())
popupInfo.addPythonButton(CyTranslator().getText("TXT_KEY_KILL_UNIT", ()), 'Art/Interface/Buttons/Actions/Delete.dds')
popupInfo.addPopup(iBriber)
else:
pPlayer.changeGold(-iBribe)
CyInterface().addMessage(pWinner.getOwner(), True, 20, CyTranslator().getText("TXT_KEY_BRIBER_MULTI",(iBribe, newUnit.getName(), pPlayerLoser.getCivilizationAdjectiveKey())), None, 2, gc.getUnitInfo(newUnit.getUnitType()).getButton(), ColorTypes(8), newUnit.getX(), newUnit.getY(), True, True)
CyInterface().addMessage(pLoser.getOwner(), True, 20, CyTranslator().getText("TXT_KEY_BRIBED_MULTI",(newUnit.getName(),)), None, 2, gc.getUnitInfo(newUnit.getUnitType()).getButton(), ColorTypes(7), newUnit.getX(), newUnit.getY(), True, True)
#End Ecaz: combat bribe
def Bribe(argsList):
iButtonId, inewUnitX, inewUnitY, iUnitBribed, iFlags, szText, bOption1, bOption2 = argsList
pPlot = CyMap().plot(inewUnitX, inewUnitY)
for i in xrange(pPlot.getNumUnits()):
pUnit = pPlot.getUnit(i)
if pUnit.getID() == iUnitBribed:
pPlayer = gc.getPlayer(pUnit.getOwner())
iBribe = (pUnit.getExperience() / 2 + pUnit.baseCombatStr() * 5)
if iButtonId == 0:
pPlayer.changeGold(-iBribe)
elif iButtonId == 1:
pUnit.kill(False, PlayerTypes.NO_PLAYER)
def onCombatResult(self, argsList):
pWinner,pLoser = argsList
playerX = PyPlayer(pWinner.getOwner())
unitX = PyInfo.UnitInfo(pWinner.getUnitType())
playerY = PyPlayer(pLoser.getOwner())
unitY = PyInfo.UnitInfo(pLoser.getUnitType())
pPlayer = gc.getPlayer(pWinner.getOwner())
pPlayerLoser = gc.getPlayer(pLoser.getOwner())
pPlotLoser = pLoser.plot()
eTeam = gc.getTeam(pPlayer.getTeam())
iFremen = gc.getInfoTypeForString("CIVILIZATION_FREMEN")
iEcaz = gc.getInfoTypeForString('CIVILIZATION_ECAZ')
iGess = gc.getInfoTypeForString('CIVILIZATION_GESSERIT')
iMelee = gc.getInfoTypeForString('UNITCOMBAT_MELEE')
iGuard = gc.getInfoTypeForString('UNITCOMBAT_GUARDSMAN')
iVehi = gc.getInfoTypeForString('UNITCOMBAT_VEHICLE')
iSiege = gc.getInfoTypeForString('UNITCOMBAT_SIEGE')
iMech = gc.getInfoTypeForString('UNITCOMBAT_MECH')
iHornet = gc.getInfoTypeForString('UNITCOMBAT_HORNET')
iWorker = gc.getInfoTypeForString('UNITCOMBAT_WORKER')
iNone = gc.getInfoTypeForString('NONE')
self.lInspiredProms = {
gc.getInfoTypeForString('PROMOTION_INSPIRED1') : 1,
gc.getInfoTypeForString('PROMOTION_INSPIRED2') : 1,
gc.getInfoTypeForString('PROMOTION_INSPIRED3') : 1,
gc.getInfoTypeForString('PROMOTION_INSPIRED4') : 1
}
#Ecaz: combat bribe
if pPlayer.getCivilizationType() == iEcaz:
if CyGame().getSorenRandNum(100, "Bribe") < 20:
if not pLoser.isBarbarian():
if not (pLoser.getUnitCombatType() == iMech or pLoser.getUnitCombatType() == iWorker or pLoser.getUnitCombatType() == iHornet or pLoser.getUnitCombatType() == iNone):
iBribe = (pLoser.getExperience() / 2 + pLoser.baseCombatStr() * 5)
if pPlayer.getGold() > iBribe:
iBriber = pPlayer.getID()
if pPlotLoser.getOwner() == iBriber:
if pPlotLoser.getNumVisibleEnemyDefenders(pWinner) > 1:
newUnit = pPlayer.initUnit(pLoser.getUnitType(), pWinner.getX(), pWinner.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.NO_DIRECTION)
else:
newUnit = pPlayer.initUnit(pLoser.getUnitType(), pLoser.getX(), pLoser.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.NO_DIRECTION)
for i in range(gc.getNumPromotionInfos()):
if self.lInspiredProms.has_key(i): continue
newUnit.setHasPromotion(i, pLoser.isHasPromotion(i))
newUnit.setLevel(pLoser.getLevel())
newUnit.setExperience(pLoser.getExperience(), -1)
newUnit.finishMoves()
newUnit.setDamage(90, newUnit.getOwner())
#check if unit can remain on desert terrain
pPlotnewUnit = newUnit.plot()
if (pPlotnewUnit.getTerrainType() == gc.getInfoTypeForString('TERRAIN_COAST') or pPlotnewUnit.getTerrainType() == gc.getInfoTypeForString('TERRAIN_OCEAN')):
if (newUnit.getUnitCombatType() == iMelee or newUnit.getUnitCombatType() == iGuard or newUnit.getUnitCombatType() == iSiege or newUnit.getUnitCombatType() == iVehi):
if not (newUnit.isHasPromotion(gc.getInfoTypeForString('PROMOTION_STILLSUIT')) or newUnit.isHasPromotion(gc.getInfoTypeForString('PROMOTION_SANDRIDER'))):
newUnit.jumpToNearestValidPlot()
if not pPlayer.isHuman():
pPlayer.changeGold(-iBribe)
CyInterface().addMessage(pLoser.getOwner(), True, 20, CyTranslator().getText("TXT_KEY_BRIBED_MULTI",(newUnit.getName(),)), None, 2, gc.getUnitInfo(newUnit.getUnitType()).getButton(), ColorTypes(7), newUnit.getX(), newUnit.getY(), True, True)
else:
if not gc.getGame().isGameMultiPlayer():
#popup
iUnitBribed = newUnit.getID()
popupInfo = CyPopupInfo()
popupInfo.setButtonPopupType(ButtonPopupTypes.BUTTONPOPUP_PYTHON)
popupInfo.setText(CyTranslator().getText("TXT_KEY_MESSAGE_BRIBE", (iBribe, pLoser.getName(), pPlayerLoser.getCivilizationAdjectiveKey())))
popupInfo.setData1(iBriber)
popupInfo.setData2(iUnitBribed)
popupInfo.setData3(iBribe)
popupInfo.setOnClickedPythonCallback("Bribe")
popupInfo.addPythonButton(CyTranslator().getText("TXT_KEY_BRIBE_UNIT", ()), pLoser.getButton())
popupInfo.addPythonButton(CyTranslator().getText("TXT_KEY_KILL_UNIT", ()), 'Art/Interface/Buttons/Actions/Delete.dds')
popupInfo.addPopup(iBriber)
else:
pPlayer.changeGold(-iBribe)
CyInterface().addMessage(pWinner.getOwner(), True, 20, CyTranslator().getText("TXT_KEY_BRIBER_MULTI",(iBribe, newUnit.getName(), pPlayerLoser.getCivilizationAdjectiveKey())), None, 2, gc.getUnitInfo(newUnit.getUnitType()).getButton(), ColorTypes(8), newUnit.getX(), newUnit.getY(), True, True)
CyInterface().addMessage(pLoser.getOwner(), True, 20, CyTranslator().getText("TXT_KEY_BRIBED_MULTI",(newUnit.getName(),)), None, 2, gc.getUnitInfo(newUnit.getUnitType()).getButton(), ColorTypes(7), newUnit.getX(), newUnit.getY(), True, True)
#End Ecaz: combat bribe
def Bribe(argsList):
iButtonId, iBriber, iUnitBribed, iBribe, iFlags, szText, bOption1, bOption2 = argsList
pPlayer = gc.getPlayer(iBriber)
if iButtonId == 0:
pPlayer.changeGold(-iBribe)
elif iButtonId == 1:
pUnit = pPlayer.getUnit(iUnitBribed)
pUnit.kill(False, PlayerTypes.NO_PLAYER)
pLoser.setDamage(90, pLoser.getOwner())
newUnit.convert(pLoser)
for i in self.lInspiredProms:
newUnit.setHasPromotion(i, False)
Btw, I'm not sure why we need to call the player at setdamage.
12345that said, my intuition tells me the atreides special is overpowered. One thing that keeps civs for just steamlolling their enemies once they get going is that the newly conquered cities are a drain on their resources and don't contribute meaningfully to the war effort. I would go for something less extreme (if possible), such as halving the assimilation time. This would still be noticable boon without turning atreides into an unstoppable monster once they get wind in their sails.