Elven Adept and XP

marioflag

History Addict
Joined
Oct 20, 2005
Messages
1,902
Location
Napoli, Italy
I have built some elven adept and i noticed that their XP grow with time.There is a cap to growing XP of adept, also in how much turns they get an additional XP?
 
I don´t know, but they have a chance each turn to get 1 exp. In these 15 turns, one of your adepts suceeded in 10 turns to get, and the other suceeded on 5... That means the first got 10 exp and the second got 5.

Edit: I think its 50%... Oh and arcane trait raises the chance of getting a exp point.
 
each spellcaster (druids, preists, adepts) has a chance to gain 1 XP based on their current level and their tier. Arcane has an increased chance.
 
Its a diminishing returns function where the units are very likely to get xp when they dont have much and less and less likely to get xp as they gain more.

Its influenced by the channeling skill of the caster (so that a newly created unit with channeling 3 will gain xp much faster than one with channeling 1). And the channeling 1-3 skill sof the caster also influences the upper limit at which point the xp starts to drops off. Such that an adept who seems to have stopped getting xp will start again if upgraded to a mage or conjurer.

As Loki mentioned the xp gain is also increased if the caster belongs to an Arcane trait civ. Its also increased if the unit has the Infernal Pact promotion (I think on ashen veil priests can get Infernal Pact).

Code:
	def FFHGiveExperience(self, caster):
		i = -1
		pPlayer = gc.getPlayer(caster.getOwner())
		if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_CHANNELING1')):
			i = 25 - caster.getExperience()
			if pPlayer.hasTrait(gc.getInfoTypeForString('TRAIT_ARCANE')):
				i = i + 5
			if i <= 0:
				i = 1
		if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_CHANNELING2')):
			i = 35 - (caster.getExperience() / 2)
			if pPlayer.hasTrait(gc.getInfoTypeForString('TRAIT_ARCANE')):
				i = i + 10
			if i <= 1:
				i = 2
		if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_CHANNELING3')):
			i = 40 - (caster.getExperience() / 3)
			if pPlayer.hasTrait(gc.getInfoTypeForString('TRAIT_ARCANE')):
				i = i + 15
			if i <= 2:
				i = 3
		if caster.isHasPromotion(gc.getInfoTypeForString('PROMOTION_UNHOLY_TAINT')):
			i = i + 10
		iRnd = CyGame().getSorenRandNum(gc.getDefineINT('CASTER_XP_PROBABILITY'), "Bob")
		if iRnd <= i:
			caster.changeExperience(1,-1)
 
To translate for those who don't read code:
The chance of gaining an XP is as follows (based on promotions):
Channeling I: 25% - 1%/XP possessed (minimum 1%)
Arcane Chanelling I: 30% - 1%/XP possessed (minimum 1%)
Channeling II: 35% - 1%/(2 XP) possessed (minimum 2%)
Arcane Chanelling II: 45% - 1%/(2 XP) possessed (minimum 2%)
Channeling III: 40% - 1%/(3 XP) possessed (minimum 3%)
Arcane Chanelling III: 55% - 1%/(3 XP) possessed (minimum 3%)

Unholy Taint adds 10% to the above chances.

So, as an example, an Arcane Chanelling III unit with 99 XP has a 22% chance of gaining another XP. This is the same chance as a (non-arcane) Chanelling I unit with 3 XP, or an Arane Chanelling II Unholy Taint unit with 66 XP.

There is no hard limit to the number of XP that can be gained in this manner.

Note that this code is only invoked for units with Channelling I, II, or III, and are Arcane Units or Disciple Units.
 
It would be interesting if the XP gain rate was based on the number of spellcasters in existence. In the world of Erebus, isn't there some mention of there being a limited source of magical energy, and early mages not taking apprentices because they wanted it all to themselves? It would be way more work than it's worth, in my opinion, but it still might be interesting to think about.
 
Back
Top Bottom