private object IOnEntityEffect(StandardEntityFluidEffect effect, EntityEffectSourceData sourceData, float relativeValue) { if (sourceData == null || effect.ResolveTargetType() != EntityFluidEffectKeyDatabase.Instance?.Health) { return(null); } EntityStats stats = effect.EntityStats; if (stats == null) { return(null); } float newValue = Mathf.Clamp(effect.Value + relativeValue, effect.MinValue, effect.MaxValue); float updatedValue = newValue - effect.Value; sourceData.Value = updatedValue; AIEntity entity = stats.GetComponent <AIEntity>(); if (entity != null) { if (updatedValue > 0) { return(Interface.CallHook("OnEntityHeal", entity, sourceData)); } else if (updatedValue < 0) { return(Interface.CallHook("OnEntityTakeDamage", entity, sourceData)); } return(null); } HNetworkView networkView = stats.networkView; if (networkView != null) { PlayerSession session = GameManager.Instance.GetSession(stats.networkView.owner); if (session != null) { if (updatedValue > 0) { return(Interface.CallHook("OnPlayerHeal", session, sourceData)); } else if (updatedValue < 0) { return(Interface.CallHook("OnPlayerTakeDamage", session, sourceData)); } } } return(null); }
private void IOnEntityEffectInitialize(StandardEntityFluidEffect effect, EntityStats stats) { effect.EntityStats = stats; }