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<SC_MAX;i++)
{