Commit Graph

8297 Commits

Author SHA1 Message Date
Vayle 04a907a304 Merge pull request #70 from Valorith/copilot/sub-pr-68-again
Fix: restore outer SPELL_UNKNOWN branch in BuffFadeBySlot
2026-03-09 15:31:32 -04:00
copilot-swe-agent[bot] c10eeb0c16 Fix: restore outer else-SPELL_UNKNOWN branch in BuffFadeBySlot
Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com>
2026-03-09 19:30:30 +00:00
copilot-swe-agent[bot] d7290757e0 Fix misplaced comment: add proper description for ReapplyBuffEffects, restore original comment before BuffFadeBySlot
Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com>
2026-03-09 19:29:55 +00:00
Vayle 6b0cc98b06 Fix suppressed buff effect restoration 2026-03-09 15:13:24 -04:00
Vayle 4cf37e7d2f Merge pull request #67 from Valorith/copilot/sub-pr-65-again
Add PET_BUFF_COUNT bounds guard on pet buff load
2026-03-09 13:13:38 -04:00
copilot-swe-agent[bot] 80bd422922 Add PET_BUFF_COUNT guard on pet buff load to prevent out-of-bounds write
Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com>
2026-03-09 17:11:24 +00:00
copilot-swe-agent[bot] 1b4cc695e0 Fix pet_buffs.reserve to use cumulative size to avoid reallocations
Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com>
2026-03-09 16:53:02 +00:00
Vayle 83ff1a840d Preserve suppressed pet buffs across zoning 2026-03-09 12:32:37 -04:00
Vayle ab39e26b52 Merge pull request #55 from Valorith/codex/enforce-suppressed-buff-persistence
Fix buff persistence regression when suppressed schema is missing
2026-03-08 21:53:22 -04:00
copilot-swe-agent[bot] d8edd960f9 Address review: consistent TransactionBegin, remove DDL rollback test, revert build.yaml vcpkg steps
Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com>
2026-03-09 01:11:23 +00:00
Vayle efd27c63ce Merge pull request #63 from Valorith/copilot/sub-pr-55-again
Gate DDL rollback test behind --run-ddl-tests flag
2026-03-08 20:56:38 -04:00
copilot-swe-agent[bot] cd23894b80 Gate DDL rollback test behind --run-ddl-tests flag to avoid table locks on production databases
Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com>
2026-03-09 00:52:49 +00:00
Vayle 2666d624eb Update zone/cli/tests/cli_zone_state.cpp
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-08 20:51:07 -04:00
copilot-swe-agent[bot] a36002dbed Fix: skip suppressed slots in DispelMagic instead of removing them
Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com>
2026-03-09 00:22:35 +00:00
copilot-swe-agent[bot] 8b7fbe7f9a Fix: truly remove suppressed buffs on permanent dispel via RemoveSuppressedBuffBySlot
Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com>
2026-03-09 00:16:17 +00:00
copilot-swe-agent[bot] 44ab4f0a0f Add rollback regression test: verify pre-existing buffs survive failed SaveBuffs()
Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com>
2026-03-09 00:06:07 +00:00
Vayle 3f7e980cd5 Fix suppressed dispel crash in DispelMagic 2026-03-08 19:57:12 -04:00
copilot-swe-agent[bot] d0e1c027e9 Address PR review: check transaction/delete results, fix manifest, use distinct spell IDs in test
Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com>
2026-03-08 23:54:04 +00:00
copilot-swe-agent[bot] fcd03df1f8 Resolve conflicts: adopt base branch error message wording in SaveBuffs
Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com>
2026-03-08 18:50:43 +00:00
copilot-swe-agent[bot] 2e62fb37bf Fix zonedb.cpp: use commit_result.Success() instead of !commit_result for MySQLRequestResult
Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com>
2026-03-08 17:56:47 +00:00
copilot-swe-agent[bot] bd92f19869 Fix build error: use fully-qualified EQ::versions::ClientVersion::RoF2; use < for REPLACE row count check
Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com>
2026-03-08 17:25:35 +00:00
Vayle 6290ef42c6 Update zone/zonedb.cpp
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-08 12:22:30 -04:00
copilot-swe-agent[bot] e359852ccf Wrap SaveBuffs delete+replace in a transaction to prevent buff wipe on insert failure
Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com>
2026-03-08 15:47:13 +00:00
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