コード例 #1
0
        protected override bool TryExecuteWorker(IncidentParms parms)
        {
            Faction faction;

            if (!this.TryFindFaction(out faction))
            {
                return(false);
            }
            int tile;

            if (!TileFinder.TryFindNewSiteTile(out tile, minDist, maxDist, false, true, -1))
            {
                return(false);
            }
            WorldObject_ResearchRequestLGE researchRequest = (WorldObject_ResearchRequestLGE)WorldObjectMaker.MakeWorldObject(SiteDefOf.ResearchRequestLGE);

            researchRequest.Tile = tile;
            researchRequest.SetFaction(faction);
            researchRequest.GetComponent <TimeoutComp>().StartTimeout(TimeoutDaysRange.RandomInRange * 60000);
            Find.WorldObjects.Add(researchRequest);
            string text = string.Format(this.def.letterText.AdjustedFor(faction.leader, "PAWN"), faction.def.leaderTitle, faction.Name, TimeoutDaysRange.RandomInRange).CapitalizeFirst();

            Find.LetterStack.ReceiveLetter(this.def.letterLabel, text, this.def.letterDef, researchRequest, null);
            return(true);
        }
コード例 #2
0
        public void Notify_CaravanArrived(Caravan caravan)
        {
            Pawn pawn = BestCaravanPawnUtility.FindPawnWithBestStat(caravan, StatDefOf.ResearchSpeed);

            if (pawn == null)
            {
                Messages.Message("MessagePeaceTalksNoDiplomat".Translate(), caravan, MessageTypeDefOf.NegativeEvent);
                return;
            }
            float badOutcomeWeightFactor = WorldObject_ResearchRequestLGE.GetBadOutcomeWeightFactor(pawn);
            float num = 1f / badOutcomeWeightFactor;

            WorldObject_ResearchRequestLGE.tmpPossibleOutcomes.Clear();
            WorldObject_ResearchRequestLGE.tmpPossibleOutcomes.Add(new Pair <Action, float>(delegate
            {
                this.Outcome_Disaster(caravan);
            }, BaseWeight_Disaster * badOutcomeWeightFactor));
            WorldObject_ResearchRequestLGE.tmpPossibleOutcomes.Add(new Pair <Action, float>(delegate
            {
                this.Outcome_Backfire(caravan);
            }, BaseWeight_Backfire * badOutcomeWeightFactor));
            WorldObject_ResearchRequestLGE.tmpPossibleOutcomes.Add(new Pair <Action, float>(delegate
            {
                this.Outcome_Neutral(caravan);
            }, BaseWeight_TalksFlounder));
            WorldObject_ResearchRequestLGE.tmpPossibleOutcomes.Add(new Pair <Action, float>(delegate
            {
                this.Outcome_Success(caravan);
            }, BaseWeight_Success * num));
            WorldObject_ResearchRequestLGE.tmpPossibleOutcomes.Add(new Pair <Action, float>(delegate
            {
                this.Outcome_Triumph(caravan);
            }, BaseWeight_Triumph * num));
            Action first = WorldObject_ResearchRequestLGE.tmpPossibleOutcomes.RandomElementByWeight((Pair <Action, float> x) => x.Second).First;

            first();
            pawn.skills.Learn(SkillDefOf.Intellectual, IntellectualXPGainAmount, true);
            Find.WorldObjects.Remove(this);
        }
コード例 #3
0
 public static IEnumerable <FloatMenuOption> GetFloatMenuOptions(Caravan caravan, WorldObject_ResearchRequestLGE researchRequest)
 {
     return(CaravanArrivalActionUtility.GetFloatMenuOptions <CaravanArrivalAction_VisitResearchRequest>(() => CanVisit(caravan, researchRequest), () => new CaravanArrivalAction_VisitResearchRequest(researchRequest), "VisitPeaceTalks".Translate(researchRequest.Label), caravan, researchRequest.Tile, researchRequest));
 }
コード例 #4
0
 public CaravanArrivalAction_VisitResearchRequest(WorldObject_ResearchRequestLGE researchRequest)
 {
     this.researchRequest = researchRequest;
 }
コード例 #5
0
 public static FloatMenuAcceptanceReport CanVisit(Caravan caravan, WorldObject_ResearchRequestLGE researchRequest)
 {
     return(researchRequest != null && researchRequest.Spawned);
 }
コード例 #6
0
        private static float GetBadOutcomeWeightFactor(Pawn diplomat)
        {
            float statValue = diplomat.GetStatValue(StatDefOf.ResearchSpeed, true);

            return(WorldObject_ResearchRequestLGE.GetBadOutcomeWeightFactor(statValue));
        }