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); }
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); }
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); }
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); }