Compare commits
	
		
			8 Commits
		
	
	
		
			02250ed307
			...
			e50f0fa976
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| e50f0fa976 | |||
| a63b9b50b6 | |||
|  | 3c8b78192a | ||
|  | 4ffd9bc9bc | ||
|  | 5f612a20c1 | ||
|  | 6c14d040be | ||
|  | ca249644dd | ||
|  | be8b9a9e41 | 
| @@ -356,7 +356,7 @@ namespace stardew_access | |||||||
|  |  | ||||||
|             helper.ConsoleCommands.Add("buildsel", "Select the building index which you want to upgrade/demolish/paint", (string command, string[] args) => |             helper.ConsoleCommands.Add("buildsel", "Select the building index which you want to upgrade/demolish/paint", (string command, string[] args) => | ||||||
|             { |             { | ||||||
|                 if ((Game1.activeClickableMenu is not CarpenterMenu && Game1.activeClickableMenu is not PurchaseAnimalsMenu && Game1.activeClickableMenu is not AnimalQueryMenu) || !CarpenterMenuPatch.isOnFarm) |                 if ((Game1.activeClickableMenu is not CarpenterMenu && Game1.activeClickableMenu is not PurchaseAnimalsMenu && Game1.activeClickableMenu is not AnimalQueryMenu) || (!CarpenterMenuPatch.isOnFarm && !PurchaseAnimalsMenuPatch.isOnFarm && !AnimalQueryMenuPatch.isOnFarm)) | ||||||
|                 { |                 { | ||||||
|                     MainClass.InfoLog($"Cannot select building."); |                     MainClass.InfoLog($"Cannot select building."); | ||||||
|                     return; |                     return; | ||||||
|   | |||||||
| @@ -24,9 +24,6 @@ namespace stardew_access | |||||||
|                 soundEffects.Add("colliding", TYPE.Sound); |                 soundEffects.Add("colliding", TYPE.Sound); | ||||||
|                 soundEffects.Add("invalid-selection", TYPE.Sound); |                 soundEffects.Add("invalid-selection", TYPE.Sound); | ||||||
|  |  | ||||||
|                 soundEffects.Add("bobber_target_up", TYPE.Sound); |  | ||||||
|                 soundEffects.Add("bobber_target_down", TYPE.Sound); |  | ||||||
|  |  | ||||||
|                 soundEffects.Add("npc_top", TYPE.Footstep); |                 soundEffects.Add("npc_top", TYPE.Footstep); | ||||||
|                 soundEffects.Add("npc_right", TYPE.Footstep); |                 soundEffects.Add("npc_right", TYPE.Footstep); | ||||||
|                 soundEffects.Add("npc_left", TYPE.Footstep); |                 soundEffects.Add("npc_left", TYPE.Footstep); | ||||||
|   | |||||||
| @@ -4,6 +4,7 @@ using Microsoft.Xna.Framework.Graphics; | |||||||
| using Microsoft.Xna.Framework.Input; | using Microsoft.Xna.Framework.Input; | ||||||
| using stardew_access.Patches; | using stardew_access.Patches; | ||||||
| using StardewValley; | using StardewValley; | ||||||
|  | using StardewValley.Characters; | ||||||
| using StardewValley.Menus; | using StardewValley.Menus; | ||||||
| using StardewValley.Minigames; | using StardewValley.Minigames; | ||||||
|  |  | ||||||
| @@ -275,12 +276,6 @@ namespace stardew_access | |||||||
|                         original: AccessTools.Method(typeof(GrandpaStory), nameof(GrandpaStory.draw), new Type[] { typeof(SpriteBatch) }), |                         original: AccessTools.Method(typeof(GrandpaStory), nameof(GrandpaStory.draw), new Type[] { typeof(SpriteBatch) }), | ||||||
|                         postfix: new HarmonyMethod(typeof(GrandpaStoryPatch), nameof(GrandpaStoryPatch.DrawPatch)) |                         postfix: new HarmonyMethod(typeof(GrandpaStoryPatch), nameof(GrandpaStoryPatch.DrawPatch)) | ||||||
|                     ); |                     ); | ||||||
|  |  | ||||||
|             harmony.Patch( |  | ||||||
|                         original: AccessTools.Method(typeof(BobberBar), nameof(BobberBar.update)), |  | ||||||
|                         postfix: new HarmonyMethod(typeof(FishingMiniGamePatch), nameof(FishingMiniGamePatch.BobberBarPatch)) |  | ||||||
|                     ); |  | ||||||
|  |  | ||||||
|             #endregion |             #endregion | ||||||
|  |  | ||||||
|             harmony.Patch( |             harmony.Patch( | ||||||
| @@ -297,6 +292,26 @@ namespace stardew_access | |||||||
|                     original: AccessTools.Method(typeof(TextBox), nameof(TextBox.Draw)), |                     original: AccessTools.Method(typeof(TextBox), nameof(TextBox.Draw)), | ||||||
|                     prefix: new HarmonyMethod(typeof(TextBoxPatch), nameof(TextBoxPatch.DrawPatch)) |                     prefix: new HarmonyMethod(typeof(TextBoxPatch), nameof(TextBoxPatch.DrawPatch)) | ||||||
|                 ); |                 ); | ||||||
|  |  | ||||||
|  |             harmony.Patch( | ||||||
|  |                     original: AccessTools.Method(typeof(TextEntryMenu), nameof(TextEntryMenu.draw), new Type[] { typeof(SpriteBatch) }), | ||||||
|  |                     prefix: new HarmonyMethod(typeof(TextEntryMenuPatch), nameof(TextEntryMenuPatch.DrawPatch)) | ||||||
|  |                 ); | ||||||
|  |  | ||||||
|  |             harmony.Patch( | ||||||
|  |                     original: AccessTools.Method(typeof(TextEntryMenu), nameof(TextEntryMenu.Close)), | ||||||
|  |                     prefix: new HarmonyMethod(typeof(TextEntryMenuPatch), nameof(TextEntryMenuPatch.ClosePatch)) | ||||||
|  |                 ); | ||||||
|  |  | ||||||
|  |             harmony.Patch( | ||||||
|  |                     original: AccessTools.Method(typeof(Game1), nameof(Game1.closeTextEntry)), | ||||||
|  |                     prefix: new HarmonyMethod(typeof(Game1Patch), nameof(Game1Patch.CloseTextEntryPatch)) | ||||||
|  |                 ); | ||||||
|  |  | ||||||
|  |             harmony.Patch( | ||||||
|  |                     original: AccessTools.Method(typeof(TrashBear), nameof(TrashBear.checkAction)), | ||||||
|  |                     postfix: new HarmonyMethod(typeof(TrashBearPatch), nameof(TrashBearPatch.CheckActionPatch)) | ||||||
|  |                 ); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -89,9 +89,6 @@ namespace stardew_access | |||||||
|         public Boolean DisableInventoryVerbosity {get; set;} = false; // If enabled, does not speaks 'not usable here' and 'donatable' in inventories |         public Boolean DisableInventoryVerbosity {get; set;} = false; // If enabled, does not speaks 'not usable here' and 'donatable' in inventories | ||||||
|         #endregion |         #endregion | ||||||
|  |  | ||||||
|         public int MaximumFishingDifficulty { get; set; } = 999; // TODO Add doc |  | ||||||
|         public int FixFishingMotionType { get; set; } = 999; |  | ||||||
|  |  | ||||||
|         // TODO Add the exclusion and focus list too |         // TODO Add the exclusion and focus list too | ||||||
|         // public String ExclusionList { get; set; } = "test"; |         // public String ExclusionList { get; set; } = "test"; | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -13,7 +13,7 @@ namespace stardew_access | |||||||
|     { |     { | ||||||
|         #region Global Vars & Properties |         #region Global Vars & Properties | ||||||
|  |  | ||||||
|         #pragma warning disable CS8603 | #pragma warning disable CS8603 | ||||||
|         private static int prevDate = -99; |         private static int prevDate = -99; | ||||||
|         private static ModConfig? config; |         private static ModConfig? config; | ||||||
|         private Harmony? harmony; |         private Harmony? harmony; | ||||||
| @@ -129,10 +129,21 @@ namespace stardew_access | |||||||
|             helper.Events.Input.ButtonPressed += this.OnButtonPressed; |             helper.Events.Input.ButtonPressed += this.OnButtonPressed; | ||||||
|             helper.Events.GameLoop.UpdateTicked += this.onUpdateTicked; |             helper.Events.GameLoop.UpdateTicked += this.onUpdateTicked; | ||||||
|             helper.Events.GameLoop.DayStarted += this.onDayStarted; |             helper.Events.GameLoop.DayStarted += this.onDayStarted; | ||||||
|  |             helper.Events.Display.MenuChanged += this.onMenuChanged; | ||||||
|             AppDomain.CurrentDomain.DomainUnload += OnExit; |             AppDomain.CurrentDomain.DomainUnload += OnExit; | ||||||
|             AppDomain.CurrentDomain.ProcessExit += OnExit; |             AppDomain.CurrentDomain.ProcessExit += OnExit; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         private void onMenuChanged(object? sender, MenuChangedEventArgs e) | ||||||
|  |         { | ||||||
|  |             TextBoxPatch.activeTextBoxes = ""; | ||||||
|  |             if (e.OldMenu != null) | ||||||
|  |             { | ||||||
|  |                 MainClass.DebugLog($"Switched from {e.OldMenu.GetType().ToString()} menu, performing cleanup..."); | ||||||
|  |                 IClickableMenuPatch.Cleanup(e.OldMenu); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|         /// <summary>Returns the Screen Reader class for other mods to use.</summary> |         /// <summary>Returns the Screen Reader class for other mods to use.</summary> | ||||||
|         public override object GetApi() |         public override object GetApi() | ||||||
|         { |         { | ||||||
| @@ -335,6 +346,20 @@ namespace stardew_access | |||||||
|             TileViewerFeature.HandleInput(); |             TileViewerFeature.HandleInput(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         public static string Translate(string translationKey) | ||||||
|  |         { | ||||||
|  |             if (ModHelper == null) return "null"; | ||||||
|  |  | ||||||
|  |             return ModHelper.Translation.Get(translationKey); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         public static string Translate(string translationKey, object? tokens) | ||||||
|  |         { | ||||||
|  |             if (ModHelper == null) return "null"; | ||||||
|  |  | ||||||
|  |             return ModHelper.Translation.Get(translationKey, tokens); | ||||||
|  |         } | ||||||
|  |  | ||||||
|         private static void LogMessage(string message, LogLevel logLevel) |         private static void LogMessage(string message, LogLevel logLevel) | ||||||
|         { |         { | ||||||
|             if (monitor == null) |             if (monitor == null) | ||||||
|   | |||||||
| @@ -1,77 +0,0 @@ | |||||||
| using StardewValley; |  | ||||||
| using StardewValley.Menus; |  | ||||||
|  |  | ||||||
| namespace stardew_access.Patches { |  | ||||||
|     internal class FishingMiniGamePatch { |  | ||||||
|         private static ICue? progressSound = null; |  | ||||||
|         private static long previousBobberTargetUpPlayedTime = 0; |  | ||||||
|         private static long previousBobberTargetDownPlayedTime = 0; |  | ||||||
|  |  | ||||||
|         internal static void BobberBarPatch(BobberBar __instance, ref float ___difficulty, ref int ___motionType, float ___distanceFromCatching, float ___bobberPosition, float ___bobberBarPos, bool ___bobberInBar, int ___bobberBarHeight, bool ___fadeOut, bool ___fadeIn) { |  | ||||||
|             try { |  | ||||||
|                 if (___difficulty > MainClass.Config.MaximumFishingDifficulty) { |  | ||||||
|                     MainClass.DebugLog($"Fish difficulty set to {MainClass.Config.MaximumFishingDifficulty} from {___difficulty}"); |  | ||||||
|                     ___difficulty = MainClass.Config.MaximumFishingDifficulty; |  | ||||||
|                 } |  | ||||||
|  |  | ||||||
|                 if (___motionType != MainClass.Config.FixFishingMotionType && |  | ||||||
|                         (MainClass.Config.FixFishingMotionType >= 0 && MainClass.Config.FixFishingMotionType <= 4)) { |  | ||||||
|                     MainClass.DebugLog($"Motion type set to {MainClass.Config.FixFishingMotionType} from {___motionType}"); |  | ||||||
|                     ___motionType = MainClass.Config.FixFishingMotionType; |  | ||||||
|                 } |  | ||||||
|  |  | ||||||
|                 handleProgressBarSound(___distanceFromCatching, ___fadeOut, ___fadeIn); |  | ||||||
|  |  | ||||||
|                 handleBobberTargetSound(___bobberPosition, ___bobberBarPos, ___bobberInBar, ___bobberBarHeight, ___fadeOut, ___fadeIn); |  | ||||||
|             } catch (System.Exception e) { |  | ||||||
|                 MainClass.ErrorLog($"An error occured while patching bobber bar:\n{e.Message}\n{e.StackTrace}"); |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         private static void handleBobberTargetSound(float bobberPosition, float bobberBarPos, bool bobberInBar, int ___bobberBarHeight, bool ___fadeOut, bool ___fadeIn) { |  | ||||||
|             if (bobberInBar) return; |  | ||||||
|             if (___fadeIn) return; |  | ||||||
|             if (___fadeOut) return; |  | ||||||
|  |  | ||||||
|             DateTimeOffset now = (DateTimeOffset)DateTime.UtcNow; |  | ||||||
|             long currentTimeInMilliseconds = now.ToUnixTimeMilliseconds(); |  | ||||||
|  |  | ||||||
|             if(bobberPosition < bobberBarPos && (currentTimeInMilliseconds - previousBobberTargetUpPlayedTime) >= 250) { |  | ||||||
|                 previousBobberTargetUpPlayedTime = currentTimeInMilliseconds; |  | ||||||
|                 int distanceFromBobber = (int)(bobberBarPos - bobberPosition + (___bobberBarHeight / 2)); |  | ||||||
|                 int calculatedPitch = distanceFromBobber * 4; |  | ||||||
|                 MainClass.DebugLog(calculatedPitch.ToString()); |  | ||||||
|                 Game1.playSoundPitched("bobber_target_up", calculatedPitch); |  | ||||||
|             } |  | ||||||
|  |  | ||||||
|             if(bobberPosition > bobberBarPos && (currentTimeInMilliseconds - previousBobberTargetDownPlayedTime) >= 250) { |  | ||||||
|                 previousBobberTargetDownPlayedTime = currentTimeInMilliseconds; |  | ||||||
|                 int distanceFromBobber = (int)(bobberPosition - bobberBarPos - (___bobberBarHeight / 2)); |  | ||||||
|                 int calculatedPitch = distanceFromBobber * 4; |  | ||||||
|                 MainClass.DebugLog(calculatedPitch.ToString()); |  | ||||||
|                 Game1.playSoundPitched("bobber_target_down", calculatedPitch); |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         private static void handleProgressBarSound(float ___distanceFromCatching, bool ___fadeOut, bool ___fadeIn) { |  | ||||||
|             if (Game1.soundBank == null) return; |  | ||||||
|  |  | ||||||
|             if (progressSound == null) { |  | ||||||
|                 progressSound = Game1.soundBank.GetCue("SinWave"); |  | ||||||
|             } |  | ||||||
|  |  | ||||||
|             progressSound.SetVariable("Pitch", 2400f * ___distanceFromCatching); |  | ||||||
|             // progressSound.SetVariable("Volume", 300f); |  | ||||||
|  |  | ||||||
|             if (___fadeIn && !progressSound.IsPlaying) { |  | ||||||
|                 // Start playing the sound on menu open |  | ||||||
|                 progressSound.Play();  |  | ||||||
|             } |  | ||||||
|  |  | ||||||
|             if (___fadeOut && progressSound.IsPlaying) { |  | ||||||
|                 // Stop playing the sound on menu close |  | ||||||
|                 progressSound.Stop(Microsoft.Xna.Framework.Audio.AudioStopOptions.Immediate); |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @@ -13,6 +13,7 @@ namespace stardew_access.Patches | |||||||
|         { |         { | ||||||
|             try |             try | ||||||
|             { |             { | ||||||
|  |                 MainClass.DebugLog($"Closing {Game1.activeClickableMenu.GetType().ToString()} menu, performing cleanup..."); | ||||||
|                 IClickableMenuPatch.Cleanup(Game1.activeClickableMenu); |                 IClickableMenuPatch.Cleanup(Game1.activeClickableMenu); | ||||||
|             } |             } | ||||||
|             catch (Exception e) |             catch (Exception e) | ||||||
| @@ -21,6 +22,11 @@ namespace stardew_access.Patches | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         internal static void CloseTextEntryPatch() | ||||||
|  |         { | ||||||
|  |             TextBoxPatch.activeTextBoxes = ""; | ||||||
|  |         } | ||||||
|  |  | ||||||
|         internal static bool PlaySoundPatch(string cueName) |         internal static bool PlaySoundPatch(string cueName) | ||||||
|         { |         { | ||||||
|             try |             try | ||||||
|   | |||||||
| @@ -199,6 +199,7 @@ namespace stardew_access.Patches | |||||||
|         { |         { | ||||||
|             try |             try | ||||||
|             { |             { | ||||||
|  |                 MainClass.DebugLog($"Closed {__instance.GetType().ToString()} menu, performing cleanup..."); | ||||||
|                 Cleanup(__instance); |                 Cleanup(__instance); | ||||||
|             } |             } | ||||||
|             catch (Exception e) |             catch (Exception e) | ||||||
| @@ -209,114 +210,88 @@ namespace stardew_access.Patches | |||||||
|  |  | ||||||
|         internal static void Cleanup(IClickableMenu menu) |         internal static void Cleanup(IClickableMenu menu) | ||||||
|         { |         { | ||||||
|             if (menu is TitleMenu) |             switch (menu) | ||||||
|             { |             { | ||||||
|                 TitleMenuPatch.Cleanup(); |                 case TitleMenu: | ||||||
|             } |                     TitleMenuPatch.Cleanup(); | ||||||
|             else if (menu is CoopMenu) |                     break; | ||||||
|             { |                 case CoopMenu: | ||||||
|                 CoopMenuPatch.Cleanup(); |                     CoopMenuPatch.Cleanup(); | ||||||
|             } |                     break; | ||||||
|             else if (menu is LoadGameMenu) |                 case LoadGameMenu: | ||||||
|             { |                     LoadGameMenuPatch.Cleanup(); | ||||||
|                 LoadGameMenuPatch.Cleanup(); |                     break; | ||||||
|             } |                 case AdvancedGameOptions: | ||||||
|             else if (menu is AdvancedGameOptions) |                     AdvancedGameOptionsPatch.Cleanup(); | ||||||
|             { |                     break; | ||||||
|                 AdvancedGameOptionsPatch.Cleanup(); |                 case LetterViewerMenu: | ||||||
|             } |                     LetterViwerMenuPatch.Cleanup(); | ||||||
|             else if (menu is LetterViewerMenu) |                     break; | ||||||
|             { |                 case LevelUpMenu: | ||||||
|                 LetterViwerMenuPatch.Cleanup(); |                     LevelUpMenuPatch.Cleanup(); | ||||||
|             } |                     break; | ||||||
|             else if (menu is LevelUpMenu) |                 case Billboard: | ||||||
|             { |                     BillboardPatch.Cleanup(); | ||||||
|                 LevelUpMenuPatch.Cleanup(); |                     break; | ||||||
|             } |                 case GameMenu: | ||||||
|             else if (menu is Billboard) |                     GameMenuPatch.Cleanup(); | ||||||
|             { |                     ExitPagePatch.Cleanup(); | ||||||
|                 BillboardPatch.Cleanup(); |                     OptionsPagePatch.Cleanup(); | ||||||
|             } |                     SocialPagePatch.Cleanup(); | ||||||
|             else if (menu is GameMenu) |                     InventoryPagePatch.Cleanup(); | ||||||
|             { |                     CraftingPagePatch.Cleanup(); | ||||||
|                 GameMenuPatch.Cleanup(); |                     break; | ||||||
|                 ExitPagePatch.Cleanup(); |                 case JunimoNoteMenu: | ||||||
|                 OptionsPagePatch.Cleanup(); |                     JunimoNoteMenuPatch.Cleanup(); | ||||||
|                 SocialPagePatch.Cleanup(); |                     break; | ||||||
|                 InventoryPagePatch.Cleanup(); |                 case ShopMenu: | ||||||
|                 CraftingPagePatch.Cleanup(); |                     ShopMenuPatch.Cleanup(); | ||||||
|             } |                     break; | ||||||
|             else if (menu is JunimoNoteMenu) |                 case ItemGrabMenu: | ||||||
|             { |                     ItemGrabMenuPatch.Cleanup(); | ||||||
|                 JunimoNoteMenuPatch.Cleanup(); |                     break; | ||||||
|             } |                 case GeodeMenu: | ||||||
|             else if (menu is ShopMenu) |                     GeodeMenuPatch.Cleanup(); | ||||||
|             { |                     break; | ||||||
|                 ShopMenuPatch.Cleanup(); |                 case CarpenterMenu: | ||||||
|             } |                     CarpenterMenuPatch.Cleanup(); | ||||||
|             else if (menu is ItemGrabMenu) |                     break; | ||||||
|             { |                 case PurchaseAnimalsMenu: | ||||||
|                 ItemGrabMenuPatch.Cleanup(); |                     PurchaseAnimalsMenuPatch.Cleanup(); | ||||||
|             } |                     break; | ||||||
|             else if (menu is GeodeMenu) |                 case AnimalQueryMenu: | ||||||
|             { |                     AnimalQueryMenuPatch.Cleanup(); | ||||||
|                 GeodeMenuPatch.Cleanup(); |                     break; | ||||||
|             } |                 case DialogueBox: | ||||||
|             else if (menu is CarpenterMenu) |                     DialogueBoxPatch.Cleanup(); | ||||||
|             { |                     break; | ||||||
|                 CarpenterMenuPatch.Cleanup(); |                 case JojaCDMenu: | ||||||
|             } |                     JojaCDMenuPatch.Cleanup(); | ||||||
|             else if (menu is PurchaseAnimalsMenu) |                     break; | ||||||
|             { |                 case QuestLog: | ||||||
|                 PurchaseAnimalsMenuPatch.Cleanup(); |                     QuestLogPatch.Cleaup(); | ||||||
|             } |                     break; | ||||||
|             else if (menu is AnimalQueryMenu) |                 case TailoringMenu: | ||||||
|             { |                     TailoringMenuPatch.Cleanup(); | ||||||
|                 AnimalQueryMenuPatch.Cleanup(); |                     break; | ||||||
|             } |                 case ForgeMenu: | ||||||
|             else if (menu is DialogueBox) |                     ForgeMenuPatch.Cleanup(); | ||||||
|             { |                     break; | ||||||
|                 DialogueBoxPatch.Cleanup(); |                 case ItemListMenu: | ||||||
|             } |                     ItemListMenuPatch.Cleanup(); | ||||||
|             else if (menu is JojaCDMenu) |                     break; | ||||||
|             { |                 case FieldOfficeMenu: | ||||||
|                 JojaCDMenuPatch.Cleanup(); |                     FieldOfficeMenuPatch.Cleanup(); | ||||||
|             } |                     break; | ||||||
|             else if (menu is QuestLog) |                 case MuseumMenu: | ||||||
|             { |                     MuseumMenuPatch.Cleanup(); | ||||||
|                 QuestLogPatch.Cleaup(); |                     break; | ||||||
|             } |                 case PondQueryMenu: | ||||||
|             else if (menu is TailoringMenu) |                     PondQueryMenuPatch.Cleanup(); | ||||||
|             { |                     break; | ||||||
|                 TailoringMenuPatch.Cleanup(); |                 case SpecialOrdersBoard: | ||||||
|             } |                     SpecialOrdersBoardPatch.Cleanup(); | ||||||
|             else if (menu is ForgeMenu) |                     break; | ||||||
|             { |  | ||||||
|                 ForgeMenuPatch.Cleanup(); |  | ||||||
|             } |  | ||||||
|             else if (menu is ItemListMenu) |  | ||||||
|             { |  | ||||||
|                 ItemListMenuPatch.Cleanup(); |  | ||||||
|             } |  | ||||||
|             else if (menu is FieldOfficeMenu) |  | ||||||
|             { |  | ||||||
|                 FieldOfficeMenuPatch.Cleanup(); |  | ||||||
|             } |  | ||||||
|             else if (menu is MuseumMenu) |  | ||||||
|             { |  | ||||||
|                 MuseumMenuPatch.Cleanup(); |  | ||||||
|             } |  | ||||||
|             else if (menu is PondQueryMenu) |  | ||||||
|             { |  | ||||||
|                 PondQueryMenuPatch.Cleanup(); |  | ||||||
|             } |  | ||||||
|             else if (menu is GeodeMenu) |  | ||||||
|             { |  | ||||||
|                 GeodeMenuPatch.Cleanup(); |  | ||||||
|             } |  | ||||||
|             else if (menu is SpecialOrdersBoard) |  | ||||||
|             { |  | ||||||
|                 SpecialOrdersBoardPatch.Cleanup(); |  | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             InventoryUtils.Cleanup(); |             InventoryUtils.Cleanup(); | ||||||
|   | |||||||
| @@ -2,7 +2,7 @@ namespace stardew_access.Patches | |||||||
| { | { | ||||||
|     internal class TextBoxPatch |     internal class TextBoxPatch | ||||||
|     { |     { | ||||||
|         internal static string textBoxQuery = " "; |         internal static string textBoxQuery = ""; | ||||||
|         internal static string activeTextBoxes = ""; |         internal static string activeTextBoxes = ""; | ||||||
|         internal static bool isAnyTextBoxActive => activeTextBoxes != ""; |         internal static bool isAnyTextBoxActive => activeTextBoxes != ""; | ||||||
|  |  | ||||||
| @@ -13,7 +13,7 @@ namespace stardew_access.Patches | |||||||
|                 string uniqueIdentifier = $"{__instance.X}:{__instance.Y}:{__instance.Height}:{__instance.Width}"; |                 string uniqueIdentifier = $"{__instance.X}:{__instance.Y}:{__instance.Height}:{__instance.Width}"; | ||||||
|                 if (!__instance.Selected) |                 if (!__instance.Selected) | ||||||
|                 { |                 { | ||||||
|                     if (activeTextBoxes.Contains(uniqueIdentifier))  activeTextBoxes = activeTextBoxes.Replace(uniqueIdentifier, ""); |                     if (activeTextBoxes.Contains(uniqueIdentifier)) activeTextBoxes = activeTextBoxes.Replace(uniqueIdentifier, ""); | ||||||
|                     return; |                     return; | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
| @@ -24,6 +24,7 @@ namespace stardew_access.Patches | |||||||
|  |  | ||||||
|                 if (isEscPressed) |                 if (isEscPressed) | ||||||
|                 { |                 { | ||||||
|  |                     if (activeTextBoxes.Contains(uniqueIdentifier)) activeTextBoxes = activeTextBoxes.Replace(uniqueIdentifier, ""); | ||||||
|                     __instance.Selected = false; |                     __instance.Selected = false; | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										23
									
								
								stardew-access/Patches/MiscPatches/TextEntryMenuPatch.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								stardew-access/Patches/MiscPatches/TextEntryMenuPatch.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | |||||||
|  |  | ||||||
|  | namespace stardew_access.Patches | ||||||
|  | { | ||||||
|  |     internal class TextEntryMenuPatch | ||||||
|  |     { | ||||||
|  |         internal static void DrawPatch(StardewValley.Menus.TextEntryMenu __instance, StardewValley.Menus.TextBox ____target) | ||||||
|  |         { | ||||||
|  |             try | ||||||
|  |             { | ||||||
|  |                 TextBoxPatch.DrawPatch(____target); | ||||||
|  |             } | ||||||
|  |             catch (Exception e) | ||||||
|  |             { | ||||||
|  |                 MainClass.ErrorLog($"An error occured in DrawPatch() in TextEntryPatch:\n{e.Message}\n{e.StackTrace}"); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         internal static void ClosePatch() | ||||||
|  |         { | ||||||
|  |             TextBoxPatch.activeTextBoxes = ""; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										24
									
								
								stardew-access/Patches/MiscPatches/TrashBearPatch.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								stardew-access/Patches/MiscPatches/TrashBearPatch.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | |||||||
|  | using StardewValley; | ||||||
|  | using StardewValley.Characters; | ||||||
|  |  | ||||||
|  | namespace stardew_access.Patches | ||||||
|  | { | ||||||
|  |     internal class TrashBearPatch | ||||||
|  |     { | ||||||
|  |         internal static void CheckActionPatch(TrashBear __instance, bool __result, int ___itemWantedIndex, int ___showWantBubbleTimer) | ||||||
|  |         { | ||||||
|  |             try | ||||||
|  |             { | ||||||
|  |                 if (__result) return; // The true `true` value of __result indicates the bear is interactable i.e. when giving the bear the wanted item | ||||||
|  |                 if (__instance.sprite.Value.CurrentAnimation != null) return; | ||||||
|  |  | ||||||
|  |                 string itemName = Game1.objectInformation[___itemWantedIndex].Split('/')[4]; | ||||||
|  |                 MainClass.ScreenReader.Say(MainClass.Translate("patch.trash_bear.wanted_item", new {trash_bear_name = __instance.displayName, item_name = itemName}), true); | ||||||
|  |             } | ||||||
|  |             catch (Exception e) | ||||||
|  |             { | ||||||
|  |                 MainClass.ErrorLog($"An error occured TrashBearPatch::CheckActionPatch():\n{e.Message}\n{e.StackTrace}"); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -11,7 +11,9 @@ namespace stardew_access.Patches | |||||||
|         internal static FarmAnimal? animalBeingMoved = null; |         internal static FarmAnimal? animalBeingMoved = null; | ||||||
|         internal static bool isOnFarm = false; |         internal static bool isOnFarm = false; | ||||||
|  |  | ||||||
|         internal static void DrawPatch(AnimalQueryMenu __instance, bool ___confirmingSell, FarmAnimal ___animal, TextBox ___textBox, string ___parentName, bool ___movingAnimal) |         private static double loveLevel; | ||||||
|  |  | ||||||
|  |         internal static void DrawPatch(AnimalQueryMenu __instance, bool ___confirmingSell, FarmAnimal ___animal, TextBox ___textBox, string ___parentName, bool ___movingAnimal, double ___loveLevel) | ||||||
|         { |         { | ||||||
|             try |             try | ||||||
|             { |             { | ||||||
| @@ -23,6 +25,8 @@ namespace stardew_access.Patches | |||||||
|                 animalQueryMenu = __instance; |                 animalQueryMenu = __instance; | ||||||
|                 animalBeingMoved = ___animal; |                 animalBeingMoved = ___animal; | ||||||
|  |  | ||||||
|  |                 loveLevel = ___loveLevel; | ||||||
|  |  | ||||||
|                 narrateAnimalDetailsOnKeyPress(___animal, ___parentName); |                 narrateAnimalDetailsOnKeyPress(___animal, ___parentName); | ||||||
|  |  | ||||||
|                 narrateHoveredButton(__instance, ___animal, ___confirmingSell, x, y); |                 narrateHoveredButton(__instance, ___animal, ___confirmingSell, x, y); | ||||||
| @@ -44,6 +48,7 @@ namespace stardew_access.Patches | |||||||
|             int age = (___animal.GetDaysOwned() + 1) / 28 + 1; |             int age = (___animal.GetDaysOwned() + 1) / 28 + 1; | ||||||
|             string ageText = (age <= 1) ? Game1.content.LoadString("Strings\\UI:AnimalQuery_Age1") : Game1.content.LoadString("Strings\\UI:AnimalQuery_AgeN", age); |             string ageText = (age <= 1) ? Game1.content.LoadString("Strings\\UI:AnimalQuery_Age1") : Game1.content.LoadString("Strings\\UI:AnimalQuery_AgeN", age); | ||||||
|             string parent = ""; |             string parent = ""; | ||||||
|  |  | ||||||
|             if ((int)___animal.age.Value < (byte)___animal.ageWhenMature.Value) |             if ((int)___animal.age.Value < (byte)___animal.ageWhenMature.Value) | ||||||
|             { |             { | ||||||
|                 ageText += Game1.content.LoadString("Strings\\UI:AnimalQuery_AgeBaby"); |                 ageText += Game1.content.LoadString("Strings\\UI:AnimalQuery_AgeBaby"); | ||||||
| @@ -53,10 +58,26 @@ namespace stardew_access.Patches | |||||||
|                 parent = Game1.content.LoadString("Strings\\UI:AnimalQuery_Parent", ___parentName); |                 parent = Game1.content.LoadString("Strings\\UI:AnimalQuery_Parent", ___parentName); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|  |             // The loveLevel varies between 0 and 1 | ||||||
|  |             // 1 indicates 5 hearts and similarily 0 indicates 0 hearts | ||||||
|  |             // the below code multiplies the loveLevel by 10 and  | ||||||
|  |             // the numeric value of the resultent is divided by 2 to give the number of full hearts and | ||||||
|  |             // if its decimal value is above 0.5, then that indicates half a heart | ||||||
|  |             double heartCount = Math.Floor(loveLevel * 10); | ||||||
|  |             double remainder = (loveLevel * 10) % 1; | ||||||
|  |             heartCount /= 2; | ||||||
|  |             if (remainder >= 0.5) | ||||||
|  |             { | ||||||
|  |                 heartCount += 0.5; | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             MainClass.DebugLog($"Lovelevel: {loveLevel}"); | ||||||
|  |             string heart = MainClass.Translate("patch.animal_query_menu.heart", new { count = heartCount }); | ||||||
|  |  | ||||||
|             isNarratingAnimalInfo = true; |             isNarratingAnimalInfo = true; | ||||||
|             Task.Delay(200).ContinueWith(_ => { isNarratingAnimalInfo = false; }); // Adds delay |             Task.Delay(200).ContinueWith(_ => { isNarratingAnimalInfo = false; }); // Adds delay | ||||||
|  |  | ||||||
|             MainClass.ScreenReader.Say($"Name: {name} Type: {type} \n\t Age: {ageText} {parent}", true); |             MainClass.ScreenReader.Say($"Name: {name} Type: {type} \n\t {ageText} {parent} \n\t {heart}", true); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         private static void narrateHoveredButton(AnimalQueryMenu __instance, FarmAnimal ___animal, bool ___confirmingSell, int x, int y) |         private static void narrateHoveredButton(AnimalQueryMenu __instance, FarmAnimal ___animal, bool ___confirmingSell, int x, int y) | ||||||
|   | |||||||
| @@ -24,7 +24,7 @@ namespace stardew_access.Patches | |||||||
|  |  | ||||||
|                 if (___onFarm && ___namingAnimal) |                 if (___onFarm && ___namingAnimal) | ||||||
|                 { |                 { | ||||||
|                     narrateNamingMenu(__instance, x, y); |                     narrateNamingMenu(__instance, ___textBox, x, y); | ||||||
|                 } |                 } | ||||||
|                 else if (___onFarm && !___namingAnimal) |                 else if (___onFarm && !___namingAnimal) | ||||||
|                 { |                 { | ||||||
| @@ -42,7 +42,7 @@ namespace stardew_access.Patches | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         private static void narrateNamingMenu(PurchaseAnimalsMenu __instance, int x, int y) |         private static void narrateNamingMenu(PurchaseAnimalsMenu __instance, TextBox ___textBox, int x, int y) | ||||||
|         { |         { | ||||||
|             string toSpeak = ""; |             string toSpeak = ""; | ||||||
|             if (__instance.okButton != null && __instance.okButton.containsPoint(x, y)) |             if (__instance.okButton != null && __instance.okButton.containsPoint(x, y)) | ||||||
| @@ -60,9 +60,9 @@ namespace stardew_access.Patches | |||||||
|             else if (__instance.textBoxCC != null && __instance.textBoxCC.containsPoint(x, y)) |             else if (__instance.textBoxCC != null && __instance.textBoxCC.containsPoint(x, y)) | ||||||
|             { |             { | ||||||
|                 toSpeak = "Name Text Box"; |                 toSpeak = "Name Text Box"; | ||||||
|                 // string? value = ___textBox.Text; |                 string? name = ___textBox.Text; | ||||||
|                 // if (value != "" && value != null && value != "null") |                 if (name != null) | ||||||
|                 //     toSpeak = $"{toSpeak}, Value: {value}"; |                     toSpeak = $"{toSpeak}, Value: {name}"; | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             if (purchaseAnimalMenuQuery == toSpeak) return; |             if (purchaseAnimalMenuQuery == toSpeak) return; | ||||||
|   | |||||||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -2,15 +2,17 @@ | |||||||
|     "warnings.health": "Warnung! Die Gesundheit liegt bei {{value}} Prozent!", |     "warnings.health": "Warnung! Die Gesundheit liegt bei {{value}} Prozent!", | ||||||
|     "warnings.stamina": "Warnung! Ausdauer beträgt ar {{value}} Prozent!", |     "warnings.stamina": "Warnung! Ausdauer beträgt ar {{value}} Prozent!", | ||||||
|     "warnings.time": "Warnung! Zeit ist {{value}}", |     "warnings.time": "Warnung! Zeit ist {{value}}", | ||||||
|     "grandpastory.scene0":"Opa, auf seinem Sterbebett.", |     "grandpastory.scene0": "Opa, auf seinem Sterbebett.", | ||||||
|     "grandpastory.scene4":"Mitarbeiter der JoJa corp.", |     "grandpastory.scene4": "Mitarbeiter der JoJa corp.", | ||||||
|     "grandpastory.scene5":"Mitarbeiter in ihren Kabinen, einige von ihnen sehen erschöpft aus, Sie selbst eingeschlossen.", |     "grandpastory.scene5": "Mitarbeiter in ihren Kabinen, einige von ihnen sehen erschöpft aus, Sie selbst eingeschlossen.", | ||||||
|     "grandpastory.scene6":"Du erreichst deinen Schreibtisch und findest Opas Brief.", |     "grandpastory.scene6": "Du erreichst deinen Schreibtisch und findest Opas Brief.", | ||||||
|     "grandpastory.letteropen":"Linksklick, um Opas Brief zu öffnen", |     "grandpastory.letteropen": "Linksklick, um Opas Brief zu öffnen", | ||||||
|     "intro.scene3":"Fahrt zur Bushaltestelle Stardew Valley", |     "intro.scene3": "Fahrt zur Bushaltestelle Stardew Valley", | ||||||
|     "intro.scene4":"Stardew Valley 0.5 Meilen entfernt", |     "intro.scene4": "Stardew Valley 0.5 Meilen entfernt", | ||||||
|     "manuallytriggered.healthnstamina.percent":"Gesundheit ist {{health}} % und Ausdauer ist {{stamina}} %", |     "manuallytriggered.healthnstamina.percent": "Gesundheit ist {{health}} % und Ausdauer ist {{stamina}} %", | ||||||
|     "manuallytriggered.healthnstamina.normal":"Gesundheit ist {{health}} und Ausdauer ist {{stamina}}", |     "manuallytriggered.healthnstamina.normal": "Gesundheit ist {{health}} und Ausdauer ist {{stamina}}", | ||||||
|     "readtile.sprinkler.pressurenozzle":"Druck-{{value}}", |     "readtile.sprinkler.pressurenozzle": "Druck-{{value}}", | ||||||
|     "readtile.sprinkler.enricher":"Bereichernd {{value}}" |     "readtile.sprinkler.enricher": "Bereichernd {{value}}", | ||||||
|  |     "patch.animal_query_menu.heart": "Anzahl der Herzen: {{count}}", | ||||||
|  |     "patch.trash_bear.wanted_item": "{{trash_bear_name}} möchte {{item_name}} haben!" | ||||||
| } | } | ||||||
| @@ -2,15 +2,17 @@ | |||||||
|     "warnings.health": "Warning! Health is at {{value}} percent!", |     "warnings.health": "Warning! Health is at {{value}} percent!", | ||||||
|     "warnings.stamina": "Warning! Stamina is at {{value}} percent!", |     "warnings.stamina": "Warning! Stamina is at {{value}} percent!", | ||||||
|     "warnings.time": "Warning! Time is {{value}}", |     "warnings.time": "Warning! Time is {{value}}", | ||||||
|     "grandpastory.scene0":"Grandpa, on his deathbed.", |     "grandpastory.scene0": "Grandpa, on his deathbed.", | ||||||
|     "grandpastory.scene4":"Employees working in JoJa corp.", |     "grandpastory.scene4": "Employees working in JoJa corp.", | ||||||
|     "grandpastory.scene5":"Employees in their cubicles, some of them look exhausted including yourself.", |     "grandpastory.scene5": "Employees in their cubicles, some of them look exhausted including yourself.", | ||||||
|     "grandpastory.scene6":"You reach your desk finding grandpa's letter.", |     "grandpastory.scene6": "You reach your desk finding grandpa's letter.", | ||||||
|     "grandpastory.letteropen":"Left click to open grandpa's letter", |     "grandpastory.letteropen": "Left click to open grandpa's letter", | ||||||
|     "intro.scene3":"Travelling to Stardew Valley bus stop", |     "intro.scene3": "Travelling to Stardew Valley bus stop", | ||||||
|     "intro.scene4":"Stardew valley 0.5 miles away", |     "intro.scene4": "Stardew valley 0.5 miles away", | ||||||
|     "manuallytriggered.healthnstamina.percent":"Health is {{health}} % and Stamina is {{stamina}} %", |     "manuallytriggered.healthnstamina.percent": "Health is {{health}} % and Stamina is {{stamina}} %", | ||||||
|     "manuallytriggered.healthnstamina.normal":"Health is {{health}} and Stamina is {{stamina}}", |     "manuallytriggered.healthnstamina.normal": "Health is {{health}} and Stamina is {{stamina}}", | ||||||
|     "readtile.sprinkler.pressurenozzle":"Pressurized {{value}}", |     "readtile.sprinkler.pressurenozzle": "Pressurized {{value}}", | ||||||
|     "readtile.sprinkler.enricher":"Enriching {{value}}" |     "readtile.sprinkler.enricher": "Enriching {{value}}", | ||||||
|  |     "patch.animal_query_menu.heart": "Heart Count: {{count}}", | ||||||
|  |     "patch.trash_bear.wanted_item": "{{trash_bear_name}} wants {{item_name}}!" | ||||||
| } | } | ||||||
| @@ -2,15 +2,17 @@ | |||||||
|     "warnings.health": "¡Advertencia! ¡La salud está al {{value}} por ciento!", |     "warnings.health": "¡Advertencia! ¡La salud está al {{value}} por ciento!", | ||||||
|     "warnings.stamina": "¡Advertencia! ¡La resistencia es un {{value}} por ciento!", |     "warnings.stamina": "¡Advertencia! ¡La resistencia es un {{value}} por ciento!", | ||||||
|     "warnings.time": "¡Advertencia! El tiempo es {{valor}}", |     "warnings.time": "¡Advertencia! El tiempo es {{valor}}", | ||||||
|     "grandpastory.scene0":"Abuelo, en su lecho de muerte.", |     "grandpastory.scene0": "Abuelo, en su lecho de muerte.", | ||||||
|     "grandpastory.scene4":"Empleados que trabajan en JoJa corp.", |     "grandpastory.scene4": "Empleados que trabajan en JoJa corp.", | ||||||
|     "grandpastory.scene5":"Empleados en sus cubículos, algunos de ellos parecen exhaustos, incluido usted.", |     "grandpastory.scene5": "Empleados en sus cubículos, algunos de ellos parecen exhaustos, incluido usted.", | ||||||
|     "grandpastory.scene6":"Llegas a tu escritorio y encuentras la carta del abuelo.", |     "grandpastory.scene6": "Llegas a tu escritorio y encuentras la carta del abuelo.", | ||||||
|     "grandpastory.letteropen":"Haz clic izquierdo para abrir la carta del abuelo.", |     "grandpastory.letteropen": "Haz clic izquierdo para abrir la carta del abuelo.", | ||||||
|     "intro.scene3":"Viajando a la parada de autobús de Stardew Valley", |     "intro.scene3": "Viajando a la parada de autobús de Stardew Valley", | ||||||
|     "intro.scene4":"Valle de Stardew a 0.5 millas de distancia", |     "intro.scene4": "Valle de Stardew a 0.5 millas de distancia", | ||||||
|     "manuallytriggered.healthnstamina.percent":"La salud es {{health}} % y la resistencia es {{stamina}} %", |     "manuallytriggered.healthnstamina.percent": "La salud es {{health}} % y la resistencia es {{stamina}} %", | ||||||
|     "manuallytriggered.healthnstamina.normal":"La salud es {{health}} y la resistencia es {{stamina}}", |     "manuallytriggered.healthnstamina.normal": "La salud es {{health}} y la resistencia es {{stamina}}", | ||||||
|     "readtile.sprinkler.pressurenozzle":"presurizada {{value}}", |     "readtile.sprinkler.pressurenozzle": "presurizada {{value}}", | ||||||
|     "readtile.sprinkler.enricher":"Enriquecedora {{value}}" |     "readtile.sprinkler.enricher": "Enriquecedora {{value}}", | ||||||
|  |     "patch.animal_query_menu.heart": "Conteo de corazones: {{count}}", | ||||||
|  |     "patch.trash_bear.wanted_item": "¡{{trash_bear_name}} quiere {{item_name}}!" | ||||||
| } | } | ||||||
| @@ -2,15 +2,17 @@ | |||||||
|     "warnings.health": "Avertissement! La santé est à {{value}} pour cent!", |     "warnings.health": "Avertissement! La santé est à {{value}} pour cent!", | ||||||
|     "warnings.stamina": "Avertissement! L'endurance est à {{value}} pour cent!", |     "warnings.stamina": "Avertissement! L'endurance est à {{value}} pour cent!", | ||||||
|     "warnings.time": "Avertissement! Le temps est de {{value}}", |     "warnings.time": "Avertissement! Le temps est de {{value}}", | ||||||
|     "grandpastory.scene0":"Grand-père, sur son lit de mort.", |     "grandpastory.scene0": "Grand-père, sur son lit de mort.", | ||||||
|     "grandpastory.scene4":"Les employés travaillant chez JoJa corp.", |     "grandpastory.scene4": "Les employés travaillant chez JoJa corp.", | ||||||
|     "grandpastory.scene5":"Employés dans leurs cabines, certains ont l'air épuisés, y compris vous-même.", |     "grandpastory.scene5": "Employés dans leurs cabines, certains ont l'air épuisés, y compris vous-même.", | ||||||
|     "grandpastory.scene6":"Vous atteignez votre bureau en trouvant la lettre de grand-père.", |     "grandpastory.scene6": "Vous atteignez votre bureau en trouvant la lettre de grand-père.", | ||||||
|     "grandpastory.letteropen":"Clic gauche pour ouvrir la lettre de grand-père", |     "grandpastory.letteropen": "Clic gauche pour ouvrir la lettre de grand-père", | ||||||
|     "intro.scene3":"Se rendre à l'arrêt de bus Stardew Valley", |     "intro.scene3": "Se rendre à l'arrêt de bus Stardew Valley", | ||||||
|     "intro.scene4":"Vallée de Stardew à 0.5 miles", |     "intro.scene4": "Vallée de Stardew à 0.5 miles", | ||||||
|     "manuallytriggered.healthnstamina.percent":"La santé est de {{health}} % et l'endurance est de {{stamina}} %", |     "manuallytriggered.healthnstamina.percent": "La santé est de {{health}} % et l'endurance est de {{stamina}} %", | ||||||
|     "manuallytriggered.healthnstamina.normal":"La santé est {{health}} et l'endurance est {{stamina}}", |     "manuallytriggered.healthnstamina.normal": "La santé est {{health}} et l'endurance est {{stamina}}", | ||||||
|     "readtile.sprinkler.pressurenozzle":"Sous pression {{value}}", |     "readtile.sprinkler.pressurenozzle": "Sous pression {{value}}", | ||||||
|     "readtile.sprinkler.enricher":"Enrichissant {{value}}" |     "readtile.sprinkler.enricher": "Enrichissant {{value}}", | ||||||
|  |     "patch.animal_query_menu.heart": "Nombre de cœurs : {{count}}", | ||||||
|  |     "patch.trash_bear.wanted_item": "{{trash_bear_name}} veut {{item_name}} !" | ||||||
| } | } | ||||||
| @@ -2,15 +2,17 @@ | |||||||
|     "warnings.health": "Figyelem! Az egészségi állapot {{érték}} százalék!", |     "warnings.health": "Figyelem! Az egészségi állapot {{érték}} százalék!", | ||||||
|     "warnings.stamina": "Figyelem! Az állóképesség {{value}} százalék!", |     "warnings.stamina": "Figyelem! Az állóképesség {{value}} százalék!", | ||||||
|     "warnings.time": "Figyelem! Az idő {{érték}}", |     "warnings.time": "Figyelem! Az idő {{érték}}", | ||||||
|     "grandpastory.scene0":"Nagypapa, a halálos ágyán.", |     "grandpastory.scene0": "Nagypapa, a halálos ágyán.", | ||||||
|     "grandpastory.scene4":"A JoJa corp.-nál dolgozó alkalmazottak", |     "grandpastory.scene4": "A JoJa corp.-nál dolgozó alkalmazottak", | ||||||
|     "grandpastory.scene5":"Alkalmazottak a fülkéiben, néhányuk kimerültnek tűnik, beleértve Önt is.", |     "grandpastory.scene5": "Alkalmazottak a fülkéiben, néhányuk kimerültnek tűnik, beleértve Önt is.", | ||||||
|     "grandpastory.scene6":"Az asztalodhoz érve megtalálod a nagypapa levelét.", |     "grandpastory.scene6": "Az asztalodhoz érve megtalálod a nagypapa levelét.", | ||||||
|     "grandpastory.letteropen":"Kattintson a bal gombbal a nagypapa levelének megnyitásához", |     "grandpastory.letteropen": "Kattintson a bal gombbal a nagypapa levelének megnyitásához", | ||||||
|     "intro.scene3":"Utazás a Stardew Valley buszmegállóhoz", |     "intro.scene3": "Utazás a Stardew Valley buszmegállóhoz", | ||||||
|     "intro.scene4":"Stardew-völgy 0.5 mérföldre van", |     "intro.scene4": "Stardew-völgy 0.5 mérföldre van", | ||||||
|     "manuallytriggered.healthnstamina.percent":"Az egészségi állapot {{health}} %, az állóképesség pedig {{stamina}} %", |     "manuallytriggered.healthnstamina.percent": "Az egészségi állapot {{health}} %, az állóképesség pedig {{stamina}} %", | ||||||
|     "manuallytriggered.healthnstamina.normal":"Az egészség {{health}}, az állóképesség pedig {{stamina}}", |     "manuallytriggered.healthnstamina.normal": "Az egészség {{health}}, az állóképesség pedig {{stamina}}", | ||||||
|     "readtile.sprinkler.pressurenozzle":"Nyomás alatt {{value}}", |     "readtile.sprinkler.pressurenozzle": "Nyomás alatt {{value}}", | ||||||
|     "readtile.sprinkler.enricher":"Gazdagítás {{value}}" |     "readtile.sprinkler.enricher": "Gazdagítás {{value}}", | ||||||
|  |     "patch.animal_query_menu.heart": "Szív szám: {{count}}", | ||||||
|  |     "patch.trash_bear.wanted_item": "{{trash_bear_name}} szeretné {{item_name}}!" | ||||||
| } | } | ||||||
| @@ -2,15 +2,17 @@ | |||||||
|     "warnings.health": "Avvertimento! La salute è al {{value}} percento!", |     "warnings.health": "Avvertimento! La salute è al {{value}} percento!", | ||||||
|     "warnings.stamina": "Avvertimento! La resistenza è al {{value}} percento!", |     "warnings.stamina": "Avvertimento! La resistenza è al {{value}} percento!", | ||||||
|     "warnings.time": "Avvertimento! L'ora è {{value}}", |     "warnings.time": "Avvertimento! L'ora è {{value}}", | ||||||
|     "grandpastory.scene0":"Il nonno, sul letto di morte.", |     "grandpastory.scene0": "Il nonno, sul letto di morte.", | ||||||
|     "grandpastory.scene4":"Dipendenti che lavorano in JoJa corp.", |     "grandpastory.scene4": "Dipendenti che lavorano in JoJa corp.", | ||||||
|     "grandpastory.scene5":"Impiegati nei loro cubicoli, alcuni di loro sembrano esausti, compreso te.", |     "grandpastory.scene5": "Impiegati nei loro cubicoli, alcuni di loro sembrano esausti, compreso te.", | ||||||
|     "grandpastory.scene6":"Raggiungi la tua scrivania e trovi la lettera del nonno.", |     "grandpastory.scene6": "Raggiungi la tua scrivania e trovi la lettera del nonno.", | ||||||
|     "grandpastory.letteropen":"Fare clic con il tasto sinistro per aprire la lettera del nonno", |     "grandpastory.letteropen": "Fare clic con il tasto sinistro per aprire la lettera del nonno", | ||||||
|     "intro.scene3":"In viaggio verso la fermata dell'autobus di Stardew Valley", |     "intro.scene3": "In viaggio verso la fermata dell'autobus di Stardew Valley", | ||||||
|     "intro.scene4":"Stardew Valley 0.5 miglia di distanza", |     "intro.scene4": "Stardew Valley 0.5 miglia di distanza", | ||||||
|     "manuallytriggered.healthnstamina.percent":"La salute è {{health}} % e la resistenza è {{stamina}} %", |     "manuallytriggered.healthnstamina.percent": "La salute è {{health}} % e la resistenza è {{stamina}} %", | ||||||
|     "manuallytriggered.healthnstamina.normal":"La salute è {{health}} e la resistenza è {{stamina}}", |     "manuallytriggered.healthnstamina.normal": "La salute è {{health}} e la resistenza è {{stamina}}", | ||||||
|     "readtile.sprinkler.pressurenozzle":"Pressurizzato {{value}}", |     "readtile.sprinkler.pressurenozzle": "Pressurizzato {{value}}", | ||||||
|     "readtile.sprinkler.enricher":"Arricchimento {{value}}" |     "readtile.sprinkler.enricher": "Arricchimento {{value}}", | ||||||
|  |     "patch.animal_query_menu.heart": "Conteggio cuori: {{count}}", | ||||||
|  |     "patch.trash_bear.wanted_item": "{{trash_bear_name}} vuole {{item_name}}!" | ||||||
| } | } | ||||||
| @@ -2,15 +2,17 @@ | |||||||
|     "warnings.health": "警告!健康状態は{{value}}パーセントです!", |     "warnings.health": "警告!健康状態は{{value}}パーセントです!", | ||||||
|     "warnings.stamina": "警告!スタミナは{{value}}パーセントです!", |     "warnings.stamina": "警告!スタミナは{{value}}パーセントです!", | ||||||
|     "warnings.time": "警告!時間は{{value}}です", |     "warnings.time": "警告!時間は{{value}}です", | ||||||
|     "grandpastory.scene0":"おじいちゃん、彼の死の床に。", |     "grandpastory.scene0": "おじいちゃん、彼の死の床に。", | ||||||
|     "grandpastory.scene4":"JoJacorpで働く従業員。", |     "grandpastory.scene4": "JoJacorpで働く従業員。", | ||||||
|     "grandpastory.scene5":"彼らのキュービクルの従業員、彼らの何人かはあなた自身を含めて疲れ果てているように見えます。", |     "grandpastory.scene5": "彼らのキュービクルの従業員、彼らの何人かはあなた自身を含めて疲れ果てているように見えます。", | ||||||
|     "grandpastory.scene6":"おじいちゃんの手紙を見つけて机に着きます。", |     "grandpastory.scene6": "おじいちゃんの手紙を見つけて机に着きます。", | ||||||
|     "grandpastory.letteropen":"左クリックしておじいちゃんの手紙を開く", |     "grandpastory.letteropen": "左クリックしておじいちゃんの手紙を開く", | ||||||
|     "intro.scene3":"スターデューバレーバス停への移動", |     "intro.scene3": "スターデューバレーバス停への移動", | ||||||
|     "intro.scene4":"0.5マイル離れたスターデューバレー", |     "intro.scene4": "0.5マイル離れたスターデューバレー", | ||||||
|     "manuallytriggered.healthnstamina.percent":"体力は {{health}} %、スタミナは {{stamina}} %", |     "manuallytriggered.healthnstamina.percent": "体力は {{health}} %、スタミナは {{stamina}} %", | ||||||
|     "manuallytriggered.healthnstamina.normal":"体力は{{health}}、スタミナは{{stamina}}です", |     "manuallytriggered.healthnstamina.normal": "体力は{{health}}、スタミナは{{stamina}}です", | ||||||
|     "readtile.sprinkler.pressurenozzle":"加圧 {{value}}", |     "readtile.sprinkler.pressurenozzle": "加圧 {{value}}", | ||||||
|     "readtile.sprinkler.enricher":"豊かにする {{value}}" |     "readtile.sprinkler.enricher": "豊かにする {{value}}", | ||||||
|  |     "patch.animal_query_menu.heart": "ハート数:{{count}}", | ||||||
|  |     "patch.trash_bear.wanted_item": "{{trash_bear_name}}は{{item_name}}が欲しい!" | ||||||
| } | } | ||||||
| @@ -2,15 +2,17 @@ | |||||||
|     "warnings.health": "경고! 건강은 {{value}}퍼센트입니다!", |     "warnings.health": "경고! 건강은 {{value}}퍼센트입니다!", | ||||||
|     "warnings.stamina": "경고! 체력은 {{value}}퍼센트입니다!", |     "warnings.stamina": "경고! 체력은 {{value}}퍼센트입니다!", | ||||||
|     "warnings.time": "경고! 시간은 {{value}}입니다", |     "warnings.time": "경고! 시간은 {{value}}입니다", | ||||||
|     "grandpastory.scene0":"임종을 앞둔 할아버지.", |     "grandpastory.scene0": "임종을 앞둔 할아버지.", | ||||||
|     "grandpastory.scene4":"(주)조자에서 근무하는 직원들", |     "grandpastory.scene4": "(주)조자에서 근무하는 직원들", | ||||||
|     "grandpastory.scene5":"칸막이에 있는 직원들, 당신을 포함하여 몇몇은 지쳐 보입니다.", |     "grandpastory.scene5": "칸막이에 있는 직원들, 당신을 포함하여 몇몇은 지쳐 보입니다.", | ||||||
|     "grandpastory.scene6":"책상에 다가가 할아버지의 편지를 찾습니다.", |     "grandpastory.scene6": "책상에 다가가 할아버지의 편지를 찾습니다.", | ||||||
|     "grandpastory.letteropen":"할아버지의 편지를 열려면 왼쪽 클릭", |     "grandpastory.letteropen": "할아버지의 편지를 열려면 왼쪽 클릭", | ||||||
|     "intro.scene3":"스타듀밸리 버스정류장으로 이동", |     "intro.scene3": "스타듀밸리 버스정류장으로 이동", | ||||||
|     "intro.scene4":"스타듀 밸리에서 0.8km 떨어짐", |     "intro.scene4": "스타듀 밸리에서 0.8km 떨어짐", | ||||||
|     "manuallytriggered.healthnstamina.percent":"체력은 {{health}} %이고 체력은 {{stamina}} %입니다.", |     "manuallytriggered.healthnstamina.percent": "체력은 {{health}} %이고 체력은 {{stamina}} %입니다.", | ||||||
|     "manuallytriggered.healthnstamina.normal":"체력은 {{health}}이고 체력은 {{stamina}}입니다.", |     "manuallytriggered.healthnstamina.normal": "체력은 {{health}}이고 체력은 {{stamina}}입니다.", | ||||||
|     "readtile.sprinkler.pressurenozzle":"가압 {{value}}", |     "readtile.sprinkler.pressurenozzle": "가압 {{value}}", | ||||||
|     "readtile.sprinkler.enricher":"풍부하게 하기 {{value}}" |     "readtile.sprinkler.enricher": "풍부하게 하기 {{value}}", | ||||||
|  |     "patch.animal_query_menu.heart": "하트 개수: {{count}}", | ||||||
|  |     "patch.trash_bear.wanted_item": "{{trash_bear_name}}가 {{item_name}}이(가) 필요합니다!" | ||||||
| } | } | ||||||
| @@ -2,15 +2,17 @@ | |||||||
|     "warnings.health": "Aviso! A saúde está em {{value}} por cento!", |     "warnings.health": "Aviso! A saúde está em {{value}} por cento!", | ||||||
|     "warnings.stamina": "Aviso! A resistência está em {{value}} por cento!", |     "warnings.stamina": "Aviso! A resistência está em {{value}} por cento!", | ||||||
|     "warnings.time": "Aviso! O tempo é {{value}}", |     "warnings.time": "Aviso! O tempo é {{value}}", | ||||||
|     "grandpastory.scene0":"Vovô, em seu leito de morte.", |     "grandpastory.scene0": "Vovô, em seu leito de morte.", | ||||||
|     "grandpastory.scene4":"Funcionários que trabalham na JoJa corp.", |     "grandpastory.scene4": "Funcionários que trabalham na JoJa corp.", | ||||||
|     "grandpastory.scene5":"Funcionários em seus cubículos, alguns deles parecem exaustos, incluindo você.", |     "grandpastory.scene5": "Funcionários em seus cubículos, alguns deles parecem exaustos, incluindo você.", | ||||||
|     "grandpastory.scene6":"Você chega à sua mesa encontrando a carta do vovô.", |     "grandpastory.scene6": "Você chega à sua mesa encontrando a carta do vovô.", | ||||||
|     "grandpastory.letteropen":"Clique com o botão esquerdo para abrir a carta do vovô", |     "grandpastory.letteropen": "Clique com o botão esquerdo para abrir a carta do vovô", | ||||||
|     "intro.scene3":"Viajar para o ponto de ônibus Stardew Valley", |     "intro.scene3": "Viajar para o ponto de ônibus Stardew Valley", | ||||||
|     "intro.scene4":"Vale Stardew a 0.5 km de distância", |     "intro.scene4": "Vale Stardew a 0.5 km de distância", | ||||||
|     "manuallytriggered.healthnstamina.percent":"Saúde é {{health}} % e Stamina é {{stamina}} %", |     "manuallytriggered.healthnstamina.percent": "Saúde é {{health}} % e Stamina é {{stamina}} %", | ||||||
|     "manuallytriggered.healthnstamina.normal":"Saúde é {{health}} e Stamina é {{stamina}}", |     "manuallytriggered.healthnstamina.normal": "Saúde é {{health}} e Stamina é {{stamina}}", | ||||||
|     "readtile.sprinkler.pressurenozzle":"Pressurizada {{value}}", |     "readtile.sprinkler.pressurenozzle": "Pressurizada {{value}}", | ||||||
|     "readtile.sprinkler.enricher":"Enriquecimento {{value}}" |     "readtile.sprinkler.enricher": "Enriquecimento {{value}}", | ||||||
|  |     "patch.animal_query_menu.heart": "Contagem de corações: {{count}}", | ||||||
|  |     "patch.trash_bear.wanted_item": "{{trash_bear_name}} quer {{item_name}}!" | ||||||
| } | } | ||||||
| @@ -2,15 +2,17 @@ | |||||||
|     "warnings.health": "Предупреждение! Здоровье составляет {{value}} процентов!", |     "warnings.health": "Предупреждение! Здоровье составляет {{value}} процентов!", | ||||||
|     "warnings.stamina": "Предупреждение! Выносливость составляет {{value}} процентов!", |     "warnings.stamina": "Предупреждение! Выносливость составляет {{value}} процентов!", | ||||||
|     "warnings.time": "Предупреждение! Время {{value}}", |     "warnings.time": "Предупреждение! Время {{value}}", | ||||||
|     "grandpastory.scene0":"Дедушка на смертном одре.", |     "grandpastory.scene0": "Дедушка на смертном одре.", | ||||||
|     "grandpastory.scene4":"Сотрудники, работающие в JoJa corp.", |     "grandpastory.scene4": "Сотрудники, работающие в JoJa corp.", | ||||||
|     "grandpastory.scene5":"Сотрудники в своих кабинетах, некоторые из них выглядят измученными, в том числе и вы.", |     "grandpastory.scene5": "Сотрудники в своих кабинетах, некоторые из них выглядят измученными, в том числе и вы.", | ||||||
|     "grandpastory.scene6":"Вы подходите к своему столу и находите дедушкино письмо.", |     "grandpastory.scene6": "Вы подходите к своему столу и находите дедушкино письмо.", | ||||||
|     "grandpastory.letteropen":"Щелкните левой кнопкой мыши, чтобы открыть письмо дедушки", |     "grandpastory.letteropen": "Щелкните левой кнопкой мыши, чтобы открыть письмо дедушки", | ||||||
|     "intro.scene3":"Поездка на автобусную остановку Stardew Valley", |     "intro.scene3": "Поездка на автобусную остановку Stardew Valley", | ||||||
|     "intro.scene4":"Долина Стардью: 0.8 км", |     "intro.scene4": "Долина Стардью: 0.8 км", | ||||||
|     "manuallytriggered.healthnstamina.percent":"Здоровье составляет {{health}}%, а выносливость - {{stamina}}%", |     "manuallytriggered.healthnstamina.percent": "Здоровье составляет {{health}}%, а выносливость - {{stamina}}%", | ||||||
|     "manuallytriggered.healthnstamina.normal":"Здоровье – {{health}}, а выносливость – {{stamina}}.", |     "manuallytriggered.healthnstamina.normal": "Здоровье – {{health}}, а выносливость – {{stamina}}.", | ||||||
|     "readtile.sprinkler.pressurenozzle":"под давлением {{value}}", |     "readtile.sprinkler.pressurenozzle": "под давлением {{value}}", | ||||||
|     "readtile.sprinkler.enricher":"Обогащение {{value}}" |     "readtile.sprinkler.enricher": "Обогащение {{value}}", | ||||||
|  |     "patch.animal_query_menu.heart": "Количество сердец: {{count}}", | ||||||
|  |     "patch.trash_bear.wanted_item": "{{trash_bear_name}} хочет {{item_name}}!" | ||||||
| } | } | ||||||
| @@ -2,15 +2,17 @@ | |||||||
|     "warnings.health": "Uyarı! Sağlık yüzde {{değer}}!", |     "warnings.health": "Uyarı! Sağlık yüzde {{değer}}!", | ||||||
|     "warnings.stamina": "uyarı! Dayanıklılık yüzde {{değer}}!", |     "warnings.stamina": "uyarı! Dayanıklılık yüzde {{değer}}!", | ||||||
|     "warnings.time": "Uyarı! Zaman {{değer}}", |     "warnings.time": "Uyarı! Zaman {{değer}}", | ||||||
|     "grandpastory.scene0":"Büyükbaba, ölüm döşeğinde.", |     "grandpastory.scene0": "Büyükbaba, ölüm döşeğinde.", | ||||||
|     "grandpastory.scene4":"JoJa şirketinde çalışan çalışanlar", |     "grandpastory.scene4": "JoJa şirketinde çalışan çalışanlar", | ||||||
|     "grandpastory.scene5":"Kabinlerinde çalışanlar, siz de dahil olmak üzere bazıları bitkin görünüyor.", |     "grandpastory.scene5": "Kabinlerinde çalışanlar, siz de dahil olmak üzere bazıları bitkin görünüyor.", | ||||||
|     "grandpastory.scene6":"Dedenizin mektubunu bulmak için masanıza ulaşıyorsunuz.", |     "grandpastory.scene6": "Dedenizin mektubunu bulmak için masanıza ulaşıyorsunuz.", | ||||||
|     "grandpastory.letteropen":"Büyükbabanın mektubunu açmak için sol tıklayın", |     "grandpastory.letteropen": "Büyükbabanın mektubunu açmak için sol tıklayın", | ||||||
|     "intro.scene3":"Stardew Valley otobüs durağına seyahat", |     "intro.scene3": "Stardew Valley otobüs durağına seyahat", | ||||||
|     "intro.scene4":"Stardew vadisi 0.5 mil uzakta", |     "intro.scene4": "Stardew vadisi 0.5 mil uzakta", | ||||||
|     "manuallytriggered.healthnstamina.percent":"Sağlık %{{health}} ve Dayanıklılık %{{stamina}}", |     "manuallytriggered.healthnstamina.percent": "Sağlık %{{health}} ve Dayanıklılık %{{stamina}}", | ||||||
|     "manuallytriggered.healthnstamina.normal":"Sağlık {{health}} ve Dayanıklılık {{stamina}}", |     "manuallytriggered.healthnstamina.normal": "Sağlık {{health}} ve Dayanıklılık {{stamina}}", | ||||||
|     "readtile.sprinkler.pressurenozzle":"basınçlı {{value}}", |     "readtile.sprinkler.pressurenozzle": "basınçlı {{value}}", | ||||||
|     "readtile.sprinkler.enricher":"zenginleştirici {{value}}" |     "readtile.sprinkler.enricher": "zenginleştirici {{value}}", | ||||||
|  |     "patch.animal_query_menu.heart": "Kalp Sayısı: {{count}}", | ||||||
|  |     "patch.trash_bear.wanted_item": "{{trash_bear_name}} {{item_name}} istiyor!" | ||||||
| } | } | ||||||
| @@ -2,15 +2,17 @@ | |||||||
|     "warnings.health": "警告!健康状况为 {{value}} 百分!", |     "warnings.health": "警告!健康状况为 {{value}} 百分!", | ||||||
|     "warnings.stamina": "警告!耐力为 {{value}} 百分!", |     "warnings.stamina": "警告!耐力为 {{value}} 百分!", | ||||||
|     "warnings.time": "警告!时间是 {{value}}", |     "warnings.time": "警告!时间是 {{value}}", | ||||||
|     "grandpastory.scene0":"爷爷,去世前。", |     "grandpastory.scene0": "爷爷,去世前。", | ||||||
|     "grandpastory.scene4":"在 JoJa corp. 工作的员工", |     "grandpastory.scene4": "在 JoJa corp. 工作的员工", | ||||||
|     "grandpastory.scene5":"员工在他们的办公室里,他们看起来很累,这其中也包括你自己。", |     "grandpastory.scene5": "员工在他们的办公室里,他们看起来很累,这其中也包括你自己。", | ||||||
|     "grandpastory.scene6":"你走到办公桌前,找到了爷爷的信。", |     "grandpastory.scene6": "你走到办公桌前,找到了爷爷的信。", | ||||||
|     "grandpastory.letteropen":"左方括号打开爷爷的信", |     "grandpastory.letteropen": "左方括号打开爷爷的信", | ||||||
|     "intro.scene3":"前往星露谷物语巴士站", |     "intro.scene3": "前往星露谷物语巴士站", | ||||||
|     "intro.scene4":"星露谷物语 0.5 英里外", |     "intro.scene4": "星露谷物语 0.5 英里外", | ||||||
|     "manuallytriggered.healthnstamina.percent":"健康为 {{health}} %,耐力为 {{stamina}} %", |     "manuallytriggered.healthnstamina.percent": "健康为 {{health}} %,耐力为 {{stamina}} %", | ||||||
|     "manuallytriggered.healthnstamina.normal":"健康为 {{health}},耐力为 {{stamina}}", |     "manuallytriggered.healthnstamina.normal": "健康为 {{health}},耐力为 {{stamina}}", | ||||||
|     "readtile.sprinkler.pressurenozzle":"加压 {{value}}", |     "readtile.sprinkler.pressurenozzle": "加压 {{value}}", | ||||||
|     "readtile.sprinkler.enricher":"丰富 {{value}}" |     "readtile.sprinkler.enricher": "丰富 {{value}}", | ||||||
|  |     "patch.animal_query_menu.heart": "心数量:{{count}}", | ||||||
|  |     "patch.trash_bear.wanted_item": "{{trash_bear_name}} 想要 {{item_name}}!" | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user