JSON validator

Validation

No errors found! (You have no schema selected, so only the basic JSON syntax was checked.)

Content

You can change JSON format () or edit this file.
{
  "Format": "2.9.0",
  "Changes": [
    {
      "LogName": "Blank JSON Load",
      "Action": "Load",
      "Target": "Characters/Dialogue/{{ModID}}_Caleb, Characters/schedules/{{ModID}}_Caleb, Strings/schedules/{{ModID}}_Caleb",
      "FromFile": "assets/blank.json"
    },
    {
      "LogName": "Character Dispos",
      "Action": "Include",
      "FromFile": "assets/dispos.json"
    },
    {
      "LogName": "Base Portraits",
      "Action": "Load",
      "Target": "Portraits/{{ModId}}_Caleb",
      "FromFile": "assets/images/calebmullner.png"
    },
    {
      "LogName": "Base Portraits",
      "Action": "Load",
      "Target": "Characters/{{ModId}}_Caleb",
      "FromFile": "assets/images/calebsprites.png"
    },
    {
      "LogName": "Seasonal Portraits",
      "Action": "EditImage",
      "Target": "Portraits/{{ModId}}_Caleb",
      "FromFile": "assets/images/caleb_{{Season}}.png"
    },
    {
      "LogName": "Seasonal Portraits",
      "Action": "EditImage",
      "Target": "Characters/{{ModId}}_Caleb",
      "FromFile": "assets/images/calebsprites_{{Season}}.png"
    },
    {
      "LogName": "Caleb Animations",
      "Action": "EditData",
      "Target": "Data/animationdescriptions",
      "Entries": {
        "caleb_book": "16 16 17 17/18/17 17 16/17 17 16 16/Strings\\animationDescriptions:caleb_book",
        "caleb_work": "20/21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 20 21 21 21 21 21 21 21 21 21/20/Strings\\animationDescriptions:caleb_work",
        "caleb_sleep": "51/51/51"
      }
    },
    {
      "LogName": "Caleb Animation Strings",
      "Action": "EditData",
      "Target": "Strings/animationDescriptions",
      "Entries": {
        "caleb_book": "Huh? Sorry, I can talk later.",
        "caleb_work": "%Caleb is too absorbed in his work to notice you. He looks stressed. Probably best to leave him alone..."
      }
    },
    {
      "LogName": "Gift Tastes Include",
      "Action": "Include",
      "FromFile": "assets/gifttaste.json"
    },
    {
      "LogName": "NPC Schedule",
      "Action": "Include",
      "FromFile": "assets/schedule.json"
    },
    {
      "LogName": "House Edit",
      "Action": "Load",
      "Target": "Maps/JoshHouse",
      "FromFile": "assets/maps/JoshHouse.tmx"
    },
    {
      "Action": "EditMap",
      "Target": "Maps/JoshHouse",
      "MapProperties": {
        "Doors": "5 9 1 120 10 9 1 120 13 19 1 120"
      },
      "MapTiles": [
        {
          "Position": {
            "X": 13,
            "Y": 19
          },
          "Layer": "Buildings",
          "SetProperties": {
            "Action": "Door {{ModID}}_Caleb"
          }
        }
      ]
    },
    {
      "LogName": "Town Edit",
      "Action": "Load",
      "Target": "Maps/Town",
      "FromFile": "assets/maps/Town.tmx"
    },
    {
      "LogName": "House Objects",
      "Action": "EditData",
      "Target": "Strings/StringsFromMaps",
      "Entries": {
        "CalebLaptop": "This laptop needs a password to access.",
        "CalebLetter": "The Youth's Apathy? Or The Old's Judgementality?^The younger generation no longer wants to work. Every young person is tired of hearing that. But has the youth really become apathetic towards work culture? Or have job opportunities narrowed down significantly these past few years?^Every year, millions of students graduate with qualifications that jobs claim to desperately seek in their fellow recruits, and yet these students still end up jobless, and to some extremes, even impoverished.^According to a survey published by the Ferngill Social Committee in the year XXXX, 52% of graduates aged 18 and above are currently unemployed. However, 89% of them have claimed to be actively looking for work, and 71% of these graduates apply for more than ten positions per week. This just goes to show that our youth is not the problem to be focused on, but rather the main victims of the economical crisis that we face day by day.",
        "CalebTrash": "Looks like Caleb clears his trash regularly.",
        "CalebBook1": "'Politics and Language'",
        "CalebBook": "The books are all sorted alphabetically.",
        "CalebDrawer": "It's locked.",
        "CalebDrawer2": "It's locked."
      }
    },
    {
      "LogName": "Map Edit",
      "Action": "EditData",
      "Target": "Strings/StringsFromCSFiles",
      "Entries": {
        "MapPage.cs.11093": "Home of George, Evelyn, Alex & Caleb"
      }
    },
    {
      "LogName": "Alex Schedule Edit",
      "Action": "EditData",
      "Target": "Characters/Schedules/Alex",
      "Entries": {
        "rain": "800 JoshHouse 8 29 2 alex_football/1300 JoshHouse 14 5 2 alex_lift_weights/1600 Town 50 68 1/1830 JoshHouse 8 29 2/2000 JoshHouse 17 5 0/2200 JoshHouse 21 4 1 alex_sleep",
        "GreenRain": "610 JoshHouse 6 28 2",
        "marriage_Mon": "830 JoshHouse 6 18 2 \"Strings\\schedules\\Alex:marriage_Mon.000\"/1800 bed",
        "marriage_Sun": "MAIL saloonSportsRoom/GOTO NO_SCHEDULE/800 Town 64 64 2 alex_football/1100 Saloon 32 7 0 \"Strings\\schedules\\Alex:Sun.000_married\"/1500 Town 50 68 1/1830 JoshHouse 8 29 2/2000 JoshHouse 17 5 0/2200 bed",
        "marriage_DesertFestival_1": "800 Desert 13 23 2 \"Strings\\1_6_Strings:DesertFestival_Alex_marriage\"/2440 bed",
        "DesertFestival_1": "730 Town 64 64 2 alex_football/900 Desert 13 23 2 \"Strings\\1_6_Strings:DesertFestival_Alex\"/2450 JoshHouse 21 4 1 alex_sleep",
        "summer_16": "800 Town 64 64 2 alex_football/1030 Hospital 15 15 3 alex_sit_left \"Strings\\schedules\\Alex:summer_16.000\"/1330 Hospital 4 6 1 \"Strings\\schedules\\Alex:summer_16.001\"/1600 JoshHouse 15 4 2/2400 JoshHouse 21 4 1 alex_sleep",
        "winter_17": "900 BathHouse_MensLocker 3 5 2 alex_lift_weights/1500 Beach 27 24 1 \"Strings\\schedules\\Alex:winter_17.000\"/2400 JoshHouse 21 4 1 alex_sleep",
        "winter": "900 BathHouse_MensLocker 3 5 2 alex_lift_weights/1500 JoshHouse 14 5 2/1800 Town 50 68 1/1930 JoshHouse 8 29 2/2100 JoshHouse 17 5 0/2240 JoshHouse 21 4 1 alex_sleep",
        "Wed_6": "GOTO season",
        "Wed": "NOT friendship Haley 6/800 Town 64 64 2 alex_football/1200 HaleyHouse 7 23 3 alex_sit_left/1630 Town 50 68 1/1840 JoshHouse 8 29 2/2000 JoshHouse 17 5 0/2200 JoshHouse 21 4 1 alex_sleep",
        "Sun": "MAIL saloonSportsRoom/GOTO Sun_normal/800 Town 64 64 2 alex_football/1100 Saloon 32 7 0 \"Strings\\schedules\\Alex:Sun.000\"/1500 Town 50 68 1/1830 JoshHouse 8 29 2/2000 JoshHouse 17 5 0/2200 JoshHouse 21 4 1 alex_sleep",
        "Sun_normal": "GOTO season",
        "summer": "730 Beach 30 13 2 square_7_7/1200 Town 88 91 2/1700 JoshHouse 14 5 2 alex_lift_weights/1900 JoshHouse 8 29 2/2000 JoshHouse 17 5 0/2200 JoshHouse 21 4 1 alex_sleep",
        "spring": "800 Town 64 64 2 alex_football/1300 JoshHouse 14 5 2 alex_lift_weights/1600 Town 50 68 1/1830 JoshHouse 8 29 2/2000 JoshHouse 17 5 0/2200 JoshHouse 21 4 1 alex_sleep"
      }
    },
    {
      "LogName": "Evelyn Schedule Edit",
      "Action": "EditData",
      "Target": "Characters/Schedules/Evelyn",
      "Entries": {
        "rain": "800 JoshHouse 3 27 0 square_3_1_0/1040 JoshHouse 17 32 3/1210 JoshHouse 3 19 2/1630 JoshHouse 4 27 0 square_3_1_0/1900 JoshHouse 17 27 0/2130 JoshHouse 2 5 1",
        "GreenRain": "0 JoshHouse 4 28 2",
        "DesertFestival_3": "610 JoshHouse 3 27 0 square_3_1_0/1000 Desert 27 31 0 \"Strings\\1_6_Strings:DesertFestival_Evelyn\"/2250 bed",
        "2": "800 JoshHouse 3 27 0 square_3_1_0/1030 Hospital 15 15 3 evelyn_sit_left \"Strings\\schedules\\Evelyn:2.000\"/1330 Hospital 4 6 1 \"Strings\\schedules\\Evelyn:2.001\"/1600 JoshHouse 4 27 0 square_3_1_0/1900 JoshHouse 17 27 0/2130 JoshHouse 2 5 1",
        "23": "800 JoshHouse 3 27 0 square_3_1_0/1040 Hospital 10 16 0 \"Strings\\schedules\\Evelyn:23.000\"/1330 Hospital 4 7 0 \"Strings\\schedules\\Evelyn:23.001\"/1610 JoshHouse 4 27 0 square_3_1_0/1900 JoshHouse 17 27 0/2130 JoshHouse 2 5 1",
        "winter_17": "800 JoshHouse 3 27 0 square_3_1_0/1040 JoshHouse 17 32 3/1210 JoshHouse 3 29 2/1300 JoshHouse 20 30 3 evelyn_sit_left/1630 Beach 12 39 2 \"Strings\\schedules\\Evelyn:winter_17.000\"/2340 JoshHouse 2 5 1",
        "winter": "800 JoshHouse 3 27 0 square_3_1_0/1040 JoshHouse 17 32 3/1210 JoshHouse 3 29 2/1300 JoshHouse 20 30 3 evelyn_sit_left/1630 JoshHouse 4 27 0 square_3_1_0/1900 JoshHouse 17 27 0/2130 JoshHouse 2 5 1",
        "Thu": "800 JoshHouse 3 27 0 square_3_1_0/1040 JoshHouse 17 32 3/1210 CommunityCenter 18 25 3 evelyn_sit_left \"Strings\\schedules\\Evelyn:Thu.000\"/1630 JoshHouse 4 27 0 square_3_1_0/1900 JoshHouse 17 27 0/2130 JoshHouse 2 5 1",
        "Sat": "GOTO Thu",
        "Mon": "GOTO Thu",
        "spring": "800 JoshHouse 3 27 0 square_3_1_0/1040 JoshHouse 17 32 3/1210 JoshHouse 3 29 2/1300 Town 36 78 3/1630 JoshHouse 4 27 0 square_3_1_0/1900 JoshHouse 17 27 0/2130 JoshHouse 2 5 1",
        "summer": "800 JoshHouse 3 27 0 square_3_1_0/1040 JoshHouse 17 32 3/1210 JoshHouse 3 29 2/1300 Town 20 62 3 evelyn_garden/1630 JoshHouse 4 27 0 square_3_1_0/1900 JoshHouse 17 27 0/2130 JoshHouse 2 5 1"
      }
    },
    {
      "LogName": "George Schedule Edit",
      "Action": "EditData",
      "Target": "Characters/Schedules/George",
      "Entries": {
        "rain": "630 JoshHouse 16 32 0/1200 JoshHouse 5 31 3/1500 JoshHouse 16 32 0/2000 JoshHouse 3 5 0 george_sleep",
        "GreenRain": "0 JoshHouse 3 28 1",
        "DesertFestival_3": "610 JoshHouse 16 32 0/a1000 Desert 28 31 0 \"Strings\\1_6_Strings:DesertFestival_George\"/2250 bed",
        "23": "630 JoshHouse 5 31 3 \"Strings\\schedules\\George:23.000\"/1030 Hospital 10 15 0 \"Strings\\schedules\\George:23.001\"/1330 Hospital 4 6 1 \"Strings\\schedules\\George:23.002\"/1600 JoshHouse 16 32 0/2000 JoshHouse 3 5 0 george_sleep",
        "winter_17": "630 JoshHouse 16 32 0/1200 JoshHouse 5 31 3/1620 Beach 11 39 2 \"Strings\\schedules\\George:winter_17.000\"/2340 JoshHouse 3 5 0 george_sleep",
        "summer_Fri": "630 JoshHouse 16 32 0/1200 Town 52 61 2/1500 JoshHouse 16 32 0/2000 JoshHouse 3 5 0 george_sleep",
        "Sun": "MAIL saloonSportsRoom/GOTO Sun_normal/630 JoshHouse 16 32 0/1100 Saloon 36 7 0 \"Strings\\schedules\\George:Sun.001\"/1500 JoshHouse 16 32 0/2000 JoshHouse 3 5 0 george_sleep",
        "Sun_normal": "630 JoshHouse 16 32 0/1000 SeedShop 36 22 0 \"Strings\\schedules\\George:Sun.000\"/1400 JoshHouse 16 32 0/2000 JoshHouse 3 5 0 george_sleep",
        "spring": "630 JoshHouse 16 32 0/1200 JoshHouse 5 31 3/1500 JoshHouse 16 32 0/2000 JoshHouse 3 5 0 george_sleep"
      }
    },
    {
      "Action": "EditData",
      "Target": "Data/Characters",
      "Fields": {
        "George": {
          "Home": [
            {
              "Id": "Default",
              "Condition": null,
              "Location": "JoshHouse",
              "Tile": {
                "X": 16,
                "Y": 32
              },
              "Direction": "up"
            }
          ]
        },
        "Evelyn": {
          "Home": [
            {
              "Id": "Default",
              "Condition": null,
              "Location": "JoshHouse",
              "Tile": {
                "X": 2,
                "Y": 27
              },
              "Direction": "right"
            }
          ]
        }
      }
    },
    {
      "LogName": "NPC Dialogue",
      "Action": "EditData",
      "Target": "Characters/Dialogue/{{ModId}}_Caleb",
      "Entries": {
        "Introduction": "You must be that new farmer everyone's talking about. My name's Caleb, I write the articles for the local news press.",
        "AcceptBirthdayGift_Positive": "You got this for me? Really? For my birthday? Thank you so much, that means a lot! You also got one for Alex, right? $h",
        "AcceptBirthdayGift_Negative": "What the– this? A birthday gift? Is this some kind of weird joke? If so, you're not funny. $a",
        "AcceptBirthdayGift_Neutral": "Oh, is this a birthday gift for me? Thank you, how thoughtful.",
        "AcceptGift_(O)593": "Oh...! $6 #$b# ...Thank you. These are lovely. $h",
        "AcceptGift_(O)376": "Oh... you probably shouldn't be giving these out willy nilly. Especially not right now. $7",
        "AcceptGift_(O)79": "Huh? What's this? Hmm, maybe I could make use of this for my next article…",
        "AcceptGift_(O)842": "Huh? What's this? Hmm, maybe I could make use of this for my next article…",
        "RejectItem_(O)346": "... I don't drink, sorry. $s",
        "RejectItem_(O)348": "... I don't drink, sorry. $s",
        "RejectItem_(O)459": "... I don't drink, sorry. $s",
        "RejectItem_(O)303": "... I don't drink, sorry. $s",
        "Mon": "...Do you need something?",
        "Tue": "Hey, @. Have you heard what happened recently in Zuzu City? #$b# It's pretty rare to hear good news these days.",
        "Wed": "Hello, I hope your new farm is doing well.",
        "Thu": "It's important to keep up with the news every once in a while! $1 #$b# It's not good to always be isolated in a little bubble. $0",
        "Fri": "*grumble grumble*... copies... *grumble grumble*... that damn Mayor Lewis... *grumble* ... out of ink ... $7",
        "Sat": "When has a printer ever done what you wanted it to? $2",
        "Sun_1": "%Caleb doesn't seem to be in a good mood.",
        "Mon2": "Alex is my brother, we're twins. #$b# He's older than me by a couple minutes, though.",
        "Tue2": "Ughhh... I don't think I got enough sleep last night... And the caffeine hasn't kicked in yet either... $s %revealtaste Caleb 395",
        "Wed2": "I'm busy today, sorry.",
        "Mon4": "Hey, did you watch the game last night?",
        "Tue4": "Alex and I used to share the same room back when we were kids. #$b# When we were teenagers, my grandparents got Robin to build us a new room. #$b# We decided on who got the new room with rock paper scissors. #$b# ...I think you can guess who won. $1",
        "Wed4": "I managed to clear up my schedule a bit. I've never felt more relaxed.",
        "Sun4": "I used to play gridball back in highschool. #$b# I still do, but I'm finding less and less time to play these days. Y'know, with work and all... $7",
        "Mon6": "I used to be such a jerk back then... $s #$b# I've changed, of course, but... I've got a guilty conscience. $7",
        "Sat6": "My family says I spend too much time working. Do I really forget to spend time with them that often...? $s",
        "Mon8": "Maybe I should stop overworking myself. A lot of people care about me and want me to be healthy. $s",
        "Wed8": "You're one of the few people I trust in this town, you know that? ...Sorry if that's too much.",
        "Fri8": "I don't like showing other people my first drafts, but... #$b# ...if you want to, you can come over and review my articles before I publish them. $1 #$e# I only ever notice mistakes right after, and it's pretty embarrassing since I'm supposed to be a professional by now...",
        "Sat8": "My great grandfather was a farmer. It sounds nice living on a farm. I think I'd have a lot to write about then.",
        "Sun8": "I, uh, actually refused to wear my glasses, until I graduated high school. $h #$b# I was scared people would pick on me. Now, there's not really anyone around to make fun of me for it. #$b# And I know you won't.",
        "spring_1": "I hope something interesting happens this year.",
        "spring_Mon": "It’s like the seasons get hotter as time goes by. $7",
        "summer_1": "Oh, it's summer already? Huh. I swear, time goes by faster the older you get...",
        "summer_Tue": "I'd go hang out at the beach, but I have more important things to attend to right now. $7",
        "summer_Mon": "Summers have been hotter in recent years because of global warming... have you noticed that? #$b# …What? I’m not being negative, I’m just stating the facts. $3",
        "summer_Wed": "What do I write for this week's paper? Maybe I'll just complain about the heat and hope people find it relatable enough to read.",
        "summer_Thu": "Summer spangles grow this time of year, if the name didn't make it obvious. They make the summer heat a little more bearable. %revealtaste Caleb 593",
        "summer_Fri_1": "...Not in a good mood. Sorry. $7",
        "GreenRain": "The weather's been out of hand because of climate change recently, but this is on a next level. Is this the end? Are we facing the final consequences for human actions? $7",
        "GreenRain_2": "Wow, the plants absolutely love this rain. #$b# Maybe it's not an adverse effect of climate change, but instead, especially with all these plants growing like crazy, I think it might just be something that can fix it! $h",
        "fall_1": "It's gotten a lot colder, huh?",
        "fall_Mon": "Don't you think the leaves have been decaying prematurely these past few yearsr? $s",
        "fall_Mon2": "It's so nice to be outside during fall, isn't it? Everything is so pleasing to look at, and the temperature's just right too.",
        "fall_Mon4": "Alex asked me to play gridball with him the other day. I had to turn him down because of how packed my schedule is... $7 #$b# I hope he isn't too upset. $s #$b# I promised I'd play another day, though.",
        "fall_Tue4": "My family says I spend too much time working. But I just want to provide for us. $s",
        "fall_Sat10": "I don't like showing other people my first drafts, but... if you want to, you can come over and review my articles before I publish them. I only ever notice mistakes right after, and it's pretty embarrassing since I'm supposed to be a professional by now...",
        "fall_Sun8": "Maybe I'll take it easy this year... maybe watch some gridball with my brother.",
        "fall_15": "Are you going to participate in the Grange Display Contest tomorrow?",
        "fall_17": "*mumble mumble*... what's a synonym for 'display'... *mumble mumble* ... too repetitive... *mumble* ... what do I even write? $7",
        "winter_1": "Wow, it's freezing outside, huh? $6 #$b# Hey, you seem to be holding up just fine, though.",
        "winter_Mon": "Have you noticed that winters have been getting warmer recently? $s",
        "winter_Mon2": "Alex hates winters for some reason. #$b# Me? I don't have strong feelings about it. #$b# I just find it hard to work during winter, I'm a lot less productive in the cold.",
        "winter_Sat": "It’s cold. But I still have to go to work. $7",
        "dating_Alex": "I feel like Alex has something to tell me... $3 ^ So... you and Alex, huh? $h",
        "married_Alex": "I knew it! My instincts were right! $h #$e# Right about what? Uh... nothing. ^I'm happy for you and Alex. Take care of my brother well, @. $h",
        "married_Haley": "Alex has been pretty bummed out recently... especially since Haley's been too busy to hang out. $s"
      }
    },
    {
      "LogName": "Egg Festival",
      "Action": "EditData",
      "Target": "Data/Festivals/spring13",
      "TextOperations": [
        {
          "Operation": "Append",
          "Target": [
            "Entries",
            "Set-Up_additionalCharacters"
          ],
          "Value": "{{ModId}}_Caleb 36 71 left",
          "Delimiter": "/"
        },
        {
          "Operation": "Append",
          "Target": [
            "Entries",
            "Set-Up_additionalCharacters_y2"
          ],
          "Value": "{{ModId}}_Caleb 42 60 up",
          "Delimiter": "/"
        },
        {
          "Operation": "Append",
          "Target": [
            "Entries",
            "MainEvent_additionalCharacters"
          ],
          "Value": "{{ModId}}_Caleb 36 71 left",
          "Delimiter": "/"
        },
        {
          "Operation": "Append",
          "Target": [
            "Entries",
            "MainEvent_additionalCharacters_y2"
          ],
          "Value": "{{ModId}}_Caleb 24 69 right",
          "Delimiter": "/"
        }
      ]
    },
    {
      "LogName": "Egg Festival - Dialogue",
      "Action": "EditData",
      "Target": "Data/Festivals/spring13",
      "Entries": {
        "{{ModId}}_Caleb": "Y'know... This holiday's pretty controversial to religious scholars. They can't really agree which day it's supposed to fall on.",
        "{{ModId}}_Caleb_y2": "Religious holidays are always capitalised on... and this day is no different. $7"
      }
    },
    {
      "LogName": "Flower Dance",
      "Action": "EditData",
      "Target": "Data/Festivals/spring24",
      "TextOperations": [
        {
          "Operation": "Append",
          "Target": [
            "Entries",
            "Set-Up_additionalCharacters"
          ],
          "Value": "{{ModId}}_Caleb 6 21 down",
          "Delimiter": "/"
        },
        {
          "Operation": "Append",
          "Target": [
            "Entries",
            "MainEvent_additionalCharacters"
          ],
          "Value": "{{ModId}}_Caleb 6 21 down",
          "Delimiter": "/"
        },
        {
          "Operation": "Append",
          "Target": [
            "Entries",
            "Set-Up_additionalCharacters"
          ],
          "Value": "{{ModId}}_Caleb 6 21 down",
          "Delimiter": "/"
        },
        {
          "Operation": "Append",
          "Target": [
            "Entries",
            "MainEvent_additionalCharacters_y2"
          ],
          "Value": "{{ModId}}_Caleb 24 69 right",
          "Delimiter": "/"
        }
      ]
    },
    {
      "LogName": "Flower Dance - Dialogue",
      "Action": "EditData",
      "Target": "Data/Festivals/spring24",
      "Entries": {
        "{{ModId}}_Caleb": "In all honesty, I'd rather stay home. #$b# But... I'm the only journalist in this town, so I need to come to have material for the press. $7"
      }
    },
    {
      "LogName": "Luau",
      "Action": "EditData",
      "Target": "Data/Festivals/summer11",
      "TextOperations": [
        {
          "Operation": "Append",
          "Target": [
            "Entries",
            "Set-Up_additionalCharacters"
          ],
          "Value": "{{ModId}}_Caleb 19 17 right",
          "Delimiter": "/"
        },
        {
          "Operation": "Append",
          "Target": [
            "Entries",
            "MainEvent_additionalCharacters"
          ],
          "Value": "{{ModId}}_Caleb 45 16 left",
          "Delimiter": "/"
        },
        {
          "Operation": "Append",
          "Target": [
            "Entries",
            "Set-Up_additionalCharacters_y2"
          ],
          "Value": "{{ModId}}_Caleb 12 9 down",
          "Delimiter": "/"
        },
        {
          "Operation": "Append",
          "Target": [
            "Entries",
            "MainEvent_additionalCharacters"
          ],
          "Value": "{{ModId}}_Caleb 34 13 left",
          "Delimiter": "/"
        }
      ]
    },
    {
      "LogName": "Luau - dialogue",
      "Action": "EditData",
      "Target": "Data/Festivals/summer11",
      "Entries": {
        "{{ModId}}_Caleb": "...This festival feels iffy to me. I don't think it's our culture to celebrate. $7",
        "{{ModId}}_Caleb_y2": "It's hotter than last year. Did you notice that?"
      }
    },
    {
      "LogName": "Dance of the Moonlight Jellies",
      "Action": "EditData",
      "Target": "Data/Festivals/summer28",
      "TextOperations": [
        {
          "Operation": "Append",
          "Target": [
            "Entries",
            "Set-Up_additionalCharacters"
          ],
          "Value": "{{ModId}}_Caleb 23 24 down",
          "Delimiter": "/"
        },
        {
          "Operation": "Append",
          "Target": [
            "Entries",
            "MainEvent_additionalCharacters"
          ],
          "Value": "{{ModId}}_Caleb 39 33 right",
          "Delimiter": "/"
        },
        {
          "Operation": "Append",
          "Target": [
            "Entries",
            "Set-Up_additionalCharacters_y2"
          ],
          "Value": "{{ModId}}_Caleb 69 24 down",
          "Delimiter": "/"
        },
        {
          "Operation": "Append",
          "Target": [
            "Entries",
            "MainEvent_additionalCharacters_y2"
          ],
          "Value": "{{ModId}}_Caleb 69 24 down",
          "Delimiter": "/"
        }
      ]
    },
    {
      "LogName": "Dance of the Moonlight Jellies - Dialogue",
      "Action": "EditData",
      "Target": "Data/Festivals/summer28",
      "Entries": {
        "{{ModId}}_Caleb": "What a way to end the season... $h",
        "{{ModId}}_Caleb_y2": "I don't think I'll ever get tired of seeing the jellyfish. #$b# It's... a good change of scenery from what I usually do."
      }
    },
    {
      "LogName": "Stardew Valley Fair",
      "Action": "EditData",
      "Target": "Data/Festivals/fall16",
      "TextOperations": [
        {
          "Operation": "Append",
          "Target": [
            "Entries",
            "Set-Up_additionalCharacters"
          ],
          "Value": "{{ModId}}_Caleb 26 53 down",
          "Delimiter": "/"
        },
        {
          "Operation": "Append",
          "Target": [
            "Entries",
            "Set-Up_additionalCharacters_y2"
          ],
          "Value": "{{ModId}}_Caleb 32 73 up",
          "Delimiter": "/"
        }
      ]
    },
    {
      "LogName": "Stardew Valley Fair",
      "Action": "EditData",
      "Target": "Data/Festivals/fall16",
      "Entries": {
        "{{ModId}}_Caleb": "Having fun?  #$b# If you're having a little trouble with the games, you can exchange gold for Star Coins. ",
        "{{ModId}}_Caleb_y2": "The lady over there just told me my fortune. #$b# It's fun to hear, but I don't believe in that sort of stuff."
      }
    },
    {
      "LogName": "Spirit's Eve",
      "Action": "EditData",
      "Target": "Data/Festivals/fall27",
      "TextOperations": [
        {
          "Operation": "Append",
          "Target": [
            "Entries",
            "Set-Up_additionalCharacters"
          ],
          "Value": "{{ModId}}_Caleb 23 70 right",
          "Delimiter": "/"
        },
        {
          "Operation": "Append",
          "Target": [
            "Entries",
            "Set-Up_additionalCharacters_y2"
          ],
          "Value": "{{ModId}}_Caleb 44 14 down",
          "Delimiter": "/"
        }
      ]
    },
    {
      "LogName": "Spirit's Eve - dialogue",
      "Action": "EditData",
      "Target": "Data/Festivals/fall27",
      "Entries": {
        "{{ModId}}_Caleb": "...I've got work in the morning. $7",
        "{{ModId}}_Caleb_y2": "Oh, hey. #$b# ...I'm lost. $h"
      }
    },
    {
      "LogName": "Festival of Ice",
      "Action": "EditData",
      "Target": "Data/Festivals/winter8",
      "TextOperations": [
        {
          "Operation": "Append",
          "Target": [
            "Entries",
            "Set-Up_additionalCharacters"
          ],
          "Value": "{{ModId}}_Caleb 78 23 down",
          "Delimiter": "/"
        },
        {
          "Operation": "Append",
          "Target": [
            "Entries",
            "MainEvent_additionalCharacters"
          ],
          "Value": "{{ModId}}_Caleb 74 27 down",
          "Delimiter": "/"
        },
        {
          "Operation": "Append",
          "Target": [
            "Entries",
            "Set-Up_additionalCharacters_y2"
          ],
          "Value": "{{ModId}}_Caleb 79 22 right",
          "Delimiter": "/"
        },
        {
          "Operation": "Append",
          "Target": [
            "Entries",
            "MainEvent_additionalCharacters_y2"
          ],
          "Value": "{{ModId}}_Caleb 79 33 left",
          "Delimiter": "/"
        }
      ]
    },
    {
      "LogName": "Festival of Ice - Dialogue",
      "Action": "EditData",
      "Target": "Data/Festivals/winter8",
      "Entries": {
        "{{ModId}}_Caleb": "Joining the fishing competition, @?",
        "{{ModId}}_Caleb_y2": "Don't let Alex take a dip in the frozen lake. $7"
      }
    },
    {
      "LogName": "Feast of the Winter Star",
      "Action": "EditData",
      "Target": "Data/Festivals/winter25",
      "TextOperations": [
        {
          "Operation": "Append",
          "Target": [
            "Entries",
            "Set-Up_additionalCharacters"
          ],
          "Value": "{{ModId}}_Caleb 36 73 left",
          "Delimiter": "/"
        },
        {
          "Operation": "Append",
          "Target": [
            "Entries",
            "Set-Up_additionalCharacters_y2"
          ],
          "Value": "{{ModId}}_Caleb 22 66 right",
          "Delimiter": "/"
        }
      ]
    },
    {
      "LogName": "Feast of the Winter Star - Dialogue",
      "Action": "EditData",
      "Target": "Data/Festivals/winter25",
      "Entries": {
        "{{ModId}}_Caleb": "Happy holidays, @! #$e# 'Happy holidays' is a lot better to say than 'Happy feast of the winter star'. Not everyone celebrates.",
        "{{ModId}}_Caleb_y2": "My grandparents always ask me what I want for Winter Star... #$b# I don't really know what I want, honestly. I think I just don't care much for gifts. #$e# As long as I can celebrate with my family, I'm happy. $h"
      }
    }
  ],
  "DynamicTokens": [
    {
      "Name": "FestivalYear",
      "Value": ""
    },
    {
      "Name": "FestivalYear",
      "Value": "_y2",
      "When": {
        "Query: {{Year}} % 2 = 0": true
      }
    }
  ]
}