Archers and Crossbowmen performance insanely good in 1.5.5

正在查看此主题的用户

What about balancing the game separetely?

I've suggested this countless times to the devs, Me along with pretty much everyone on this forum has at one point or another suggested this to the devs. Their is an unwillingness to do this from the devs side, so unfortunately we all permanently have to be effected by each game-mode change even though it may not be the best change for our particular modes. Captain mode has been shafted update after update after update, and we finally FINALLY get a good update that is specifically catered to help fix our captain mode balance, and you want TW to reverse those changes? Like come on man, I think we deserve an update meant for us every once in a while, and considering this is the first one in 7-8 months of development I think we shouldn't get absolutely ignored and shafted yet again by having our update reversed.
 
Just tested a Custom Battle, Battanian Heros against Spearmens= total mess, the frontline doesn´t even know when they have to put ther shield in front of them and not up. The second line had put their shields up, that was good. But as the frontline dimished, they also start a shield dance, up and down and up and down.....lol
 
I've suggested this countless times to the devs, Me along with pretty much everyone on this forum has at one point or another suggested this to the devs. Their is an unwillingness to do this from the devs side, so unfortunately we all permanently have to be effected by each game-mode change even though it may not be the best change for our particular modes. Captain mode has been shafted update after update after update, and we finally FINALLY get a good update that is specifically catered to help fix our captain mode balance, and you want TW to reverse those changes? Like come on man, I think we deserve an update meant for us every once in a while, and considering this is the first one in 7-8 months of development I think we shouldn't get absolutely ignored and shafted yet again by having our update reversed.

I do not want to reverse any change, I want that devs (please) address what I find a pretty huge balanced issue in SP (the most popular game mode for Bannerlord). If devs find other ways to fix this mess without affecting Captain Mode, this would be perfect for me. TBH, I also dislike to see archers missing +80% of shoots, and I would prefer something like slower rating of fire, slower damage or maybe better AI for infantry if possible.
 
Just tested a Custom Battle, Battanian Heros against Spearmens= total mess, the frontline doesn´t even know when they have to put ther shield in front of them and not up. The second line had put their shields up, that was good. But as the frontline dimished, they also start a shield dance, up and down and up and down.....lol

Second test, game modded to force infantry to use shieldwall at a greater distance:



It is for sure a much better result but:

- With this change, the cavalry AI gets totally ****ed for some reason, so it does not work for me but devs could make this works.
- Not sure if this also has a negative impact for archers under AI. The thing is that I reported this issue time ago and devs ignored my suggestion to increase the shield wall distance, probably because it breaks a lot of things.
- The archers performance is still a bit too good in my opinion. We are testing here the worse possible scenario for archers vs infantry, and archers are still having a pretty good damn result. Just think about what a decent player could do if spliting their archers in 2 groups.

Anyway, this result is for sure much better than we have in vanilla.
 
Second test, game modded to force infantry to use shieldwall at a greater distance:

This is a good start for a change I think, but also increasing the armor and hitpoints of the Infantry units could also prove to be quite effective at improving their survivability and wouldn't be a change that would negatively impact gameplay, while still retaining the current functionality of the Archer units.

Imagine if the Ai general could split his units into separate groups and then micro-manage them so that they were positioned to counter the attempted flanking of the player who tries to split his archers into two groups. These are the types of changes we want to see, improving aspects of the game rather than relying on nerfs to attempt to fix balance issues.
 
This is a good start for a change I think, but also increasing the armor and hitpoints of the Infantry units could also prove to be quite effective at improving their survivability and wouldn't be a change that would negatively impact gameplay, while still retaining the current functionality of the Archer units.

Yes, correct me if I am wrong, but I think that units in multiplayer just have one global armor value which applies to all, chest, hear, arms, legs, right? I have also suggested to give a relevant buffs for singleplayer armors to deal with this, and this will probably won't affect at all captain mode. Plus it would also help to reduce the tons of complains we have in SP concerning armors do not granting an overall good protection.
 
Good debate.
I think that one way to explore and consider is through animation also. Technically it is possible to shorten or extend the time of aiming by altering some values (parameters-> additional_time_for_perfect_ranged_ready); this is basically what they have done with the new update.
However, in addition to those 20 shots per minute on average of the Palatine Guard, totally unrealistic by the way (it could be done, but with a much much lower precision); instead of nerfing the precision I would nerf the duration of the animation. An animation delay to simulate the effect of taking out an arrow from quiver, put the arrow in the right place (pinch the nock in the string), draw the string, aim and shoot.

I am checking and I cannot find the parameter additional_time_for_perfect_ranged_ready.

Where can I find it checking the DLLs?

Anyway, I do agree with increasing the animation duration would be also great and I think it would not harm much captain mode players (maybe yes, but it is for sure better than making archers miss tons of shoots).
 
I am checking and I cannot find the parameter additional_time_for_perfect_ranged_ready.

Where can I find it checking the DLLs?

Anyway, I do agree with increasing the animation duration would be also great and I think it would not harm much captain mode players (maybe yes, but it is for sure better than making archers miss tons of shoots).
\Modules\Native\ModuleData----> native_parameters.xml---> Search line: <native_parameter id="additional_time_for_perfect_ranged_ready" value="0.3"/>

value= [the higher the number, the longer the time]
:party:
 
i didn't play 1.5.5 but the armour doesn't do what it should. arrows mustn't do that much damage to troops with top tier armour.
you said some archers could loose 24 arrows per minute so i'm ok top tier archers loosing that many but definitely not ok with the damage numbers.
accuracy might need a nerf. they might code the AI so that difficult shots (like headshots or foot shots while shields are raised) take more time to pull off simulating aiming.
 
Yes, correct me if I am wrong, but I think that units in multiplayer just have one global armor value which applies to all, chest, hear, arms, legs, right? I have also suggested to give a relevant buffs for singleplayer armors to deal with this, and this will probably won't affect at all captain mode. Plus it would also help to reduce the tons of complains we have in SP concerning armors do not granting an overall good protection.
There are two different Methods, one for single player and one for Multiplayer. Though changing the armor effectivness or the Multplier in SP wont affect MP and vise versa

ComputeRawDamageOld=Multiplayer
ComputeRawDamageNew=Singleplayer
 
Nerfing Archers will not bring any balance. Please just stop trying inject your way of play to entire game. This is not only your game. Drop all these thoughts and imagine a realistic encounter of best archers vs. good infantry. Do you really expect infantry will come near archers without losing some men, especially when not using shield wall properly?

If you say we need mobile siege units like onagers and ballistas which will make archers and weak infantry useless I understand that and it will be most realistic thing to add.

Also more importantly, if what you want is only "realism" as I said stop trying to inject your way of play with infantry and try these archers against heavy cavalry and show us the result.

Bowmen > Swordsmen and Pikemen
Swordsmen > Pikemen
Pikemen > Horsemen
Horsemen > Bowmen
(IDK where to place Crossbowmen and Skirmishers because they never should be used as sole unit on field)

As you can see above loop is how you balance things without making a specific unit strong against everything else.

Note: I didn't play 1.5.5 but these types of discussions were always here, not started with you nor will not stop with you.
 
Nerfing Archers will not bring any balance. Please just stop trying inject your way of play to entire game. This is not only your game. Drop all these thoughts and imagine a realistic encounter of best archers vs. good infantry. Do you really expect infantry will come near archers without losing some men, especially when not using shield wall properly?

If you say we need mobile siege units like onagers and ballistas which will make archers and weak infantry useless I understand that and it will be most realistic thing to add.

Also more importantly, if what you want is only "realism" as I said stop trying to inject your way of play with infantry and try these archers against heavy cavalry and show us the result.

Bowmen > Swordsmen and Pikemen
Swordsmen > Pikemen
Pikemen > Horsemen
Horsemen > Bowmen
(IDK where to place Crossbowmen and Skirmishers because they never should be used as sole unit on field)

As you can see above loop is how you balance things without making a specific unit strong against everything else.

Note: I didn't play 1.5.5 but these types of discussions were always here, not started with you nor will not stop with you.
If you go full Archery, even the heav cav cant change the outcome.
1. AI Partys engage with their infantry(except khuzaits), beeing flanked by cav/heavy cav => Moving slowly => Easy target
- They dont charge, if they see that you have only archers(at least every custom battle is like this)
- Never met an AI party full of heavy cav, so......

2. Cavs hit rarley atm

3. In dmg per second Cavalry is even worse as a footmen cause they run home after the first charge, to take an apple, and than come back to strike again.... => Archery rotate and shoot
 
I'm a bit baffled. Wasn't it always the case that archers outperform all other units? For me it was a constant experience since release. Even with mods which allegedly make archers worse and armor better, like Realistic Battle Mod, I had op archers all the day. Best experience was with Custom Damage mod but that does not work any longer afaik.

I think the main problem is accuracy, second problem is armor piercing. On real battlefields most projectiles do not hit, in modern wars (there is about a 6000 : 1 shots/hits rate or so), and I presume it was similar in the old days (except the rate was different because of shorter distances and formations and such).

Let's look at the famous English longbow (the weapon which could not conquer Scotland and lost the Hundred Years War, for the people who -wrongly- think weapons win/lose wars ...) and assume the about 7.000 English archers at Agincourt shot 24 to 48 arrows each, that would have been 168.000 to 336.000 arrows shot at the about 7.000 to 8.000 French who took part in the actual combat. As the arrows seemed to have been able to penetrate weaker parts of the armor and a lot were shot at close distances, a bigger part of the French than reported maybe would have died, if the bow fellows had had the Bannerlord accuracy. :smile:

Problem is, if you make bows very less accurate (of course I tested anything to nerf them), archers suck too much in Bannerlord.
 
最后编辑:
There are two different Methods, one for single player and one for Multiplayer. Though changing the armor effectivness or the Multplier in SP wont affect MP and vise versa

ComputeRawDamageOld=Multiplayer
ComputeRawDamageNew=Singleplayer

Thanks!


\Modules\Native\ModuleData----> native_parameters.xml---> Search line: <native_parameter id="additional_time_for_perfect_ranged_ready" value="0.3"/>

value= [the higher the number, the longer the time]
:party:

Thanks! I have not noticed much different after modifying this parameter though :sad:


I'm a bit baffled. Wasn't it always the case that archers outperform all other units? For me it was a constant experience since release. Even with mods which allegedly make archers worse and armor better, like Realistic Battle Mod, I had op archers all the day. Best experience was with Custom Damage mod but that does not work any longer afaik.

I think the main problem is accuracy, second problem is armor piercing. On real battlefields most projectiles do not hit, in modern wars (there is about a 6000 : 1 shots/hits rate or so), and I presume it was similar in the old days (except the rate was different because of shorter distances and formations and such).

Let's look at the famous English longbow (the weapon which could not conquer Scotland and lost the Hundred Years War, for the people who -wrongly- think weapons win/lose wars ...) and assume the about 7.000 English archers at Agincourt shot 24 to 48 arrows each, that would have been 168.000 to 336.000 arrows shot at the about 7.000 to 8.000 French who took part in the actual combat. As the arrows seemed to have been able to penetrate weaker parts of the armor and a lot were shot at close distances, a bigger part of the French than reported maybe would have died, if the bow fellows had had the Bannerlord accuracy. :smile:

Problem is, if you make bows very less accurate (of course I tested anything to nerf them), archers suck too much in Bannerlord.

Yes, for some weird reason the realistic battle mod just makes the thing much worse and archers are able to kill with their eyes heavy shielded infantry units.
 
Problem is, if you make bows very less accurate (of course I tested anything to nerf them), archers suck too much in Bannerlord.

How about you change the accuracy according to the range? Keep the current accuracy for the first 50 meters or so and then depending on the bow start to heavily deviate the accuracy. Crossbows could be changed to allow for a better accuracy but a heavy damage malus as soon as the bolts are out of the designed range. This would enable a volley shot by bows but at a heavy accuracy loss. It would also help to differentiate the bows and crossbows further.

On the other hand this would require a little bit more AI work and in general an overhaul of the auto calculator. Does the autocalc even differentiate between melee and archers?
 
Got one here :
managed_core_parameters.xml
AirFrictionArrow value="0.003"

For testing i changed it to 0.1

The Arrows flew 2 meters :ROFLMAO:
 
Concur:

Missile fire is too fast and too accurate and penetrates armor way too well. All three of these areas needs to be toned down (tuned up in the case of armor effectiveness?)
 
@Dabos37 some Input, but not tested. The underlined ones, can be important for further investigation though

protected void SetAiRelatedProperties(Agent agent, AgentDrivenProperties agentDrivenProperties, WeaponComponentData equippedItem, WeaponComponentData secondaryItem)
{
int meleeSkill = this.GetMeleeSkill(agent, equippedItem, secondaryItem);
SkillObject skill = (equippedItem == null) ? DefaultSkills.Athletics : equippedItem.RelevantSkill;
int effectiveSkill = this.GetEffectiveSkill(agent.Character, agent.Origin, agent.Formation, skill);
float num = this.CalculateAILevel(agent, meleeSkill);
float num2 = this.CalculateAILevel(agent, effectiveSkill);
float num3 = num + agent.Defensiveness;
agentDrivenProperties.AiRangedHorsebackMissileRange = 0.3f + 0.4f * num2;
agentDrivenProperties.AiFacingMissileWatch = -0.96f + num * 0.06f;
agentDrivenProperties.AiFlyingMissileCheckRadius = 8f - 6f * num;
agentDrivenProperties.AiShootFreq = 0.3f + 0.7f * num2;
agentDrivenProperties.AiWaitBeforeShootFactor = (agent._propertyModifiers.resetAiWaitBeforeShootFactor ? 0f : (1f - 0.5f * num2));
bool flag = secondaryItem != null;
agentDrivenProperties.AIBlockOnDecideAbility = MBMath.Lerp(0.25f, 0.99f, MBMath.ClampFloat((float)Math.Pow((double)num, 1.0), 0f, 1f), 1E-05f);
agentDrivenProperties.AIParryOnDecideAbility = MBMath.Lerp(0.01f, 0.95f, MBMath.ClampFloat((float)Math.Pow((double)num, 1.5), 0f, 1f), 1E-05f);
agentDrivenProperties.AiTryChamberAttackOnDecide = (num - 0.15f) * 0.1f;
agentDrivenProperties.AIAttackOnParryChance = 0.3f - 0.1f * agent.Defensiveness;
agentDrivenProperties.AiAttackOnParryTiming = -0.2f + 0.3f * num;
agentDrivenProperties.AIDecideOnAttackChance = 0.15f * agent.Defensiveness;
agentDrivenProperties.AIParryOnAttackAbility = MBMath.ClampFloat((float)Math.Pow((double)num, 3.0), 0f, 1f);
agentDrivenProperties.AiKick = -0.1f + ((num > 0.4f) ? 0.4f : num);
agentDrivenProperties.AiAttackCalculationMaxTimeFactor = num;
agentDrivenProperties.AiDecideOnAttackWhenReceiveHitTiming = -0.25f * (1f - num);
agentDrivenProperties.AiDecideOnAttackContinueAction = -0.5f * (1f - num);
agentDrivenProperties.AiDecideOnAttackingContinue = 0.1f * num;
agentDrivenProperties.AIParryOnAttackingContinueAbility = MBMath.Lerp(0.05f, 0.95f, MBMath.ClampFloat((float)Math.Pow((double)num, 3.0), 0f, 1f), 1E-05f);
agentDrivenProperties.AIDecideOnRealizeEnemyBlockingAttackAbility = 0.5f * MBMath.ClampFloat((float)Math.Pow((double)num, 2.5) - 0.1f, 0f, 1f);
agentDrivenProperties.AIRealizeBlockingFromIncorrectSideAbility = 0.5f * MBMath.ClampFloat((float)Math.Pow((double)num, 2.5) - 0.1f, 0f, 1f);
agentDrivenProperties.AiAttackingShieldDefenseChance = 0.2f + 0.3f * num;
agentDrivenProperties.AiAttackingShieldDefenseTimer = -0.3f + 0.3f * num;
agentDrivenProperties.AiRandomizedDefendDirectionChance = 1f - (float)Math.Log((double)num * 7.0 + 1.0, 2.0) * 0.33333f;
agentDrivenProperties.AISetNoAttackTimerAfterBeingHitAbility = MBMath.ClampFloat((float)Math.Pow((double)num, 2.0), 0.05f, 0.95f);
agentDrivenProperties.AISetNoAttackTimerAfterBeingParriedAbility = MBMath.ClampFloat((float)Math.Pow((double)num, 2.0), 0.05f, 0.95f);
agentDrivenProperties.AISetNoDefendTimerAfterHittingAbility = MBMath.ClampFloat((float)Math.Pow((double)num, 2.0), 0.05f, 0.95f);
agentDrivenProperties.AISetNoDefendTimerAfterParryingAbility = MBMath.ClampFloat((float)Math.Pow((double)num, 2.0), 0.05f, 0.95f);
agentDrivenProperties.AIEstimateStunDurationPrecision = 1f - MBMath.ClampFloat((float)Math.Pow((double)num, 2.0), 0.05f, 0.95f);
agentDrivenProperties.AIHoldingReadyMaxDuration = MBMath.Lerp(0.25f, 0f, Math.Min(1f, num * 1.2f), 1E-05f);
agentDrivenProperties.AIHoldingReadyVariationPercentage = num;
agentDrivenProperties.AiRaiseShieldDelayTimeBase = -0.75f + 0.5f * num;
agentDrivenProperties.AiUseShieldAgainstEnemyMissileProbability = 0.1f + num * 0.6f + num3 * 0.2f;
agentDrivenProperties.AiCheckMovementIntervalFactor = 0.005f * (1.1f - num);
agentDrivenProperties.AiMovemetDelayFactor = 4f / (3f + num2);
agentDrivenProperties.AiParryDecisionChangeValue = 0.05f + 0.7f * num;
agentDrivenProperties.AiDefendWithShieldDecisionChanceValue = Math.Min(1f, 0.2f + 0.5f * num + 0.2f * num3);
agentDrivenProperties.AiMoveEnemySideTimeValue = -2.5f + 0.5f * num;
agentDrivenProperties.AiMinimumDistanceToContinueFactor = 2f + 0.3f * (3f - num);
agentDrivenProperties.AiStandGroundTimerValue = 0.5f * (-1f + num);
agentDrivenProperties.AiStandGroundTimerMoveAlongValue = -1f + 0.5f * num;
agentDrivenProperties.AiHearingDistanceFactor = 1f + num;
agentDrivenProperties.AiChargeHorsebackTargetDistFactor = 1.5f * (3f - num);
agentDrivenProperties.AiWaitBeforeShootFactor = (agent._propertyModifiers.resetAiWaitBeforeShootFactor ? 0f : (1f - 0.5f * num2));
float num4 = 1f - num2;
agentDrivenProperties.AiRangerLeadErrorMin = -num4 * 0.35f;
agentDrivenProperties.AiRangerLeadErrorMax = num4 * 0.2f;
agentDrivenProperties.AiRangerVerticalErrorMultiplier = num4 * 0.1f;
agentDrivenProperties.AiRangerHorizontalErrorMultiplier = num4 * 0.0349065848f;
agentDrivenProperties.AIAttackOnDecideChance = MathF.Clamp(0.23f * this.CalculateAIAttackOnDecideMaxValue() * (3f - agent.Defensiveness), 0.05f, 1f);
agentDrivenProperties.SetStat(DrivenProperty.UseRealisticBlocking, (agent.Controller != Agent.ControllerType.Player) ? 1f : 0f);
}

Edit: Problem....this Method will also be applied to the Multiplayer...
 
@Dabos37 some Input, but not tested. The underlined ones, can be important for further investigation though

protected void SetAiRelatedProperties(Agent agent, AgentDrivenProperties agentDrivenProperties, WeaponComponentData equippedItem, WeaponComponentData secondaryItem)
{
int meleeSkill = this.GetMeleeSkill(agent, equippedItem, secondaryItem);
SkillObject skill = (equippedItem == null) ? DefaultSkills.Athletics : equippedItem.RelevantSkill;
int effectiveSkill = this.GetEffectiveSkill(agent.Character, agent.Origin, agent.Formation, skill);
float num = this.CalculateAILevel(agent, meleeSkill);
float num2 = this.CalculateAILevel(agent, effectiveSkill);
float num3 = num + agent.Defensiveness;
agentDrivenProperties.AiRangedHorsebackMissileRange = 0.3f + 0.4f * num2;
agentDrivenProperties.AiFacingMissileWatch = -0.96f + num * 0.06f;
agentDrivenProperties.AiFlyingMissileCheckRadius = 8f - 6f * num;
agentDrivenProperties.AiShootFreq = 0.3f + 0.7f * num2;
agentDrivenProperties.AiWaitBeforeShootFactor = (agent._propertyModifiers.resetAiWaitBeforeShootFactor ? 0f : (1f - 0.5f * num2));
bool flag = secondaryItem != null;
agentDrivenProperties.AIBlockOnDecideAbility = MBMath.Lerp(0.25f, 0.99f, MBMath.ClampFloat((float)Math.Pow((double)num, 1.0), 0f, 1f), 1E-05f);
agentDrivenProperties.AIParryOnDecideAbility = MBMath.Lerp(0.01f, 0.95f, MBMath.ClampFloat((float)Math.Pow((double)num, 1.5), 0f, 1f), 1E-05f);
agentDrivenProperties.AiTryChamberAttackOnDecide = (num - 0.15f) * 0.1f;
agentDrivenProperties.AIAttackOnParryChance = 0.3f - 0.1f * agent.Defensiveness;
agentDrivenProperties.AiAttackOnParryTiming = -0.2f + 0.3f * num;
agentDrivenProperties.AIDecideOnAttackChance = 0.15f * agent.Defensiveness;
agentDrivenProperties.AIParryOnAttackAbility = MBMath.ClampFloat((float)Math.Pow((double)num, 3.0), 0f, 1f);
agentDrivenProperties.AiKick = -0.1f + ((num > 0.4f) ? 0.4f : num);
agentDrivenProperties.AiAttackCalculationMaxTimeFactor = num;
agentDrivenProperties.AiDecideOnAttackWhenReceiveHitTiming = -0.25f * (1f - num);
agentDrivenProperties.AiDecideOnAttackContinueAction = -0.5f * (1f - num);
agentDrivenProperties.AiDecideOnAttackingContinue = 0.1f * num;
agentDrivenProperties.AIParryOnAttackingContinueAbility = MBMath.Lerp(0.05f, 0.95f, MBMath.ClampFloat((float)Math.Pow((double)num, 3.0), 0f, 1f), 1E-05f);
agentDrivenProperties.AIDecideOnRealizeEnemyBlockingAttackAbility = 0.5f * MBMath.ClampFloat((float)Math.Pow((double)num, 2.5) - 0.1f, 0f, 1f);
agentDrivenProperties.AIRealizeBlockingFromIncorrectSideAbility = 0.5f * MBMath.ClampFloat((float)Math.Pow((double)num, 2.5) - 0.1f, 0f, 1f);
agentDrivenProperties.AiAttackingShieldDefenseChance = 0.2f + 0.3f * num;
agentDrivenProperties.AiAttackingShieldDefenseTimer = -0.3f + 0.3f * num;
agentDrivenProperties.AiRandomizedDefendDirectionChance = 1f - (float)Math.Log((double)num * 7.0 + 1.0, 2.0) * 0.33333f;
agentDrivenProperties.AISetNoAttackTimerAfterBeingHitAbility = MBMath.ClampFloat((float)Math.Pow((double)num, 2.0), 0.05f, 0.95f);
agentDrivenProperties.AISetNoAttackTimerAfterBeingParriedAbility = MBMath.ClampFloat((float)Math.Pow((double)num, 2.0), 0.05f, 0.95f);
agentDrivenProperties.AISetNoDefendTimerAfterHittingAbility = MBMath.ClampFloat((float)Math.Pow((double)num, 2.0), 0.05f, 0.95f);
agentDrivenProperties.AISetNoDefendTimerAfterParryingAbility = MBMath.ClampFloat((float)Math.Pow((double)num, 2.0), 0.05f, 0.95f);
agentDrivenProperties.AIEstimateStunDurationPrecision = 1f - MBMath.ClampFloat((float)Math.Pow((double)num, 2.0), 0.05f, 0.95f);
agentDrivenProperties.AIHoldingReadyMaxDuration = MBMath.Lerp(0.25f, 0f, Math.Min(1f, num * 1.2f), 1E-05f);
agentDrivenProperties.AIHoldingReadyVariationPercentage = num;
agentDrivenProperties.AiRaiseShieldDelayTimeBase = -0.75f + 0.5f * num;
agentDrivenProperties.AiUseShieldAgainstEnemyMissileProbability = 0.1f + num * 0.6f + num3 * 0.2f;
agentDrivenProperties.AiCheckMovementIntervalFactor = 0.005f * (1.1f - num);
agentDrivenProperties.AiMovemetDelayFactor = 4f / (3f + num2);
agentDrivenProperties.AiParryDecisionChangeValue = 0.05f + 0.7f * num;
agentDrivenProperties.AiDefendWithShieldDecisionChanceValue = Math.Min(1f, 0.2f + 0.5f * num + 0.2f * num3);
agentDrivenProperties.AiMoveEnemySideTimeValue = -2.5f + 0.5f * num;
agentDrivenProperties.AiMinimumDistanceToContinueFactor = 2f + 0.3f * (3f - num);
agentDrivenProperties.AiStandGroundTimerValue = 0.5f * (-1f + num);
agentDrivenProperties.AiStandGroundTimerMoveAlongValue = -1f + 0.5f * num;
agentDrivenProperties.AiHearingDistanceFactor = 1f + num;
agentDrivenProperties.AiChargeHorsebackTargetDistFactor = 1.5f * (3f - num);
agentDrivenProperties.AiWaitBeforeShootFactor = (agent._propertyModifiers.resetAiWaitBeforeShootFactor ? 0f : (1f - 0.5f * num2));
float num4 = 1f - num2;
agentDrivenProperties.AiRangerLeadErrorMin = -num4 * 0.35f;
agentDrivenProperties.AiRangerLeadErrorMax = num4 * 0.2f;
agentDrivenProperties.AiRangerVerticalErrorMultiplier = num4 * 0.1f;
agentDrivenProperties.AiRangerHorizontalErrorMultiplier = num4 * 0.0349065848f;
agentDrivenProperties.AIAttackOnDecideChance = MathF.Clamp(0.23f * this.CalculateAIAttackOnDecideMaxValue() * (3f - agent.Defensiveness), 0.05f, 1f);
agentDrivenProperties.SetStat(DrivenProperty.UseRealisticBlocking, (agent.Controller != Agent.ControllerType.Player) ? 1f : 0f);
}

Edit: Problem....this Method will also be applied to the Multiplayer...
This is why many games either have great MP and terrible solo or great solo and terrible MP: when you concentrate on both, they can often both be lackluster.

Im not saying that’s the way it should be or has to be, just that this is a consistent result and why many games concentrate on one and staple on the other
 
后退
顶部 底部