Index: src/map/skill.c =================================================================== --- src/map/skill.c (revision 17260) +++ src/map/skill.c (working copy) @@ -7875,6 +7875,8 @@ case AB_CLEARANCE: if( flag&1 || (i = skill_get_splash(skill_id, skill_lv)) < 1 ) { //As of the behavior in official server Clearance is just a super version of Dispell skill. [Jobbie] + if ( bl->type != BL_MOB || battle_check_target(src,bl,BCT_PARTY) <= 0) //can only affect mob or party + break; clif_skill_nodamage(src,bl,skill_id,skill_lv,1); if((dstsd && (dstsd->class_&MAPID_UPPERMASK) == MAPID_SOUL_LINKER) || rnd()%100 >= 60 + 8 * skill_lv) { Index: src/map/clif.c =================================================================== --- src/map/clif.c (revision 17260) +++ src/map/clif.c (working copy) @@ -5367,12 +5367,12 @@ WBUFL(buf,4)=bl->id; WBUFB(buf,8)=flag; #if PACKETVER >= 20120618 - WBUFL(buf,9)=tick;/* at this stage remain and total are the same value I believe */ - WBUFL(buf,13)=tick; if(flag && battle_config.display_status_timers && sd) { if (tick <= 0) tick = 9999; // this is indeed what official servers do + WBUFL(buf,9) = tick;/* at this stage remain and total are the same value I believe */ + WBUFL(buf,13) = tick; WBUFL(buf,17) = val1; WBUFL(buf,21) = val2; WBUFL(buf,25) = val3; @@ -6700,7 +6700,7 @@ if(!sd && flag==0){ int i; - for(i=0;idata[i].sd;i++); + ARR_FIND(0,MAX_PARTY,i,!p->data[i].sd); if (i < MAX_PARTY) sd = p->data[i].sd; } @@ -6733,9 +6733,9 @@ if(!sd && (flag&0xf0)==0) { int i; - for(i=0;idata[i].sd;i++); - if (i < MAX_PARTY) - sd = p->data[i].sd; + ARR_FIND(0,MAX_PARTY,i,!p->data[i].sd); + if (i < MAX_PARTY) + sd = p->data[i].sd; } if(!sd) return; @@ -6760,7 +6760,7 @@ nullpo_retv(p); - for(i=0; i < MAX_PARTY && !p->data[i].sd;i++); + ARR_FIND(0,MAX_PARTY,i,!p->data[i].sd); if(i < MAX_PARTY){ unsigned char buf[1024];