Details
-
Type:
New Token
-
Status:
Proposed
-
Priority:
Minor
-
Resolution: Unresolved
-
Affects Version/s: None
-
Fix Version/s: None
-
Component/s: None
-
Labels:None
-
Subtype:None Taken
Description
SF - ID: 1809931
Last Update: Settings changed ( karianna )
Details:
This isn't something I'd expect to go on the short list with all the token
work going into 5.14 and 6, I'm just throwing it out to see what folks think
and to get it trackered if enough feel it has merit. Some other solution may
also have been proposed in the past.
Here's the problem: the are some feats (and probably other objects as well)
which grant benefits which are based on the level at which the feat is
taken. For example there is a non-ogl feat which grant an additional
language at the level take and a new one at each level thereafter.
The only way I know to code such feats is to create 20 hidden feats (one for
each level) and have the visible feat add one when chosen. The hidden feat
adds a static amount to the variable defined in the main feat which provides
the benefit. This can't be done with the usual DEFINE and BONUS:VAR because
once the character goes up in level so does the VAR.
I would like to propose a tag which would allow you to set an additive value
to a variable that would remain static to the value it was when the object
it was in was added to the PC.
SETVARIABLE:x|y
X = DEFINEd variable
Y = valiable, number or formula. Value assigned at the time of evaluation.
Example:
SETVARIABLE:LevelWhenTaken|TL
This would have some similarities to BONUS:VAR, it would require the
variable to be DEFINEd or it would do nothing. it would be additive so if
the variable already had a value SETVARIABLE would add to it. Where it
differs is that Y would be evaluated once and the value at the time would be
added to the variable. I imagine that mechanically how this would work is
that PCGen would evaluate Y and then write that value to the pcg file and
reference it from there thereafter.
I can see potential for use in other objects besides feats for the same
purpose (or different purposes even), prestige classes could use it to track
when they were added, equipment could track what level they were acquired.
Since Y can be any variable not just level it can be used to track anything,
what was you strength score when you took the feat, etc..
– ~ Eddy Anthony (MoSaT) ~ PCGen BoD, Data Content Second, Doc Chimp, OS Tamarin
—
Tom:
Second reaction:
Why don't we just create a JEP variable/formula called LevelFirstTaken
that works for any object? We will be able to derive that in 6.x, so
I don't know why we need a new token defined. Seems like a waste to me.
In Feat Foo: BONUS...|...|LevelFirstTaken
In Class Bar: BONUS...|...|LevelFirstTaken(FEAT,Foo)
(FEAT,Foo) is implied in the first case (no args refers to self)
===
Having said that, here are a few thoughts on the proposal (some of
which also impact my thought above), for posterity, if nothing else
(this way we remember them later)
- SetVariable is additive to a previously existing define? So it's
not a Set, it's a lock, but it's really not that either because it's
additive. That's very very confusing. Use "atomic" functions, so
don't add and set in the same place.
- Need to carefully consider the implementation of "write to the PCG
file" (just make it static), because if you take feat and then untake
it and then take it again but at a different level (this is one of the
"leveling down" problems), you're in for all kinds of ugliness.
What would you expect to happen with:
CLASS:Foo DEFINE:ThisVar|0
2 AUTO:FEAT|Bar
4 AUTO:FEAT|Bar
the variable is set to 2? (assuming it's SETVARIABLE:ThisVar|TL in Bar?)
- How does this interact with REMOVE:FEAT? If Bar above is removed at
level 3, what does the variable become?
- If this can be used globally, and not just in feats, then if placed
into a skill, when is the variable set? when the skill is first taken,
or when the skill achieves a rank of 1 (think cross-class skills for
the case where rank = 0.5)
Submitted:
LegacyKing ( amaitland ) - 2007-10-09 01:09:11 EDT
Wasn't it part of the CDOM change that every ability / skill / etc. no knows at which level it was taken?