Find in skill.c
int skill_check_condition_castend(struct map_session_data* sd, uint16 skill_id, uint16 skill_lv)
insert after
int index[MAX_SKILL_ITEM_REQUIRE];
this
struct status_change *sc = &sd->sc;
find in skill.c
if( require.weapon && !pc_check_weapontype(sd,require.weapon) ) {
clif->skill_fail(sd,skill_id,USESKILL_FAIL_THIS_WEAPON,0);
return 0;
}
change to
if( require.weapon && !(pc_check_weapontype(sd,require.weapon) ||
(skill_id == LK_PARRYING && sc && sc->data[SC_SOULLINK] && sc->data[SC_SOULLINK]->val2 == SL_KNIGHT && sd->weapontype == W_1HSWORD))) {
clif->skill_fail(sd,skill_id,USESKILL_FAIL_THIS_WEAPON,0);
return 0;
}
Find again in skill.c
if( require.weapon && !pc_check_weapontype(sd,require.weapon) ) {
clif->skill_fail(sd,skill_id,USESKILL_FAIL_THIS_WEAPON,0);
return 0;
}
change to
if( require.weapon && !(pc_check_weapontype(sd,require.weapon) ||
(skill_id == LK_PARRYING && sc && sc->data[SC_SOULLINK] && sc->data[SC_SOULLINK]->val2 == SL_KNIGHT && sd->weapontype == W_1HSWORD))) {
clif->skill_fail(sd,skill_id,USESKILL_FAIL_THIS_WEAPON,0);
return 0;
}
recompile.