diff --git a/src/map/status.cpp b/src/map/status.cpp index 18a0ac824e..a35ad5b66a 100644 --- a/src/map/status.cpp +++ b/src/map/status.cpp @@ -8611,38 +8611,12 @@ t_tick status_get_sc_def(struct block_list *src, struct block_list *bl, enum sc_ if (src == NULL) return tick?tick:1; // This should not happen in current implementation, but leave it anyway - // Status that are blocked by Golden Thief Bug card or Wand of Hermod + // Skills (magic type) that are blocked by Golden Thief Bug card or Wand of Hermod if (status_isimmune(bl)) { - switch (type) { - case SC_DECREASEAGI: - case SC_SILENCE: - case SC_COMA: - case SC_INCREASEAGI: - case SC_BLESSING: - case SC_SLOWPOISON: - case SC_IMPOSITIO: - case SC_AETERNA: - case SC_SUFFRAGIUM: - case SC_BENEDICTIO: - case SC_PROVIDENCE: - case SC_KYRIE: - case SC_ASSUMPTIO: - case SC_ANGELUS: - case SC_MAGNIFICAT: - case SC_GLORIA: - case SC_WINDWALK: - case SC_MAGICROD: - case SC_HALLUCINATION: - case SC_STONE: - case SC_QUAGMIRE: - case SC_SUITON: - case SC_SWINGDANCE: - case SC_FIRE_INSIGNIA: - case SC_WATER_INSIGNIA: - case SC_WIND_INSIGNIA: - case SC_EARTH_INSIGNIA: - return 0; - } + std::shared_ptr skill = skill_db.find(battle_getcurrentskill(src)); + + if (skill != nullptr && skill->skill_type == BF_MAGIC) + return 0; } rate = cap_value(rate, 0, 10000);