Index: db/const.txt =================================================================== --- db/const.txt (revision 16244) +++ db/const.txt (working copy) @@ -580,6 +580,7 @@ bMatk 2047 bSPGainRaceAttack 2048 bHPGainRaceAttack 2049 +bNoDispell 2050 EQI_HEAD_TOP 1 EQI_ARMOR 2 Index: src/map/map.h =================================================================== --- src/map/map.h (revision 16244) +++ src/map/map.h (working copy) @@ -392,7 +392,7 @@ SP_UNSTRIPABLE_WEAPON,SP_UNSTRIPABLE_ARMOR,SP_UNSTRIPABLE_HELM,SP_UNSTRIPABLE_SHIELD, // 2034-2037 SP_INTRAVISION, SP_ADD_MONSTER_DROP_ITEMGROUP, SP_SP_LOSS_RATE, // 2038-2040 SP_ADD_SKILL_BLOW, SP_SP_VANISH_RATE, SP_MAGIC_SP_GAIN_VALUE, SP_MAGIC_HP_GAIN_VALUE, SP_ADD_CLASS_DROP_ITEM, //2041-2045 - SP_WEAPON_MATK, SP_BASE_MATK, SP_SP_GAIN_RACE_ATTACK, SP_HP_GAIN_RACE_ATTACK //2046-2049 + SP_WEAPON_MATK, SP_BASE_MATK, SP_SP_GAIN_RACE_ATTACK, SP_HP_GAIN_RACE_ATTACK, SP_NO_DISPELL //2046-2050 }; enum _look { Index: src/map/pc.c =================================================================== --- src/map/pc.c (revision 16244) +++ src/map/pc.c (working copy) @@ -2012,6 +2012,10 @@ status = &sd->base_status; switch(type){ + case SP_NO_DISPELL: + if(sd->state.lr_flag != 2) + sd->special_state.no_dispell = 1; + break; case SP_STR: case SP_AGI: case SP_VIT: Index: src/map/pc.h =================================================================== --- src/map/pc.h (revision 16244) +++ src/map/pc.h (working copy) @@ -158,6 +158,7 @@ unsigned int perfect_hiding : 1; // [Valaris] unsigned int no_knockback : 1; unsigned int bonus_coma : 1; + unsigned int no_dispell : 1; } special_state; int login_id1, login_id2; unsigned short class_; //This is the internal job ID used by the map server to simplify comparisons/queries/etc. [Skotlex] Index: src/map/skill.c =================================================================== --- src/map/skill.c (revision 16244) +++ src/map/skill.c (working copy) @@ -6180,7 +6180,7 @@ clif_skill_fail(sd,skillid,USESKILL_FAIL_LEVEL,0); break; } - if(status_isimmune(bl) || !tsc || !tsc->count) + if(status_isimmune(bl) || !tsc || !tsc->count || dstsd->special_state.no_dispell) break; for(i=0;i