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; } }
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); }
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); }
/// <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);
public bool IsApplicable(KerbalHealthStatus khs) => Logic.Test(khs.PCM);