Esempio n. 1
0
        public override IEnumerable <FiringIncident> MakeIntervalIncidents(IIncidentTarget target)
        {
            if (Props.minDanger != 0)
            {
                Map map = target as Map;
                if (map == null || (int)map.dangerWatcher.DangerRating < (int)Props.minDanger)
                {
                    yield break;
                }
            }
            float num = StorytellerUtility.AllyIncidentFraction(Props.fullAlliesOnly);

            if (num <= 0f)
            {
                yield break;
            }
            int incCount = IncidentCycleUtility.IncidentCountThisInterval(target, Find.Storyteller.storytellerComps.IndexOf(this), Props.minDaysPassed, 60f, 0f, Props.minSpacingDays, Props.baseIncidentsPerYear, Props.baseIncidentsPerYear, num);

            for (int i = 0; i < incCount; i++)
            {
                IncidentParms parms = GenerateParms(Props.incident.category, target);
                if (Props.incident.Worker.CanFireNow(parms))
                {
                    yield return(new FiringIncident(Props.incident, this, parms));
                }
            }
        }
        public override IEnumerable <FiringIncident> MakeIntervalIncidents(IIncidentTarget target)
        {
            float num = 1f;

            if (Props.acceptFractionByDaysPassedCurve != null)
            {
                num *= Props.acceptFractionByDaysPassedCurve.Evaluate(GenDate.DaysPassedFloat);
            }
            if (Props.acceptPercentFactorPerThreatPointsCurve != null)
            {
                num *= Props.acceptPercentFactorPerThreatPointsCurve.Evaluate(StorytellerUtility.DefaultThreatPointsNow(target));
            }
            if (Props.acceptPercentFactorPerProgressScoreCurve != null)
            {
                num *= Props.acceptPercentFactorPerProgressScoreCurve.Evaluate(StorytellerUtility.GetProgressScore(target));
            }
            int incCount = IncidentCycleUtility.IncidentCountThisInterval(target, Find.Storyteller.storytellerComps.IndexOf(this), Props.minDaysPassed, Props.onDays, Props.offDays, Props.minSpacingDays, Props.numIncidentsRange.min, Props.numIncidentsRange.max, num);

            for (int i = 0; i < incCount; i++)
            {
                FiringIncident firingIncident = GenerateIncident(target);
                if (firingIncident != null)
                {
                    yield return(firingIncident);
                }
            }
        }
        public override IEnumerable <FiringIncident> MakeIntervalIncidents(IIncidentTarget target)
        {
            if (this.Props.minDanger != StoryDanger.None)
            {
                Map map = target as Map;
                if (map == null || map.dangerWatcher.DangerRating < this.Props.minDanger)
                {
                    return;
                }
            }
            float allyIncidentFraction = StorytellerUtility.AllyIncidentFraction(this.Props.fullAlliesOnly);

            if (allyIncidentFraction > 0f)
            {
                int incCount = IncidentCycleUtility.IncidentCountThisInterval(target, Find.Storyteller.storytellerComps.IndexOf(this), this.Props.minDaysPassed, 60f, 0f, this.Props.minSpacingDays, this.Props.baseIncidentsPerYear, this.Props.baseIncidentsPerYear, allyIncidentFraction);
                for (int i = 0; i < incCount; i++)
                {
                    IncidentParms parms = this.GenerateParms(this.Props.incident.category, target);
                    if (this.Props.incident.Worker.CanFireNow(parms, false))
                    {
                        yield return(new FiringIncident(this.Props.incident, this, parms));
                    }
                }
            }
        }
        public override IEnumerable <FiringIncident> MakeIntervalIncidents(IIncidentTarget target)
        {
            if (Props.minDanger != 0)
            {
                Map map = target as Map;
                if (map == null || (int)map.dangerWatcher.DangerRating < (int)Props.minDanger)
                {
                    yield break;
                }
            }
            float allyIncidentFraction = StorytellerUtility.AllyIncidentFraction(Props.fullAlliesOnly);

            if (!(allyIncidentFraction <= 0f))
            {
                int           incCount = IncidentCycleUtility.IncidentCountThisInterval(target, Find.Storyteller.storytellerComps.IndexOf(this), Props.minDaysPassed, 60f, 0f, Props.minSpacingDays, Props.baseIncidentsPerYear, Props.baseIncidentsPerYear, allyIncidentFraction);
                int           i        = 0;
                IncidentParms parms;
                while (true)
                {
                    if (i >= incCount)
                    {
                        yield break;
                    }
                    parms = GenerateParms(Props.incident.category, target);
                    if (Props.incident.Worker.CanFireNow(parms))
                    {
                        break;
                    }
                    i++;
                }
                yield return(new FiringIncident(Props.incident, this, parms));

                /*Error: Unable to find new state assignment for yield return*/;
            }
        }
Esempio n. 5
0
        public override IEnumerable <FiringIncident> MakeIntervalIncidents(IIncidentTarget target)
        {
            float difficultyFactor = (!Props.applyRaidBeaconThreatMtbFactor) ? 1f : Find.Storyteller.difficulty.raidBeaconThreatCountFactor;
            float acceptFraction   = 1f;

            if (Props.acceptFractionByDaysPassedCurve != null)
            {
                acceptFraction *= Props.acceptFractionByDaysPassedCurve.Evaluate(GenDate.DaysPassedFloat);
            }
            if (Props.acceptPercentFactorPerThreatPointsCurve != null)
            {
                acceptFraction *= Props.acceptPercentFactorPerThreatPointsCurve.Evaluate(StorytellerUtility.DefaultThreatPointsNow(target));
            }
            int            incCount = IncidentCycleUtility.IncidentCountThisInterval(target, Find.Storyteller.storytellerComps.IndexOf(this), Props.minDaysPassed, Props.onDays, Props.offDays, Props.minSpacingDays, Props.numIncidentsRange.min * difficultyFactor, Props.numIncidentsRange.max * difficultyFactor, acceptFraction);
            int            i        = 0;
            FiringIncident fi;

            while (true)
            {
                if (i >= incCount)
                {
                    yield break;
                }
                fi = GenerateIncident(target);
                if (fi != null)
                {
                    break;
                }
                i++;
            }
            yield return(fi);

            /*Error: Unable to find new state assignment for yield return*/;
        }
        public override IEnumerable <FiringIncident> MakeIntervalIncidents(IIncidentTarget target)
        {
            float difficultyFactor = (!this.Props.applyRaidBeaconThreatMtbFactor) ? 1f : Find.Storyteller.difficulty.raidBeaconThreatCountFactor;
            float acceptFraction   = 1f;

            if (this.Props.acceptFractionByDaysPassedCurve != null)
            {
                acceptFraction *= this.Props.acceptFractionByDaysPassedCurve.Evaluate(GenDate.DaysPassedFloat);
            }
            if (this.Props.acceptPercentFactorPerThreatPointsCurve != null)
            {
                acceptFraction *= this.Props.acceptPercentFactorPerThreatPointsCurve.Evaluate(StorytellerUtility.DefaultThreatPointsNow(target));
            }
            int incCount = IncidentCycleUtility.IncidentCountThisInterval(target, Find.Storyteller.storytellerComps.IndexOf(this), this.Props.minDaysPassed, this.Props.onDays, this.Props.offDays, this.Props.minSpacingDays, this.Props.numIncidentsRange.min * difficultyFactor, this.Props.numIncidentsRange.max * difficultyFactor, acceptFraction);

            for (int i = 0; i < incCount; i++)
            {
                FiringIncident fi = this.GenerateIncident(target);
                if (fi != null)
                {
                    yield return(fi);
                }
            }
            yield break;
        }
Esempio n. 7
0
        public static IEnumerable <FiringIncident> MakeIntervalIncidents(ThreatsGeneratorParams parms, IIncidentTarget target, int startTick)
        {
            float threatsGeneratorThreatCountFactor = Find.Storyteller.difficulty.threatsGeneratorThreatCountFactor;
            int   incCount = IncidentCycleUtility.IncidentCountThisInterval(target, parms.randSeed, (float)startTick / 60000f, parms.onDays, parms.offDays, parms.minSpacingDays, parms.numIncidentsRange.min * threatsGeneratorThreatCountFactor, parms.numIncidentsRange.max * threatsGeneratorThreatCountFactor);

            for (int i = 0; i < incCount; i++)
            {
                FiringIncident firingIncident = MakeThreat(parms, target);
                if (firingIncident != null)
                {
                    yield return(firingIncident);
                }
            }
        }