public override void ConfigureBuildingTemplate(GameObject go, Tag prefab_tag)
    {
        go.GetComponent <KPrefabID>().AddTag(RoomConstraints.ConstraintTags.CreatureRelocator, false);
        Storage storage = go.AddOrGet <Storage>();

        storage.allowItemRemoval = false;
        storage.showDescriptor   = true;
        storage.storageFilters   = STORAGEFILTERS.SWIMMING_CREATURES;
        storage.workAnims        = new HashedString[1]
        {
            new HashedString("working_pre")
        };
        storage.workAnimPlayMode = KAnim.PlayMode.Once;
        storage.overrideAnims    = new KAnimFile[1]
        {
            Assets.GetAnim("anim_interacts_fishrelocator_kanim")
        };
        storage.synchronizeAnims  = false;
        storage.useGunForDelivery = false;
        storage.allowSettingOnlyFetchMarkedItems = false;
        storage.faceTargetWhenWorking            = false;
        CreatureDeliveryPoint creatureDeliveryPoint = go.AddOrGet <CreatureDeliveryPoint>();

        creatureDeliveryPoint.deliveryOffsets = new CellOffset[1]
        {
            new CellOffset(0, 1)
        };
        creatureDeliveryPoint.spawnOffset      = new CellOffset(0, -1);
        creatureDeliveryPoint.playAnimsOnFetch = true;
        go.AddOrGet <TreeFilterable>();
    }
    private void OnCopySettings(object data)
    {
        GameObject gameObject = (GameObject)data;

        if (!((UnityEngine.Object)gameObject == (UnityEngine.Object)null))
        {
            CreatureDeliveryPoint component = gameObject.GetComponent <CreatureDeliveryPoint>();
            if (!((UnityEngine.Object)component == (UnityEngine.Object)null))
            {
                creatureLimit = component.creatureLimit;
                RebalanceFetches();
            }
        }
    }
            /*
             * --- int cell = Grid.PosToCell(this);
             +++ int cell = Grid.OffsetCell( Grid.PosToCell(this), spawnOffset );
             */
            private static int CorrectedCell(int cell, CreatureDeliveryPoint cdp)
            {
                int corrected = Grid.OffsetCell(cell, cdp.spawnOffset);

                return(Grid.IsValidCell(corrected) ? corrected : cell);
            }