protected void Init(Notices notices) { mResistance = 0; mNotices = notices; mStage = 0; mStageType = VectorControl.StageType.None; }
public bool Inoculate(long strain, bool paid) { Init(Notices.Identified); mStageType = VectorControl.StageType.Inoculated; bool newInoculate = false; if (mInoculationStrain < strain) { mInoculationStrain = strain; newInoculate = true; } if (paid) { mNotices |= Notices.PaidInnoculaion; } return(newInoculate); }
public VectorControl.StageType AdjustStage(DiseaseVector vector, SimDescription sim, out int stage, out int nextCheck) { stage = mStages[vector.Stage].GetNextStage(sim, vector); VectorControl.StageType result = VectorControl.StageType.Resisted; if ((stage < 0) || (stage >= mStages.Count)) { nextCheck = 0; } else { result = RunStage(vector, stage, out nextCheck); } int localStage = stage; if (Common.kDebugging) { Common.DebugNotify(vector.IsIgnored ? "" : vector.UnlocalizedName + Common.NewLine + "Stage: " + GetStageName(localStage) + Common.NewLine + sim.FullName, sim.CreatedSim); } return(result); }
public bool Process(SimDescription sim) { if (!mNonPersistableData.IsEnabled) { return(false); } if (mProtected > 0) { mProtected--; } else if (mProtected <= 0) { mVirulence = 1f; } if ((RawStrength <= 0) || (SimTypes.IsDead(sim))) { mStageType = VectorControl.StageType.Resisted; return(false); } if ((IsInoculated) || (IsResisted)) { return(false); } bool noticeShown = false; if (mNextCheck > 0) { mNextCheck--; } else { if (InRemission) { mResistance = 0; mNotices &= ~Notices.FirstSign; } mStageType = mNonPersistableData.AdjustStage(this, sim, out mStage, out mNextCheck); mNextCheck = (int)(mNextCheck * (Vector.Settings.mStageRatio / 100f)); string key = mNonPersistableData.GetStory(mStage, IsIdentified); if (!string.IsNullOrEmpty(key)) { if ((SimTypes.IsSelectable(sim)) || (!IsIgnored)) { Common.Notify(sim.CreatedSim, Common.Localize("Story:" + key, sim.IsFemale, new object[] { sim, GetLocalizedName(sim.IsFemale) })); noticeShown = true; } } else if ((!ShowingSigns) && (HadFirstSign)) { if (SimTypes.IsSelectable(sim)) { if (IsIdentified) { Common.Notify(sim.CreatedSim, Common.Localize("Vector:Better", sim.IsFemale, new object[] { sim, GetLocalizedName(sim.IsFemale) })); } else { Common.Notify(sim.CreatedSim, Common.Localize("Vector:BetterUnknown", sim.IsFemale, new object[] { sim })); } } mNotices &= ~Notices.FirstSign; } if (IsResisted) { return(false); } } if (ShowingSigns) { if (!HadFirstSign) { mNotices |= Notices.FirstSign; if (!noticeShown) { if (SimTypes.IsSelectable(sim)) { Common.Notify(sim.CreatedSim, Common.Localize("Vector:FirstSign", sim.IsFemale, new object[] { sim })); } else if (!IsIgnored) { OutbreakControl.ShowNotice(sim, this, Common.kDebugging ? "Showing: " : ""); } } } if (sim.CreatedSim != null) { BuffGermy.BuffInstanceGermy germy = sim.CreatedSim.BuffManager.GetElement(BuffNames.Germy) as BuffGermy.BuffInstanceGermy; if (germy == null) { OccultTypes currentOccultTypes = sim.OccultManager.mCurrentOccultTypes; try { sim.OccultManager.mCurrentOccultTypes = OccultTypes.None; if (sim.CreatedSim.BuffManager.AddElement(BuffNames.Germy, sFromInfectionOrigin)) { germy = sim.CreatedSim.BuffManager.GetElement(BuffNames.Germy) as BuffGermy.BuffInstanceGermy; } } finally { sim.OccultManager.mCurrentOccultTypes = currentOccultTypes; } } if (germy != null) { if (germy.GermyContagionBroadcaster != null) { germy.GermyContagionBroadcaster.Dispose(); germy.GermyContagionBroadcaster = null; } germy.mCurrentTotalDurationIncrease = 0; germy.ModifyDuration(30); } } mNonPersistableData.Symptomize(sim.CreatedSim, this); } if (IsMutating) { Mutate(); } PurchaseControl.AddCheck(sim.Household); return(true); }
protected void Start(Notices notices) { Init(notices); mStageType = mNonPersistableData.InitialStage(this, out mNextCheck); }
public bool HasType(VectorControl.StageType type) { return((mType & type) == type); }