Compare commits

...

27 Commits

Author SHA1 Message Date
MarcelineVQ d71ab9d4fd update issue template 2026-03-28 01:59:07 +01:00
MarcelineVQ eb21c08706 update issue template 2026-03-28 01:59:04 +01:00
MarcelineVQ 95704a412d update issue template 2026-03-28 01:59:01 +01:00
MarcelineVQ a3d5b47910 fix: simplify bug report template with markdown headers 2026-03-27 23:56:44 +01:00
MarcelineVQ 58f2f788b1 fix: consolidate bug report into single textarea with upload 2026-03-27 23:54:30 +01:00
MarcelineVQ 434a4f1129 fix: remove render attribute, let textarea auto-size 2026-03-27 23:51:35 +01:00
MarcelineVQ 11e954857b fix: disable upload on description field via render attribute 2026-03-27 23:11:19 +01:00
MarcelineVQ 49d9a43235 fix: merge description and steps into single field with prefilled sections 2026-03-27 23:09:30 +01:00
MarcelineVQ 4a4ae22a2d fix: remove duplicate DLL upload section from bug report template 2026-03-27 23:06:12 +01:00
MarcelineVQ ad4e44dc55 fix: bug report template - add upload prompts, resize fields 2026-03-27 22:59:22 +01:00
MarcelineVQ 6c216ddf28 Bug report: remove placeholder text from upload fields 2026-03-27 22:51:57 +01:00
MarcelineVQ 12465cfd58 Add bug_report.yml 2026-03-27 22:41:56 +01:00
MarcelineVQ 6d216e8201 Add config.yml 2026-03-27 22:41:54 +01:00
MarcelineVQ 44d56ebe1b Remove config.yaml 2026-03-27 22:41:53 +01:00
MarcelineVQ ad2dd20ca1 Add other.yml 2026-03-27 22:41:50 +01:00
MarcelineVQ f266852fa5 Remove other.yaml 2026-03-27 22:41:49 +01:00
MarcelineVQ caac25cb73 Rename bug_report.yaml to .yml 2026-03-27 22:41:46 +01:00
MarcelineVQ baf0a7997d Bug report: clean textarea fields for file attachments 2026-03-27 22:33:48 +01:00
MarcelineVQ 9b1f7c2600 Bug report: separate file upload fields for crash log and DLLs 2026-03-27 22:32:05 +01:00
MarcelineVQ e674a1634d Disable blank issue template 2026-03-27 22:30:05 +01:00
MarcelineVQ d1dc5ec31d Add feature request / question template 2026-03-27 22:26:05 +01:00
MarcelineVQ 30c827647c Update bug report: file attachments section 2026-03-27 22:26:04 +01:00
MarcelineVQ b49a633456 Update bug report template: defaults, file attachments 2026-03-27 22:22:52 +01:00
MarcelineVQ ae5caa0098 Add bug report issue template 2026-03-27 22:19:53 +01:00
MarcelineVQ b8facd60e9 Update clickthrough description for cascade raycast 2026-03-25 01:53:04 -07:00
MarcelineVQ 1b19fde999 Update README for v0.6.0 2026-03-24 19:06:39 -07:00
MarcelineVQ 83d97ab1db Update clickthrough description for PvP filtering 2026-03-09 23:21:49 -07:00
4 changed files with 114 additions and 13 deletions
+41
View File
@@ -0,0 +1,41 @@
name: Bug Report
about: Report a crash, error, or unexpected behavior
labels:
- bug
body:
- type: dropdown
id: launcher
attributes:
label: Launcher
options:
- WoW.exe (direct)
- VanillaFixes.exe
- Other
default: 0
validations:
required: true
- type: dropdown
id: platform
attributes:
label: Platform
options:
- Windows
- Linux (Wine)
- macOS (Wine/CrossOver)
default: 0
validations:
required: true
- type: textarea
id: description
attributes:
label: Bug Report
description: Attach your WeirdUtils DLL(s) and crash log (.txt from Errors/ folder) by dragging them into this box.
value: |
## What happened?
## Steps to reproduce:
## Other DLLs loaded (nampower, SuperWoW, UnitXP, etc.):
validations:
required: true
+2
View File
@@ -0,0 +1,2 @@
blank_issues_enabled: false
contact_links: []
+10
View File
@@ -0,0 +1,10 @@
name: Feature Request / Question
about: Suggest a feature or ask a question
body:
- type: textarea
id: description
attributes:
label: Description
description: What would you like to see, or what question do you have?
validations:
required: true
+61 -13
View File
@@ -46,16 +46,16 @@ No configuration needed, install and forget.
### Utility Minimap Trackings
Adds TBC-style minimap tracking icons for NPC types (vendors, trainers, innkeepers, etc.) and game objects (mailboxes).
Replaces the native tracking dropdown with a combined menu showing both spell tracking and NPC category tracking.
Can be disabled easily from normal AddOn menu.
Adds TBC/WotLK-style minimap tracking icons for NPC types, game objects, and quest givers.
Replaces the native tracking dropdown with a combined menu showing both spell tracking and NPC category tracking.
Can be disabled from the normal AddOn menu. Preferences saved per-character.
- Click the minimap tracking icon to open the dropdown
- Check/uncheck NPC categories to toggle their minimap icons
- Spell tracking (Hunter tracking, Find Herbs, etc.) remains available alongside NPC tracking
- "Hide in Cities" toggle suppresses NPC icons in capital cities
Supports many NPC types such as Auctioneer, Banker, Flightmaster, Repair, Reagents, Poisons, and more
Supported game objects: Mailbox, Brainwasher
Tracks various npc types and useful objects like Oranges and Brainwasher and Mailbox.
**DLL:** `minimapicons.dll`
@@ -63,11 +63,13 @@ Supported game objects: Mailbox, Brainwasher
### Clickthrough
Makes interactable Objects and NPCs clickable through players and units.
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.
- Players blocking interactable NPCs (vendors, trainers, flight masters, bankers, etc.) or Objects (mailboxes, summoning portals, soulwells) become transparent to clicks
- Units (pets, NPCs) blocking interactable Objects become transparent to clicks
- Non-interactable objects (other players' pets, random mobs) are not affected, this solely helps with player dogpiles
- 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.
@@ -125,6 +127,21 @@ Lua API for addon developers:
---
### 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?
This project is distributed as pre-built DLLs only. The source code is not and will not be made publicly available.
@@ -146,11 +163,11 @@ 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_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 released dll names:
`customassets`, `logsessions`, `transmogfix`, `minimapicons`, `healtextfix`, `bigcursor`, `pngscreenshots`, `clickthrough`
`customassets`, `logsessions`, `transmogfix`, `minimapicons`, `healtextfix`, `bigcursor`, `pngscreenshots`, `clickthrough`, `weirdperformance`
There is no re-enable API.
@@ -166,7 +183,7 @@ if (WeirdUtils_IsModuleActive("transmogfix"))
WeirdUtils_DisableModule("transmogfix");
```
The header tries all known DLL names (`weirdutils.dll`, `worldmarkers.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
@@ -185,8 +202,39 @@ 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
local modules = GetWeirdUtilsVersion()
for name, version in pairs(modules) do
print(name .. " v" .. version)
end
```
#### `GetWeirdUtilsVersion("modulename")`
Returns the version string for a specific module, or `nil` if not loaded:
```lua
if GetWeirdUtilsVersion("minimapicons") then
-- Minimap Icons is available
end
local ver = 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
Each module also holds a named mutex while active: `Local\WeirdUtils_<name>_<PID>` (e.g. `Local\WeirdUtils_framecrash_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.
If you see the mutex, the module is loaded - and can use the Runtime Module Control API to disable it. If you don't see it, the module isn't active and you're free to hook those functions yourself.