Example #1
0
        public override bool TryResolveRaidSpawnCenter(IncidentParms parms)
        {
            Map map = (Map)parms.target;

            if (!parms.raidArrivalModeForQuickMilitaryAid)
            {
                parms.podOpenDelay = 520;
            }
            parms.spawnRotation = Rot4.Random;
            if (!parms.spawnCenter.IsValid)
            {
                bool flag  = parms.faction == Faction.OfMechanoids;
                bool flag2 = parms.faction != null && parms.faction.HostileTo(Faction.OfPlayer);
                if (Rand.Chance(0.4f) && !flag && map.listerBuildings.ColonistsHaveBuildingWithPowerOn(ThingDefOf.OrbitalTradeBeacon))
                {
                    parms.spawnCenter = DropCellFinder.TradeDropSpot(map);
                }
                else if (!DropCellFinder.TryFindRaidDropCenterClose(out parms.spawnCenter, map, !flag && flag2, !flag))
                {
                    parms.raidArrivalMode = PawnsArrivalModeDefOf.EdgeDrop;
                    return(parms.raidArrivalMode.Worker.TryResolveRaidSpawnCenter(parms));
                }
            }
            return(true);
        }
Example #2
0
        public override void TravelingTransportPodsArrived(List <ActiveDropPodInfo> dropPods, Map map)
        {
            IntVec3 near;

            if (!DropCellFinder.TryFindRaidDropCenterClose(out near, map))
            {
                near = DropCellFinder.FindRaidDropCenterDistant(map);
            }
            TransportPodsArrivalActionUtility.DropTravelingTransportPods(dropPods, near, map);
        }
Example #3
0
        public override bool TryResolveRaidSpawnCenter(IncidentParms parms)
        {
            Map map = (Map)parms.target;

            parms.podOpenDelay  = 520;
            parms.spawnRotation = Rot4.Random;
            if (!parms.spawnCenter.IsValid)
            {
                if (Rand.Chance(0.4f) && map.listerBuildings.ColonistsHaveBuildingWithPowerOn(ThingDefOf.OrbitalTradeBeacon))
                {
                    parms.spawnCenter = DropCellFinder.TradeDropSpot(map);
                }
                else if (!DropCellFinder.TryFindRaidDropCenterClose(out parms.spawnCenter, map))
                {
                    parms.raidArrivalMode = PawnsArrivalModeDefOf.EdgeDrop;
                    return(parms.raidArrivalMode.Worker.TryResolveRaidSpawnCenter(parms));
                }
            }
            return(true);
        }
Example #4
0
        protected virtual bool ResolveRaidSpawnCenter(IncidentParms parms)
        {
            Map map = (Map)parms.target;

            if (parms.spawnCenter.IsValid)
            {
                return(true);
            }
            if (parms.raidArrivalMode == PawnsArriveMode.CenterDrop || parms.raidArrivalMode == PawnsArriveMode.EdgeDrop)
            {
                if (parms.raidArrivalMode == PawnsArriveMode.CenterDrop)
                {
                    parms.raidPodOpenDelay = 520;
                    parms.spawnRotation    = Rot4.Random;
                    if (Rand.Value < 0.40000000596046448 && map.listerBuildings.ColonistsHaveBuildingWithPowerOn(ThingDefOf.OrbitalTradeBeacon))
                    {
                        parms.spawnCenter = DropCellFinder.TradeDropSpot(map);
                    }
                    else if (!DropCellFinder.TryFindRaidDropCenterClose(out parms.spawnCenter, map))
                    {
                        parms.raidArrivalMode = PawnsArriveMode.EdgeDrop;
                    }
                }
                if (parms.raidArrivalMode == PawnsArriveMode.EdgeDrop)
                {
                    parms.raidPodOpenDelay = 140;
                    parms.spawnCenter      = DropCellFinder.FindRaidDropCenterDistant(map);
                    parms.spawnRotation    = Rot4.Random;
                }
            }
            else
            {
                if (!RCellFinder.TryFindRandomPawnEntryCell(out parms.spawnCenter, map, CellFinder.EdgeRoadChance_Hostile, (Predicate <IntVec3>)null))
                {
                    return(false);
                }
                parms.spawnRotation = Rot4.FromAngleFlat((map.Center - parms.spawnCenter).AngleFlat);
            }
            return(true);
        }