src/map/skill.c
case RK_STONEHARDSKIN:
if( sd && pc_checkskill(sd,RK_RUNEMASTERY) >= 4 )
{
int heal = sstatus->hp / 5; // 20% HP
if( status_charge(bl,heal,0) )
clif_skill_nodamage(src,bl,skill_id,skill_lv,sc_start2(src,bl,type,100,skill_lv,heal,skill_get_time(skill_id,skill_lv)));
else
clif_skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
}
break;
src/map/status.c
case SC_STONEHARDSKIN:
if( sd )
val1 = sd->status.job_level * pc_checkskill(sd, RK_RUNEMASTERY) / 4; // DEF/MDEF Increase
break;
src/map/battle.c
if( damage > 0 && ((flag&(BF_WEAPON|BF_SHORT)) == (BF_WEAPON|BF_SHORT)) && (sce = sc->data[SC_STONEHARDSKIN]) ) {
sce->val2 -= (int)cap_value(damage,INT_MIN,INT_MAX);
if( src->type == BL_MOB ) //using explicit call instead break_equip for duration
sc_start(src,src, SC_STRIPWEAPON, 30, 0, skill_get_time2(RK_STONEHARDSKIN, sce->val1));
else
skill_break_equip(src,src, EQP_WEAPON, 3000, BCT_SELF);
if( sce->val2 <= 0 )
status_change_end(bl, SC_STONEHARDSKIN, INVALID_TIMER);
}
where to delete def and mdef of STONEHARDSKIN