Ludeon Forums

RimWorld => Mods => Help => Topic started by: ckjzam on August 12, 2016, 02:39:45 PM

Title: What does holdsRoof actually do?
Post by: ckjzam on August 12, 2016, 02:39:45 PM
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.
Title: Re: What does holdsRoof actually do?
Post by: Shinzy on August 12, 2016, 03:40:19 PM
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
Title: Re: What does holdsRoof actually do?
Post by: ckjzam on August 12, 2016, 05:16:55 PM
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>

 
Title: Re: What does holdsRoof actually do?
Post by: 1000101 on August 13, 2016, 12:14:53 AM
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.
Title: Re: What does holdsRoof actually do?
Post by: Shinzy on August 13, 2016, 07:02:22 AM
But didn't skully's fences work without generating roof?
Title: Re: What does holdsRoof actually do?
Post by: CannibarRechter on August 13, 2016, 07:28:19 AM
They generate a roof if you use them to make a room, or use them to complete a room with other wall types, AFAICT.
Title: Re: What does holdsRoof actually do?
Post by: ckjzam on August 15, 2016, 11:57:18 AM
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!