Как поменять пещеру на ферме с фруктовой на грибную, с грибной на фруктовую, или сделать её двойной.
Введение
Когда вы заработаете 25 000 з. за всю игру, к вам на ферму зайдет Деметриус. Он сообщит, что хочет использовать пещеру на вашей ферме для изучения местных видов. Он сможет оборудовать пещеру для фруктоядных летучих мышей (который будут иногда оставлять внутри фрукты) или для грибов, право выбора он предоставит вам.
Этот выбор окончателен, и решение уже нельзя будет поменять.
Поменять свой выбор можно путём редактирования файла сохранения.
Основная часть
Первое что нужно сделать это найти нужный вам файл сохранения.
Нажмите комбинацию клавиш "Win+R", введите
%appdata%\stardewvalley\saves и выберите папку сохранения с названием вашей фермы
ПЕРЕД ЛЮБЫМИ МАНИПУЛЯЦИЯМИ С ФАЙЛАМИ, ДЕЛАЙТЕ РЕЗЕРВНУЮ КОПИЮ
Откройте файл любым текстовым редактором и введите в поиске (Ctrl+F)
<
GameLocation xsi:type="FarmCave">
Если у вас выбрана фруктовая ферма, код будет выглядеть примерно так:
Код упорядочен для простоты понимания, хоть оригинально он выглядит сплошным текстом, упорядоченный код никак не мешает игре
Грибная ферма выглядит идентично, за исключением огромной колонки текста в категории <
objects>
Замена с Грибов на Фрукты в Stardew Valley
Для замены грибной фермы на фруктовую, нужно удалить всю информацию о грибных делянках которые находятся в категории <
objects>
а также заменить <
objects></
objects> на <
objects />
И последнее, найти в файле <
caveChoice> и заменить переменную на 1
Если вы всё сделали правильно, то грибные делянки исчезнут, задний фон слегка покраснеет и в темноте начнут моргать красные глаза летучих мышей. Первые фрукты появятся через 1-2 дня.
Замена с Фруктов на Грибы в Stardew Valley
Ну а здесь делаем всё то-же самое, только наоборот.
Ищем в поиске <
GameLocation xsi:type="FarmCave">
"Раскрываем" категорию <
objects /> заменой на <
objects></
objects>
И между открывающей и закрывающей objects вставляем код для грибных делянок
<item><key><Vector2><X>4</X><Y>5</Y></Vector2></key>
<value><Object><isLostItem>false</isLostItem><category>-9</category>
<hasBeenInInventory>false</hasBeenInInventory><name>Mushroom Box</name>
<parentSheetIndex>128</parentSheetIndex><specialItem>false</specialItem>
<SpecialVariable>0</SpecialVariable>
<DisplayName>Mushroom Box</DisplayName>
<Name>Mushroom Box</Name><Stack>1</Stack>
<tileLocation><X>4</X><Y>5</Y></tileLocation>
<owner>0</owner><type>Crafting</type><canBeSetDown>true</canBeSetDown>
<canBeGrabbed>true</canBeGrabbed>
<isHoedirt>false</isHoedirt><isSpawnedObject>false</isSpawnedObject>
<questItem>false</questItem><questId>0</questId><isOn>true</isOn>
<fragility>2</fragility><price>0</price><edibility>-300</edibility>
<stack>1</stack><quality>0</quality><bigCraftable>true</bigCraftable>
<setOutdoors>true</setOutdoors><setIndoors>true</setIndoors>
<readyForHarvest>false</readyForHarvest><showNextIndex>false</showNextIndex>
<flipped>false</flipped><hasBeenPickedUpByFarmer>false</hasBeenPickedUpByFarmer>
<isRecipe>false</isRecipe><isLamp>false</isLamp><minutesUntilReady>0</minutesUntilReady>
<boundingBox><X>256</X><Y>320</Y><Width>64</Width><Height>64</Height>
<Location><X>256</X><Y>320</Y></Location></boundingBox><scale><X>0</X><Y>0</Y></scale>
<uses>0</uses><preservedParentSheetIndex>0</preservedParentSheetIndex>
<destroyOvernight>false</destroyOvernight></Object></value></item>
<item><key><Vector2><X>6</X><Y>5</Y></Vector2></key>
<value><Object><isLostItem>false</isLostItem><category>-9</category>
<hasBeenInInventory>false</hasBeenInInventory><name>Mushroom Box</name>
<parentSheetIndex>128</parentSheetIndex><specialItem>false</specialItem>
<SpecialVariable>0</SpecialVariable><DisplayName>Mushroom Box</DisplayName>
<Name>Mushroom Box</Name><Stack>1</Stack><tileLocation><X>6</X><Y>5</Y></tileLocation>
<owner>0</owner><type>Crafting</type><canBeSetDown>true</canBeSetDown><canBeGrabbed>true</canBeGrabbed>
<isHoedirt>false</isHoedirt><isSpawnedObject>false</isSpawnedObject><questItem>false</questItem>
<questId>0</questId><isOn>true</isOn><fragility>2</fragility><price>0</price><edibility>-300</edibility>
<stack>1</stack><quality>0</quality><bigCraftable>true</bigCraftable>
<setOutdoors>true</setOutdoors><setIndoors>true</setIndoors>
<readyForHarvest>false</readyForHarvest><showNextIndex>false</showNextIndex>
<flipped>false</flipped><hasBeenPickedUpByFarmer>false</hasBeenPickedUpByFarmer>
<isRecipe>false</isRecipe><isLamp>false</isLamp><minutesUntilReady>0</minutesUntilReady>
<boundingBox><X>384</X><Y>320</Y><Width>64</Width><Height>64</Height>
<Location><X>384</X><Y>320</Y></Location></boundingBox><scale><X>0</X><Y>0</Y></scale>
<uses>0</uses><preservedParentSheetIndex>0</preservedParentSheetIndex>
<destroyOvernight>false</destroyOvernight></Object></value></item>
<item><key><Vector2><X>8</X><Y>5</Y></Vector2></key><value><Object>
<isLostItem>false</isLostItem><category>-9</category>
<hasBeenInInventory>false</hasBeenInInventory>
<name>Mushroom Box</name><parentSheetIndex>128</parentSheetIndex>
<specialItem>false</specialItem>
<SpecialVariable>0</SpecialVariable><DisplayName>Mushroom Box</DisplayName>
<Name>Mushroom Box</Name><Stack>1</Stack><tileLocation><X>8</X><Y>5</Y></tileLocation>
<owner>0</owner>
<type>Crafting</type><canBeSetDown>true</canBeSetDown>
<canBeGrabbed>true</canBeGrabbed><isHoedirt>false</isHoedirt>
<isSpawnedObject>false</isSpawnedObject><questItem>false</questItem><questId>0</questId><isOn>true</isOn>
<fragility>2</fragility><price>0</price><edibility>-300</edibility><stack>1</stack><quality>0</quality>
<bigCraftable>true</bigCraftable><setOutdoors>true</setOutdoors><setIndoors>true</setIndoors>
<readyForHarvest>false</readyForHarvest>
<showNextIndex>false</showNextIndex><flipped>false</flipped>
<hasBeenPickedUpByFarmer>false</hasBeenPickedUpByFarmer><isRecipe>false</isRecipe>
<isLamp>false</isLamp><minutesUntilReady>0</minutesUntilReady>
<boundingBox><X>512</X><Y>320</Y><Width>64</Width><Height>64</Height>
<Location><X>512</X><Y>320</Y></Location></boundingBox><scale><X>0</X><Y>0</Y></scale><uses>0</uses>
<preservedParentSheetIndex>0</preservedParentSheetIndex>
<destroyOvernight>false</destroyOvernight></Object></value></item>
<item><key><Vector2><X>4</X><Y>7</Y></Vector2></key>
<value><Object><isLostItem>false</isLostItem><category>-9</category>
<hasBeenInInventory>false</hasBeenInInventory><name>Mushroom Box</name><parentSheetIndex>128</parentSheetIndex>
<specialItem>false</specialItem><SpecialVariable>0</SpecialVariable><DisplayName>Mushroom Box</DisplayName>
<Name>Mushroom Box</Name><Stack>1</Stack><tileLocation><X>4</X><Y>7</Y></tileLocation><owner>0</owner>
<type>Crafting</type><canBeSetDown>true</canBeSetDown><canBeGrabbed>true</canBeGrabbed>
<isHoedirt>false</isHoedirt><isSpawnedObject>false</isSpawnedObject><questItem>false</questItem>
<questId>0</questId><isOn>true</isOn><fragility>2</fragility><price>0</price><edibility>-300</edibility>
<stack>1</stack><quality>0</quality><bigCraftable>true</bigCraftable><setOutdoors>true</setOutdoors>
<setIndoors>true</setIndoors><readyForHarvest>false</readyForHarvest><showNextIndex>false</showNextIndex>
<flipped>false</flipped><hasBeenPickedUpByFarmer>false</hasBeenPickedUpByFarmer><isRecipe>false</isRecipe>
<isLamp>false</isLamp><minutesUntilReady>0</minutesUntilReady><boundingBox><X>256</X><Y>448</Y><Width>64</Width>
<Height>64</Height><Location><X>256</X><Y>448</Y></Location></boundingBox><scale><X>0</X><Y>0</Y></scale>
<uses>0</uses><preservedParentSheetIndex>0</preservedParentSheetIndex>
<destroyOvernight>false</destroyOvernight></Object></value></item>
<item><key><Vector2><X>6</X><Y>7</Y></Vector2></key>
<value><Object><isLostItem>false</isLostItem><category>-9</category>
<hasBeenInInventory>false</hasBeenInInventory><name>Mushroom Box</name><parentSheetIndex>128</parentSheetIndex>
<specialItem>false</specialItem><SpecialVariable>0</SpecialVariable><DisplayName>Mushroom Box</DisplayName>
<Name>Mushroom Box</Name><Stack>1</Stack><tileLocation><X>6</X><Y>7</Y></tileLocation>
<owner>0</owner><type>Crafting</type>
<canBeSetDown>true</canBeSetDown><canBeGrabbed>true</canBeGrabbed>
<isHoedirt>false</isHoedirt><isSpawnedObject>false</isSpawnedObject>
<questItem>false</questItem><questId>0</questId><isOn>true</isOn><fragility>2</fragility>
<price>0</price><edibility>-300</edibility><stack>1</stack><quality>0</quality>
<bigCraftable>true</bigCraftable>
<setOutdoors>true</setOutdoors><setIndoors>true</setIndoors><readyForHarvest>false</readyForHarvest>
<showNextIndex>false</showNextIndex><flipped>false</flipped>
<hasBeenPickedUpByFarmer>false</hasBeenPickedUpByFarmer><isRecipe>false</isRecipe><isLamp>false</isLamp>
<minutesUntilReady>0</minutesUntilReady><boundingBox><X>384</X><Y>448</Y><Width>64</Width><Height>64</Height>
<Location><X>384</X><Y>448</Y></Location></boundingBox><scale><X>0</X><Y>0</Y></scale><uses>0</uses>
<preservedParentSheetIndex>0</preservedParentSheetIndex><destroyOvernight>false</destroyOvernight></Object></value></item>
<item><key><Vector2><X>8</X><Y>7</Y></Vector2></key><value>
<Object><isLostItem>false</isLostItem><category>-9</category><hasBeenInInventory>false</hasBeenInInventory>
<name>Mushroom Box</name><parentSheetIndex>128</parentSheetIndex>
<specialItem>false</specialItem><SpecialVariable>0</SpecialVariable>
<DisplayName>Mushroom Box</DisplayName><Name>Mushroom Box</Name><Stack>1</Stack><tileLocation><X>8</X>
<Y>7</Y></tileLocation><owner>0</owner><type>Crafting</type>
<canBeSetDown>true</canBeSetDown><canBeGrabbed>true</canBeGrabbed>
<isHoedirt>false</isHoedirt><isSpawnedObject>false</isSpawnedObject><questItem>false</questItem><questId>0</questId>
<isOn>true</isOn><fragility>2</fragility><price>0</price><edibility>-300</edibility><stack>1</stack><quality>0</quality>
<bigCraftable>true</bigCraftable><setOutdoors>true</setOutdoors>
<setIndoors>true</setIndoors><readyForHarvest>false</readyForHarvest>
<showNextIndex>false</showNextIndex><flipped>false</flipped>
<hasBeenPickedUpByFarmer>false</hasBeenPickedUpByFarmer>
<isRecipe>false</isRecipe><isLamp>false</isLamp><minutesUntilReady>0</minutesUntilReady>
<boundingBox><X>512</X><Y>448</Y><Width>64</Width><Height>64</Height>
<Location><X>512</X><Y>448</Y></Location></boundingBox>
<scale><X>0</X><Y>0</Y></scale><uses>0</uses><preservedParentSheetIndex>0</preservedParentSheetIndex>
<destroyOvernight>false</destroyOvernight></Object></value></item>
Ну и не забываем про переменную <
caveChoice> которую заменяем на 2
<
caveChoice>2<
/caveChoice>
Появятся 6 грибных делянок, и на следующий день они начнут приносить грибы.
Фруктово-Грибная пещера
Фруктовая ферма очень удобна для завершения узелков в которых нужны фрукты и в качестве подарков для жителей.
Грибная ферма полезна для тех кто любит часто копаться в шахте, и эликсиры жизни из грибов будут очень кстати.
А что если я скажу, что можно сделать ферму и того и другого?
Проводя тесты, я обнаружил очень интересный момент.
- Грибные делянки работают независимо от переменной <caveChoice>, если они есть - они приносят грибы.
- Переменная <caveChoice> служит неким триггером для спавна фруктов

Ну тут и объяснять уже нечего, берете грибную ферму, меняете
<caveChoice> на 1 (фрукты) и получаете Фруктово-Грибную пещеру.
Вы не поверите, но пока я тестировал, я понял еще кое-что.
Когда я делал часть для грибной фермы, я подумал, а что код для делянки вообще означает. Ну а я человек простой, вижу код - разбираю его.


Можно считать это за "каркас" для остальных делянок, нужно лишь изменить несколько значений а именно:

Так, значения
<Vector2> и
<tileLocation> отвечают за расположение самой делянки на локации.
<boundingBox> и зависящая от него
<Location> отвечают за "пузырик" над делянкой показывающий готовность.
Особо наблюдательные могли также заметить значение
<heldObject> (47,48 строка), это информация и грибе, который "держит" эта делянка, она автоматически заполняется после того как игрок пропустит ночь.