OAC0.29におけるグランドクロスのバグ修正

不明な昇進[iImmo]は1ターンの行動不能で実装。

不明な昇進[iImmo]は1ターンの行動不能で実装。

def spellBanish(argsList):
	pCaster, pBestPlot, eSpell = argsList
	iX = pCaster.getX()
	iY = pCaster.getY()
	iWeak = gc.getInfoTypeForString('PROMOTION_WEAKEN')
	iImmoTurn = 1
	iexp = pCaster.getExperience()
	iexp2 = iexp+20
	pPlayer = gc.getPlayer(pCaster.getOwner())
	pCaster.doDamage(25, 99, gc.getInfoTypeForString('DAMAGE_HOLY'))
	if iexp <= 20:
		for iiX in xrange(iX-1, iX+2, 1):
			pPlot = CyMap().plot(iiX,iY)
			for i in xrange(pPlot.getNumUnits()):
				pUnit = pPlot.getUnit(i)
				if not pUnit.isAlive():
					pUnit.doDamage(iexp, iexp2, gc.getInfoTypeForString('DAMAGE_HOLY'))
			if pPlot.isVisibleToWatchingHuman():
				CyEngine().triggerEffect(gc.getInfoTypeForString('EFFECT_CREATION'),pPlot.getPoint())
		for iiY in xrange(iY-1, iY+2, 1):
			pPlot2 = CyMap().plot(iX,iiY)
			for i2 in xrange(pPlot2.getNumUnits()):
				pUnit = pPlot2.getUnit(i2)
				if not pUnit.isAlive():
					pUnit.doDamage(iexp, iexp2, gc.getInfoTypeForString('DAMAGE_HOLY'))
			if pPlot2.isVisibleToWatchingHuman():
				CyEngine().triggerEffect(gc.getInfoTypeForString('EFFECT_CREATION'),pPlot2.getPoint())
	if iexp > 20 and iexp <= 50:
		for iiX in xrange(iX-2, iX+3, 1):
			pPlot = CyMap().plot(iiX,iY)
			for i in xrange(pPlot.getNumUnits()):
				pUnit = pPlot.getUnit(i)
				if not pUnit.isAlive():
					pUnit.doDamage(30, iexp2, gc.getInfoTypeForString('DAMAGE_HOLY'))
			if pPlot.isVisibleToWatchingHuman():
				CyEngine().triggerEffect(gc.getInfoTypeForString('EFFECT_CREATION'),pPlot.getPoint())
		for iiY in xrange(iY-2, iY+3, 1):
			pPlot2 = CyMap().plot(iX,iiY)
			for i2 in xrange(pPlot2.getNumUnits()):
				pUnit = pPlot2.getUnit(i2)
				if not pUnit.isAlive():
					pUnit.doDamage(30, iexp2, gc.getInfoTypeForString('DAMAGE_HOLY'))
			if pPlot2.isVisibleToWatchingHuman():
				CyEngine().triggerEffect(gc.getInfoTypeForString('EFFECT_CREATION'),pPlot2.getPoint())
	if iexp > 50 and iexp <= 100:
		for iiX in xrange(iX-2, iX+3, 1):
			pPlot = CyMap().plot(iiX,iY)
			for i in xrange(pPlot.getNumUnits()):
				pUnit = pPlot.getUnit(i)
				if not pUnit.isAlive():
					pUnit.doDamage(50, 70, gc.getInfoTypeForString('DAMAGE_HOLY'))
					pUnit.setHasPromotion(iWeak, True)
			if pPlot.isVisibleToWatchingHuman():
				CyEngine().triggerEffect(gc.getInfoTypeForString('EFFECT_CREATION'),pPlot.getPoint())
		for iiY in xrange(iY-2, iY+3, 1):
			pPlot2 = CyMap().plot(iX,iiY)
			for i2 in xrange(pPlot2.getNumUnits()):
				pUnit = pPlot2.getUnit(i2)
				if not pUnit.isAlive():
					pUnit.doDamage(50, 70, gc.getInfoTypeForString('DAMAGE_HOLY'))
					pUnit.setHasPromotion(iWeak, True)
			if pPlot2.isVisibleToWatchingHuman():
				CyEngine().triggerEffect(gc.getInfoTypeForString('EFFECT_CREATION'),pPlot2.getPoint())
		if CyMap().plot(iX,iY).isVisibleToWatchingHuman():
			CyEngine().triggerEffect(gc.getInfoTypeForString('EFFECT_AIR_SUMMON'),CyMap().plot(iX,iY).getPoint())
	if iexp > 100 and iexp <= 200:
		for iiX in xrange(iX-3, iX+4, 1):
			pPlot = CyMap().plot(iiX,iY)
			for i in xrange(pPlot.getNumUnits()):
				pUnit = pPlot.getUnit(i)
				if not pUnit.isAlive():
					pUnit.doDamage(60, 80, gc.getInfoTypeForString('DAMAGE_HOLY'))
					pUnit.setHasPromotion(iWeak, True)
			if pPlot.isVisibleToWatchingHuman():
				CyEngine().triggerEffect(gc.getInfoTypeForString('EFFECT_CREATION'),pPlot.getPoint())
		for iiY in xrange(iY-3, iY+4, 1):
			pPlot2 = CyMap().plot(iX,iiY)
			for i2 in xrange(pPlot2.getNumUnits()):
				pUnit = pPlot2.getUnit(i2)
				if not pUnit.isAlive():
					pUnit.doDamage(60, 80, gc.getInfoTypeForString('DAMAGE_HOLY'))
					pUnit.setHasPromotion(iWeak, True)
			if pPlot2.isVisibleToWatchingHuman():
				CyEngine().triggerEffect(gc.getInfoTypeForString('EFFECT_CREATION'),pPlot2.getPoint())
		if CyMap().plot(iX,iY).isVisibleToWatchingHuman():
			CyEngine().triggerEffect(gc.getInfoTypeForString('EFFECT_TW'),CyMap().plot(iX,iY).getPoint())
	if iexp > 200:
		for iiX in xrange(iX-3, iX+4, 1):
			pPlot = CyMap().plot(iiX,iY)
			for i in xrange(pPlot.getNumUnits()):
				pUnit = pPlot.getUnit(i)
				if not pUnit.isAlive():
					pUnit.doDamage(75, 99, gc.getInfoTypeForString('DAMAGE_HOLY'))
					pUnit.setHasPromotion(iWeak, True)
					pUnit.changeImmobileTimer(iImmoTurn)
					pUnit.setHasCasted(True)
			if pPlot.isVisibleToWatchingHuman():
				CyEngine().triggerEffect(gc.getInfoTypeForString('EFFECT_CREATION'),pPlot.getPoint())
		for iiY in xrange(iY-3, iY+4, 1):
			pPlot2 = CyMap().plot(iX,iiY)
			for i2 in xrange(pPlot2.getNumUnits()):
				pUnit = pPlot2.getUnit(i2)
				if not pUnit.isAlive():
					pUnit.doDamage(75, 99, gc.getInfoTypeForString('DAMAGE_HOLY'))
					pUnit.setHasPromotion(iWeak, True)
					pUnit.changeImmobileTimer(iImmoTurn)
					pUnit.setHasCasted(True)
			if pPlot2.isVisibleToWatchingHuman():
				CyEngine().triggerEffect(gc.getInfoTypeForString('EFFECT_CREATION'),pPlot2.getPoint())
		if CyMap().plot(iX,iY).isVisibleToWatchingHuman():
			CyEngine().triggerEffect(gc.getInfoTypeForString('EFFECT_TW'),CyMap().plot(iX,iY).getPoint())