Changes

Jump to navigation Jump to search
→‎Vanilla shop IDs: update 1.6 migration wording
Line 1: Line 1: −
{{upcoming|1.6}}
  −
   
← [[Modding:Index|Index]]
 
← [[Modding:Index|Index]]
   Line 7: Line 5:  
==Data==
 
==Data==
 
===Format===
 
===Format===
You can create and change shops by editing the <samp>Data/Shops</samp> asset. This consists of a string → model lookup, where the key is a [[Modding:Modder Guide/Game Fundamentals#Unique string IDs|unique string ID]] for the shop, and the value is a model with these fields.
+
You can create and change shops by editing the <samp>Data/Shops</samp> asset. This consists of a string → model lookup, where the key is a [[Modding:Common data field types#Unique string ID|unique string ID]] for the shop, and the value is a model with these fields.
    
{| class="wikitable"
 
{| class="wikitable"
Line 22: Line 20:  
|-
 
|-
 
| ''common fields''
 
| ''common fields''
| See [[Modding:Migrate to Stardew Valley 1.6#Item spawn fields|item spawn fields]] for the generic item fields supported by shop items.
+
| See [[Modding:Item queries#Item spawn fields|item spawn fields]] for the generic item fields supported by shop items.
    
Notes:
 
Notes:
* If set to an [[Modding:Migrate to Stardew Valley 1.6#Item queries|item query]] which returns multiple items, all of them will be added to the shop.
+
* If set to an [[Modding:Item queries|item query]] which returns multiple items, all of them will be added to the shop.
 
* The <samp>MinStack</samp> and <samp>MaxStack</samp> fields apply to the item after it's purchased, and have no effect on the price or <samp>Stock</samp> limit.
 
* The <samp>MinStack</samp> and <samp>MaxStack</samp> fields apply to the item after it's purchased, and have no effect on the price or <samp>Stock</samp> limit.
 
* If the player found [[Pierre's Missing Stocklist]], season conditions in the <samp>Condition</samp> field are ignored in [[Pierre's General Store]].
 
* If the player found [[Pierre's Missing Stocklist]], season conditions in the <samp>Condition</samp> field are ignored in [[Pierre's General Store]].
Line 81: Line 79:     
Default <samp>Global</samp>.
 
Default <samp>Global</samp>.
 +
|-
 +
| <samp>PerItemCondition</samp>
 +
| ''(Optional)'' A [[Modding:Game state queries|game state query]] which indicates whether an item produced from the other fields should be added (e.g. to filter results from item queries like <samp>ALL_ITEMS</samp>). Defaults to always added.
 +
|-
 +
| <samp>ActionsOnPurchase</samp>
 +
| ''(Optional)'' A list of [[Modding:Trigger actions|actions]] to run when the player purchases this item. These are run once per purchase click. Default none.
 +
 +
For example, this can be used to start a [[Modding:Dialogue#Conversation topics|conversation topic]] when it's purchased:
 +
<syntaxhighlight lang="js">
 +
"ActionsOnPurchase": [
 +
    "AddConversationTopic {{ModId}}_PurchasedItem 5"
 +
]
 +
</syntaxhighlight>
 
|}
 
|}
 
|-
 
|-
Line 113: Line 124:  
| ''(Optional)'' One of...
 
| ''(Optional)'' One of...
 
* the internal name of the NPC whose portrait to show;
 
* the internal name of the NPC whose portrait to show;
* the asset name of the texture to display.
+
* the asset name of the texture to display;
 +
* or an empty string (or other value which doesn't match an NPC or texture asset name) to disable the portrait.
   −
In either case, it'll draw the 64x64 pixel area in the top-left corner of the texture. If omitted, defaults to the portrait for the NPC matching the <samp>Name</samp> field (if any). If set to a value which doesn't match an NPC or texture asset name, the portrait is disabled.
+
Defaults to the portrait for the NPC matching the <samp>Name</samp> field (if any).
 +
 
 +
If drawn, it'll use the 64x64 pixel area in the top-left corner of the texture.
 +
Note : it is possible that name of "none" prevents any portrait to be used.
 
|-
 
|-
 
| <samp>Dialogues</samp>
 
| <samp>Dialogues</samp>
Line 125: Line 140:  
|-
 
|-
 
| <samp>Id</samp>
 
| <samp>Id</samp>
| The [[Modding:Modder Guide/Game Fundamentals#Unique string IDs|unique string ID]] for this dialogue within the current list.
+
| The [[Modding:Common data field types#Unique string ID|unique string ID]] for this dialogue within the current list.
 
|-
 
|-
 
| <samp>Dialogue</samp>
 
| <samp>Dialogue</samp>
 
| The dialogue text to show, as a [[Modding:Tokenizable strings|tokenizable string]]. The resulting text is parsed using the [[Modding:Dialogue|dialogue format]].
 
| The dialogue text to show, as a [[Modding:Tokenizable strings|tokenizable string]]. The resulting text is parsed using the [[Modding:Dialogue|dialogue format]].
 +
 +
You can use an empty string (like <code>"Dialogue": ""</code>) to remove the little dialogue box.
 
|-
 
|-
 
| <samp>RandomDialogue</samp>
 
| <samp>RandomDialogue</samp>
Line 148: Line 165:  
| <samp>ClosedMessage</samp>
 
| <samp>ClosedMessage</samp>
 
| ''(Optional)'' If set, a [[Modding:Tokenizable strings|tokenizable string]] for a 'shop is closed'-style message to show instead of opening the shop.
 
| ''(Optional)'' If set, a [[Modding:Tokenizable strings|tokenizable string]] for a 'shop is closed'-style message to show instead of opening the shop.
 +
 +
'''This should not be set except in a separate entry'''. Adding it to an owner entry will prevent it from being used.
 
|-
 
|-
 
| <samp>RandomizeDialogueOnOpen</samp>
 
| <samp>RandomizeDialogueOnOpen</samp>
Line 328: Line 347:     
===Vanilla shop IDs===
 
===Vanilla shop IDs===
Vanilla shops are now defined in <samp>Data/Shops</samp> too (except a few special cases like [[:Category:Dressers|dressers]] and home renovations).
+
The base game's shops are defined in <samp>Data/Shops</samp> too (except a few special cases like [[:Category:Dressers|dressers]] and home renovations).
    
See <samp>Data/Shops</samp> for a full list, but here are the main shop IDs for convenience:
 
See <samp>Data/Shops</samp> for a full list, but here are the main shop IDs for convenience:
Line 395: Line 414:  
|}
 
|}
   −
Festival shops are also defined in <samp>Data/Shops</samp> now, though they can still be defined in the pre-1.6 way for backwards compatibility.
+
And the main festival shops:
 
{| class="wikitable sortable"
 
{| class="wikitable sortable"
 
|-
 
|-
Line 446: Line 465:     
==Open a custom shop==
 
==Open a custom shop==
You can place an [[Modding:Migrate to Stardew Valley 1.6#Map/tile property changes|<samp>Action OpenShop</samp> tile property]] on the map, which will open the given shop ID when the player clicks it.
+
You can place an [[Modding:Migrate to Stardew Valley 1.6#Tile property changes|<samp>Action OpenShop</samp> tile property]] on the map, which will open the given shop ID when the player clicks it.
   −
In C# code, you can get the inventory for a custom shop using <code>Utility.GetShopStock("shop id here")</code>, open a shop menu using <code>Utility.TryOpenShopMenu("shop id", …)</code>, and add temporary items to an open menu using <code>shopMenu.AddForSale(…)</code>. The ID of the opened shop is stored in the shop menu's <samp>storeContext</samp> field.
+
In C# code, you can get the inventory for a custom shop using <code>Utility.GetShopStock("shop id here")</code>, open a shop menu using <code>Utility.TryOpenShopMenu("shop id", …)</code>, and add temporary items to an open menu using <code>shopMenu.AddForSale(…)</code>. The ID of the opened shop is stored in the shop menu's <samp>ShopId</samp> field.
    
[[Category:Modding]]
 
[[Category:Modding]]
translators
8,447

edits

Navigation menu