Angels and Mercurians

Barak

Emperor
Joined
May 1, 2003
Messages
1,520
Location
Chicago
Playing as the Bannor, i built the Mercurian gate and switched to the Mercurians. Embroiled in a war with the Balseraphs, Valin Phanuel was killed with over 125xp, yet not Angel appeared in my Mercurian city (Vallus)

How exactly do I get Angels?
 
The units you have which follow good religions (RoK, Empyrean, Order) join the Mercurians after the death as Angels (which have the XP of your slain unit). The units with evil religions (AV, OO, CoE) join the Infernals as Manes. The religion of the unit is determined at its creation in a city and depends on the religions present in that city, dunno the exact numbers.
Valin would have had to personally have had one of the "good" religions in order to become an Angel for the Mercurians.
 
I don't know much about the Bannor and their heros. Does Valin have a religion? Units need to follow RoK, Empyrean or Order to join the Mercurians, even if they unit itself seems Good.
 
Valin would have had to personally have had one of the "good" religions in order to become an Angel for the Mercurians.

Valin is the Hero of Order, so obviously he has a religion.
 
in CvEventManager.py:
Code:
			if (unit.getReligion() == gc.getInfoTypeForString('RELIGION_COUNCIL_OF_ESUS') or unit.getReligion() == gc.getInfoTypeForString('RELIGION_THE_ASHEN_VEIL') or unit.getReligion() == gc.getInfoTypeForString('RELIGION_OCTOPUS_OVERLORDS') or unit.isHasPromotion(gc.getInfoTypeForString('PROMOTION_DEATH1')) or unit.isHasPromotion(gc.getInfoTypeForString('PROMOTION_ENTROPY1'))):
				cf.giftUnit(gc.getInfoTypeForString('UNIT_MANES'), gc.getInfoTypeForString('CIVILIZATION_INFERNAL'), 0, unit.plot(), unit.getOwner())
				cf.giftUnit(gc.getInfoTypeForString('UNIT_MANES'), gc.getInfoTypeForString('CIVILIZATION_INFERNAL'), 0, unit.plot(), unit.getOwner())

			if (unit.getReligion() == gc.getInfoTypeForString('RELIGION_THE_EMPYREAN') or unit.getReligion() == gc.getInfoTypeForString('RELIGION_THE_ORDER') or unit.getReligion() == gc.getInfoTypeForString('RELIGION_RUNES_OF_KILMORPH') or (unit.getUnitCombatType() != gc.getInfoTypeForString('UNITCOMBAT_ANIMAL') and pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_MERCURIANS'))):
				cf.giftUnit(gc.getInfoTypeForString('UNIT_ANGEL'), gc.getInfoTypeForString('CIVILIZATION_MERCURIANS'), unit.getExperience(), unit.plot(), unit.getOwner())

in CustomFunctions.py
Code:
	def giftUnit(self, iUnit, iCivilization, iXP, pFromPlot, iFromPlayer):
		iAngel = gc.getInfoTypeForString('UNIT_ANGEL')
		iManes = gc.getInfoTypeForString('UNIT_MANES')
		if (iUnit == iAngel or iUnit == iManes):
			iChance = 100 - (CyGame().countCivPlayersAlive() * 3)
			iChance = iChance + iXP
			if iChance < 5:
				iChance = 5
			if iChance > 95:
				iChance = 95
			if CyGame().getSorenRandNum(100, "Gift Unit") > iChance:
				iUnit = -1
		if iUnit != -1:
			bValid = False
			for iPlayer in range(gc.getMAX_PLAYERS()):
				pPlayer = gc.getPlayer(iPlayer)
				if (pPlayer.isAlive()):
					if pPlayer.getCivilizationType() == iCivilization:
						py = PyPlayer(iPlayer)
						if pPlayer.getNumCities() > 0:
							iRnd = CyGame().getSorenRandNum(py.getNumCities(), "Gift Unit")
							pCity = py.getCityList()[iRnd]
							pPlot = pCity.plot()
							newUnit = pPlayer.initUnit(iUnit, pPlot.getX(), pPlot.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_SOUTH)
							newUnit.changeExperience(iXP, -1, false, false, false)
							newUnit.setWeapons()
							if (pFromPlot != -1 and gc.getPlayer(iFromPlayer).isHuman()):
								bValid = True
							if pPlayer.isHuman():
								if iUnit == iManes:
									CyInterface().addMessage(iPlayer,True,25,CyTranslator().getText("TXT_KEY_MESSAGE_ADD_MANES",()),'AS2D_UNIT_FALLS',1,'Art/Interface/Buttons/Promotions/Demon.dds',ColorTypes(7),pPlot.getX(),pPlot.getY(),True,True)
								if iUnit == iAngel:
									CyInterface().addMessage(iPlayer,True,25,CyTranslator().getText("TXT_KEY_MESSAGE_ADD_ANGEL",()),'AS2D_UNIT_FALLS',1,'Art/Interface/Buttons/Promotions/Angel.dds',ColorTypes(7),pPlot.getX(),pPlot.getY(),True,True)
							if (pPlayer.isHuman() == False and iUnit == iManes and pCity != -1):
								if CyGame().getSorenRandNum(100, "Manes") < (100 - (pCity.getPopulation() * 5)):
									pCity.changePopulation(1)
									newUnit.kill(True, PlayerTypes.NO_PLAYER)
			if bValid:
				if iUnit == iManes:
					CyInterface().addMessage(iFromPlayer,True,25,CyTranslator().getText("TXT_KEY_MESSAGE_UNIT_FALLS",()),'AS2D_UNIT_FALLS',1,'Art/Interface/Buttons/Promotions/Demon.dds',ColorTypes(7),pFromPlot.getX(),pFromPlot.getY(),True,True)
				if iUnit == iAngel:
					CyInterface().addMessage(iFromPlayer,True,25,CyTranslator().getText("TXT_KEY_MESSAGE_UNIT_RISES",()),'AS2D_UNIT_FALLS',1,'Art/Interface/Buttons/Promotions/Angel.dds',ColorTypes(7),pFromPlot.getX(),pFromPlot.getY(),True,True)

in CIV4UnitInfos.xml
Code:
        <UnitInfo>
            <Class>UNITCLASS_VALIN</Class>
            <Type>UNIT_VALIN</Type>
            <UniqueNames>
            </UniqueNames>
            <Special>NONE</Special>
            <Capture>NONE</Capture>
            <Combat>UNITCOMBAT_MOUNTED</Combat>
            <Domain>DOMAIN_LAND</Domain>
            <DefaultUnitAI>UNITAI_ATTACK</DefaultUnitAI>
            <Invisible>NONE</Invisible>
            <SeeInvisible>NONE</SeeInvisible>
            <Description>TXT_KEY_UNIT_VALIN</Description>
            <Civilopedia>TXT_KEY_UNIT_VALIN_PEDIA</Civilopedia>
            <Strategy></Strategy>
            <Advisor>ADVISOR_MILITARY</Advisor>
            <bAnimal>0</bAnimal>
            <bFood>0</bFood>
            <bNoBadGoodies>0</bNoBadGoodies>
            <bOnlyDefensive>0</bOnlyDefensive>
            <bNoCapture>0</bNoCapture>
            <bQuickCombat>0</bQuickCombat>
            <bRivalTerritory>0</bRivalTerritory>
            <bMilitaryHappiness>1</bMilitaryHappiness>
            <bMilitarySupport>0</bMilitarySupport>
            <bMilitaryProduction>1</bMilitaryProduction>
            <bPillage>1</bPillage>
            <bSpy>0</bSpy>
            <bSabotage>0</bSabotage>
            <bDestroy>0</bDestroy>
            <bStealPlans>0</bStealPlans>
            <bInvestigate>0</bInvestigate>
            <bCounterSpy>0</bCounterSpy>
            <bFound>0</bFound>
            <bGoldenAge>0</bGoldenAge>
            <bInvisible>0</bInvisible>
            <bFirstStrikeImmune>0</bFirstStrikeImmune>
            <bNoDefensiveBonus>1</bNoDefensiveBonus>
            <bIgnoreBuildingDefense>0</bIgnoreBuildingDefense>
            <bCanMoveImpassable>0</bCanMoveImpassable>
            <bCanMoveAllTerrain>0</bCanMoveAllTerrain>
            <bFlatMovementCost>0</bFlatMovementCost>
            <bIgnoreTerrainCost>0</bIgnoreTerrainCost>
            <bNukeImmune>0</bNukeImmune>
            <bPrereqBonuses>0</bPrereqBonuses>
            <bPrereqReligion>0</bPrereqReligion>
            <bMechanized>0</bMechanized>
            <bSuicide>0</bSuicide>
            <bHiddenNationality>0</bHiddenNationality>
            <bAlwaysHostile>0</bAlwaysHostile>
            <UnitClassUpgrades>
            </UnitClassUpgrades>
            <UnitClassTargets>
            </UnitClassTargets>
            <UnitCombatTargets>
            </UnitCombatTargets>
            <UnitClassDefenders>
            </UnitClassDefenders>
            <UnitCombatDefenders>
            </UnitCombatDefenders>
            <FlankingStrikes>
            </FlankingStrikes>
            <UnitAIs>
                <UnitAI>
                    <UnitAIType>UNITAI_ATTACK</UnitAIType>
                    <bUnitAI>1</bUnitAI>
                </UnitAI>
                <UnitAI>
                    <UnitAIType>UNITAI_PILLAGE</UnitAIType>
                    <bUnitAI>1</bUnitAI>
                </UnitAI>
            </UnitAIs>
            <NotUnitAIs>
            </NotUnitAIs>
            <Builds>
            </Builds>
            <ReligionSpreads>
            </ReligionSpreads>
            <CorporationSpreads>
            </CorporationSpreads>
            <GreatPeoples>
            </GreatPeoples>
            <Buildings>
            </Buildings>
            <ForceBuildings>
            </ForceBuildings>
            <HolyCity>NONE</HolyCity>[B]
            <ReligionType>RELIGION_THE_ORDER</ReligionType>[/B]
            <StateReligion>RELIGION_THE_ORDER</StateReligion>
            <PrereqReligion>RELIGION_THE_ORDER</PrereqReligion>
            <PrereqCorporation>NONE</PrereqCorporation>
            <PrereqBuilding>NONE</PrereqBuilding>
            <PrereqTech>TECH_ORDERS_FROM_HEAVEN</PrereqTech>
            <TechTypes>
            </TechTypes>
            <BonusType>NONE</BonusType>
            <PrereqBonuses>
            </PrereqBonuses>
            <ProductionTraits>
            </ProductionTraits>
            <Flavors>
            </Flavors>
            <iAIWeight>200</iAIWeight>
            <iCost>180</iCost>
            <iHurryCostModifier>0</iHurryCostModifier>
            <iAdvancedStartCost>-1</iAdvancedStartCost>
            <iAdvancedStartCostIncrease>0</iAdvancedStartCostIncrease>
            <iMinAreaSize>-1</iMinAreaSize>
            <iMoves>3</iMoves>
            <bNoRevealMap>0</bNoRevealMap>
            <iAirRange>0</iAirRange>
            <iAirUnitCap>0</iAirUnitCap>
            <iDropRange>0</iDropRange>
            <iNukeRange>-1</iNukeRange>
            <iWorkRate>0</iWorkRate>
            <iBaseDiscover>0</iBaseDiscover>
            <iDiscoverMultiplier>0</iDiscoverMultiplier>
            <iBaseHurry>0</iBaseHurry>
            <iHurryMultiplier>0</iHurryMultiplier>
            <iBaseTrade>0</iBaseTrade>
            <iTradeMultiplier>0</iTradeMultiplier>
            <iGreatWorkCulture>0</iGreatWorkCulture>
            <iEspionagePoints>0</iEspionagePoints>
            <TerrainImpassables>
            </TerrainImpassables>
            <FeatureImpassables>
            </FeatureImpassables>
            <TerrainPassableTechs>
            </TerrainPassableTechs>
            <FeaturePassableTechs>
            </FeaturePassableTechs>
            <iCombat>6</iCombat>
            <iCombatLimit>100</iCombatLimit>
            <iAirCombat>0</iAirCombat>
            <iAirCombatLimit>0</iAirCombatLimit>
            <iXPValueAttack>32</iXPValueAttack>
            <iXPValueDefense>16</iXPValueDefense>
            <iFirstStrikes>0</iFirstStrikes>
            <iChanceFirstStrikes>0</iChanceFirstStrikes>
            <iInterceptionProbability>0</iInterceptionProbability>
            <iEvasionProbability>0</iEvasionProbability>
            <iWithdrawalProb>25</iWithdrawalProb>
            <iCollateralDamage>0</iCollateralDamage>
            <iCollateralDamageLimit>0</iCollateralDamageLimit>
            <iCollateralDamageMaxUnits>0</iCollateralDamageMaxUnits>
            <iCityAttack>0</iCityAttack>
            <iCityDefense>0</iCityDefense>
            <iAnimalCombat>0</iAnimalCombat>
            <iHillsAttack>0</iHillsAttack>
            <iHillsDefense>0</iHillsDefense>
            <TerrainNatives>
            </TerrainNatives>
            <FeatureNatives>
            </FeatureNatives>
            <TerrainAttacks>
            </TerrainAttacks>
            <TerrainDefenses>
            </TerrainDefenses>
            <FeatureAttacks>
            </FeatureAttacks>
            <FeatureDefenses>
            </FeatureDefenses>
            <UnitClassAttackMods>
            </UnitClassAttackMods>
            <UnitClassDefenseMods>
            </UnitClassDefenseMods>
            <UnitCombatMods>
            </UnitCombatMods>
            <UnitCombatCollateralImmunes>
            </UnitCombatCollateralImmunes>
            <DomainMods>
            </DomainMods>
            <BonusProductionModifiers>
            </BonusProductionModifiers>
            <iBombRate>0</iBombRate>
            <iBombardRate>0</iBombardRate>
            <SpecialCargo>NONE</SpecialCargo>
            <DomainCargo>NONE</DomainCargo>
            <iCargo>0</iCargo>
            <iConscription>0</iConscription>
            <iCultureGarrison>16</iCultureGarrison>
            <iExtraCost>0</iExtraCost>
            <iAsset>12</iAsset>
            <iPower>24</iPower>
            <UnitMeshGroups>
            <iGroupSize>1</iGroupSize>
            <fMaxSpeed>1.75</fMaxSpeed>
            <fPadTime>1</fPadTime>
            <iMeleeWaveSize>1</iMeleeWaveSize>
            <iRangedWaveSize>0</iRangedWaveSize>
                <UnitMeshGroup>
                    <iRequired>1</iRequired>
                    <EarlyArtDefineTag>ART_DEF_UNIT_VALIN</EarlyArtDefineTag>
                </UnitMeshGroup>
            </UnitMeshGroups>
            <FormationType>FORMATION_TYPE_DEFAULT</FormationType>
            <HotKey></HotKey>
            <bAltDown>0</bAltDown>
            <bShiftDown>0</bShiftDown>
            <bCtrlDown>0</bCtrlDown>
            <bGraphicalOnly>0</bGraphicalOnly>
            <iHotKeyPriority>0</iHotKeyPriority>
            <FreePromotions>
                <FreePromotion>
                    <PromotionType>PROMOTION_HERO</PromotionType>
                    <bFreePromotion>1</bFreePromotion>
                </FreePromotion>
                <FreePromotion>
                    <PromotionType>PROMOTION_IMMUNE_DISEASE</PromotionType>
                    <bFreePromotion>1</bFreePromotion>
                </FreePromotion>
                <FreePromotion>
                    <PromotionType>PROMOTION_DEMON_SLAYING</PromotionType>
                    <bFreePromotion>1</bFreePromotion>
                </FreePromotion>
            </FreePromotions>
            <LeaderPromotion>NONE</LeaderPromotion>
            <iLeaderExperience>0</iLeaderExperience>
            <bAbandon>1</bAbandon>
            <iCombatDefense>6</iCombatDefense>
            <iModifyGlobalCounter>-2</iModifyGlobalCounter>
            <iTier>4</iTier>
            <Image>Art/Interface/Popups/Valin Phanuel.dds</Image>
            <DamageTypeCombats>
                <DamageTypeCombat>
                    <DamageType>DAMAGE_HOLY</DamageType>
                    <iCombat>2</iCombat>
                </DamageTypeCombat>
            </DamageTypeCombats>
        </UnitInfo>


Getting Angels from units of good religions that die is not guaranteed, but you'd have to have at least 42 players in the game for a 125xp Valin not to return as an angel. This may be a bug.
 
So far having played about 50 turns as the Mercurian, I have not received a single Angel. Fun game anyway!
 
Valin is the Hero of Order, so obviously he has a religion.
Oh, right. For some reason I was thinking he was the Bannor hero.

So far having played about 50 turns as the Mercurian, I have not received a single Angel.
Something sounds fishy there. Can you post a save from that game? What version of FfH2 are you using? Have you made any changes to the code? Are you playing with any modmods?
 
He's playing FF, I saw that he just started a new thread in the FF forums reporting this. Apparently it's a known bug in FF at the moment.
 
Yeah, sorry about that guys. I forgot I was playing that game in FF 051.
 
Back
Top Bottom