コード例 #1
0
        public void FixedUpdate()
        {
            if (Core.IsInEditor)
            {
                return;
            }
            if (!isActiveAndEnabled || !vessel.IsControllable)
            {
                Core.Log(vessel.vesselName + " is not controllable or the ModuleHealthEnvironmentSensor is inactive. No data is displayed by " + part.name);
                Fields["displayData"].guiActive = false;
                return;
            }
            else
            {
                Fields["displayData"].guiActive = true;
            }
            switch (type.ToLower())
            {
            case "radiation":
                displayData = (float)KerbalHealthStatus.GetCosmicRadiation(vessel);
                Core.Log("Displaying radiation of " + displayData);
                break;

            case "magnetosphere":
                displayData = 1 - (float)KerbalHealthStatus.GetMagnetosphereCoefficient(vessel);
                Core.Log("Displaying magnetic field strength of " + displayData);
                break;

            default:
                Fields["displayData"].guiActive = false;
                Core.Log("Unrecognized sensor type '" + type + "'!");
                break;
            }
        }
コード例 #2
0
        public override double ChangePerDay(ProtoCrewMember pcm)
        {
            if (!Core.SicknessEnabled)
            {
                return(0);
            }
            if (Core.IsInEditor)
            {
                return(IsEnabledInEditor() ? BaseChangePerDay : 0);
            }
            KerbalHealthStatus khs = Core.KerbalHealthList.Find(pcm);

            if (khs == null)
            {
                return(0);
            }
            if (khs.HasCondition("Sick"))
            {
                return(BaseChangePerDay);
            }
            return(0);
        }
コード例 #3
0
        public override double ChangePerDay(ProtoCrewMember pcm)
        {
            if (!Core.ConditionsEnabled)
            {
                return(0);
            }
            KerbalHealthStatus khs = Core.KerbalHealthList.Find(pcm);

            if (khs == null)
            {
                return(0);
            }
            float  k   = Core.ConditionsEffect;
            double res = 0;

            foreach (HealthCondition hc in khs.Conditions)
            {
                res += hc.HPChangePerDay * k;
            }
            Core.Log("Conditions HP chande per day: " + res);
            return(Core.IsInEditor ? (IsEnabledInEditor() ? res : 0) : res);
        }
コード例 #4
0
ファイル: HealthFactor.cs プロジェクト: LouisB3/KerbalHealth
 /// <summary>
 /// Returns actual factor's HP change per day for a given kerbal, before factor multipliers
 /// </summary>
 /// <param name="khs"></param>
 /// <returns></returns>
 abstract public double ChangePerDay(KerbalHealthStatus khs);
コード例 #5
0
 public bool IsApplicable(KerbalHealthStatus khs) => Logic.Test(khs.PCM);