public static void CanUse_XenoQueen_Postfix(RaidStrategyWorker __instance, ref Pawn p, List <Pawn> otherPawns, ref bool __result)
 {
     if (p.def == XenomorphRacesDefOf.RRY_Xenomorph_Queen)
     {
         if (otherPawns.Any(x => x.def == XenomorphRacesDefOf.RRY_Xenomorph_Queen))
         {
             p.def     = XenomorphRacesDefOf.RRY_Xenomorph_Warrior;
             p.kindDef = XenomorphDefOf.RRY_Xenomorph_Warrior;
         }
     }
 }
 public static void Postfix(RaidStrategyWorker __instance, PawnGenOption g, List <PawnGenOption> chosenGroups, ref bool __result)
 {
     if (g.kind.factionLeader)
     {
         if (chosenGroups.Any(x => x.kind.factionLeader && x.kind == g.kind))
         {
             __result = false;
             //    Log.Warning(string.Format("Excess {0} detected:  there are {1} already in the raid, Disallowing", g.kind.LabelCap, chosenGroups.Where(x => x.kind == g.kind).Count()));
             return;
         }
     }
 }
Example #3
0
 public static void CanUse_factionLeader_Postfix(RaidStrategyWorker __instance, Pawn p, List <Pawn> otherPawns, ref bool __result)
 {
     if (p.kindDef.factionLeader)
     {
         if (otherPawns.Any(x => x.kindDef.factionLeader))
         {
             __result = false;
             Log.Warning(string.Format("Excess {0} detected:  there are {1} already in the raid, Disallowing", p.LabelShortCap, otherPawns.Where(x => x.def == p.def).Count()));
             return;
         }
     }
 }
Example #4
0
        static bool Prefix(ref RaidStrategyWorker __instance, ref List <Pawn> __result, IncidentParms parms)
        {
            if (parms.faction == FactionColonies.getPlayerColonyFaction())
            {
                List <PawnKindDef> list2 = new List <PawnKindDef>();
                foreach (ThingDef def in Find.World.GetComponent <FactionFC>().raceFilter.AllowedThingDefs)
                {
                    list2.Add(def.race.AnyPawnKind);
                }


                if (parms.pawnKind != null)
                {
                    List <Pawn> list = new List <Pawn>();
                    for (int i = 0; i < parms.pawnCount; i++)
                    {
                        PawnKindDef           pawnKind = parms.pawnKind;
                        Faction               faction  = parms.faction;
                        PawnGenerationContext context  = PawnGenerationContext.NonPlayer;
                        int   tile = -1;
                        bool  forceGenerateNewPawn = false;
                        bool  newborn     = false;
                        bool  allowDead   = false;
                        bool  allowDowned = false;
                        bool  canGeneratePawnRelations      = true;
                        bool  mustBeCapableOfViolence       = true;
                        float colonistRelationChanceFactor  = 1f;
                        bool  forceAddFreeWarmLayerIfNeeded = false;
                        bool  allowGay             = true;
                        float biocodeWeaponsChance = parms.biocodeWeaponsChance;

                        PawnKindDef pawnkind = new PawnKindDef();
                        pawnkind = list2.RandomElement();
                        pawnkind.techHediffsTags            = parms.pawnKind.techHediffsTags;
                        pawnkind.apparelTags                = parms.pawnKind.apparelTags;
                        pawnkind.isFighter                  = parms.pawnKind.isFighter;
                        pawnkind.combatPower                = parms.pawnKind.combatPower;
                        pawnkind.gearHealthRange            = parms.pawnKind.gearHealthRange;
                        pawnkind.weaponTags                 = parms.pawnKind.weaponTags;
                        pawnkind.apparelMoney               = parms.pawnKind.apparelMoney;
                        pawnkind.weaponMoney                = parms.pawnKind.weaponMoney;
                        pawnkind.apparelAllowHeadgearChance = parms.pawnKind.apparelAllowHeadgearChance;
                        pawnkind.techHediffsMoney           = parms.pawnKind.techHediffsMoney;
                        pawnkind.label = parms.pawnKind.label;
                        Pawn pawn = PawnGenerator.GeneratePawn(new PawnGenerationRequest(pawnkind, faction, context, tile, forceGenerateNewPawn, newborn, allowDead, allowDowned, canGeneratePawnRelations, mustBeCapableOfViolence, colonistRelationChanceFactor, forceAddFreeWarmLayerIfNeeded, allowGay, __instance.def.pawnsCanBringFood, true, false, false, false, false, biocodeWeaponsChance, null, 1f, null, null, null, null, null, null, null, null, null, null, null, null)
                        {
                            BiocodeApparelChance = 1f
                        });
                        if (pawn != null)
                        {
                            list.Add(pawn);
                        }
                    }
                    if (list.Any <Pawn>())
                    {
                        parms.raidArrivalMode.Worker.Arrive(list, parms);
                        __result = list;
                        return(false);
                    }
                }
                __result = null;



                return(false);
            }
            else
            {
                return(true);
            }
        }