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);
    }
Exemple #2
0
    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();
    }
Exemple #4
0
            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);
            }
Exemple #5
0
    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);
    }
Exemple #6
0
        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);
    }
Exemple #8
0
 // патчи для мед.койки
 // есть критичная болезня ?
 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);
            }
        }
    }
Exemple #12
0
 public Instance(IStateMachineTarget master)
     : base(master)
 {
     sicknesses = master.GetComponent <MinionModifiers>().sicknesses;
 }