Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QuestLog25 for WoW 1.12.1 servers

An experimental server-side implementation of a 25-slot quest log for a Turtle/VMaNGOS-derived 1.12.1 server. It keeps the original 20 quest fields in place and maps slots 21-25 to 15 reserved player update fields.

Caution

This is not a universal one-line 20 -> 25 tweak. The server patch requires a matching client-side hook for the exact WoW 1.12.1.5875 executable. With an unpatched client, slots 21-25 are invisible and unsafe. Use a cloned test realm first.

Status

  • Server patch: implemented and git apply --check verified.
  • Protocol mapping: verified against the local Octo client mapper.
  • Runtime/production testing: not completed.
  • Client executable or copyrighted game files: intentionally not included.

The patch was apply-checked on 15 August 2026 against the Turtle/VMaNGOS- derived source snapshot documented below. Treat this repository as an experimental candidate, not a production-ready release.

What the patch does

  1. Raises the logical quest capacity from 20 to 25.
  2. Routes all quest-slot reads and writes through one mapping helper.
  3. Keeps every canonical 1.12.1 update-field index unchanged.
  4. Uses 15 otherwise-unused combat-rating fields for slots 21-25.
  5. Adds the five extended quest-ID fields to cross-player visibility.

No database migration is required: active quests are already stored as rows keyed by character and quest. No update fields are inserted or shifted, and PLAYER_END remains unchanged.

Compatibility

The included patch targets a source tree with these paths:

src/game/QuestDef.h
src/game/Objects/Player.h
src/game/Objects/Player.cpp
src/game/Objects/UpdateFields.h

Known compatibility expectations:

Core Status
Local Turtle/VMaNGOS-derived fork Patch applies to the verified snapshot
VMaNGOS Likely portable for build 5875 after source review
CMaNGOS Classic Same protocol idea, different source paths; port required
MangosZero Same protocol idea, visibility adapter required
Other cores/client builds Unsupported until independently verified

Before porting, confirm that PLAYER_FIELD_COMBAT_RATING_1 through +14 are not used by runtime code in your fork.

Download and apply

Clone or download this repository, then run the read-only preflight check:

git clone https://github.com/fredeborg1996/questlog25.git
cd questlog25
./scripts/preflight.ps1 -SourceRoot 'C:\path\to\your\server-source'

If preflight succeeds, back up your source and apply the patch:

cd 'C:\path\to\your\server-source'
git apply --check 'C:\path\to\questlog25\quest-log-25-server.patch'
git apply 'C:\path\to\questlog25\quest-log-25-server.patch'

Rebuild the world server under a separate candidate tag or binary name. Do not replace a live build until the matching client hook and the full test matrix below have passed.

To reverse the source change:

git apply --check --reverse 'C:\path\to\questlog25\quest-log-25-server.patch'
git apply --reverse 'C:\path\to\questlog25\quest-log-25-server.patch'

Protocol mapping

The first 20 slots stay where the stock 1.12.1 client expects them. Slots 21-25 use the first 15 reserved combat-rating fields:

slot < 20
  ? PLAYER_QUEST_LOG_1_1 + slot * 3 + component
  : PLAYER_FIELD_COMBAT_RATING_1 + (slot - 20) * 3 + component
UI slot Zero-based slot Quest ID Count/state Timer
21 20 0x4EE 0x4EF 0x4F0
22 21 0x4F1 0x4F2 0x4F3
23 22 0x4F4 0x4F5 0x4F6
24 23 0x4F7 0x4F8 0x4F9
25 24 0x4FA 0x4FB 0x4FC

Five tail fields (0x4FD-0x501) remain unused. The complete machine-readable contract is in protocol/q25-octo-cr-v1.yaml.

Client requirement

The client hook is specific to the exact 1.12.1.5875 executable. A safe client patcher must verify the executable SHA-256 and every expected instruction, create an atomic backup, and fail closed on unknown builds.

The UI may be implemented as a normal addon that sets the quest-limit globals to 25 and polls GetNumQuestLogEntries() approximately every 0.2 seconds. Polling is necessary because changes arriving through the reserved fields do not emit the stock quest-log event.

This repository does not redistribute WoW.exe, Turtle/Octo MPQs, or modified Blizzard FrameXML.

Required test matrix

Use a cloned database and test realm:

  1. Accept quests 20, 21, 25, and attempt 26.
  2. Relog and restart the server; verify all 25 remain visible.
  3. Test kill, item, cast/speak, exploration, and timed objectives in slots 21-25.
  4. Complete, reward, abandon, and swap slots across the 20/21 boundary.
  5. Share quests and inspect party quest visibility.
  6. Regression-test equipment appearance, inventory, bank, buyback, stats, inspect, combat, custom haste/transmog systems, PlayerBots, and anti-cheat.
  7. Verify unpatched clients are capped at 20 or rejected.

Useful database audit:

SELECT c.guid, c.name, COUNT(*) AS active_quests
FROM characters AS c
JOIN character_queststatus AS q ON q.guid = c.guid
WHERE q.status <> 0 AND q.rewarded = 0
GROUP BY c.guid, c.name
HAVING COUNT(*) >= 20
ORDER BY active_quests DESC, c.name;

Rollback warning

Characters with quests in slots 21-25 retain those database rows after a server rollback. A 20-slot build exposes only 20 and leaves the extra quests hidden. Before rollback, reduce test characters to 20 active quests or restore the pre-deployment character-database backup.

Verified baseline

The patch was prepared against files with these SHA-256 hashes:

File SHA-256
src/game/QuestDef.h 40E990FD4F6D5C3B4D6BAB10B6694450E221E3AF58C758F27D267FE92C58E1E0
src/game/Objects/Player.h 6D90341F9E7B59A75045B481E8A6E2F3953A00A0E398BFA506370FC3ABD04F24
src/game/Objects/Player.cpp 3AE1DEE839F8C19FD8F0A6F2402D20D8580096BFDFC2D45B0ED1DC446C13B75D
src/game/Objects/UpdateFields.h 3CCAFFB25A4598A6E3B6B59DCCDD5434B9F6B882E5A56F44889BD9297A5AD82D

License

The patch is distributed under the GNU Affero General Public License v3.0 to match the verified server source. World of Warcraft and related names are property of their respective owners. This project is not affiliated with or endorsed by Blizzard Entertainment or Turtle WoW.

About

Experimental 25-slot quest log mapping for WoW 1.12.1 Turtle/VMaNGOS-derived servers

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages