What does holdsRoof actually do?

Started by ckjzam, August 12, 2016, 02:39:45 PM

Previous topic - Next topic

ckjzam

I'm making fences and they're working totally fine except that when I enclose a yard it generates a build roof area. I tried setting holdsRoof to false, and that doesn't seem to do anything.

My questions are,

1. What does holdsRoof actually do?

2. How can I make fences (walls) not automatically generate build roof areas? I know I could just stick no roof areas all over the place but I'd really like to make it so they don't generate roofs in the first place, if that's possible.

Thanks.

Shinzy

Heyoo! I axed around a bit cause holdsroof being false should do what you wanted it to do (atleast it has in the past)
could you show the xml file it might be buggered somehow, ooor then there's something different in this Alpha

ckjzam

Thank you for the help! :)

The XML is modified from Itchy Flea's Fences mod but that mod has holdsRoof as true sooo that's one of the things I changed. Also the designationCategory is ItchyFences so that my fences go into the same category as Itchy's if you load both mods.

<Buildings>

  <ThingDef Name="BuildingBase" Abstract="True">
    <category>Building</category>
    <soundImpactDefault>BulletImpactMetal</soundImpactDefault>
    <selectable>true</selectable>
    <drawerType>MapMeshAndRealTime</drawerType>
    <terrainAffordanceNeeded>Light</terrainAffordanceNeeded>
    <repairEffect>Repair</repairEffect>
    <staticSunShadowHeight>0.0</staticSunShadowHeight>
    <blockLight>false</blockLight>
  </ThingDef>
 
<ThingDef ParentName="BuildingBase" Name="DoorBase" Abstract="True">
    <thingClass>Building_Door</thingClass>
    <blueprintClass>Blueprint_Door</blueprintClass>
    <category>Building</category>
    <altitudeLayer>DoorMoveable</altitudeLayer>
    <fillPercent>1</fillPercent>
    <useHitPoints>true</useHitPoints>
    <statBases>
      <MaxHitPoints>100</MaxHitPoints>
      <Flammability>1.0</Flammability>
    </statBases>
    <selectable>true</selectable>
    <tickerType>Normal</tickerType>
    <size>(1,1)</size>
    <rotatable>false</rotatable>
    <soundImpactDefault>BulletImpactMetal</soundImpactDefault>
    <terrainAffordanceNeeded>Light</terrainAffordanceNeeded>
    <designationCategory>ItchyFences</designationCategory>
    <staticSunShadowHeight>0.0</staticSunShadowHeight>
    <blockLight>false</blockLight>
    <drawerType>RealtimeOnly</drawerType>
    <building>
      <soundDoorOpenPowered>DoorOpenPowered</soundDoorOpenPowered>
      <soundDoorClosePowered>DoorClosePowered</soundDoorClosePowered>
      <soundDoorOpenManual>DoorOpenManual</soundDoorOpenManual>
      <soundDoorCloseManual>DoorCloseManual</soundDoorCloseManual>
      <ignoreNeedsPower>true</ignoreNeedsPower>
      <canPlaceOverWall>true</canPlaceOverWall>
    </building>
  </ThingDef>
   
<ThingDef ParentName="BuildingBase">
    <defName>CKJ_PF_Fence</defName>
    <label>picket fence</label>
    <thingClass>Building</thingClass>
    <category>Building</category>
    <description>A simple picket fence.</description>
    <graphicData>
      <texPath>CKJFences/PF_Nat</texPath>
      <graphicClass>Graphic_Single</graphicClass>
      <linkType>Basic</linkType>
      <linkFlags>
        <li>Custom2</li>
      </linkFlags>
    </graphicData>
    <uiIconPath>CKJFences/PF_Nat_Icon</uiIconPath>
    <blueprintGraphicData>
      <texPath>CKJFences/PF_Nat_BP</texPath>
    </blueprintGraphicData>
<costStuffCount>8</costStuffCount>
<statBases>
<MaxHitPoints>100</MaxHitPoints>
<WorkToMake>120</WorkToMake>
<Flammability>1.0</Flammability>
</statBases>
    <stuffCategories>
      <li>Woody</li>
    </stuffCategories>
    <altitudeLayer>Building</altitudeLayer>
    <passability>Impassable</passability>
    <castEdgeShadows>false</castEdgeShadows>
    <fillPercent>0.2</fillPercent>
    <coversFloor>false</coversFloor>
    <placingDraggableDimensions>1</placingDraggableDimensions>
    <tickerType>Never</tickerType>
    <rotatable>false</rotatable>
    <selectable>true</selectable>
    <neverMultiSelect>false</neverMultiSelect>
    <terrainAffordanceNeeded>Light</terrainAffordanceNeeded>
    <holdsRoof>false</holdsRoof>
    <designationCategory>ItchyFences</designationCategory>
    <staticSunShadowHeight>0.0</staticSunShadowHeight>
    <blockLight>false</blockLight>
    <building>
      <ignoreNeedsPower>true</ignoreNeedsPower>
    </building>
    <damageMultipliers>
      <li>
        <damageDef>Bomb</damageDef>
        <multiplier>3</multiplier>
      </li>
    </damageMultipliers>
  </ThingDef>
 
</Buildings>

 

1000101

holdsRoof means the the building can support a roof (and the five cell radius around it).

The reason that the game is probably trying to build a roof is that the area has become enclosed into a "room" and even though the "walls" of the room won't support a roof it will try to build one anyway because of the enclosed area.
(2*b)||!(2*b) - That is the question.
There are 10 kinds of people in this world - those that understand binary and those that don't.

Powered By

Shinzy

But didn't skully's fences work without generating roof?

CannibarRechter

They generate a roof if you use them to make a room, or use them to complete a room with other wall types, AFAICT.
CR All Mods and Tools Download Link
CR Total Texture Overhaul : Gives RimWorld a Natural Feel
CR Moddable: make RimWorld more moddable.
CR CompFX: display dynamic effects over RimWorld objects

ckjzam

Thanks for your help guys!

Also I hope this posts. I've been trying to post this for ages but the captcha image won't load and the "listen to the letters" option has a gross staticky voice with P's that sound like B's and F's that sound like S's... -_-

Edit: Hey it worked!