github Xian55/HermesProxy v4.6.0-feature-cata-442-client-8cddd37
Pre-release: Cataclysm Classic 4.4.2 preview @ 8cddd37

pre-release4 hours ago

Branch: feature/cata-442-client
Commit: 8cddd378a6061e60b344ef1bed98835790606406

Cataclysm Classic 4.4.2 — early preview

Work in progress. This prerelease lets a Cataclysm Classic 4.4.2.60895 client play through HermesProxy. Most of it was playtested solo, the group features with two players, so expect missing features, wrong numbers and the occasional disconnect. Progress and discussion: #202.

New since the first preview. Other players have names now, and with that came the things two players do: parties (invite, lead, loot method), whispers, trade, duels, group loot rolls and addon messages. Guilds are the latest: the name under a character, roster and ranks, message of the day and info text, invite, member notes, leaving, handing the guild over, and the guild bank (money, tabs, items, tab text and both logs). Solo: the auction house, flight masters, teleports to another map, and a fix for the crash at login of a character with a profession.

Battlegrounds, a first slice. Queueing from the PvP window, the Deserter refusal, the invitation, entering, the countdown to the start, the scoreboard, the battle's raid, picking up a flag, its carrier on the map, the time remaining and leaving. One flag capture was seen in play; a whole match to the win was not, and #408 says why and what else is left. Two fixes came out of it: area triggers the proxy adds (the Dark Portal from the Blasted Lands, the Warsong Gulch flag rooms) now fire on the 4.4.2 client, and the client no longer crashes when someone leaps in view (the leap is drawn along the ground for now, #406). Currencies followed: the currency tab with every Cataclysm currency, honor in the PvP window, and a chat line for each gain. A dead player has the ghost's "Return to Graveyard" button and the graveyards on the map, channels announce who joins and leaves, and the proxy now knows every packet the 4.4.2 client can send by name, which makes the rest of the list in #407 quicker to work through. From that list since: the guild window's group state and weekly challenges, the kinds of PvP on offer, and whom each quest in the log is handed in to.

Then. More of that list: the guild window's log and rewards tabs and the guild's achievements, titles gained and lost, movies the server starts, a currency put on the backpack, and the calendar button's count of invitations. Hiding the cloak did nothing on a 4.3.4 server and works now. Two fixes for parties: a member out of sight is shown where he is, with his level and health (the server's packet for it was read with the wrong layout), and leaving a party takes the client out of it, where it used to stay in a party of two that no longer existed.

This update. The dungeon finder: its lists, queueing alone and as a party with the role check (accepted and declined), the queue's status and leaving. A fix from it went to master as well: a 3.4.3 party member's answer to the role check had been misread on every build since 3.4.3 (#417). The calendar: events made, opened, changed, copied and deleted, invitations with their answers, ranks and removal; an invitation to another player does not show on that player's client yet (#414). Guild news, an inspected player's honor, a chat channel's owner commands (moderator, kick, invite, ban and unban, password, announcements, a new owner), world markers for the group members who can see them (#415), the hover animation, and handing the guild over with /gleader. Smaller ones since the last text: the realm's name when the client asks, the message of the day, raid frame profiles, the active mover, forced reactions, the pet journal's lock and handing an item back for what it cost. Promoting, demoting and removing a guild member by slash command send nothing from the client at the moment (#416).

Rebased on master, so it has the fixes released there as v4.5.59 to v4.5.70 (the last is the role check fix above), among them: addon whispers from a 3.4.3 client, the Dungeon Finder queue tooltip, parties on a 2.4.3 server, quest colours on a 2.5 client, logging in on a flying mount, the emote clear, full player names that no longer end in a bare hyphen (Name-), taking an item out of the guild bank with a right-click on a 3.3.5a server, and log lines that say when and why a client opens its realm selection.

Why it came together this fast. The 4.4.2 client turned out to be a close relative of 3.4.3, so the WotLK Classic groundwork paid off: the per-build packet layouts, the opcode table (4.4.2's was generated by matching 3.4.3's names) and most of the packet writers apply as they are. Diffing the two clients' own readers (docs/protocol) puts a number on it: of the 687 packets HermesProxy handles that both clients have, 556 are laid out identically, and of the other 121, 60 differ only in how the layout is written down or in parts HermesProxy never sends. That left about sixty real changes, mostly a widened field or one extra byte, each with its own 4.4.2 shape in the code, none left open. On the client side the genuinely new parts were the Battle.net SRP login and the stronger world handshake. The bulk of the new work was on the other end: teaching the proxy to speak to a 4.3.4 server.

What works

  • TrinityCore 4.3.4 (Cataclysm Preservation Project): Battle.net login, the character screen with Goblin and Worgen creation, entering the world, movement, combat and spells, questing, looting, vendors, trainers, the bank, mail (money, items, COD), the auction house, flight masters, reputation, chat channels and the world map. Between two players: parties, whispers, trade, duels, group loot rolls, addon messages and guilds, with the guild bank and guild news. The dungeon finder's queue, alone and as a party. The calendar for one's own events. Chat channels with their owner's commands, world markers. Battlegrounds: queue, enter, scoreboard, flag pickup and leave in Warsong Gulch. The currency tab.
  • 3.3.5a (AzerothCore / TrinityCore 3.3.5): world, gossip, quests, vendors, trainers and combat.

Not yet: raids, guild charters (the guild in the test was made by GM command), a dungeon finder group being found (proposal, rewards: it takes five players), arenas and rated battlegrounds, Wintergrasp and Tol Barad, pets. Known gaps have issues of their own: #405 (a movement packet read in the wrong order on some 4.3.4 servers), #406, #407 (packets still dropped, as a work list), #408, #409 (the Archaeology window shows no projects yet), #411 (reforging, transmogrification and void storage do not open yet), #414 (the calendar's guild events and the invitee's side), #415 (world markers out of sight) and #416 (guild promote, demote and remove by slash command). docs/cata-progress.md lists what is done and what is still open.

Setup

  • Server: Xian55/TrinityCore-docker, branch 4.3.4, with TC_LEGACY_CONNECTION_MODE_ENABLED=1 in tc.env (HermesProxy keeps each player on one connection).
  • appsettings.json: ClientOptions:ClientBuild = V4_4_2_60895. LegacyServerOptions:Build = auto picks 4.3.4; use V3_3_5a_12340 for a 3.3.5a server.
  • Password: the 4.4.2 client logs in with SRP and never sends its password, so set HERMES_LegacyServerOptions__Password to the legacy account's password, or type it when the proxy asks at startup. The proxy uses that one password for every account that logs in through it.
  • Client: SET portal "127.0.0.1" in WTF/Config.wtf, started with the Arctium Game Launcher (tested with 1.5.0) and --version=Classic.

WotLK Classic 3.4.3 was regression-checked against AzerothCore for this build. Bug reports are welcome in #202 or as new issues; the bug template offers 4.4.2 and TrinityCore 4.3.4.

Don't miss a new HermesProxy release

NewReleases is sending notifications on new releases.