> For the complete documentation index, see [llms.txt](https://wiki.redmodding.org/cyberpunk-2077-modding/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.redmodding.org/cyberpunk-2077-modding/modding-guides/items-equipment/adding-new-items/adding-items-atelier-integration.md).

# Your own Atelier Store

This guide will detail how to add an Atelier store with your items. It is part of the [Adding new items](/cyberpunk-2077-modding/modding-guides/items-equipment/adding-new-items.md) ArchiveXL tutorial, but you can complete these steps independently.

### Wait, this is not what I want!

* Find a guide on [Your own inventory preview icons](/cyberpunk-2077-modding/modding-guides/custom-icons-and-ui/adding-items-preview-images.md)
* Learn more about [Game icons: .inkatlas files](/cyberpunk-2077-modding/for-mod-creators-theory/files-and-what-they-do/file-formats/game-icons-the-inkatlas-file.md)
* If you are using [ItemAdditions: Dynamic Appearances](/cyberpunk-2077-modding/modding-guides/items-equipment/adding-new-items/archivexl-dynamic-variants.md), you can use [W's generator](https://codepen.io/Wandering-Aldecaldo/full/jOoWemp) to quickly create spawn codes and Atelier entries

## Requirements

{% hint style="warning" %}
You need to install the [VirtualAtelier](https://www.nexusmods.com/cyberpunk2077/mods/2987) mod for this.

You also have to add it to your mod's requirements, as atelier stores will cause script errors if users don't have it installed.
{% endhint %}

## Generating an icon

You need a single `.png` file with your store's icon (200x200 px). It needs to be in a folder all by itself, and its file name should be `slot_01.png`.

Now, run the inkatlas generator in WolvenKit with the following settings:&#x20;

|                         |                                                                                                 |
| ----------------------- | ----------------------------------------------------------------------------------------------- |
| Overwrite existing file | leave it blank                                                                                  |
| Inkatlas folder         | <p>Target path of your .inkatlas, e.g.<br><code>tutorial\torso\my\_custom\_shirt\ops</code></p> |
| Inkatlas file name      | Name of your icon, e.g. atelier\_icon                                                           |
| Tile SIze               | 200x200                                                                                         |
| PNG raw folder          | Path to the folder with your .png file.                                                         |

After running the generator, make sure to import the png files via Import Tool. They should now show up in the folder where you put them:

```
tutorial
  torso
    my_custom_shirt
      ops		   
      	- my_shirt_factory.csv  
      	- translation_strings.json  
      	- preview_icons.inkatlas       
      	- preview_icons.xbm            
      	- atelier_icon.inkatlas        <<<  
      	- atelier_icon.xbm             <<<  
        - atelier_icon_1080p.xbm       <<<  
```

Now, create your icon. The process is the same as for "[preview images](/cyberpunk-2077-modding/modding-guides/custom-icons-and-ui/adding-items-preview-images.md#fixing-up-your-texture)". The resulting slot will be named `slot_01`.

### Creating the atelier file

<details>

<summary>Example store file (if you don't want to use the generator)</summary>

```
@addMethod(gameuiInGameMenuGameController)
protected cb func RegisterYOURNAMESStore(event: ref<VirtualShopRegistration>) -> Bool {
  event.AddStore(
    n"YOURNAME",
    "Your Store Name",
    [            
      "Items.my_custom_shirt_redwhite",  	
      "Items.my_custom_shirt_redblack"
	],
	[ 1	],
    r"tutorial/torso/my_custom_shirt/ops/atelier_icon.inkatlas",
    n"slot_01",
	[ "Legendary" ]
  );
}
```

</details>

1. Visit [this](https://jovial-shockley-612ec8.netlify.app/) website and fill out the information:

| Field                                                      | Content                                                                             |
| ---------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| Store ID (characters only, w/o spaces, '-', '\_' and etc.) | `MyTutorialAtelierStore`                                                            |
| Store Name                                                 | `My Tutorial Atelier Store`                                                         |
| Atlas Resource                                             | <p><code>tutorial/torso/my\_custom\_shirt/ops/atelier\_icon.inkatlas</code><br></p> |
| Texture Part                                               | `slot_01`                                                                           |

2. Now, add your item.

{% hint style="warning" %}
In `atlasResource`, you have to replace all `\` with `/`

Your atelier store will cause script errors if you don't.
{% endhint %}

Here's an explanation for the fields below. Rather than filling them by hand, you should use [this](https://jovial-shockley-612ec8.netlify.app/) website to generate your store files.

<table><thead><tr><th width="231">Field</th><th>Content</th></tr></thead><tbody><tr><td>TweakDBID</td><td><p>as defined in your yaml, e.g.</p><p><code>Items.my_custom_shirt_redwhite</code></p></td></tr><tr><td>Price</td><td>Whatever price you want, 0 means that it's free</td></tr><tr><td>Quality</td><td>Are we settling for anything but legendary here?<br>Allowed values are:<br>- <code>"IconicItem"</code><br>- <code>"Legendary"</code> (LegendaryPlus, LegendaryPlusPlus)<br>- <code>"Epic"</code> (EpicPlus)<br>- <code>"Rare"</code> (RarePlus)<br>- <code>"Uncommon"</code> (UncommonPlus)<br>- <code>"Common"</code> (CommonPlus)</td></tr></tbody></table>

​ Ignore "Icon path" and "description", we have these in the item itself.

3. Click "Add Item". Repeat the process with as many items as you want.
4. Click "Generate".

{% hint style="danger" %}
In the downloaded file, check that `atlasResource` has forward slashes `/` instead of backwards slashes `\`, as per the warning box above.
{% endhint %}

### Placing the atelier file

In your project's `resources` folder, create a subdirectory r6/scripts (if it doesn't exist already), and move the atelier file that you downloaded into there:

```
resources
  - tutorial_my_custom_tshirt.archive.xl  
  - r6
    - tweaks
      - tutorial_my_custom_tshirt.yaml         
    - scripts
      - MyTutorialAtelierStore-atelier-store.reds         << new file
```

Now, it's time to test! Install the mod and start Cyberpunk.

## Troubleshooting

### My atelier store causes scripting errors!

I'm not sure how you managed to read past all the red and yellow boxes on this page, but make sure that the path under `atlasResource` has forward slashes `/` instead of backwards slashes `\`.

If that wasn't it, you might have to re-generate your Atelier store.

### My atelier store makes the game crash!

That happens when there are two atelier stores with the same store ID. Do a full-text search for the store ID (`MyTutorialAtelierStore`) in `r6\scripts` and make sure that you don't have any duplicates.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://wiki.redmodding.org/cyberpunk-2077-modding/modding-guides/items-equipment/adding-new-items/adding-items-atelier-integration.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
