Weapon damage comparison table

Users who are viewing this thread

I've never had reinforced demonplate or reinforced gauntlets but I DO know that Eventide cape is a helmet that gives a decent + to body armor about 6 if I recall correctly.
 
I think something between 60 and 65 is a reasonable average body armor value across the different flavors of knights. Once I get the mechanics sorted out in my head and in my code I'll probably make a special table just for killing Demonic Magni.
 
cmpxchg8b said:
Code:
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)
Would someone be awesome and do the forum archeology to find out how speed_bonus and the 2 damage_speed_powers are calculated? I'm guessing math.pow() raises the first argument to the power of the second, so this multiplies raw damage by d_s_p to the s_b power. This will have huge effects on damage, and if it includes missile projectile speed, may well be the decisive factor in choosing a bow, but I need to know the math on how it works. So if someone could run down the code from a dev post somewhere while I wrestle with the other stuff that'd be worth at least one virtual beer.

Also, rain is the only remaining factor in crossbow damage. Don't use them in the rain if you can help it, and hold each shot for a half second. All there is to know about Xbow use.
 
For everything except crossbows:
Code:
else:
	raw_damage *= proficiency * 0.01 * 0.15 + 0.85
Every 100 points of WP above 100 adds 15% to damage
Code:
	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
Power Draw and Power Throw work as described on the character screen. As does horse archery, 10 points of HA eliminates 19% of the 20% damage penalty you get from being on a horse.
Code:
	elif weapon_type == 'one_handed' or weapon_type == 'two_handed' or weapon_type == 'polearm':
		raw_damage *= power_strike * 0.08 + 1.0
Power strike works as advertised.
Code:
	raw_damage += strength / 5.0
Everything except crossbows gets a point of damage added for every 5 points of strength. Before the different soak and reduction mechanics take effect. This means it's not possible to compare weapons of different damage types unless it's done for a specific strength value. The others were weapon independent multipliers, but this could be a 100% bonus for a crappy weapon and  a 1% bonus for a rune weapon.
Code:
	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
Using big weapons with one hand has penalties. Bastard Swords, Morningstars, and other hand and a half weapons take a 15% hit. Polearms take a 27.75% hit (0.85*0.85). Full 2handers like the Great Swords are reduced 23.5% (0.85*0.9). A two handed polearm used with a shield (if that's even possible) would be penalized 34.975% (0.85*0.85*0.9). These are applied after the strength bonus, so you can't fully eliminate this 15% penalty with the 15% bonus from another 100 WP.
Code:
raw_damage = clamp(raw_damage, 0, 500)
You'll never heal your enemy by hitting him, and you'll never do more than 500 damage even with a couched lance hit to a naked Berserker. Note that this is after speed is taken into account, so I'll continue to include any negative results I get so that we can tell the difference between almost cutting through the armor and not even scratching the paint.
 
I don't think the game gives any ranged weapons holding bonuses.

The holding bonus itself gets multiplied by 0.5 before being added to 0.5, so the max bonus you can get from it is 25%.

You missed a decimal on the horse archery, you need 0.2 total to get to even footing with unmounted archers, each point only gives 0.019, so at 10 HA you are just barely under an unmounted archer.

Strength bonuses seem to be better on pierce/blunt weapons, but in general, the influence strength has is fairly minimal for non-cheating players unless it's with a headshot on a pierce/blunt projectile weapon since the raw damage bonus is 10 maximum, since it is applied after proficiency/power strike/throw/draw bonuses.
 
Code:
armor = appropriate_armor_value_for_hit_location

if hit_shield_on_back:
	armor += shield_resistance + 10
A good shield on your back can be as effective as a whole other set of starting armor on top of your actual armor.
Code:
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
Random rolls between 90-100% (average 95%) for raw damage and 45-100% (average 72.5%) for armor, weighted by the soak factor for that damage type, with the result removed from the raw damage total. This is how much energy it took to make a hole in your armor (with the randomness modeling weaker points), soaked_damage is how much energy remains to push the sword point thru and into you.
Code:
randomized_reduction = math.exp((random.random() * 0.55 + 0.45) * reduction_factor * 0.014)
math.exp() takes as argument another 72.5% average random roll for the armor, times the reduction factor for the damage type times 1.4%. I'm guessing it's 10 to the power of argument, but I'll need to look that up too. Edit: Nope, it's e to power of argument.
Code:
reduced_damage = (1.0 - 1.0 / randomized_reduction) * soaked_damage
Damage has to get thru the soak in order to be reduced. The sword point has to make a hole, before the reduction caused by widening the hole and sticking the point in further matters.
Code:
if (reduction_factor < 0.00001):
	reduced_damage  = 0.0

damage_difference = round(reduced_damage + randomized_soak)
effective_damage = randomized_damage - damage_difference
Effective damage is the energy behind the sword thrust to start with, minus the energy to make a hole, minus the energy to widen the hole enough to stick the sword in.
Code:
if hit_bone == head:
	effective_damage *= 1.2

	if item_is_ranged:
		effective_damage *= 1.75
Headshots are good for an extra 20% resultant damage. Ranged headshots get an extra 110%
Code:
elif hit_bone == calf or hit_bone == thigh:
	effective_damage *= 0.9

effective_damage = clamp(effective_damage, 0.0, 500.0)
 
Huscarlton Banks said:
I don't think the game gives any ranged weapons holding bonuses.
Unless the code for that is posted elsewhere, the indentation on the chunk we have indicates that it's not subordinate to any parent ifs about weapon type. Dunno.
The holding bonus itself gets multiplied by 0.5 before being added to 0.5, so the max bonus you can get from it is 25%.
Read off wrong column from spreadsheet, mea culpa. Will edit.
You missed a decimal on the horse archery, you need 0.2 total to get to even footing with unmounted archers, each point only gives 0.019, so at 10 HA you are just barely under an unmounted archer.
Yup :oops: Will fix that too.
 
Something I missed: PoP has different soak/reduction multipliers than native.

PoP said:
armor_soak_factor_against_cut      = 0.9
armor_soak_factor_against_pierce    = 0.75
armor_soak_factor_against_blunt    = 0.7

armor_reduction_factor_against_cut      = 1.1
armor_reduction_factor_against_pierce    = 0.75
armor_reduction_factor_against_blunt    = 0.70

vs

Native said:
armor_soak_factor_against_cut      = 0.8
armor_soak_factor_against_pierce    = 0.65
armor_soak_factor_against_blunt    = 0.5

armor_reduction_factor_against_cut      = 1.0
armor_reduction_factor_against_pierce    = 0.5
armor_reduction_factor_against_blunt    = 0.75

Blunt damage seems to always be superior to pierce damage in PoP. In native, pierce tends to win out once you get past ~60 damage.
 
Huscarlton Banks said:
Blunt damage seems to always be superior to pierce damage in PoP. In native, pierce tends to win out once you get past ~60 damage.
Except for the fact that you can get 75 of pierce in Pop but only 45 of blunt IIRC. Hence my nerdly obsession with figuring out all the mechanics and creating these tables. I only want to equip my CKO one time, with the best.
 
If you're just going by late-game CKO, your options are going to be much more limited, since they can't get any of the emerald/ruby/sapphire/strange runed weapons without cheating. There aren't any huge differences in pierce damage vs blunt damage in weapons for them, except for the lack of blunt projectiles.

The only appeal I see in cut weapons is weapon length since blunt/pierce weapons already pretty much one-shot the enemies that cut deals more damage to, and at 500 wpf they're already swinging fast enough.
 
Posted this over in the Forge, but thought I'd run it past any interested parties here too, as I have a theory that I need players to weigh in on and see if it matches their game experience.

Absent any concrete (code) input about speed damage bonus, here are my speculations. This and $1 will get you something off the dollar menu.

Kinetic energy goes with the square of speed in the real world, and damage is essentially energy of deformation (the energy it takes to shove everything that used to be there out of the hole the weapon just punched in your armor and you). So if both damage speed powers are 2.0 that probably matches real physics best.

The hidden missile speed stats seem reasonable values if the units are meters / second, and we already know that weapon length is measured in centimeters. Horse speeds seems reasonable if their units are km/hr. An Olympic level sprint is about 9 m/s, a 42 speed horse has you moving at 11.67 m/s, and a siege crossbow has a "muzzle" velocity of 85 m/s

If the speed bonus is the log base 10 of the speed in meters/second, with negative bonuses applied for backpedaling and moving either forward or backward at less than 1 m/s being treated as standing still:
•Standing still gives 2 to the zero, or one, damage is multiplied by one, no bonus damage
•Full human track star sprint of 9m/s gives 0.95, 2**0.95 = 1.94, 94% bonus damage
•Full speed 42 horse at 11.67m/s gives 1.07, 2**1.07 = 2.09, 109% bonus damage
•At range, with half its original speed, the crossbow bolt is moving 42.5 m/s for a speed bonus of 1.63. 2**1.63 = 3.09, or 209% bonus damage
•Point blank, crossbowman was standing behind a parapet as you rounded the corner, the bolt leaves the bow at 85 m/s for a bonus of 1.93, which gives 3.81 times the damage or 281% bonus
•Backpedaling at 2 m/s gives -log(2)= -0.3. 2** -0.3 = 0.81, or a 19% damage penalty
Note that the drag on a projectile increases with the square of the speed, so missile speeds will drop off very quickly to more reasonable bonuses. Also, raw damage is capped at 500, before armor is considered, so that will serve to tame the power of uber bows at knife fighting range.

How well does this guess at the formula match up to your game experiences?
A good guess, if I do say so myself, but incorrect according to code posted by the devs to the cRPG mod forum.
 
You do not get any speed bonus/malus for ranged weapons by moving towards or away from your target while shooting/throwing, it's all about your enemy's movement due to some messed up formulas.

http://forum.meleegaming.com/beginner%27s-help-and-guides/game-mechanic-megathread!/msg356369/#msg356369

You also do not get higher speed bonuses by increasing shot speed.

If anything, you get higher speed bonuses by decreasing shot speed as long as the target is moving towards you at close range, though this also increases speed maluses if the target is moving away for the same reason.
 
That is a fantastically useful thread and I think I'm going to copy the entire first post over to the Forge so that it can be found on the TW forums as well. Problem is I'm not 100% what's Warband mechanics and what's cRPG mod mechanics.

On point for missile speed specifically, the code snippet quoted takes the ratio of the projectile's current relative speed to its nominal launch speed and raises that to the power from the module.ini. There's a bug in how relative speed is calculated that makes firing at someone head-on while charging do much less damage than it should, and firing back over your shoulder at a pursuer do much more damage than it should. If you want to know why horse archery is OP, there it is. Parthian shots at full gallop get the ~270% damage bonus that should instead go to head to head charging shots.

For extra confusion, the code snippet quoted is calculating damage, just like the code we've been working with in this thread already. Both are from cmp. The bugged bit quoted at cRPG was quoted more recently, but that doesn't mean the code itself is the most current. The block from the TW forum multiplies raw damage by module ini to the power of speed bonus. The cRPG quote multiplies damage by speed ratio to the power of module ini, which makes more logical sense.

I want to assume that the missile speed bonus is speed ratio to the power of module ini, because then I know what all the variables are and I can proceed. I'd like to think melee speed works the same way, but what then is the baseline speed? Zero would make the speed ratio infinite. Do they just treat all speeds less than 1 m/s forward or backward as 1 and use that as base? Seems reasonable, but I don't know.
 
More shameless self referencing
Pode said:
I'm going to assume that both melee and missile speed damage bonuses work from the general form of damage = base damage * (impact speed/reference speed)^damage_speed_power. This fits physics (well, if the 1.9 for missiles was actually 2.0 for both, but eh) and my game observations reasonably well.  It also allows us to explain some game effects I've never seen explained anywhere else, more on that in a follow up post.

So for missiles, the reference speed is obviously the missile weapon's initial launch speed, the hidden projectile speed stat. Current speed is a function of the relative motion of the shooter and target (bugged, as discussed above), launch angle, ballistics, and aerodynamic drag. For balancing purposes, we want to hold all that constant. The easy way is to assume knife fighting range, where there is no loss of speed due to drag, the ratio becomes 1, and there's no bonus to damage. Problem is that except for possibly doing ladder defense, that's not how you use ranged weapons.

There exists some range where the drag has reduced the horizontal speed of a shot from a bow to zero. (Still some vertical speed due to gravity, but pulling off such a shot is pretty much blind luck so let's ignore that.) If we take the slowest bow in game and subtract it's projectile speed from the speed of all the others for our balancing, now we're doing a comparison at a real range. We don't know exactly what that range is, but it's the farthest you can shoot/throw the slowest projectile in game if you're just throwing for distance.

I play the Prophesy of Pendor mod, so my examples are pulled from it. There, the throwing axes are the slowest projectile with speeds of 18. So at the farthest distance you can throw an axe, the axe's speed is zero, its speed ratio is zero, zero squared is zero, and no damage results. Javelins have 25 base speed, so at that same distance they have 25-18 = 7 speed remaining, their ratio is 7/25 = 0.28, and their 42 base damage is multiplied by 0.28^1.9 = 8.9% for a result of 3.74 damage (before armor). A siege crossbow with speed 85 still has 67 speed at that same range, so it still does (67/85)^1.9 = 63.6% of its base damage of 92 for a total of 58.5. So we conclude that at range, the cross bow does more damage and is the better weapon. Well, at least we have a damage at range stat that we can use along with rate of fire, skill reqs, etc to do our balancing. And that's the part I've not seen anywhere else.
So, a table of damage for all of PoP projectile weapons (according to the wiki, there are a few from the latest patch still missing), with power draw/throw of 10 but no WPF, STR, target armor, etc., at the maximum distance a throwing ax can be thrown. Actually, scratch that. Let's use a shorter range, so that the axes get a chance too. Say half of the 18 speed lost, or a bit more than half max ax range. Which, if my dealings with Vanskerries is an indicator, is a surprisingly long range.
Sorry, formatting in draft doesn't match formatting in preview.
RubyRuneBow* 92.93
MettenheimArbalest 80.80
EmeraldRuneBow* 79.40
Duskfall* 78.14
SiegeCrossbow 73.55
SapphireRuneBow* 70.80
StrangeRuneBow* 70.63
HeritageDajaBow* 70.32
NoldorCompositeBow* 62.51
HeavyCrossbow 59.99
Crossbow 51.22
AssassinThrowingKnives 51.10
BroadHeadThrowingSpears 46.05
LongCompositeBow 44.48
Jarids 44.10
MaidenCrossbow* 38.27
LongBow 36.37
LightCrossbow* 34.68
Javelins 34.41
ShortCompositeBow* 33.80
ThrowingSpears 30.73
D'SharBow* 30.71
HuntingCrossbow* 26.22
NomadBow* 24.20
WarDarts 22.22
HeavyThrowingAxes 22.00
Darts 20.26
ThrowingDaggers 19.53
ThrowingAxes 19.50
ShortBow* 18.63
LightThrowingAxes 17.50
ThrowingKnives 15.56
HuntingBow* 13.53
Stones 10.78
Surprise from that table:
Assassin throwing knives, because of their very high missile speed for a thrown weapon, hit as hard as a crossbow and harder than a longbow. That makes them a VERY respectable choice for a single slot ranged weapon for knights / melee fighters, along with the broadhead spears and jarids. Harder hitting than any non-magical horseback projectile weapon.
If we take the accuracy stat of bow and xbow into account (D*A), we get a table of the best single shot sniper weapons. Of course, sniping probably isn't done at ax throwing range. Let's look at half the speed of the fastest missile, rather than the slowest, so give up 47.5  speed to drag and shooting uphill instead of only 9:
Duskfall* 21.56
SaphireRuneBow* 20.52
HeritageDajaBow* 20.01
MettenheimArbalest 19.57
NoldorCompositeBow* 17.07
SiegeCrossbow 15.22
EmeraldRuneBow* 15.14
RubyRuneBow* 14.20
StrangeRuneBow* 11.28
MaidenCrossbow* 7.70
HeavyCrossbow 6.94
LongCompositeBow 4.27
Crossbow 4.25
ShortCompositeBow* 2.71
LongBow 2.52
D'SharBow* 2.29
LightCrossbow* 1.77
NomadBow* 1.49
ShortBow* 1.12
HuntingBow* 0.69
HuntingCrossbow* 0.08
Here we're starting to see the missile speed parameter become more important than the raw damage.

Moving back to ax range and looking at DPS:
SaphireRuneBow* 87.80
RubyRuneBow* 87.35
EmeraldRuneBow* 79.40
Duskfall* 73.45
HeritageDajaBow* 66.81
StrangeRuneBow* 66.39
NoldorCompositeBow* 58.76
AssassinThrowingKnives 56.21
BroadHeadThrowingSpears 41.90
Jarids 39.25
LongCompositeBow 37.37
MettenheimArbalest 36.36
Javelins 31.31
ShortCompositeBow* 29.07
LongBow 28.73
D'SharBow* 27.64
SiegeCrossbow 27.21
ThrowingSpears 26.73
MaidenCrossbow* 24.87
HeavyCrossbow 24.60
NomadBow* 22.75
Crossbow 22.02
ThrowingDaggers 21.48
HeavyThrowingAxes 21.34
WarDarts 20.67
Darts 19.25
ThrowingAxes 19.11
ThrowingKnives 18.83
ShortBow* 18.08
LightThrowingAxes 17.33
LightCrossbow* 15.61
HuntingBow* 13.53
HuntingCrossbow* 12.33
Stones 10.46
So it goes by the weapons that require beating 2 spawns, then those that require beating one, then the best throwing weapons cuz they run out of ammo so fast, then the normal bows and crossbows and thrown intermix in a fairly balanced way. Almost as if the devs worked hard on that or something :razz:

Still working on the melee speed and armor effects to create the full Tome of All Damage, will post it here once it's complete. But this should suffice to guide your ranged weapon selections.
 
Pode´s lecture said:
Almost as if the devs worked hard on that or something :razz:

You may wager a month´s salary on that one. Though without all the pretty numbers and the detailed knowledge about missle speed - otherwise it was even better. But without the knowledge behind that parameter when the Great Itemkinds.txt Sieve was done the Kook of Balancing didn´t touch that one which led to certain unpleasant items.

However, sometimes the rule of thumb, experience and a proper feeling works out too well enough.

Still, get on with your work Pode. The itemskind.txt may still need some finetuning, just like the troops.txt does.
 
I've done some testing, it seems that crossbows do not get any bonuses from WPF apart from reload/firing speed, so if you ignore WPF you drastically nerf throwing/archery in relation to crossbows.

 
Good point. Best to ignore Xbow entries in those tables except to compare to other xbows. Still working the spreadsheet for an apples to apples comparison for all weapon types, and WPF will definitely be a factor in that math. Just did these for quick and dirty bow selection purposes (I got my 3rd Qualis and had to decide a bow flavor).
 
By the power vested in me by Astrea, I hereby raise the rotting corpse of this thread and send it shambling into the forum.

Seriously though, there is a lot of good stuff in here about game mechanics. Worth reading from the beginning and good for the new generation of number-crunchers on the forum. I feel like I understand the damage formula pretty well now, but I need to invest more time to develop an intuitive understanding of how the soak and resistance multipliers work for armor. Might help in understanding if the 5-point difference in Lady Valk vs. CKO armor (from my weapons test thread) is really the difference in their performance or not.
 
:sad:
Somebody needs to make a stickied thread with links to different guides/explanations/comparisons/programs/etc.
It hurts to see them getting buried under a pile of pointless 1-question threads....

Oh, I just saw that there is already a stickied thread with links. But it hasn't been updated for almost 3 years now.

P.S. Soak and reduction factors mentioned in the first message look obsolete.
 
Yeah, you need to read the whole thread--the updated formulas are later on. That's why I bumped the whole thread rather than cut-pasting a piece of it.

Interesting that crossbow WPF has no effect other than reloading time. Does it affect accuracy for AI troops?
 
Back
Top Bottom