public Mount TryPickup(IOnPickup pickup, ContactEvent contactEvent) { var vital = contactEvent.triggeringObj as Vital; if (ReferenceEquals(vital, null)) { return(null); } var vpr = pickup as IVitalsAffector; float value = vpr.Value; var defaultMount = DefaultMount; /// Apply to vital if vital has authority. if (IsMine) { float remainder = vital.ApplyChange(value, vpr.AllowOverload); return((!vpr.OnlyPickupIfUsed || value != remainder) ? defaultMount : null); } /// Vital does not belong to us, but we want to know IF it would have been consumed for prediction purposes. else { if (vpr.OnlyPickupIfUsed) { float remainder = vital.TestApplyChange(value, vpr.AllowOverload); return(value != remainder ? defaultMount : null); } return(defaultMount); } }
public virtual Mount TryPickup(IOnPickup trigger, ContactEvent contactEvent) { return(DefaultMount); }