8274 Commits

Author SHA1 Message Date
Vayle
ee49bf5cd9
Update zone/cli/tests/cli_zone_state.cpp
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-08 11:43:58 -04:00
Vayle
7da9bd74eb Enforce suppressed buff persistence schema 2026-03-08 11:33:31 -04:00
copilot-swe-agent[bot]
2b88b51674 Fix: Move brace to next line for case statement consistency
Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com>
2026-02-01 00:13:21 +00:00
Vayle
3716355750
Update zone/spell_effects.cpp
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-01-31 19:11:50 -05:00
Vayle
185f2a4db3 Fix: restrict spell suppression restoration to client-owned pets; preserve cleanup via guarded restoration; restore levitate visuals for pets
- Limit restoration code path to IsPet() && GetOwner()->IsClient()\n- Guard restoration logic instead of early-return to keep cleanup paths\n- Restore nimbus, illusion, procs, and levitate FlyMode appropriately\n- Resolve conflicts with master in zone/spell_effects.cpp for PR #45

Co-Authored-By: Warp <agent@warp.dev>
2026-01-31 19:08:58 -05:00
Vayle
139343691a
Merge pull request #40 from Valorith/copilot/sub-pr-39
Add Levitate effect restoration for client pets after suppression
2026-01-31 18:13:13 -05:00
Vayle
5deb80eb08
Merge pull request #39 from Valorith/fix/buff-suppression-pet-restore
Fix: Add non-client effect restoration after suppression expires
2026-01-31 16:51:18 -05:00
copilot-swe-agent[bot]
6758108f35 Add comment clarifying non-client mob dispel behavior
Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com>
2026-01-31 21:27:02 +00:00
copilot-swe-agent[bot]
56b5e4e84e Restrict spell suppression restoration to client pets only
Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com>
2026-01-31 20:33:42 +00:00
copilot-swe-agent[bot]
5e43850e8e Restrict suppression system to clients and client pets only
Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com>
2026-01-31 20:33:33 +00:00
copilot-swe-agent[bot]
9a657e7d6a Resolve merge conflict with updated base branch
Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com>
2026-01-31 20:31:19 +00:00
copilot-swe-agent[bot]
1607aea793 Add comment to Levitate restoration code
Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com>
2026-01-31 20:27:10 +00:00
Vayle
fa3bbec739
Update zone/spell_effects.cpp
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-01-31 15:12:58 -05:00
Vayle
9eb982ef15
Merge pull request #41 from Valorith/copilot/sub-pr-39-again
Add DivineAura effect restoration for non-client mobs after suppression expires
2026-01-31 15:05:43 -05:00
copilot-swe-agent[bot]
637d6e85c7 Add Levitate effect restoration for non-client mobs
Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com>
2026-01-31 14:52:18 -05:00
copilot-swe-agent[bot]
ff7dbce6f2 Fix compilation error: change return false to return in void function
Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com>
2026-01-31 04:24:44 +00:00
copilot-swe-agent[bot]
7129acc3b0 Fix compilation error: change return false to return in void function
Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com>
2026-01-31 04:23:15 +00:00
Vayle
223c5b828e
Merge pull request #37 from Valorith/fix/buff-suppression-death-fade
Fix: Death/mass-fade now properly clears suppressed buffs
2026-01-30 22:44:03 -05:00
Vayle
ec2c4b5909
Merge pull request #38 from Valorith/fix/buff-suppression-client-desync
Fix: Prevent OOB access in BuffFadeBySlot for suppressed buffs
2026-01-30 22:43:45 -05:00
Vayle
3ec73a8924
Merge pull request #36 from Valorith/fix/buff-suppression-persistence
Fix: Persist buff suppression state across zones
2026-01-30 22:43:28 -05:00
copilot-swe-agent[bot]
57edda7535 Add DivineAura effect restoration for non-client mobs
Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com>
2026-01-31 03:40:51 +00:00
Vayle
35953234c3
Update zone/spell_effects.cpp
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-01-30 22:39:42 -05:00
Vayle
43a146da6d
Update zone/spell_effects.cpp
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-01-30 22:39:11 -05:00
Vayle
dffc4610d5 Reapply visual/state effects for pets and NPCs after suppression expires
When buff suppression expires, only clients get ReapplyBuff() called to
restore visual and state effects (illusions, procs, silence, etc.).
Pets and NPCs had no equivalent handling, causing permanent loss of
illusions, weapon procs, and other active effects after suppression.

Add non-client effect restoration in the suppression expiry path of
BuffFadeBySlot() that handles illusions, silence, amnesia, and weapon
procs for pets, NPCs, and bots.

Fixes #32
2026-01-31 02:29:53 +00:00
Vayle
f6ab4cd377 Skip effect removal loop for SPELL_SUPPRESSED in BuffFadeBySlot
When BuffFadeBySlot() is called on a suppressed slot (e.g., when
suppression timer expires), the effect removal loop accesses
spells[SPELL_SUPPRESSED] (index 0xFFFD) which is out-of-bounds.
This is unnecessary since effects were already removed when the buff
was first suppressed. Skip the loop entirely for SPELL_SUPPRESSED
slots to prevent OOB memory access and let execution proceed directly
to the restoration branch.

Fixes #29
2026-01-31 02:29:11 +00:00
Vayle
5d0abdc4ac Handle SPELL_SUPPRESSED slots in mass-fade functions
BuffFadeNonPersistDeath(), BuffFadeBeneficial(), BuffFadeDetrimental(),
and BuffFadeByEffect() all use IsValidSpell() which returns false for
SPELL_SUPPRESSED (0xFFFD), causing suppressed buffs to survive death
and mass-dispels. Worse, if BuffFadeBySlot() were called on a
suppressed slot, it would restore the buff instead of clearing it.

Add explicit handling for SPELL_SUPPRESSED slots in each function:
check the suppressedid against the fade criteria and clear the slot
directly (set to SPELL_UNKNOWN) rather than calling BuffFadeBySlot().

Fixes #31
2026-01-31 02:27:36 +00:00
Vayle
0362cacf99 Skip DoBuffTic() for SPELL_SUPPRESSED buff slots
BuffProcess() calls DoBuffTic() on all valid-or-suppressed spells, but
DoBuffTic() accesses spells[buff.spellid] which for SPELL_SUPPRESSED
(0xFFFD) could read out-of-bounds memory. Add an explicit check to skip
DoBuffTic() for suppressed slots since they should only have their timer
decremented, not their effects ticked.

Fixes #30
2026-01-31 02:26:56 +00:00
Vayle
9d98f95317 Fix buff suppression state not persisting across zones
When a player zones while having suppressed buffs (via the spell
suppression system), the suppression state was not saved to the
database. On zone-in, suppressed buffs were restored as normal active
buffs, causing non-persistent illusions to be incorrectly removed.

Changes:
- Add 'suppressed' column to character_buffs table (tinyint, default 0)
- SaveBuffs(): Save suppressed flag (1 when buff is in SPELL_SUPPRESSED state)
- LoadBuffs(): Restore buffs in suppressed state when suppressed=1,
  setting spellid=SPELL_SUPPRESSED and populating suppressedid/
  suppressedticsremaining from the saved spell_id and ticsremaining
- LoadBuffs(): Skip suppressed buffs in the illusion/charm removal loop
  so they are not incorrectly stripped on zone-in

Fixes #33
2026-01-31 02:24:33 +00:00
copilot-swe-agent[bot]
c0f5af2bd7 Explain MSVC ICF workaround for spelltype commands
Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com>
2026-01-24 18:11:47 +00:00
copilot-swe-agent[bot]
6a8b4c746d Prevent bot spelltype command aliasing
Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com>
2026-01-24 17:47:18 +00:00
Claude
385b9922aa
Merge upstream/master to incorporate EQEmu fixes
Resolve CMake style conflict in common/CMakeLists.txt by adopting
the lowercase CMake command style used consistently throughout
the upstream codebase.
2026-01-24 05:02:16 +00:00
copilot-swe-agent[bot]
e02da5ba4a Harden inspect message handling
Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com>
2026-01-24 03:23:51 +00:00
Claude
96a49e2bf6
Fix inventory overflow bug overwriting equipment slot 0
FindFirstFreeSlotThatFitsItem was returning 0 instead of INVALID_INDEX
when no free slot was found. This caused items to be placed in slot 0
(charm equipment slot) when inventory was full, overwriting equipped items.

Changes:
- Fix FindFirstFreeSlotThatFitsItem to return INVALID_INDEX when no slot found
- Add defensive check in PutItemInInventoryWithStacking to protect equipment
  slots 0-22 from being targeted for item placement
2026-01-23 21:38:43 +00:00
brainiac
2bff404d22 normalize includes: gm commands 2025-12-26 20:58:07 -08:00
brainiac
d6f4904351 normalize includes: bot commands 2025-12-26 20:58:07 -08:00
brainiac
7fe49b5630 normalize includes: zone 2025-12-26 20:58:07 -08:00
brainiac
418e31911c cmake: remove unused copy of gm_commands CMakeLists.txt 2025-12-26 20:58:07 -08:00
brainiac
a8551f20c9 cmake: add project folders
- Add static libraries to "libraries" folder
- Add servers to "executables/servers" folder
- Add tools to "executables/tools" folder
- Add tests to "executables/tests" folder
- Add contrib projects to "contrib" folder
2025-12-26 20:58:07 -08:00
nytmyr
6c057308da
[Bots] Allow melee to sit to med/heal when out of combat (#5036)
Some checks failed
Build / Linux (push) Has been cancelled
Build / Windows (push) Has been cancelled
2025-12-13 23:29:06 -08:00
nytmyr
0bc0ee609a
[Bots] Add 'all' argument to ^spellannouncecasts (#5037) 2025-12-13 23:28:51 -08:00
Alex
c84df0d5ba
Build Improvements (#5033)
Some checks are pending
Build / Linux (push) Waiting to run
Build / Windows (push) Waiting to run
* Start rewrite, add vcpkg

* Simple vcpkg manifest, will almost certainly need tweaking

* Remove cmake ext we wont be using anymore

* Update vcpkg to no longer be from 2022, update cmake lists (wip)

* Add finds to the toplevel cmakelists

* WIP, luabind and perlbind build.  Common only partially builds.

* Fix common build.

* shared_memory compiles

* client files compile

* Tests and more cmake version updates

* World, had to swap out zlib-ng for now because it wasn't playing nicely along side the zlib install.  May revisit.

* UCS compiles now too!

* queryserv and eqlaunch

* loginserver works

* Zone works but is messy, tomorrow futher cleanup!

* Cleanup main file

* remove old zlibng, remove perlwrap, remove hc

* More cleanup

* vcpkg baseline set for CI

* Remove pkg-config, it's the suggested way to use luajit with vcpkg but it causes issues with CI and might be a pain point for windows users

* Actually add file

* Set perlbind include dir

* Perl link got lost

* PERL_SET_INTERP causes an issue on newer versions of perl on windows because a symbol is not properly exported in their API, change the lines so it's basically what it used to be

* Remove static unix linking, we dont do automated released anymore and this was tightly coupled to that.  Can explore this again if we decide to change that.

* Remove unused submodules, set cmake policy for boost

* Fix some cereal includes

* Improve some boilerplate, I'd still like to do better about getting linker stuff set.

* Going through and cleaning up the build.

* Fix world, separate out data_buckets.

* add fixes for other servers

* fix zone

* Fix client files, loginserver and tests

* Newer versions of libmariadb default to tls forced on, return to the default of not forcing that.
auto_login were breaking on linux builds
loginserver wasn't setting proper openssl compile flag

* Move set out of a giant cpp file include.

* Convert show

* convert find

* Add uuid to unix builds

* Remove some cpp includes.

* Restructure to remove more things.

* change db update manifest to header
change build yml

* Move world CLI include cpps to cmake.

* Move zone cli out of source and into cmake

* Sidecar stuff wont directly include cpp files now too.

* Fix uuid-dev missing on linux runner

* Reorg common cmake file

* Some cleanup

* Fix libsodium support (oops). Fix perl support (more oops)

* Change doc

---------

Co-authored-by: KimLS <KimLS@peqtgc.com>
2025-12-13 19:56:37 -08:00
Vayle
f93e0f78c8 Fix compilation errors: Update SE_ macros to SpellEffect enums 2025-11-20 16:38:30 -05:00
Vayle
bcaae11212 Fix: Use std::filesystem::path for plugin directory concatenation on Windows 2025-11-20 15:23:54 -05:00
zimp-wow
dd6cfcddca [Feature] Rule to replace dispel spell effects with suppression effect. 2025-11-20 15:22:49 -05:00
Vayle
f74efcaa5f
[Bug Fix] Enhance SummonItemIntoInventory() to support stacking of items (#5022)
* Initial plan

* Initial plan

* Enhance SummonItemIntoInventory to support stacking

Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com>

* Update .gitignore

* Revert "Update .gitignore"

This reverts commit 16159398d8a69c53a719a1d54d068bbe0fa5284c.

* Disable PCH for patch sources compiled with -O0

Disables precompiled headers for specific patch source files that are compiled with -O0 on UNIX. This avoids Clang errors caused by __OPTIMIZE__ macro state mismatches between the PCH and translation units.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2025-10-22 22:50:00 -07:00
Vayle
30004716bb
Merge pull request #8 from Valorith/fix/evolving-saylink-5017
[Bug Fix] Evolving Items SayLink
2025-10-05 20:01:46 -04:00
Mitch Freeman
a9d3e1bfe1 Updates
Tested ok
2025-10-05 12:50:18 -04:00
Vayle
4600b05bea
Merge pull request #5 from Valorith/copilot/fix-ff2b6de1-c436-4d71-b9f4-dfeb78b9fa7f
Enhance SummonItemIntoInventory to support stacking of items
2025-10-04 14:45:33 -04:00
Chris Miles
8175ae6187 [Release] 23.10.3 2025-09-17 01:31:48 -05:00
Alex King
0bbb5b90e7
[Repositories] Convert Total Time Played to Repositories (#5008) 2025-09-15 09:14:59 -04:00