Feature Requests and Discussion

would there be a way to get you to introduce the mechanism of the "PROMOTION_WALL_DEFENDER" of RifE ?
the promotion is applied at begining of turn and on move, when the unit is in a walled city (or "palissaded" and, hopefully, in forts/citadelle...etc).
the nice thing is to enable to give +1FS or +1str or any other promotion feature, for units present in such cities..
it would go a long way to boost archer units.
 
Ok, I've managed to get the wall defender promotion.
the only issue with it is to have it removed once the unit is out of the city, even in the same turn.
but I'll manage with a iexpirechance=100
only issue is an archer with haste + mobility1 and engineering roads could bear the "wall defender" promotion up to 9 tiles away from the city... but well... better than nothing.

so... crash my comment above.

however I still have a (dozen) request for a feature:

would it be possible (for you to) to mod the dll to add such promotion tags

"icitycombat"
"icitycombatdefense"
"icitycombatpercent"
that would work like "icitydefense", ie, with effect only when the tile the unit IS is a city, but would enable respectively +str(attack), +str(defense) and +%str(attack).

(the +str would be the bonus, but the +%str would be my "minimalist" request).

in the same way it would be nice to have a
<Featurestrength>
and <iFeaturestrength>
to give +%str(in attack) when the unit IS on a tile with a given feature/terrain/hills
(currently there is "only" ifeatureattack and ifeaturedefense that give respectively %str when attacking INTO and +%str when defending ON.

best regards
 
Could you suppress the <PromotionCombatApply> messages when the promotion is not actually applied, due to another promotion granting immunity to that promotion?

It is mildly annoying to get such messages saying that your Paladins have become Plagued when their Immune to Disease promotion actually prevented that.

OK. I'll try. I added some code a while back so that the spell shouldn't even try to apply itself if the unit is immune, but it seems to not be working all the time.

however I still have a (dozen) request for a feature:

would it be possible (for you to) to mod the dll to add such promotion tags

"icitycombat"
"icitycombatdefense"
"icitycombatpercent"
that would work like "icitydefense", ie, with effect only when the tile the unit IS is a city, but would enable respectively +str(attack), +str(defense) and +%str(attack).

(the +str would be the bonus, but the +%str would be my "minimalist" request).

in the same way it would be nice to have a
<Featurestrength>
and <iFeaturestrength>
to give +%str(in attack) when the unit IS on a tile with a given feature/terrain/hills
(currently there is "only" ifeatureattack and ifeaturedefense that give respectively %str when attacking INTO and +%str when defending ON.

So basically you want tags that will give a unit bonuses when it's attacking from a certain tile type?
 
So basically you want tags that will give a unit bonuses when it's attacking from a certain tile type?
exactly :D
:cry:I'm so Happy to have been understood so easily:cry: [/joke]

if not possible I would accept it.
But if it is not "too much" hard work, I'd be delighted.
and hopefully, other people (glance toward terkhen and Magister) which mod MnAI might be interested (but this sentence is just to show that I hope my request is not totaly selfcentered :D)
 
Personally I would implement it so xp depended on unit level times odds (so (UnitLevel minus 4 or 5 + 1) times normal xp gained, so a victory at 98% odds versus a level 6 unit would give 2*(6-4+1)=6 xp. This means that combat against high level units can still be useful, especially post collateral, but that odds are still important so you can have epic victories (I got 60xp on a skeleton once :)). I'd probably also add modifiers for hero promotion or dragon race, and maybe one for channeling too).

@Bad Player: some advice - plantation dye ahead of cottaging, don't build archers and (probably) space your cities closer. Oh and cottages in general suck, especially with Sidar, you want farms and specialists.
 
They don't call me Bad Player for no reason! ;)

OK I get the other advice, but why not build archers? I thought Sidar are a builder type civ so my strategy was get some good early cities and then get good defensive units and build build build.
 
That's good logic there Bad_Player, the problem is that archers are not good defensive units.

There's been a lot of discussion over this, basically it boils down to the following:

Archers are good at sitting in cities and being attacked. They are not very good at attacking. Letting the enemy choose when the fight happens is not great. Also, it means their stacks can move through your territory, and archers cannot stop this (Mapscripts with lots of chokepoints for forts notwithstanding).

You're better off defending your cities with good attacking units to actively destroy enemy stacks. Especially as the Sidar, as attackers get more xp than defenders.

Horse Archers are particularly good, as they can damage units they have almost no hope of destroying, and then heal faster than them with the city heal bonus. Horse archers are one of the best units to have as the Sidar, since they if they do win a low-odds battle (Which is less risky for them because of their high withdraw rate), they'll earn a lot of xp to go towards waning.
 
And also archers have a really, really sucky hammer rate compared to bronze warriors. And the Sidar are not a defensive Civ, their primary power comes from waning, for which you want to be fighting the whole game (as soon as you can handle it, that is. Don't charge into a AI early on if they have uncounterable units/xp, but after that you want near-constant war.
 
I liked it better when you got bonus XP for killing a hero (my archer only got 1XP for killing a STR 0.2 Rosier the Fallen).
http://tinypic.com/r/29vgco7/5
that is strange because Rosier, in MnAI, gives 32/16 xp (to be compared with the 8/4 of normal units):
so base of 32 xp if you kill him by attacking him
base of 16 xp if you kill him by defending against him.
then this base is somehow modified by your odds (Edit : in fact it is modified by ennemy-str/yourstr ; str counting %modifiers as shown in the "odds window".. then the xp is floored . (in RifE, the XP was multiplied by 10, floored, and divided by 10 .. as the dll allowed for fractional xp.)

However to get 1 xp, you should have been a 99.999%odds, ...
but when you say he had 0.2str... if you had only 5str, I suppose you get these 99.999% odds :D
with str3 archers.. hmmm I should find an "odds calculator".

(edit : XP= base*ennemystr/yourstr ; here : 32*0.2/3 = 2.4 .. however to get only 1, I suppose your archer had a tad bit more of combat % promotion than Rosier : 10% str modifier on top of Rosier's would suffice to get the xp at 1.9.. so at 1..)


to conclude : don't worry, in MnAI heroes are still supposed to give more xp than normal units; that hasn't been changed.
 
I don't know if this has ever been suggested, but I would like a team game option where team mates don't share technology (only makes since with no tech trading as well).
 
I implemented a PythonHelp tag for Spells in my BarbsPlus mod.

I vaguely remember Magister requesting that, but couldn't find it in the feature requests database on sourceforge (I found only that, for which this may be helpful). Are you interested? I have a version for MNAI a few revisions before the current.
 
I implemented a PythonHelp tag for Spells in my BarbsPlus mod.

I vaguely remember Magister requesting that, but couldn't find it in the feature requests database on sourceforge (I found only that, for which this may be helpful). Are you interested? I have a version for MNAI a few revisions before the current.

I am interested. Looks like I have it in as feature request #89
 
I am interested. Looks like I have it in as feature request #89

Oh. Must have overlooked that.

I'll upload a patch at sf.

A quick explanation for everyone interested in using this:
The new tag works much like the other Spell tags regarding python: it must get a python expression, instead of a function. I'll give an example:

CvSpellInterface.py in the component:
Code:
def canCast(argsList):
	pCaster, eSpell = argsList
	spell = gc.getSpellInfo(eSpell)
	return eval(spell.getPyRequirement())

...

def getSpellHelp( argsList ) :
	eSpell, ePlayer, leUnits = argsList
	pSpell = gc.getSpellInfo( eSpell )
	pPlayer = gc.getPlayer( ePlayer )
	lpUnits = []
	for eUnit in leUnits :
		lpUnits.append( pPlayer.getUnit( eUnit ) )
	return eval( pSpell.getPyHelp() )

CIV4SpellInfos.xml
Code:
<SpellInfo>
    <Type>SPELL_EXPLORE_LAIR_AIFON_ISLE</Type>
	...
    <PyRequirement>reqExploreLair(pCaster)</PyRequirement>
    <PyHelp>helpExploreLair(lpUnits, True)</PyHelp>
    ...
</SpellInfo>
<SpellInfo>
    <Type>SPELL_EXPLORE_LAIR_BARROW</Type>
    ...
    <PyRequirement>reqExploreLair(pCaster)</PyRequirement>
    <PyHelp>helpExploreLair(lpUnits, False)</PyHelp>
    ...
</SpellInfo>

canCast() evaluates the expression given in the PyRequirement tag. That expression can use all variables defined in canCast before eval(), namely pCaster, eSpell and spell (although AFAIK only pCaster is used and intended to be used).

PyHelp works the same way, but is has different variables. lpUnits holds all selected units that can cast the spell. The reason why I chose to consider a list of units rather than just one (the first selected), is that when you click on a spell button while having more than one unit selected, all valid units will cast that spell. So getting only information about one could be misleading.

Also note the call of helpExploreLair in <PyHelp>, with the second argument being True or False. It determines whether the lair is epic or not. This way you can use the same function for epic and non-epic lairs instead of having two separate functions.

On a side node, you, tholal, could possibly add extra information in the DLL, since now the list of possibly casting units is available for the respective GameTxtMgr function. I was thinking of something like "number of units able to cast", although that might be tricky, since, after the first one cast a spell like haste, the other casters might be unable to also cast that spell (the hasted promotion is already there), so the number of casters would be effectively 1.
 
Hi Tholal,

Thanks for making this awesome mod! I wanted to add in some extra feedback on your AI changes. I've played a total of 4 MP games so far through to the end, two using your latest MNAI and two using the extramodmod AI (which lags behind yours I believe). We also played one game which ended due to kurio OOS that I have reported elswhere. In all four games I found the AI responded very similarly. The first two were played on noble, and then we upgraded to prince. In the past I've played more vanilla FFH games than I can count, including MP, and typically on Monarch.

Here's a list of positives and negatives I experienced with the AI, I assume in part due to your changes. Although the positive list looks smaller, I can assure you I find your AI a thousand times better than the base AI and generally very enjoyable to play with!

Positives:

- Especially early game, the AI expands, defends and makes very sensible tech choices. It is clearly leagues ahead of the base FFH AI (which often has mono warrior stacks 200 turns into a quick game). The fact that it is even the slightest threat at all to humans on Noble is a testimony to your amazing work.

- The AI uses spells and catapults extremely effectively to siege cities and destroy large stacks. This is a fantastic change. I was especially impressive with a balseraph AI using blinding light to shut down my advance on their capital.

- The AI is more aggressive in situations where it needs to be aggressive, usually attacking to try and gain early advantage.

Negatives:

- The AI is also very aggressive in situations when it should NOT be aggressive. Several AI (Bannor, Sheaim, Calabim) insisted on fighting early wars with warriors when they were in great starts with plenty of room that could facilitate a tech lead and ended up crippling their economies. I understand that these civs are lategame civs due to strategies the AI probably can't comprehend (crusades are certainly out of their league) which certainly doesn't help.

- As a collary to this, the AI doesn't seem to understand the advantage of tech lead. It often sacrifices tech rate to produce extra troops. Even at prince the free upkeep wasn't enough to prevent total implosion of their economy.

- Related to the early aggression, the AI doesn't seem to factor distance very effectively into war declaration. I won a game as Amurites (other human player was Elohim) on the back of a terrible DoW by the Bannor on the Elohim on the other side of the world -- they marched all of their stacks for 20 turns across the whole pangea, at which point I DoW'd them and took their weakly defended cities with my inferior stacks of swordsmen. The thing that bugs me the most is, even if I hadn't backstabbed the Bannor, destroying the Elohim wouldn't of helped them in the slightest. The cities were too far away to be a useful option for expansion, and knocking the Elohim out of the game wouldn't help them win --- if anything it would give advantage to the civs who could then fill the void left by city razing. They really need to consider distance much more highly in their calculations.

- Another follow on, and perhaps the biggest issue I noticed, is that the AI is incapable of getting *out* of stalemate wars. I see all the time, two AI civs will go to war early in the game and then sit around well into the mid/late with big stacks that aren't *quite* capable of cracking the final few cities left standing. They never tech because they are still in a war mentality and their upkeep is through the roof. A human player in this situation would sue for peace and then attempt to tech towards stack busters such as catas, priests of mages to finish off the last remaining cities. The AI never seems to declare peace and so gets into these horrible, drawn out wars that don't benefit them in the slightest. When I go through and vassalise all of these mini-states in the mid game who still haven't progressed past warriors (thus forcing peace), they often begin to expand and tech really effectively and become a contender once again. Similarly, the odd civ that keeps out of these wars is often a serious threat even into the mid game (where the superior stack crushing AI via catas and usually priests comes into play).

- A very minor point, but the AI is very schizophrenic about demands, often cancelling and then immediately asking for open borders back and forth for no good reason. Also, they constantly ask for you to help them in wars that you clearly have no interest in (other side of the world), to the point where the negatives you get from refusing make it hard to maintain good relations. The asking isn't annoying but the negative penalty certainly is.


Thanks again for your awesome mod. At the moment I know you're focussing on OOS so I am not expecting to much discussion on these points -- just wanted to add another voice to the mix. I'm also now using Terhken's mod and planning big MP games which complicates matters. Once the two of you release your new versions I will test them and continue to provide more feedback. I've also done some C++ and xml modding of FFH in the (distant) past so will have a poke around the AI and see what I can contribute if I get the time. In the meantime, cheers!

Blakmane
 
question:
are there any promotion tags equivalent to the
<bAutoAcquire> and the <bMustMaintain> of RifE ?
bautoacquire is self explanatory : if you meet the conditions (level/tech/resource...Etc) you get it, without spending a level.
bMustmaintain mean that when you are in a situation where you could not get the promotion, it is removed... less frequent but not so : city defender is given to archer / when archer upgrade to horsearcher, it would lose the CD promotion.
(is really useful mainly for auto-acquire promotion, otherwise, losing costly promotions would be an issue).


EDIT : I've found bValidate that works quite the same as bMustMaintain...but only vs UNIT-COMBAT, and not with regard to the other prerequists (promotion...etc)
Any idea on how to give a free promotionpick when you pick (or lose) a specific promotion?
 
It would be good if the AI were taught to be especially careful with Basium. In the more recent versions the AI doesn't just send him off wandering alone, but it still puts him in stacks that could fairly easily be destroyed.

It seems like the AI regards Basium as just another unit, as opposed to considering that losing him would cost the Mercurians their civ traits.
 
It would be good if the AI were taught to be especially careful with Basium. In the more recent versions the AI doesn't just send him off wandering alone, but it still puts him in stacks that could fairly easily be destroyed.

It seems like the AI regards Basium as just another unit, as opposed to considering that losing him would cost the Mercurians their civ traits.

on the other hand, a barbarian hero unit - is always careful - loots arond, uses hero promo for gaining experience. Maybe to use Orkhus code, speaking of AI Basium ?
 
Back
Top Bottom