What is the formula for damage calculation? Download link

Users who are viewing this thread

raz8020

Sergeant
DAMAGE CALCULATOR DOWNLOAD LINK:  https://www.dropbox.com/s/doya1bp45z887r1/RAZ%27S%20WARBAND%20DAMAGE%20CALCULATOR.xlsx?dl=0

I'm trying to modify the damage system to something more realistic (similar to Brytenwalda and 1257 AD):
-plate armor immune to sword slash damage (or something minimal considering the concussion damage from a mounted charged strike), and immune to missiles;
-increase axe and pole slash weapons damage to compensate for armor soak and reduction;
-increase damage for weapons specialized in anti-armor combat;
-increase armor value for plate, and reduce availability (making ranged combat still effective against most units)
-apply specific penalties to skills if wearing plate armor, shields and helmets with restricted view.

How and in what order the next modifiers are applied to the final (minimal and maximal possible) damage calculation?
For melee:
-swing type, damage roll (min/max) modifier, chambering the attack, mounted penalty for 2h,1/2h and pole weapons, shield penalty for 2h,1/2h and pole weapons, power strike bonus, weapon proficiency bonus, strength bonus, weapon difficulty, speed bonus, armor value, armor soak, armor reduction, iron flesh soak.
For ranged:
-damage roll (min/max), power draw/throw,weapon proficiency bonus, strength bonus, weapon difficulty, missile speed, speed bonus, head shot, armor soak, armor reduction.
 
http://forums.taleworlds.com/index.php?topic=137021.0

Explains what you're looking for. Go into module.ini to set the values described.

http://forums.taleworlds.com/?topic=105928.0

Allows you change the values on weapons, characters, armor, etc.

Edit: So it's early in the morning and I'm tired and I re-read what you posted right after replying. Now I'm unsure if I posted what you wanted. If I did, awesome. If I didn't, my apologies.
 
Immunity to missiles for plate armor isn't all realistic if I recall correctly. Knights got decimated by crossbows to the point that plated knight vanished as a result.

(Unless I mix up my less than impressive history knowledge)
 
I'd say its a function of missile weight, cross section size and most especially missile velocity    energy = mass * velocity**2

  as for re-writing perisno damage, my advice is start with some OSP mod you actually have source code to.
  Perisno is not open source; for that matter sub mods such as my Phosphor can't be open source (OSP) either until/unless they scrub all the perisno code/scenes/artwork, in which case they would be pretty small again.  Rigale for example IS OSP, as is Diplomacy, as are a number of different mods.

  Tinker one of those and afterwards you can see how your system is coming along.  Editing the file  module.ini
is one of the few things you can do to instantly change your private copy of Perisno (or any other mod)  to handle some aspects of armor your way, especially by adjusting values for cut or pierce  armor_soak_factor  and armor_reduction_factor

  The damage engine/battle code that you want to re-do your way would be found in mission_triggers.py for any mod you do own the source code to.  You could for example download the module system for native and tinker that in order to get some idea of what you are doing.  After some weeks of staring at it and making different edits, you'll start breaking less than you fix, and you'll be a able to declare yourself a "modder/junior dev", although some have used those titles with even less qualification.

  - GS
 
Glutes said:
http://forums.taleworlds.com/index.php?topic=137021.0

Explains what you're looking for. Go into module.ini to set the values described.

http://forums.taleworlds.com/?topic=105928.0

Allows you change the values on weapons, characters, armor, etc.

Edit: So it's early in the morning and I'm tired and I re-read what you posted right after replying. Now I'm unsure if I posted what you wanted. If I did, awesome. If I didn't, my apologies.

Thanks for the reply! I've already used the formulas on that post and it gave 20% less damage (tested in a duel against a companion using a quick swing), and I presumed that some modifiers were changed in Perisno, or something is missing from the formula.
 
  the 20% difference comes from:

Perisno adds dodge algorithm based on target athletics score
  ironflesh added soak

  You can examine the code used for these in Rigale v12.1; I simply lifted it from mission_triggers.py and merged to mission_triggers.py in Perisno .74 series, which remains in .75  Most troops have athletics > 0 so most NPCs will be more
survivable than you expected.  The complaint was Perisno was too easy -- and this a modest answer.  A better test will come next month with further encumbrance adjusts but thats a seperate issue.

  also tweak    horse_charge_damage_multiplier  in module.ini
  mounts move faster than in native so thats a different issue
  remember missile velocity is likely higher for crossbows than native as well. 
  All of these will shift output damage.

  - GS
 
Naasir said:
Immunity to missiles for plate armor isn't all realistic if I recall correctly. Knights got decimated by crossbows to the point that plated knight vanished as a result.

(Unless I mix up my less than impressive history knowledge)

In the 15th century there where many factors that influenced the decrease of full plated Knights, beside the organized infantry and gunpowder, the improved crossbow helped because it could penetrate most plate armors (with some rare exceptions) at a close distance, enough to cause injuries or under best circumstances kill.
In Perisno I would assume that the average crossbow should be compared with the english longbow in terms of penetration (not the most efficient against plate armor), and the best armors should be compared to the Milanese ones!
 
gsanders said:
  the 20% difference comes from:

Perisno adds dodge algorithm based on target athletics score
  ironflesh added soak

  You can examine the code used for these in Rigale v12.1; I simply lifted it from mission_triggers.py and merged to mission_triggers.py in Perisno .74 series, which remains in .75  Most troops have athletics > 0 so most NPCs will be more
survivable than you expected.  The complaint was Perisno was too easy -- and this a modest answer.  A better test will come next month with further encumbrance adjusts but thats a seperate issue.

  also tweak    horse_charge_damage_multiplier  in module.ini
  mounts move faster than in native so thats a different issue
  remember missile velocity is likely higher for crossbows than native as well. 
  All of these will shift output damage.

  - GS
Thank you!
I didn't thought that the 20% diff comes from dodge, since I presumed that a dodged attack =0 damage and ironflesh soak wasn't reported in notes screen in that duel. I will use your advice and see if I can understand something from the mission_triggers.py in Rigale v12.1, in the meantime I will manage with editing modules.ini and item damage in morgh's editor.
 
raz8020 said:
Naasir said:
Immunity to missiles for plate armor isn't all realistic if I recall correctly. Knights got decimated by crossbows to the point that plated knight vanished as a result.

(Unless I mix up my less than impressive history knowledge)

In the 15th century there where many factors that influenced the decrease of full plated Knights, beside the organized infantry and gunpowder, the improved crossbow helped because it could penetrate most plate armors (with some rare exceptions) at a close distance, enough to cause injuries or under best circumstances kill.
In Perisno I would assume that the average crossbow should be compared with the english longbow in terms of penetration (not the most efficient against plate armor), and the best armors should be compared to the Milanese ones!
I'm no expert either, but from what I've seen discussed elsewhere the myth of plate armor being invulnerable to bows comes from the crusades against saracens. Their relatively weak bows did not hinder heavyily armored knights to any noticeable degree. Longbows and crossbows should keep being a pain.
 
Latest 15-16th century finest plates: German Gothic and Italian Milanese knight's plate...were completely invulnerable to English Longbows and even the early firearms. Heck, the knight's plate even prevented penetration by a couching lance, although the bump certainly hurt.

I doubt anyone will want to see that in Perisno.


 
Tannu said:
raz8020 said:
Naasir said:
Immunity to missiles for plate armor isn't all realistic if I recall correctly. Knights got decimated by crossbows to the point that plated knight vanished as a result.

(Unless I mix up my less than impressive history knowledge)

In the 15th century there where many factors that influenced the decrease of full plated Knights, beside the organized infantry and gunpowder, the improved crossbow helped because it could penetrate most plate armors (with some rare exceptions) at a close distance, enough to cause injuries or under best circumstances kill.
In Perisno I would assume that the average crossbow should be compared with the english longbow in terms of penetration (not the most efficient against plate armor), and the best armors should be compared to the Milanese ones!
I'm no expert either, but from what I've seen discussed elsewhere the myth of plate armor being invulnerable to bows comes from the crusades against saracens. Their relatively weak bows did not hinder heavyily armored knights to any noticeable degree. Longbows and crossbows should keep being a pain.

https://www.youtube.com/watch?v=D3997HZuWjk
Note: That armor is not the best representation of the late 15 century armor, because medieval armor had differences in thickness to vital and non vital areas!

For me one of the most enjoying features of this game is archery, and it's fun maxing the power draw and proficiency (cheating) and be able to take almost any unit in the game regardless of armor, only with arrows, it's almost as having an assault rifle, I can kill a red immortal with 1 arrow.
While most archer based characters are not going to have full power draw and proficiency maxed (unless they spend a considerable amount of their time increasing them) they can be near the top, and it's safe to say that archery as well as sword cutting is OP. That might be the reason why Redwood is OP (don't know if they are more balanced in .75).
 
gsanders said:
Tell it to the French at Agincourt how little bows hinder them

That is my point also, it hindered them by taking out their horses, their less armored supporting units, and injured some of them in non vital areas (joints and where armor is less thicker) thus preventing them from using their advantages in melee combat. The knights were not killed by arrows!
https://www.youtube.com/watch?v=q1WZLVZYBwQ
 
zykox said:
Latest 15-16th century finest plates: German Gothic and Italian Milanese knight's plate...were completely invulnerable to English Longbows and even the early firearms. Heck, the knight's plate even prevented penetration by a couching lance, although the bump certainly hurt.

I doubt anyone will want to see that in Perisno.

When I played 1257 AD and Brytenwalda my thoughts were: great mod, good features, almost realistic simulation (considering the limited AI of Warband and engine limits), well balanced, but something is missing....where is all the cool stuff that keeps you entertained in the long run? The diversity of items, units, lore is missing!  It's supposed to be like that, it's not a fantasy mod!
When I'm playing Perisno (still my favorite mod) I get all the features that I need from a fantasy mod (fantastic work from the team) plus the great potential of fantasy mods (not limited to the necessity of being historically accurate). In my opinion a sub mod of Perisno, or alternate mod +some features from 1257 AD and Brytenwalda would be an improvement!


 
raz8020 said:
...
That is my point also, it hindered them by taking out their horses, their less armored supporting units, and injured some of them in non vital areas (joints and where armor is less thicker) thus preventing them from using their advantages in melee combat. The knights were not killed by arrows!
https://www.youtube.com/watch?v=q1WZLVZYBwQ

protecting bleeding eyes with suitable sunglasses  :smile:
  fair enough.  As I see it the issue is in 3 parts:

1)  encumbrance is not part of the equation for overall damage.  There is not much penalty to wearing milanese plate, even if it is weight = 35  and not  weight = 27.  For that matter, highlander armor has mid 40s defense, but I am not able to even begin to understand why so high.  It seems to be padded cloth or padded leather, and should weigh and defend accordingly, perhaps with some dodge bonus for light encumbrance -- which should be extended to other light armor.  Heavy armor is fine carried on a horse, but when the knight is un-horsed?? How does weight change on-foot movement speed? If lightly armored Greeks dropped their shields if running from battle, for that small bonus in speed, what to say for heavy plate?

2) defenses at the moment aren't subject to a "class" of armor -- one presumes 4 pairs of silk shirts defend about the same as mail+ tabard at the moment, despite the absurdity.  And yet different armor types do have different trade offs.  Lamellar behaves differently than studded leather; but current armor protection ratings make them seem similar.  I can accept the critcism that heavy plate should shrug off cutting and arrows, but if you change the module.ini settings, you have padded leather do the same...
I think what you REALLY wanted was to be able to tune the behavoir by class of armor, which as Perisno has it now is now organized into different armor categories at all.  It is organized mainly by which OSP they came from, or which resource file loaded to get them, and not by any other sorting means, which spreads them literally all over the items file.  I am in fact trying to resolve this on Phosphor (my 'Perisno test'), but am looking at (too many) *thousands* of line items to move, adjust, remove, or categorize.

    It's something that goes deep in the items section - for example, examine mounts.  We have thin skinned riding horses that have armor 12, and northern horses with armor 40.  They are similar enough drawings.  I understand some horses are barded, and some have thicker hair.  A rhino or elephant has thicker skin.  A tiger has great agility and should dodge.  Some mounts would change parameters if barded; one wonders if leather or chain barding could be fashioned and then dynamically added to a companion's mount... what penalties should that impose?  What benefits??

  3)  Weapons overpowered in order to compensate for OP armor and lack of nuances with encumbrance, fatigue, movement speed, and so on.  We have the dominance of blunt weapons due to best penetration of heavy armor, fine.  We have OP archery, and under powered crossbows, thanks to Power Draw versus some sort of (missing) equivalent boost for crossbows.  Crossbows should rule in seiges -- and sometimes they do, but I seldom see archers just nick someone climbing the ladder ever so slowly in heavy plate.  Fair enough.  I sped the velocity of some bows by giving them an almost spring steel torsion, and more so the crossbows, so neither is close to medieval anymore.  But mostly this just meant having to retrain the drop so that some bows fire flatter trajectory than native; if I lowered the speed they would be less effective versus armor and be more useless at range.  Maybe thats the first tweak I'd recommend for your morgh's re-tweaking of items looking at    "item_kinds.txt"
  and even with a simple text editor like notepad  the 5th value from the end was velocity of the projectile for ranged weapons that use ammunition.  So that itm_practice_bow  has projectile_velocity 62, and itm_practice_crossbow has projectile_velocity 75.
Drop those by 10-15 and see if you aren't thrilled with the results in worse penetration, harder and more frustrating to hit during seiges, and generally lower damage delivered.
  It's what you were looking for I think...

  - GS

 
gsanders said:
raz8020 said:
...
That is my point also, it hindered them by taking out their horses, their less armored supporting units, and injured some of them in non vital areas (joints and where armor is less thicker) thus preventing them from using their advantages in melee combat. The knights were not killed by arrows!
https://www.youtube.com/watch?v=q1WZLVZYBwQ

protecting bleeding eyes with suitable sunglasses  :smile:
  fair enough.  As I see it the issue is in 3 parts:

1)  encumbrance is not part of the equation for overall damage.  There is not much penalty to wearing milanese plate, even if it is weight = 35  and not  weight = 27.  For that matter, highlander armor has mid 40s defense, but I am not able to even begin to understand why so high.  It seems to be padded cloth or padded leather, and should weigh and defend accordingly, perhaps with some dodge bonus for light encumbrance -- which should be extended to other light armor.  Heavy armor is fine carried on a horse, but when the knight is un-horsed?? How does weight change on-foot movement speed? If lightly armored Greeks dropped their shields if running from battle, for that small bonus in speed, what to say for heavy plate?

2) defenses at the moment aren't subject to a "class" of armor -- one presumes 4 pairs of silk shirts defend about the same as mail+ tabard at the moment, despite the absurdity.  And yet different armor types do have different trade offs.  Lamellar behaves differently than studded leather; but current armor protection ratings make them seem similar.  I can accept the critcism that heavy plate should shrug off cutting and arrows, but if you change the module.ini settings, you have padded leather do the same...
I think what you REALLY wanted was to be able to tune the behavoir by class of armor, which as Perisno has it now is now organized into different armor categories at all.  It is organized mainly by which OSP they came from, or which resource file loaded to get them, and not by any other sorting means, which spreads them literally all over the items file.  I am in fact trying to resolve this on Phosphor (my 'Perisno test'), but am looking at (too many) *thousands* of line items to move, adjust, remove, or categorize.

    It's something that goes deep in the items section - for example, examine mounts.  We have thin skinned riding horses that have armor 12, and northern horses with armor 40.  They are similar enough drawings.  I understand some horses are barded, and some have thicker hair.  A rhino or elephant has thicker skin.  A tiger has great agility and should dodge.  Some mounts would change parameters if barded; one wonders if leather or chain barding could be fashioned and then dynamically added to a companion's mount... what penalties should that impose?  What benefits??

  3)  Weapons overpowered in order to compensate for OP armor and lack of nuances with encumbrance, fatigue, movement speed, and so on.  We have the dominance of blunt weapons due to best penetration of heavy armor, fine.  We have OP archery, and under powered crossbows, thanks to Power Draw versus some sort of (missing) equivalent boost for crossbows.  Crossbows should rule in seiges -- and sometimes they do, but I seldom see archers just nick someone climbing the ladder ever so slowly in heavy plate.  Fair enough.  I sped the velocity of some bows by giving them an almost spring steel torsion, and more so the crossbows, so neither is close to medieval anymore.  But mostly this just meant having to retrain the drop so that some bows fire flatter trajectory than native; if I lowered the speed they would be less effective versus armor and be more useless at range.  Maybe thats the first tweak I'd recommend for your morgh's re-tweaking of items looking at    "item_kinds.txt"
  and even with a simple text editor like notepad  the 5th value from the end was velocity of the projectile for ranged weapons that use ammunition.  So that itm_practice_bow  has projectile_velocity 62, and itm_practice_crossbow has projectile_velocity 75.
Drop those by 10-15 and see if you aren't thrilled with the results in worse penetration, harder and more frustrating to hit during seiges, and generally lower damage delivered.
  It's what you were looking for I think...

  - GS

Sorry for the late reply!
I think this is what I was initially looking for:

Code:
if hold_time >= 1.1
	hold_bonus = 1.2
elif hold_time >= 0.6:
	hold_bonus = (1.1 - hold_time) * 0.6 + 1.2
elif hold_time >= 0.5:
	hold_bonus = 1.5
else:
	hold_bonus = hold_time + 1.0

raw_damage = weapon_damage * (clamp(hold_bonus, 1.0, 2.0) * 0.5 + 0.5)

if weapon_type == 'one_handed' or weapon_type == 'two_handed' or weapon_type == 'polearm':
	raw_damage *= math.pow(melee_damage_speed_power, speed_bonus)
elif weapon_type == 'crossbow' or weapon_type == 'bow' or weapon_type == 'throwing':
	raw_damage *= math.pow(missile_damage_speed_power, speed_bonus)

if weapon_type == 'crossbow':
	if raining:
		raw_damage *= 0.75
else:
	raw_damage *= proficiency * 0.01 * 0.15 + 0.85
	
	if weapon_type == 'bow':
		raw_damage *= min(power_draw, difficulty + 4) * 0.14 + 1
		
		if mounted:
			raw_damage *= horse_archery * 0.019 + 0.8
		
		if raining:
			raw_damage *= 0.9
	elif weapon_type == 'throwing':
		raw_damage *= power_throw * 0.1 + 1.0
		
		if mounted:
			raw_damage *= horse_archery * 0.019 + 0.8
	elif weapon_type == 'one_handed' or weapon_type == 'two_handed' or weapon_type == 'polearm':
		raw_damage *= power_strike * 0.08 + 1.0

	raw_damage += strength / 5.0

	if (weapon_type == 'two_handed' or weapon_type == 'polearm') and (has_shield or mounted):
		raw_damage *= 0.85
		
		if weapon_type == 'polearm':
			raw_damage *= 0.85
		
		if weapon_flags & itp_two_handed:
			raw_damage *= 0.9

raw_damage = clamp(raw_damage, 0, 500)
Code:
armor = appropriate_armor_value_for_hit_location

if hit_shield_on_back:
	armor += shield_resistance + 10

soak_factor = armor * module.ini_soak_factor_for_damage_type
reduction_factor = armor * module.ini_reduction_factor_for_damage_type

if item_flags & itp_extra_penetration:
	soak_factor *= module.ini_extra_penetration_soak_factor
	reduction_factor *= module.ini_extra_penetration_reduction_factor

randomized_soak = (random.random() * 0.55 + 0.45) * soak_factor
randomized_damage = (random.random() * 0.1 + 0.9) * raw_damage
soaked_damage = randomized_damage - randomized_soak

if (soaked_damage < 0.0):
	soaked_damage = 0.0

randomized_reduction = math.exp((random.random() * 0.55 + 0.45) * reduction_factor * 0.014)
reduced_damage = (1.0 - 1.0 / randomized_reduction) * soaked_damage

if (reduction_factor < 0.00001):
	reduced_damage  = 0.0

damage_difference = round(reduced_damage + randomized_soak)
effective_damage = randomized_damage - damage_difference

if hit_bone == head:
	effective_damage *= 1.2

	if item_is_ranged:
		effective_damage *= 1.75
elif hit_bone == calf or hit_bone == thigh:
	effective_damage *= 0.9

effective_damage = clamp(effective_damage, 0.0, 500.0)

Code:
            if missile:
                    missile_speed_vec = missile.get_direction()
                   
                    if (receiver_agent_no >= 0):
                            missile_speed_len = (receiver_speed_vec - missile_speed_vec).length() # sqrt(x²+y²+z²)
                    else:
                            missile_speed_len = missile_speed_vec.length()
                   
                    damage = pow(missile_speed_len / missile.speed, module_settings.missile_damage_speed_power) * missile.damage * attack_rec.unknown_value
           

If this:
Code:
randomized_soak = (random.random() * 0.55 + 0.45) * soak_factor
would make the tweaking more complicated, is it possible to have a fixed value instead of a random one?
Have these values been changed in Perisno, and how/when is the iron flesh soak and dodge calculated? What is the name of the py file that contains the above code?
What is the relation between this:
Code:
damage = pow(missile_speed_len / missile.speed, module_settings.missile_damage_speed_power) * missile.damage * attack_rec.unknown_value
to this
Code:
elif weapon_type == 'crossbow' or weapon_type == 'bow' or weapon_type == 'throwing':
	raw_damage *= math.pow(missile_damage_speed_power, speed_bonus)

if weapon_type == 'crossbow':
	if raining:
		raw_damage *= 0.75
else:
	raw_damage *= proficiency * 0.01 * 0.15 + 0.85
	
	if weapon_type == 'bow':
		raw_damage *= min(power_draw, difficulty + 4) * 0.14 + 1
		
		if mounted:
			raw_damage *= horse_archery * 0.019 + 0.8
		
		if raining:
			raw_damage *= 0.9
	elif weapon_type == 'throwing':
		raw_damage *= power_throw * 0.1 + 1.0
		
		if mounted:
			raw_damage *= horse_archery * 0.019 + 0.8

Are cRPG game mechanics http://forum.melee.org/beginner%27s-help-and-guides/game-mechanic-megathread!/, and warband (also Perisno) the same?
ex: - Power draw REDUCES your wpf by (14*PD)-((1.4)^PD) (Thanks to Lt_Anders for pointing it out). This is calculated before the weight wpf reduction. See http://forum.meleegaming.com/beginner%27s-help-and-guides/archer-build-41378/msg646130/#msg646130, does this happen in native and Perisno?

For the 3 parts issue:

1)High encumbrance should affect some agility based skills like athletics (so foot movement speed should be affected), dodge bonus for light encumbrance would be great too.
Or it could be done like in Brytenwalda: certain heavy armors have a penalty to some agility based skills, and light armors should have a bonus. Some heavy armors, shields and helmets should have a penalty to powerdraw or/and proficiency to prevent using the bow efficiently when wearing tank armor. The bows could have a "cannot be used with heavy armors(armor ratings above "insert value here")" requirement.

2)&3)Regarding armor behavior it would be ideal to have each armor "class" (or item) use different values for armor soak/reduction against cut/pierce/blunt, but I don't know if it's possible to code that, and I certainly don't have the knowledge or the resources (module system) to do it. True that different armor types do have different trade offs and lamellar armor is a wildcard because of it's lacing system that is affected by prolonged attacks and weather, also the different materials that it was made off have an impact on shock/pierce/slash absorbing properties. The game does not give the necessary feedback in terms of collision and animation to "feel" the different armor compositions and behavior.
I think the "randomized_soak = (random.random() * 0.55 + 0.45) * soak_factor" is used to simulate a successful strike at a vulnerable spot in armor, but it might have a second role in simulating the effect on different armor compositions. I haven't tested how much impact it has on different armor ratings:
ex. 100 rolled damage on 60 armor and minimum soak vs 40 armor and maximum soak.
Since it's range is high, it might do more bad than good when trying to differentiate the armors by "classes".
Tweaking module.ini (for "best all around values") and item_kinds could improve some aspects, (speculating ->) even if using the soak/reduction values that would represent the best plate armors, having padded leather and other light armors behave the same, would not matter that much, since is rating will be low and will be vulnerable to all damage types.(speculating ->) Using the weakest weapons against those armors will need more strikes to kill the wearer, but it would not be a problem for the weapons to penetrate them. This could increase the difficulty of the game in the beginning, when attacking bandits. Most of the time the biggest difference in some armor's soak/reduction would be in the pierce/blunt categories: ex. high quality chain mail vs plate, both are almost invulnerable/invulnerable to slash attack, both offer great protection against pierce attacks (contrary to most beliefs regarding chain mail), the real difference would be shock absorbing properties (none vs good). If we consider the fact, that most of the times mail was worn in conjunction with other armor types and padding, the shock absorbing properties change.
My opinions:
-all types of armor are designed to protect (to some degree) against slash damage, so it's relatively "ok" to have a constant in the soak/reduction factor and differentiate with armor rating,
-piercing soak/reduction constant can also be "ok" since weapons that pierce plate armor should have no problem piercing through the rest of the armors, and also the differentiating factors would be the tweaked armor ratings, melee weapon's pierce damage, and ranged weapon's tweaked damage (I would prefer to leave this untouched if tweaked armor ratings, and soak/reduction would suffice),
-all blunt weapons that can affect the heavy plate wearer should prove even more devastating against the rest of armors, this also makes a constant in blunt soak "ok",
-big axes that can affect the heavy armor wearer because of concussion damage (which should be added to increase the final slash damage), should do even greater damage to less shock absorbing armors(less armor rating),
-swords should do less damage than axes, but compensate with reach and versatility (weapon swing speed could be enough to partially compensate for the versatility factor),
-thrusting attack damage of some swords, should be increased since most anti armor sword fighting techniques use this type of attack (it is useless to try slashing good armor),
-armor ratings should be increased for the best armors, to the point of being immune to sword's slashing attacks (considering that soak/reduction factors were already tweaked to achieve this desired effect), and almost immune to sword's thrusting attack (except best damage roll and smallest randomized_soak roll -- must test it's effect first), same thing with missiles (except from the most damaging crossbows)
-the most powerful crossbows should have the final damage greater than their equivalent in bows.
Basically the files that I want to tweak are: the module.ini, item_kinds1.txt, and troops.txt.
By tweaking I mean:
-finding the "ideal" values in armor_soak/reduction to work with,
-finding the highest armor rating (without making the player immune to all damage) that would be used by best plate armors, so only the anti-armor weapons would be effective against them,
-“reclassify” the rest of the armors with more ranges of armor ratings (to partially compensate for the lack of nuances in the ability to absorb shock/pierce/slash damage)
-calculate (in excel) min/max possible damage of all weapons, under different circumstances, in order to classify weapons usefulness against different armor ratings (some weapons only with the max rolled damage+all bonuses and modifiers, would affect the higher rated armors),
The list of tweaks is based on my assumption that: in 1257 AD, the desired effects were achieved mostly by the tweaked values in module.ini, item_kinds.txt, rebalanced troops.txt, and not by modifying the code in py files.
This tweaks doesn't make the damage system realistic, but it does make it close to.
After the above tweaking is done, I need to edit the troops file to rearm and balance the units and their items accordingly. This requires some units to be specialized in anti armor combat. Another isue is the AI's inability to "recognize" the correct weapon for the situation, so arming them with multiple weapons types might be useless (again the need for specialized units). Specialized units should be organized (which greatly reduces the knight's dominance in the battlefield), otherwise you would just hope that right units might engage the right targets in the chaos of the battle. The lack of a proper working formation system for the AI makes this much worse, so the outcome of battles might be based on luck.
From what I found on this thread http://forums.taleworlds.com/index.php/topic,152057.0.html , it seems that the potential for improving the damage system is not that limited: ex. dodge and iron flesh soak (good job for implementing them in Perisno), critical hits, weapons breaking, slipping a dagger through some poor knight's visor while he's prone, knocking people prone or stunned occasionally, random knockback / knockdown/ critical hits for missiles, dragging people off of horses with polearms(which would finally make most unused polearms useful), disarming, ... . Some of them are implemented in Brytenwalda, and seem to be working fine.
I could probably make the tweaks in module.ini and item_kinds.txt  for my private version, but for the those that require editing the python files are just wish list, in hope that someone with coding experience from the Perisno team would find the ideas worthwhile, and might have the willingness and the time to implement them in an alternate Perisno version.
A pool can be made to see some opinions on what features some would like.
This could also help in resolving the issue "Perisno is becoming to easy"!
Sorry if my english is not great, it’s not my first language!
 
L-R swing and R-L swing have the same damage output, does anybody know the "%" damage bonus for overhead swing?
Edit: I've found it while testing, it's 10 %
 
the problem with the code you gave is that its not accessible for changing in Warband scripting;
those are C language or a derivative, but not anywhere in the Python scripts modders can access.

  Thus if I want to redefine power draw for example to use some value in a slot I can't; I have to write
that slot based value directly to power draw so that the Warband engine makes its calculation, and
that formula can never change, excepting Warband changes as a rev version and with Taleworld expressly recompiling Warband's C source.

  It removes most of my opportunity to adjust the damage except by feeding changed values directly back into power draw etc,
rather than having some intermediate that can be modified while still allowing normal spending of skill points.

  I ended up having to modify directly power draw, horse archery, athletics, and shield due to encumbrance effects.  I did not cut and paste directly from Brytenwalda; neither directly from Silverstag, but in fact assigned my own tables and my own code.  I did look at how Silverstag did it but honestly they made it more complicated than I felt like supporting, and I was resistant to overwriting native values in cases where I need to be able to change equipment and level up companions, spouses, and the player.  This happened for Pho v20r4 last week and r5 tester released 2 days ago. 

  I felt more value could be had by dropping weapons base damage by 25% then lowering the power draw given to each tier troop by 1, along with the difficulty by 1 so that troops modified adversely by encumbrance could still equip their bows.  Crossbows stayed the same; while the shield threshold in module.ini I tweaked slightly to adjust the mechanic for penetrating shield.  This was released in Pho v20 r5 2 days ago.

  Michadr contacted me yesterday to affirm that after .751 he will investigate Pho (I guess he has studied it like I studied .8 - we each booted it up for 10 minutes and walked away unsatisfied).  I think it's become a whole new beast since he last saw it, but I should let some vastly harsher critic tear at it -- so long as its v20 r5 they evaluate, and not something old, like say 3 days ago...

  - GS


 
gsanders said:
the problem with the code you gave is that its not accessible for changing in Warband scripting;
those are C language or a derivative, but not anywhere in the Python scripts modders can access.

  Thus if I want to redefine power draw for example to use some value in a slot I can't; I have to write
that slot based value directly to power draw so that the Warband engine makes its calculation, and
that formula can never change, excepting Warband changes as a rev version and with Taleworld expressly recompiling Warband's C source.

  It removes most of my opportunity to adjust the damage except by feeding changed values directly back into power draw etc,
rather than having some intermediate that can be modified while still allowing normal spending of skill points.

  I ended up having to modify directly power draw, horse archery, athletics, and shield due to encumbrance effects.  I did not cut and paste directly from Brytenwalda; neither directly from Silverstag, but in fact assigned my own tables and my own code.  I did look at how Silverstag did it but honestly they made it more complicated than I felt like supporting, and I was resistant to overwriting native values in cases where I need to be able to change equipment and level up companions, spouses, and the player.  This happened for Pho v20r4 last week and r5 tester released 2 days ago. 

  I felt more value could be had by dropping weapons base damage by 25% then lowering the power draw given to each tier troop by 1, along with the difficulty by 1 so that troops modified adversely by encumbrance could still equip their bows.  Crossbows stayed the same; while the shield threshold in module.ini I tweaked slightly to adjust the mechanic for penetrating shield.  This was released in Pho v20 r5 2 days ago.

  Michadr contacted me yesterday to affirm that after .751 he will investigate Pho (I guess he has studied it like I studied .8 - we each booted it up for 10 minutes and walked away unsatisfied).  I think it's become a whole new beast since he last saw it, but I should let some vastly harsher critic tear at it -- so long as its v20 r5 they evaluate, and not something old, like say 3 days ago...

  - GS

Thanks for the reply! After I posted the code from other topics, I've found out that the code for the damage system is not available to be changed with the scripts from the MS, just like you previously mentioned. The bright side is, that the moders can manipulate the resulted damage after the damage calculations, with "the trigger condition ti_on_agent_hit" and it seems that the iron flesh soak and agility dodge makes use of this trigger in Britenwalda and in Perisno (only dodge). I would like to see the code for item penalties  http://forums.taleworlds.com/index.php?topic=143472.0  implemented in Perisno, or in Phosphor so others can test and see if they like it! Even if the penalties only affect the player, it would help balance the game further (if some of other players share my point of view on this matter, and agree that you shouldn't get only the benefits of wearing heavy armor and almost none of it's drawbacks). Speaking of armor benefits, armors in the range of 40 are mixed and are rated "heavy" by the protection they offer and this wouldn't be a problem if the best armors (not the ones only obtainable through cheat menu) are in the range of 60 (even 80 armor can be cutted with swords) and the 20 difference does not correctly represent the "real" difference between the protection they should offer. This can be fixed in 3 ways: increasing the ranges between armor types, tweaking the module.ini soak/reduction factors, lowering the base damage of weapons, or a combination of all 3. Perisno is low fantasy and one could assume that there is a magic penetration factor to some swords, but there should be a magic factor for armor protection like the enchantment that substitutes head armor. For my private version, I will use the calculator to balance the extremes (high troop stats + highest weapon damage in relation to best armor, vs the opposite) ex: highest sword cut damage without speed bonus vs range of best armors = final maximum damage will be close to 0, if charging and mounted and having a big 2h sword you should do some cut damage (that represents the concussion damage).
Regarding bows and their modifiers (profi+power draw) vs crossbow, the most damaging (bow+arrows) final damage after all modifiers should be ~ 20% lower than the most damaging (~1200 lbs draw crossbows+bolts), this can be fixed by reducing the bow+arrow base damage and increasing the crossbow damage. Projectile speed should be left as it is since it only affects it's trajectory.
I would like to test Pho v20 r5 and see how encumbrance affects the player and how is the formation system, that is after I update from 1.158. I just hope it wont be to much for my very limited hardware!
 
Back
Top Bottom