Pārlūkot izejas kodu

Fixes Elemental Converter and equip swap (#6181)

* Fixes #5907.
* Fixes Elemental Converter getting removed when swapping weapons/shields.
Thanks to @Tydus1 and @Lemongrass3110!
Aleos 3 gadi atpakaļ
vecāks
revīzija
92413b8459
2 mainītis faili ar 11 papildinājumiem un 3 dzēšanām
  1. 2 2
      src/map/pc.cpp
  2. 9 1
      src/map/skill.cpp

+ 2 - 2
src/map/pc.cpp

@@ -10960,8 +10960,8 @@ bool pc_unequipitem(struct map_session_data *sd, int n, int flag) {
 				break;
 			}
 		}
-		if (!sd->sc.data[SC_SEVENWIND] || sd->sc.data[SC_ASPERSIO]) //Check for seven wind (but not level seven!)
-			skill_enchant_elemental_end(&sd->bl, SC_NONE);
+
+		skill_enchant_elemental_end(&sd->bl, SC_NONE);
 		status_change_end(&sd->bl, SC_FEARBREEZE, INVALID_TIMER);
 		status_change_end(&sd->bl, SC_EXEEDBREAK, INVALID_TIMER);
 	}

+ 9 - 1
src/map/skill.cpp

@@ -18369,7 +18369,15 @@ void skill_enchant_elemental_end(struct block_list *bl, int type)
 	if (!sc->count)
 		return;
 
-	status_change_end(bl, SC_ENCHANTARMS, INVALID_TIMER); // Should always end
+	// If it is not on equip change
+	if (type != SC_NONE)
+		status_change_end(bl, SC_ENCHANTARMS, INVALID_TIMER); // Should always end except on equip change
+	else {
+		// Check for seven wind (but not level seven!)
+		if (sc->data[SC_SEVENWIND] && sc->data[SC_SEVENWIND]->val1 < 7)
+			return;
+	}
+
 	for (i = 0; i < ARRAYLENGTH(scs); i++)
 		if (type != scs[i] && sc->data[scs[i]])
 			status_change_end(bl, scs[i], INVALID_TIMER);