首先注意到的就是HaulableAlways和紧邻的HaulableEver,这两个元素都表示可搬运的Thing,有什么区别呢?
ThingDef类里有一个成员变量:
public bool EverHaulable{
get{
return this.alwaysHaulable && this.designateHaulable;}}
可以看到这里出现了alwaysHaulable和另一个Haulable(designate翻译过来叫“指定”)
所以HaulableEver是指东西能不能被合理搬运,禁止互动会使designateHaulable为false,最终EverHaulable为false,不可搬运(到你的仓库里)
然而alwaysHaulable是不受禁止互动影响的,简单来说建筑的这项值为false而物品都为true,换句话说HaulableAlways过滤剩下的是所有物品,包括各种块堆(虽然价格为0)
所以最终计算的是所有的(地上的)物品,禁止互动和取消贮存区是没有用的