diff --git a/src/map/skill.c b/src/map/skill.c index 9b18afa247..5661746fa6 100755 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -8400,7 +8400,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui sc_start(src,bl,SC_INCMATKRATE,100,-50,skill_get_time2(skill_id,skill_lv)); break; case 2: // all buffs removed - status_change_clear_buffs(bl,1); + status_change_clear_buffs(bl,9); break; case 3: // 1000 damage, random armor destroyed { diff --git a/src/map/status.c b/src/map/status.c index b43ad4e67a..f151b513d6 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -9230,7 +9230,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty if(val4 == BCT_SELF) { // Self effect val2 = tick/10000; tick_time = 10000; // [GodLesZ] tick time - status_change_clear_buffs(bl,3); // Remove buffs/debuffs + status_change_clear_buffs(bl,11); // Remove buffs/debuffs } break; @@ -12832,8 +12832,9 @@ int status_change_timer_sub(struct block_list* bl, va_list ap) * @param bl: Object to clear [PC|MOB|HOM|MER|ELEM] * @param type: Type to remove * &1: Clear Buffs - * $2: Clear Debuffs + * &2: Clear Debuffs * &4: Specific debuffs with a refresh + * &8: Clear chemical protection */ void status_change_clear_buffs (struct block_list* bl, int type) { @@ -12868,10 +12869,6 @@ void status_change_clear_buffs (struct block_list* bl, int type) case SC_JAILED: case SC_ANKLE: case SC_BLADESTOP: - case SC_CP_WEAPON: - case SC_CP_SHIELD: - case SC_CP_ARMOR: - case SC_CP_HELM: case SC_STRFOOD: case SC_AGIFOOD: case SC_VITFOOD: @@ -12957,7 +12954,14 @@ void status_change_clear_buffs (struct block_list* bl, int type) case SC_SPRITEMABLE: case SC_BITESCAR: continue; - + // Chemical Protection is only removed by some skills + case SC_CP_WEAPON: + case SC_CP_SHIELD: + case SC_CP_ARMOR: + case SC_CP_HELM: + if(!(type&8)) + continue; + break; // Debuffs that can be removed. case SC_DEEPSLEEP: case SC_BURNING: