Dungeon Siege II revival (Steam v2.3, and Broken World)
=======================================================

Install: copy everything in this folder into your Dungeon Siege 2 folder (next to DungeonSiege2.exe).
Nothing of the game is modified. To uninstall, delete version.dll and the scripts folder.

Use it with the unmodified game: it is not meant to be combined with mods that replace DungeonSiege2.exe or
version.dll (e.g. Dungeon Siege II Remastered, OpenSpy's version.dll).

Every fix is a separate plugin in the scripts folder and works on its own. All are on by default;
delete a plugin's .asi file to turn it off.

  version.dll                    Ultimate ASI Loader (loads the plugins)
  scripts\DS2Multiplayer.asi     online and LAN play without GameSpy:
                                   - re-enables the Multiplayer menu (the Steam build greys it out)
                                   - points the game's online services at the revival server
                                   - gives Steam copies a CD-key identity (per user; your registry's game keys
                                     are never touched)
                                   - fixes the bugs that stop a fresh session from hosting (START button,
                                     lobby server, join timeout, Windows Firewall question, the lobby
                                     staying on screen after leaving it); warns and offers Windows' installer
                                     when DirectPlay (needed for online play) is missing
                                   - up to 8 players: the game's hidden 8-player modes ("Old School Mode":
                                     8 players with their main hero; "Couples Mode++": 6 players with two
                                     characters) can be picked when hosting (only the host needs this)
                                   - relays games through the server when the host is behind a router, so no
                                     port forwarding is needed
  scripts\DS2Multiplayer.ini     Server = the multiplayer server (edit it to switch servers), Relay
  scripts\DS2Widescreen.asi      borderless window at your desktop resolution (ultrawide included): the world
                                 is rendered natively, the 800x600 menus are scaled to fit with black bars.
                                 Works with every Steam launch option and with the Steam overlay; a failed
                                 graphics reset (alt-tab, overlay) is retried instead of crashing the game.
  scripts\DS2Fixes.asi           stops the game from making typing lag in every other program while it runs,
                                 and the stutter while moving or clicking the mouse
  scripts\DS2BrokenWorld.asi     starts Broken World when it is installed (see below), lets it import
                                 heroes made in the Steam game, and fixes its low frame rate on PCs where
                                 Windows runs its hypervisor (Memory Integrity, WSL2, Hyper-V, Docker...)

Broken World (optional): put the expansion's files in a "Broken World" folder inside your Dungeon Siege 2
folder, then run this installer again (or copy version.dll and the scripts folder's .asi files into it).
Starting the game then starts Broken World; hold Shift while it starts for the original game. No registry
patch is needed. From the expansion's folder only these are used:
  DungeonSiege2.exe, system_detail.gas, system\EBUEula.dll, Resources\x*.ds2res, Maps\x*.ds2map
(the other files duplicate the base game's or belong to the old installer). Plugins deleted from the main
scripts folder are off for Broken World too, and it uses the main folder's settings.

Firewall: double-click "Firewall setup.cmd" once (asks for administrator rights) so other players can
connect to games you host. Port forwarding is optional: with UDP 2302 forwarded to the hosting PC
players connect directly instead of through the relay (Relay=off in DS2Multiplayer.ini to force that).

Optional settings (only if you need them): create scripts\<plugin>.ini with any of these lines.
  DS2Multiplayer.ini  [Multiplayer] EnableMenuButton=1 FixStartGuard=1 SkipFirewallPrompt=1
                                    DirectConnectTimeout=60 LobbyServer=1 EightPlayers=1
                      [Network]     Server=use1.dsii.uk Relay=auto SingleLanAddress=1 VirtualCdKey=1
  DS2Widescreen.ini   [Display]     Mode=borderless (or window, or off = the game's own video modes)
                                    Resolution=desktop (or e.g. 2560x1440) RetryDeviceReset=1
                                    MaxFps=refresh (or 0 = no cap, or a number)
  DS2Fixes.ini        [Fixes]       NoGlobalKeyboardHook=1 QuietCursor=1
  DS2BrokenWorld.ini  [BrokenWorld] Launch=auto (off = never start Broken World) AcceptSteamParties=1
                                    FastCpuid=1 (the frame-rate fix)
                                    BaseGame= (the Dungeon Siege 2 folder, if Broken World is elsewhere)
