Here's my suggested code for clif_parse_UseSkillToPosSub.
// SKILLUSE MODIFIED CODE
int32 skill_success;
int32 skill_src_type = 1;
if( sd.skillitem == skill_id ) {
if( skill_lv != sd.skillitemlv )
skill_lv = sd.skillitemlv;
skill_success = unit_skilluse_pos(&sd.bl, x, y, skill_id, skill_lv);
skill_src_type = 2;
} else {
int32 lv;
sd.skillitem = sd.skillitemlv = 0;
if( (lv = pc_checkskill(&sd, skill_id)) > 0 ) {
if( skill_lv > lv )
skill_lv = lv;
skill_success = unit_skilluse_pos(&sd.bl, x, y, skill_id,skill_lv);
}
}
if (skill_success == 1) {
pc_setreg(&sd, add_str("@skillused_id"), skill_id);
pc_setreg(&sd, add_str("@skillused_lv"), skill_lv);
pc_setreg(&sd, add_str("@skillused_src"), skill_src_type);
npc_script_event(sd, NPCE_SKILLUSE);
}
//
I'll likely be using this or something similar for myself. I even added @skillused_src to know if it was used through an item, since I needed that for my use case. If you don't need it, you can save a few lines.
Note that the single target skill code needs to be changed similarly, it uses a more annoying format but the logic is the same.
Also to be noted that the single-target code was moved to clif_parse_skill_toid, it seems.
Example with this:
announce "You have used level "+@skillused_lv+" skill "+@skillused_id+" via "+@skillused_src,bc_self;