public bool CanBeTakenBy(GameObject consumer) { if (!string.IsNullOrEmpty(info.effect)) { Effects component = consumer.GetComponent <Effects>(); if ((Object)component == (Object)null || component.HasEffect(info.effect)) { return(false); } } if (info.medicineType == MedicineInfo.MedicineType.Booster) { return(true); } Sicknesses sicknesses = consumer.GetSicknesses(); if (info.medicineType == MedicineInfo.MedicineType.CureAny && sicknesses.Count > 0) { return(true); } foreach (SicknessInstance item in sicknesses) { if (info.curedSicknesses.Contains(item.modifier.Id)) { return(true); } } return(false); }
private string OnSickTooltip() { int num = CountSickDupes(); SickTooltip.ClearMultiStringTooltip(); SickTooltip.AddMultiStringTooltip(string.Format(UI.TOOLTIPS.METERSCREEN_SICK_DUPES, num.ToString()), ToolTipStyle_Header); for (int i = 0; i < Components.LiveMinionIdentities.Count; i++) { MinionIdentity minionIdentity = Components.LiveMinionIdentities[i]; string text = minionIdentity.GetComponent <KSelectable>().GetName(); Sicknesses sicknesses = minionIdentity.GetComponent <MinionModifiers>().sicknesses; if (sicknesses.IsInfected()) { text += " ("; int num2 = 0; foreach (SicknessInstance item in sicknesses) { text = text + ((num2 <= 0) ? string.Empty : ", ") + item.modifier.Name; num2++; } text += ")"; } bool selected = i == immunityDisplayInfo.selectedIndex; AddToolTipLine(SickTooltip, text, selected); } return(string.Empty); }
protected override void OnCompleteWork(Worker worker) { if (!string.IsNullOrEmpty(info.effect)) { Effects component = worker.GetComponent <Effects>(); EffectInstance effectInstance = component.Get(info.effect); if (effectInstance != null) { effectInstance.timeRemaining = effectInstance.effect.duration; } else { component.Add(info.effect, true); } } Sicknesses sicknesses = worker.GetSicknesses(); foreach (string curedSickness in info.curedSicknesses) { SicknessInstance sicknessInstance = sicknesses.Get(curedSickness); if (sicknessInstance != null) { Game.Instance.savedInfo.curedDisease = true; sicknessInstance.Cure(); } } base.gameObject.DeleteObject(); }
public AttributeModifier baseHeartAttackChance; // базовый шанс public Instance(IStateMachineTarget master) : base(master) { minionIdentity = master.GetComponent <MinionIdentity>(); effects = master.GetComponent <Effects>(); sicknesses = master.gameObject.GetSicknesses(); health = master.GetComponent <Health>(); baseHeartAttackChance = new AttributeModifier(ATTRIBUTE_ID, 0, STRINGS.DUPLICANTS.ATTRIBUTES.HEARTATTACKSUSCEPTIBILITY.AGE_MODIFIER, false, false, false); }
private static int CountSickDupes() { int num = 0; foreach (MinionIdentity item in Components.LiveMinionIdentities.Items) { Sicknesses sicknesses = item.GetComponent <MinionModifiers>().sicknesses; if (sicknesses.IsInfected()) { num++; } } return(num); }
public Instance(IStateMachineTarget master) : base(master) { sicknesses = master.GetComponent <MinionModifiers>().sicknesses; primaryElement = master.GetComponent <PrimaryElement>(); traits = master.GetComponent <Traits>(); lastDiseaseSources = new Dictionary <HashedString, DiseaseSourceInfo>(); lastExposureTime = new Dictionary <HashedString, float>(); inhaleExposureTick = new Dictionary <HashedString, InhaleTickInfo>(); GameClock.Instance.Subscribe(-722330267, OnNightTime); OxygenBreather component = GetComponent <OxygenBreather>(); component.onSimConsume = (Action <Sim.MassConsumedCallback>)Delegate.Combine(component.onSimConsume, new Action <Sim.MassConsumedCallback>(OnAirConsumed)); }
public bool IsTreatmentAvailable(GameObject target) { Sicknesses sicknesses = target.GetSicknesses(); if (sicknesses != null) { foreach (SicknessInstance item in sicknesses) { if (treatments_available.TryGetValue(item.Sickness.id, out Tag _)) { return(true); } } } return(false); }
// патчи для мед.койки // есть критичная болезня ? private static bool HasCriticalDisease(Sicknesses sicknesses) { if (sicknesses != null) { using (IEnumerator <SicknessInstance> enumerator = sicknesses.GetEnumerator()) { while (enumerator.MoveNext()) { if (enumerator.Current.modifier.severity >= Sickness.Severity.Critical) { return(true); } } } } return(false); }
private void Refresh() { if ((Object)selectedTarget == (Object)null) { return; } List <Descriptor> allDescriptors = GameUtil.GetAllDescriptors(selectedTarget, true); Sicknesses sicknesses = selectedTarget.GetSicknesses(); if (sicknesses != null) { for (int i = 0; i < sicknesses.Count; i++) { allDescriptors.AddRange(sicknesses[i].GetDescriptors()); } } allDescriptors = allDescriptors.FindAll((Descriptor e) => e.type == Descriptor.DescriptorType.DiseaseSource); if (allDescriptors.Count > 0) { for (int j = 0; j < allDescriptors.Count; j++) { CollapsibleDetailContentPanel collapsibleDetailContentPanel = diseaseSourcePanel; string id = "source_" + j.ToString(); Descriptor descriptor = allDescriptors[j]; string text = descriptor.text; Descriptor descriptor2 = allDescriptors[j]; collapsibleDetailContentPanel.SetLabel(id, text, descriptor2.tooltipText); } } if (!CreateImmuneInfo()) { goto IL_00ee; } goto IL_00ee; IL_00ee: if (!CreateDiseaseInfo()) { currentGermsPanel.SetTitle(UI.DETAILTABS.DISEASE.NO_CURRENT_GERMS); currentGermsPanel.SetLabel("nodisease", UI.DETAILTABS.DISEASE.DETAILS.NODISEASE, UI.DETAILTABS.DISEASE.DETAILS.NODISEASE_TOOLTIP); } diseaseSourcePanel.Commit(); immuneSystemPanel.Commit(); currentGermsPanel.Commit(); infoPanel.Commit(); infectionPanel.Commit(); }
private bool CanAutoAssignTo(MinionAssignablesProxy worker) { bool flag = false; MinionIdentity minionIdentity = worker.target as MinionIdentity; if ((UnityEngine.Object)minionIdentity != (UnityEngine.Object)null) { if (IsValidEffect(healthEffect)) { Health component = minionIdentity.GetComponent <Health>(); if ((UnityEngine.Object)component != (UnityEngine.Object)null && component.hitPoints < component.maxHitPoints) { flag = true; } } if (!flag && IsValidEffect(diseaseEffect)) { MinionModifiers component2 = minionIdentity.GetComponent <MinionModifiers>(); Sicknesses sicknesses = component2.sicknesses; flag = (sicknesses.Count > 0); } } return(flag); }
private void CompleteDoctoring(GameObject target) { Sicknesses sicknesses = target.GetSicknesses(); if (sicknesses != null) { bool flag = false; foreach (SicknessInstance item in sicknesses) { if (treatments_available.TryGetValue(item.Sickness.id, out Tag value)) { Game.Instance.savedInfo.curedDisease = true; item.Cure(); storage.ConsumeIgnoringDisease(value, 1f); flag = true; break; } } if (!flag) { Debug.LogWarningFormat(base.gameObject, "Failed to treat any disease for {0}", target); } } }
public Instance(IStateMachineTarget master) : base(master) { sicknesses = master.GetComponent <MinionModifiers>().sicknesses; }