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;i<MAX_PARTY && !p->data[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;i<MAX_PARTY && !p->data[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];