Post by sekira on Apr 11, 2008 17:07:47 GMT -5
I have been thinking about it, and I think the way the penalties for dual wielding are applied is too restrictive, and the dual wield skill doesn't help enough until you are very close to the threshold for 0 penalty for that weapon.
This is because you start with a penalty to the number of blows based on weapon weight, and you reduce that penalty by investing in dual wield. The problem with this method is... what if your penalty is significantly higher than your maximum blows before any penalty.
For example, lets say you have a sword that with your current setup of str, dex, and martial arts skill gives you 4 blows per round before any dual wield penalty. But the sword is 14 lbs, which means it gives you a 8 blow penalty. Every 5 pts in dual wield reduces the penalty, so it will take 30 pts in dual wield before your penalty is low enough that your blows goes up from 1 to 2. then another 10 pts to get to your max of 4 blows.
I propose a method that evens out the penalty, so that you don't have to put 30 out of the 40 pts in dual wield before you see any difference.
To make this happen, here is the fix:
Replace
with
And
with
This is because you start with a penalty to the number of blows based on weapon weight, and you reduce that penalty by investing in dual wield. The problem with this method is... what if your penalty is significantly higher than your maximum blows before any penalty.
For example, lets say you have a sword that with your current setup of str, dex, and martial arts skill gives you 4 blows per round before any dual wield penalty. But the sword is 14 lbs, which means it gives you a 8 blow penalty. Every 5 pts in dual wield reduces the penalty, so it will take 30 pts in dual wield before your penalty is low enough that your blows goes up from 1 to 2. then another 10 pts to get to your max of 4 blows.
I propose a method that evens out the penalty, so that you don't have to put 30 out of the 40 pts in dual wield before you see any difference.
To make this happen, here is the fix:
Replace
-- Dual Wielding reduces the number of blows if weapons are
-- too heavy...
-- It takes a skill of 3 times the weapon's weight to properly
-- wield two of them.
if (two_weapon_wield() and p_ptr.dualwield == 1) then
local blowpenality
blowpenality = 0
if (p_ptr.skill[9] < ((inven(INVEN_WIELD).weight / 10) * 3)) then
blowpenality = (((inven(INVEN_WIELD).weight / 10) * 3) - p_ptr.skill[9]) / 5
-- You never actually GAIN blows!
if (blowpenality < 0) then blowpenality = 0 end
end
p_ptr.num_blow = p_ptr.num_blow - blowpenality
end
-- Dual Wielding reduces the number of blows if weapons are
-- too heavy...
-- It takes a skill of 3 times the weapon's weight to properly
-- wield two of them.
if (two_weapon_wield() and p_ptr.dualwield == 1 and p_ptr.num_blow > 1) then
local blowpenality
blowpenality = 0
local maxskill
maxskill = (inven(INVEN_WIELD).weight * 3) / 10
local skillperblow
skillperblow = 5
if skillperblow < (maxskill / (p_ptr.num_blow - 1)) then
skillperblow = (maxskill / (p_ptr.num_blow - 1))
end
if (p_ptr.skill[9] < maxskill) then
blowpenality = (maxskill / skillperblow) - (p_ptr.skill[9] / skillperblow)
-- You never actually GAIN blows!
if (blowpenality < 0) then blowpenality = 0 end
end
p_ptr.num_blow = p_ptr.num_blow - blowpenality
end
And
-- Dual Wielding reduces the number of blows if weapons are
-- too heavy...
-- It takes a skill of 3 times the weapon's weight to properly
-- wield two of them.
if (two_weapon_wield() and p_ptr.dualwield == 1) then
local blowpenality
blowpenality = 0
if (p_ptr.skill[9] < ((inven(INVEN_WIELD+1).weight / 10) * 3)) then
blowpenality = (((inven(INVEN_WIELD+1).weight / 10) * 3) - p_ptr.skill[9]) / 5
-- You never actually GAIN blows!
if (blowpenality < 0) then blowpenality = 0 end
end
p_ptr.num_blow2 = p_ptr.num_blow2 - blowpenality
end
-- Dual Wielding reduces the number of blows if weapons are
-- too heavy...
-- It takes a skill of 3 times the weapon's weight to properly
-- wield two of them.
if (two_weapon_wield() and p_ptr.dualwield == 1 and p_ptr.num_blow2 > 1) then
local blowpenality
blowpenality = 0
local maxskill
maxskill = (inven(INVEN_WIELD+1).weight * 3) / 10
local skillperblow
skillperblow = 5
if skillperblow < (maxskill / (p_ptr.num_blow2 - 1)) then
skillperblow = (maxskill / (p_ptr.num_blow2 - 1))
end
if (p_ptr.skill[9] < maxskill) then
blowpenality = (maxskill / skillperblow) - (p_ptr.skill[9] / skillperblow)
-- You never actually GAIN blows!
if (blowpenality < 0) then blowpenality = 0 end
end
p_ptr.num_blow2 = p_ptr.num_blow2 - blowpenality
end