Skill.cpp
case AM_CP_WEAPON:
case AM_CP_SHIELD:
case AM_CP_ARMOR:
case AM_CP_HELM:
{
unsigned int equip[] = {EQP_WEAPON, EQP_SHIELD, EQP_ARMOR, EQP_HEAD_TOP};
if( sd && ( bl->type != BL_PC /*|| ( dstsd && pc_checkequip(dstsd,equip[skill_id - AM_CP_WEAPON]) < 0 )*/ ) ){
clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
map_freeblock_unlock(); // Don't consume item requirements
return 0;
}
status_change_end(bl, type, INVALID_TIMER);
clif_skill_nodamage(src,bl,skill_id,skill_lv,
sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv)));
}
break;
// Full Chemical Protection
case CR_FULLPROTECTION:
{
unsigned int equip[] = {EQP_WEAPON, EQP_SHIELD, EQP_ARMOR, EQP_HEAD_TOP};
int i_eqp, s = 0, skilltime = skill_get_time(skill_id,skill_lv);
for (i_eqp = 0; i_eqp < 4; i_eqp++) {
if( bl->type != BL_PC /*|| ( dstsd && pc_checkequip(dstsd,equip[i_eqp]) < 0 )*/ )
continue;
status_change_end(bl, (sc_type)(SC_STRIPWEAPON + i), INVALID_TIMER);
status_change_end(bl, (sc_type)(SC_STRIPHELM + i), INVALID_TIMER);
status_change_end(bl, (sc_type)(SC_STRIPSHIELD + i), INVALID_TIMER);
status_change_end(bl, (sc_type)(SC_STRIPARMOR + i), INVALID_TIMER);
sc_start(src,bl,(sc_type)(SC_CP_WEAPON + i_eqp),100,skill_lv,skilltime);
s++;
}
if( sd && !s ){
clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
map_freeblock_unlock(); // Don't consume item requirements
return 0;
}
clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
}
break;