private static DiaOption RequestMilitaryAidOption(Map map, Faction faction, Pawn negotiator) { string text = "RequestMilitaryAid".Translate(new object[] { 25 }); if (faction.PlayerRelationKind != FactionRelationKind.Ally) { DiaOption diaOption = new DiaOption(text); diaOption.Disable("MustBeAlly".Translate()); return(diaOption); } if (!faction.def.allowedArrivalTemperatureRange.ExpandedBy(-4f).Includes(map.mapTemperature.SeasonalTemp)) { DiaOption diaOption2 = new DiaOption(text); diaOption2.Disable("BadTemperature".Translate()); return(diaOption2); } int num = faction.lastMilitaryAidRequestTick + 60000 - Find.TickManager.TicksGame; if (num > 0) { DiaOption diaOption3 = new DiaOption(text); diaOption3.Disable("WaitTime".Translate(new object[] { num.ToStringTicksToPeriod() })); return(diaOption3); } if (NeutralGroupIncidentUtility.AnyBlockingHostileLord(map, faction)) { DiaOption diaOption4 = new DiaOption(text); diaOption4.Disable("HostileVisitorsPresent".Translate()); return(diaOption4); } DiaOption diaOption5 = new DiaOption(text); if (faction.def.techLevel < TechLevel.Industrial) { diaOption5.link = FactionDialogMaker.CantMakeItInTime(faction, negotiator); } else { IEnumerable <Faction> source = (from x in map.attackTargetsCache.TargetsHostileToColony.Where(new Func <IAttackTarget, bool>(GenHostility.IsActiveThreatToPlayer)) select((Thing)x).Faction into x where x != null && !x.HostileTo(faction) select x).Distinct <Faction>(); if (source.Any <Faction>()) { string arg_224_0 = "MilitaryAidConfirmMutualEnemy"; object[] expr_1E9 = new object[2]; expr_1E9[0] = faction.Name; expr_1E9[1] = (from fa in source select fa.Name).ToCommaList(true); DiaNode diaNode = new DiaNode(arg_224_0.Translate(expr_1E9)); DiaOption diaOption6 = new DiaOption("CallConfirm".Translate()); diaOption6.action = delegate { FactionDialogMaker.CallForAid(map, faction); }; diaOption6.link = FactionDialogMaker.FightersSent(faction, negotiator); DiaOption diaOption7 = new DiaOption("CallCancel".Translate()); diaOption7.linkLateBind = FactionDialogMaker.ResetToRoot(faction, negotiator); diaNode.options.Add(diaOption6); diaNode.options.Add(diaOption7); diaOption5.link = diaNode; } else { diaOption5.action = delegate { FactionDialogMaker.CallForAid(map, faction); }; diaOption5.link = FactionDialogMaker.FightersSent(faction, negotiator); } } return(diaOption5); }
private static DiaOption RequestMilitaryAidOption(Map map, Faction faction, Pawn negotiator) { string text = "RequestMilitaryAid".Translate(new object[] { 20 }); DiaOption result; if (faction.PlayerRelationKind != FactionRelationKind.Ally) { DiaOption diaOption = new DiaOption(text); diaOption.Disable("MustBeAlly".Translate()); result = diaOption; } else if (!faction.def.allowedArrivalTemperatureRange.ExpandedBy(-4f).Includes(map.mapTemperature.SeasonalTemp)) { DiaOption diaOption2 = new DiaOption(text); diaOption2.Disable("BadTemperature".Translate()); result = diaOption2; } else { DiaOption diaOption3 = new DiaOption(text); if (faction.def.techLevel < TechLevel.Industrial) { diaOption3.link = FactionDialogMaker.CantMakeItInTime(faction, negotiator); } else { IEnumerable <Faction> source = (from x in map.attackTargetsCache.TargetsHostileToColony where GenHostility.IsActiveThreatToPlayer(x) select((Thing)x).Faction into x where x != null && !x.HostileTo(faction) select x).Distinct <Faction>(); if (source.Any <Faction>()) { string key = "MilitaryAidConfirmMutualEnemy"; object[] array = new object[2]; array[0] = faction.Name; array[1] = (from fa in source select fa.Name).ToCommaList(true); DiaNode diaNode = new DiaNode(key.Translate(array)); DiaOption diaOption4 = new DiaOption("CallConfirm".Translate()); diaOption4.action = delegate() { FactionDialogMaker.CallForAid(map, faction); }; diaOption4.link = FactionDialogMaker.FightersSent(faction, negotiator); DiaOption diaOption5 = new DiaOption("CallCancel".Translate()); diaOption5.linkLateBind = FactionDialogMaker.ResetToRoot(faction, negotiator); diaNode.options.Add(diaOption4); diaNode.options.Add(diaOption5); diaOption3.link = diaNode; } else { diaOption3.action = delegate() { FactionDialogMaker.CallForAid(map, faction); }; diaOption3.link = FactionDialogMaker.FightersSent(faction, negotiator); } } result = diaOption3; } return(result); }