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 override object OnInfect(GameObject go, SicknessInstance diseaseInstance) { var statesInstance = new StatesInstance(diseaseInstance); statesInstance.StartSM(); return(statesInstance); }
public void OnSicknessCured(object sickness_instance_data) { SicknessInstance sicknessInstance = (SicknessInstance)sickness_instance_data; ExposureType[] tYPES = GERM_EXPOSURE.TYPES; foreach (ExposureType exposureType in tYPES) { if (exposureType.sickness_id == sicknessInstance.Sickness.Id) { SetExposureState(exposureType.germ_id, ExposureState.None); } } }
public override object OnInfect(GameObject go, SicknessInstance diseaseInstance) { if (go != null) { GameScheduler.Instance.Schedule("InfectWith" + sickness_id, 0.5f, (_) => { var effects = go.GetComponent <Effects>(); // Do not inflict the symptoms if the excluded effect is present if (effects == null || string.IsNullOrEmpty(excluded_effect) || !effects. HasEffect(excluded_effect)) { var exposure_info = new SicknessExposureInfo(sickness_id, infection_source_info); go.GetComponent <MinionModifiers>()?.sicknesses?.Infect(exposure_info); } }); } return(null); }
public override object OnInfect(GameObject go, SicknessInstance diseaseInstance) { return(null); }
public override object OnInfect(GameObject go, SicknessInstance diseaseInstance) { // Doesn't do anything on infect return(null); }