public void Notify_FuelingPortSourceDeSpawned() { if (Transporter.CancelLoad()) { Messages.Message("MessageTransportersLoadCanceled_FuelingPortGiverDeSpawned".Translate(), parent, MessageTypeDefOf.NegativeEvent); } }
public void Send() { if (!ModLister.RoyaltyInstalled) { Log.ErrorOnce("Shuttle is a Royalty-specific game system. If you want to use this code please check ModLister.RoyaltyInstalled before calling it. See rules on the Ludeon forum for more info.", 8811221); } else { if (sending) { return; } if (!parent.Spawned) { Log.Error("Tried to send " + parent + ", but it's unspawned."); return; } List <CompTransporter> transportersInGroup = TransportersInGroup; if (transportersInGroup == null) { Log.Error("Tried to send " + parent + ", but it's not in any group."); } else { if (!LoadingInProgressOrReadyToLaunch) { return; } if (!AllRequiredThingsLoaded) { if (dropEverythingIfUnsatisfied) { Transporter.CancelLoad(); } else if (dropNonRequiredIfUnsatisfied) { for (int i = 0; i < transportersInGroup.Count; i++) { for (int num = transportersInGroup[i].innerContainer.Count - 1; num >= 0; num--) { Thing thing = transportersInGroup[i].innerContainer[num]; Pawn pawn; if (!IsRequired(thing) && (requiredColonistCount <= 0 || (pawn = (thing as Pawn)) == null || !pawn.IsColonist)) { transportersInGroup[i].innerContainer.TryDrop(thing, ThingPlaceMode.Near, out Thing _); } } } } } sending = true; bool allRequiredThingsLoaded = AllRequiredThingsLoaded; Map map = parent.Map; Transporter.TryRemoveLord(map); string signalPart = allRequiredThingsLoaded ? "SentSatisfied" : "SentUnsatisfied"; for (int j = 0; j < transportersInGroup.Count; j++) { QuestUtility.SendQuestTargetSignals(transportersInGroup[j].parent.questTags, signalPart, transportersInGroup[j].parent.Named("SUBJECT"), transportersInGroup[j].innerContainer.ToList().Named("SENT")); } List <Pawn> list = new List <Pawn>(); for (int k = 0; k < transportersInGroup.Count; k++) { CompTransporter compTransporter = transportersInGroup[k]; for (int num2 = transportersInGroup[k].innerContainer.Count - 1; num2 >= 0; num2--) { Pawn pawn2 = transportersInGroup[k].innerContainer[num2] as Pawn; if (pawn2 != null) { if (pawn2.IsColonist && !requiredPawns.Contains(pawn2)) { list.Add(pawn2); } pawn2.ExitMap(allowedToJoinOrCreateCaravan: false, Rot4.Invalid); } } compTransporter.innerContainer.ClearAndDestroyContentsOrPassToWorld(); Thing newThing = ThingMaker.MakeThing(ThingDefOf.ShuttleLeaving); compTransporter.CleanUpLoadingVars(map); compTransporter.parent.Destroy(DestroyMode.QuestLogic); GenSpawn.Spawn(newThing, compTransporter.parent.Position, map); } if (list.Count != 0) { for (int l = 0; l < transportersInGroup.Count; l++) { QuestUtility.SendQuestTargetSignals(transportersInGroup[l].parent.questTags, "SentWithExtraColonists", transportersInGroup[l].parent.Named("SUBJECT"), list.Named("SENTCOLONISTS")); } } sending = false; } } }