<aside> 📌
You can easily tinker with the way items are configured by editing a text file within your mod folder. Please see the quick walkthrough guide on exactly how to do this. Below are a list of parameters you can edit to your liking, along with a brief description.
</aside>
| Parameter | Input Format | Input Details | Notes |
|---|---|---|---|
| copyDataFrom | <item> | Copy all below parameters from an existing in-game item. For a list of all existing in-game items, see this section. | |
| spawnable | true/false | Is this item a physical object within the world? | |
| presetName | <name> | The name of this item as referred to internally (the name that appears in-game can be different and is set up externally to this script; see the walkthrough for details). | |
| model | <prefab> | The model this item uses as its physical representation within the world. For all currently in game, see this section. | |
| excludeFromObjectPooling | true/false | If true the game will not use object pooling for this item. This is mainly a performance optimisation. | |
| excludeFromVisibilityRangeChecks | true/false | If true, the mesh renderers on this object won't get turned on and off with range or room visibility. | |
| spawnRange | <integer> | 0 = veryClose | |
| 1 = close | |||
| 2 = medium | |||
| 3 = far | |||
| 4 = veryFar | |||
| 5 = maximum | Spawn the model in at this range. | ||
| inheritColouringFromDecor | true/false | If true the same material colours will be shared over all instances of this furniture for the room. | |
| shareColoursWithFurniture | <integer> | 0 = none | |
| 1 = seating | |||
| 2 = wallFrontage | |||
| 3 = cabinets | |||
| 4 = cubicles | |||
| 5 = curtains | |||
| 6 = telephone | |||
| 7 = wood | |||
| 8 = doors | |||
| 9 = shelving | |||
| 10 = bins | |||
| 11 = blinds | The same material colours will be shared over all instances of this furniture for the room. This cannot 'create' a material, so furniture with it must already exist in the room. | ||
| useOwnColourSettings | true/false | Set true if this object needs custom colours… | |
| mainColour | <integer> | 0 = none | |
| 1 = ownersFavColour | |||
| 2 = randomColour | |||
| 3 = randomDecorColour | |||
| 4 = syncDisk | Import object main colour from this source. | ||
| customColour1 | <integer> | 0 = none | |
| 1 = ownersFavColour | |||
| 2 = randomColour | |||
| 3 = randomDecorColour | |||
| 4 = syncDisk | Import object custom colour 1 from this source. | ||
| customColour2 | <integer> | 0 = none | |
| 1 = ownersFavColour | |||
| 2 = randomColour | |||
| 3 = randomDecorColour | |||
| 4 = syncDisk | Import object custom colour 2 from this source. | ||
| customColour3 | <integer> | 0 = none | |
| 1 = ownersFavColour | |||
| 2 = randomColour | |||
| 3 = randomDecorColour | |||
| 4 = syncDisk | Import object custom colour 3 from this source. | ||
| inheritGrubValue | true/false | If true this item will inherit the ‘grub’ (dirtiness) value from the furniture it is spawned on. This is a visual effect only. | |
| includeBelongsTo | true/false | Include the owner’s name in the generated name of this item. | |
| useNameShorthand | true/false | Use a shorthand version of the name used above (Initial + Surname) | |
| useApartmentName | true/false | Include the apartment name in the generated name of this item. | |
| isLight | <lighting preset> | If this is or contains a light source, this is a reference to the configuration. See here for a full list. | |
| lightswitch | <integer> | 0 = switchState | |
| 1 = custom1 | |||
| 2 = custom2 | |||
| 3 = custom3 | |||
| 4 = lockState | |||
| 5 = lockedIn | |||
| 6 = sprinting | |||
| 7 = enforcersInside | |||
| 8 = ko | |||
| 9 = securityGrid | |||
| 10 = carryPhysicsObject | Use this internal switch state of this item to automatically control the above light source. | ||
| iconOverride | <item> | Override this item’s evidence icon with that of another item. | |
| itemClass | <integer> | 0 = cosnumable | |
| 1 = medical | |||
| 2 = equipment | |||
| 3 = document | |||
| 4 = misc | |||
| 5 = electronics | This is used to categorise this item in the home editing inventory screen. | ||
| allowInApartmentStorage | true/false | Allows this item to appear in player’s apartment storage screen. | |
| allowInApartmentShop | true/false | Allows this item to be purchased in the player’s apartment shop screen. | |
| disableMoveToStorage | true/false | Disables this item from being able to be moved to the player’s apartment storage inventory. | |
| useMaterialOverride | true/false | Use a material override for impact sound effects for this item. | |
| materialOverride | [ <float>, <float>, <float>, <float>, <float>, <float>, <float>, <float> ] | 0 - 1 float for each: | |
| Element 0 = concrete | |||
| Element 1 = wood | |||
| Element 2 = carpet | |||
| Element 3 = tile | |||
| Element 4 = plaster | |||
| Element 5 = fabric | |||
| Element 6 = metal | |||
| Element 7 = glass | List of float values that set the values for the sound effects material override. | ||
| actionsPreset | [ <action>, … ] | Configuration of actions that can be performed by using the item. See full list here. | |
| onlyIllegalIfInNonPublic | true/false | Illegal actions are only classed as illegal if the item is in a non-public space. | |
| rangeModifier | <float> | This modifier will be added to the player’s interaction distance. | |
| physicsProfile | <physics profile> | Profile used for the item’s physics. | |
| overrideMass | true/false | Override the item’s mass if different to that found in the physics profile. | |
| forcePhysicsAlwaysOn | true/false | If true, when drawn, this object’s physics will always be active. | |
| reactWithExternalStimuli | true/false | If true this object will react with doors, damage impacts etc. | |
| mass | <float> | Override for item mass. | |
| breakable | true/false | If true, the player will be able to break this item by throwing it. | |
| particleProfile | <particle effect> | If breakable, the item will produce this particle effect configuration. | |
| overrideShatterSettings | true/false | Overrides shatter settings in the particle profile. | |
| shardSize | <float> | The size of the shards in the break particle effect. | |
| shardEveryXPixels | <integer> | Create a shard every this amount of pixels on the texture. | |
| overrideSpatterSettings | true/false | Overrides spatter settings in the particle profile. | |
| spatterSimulation | <spatter pattern> | Configuration reference for the spatter that this item creates on collisions. | |
| spatterCountMultiplier | <float> | Multiply the amount of spatter above by this. | |
| startingSwitchState | true/false | The starting state of this item’s internal ‘switch state’. | |
| startingCustomState1 | true/false | The starting state of this item’s internal ‘custom state 1’. | |
| startingCustomState2 | true/false | The starting state of this item’s internal ‘custom state 2’. | |
| startingCustomState3 | true/false | The starting state of this item’s internal ‘custom state 3’. | |
| startingLockState | true/false | The starting state of this item’s internal ‘lock state’. | |
| valueMin | <integer> | Minimum monetary value of this item. | |
| valueMax | <integer> | Maximum monetary value of this item. | |
| tamperEnabled | true/false | Will the AI notice if this is moved? | |
| readingEnabled | true/false | If within reading range then display text. | |
| readingEnabledOnlyWithSwitchIsTue | true/false | Reading mode is only active while switch status is true. | |
| readingEnabledOnlyWithKaizenSkill | true/false | Reading mode is only active while player has the Kaizen sync disk ability. | |
| readingSource | <integer> | 0 = evidenceNote | |
| 2 = multipageEvidence | |||
| 3 = time | |||
| 4 = bookPreset | |||
| 5 = recordPreset | |||
| 6 = syncDiskPreset | |||
| 7 = mainEvidenceText | |||
| 8 = kaizenSkillDisplay | Where to pull the text from in reading mode. | ||
| discoverOnRead | true/false | Player discovers this item’s evidence when reading mode is entered. | |
| pageTurnReadingDelay | <float> | A delay to reading when a page is turned. | |
| distanceRecognitionEnabled | true/false | If within a certain range, then display a grey-ed out interaction icon with name text. | |
| recognitionRange | <float> | The range at which the reading mode switches to ‘recognised’. | |
| subObjectClasses | [ <sub object class>, … ] | Spawn this object using this sub object group. Each piece of furniture will feature these classes that dictate what can be spawned on them. | |
| backupClasses | [ <sub object class>, …. ] | If the game cannot find any of the above, it will use these classes as a backup. | |
| autoPlacement | true/false | Whether this will be automatically placed along with furniture. | |
| alwaysPlaceAtGameLocation | true/false | If true, these objects will be placed with no owners at every game location (based on other filters in this section). | |
| frequencyPerGamelocationMin | <integer> | The minimum number of objects that will be auto-placed at every game location. | |
| frequencyPerGameLocationMax | <integer> | The maximum number of objects that will be auto-placed at every game location. | |
| perGameLocationObjectPriority | <integer> | Dictates in what order objects should be placed in. | |
| placeIfFiltersPresentInOwner | true/false | If true, owners/inhabitants/employees will be scanned for these traits and items will be placed accordingly… | |
| placeAtHome | true/false | Place at the owner citizen's home. | |
| placeAtWork | true/false | Place at the owner citizen's place of work. | |
| traitModifier1 | [ true/false, <integer>, <integer>, <integer>, <character trait>, … ] | Element 0 = mustPassForApplication | |
| Element 1 = appliedFrequencyMin | |||
| Element 2 = appliedFrequencyMax | |||
| Element 3 = | |||
| 0 = ifAnyOfThese | |||
| 1 = ifAllOfThese | |||
| 2 = ifNoneOfThese | |||
| 3 = ifPartnerAnyOfThese | |||
| Element 4+ = <character trait> | Pass the correct values into this to configure a citizen modifier check for spawning this item. | ||
| traitModifier2 | [ true/false, <integer>, <integer>, <integer>, <character trait>, … ] | Element 0 = mustPassForApplication | |
| Element 1 = appliedFrequencyMin | |||
| Element 2 = appliedFrequencyMax | |||
| Element 3 = | |||
| 0 = ifAnyOfThese | |||
| 1 = ifAllOfThese | |||
| 2 = ifNoneOfThese | |||
| 3 = ifPartnerAnyOfThese | |||
| Element 4+ = <character trait> | Pass the correct values into this to configure a citizen modifier check for spawning this item. | ||
| traitModifier3 | [ true/false, <integer>, <integer>, <integer>, <character trait>, … ] | Element 0 = mustPassForApplication | |
| Element 1 = appliedFrequencyMin | |||
| Element 2 = appliedFrequencyMax | |||
| Element 3 = | |||
| 0 = ifAnyOfThese | |||
| 1 = ifAllOfThese | |||
| 2 = ifNoneOfThese | |||
| 3 = ifPartnerAnyOfThese | |||
| Element 4+ = <character trait> | Pass the correct values into this to configure a citizen modifier check for spawning this item. | ||
| frequencyPerOwnerMin | <integer> | The minimum number of objects that will be auto-placed for each owner. | |
| frequencyPerOwnerMax | <integer> | The maximum number of objects that will be auto-placed for each owner. | |
| multiplyByMessiness | true/false | If true, the overall frequency range will be multiplied by the inverse of conscientiousness (untidy = more) | |
| perOwnerObjectPriority | <integer> | Dictates in what order objects should be placed in. | |
| writerIs | <integer> | 0 = self | |
| 1 = partner | |||
| 2 = paramour | |||
| 3 = boss | |||
| 4 = doctor | |||
| 5 = landlord | Import the ‘writer’ of this item from this connection. | ||
| receiverIs | <integer> | 0 = self | |
| 1 = partner | |||
| 2 = paramour | |||
| 3 = boss | |||
| 4 = doctor | |||
| 5 = landlord | Import the ‘receiver’ of this item from this connection. | ||
| canBeFromSelf | true/false | If the above two options are different, is this allowed to be from the same person to the same person? | |
| limitPerObject | true/false | Limit the max number of this item spawning on 1 piece of furniture. | |
| perObjectLimit | <integer> | Max number allowed per piece of furniture. | |
| limitPerRoom | true/false | Limit the max number of this item spawning per room. | |
| perRoomLimit | <integer> | Max number allowed per room. | |
| limitPerAddress | true/false | Limit the max number of this item spawning per address. | |
| perAddressLimit | <integer> | Max number allowed per address. | |
| limitInResidential | true/false | Limit the max number of this item spawning per residential address. | |
| perResidentialLimit | <integer> | Max number allowed per residential address. | |
| banFromRooms | [ <room configuration>, … ] | Ban this item from being placed in certain room types. | |
| limitToCertainRooms | true/false | Only feature this item in certain room types. | |
| onlyInRooms | [ <room configuration>, … ] | List of rooms that this item is allowed to spawn in. | |
| limitToCertainBuildings | true/false | Only feature this item in certain building types. | |
| onlyInBuildings | [ <building>, … ] | List of buildings that this item is allowed to spawn in. | |
| attemptToStoreInFolder | <evidence preset> | If this is not null, it will attempt to place this evidence inside a folder matching this evidence type. | |
| folderPlacementChance | <float> | If the above is not null, the chance of being placed in the folder. | |
| dontPlaceIfNoFolder | true/false | If unable to place in folder, then don't place at all. | |
| folderOwnershipMustMatch | true/false | Folder's ownership must match. | |
| useSubSpawning | true/false | If true this will also look to spawn upon on other non-furniture objects (and prioritize them). | |
| securityLevel | <Integer> | 0 - 3 | This will try to be placed in a place of security matching this, if not higher. |
| ownedRule | <Integer> | 0 = nonOwnedOnly | |
| 1 = ownedOnly | |||
| 2 = prioritiseNonOwned | |||
| 3 = prioritiseOwned | |||
| 4 = both | Rules about being placed in owned vs non-owned locations. 'Prioritise' settings will favour owned locations but sill place in non-owned, while 'only' settings will only place in that location. |