foundryvtt / pf2e

A community contributed game system for Pathfinder Second Edition.
https://foundryvtt.com/packages/pf2e
Apache License 2.0
416 stars 349 forks source link

Boots of Speed and Quick Climb resulting in incorrect climb speed #10887

Open AFigureOfBlue opened 1 year ago

AFigureOfBlue commented 1 year ago

The Quick Climb feat grants a climb speed to a PC who is legendary in Athletics, and sets this equal to the PC's land speed. The Boots of Speed item gives an item bonus to the wearer's land, climb, and swim speed. When both of these are in effect on someone who otherwise has just a 25 foot land speed, it currently results in them having a 30 foot land speed and 35 foot climb speed; when instead, both of these should be 30 feet. It appears that the boots' item bonus is applying twice to result in the too-high climb speed.

stwlam commented 1 year ago

You get a climb speed equal to your land speed, bonuses and all, and also a bonus specifically added to your climb speed. A 35-foot climb speed is correct. Are two item bonuses stacking? Functionally, yes, but not per se. It is a regrettable decision on Paizo's part to map some speeds to other speeds.

Not closing this since it seems to fly in the face of whatever RAI lurks underneath, but also not likely to be fixed any time soon (or ever).

websterguy commented 3 months ago

There's a weird inconsistency with stacking and double-dipping on speed modifiers somewhat related to this.

Quick Swim's BaseSpeed is set with brackets based on athletics rank to set the swim speed to @actor.attributes.speed.total. Quick Climb's BaseSpeed is set with a value and predicated on athletics rank to also set the climb speed to @actor.attributes.speed.total. When a FlatModifier is applied to the selector speed, the BaseSpeed with the brackets (in this case swim) is both set to the boosted land speed as well as being boosted again by the FlatModifier. The BaseSpeed with the value and predicate (climb) is set to the boosted land speed but is not boosted again by the FlatModifier. The fact that one is to swim and one is to climb isn't the issue, as swapping the selectors results in the same outcome. The BaseSpeed written with brackets "double-dips" the flat mod while the value with predicate does not.

I believe this should be made consistent one way or the other. The 2 different ways of writing the BaseSpeed rule should result in the same outcome, both being set to @actor.attributes.speed.total.