Skip to content
Beta: this is a preview of the new SplitScreen.Me. Data may be reset before launch.

Otherworld Legends · handler “Otherworld Legends”

Version 1

Release notes

A "blood-pumping, face-bashing" roguelike brawler. Master heroes of your choice, craft uniquely broken builds, and hack & pummel through a myriad of dungeons in a thrilling rampage.

Released
Size
2.6 KB
Downloads
197
Check
Verified
SHA-256
7f2cb6ab716c9df53b3f4fa7dbacefcd58dd857ee7e00b57e59e5252dcfd39a5
Download v1 (.nc)All versions

Files 1

PathSize
handler.js9.2 KB

handler.js

Plain text
Hub.Handler.Version = 1; // Released at https://hub.splitscreen.me/ on Sun May 01 2022 05:54:35 GMT+0000 (Coordinated Universal Time).
Hub.Handler.Id = "TTDRmLBoaLH2Gn5Tq";
Hub.Maintainer.Name = "Dreadnot";
Hub.Maintainer.Id = "imcayCstgHndCbyMo";

var answers1 = ["No", "Yes"];
Game.AddOption(
  "Launch all instances under your Steam account?",
  "Experimental, all instances will use the same save, connect via the native LAN, only use if you want to unlock Steam achievements.",
  "LAN",
  answers1
);

Game.ExecutableContext = ["Otherworld Legends_Data"];
Game.DirSymlinkExclusions = ["Otherworld Legends_Data\\Plugins\\x86_64"];
Game.FileSymlinkExclusions = ["steam_api.dll", "steam_api64.dll", "steam_appid.txt", "xinput1_3.dll"];
Game.FileSymlinkCopyInstead = ["baselib.dll", "GameAssembly.dll", "UnityCrashHandler64.exe", "UnityPlayer.dll"];
Game.GameName = "Otherworld Legends";
Game.HandlerInterval = 100;
Game.SymlinkExe = false;
Game.SymlinkGame = true;
Game.ExecutableName = "Otherworld Legends.exe";
Game.SteamID = "1761380";
Game.GUID = "Otherworld Legends";
Game.MaxPlayers = 4;
Game.MaxPlayersOneMonitor = 4;
Game.LauncherTitle = "";
Game.UseGoldberg = true;
Game.GoldbergExperimental = true;
Game.HideTaskbar = false;
Game.Hook.ForceFocus = true;
Game.Hook.ForceFocusWindowName = "Otherworld Legends";
Game.SendFakeFocusMsg = true;
Game.ResetWindows = true;
Game.Hook.DInputEnabled = false;
Game.Hook.XInputEnabled = true;
Game.Hook.XInputReroute = false;
Game.Hook.CustomDllEnabled = false;
Game.XInputPlusDll = ["xinput1_3.dll", "XInput1_4.dll"];
Game.BlockRawInput = false;
Game.UserProfileConfigPath = "AppData\\LocalLow\\Chilly Room\\Otherworld Legends";
Game.Description =
  "Host a game inside the Owl room to the right of the lobby then the other instances can join. To unlock multiplayer play a stage with 2 different characters. Alt-tab to an instance to write the name of a room, alt-tab to the kb/m instance to control it too. Press CTRL+T twice in-game if you get stretching in vertical splitscreen.";
Game.PauseBetweenProcessGrab = 4;
Game.PauseBetweenStarts = 25;

//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 = false;
Game.SupportsKeyboard = 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.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 = false;

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() {
  Context.EditRegKey("HKEY_CURRENT_USER", "SOFTWARE\\Chilly Room\\Otherworld Legends", "Screenmanager Fullscreen mode_h3630240806", 3, Nucleus.RegType.DWord);

  Context.EditRegKey("HKEY_CURRENT_USER", "SOFTWARE\\Chilly Room\\Otherworld Legends", "Screenmanager Resolution Height_h2627697771", Context.Height, Nucleus.RegType.DWord);

  Context.EditRegKey("HKEY_CURRENT_USER", "SOFTWARE\\Chilly Room\\Otherworld Legends", "Screenmanager Resolution Width_h182942802", Context.Width, Nucleus.RegType.DWord);

  Context.EditRegKey("HKEY_CURRENT_USER", "SOFTWARE\\Chilly Room\\Otherworld Legends", "Screenmanager Resolution Use Native_h1405027254", 0, Nucleus.RegType.DWord);

  var filePath = (Context.filePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Otherworld Legends_Data\\Plugins\\x86_64\\steam_settings");
  System.IO.Directory.CreateDirectory(filePath);

  var nolay = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Otherworld Legends_Data\\Plugins\\x86_64\\steam_settings\\disable_overlay.txt";
  var lines = [""];
  Context.WriteTextFile(nolay, lines);

  if (Context.PlayerID == 1) {
    var reg = Context.NucleusFolder + "\\utils\\backup\\Otherworld Legends.reg";
    var lines = [""];
    Context.WriteTextFile(reg, lines);
  }

  if (Context.IsKeyboardPlayer) {
    Game.ProtoInput.RegisterRawInputHook = false;
    Game.ProtoInput.MessageFilterHook = false;
  } else {
  }

  if (Context.HasKeyboardPlayer == true) {
    Game.FakeFocus = true;
    Game.FakeFocusInterval = 20000;
    Game.SetForegroundWindowElsewhere = false;
  } else {
    Game.FakeFocus = true;
    Game.FakeFocusInterval = 8000;
    Game.SetForegroundWindowElsewhere = true;
  }

  if (Context.AspectRatioDecimal < 1.2) {
    Game.ProtoInput.SetWindowPosHook = true;
    Game.ProtoInput.SetWindowStyleHook = true;
  }

  var lan = Context.Options["LAN"];

  if (lan == "Yes") {
    var savePkgOrigin = System.IO.Path.Combine(Context.RootInstallFolder, "Otherworld Legends_Data\\Plugins\\x86_64\\steam_api.dll");
    var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Otherworld Legends_Data\\Plugins\\x86_64\\steam_api.dll");
    System.IO.File.Copy(savePkgOrigin, savePath, true);

    var savePkgOrigin = System.IO.Path.Combine(Context.RootInstallFolder, "Otherworld Legends_Data\\Plugins\\x86_64\\steam_api64.dll");
    var savePath = (Context.SavePath = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\Otherworld Legends_Data\\Plugins\\x86_64\\steam_api64.dll");
    System.IO.File.Copy(savePkgOrigin, savePath, true);

    if (Context.PlayerID == 0) {
      Game.InjectHookXinput = true;
      Game.SupportsMultipleKeyboardsAndMice = true;
      Game.RefreshWindowAfterStart = true;
    } else {
      Game.InjectHookXinput = false;
      Game.SupportsMultipleKeyboardsAndMice = false;
      Game.RefreshWindowAfterStart = false;

      var Args = (Context.Args = " -screen-fullscreen 0 -popupwindow " + " -screen-width " + Context.Width + " -screen-height " + Context.Height);

      Context.StartArguments = Args;

      var appid = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\steam_appid.txt";
      var lines = ["1761380"];
      Context.WriteTextFile(appid, lines);
    }
  }

  if (lan == "No") {
    var Args = (Context.Args = " -screen-fullscreen 0 -popupwindow " + " -screen-width " + Context.Width + " -screen-height " + Context.Height);

    Context.StartArguments = Args;

    var appid = Context.GetFolder(Nucleus.Folder.InstancedGameFolder) + "\\steam_appid.txt";
    var lines = ["1761380"];
    Context.WriteTextFile(appid, lines);
  }
};