Modding:NPC data

From Stardew Valley Wiki
Revision as of 01:03, 7 August 2021 by LA POTATO (talk | contribs)
Jump to navigation Jump to search

Index

Esta página proporciona una descripción general de lo que se necesita para crear un NPC personalizado. Esta es una guía avanzada para desarrolladores de mods.

'Antes de leer esta página' , consulte Modding: Editando archivos XNB para conocer los conceptos básicos.

Archivos para editar

Para crear un nuevo NPC, debe editar varios archivos diferentes. Sin embargo, no necesita ninguna experiencia en programación y se puede hacer con 1915 Content Patcher.

Información básica

El activo Data \ NPCDispositions contiene información básica de tu personaje, incluido su nombre, fecha de nacimiento, relaciones con otros personajes, personalidad y si pueden tener una fecha.

El archivo tiene una fila por NPC como esta:

   Abigail: "adolescente / grosera / extrovertida / neutral / femenina / datable / Sebastian / Town / otoño 13 / Caroline 'mamá' Pierre 'papá' / SeedShop 19 / Abigail"

La clave (antes de los dos puntos) es el nombre interno que identifica de forma única a ese NPC. Este nombre no se muestra al jugador, pero se usará cuando se haga referencia al NPC en otros archivos. El valor contiene los siguientes campos:

- índice campo ejemplo propósito - 0 edad adolescente Si el NPC es un niño , adolescente o adulto . Esto afecta las líneas de diálogo generadas (por ejemplo, un niño diría estúpido y un adulto diría deprimente ), el diálogo genérico (por ejemplo, un niño respondería a un contenedor de basura buceando con 'Eww ... haciendo? "y un adolescente diría" Um ... ¿Por qué estás cavando en la basura? "), y el regalo que eligen como [[Fiesta de la Estrella de Invierno | un obsequio secreto] ]. Los niños también están excluidos de las misiones de entrega de artículos. - 1 modales grosero Si el NPC es cortés , grosero o neutral . Esto afecta a algunas líneas de diálogo genéricas. - 2 ansiedad social saliente Si el NPC es extrovertido , tímido o neutral . Esto afecta a algunas líneas de diálogo genéricas. - 3 optimismo neutral Si el NPC es positivo , negativo o neutral . No usado. - 4 género mujer Si el NPC es hombre , mujer o indefinido . Esto afecta el diálogo, si los hijos en matrimonio se obtienen mediante adopción o embarazo, y las posiciones de los marcos reservados en la hoja de sprites. - 5 datable datable Si el NPC es datable o no datable . Esto alterna las características de romance (por ejemplo, etiqueta 'única' en el menú social, regalo de ramo y matrimonio). - 6 interés amoroso Sebastián No usado. - 7 región de origen Ciudad Si el NPC vive en el Desierto , Pueblo u Otro . Esto se usa para mejorar los puntos de amistad para todos los NPC en una región determinada, que actualmente solo se usa para el impulso de amistad Luau (que solo afecta a los NPC en la región Town ). - 8 cumpleaños otoño 13 La temporada y el día del cumpleaños del NPC. - 9 relaciones Caroline 'mamá' Pierre 'papá' Esto afecta el diálogo genérico para revelar lo que le gusta y lo que no le gusta a los miembros de la familia. También puede afectar el diálogo inlaw_ <NPC>. Puede estar vacío si no corresponde (por ejemplo, / fall 13 // SeedShop 1 9 / ). - 10 mapa y posición predeterminados SeedShop 1 9 El nombre de la ubicación y tile position donde el NPC comienza y termina cada día. - 11 nombre para mostrar Abigail El nombre del NPC que se muestra al jugador.

Sabores de regalo

El activo Data \ NPCGiftTastes contiene sus preferencias de obsequio (p. Ej., Qué obsequios aman u odian) y sus respuestas cuando reciben uno. Consulte Modding: Gift taste data para obtener más información.

El archivo tiene una fila por NPC como esta:

   Abigail: "¡En serio me encanta esto! ¡Eres la mejor, @! / 66 128 220 226 276 611 / Oye, ¿cómo sabías que tenía hambre? ¡Esto se ve delicioso! // ¿Qué se supone que debo hacer con esto? / -5-75-79 16 245 246 / ¿Qué estabas pensando? ¡Esto es horrible! / 330 / ¿Me trajiste un regalo? Gracias.// "#! String

La línea se puede dividir en 5 pares de diálogos + ID de elementos en este orden: Amor, Me gusta, Neutral, No me gusta, Odio. Si un campo de diálogo está vacío, el juego utilizará un texto de diálogo genérico. Consulte Modding: datos del objeto para conocer los ID de los artículos.

Respuestas de regalos de cumpleaños

El activo Strings \ StringsFromCSFiles contiene las respuestas genéricas dadas por los NPC a los regalos de cumpleaños según sus preferencias y modales. Estas cadenas compartidas se pueden personalizar para un NPC específico editándolas condicionalmente, como solo en el cumpleaños (no compartido) del NPC. Los siguientes criterios se utilizan para seleccionar entre las cadenas:

- sabor de regalo modales oportunidad cuerda - amar como maleducado 50% NPC.cs.4274 - 50% NPC.cs.4276 - educado, neutral 50% NPC.
character kissing frame facing direction
Abigail and Emily 33 left
Alex 42 right
Elliott 35 left
Haley 28 right
Harvey 31 left
Leah 25 right
Maru 28 left
Penny 35 right
Sam 36 right
Sebastian 40 left
Shane 34 left
any other NPC 28 right

Portraits

The dialogue portraits are stored in Portraits/NpcName. 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 example portrait guide, courtesy of TheLimeyDragon#1993 on Discord.

Schedule

Their schedule file tells the game where the NPC starts and moves based on on the time. You need to add strings to a separate schedules file found in the Strings folder to allow custom dialogue. See Modding:Schedule data for more info.

Dialogue and events

The NPC dialogue and events are stored in several files; see Modding:Dialogue and Modding:Event data for more info.

Festivals

Festivals are tricky things. Everyone in the vanilla game is added to the festival map by placing tiles on the Set-Up and MainEvent map layers from a character tilesheet that draws from NPCDispositions to get exactly who to place. This is not ideal for custom NPCs, since you have no way of knowing where on the NPCDispositions data list your NPC goes when a player is using multiple custom NPCs. For this reason, it is recommended to use TMXLoader, as it has a festival addition function to add your character to the Festival Maps, since it will draw upon your character's internal name instead of their position on the list. It's fairly easy to do, and there's an explanation on the TMXLoader Nexus Description.

For adding them to festivals in 1.5 using Content Patcher, see Modding:Migrate to Stardew Valley 1.5#Festival changes.

Adding your NPC

Here's how you'd create an example NPC we'll name Dobson:

  1. Create an empty Content Patcher content pack. By convention, we'll name the folder [CP] Dobson.
  2. Create the following files:
    • assets/dialogue.json containing the dialogue.
    • assets/marriageDialogue.json containing the marriage dialogue (if applicable).
    • assets/sprites.png containing their overworld sprites.
    • assets/portraits.png containing their portraits.
    • assets/schedule.json containing their schedule data.
  3. Edit the content.json to load the files:
    {
        "Format": "2.0.0",
        "Changes": [
            {
                "Action": "Load",
                "Target": "Characters/Dobson",
                "FromFile": "assets/sprites.png",
            },
            {
                "Action": "Load",
                "Target": "Portraits/Dobson",
                "FromFile": "assets/portraits.png",
            },
            {
                "Action": "Load",
                "Target": "Characters/Dialogue/Dobson",
                "FromFile": "assets/dialogue.json",
            },
            {
                "Action": "Load",
                "Target": "Characters/Dialogue/MarriageDialogueDobson",
                "FromFile": "assets/marriageDialogue.json",
            },
            {
                "Action": "Load",
                "Target": "Characters/schedules/Dobson",
                "FromFile": "assets/schedule.json",
            },
            {
                "Action": "EditData",
                "Target": "Data/NPCDispositions",
                "Entries": {
                    "Dobson": "adult/rude/neutral/positive/male/datable//Town/summer 7//BusStop 19 4/Dobson"
                },
            },
            {
                "Action": "EditData",
                "Target": "Data/NPCGiftTastes",
                "Entries": {
                    "Dobson": "You're giving this to me? This is amazing!/207 232 233 400/Thank you! This is a very interesting specimen./-5 -79 422/...What is this?/80 330/This is disgusting./2/That was very thoughtful of you./-4/ ",
                },
            },
            {
                "Action": "EditData",
                "Target": "Data/EngagementDialogue",
                "Entries": {
                    "Dobson0": "I can't believe I am about to be married!$h",
                    "Dobson1": "I hope I don't get cold feet",
                },
            },
        ]
    }
    

That's it! If you load your game, the NPC should appear. If you want to create events, don't forget to add that file too.

Guidance on pixel art

If you'd like additional guidance on pixel art, See Modding:Index#See_also for some recommended guides.