You mean all my work is already obsolete?![]()
Your initiative was great, your idea was great. But I probably won't implement like you did. My advantage is that I have access to Talchas
![Wink ;) ;)](/data/assets/smilies/wink.gif)
I want human players to be able to pick their targets and AI players to use a function similar to yours, this is what I did so far:
Code:
def findTargetBanish(caster):
iHiddenNationality = gc.getInfoTypeForString('PROMOTION_HIDDEN_NATIONALITY')
iMagicImmune = gc.getInfoTypeForString('PROMOTION_MAGIC_IMMUNE')
pPlayer = gc.getPlayer(caster.getOwner())
eTeam = gc.getTeam(pPlayer.getTeam())
iRange = 1
iBestUnit = -1
pBestUnit = -1
iX = caster.getX()
iY = caster.getY()
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_EXTENSION1')):
iRange = iRange + 1
if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_EXTENSION2')):
iRange = iRange + 1
for iiX in range(iX-iRange, iX+iRange+1, 1):
for iiY in range(iY-iRange, iY+iRange+1, 1):
if not (iiX == iX and iiY == iY):
pPlot = CyMap().plot(iiX,iiY)
for i in range(pPlot.getNumUnits()):
pUnit = pPlot.getUnit(i)
p2Player = gc.getPlayer(pUnit.getOwner())
e2Team = p2Player.getTeam()
if (eTeam.isAtWar(e2Team) or pUnit.isHasPromotion(iHiddenNationality)):
if (caster.getOwner() != pUnit.getOwner() and pUnit.isHasPromotion(iMagicImmune) == False):
iUnit = 5 * pUnit.baseCombatStr(true)
iUnit += pUnit.getExperience()
if iUnit > iBestUnit:
pBestUnit = pUnit
return pBestUnit
def reqBanish(caster):
if canCast(caster) == False:
return False
if findTargetBanish(caster) == -1:
return False
return True
def spellBanish(caster,target):
doCast(caster)
pPlayer = gc.getPlayer(caster.getOwner())
if pPlayer.isHuman():
target = target[0]
else:
target = findTargetBanish(caster)
if isResisted(target,caster,20) == False:
CyInterface().addMessage(target.getOwner(),True,25,'Unit Banished.','AS2D_LOSS_LATE',1,'Art/Interface/Buttons/Spells/Banish.dds',ColorTypes(8),target.getX(),target.getY(),True,True)
CyInterface().addMessage(caster.getOwner(),True,25,'Enemy Unit Banished.','AS2D_LOSS_LATE',1,'Art/Interface/Buttons/Spells/Banish.dds',ColorTypes(7),target.getX(),target.getY(),True,True)
target.kill(True,0)
def validBanish(caster,pPlot):
iHiddenNationality = gc.getInfoTypeForString('PROMOTION_HIDDEN_NATIONALITY')
iMagicImmune = gc.getInfoTypeForString('PROMOTION_MAGIC_IMMUNE')
pPlayer = gc.getPlayer(caster.getOwner())
eTeam = gc.getTeam(pPlayer.getTeam())
list = []
if pPlayer.isHuman() == False:
list.append(findTargetBanish(caster))
return list
if inRange(caster,pPlot,1) == False:
return list
for i in range(pPlot.getNumUnits()):
pUnit = pPlot.getUnit(i)
p2Player = gc.getPlayer(pUnit.getOwner())
e2Team = p2Player.getTeam()
if (eTeam.isAtWar(e2Team) or pUnit.isHasPromotion(iHiddenNationality)):
if (caster.getOwner() != pUnit.getOwner() and pUnit.isHasPromotion(iMagicImmune) == False):
list.append(pUnit)
return list
Similar to yours with the inclusion of the findtargets function to get the AI to pick a good target. Im trying to keep the ability to have humans pick a target and the ai use the findtarget function to do it. Having the base spell system work 2 ways depending on if the player is human or not was why Talchas was asked to look into it.
Anyway, there are a couple isHasRealBuilding left in CustomFunctions.py and FfHSpells.py
Cool, thanks I'll check it out.