-
Notifications
You must be signed in to change notification settings - Fork 431
Add system changes to facilitate Whirling Swipe #19626
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: v13-dev
Are you sure you want to change the base?
Conversation
|
Going to try to see how difficult it'll be to limit phase by property type. Drafted until then. |
474545c to
2812216
Compare
|
Phase is now validated based on the property. Persistent Damage DC only allows afterDerived (which it did before, but it used a different mechanism). Traits allows either applyAEs or beforeDerived. |
2812216 to
1d32464
Compare
acb5c32 to
0543770
Compare
|
I think for item alteration we can look into value allowing a base trait and value (config?) pair, and allowing value to be resolvable. That would remove the need for being able to resolve math expressions inside {} blocks and cut down on this PR quite a bit. |
e10be3a to
b052322
Compare
|
This has been updated to make use of the new annotation property in the traits item alteration, allowing me to remove formula support within curly braces. Unless we move when creature size occurs, we still need the phase property. |
|
|
||
| operableOnSource: boolean; | ||
|
|
||
| phases: ItemAlterationPrepPhase[]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Multiple?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These are the supported ones, not the resolved one. I realize now that its ambiguous, so I renamed it to supportedPhases.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe it should be static, then?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Its the supported ones for that specific instance, which handles a specific property, not for all handlers. All item alteration properties use the same class but different class instances.
For example, traits in this PR has supported phases ["applyAEs", "beforeDerived"],. Recovery dc alterations has ["afterDerived"],. The other alterations use the default, which is ["applyAEs"]
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
wack, but ok
57339bf to
f5c035f
Compare
f5c035f to
9c70651
Compare
Because whirling swipe isn't in pf2e, and each change in isolation doesn't look relevant until you put them all together, I did it all in one. Let me know if any look fine to split into a new PR.
targetItemas a resolvable for item alterations, so that item alterations can refer to sibling propertiesphaseis now supported for item alterations. This allows traits to be set after CreatureSize REs occur. What phases are allowed depend on the property. Delayed properties (persistent damage dc) were refactored to use the phase property.WeaponPF2e#reachto mirrorMeleePF2e#reach, so that we can actually access it within the item alteration. getReach() now delegates work to the getters. I wouldn't mind a reach.base and reach.attack fields to mirror what we do in the actor's reach data though, either as a getter or as system data, but then we will have to changemelee.reachto correspond.Afterwards, this implements whirling swipe:
{ "domain": "all", "key": "RollOption", "option": "whirling-swipe", "toggleable": true }{ "key": "ItemAlteration", "itemType": "weapon", "property": "traits", "mode": "add", "phase": "beforeDerived", "value": { "trait": "area-burst", "annotation": "max(5, @targetItem.reach)" }, "predicate": [ "item:melee", "item:hands-held:2", "whirling-swipe" ] }