public override void OnApply(ActorData actor, ActorData source)
    {
        if (containerToChange == StatContainerType.Current || containerToChange == StatContainerType.Both)
        {
            if (containerTypeBasis == StatContainerType.Current)
            {
                // use current stats as basis
                curr_amt_added += Mathf.RoundToInt(actor.currentStatCollection.GetValue(statTypeBasis) * (scale_factor));
            }
            else
            {
                //use max stats as basis
                curr_amt_added += Mathf.RoundToInt(actor.maxStatCollection.GetValue(statTypeBasis) * (scale_factor));
            }
        }

        if (containerToChange == StatContainerType.Max || containerToChange == StatContainerType.Both)
        {
            if (containerTypeBasis == StatContainerType.Current)
            {
                // use current stats as basis
                max_amt_added += Mathf.RoundToInt(actor.currentStatCollection.GetValue(statTypeBasis) * (scale_factor));
            }
            else
            {
                //use max stats as basis
                max_amt_added += Mathf.RoundToInt(actor.maxStatCollection.GetValue(statTypeBasis) * (scale_factor));
            }
        }

        actor.ChangeStateType(statTypeToChange, StatContainerType.Current, curr_amt_added);
        actor.ChangeStateType(statTypeToChange, StatContainerType.Max, max_amt_added);
    }
 public override void OnRemove(ActorData actor)
 {
     if (restore_stats)
     {
         actor.ChangeStateType(statTypeToChange, StatContainerType.Current, -curr_amt_added);    //invers e of amoutn added
         actor.ChangeStateType(statTypeToChange, StatContainerType.Max, -max_amt_added);         //inverse of amount added
     }
 }