Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 private void IOnEntityEffectInitialize(StandardEntityFluidEffect effect, EntityStats stats)
 {
     effect.EntityStats = stats;
 }