protected override bool TryExecuteWorker(IncidentParms parms) { if (!settings.Active) { return(false); } List <ConstellationsDef> toInvoke = new List <ConstellationsDef>(); foreach (var con in DefDatabase <ConstellationsDef> .AllDefs) { if (con.ConstellationType == ConstellationType.Positive && positiveEnable == 0) { continue; } if (con.ConstellationType == ConstellationType.Negative && negativeEnable == 0) { continue; } List <ConstellationCondition> conditions = con.Conditions; bool canSpawn = true; foreach (var condition in conditions) { canSpawn = condition.CanSpawn(null); if (!canSpawn) { break; } } if (canSpawn) { toInvoke.Add(con); } } if (toInvoke.Count > 0) { ConstellationsDef constellationsDef = toInvoke.RandomElement(); GameCondition_Contellations condition = (GameCondition_Contellations)GameConditionMaker.MakeCondition(GameConditionDefOfLocal.Constellations, 5 * 60000); condition.ConstellationsDef = constellationsDef; Find.World.gameConditionManager.RegisterCondition(condition); SendLetter(constellationsDef); return(true); } return(false); }
private void SendLetter(ConstellationsDef def) { Find.LetterStack.ReceiveLetter(def.label, def.description, LetterDefOf.NeutralEvent); }