Commit Graph

7397 Commits

Author SHA1 Message Date
sindoring ed6eea2f43 Merge feature/moonwell-quest-drop into development 2026-10-30 18:28:09 +04:00
sindoring a9c5cacec8 MoonWell: Rate.Drop.Item.Quest, quest item drop chance (production 2x)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 18:28:09 +04:00
sindoring 146f02f046 Merge remote-tracking branch 'upstream/development' into development 2026-10-30 18:22:24 +04:00
sindoring a2c532b676 Merge feature/moonwell-voice into development 2026-10-29 17:26:16 +04:00
sindoring 25ad97555f MoonWell: voice chat tickets and the state feed for the voice relay
Voice goes through a separate relay (moonwell-voice-relay, from the
MoonWell client repo), never the world socket. mangosd only vouches:
`.mwvoice` answers the player with an HMAC-signed ticket and the relay
address as an addon line (prefix MWV), and every 250 ms the world thread
sends the relay each character in the world: faction, map, instance,
position, group and guild, so no client can claim a place, group or
guild of its own. The feed is read after the map update, under the
lock that keeps async packets out. Sends are counted and logged every
30 s.

MoonWell.Voice.* in mangosd.conf (off by default); the production
compose adds the voice-relay container (UDP 3725) and the voice_secret
secret, deploy/local enables voice against a relay on the Windows host.

Checked: the changed units build in vmangos-buildenv; a ticket and a
feed datagram made by this code verify in the relay tests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 17:26:16 +04:00
sindoring 40b395db8f Merge feature/moonwell-quest-sync into development 2026-10-29 14:20:58 +04:00
sindoring 48f1089151 MoonWell: send a character its rewarded quests for the quest map
A 1.12 client is never told which quests were handed in, so MoonWell UI
showed quests already done as available. `.mwquests` (player level) now
answers with the character's rewarded quests, and each quest rewarded
later is sent at once, as addon lines to the player alone (LANG_ADDON,
prefix MWQ; never shown, fired as CHAT_MSG_ADDON).

Checked on the local server with MoonWell UI: the list matches
character_queststatus, a live reward arrives as +id.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 14:20:50 +04:00
ratkosrb 9b7fb4dfdb Replace new with make_shared in auth socket. 2026-10-28 15:09:18 +02:00
sindoring 14f9aadead Merge feature/solo-dungeon-scaling into development
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 20:25:58 +04:00
vibeXcode d9173eca3e Block character names with three or more consecutive identical characters.
Closes https://github.com/vmangos/core/issues/3569
2026-10-26 22:28:28 +02:00
FlagFlayer 36cde9a0bd Correct captured thistle bear timer (again) (#3582) 2026-10-26 15:19:20 +02:00
Wall 8af2ddc596 Remove extra space in function name. (#3581) 2026-10-26 15:19:05 +02:00
ratkosrb 316e886869 Correction to continent instantiate boundaries. 2026-10-26 00:59:02 +02:00
ratkosrb a87eb41eac Fix realmd crash when TOTP security info is empty.
Closes https://github.com/vmangos/core/issues/3580
2026-10-25 14:34:26 +02:00
sindoring 71f31e489a Add Graphify knowledge graph for src and deploy 2026-10-23 21:28:54 +04:00
andi79h-claude a9fa07aab5 Add fishing to secondary skills of custom profession npc (#3575) 2026-10-21 13:07:57 +03:00
Gamemechanic 4c51bb778d Dont allow multiple loot rolls for the same player (#3574) 2026-10-20 15:21:50 +03:00
Gamemechanic d0c3a62be2 Fix orientation bug in SPELL_EFFECT_TELEPORT_UNITS_FACE_CASTER. (#3573) 2026-10-20 15:21:25 +03:00
sindoring eb760e0c5e Merge development into feature/solo-dungeon-scaling 2026-10-19 18:50:14 +04:00
sindoring 71671a1724 Configure Moscow world time and production companion bots 2026-10-19 18:49:53 +04:00
sindoring 53c9dd2a3c Document full group dungeon rewards
Step-by-step guide with a working example for adding loot that drops
only for a full group, linked from the content README.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-18 15:15:40 +04:00
sindoring 5f5ddc2e47 Balance party dungeons for solo and partial groups
Creatures in party dungeons scale health, healing and damage to the number
of players inside (DungeonScaling.* settings). A full group that stays inside
for the whole fight gets a higher chance of rare or better weapons and armor,
including world drops behind chanced references, and condition type 60 marks
loot that drops only for a full group.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-18 15:02:31 +04:00
sindoring 8c8e982fc3 Enable launcher-free local development builds
Keep launcher tickets mandatory by default and compile password authentication only into the dedicated local image. Build the shared local image once and add an end-to-end SRP login check.
2026-10-18 12:11:35 +04:00
sindoring 6392c2f505 Merge remote-tracking branch 'upstream/development' into development 2026-10-18 11:58:46 +04:00
sindoring b32573186b Fix transport navigation and add content migration workflow 2026-10-18 11:58:25 +04:00
Gamemechanic 68334f7ea4 Prefer equal_range over lower / upper bound pairs (#3572) 2026-10-17 22:14:31 +03:00
Gamemechanic 3b119510e2 Remove redundant null pointer checks (#3570) 2026-10-17 22:13:58 +03:00
Wall 82cdde3c0a Fix pvp rank requirements to use items (#3564) 2026-10-17 22:13:23 +03:00
Marco 53d24d5c74 Fix out-of-bounds read and lost timers in AsyncSystemTimer (#3567)
_ScheduleFunctionOnceMs compared the new timer against
`m_orderedPendingTimer.end()->m_whenToTriggerMe`, which dereferences
the deque's past-the-end iterator. AddressSanitizer reports a
container-overflow there as soon as a second timer is scheduled
while one is pending, e.g. two concurrent realmd sessions with
MaxSessionDuration.

Compare against back() instead, and append when the new timer is due
at the same time as the last one. With a strict `<`, an entry equal
to the last one fell through to the search loop, which looks for a
strictly later entry, found none and dropped the timer.
2026-10-07 18:31:01 +03:00
Marco 66192ee1ae Fix kqueue use-after-free when a socket closes mid-batch (#3566)
kqueue reports read and write readiness as separate events, so one
kevent() batch can hold an EVFILT_READ and an EVFILT_WRITE event for
the same socket. When the read event closes the connection and the
last reference to the socket goes away, the following write event is
dispatched to the destroyed object and realmd or mangosd crashes with
SIGSEGV in IoContext::RunUntilShutdown.

On macOS this happens every time realmd's MaxSessionDuration timer
closes a session (300 seconds by default): the shutdown sets EV_EOF
on both filters and both arrive in the same batch. One idle TCP
connection with MaxSessionDuration = 5 reproduces it in seconds.
Linux is unaffected because epoll reports both directions in one
event.

The BSD event loop now records the batch it is dispatching per
thread, and ~AsyncSocket removes the socket from the rest of that
batch, so its remaining events are skipped.
2026-10-07 18:30:51 +03:00
sindoring 3ba4ddcca4 fix 2026-10-04 13:57:57 +04:00
sindoring 942d1e6332 фикс 2026-10-04 13:52:41 +04:00
sindoring 08450cc8a1 launcher ticket 2026-10-04 12:13:41 +04:00
schell244 0e3ff01e76 Add packet class for raid instance info. 2026-10-03 10:54:49 +02:00
schell244 9c048291a2 Move instance packets into their own file. 2026-10-03 10:54:49 +02:00
sindoring 25a45a7463 правки в docker окружении 2026-10-02 17:43:52 +04:00
sindoring 614ebe917b докер обвязка 2026-10-02 11:00:30 +04:00
schell244 4b3d241cff Add missing override specifiers to fix clang build. 2026-10-01 13:49:50 +02:00
schell244 0a1c22abe4 Use FillInitialWorldState helper for all init world states. 2026-10-01 13:25:40 +02:00
schell244 79c7da6b23 Add packet class for init world states. 2026-10-01 13:25:13 +02:00
schell244 8159206984 Add packet class for loot response. 2026-10-01 13:25:13 +02:00
Michael Serajnik 8e08f45021 Exit with an error in mmap_extract.py when a step fails. (#3565) 2026-10-01 12:57:57 +03:00
Daribon 4641790816 Fix AQ20 Kurinnaxx, Obsidian Destroyer, Moam and AQ40 Obsidian Eradicator. (#3563) 2026-09-28 15:20:36 +03:00
schell244 4b350a09fc Make ADT and WDT chunk validation actually run 2026-09-15 22:57:38 +02:00
schell244 dabe97332e Fix missing water from multi layer MCLQ chunks 2026-09-15 22:57:38 +02:00
ratkosrb 8f4e608450 Fix update object and remove two not needed packet buffer reservations.
Closes https://github.com/vmangos/core/issues/3562
2026-09-15 21:55:32 +03:00
schell244 2e8a5590fc Add missing include. 2026-09-15 17:20:44 +02:00
schell244 e9dc976be5 Fix build. 2026-09-15 17:10:41 +02:00
schell244 ec0e9ebc87 Move DestroyObject out of Misc and next to the other object update packets. 2026-09-15 16:45:56 +02:00
schell244 a24c48f3d3 Convert UpdateData to build an UpdateObject server packet. 2026-09-15 16:45:56 +02:00