Changes

Jump to navigation Jump to search
216 bytes added ,  18:48, 4 November 2021
m
Text replacement - "tt>" to "samp>"
Line 9: Line 9:     
===Basic info===
 
===Basic info===
The <tt>Data\NPCDispositions</tt> asset contains basic information for your character, including their name, birthday, relations to other characters, personality, and whether they can be dated.
+
The <samp>Data\NPCDispositions</samp> asset contains basic information for your character, including their name, birthday, relations to other characters, personality, and whether they can be dated.
    
The file has one row per NPC like this:
 
The file has one row per NPC like this:
Line 27: Line 27:  
| 0
 
| 0
 
| age
 
| age
| <tt>teen</tt>
+
| <samp>teen</samp>
| Whether the NPC is a <tt>child</tt>, <tt>teen</tt>, or <tt>adult</tt>. This affects generated dialogue lines (e.g. a child would say ''stupid'' and an adult would say ''depressing''), generic dialogue (e.g. a child would respond to dumpster diving with "''Eww... What are you doing?''" and a teen would say "''Um... Why are you digging in the trash?''"), and the gift they choose as [[Feast of the Winter Star|a secret gift-giver]]. Children are also excluded from item delivery quests.
+
| Whether the NPC is a <samp>child</samp>, <samp>teen</samp>, or <samp>adult</samp>. This affects generated dialogue lines (e.g. a child would say ''stupid'' and an adult would say ''depressing''), generic dialogue (e.g. a child would respond to dumpster diving with "''Eww... What are you doing?''" and a teen would say "''Um... Why are you digging in the trash?''"), and the gift they choose as [[Feast of the Winter Star|a secret gift-giver]]. Children are also excluded from item delivery quests.
 
|-
 
|-
 
| 1
 
| 1
 
| manners
 
| manners
| <tt>rude</tt>
+
| <samp>rude</samp>
| Whether the NPC is <tt>polite</tt>, <tt>rude</tt>, or <tt>neutral</tt>. This affects some generic dialogue lines.
+
| Whether the NPC is <samp>polite</samp>, <samp>rude</samp>, or <samp>neutral</samp>. This affects some generic dialogue lines.
 
|-
 
|-
 
| 2
 
| 2
 
| social anxiety
 
| social anxiety
| <tt>outgoing</tt>
+
| <samp>outgoing</samp>
| Whether the NPC is <tt>outgoing</tt>, <tt>shy</tt>, or <tt>neutral</tt>. This affects some generic dialogue lines.
+
| Whether the NPC is <samp>outgoing</samp>, <samp>shy</samp>, or <samp>neutral</samp>. This affects some generic dialogue lines.
 
|-
 
|-
 
| 3
 
| 3
 
| optimism
 
| optimism
| <tt>neutral</tt>
+
| <samp>neutral</samp>
| Whether the NPC is <tt>positive</tt>, <tt>negative</tt>, or <tt>neutral</tt>. ''Unused.''
+
| Whether the NPC is <samp>positive</samp>, <samp>negative</samp>, or <samp>neutral</samp>. ''Unused.''
 
|-
 
|-
 
| 4
 
| 4
 
| gender
 
| gender
| <tt>female</tt>
+
| <samp>female</samp>
| Whether the NPC is <tt>male</tt>, <tt>female</tt>, or <tt>undefined</tt>. This affects dialogue, whether children in marriage are obtained through adoption or pregnancy, and the reserved frames' positions on the spritesheet.
+
| Whether the NPC is <samp>male</samp>, <samp>female</samp>, or <samp>undefined</samp>. This affects dialogue, whether children in marriage are obtained through adoption or pregnancy, and the reserved frames' positions on the spritesheet.
 
|-
 
|-
 
| 5
 
| 5
 
| datable
 
| datable
| <tt>datable</tt>
+
| <samp>datable</samp>
| Whether the NPC is <tt>datable</tt> or <tt>not-datable</tt>. This toggles the romance features (e.g. 'single' label in the social menu, bouquet gifting, and marriage).
+
| Whether the NPC is <samp>datable</samp> or <samp>not-datable</samp>. This toggles the romance features (e.g. 'single' label in the social menu, bouquet gifting, and marriage).
 
|-
 
|-
 
| 6
 
| 6
 
| love interest
 
| love interest
| <tt>Sebastian</tt>
+
| <samp>Sebastian</samp>
 
| ''Unused.''
 
| ''Unused.''
 
|-
 
|-
 
| 7
 
| 7
 
| home region
 
| home region
| <tt>Town</tt>
+
| <samp>Town</samp>
| Whether the NPC lives in the <tt>Desert</tt>, <tt>Town</tt>, or <tt>Other</tt>. This is used when improving friendship points for all NPCs in a given region, which is currently only used for the [[Luau]] friendship boost (which only affects NPCs in the <tt>Town</tt> region).
+
| Whether the NPC lives in the <samp>Desert</samp>, <samp>Town</samp>, or <samp>Other</samp>. This is used when improving friendship points for all NPCs in a given region, which is currently only used for the [[Luau]] friendship boost (which only affects NPCs in the <samp>Town</samp> region).
 
|-
 
|-
 
| 8
 
| 8
 
| birthday
 
| birthday
| <tt>fall 13</tt>
+
| <samp>fall 13</samp>
 
| The season and day for the NPC's birthday.
 
| The season and day for the NPC's birthday.
 
|-
 
|-
 
| 9
 
| 9
 
| relationships
 
| relationships
| <tt>Caroline 'mom' Pierre 'dad'</tt>
+
| <samp>Caroline 'mom' Pierre 'dad'</samp>
 
| This affects generic dialogue for revealing likes and dislikes to family members. May also affect the inlaw_<NPC> dialogue. Can be empty if not applicable (e.g. <code>/fall 13//SeedShop 1 9/</code>).
 
| This affects generic dialogue for revealing likes and dislikes to family members. May also affect the inlaw_<NPC> dialogue. Can be empty if not applicable (e.g. <code>/fall 13//SeedShop 1 9/</code>).
 
|-
 
|-
 
| 10
 
| 10
 
| default map & position
 
| default map & position
| <tt>SeedShop 1 9</tt>
+
| <samp>SeedShop 1 9</samp>
 
| The location name and [[Modding:Modder Guide/Game Fundamentals#Tiles|tile position]] where the NPC starts and ends each day.
 
| The location name and [[Modding:Modder Guide/Game Fundamentals#Tiles|tile position]] where the NPC starts and ends each day.
 
|-
 
|-
 
| 11
 
| 11
 
| display name
 
| display name
| <tt>Abigail</tt>
+
| <samp>Abigail</samp>
 
| The NPC name shown to the player.
 
| The NPC name shown to the player.
 
|}
 
|}
    
===Gift tastes===
 
===Gift tastes===
The <tt>Data\NPCGiftTastes</tt> asset contains their gift preferences (e.g. which gifts they love or hate), and their responses when they receive one. See [[Modding:Gift taste data]] for more info.
+
The <samp>Data\NPCGiftTastes</samp> asset contains their gift preferences (e.g. which gifts they love or hate), and their responses when they receive one. See [[Modding:Gift taste data]] for more info.
    
The file has one row per NPC like this:
 
The file has one row per NPC like this:
Line 97: Line 97:     
====Birthday gift responses====
 
====Birthday gift responses====
The <tt>Strings\StringsFromCSFiles</tt> asset contains the generic responses given by NPCs to birthday gifts based on their gift preferences and manners. These shared strings can be customized for a specific NPC by editing them conditionally, such as only on the NPC's (non-shared) birthday. The following criteria are used to select from among the strings:
+
The <samp>Strings\StringsFromCSFiles</samp> asset contains the generic responses given by NPCs to birthday gifts based on their gift preferences and manners. These shared strings can be customized for a specific NPC by editing them conditionally, such as only on the NPC's (non-shared) birthday. The following criteria are used to select from among the strings:
    
{| class="wikitable"
 
{| class="wikitable"
Line 109: Line 109:  
| rowspan="2" | rude
 
| rowspan="2" | rude
 
| 50%
 
| 50%
| <tt>NPC.cs.4274</tt>
+
| <samp>NPC.cs.4274</samp>
 
|-
 
|-
 
| 50%
 
| 50%
| <tt>NPC.cs.4276</tt>
+
| <samp>NPC.cs.4276</samp>
 
|-
 
|-
 
| rowspan="2" | polite, neutral
 
| rowspan="2" | polite, neutral
 
| 50%
 
| 50%
| <tt>NPC.cs.4275</tt>
+
| <samp>NPC.cs.4275</samp>
 
|-
 
|-
 
| 50%
 
| 50%
| <tt>NPC.cs.4277</tt>
+
| <samp>NPC.cs.4277</samp>
 
|-
 
|-
 
| rowspan="2" | dislike, hate
 
| rowspan="2" | dislike, hate
 
| rude
 
| rude
 
| 100%
 
| 100%
| <tt>NPC.cs.4278</tt>
+
| <samp>NPC.cs.4278</samp>
 
|-
 
|-
 
| polite, neutral
 
| polite, neutral
 
| 100%
 
| 100%
| <tt>NPC.cs.4279</tt>
+
| <samp>NPC.cs.4279</samp>
 
|-
 
|-
 
| rowspan="2" | neutral
 
| rowspan="2" | neutral
 
| rude
 
| rude
 
| 100%
 
| 100%
| <tt>NPC.cs.4280</tt>
+
| <samp>NPC.cs.4280</samp>
 
|-
 
|-
 
| polite, neutral
 
| polite, neutral
 
| 100%
 
| 100%
| <tt>NPC.cs.4281</tt>
+
| <samp>NPC.cs.4281</samp>
 
|}
 
|}
    
===Overworld sprites===
 
===Overworld sprites===
The overworld sprites are stored in <tt>Characters/NpcName</tt>, including movement and animation frames. Each frame is exactly 16x32 pixels. Here's an [https://cdn.discordapp.com/attachments/156109690059751424/729807097835028540/unknown.png example sprite guide], courtesy of TheLimeyDragon#1993 on Discord. Some positions are reserved for certain actions:
+
The overworld sprites are stored in <samp>Characters/NpcName</samp>, including movement and animation frames. Each frame is exactly 16x32 pixels. Here's an [https://cdn.discordapp.com/attachments/156109690059751424/729807097835028540/unknown.png example sprite guide], courtesy of TheLimeyDragon#1993 on Discord. Some positions are reserved for certain actions:
 
<ul>
 
<ul>
 
<li>the first sixteen frames are generic movement (four frames per direction);</li>
 
<li>the first sixteen frames are generic movement (four frames per direction);</li>
Line 204: Line 204:     
===Portraits===
 
===Portraits===
The dialogue portraits are stored in <tt>Portraits/NpcName</tt>. Each frame is exactly 64x64 per portrait. The first six represent specific emotions (see [[Modding:Dialogue#Portrait commands]]), followed by any number of custom portraits. The first portrait is used when the dialogue doesn't specify one.
+
The dialogue portraits are stored in <samp>Portraits/NpcName</samp>. Each frame is exactly 64x64 per portrait. The first six represent specific emotions (see [[Modding:Dialogue#Portrait commands]]), followed by any number of custom portraits. The first portrait is used when the dialogue doesn't specify one.
    
Here's an [https://cdn.discordapp.com/attachments/156109690059751424/729820558966915122/unknown.png example portrait guide], courtesy of TheLimeyDragon#1993 on Discord.
 
Here's an [https://cdn.discordapp.com/attachments/156109690059751424/729820558966915122/unknown.png example portrait guide], courtesy of TheLimeyDragon#1993 on Discord.
Line 215: Line 215:     
===Festivals===
 
===Festivals===
Custom NPCs should be added to festivals via the <tt>Set-Up_additionalCharacters</tt> field in the [[Modding:Festival_data#Data_file|festival's data file]]. You may also want to visit [https://stardewmodding.wiki/wiki/Custom_NPC_Tiles Custom NPC festival tile positions] to check the positions of various existing NPCs for compatibility purposes.
+
Custom NPCs should be added to festivals via the <samp>Set-Up_additionalCharacters</samp> field in the [[Modding:Festival_data#Data_file|festival's data file]]. You may also want to visit [https://stardewmodding.wiki/wiki/Custom_NPC_Tiles Custom NPC festival tile positions] to check the positions of various existing NPCs for compatibility purposes.
    
(Prior to Stardew Valley 1.5, {{nexus mod|1820|TMXL}} was the recommended tool for adding festival spots.)
 
(Prior to Stardew Valley 1.5, {{nexus mod|1820|TMXL}} was the recommended tool for adding festival spots.)
Line 223: Line 223:     
<ol>
 
<ol>
<li>[https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide.md#format Create an empty Content Patcher content pack]. By convention, we'll name the folder <tt>[CP] Dobson</tt>.</li>
+
<li>[https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide.md#format Create an empty Content Patcher content pack]. By convention, we'll name the folder <samp>[CP] Dobson</samp>.</li>
 
<li>Create the following files:
 
<li>Create the following files:
* <tt>assets/dialogue.json</tt> containing the dialogue.
+
* <samp>assets/dialogue.json</samp> containing the dialogue.
* <tt>assets/marriageDialogue.json</tt> containing the marriage dialogue (if applicable).
+
* <samp>assets/marriageDialogue.json</samp> containing the marriage dialogue (if applicable).
* <tt>assets/sprites.png</tt> containing their overworld sprites.
+
* <samp>assets/sprites.png</samp> containing their overworld sprites.
* <tt>assets/portraits.png</tt> containing their portraits.
+
* <samp>assets/portraits.png</samp> containing their portraits.
* <tt>assets/schedule.json</tt> containing their schedule data.
+
* <samp>assets/schedule.json</samp> containing their schedule data.
 
</li>
 
</li>
<li>Edit the <tt>content.json</tt> to load the files:
+
<li>Edit the <samp>content.json</samp> to load the files:
 
{{#tag:syntaxhighlight|
 
{{#tag:syntaxhighlight|
 
{
 
{
105,727

edits

Navigation menu