diff --git a/Almanac/Almanac.csproj b/Almanac/Almanac.csproj
index 46c5492..62cfaed 100644
--- a/Almanac/Almanac.csproj
+++ b/Almanac/Almanac.csproj
@@ -7,6 +7,8 @@
true
true
+
+ Crafting;BCInventory;Inventory;GMCM;Mutex;Overlay;UI;SimpleLayout;Flow;SpookyAction;ThemeManager
diff --git a/Almanac/Crops/CropPage.cs b/Almanac/Crops/CropPage.cs
index 5efa34b..e9edbd7 100644
--- a/Almanac/Crops/CropPage.cs
+++ b/Almanac/Crops/CropPage.cs
@@ -263,7 +263,7 @@ public CropPage(AlmanacMenu menu, ModEntry mod) : base(menu, mod) {
rightNeighborID = ClickableComponent.SNAP_AUTOMATIC
};
tabSeedsSprite = Game1.random.Next(2 * AlmanacMenu.TABS.Length);
- spriteSeeds = SpriteHelper.GetSprite(InventoryHelper.CreateItemById("(O)495", 1));
+ spriteSeeds = SpriteHelper.GetSprite(ItemRegistry.Create("(O)495"));
// Cache Agriculturist status.
Agriculturist = Game1.player.professions.Contains(Farmer.agriculturist);
@@ -350,7 +350,7 @@ public override void Update() {
break;
}
- spriteSeeds = SpriteHelper.GetSprite(InventoryHelper.CreateItemById(seasonSeeds, 1));
+ spriteSeeds = SpriteHelper.GetSprite(ItemRegistry.Create(seasonSeeds));
LastDays = new List[ModEntry.DaysPerMonth];
diff --git a/Almanac/FishHelper.cs b/Almanac/FishHelper.cs
index 89546f7..044fc2e 100644
--- a/Almanac/FishHelper.cs
+++ b/Almanac/FishHelper.cs
@@ -122,7 +122,7 @@ public static Dictionary>> GetFishLoca
//Dictionary
Dictionary>> result = new();
//Dictionary
- var locations = Game1.content.Load>("Data\\Locations");
+ var locations = Game1.content.Load>(@"Data\Locations");
foreach (var lp in locations) {
if (SkipLocation(lp.Key))
@@ -164,7 +164,7 @@ public static Dictionary>> GetFishLoca
public static Dictionary> GetFishLocations(int season) {
Dictionary> result = new();
- var locations = Game1.content.Load>("Data\\Locations");
+ var locations = Game1.content.Load>(@"Data\Locations");
foreach (var lp in locations) {
if (SkipLocation(lp.Key))
continue;
@@ -197,7 +197,7 @@ public static Dictionary> GetLocationFish(string key, int s
if (key == "BeachNightMarket")
key = "Beach";
- locations ??= Game1.content.Load>("Data\\Locations");
+ locations ??= Game1.content.Load>(@"Data\Locations");
Dictionary> result;
GameLocation loc;
if (locations.ContainsKey(key) && ContainsFish(locations[key]))
@@ -262,7 +262,7 @@ public static Dictionary> GetLocationFish(string key, int s
}
}
try{
- GetLocationFish(season, locations[Game1.GetFarmTypeKey()], result);
+ GetLocationFish(season, locations[Game1.GetFarmTypeID()], result);
} catch {
ModEntry.Instance.Log($"Error at {getLocName(locations[Game1.GetFarmTypeKey()])}, farm key section.", LogLevel.Warn);
}
@@ -288,10 +288,10 @@ public static Dictionary> GetLocationFish(int season, Locat
if (data.Equals(null))
return existing;
- string name = getLocName(data);
+ string name = data.DisplayName;
List entries = data.Fish;
- if (!data.Equals(Game1.content.Load>("Data\\Locations")["Default"])) {
- LocationData Default = Game1.content.Load>("Data\\Locations")["Default"];
+ if (!data.Equals(DataLoader.Locations(Game1.content)["Default"])) {
+ LocationData Default = DataLoader.Locations(Game1.content)["Default"];
foreach (SpawnFishData f in Default.Fish)
if (!entries.Contains(f))
entries.Add(f);
@@ -316,8 +316,19 @@ public static bool ContainsFish(LocationData loc) {
return false;
}
private static string getLocName(LocationData data) {
- string name = data.DisplayName == null ? "No DisplayName" : data.DisplayName;
+ string name = data.DisplayName ?? "No DisplayName";
string endCheck = name.Substring(name.Length - 7);
+ switch (name) {
+ case "Farm_Standard":
+ case "Farm_Forest":
+ case "Farm_FourCorners":
+ case "Farm_Hilltop":
+ case "Farm_Riverland":
+ case "Farm_Wilderness":
+ case "Farm_Beach":
+ name = "Farm";
+ break;
+ }
switch (endCheck) {
case "Name]]]":
name = "Farm";
@@ -344,7 +355,7 @@ private static string getLocName(LocationData data) {
name = "Woods";
break;
}
- if (name.Length > 25) name = endCheck;
+ //if (name.Length > 25) name = endCheck;
return name;
}
private static bool canAddFish(SpawnFishData fish, int season, LocationData data) {
diff --git a/Almanac/Managers/LuckManager.cs b/Almanac/Managers/LuckManager.cs
index a2c67d4..9b3a43c 100644
--- a/Almanac/Managers/LuckManager.cs
+++ b/Almanac/Managers/LuckManager.cs
@@ -1,5 +1,5 @@
#nullable enable
-
+/*
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
@@ -229,7 +229,7 @@ public double GetModifiedLuckForDate(ulong seed, WorldDate date) {
#region Events
- public IRichEvent? HydrateEvent(LocalNotice notice, WorldDate date, Common.GameStateQuery.GameState state, string? key = null) {
+ public IRichEvent? HydrateEvent(LocalNotice notice, WorldDate date, GameStateQuery state, string? key = null) {
if (notice == null)
return null;
@@ -280,7 +280,7 @@ public double GetModifiedLuckForDate(ulong seed, WorldDate date) {
}
// Condition Validation
- if (!string.IsNullOrEmpty(notice.Condition) && !Common.GameStateQuery.CheckConditions(notice.Condition, state))
+ if (!string.IsNullOrEmpty(notice.Condition) && !GameStateQuery.CheckConditions(notice.Condition))
return null;
// Get icon
@@ -535,7 +535,7 @@ public IEnumerable GetEventsForDate(ulong seed, WorldDate date) {
I18n.Page_Fortune_Event_Ufo(),
null,
SpriteHelper.GetSprite(new SObject(Vector2.Zero, 96))
- );*/
+ );
return null;
}
@@ -605,3 +605,4 @@ public IEnumerable GetEventsForDate(ulong seed, WorldDate date) {
#endregion
}
+*/
diff --git a/Almanac/Managers/NoticesManager.cs b/Almanac/Managers/NoticesManager.cs
index d2c9b8e..c306c73 100644
--- a/Almanac/Managers/NoticesManager.cs
+++ b/Almanac/Managers/NoticesManager.cs
@@ -1,4 +1,4 @@
-#nullable enable
+/*#nullable enable
using System;
using System.Collections.Generic;
@@ -805,3 +805,4 @@ public static bool IsBooksellerVisiting(WorldDate date) {
#endregion
}
+*/
diff --git a/Almanac/Menus/BookCollectionMenu.cs b/Almanac/Menus/BookCollectionMenu.cs
index 3ee08f0..b57ccb8 100644
--- a/Almanac/Menus/BookCollectionMenu.cs
+++ b/Almanac/Menus/BookCollectionMenu.cs
@@ -101,7 +101,7 @@ private void DiscoverBooks() {
if (value == null || !value.Enable)
continue;
- bool locked = !string.IsNullOrEmpty(value.Condition) && !Common.GameStateQuery.CheckConditions(value.Condition);
+ bool locked = !string.IsNullOrEmpty(value.Condition) && !GameStateQuery.CheckConditions(value.Condition);
if (value.Secret && locked)
continue;
@@ -520,7 +520,7 @@ public override void draw(SpriteBatch b) {
if (LockedBooks[book])
continue;
- var sprite = SpriteHelper.GetSprite(InventoryHelper.CreateItemById($"(O){idx}", 1));
+ var sprite = SpriteHelper.GetSprite(ItemRegistry.Create($"(O){idx}"));
idx++;
float scale = cmp.scale - 1;
diff --git a/Almanac/ModAPI.cs b/Almanac/ModAPI.cs
index 0c552bf..29d198b 100644
--- a/Almanac/ModAPI.cs
+++ b/Almanac/ModAPI.cs
@@ -25,10 +25,10 @@ public interface IAlmanacAPI {
/// itself doesn't have the ability.
///
int DaysPerMonth { get; }
-
+ /*
#region Custom Pages
- /*void RegisterPage(
+ void RegisterPage(
IManifest manifest,
string id,
// State
@@ -74,9 +74,10 @@ public interface IAlmanacAPI {
Action, Action- > onCellHover = null
);
- void UnregisterPage(IManifest manifest, string id);*/
+ void UnregisterPage(IManifest manifest, string id);
#endregion
+ */
#region Crops Page
@@ -174,6 +175,7 @@ IReadOnlyCollection phaseSprites
#endregion
+ /*
#region Fortunes Page
///
@@ -289,6 +291,7 @@ IReadOnlyCollection phaseSprites
string GetWeatherForDate(WorldDate date, string context = "Default");
#endregion
+ */
}
public class ModAPI : IAlmanacAPI {
@@ -514,7 +517,7 @@ public List GetSeasonCrops(string season) {
}
#endregion
-
+ /*
#region Fortune Telling
public void SetFortuneHook(IManifest manifest, Func>> hook) {
@@ -530,7 +533,7 @@ public void ClearFortuneHook(IManifest manifest) {
}
#endregion
-
+
#region Local Notices
public void SetNoticesHook(IManifest manifest, Func>> hook) {
@@ -546,7 +549,7 @@ public void ClearNoticesHook(IManifest manifest) {
}
#endregion
-
+
#region Weather
public string GetWeatherForDate(WorldDate date, GameLocation location) {
@@ -587,6 +590,6 @@ public string GetWeatherForDate(WorldDate date, string context = "Default") {
}
#endregion
-
+ */
}
}
diff --git a/Almanac/ModEntry.cs b/Almanac/ModEntry.cs
index c2ab690..e0c147f 100644
--- a/Almanac/ModEntry.cs
+++ b/Almanac/ModEntry.cs
@@ -21,6 +21,7 @@
using StardewValley;
using StardewValley.Locations;
using StardewValley.Menus;
+using StardewValley.BellsAndWhistles;
using Leclair.Stardew.Almanac.Crops;
using Leclair.Stardew.Almanac.Fish;
@@ -62,9 +63,9 @@ public class ModEntry : ModSubscriber {
#nullable disable
public ModConfig Config;
- public WeatherManager Weather;
- public LuckManager Luck;
- public NoticesManager Notices;
+ //public WeatherManager Weather;
+ //public LuckManager Luck;
+ //public NoticesManager Notices;
internal CropManager Crops;
internal FishManager Fish;
internal BookManager Books;
@@ -100,8 +101,8 @@ public override void Entry(IModHelper helper) {
Harmony = new Harmony(ModManifest.UniqueID);
// Patches
- // Patches.GameMenu_Patches.Patch(this);
- Common_SpriteText_Patches.Patch(Harmony, Monitor);
+ Patches.GameMenu_Patches.Patch(this);
+ //Patches.Workbench_Patches.Patch(this);
Assets = new(this);
@@ -112,9 +113,9 @@ public override void Entry(IModHelper helper) {
Crops = new(this);
Fish = new(this);
- Weather = new(this);
- Luck = new(this);
- Notices = new(this);
+ //Weather = new(this);
+ //Luck = new(this);
+ //Notices = new(this);
Books = new(this);
ThemeManager = new(this, Config.Theme);
@@ -124,14 +125,14 @@ public override void Entry(IModHelper helper) {
// Init
RegisterBuilder(CoverPage.GetPage);
RegisterBuilder(CropPage.GetPage);
- RegisterBuilder(WeatherPage.GetPage);
- RegisterBuilder(WeatherPage.GetIslandPage);
+ //RegisterBuilder(WeatherPage.GetPage);
+ //RegisterBuilder(WeatherPage.GetIslandPage);
RegisterBuilder(TrainPage.GetPage);
- RegisterBuilder(FortunePage.GetPage);
+ //RegisterBuilder(FortunePage.GetPage);
RegisterBuilder(MinesPage.GetPage);
- RegisterBuilder(NoticesPage.GetPage);
+ //RegisterBuilder(NoticesPage.GetPage);
RegisterBuilder(FishingPage.GetPage);
- RegisterBuilder(DebugItemsPage.GetPage);
+ //RegisterBuilder(DebugItemsPage.GetPage);
}
public override object GetApi() {
@@ -264,7 +265,7 @@ private void OnButton(object? sender, ButtonPressedEventArgs e) {
[Subscriber]
[EventPriority(EventPriority.High)]
- private void OnDayStarted(object? sender, DayStartedEventArgs e) {
+ /*private void OnDayStarted(object? sender, DayStartedEventArgs e) {
ulong seed = GetBaseWorldSeed();
if (Config.EnableDeterministicLuck && Game1.IsMasterGame) {
@@ -289,15 +290,15 @@ private void OnDayStarted(object? sender, DayStartedEventArgs e) {
.GetWeatherForDate(seed, tomorrow, ctx, "Island");
}
}
- }
+ }*/
public void Invalidate() {
Assets.Invalidate();
Crops.Invalidate();
Fish.Invalidate();
- Luck.Invalidate();
- Notices.Invalidate();
- Weather.Invalidate();
+ //Luck.Invalidate();
+ //Notices.Invalidate();
+ //Weather.Invalidate();
}
[Subscriber]
@@ -323,7 +324,7 @@ private void OnGameLaunched(object? sender, GameLaunchedEventArgs e) {
string input = string.Join(' ', args);
Log($" Input: {input}");
- Log($"Result: {StringTokenizer.ParseString(input, item: Game1.player?.CurrentItem, monitor: Monitor, trace: true)}");
+ // Log($"Result: {StringTokenizer.ParseString(input, item: Game1.player?.CurrentItem, monitor: Monitor, trace: true)}");
});
Helper.ConsoleCommands.Add("al_gsq", "Run a GameStateQuery", (name, args) => {
@@ -343,7 +344,7 @@ private void OnGameLaunched(object? sender, GameLaunchedEventArgs e) {
Log($" Query: {query}");
if (seed != -1)
Log($" Seed: {seed}");
- Log($"Result: {Common.GameStateQuery.CheckConditions(query, rnd: rnd, item: Game1.player.CurrentItem, monitor: Monitor, trace: true)}");
+ //Log($"Result: {GameStateQuery.CheckConditions(query, rnd: rnd, item: Game1.player.CurrentItem, monitor: Monitor, trace: true)}");
});
Helper.ConsoleCommands.Add("al_update", "Invalidate cached data.", (name, args) => {
@@ -380,7 +381,7 @@ private void OnGameLaunched(object? sender, GameLaunchedEventArgs e) {
Log($"DaysPlayed: {Game1.stats.DaysPlayed}", LogLevel.Info);
});
- Helper.ConsoleCommands.Add("al_forecast", "Get the forecast for the loaded save.", (name, args) => {
+ /*Helper.ConsoleCommands.Add("al_forecast", "Get the forecast for the loaded save.", (name, args) => {
ulong seed = GetBaseWorldSeed();
WorldDate date = new(Game1.Date);
for (int i = 0; i < 4 * 28; i++) {
@@ -388,7 +389,7 @@ private void OnGameLaunched(object? sender, GameLaunchedEventArgs e) {
Log($"Date: {date.Localize()} -- Weather: {weather}");
date.TotalDays++;
}
- });
+ });*/
}
[Subscriber]
@@ -883,7 +884,7 @@ public ulong GetBaseWorldSeed() {
}
public bool DoesTranslationExist(string key) {
- return Helper.Translation.ContainsKey(key);
+ return Helper.Translation.Get(key).HasValue();
}
public string GetSubLocationName(Models.SubLocation sub) {
@@ -904,6 +905,8 @@ public string GetSubLocationName(Models.SubLocation sub) {
return I18n.Location_Forest_River();
if (sub.Area == "Pond")
return I18n.Location_Forest_Pond();
+ if (sub.Area == "Lake")
+ return I18n.Location_Forest_Lake();
break;
case "IslandWest":
@@ -912,6 +915,11 @@ public string GetSubLocationName(Models.SubLocation sub) {
if (sub.Area == "Freshwater")
return I18n.Location_Island_Freshwater();
break;
+
+ case "Desert":
+ if (sub.Area == "TopPond")
+ return I18n.Location_Desert_TopPond();
+ break;
}
return sub.Area.ToString();
@@ -1023,6 +1031,13 @@ public string GetSubLocationName(Models.SubLocation sub) {
case "Deluxe Barn":
case "Deluxe Coop":
case "Farm":
+ case "Farm_Standard":
+ case "Farm_Forest":
+ case "Farm_FourCorners":
+ case "Farm_Hilltop":
+ case "Farm_Riverland":
+ case "Farm_Wilderness":
+ case "Farm_Beach":
case "FarmCave":
case "FarmHouse":
case "Greenhouse":
diff --git a/Almanac/Pages/FortunePage.cs b/Almanac/Pages/FortunePage.cs
index 12f3c5c..5032602 100644
--- a/Almanac/Pages/FortunePage.cs
+++ b/Almanac/Pages/FortunePage.cs
@@ -1,3 +1,4 @@
+/*
#nullable enable
using System;
@@ -86,7 +87,7 @@ public override void Update() {
double luck = Mod.Luck.GetModifiedLuckForDate(Seed, date);
sprite = Sprites![day - 1] = Mod.Luck.GetLuckSprite(luck);
Luck![day - 1] = luck;
- } else
+ } else
sprite = null;
FlowBuilder db = new();
@@ -242,3 +243,4 @@ public void PerformCellHover(int x, int y, WorldDate date, Rectangle bounds) {
#endregion
}
+*/
diff --git a/Almanac/Pages/MinesPage.cs b/Almanac/Pages/MinesPage.cs
index a1c3a7d..de33107 100644
--- a/Almanac/Pages/MinesPage.cs
+++ b/Almanac/Pages/MinesPage.cs
@@ -40,15 +40,15 @@ public MinesPage(AlmanacMenu menu, ModEntry mod) : base(menu, mod) {
Sprites = new();
Sprites[LevelType.Mushroom] = SpriteHelper.GetSprite(
- InventoryHelper.CreateItemById("(O)420", 1) // Red Mushroom
+ ItemRegistry.Create("(O)420", 1) // Red Mushroom
);
Sprites[LevelType.InfestedMonster] = SpriteHelper.GetSprite(
- InventoryHelper.CreateItemById("(W)0", 1) // Rusty Sword
+ ItemRegistry.Create("(W)0", 1) // Rusty Sword
);
Sprites[LevelType.InfestedSlime] = SpriteHelper.GetSprite(
- InventoryHelper.CreateItemById("(O)766", 1) // Slime
+ ItemRegistry.Create("(O)766", 1) // Slime
);
Sprites[LevelType.Quarry] = new SpriteInfo(
@@ -62,7 +62,7 @@ public MinesPage(AlmanacMenu menu, ModEntry mod) : base(menu, mod) {
);
Sprites[LevelType.Dino] = SpriteHelper.GetSprite(
- InventoryHelper.CreateItemById("(O)107", 1) // Dino Egg
+ ItemRegistry.Create("(O)107", 1) // Dino Egg
);
Update();
diff --git a/Almanac/Pages/NoticesPage.cs b/Almanac/Pages/NoticesPage.cs
index 8510146..5c70ff4 100644
--- a/Almanac/Pages/NoticesPage.cs
+++ b/Almanac/Pages/NoticesPage.cs
@@ -1,3 +1,4 @@
+/*
#nullable enable
using System;
@@ -411,3 +412,4 @@ public void PerformCellHover(int x, int y, WorldDate date, Rectangle bounds) {
#endregion
}
+*/
diff --git a/Almanac/Pages/WeatherPage.cs b/Almanac/Pages/WeatherPage.cs
index e621c8e..42d7ca5 100644
--- a/Almanac/Pages/WeatherPage.cs
+++ b/Almanac/Pages/WeatherPage.cs
@@ -1,3 +1,4 @@
+/*
#nullable enable
using System;
@@ -214,7 +215,7 @@ public override void Update() {
}
builder.Text("\n\n");
- }*/
+ }
if (pirateDays!.Count > 0) {
string dates = string.Join(", ", pirateDays);
@@ -333,3 +334,4 @@ public void PerformCellHover(int x, int y, WorldDate date, Rectangle bounds) {
#endregion
}
+*/
diff --git a/Almanac/Patches/Game1_Patches.cs b/Almanac/Patches/Game1_Patches.cs
index 8830b35..55308c6 100644
--- a/Almanac/Patches/Game1_Patches.cs
+++ b/Almanac/Patches/Game1_Patches.cs
@@ -18,7 +18,7 @@ internal static class Game1_Patches {
internal static void Patch(ModEntry mod) {
Monitor = mod.Monitor;
-
+ /*
try {
mod.Harmony.Patch(
original: AccessTools.Method(typeof(Game1), nameof(Game1.UpdateWeatherForNewDay)),
@@ -27,9 +27,9 @@ internal static void Patch(ModEntry mod) {
} catch(Exception ex) {
mod.Log("An error occurred while registering a harmony patch for Game1.", LogLevel.Error, ex);
- }
+ }*/
}
-
+ /*
public static void UpdateWeatherForNewDay_Postfix() {
try {
ModEntry.Instance.Weather.UpdateForNewDay();
@@ -39,4 +39,5 @@ public static void UpdateWeatherForNewDay_Postfix() {
Monitor.Log($"Details:\n{ex}", LogLevel.Error);
}
}
+ */
}
diff --git a/Almanac/i18n/default.json b/Almanac/i18n/default.json
index 8887ac0..3b07ab6 100644
--- a/Almanac/i18n/default.json
+++ b/Almanac/i18n/default.json
@@ -351,27 +351,31 @@
"location.Forest.River": "River",
"location.Forest.Pond": "Pond",
+ "location.Forest.Lake": "Lake",
"location.Island.Ocean": "Ocean",
"location.Island.Freshwater": "Freshwater",
-
+ "Location.Desert.TopPond": "TopPond",
// Maps: Stardew Aquarium
"location.Custom_ExteriorMuseum": "Stardew Aquarium",
// Maps: Stardew Valley Expanded
"location.Custom_AdventurerSummit": "Adventurer Summit",
"location.Custom_BlueMoonVineyard": "Blue Moon Vineyard",
- "location.Custom_BlueMoonVineyard.0": "Ocean",
- "location.Custom_BlueMoonVineyard.1": "River",
+ "location.Custom_BlueMoonVineyard.Ocean": "Ocean",
+ "location.Custom_BlueMoonVineyard.River": "River",
"location.Custom_CrimsonBadlands": "Crimson Badlands",
"location.Custom_FableReef": "Fable Reef",
"location.Custom_ForestWest": "West Cindersap Forest",
"location.Custom_Highlands": "The Highlands",
- "location.Custom_Highlands.0": "Ruins",
- "location.Custom_Highlands.1": "River",
+ "location.Custom_Highlands.Pond": "Pond",
+ "location.Custom_Highlands.River": "River",
"location.Custom_HighlandsCavern": "The Highlands (Cavern)",
"location.Custom_JunimoWoods": "Junimo Woods",
- //"location.Custom_MorrisProperty": "",
+ "location.Custom_MorrisProperty": "Morris Property",
+ "location.Custom_HenchmanBackyard": "Henchman Backyard",
+ "location.Custom_ForbiddenMaze": "Forbidden Maze",
+ "location.Custom_DiamondCavern": "Diamond Cavern",
"location.Custom_ShearwaterBridge": "Shearwater Bridge",
"location.Custom_SpriteSpring2": "Sprite Spring",
"location.Custom_GrampletonSuburbs": "Grampleton Suburbs",
diff --git a/Almanac/i18n/zh.json b/Almanac/i18n/zh.json
index ce29dc4..df9fe2a 100644
--- a/Almanac/i18n/zh.json
+++ b/Almanac/i18n/zh.json
@@ -21,7 +21,16 @@
"crop.last-day": "最后一天:",
"crop.toggle": "切换{{mode}}",
- "crop.paddy": "水稻奖金",
+ "crop.paddy": "水稻灌溉加成",
+
+ "crop.crop.none": "没有作物符合你现在的筛选。",
+
+ "page.crop.seed-filter": "按种子筛选",
+ "page.crop.seed-filter.disabled": "关闭",
+ "page.crop.seed-filter.inventory": "背包中",
+ "page.crop.seed-filter.owned": "拥有的",
+
+ "crop.seed-filter": "只展示拥有的种子",
"crop.using-none": "以下的生长时间和日期假设你没有肥料或技能。",
"crop.using-agri": "以下的生长时间和日期假设你是一个{{agriculturist}}。",
@@ -54,9 +63,10 @@
"weather.sunny": "晴天",
"weather.rain": "雨天",
"weather.debris": "多云",
- "weather.lightning": "雷雨天",
+ "weather.lightning": "雷雨",
"weather.festival": "晴天",
- "weather.snow": "下雪天",
+ "weather.snow": "雪天",
+ "weather.green": "绿雨",
"page.train": "火车时刻表",
"page.train.about": "@B警告:@b 火车将在以下时间经过星露谷火车站。 为了您的安全,当有火车出现时,请保持与轨道的距离。",
@@ -124,8 +134,8 @@
"page.fish.size": "你钓到过的最大尺寸是@B{{big_cm}}\"厘米@b。",
"page.fish.size.range": "它的尺寸范围为@B{{min_cm}}\"厘米@b至@B{{max_cm}}\"厘米@b。",
- "page.fish.weather.Sunny": "{{fish}}只在@Bsunny@b的天气可钓到。",
- "page.fish.weather.Rainy": "{{fish}}只在@Brainy@b的天气可钓到。",
+ "page.fish.weather.Sunny": "{{fish}}只在@B晴朗@b的天气可钓到。",
+ "page.fish.weather.Rainy": "{{fish}}只在@B下雨@b的天气可钓到。",
"page.fish.weather.Any": "{{fish}}任何天气都能钓,风雨无阻。 ",
"page.fish.level": "你需要{{skill}}的@B{{level}}@b级别才能钓到这种鱼。",
"page.fish.legendary": "{{fish}}是传说鱼类。",
@@ -157,6 +167,13 @@
"page.fish.location.fresh": "{{fish}}生活在淡水区域。",
"page.fish.location.ocean": "{{fish}}生活在海水区域。",
+ "page.fish.filter.aquarium": "按水族馆捐赠筛选",
+ "page.fish.aquarium.true": "已捐赠",
+ "page.fish.aquarium.false": "未捐赠",
+
+ "page.fish.aquarium.donated": "你已经捐给了星露谷水族馆。",
+ "page.fish.aquarium.not-donated": "你还没有捐给星露谷水族馆。",
+
// Settings
"settings.button": "显示年历按钮",
@@ -272,7 +289,7 @@
// Locations
- "location.WitchSwamp": "女巫的沼泽",
+ "location.WitchSwamp": "女巫沼泽",
"location.BugLand": "突变虫穴",
"location.Caldera": "姜岛(火山地牢)",
@@ -282,34 +299,43 @@
"location.IslandSouthEast": "姜岛东南部",
"location.IslandSouthEastCave": "姜岛东南部(洞穴)",
"location.IslandEast": "姜岛东部",
+ "location.Submarine": "潜艇",
"location.sub-any": "任何地点",
"location.sub-floor": "{{floor}}层",
"location.Forest.River": "河边",
"location.Forest.Pond": "池塘",
+ "location.Forest.Lake": "湖泊",
"location.Island.Ocean": "海边",
"location.Island.Freshwater": "淡水区",
+ "Location.Desert.TopPond": "池塘",
+
// Maps: Stardew Aquarium
"location.Custom_ExteriorMuseum": "星露谷水族馆",
"location.ExteriorMuseum": "星露谷水族馆",
// Maps: Stardew Valley Expanded
- "location.Custom_AdventurerSummit": "冒险家公会",
+ "location.Custom_AdventurerSummit": "探险家山峰",
"location.Custom_BlueMoonVineyard": "蓝月亮葡萄园",
- "location.Custom_BlueMoonVineyard.0": "海边",
- "location.Custom_BlueMoonVineyard.1": "河边",
- "location.Custom_CrimsonBadlands": "猩红荒地",
- "location.Custom_FableReef": "寓言礁石",
+ "location.Custom_BlueMoonVineyard.Ocean": "海边",
+ "location.Custom_BlueMoonVineyard.River": "河边",
+ "location.Custom_CrimsonBadlands": "绯红荒地",
+ "location.Custom_FableReef": "寓言礁",
"location.Custom_ForestWest": "煤矿森林西",
"location.Custom_Highlands": "高地",
- "location.Custom_Highlands.0": "废墟",
- "location.Custom_Highlands.1": "河边",
- "location.Custom_HighlandsCavern": "高地(洞穴)",
+ "location.Custom_Highlands.Pond": "池塘",
+ "location.Custom_Highlands.River": "河边",
+ "location.Custom_HighlandsCavern": "高地洞穴",
"location.Custom_JunimoWoods": "祝尼魔森林",
- //"location.Custom_MorrisProperty": "",
- "location.Custom_ShearwaterBridge": "海鸥栈桥",
- "location.Custom_SpriteSpring2": "精灵温泉"
+ "location.Custom_MorrisProperty": "莫里斯地产",
+ "location.Custom_HenchmanBackyard": "仆从后院",
+ "location.Custom_ForbiddenMaze": "禁忌迷宫",
+ "location.Custom_DiamondCavern": "钻石洞穴",
+ "location.Custom_ShearwaterBridge": "海鸥桥",
+ "location.Custom_SpriteSpring2": "精灵泉",
+ "location.Custom_GrampletonSuburbs": "郊区",
+ "location.Custom_GrampletonSuburbsTrainStation": "郊区火车站"
}
diff --git a/Almanac/manifest.json b/Almanac/manifest.json
index f30096e..f9a08b9 100644
--- a/Almanac/manifest.json
+++ b/Almanac/manifest.json
@@ -10,9 +10,10 @@
"UniqueID": "leclair.almanac",
"Name": "Almanac",
"Author": "Khloe Leclair",
- "Version": "0.18.1-Debug",
+ "Version": "0.18.1",
"Description": "Adds an Almanac for the player, with forecasts, planting dates, and other calendar information useful for a farmer.",
- "MinimumApiVersion": "3.17.0",
+ "MinimumApiVersion": "4.1.0",
+ "MinimumGameVersion": "1.6.9",
"EntryDll": "Almanac.dll",
"Dependencies": [
{