Okay, I'm not familiar with the system, so thank you for the explanation. I might still be missing something, so we can try something else if this doesn't work as you intended.
Here's an example skeleton.
Code:
Rote (Whatever), Tech/A, default(0), needs(SK:Something|SK:Other), upto(me::neg+@if(PE:Perkiness then 4 else 0)), page(user), neg(6)
From how I understand it, you don't actually need much. Just set the default() for the technique to 0, so that all levels bought raise it from 0 to give you your pluses.
I added the new tag neg(), which in this case I set to 6 just so it wasn't 4. That's the neg value in your explanation, and it's the limit for your levels.
Neg() is not necessary as a tag, you could just edit the
me::neg in the upto() formula to the number each time as needed, if you're creating all the things up front.
If you want each combination of possible Path skills to set the neg(), you'll have to create a formula in neg() to find the lowest negative value of the related Path skills, and return that to use.
The upto is fixed at neg() unless the given perk exists, then it gets 4 more.
(The needs() I set in case it's needed somehow, but the referenced skills aren't used in the example at all.)
Does this make sense? Am I missing something important? I'm not sure about the relationship of possible Path skills to the Rote, or if the Rote can be applied anywhere.
This should be pretty doable.