- "Hide in Cities" toggle suppresses NPC icons in capital cities
Supports many NPC types such as Auctioneer, Banker, Flightmaster, Repair, Reagents, Poisons, and more
Tracks various npc types and useful objects like Oranges and Brainwasher and Mailbox.
Supported game objects: Mailbox, Brainwasher
**DLL:**`minimapicons.dll`
**DLL:**`minimapicons.dll`
---
---
### Clickthrough
Smart cursor targeting that prioritizes useful interactions. Instead of always selecting the nearest object under the cursor, the module finds the most useful target along the ray in priority order.
- Lootable corpses first, then interactable game objects/portals, then interactable NPCs, then normal selection
- Dead non-lootable corpses can still be selected when nothing more useful is behind them
- Disabled inside battlegrounds to prevent targeting objectives through enemy players
Can replaces SuperWoW's `Clickthrough()` toggle with always-on smart targeting that doesn't require a manual toggle and preserves the ability to select dead bodies when needed. Disable corpse-clickthrough in SuperAPI if you want this.
No configuration needed, install and forget.
**DLL:**`clickthrough.dll`
---
### Log Sessions
### Log Sessions
Organizes the combat, raw combat, and chat logs into per-character directories with timestamped filenames:
Organizes the combat, raw combat, and chat logs into per-character directories with timestamped filenames:
@@ -104,13 +120,28 @@ This value is saved to the `cursorScale` CVar in tenths: `/script SetCVar("curso
Lua API for addon developers:
Lua API for addon developers:
-`SetCursorScale(n)` -- set scale factor (1.0-4.0), takes effect on next cursor change
-`SetCursorScale(n)` -- set scale factor (1.0–4.0), takes effect on next cursor change
-`GetCursorScale()` -- returns current scale factor
-`GetCursorScale()` -- returns current scale factor
**DLL:**`bigcursor.dll`
**DLL:**`bigcursor.dll`
---
---
### Performance
Engine-level optimizations that reduce CPU time on math, rendering helpers, file lookups, and data decompression. No visual difference, no configuration needed. Included in `weirdutils.dll`.
- **SIMD Math** - replaces 20+ internal math functions with SSE/AVX equivalents covering skeletal animation, particle rendering, frustum culling, collision detection, text glyph caching, and float-to-integer conversion
- **Data Decompression** - swaps the game's 2004-era zlib with a modern library (2.2x faster). Loading screen times reduced by at least 13%
- **MPQ File Cache** - caches archive file lookups so repeat file opens skip the archive chain walk. Saving 50-160ms every 15 seconds during heavy gameplay
- **Timer Calibration** - recalibrates the OS performance counter for accurate animation timing. Ported from [VanillaFixes](https://github.com/hannesmann/vanillafixes)
Most noticeable in cities, raids, and during zone transitions.
**DLL:**`weirdperformance.dll`
---
## Why No Source Code?
## Why No Source Code?
This project is distributed as pre-built DLLs only. The source code is not and will not be made publicly available.
This project is distributed as pre-built DLLs only. The source code is not and will not be made publicly available.
@@ -132,15 +163,13 @@ WeirdUtils exports three functions for querying and disabling modules at runtime
|---|---|---|
|---|---|---|
| `WeirdUtils_IsModuleActive` | `int __cdecl (const char *name)` | Returns 1 if the module is compiled in and currently hooked, 0 otherwise |
| `WeirdUtils_IsModuleActive` | `int __cdecl (const char *name)` | Returns 1 if the module is compiled in and currently hooked, 0 otherwise |
| `WeirdUtils_DisableModule` | `int __cdecl (const char *name)` | Unhooks the named module. Returns 1 if found, 0 otherwise |
| `WeirdUtils_DisableModule` | `int __cdecl (const char *name)` | Unhooks the named module. Returns 1 if found, 0 otherwise |
| `WeirdUtils_DisableAll` | `int __cdecl (void)` | Unhooks all modules and core hooks. Returns count of modules disabled |
| `WeirdUtils_DisableAll` | `int __cdecl (void)` | Unhooks all modules. Returns count of modules disabled |
Module names are case-insensitive and match the build option names:
Module names are case-insensitive and match the released dll names:
The`weirdutils_api.h` header is included with each release.
There is no re-enable API.
There is no re-enable API - re-hooking after unhook is unsafe.
#### C/C++ Header
#### C/C++ Header
@@ -154,7 +183,7 @@ if (WeirdUtils_IsModuleActive("transmogfix"))
WeirdUtils_DisableModule("transmogfix");
WeirdUtils_DisableModule("transmogfix");
```
```
The header tries all known DLL names (`weirdutils.dll`, `pngscreenshots.dll`, etc.) via `GetModuleHandleA`, so it works regardless of which DLL variant is loaded.
The header tries all known DLL names (`weirdutils.dll`, `minimapicons.dll`, etc.) via `GetModuleHandleA`, so it works regardless of which DLL variant is loaded.
#### Raw GetProcAddress
#### Raw GetProcAddress
@@ -173,6 +202,37 @@ if (hMod) {
}
}
```
```
### Version Query API
WeirdUtils registers a Lua global table and query function for addon developers to detect which modules are loaded and their versions. Available from the login screen onward.
#### `GetWeirdUtilsVersion()`
Returns the `WeirdUtils` table containing all enabled modules and their version strings:
```lua
localmodules=GetWeirdUtilsVersion()
forname,versioninpairs(modules)do
print(name.." v"..version)
end
```
#### `GetWeirdUtilsVersion("modulename")`
Returns the version string for a specific module, or `nil` if not loaded:
```lua
ifGetWeirdUtilsVersion("minimapicons")then
-- Minimap Icons is available
end
localver=GetWeirdUtilsVersion("weirdperformance")-- "1.0" or nil
```
The `WeirdUtils` table is additive - if multiple independent DLLs are loaded (e.g. `minimapicons.dll` and `clickthrough.dll` separately), each adds its own modules to the shared table.
---
### Module Mutexes
### Module Mutexes
Each module also holds a named mutex while active: `Local\WeirdUtils_<name>_<PID>` (e.g. `Local\WeirdUtils_transmogfix_12345`). The exception is transmogfix, which uses `Local\TransmogCoalesceHook_<PID>` for legacy reasons.
Each module also holds a named mutex while active: `Local\WeirdUtils_<name>_<PID>` (e.g. `Local\WeirdUtils_transmogfix_12345`). The exception is transmogfix, which uses `Local\TransmogCoalesceHook_<PID>` for legacy reasons.
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.