Difference between revisions of "Modding:Fish Pond data"
MouseyPounds (talk | contribs) (→RequiredTags: Removed reference to the bugged fish_<name> tag) |
Pathoschild (talk | contribs) (→Format: rewrite to use standardized table format, add missing info, update for Stardew Valley 1.6 (e.g. item IDs are no longer integers)) |
||
(9 intermediate revisions by 4 users not shown) | |||
Line 4: | Line 4: | ||
== Raw data == | == Raw data == | ||
− | Object data is stored in < | + | Object data is stored in <samp>Content\Data\FishPondData.xnb</samp>, which can be [[Modding:Editing XNB files#unpacking|unpacked for editing]]. Here's the raw data as of {{version|1.5.1}} for reference. |
− | {{collapse|Data|content=< | + | {{collapse|Data|content=<syntaxhighlight lang="json"> |
[ | [ | ||
{ | { | ||
"RequiredTags": [ | "RequiredTags": [ | ||
− | "item_squid" | + | "item_lionfish" |
− | ], | + | ], |
− | "SpawnTime": 3, | + | "SpawnTime": -1, |
− | "ProducedItems": [ | + | "ProducedItems": [ |
− | { | + | { |
− | "RequiredPopulation": 7, | + | "RequiredPopulation": 9, |
− | "Chance": 1.0, | + | "Chance": 0.02, |
− | "ItemID": 814, | + | "ItemID": 857, |
− | "MinQuantity": 1, | + | "MinQuantity": 1, |
− | "MaxQuantity": 1 | + | "MaxQuantity": 1 |
− | }, | + | }, |
− | { | + | { |
− | "RequiredPopulation": 5, | + | "RequiredPopulation": 7, |
− | "Chance": 0.6, | + | "Chance": 0.2, |
− | "ItemID": 814, | + | "ItemID": 831, |
− | "MinQuantity": 1, | + | "MinQuantity": 2, |
− | "MaxQuantity": 1 | + | "MaxQuantity": 5 |
− | }, | + | }, |
− | { | + | { |
− | "RequiredPopulation": 3, | + | "RequiredPopulation": 4, |
− | "Chance": 0.45, | + | "Chance": 0.1, |
− | "ItemID": 814, | + | "ItemID": 831, |
− | "MinQuantity": 1, | + | "MinQuantity": 2, |
− | "MaxQuantity": 1 | + | "MaxQuantity": 5 |
− | }, | + | }, |
− | { | + | { |
− | "RequiredPopulation": 0, | + | "RequiredPopulation": 1, |
− | "Chance": 0.25, | + | "Chance": 1.0, |
− | "ItemID": 814, | + | "ItemID": 812, |
− | "MinQuantity": 1, | + | "MinQuantity": 1, |
+ | "MaxQuantity": 1 | ||
+ | } | ||
+ | ], | ||
+ | "PopulationGates": { | ||
+ | "4": [ | ||
+ | "829 3", | ||
+ | "832 1" | ||
+ | ], | ||
+ | "6": [ | ||
+ | "834 1" | ||
+ | ] | ||
+ | } | ||
+ | }, | ||
+ | { | ||
+ | "RequiredTags": [ | ||
+ | "item_blue_discus" | ||
+ | ], | ||
+ | "SpawnTime": -1, | ||
+ | "ProducedItems": [ | ||
+ | { | ||
+ | "RequiredPopulation": 9, | ||
+ | "Chance": 0.1, | ||
+ | "ItemID": 91, | ||
+ | "MinQuantity": 1, | ||
+ | "MaxQuantity": 1 | ||
+ | }, | ||
+ | { | ||
+ | "RequiredPopulation": 9, | ||
+ | "Chance": 0.05, | ||
+ | "ItemID": 791, | ||
+ | "MinQuantity": 1, | ||
+ | "MaxQuantity": 1 | ||
+ | }, | ||
+ | { | ||
+ | "RequiredPopulation": 7, | ||
+ | "Chance": 0.05, | ||
+ | "ItemID": 91, | ||
+ | "MinQuantity": 1, | ||
+ | "MaxQuantity": 1 | ||
+ | }, | ||
+ | { | ||
+ | "RequiredPopulation": 4, | ||
+ | "Chance": 0.02, | ||
+ | "ItemID": 91, | ||
+ | "MinQuantity": 1, | ||
+ | "MaxQuantity": 1 | ||
+ | }, | ||
+ | { | ||
+ | "RequiredPopulation": 1, | ||
+ | "Chance": 1.0, | ||
+ | "ItemID": 812, | ||
+ | "MinQuantity": 1, | ||
+ | "MaxQuantity": 1 | ||
+ | } | ||
+ | ], | ||
+ | "PopulationGates": { | ||
+ | "4": [ | ||
+ | "830 3" | ||
+ | ], | ||
+ | "6": [ | ||
+ | "830 10" | ||
+ | ] | ||
+ | } | ||
+ | }, | ||
+ | { | ||
+ | "RequiredTags": [ | ||
+ | "item_stingray" | ||
+ | ], | ||
+ | "SpawnTime": -1, | ||
+ | "ProducedItems": [ | ||
+ | { | ||
+ | "RequiredPopulation": 9, | ||
+ | "Chance": 0.1, | ||
+ | "ItemID": 787, | ||
+ | "MinQuantity": 1, | ||
+ | "MaxQuantity": 1 | ||
+ | }, | ||
+ | { | ||
+ | "RequiredPopulation": 9, | ||
+ | "Chance": 0.06, | ||
+ | "ItemID": 852, | ||
+ | "MinQuantity": 1, | ||
+ | "MaxQuantity": 1 | ||
+ | }, | ||
+ | { | ||
+ | "RequiredPopulation": 7, | ||
+ | "Chance": 0.1, | ||
+ | "ItemID": 848, | ||
+ | "MinQuantity": 2, | ||
+ | "MaxQuantity": 5 | ||
+ | }, | ||
+ | { | ||
+ | "RequiredPopulation": 4, | ||
+ | "Chance": 0.05, | ||
+ | "ItemID": 851, | ||
+ | "MinQuantity": 1, | ||
+ | "MaxQuantity": 1 | ||
+ | }, | ||
+ | { | ||
+ | "RequiredPopulation": 5, | ||
+ | "Chance": 1.0, | ||
+ | "ItemID": 812, | ||
+ | "MinQuantity": 1, | ||
+ | "MaxQuantity": 1 | ||
+ | }, | ||
+ | { | ||
+ | "RequiredPopulation": 1, | ||
+ | "Chance": 0.8, | ||
+ | "ItemID": 812, | ||
+ | "MinQuantity": 1, | ||
+ | "MaxQuantity": 1 | ||
+ | } | ||
+ | ], | ||
+ | "PopulationGates": { | ||
+ | "4": [ | ||
+ | "848 7" | ||
+ | ], | ||
+ | "6": [ | ||
+ | "852 1" | ||
+ | ] | ||
+ | } | ||
+ | }, | ||
+ | { | ||
+ | "RequiredTags": [ | ||
+ | "item_squid" | ||
+ | ], | ||
+ | "SpawnTime": 3, | ||
+ | "ProducedItems": [ | ||
+ | { | ||
+ | "RequiredPopulation": 7, | ||
+ | "Chance": 1.0, | ||
+ | "ItemID": 814, | ||
+ | "MinQuantity": 1, | ||
+ | "MaxQuantity": 1 | ||
+ | }, | ||
+ | { | ||
+ | "RequiredPopulation": 5, | ||
+ | "Chance": 0.6, | ||
+ | "ItemID": 814, | ||
+ | "MinQuantity": 1, | ||
+ | "MaxQuantity": 1 | ||
+ | }, | ||
+ | { | ||
+ | "RequiredPopulation": 3, | ||
+ | "Chance": 0.45, | ||
+ | "ItemID": 814, | ||
+ | "MinQuantity": 1, | ||
+ | "MaxQuantity": 1 | ||
+ | }, | ||
+ | { | ||
+ | "RequiredPopulation": 0, | ||
+ | "Chance": 0.25, | ||
+ | "ItemID": 814, | ||
+ | "MinQuantity": 1, | ||
"MaxQuantity": 1 | "MaxQuantity": 1 | ||
} | } | ||
Line 869: | Line 1,023: | ||
{ | { | ||
"RequiredTags": [ | "RequiredTags": [ | ||
− | " | + | "item_super_cucumber" |
], | ], | ||
"SpawnTime": -1, | "SpawnTime": -1, | ||
Line 919: | Line 1,073: | ||
{ | { | ||
"RequiredTags": [ | "RequiredTags": [ | ||
− | " | + | "item_octopus" |
], | ], | ||
"SpawnTime": -1, | "SpawnTime": -1, | ||
Line 972: | Line 1,126: | ||
{ | { | ||
"RequiredTags": [ | "RequiredTags": [ | ||
− | " | + | "item_rainbow_trout" |
], | ], | ||
"SpawnTime": -1, | "SpawnTime": -1, | ||
Line 1,068: | Line 1,222: | ||
{ | { | ||
"RequiredTags": [ | "RequiredTags": [ | ||
− | " | + | "item_catfish" |
], | ], | ||
"SpawnTime": -1, | "SpawnTime": -1, | ||
Line 1,536: | Line 1,690: | ||
} | } | ||
} | } | ||
− | ]</ | + | ] |
+ | </syntaxhighlight>}} | ||
− | == Format == | + | ==Format== |
− | The data | + | The fish pond data in <samp>Data/FishPondData</samp> consists of a list of elements with these fields. |
− | |||
− | |||
− | |||
− | |||
− | |||
− | = | + | {| class="wikitable" |
− | + | |- | |
+ | ! field | ||
+ | ! purpose | ||
+ | |- | ||
+ | | <samp>Id</samp> | ||
+ | | The [[Modding:Common data field types#Unique string ID|unique string ID]] for this entry. | ||
+ | |- | ||
+ | | <samp>RequiredTags</samp> | ||
+ | | The [[Modding:Items#Context tags|context tags]] for fish which should use this entry. A tag can be prefixed with <code>!</code> to require that the fish ''not'' have that tag. | ||
− | + | For example, <code>["fish_ocean", "fish_crab_pot", "!fish_carnivorous"]</code> will match ocean fish that can be caught in [[Crab Pot|crab pots]] and aren't carnivorous. | |
− | + | The first matching entry based on the <samp>Precedence</samp> field is used. If no other entries match, <samp>Data/FishPondData</samp> has a default entry with the required tags <code>category_fish</code> as a catch-all for any fish without their own entry. | |
+ | |- | ||
+ | | <samp>ProducedItems</samp> | ||
+ | | The items that can be produced by the selected fish. | ||
− | + | When a fish pond is ready to produce output (based on a hardcoded <code>(15 + 8 * population of pond)%</code> chance), it checks each entry in the list and takes the first one that matches. If no entry matches, no output is produced. | |
− | |||
+ | This consists of a list of models with these fields: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
− | ! | + | ! field |
− | ! | + | ! purpose |
|- | |- | ||
− | | | + | | <samp>ItemId</samp> |
+ | | The [[Modding:Common data field types#Item query|item query]] or [[Modding:Common data field types#Item ID|item ID]] to produce, or the exact string <code>(O)812</code> ([[roe]]) to produce roe for the current fish. | ||
|- | |- | ||
− | | | + | | <samp>RequiredPopulation</samp> |
+ | | ''(Optional)'' The minimum number of fish in the pond required to produce this item. Default 0. | ||
|- | |- | ||
− | | | + | | <samp>Chance</samp> |
+ | | ''(Optional)'' The probability that this item will be produced, as a value between 0 (never) and 1 (always). This is applied ''after'' the base chance of producing any item above. Default 1. | ||
|- | |- | ||
− | | | + | | <samp>MinQuantity</samp> |
+ | | ''(Optional)'' The minimum stack size for the produced item. Default 1. | ||
|- | |- | ||
− | | | + | | <samp>MaxQuantity</samp> |
+ | | ''(Optional)'' The maximum stack size for the produced item. Default 1. | ||
|} | |} | ||
+ | |- | ||
+ | | <samp>PopulationGates</samp> | ||
+ | | The rules which decide when the fish pond population can grow (up to a hardcoded limit of 10 fish), and the quests that must be completed to do so. If omitted, the population can grow to 10 fish with no quests. | ||
− | + | This consists of a number → item IDs lookup, where: | |
− | + | * The key is the population number at which this gate applies. | |
− | + | * The value is a list of possible quest items that may be requested by the fish at random to complete the gate. Each item is represented by 1–3 space-delimited values: the item ID, minimum quantity, and maximum quantity. If both min and max quantity are specified, a random number in that range is used. If only the min quantity is specified, that exact number is used. If neither are specified, the fish will request one. | |
− | |||
− | |||
− | |||
− | |||
− | + | For example, consider this population gate: | |
+ | <syntaxhighlight lang="json"> | ||
+ | "6": [ "422 2 3", "60 2", "749 2 3", "116" ] | ||
+ | </syntaxhighlight> | ||
− | + | This means that before the population grows to 6, the fish will randomly ask for one of these: | |
− | This | + | * 2–3 [[Purple Mushroom|purple mushrooms]] (item ID 422); |
+ | * 2 [[emerald]]s (item ID 60); | ||
+ | * 2–3 [[Omni Geode|omni geodes]] (item ID 749); | ||
+ | * or 1 [[Dried Starfish|dried starfish]]. | ||
+ | |- | ||
+ | | <samp>Precedence</samp> | ||
+ | | ''(Optional)'' The order in which this entry should be checked, where 0 is the default value used by most entries. Entries with the same precedence are checked in the order listed. Default 0. | ||
+ | |- | ||
+ | | <samp>SpawnTime</samp> | ||
+ | | ''(Optional)'' The number of days needed to raise the population by one if there's enough room in the fish pond. | ||
− | + | If omitted, the game chooses a value based on the base fish price: 1 day (0–30g), 2 days (31–80g), 3 days (81–120g), 4 days (121–250g), or 5 days (250g+). | |
− | + | |} | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | [[Category:Modding]] | |
− | + | [[ru:Модификации:Рыбный пруд]] | |
− | |||
− | |||
− | |||
− |
Latest revision as of 18:41, 2 September 2024
← Index
This page explains how the game stores and parses Fish Pond data. This is an advanced guide for mod developers.
Raw data
Object data is stored in Content\Data\FishPondData.xnb, which can be unpacked for editing. Here's the raw data as of 1.5.1 for reference.
Data |
---|
[
{
"RequiredTags": [
"item_lionfish"
],
"SpawnTime": -1,
"ProducedItems": [
{
"RequiredPopulation": 9,
"Chance": 0.02,
"ItemID": 857,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 7,
"Chance": 0.2,
"ItemID": 831,
"MinQuantity": 2,
"MaxQuantity": 5
},
{
"RequiredPopulation": 4,
"Chance": 0.1,
"ItemID": 831,
"MinQuantity": 2,
"MaxQuantity": 5
},
{
"RequiredPopulation": 1,
"Chance": 1.0,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
}
],
"PopulationGates": {
"4": [
"829 3",
"832 1"
],
"6": [
"834 1"
]
}
},
{
"RequiredTags": [
"item_blue_discus"
],
"SpawnTime": -1,
"ProducedItems": [
{
"RequiredPopulation": 9,
"Chance": 0.1,
"ItemID": 91,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 9,
"Chance": 0.05,
"ItemID": 791,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 7,
"Chance": 0.05,
"ItemID": 91,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 4,
"Chance": 0.02,
"ItemID": 91,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 1,
"Chance": 1.0,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
}
],
"PopulationGates": {
"4": [
"830 3"
],
"6": [
"830 10"
]
}
},
{
"RequiredTags": [
"item_stingray"
],
"SpawnTime": -1,
"ProducedItems": [
{
"RequiredPopulation": 9,
"Chance": 0.1,
"ItemID": 787,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 9,
"Chance": 0.06,
"ItemID": 852,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 7,
"Chance": 0.1,
"ItemID": 848,
"MinQuantity": 2,
"MaxQuantity": 5
},
{
"RequiredPopulation": 4,
"Chance": 0.05,
"ItemID": 851,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 5,
"Chance": 1.0,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 1,
"Chance": 0.8,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
}
],
"PopulationGates": {
"4": [
"848 7"
],
"6": [
"852 1"
]
}
},
{
"RequiredTags": [
"item_squid"
],
"SpawnTime": 3,
"ProducedItems": [
{
"RequiredPopulation": 7,
"Chance": 1.0,
"ItemID": 814,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 5,
"Chance": 0.6,
"ItemID": 814,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 3,
"Chance": 0.45,
"ItemID": 814,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 0,
"Chance": 0.25,
"ItemID": 814,
"MinQuantity": 1,
"MaxQuantity": 1
}
],
"PopulationGates": {
"4": [
"393 3",
"397 1"
],
"6": [
"131 2"
]
}
},
{
"RequiredTags": [
"item_midnight_squid"
],
"SpawnTime": 3,
"ProducedItems": [
{
"RequiredPopulation": 10,
"Chance": 0.25,
"ItemID": 814,
"MinQuantity": 2,
"MaxQuantity": 2
},
{
"RequiredPopulation": 7,
"Chance": 0.8,
"ItemID": 814,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 5,
"Chance": 0.6,
"ItemID": 814,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 3,
"Chance": 0.45,
"ItemID": 814,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 0,
"Chance": 0.2,
"ItemID": 814,
"MinQuantity": 1,
"MaxQuantity": 1
}
],
"PopulationGates": {
"4": [
"393 3",
"397 2"
],
"6": [
"131 2"
],
"9": [
"560"
]
}
},
{
"RequiredTags": [
"item_carp"
],
"SpawnTime": 1,
"ProducedItems": [
{
"RequiredPopulation": 0,
"Chance": 1.0,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
}
],
"PopulationGates": {
"4": [
"153 2"
],
"6": [
"78 2"
]
}
},
{
"RequiredTags": [
"item_herring"
],
"SpawnTime": 1,
"ProducedItems": [
{
"RequiredPopulation": 0,
"Chance": 1.0,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
}
],
"PopulationGates": {
"4": [
"169 3"
],
"6": [
"393"
]
}
},
{
"RequiredTags": [
"item_sunfish"
],
"SpawnTime": 1,
"ProducedItems": [
{
"RequiredPopulation": 10,
"Chance": 0.08,
"ItemID": 768,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 0,
"Chance": 0.9,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
}
],
"PopulationGates": {
"4": [
"535 2",
"309 2"
],
"6": [
"66",
"770 3"
]
}
},
{
"RequiredTags": [
"item_blobfish"
],
"SpawnTime": 4,
"ProducedItems": [
{
"RequiredPopulation": 9,
"Chance": 0.02,
"ItemID": 797,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 9,
"Chance": 0.02,
"ItemID": 688,
"MinQuantity": 5,
"MaxQuantity": 5
},
{
"RequiredPopulation": 6,
"Chance": 1.0,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 2
},
{
"RequiredPopulation": 0,
"Chance": 0.9,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
}
],
"PopulationGates": {
"2": [
"393 3",
"397 2",
"84 2"
],
"4": [
"306",
"433 5",
"206"
],
"6": [
"348",
"614",
"223"
],
"8": [
"232",
"394"
]
}
},
{
"RequiredTags": [
"item_lava_eel"
],
"SpawnTime": -1,
"ProducedItems": [
{
"RequiredPopulation": 10,
"Chance": 0.033,
"ItemID": 537,
"MinQuantity": 10,
"MaxQuantity": 10
},
{
"RequiredPopulation": 9,
"Chance": 0.02,
"ItemID": 537,
"MinQuantity": 5,
"MaxQuantity": 5
},
{
"RequiredPopulation": 9,
"Chance": 0.04,
"ItemID": 226,
"MinQuantity": 5,
"MaxQuantity": 5
},
{
"RequiredPopulation": 9,
"Chance": 0.033,
"ItemID": 812,
"MinQuantity": 3,
"MaxQuantity": 3
},
{
"RequiredPopulation": 9,
"Chance": 0.15,
"ItemID": 812,
"MinQuantity": 2,
"MaxQuantity": 2
},
{
"RequiredPopulation": 3,
"Chance": 0.1,
"ItemID": 384,
"MinQuantity": 5,
"MaxQuantity": 5
},
{
"RequiredPopulation": 6,
"Chance": 1.0,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 0,
"Chance": 0.8,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
}
],
"PopulationGates": {
"2": [
"82 3"
],
"4": [
"98",
"570",
"72 2"
],
"6": [
"288 2"
],
"8": [
"337"
]
}
},
{
"RequiredTags": [
"item_woodskip"
],
"SpawnTime": -1,
"ProducedItems": [
{
"RequiredPopulation": 9,
"Chance": 0.05,
"ItemID": 309,
"MinQuantity": 1,
"MaxQuantity": 5
},
{
"RequiredPopulation": 9,
"Chance": 0.05,
"ItemID": 310,
"MinQuantity": 1,
"MaxQuantity": 5
},
{
"RequiredPopulation": 9,
"Chance": 0.05,
"ItemID": 311,
"MinQuantity": 1,
"MaxQuantity": 5
},
{
"RequiredPopulation": 8,
"Chance": 0.08,
"ItemID": 388,
"MinQuantity": 5,
"MaxQuantity": 10
},
{
"RequiredPopulation": 6,
"Chance": 0.1,
"ItemID": 709,
"MinQuantity": 5,
"MaxQuantity": 5
},
{
"RequiredPopulation": 0,
"Chance": 0.66,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 0,
"Chance": 0.66,
"ItemID": 388,
"MinQuantity": 1,
"MaxQuantity": 5
}
],
"PopulationGates": {
"2": [
"709 10"
],
"4": [
"404 2 3",
"420 2 3"
],
"6": [
"725",
"726"
],
"8": [
"70 2",
"815"
]
}
},
{
"RequiredTags": [
"item_tiger_trout"
],
"SpawnTime": 999999,
"ProducedItems": [
{
"RequiredPopulation": 10,
"Chance": 0.8,
"ItemID": 812,
"MinQuantity": 2,
"MaxQuantity": 2
},
{
"RequiredPopulation": 5,
"Chance": 0.4,
"ItemID": 812,
"MinQuantity": 2,
"MaxQuantity": 2
},
{
"RequiredPopulation": 0,
"Chance": 1.0,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
}
],
"PopulationGates": null
},
{
"RequiredTags": [
"fish_desert"
],
"SpawnTime": 4,
"ProducedItems": [
{
"RequiredPopulation": 10,
"Chance": 0.05,
"ItemID": 802,
"MinQuantity": 2,
"MaxQuantity": 5
},
{
"RequiredPopulation": 10,
"Chance": 0.25,
"ItemID": 812,
"MinQuantity": 3,
"MaxQuantity": 3
},
{
"RequiredPopulation": 8,
"Chance": 0.5,
"ItemID": 812,
"MinQuantity": 2,
"MaxQuantity": 2
},
{
"RequiredPopulation": 0,
"Chance": 0.75,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
}
],
"PopulationGates": {
"4": [
"88 3",
"90 3"
],
"6": [
"125"
]
}
},
{
"RequiredTags": [
"item_void_salmon"
],
"SpawnTime": -1,
"ProducedItems": [
{
"RequiredPopulation": 9,
"Chance": 0.05,
"ItemID": 305,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 8,
"Chance": 0.08,
"ItemID": 769,
"MinQuantity": 5,
"MaxQuantity": 10
},
{
"RequiredPopulation": 9,
"Chance": 0.83,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 3
},
{
"RequiredPopulation": 0,
"Chance": 1.0,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
}
],
"PopulationGates": {
"2": [
"769 5"
],
"4": [
"767 10"
],
"6": [
"305",
"72"
],
"8": [
"386"
]
}
},
{
"RequiredTags": [
"item_slimejack"
],
"SpawnTime": -1,
"ProducedItems": [
{
"RequiredPopulation": 9,
"Chance": 0.02,
"ItemID": 680,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 9,
"Chance": 0.075,
"ItemID": 766,
"MinQuantity": 50,
"MaxQuantity": 50
},
{
"RequiredPopulation": 9,
"Chance": 0.12,
"ItemID": 766,
"MinQuantity": 30,
"MaxQuantity": 30
},
{
"RequiredPopulation": 9,
"Chance": 0.2,
"ItemID": 766,
"MinQuantity": 10,
"MaxQuantity": 10
},
{
"RequiredPopulation": 3,
"Chance": 0.1,
"ItemID": 153,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 0,
"Chance": 0.8,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
}
],
"PopulationGates": {
"2": [
"766 20"
],
"4": [
"684 10"
],
"6": [
"774 5",
"456"
],
"8": [
"557"
]
}
},
{
"RequiredTags": [
"item_stonefish"
],
"SpawnTime": -1,
"ProducedItems": [
{
"RequiredPopulation": 9,
"Chance": 0.05,
"ItemID": 535,
"MinQuantity": 5,
"MaxQuantity": 5
},
{
"RequiredPopulation": 9,
"Chance": 0.075,
"ItemID": 390,
"MinQuantity": 30,
"MaxQuantity": 30
},
{
"RequiredPopulation": 9,
"Chance": 0.12,
"ItemID": 535,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 9,
"Chance": 0.01,
"ItemID": 72,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 3,
"Chance": 0.1,
"ItemID": 378,
"MinQuantity": 5,
"MaxQuantity": 5
},
{
"RequiredPopulation": 9,
"Chance": 0.5,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 0,
"Chance": 0.25,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
}
],
"PopulationGates": {
"2": [
"378 10"
],
"4": [
"86 5"
],
"6": [
"382 10",
"535 5"
],
"8": [
"334 4",
"338 5"
]
}
},
{
"RequiredTags": [
"item_ice_pip"
],
"SpawnTime": -1,
"ProducedItems": [
{
"RequiredPopulation": 9,
"Chance": 0.05,
"ItemID": 536,
"MinQuantity": 5,
"MaxQuantity": 5
},
{
"RequiredPopulation": 9,
"Chance": 0.075,
"ItemID": 84,
"MinQuantity": 5,
"MaxQuantity": 5
},
{
"RequiredPopulation": 9,
"Chance": 0.12,
"ItemID": 536,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 9,
"Chance": 0.01,
"ItemID": 72,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 3,
"Chance": 0.1,
"ItemID": 380,
"MinQuantity": 5,
"MaxQuantity": 5
},
{
"RequiredPopulation": 9,
"Chance": 0.5,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 0,
"Chance": 0.25,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
}
],
"PopulationGates": {
"2": [
"380 10"
],
"4": [
"84 5"
],
"6": [
"382 10",
"536 5",
"414"
],
"8": [
"335 4",
"338 10"
]
}
},
{
"RequiredTags": [
"item_ghostfish"
],
"SpawnTime": -1,
"ProducedItems": [
{
"RequiredPopulation": 9,
"Chance": 0.05,
"ItemID": 157,
"MinQuantity": 5,
"MaxQuantity": 5
},
{
"RequiredPopulation": 9,
"Chance": 0.02,
"ItemID": 457,
"MinQuantity": 3,
"MaxQuantity": 3
},
{
"RequiredPopulation": 9,
"Chance": 0.12,
"ItemID": 80,
"MinQuantity": 3,
"MaxQuantity": 3
},
{
"RequiredPopulation": 9,
"Chance": 0.05,
"ItemID": 338,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 3,
"Chance": 0.08,
"ItemID": 80,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 0,
"Chance": 1.0,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
}
],
"PopulationGates": {
"2": [
"80 5"
],
"4": [
"78 5"
],
"6": [
"157 5"
],
"8": [
"96",
"97",
"338 2"
]
}
},
{
"RequiredTags": [
"item_sturgeon"
],
"SpawnTime": -1,
"ProducedItems": [
{
"RequiredPopulation": 10,
"Chance": 0.25,
"ItemID": 812,
"MinQuantity": 2,
"MaxQuantity": 2
},
{
"RequiredPopulation": 10,
"Chance": 1.0,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 9,
"Chance": 0.8,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 6,
"Chance": 0.6,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 3,
"Chance": 0.4,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 0,
"Chance": 0.2,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
}
],
"PopulationGates": {
"2": [
"72"
],
"4": [
"724 2",
"342",
"344"
],
"6": [
"749 3"
],
"8": [
"392"
]
}
},
{
"RequiredTags": [
"item_super_cucumber"
],
"SpawnTime": -1,
"ProducedItems": [
{
"RequiredPopulation": 9,
"Chance": 0.05,
"ItemID": 386,
"MinQuantity": 1,
"MaxQuantity": 3
},
{
"RequiredPopulation": 9,
"Chance": 0.05,
"ItemID": 66,
"MinQuantity": 1,
"MaxQuantity": 3
},
{
"RequiredPopulation": 0,
"Chance": 1.0,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
}
],
"PopulationGates": {
"4": [
"338 3",
"340",
"393 3",
"723"
],
"6": [
"422 2 3",
"60 2",
"749 2 3",
"116"
],
"8": [
"342",
"336 3",
"344",
"386",
"72"
]
}
},
{
"RequiredTags": [
"item_octopus"
],
"SpawnTime": -1,
"ProducedItems": [
{
"RequiredPopulation": 9,
"Chance": 0.066,
"ItemID": 749,
"MinQuantity": 3,
"MaxQuantity": 3
},
{
"RequiredPopulation": 9,
"Chance": 0.01,
"ItemID": 749,
"MinQuantity": 10,
"MaxQuantity": 10
},
{
"RequiredPopulation": 9,
"Chance": 0.1,
"ItemID": 749,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 0,
"Chance": 1.0,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
}
],
"PopulationGates": {
"4": [
"338 3",
"340",
"393 3",
"723"
],
"6": [
"422 2 3",
"60 2",
"749 2 3",
"116"
],
"8": [
"614"
]
}
},
{
"RequiredTags": [
"item_rainbow_trout"
],
"SpawnTime": -1,
"ProducedItems": [
{
"RequiredPopulation": 9,
"Chance": 0.02,
"ItemID": 394,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 9,
"Chance": 0.001,
"ItemID": 74,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 0,
"Chance": 1.0,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
}
],
"PopulationGates": {
"4": [
"338 3",
"340",
"393 3",
"723"
],
"6": [
"422 2 3",
"60 2",
"749 2 3",
"116"
],
"8": [
"342",
"336 3",
"344",
"386",
"72"
]
}
},
{
"RequiredTags": [
"fish_semi_rare"
],
"SpawnTime": -1,
"ProducedItems": [
{
"RequiredPopulation": 9,
"Chance": 0.003,
"ItemID": 166,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 0,
"Chance": 1.0,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
}
],
"PopulationGates": {
"4": [
"338 3",
"335 3",
"393 3",
"420 3",
"723",
"66 3"
],
"6": [
"422 2 3",
"569",
"60 2",
"749 2 3",
"116"
],
"8": [
"342",
"336 3",
"306",
"386",
"72"
]
}
},
{
"RequiredTags": [
"item_catfish"
],
"SpawnTime": -1,
"ProducedItems": [
{
"RequiredPopulation": 0,
"Chance": 1.0,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
}
],
"PopulationGates": {
"4": [
"334 3",
"420 3",
"66 2",
"68 2"
],
"6": [
"422 2 3",
"767 10",
"86 2",
"770 5"
],
"8": [
"342",
"335 3",
"306",
"72"
]
}
},
{
"RequiredTags": [
"fish_carnivorous"
],
"SpawnTime": -1,
"ProducedItems": [
{
"RequiredPopulation": 9,
"Chance": 0.05,
"ItemID": 684,
"MinQuantity": 20,
"MaxQuantity": 20
},
{
"RequiredPopulation": 0,
"Chance": 1.0,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
}
],
"PopulationGates": {
"4": [
"142 2",
"132 2",
"702 2"
],
"6": [
"136 2",
"700 2"
],
"8": [
"734 2",
"164 2",
"156 2"
]
}
},
{
"RequiredTags": [
"item_coral"
],
"SpawnTime": 2,
"ProducedItems": [
{
"RequiredPopulation": 9,
"Chance": 0.06,
"ItemID": 543,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 9,
"Chance": 0.06,
"ItemID": 571,
"MinQuantity": 1,
"MaxQuantity": 1
}
],
"PopulationGates": null
},
{
"RequiredTags": [
"item_sea_urchin"
],
"SpawnTime": 4,
"ProducedItems": [
{
"RequiredPopulation": 9,
"Chance": 0.02,
"ItemID": 812,
"MinQuantity": 5,
"MaxQuantity": 5
},
{
"RequiredPopulation": 9,
"Chance": 0.33,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 5,
"Chance": 0.2,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 0,
"Chance": 0.1,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
}
],
"PopulationGates": null
},
{
"RequiredTags": [
"fish_freshwater",
"fish_crab_pot"
],
"SpawnTime": -1,
"ProducedItems": [
{
"RequiredPopulation": 9,
"Chance": 0.075,
"ItemID": 689,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 0,
"Chance": 0.05,
"ItemID": 153,
"MinQuantity": 1,
"MaxQuantity": 3
},
{
"RequiredPopulation": 5,
"Chance": 0.05,
"ItemID": 770,
"MinQuantity": 2,
"MaxQuantity": 3
},
{
"RequiredPopulation": 0,
"Chance": 0.05,
"ItemID": 168,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 0,
"Chance": 0.05,
"ItemID": 169,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 0,
"Chance": 0.05,
"ItemID": 170,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 0,
"Chance": 0.05,
"ItemID": 171,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 0,
"Chance": 0.05,
"ItemID": 172,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 0,
"Chance": 0.05,
"ItemID": 168,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 0,
"Chance": 0.2,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
}
],
"PopulationGates": {
"4": [
"330 5",
"771 15"
],
"6": [
"709 5",
"78",
"684 10"
],
"8": [
"768 5",
"774",
"403"
]
}
},
{
"RequiredTags": [
"fish_ocean",
"fish_crab_pot"
],
"SpawnTime": -1,
"ProducedItems": [
{
"RequiredPopulation": 9,
"Chance": 0.02,
"ItemID": 392,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 9,
"Chance": 0.075,
"ItemID": 690,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 0,
"Chance": 0.088,
"ItemID": 152,
"MinQuantity": 1,
"MaxQuantity": 3
},
{
"RequiredPopulation": 5,
"Chance": 0.05,
"ItemID": 397,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 5,
"Chance": 0.075,
"ItemID": 393,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 0,
"Chance": 0.05,
"ItemID": 168,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 0,
"Chance": 0.05,
"ItemID": 169,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 0,
"Chance": 0.05,
"ItemID": 170,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 0,
"Chance": 0.05,
"ItemID": 171,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 0,
"Chance": 0.05,
"ItemID": 172,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 0,
"Chance": 0.05,
"ItemID": 168,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 0,
"Chance": 0.2,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
}
],
"PopulationGates": {
"4": [
"330 5"
],
"6": [
"80 5",
"684 10"
],
"8": [
"768 5",
"774",
"397"
]
}
},
{
"RequiredTags": [
"fish_ocean"
],
"SpawnTime": -1,
"ProducedItems": [
{
"RequiredPopulation": 5,
"Chance": 1.0,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 0,
"Chance": 0.7,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
}
],
"PopulationGates": {
"4": [
"536",
"152 1 2",
"169 3"
],
"6": [
"393 2",
"372 2"
],
"8": [
"397 2",
"62 2",
"719"
]
}
},
{
"RequiredTags": [
"fish_river"
],
"SpawnTime": -1,
"ProducedItems": [
{
"RequiredPopulation": 0,
"Chance": 0.9,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
}
],
"PopulationGates": {
"4": [
"309 3",
"310 3",
"311 3",
"684 10"
],
"6": [
"384 3",
"724",
"770 5"
],
"8": [
"70 2",
"340",
"716",
"722"
]
}
},
{
"RequiredTags": [
"fish_lake"
],
"SpawnTime": -1,
"ProducedItems": [
{
"RequiredPopulation": 0,
"Chance": 0.9,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
}
],
"PopulationGates": {
"4": [
"153 2 3",
"330 2 3",
"766 5",
"684 10"
],
"6": [
"86 1 2",
"404 2 3",
"571"
],
"8": [
"574",
"721",
"774 5"
]
}
},
{
"RequiredTags": [
"category_fish"
],
"SpawnTime": -1,
"ProducedItems": [
{
"RequiredPopulation": 5,
"Chance": 0.8,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
},
{
"RequiredPopulation": 0,
"Chance": 0.8,
"ItemID": 812,
"MinQuantity": 1,
"MaxQuantity": 1
}
],
"PopulationGates": {
"4": [
"685"
],
"6": [
"774"
]
}
}
]
|
Format
The fish pond data in Data/FishPondData consists of a list of elements with these fields.
field | purpose | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Id | The unique string ID for this entry. | ||||||||||||
RequiredTags | The context tags for fish which should use this entry. A tag can be prefixed with ! to require that the fish not have that tag.
For example, The first matching entry based on the Precedence field is used. If no other entries match, Data/FishPondData has a default entry with the required tags | ||||||||||||
ProducedItems | The items that can be produced by the selected fish.
When a fish pond is ready to produce output (based on a hardcoded This consists of a list of models with these fields:
| ||||||||||||
PopulationGates | The rules which decide when the fish pond population can grow (up to a hardcoded limit of 10 fish), and the quests that must be completed to do so. If omitted, the population can grow to 10 fish with no quests.
This consists of a number → item IDs lookup, where:
For example, consider this population gate: "6": [ "422 2 3", "60 2", "749 2 3", "116" ]
This means that before the population grows to 6, the fish will randomly ask for one of these:
| ||||||||||||
Precedence | (Optional) The order in which this entry should be checked, where 0 is the default value used by most entries. Entries with the same precedence are checked in the order listed. Default 0. | ||||||||||||
SpawnTime | (Optional) The number of days needed to raise the population by one if there's enough room in the fish pond.
If omitted, the game chooses a value based on the base fish price: 1 day (0–30g), 2 days (31–80g), 3 days (81–120g), 4 days (121–250g), or 5 days (250g+). |