Changes

Jump to navigation Jump to search
1,568 bytes added ,  04:22, 4 October 2019
standardise, replace link to outdata with example, remove incorrect info, copyedit
Line 5: Line 5:  
This page is a collection of notes and hypotheses about how the game stores schedule data for NPCs. Schedule data determines the times and locations where the relevant NPC actor is, moves to, and the animations it displays meanwhile.
 
This page is a collection of notes and hypotheses about how the game stores schedule data for NPCs. Schedule data determines the times and locations where the relevant NPC actor is, moves to, and the animations it displays meanwhile.
   −
==Data==
+
==Raw data==
The schedule data is stored under <tt>/Content/Characters/schedules/</tt> and its subfolders in character-specific XNB files.
+
Schedule data is stored in <tt>Content/Characters/schedules/*.xnb</tt> files (one per character), which can be [[Modding:Editing XNB files#Getting started|unpacked using XNB Extract]].
   −
Schedule data (as of v1.2.33) is located on this wiki on each character's Talk page (''e.g.'', [[Talk:Abigail#Schedule code extracted from game files|Abigail's Talk page]]).
+
Here's the raw data for Abigail as of {{version|1.3.36}} for reference:
 
+
{{collapse|Code|content=<source lang="json">
===Format===
+
{
;Note: most of this section is unconfirmed and presumed to work similarly to the format of dialogue data.
+
  "rain": "900 SeedShop 9 5 0/1100 SeedShop 13 20 0/1300 SeedShop 39 5 0/1500 SeedShop 7 9 2/1900 SeedShop 6 4 0/2200 SeedShop 1 9 3 abigail_sleep",
<source lang="yaml">
+
  "rain2": "900 SeedShop 34 5 0/1100 SeedShop 9 17 3/1400 Saloon 42 17 2 abigail_sit_down/2000 SeedShop 1 9 3 abigail_sleep",
"<preface>[heart level]_[date]_[year][suffix]": "String"
+
  "winter_15": "900 SeedShop 39 5 0/1030 ScienceHouse 5 19 1/1430 Beach 30 34 2 \"Strings\\schedules\\Abigail:winter_15.000\"/2400 SeedShop 1 9 3 abigail_sleep",
</source>
+
  "marriage_Mon": "830 SeedShop 6 19 0 \"Strings\\schedules\\Abigail:marriage_Mon.000\"/1300 Town 47 87 0 \"Strings\\schedules\\Abigail:marriage_Mon.001\"/1700 Saloon 33 18 0 \"Strings\\schedules\\Abigail:marriage_Mon.002\"/2030 BusStop -1 23 3",
 
+
  "marriage_Fri": "800 SeedShop 36 9 0 \"Strings\\schedules\\Abigail:marriage_Fri.000\"/1100 Mountain 49 31 2 abigail_flute/1500 Saloon 42 17 2 abigail_sit_down \"Strings\\schedules\\Abigail:marriage_Fri.001\"/2030 BusStop -1 23 3",
...where:
+
  "fall_Mon": "900 SeedShop 10 5 0/1100 Beach 13 39 2/1800 SeedShop 1 9 3 abigail_sleep",
* {{t|preface}} is an arbitrary key which identifies the occasion(s) the schedule is for.
+
  "6": "900 SeedShop 39 5 0/1030 SeedShop 2 20 3/1500 Mountain 46 23 2 abigail_flute/2000 SeedShop 1 9 3 abigail_sleep",
* {{o|heart level}} is the ''minimum'' heart level the player must have reached with the NPC for this schedule to be executed.
+
  "16": "GOTO 6",
* {{o|date}} is the numeric day of the month (like _28_), or the three-character weekday (like _Mon_).
+
  "spring_4": "900 SeedShop 11 5 0 \"Strings\\schedules\\Abigail:spring_4.000\"/1230 Hospital 13 14 0 \"Strings\\schedules\\Abigail:spring_4.001\"/1330 Hospital 4 6 1 \"Strings\\schedules\\Abigail:spring_4.002\"/1600 SeedShop 10 5 0/2000 SeedShop 1 9 3 abigail_sleep",
* {{o|year}} is _1_ for year one, or _2_ for any year after that.
+
  "Sun": "900 SeedShop 4 5 0/1030 SeedShop 20 5 1 \"Strings\\schedules\\Abigail:Sun.000\"/1300 Forest 14 40 2/2000 SeedShop 1 9 3 abigail_sleep",
* {{o|suffix}} is any string further identifying the dialogue (like <tt>_inlaw_Abigail</tt>, for dialogue that only appears when you're married to Abigail).
+
  "11_6": "GOTO spring",
 
+
  "25_6": "GOTO spring",
If multiple dialogues are eligible, the game prioritizes by the following:
+
  "11": "NOT friendship Sebastian 6/1000 SebastianRoom 5 4 2 abigail_sit_down/1700 SeedShop 1 9 3 abigail_sleep",
# marriage status;
+
  "25": "NOT friendship Sebastian 6/GOTO 11",
# preface;
+
  "Wed": "1000 ArchaeologyHouse 11 9 0/1800 Town 47 87 0/2200 SeedShop 1 9 3 abigail_sleep",
# suffix;
+
  "Fri": "900 SeedShop 34 5 0/1100 SeedShop 9 17 3/1500 Saloon 42 17 2 abigail_sit_down/2100 SeedShop 1 9 3 abigail_sleep",
# in-law status;
+
  "fall": "900 SeedShop 39 5 0/1030 SeedShop 2 20 3/1300 BusStop 22 5 2/1700 SeedShop 3 6 0 abigail_videogames/1930 SeedShop 1 9 3 abigail_sleep",
# day of month;
+
  "winter": "900 SeedShop 39 5 0/1030 ScienceHouse 5 19 1/1430 SeedShop 3 6 0 abigail_videogames/1930 SeedShop 1 9 3 abigail_sleep",
# year;
+
  "summer": "900 SeedShop 39 5 0/1030 Railroad 30 45 0/1400 Mountain 49 31 1/1740 SeedShop 3 6 0 abigail_videogames/1930 SeedShop 1 9 3 abigail_sleep",
# heart level;
+
  "spring": "900 SeedShop 39 5 0/1030 SeedShop 2 20 3/1300 Town 73 54 2/1630 SeedShop 3 6 0 abigail_videogames/1930 SeedShop 1 9 3 abigail_sleep"
# day of week.
+
}
 
+
</source>}}
<source lang="yaml">
  −
"<key>": "schedule event/schedule event/schedule event",
  −
</source>
      
==Format==
 
==Format==
 
+
Each schedule entry value has an arbitrary number of slash-delimited schedule commands in this form:
Schedule events are separated by slashes (/) and written in the following format:
      
<source lang="yaml">
 
<source lang="yaml">
translators
8,446

edits

Navigation menu