case SC_STRIPACCESSARY:
location = EQP_ACC;
break;
}
//Special message when trying to use strip on FCP [Jobbie]
if( sd && skill_id == ST_FULLSTRIP && tsc && tsc->data[SC_PROTECTWEAPON] && tsc->data[SC_PROTECTHELM] && tsc->data[SC_PROTECTARMOR] && tsc->data[SC_PROTECTSHIELD])
{
clif->gospel_info(sd, 0x28);
break;
}
// By pass FCP when using single strip skills by 15%(requires Glistening Coat).
if ( sd && tsc && sd->sc.data[SC_SOULLINK] && sd->sc.data[SC_SOULLINK]->val2 == SL_ROGUE && rand()%100 < 15
&&
( skill_id == RG_STRIPWEAPON && tsc->data[SC_PROTECTWEAPON] ||
skill_id == RG_STRIPSHIELD && tsc->data[SC_PROTECTSHIELD] ||
skill_id == RG_STRIPARMOR && tsc->data[SC_PROTECTARMOR] ||
skill_id == RG_STRIPHELM && tsc->data[SC_PROTECTHELM] ) ) {
int item_id = 7139; // Glistening Coat
int ii;
ARR_FIND( 0, MAX_INVENTORY, ii, sd->status.inventory[ii].nameid == item_id );
if ( ii < MAX_INVENTORY ) {
pc->delitem( sd, ii, 1, 0, 0, LOG_TYPE_CONSUME);
switch ( skill_id ) {
case RG_STRIPWEAPON:
status_change_end( bl, SC_PROTECTWEAPON, INVALID_TIMER );
sc_start( NULL, bl, SC_NOEQUIPWEAPON, 100, skill_lv, d );
break;
case RG_STRIPSHIELD:
status_change_end( bl, SC_PROTECTSHIELD, INVALID_TIMER );
sc_start( NULL, bl, SC_NOEQUIPSHIELD, 100, skill_lv, d );
break;
case RG_STRIPARMOR:
status_change_end( bl, SC_PROTECTARMOR, INVALID_TIMER );
sc_start( NULL, bl, SC_NOEQUIPARMOR, 100, skill_lv, d );
break;
case RG_STRIPHELM:
status_change_end( bl, SC_PROTECTHELM, INVALID_TIMER );
sc_start( NULL, bl, SC_NOEQUIPHELM, 100, skill_lv, d );
break;
}
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
break;
}
}
//Attempts to strip at rate i and duration d
if( (rate = skill->strip_equip(bl, location, rate, skill_lv, d)) || (skill_id != ST_FULLSTRIP && skill_id != GC_WEAPONCRUSH ) )
clif->skill_nodamage(src,bl,skill_id,skill_lv,rate);
//Nothing stripped.
if( sd && !rate )
clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
break;
}