/*


This file provides metadata to the mod that isn't available from the game (e.g. because it's buried in the logic).
You shouldn't change this file unless you know what you're doing.


*/
{
    /*********
    ** Constants
    *********/
    "Constants": {
        /* animals */
        "AnimalFriendshipPointsPerLevel": 200,
        "AnimalFriendshipMaxPoints": 1000,
        "AnimalMaxHappiness": 255,

        /* fruit trees */
        "FruitTreeQualityGrowthTime": 112,

        /* NPCs */
        "ForceSocialVillagers": {
            "Dwarf": true, // always false?
            "Krobus": true, // false in-game until met
            "Sandy": true // false in-game until desert unlocked
        },
        "DatingHearts": 2,
        "SpouseMaxFriendship": 3500,
        "SpouseFriendshipForStardrop": 3125,

        /* players */
        "PlayerMaxSkillPoints": 15000,
        "PlayerSkillPointsPerLevel": [ 100, 380, 770, 1300, 2150, 3300, 4800, 6900, 10000, 15000 ],

        /* time */
        "DaysInSeason": 28,
        "FenceDecayRate": 1440,

        /* crafting */
        "CaskAgeSchedule": {
            "Silver": 14,
            "Gold": 28,
            "Iridium": 56
        },

        /* items */
        "ItemsWithIridiumQuality": [
            /* animal products */
            -5, // eggs
            -6, // milks
            "(O)430", // truffle
            "(O)440", // wool
            "(O)444", // duck feather
            "(O)446", // rabbit's foot

            /* forage (foods) */
            "(O)16", // wild horseradish
            "(O)18", // daffodil
            "(O)20", // leek
            "(O)22", // dandelion
            "(O)78", // cave carrot
            "(O)88", // coconut
            "(O)90", // cactus fruit
            "(O)257", // morel
            "(O)259", // fiddlehead fern
            "(O)281", // chanterelle
            "(O)283", // holly
            "(O)296", // salmonberry
            "(O)396", // spice berry
            "(O)398", // grape
            "(O)399", // spring onion
            "(O)402", // sweet pea
            "(O)404", // common mushroom
            "(O)406", // wild plum
            "(O)408", // hazelnut
            "(O)410", // blackberry
            "(O)412", // winter root
            "(O)414", // crystal fruit
            "(O)416", // snow yam
            "(O)420", // red mushroom
            "(O)422", // purple mushroom

            /* forage (beach) */
            "(O)372", // clam
            "(O)392", // nautilus shell
            "(O)393", // coral
            "(O)394", // rainbow shell
            "(O)397", // sea urchin
            "(O)719", // mussel
            "(O)723", // oyster

            /* fruit tree produce */
            "(O)613", // apple
            "(O)634", // apricot
            "(O)635", // orange
            "(O)636", // peach
            "(O)637", // pomegranate
            "(O)638", // cherry

            /* cask-aged artisanal products */
            "(O)303", // pale ale
            "(O)346", // beer
            "(O)348", // wine
            "(O)424", // cheese
            "(O)426", // goat cheese
            "(O)459" // mead
        ],

        /* achievements */
        "PolycultureCount": 15,
        "MonocultureCount": 300
    },

    /*********
    ** Shops
    *********/
    "Shops": [
        {
            "DisplayKey": "shop.adventure-guild",
            "BuysCategories": [ -28, -98, -97, -96 ]
        },
        {
            "DisplayKey": "shop.clint",
            "BuysCategories": [ -12, -2, -15 ]
        },
        {
            "DisplayKey": "shop.marnie",
            "BuysCategories": [ -18, -6, -5, -14 ]
        },
        {
            "DisplayKey": "shop.pierre",
            "BuysCategories": [ -81, -75, -79, -80, -74, -17, -18, -6, -26, -5, -14, -19, -7, -25 ]
        },
        {
            "DisplayKey": "shop.robin",
            "BuysCategories": [ -16 ]
        },
        {
            "DisplayKey": "shop.willy",
            "BuysCategories": [ -4, -23, -21, -22 ]
        },
        {
            "DisplayKey": "shop.volcano",
            "BuysCategories": [ -12, -2, -15 ] // same as blacksmith
        }
    ],


    /*********
    ** Added metadata for NPCs (including villagers, pets, farm animals, monsters, etc).
    *********/
    "Characters": [
        {
            "ID": "Pet",
            "DescriptionKey": "data.npc.pet.description"
        },
        {
            "ID": "Horse",
            "DescriptionKey": "data.npc.horse.description"
        },
        {
            "ID": "Junimo",
            "DescriptionKey": "data.npc.junimo.description"
        },
        {
            "ID": "Villager::TrashBear",
            "DescriptionKey": "data.npc.trash-bear.description"
        }
    ],

    /*********
    ** Fishing metadata
    *********/
    /*
       Implementation notes:
         - Submarine rules are from StardewValley.Locations.Submarine::getFish.
         - UndergroundMine rules are from StardewValley.Locations.MineShaft::getFish and
           getMineArea. The mine fishing areas cover multiple floors where water never appears, so
           the 'area' field for mines specify the actual level where water can appear (i.e. 20, 60,
           and 100), rather than the internal area ID used by getMineArea.
         - Legendary fish rules are from the getFish implementations of each location.

        Numeric area IDs are for the vanilla game (except mines per the above); named areas are
        matched to translations.
     */
    "CustomFishSpawnRules": {
        // Octopus
        "(O)149": {
            "Locations": [
                {
                    "LocationId": "Submarine",
                    "Seasons": [ "winter" ]
                }
            ]
        },

        // Seaweed
        "(O)152": {
            "Locations": [
                {
                    "LocationId": "Submarine",
                    "Seasons": [ "winter" ]
                }
            ]
        },

        // Sea Cucumber
        "(O)154": {
            "Locations": [
                {
                    "LocationId": "Submarine",
                    "Seasons": [ "winter" ]
                }
            ]
        },

        // Super Cucumber
        "(O)155": {
            "Locations": [
                {
                    "LocationId": "Submarine",
                    "Seasons": [ "winter" ]
                }
            ]
        },

        // Stonefish
        "(O)158": {
            "Locations": [
                {
                    "LocationId": "UndergroundMine",
                    "Area": 20,
                    "Seasons": [ "spring", "summer", "fall", "winter" ]
                }
            ]
        },

        // Crimsonfish (legendary)
        "(O)159": {
            "IsUnique": true,
            "MinFishingLevel": 5,
            "Locations": [
                {
                    "LocationId": "Beach",
                    "Area": "east-pier",
                    "Seasons": [ "summer" ]
                }
            ]
        },

        // Angler (legendary)
        "(O)160": {
            "IsUnique": true,
            "MinFishingLevel": 3,
            "Locations": [
                {
                    "LocationId": "Town",
                    "Area": "northmost-bridge",
                    "Seasons": [ "fall" ]
                }
            ]
        },

        // Ice Pip
        "(O)161": {
            "Locations": [
                {
                    "LocationId": "UndergroundMine",
                    "Area": 60,
                    "Seasons": [ "spring", "summer", "fall", "winter" ]
                }
            ]
        },

        // Lava Eel
        "(O)162": {
            "Locations": [
                {
                    "LocationId": "UndergroundMine",
                    "Area": 100,
                    "Seasons": [ "spring", "summer", "fall", "winter" ]
                }
            ]
        },

        // Legend (legendary)
        "(O)163": {
            "IsUnique": true,
            "MinFishingLevel": 10,
            "Weather": "Rainy",
            "Locations": [
                {
                    "LocationId": "Mountain",
                    "Seasons": [ "spring" ]
                }
            ]
        },

        // Mutant Carp (legendary)
        "(O)682": {
            "IsUnique": true,
            "Locations": [
                {
                    "LocationId": "Sewer",
                    "Seasons": [ "spring", "summer", "fall", "winter" ]
                }
            ]
        },

        // Glacierfish (legendary)
        "(O)775": {
            "IsUnique": true,
            "MinFishingLevel": 6,
            "Locations": [
                {
                    "LocationId": "Forest",
                    "Area": "island-tip",
                    "Seasons": [ "winter" ]
                }
            ]
        },

        // Midnight Squid
        "(O)798": {
            "Locations": [
                {
                    "LocationId": "Submarine",
                    "Seasons": [ "winter" ]
                }
            ]
        },

        // Spook Fish
        "(O)799": {
            "Locations": [
                {
                    "LocationId": "Submarine",
                    "Seasons": [ "winter" ]
                }
            ]
        },

        // Blobfish
        "(O)800": {
            "Locations": [
                {
                    "LocationId": "Submarine",
                    "Seasons": [ "winter" ]
                }
            ]
        },

        // Son of Crimsonfish
        "(O)898": {
            "MinFishingLevel": 5,
            "Locations": [
                {
                    "LocationId": "Beach",
                    "Area": "east-pier",
                    "Seasons": [ "spring", "summer", "fall", "winter" ]
                }
            ]
        },

        // Ms. Angler
        "(O)899": {
            "MinFishingLevel": 3,
            "Locations": [
                {
                    "LocationId": "Town",
                    "Area": "northmost-bridge",
                    "Seasons": [ "spring", "summer", "fall", "winter" ]
                }
            ]
        },

        // Legend II
        "(O)900": {
            "MinFishingLevel": 10,
            "Locations": [
                {
                    "LocationId": "Mountain",
                    "Seasons": [ "spring", "summer", "fall", "winter" ]
                }
            ]
        },

        // Radioactive Carp
        "(O)901": {
            "Locations": [
                {
                    "LocationId": "Sewer",
                    "Seasons": [ "spring", "summer", "fall", "winter" ]
                }
            ]
        },

        // Glacierfish Jr.
        "(O)902": {
            "MinFishingLevel": 6,
            "Locations": [
                {
                    "LocationId": "Forest",
                    "Area": "island-tip",
                    "Seasons": [ "spring", "summer", "fall", "winter" ]
                }
            ]
        }
    },

    "IgnoreFishingLocations": [
        "Temp",
        "fishingGame",
        "IslandSecret",
        "Backwoods"
    ],

    /*********
    ** Corrects item metadata
    *********/
    "Items": [
        /****
        ** Farm
        ****/
        {
            "QualifiedId": [ "(BC)101" ],
            "Context": "World",
            "DescriptionKey": "data.item.egg-incubator.description" // no description when it contains an egg
        },

        /****
        ** Mine containers (all identified as "Barrel" with no meaningful description)
        ****/
        {
            "QualifiedId": [ "(BC)118" /*barrel*/, "(BC)120" /*frost barrel*/, "(BC)122" /*dark barrel*/, "(BC)124" /*desert barrel*/ ],
            "Context": "World",
            "NameKey": "data.item.barrel.name",
            "TypeKey": "data.type.container",
            "DescriptionKey": "data.item.barrel.description"
        },
        {
            "QualifiedId": [ "(BC)119" /*box*/, "(BC)121" /*frost box*/, "(BC)123" /*dark box*/, "(BC)125" /*desert box*/ ],
            "Context": "World",
            "NameKey": "data.item.box.name",
            "TypeKey": "data.type.container",
            "DescriptionKey": "data.item.box.description"
        }
    ],


    /*********
    ** Puzzle solutions
    *********/
    "PuzzleSolutions": {
        // The sequence of flute block pitches for the IslandSouthEast mermaid music puzzle.
        // Derived from IslandSouthEast.OnFlutePlayed.
        "IslandMermaidFluteBlockSequence": [ 200, 1100, 900, 500, 700 ]
    }
}
