protected override OptionResult Run(GameHitParameters <Sim> parameters) { List <VectorBooter.Item> choices = VectorBooter.GetVectorItems(parameters.mTarget.SimDescription); CommonSelection <VectorBooter.Item> .Results items = new CommonSelection <VectorBooter.Item>(Name, choices).SelectMultiple(); if ((items == null) || (items.Count == 0)) { return(OptionResult.Failure); } string vectors = null; foreach (VectorBooter.Item item in items) { VectorControl.Inoculate(parameters.mTarget.SimDescription, item.Value, true, false); vectors += Common.NewLine + " " + item.Value.GetLocalizedName(parameters.mTarget.IsFemale); } if (!string.IsNullOrEmpty(vectors)) { Common.Notify(parameters.mTarget, Common.Localize("Inoculate:Success", parameters.mTarget.IsFemale, new object[] { parameters.mTarget }) + vectors); } return(OptionResult.SuccessClose); }
public static bool Perform(SimDescription sim, bool promptStrength, bool random) { List <VectorBooter.Item> choices = VectorBooter.GetVectorItems(sim); int maxSelection = 0; if (!promptStrength) { maxSelection = 1; } List <VectorBooter.Item> selection = new List <VectorBooter.Item>(); if (random) { if (choices.Count == 0) { return(false); } selection.Add(RandomUtil.GetRandomObjectFromList(choices)); } else { CommonSelection <VectorBooter.Item> .Results items = new CommonSelection <VectorBooter.Item>(Common.Localize("Infect:MenuName"), choices).SelectMultiple(maxSelection); if ((items == null) || (items.Count == 0)) { return(false); } selection.AddRange(items); } foreach (VectorBooter.Item item in selection) { DiseaseVector.Variant strain = Vector.Settings.GetCurrentStrain(item.Value); int strength = strain.Strength; if (promptStrength) { string text = StringInputDialog.Show(Common.Localize("Infect:MenuName"), Common.Localize("Infect:Prompt", false, new object[] { item.Value.GetLocalizedName(false) }), strain.Strength.ToString()); if (!int.TryParse(text, out strength)) { Common.Notify(Common.Localize("Numeric:Error")); } } strain.Strength = strength; DiseaseVector disease = new DiseaseVector(item.Value, strain); disease.Infect(sim, true); } return(true); }
protected override OptionResult Run(GameHitParameters <GameObject> parameters) { List <VectorBooter.Item> choices = VectorBooter.GetVectorItems(null); CommonSelection <VectorBooter.Item> .Results items = new CommonSelection <VectorBooter.Item>(Name, choices).SelectMultiple(); if ((items == null) || (items.Count == 0)) { return(OptionResult.Failure); } foreach (VectorBooter.Item item in items) { OutbreakControl.StartOutbreak(item.Value, true); } return(OptionResult.SuccessRetain); }
public override List <ISettingOption> GetOptions() { List <ISettingOption> results = new List <ISettingOption>(); results.Add(new EnabledSetting(mGuid)); results.Add(new WatchesSetting(mGuid)); results.Add(new MotiveAdjustmentRatioSetting(mGuid)); VectorBooter.Data vector = VectorBooter.GetVector(mGuid); if (vector != null) { foreach (string setting in vector.CustomSettings) { results.Add(new CustomSetting(setting)); } } return(results); }
public override bool Run() { try { StandardEntry(); try { if (!Target.StartComputing(this, SurfaceHeight.Table, true)) { return(false); } AnimateSim("GenericTyping"); List <VectorBooter.Item> choices = VectorBooter.GetVectorItems(null); VectorBooter.Item item = new CommonSelection <VectorBooter.Item>(GetInteractionName(), choices, new StrainColumn()).SelectSingle(); if (item == null) { return(false); } Common.Notify(item.Value.GetResearch(Actor.IsFemale)); Target.StopComputing(this, Computer.StopComputingAction.TurnOff, false); return(true); } finally { StandardExit(); } } catch (ResetException) { throw; } catch (Exception e) { Common.Exception(Actor, Target, e); return(false); } }
public bool OnLoadFixup() { mNonPersistableData = VectorBooter.GetVector(Guid); if (mNonPersistableData == null) { return(false); } if (mStrain == null) { mStrain = new Variant(mNonPersistableData, Vector.Settings.GetCurrentStrain(mNonPersistableData)); } if (mStage > mNonPersistableData.NumStages) { mStage = 0; } return(true); }
public static bool Inoculate(SimDescription sim, VectorBooter.Data vector, bool paid, bool testExisting) { DiseaseVector inoculate = new DiseaseVector(vector, Vector.Settings.GetCurrentStrain(vector)); inoculate.Inoculate(vector.InoculationStrain, paid); return Inoculate(sim, inoculate, paid, testExisting); }
public InstigatorListener(EventTypeId id, VectorBooter.Data vector, InstigatorBooter.Data instigator) : base(id, null) { mVector = vector; mInstigator = instigator; }
public static void StartOutbreak(VectorBooter.Data vector, bool verbose) { DiseaseVector disease = new DiseaseVector(vector, Vector.Settings.GetNewStrain(vector)); ScoringLog.sLog.IncStat(disease.UnlocalizedName + " Attempt Outbreak"); List<Sim> sims = new List<Sim>(LotManager.Actors); if (sims.Count > 0) { int count = 0; while ((count < Vector.Settings.mNumPatientZero) && (sims.Count > 0)) { Sim choice = RandomUtil.GetRandomObjectFromList(sims); sims.Remove(choice); if (choice.SimDescription.ToddlerOrBelow) continue; if (!Vector.Settings.mOutbreakAllowActive) { if (choice.Household == Household.ActiveHousehold) continue; } if (disease.Infect(choice.SimDescription, true)) { count++; if (verbose) { ShowNotice(choice.SimDescription, disease, Common.kDebugging ? "Outbreak" : ""); } ScoringLog.sLog.IncStat(disease.UnlocalizedName + " Outbreak"); } } } }
protected DiseaseVector.Variant GetNewStrain(VectorBooter.Data vector, DiseaseVector.Variant strain, bool force) { DiseaseVector.Variant newStrain = new DiseaseVector.Variant(vector, strain); if ((force) || (strain.Mutated)) { // Doing this stops the previous strain from reentering this process strain.Mutated = false; long id = 1; DiseaseVector.Variant oldStrain; if (mVariants.TryGetValue(vector.Guid, out oldStrain)) { if (oldStrain.Strain < strain.Strain) { oldStrain.Strain = strain.Strain; } id = oldStrain.Strain; } else { oldStrain = null; } if ((oldStrain == null) || (oldStrain.Variation(vector) < newStrain.Variation(vector))) { newStrain.Strain++; oldStrain = new DiseaseVector.Variant(newStrain, id + 1); mVariants.Remove(vector.Guid); mVariants.Add(vector.Guid, oldStrain); if (Common.kDebugging) { Common.DebugNotify("BETTER " + vector.Guid + " Strain:" + Common.NewLine + oldStrain); } } else if (RandomUtil.RandomChance01(vector.StrainMutationRate * (force ? 2 : 1))) { newStrain.Strain = id + 1; if (force) { oldStrain.Strain = newStrain.Strain; if (Common.kDebugging) { Common.DebugNotify("OUTBREAK " + vector.Guid + " Strain:" + Common.NewLine + newStrain); } } else { if (Common.kDebugging) { Common.DebugNotify("RANDOM " + vector.Guid + " Strain:" + Common.NewLine + newStrain); } } } } return newStrain; }
public DiseaseVector.Variant GetNewStrain(VectorBooter.Data vector, DiseaseVector.Variant strain) { return GetNewStrain(vector, strain, false); }
public DiseaseVector.Variant GetNewStrain(VectorBooter.Data vector) { return GetNewStrain(vector, GetCurrentStrain(vector), true); }
public DiseaseVector.Variant GetCurrentStrain(VectorBooter.Data vector) { DiseaseVector.Variant strain; if (mVariants.TryGetValue(vector.Guid, out strain)) { return strain; } else { return new DiseaseVector.Variant(vector); } }
public void Register(VectorBooter.Data vector) { Dictionary<EventTypeId, bool> events = new Dictionary<EventTypeId, bool>(); GetEvents(events); foreach (EventTypeId e in events.Keys) { new OutbreakControl.InstigatorListener(e, vector, this); } }
public Data(XmlDbRow row, VectorBooter.Test test) { mGuid = row.GetString("GUID"); mStory = row.GetString("Story"); mTest = test; }
public Data(XmlDbRow row, VectorBooter.Test test) { mGuid = row.GetString("GUID"); mDelta = row.GetInt("Delta", 0); if (mDelta == 0) { BooterLogger.AddError(mGuid + " Missing Delta"); } mTest = test; }