public override bool TryExecute(IncidentParms parms)
        {
            Map     map          = (Map)parms.target;
            int     num          = 0;
            int     countToSpawn = this.CountToSpawn;
            IntVec3 cell         = IntVec3.Invalid;
            float   angle        = Rand.Range(0f, 360f);

            for (int i = 0; i < countToSpawn; i++)
            {
                Predicate <IntVec3> validator = delegate(IntVec3 c)
                {
                    if (c.Fogged(map))
                    {
                        return(false);
                    }
                    foreach (IntVec3 current in GenAdj.CellsOccupiedBy(c, Rot4.North, this.def.shipPart.size))
                    {
                        if (!current.Standable(map))
                        {
                            bool result = false;
                            return(result);
                        }
                        if (map.roofGrid.Roofed(current))
                        {
                            bool result = false;
                            return(result);
                        }
                    }
                    return(map.reachability.CanReachColony(c));
                };
                IntVec3 intVec;
                if (!CellFinderLoose.TryFindRandomNotEdgeCellWith(14, validator, map, out intVec))
                {
                    break;
                }
                GenExplosion.DoExplosion(intVec, map, 3f, DamageDefOf.Flame, null, null, null, null, null, 0f, 1, false, null, 0f, 1);
                Building_CrashedShipPart building_CrashedShipPart = (Building_CrashedShipPart)GenSpawn.Spawn(this.def.shipPart, intVec, map);
                building_CrashedShipPart.SetFaction(Faction.OfMechanoids, null);
                building_CrashedShipPart.pointsLeft = parms.points * 0.9f;
                if (building_CrashedShipPart.pointsLeft < 300f)
                {
                    building_CrashedShipPart.pointsLeft = 300f;
                }
                IncidentWorker_ShipPartCrash.SpawnShrapnel(ThingDefOf.ChunkSlagSteel, IncidentWorker_ShipPartCrash.ShrapnelMetal.RandomInRange, intVec, map, angle);
                IncidentWorker_ShipPartCrash.SpawnShrapnel(ThingDefOf.SlagRubble, IncidentWorker_ShipPartCrash.ShrapnelRubble.RandomInRange, intVec, map, angle);
                num++;
                cell = intVec;
            }
            if (num > 0)
            {
                if (map == Find.VisibleMap)
                {
                    Find.CameraDriver.shaker.DoShake(1f);
                }
                base.SendStandardLetter(new TargetInfo(cell, map, false), new string[0]);
            }
            return(num > 0);
        }
		public override bool TryExecute(IncidentParms parms)
		{
			bool baseReturn = base.TryExecute(parms);
			Map map = (Map)parms.target;

			IncidentWorker_ShipPartCrash.SpawnShrapnel(ThingDefOf.SlagRubble, IncidentWorker_ShipPartCrash.ShrapnelRubble.RandomInRange, intVec, map, angle);

			return baseReturn;
		}