示例#1
0
        public override float Calculate(ref RegenDataInfo data)
        {
            // d = v0*t + (a*t^2)/2 -> 0 = (a*t^2)/2 + v0*t - d
            float maxRegenRate    = 2f * data.regenRate;
            float regenChangeRate = -maxRegenRate / data.originalRegenTime;

            if (SolveForFactors(regenChangeRate / 2f, maxRegenRate, -data.agent.Health, out float t1, out float t2))
            {
                if (t1 >= 0f && t1 < data.regenTime)
                {
                    return(maxRegenRate * (data.regenTime - t1) / data.regenTime);
                }
                else if (t2 >= 0f && t2 < data.regenTime)
                {
                    return(maxRegenRate * (data.regenTime - t2) / data.regenTime);
                }
            }

            return(0f);
        }
示例#2
0
        public override float Calculate(ref RegenDataInfo data)
        {
            float healthToMaxRatio = data.agent.Health / data.agent.HealthLimit;

            return(10f * data.regenRate * (MathF.Sqrt(healthToMaxRatio) - healthToMaxRatio));
        }
示例#3
0
 // You must define this method as it is called by the game when regenerating.
 public override float Calculate(ref RegenDataInfo data)
 {
     return(data.regenRate);
 }