private static bool FactionCanOwn(SitePartDef sitePart, Faction faction, bool disallowNonHostileFactions, Predicate <Faction> extraFactionValidator) { if (sitePart == null) { Log.Error("Called FactionCanOwn() with null SitePartDef."); return(false); } if (faction != null && faction.temporary) { return(false); } if (!sitePart.FactionCanOwn(faction)) { return(false); } if (disallowNonHostileFactions && faction != null && !faction.HostileTo(Faction.OfPlayer)) { return(false); } if (extraFactionValidator != null && !extraFactionValidator(faction)) { return(false); } return(true); }
public SitePart(Site site, SitePartDef def, SitePartParams parms) { this.site = site; this.def = def; this.parms = parms; hidden = def.defaultHidden; }
// Token: 0x06000074 RID: 116 RVA: 0x00004ABC File Offset: 0x00002CBC public static Site CreateSite(int tile, SitePartDef sitePart, int days, Faction siteFaction) { Site site = SiteMaker.MakeSite(SiteCoreDefOf.OldOutpost, sitePart, tile, siteFaction, true, null); site.sitePartsKnown = true; site.GetComponent <TimeoutComp>().StartTimeout(days * 60000); Find.WorldObjects.Add(site); return(site); }
public static Site CreateSite(int tile, SitePartDef sitePart, int days, Faction siteFaction, IList <Thing> items) { Site site = SiteMaker.MakeSite(PolarisIncidentDefOf.Polaris_TradeShipPodCrashSiteCore, sitePart, tile, siteFaction, true); site.sitePartsKnown = true; site.GetComponent <TimeoutComp>().StartTimeout(days * 60000); site.GetComponent <ItemStashContentsComp>().contents.TryAddRangeOrTransfer(items, false, false); Find.WorldObjects.Add(site); return(site); }
public static Site TryMakeSite_SingleSitePart(SiteCoreDef core, string singleSitePartTag, Faction faction = null, bool disallowAlliedFactions = true, Predicate <Faction> extraFactionValidator = null) { SitePartDef sitePart = default(SitePartDef); if (!SiteMakerHelper.TryFindSiteParams_SingleSitePart(core, singleSitePartTag, out sitePart, out faction, faction, disallowAlliedFactions, extraFactionValidator)) { return(null); } return(SiteMaker.MakeSite(core, sitePart, faction)); }
private static void SpawnSiteWithPoints() { int tile = GenWorld.MouseTile(); if (tile < 0 || Find.World.Impassable(tile)) { Messages.Message("Impassable", MessageTypeDefOf.RejectInput, historical: false); return; } List <SitePartDef> parts = new List <SitePartDef>(); Action addPart = null; float localPoints = default(float); SitePartDef localPart = default(SitePartDef); addPart = delegate { List <DebugMenuOption> list = new List <DebugMenuOption> { new DebugMenuOption("-Done (" + parts.Count + " parts)-", DebugMenuOptionMode.Action, delegate { List <DebugMenuOption> list2 = new List <DebugMenuOption>(); foreach (float item in DebugActionsUtility.PointsOptions(extended: true)) { localPoints = item; list2.Add(new DebugMenuOption(item.ToString("F0"), DebugMenuOptionMode.Action, delegate { Site site = SiteMaker.TryMakeSite(parts, tile, disallowNonHostileFactions: true, null, ifHostileThenMustRemainHostile: true, localPoints); if (site == null) { Messages.Message("Could not find any valid faction for this site.", MessageTypeDefOf.RejectInput, historical: false); } else { Find.WorldObjects.Add(site); } })); } Find.WindowStack.Add(new Dialog_DebugOptionListLister(list2)); }) }; foreach (SitePartDef allDef in DefDatabase <SitePartDef> .AllDefs) { localPart = allDef; list.Add(new DebugMenuOption(allDef.defName, DebugMenuOptionMode.Action, delegate { parts.Add(localPart); addPart(); })); } Find.WindowStack.Add(new Dialog_DebugOptionListLister(list)); }; addPart(); }
public SingleObjectEditor(Site s) { resizeable = false; edit = true; editSite = s; part = editSite.parts[0].def; selectedFaction = editSite.Faction; threatsFloat = editSite.desiredThreatPoints; }
public override void DoWindowContents(Rect inRect) { Text.Font = GameFont.Small; Widgets.Label(new Rect(0, 0, 390, 20), Translator.Translate("AddSingleObjectTitle")); Widgets.Label(new Rect(310, 40, 240, 20), Translator.Translate("SiteParts")); int size2 = DefDatabase <SitePartDef> .AllDefsListForReading.Count * 25; Rect scrollRectFact2 = new Rect(310, 60, 300, 200); Rect scrollVertRectFact2 = new Rect(0, 0, scrollRectFact2.x, size2); Widgets.BeginScrollView(scrollRectFact2, ref scroll2, scrollVertRectFact2); int x = 0; foreach (var sitePart in DefDatabase <SitePartDef> .AllDefsListForReading) { if (Widgets.RadioButtonLabeled(new Rect(0, x, 295, 20), sitePart.defName, part == sitePart)) { part = sitePart; } x += 22; } Widgets.EndScrollView(); Widgets.Label(new Rect(0, 40, 390, 20), Translator.Translate("FactionOwner")); int factionDefSize = Find.FactionManager.AllFactionsListForReading.Count * 25; Rect scrollRectFact = new Rect(0, 60, 300, 200); Rect scrollVertRectFact = new Rect(0, 0, scrollRectFact.x, factionDefSize); Widgets.BeginScrollView(scrollRectFact, ref scroll, scrollVertRectFact); x = 0; foreach (var spawnedFaction in Find.FactionManager.AllFactionsListForReading) { if (Widgets.ButtonText(new Rect(0, x, 290, 20), spawnedFaction.Name)) { selectedFaction = spawnedFaction; } x += 22; } Widgets.EndScrollView(); Widgets.Label(new Rect(0, 290, 350, 40), Translator.Translate("ThreatPoint")); Widgets.TextFieldNumeric(new Rect(360, 290, 260, 20), ref threatsFloat, ref threats, 0, 2000000); Widgets.Label(new Rect(0, 390, 600, 20), $"Selected tile ID: {Find.WorldSelector.selectedTile}"); if (Widgets.ButtonText(new Rect(0, 450, 630, 20), Translator.Translate("AddNewSingleObject"))) { AddSingleObject(); } }
public PreciousLumpMenu(Site s) { resizeable = false; edit = true; editSite = s; resource = editSite.parts[0].parms.preciousLumpResources; time = (editSite.GetComponent <TimeoutComp>().TicksLeft / 60000).ToString(); part = editSite.parts[0].def; selectedFaction = editSite.Faction; }
// Token: 0x06000DA9 RID: 3497 RVA: 0x000648C0 File Offset: 0x00062CC0 protected override bool TryExecuteWorker(IncidentParms parms) { Faction faction; if (!this.TryFindFactions(out faction)) { return(false); } int tile; if (!TileFinder.TryFindNewSiteTile(out tile, 8, 30, false, true, -1)) { return(false); } Faction zFaction = Faction.OfInsects; foreach (Faction factionZ in Find.FactionManager.AllFactionsListForReading) { if (factionZ.def.defName == "Zombie") { zFaction = factionZ; } } SitePartDef def = DefDatabase <SitePartDef> .GetNamed("ZombieOutpost", false); Site site = SiteMaker.MakeSite(SiteCoreDefOf.Nothing, def, tile, faction); //site.Tile = tile; List <Thing> list = this.GenerateRewards(faction); site.GetComponent <DefeatAllEnemiesQuestComp>().StartQuest(faction, 7, list); Find.WorldObjects.Add(site); /* * base.SendStandardLetter(site, new string[] * { * faction.leader.LabelShort, * faction.def.leaderTitle, * faction.Name, * list[0].LabelCap * }); */ return(true); }
private static void SpawnSite() { int tile = GenWorld.MouseTile(); if (tile < 0 || Find.World.Impassable(tile)) { Messages.Message("Impassable", MessageTypeDefOf.RejectInput, historical: false); return; } List <SitePartDef> parts = new List <SitePartDef>(); Action addPart = null; SitePartDef localPart = default(SitePartDef); addPart = delegate { List <DebugMenuOption> list = new List <DebugMenuOption> { new DebugMenuOption("-Done (" + parts.Count + " parts)-", DebugMenuOptionMode.Action, delegate { Site site = SiteMaker.TryMakeSite(parts, tile); if (site == null) { Messages.Message("Could not find any valid faction for this site.", MessageTypeDefOf.RejectInput, historical: false); } else { Find.WorldObjects.Add(site); } }) }; foreach (SitePartDef allDef in DefDatabase <SitePartDef> .AllDefs) { localPart = allDef; list.Add(new DebugMenuOption(allDef.defName, DebugMenuOptionMode.Action, delegate { parts.Add(localPart); addPart(); })); } Find.WindowStack.Add(new Dialog_DebugOptionListLister(list)); }; addPart(); }
// Added for testing purposes... private Site CreateSite(int tile, SitePartDef sitePart, int days, Faction siteFaction, List <Thing> items) { WorldObjectDef woDef; float chance = Rand.Value; //if (chance < 0.5f) // woDef = WorldObjectDefOf.AbandonedFactionBase; //else woDef = WorldObjectDefOf.Site; Site site = (Site)WorldObjectMaker.MakeWorldObject(woDef); //site.Tile = tile; site.core = DefDatabase <SiteCoreDef> .GetNamed("Anomaly_ItemStash"); if (sitePart != null) { site.parts.Add(sitePart); } if (siteFaction != null) { site.SetFaction(siteFaction); } if (days > 0) { site.GetComponent <TimeoutComp>().StartTimeout(days * 60000); } if (items != null && items.Count > 0) { site.GetComponent <ItemStashContentsComp>().contents.TryAddRangeOrTransfer(items); } //Find.WorldObjects.Add(site); return(site); }
public SitePart(SitePartDef def, SiteCoreOrPartParams parms) { this.def = def; base.parms = parms; }
public static Site MakeSite(SitePartDef sitePart, int tile, Faction faction, bool ifHostileThenMustRemainHostile = true, float?threatPoints = null) { return(MakeSite((sitePart != null) ? Gen.YieldSingle(sitePart) : null, tile, faction, ifHostileThenMustRemainHostile, threatPoints)); }
public static bool TryFindSiteParams_SingleSitePart(SiteCoreDef core, string singleSitePartTag, out SitePartDef sitePart, out Faction faction, Faction factionToUse = null, bool disallowAlliedFactions = true, Predicate <Faction> extraFactionValidator = null) { IEnumerable <SitePartDef> singleSitePartCandidates = (singleSitePartTag == null) ? null : (from x in DefDatabase <SitePartDef> .AllDefsListForReading where x.tags.Contains(singleSitePartTag) select x); return(SiteMakerHelper.TryFindSiteParams_SingleSitePart(core, singleSitePartCandidates, out sitePart, out faction, factionToUse, disallowAlliedFactions, extraFactionValidator)); }
public static bool TryFindNewRandomSitePartFor(SiteCoreDef core, IEnumerable <SitePartDef> existingSiteParts, IEnumerable <SitePartDef> possibleSiteParts, Faction faction, out SitePartDef sitePart, bool disallowAlliedFactions = true, Predicate <Faction> extraFactionValidator = null) { if (faction != null) { if ((from x in possibleSiteParts where x == null || SiteMakerHelper.FactionCanOwn(x, faction, disallowAlliedFactions, extraFactionValidator) select x).TryRandomElement(out sitePart)) { return(true); } } else { SiteMakerHelper.possibleFactions.Clear(); SiteMakerHelper.possibleFactions.Add(null); SiteMakerHelper.possibleFactions.AddRange(Find.FactionManager.AllFactionsListForReading); if ((from x in possibleSiteParts where x == null || SiteMakerHelper.possibleFactions.Any((Faction fac) => SiteMakerHelper.FactionCanOwn(core, existingSiteParts, fac, disallowAlliedFactions, extraFactionValidator) && SiteMakerHelper.FactionCanOwn(x, fac, disallowAlliedFactions, extraFactionValidator)) select x).TryRandomElement(out sitePart)) { SiteMakerHelper.possibleFactions.Clear(); return(true); } SiteMakerHelper.possibleFactions.Clear(); } sitePart = null; return(false); }
public static bool TryFindNewRandomSitePartFor(IEnumerable <SitePartDef> existingSiteParts, IEnumerable <SitePartDef> possibleSiteParts, Faction faction, out SitePartDef sitePart, bool disallowNonHostileFactions = true, Predicate <Faction> extraFactionValidator = null) { if (faction != null) { if (possibleSiteParts.Where((SitePartDef x) => x == null || ((existingSiteParts == null || existingSiteParts.All((SitePartDef p) => p != x && p.CompatibleWith(x))) && FactionCanOwn(x, faction, disallowNonHostileFactions, extraFactionValidator))).TryRandomElement(out sitePart)) { return(true); } } else { possibleFactions.Clear(); possibleFactions.Add(null); possibleFactions.AddRange(Find.FactionManager.AllFactionsListForReading); if (possibleSiteParts.Where((SitePartDef x) => x == null || ((existingSiteParts == null || existingSiteParts.All((SitePartDef p) => p != x && p.CompatibleWith(x))) && possibleFactions.Any((Faction fac) => FactionCanOwn(existingSiteParts, fac, disallowNonHostileFactions, extraFactionValidator) && FactionCanOwn(x, fac, disallowNonHostileFactions, extraFactionValidator)))).TryRandomElement(out sitePart)) { possibleFactions.Clear(); return(true); } possibleFactions.Clear(); } sitePart = null; return(false); }
public static bool TryFindSiteParams_SingleSitePart(SiteCoreDef core, IEnumerable <SitePartDef> singleSitePartCandidates, out SitePartDef sitePart, out Faction faction, Faction factionToUse = null, bool disallowAlliedFactions = true, Predicate <Faction> extraFactionValidator = null) { faction = factionToUse; if (singleSitePartCandidates != null) { if (!SiteMakerHelper.TryFindNewRandomSitePartFor(core, null, singleSitePartCandidates, faction, out sitePart, disallowAlliedFactions, extraFactionValidator)) { return(false); } } else { sitePart = null; } if (faction == null) { IEnumerable <SitePartDef> parts = (sitePart == null) ? null : Gen.YieldSingle <SitePartDef>(sitePart); if (!SiteMakerHelper.TryFindRandomFactionFor(core, parts, out faction, disallowAlliedFactions, extraFactionValidator)) { return(false); } } return(true); }
public static bool TryFindSiteParams_SingleSitePart(IEnumerable <SitePartDef> singleSitePartCandidates, out SitePartDef sitePart, out Faction faction, Faction factionToUse = null, bool disallowNonHostileFactions = true, Predicate <Faction> extraFactionValidator = null) { faction = factionToUse; if (singleSitePartCandidates != null) { if (!TryFindNewRandomSitePartFor(null, singleSitePartCandidates, faction, out sitePart, disallowNonHostileFactions, extraFactionValidator)) { return(false); } } else { sitePart = null; } if (faction == null && !TryFindRandomFactionFor((sitePart != null) ? Gen.YieldSingle(sitePart) : null, out faction, disallowNonHostileFactions, extraFactionValidator)) { return(false); } return(true); }
public static bool TryFindSiteParams_SingleSitePart(string singleSitePartTag, out SitePartDef sitePart, out Faction faction, Faction factionToUse = null, bool disallowNonHostileFactions = true, Predicate <Faction> extraFactionValidator = null) { return(TryFindSiteParams_SingleSitePart(SitePartDefsWithTag(singleSitePartTag), out sitePart, out faction, factionToUse, disallowNonHostileFactions, extraFactionValidator)); }
protected override bool TryExecuteWorker(IncidentParms parms) { int tile = default(int); if (!RimWorld.Planet.TileFinder.TryFindNewSiteTile(out tile, distance.min, distance.max, false, true, -1)) { return(false); } Faction factionEnemies, factionFriends; GenStep_Battlefield.TryFindFightingFactions(out factionEnemies, out factionFriends); if (factionEnemies == null || factionFriends == null) { return(false); } Site site; SitePartDef core; float chance = Rand.Value; if (chance < 0.10f) { core = DefDatabase <SitePartDef> .GetNamedSilentFail("BanditCamp"); } if (chance < 0.35f) { core = DefDatabase <SitePartDef> .GetNamedSilentFail("ItemStash"); } else if (chance < 0.50f) { core = SitePartDefOf.PreciousLump; } else if (chance < 0.90f) { core = null; } else { core = DefDatabase <SitePartDef> .AllDefs.RandomElement(); } List <SitePartDef> parts = new List <SitePartDef>(); if (Rand.Value < 0.40f) { parts = GetRandomSitePartDefs; } if (core != null) { parts.Add(core); } // And allways add the Misc_Battlefield part SitePartDef sitePartDef_Battlefield = (DefDatabase <SitePartDef> .GetNamed("Misc_Battlefield")); parts.Add(sitePartDef_Battlefield); site = SiteMaker.MakeSite(parts, tile, factionEnemies); if (site != null) { // Try to add a railgun :) ThingDef railgunDef = DefDatabase <ThingDef> .GetNamedSilentFail("Gun_RailgunMKI"); if (railgunDef != null && Rand.Value < 0.35) { Thing railgun = null; railgun = ThingMaker.MakeThing(railgunDef); SitePartDef possible1 = DefDatabase <SitePartDef> .GetNamedSilentFail("ItemStash"); SitePartDef possible2 = DefDatabase <SitePartDef> .GetNamedSilentFail("BanditCamp"); ItemStashContentsComp itemStash = site.GetComponent <ItemStashContentsComp>(); if (itemStash != null && parts.Contains(possible1) || parts.Contains(possible2) || parts.Contains(SitePartDefOf.Outpost)) { if (railgun != null) { itemStash.contents.TryAdd(railgun); } } } // Add a site timeout ??? site.GetComponent <TimeoutComp>().StartTimeout(Rand.RangeInclusive(10, 30) * 60000); Find.WorldObjects.Add(site); Find.LetterStack.ReceiveLetter("Misc_Incident_Label_Battlefield".Translate(), "Misc_Incident_Message_Battlefield".Translate(), LetterDefOf.NeutralEvent, site); return(true); } return(false); }
public override void DoWindowContents(Rect inRect) { Text.Font = GameFont.Small; Widgets.Label(new Rect(0, 0, 290, 20), Translator.Translate("PreciousLumpMenuTitle")); Widgets.Label(new Rect(0, 40, 80, 20), Translator.Translate("ResourceType")); if (Widgets.ButtonText(new Rect(90, 40, 200, 20), resource.label)) { List <FloatMenuOption> list = new List <FloatMenuOption>(); foreach (var thing in DefDatabase <ThingDef> .AllDefsListForReading) { if (thing.mineable) { list.Add(new FloatMenuOption(thing.defName, delegate { resource = thing; })); } } Find.WindowStack.Add(new FloatMenu(list)); } Widgets.Label(new Rect(0, 70, 290, 20), Translator.Translate("DurationTimeDaysLump")); time = Widgets.TextField(new Rect(0, 95, 280, 20), time); Widgets.Label(new Rect(0, 125, 80, 20), Translator.Translate("ThreatType")); if (Widgets.ButtonText(new Rect(90, 125, 200, 20), part.defName)) { List <FloatMenuOption> list = new List <FloatMenuOption>(); foreach (var p in DefDatabase <SitePartDef> .AllDefsListForReading) { list.Add(new FloatMenuOption(p.defName, delegate { part = p; })); } Find.WindowStack.Add(new FloatMenu(list)); } int factionDefSize = Find.FactionManager.AllFactionsListForReading.Count * 25; Rect scrollRectFact3 = new Rect(310, 40, 280, 200); Rect scrollVertRectFact3 = new Rect(0, 0, scrollRectFact3.x, factionDefSize); Widgets.BeginScrollView(scrollRectFact3, ref scroll2, scrollVertRectFact3); int x = 0; foreach (var spawnedFaction in Find.FactionManager.AllFactionsListForReading) { if (Widgets.ButtonText(new Rect(0, x, 290, 20), spawnedFaction.Name)) { selectedFaction = spawnedFaction; } x += 22; } Widgets.EndScrollView(); Widgets.Label(new Rect(0, 155, 100, 40), Translator.Translate("ThreatPoint")); Widgets.TextFieldNumeric(new Rect(110, 155, 170, 20), ref threatsFloat, ref threats, 0, 2000000); Widgets.Label(new Rect(0, 210, 290, 20), $"Selected tile ID: {Find.WorldSelector.selectedTile}"); if (Widgets.ButtonText(new Rect(0, 240, 620, 20), Translator.Translate("AddNewItemStash"))) { AddLump(); } }
public SitePartDefWithParams(SitePartDef def, SitePartParams parms) { this.def = def; this.parms = parms; }
internal bool <> m__0(SitePartDef x) { return(x.tags.Contains(this.singleSitePartTag)); }
public static Site MakeSite(SiteCoreDef core, SitePartDef sitePart, Faction faction) { IEnumerable <SitePartDef> siteParts = (sitePart == null) ? null : Gen.YieldSingle(sitePart); return(SiteMaker.MakeSite(core, siteParts, faction)); }
public static Site MakeSite(SiteCoreDef core, SitePartDef sitePart, int tile, Faction faction, bool ifHostileThenMustRemainHostile = true, float?threatPoints = default(float?)) { IEnumerable <SitePartDef> siteParts = (sitePart == null) ? null : Gen.YieldSingle(sitePart); return(MakeSite(core, siteParts, tile, faction, ifHostileThenMustRemainHostile, threatPoints)); }
public static Site MakeSite(SiteCoreDef core, SitePartDef sitePart, Faction faction, bool ifHostileThenMustRemainHostile = true) { IEnumerable <SitePartDef> siteParts = (sitePart == null) ? null : Gen.YieldSingle <SitePartDef>(sitePart); return(SiteMaker.MakeSite(core, siteParts, faction, ifHostileThenMustRemainHostile)); }