We Need to Go Deeper · handler “WNTGD”
Version 3
Release notes
ultra wide fix
- Released
- Size
- 611 KB
- Downloads
- 10
- Check
- Verified
- SHA-256
- 7ac6b00a9cdb9e34bac20a0e81dab70a65c4e6809d14465cedf4ff1b5f1baa6f
Files 25
| Path | Size |
|---|---|
| handler.js | 13 KB |
| WeNeedToGoDeeper/BepInEx/config/WeNeedToGoDeeperFix.cfg | 570 B |
| WeNeedToGoDeeper/BepInEx/core/0Harmony.dll | 200 KB |
| WeNeedToGoDeeper/BepInEx/core/0Harmony.xml | 261 KB |
| WeNeedToGoDeeper/BepInEx/core/0Harmony20.dll | 109 KB |
| WeNeedToGoDeeper/BepInEx/core/BepInEx.dll | 114 KB |
| WeNeedToGoDeeper/BepInEx/core/BepInEx.Harmony.dll | 5.5 KB |
| WeNeedToGoDeeper/BepInEx/core/BepInEx.Harmony.xml | 4.0 KB |
| WeNeedToGoDeeper/BepInEx/core/BepInEx.Preloader.dll | 42 KB |
| WeNeedToGoDeeper/BepInEx/core/BepInEx.Preloader.xml | 7.8 KB |
| WeNeedToGoDeeper/BepInEx/core/BepInEx.xml | 84 KB |
| WeNeedToGoDeeper/BepInEx/core/HarmonyXInterop.dll | 23 KB |
| WeNeedToGoDeeper/BepInEx/core/Mono.Cecil.dll | 332 KB |
| WeNeedToGoDeeper/BepInEx/core/Mono.Cecil.Mdb.dll | 42 KB |
| WeNeedToGoDeeper/BepInEx/core/Mono.Cecil.Pdb.dll | 85 KB |
| WeNeedToGoDeeper/BepInEx/core/Mono.Cecil.Rocks.dll | 27 KB |
| WeNeedToGoDeeper/BepInEx/core/MonoMod.RuntimeDetour.dll | 104 KB |
| WeNeedToGoDeeper/BepInEx/core/MonoMod.RuntimeDetour.xml | 9.2 KB |
| WeNeedToGoDeeper/BepInEx/core/MonoMod.Utils.dll | 184 KB |
| WeNeedToGoDeeper/BepInEx/core/MonoMod.Utils.xml | 77 KB |
| WeNeedToGoDeeper/BepInEx/Plugins/WeNeedToGoDeeperFix.dll | 7.5 KB |
| WeNeedToGoDeeper/changelog.txt | 58 B |
| WeNeedToGoDeeper/doorstop_config.ini | 891 B |
| WeNeedToGoDeeper/README.md | 1.1 KB |
| WeNeedToGoDeeper/winhttp.dll | 25 KB |
handler.js
Plain textHub.Handler.Version = 3; // Released at https://hub.splitscreen.me/ on Fri Mar 18 2022 09:21:33 GMT+0000 (Coordinated Universal Time).
Hub.Handler.Id = "vBTed4tXx854xWf2Z";
Hub.Maintainer.Name = "Talos91";
Hub.Maintainer.Id = "eeL7HAz8zJovChWw4";
var answers1 = ["Yes", "No"];
Game.AddOption(
"Ultra wide and custom resolutions fix by Lyall?",
"Fixes the UI distortion in horizontal UW instances, do not use if you already have it installed in your main game files.",
"Fix",
answers1
);
Game.ExecutableContext = ["WeNeedToGoDeeper_Data"];
Game.DirSymlinkExclusions = ["WeNeedToGoDeeper_Data\\Plugins", "BepInEx\\config"];
Game.FileSymlinkExclusions = ["steam_api.dll", "steam_api64.dll", "steam_appid.txt", "doorstop_config.ini", "winhttp.dll", "WeNeedToGoDeeperFix.cfg", "WeNeedToGoDeeperFix.dll", "xinput1_3.dll"];
Game.NeedsSteamEmulation = false;
Game.UseGoldberg = true;
Game.HandlerInterval = 100;
Game.SymlinkExe = false;
Game.SymlinkGame = true;
Game.SymlinkFolders = false;
Game.ExecutableName = "WeNeedToGoDeeper.exe";
Game.SteamID = "307110";
Game.GUID = "We Need To Go Deeper";
Game.GameName = "We Need To Go Deeper";
Game.MaxPlayers = 4;
Game.MaxPlayersOneMonitor = 4;
Game.LauncherTitle = "";
Game.HideTaskbar = false;
Game.NotTopMost = true;
Game.Hook.ForceFocus = true;
Game.Hook.ForceFocusWindowName = "We Need to Go Deeper";
Game.FakeFocus = true;
Game.FakeFocusInterval = 7000;
Game.SendFakeFocusMsg = true;
Game.Hook.DInputEnabled = false;
Game.Hook.XInputEnabled = true;
Game.Hook.XInputReroute = false;
Game.Hook.CustomDllEnabled = false;
Game.CreateSingleDeviceFile = false;
Game.BlockRawInput = true;
Game.StartHookInstances = "2,3,4";
Game.UserProfileSavePath = "AppData\\LocalLow\\Deli Interactive\\We Need to Go Deeper";
Game.Description =
"IMPORTANT: On first run select the correct custom resolution in the game options-video options and click save in each instance otherwise they will resize again on their own after you click play in the game (if you have a 1920x1080 monitor for example select 1920x540 res in all for horizontal split-screen or 960x1080 for vertical). You need to create custom resolutions in your AMD/Nvidia/Intel panel (for example: 960x540, 1920x540 etc.) so the game can see and use them, set the correct custom res in-game for the instances to resize correctly and for the mice to work correctly. Select the We Need To Go Deeper process in the Nucleus process picker window after you set the correct custom resolution in an instance, click refresh if you do not see the game process. Only working with one gamepad as the first player/instance (because the game has very poor controller support and uses Unity horrible default input for controllers instead of xinput, connect only one gamepad) and multiple keyboards and mice. If you use keyboards and mice after all the instances have launched, resized and positioned correctly, press the END key to lock the input for all instances to have their own cursor. You need to left click each mouse to make the emulated cursors appear after locking the input. Press the END key again to unlock the input when you finish playing. You can also use CTRL+Q to close Nucleus and all its instances when the input is unlocked. Create a LAN or Online game in the first instance and join in the others, LAN has a max 2 players cap in the same PC. Make sure players do not use the customization option at the same time or one player model will be invisible.";
Game.ForceProcessPick = true;
Game.PromptBetweenInstances = false;
Game.PauseBetweenProcessGrab = 10;
Game.PauseBetweenStarts = 30;
//USS deprecated options:
Game.HookSetCursorPos = false;
Game.HookGetCursorPos = false;
Game.HookGetKeyState = false;
Game.HookGetAsyncKeyState = false;
Game.HookGetKeyboardState = false;
Game.HookFilterRawInput = false;
Game.HookFilterMouseMessages = false;
Game.HookUseLegacyInput = false;
Game.HookDontUpdateLegacyInMouseMsg = false;
Game.HookMouseVisibility = false;
Game.InjectHookXinput = false;
Game.SendNormalMouseInput = false;
Game.SendNormalKeyboardInput = false;
Game.SendScrollWheel = false;
Game.ForwardRawKeyboardInput = false;
Game.ForwardRawMouseInput = false;
Game.HookReRegisterRawInput = false;
Game.HookReRegisterRawInputMouse = false;
Game.HookReRegisterRawInputKeyboard = false;
Game.DrawFakeMouseCursor = false;
//ProtoInput:
Game.SupportsMultipleKeyboardsAndMice = true;
Game.ProtoInput.InjectStartup = false;
Game.ProtoInput.InjectRuntime_RemoteLoadMethod = false;
Game.ProtoInput.InjectRuntime_EasyHookMethod = true;
Game.ProtoInput.InjectRuntime_EasyHookStealthMethod = false;
Game.LockInputAtStart = false;
Game.LockInputSuspendsExplorer = true;
Game.ProtoInput.FreezeExternalInputWhenInputNotLocked = false;
Game.LockInputToggleKey = 0x23;
Game.ProtoInput.RenameHandlesHook = false;
Game.ProtoInput.RenameHandles = [];
Game.ProtoInput.RenameNamedPipes = [];
Game.ProtoInput.RegisterRawInputHook = true;
Game.ProtoInput.GetRawInputDataHook = false;
Game.ProtoInput.MessageFilterHook = true;
Game.ProtoInput.GetCursorPosHook = false;
Game.ProtoInput.SetCursorPosHook = false;
Game.ProtoInput.GetKeyStateHook = false;
Game.ProtoInput.GetAsyncKeyStateHook = false;
Game.ProtoInput.GetKeyboardStateHook = false;
Game.ProtoInput.CursorVisibilityHook = false;
Game.ProtoInput.ClipCursorHook = true;
Game.ProtoInput.FocusHooks = false;
Game.ProtoInput.DrawFakeCursor = false;
Game.ProtoInput.ClipCursorHookCreatesFakeClip = false;
Game.ProtoInput.EnableToggleFakeCursorVisibilityShortcut = false;
Game.ProtoInput.DontShowCursorWhenImageUpdated = false;
Game.ProtoInput.SetWindowPosHook = false;
Game.ProtoInput.SetWindowStyleHook = false;
Game.ProtoInput.AutoHideTaskbar = true;
//Game.HideDesktop = true;
Game.ProtoInput.RawInputFilter = false;
Game.ProtoInput.MouseMoveFilter = false;
Game.ProtoInput.MouseActivateFilter = false;
Game.ProtoInput.WindowActivateFilter = false;
Game.ProtoInput.WindowActvateAppFilter = false;
Game.ProtoInput.MouseWheelFilter = false;
Game.ProtoInput.MouseButtonFilter = false;
Game.ProtoInput.KeyboardButtonFilter = true;
Game.ProtoInput.SendMouseWheelMessages = true;
Game.ProtoInput.SendMouseButtonMessages = true;
Game.ProtoInput.SendMouseMovementMessages = true;
Game.ProtoInput.SendKeyboardButtonMessages = true;
Game.ProtoInput.XinputHook = false;
Game.ProtoInput.UseOpenXinput = false;
Game.ProtoInput.UseDinputRedirection = false;
Game.ProtoInput.DinputDeviceHook = false;
Game.ProtoInput.DinputHookAlsoHooksGetDeviceState = false;
Game.ProtoInput.MultipleProtoControllers = false;
Game.ProtoInput.EnableFocusMessageLoop = false;
//Game.ProtoInput.FocusLoopIntervalMilliseconds = 5;
//Game.ProtoInput.FocusLoop_WM_ACTIVATE = true;
//Game.ProtoInput.FocusLoop_WM_ACTIVATEAPP = true;
//Game.ProtoInput.FocusLoop_WM_NCACTIVATE = true;
//Game.ProtoInput.FocusLoop_WM_SETFOCUS = true;
//Game.ProtoInput.FocusLoop_WM_MOUSEACTIVATE = true;
Game.ProtoInput.BlockedMessages = [0x0008, 0x02a3, 0x02a1]; // Blocks WM_KILLFOCUS, WM_MOUSEHOVER and WM_MOUSELEAVE
Game.Play = function() {
var Args = (Context.Args = " -popupwindow");
Context.StartArguments = Args;
Context.EditRegKey("HKEY_CURRENT_USER", "SOFTWARE\\Deli Interactive\\We Need to Go Deeper", "Screenmanager Fullscreen mode_h3630240806", 3, Nucleus.RegType.DWord);
//Context.EditRegKey("HKEY_CURRENT_USER", "SOFTWARE\\Deli Interactive\\We Need to Go Deeper", "Screenmanager Resolution Height_h2627697771", Context.Height, Nucleus.RegType.DWord);
//Context.EditRegKey("HKEY_CURRENT_USER", "SOFTWARE\\Deli Interactive\\We Need to Go Deeper", "Screenmanager Resolution Width_h182942802", Context.Width, Nucleus.RegType.DWord);
if (Context.IsKeyboardPlayer) {
Game.ProtoInput.KeyboardButtonFilter = true;
} else {
Game.ProtoInput.KeyboardButtonFilter = false;
}
if (Context.HasKeyboardPlayer == true) {
Game.SetForegroundWindowElsewhere = true;
} else {
Game.SetForegroundWindowElsewhere = false;
}
var fix = Context.Options["Fix"];
if (fix == "Yes") {
Context.CopyScriptFolder(Context.GetFolder(Nucleus.Folder.InstancedGameFolder));
var txtPath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\BepInEx\\config\\WeNeedToGoDeeperFix.cfg";
var dict = [
Context.FindLineNumberInTextFile(txtPath, "ResolutionWidth", Nucleus.SearchType.StartsWith) + "|ResolutionWidth = " + Context.Width,
Context.FindLineNumberInTextFile(txtPath, "ResolutionHeight", Nucleus.SearchType.StartsWith) + "|ResolutionHeight = " + Context.Height,
Context.FindLineNumberInTextFile(txtPath, "Fullscreen", Nucleus.SearchType.StartsWith) + "|Fullscreen = false"
];
Context.ReplaceLinesInTextFile(txtPath, dict);
}
if (fix == "No") {
Game.KeepMonitorAspectRatio = true;
}
Game.ProtoInput.OnInputLocked = function() {
for (var i = 0; i < PlayerList.Count; i++) {
var player = PlayerList[i];
ProtoInput.InstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.GetCursorPosHookID);
ProtoInput.InstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.SetCursorPosHookID);
ProtoInput.InstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.GetKeyStateHookID);
ProtoInput.InstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.GetAsyncKeyStateHookID);
ProtoInput.InstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.GetKeyboardStateHookID);
ProtoInput.InstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.CursorVisibilityStateHookID);
ProtoInput.InstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.GetRawInputDataHookID);
ProtoInput.InstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.FocusHooksHookID);
//Avoid the mouse move filter unless absolutely necessary as it can massively affect performance if the game gets primary input from mouse move messages
//ProtoInput.EnableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.MouseMoveFilterID);
ProtoInput.EnableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.RawInputFilterID);
ProtoInput.EnableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.MouseActivateFilterID);
ProtoInput.EnableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.WindowActivateFilterID);
ProtoInput.EnableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.WindowActivateAppFilterID);
ProtoInput.EnableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.MouseWheelFilterID);
ProtoInput.EnableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.MouseButtonFilterID);
ProtoInput.SetDrawFakeCursor(player.ProtoInputInstanceHandle, true);
}
};
Game.ProtoInput.OnInputUnlocked = function() {
for (var i = 0; i < PlayerList.Count; i++) {
var player = PlayerList[i];
ProtoInput.UninstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.GetCursorPosHookID);
ProtoInput.UninstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.SetCursorPosHookID);
ProtoInput.UninstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.GetKeyStateHookID);
ProtoInput.UninstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.GetAsyncKeyStateHookID);
ProtoInput.UninstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.GetKeyboardStateHookID);
ProtoInput.UninstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.CursorVisibilityStateHookID);
ProtoInput.UninstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.GetRawInputDataHookID);
ProtoInput.UninstallHook(player.ProtoInputInstanceHandle, ProtoInput.Values.FocusHooksHookID);
ProtoInput.DisableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.RawInputFilterID);
ProtoInput.DisableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.MouseMoveFilterID);
ProtoInput.DisableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.MouseActivateFilterID);
ProtoInput.DisableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.WindowActivateFilterID);
ProtoInput.DisableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.WindowActivateAppFilterID);
ProtoInput.DisableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.MouseWheelFilterID);
ProtoInput.DisableMessageFilter(player.ProtoInputInstanceHandle, ProtoInput.Values.MouseButtonFilterID);
ProtoInput.SetDrawFakeCursor(player.ProtoInputInstanceHandle, false);
}
};
};