Mercenaries Thread

BTW, this suggestion is a bit to late for inclusion in the main version.

Development still continues
Even if they won't be included in a later version of RFCE 1.0 - which is still a possibility - good ideas are always welcomed for RFCE II
 
I'm redoing some parts of the mercenary system. I want to make it so that more mercs are aviable and that they aren't aviable just a few turns after their "spawn date".

I first want to update the UM, because they are more specific. The vanilla mercs will get a slightly different approach because they are supposed to be more random, and the chance you can hire a UM should be bigger.

@ Absinthered
This is what I was thinking of:
Spoiler :
For the UM
A single mercenary is only aviable for 10 turns. Every turn there is a 5/10/15/20 % chance that it becomes aviable. That doesn't sound much, but after 10 turns, the chances they approach within those turns are 40/65/80/89% respectivily.

(IIRC, you said some time ago you're a mathematician, so you will probably know how it works)
After the 10 turns, you can't hire this mercenary anymore. But a replacement will be aviable for 10 turns. And so on until the end date of the mercenaries. (look at the example)

This way, more mercenaries are aviable and more equally spread within the time it's aviable.


Right now, the chance you can hire a merc is way to big. Most mercs are aviable for 100+ turns. There is a 96% chance you can hire them within the first 5 turns it becomes aviable.


Ofcourse can the chance a merc will appear be changed and the amount of turns a single merc is aviable. If neccessary, more mercs can be aviable for the same 10 turns.


For the generic mercs:
They will get a slightly different approach, because they should be more random. And the chance they appear shouldn't be as high as UM.

I hope I was clear enough for you to understand.

Example:
Code:
                [xml.iSwissGun, "TXT_KEY_MERC_SWISS", 375, 385, xml.lRegionSwiss, [], 10 ],
                [xml.iSwissGun, "TXT_KEY_MERC_SWISS", 385, 395, xml.lRegionSwiss, [], 10 ],
                [xml.iSwissGun, "TXT_KEY_MERC_SWISS", 395, 405, xml.lRegionSwiss, [], 10 ],
                [xml.iSwissGun, "TXT_KEY_MERC_SWISS", 405, 415, xml.lRegionSwiss, [], 10 ],
                [xml.iSwissGun, "TXT_KEY_MERC_SWISS", 415, 425, xml.lRegionSwiss, [], 10 ],
                [xml.iSwissGun, "TXT_KEY_MERC_SWISS", 425, 435, xml.lRegionSwiss, [], 10 ],
                [xml.iSwissGun, "TXT_KEY_MERC_SWISS", 435, 445, xml.lRegionSwiss, [], 10 ],
                [xml.iSwissGun, "TXT_KEY_MERC_SWISS", 445, 455, xml.lRegionSwiss, [], 10 ],
                [xml.iSwissGun, "TXT_KEY_MERC_SWISS", 455, 465, xml.lRegionSwiss, [], 10 ],
                [xml.iSwissGun, "TXT_KEY_MERC_SWISS", 465, 475, xml.lRegionSwiss, [], 10 ],
                [xml.iSwissGun, "TXT_KEY_MERC_SWISS", 475, 485, xml.lRegionSwiss, [], 10 ],
                [xml.iSwissGun, "TXT_KEY_MERC_SWISS", 485, 500, xml.lRegionSwiss, [], 10 ],
 
About the mercenaries are you planning on making possible to hire mercs outside their historical province? The byzantines hired norsemen because they came to their territory, and Kievan did that too (Harald Hardrada story shows this), and many other nations did that as well. Mercs moved from place to place to get hired. Maybe some decreasing chance of getting UMs by distance from province (base value for province, smaller value for border provinces, even smaller for more distant ones up to a limit).

Maybe a temporary boost for mercs showing up on your advisor after you hired a merc? indicating to the mercs that "this nation likes mercs, so let's get there". A boost like the swing one in Stability, after a few turns it disappears, but it could get you a small increase on chances for few turns.
 
About the mercenaries are you planning on making possible to hire mercs outside their historical province? The byzantines hired norsemen because they came to their territory, and Kievan did that too (Harald Hardrada story shows this), and many other nations did that as well. Mercs moved from place to place to get hired. Maybe some decreasing chance of getting UMs by distance from province (base value for province, smaller value for border provinces, even smaller for more distant ones up to a limit).

Maybe a temporary boost for mercs showing up on your advisor after you hired a merc? indicating to the mercs that "this nation likes mercs, so let's get there". A boost like the swing one in Stability, after a few turns it disappears, but it could get you a small increase on chances for few turns.

Some of them will. For instance, the Varangian Guards are aviable in Constantinople and the Waardgelders are aviable in the Netherlands. But most UM will be aviable in the area the came from.
 
@merijn:
Yeah, I'm also not statisfied with every aspect of the merc system, and also planned to update parts of it
From a previous post here:
2; We set an interval for the mercenaries in the timeline. Say they are available in a region from the 100th to the 250th turn. Also, their first appearance is semi-randomized. These are very cool :goodjob:
The issue is that ATM they remain in the mercenary pool for too long time. I may be wrong but it seems they are there until someone hires them.
I suggest to change this, so they are only available in that province for 3-6 turns (could be random too). After that they "move" to another province.
With the previous changes this would spice things up: You have a mercenary in one province in the region for those 3-6 turns, if it remain unhired, it will appear in another province from the same region a few turns later. The whole mercenary system would get much more dynamic.
If the merc is hired in a province, then there will be a cooldown time, after that the whole process can start again.

So, just to sum it up (I may not have been perfectly clear now that I read back the last few sentences :crazyeye:):
Mercenary appears in a random province (and only in that one) from the provinces we set to it in the mercenaries.py. It will be there for a random time, somewhere between 3-6 turns. If it's not hired there, it will move after a random 1-3 turns of cooldown to another province (again, random from those provinces or regions we set to the mercenary), again for a random turns between 3-6 turns. And this is continued until the mercenary is hired, or the time interval for the mercenary is valid.
If it's hired the only difference is that we should have a longer cooldown: say 5-8 turns
After that the whole procedure should be started from the very beginning (with the initial spawn randomness of the mercenary)
 
Will that update be before or after the next release? If it is after the next release, I can (temporary) change it to what I suggested. It might not be the final version, but it's a lot better than it is now.
 
Will that update be before or after the next release? If it is after the next release, I can (temporary) change it to what I suggested. It might not be the final version, but it's a lot better than it is now.

Sounds great, improve everything you can :)
Those are long-term plans, definitely won't be in 1.1.
I have a long todo list, and not as much time to mod as I would love to
 
Merijn, the mercs look good :goodjob:
But you made a small mistake with them:
Right now there are a lot of python errors, because you didn't increase the size of the mercenary pool (in the StoredData.py) when you added all those new merc spawn opportunities
Next time you add new lines to the mercs.py, pls keep in mind that there shouldn't be more than the actual size of the pool
 
I had some ideas for some changes in the merc system. Right now, there is a chance that a certain unit will appear in a certain time. What type of unit it will be is determined. What I would like is that the type is more random.

Example of the current system:
Code:
lMercList = [   [xml.iAxeman, "TXT_KEY_MERC_SERBIAN", 60, 108, xml.lRegionBalkans, [], 20 ],
                [xml.iArcher, "TXT_KEY_MERC_SERBIAN", 60, 108, xml.lRegionBalkans, [], 20 ],
                [xml.iHorseArcher, "TXT_KEY_MERC_KHAZAR", 25, 90, xml.lRegionBalkans + [xml.iP_Constantinople], [], 20 ],
                [xml.iHorseArcher, "TXT_KEY_MERC_KHAZAR", 25, 108, xml.lRegionBalkans + [xml.iP_Constantinople], [], 20 ],
                [xml.iHorseArcher, "TXT_KEY_MERC_AVAR", 25, 75, xml.lRegionBalkans + xml.lRegionAustria + xml.lRegionHungary + [xml.iP_Constantinople], [], 20 ],
                [xml.iHorseArcher, "TXT_KEY_MERC_AVAR", 25, 75, xml.lRegionBalkans + xml.lRegionAustria + xml.lRegionHungary + [xml.iP_Constantinople], [], 20 ],
 etc.

Let's take the first one of the list. If that unit comes available, it will be an Axeman, no matter what. I would like some randomness in that.

So my idea is to create some groups of mercs. Each group consist of the units of a certain era. E.g. Group 1 would be early available units. (Spearman, Axeman, Archer etc.) The other groups would consist of the units of it's own era. When a merc comes available, it will be a random unit of it's group, and not a pre-determined unit like it is now.
(If neccessary, the groups can be divided into subgroups, like foot soldiers or mounted units.)

The general lines of code would be something like this:
Code:
(group 1)
getSorenRandomNumber(X)
if SorenRandomNumber = 1:
[COLOR="red"]iEarlymercunit[/COLOR] = xml.spearman
if SorenRandomNumber = 2:
[COLOR="red"]iEarlymercunit[/COLOR] = xml.archer
etc.

(Same for the other groups)


   [iEarlymercunit, "TXT_KEY_MERC_SERBIAN", 60, 108, xml.lRegionBalkans, [], 20 ],
                [[COLOR="Red"]iEarlymercunit[/COLOR], "TXT_KEY_MERC_SERBIAN", 60, 108, xml.lRegionBalkans, [], 20 ],
                [[COLOR="red"]iEarlymercunit[/COLOR], "TXT_KEY_MERC_KHAZAR", 25, 90, xml.lRegionBalkans + [xml.iP_Constantinople], [], 20 ],
                [[COLOR="red"]iEarlymercunit[/COLOR], "TXT_KEY_MERC_KHAZAR", 25, 108, xml.lRegionBalkans + [xml.iP_Constantinople], [], 20 ],

This, along with the new mercregions I talked about earlier in another thread (to bring some competion between civs) would improve the merc system a lot. (At least in my opinion)

So, what do you think?
 
Some kind of randomness would be nice, I agree
Unfortunately it kinda messes up parts of the current system
(the way a given merc "moves" to a different province if it's not hired after a couple turns)

I'm more and more inclined to revise the whole system...
 
:agree:
I was thinking the same
We can add Fusilier (Swedish Musketeer), Elmeti (Italian Knight), Fluyt (Dutch Galleon), Uhlan (Light German cavalry), Czapka Uhlan (Polish version of Uhlan)
Maybe Cassador (Portuguese Musketman/Rifleman), Genitor (Spanish Light Cavalry) as well

I'll add these this weekend.

(And also :bump:)
 
Thanks! :goodjob:
I'm not sure if every of those fit the mod, but will check the possible timeframe for those
 
Top Bottom