Skip to content

XML2 Fix v1.4.0

Choose a tag to compare

@github-actions github-actions released this 12 Oct 07:53
· 206 commits to main since this release
38391cb

The engine half of Legends Classic 0.2.0 (the X-Men Legends I port): a save format of its own, the first game's combat numbers, rooms that keep every object, Master Mold's original fight, and online co-op that refuses games that don't match. Drop in the new dinput.dll. For X-Men Legends II as it ships, one fix reaches everyone (the mouse in a resized window); every other addition is off, or absent, until a mod's xml2-fix.ini asks for it.

For everyone

  • The mouse in a resized window. In the borderless and windowed modes the game maps a mouse point to its menus against its own resolution while the picture is stretched over the window. When Windows resized the window (moving it to a monitor with another display scaling: 1280x720 from a 125 % monitor to a 100 % one became 1023x575), the hover sat ever further below the cursor and the last rows of a menu, the main menu's Quit among them, could not be reached. The game now gets the point it is actually shown at, and a windowed game keeps its size when it changes monitors (a maximized or minimized window is left to Windows).

New, when you ask for it (the port's builder sets all of these)

  • [Save] Format=lc: the LC save format. XML2's save file stores every item, talent, objective and zone object by its position in the tables the game loaded, so a campaign that keeps growing turns older saves into other saves. With the key the game's own serializer is left alone and the fix moves its stream to and from .lcsave files in SaveLC, naming everything by a permanent identity from a catalogue the build ships (checked at every start). At the first start every old save and the profile are converted once; the old Save folder is never touched, and SaveLC\legacy-import.txt records each file. Every save keeps the previous one as .lcsave.bak; a newer version's save is kept as .lcsave.newer instead of being overwritten; a save or load that would lose state is refused with a notice and the file on disk stays as it was. Mods that replace save-bound data are refused with their file name. Details: docs/save-format.md, docs/save-guards.md.
  • [Balance]: X-Men Legends I's combat numbers - health per body point, the strength, mind and might bonuses, power attacks that never miss and take no stat bonus, the first game's melee hit chance, rounding and whole-number damage rolls (DamageRolls), and a mod's melee-weapon bonuses (MeleeWeapons). The stats screen's help texts state the numbers in use ([Game] StatHelp, on by default). docs/balance.md.
  • [Limits] EntityCapacity=1 (needs Format=lc): the engine's entity domain grows from 32 actor / 224 generic / 256 World handles to 32 / 768 / 1024. The stock arena refused every prop, projectile or trigger past the 224th live one without a word: crowded rooms lost objects and the port's HAARP freeze gun never fired. Installed as one checked transaction before the game's code runs. If it cannot install (no Format=lc, a different or modified XMen2.exe, another loader first), the capacity alone falls back to the stock limits and the game says so once at startup, with what to do; saves made with the raised capacity can't be loaded and online play is closed for that session. docs/entity-capacity.md.
  • [Limits] MoveTriggers (20 to 127; the game's own: 19): triggers per move, so long attacks keep every sound and muzzle flash (the port's Mystique bursts need 27). docs/move-triggers.md.
  • [Game] Xml1MasterMold=1 with Xml1MoldStage: X-Men Legends I's Master Mold - the shield that falls when his warp cores are destroyed, his platform and floor attacks on their original timers, the catwalk and the sentinels - run on the game's own services. The fight's stage lives in a flag the save already holds, so a save made mid-fight loads back into the same stage; without a valid binding nothing is installed. docs/xml1-controllers.md.
  • [Game] ExplosiveFirstHit=1: an explosion is a new attack for the victim its projectile already hit, as in X-Men Legends I, so grenades and thrown objects deal their contact hit and their blast. A two-byte branch; nothing in objects or saves changes. docs/explosive-first-hit.md.
  • [Game] ClassicMainBackdrop=1 and ClassicMainPanelBounds=1: the classic main menu's Cerebro room with its original bright textures, and buttons that answer the mouse over their whole visible panels (the focus no longer flips in a row's lower third). Also fixed: a crash on Quit with the classic backdrop.
  • [Game] ConfirmationRelease=1: a held accept button answers one popup until it is released, so it can't also answer the popup that replaces it. docs/confirmation-release.md.
  • [Game] XtractionShop=1: a mod's builder can add its equipment-shop option to the Xtraction point menu. docs/xtraction-shop.md.
  • [Game] PersonalItemText (on by default): the personal-item menu's picture sits behind its description, so the text is readable. 0 keeps the original depth.
  • Trivia answers persist in every act of a campaign that uses the port's trivia binding, late acts included.

Online: the gameplay agreement

When any of the gameplay keys above is on, the game takes part in a shared agreement: at join, both games exchange a record of the gameplay rules each one actually installed (not what its ini asked for) and its entity layout, and a mismatch, or a rule that failed to install on either side, refuses the join before anything loads. The joining player gets the game's own dialog; the host keeps its session and sees the reason in the lobby, or as a short line in play (different gameplay settings, the fix not loaded on one PC, another build). Saving during co-op no longer scans the conversation files on the game's thread, which froze the client long enough to be disconnected. XML2 as it ships, without these keys, plays online exactly as before. docs/gameplay-agreement.md.

Known issues

  • Exclusive fullscreen on high-refresh desktops (seen at 2560x1440 and 180 Hz): the game's own fullscreen device request can fail, and the game then resets its resolution settings. This is not new in 1.4. Use [Display] Mode=borderless until a fix.
  • Online saves after destroying objects: a port test build once refused such a save after a connection drop ("native save translation would drop state"; the file on disk was kept). Two fixes in this release address the likely causes - a destroyed numbered object whose engine slot had expired, and the save-time stall that dropped the connection - and destruction saves have passed online since, but the original case was never reproduced. If it happens, the save file is kept: please report it with xml2-fix.log ([Debug] SaveDumpRefused=1 keeps the refused image for diagnosis).
  • Full online play between two PCs, and across the internet, has not been tested with these keys yet; a dedicated co-op pass is planned.

Every patch checks the bytes it relies on against the retail XMen2.exe first; on any other build that feature stays off (or, for the save format, the game does not start, with one message saying why) and xml2-fix.log says why. Every setting, with its default: README -> Settings.

Install: copy dinput.dll into the folder that contains XMen2.exe (replace the old one). The Ultimate Legends launcher does it for you. See the README.

Unofficial fan fix, not affiliated with or endorsed by Activision, Marvel, Disney, Raven Software or Beenox. No game files included: you need your own copy of the game.