effect.active should be internally overhauled into effect.state. state will be in one of the following states:
EFFECT_INACTIVE ( 0)
EFFECT_ACTIVE ( 1)
EFFECT_OVERRIDDEN (-1)
EFFECT_EXPIRED (-2)
EFFECT_CANCELED (-3)
EFFECT_REMOVED (-4)
This is to provide information to systems attempting to use temporary effects as a sort of state machine.
if(effect.state) can be checked as a boolean to check whether the effect was ever active at one time.
state<=0 means that the effect either was never added to the effects list of the target, or was removed from it at some point.
state==1 means that the state is currently active.
state==0 means that the effect was never added to the effects list of the target.
state<0 means that the effect is not running, and was at one time added to the effects list.
Each of these potential states has a particular use case and the state order arithmetic yields much more information external to the effect's code than would be otherwise acheived with a simple boolean.