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 } }