protected override List <Pawn> GeneratePawns(IncidentParms parms) { if (!PawnGroupMakerUtility.TryGetRandomFactionForNormalPawnGroup(parms.points, out parms.faction, null, false, false, false, true)) { return(new List <Pawn>()); } PawnGroupMakerParms defaultPawnGroupMakerParms = IncidentParmsUtility.GetDefaultPawnGroupMakerParms(parms, false); defaultPawnGroupMakerParms.generateFightersOnly = true; return(PawnGroupMakerUtility.GeneratePawns(PawnGroupKindDefOf.Normal, defaultPawnGroupMakerParms, true).ToList <Pawn>()); }
protected override bool TryResolveRaidFaction(IncidentParms parms) { Map map = (Map)parms.target; if (parms.faction != null) { return(true); } float num = parms.points; if (num <= 0f) { num = 999999f; } return(PawnGroupMakerUtility.TryGetRandomFactionForNormalPawnGroup(num, out parms.faction, (Faction f) => this.FactionCanBeGroupSource(f, map, false), true, true, true, true) || PawnGroupMakerUtility.TryGetRandomFactionForNormalPawnGroup(num, out parms.faction, (Faction f) => this.FactionCanBeGroupSource(f, map, true), true, true, true, true)); }
protected override bool TryExecuteWorker(IncidentParms parms) { Caravan caravan = (Caravan)parms.target; if (!PawnGroupMakerUtility.TryGetRandomFactionForNormalPawnGroup(parms.points, out parms.faction, null, false, false, false, true)) { return(false); } PawnGroupMakerParms defaultPawnGroupMakerParms = IncidentParmsUtility.GetDefaultPawnGroupMakerParms(parms, false); defaultPawnGroupMakerParms.generateFightersOnly = true; List <Pawn> attackers = PawnGroupMakerUtility.GeneratePawns(PawnGroupKindDefOf.Normal, defaultPawnGroupMakerParms, true).ToList <Pawn>(); List <Thing> demands = this.GenerateDemands(caravan); if (demands.Count == 0) { return(false); } CameraJumper.TryJumpAndSelect(caravan); DiaNode diaNode = new DiaNode(this.GenerateMessageText(parms.faction, attackers.Count, demands)); DiaOption diaOption = new DiaOption("CaravanDemand_Give".Translate()); diaOption.action = delegate { this.ActionGive(caravan, demands, attackers); }; diaOption.resolveTree = true; diaNode.options.Add(diaOption); DiaOption diaOption2 = new DiaOption("CaravanDemand_Fight".Translate()); diaOption2.action = delegate { this.ActionFight(caravan, attackers); }; diaOption2.resolveTree = true; diaNode.options.Add(diaOption2); WindowStack arg_15D_0 = Find.WindowStack; DiaNode nodeRoot = diaNode; bool delayInteractivity = true; string title = "CaravanDemandTitle".Translate(new object[] { parms.faction.Name }); arg_15D_0.Add(new Dialog_NodeTree(nodeRoot, delayInteractivity, false, title)); return(true); }