Example #1
0
            public static bool Prefix(DoctorStation __instance, Dictionary <HashedString, Tag> ___treatments_available,
                                      Storage ___storage, DoctorStation.StatesInstance ___smi)
            {
                var docStation = Traverse.Create(__instance);

                ___treatments_available.Clear();

                foreach (var go in ___storage.items)
                {
                    if (go.HasTag(GameTags.MedicalSupplies))
                    {
                        var tag = go.PrefabID();
                        if (tag == "IntermediateCure")
                        {
                            docStation.CallMethod("AddTreatment", SlimeLethalSickness.ID, tag);
                        }
                        if (tag == "AdvancedCure")
                        {
                            docStation.CallMethod("AddTreatment", ZombieSickness.ID, tag);
                        }
                    }
                }

                ___smi.sm.hasSupplies.Set(___treatments_available.Count > 0, ___smi);

                return(false);
            }
    public override void DoPostConfigureComplete(GameObject go)
    {
        Storage storage = go.AddOrGet <Storage>();

        storage.showInUI = true;
        ManualDeliveryKG manualDeliveryKG = go.AddOrGet <ManualDeliveryKG>();

        manualDeliveryKG.SetStorage(storage);
        manualDeliveryKG.requestedItemTag       = SUPPLY_TAG;
        manualDeliveryKG.capacity               = 10f;
        manualDeliveryKG.refillMass             = 5f;
        manualDeliveryKG.minimumMass            = 1f;
        manualDeliveryKG.choreTypeIDHash        = Db.Get().ChoreTypes.DoctorFetch.IdHash;
        manualDeliveryKG.operationalRequirement = FetchOrder2.OperationalRequirement.Functional;
        DoctorStation doctorStation = go.AddOrGet <DoctorStation>();

        doctorStation.overrideAnims = new KAnimFile[1]
        {
            Assets.GetAnim("anim_interacts_medical_bed_kanim")
        };
        doctorStation.workLayer = Grid.SceneLayer.BuildingFront;
        doctorStation.supplyTag = SUPPLY_TAG;
        RoomTracker roomTracker = go.AddOrGet <RoomTracker>();

        roomTracker.requiredRoomType   = Db.Get().RoomTypes.Hospital.Id;
        roomTracker.requirement        = RoomTracker.Requirement.CustomRecommended;
        roomTracker.customStatusItemID = Db.Get().BuildingStatusItems.ClinicOutsideHospital.Id;
        DoctorStationDoctorWorkable doctorStationDoctorWorkable = go.AddOrGet <DoctorStationDoctorWorkable>();

        doctorStationDoctorWorkable.overrideAnims = new KAnimFile[1]
        {
            Assets.GetAnim("anim_interacts_medical_bed_doctor_kanim")
        };
        doctorStationDoctorWorkable.SetWorkTime(60f);
        doctorStationDoctorWorkable.requiredSkillPerk = Db.Get().SkillPerks.CanAdvancedMedicine.Id;
    }