Modding:Movie theater data

From Stardew Valley Wiki
Revision as of 18:30, 2 June 2022 by OmegaFallon (talk | contribs) (Created page with "← Index '''Work in progress.''' This page explains how the files associated with the Movie Theater, what each of them do, and how they are formatted....")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Index

Work in progress.

This page explains how the files associated with the Movie Theater, what each of them do, and how they are formatted. This is an advanced guide for mod developers.

Movie data

Data/Movies.xnb contains the data for all movies, including their names, descriptions, genre tags, scenes, and dialogue and narration spoken within the film. For reference, below is the raw data of "The Brave Little Sapling":

Data 
{
  "spring_movie_0": {
    "ID": null,
    "SheetIndex": 0,
    "Title": "The Brave Little Sapling",
    "Description": "An animated family comedy about a little sprout on a magical adventure to become a tree!",
    "Tags": [
      "family",
      "comedy"
    ],
    "Scenes": [
      {
        "Image": 0,
        "Music": "sweet",
        "Sound": "",
        "MessageDelay": 1000,
        "Script": "",
        "Text": "The Brave Little Sapling",
        "Shake": false,
        "ResponsePoint": null,
        "ID": "spring0_0"
      },
      {
        "Image": 1,
        "Music": "",
        "Sound": "",
        "MessageDelay": 500,
        "Script": "",
        "Text": "The brave little sapling is leaving his home. He hesitates for a moment and turns around, knowing he won't be back for a long time...",
        "Shake": false,
        "ResponsePoint": null,
        "ID": "spring0_1"
      },
      {
        "Image": 6,
        "Music": "",
        "Sound": "",
        "MessageDelay": 500,
        "Script": "/playSound dustMeep/pause 200/playSound dustMeep/pause 300/playSound dustMeep/pause 100/playSound dustMeep/pause 200/playSound dustMeep",
        "Text": "The other saplings of his grove are gathered at the edge of town, excitedly waving their twigs goodbye...!",
        "Shake": false,
        "ResponsePoint": "sprout_leave",
        "ID": "spring0_2"
      },
      {
        "Image": 2,
        "Music": "rain",
        "Sound": "",
        "MessageDelay": 500,
        "Script": "",
        "Text": "Oh no! Out of nowhere, it starts raining...! The little sapling goes into a sprint as thunderclouds loom overhead...",
        "Shake": false,
        "ResponsePoint": "",
        "ID": "spring0_3"
      },
      {
        "Image": 3,
        "Music": "",
        "Sound": "thunder",
        "MessageDelay": 1000,
        "Script": "",
        "Text": "Fearing for his life, and demoralized by the relentless downpour, the brave little sapling begins to lose hope...",
        "Shake": false,
        "ResponsePoint": "",
        "ID": "spring0_4"
      },
      {
        "Image": 4,
        "Music": "echos",
        "Sound": "",
        "MessageDelay": 500,
        "Script": "",
        "Text": "...But what's this...? The sapling feels a tingling on the top of his head... ",
        "Shake": false,
        "ResponsePoint": null,
        "ID": "spring0_5"
      },
      {
        "Image": 5,
        "Music": "",
        "Sound": "",
        "MessageDelay": 500,
        "Script": "/playSound coin/pause 1000/message \"Perhaps a little rain was what it needed to begin its journey into becoming a tree!\"",
        "Text": "",
        "Shake": false,
        "ResponsePoint": "",
        "ID": "spring0_6"
      },
      {
        "Image": 7,
        "Music": "",
        "Sound": "",
        "MessageDelay": 2000,
        "Script": "",
        "Text": "Farewell, little buddy!",
        "Shake": false,
        "ResponsePoint": null,
        "ID": "spring0_7"
      }
    ]
  },
  ...
}

Format

Each movie's specific entry begins with an identifier of the form <season>_movie_<number>, where <season> is the season in which it will be screened, and <number> is either 0 or 1. The movie theater will alternate between screening the #0 movie and #1 movie in the given season each year.

The main block of movie data contains the following:

key format description
ID Always null. Purpose unknown.
SheetIndex Determines where the game looks for the movie's scene sprites within LooseSprites\Movies.xnb.
Title The title of the film.
Description The description of the film, seen when interacting with its poster outside of the theater.
Tags A list of genres that apply to the movie, used to calculate an NPC's reaction to a movie. Can be any arbitrary string; the ones currently used in the game are: family, comedy, horror, art, action, sci-fi, classic, romance, and documentary.
Scenes A list of data blocks for the film's scenes. (See below.)

Scenes

The Scenes is a list of blocks, each corresponding to a specific scene in the movie. The blocks are listed in chronological order, and the data of each one is as follows:

key format description
Image Which image to show within the sequence of the movie's sprites in LooseSprites\Movies.xnb.
Music The music track to play during the scene. Can be left blank.
Sound The sound effect to play during the scene. Can be left blank.
MessageDelay How long to hold the scene before displaying any text.
Script Used for special visual/auditory effects. Written in the same format as Modding:Event_data#Event_scripts.
Text The dialogue/narration of the scene.
Shake A boolean value which, if true, adds screen-shake.
ResponsePoint If specified, an NPC's reaction data can reference the scene by this name in order to have a specific, timed reaction to it.
ID An ID for the scene in the format of <season><number>_<index>. <season> and <number> are identical to those values in the ID of the movie itself. <index> is, counting from 0, what number scene this is in the movie.

Movie reactions

Concession data

Concession reactions