Commit graph

7272 commits

Author SHA1 Message Date
schell244
18e37d1fe7 Store separate copy of creature groups per map. 2026-08-14 07:25:36 +02:00
schell244
2f7bb2ef2e Warden: Prevent reading out of bounds in some scans. 2026-08-14 07:25:32 +02:00
schell244
bf5c2271c9 Warden: Fix max size of string hash check. 2026-08-14 07:25:29 +02:00
schell244
04af393510 Warden: Fix broken request and reply size check. 2026-08-14 07:25:27 +02:00
schell244
68edebe906 Warden: Prevent duplicating scripted scans on reload. 2026-08-14 07:25:25 +02:00
schell244
040852ad95 Add missing setting descriptions to config file. 2026-08-14 07:25:22 +02:00
schell244
4c0fa1944b Increase timeout timer for Missing In Action.
Closes https://github.com/vmangos/core/issues/3520
2026-08-14 07:25:17 +02:00
schell244
cd473e858d Don't log movement packets when anticheat is disabled. 2026-08-13 08:14:57 +02:00
schell244
aafe6f01a9 Rename character db cleanup options and disable removal of group and guild rows. 2026-08-13 08:14:51 +02:00
schell244
1246926c8b Add script for Raze during Shadoweaver quest.
Closes https://github.com/vmangos/core/issues/3215
2026-08-13 08:14:49 +02:00
schell244
9839bd2e2a Creatures should flee in a random direction.
Closes https://github.com/vmangos/core/issues/3445
2026-08-13 08:14:46 +02:00
schell244
b78b6c3ae6 Fix Phasing Stealth triggering in combat.
Closes https://github.com/vmangos/core/issues/3523
2026-08-13 08:14:39 +02:00
schell244
d92328256f Move injured friendly heals from EventAI to spell list.
Closes https://github.com/vmangos/core/issues/3521
2026-08-11 07:46:15 +02:00
schell244
a72bb440eb Cleanup orphaned rows in character db on maintenance day. 2026-08-10 12:24:59 +02:00
Silent-Walrus
a101028500
Fix quest log corruption in SendQuestUpdateAddItem (#3526)
The creature-objective count offset was applied to the log slot instead of
the counter index, so looting quest items wrote the running item count into
whatever quest sat N slots below the collecting quest in the log (N = the
collecting quest's creature objective count). Item counters are packed after
the creature counters within the same quest slot, so the offset belongs on
the counter index.

The corruption is display only - the real counters and character_queststatus
are unaffected, and a relog clears it.

Observed live: players showed "Captain Vachon slain: 8/1" on quest 371
without ever fighting him. The 8 was their Embalming Ichor count from The
Graverobbers (quest 358: 2 creature objectives + 8x item 2834) sitting two
slots above in the quest log.

Also bound the counter index: a quest with 4 combined objectives would
shift the 6-bit counter into the state byte.

Introduced in 4f067300b (#2459).
2026-08-08 11:09:19 +03:00
Silent-Walrus
e66174ef3c
Fix memory leak in ReadableBuffer assignment operators. (#3525)
ReadableBuffer stores its payload in a union of shared_ptrs with manual
lifetime management. The destructor correctly calls Destruct(), but none of
the three assignment operators released the pointer they were already
holding before overwriting the union:

- operator=(std::nullptr_t) only set m_type to Unset, so the held
  shared_ptr was never destroyed and its refcount never reached zero.
- The copy and move assignment operators placement-new over the live
  shared_ptr.

AsyncSocket assigns m_writeSrc = nullptr when a write completes, so every
write that went through m_writeSrc stranded one shared_ptr<ByteBuffer>
holding that connection send buffer.

Also adds the missing self-assignment check to move assignment, which
becomes necessary once Destruct() is called: a self-move would otherwise
free the payload and then placement-new from the freed object.

Windows is affected far more severely than Linux, because
AsyncSocket_posix::Write() sends inline and returns early without ever
touching m_writeSrc when the whole buffer fits into the kernel socket
buffer, while the IOCP implementation always stores it.
2026-08-07 17:33:30 +03:00
NickTyrer
e65e48e3c5
Fix Door Not Closing (#3512) 2026-08-03 11:28:13 +03:00
Daribon
2d0928bd9c
Fix Obsidian Destroyer's Drain Mana. (#3518) 2026-08-03 02:59:31 +03:00
Daribon
4fdf2f7736
Fix Moam mana at spawn. (#3517) 2026-08-03 02:59:21 +03:00
Gamemechanic
91c920d402
Fix swapped arguments in Unit::ApplySpellImmune (#3516) 2026-07-31 23:56:47 +02:00
schell244
db7450c6e4 Fix Nature's Grasp talent getting unlearned upon training rank 2.
Closes https://github.com/vmangos/core/issues/3511
2026-07-29 17:11:37 +02:00
Richard Higgins
90793c7c6c
Remove stalked-target auras from the target when the caster dies (#3499)
Fixes #1615.
2026-07-27 05:32:13 +03:00
schell244
2a56e5ebba Correct position and movement of two critters.
Closes https://github.com/vmangos/core/issues/3281
2026-07-26 12:47:20 +02:00
schell244
4cb4f86ac5 Some more changes to Stitches script. 2026-07-26 12:47:17 +02:00
schell244
804cf5ae36 Reset position of Watcher Dodds and Paige after stiches dies. 2026-07-26 12:47:09 +02:00
Gamemechanic
5485f93d30
Small refactors in Unit.cpp (#3510) 2026-07-26 05:09:04 +03:00
schell244
1b3513846a Correct creature static flags based on 1.9 wdb files. 2026-07-25 18:23:16 +02:00
schell244
f328a2cb2e Correct creature static flags based on 1.10 wdb files. 2026-07-24 10:07:52 +02:00
schell244
ebf2ae06fd Fix spell reflection crashes before 1.6. 2026-07-24 10:07:52 +02:00
schell244
dbe65d3ec1 Fix spell miss info for 1.5 client.
Closes https://github.com/vmangos/core/issues/3508
2026-07-24 10:07:52 +02:00
schell244
b2a5d1272e Add unknown hitinfo flags to enum. 2026-07-24 10:07:52 +02:00
Nishad
3e75e00fe5
Send melee attack state before doing the damage (#3505) 2026-07-24 03:00:59 +03:00
Spit
11837a71cc
Clear emote state from creatures on entering combat. (#3507) 2026-07-23 11:31:55 +03:00
schell244
ca760e76f0 Send SMSG_ATTACKERSTATEUPDATE when casting on next melee spells. 2026-07-21 18:12:03 +02:00
NickTyrer
b7cd0e128c
Pool Some Fadeleaf, Gromsblood and Grave Moss (#3494) 2026-07-21 08:36:13 +01:00
schell244
d6ed90d82c Pet family was assigned to Son of Hakkar and Soulflayer in 1.8. 2026-07-21 08:26:37 +02:00
schell244
49960c45e5 More changes to ogre models. 2026-07-21 08:26:37 +02:00
schell244
b3853872db Add missing Succubus minion to Morganth. 2026-07-21 08:26:37 +02:00
schell244
6961c0f2ab Correct creature data based on 1.2 wdb files. 2026-07-21 08:26:36 +02:00
Simp-N
80d3b7beeb
Prevent pickpocketing humanoids and undead with no pickpocket loot (#2729) 2026-07-20 10:29:45 +03:00
Richard Higgins
8f6018a01d
Share vendor item visibility between list and purchase paths (#3502)
SMSG_LIST_INVENTORY numbers only the rows that survive class, race,
reputation, and condition filtering, but BuyItemFromVendor still resolves
and reports raw backing-list indices. A hidden earlier row therefore
makes SMSG_BUY_ITEM name the wrong compact slot, so the client
decrements a different item's limited-stock display; hidden rows also
remain directly purchasable. Introduce one visibility helper used by
both the list and buy paths, reject purchases of filtered rows, and
report the compact visible slot in the purchase response.

Fixes #2591.
2026-07-20 10:26:08 +03:00
Richard Higgins
9e006e0ce6
Delay Mograine's death so Forgiveness visual displays properly (#3503) 2026-07-20 10:23:47 +03:00
Richard Higgins
6f9d86f666
Clamp auction time left to the client's signed 32-bit millisecond range (#3497)
The 1.12 client's auction list handlers add the received time-left dword to
the current 32-bit tick and Script_GetAuctionItemTimeLeft later subtracts
with signed 32-bit arithmetic. Auction durations extended past that half
range (e.g. via Rate.Auction.Time multipliers) wrap a valid future auction
into the client's expired path. Clamp the interval to the signed range and
floor it at zero so an auction expiring while its list packet is built
cannot underflow.
2026-07-20 08:57:50 +03:00
Richard Higgins
af30a92a9c
Validate the master looter GUID in CMSG_LOOT_METHOD (#3500)
Script_SetLootMethod resolves the requested master to the active player
or a party/raid roster member before sending the packet, so an arbitrary
GUID from a modified client must not become durable group loot state.
Require roster membership for master loot and canonicalize the stored
looter GUID to zero for every other method, matching what the stock
client sends.
2026-07-20 08:46:57 +03:00
Richard Higgins
8bfe3c4835
Accept the stock 1,000,000 random roll upper bound (#3498)
Script_RandomRoll in client 1.12.1.5875 accepts every range through
1,000,000 and sends both uint32 bounds in MSG_RANDOM_ROLL. The handler's
older 10,000 ceiling silently drops otherwise-valid stock requests.
2026-07-20 08:29:44 +03:00
Richard Higgins
12c7379677
Allow multiple Nefarius's Corruption accepters per scepter run (#3504)
Multiple raiders could hold Nefarius's Corruption during the same timed
run in vanilla, while Nefarian still yielded only one Red Scepter Shard.
The instance already designates the first accepter as its Scepter
Champion and conditions the sole shard drop on that GUID, so later
acceptances while Vaelastrasz still offers the quest in the pre-start
SPECIAL state no longer insta-fail; the shard owner stays stable.

Relates #2998.
2026-07-20 08:22:30 +03:00
Stoabrogga
d0aff0cedc
Add CI build for USE_PCH=OFF (#3492) 2026-07-19 23:12:37 +03:00
Gamemechanic
1468bbe020
Fix output for loading instance custom encounters. (#3496) 2026-07-19 21:52:16 +03:00
Gamemechanic
30c87a37f6
Remove cmake references to no longer existing files. (#3495) 2026-07-19 21:51:42 +03:00
schell244
d9c0a30b86 Most humanoids could not swim before patch 1.3. 2026-07-19 13:29:38 +02:00