3.1 KiB
LockPort client mod 1.2.1
Optional companion for LockPort 3.9.3. The addon works without it for manual summons.
Install with VanillaFixes
- Close WoW.
- Back up the existing addon folder and dlls.txt.
- Install this repository directly as Interface/AddOns/LockPort, with LockPort.toc at that folder's top level.
- Copy LockPort.dll from the repository root beside VanillaFixes.exe.
- Add one line containing LockPort.dll at the end of dlls.txt, after other client mods.
- Launch through VanillaFixes. Join a party or raid on a warlock and enable Auto Summon.
Updating from addon 3.7.2, 3.7.3, or 3.7.4 needs only the addon folder and /reload. Earlier DLL versions must be replaced, followed by a full client restart. /lockport debug should report native=1.2.1.
Compatibility and behavior
Built for the inspected 32-bit OctoWoW 1.18.1 WoW.exe and WoW_Modernized.exe function signatures. This is not a universal build for all client versions. It refuses unsupported executables and requires Lua-registration compatibility provided by Nampower, SuperWoW, or ClassicAPI. Load LockPort after those mods.
The DLL resolves a canonical raid1..raid40 or party1..party4 unit to its GUID, finds Ritual of Summoning in the spellbook, and invokes the client spellbook function. It temporarily saves and clears the frame-script execution context and depth around that call, then restores both. This follows the command context pattern documented in ClassicAPI 1.17.1. It limits calls to the Lua thread and rate-limits requests. A successful return means the call was submitted, not that a server summon or arrival succeeded.
The addon still requires helpers and target eligibility. Helpers click the portal and the summoned player accepts. Auto Summon and availability announcements reset on login/reload; leaving the group disables Auto Summon.
The user confirmed successful automatic summoning with 1.2.1 in-game. Regression tests use mocked game APIs and do not cover every client/mod setup.
To uninstall, close WoW and remove LockPort.dll from dlls.txt. Do not hot-unload.
Build and tests
Source: LockPort.c. Build from the repository root with an LLVM-MinGW i686 compiler:
powershell -File native/build.ps1 -Compiler i686-w64-mingw32-clang.exe
Python addon tests require lupa with its lua51 module:
python -m pip install lupa
python tests/test_addon.py
Build the native harness as an x86 executable at image base 0x10000000 with ASLR disabled:
i686-w64-mingw32-clang -O2 -Wall -Wextra -Werror -static-libgcc -Wl,--image-base,0x10000000 -Wl,--disable-dynamicbase tests/native_tests.c -o native_tests.exe
native_tests.exe "path/to/WoW.exe" LockPort.dll
The first argument defaults to WoW.exe; the second defaults to LockPort.dll. Run from the repository root. Tests check unsupported-host rejection, client signatures, hook relocation/chaining, thread/unit/rate checks, GUID and spellbook forwarding, and scoped context restoration. No server connection is made.
The binary uses Windows system libraries (UCRT and Kernel32). SHA256SUMS.txt records its checksum. See CLASSICAPI-REVIEW.md for the API review.