From 637d6e85c7544332e9ff3a24ff9016a1d6b76ad0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 31 Jan 2026 03:40:51 +0000 Subject: [PATCH 02/11] Add Levitate effect restoration for non-client mobs Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- zone/spell_effects.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/zone/spell_effects.cpp b/zone/spell_effects.cpp index 4b36eae47..08b1d60ee 100644 --- a/zone/spell_effects.cpp +++ b/zone/spell_effects.cpp @@ -4719,6 +4719,20 @@ void Mob::BuffFadeBySlot(int slot, bool iRecalcBonuses, bool suppress, uint32 su case SpellEffect::RangedProc: AddRangedProc(GetProcID(buffs[slot].spellid, i), 100 + spell.limit_value[i], buffs[slot].spellid, GetSpellProcLimitTimer(buffs[slot].spellid, ProcType::RANGED_PROC)); break; + case SpellEffect::Levitate: + { + if (!zone->CanLevitate()) { + SendAppearancePacket(AppearanceType::FlyMode, 0); + BuffFadeByEffect(SpellEffect::Levitate); + } else { + if (spell.limit_value[i] == 1) { + SendAppearancePacket(AppearanceType::FlyMode, EQ::constants::GravityBehavior::LevitateWhileRunning); + } else { + SendAppearancePacket(AppearanceType::FlyMode, EQ::constants::GravityBehavior::Levitating); + } + } + break; + } default: break; } From 0e15b58ba9b74a44a417287ccad6ff7fb254f1f2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 31 Jan 2026 19:45:24 +0000 Subject: [PATCH 03/11] Add comprehensive rebase instructions for PR #40 Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- REBASE_INSTRUCTIONS.md | 142 +++++++++++++++++++++++++++++++++++++ REBASE_VISUAL_GUIDE.md | 157 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 299 insertions(+) create mode 100644 REBASE_INSTRUCTIONS.md create mode 100644 REBASE_VISUAL_GUIDE.md diff --git a/REBASE_INSTRUCTIONS.md b/REBASE_INSTRUCTIONS.md new file mode 100644 index 000000000..c901237de --- /dev/null +++ b/REBASE_INSTRUCTIONS.md @@ -0,0 +1,142 @@ +# Instructions to Resolve PR #40 Merge Conflicts + +## Current Situation + +**Problem:** PR #40 has merge conflicts because: +- Your PR branch (`copilot/sub-pr-39`) is at commit `6e2a9a4` (old state) +- The base branch (`fix/buff-suppression-pet-restore`) has moved forward to commit `b19503a` +- The base branch now includes fixes that were in your PR, causing conflicts +- GitHub shows the PR as not mergeable (`mergeable: false`, `mergeable_state: "dirty"`) + +**Why this happened:** The base branch was updated with the `return false;` → `return;` fix and nimbus effect restoration that were originally part of your PR. Now those commits are redundant and causing conflicts. + +## Solution: Rebase Your Branch + +You need to rebase your PR branch onto the latest base branch. This will: +1. Remove redundant commits that are now in the base branch +2. Keep only the Levitate restoration feature +3. Resolve all conflicts + +## Step-by-Step Instructions + +### Option 1: Manual Rebase (Recommended) + +Run these commands in your local repository: + +```bash +# 1. Make sure you're on the PR branch +git checkout copilot/sub-pr-39 + +# 2. Fetch the latest changes +git fetch origin + +# 3. Rebase onto the latest base branch +git rebase origin/fix/buff-suppression-pet-restore + +# 4. When git reports a conflict in the validation check, skip it (it's redundant) +# Git will show a conflict like: +# <<<<<<< HEAD +# if (!IsValidSpell(buffs[slot].spellid)) +# return; +# ======= +# if (!IsValidSpell(buffs[slot].spellid)) { +# return; +# } +# >>>>>>> (your commit) +# +# Skip this commit since the base already has the fix: +git rebase --skip + +# 5. Git will automatically drop the "Resolve merge conflict" commit +# The rebase should complete successfully + +# 6. Force-push the rebased branch +git push --force-with-lease origin copilot/sub-pr-39 +``` + +### Option 2: Using GitHub CLI + +If you have GitHub CLI installed: + +```bash +# Update the PR branch +gh pr checkout 40 +git fetch origin +git rebase origin/fix/buff-suppression-pet-restore +git rebase --skip # When prompted about the validation conflict +git push --force-with-lease origin copilot/sub-pr-39 +``` + +### Option 3: Reset and Cherry-pick + +If the rebase seems complicated, you can reset to the base and cherry-pick only the Levitate commit: + +```bash +# 1. Fetch latest +git fetch origin + +# 2. Create a backup of your current branch +git branch copilot/sub-pr-39-backup + +# 3. Reset your branch to the base +git checkout copilot/sub-pr-39 +git reset --hard origin/fix/buff-suppression-pet-restore + +# 4. Cherry-pick only the Levitate restoration commit (03f7704) +git cherry-pick 03f7704 + +# 5. Force-push +git push --force-with-lease origin copilot/sub-pr-39 +``` + +## Expected Result + +After successful rebase, your branch will have: +- **2 commits** total: + - Initial plan commit + - Levitate restoration commit +- **Base:** `fix/buff-suppression-pet-restore` at commit `b19503a` +- **No conflicts** - the PR will be mergeable + +The validation fix and nimbus restoration will be inherited from the base branch, not part of your PR's changes. + +## What Changed + +### Before Rebase: +- 4 commits in your PR +- Includes validation fix (`return false;` → `return;`) +- Includes merge conflict resolution commit +- Conflicts with base branch + +### After Rebase: +- 2 commits in your PR +- Only Levitate restoration feature +- Clean history based on latest base branch +- No conflicts + +## Files Affected + +Your PR will only modify: +- `zone/spell_effects.cpp` - Lines 4722-4735 (Levitate case added to switch statement) + +## Need Help? + +If you encounter issues: +1. Check that you're on the correct branch: `git branch` +2. Verify the base branch SHA: `git ls-remote origin fix/buff-suppression-pet-restore` +3. If stuck during rebase: `git rebase --abort` to start over +4. Check the PR status: https://github.com/Valorith/Server/pull/40 + +## Additional Notes + +- **Why `--force-with-lease`?** This is safer than `--force` because it won't overwrite the remote branch if someone else pushed to it +- **Why skip the validation commit?** The base branch already has `return;` (correct), so your commit adding the same fix is redundant +- **Is this safe?** Yes, rebasing removes redundant commits while keeping your Levitate feature intact + +## Verification + +After pushing, verify on GitHub: +1. Go to https://github.com/Valorith/Server/pull/40 +2. Check that "This branch has no conflicts with the base branch" appears +3. Verify only 2 commits are shown +4. Confirm the changes show only the Levitate restoration code diff --git a/REBASE_VISUAL_GUIDE.md b/REBASE_VISUAL_GUIDE.md new file mode 100644 index 000000000..872d6ffbc --- /dev/null +++ b/REBASE_VISUAL_GUIDE.md @@ -0,0 +1,157 @@ +# Visual Guide: PR #40 Rebase Process + +## Current State (BEFORE Rebase) + +``` +fix/buff-suppression-pet-restore (base branch) +│ +├─ b19503a ← Merge PR #42 (includes return; fix) +│ ├─ 4faf48a ← Merge PR #43 (includes return; fix) +│ ├─ ff7dbce ← Fix compilation: return false → return +│ └─ ...more commits with validation fixes +│ +└─ dffc461 ← Old base (what your PR was originally based on) + │ + └─ copilot/sub-pr-39 (your branch) ← CONFLICTS HERE! + ├─ 6e2a9a4 ← Resolve merge conflict + ├─ 597e6eb ← Add validation check (return;) + ├─ 03f7704 ← Add Levitate restoration ✓ (THIS IS WHAT WE WANT) + └─ 950e644 ← Initial plan +``` + +**Problem:** Your commits 597e6eb and 6e2a9a4 add the same fix that's already in b19503a! + +--- + +## After Rebase (TARGET State) + +``` +fix/buff-suppression-pet-restore (base branch) +│ +├─ b19503a ← Merge PR #42 (includes return; fix & nimbus) +│ ├─ 4faf48a ← Merge PR #43 +│ ├─ ff7dbce ← Fix compilation +│ └─ ... +│ +└─ copilot/sub-pr-39 (your branch - rebased) ← CLEAN! + ├─ f94cb8d ← Add Levitate restoration ✓ + └─ dee427b ← Initial plan +``` + +**Result:** Clean history with only your Levitate feature! + +--- + +## What the Rebase Does + +### Step 1: Replay Your Commits +``` +git rebase origin/fix/buff-suppression-pet-restore +``` +Git attempts to replay your commits on top of b19503a: +- ✓ 950e644 (Initial plan) → dee427b +- ⚠️ 597e6eb (Add validation) → **CONFLICT** (already in base) +- ⏭️ Skip this commit with: `git rebase --skip` +- ⏭️ 6e2a9a4 automatically dropped (contents already upstream) +- ✓ 03f7704 (Add Levitate) → f94cb8d + +### Step 2: Force Push +``` +git push --force-with-lease origin copilot/sub-pr-39 +``` +Updates the remote branch with the clean history. + +--- + +## The Conflict Explained + +When rebasing, Git will show: + +```cpp +<<<<<<< HEAD (base branch - what's already there) +if (!IsValidSpell(buffs[slot].spellid)) + return; +======= +if (!IsValidSpell(buffs[slot].spellid)) { (your commit - same fix!) + return; +} +>>>>>>> 597e6eb (Add validation check) +``` + +**Both sides have `return;`** - just different formatting! +Since the base already has the fix, skip your commit: `git rebase --skip` + +--- + +## Commit Details + +### Your Levitate Commit (03f7704) +This is the ONLY commit that should remain in your PR: + +```cpp +case SpellEffect::Levitate: +{ + if (!zone->CanLevitate()) { + SendAppearancePacket(AppearanceType::FlyMode, 0); + BuffFadeByEffect(SpellEffect::Levitate); + } else { + if (spell.limit_value[i] == 1) { + SendAppearancePacket(AppearanceType::FlyMode, + EQ::constants::GravityBehavior::LevitateWhileRunning); + } else { + SendAppearancePacket(AppearanceType::FlyMode, + EQ::constants::GravityBehavior::Levitating); + } + } + break; +} +``` + +Location: `zone/spell_effects.cpp` lines 4722-4735 + +--- + +## Quick Reference Commands + +```bash +# The complete rebase process +git checkout copilot/sub-pr-39 +git fetch origin +git rebase origin/fix/buff-suppression-pet-restore +# When conflict appears: +git rebase --skip +# After rebase completes: +git push --force-with-lease origin copilot/sub-pr-39 +``` + +## Troubleshooting + +### If rebase fails with different error: +```bash +git rebase --abort +# Try again or use Option 3 (cherry-pick) +``` + +### To see what will change: +```bash +git log origin/fix/buff-suppression-pet-restore..HEAD --oneline +``` + +### To verify base branch: +```bash +git fetch origin +git show origin/fix/buff-suppression-pet-restore:zone/spell_effects.cpp | grep -A3 "IsValidSpell" +# Should show: if (!IsValidSpell(buffs[slot].spellid)) +# return; +``` + +--- + +## Why This is Safe + +1. **Your Levitate code is preserved** - The commit 03f7704 will be replayed as-is +2. **No data loss** - Redundant commits are removed because they're already in base +3. **Cleaner history** - Removes duplicate/conflicting commits +4. **PR becomes mergeable** - No conflicts after rebase + +The validation fix you added is not lost - it's already in the base branch! From 981b7b4ea96f984b8081590ff63309632b51904d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 31 Jan 2026 19:45:51 +0000 Subject: [PATCH 04/11] Add quick reference guide for PR #40 rebase Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- QUICK_REBASE_GUIDE.md | 117 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 QUICK_REBASE_GUIDE.md diff --git a/QUICK_REBASE_GUIDE.md b/QUICK_REBASE_GUIDE.md new file mode 100644 index 000000000..c09a043b4 --- /dev/null +++ b/QUICK_REBASE_GUIDE.md @@ -0,0 +1,117 @@ +# Quick Reference: Resolve PR #40 in 5 Steps + +## TL;DR - Just Run These Commands + +```bash +# 1. Switch to PR branch +git checkout copilot/sub-pr-39 + +# 2. Fetch latest +git fetch origin + +# 3. Start rebase +git rebase origin/fix/buff-suppression-pet-restore + +# 4. Skip the conflicting commit (when prompted) +git rebase --skip + +# 5. Force push +git push --force-with-lease origin copilot/sub-pr-39 +``` + +**Done!** PR #40 will now be mergeable. + +--- + +## What You'll See + +### Step 3 Output: +``` +Rebasing (1/4) +Rebasing (2/4) +Rebasing (3/4) +Auto-merging zone/spell_effects.cpp +CONFLICT (content): Merge conflict in zone/spell_effects.cpp +error: could not apply 597e6eb... Add validation check +``` + +**This is expected!** → Go to Step 4 + +### Step 4 Output: +``` +Rebasing (4/4) +dropping 6e2a9a4... Resolve merge conflict -- already upstream +Successfully rebased and updated refs/heads/copilot/sub-pr-39. +``` + +**Success!** → Go to Step 5 + +### Step 5 Output: +``` +To https://github.com/Valorith/Server + 6e2a9a4..f94cb8d copilot/sub-pr-39 -> copilot/sub-pr-39 +``` + +**Done!** Check PR #40 on GitHub - it should show no conflicts. + +--- + +## Why Each Step? + +1. **git checkout** - Make sure you're on the right branch +2. **git fetch** - Get the latest base branch changes +3. **git rebase** - Replay your commits on the new base +4. **git rebase --skip** - Skip redundant commit (already in base) +5. **git push --force-with-lease** - Update GitHub with clean history + +--- + +## After Rebase: Verify + +Visit: https://github.com/Valorith/Server/pull/40 + +You should see: +- ✓ "This branch has no conflicts with the base branch" +- ✓ Only 2 commits +- ✓ Changes show only Levitate restoration code + +--- + +## If Something Goes Wrong + +**Abort and start over:** +```bash +git rebase --abort +``` + +**Need more details?** Read: +- `REBASE_INSTRUCTIONS.md` - Full instructions +- `REBASE_VISUAL_GUIDE.md` - Visual diagrams + +--- + +## One-Liner Alternative + +If you trust automation: +```bash +git checkout copilot/sub-pr-39 && \ +git fetch origin && \ +git rebase origin/fix/buff-suppression-pet-restore && \ +git rebase --skip && \ +git push --force-with-lease origin copilot/sub-pr-39 +``` + +⚠️ Only use if you understand what each command does! + +--- + +## What Changes + +**Before:** 4 commits (validation + conflict resolution + levitate + plan) +**After:** 2 commits (levitate + plan) + +**Result:** Clean PR with only your Levitate feature! + +--- + +**Questions?** Check the detailed guides in this directory. From 305719d62511a9d36c5d15d79aa917b0c5a26c60 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 31 Jan 2026 19:46:32 +0000 Subject: [PATCH 05/11] Add main README for PR #40 resolution Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- README_PR40.md | 150 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 README_PR40.md diff --git a/README_PR40.md b/README_PR40.md new file mode 100644 index 000000000..b08232fdc --- /dev/null +++ b/README_PR40.md @@ -0,0 +1,150 @@ +# PR #40 Resolution Summary + +## 📋 What You Need to Know + +**Problem:** PR #40 cannot be merged due to conflicts with the base branch. + +**Solution:** Follow the rebase instructions in this directory. + +**Time Required:** ~2 minutes + +**Difficulty:** Easy (just copy/paste 5 commands) + +--- + +## 🚀 Choose Your Guide + +### Option 1: Quick & Easy (Recommended) +📄 **QUICK_REBASE_GUIDE.md** +- Just 5 commands to copy/paste +- Takes 2 minutes +- Shows expected output at each step + +### Option 2: Detailed Explanation +📄 **REBASE_INSTRUCTIONS.md** +- Step-by-step with context +- Multiple approaches +- Troubleshooting tips +- Verification steps + +### Option 3: Visual Learner +📄 **REBASE_VISUAL_GUIDE.md** +- Diagrams and visual flow +- Before/after commit graphs +- Detailed conflict explanation +- Safe to follow visualization + +--- + +## ⚡ Super Quick Start + +If you just want to fix it now: + +```bash +cd /path/to/your/local/Server/repo +git checkout copilot/sub-pr-39 +git fetch origin +git rebase origin/fix/buff-suppression-pet-restore +git rebase --skip # When you see the conflict +git push --force-with-lease origin copilot/sub-pr-39 +``` + +Then check: https://github.com/Valorith/Server/pull/40 + +--- + +## ❓ Why This Happened + +The base branch (`fix/buff-suppression-pet-restore`) was updated with fixes that were originally in your PR. Now those commits are redundant and causing conflicts. + +**Your PR had:** +- Validation fix (`return false;` → `return;`) +- Merge conflict resolution +- Levitate restoration ← **This is what we keep** +- Initial plan + +**Base branch now has:** +- Validation fix (already done!) +- Nimbus restoration (already done!) + +**After rebase, your PR will have:** +- Levitate restoration ← **Only this!** +- Initial plan + +--- + +## ✅ Expected Result + +After following the guide: +- PR #40 shows "No conflicts with base branch" +- Only 2 commits in the PR +- Changes show only the Levitate feature +- Ready to merge! + +--- + +## 🆘 Need Help? + +1. Read the appropriate guide above +2. Check the troubleshooting section in REBASE_INSTRUCTIONS.md +3. If stuck: `git rebase --abort` to start over + +--- + +## 📊 Impact + +**What Changes:** +- Number of commits: 4 → 2 +- Merge status: Conflicting → Clean +- Changes: Validation + Nimbus + Levitate → Levitate only + +**What Stays the Same:** +- Your Levitate restoration code +- The functionality being added +- The PR goal and description + +**What's Different:** +- Cleaner commit history +- No redundant commits +- Inherited features from base branch + +--- + +## 🔍 Files Modified + +The rebase only affects Git history. Your code changes remain: +- `zone/spell_effects.cpp` (lines 4722-4735) + +The validation and nimbus changes are still there - they're just inherited from the base branch now instead of being in your commits. + +--- + +## 📝 Technical Details + +**Current Branch:** `copilot/sub-pr-39` at `6e2a9a4` +**Base Branch:** `fix/buff-suppression-pet-restore` at `b19503a` +**After Rebase:** `copilot/sub-pr-39` at `f94cb8d` (new) + +**Commits to Remove:** +- `597e6eb` - Add validation check (redundant) +- `6e2a9a4` - Resolve merge conflict (redundant) + +**Commits to Keep:** +- `950e644` → `dee427b` - Initial plan +- `03f7704` → `f94cb8d` - Add Levitate restoration + +--- + +## 🎯 Bottom Line + +1. Open `QUICK_REBASE_GUIDE.md` +2. Run the 5 commands +3. Done! + +Your PR will be clean and ready to merge. + +--- + +**Last Updated:** 2026-01-31 +**PR:** #40 - Add Levitate effect restoration for non-client mobs +**Status:** Awaiting rebase to resolve conflicts From 1c09445989f66f30abbe769bdabcbc222b741a73 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 31 Jan 2026 19:47:37 +0000 Subject: [PATCH 06/11] Add comprehensive index for PR #40 documentation Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- PR40_INDEX.txt | 132 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 PR40_INDEX.txt diff --git a/PR40_INDEX.txt b/PR40_INDEX.txt new file mode 100644 index 000000000..537362e95 --- /dev/null +++ b/PR40_INDEX.txt @@ -0,0 +1,132 @@ +================================================================================ + PR #40 RESOLUTION GUIDE - FILE INDEX +================================================================================ + +Total Documentation: 4 files, 566 lines, ~14.5 KB + +-------------------------------------------------------------------------------- +FILE OVERVIEW: +-------------------------------------------------------------------------------- + +1. README_PR40.md (150 lines, 3.5 KB) ⭐ START HERE + Purpose: Main overview and entry point + Contents: + - Problem summary + - Quick links to all guides + - Super quick 5-command solution + - Technical details + - Impact analysis + Audience: Everyone + Time to read: 3 minutes + +2. QUICK_REBASE_GUIDE.md (117 lines, 2.5 KB) ⚡ FASTEST + Purpose: Immediate action guide + Contents: + - 5 commands to copy/paste + - Expected output at each step + - One-liner alternative + - Quick troubleshooting + Audience: Experienced git users + Time to execute: 2 minutes + +3. REBASE_INSTRUCTIONS.md (142 lines, 4.5 KB) 📚 COMPREHENSIVE + Purpose: Detailed step-by-step guide + Contents: + - Complete instructions + - 3 different approaches (manual, CLI, cherry-pick) + - Full troubleshooting section + - Verification steps + - Safety notes + Audience: Those wanting full context + Time to read: 8 minutes + +4. REBASE_VISUAL_GUIDE.md (157 lines, 4.1 KB) 🎨 VISUAL + Purpose: Visual understanding + Contents: + - Before/after commit graphs + - ASCII diagrams + - Conflict code with annotations + - Visual step-by-step + Audience: Visual learners + Time to read: 10 minutes + +-------------------------------------------------------------------------------- +USAGE RECOMMENDATIONS: +-------------------------------------------------------------------------------- + +SCENARIO 1: "Just fix it quickly" +→ Open: QUICK_REBASE_GUIDE.md +→ Run the 5 commands +→ Done in 2 minutes + +SCENARIO 2: "I want to understand what I'm doing" +→ Start: README_PR40.md (overview) +→ Then: REBASE_INSTRUCTIONS.md (details) +→ Execute with confidence + +SCENARIO 3: "I'm a visual learner" +→ Start: README_PR40.md (context) +→ Then: REBASE_VISUAL_GUIDE.md (diagrams) +→ Follow visual steps + +SCENARIO 4: "I've never rebased before" +→ Read all 4 files in order +→ Start with README_PR40.md +→ Total time: 20 minutes + +-------------------------------------------------------------------------------- +KEY INFORMATION: +-------------------------------------------------------------------------------- + +Problem: PR #40 has merge conflicts +Cause: Base branch updated with features from your PR +Solution: Rebase to remove redundant commits + +Current State: +- Branch: copilot/sub-pr-39 @ 6e2a9a4 +- Base: fix/buff-suppression-pet-restore @ b19503a +- Status: Conflicting (4 commits) + +Target State: +- Branch: copilot/sub-pr-39 @ f94cb8d (after rebase) +- Base: fix/buff-suppression-pet-restore @ b19503a +- Status: Clean (2 commits) + +The Solution (5 commands): + 1. git checkout copilot/sub-pr-39 + 2. git fetch origin + 3. git rebase origin/fix/buff-suppression-pet-restore + 4. git rebase --skip + 5. git push --force-with-lease origin copilot/sub-pr-39 + +-------------------------------------------------------------------------------- +SAFETY NOTES: +-------------------------------------------------------------------------------- + +✓ Your Levitate code is preserved +✓ No data loss +✓ Can abort with: git rebase --abort +✓ Using --force-with-lease prevents accidental overwrites +✓ All instructions tested and verified + +-------------------------------------------------------------------------------- +LINKS: +-------------------------------------------------------------------------------- + +GitHub PR: https://github.com/Valorith/Server/pull/40 +Repository: https://github.com/Valorith/Server + +-------------------------------------------------------------------------------- +SUPPORT: +-------------------------------------------------------------------------------- + +If stuck: +1. Check troubleshooting in REBASE_INSTRUCTIONS.md +2. Run: git rebase --abort (to start over) +3. Review REBASE_VISUAL_GUIDE.md for clarity + +All guides include detailed help sections. + +================================================================================ + LAST UPDATED: 2026-01-31 +================================================================================ From 1607aea793fc326f5eb41bfa3dbbe1bc36c31a62 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 31 Jan 2026 20:27:09 +0000 Subject: [PATCH 07/11] Add comment to Levitate restoration code Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- zone/spell_effects.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/zone/spell_effects.cpp b/zone/spell_effects.cpp index 08b1d60ee..a88e48e5d 100644 --- a/zone/spell_effects.cpp +++ b/zone/spell_effects.cpp @@ -4721,6 +4721,7 @@ void Mob::BuffFadeBySlot(int slot, bool iRecalcBonuses, bool suppress, uint32 su break; case SpellEffect::Levitate: { + // Restore levitate visual effects after suppression expires if (!zone->CanLevitate()) { SendAppearancePacket(AppearanceType::FlyMode, 0); BuffFadeByEffect(SpellEffect::Levitate); From c9bee6cf0aba38d3c65c4d31ecea3ef6a4d384b4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 31 Jan 2026 20:28:05 +0000 Subject: [PATCH 08/11] Remove documentation files - keep only code changes Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- PR40_INDEX.txt | 132 ---------------------------------- QUICK_REBASE_GUIDE.md | 117 ------------------------------ README_PR40.md | 150 --------------------------------------- REBASE_INSTRUCTIONS.md | 142 ------------------------------------- REBASE_VISUAL_GUIDE.md | 157 ----------------------------------------- 5 files changed, 698 deletions(-) delete mode 100644 PR40_INDEX.txt delete mode 100644 QUICK_REBASE_GUIDE.md delete mode 100644 README_PR40.md delete mode 100644 REBASE_INSTRUCTIONS.md delete mode 100644 REBASE_VISUAL_GUIDE.md diff --git a/PR40_INDEX.txt b/PR40_INDEX.txt deleted file mode 100644 index 537362e95..000000000 --- a/PR40_INDEX.txt +++ /dev/null @@ -1,132 +0,0 @@ -================================================================================ - PR #40 RESOLUTION GUIDE - FILE INDEX -================================================================================ - -Total Documentation: 4 files, 566 lines, ~14.5 KB - --------------------------------------------------------------------------------- -FILE OVERVIEW: --------------------------------------------------------------------------------- - -1. README_PR40.md (150 lines, 3.5 KB) ⭐ START HERE - Purpose: Main overview and entry point - Contents: - - Problem summary - - Quick links to all guides - - Super quick 5-command solution - - Technical details - - Impact analysis - Audience: Everyone - Time to read: 3 minutes - -2. QUICK_REBASE_GUIDE.md (117 lines, 2.5 KB) ⚡ FASTEST - Purpose: Immediate action guide - Contents: - - 5 commands to copy/paste - - Expected output at each step - - One-liner alternative - - Quick troubleshooting - Audience: Experienced git users - Time to execute: 2 minutes - -3. REBASE_INSTRUCTIONS.md (142 lines, 4.5 KB) 📚 COMPREHENSIVE - Purpose: Detailed step-by-step guide - Contents: - - Complete instructions - - 3 different approaches (manual, CLI, cherry-pick) - - Full troubleshooting section - - Verification steps - - Safety notes - Audience: Those wanting full context - Time to read: 8 minutes - -4. REBASE_VISUAL_GUIDE.md (157 lines, 4.1 KB) 🎨 VISUAL - Purpose: Visual understanding - Contents: - - Before/after commit graphs - - ASCII diagrams - - Conflict code with annotations - - Visual step-by-step - Audience: Visual learners - Time to read: 10 minutes - --------------------------------------------------------------------------------- -USAGE RECOMMENDATIONS: --------------------------------------------------------------------------------- - -SCENARIO 1: "Just fix it quickly" -→ Open: QUICK_REBASE_GUIDE.md -→ Run the 5 commands -→ Done in 2 minutes - -SCENARIO 2: "I want to understand what I'm doing" -→ Start: README_PR40.md (overview) -→ Then: REBASE_INSTRUCTIONS.md (details) -→ Execute with confidence - -SCENARIO 3: "I'm a visual learner" -→ Start: README_PR40.md (context) -→ Then: REBASE_VISUAL_GUIDE.md (diagrams) -→ Follow visual steps - -SCENARIO 4: "I've never rebased before" -→ Read all 4 files in order -→ Start with README_PR40.md -→ Total time: 20 minutes - --------------------------------------------------------------------------------- -KEY INFORMATION: --------------------------------------------------------------------------------- - -Problem: PR #40 has merge conflicts -Cause: Base branch updated with features from your PR -Solution: Rebase to remove redundant commits - -Current State: -- Branch: copilot/sub-pr-39 @ 6e2a9a4 -- Base: fix/buff-suppression-pet-restore @ b19503a -- Status: Conflicting (4 commits) - -Target State: -- Branch: copilot/sub-pr-39 @ f94cb8d (after rebase) -- Base: fix/buff-suppression-pet-restore @ b19503a -- Status: Clean (2 commits) - -The Solution (5 commands): - 1. git checkout copilot/sub-pr-39 - 2. git fetch origin - 3. git rebase origin/fix/buff-suppression-pet-restore - 4. git rebase --skip - 5. git push --force-with-lease origin copilot/sub-pr-39 - --------------------------------------------------------------------------------- -SAFETY NOTES: --------------------------------------------------------------------------------- - -✓ Your Levitate code is preserved -✓ No data loss -✓ Can abort with: git rebase --abort -✓ Using --force-with-lease prevents accidental overwrites -✓ All instructions tested and verified - --------------------------------------------------------------------------------- -LINKS: --------------------------------------------------------------------------------- - -GitHub PR: https://github.com/Valorith/Server/pull/40 -Repository: https://github.com/Valorith/Server - --------------------------------------------------------------------------------- -SUPPORT: --------------------------------------------------------------------------------- - -If stuck: -1. Check troubleshooting in REBASE_INSTRUCTIONS.md -2. Run: git rebase --abort (to start over) -3. Review REBASE_VISUAL_GUIDE.md for clarity - -All guides include detailed help sections. - -================================================================================ - LAST UPDATED: 2026-01-31 -================================================================================ diff --git a/QUICK_REBASE_GUIDE.md b/QUICK_REBASE_GUIDE.md deleted file mode 100644 index c09a043b4..000000000 --- a/QUICK_REBASE_GUIDE.md +++ /dev/null @@ -1,117 +0,0 @@ -# Quick Reference: Resolve PR #40 in 5 Steps - -## TL;DR - Just Run These Commands - -```bash -# 1. Switch to PR branch -git checkout copilot/sub-pr-39 - -# 2. Fetch latest -git fetch origin - -# 3. Start rebase -git rebase origin/fix/buff-suppression-pet-restore - -# 4. Skip the conflicting commit (when prompted) -git rebase --skip - -# 5. Force push -git push --force-with-lease origin copilot/sub-pr-39 -``` - -**Done!** PR #40 will now be mergeable. - ---- - -## What You'll See - -### Step 3 Output: -``` -Rebasing (1/4) -Rebasing (2/4) -Rebasing (3/4) -Auto-merging zone/spell_effects.cpp -CONFLICT (content): Merge conflict in zone/spell_effects.cpp -error: could not apply 597e6eb... Add validation check -``` - -**This is expected!** → Go to Step 4 - -### Step 4 Output: -``` -Rebasing (4/4) -dropping 6e2a9a4... Resolve merge conflict -- already upstream -Successfully rebased and updated refs/heads/copilot/sub-pr-39. -``` - -**Success!** → Go to Step 5 - -### Step 5 Output: -``` -To https://github.com/Valorith/Server - 6e2a9a4..f94cb8d copilot/sub-pr-39 -> copilot/sub-pr-39 -``` - -**Done!** Check PR #40 on GitHub - it should show no conflicts. - ---- - -## Why Each Step? - -1. **git checkout** - Make sure you're on the right branch -2. **git fetch** - Get the latest base branch changes -3. **git rebase** - Replay your commits on the new base -4. **git rebase --skip** - Skip redundant commit (already in base) -5. **git push --force-with-lease** - Update GitHub with clean history - ---- - -## After Rebase: Verify - -Visit: https://github.com/Valorith/Server/pull/40 - -You should see: -- ✓ "This branch has no conflicts with the base branch" -- ✓ Only 2 commits -- ✓ Changes show only Levitate restoration code - ---- - -## If Something Goes Wrong - -**Abort and start over:** -```bash -git rebase --abort -``` - -**Need more details?** Read: -- `REBASE_INSTRUCTIONS.md` - Full instructions -- `REBASE_VISUAL_GUIDE.md` - Visual diagrams - ---- - -## One-Liner Alternative - -If you trust automation: -```bash -git checkout copilot/sub-pr-39 && \ -git fetch origin && \ -git rebase origin/fix/buff-suppression-pet-restore && \ -git rebase --skip && \ -git push --force-with-lease origin copilot/sub-pr-39 -``` - -⚠️ Only use if you understand what each command does! - ---- - -## What Changes - -**Before:** 4 commits (validation + conflict resolution + levitate + plan) -**After:** 2 commits (levitate + plan) - -**Result:** Clean PR with only your Levitate feature! - ---- - -**Questions?** Check the detailed guides in this directory. diff --git a/README_PR40.md b/README_PR40.md deleted file mode 100644 index b08232fdc..000000000 --- a/README_PR40.md +++ /dev/null @@ -1,150 +0,0 @@ -# PR #40 Resolution Summary - -## 📋 What You Need to Know - -**Problem:** PR #40 cannot be merged due to conflicts with the base branch. - -**Solution:** Follow the rebase instructions in this directory. - -**Time Required:** ~2 minutes - -**Difficulty:** Easy (just copy/paste 5 commands) - ---- - -## 🚀 Choose Your Guide - -### Option 1: Quick & Easy (Recommended) -📄 **QUICK_REBASE_GUIDE.md** -- Just 5 commands to copy/paste -- Takes 2 minutes -- Shows expected output at each step - -### Option 2: Detailed Explanation -📄 **REBASE_INSTRUCTIONS.md** -- Step-by-step with context -- Multiple approaches -- Troubleshooting tips -- Verification steps - -### Option 3: Visual Learner -📄 **REBASE_VISUAL_GUIDE.md** -- Diagrams and visual flow -- Before/after commit graphs -- Detailed conflict explanation -- Safe to follow visualization - ---- - -## ⚡ Super Quick Start - -If you just want to fix it now: - -```bash -cd /path/to/your/local/Server/repo -git checkout copilot/sub-pr-39 -git fetch origin -git rebase origin/fix/buff-suppression-pet-restore -git rebase --skip # When you see the conflict -git push --force-with-lease origin copilot/sub-pr-39 -``` - -Then check: https://github.com/Valorith/Server/pull/40 - ---- - -## ❓ Why This Happened - -The base branch (`fix/buff-suppression-pet-restore`) was updated with fixes that were originally in your PR. Now those commits are redundant and causing conflicts. - -**Your PR had:** -- Validation fix (`return false;` → `return;`) -- Merge conflict resolution -- Levitate restoration ← **This is what we keep** -- Initial plan - -**Base branch now has:** -- Validation fix (already done!) -- Nimbus restoration (already done!) - -**After rebase, your PR will have:** -- Levitate restoration ← **Only this!** -- Initial plan - ---- - -## ✅ Expected Result - -After following the guide: -- PR #40 shows "No conflicts with base branch" -- Only 2 commits in the PR -- Changes show only the Levitate feature -- Ready to merge! - ---- - -## 🆘 Need Help? - -1. Read the appropriate guide above -2. Check the troubleshooting section in REBASE_INSTRUCTIONS.md -3. If stuck: `git rebase --abort` to start over - ---- - -## 📊 Impact - -**What Changes:** -- Number of commits: 4 → 2 -- Merge status: Conflicting → Clean -- Changes: Validation + Nimbus + Levitate → Levitate only - -**What Stays the Same:** -- Your Levitate restoration code -- The functionality being added -- The PR goal and description - -**What's Different:** -- Cleaner commit history -- No redundant commits -- Inherited features from base branch - ---- - -## 🔍 Files Modified - -The rebase only affects Git history. Your code changes remain: -- `zone/spell_effects.cpp` (lines 4722-4735) - -The validation and nimbus changes are still there - they're just inherited from the base branch now instead of being in your commits. - ---- - -## 📝 Technical Details - -**Current Branch:** `copilot/sub-pr-39` at `6e2a9a4` -**Base Branch:** `fix/buff-suppression-pet-restore` at `b19503a` -**After Rebase:** `copilot/sub-pr-39` at `f94cb8d` (new) - -**Commits to Remove:** -- `597e6eb` - Add validation check (redundant) -- `6e2a9a4` - Resolve merge conflict (redundant) - -**Commits to Keep:** -- `950e644` → `dee427b` - Initial plan -- `03f7704` → `f94cb8d` - Add Levitate restoration - ---- - -## 🎯 Bottom Line - -1. Open `QUICK_REBASE_GUIDE.md` -2. Run the 5 commands -3. Done! - -Your PR will be clean and ready to merge. - ---- - -**Last Updated:** 2026-01-31 -**PR:** #40 - Add Levitate effect restoration for non-client mobs -**Status:** Awaiting rebase to resolve conflicts diff --git a/REBASE_INSTRUCTIONS.md b/REBASE_INSTRUCTIONS.md deleted file mode 100644 index c901237de..000000000 --- a/REBASE_INSTRUCTIONS.md +++ /dev/null @@ -1,142 +0,0 @@ -# Instructions to Resolve PR #40 Merge Conflicts - -## Current Situation - -**Problem:** PR #40 has merge conflicts because: -- Your PR branch (`copilot/sub-pr-39`) is at commit `6e2a9a4` (old state) -- The base branch (`fix/buff-suppression-pet-restore`) has moved forward to commit `b19503a` -- The base branch now includes fixes that were in your PR, causing conflicts -- GitHub shows the PR as not mergeable (`mergeable: false`, `mergeable_state: "dirty"`) - -**Why this happened:** The base branch was updated with the `return false;` → `return;` fix and nimbus effect restoration that were originally part of your PR. Now those commits are redundant and causing conflicts. - -## Solution: Rebase Your Branch - -You need to rebase your PR branch onto the latest base branch. This will: -1. Remove redundant commits that are now in the base branch -2. Keep only the Levitate restoration feature -3. Resolve all conflicts - -## Step-by-Step Instructions - -### Option 1: Manual Rebase (Recommended) - -Run these commands in your local repository: - -```bash -# 1. Make sure you're on the PR branch -git checkout copilot/sub-pr-39 - -# 2. Fetch the latest changes -git fetch origin - -# 3. Rebase onto the latest base branch -git rebase origin/fix/buff-suppression-pet-restore - -# 4. When git reports a conflict in the validation check, skip it (it's redundant) -# Git will show a conflict like: -# <<<<<<< HEAD -# if (!IsValidSpell(buffs[slot].spellid)) -# return; -# ======= -# if (!IsValidSpell(buffs[slot].spellid)) { -# return; -# } -# >>>>>>> (your commit) -# -# Skip this commit since the base already has the fix: -git rebase --skip - -# 5. Git will automatically drop the "Resolve merge conflict" commit -# The rebase should complete successfully - -# 6. Force-push the rebased branch -git push --force-with-lease origin copilot/sub-pr-39 -``` - -### Option 2: Using GitHub CLI - -If you have GitHub CLI installed: - -```bash -# Update the PR branch -gh pr checkout 40 -git fetch origin -git rebase origin/fix/buff-suppression-pet-restore -git rebase --skip # When prompted about the validation conflict -git push --force-with-lease origin copilot/sub-pr-39 -``` - -### Option 3: Reset and Cherry-pick - -If the rebase seems complicated, you can reset to the base and cherry-pick only the Levitate commit: - -```bash -# 1. Fetch latest -git fetch origin - -# 2. Create a backup of your current branch -git branch copilot/sub-pr-39-backup - -# 3. Reset your branch to the base -git checkout copilot/sub-pr-39 -git reset --hard origin/fix/buff-suppression-pet-restore - -# 4. Cherry-pick only the Levitate restoration commit (03f7704) -git cherry-pick 03f7704 - -# 5. Force-push -git push --force-with-lease origin copilot/sub-pr-39 -``` - -## Expected Result - -After successful rebase, your branch will have: -- **2 commits** total: - - Initial plan commit - - Levitate restoration commit -- **Base:** `fix/buff-suppression-pet-restore` at commit `b19503a` -- **No conflicts** - the PR will be mergeable - -The validation fix and nimbus restoration will be inherited from the base branch, not part of your PR's changes. - -## What Changed - -### Before Rebase: -- 4 commits in your PR -- Includes validation fix (`return false;` → `return;`) -- Includes merge conflict resolution commit -- Conflicts with base branch - -### After Rebase: -- 2 commits in your PR -- Only Levitate restoration feature -- Clean history based on latest base branch -- No conflicts - -## Files Affected - -Your PR will only modify: -- `zone/spell_effects.cpp` - Lines 4722-4735 (Levitate case added to switch statement) - -## Need Help? - -If you encounter issues: -1. Check that you're on the correct branch: `git branch` -2. Verify the base branch SHA: `git ls-remote origin fix/buff-suppression-pet-restore` -3. If stuck during rebase: `git rebase --abort` to start over -4. Check the PR status: https://github.com/Valorith/Server/pull/40 - -## Additional Notes - -- **Why `--force-with-lease`?** This is safer than `--force` because it won't overwrite the remote branch if someone else pushed to it -- **Why skip the validation commit?** The base branch already has `return;` (correct), so your commit adding the same fix is redundant -- **Is this safe?** Yes, rebasing removes redundant commits while keeping your Levitate feature intact - -## Verification - -After pushing, verify on GitHub: -1. Go to https://github.com/Valorith/Server/pull/40 -2. Check that "This branch has no conflicts with the base branch" appears -3. Verify only 2 commits are shown -4. Confirm the changes show only the Levitate restoration code diff --git a/REBASE_VISUAL_GUIDE.md b/REBASE_VISUAL_GUIDE.md deleted file mode 100644 index 872d6ffbc..000000000 --- a/REBASE_VISUAL_GUIDE.md +++ /dev/null @@ -1,157 +0,0 @@ -# Visual Guide: PR #40 Rebase Process - -## Current State (BEFORE Rebase) - -``` -fix/buff-suppression-pet-restore (base branch) -│ -├─ b19503a ← Merge PR #42 (includes return; fix) -│ ├─ 4faf48a ← Merge PR #43 (includes return; fix) -│ ├─ ff7dbce ← Fix compilation: return false → return -│ └─ ...more commits with validation fixes -│ -└─ dffc461 ← Old base (what your PR was originally based on) - │ - └─ copilot/sub-pr-39 (your branch) ← CONFLICTS HERE! - ├─ 6e2a9a4 ← Resolve merge conflict - ├─ 597e6eb ← Add validation check (return;) - ├─ 03f7704 ← Add Levitate restoration ✓ (THIS IS WHAT WE WANT) - └─ 950e644 ← Initial plan -``` - -**Problem:** Your commits 597e6eb and 6e2a9a4 add the same fix that's already in b19503a! - ---- - -## After Rebase (TARGET State) - -``` -fix/buff-suppression-pet-restore (base branch) -│ -├─ b19503a ← Merge PR #42 (includes return; fix & nimbus) -│ ├─ 4faf48a ← Merge PR #43 -│ ├─ ff7dbce ← Fix compilation -│ └─ ... -│ -└─ copilot/sub-pr-39 (your branch - rebased) ← CLEAN! - ├─ f94cb8d ← Add Levitate restoration ✓ - └─ dee427b ← Initial plan -``` - -**Result:** Clean history with only your Levitate feature! - ---- - -## What the Rebase Does - -### Step 1: Replay Your Commits -``` -git rebase origin/fix/buff-suppression-pet-restore -``` -Git attempts to replay your commits on top of b19503a: -- ✓ 950e644 (Initial plan) → dee427b -- ⚠️ 597e6eb (Add validation) → **CONFLICT** (already in base) -- ⏭️ Skip this commit with: `git rebase --skip` -- ⏭️ 6e2a9a4 automatically dropped (contents already upstream) -- ✓ 03f7704 (Add Levitate) → f94cb8d - -### Step 2: Force Push -``` -git push --force-with-lease origin copilot/sub-pr-39 -``` -Updates the remote branch with the clean history. - ---- - -## The Conflict Explained - -When rebasing, Git will show: - -```cpp -<<<<<<< HEAD (base branch - what's already there) -if (!IsValidSpell(buffs[slot].spellid)) - return; -======= -if (!IsValidSpell(buffs[slot].spellid)) { (your commit - same fix!) - return; -} ->>>>>>> 597e6eb (Add validation check) -``` - -**Both sides have `return;`** - just different formatting! -Since the base already has the fix, skip your commit: `git rebase --skip` - ---- - -## Commit Details - -### Your Levitate Commit (03f7704) -This is the ONLY commit that should remain in your PR: - -```cpp -case SpellEffect::Levitate: -{ - if (!zone->CanLevitate()) { - SendAppearancePacket(AppearanceType::FlyMode, 0); - BuffFadeByEffect(SpellEffect::Levitate); - } else { - if (spell.limit_value[i] == 1) { - SendAppearancePacket(AppearanceType::FlyMode, - EQ::constants::GravityBehavior::LevitateWhileRunning); - } else { - SendAppearancePacket(AppearanceType::FlyMode, - EQ::constants::GravityBehavior::Levitating); - } - } - break; -} -``` - -Location: `zone/spell_effects.cpp` lines 4722-4735 - ---- - -## Quick Reference Commands - -```bash -# The complete rebase process -git checkout copilot/sub-pr-39 -git fetch origin -git rebase origin/fix/buff-suppression-pet-restore -# When conflict appears: -git rebase --skip -# After rebase completes: -git push --force-with-lease origin copilot/sub-pr-39 -``` - -## Troubleshooting - -### If rebase fails with different error: -```bash -git rebase --abort -# Try again or use Option 3 (cherry-pick) -``` - -### To see what will change: -```bash -git log origin/fix/buff-suppression-pet-restore..HEAD --oneline -``` - -### To verify base branch: -```bash -git fetch origin -git show origin/fix/buff-suppression-pet-restore:zone/spell_effects.cpp | grep -A3 "IsValidSpell" -# Should show: if (!IsValidSpell(buffs[slot].spellid)) -# return; -``` - ---- - -## Why This is Safe - -1. **Your Levitate code is preserved** - The commit 03f7704 will be replayed as-is -2. **No data loss** - Redundant commits are removed because they're already in base -3. **Cleaner history** - Removes duplicate/conflicting commits -4. **PR becomes mergeable** - No conflicts after rebase - -The validation fix you added is not lost - it's already in the base branch! From 9a657e7d6a975f60420ea68f2e5ff4c9df704bb8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 31 Jan 2026 20:31:19 +0000 Subject: [PATCH 09/11] Resolve merge conflict with updated base branch Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- zone/spell_effects.cpp | 87 ++++++++++++++++++++++-------------------- 1 file changed, 45 insertions(+), 42 deletions(-) diff --git a/zone/spell_effects.cpp b/zone/spell_effects.cpp index a88e48e5d..a99d60084 100644 --- a/zone/spell_effects.cpp +++ b/zone/spell_effects.cpp @@ -4693,49 +4693,52 @@ void Mob::BuffFadeBySlot(int slot, bool iRecalcBonuses, bool suppress, uint32 su if (!IsValidSpell(buffs[slot].spellid)) return; const auto& spell = spells[buffs[slot].spellid]; - // Restore nimbus (visual aura) effect before processing individual spell effects, - // mirroring Client::ReapplyBuff and bot buff restoration behavior. - if (spell.nimbus_effect) { - SetNimbusEffect(spell.nimbus_effect); - } - for (int i = 0; i < EFFECT_COUNT; i++) { - switch (spell.effect_id[i]) { - case SpellEffect::Illusion: - ApplySpellEffectIllusion(spell.id, entity_list.GetMobID(buffs[slot].casterid), slot, spell.base_value[i], spell.limit_value[i], spell.max_value[i]); - break; - case SpellEffect::Silence: - Silence(true); - break; - case SpellEffect::Amnesia: - Amnesia(true); - break; - case SpellEffect::AddMeleeProc: - case SpellEffect::WeaponProc: - AddProcToWeapon(GetProcID(buffs[slot].spellid, i), false, 100 + spell.limit_value[i], buffs[slot].spellid, buffs[slot].casterlevel, GetSpellProcLimitTimer(buffs[slot].spellid, ProcType::MELEE_PROC)); - break; - case SpellEffect::DefensiveProc: - AddDefensiveProc(GetProcID(buffs[slot].spellid, i), 100 + spell.limit_value[i], buffs[slot].spellid, GetSpellProcLimitTimer(buffs[slot].spellid, ProcType::DEFENSIVE_PROC)); - break; - case SpellEffect::RangedProc: - AddRangedProc(GetProcID(buffs[slot].spellid, i), 100 + spell.limit_value[i], buffs[slot].spellid, GetSpellProcLimitTimer(buffs[slot].spellid, ProcType::RANGED_PROC)); - break; - case SpellEffect::Levitate: - { - // Restore levitate visual effects after suppression expires - if (!zone->CanLevitate()) { - SendAppearancePacket(AppearanceType::FlyMode, 0); - BuffFadeByEffect(SpellEffect::Levitate); - } else { - if (spell.limit_value[i] == 1) { - SendAppearancePacket(AppearanceType::FlyMode, EQ::constants::GravityBehavior::LevitateWhileRunning); - } else { - SendAppearancePacket(AppearanceType::FlyMode, EQ::constants::GravityBehavior::Levitating); - } - } - break; + if (IsValidSpell(buffs[slot].spellid)) { + const auto &spell = spells[buffs[slot].spellid]; + // Restore nimbus (visual aura) effect before processing individual spell effects, + // mirroring Client::ReapplyBuff and bot buff restoration behavior. + if (spell.nimbus_effect) { + SetNimbusEffect(spell.nimbus_effect); } - default: - break; + for (int i = 0; i < EFFECT_COUNT; i++) { + switch (spell.effect_id[i]) { + case SpellEffect::Illusion: + ApplySpellEffectIllusion(spell.id, entity_list.GetMobID(buffs[slot].casterid), slot, spell.base_value[i], spell.limit_value[i], spell.max_value[i]); + break; + case SpellEffect::Silence: + Silence(true); + break; + case SpellEffect::Amnesia: + Amnesia(true); + break; + case SpellEffect::AddMeleeProc: + case SpellEffect::WeaponProc: + AddProcToWeapon(GetProcID(buffs[slot].spellid, i), false, 100 + spell.limit_value[i], buffs[slot].spellid, buffs[slot].casterlevel, GetSpellProcLimitTimer(buffs[slot].spellid, ProcType::MELEE_PROC)); + break; + case SpellEffect::DefensiveProc: + AddDefensiveProc(GetProcID(buffs[slot].spellid, i), 100 + spell.limit_value[i], buffs[slot].spellid, GetSpellProcLimitTimer(buffs[slot].spellid, ProcType::DEFENSIVE_PROC)); + break; + case SpellEffect::RangedProc: + AddRangedProc(GetProcID(buffs[slot].spellid, i), 100 + spell.limit_value[i], buffs[slot].spellid, GetSpellProcLimitTimer(buffs[slot].spellid, ProcType::RANGED_PROC)); + break; + case SpellEffect::Levitate: + { + // Restore levitate visual effects after suppression expires + if (!zone->CanLevitate()) { + SendAppearancePacket(AppearanceType::FlyMode, 0); + BuffFadeByEffect(SpellEffect::Levitate); + } else { + if (spell.limit_value[i] == 1) { + SendAppearancePacket(AppearanceType::FlyMode, EQ::constants::GravityBehavior::LevitateWhileRunning); + } else { + SendAppearancePacket(AppearanceType::FlyMode, EQ::constants::GravityBehavior::Levitating); + } + } + break; + } + default: + break; + } } } } From 56b5e4e84e7ae61367307dc8cc0e8705193e62ac Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 31 Jan 2026 20:33:42 +0000 Subject: [PATCH 10/11] Restrict spell suppression restoration to client pets only Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- zone/spell_effects.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/zone/spell_effects.cpp b/zone/spell_effects.cpp index a99d60084..e218a5bd7 100644 --- a/zone/spell_effects.cpp +++ b/zone/spell_effects.cpp @@ -4688,8 +4688,8 @@ void Mob::BuffFadeBySlot(int slot, bool iRecalcBonuses, bool suppress, uint32 su client->QueuePacket(action_packet); safe_delete(action_packet); client->ReapplyBuff(slot, true); - } else { - // Reapply visual/state effects for non-client mobs (pets, NPCs, bots) + } else if (IsPet() && GetOwner() && GetOwner()->IsClient()) { + // Reapply visual/state effects for client pets only if (!IsValidSpell(buffs[slot].spellid)) return; const auto& spell = spells[buffs[slot].spellid]; From 6758108f354929e8464e931ba88b9e7e2344e716 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 31 Jan 2026 21:27:02 +0000 Subject: [PATCH 11/11] Add comment clarifying non-client mob dispel behavior Co-authored-by: Valorith <76063792+Valorith@users.noreply.github.com> --- zone/spell_effects.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/zone/spell_effects.cpp b/zone/spell_effects.cpp index e218a5bd7..1a1d7603e 100644 --- a/zone/spell_effects.cpp +++ b/zone/spell_effects.cpp @@ -4690,6 +4690,7 @@ void Mob::BuffFadeBySlot(int slot, bool iRecalcBonuses, bool suppress, uint32 su client->ReapplyBuff(slot, true); } else if (IsPet() && GetOwner() && GetOwner()->IsClient()) { // Reapply visual/state effects for client pets only + // All other non-client mobs (NPCs, bots, mercs) use normal dispel mechanic if (!IsValidSpell(buffs[slot].spellid)) return; const auto& spell = spells[buffs[slot].spellid];