There are a number of grenades in the Basic Set data file, however all of the grenades there weigh 1 pound, so they use a simplified weight to ST ratio for calculating throwing range. I did write a test grenade which calculated range based on a variable thrown object weight; I never did write one which also calculated the thrown object damage. The correct full max range calculation follows:
Code:
rangemax(@int(_
(ST:Striking ST + _
@if(_
SK:Throwing::level = ST:DX+1 then 1 _
ElseIf _
SK:Throwing::level > ST:DX+1 then 2 _
else 0_
) _
) * _
@if(_
(me::precountweight/ST:Basic Lift) > 10 then 0.05 ElseIf _
(me::precountweight/ST:Basic Lift) > 9 then 0.06 ElseIf _
(me::precountweight/ST:Basic Lift) > 8 then 0.07 ElseIf _
(me::precountweight/ST:Basic Lift) > 7 then 0.08 ElseIf _
(me::precountweight/ST:Basic Lift) > 6 then 0.09 ElseIf _
(me::precountweight/ST:Basic Lift) > 5 then 0.1 ElseIf _
(me::precountweight/ST:Basic Lift) > 4 then 0.12 ElseIf _
(me::precountweight/ST:Basic Lift) > 3 then 0.15 ElseIf _
(me::precountweight/ST:Basic Lift) > 2.5 then 0.2 ElseIf _
(me::precountweight/ST:Basic Lift) > 2 then 0.25 ElseIf _
(me::precountweight/ST:Basic Lift) > 1.5 then 0.3 ElseIf _
(me::precountweight/ST:Basic Lift) > 1 then 0.4 ElseIf _
(me::precountweight/ST:Basic Lift) > 0.75 then 0.6 ElseIf _
(me::precountweight/ST:Basic Lift) > 0.5 then 0.7 ElseIf _
(me::precountweight/ST:Basic Lift) > 0.4 then 0.8 ElseIf _
(me::precountweight/ST:Basic Lift) > 0.3 then 1 ElseIf _
(me::precountweight/ST:Basic Lift) > 0.25 then 1.1 ElseIf _
(me::precountweight/ST:Basic Lift) > 0.2 then 1.2 ElseIf _
(me::precountweight/ST:Basic Lift) > 0.15 then 1.5 ElseIf _
(me::precountweight/ST:Basic Lift) > 0.1 then 2 ElseIf _
(me::precountweight/ST:Basic Lift) > 0.05 then 2.5 _
ELSE 3.5_
)_
)_
)