How do I get the ground-penetrating scanner to work indoors???

Started by ECI Joe, September 13, 2021, 12:47:40 AM

Previous topic - Next topic

ECI Joe

Hey all. The following isn't a mod specifically. I'm not making a mod to do the thing in the title, I'm editing the definitions files under Data / Core / Defs / ThingDefs_Buildings. Because I'm comfortable messing around with stuff that might make my computer explode. :)

So I opened Buildings_Misc.xml and went into the section for the ground-penetrating scanner. Oh, look, there's this tag: <canBeUsedUnderRoof>false</canBeUsedUnderRoof>. So, naturally, the first thing I tried was changing that to true. That did not work. The scanner would not build under a roof.

Further down, there's the tag <placeWorkers>. This has two subtags under it. The first is <li>PlaceWorker_NotUnderRoof</li>. I deleted that line, saved the file, reloaded RimWorld--and, success! I was able to BUILD the scanner indoors.

Except, my pawns couldn't USE the scanner if there was a roof over it. I built a scanner outdoors a few tiles away for testing; I selected a pawn, had him right-click the outdoors scanner, and I got "prioritize scanning at ground-penetrating scanner". If I had that same pawn right-click the scanner that WAS under a roof, I got nothing.

I went back into the same file, and deleted the second line under <placeWorkers>: <li>PlaceWorker_PreventInteractionSpotOverlap</li>. Deleting this didn't work either.

I searched the definitions files some more, looked in WorkGivers and a few other places to see if the scanning job has restrictions. Couldn't find anything.

So, what am I missing? (i'm hoping this is one of those incidents where there's something incredibly easy that I missed, but usually I don't have that kind of luck)

RawCode

public bool CanUseNow
{
get
{
return this.parent.Spawned && (this.powerComp == null || this.powerComp.PowerOn) && !global::Verse.RoofUtility.IsAnyCellUnderRoof(this.parent) && (this.forbiddable == null || !this.forbiddable.Forbidden) && this.parent.Faction == global::RimWorld.Faction.OfPlayer;
}
}

ECI Joe

So, no way to do it in the xml files? DLL only?

Nuts. That's above my pay grade.  :-\

RawCode

git gut!

with your current predicted skill level you will need 6 hours to solve issue, this includes downloading and installing required tools and reading required literature.

less then single workday if you put real effort to it.