Houmgaor
c714374289
feat(tournament): implement hunting tournament system end-to-end
...
Wire format for MsgMhfEnterTournamentQuest (0x00D2) derived from
mhfo-hd.dll binary analysis (FUN_114f4280). Five new tables back
the full lifecycle: schedule, cups, sub-events, player registrations,
and run submissions. All six tournament handlers are now DB-driven:
- EnumerateRanking: returns active tournament schedule with cups and
sub-events; computes phase state byte from timestamps
- EnumerateOrder: returns per-event leaderboard ranked by submission
time, with SJIS-encoded character and guild names
- InfoTournament: exposes tournament detail and player registration
state across all three query types
- EntryTournament: registers player and returns entry handle used by
the client in the subsequent EnterTournamentQuest packet
- EnterTournamentQuest: parses the previously-unimplemented packet and
records the run in tournament_results
- AcquireTournament: stubs rewards (item IDs not yet reversed)
Seed data (TournamentDefaults.sql) reproduces tournament #150 cups and
sub-events so a fresh install has a working tournament immediately.
2026-03-22 14:30:37 +01:00
..
2026-03-17 19:03:43 +01:00
2026-02-27 17:29:32 +01:00
2026-02-27 17:29:32 +01:00
2026-03-17 19:21:55 +01:00
2026-03-01 18:56:52 +01:00
2026-03-22 00:27:05 +01:00
2026-02-26 23:41:44 +01:00
2026-03-19 10:57:09 +01:00
2026-03-05 18:00:30 +01:00
2026-03-05 18:00:30 +01:00
2026-02-26 23:41:44 +01:00
2026-03-20 11:22:25 +01:00
2026-02-26 23:41:44 +01:00
2026-03-19 10:57:09 +01:00
2026-02-26 23:41:44 +01:00
2026-03-19 10:57:09 +01:00
2026-03-19 19:28:30 +01:00
2026-03-20 11:46:01 +01:00
2026-02-26 23:41:44 +01:00
2026-03-19 10:57:09 +01:00
2026-02-27 13:45:56 +01:00
2026-02-26 23:41:44 +01:00
2026-03-17 19:21:55 +01:00
2026-03-19 10:57:09 +01:00
2026-03-05 18:00:30 +01:00
2026-03-18 12:09:44 +01:00
2026-03-20 17:52:01 +01:00
2026-02-26 23:41:44 +01:00
2026-03-19 10:57:09 +01:00
2026-02-26 23:41:44 +01:00
2026-03-22 14:30:37 +01:00
2026-03-10 11:28:11 +01:00
2026-03-10 11:19:22 +01:00
2026-03-05 16:39:15 +01:00
2026-03-02 19:43:11 +01:00
2026-02-26 23:41:44 +01:00
2026-02-27 11:33:25 +01:00
2026-02-27 11:33:25 +01:00
2026-03-22 00:27:05 +01:00
2026-02-26 23:41:44 +01:00
2026-03-05 18:00:30 +01:00
2026-03-22 00:27:05 +01:00
2026-03-21 17:59:25 +01:00
2026-03-21 17:59:25 +01:00
2026-03-22 00:27:05 +01:00
2026-02-26 23:41:44 +01:00
2026-03-22 00:27:05 +01:00
2026-02-26 23:41:44 +01:00
2026-02-27 11:33:13 +01:00
2026-03-19 10:57:09 +01:00
2026-03-19 14:35:38 +01:00
2026-03-22 14:30:37 +01:00
2026-03-05 18:00:30 +01:00
2026-03-05 16:39:15 +01:00
2026-03-19 14:35:38 +01:00
2026-03-21 01:49:28 +01:00
2026-03-19 10:57:09 +01:00
2026-02-26 23:41:44 +01:00
2026-03-19 10:57:09 +01:00
2026-03-17 19:03:43 +01:00
2026-03-22 14:30:37 +01:00
2026-03-22 14:30:37 +01:00
2026-03-19 10:57:09 +01:00
2026-03-02 20:12:39 +01:00
2026-03-02 20:12:39 +01:00
2026-03-19 10:57:09 +01:00
2026-03-21 01:36:31 +01:00
2026-03-20 17:52:01 +01:00
2026-02-26 23:41:44 +01:00
2026-02-26 23:41:44 +01:00
2026-03-19 14:35:38 +01:00
2026-03-19 10:57:09 +01:00
2026-03-17 19:11:59 +01:00
2026-03-22 14:30:37 +01:00
2026-02-26 23:41:44 +01:00
2026-03-19 10:57:09 +01:00
2026-03-05 16:39:15 +01:00
2026-02-26 23:41:44 +01:00
2026-03-20 17:52:01 +01:00
2026-03-22 14:30:37 +01:00
2026-02-27 11:33:13 +01:00
2026-02-27 11:21:37 +01:00
2026-03-19 10:57:09 +01:00
2026-03-17 19:03:43 +01:00
2026-03-19 18:20:00 +01:00
2026-03-19 18:20:00 +01:00
2026-03-19 18:20:00 +01:00
2026-03-19 23:59:34 +01:00
2026-03-19 23:59:34 +01:00
2026-03-20 16:39:43 +01:00
2026-03-20 00:07:34 +01:00
2026-03-05 23:05:55 +01:00
2026-03-18 12:14:31 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-18 10:48:52 +01:00
2026-03-21 01:49:28 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-20 17:52:01 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-16 00:07:46 +01:00
2026-03-10 11:28:11 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-02 19:43:11 +01:00
2026-03-21 01:49:28 +01:00
2026-03-21 17:59:25 +01:00
2026-03-22 00:27:05 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-22 14:30:37 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-22 14:30:37 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-22 14:30:37 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-05 23:05:55 +01:00
2026-03-20 14:20:14 +01:00
2026-03-20 16:16:59 +01:00
2026-03-05 23:05:55 +01:00
2026-03-18 11:35:31 +01:00
2026-03-18 11:35:31 +01:00
2026-02-27 11:33:25 +01:00
2026-03-10 11:28:11 +01:00
2026-03-10 11:28:11 +01:00
2026-03-21 17:59:25 +01:00
2026-03-21 17:59:25 +01:00
2026-03-19 23:59:34 +01:00
2026-03-22 14:30:37 +01:00
2026-03-22 00:27:05 +01:00
2026-03-20 17:52:01 +01:00
2026-02-26 23:41:44 +01:00
2026-03-22 14:30:37 +01:00
2026-03-05 23:05:55 +01:00