PDA

View Full Version : Placement flags


plasticbox
20th Dec 2014, 9:38 PM
So I've been poking at the placement flags on various occasions now, here's what I learned by now:

This is one entry labeled "PlacementFlags" in the COBJ, I've only seen the last four digits being used so far.



0x00001000 -- multi-placement (i.e. when selecting this object, the game will automatically keep it selected until the user picks something else); e.g. in counters, curtains
0x00000100 -- will stay up when the wall drops (for wall attachments), e.g. mirrors (and the no-drop cabinets I made)
0x00000002 -- fixed height (for wall attachments), e.g. mirrors
0x00000006 -- variable height (for wall attachments), e.g. windowboxes, wall lights
0x00000008 -- ceiling lights (I guess it means: stick this to the ceiling)
0x0000000E -- not sure; used in cabinets .. maybe it means something like "glued to walls OR ceilings"


Which slots an object will use depends on Unk03, not the placement flag (0x01 = small (shelves), 0x02 = medium (e.g. on side tables), 0x03 = large (e.g. on end tables)).


Any other insights? Ah OK, very good -- coincidentially I just came across the following list in the buy/build scripts (these are decimal, obviously):


class PlacementFlags(enum.IntFlags, export=False):
__qualname__ = 'PlacementFlags'
CENTER_ON_WALL = 1
EDGE_AGAINST_WALL = 2
ADJUST_HEIGHT_ON_WALL = 4
CEILING = 8
IMMOVABLE_BY_USER = 16
DIAGONAL = 32
ROOF = 64
REQUIRES_FENCE = 128
SHOW_OBJ_IF_WALL_DOWN = 256
SLOTTED_TO_FENCE = 512
REQUIRES_SLOT = 1024
ALLOWED_ON_SLOPE = 2048
REPEAT_PLACEMENT = 4096
NON_DELETEABLE = 8192
NON_INVENTORYABLE = 16384
NON_ABANDONABLE = 32768
REQUIRES_TERRAIN = 65536
ENCOURAGE_INDOOR = 131072
ENCOURAGE_OUTDOOR = 262144
NON_DELETABLE_BY_USER = 524288
NON_INVENTORYABLE_BY_USER = 1048576
REQUIRES_WATER_SURFACE = 2097152
ALLOWED_IN_FOUNTAIN = 4194304
GROUNDED_AGAINST_WALL = 8388608
NOT_BLUEPRINTABLE = 16777216
IS_HUMAN = 33554432
ALLOWED_ON_WATER_SURFACE = 67108864
ALLOWED_IN_POOL = 134217728
ON_WALL_TOP = 268435456

REQUIRES_WALL = CENTER_ON_WALL | EDGE_AGAINST_WALL
WALL_GRAPH_PLACEMENT = REQUIRES_WALL | REQUIRES_FENCE
SNAP_TO_WALL = REQUIRES_WALL | ADJUST_HEIGHT_ON_WALL

So that would be the complete info.