private static IDelayHolder CalculateDelay(IncidentParms parms) { if (parms.target == null) { return((IDelayHolder)Activator.CreateInstance(SpottedSettings.GetDelayType(), 0)); } var spottersCounter = new SpottersCounter((Map)parms.target); float modifier; try { modifier = SpottedSettings.GetModifiersDictionary()[parms.raidArrivalMode.defName]; } catch { modifier = 1f; } var watchtowerPower = spottersCounter.WatchtowersCount() * ThingDefOf.Watchtower.GetStatValueAbstract(StatDefOf.SpottingRange); var scannerPower = spottersCounter.PoweredMotionScannersCount() * ThingDefOf.MotionScanner.GetStatValueAbstract(StatDefOf.SpottingRange); var satellitePower = spottersCounter.PoweredSatelliteController() * ThingDefOf.SatelliteController.GetStatValueAbstract(StatDefOf.SpottingRange); var delay = (SpottedSettings.allowedTimeRange.RandomInRange + watchtowerPower + scannerPower + satellitePower) * modifier * GenDate.TicksPerHour; return((IDelayHolder)Activator.CreateInstance(SpottedSettings.GetDelayType(), (int)delay)); }
public SpottedMod(ModContentPack content) : base(content) { settings = GetSettings <SpottedSettings>(); }