コード例 #1
0
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            if (!settings.Active)
            {
                return(false);
            }

            List <int> tiles = new List <int>();

            for (int i = 0; i < Find.WorldGrid.TilesCount; i++)
            {
                Tile tile = Find.WorldGrid[i];
                if (tile.biome != BiomeDefOf.Ocean && tile.biome != BiomeDefOf.Lake && tile.hilliness != Hilliness.Impassable)
                {
                    tiles.Add(i);
                }
            }

            if (tiles.Count == 0)
            {
                return(false);
            }

            int partsCount = Rand.Range(minParts, maxParts);

            for (int i = 0; i < partsCount; i++)
            {
                int tileID = tiles.RandomElement();

                if (Find.WorldObjects.AnyMapParentAt(tileID))
                {
                    continue;
                }

                Faction f = RandomEnemyFaction();
                if (f == null)
                {
                    return(false);
                }

                ShipMapGenerator generator = GetGenerator();
                ShipCrash_Controller.MakeShipPart(generator, tileID, f);
            }

            SendStandardLetter(parms, null);

            CommunicationDialog dialog = QuestsManager.Communications.AddCommunication(QuestsManager.Communications.UniqueIdManager.GetNextDialogID(), "Comm_ShipCrashTitle".Translate(), "Comm_ShipCrashDesc".Translate(), incident: def);

            TimeComp timeComp = new TimeComp(dialog, 7000);

            timeComp.id = QuestsManager.Communications.UniqueIdManager.GetNextComponentID();
            QuestsManager.Communications.RegisterComponent(timeComp);

            ShipCrash_Controller.ShipCount++;

            return(true);
        }
コード例 #2
0
        private bool ConsoleMode(IncidentParms parms)
        {
            Map map = (Map)parms.target;

            //  PawnKindDef spaceRefugee = PawnKindDefOf.SpaceRefugee;
            //  Pawn pawn = PawnGenerator.GeneratePawn(spaceRefugee);

            Pawn offerPawn = PawnGenerator.GeneratePawn(PawnKindDefOf.Colonist);

            int timeOut = 2 * 60000;

            Settlement settlement = Find.WorldObjects.Settlements.Where(s => s.Faction == parms.faction).RandomElement();
            string     text       = "PawnInfo".Translate().Formatted(offerPawn.Named("PAWN")).AdjustedFor(offerPawn);
            string     dialogDesc = string.Format(def.letterText, settlement.Name, parms.faction.Name, offerPawn.Name.ToStringFull, text, "TimerInfo".Translate(timeOut.TicksToDays().ToString("f2")));

            EmailMessage message = QuestsManager.Communications.PlayerBox.FormMessageFrom(parms.faction,
                                                                                          dialogDesc, def.letterLabel);

            message.Answers = new List <EmailMessageOption>();
            EmailOption_PawnOfferYes emailOption_PawnOfferYes = new EmailOption_PawnOfferYes(offerPawn);

            Letter letter = LetterMaker.MakeLetter("CommunicationDialog_PocahontasTitle".Translate(), "CommunicationDialog_Pocahontas".Translate(parms.faction.Name), LetterDefOf.NegativeEvent);

            TimeComp timeComp = new TimeComp(message.Subject, Faction.OfPlayer, timeOut);

            timeComp.id        = QuestsManager.Communications.UniqueIdManager.GetNextComponentID();
            timeComp.Action    = new CommOption_ChangeGoodWill(-20);
            timeComp.EndLetter = letter;
            timeComp.Speaker   = map.mapPawns.FreeColonists.RandomElement();
            timeComp.Defendant = parms.faction.leader;

            EmailOption_ChangeGoodWill emailOption_ChangeGoodWill = new EmailOption_ChangeGoodWill(-20);
            EmailOption_DeclineDialog  emailOption_DeclineDialog  = new EmailOption_DeclineDialog(emailOption_ChangeGoodWill);

            message.Answers.Add(emailOption_PawnOfferYes);
            message.Answers.Add(emailOption_DeclineDialog);

            QuestsManager.Communications.PlayerBox.SendMessage(message);

            QuestsManager.Communications.RegisterComponent(timeComp);

            return(true);
        }