Grim Dawn · handler “Grim Dawn”
Version 8
Release notes
merged both the x86 and x64 scripts into one for r5.
- Released
- Size
- 1.9 KB
- Downloads
- 418
- Check
- Verified
- SHA-256
- 5319fd3a45d70a1a922510e34958595c31116c9936e377784540ba2854275ca9
Files 1
| Path | Size |
|---|---|
| handler.js | 5.9 KB |
handler.js
Plain textHub.Handler.Version = 8; // Released at https://hub.splitscreen.me/ on Sun Dec 27 2020 05:52:18 GMT+0000 (UTC).
Hub.Handler.Id = "K8M5mDtTcKu4ofMYn";
Hub.Maintainer.Name = "Talos91";
Hub.Maintainer.Id = "eeL7HAz8zJovChWw4";
var answers1 = ["No", "Yes"];
Game.AddOption("Use the x64 version?", "Select yes if you want to use the x64 exe instead.", "X64", answers1);
Game.ExecutableContext = ["resources"];
Game.KillMutex = ["GrimDawn"];
Game.FileSymlinkExclusions = ["steam_api.dll", "steam_api64.dll", "steam_appid.txt", "winmm.dll"];
Game.NeedsSteamEmulation = false;
Game.UseGoldberg = true;
Game.UseSteamStubDRMPatcher = true;
Game.HandlerInterval = 100;
Game.SymlinkExe = false;
Game.SymlinkGame = true;
Game.SupportsKeyboard = false;
Game.ExecutableName = "grim dawn.exe";
Game.SteamID = "219990";
Game.GUID = "Grim Dawn";
Game.GameName = "Grim Dawn";
Game.MaxPlayers = 4;
Game.MaxPlayersOneMonitor = 4;
Game.LauncherTitle = "";
Game.HideTaskbar = false;
Game.StartArguments = "";
Game.Hook.ForceFocus = true;
Game.Hook.ForceFocusWindowName = "Grim Dawn";
Game.Hook.DInputEnabled = false;
Game.Hook.DInputForceDisable = true;
Game.Hook.XInputEnabled = true;
Game.Hook.XInputReroute = false;
Game.Hook.CustomDllEnabled = false;
Game.XInputPlusDll = ["xinput1_3.dll"];
Game.FakeFocus = false;
Game.HookFocus = true;
Game.UserProfileConfigPath = "Documents\\My Games\\Grim Dawn\\Settings";
Game.UserProfileSavePath = "Documents\\My Games\\Grim Dawn\\save";
Game.Description =
"Press the END key in your keyboard to unlock the main cursor and the input when you finish playing. You can also use CTRL+Q to close Nucleus and all its instances. Vertical Splitscreen for 2 players works best, use a different character per instance. If you have performance issues with gamepads try setting to false the Game.UpdateFakeMouseWithInternalInput line in the script, gamepad cursors will be invisible without that option though.";
Game.PauseBetweenStarts = 25;
Game.SupportsMultipleKeyboardsAndMice = true;
Game.HookSetCursorPos = true;
Game.HookGetCursorPos = true;
Game.HookGetKeyState = false;
Game.HookGetAsyncKeyState = true;
Game.HookGetKeyboardState = false;
Game.HookFilterRawInput = true;
Game.HookFilterMouseMessages = false;
Game.HookUseLegacyInput = false;
Game.HookDontUpdateLegacyInMouseMsg = false;
Game.HookMouseVisibility = false;
Game.SendNormalMouseInput = true;
Game.SendNormalKeyboardInput = true;
Game.SendScrollWheel = true;
Game.ForwardRawKeyboardInput = false;
Game.ForwardRawMouseInput = false;
Game.HookReRegisterRawInput = false;
Game.HookReRegisterRawInputMouse = false;
Game.HookReRegisterRawInputKeyboard = false;
Game.DrawFakeMouseCursor = true;
Game.DrawFakeMouseCursorForControllers = true;
Game.UpdateFakeMouseWithInternalInput = true;
Game.LockInputAtStart = true;
Game.LockInputToggleKey = 0x23;
Game.Play = function() {
var cfgFilePath = Context.GetFolder(Nucleus.Folder.Documents) + "\\My Games\\Grim Dawn\\Settings\\options.txt";
var inactiveUpdateLine = Context.FindLineNumberInTextFile(cfgFilePath, "inactiveUpdateRate", Nucleus.SearchType.Contains);
var cloudLine = Context.FindLineNumberInTextFile(cfgFilePath, "cloudSaving", Nucleus.SearchType.Contains);
var gamepadLine = Context.FindLineNumberInTextFile(cfgFilePath, "gamepadSupport", Nucleus.SearchType.Contains);
var resolutionLine = Context.FindLineNumberInTextFile(cfgFilePath, "resolution", Nucleus.SearchType.Contains);
var windowModeLine = Context.FindLineNumberInTextFile(cfgFilePath, "screenMode", Nucleus.SearchType.Contains);
Context.ReplaceLinesInTextFile(cfgFilePath, [
inactiveUpdateLine + "|inactiveUpdateRate = 1",
cloudLine + "|cloudSaving = false",
gamepadLine + "|gamepadSupport = true",
resolutionLine + "|resolution = " + Context.Width + " " + Context.Height,
windowModeLine + "|screenMode = 2"
]);
var x64 = Context.Options["X64"];
if (x64 == "Yes") {
Context.StartArguments = "/x64";
Game.PauseBetweenProcessGrab = 30;
var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\x64\\winmm.dll");
var savePkgOrigin = System.IO.Path.Combine(Context.NucleusFolder, "utils\\Steam Stub DRM Patcher\\x64\\winmm.dll");
System.IO.File.Copy(savePkgOrigin, savePath, true);
var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\x64\\XInputPlus.ini");
var savePkgOrigin = System.IO.Path.Combine(Context.NucleusFolder, "utils\\XInputPlus\\XInputPlus.ini");
System.IO.File.Copy(savePkgOrigin, savePath, true);
System.IO.File.Copy(Context.NucleusFolder + "\\utils\\XInputPlus\\x64\\xinput1_3.dl_", Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\x64\\xinput1_3.dll");
if (Player.IsKeyboardPlayer) {
var savePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\x64\\XinputPlus.ini";
Context.ModifySaveFile(savePath, savePath, Nucleus.SaveType.INI, [
new Nucleus.IniSaveInfo("ControllerNumber", "Controller1", "0"),
new Nucleus.IniSaveInfo("ControllerNumber", "Controller2", "0"),
new Nucleus.IniSaveInfo("ControllerNumber", "Controller3", "0"),
new Nucleus.IniSaveInfo("ControllerNumber", "Controller4", "0")
]);
} else {
var savePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\x64\\XInputPlus.ini";
Context.ModifySaveFile(savePath, savePath, Nucleus.SaveType.INI, [
new Nucleus.IniSaveInfo("ControllerNumber", "Controller1", Context.PlayerID + 1),
new Nucleus.IniSaveInfo("ControllerNumber", "Controller2", Context.PlayerID + 1),
new Nucleus.IniSaveInfo("ControllerNumber", "Controller3", Context.PlayerID + 1),
new Nucleus.IniSaveInfo("ControllerNumber", "Controller4", Context.PlayerID + 1)
]);
}
}
if (x64 == "No") {
}
};