### Conditional Appearance Examples Source: https://context7.com/psiberx/cp2077-archive-xl/llms.txt Demonstrates how to define conditional appearances in .app files using name and condition syntax. Prioritization is based on specificity, with more specific conditions taking precedence. ```yaml my_jacket!black&camera=tpp my_jacket!black my_jacket&gender=w&camera=tpp my_jacket&camera=tpp my_jacket ``` ```yaml sleeves_component&camera=tpp: mesh: mymod\meshes\jacket_sleeves.mesh ``` ```yaml body_mesh&gender=w: mesh: mymod\meshes\jacket_body_female.mesh body_mesh&gender=m: mesh: mymod\meshes\jacket_body_male.mesh ``` -------------------------------- ### Define Archive XL configuration file paths Source: https://github.com/psiberx/cp2077-archive-xl/wiki/Home Place the .xl configuration file in the same directory as the corresponding .archive file. ```text \archive\pc\mod\mymod.archive \archive\pc\mod\mymod.archive.xl ``` ```text \mods\betsmod\archives\mymod.archive \mods\betsmod\archives\mymod.archive.xl ``` -------------------------------- ### Link and Copy Resources in .xl Source: https://context7.com/psiberx/cp2077-archive-xl/llms.txt Create aliases for shared patching or independent copies for unique modifications. ```yaml # In .xl configuration - resource linking resource: link: # Create aliases: changes to source apply to targets archive_xl\characters\common\hair\h1_base_color_patch.mesh: - archive_xl\characters\common\hair\base_color_patch.mesh archive_xl\head\appearances\hel_000_pma__basehead.app: - archive_xl\head\appearances\hel_pma_lashes.app copy: # Create independent copies mymod\templates\base_material.mi: - mymod\materials\variant_a.mi - mymod\materials\variant_b.mi ``` -------------------------------- ### Define Localization Resources Source: https://context7.com/psiberx/cp2077-archive-xl/llms.txt Localization files define translatable strings referenced by secondary keys in TweakDB records and game resources. ```json { "Header": { "WKitJsonVersion": "0.0.3", "GameVersion": 1600, "DataType": "CR2W" }, "Data": { "Version": 195, "BuildVersion": 0, "RootChunk": { "$type": "JsonResource", "cookingPlatform": "PLATFORM_PC", "root": { "HandleId": "0", "Data": { "$type": "localizationPersistenceOnScreenEntries", "entries": [ { "$type": "localizationPersistenceOnScreenEntry", "secondaryKey": "MyMod-Jacket-Name", "femaleVariant": "Cyber Samurai Jacket" }, { "$type": "localizationPersistenceOnScreenEntry", "secondaryKey": "MyMod-Jacket-Desc", "femaleVariant": "A sleek armored jacket with integrated cooling system.", "maleVariant": "A rugged armored jacket built for combat." }, { "$type": "localizationPersistenceOnScreenEntry", "primaryKey": "Story-Act1-Journal-01", "femaleVariant": "Modified original game text entry" } ] } } }, "EmbeddedFiles": [] } } ``` -------------------------------- ### Configure ArchiveXL Loader Source: https://context7.com/psiberx/cp2077-archive-xl/llms.txt The .xl configuration file must be placed in the same directory as the archive file to define resource merging. ```yaml # mymod.archive.xl - Place in same directory as mymod.archive # Path: \archive\pc\mod\mymod.archive.xl # Or REDmod: \mods\mymod\archives\mymod.archive.xl factories: - mymod\factories\clothing.csv - mymod\factories\weapons.csv localization: onscreens: en-us: mymod\localization\en-us.json de-de: mymod\localization\de-de.json fr-fr: mymod\localization\fr-fr.json subtitles: en-us: mymod\localization\subtitles_en-us.json # Register custom body types for automatic refit selection player: bodyTypes: [CustomBody, AnotherBody] # Journal entries for quest mods journals: - mymod\journal\quest_entries.journal ``` -------------------------------- ### Configure World Streaming Blocks Source: https://context7.com/psiberx/cp2077-archive-xl/llms.txt Use the 'blocks' section to prevent entire sectors from loading. Specify the path to the .streamingsector file that should be blocked. ```yaml streaming: blocks: - base\worlds\03_night_city\sectors\sector_blocked.streamingsector ``` -------------------------------- ### Appearance Suffixes in TweakDB Source: https://context7.com/psiberx/cp2077-archive-xl/llms.txt Shows how to configure appearance suffixes in a TweakDB record for automatic mesh/appearance selection based on character state like body type, cyberarms, and footwear. ```yaml Items.MyGloves: $base: Items.GenericHandClothing entityName: my_gloves appearanceName: my_gloves appearanceSuffixes: - !append itemsFactoryAppearanceSuffix.BodyType - !append itemsFactoryAppearanceSuffix.ArmsState - !append itemsFactoryAppearanceSuffix.FeetState ``` -------------------------------- ### Configure factories and localization in YAML Source: https://github.com/psiberx/cp2077-archive-xl/wiki/Home Specify paths for factory CSV files and localization JSON files within the .xl configuration. ```yaml factories: - mymod\factories\clothing.csv - mymod\factories\weapons.csv localization: onscreens: en-us: mymod\localization\en-us.json de-de: mymod\localization\de-de.json ``` -------------------------------- ### Configure Custom Animations in .xl Source: https://context7.com/psiberx/cp2077-archive-xl/llms.txt Attach animation sets to entities with specific priorities to control layering and overrides. ```yaml # In .xl configuration - animations animations: - entities: - base\characters\entities\player\player_ma_fpp.ent - base\characters\entities\player\player_wa_fpp.ent component: root set: mymod\animations\custom_anims.animset priority: 128 # Default priority, higher overrides lower variables: - mymod\animations\variables.anims - entities: - my_custom_npc.ent component: root set: mymod\animations\npc_anims.animset priority: 200 # Higher priority for override ``` -------------------------------- ### Define Localization in en-us.json Source: https://github.com/psiberx/cp2077-archive-xl/wiki/Home Adds custom localization entries using a JsonResource. Use secondaryKey for new entries and primaryKey to override existing game translations. ```json { "Header": { "WKitJsonVersion": "0.0.3", "GameVersion": 1600, "DataType": "CR2W" }, "Data": { "Version": 195, "BuildVersion": 0, "RootChunk": { "$type": "JsonResource", "cookingPlatform": "PLATFORM_PC", "root": { "HandleId": "0", "Data": { "$type": "localizationPersistenceOnScreenEntries", "entries": [ { "$type": "localizationPersistenceOnScreenEntry", "secondaryKey": "MyMod-Item-Name", "femaleVariant": "Samurai Mask & Aviators" } ] } } }, "EmbeddedFiles": [] } } ``` -------------------------------- ### Body Type Registration for ArchiveXL Source: https://context7.com/psiberx/cp2077-archive-xl/llms.txt Explains how to register custom body types with ArchiveXL in a .xl configuration file and associate them with a visual tag in the body's .ent or .app file for clothing refits. ```yaml player: bodyTypes: [MyCustomBody, AnotherVariant] ``` ```yaml visualTagsSchema: - MyCustomBody ``` ```yaml appearanceName: jacket&MyCustomBody ``` -------------------------------- ### Integrate Quest Phases Source: https://context7.com/psiberx/cp2077-archive-xl/llms.txt Inject custom quest phases into the game's quest system by specifying the mod, phase path, parent quest paths, and input/output connection points. Set 'intercept' to true to branch the quest flow. ```yaml quests: phases: - mod: mymod phasePath: mymod\quests\my_quest_phase.questphase parentPaths: - base\quests\main_quest\act1.quest input: nodePath: [1, 5, 12] # Path to input node socketName: Out output: nodePath: [1, 5, 13] # Path to output node socketName: In intercept: false # true to intercept flow, false to branch ``` -------------------------------- ### Fix Resource References in .xl Source: https://context7.com/psiberx/cp2077-archive-xl/llms.txt Map old names and paths to new ones, or define context variables for dynamic resolution. ```yaml # In .xl configuration - resource fixes resource: fix: base\characters\common\hair\hh_006_ma__demo.mesh: names: # Map old names to new names phoenix_fire_cap: phoenix_fire@cap green_orange_cards: green_orange@dread black_carbon_cap: black_carbon@cap paths: # Map old paths to new paths base\old\path\material.mi: base\new\path\material.mi context: # Define context variables for dynamic resolution DreadBaseMaterial: base\characters\common\hair\textures\hair_profiles\_master__dread_bright.mi CapBaseMaterial: archive_xl\characters\common\hair\textures\hair_profiles\hh_006_ma__demo_cap.mi ``` -------------------------------- ### Define Resource Scoping in .xl Source: https://context7.com/psiberx/cp2077-archive-xl/llms.txt Establish hierarchy relationships between resources to ensure correct loading and modification targeting. ```yaml # In .xl configuration - resource scoping resource: scope: # Define scope hierarchy player.ent: - player_ma.ent - player_wa.ent player_ma.ent: - base\characters\entities\player\player_ma_fpp.ent - base\characters\entities\player\player_ma_tpp.ent player_customization.app: - player_ma_hair.app - player_wa_hair.app ``` -------------------------------- ### Define Template Appearance Source: https://github.com/psiberx/cp2077-archive-xl/wiki/Home Basic configuration for an entity template appearance. ```yaml name: my_item appearanceResource: mod\my_item.app appearanceName: my_item ``` -------------------------------- ### Configure Localization Language Codes Source: https://context7.com/psiberx/cp2077-archive-xl/llms.txt Define supported language codes for localization in the 'localization' section. The first language listed serves as the fallback. Paths point to .json files containing localized strings. ```yaml localization: onscreens: pl-pl: mymod\loc\pl-pl.json # Polish en-us: mymod\loc\en-us.json # English es-es: mymod\loc\es-es.json # Spanish fr-fr: mymod\loc\fr-fr.json # French it-it: mymod\loc\it-it.json # Italian de-de: mymod\loc\de-de.json # German es-mx: mymod\loc\es-mx.json # Latin American Spanish kr-kr: mymod\loc\kr-kr.json # Korean zh-cn: mymod\loc\zh-cn.json # Simplified Chinese ru-ru: mymod\loc\ru-ru.json # Russian pt-br: mymod\loc\pt-br.json # Brazilian Portuguese jp-jp: mymod\loc\jp-jp.json # Japanese zh-tw: mymod\loc\zh-tw.json # Traditional Chinese ar-ar: mymod\loc\ar-ar.json # Arabic cz-cz: mymod\loc\cz-cz.json # Czech hu-hu: mymod\loc\hu-hu.json # Hungarian tr-tr: mymod\loc\tr-tr.json # Turkish th-th: mymod\loc\th-th.json # Thai ``` -------------------------------- ### Configure Dynamic Appearances Source: https://context7.com/psiberx/cp2077-archive-xl/llms.txt Dynamic appearances use visual tags and property interpolation to handle multiple variants, genders, and body types within a single definition. ```yaml # In your root entity template (.ent), add the visual tag to enable dynamic appearances visualTagsSchema: - DynamicAppearance # TweakDB item record - variant is specified after '!' # Items.my_jacket_black uses appearance "my_jacket" with variant "black" Items.my_jacket_black: $base: Items.GenericInnerChestClothing entityName: my_jacket appearanceName: my_jacket!black Items.my_jacket_red: $base: Items.GenericInnerChestClothing entityName: my_jacket appearanceName: my_jacket!red+arasaka # Composite variant: color + decal # In appearance definition (.app), use property interpolation with '*' prefix # Component mesh path with dynamic placeholders mesh: *mymod\meshes\jacket_{gender}_{body}.mesh meshAppearance: *{variant.1}_{variant.2} # Available placeholders for interpolation: # {camera} - "fpp" or "tpp" # {gender} - "m" or "w" ``` -------------------------------- ### Register Body Type in .xl Configuration Source: https://github.com/psiberx/cp2077-archive-xl/wiki/Home Register a new body type by listing its name in the `bodyTypes` array within the `.xl` configuration file. This allows clothing items to automatically select corresponding refits. ```yaml player: bodyTypes: [NewBody] ``` -------------------------------- ### Append Feet State Suffix Source: https://github.com/psiberx/cp2077-archive-xl/wiki/Home Activate the `itemsFactoryAppearanceSuffix.FeetState` suffix by adding it to the `appearanceSuffixes` list. This suffix is used to properly render tights or other leg clothing based on the character's footwear state. ```yaml Items.MyTights: appearanceSuffixes: - !append itemsFactoryAppearanceSuffix.FeetState ``` -------------------------------- ### Define Entity Factory in clothing.csv Source: https://github.com/psiberx/cp2077-archive-xl/wiki/Home Registers custom entities or appearances by defining a C2dArray in a CR2W resource file. ```json { "Header": { "WKitJsonVersion": "0.0.3", "GameVersion": 1600, "DataType": "CR2W" }, "Data": { "Version": 195, "BuildVersion": 0, "RootChunk": { "$type": "C2dArray", "compiledData": [ [ "mymod_item", "mymod\\items\\clothing\\item.ent", "true" ] ], "compiledHeaders": [ "name", "path", "preload" ], "cookingPlatform": "PLATFORM_PC" }, "EmbeddedFiles": [] } } ``` -------------------------------- ### Define Entity Factory CSV Source: https://context7.com/psiberx/cp2077-archive-xl/llms.txt The factory CSV file registers custom items, clothing, and weapons by mapping names to their respective entity resource paths. ```json { "Header": { "WKitJsonVersion": "0.0.3", "GameVersion": 1600, "DataType": "CR2W" }, "Data": { "Version": 195, "BuildVersion": 0, "RootChunk": { "$type": "C2dArray", "compiledData": [ ["mymod_jacket", "mymod\\items\\clothing\\jacket.ent", "true"], ["mymod_pants", "mymod\\items\\clothing\\pants.ent", "true"], ["mymod_weapon", "mymod\\items\\weapons\\katana.ent", "false"] ], "compiledHeaders": ["name", "path", "preload"], "cookingPlatform": "PLATFORM_PC" }, "EmbeddedFiles": [] } } ``` -------------------------------- ### Interpolate Mesh Properties Source: https://github.com/psiberx/cp2077-archive-xl/wiki/Home Use the * prefix to enable dynamic substitution of mesh paths and appearance names based on state attributes. ```yaml mesh: *mod\meshes\my_item_{gender}.mesh meshAppearance: default ``` -------------------------------- ### Visual Tags for Visibility Control Source: https://context7.com/psiberx/cp2077-archive-xl/llms.txt Lists game-defined and ArchiveXL custom visual tags used to control body part visibility and clothing behavior in appearance definitions or entity templates. ```yaml visualTags: - hide_H1 - hide_F1 - hide_T1 - hide_T2 - hide_L1 - hide_S1 - hide_T1part - hide_Hair - hide_Genitals - HighHeels - FlatShoes ``` ```yaml visualTags: - hide_Head - hide_Torso - hide_LowerAbdomen - hide_UpperAbdomen - hide_CollarBone - hide_Arms - hide_Thighs - hide_Calves - hide_Ankles - hide_Feet - hide_Legs - force_Hair - force_FlatFeet ``` -------------------------------- ### Append Arms State Suffix Source: https://github.com/psiberx/cp2077-archive-xl/wiki/Home Activate the `itemsFactoryAppearanceSuffix.ArmsState` suffix by adding it to the `appearanceSuffixes` list. This suffix helps render wrists and hands items correctly based on the character's cyberarm type. ```yaml Items.MyGloves: appearanceSuffixes: - !append itemsFactoryAppearanceSuffix.ArmsState ``` -------------------------------- ### Append Body Type Suffix Source: https://github.com/psiberx/cp2077-archive-xl/wiki/Home Activate the `itemsFactoryAppearanceSuffix.BodyType` suffix by adding it to the `appearanceSuffixes` list in your item's configuration. This suffix represents the currently used body mod and helps load corresponding refits. ```yaml Items.MyGloves: appearanceSuffixes: - !append itemsFactoryAppearanceSuffix.BodyType ``` -------------------------------- ### Use Variant in Component Source: https://github.com/psiberx/cp2077-archive-xl/wiki/Home Reference the variant name as a substitution within component properties. ```yaml mesh: *mod\meshes\my_item_{gender}.mesh meshAppearance: *{variant} ``` -------------------------------- ### Patch Resource Properties in .xl Source: https://context7.com/psiberx/cp2077-archive-xl/llms.txt Apply modifications to specific properties of target resources, with support for includes and excludes patterns. ```yaml # In .xl configuration - resource patching resource: patch: archive_xl\common\hair\h1_base_color_patch.mesh: props: [appearances] # Only patch 'appearances' property targets: - player_ma_hair.mesh - player_wa_hair.mesh mymod\patches\material_fix.mi: props: [baseColor, metalness] includes: - mymod\meshes\*.mesh # Apply to matching resources excludes: - mymod\meshes\old_*.mesh # Skip these ``` -------------------------------- ### Define Item Variant Source: https://github.com/psiberx/cp2077-archive-xl/wiki/Home Specify an item variant using the ! separator in the appearance name. ```yaml Items.my_item_black: $base: Items.GenericFaceClothing entityName: my_item appearanceName: my_item!black ``` -------------------------------- ### Configure Component Overrides in .app Source: https://context7.com/psiberx/cp2077-archive-xl/llms.txt Use partsOverrides to hide or modify submeshes of an entity. The chunkMask property controls visibility, where 0 hides all chunks. ```yaml # In your appearance definition (.app) partsOverrides section # Use blank partResource and componentOverrides with entity component names partsOverrides: - partResource: "" # Blank resource targets owner entity componentOverrides: # Hide specific body components when item is equipped - componentName: t0_000_pma_base__full # Male body component chunkMask: 0 # Hide all chunks - componentName: t0_000_pwa_base__full # Female body component chunkMask: 0 - componentName: l0_000_pwa_base__cs_flat # Female legs flat meshAppearance: legs_hidden # Or change appearance # Chunk mask examples: # chunkMask: 0 - Hide all chunks # chunkMask: 0xFFFFFFFF - Show all chunks # chunkMask: 0x0000000F - Show only chunks 0-3 ``` -------------------------------- ### Define Composite Variant Source: https://github.com/psiberx/cp2077-archive-xl/wiki/Home Combine multiple variant parts using the + separator. ```yaml Items.my_item_black: $base: Items.GenericFaceClothing entityName: my_item appearanceName: my_item!black+arasaka ``` -------------------------------- ### Modify Specific World Streaming Sector Nodes Source: https://context7.com/psiberx/cp2077-archive-xl/llms.txt Modify specific nodes within a sector, such as updating positions, orientations, or appearances of entity nodes. Ensure 'expectedNodes' and 'nodeType' match the target node. ```yaml streaming: sectors: - path: base\worlds\03_night_city\sectors\sector_a.streamingsector expectedNodes: 150 autoUpdateNodesUnderProxies: true nodeDeletions: - nodeIndex: 42 nodeType: worldStaticMeshNode expectedSubNodes: 0 subNodeDeletions: [] nodeMutations: - nodeIndex: 10 nodeType: worldEntityNode modifyPosition: true position: { x: 100.0, y: 200.0, z: 50.0, w: 1.0 } modifyOrientation: true orientation: { i: 0.0, j: 0.0, k: 0.0, r: 1.0 } modifyAppearance: true appearanceName: new_appearance ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.