From 9f0ae128247f070eb15eff74f28b25d0e8474e0e Mon Sep 17 00:00:00 2001 From: aleos89 Date: Wed, 17 Feb 2016 10:49:18 -0500 Subject: [PATCH] Fixes #863 * Striking now takes the target's weapon level into account. * Now displays the proper skill fail message when used on wrong targets. --- db/pre-re/skill_db.txt | 2 +- db/re/skill_db.txt | 2 +- src/map/skill.c | 23 ++++++++++++++--------- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/db/pre-re/skill_db.txt b/db/pre-re/skill_db.txt index d8ae3ff479..ec878ed065 100644 --- a/db/pre-re/skill_db.txt +++ b/db/pre-re/skill_db.txt @@ -1175,7 +1175,7 @@ 2448,9,6,1,5,0x2,1:1:1:1:2,5,1,yes,0,0,0,magic,0,0x0, SO_POISON_BUSTER,Poison Buster 2449,9,6,2,0,0,0,5,1,yes,0,0,0,magic,0,0x0, SO_PSYCHIC_WAVE,Psychic Wave 2450,9,6,2,5,0,0,5,1,yes,0,0,0,magic,0,0x0, SO_CLOUD_KILL,Cloud Kill -2451,9,6,16,0,0x1,0,5,1,yes,0,0,0,none,0,0x0, SO_STRIKING,Striking //CHECK Data shows a % for increased successful refine rate. Is this true? +2451,9,6,16,0,0x1,0,5,1,yes,0,0,0,none,0,0x0, SO_STRIKING,Striking 2452,9,6,2,3,0x1,0,5,1,yes,0,0,0,magic,0,0x0, SO_WARMER,Warmer 2453,9,6,2,0,0x1,0,5,1,yes,0,0,0,magic,0,0x1000, SO_VACUUM_EXTREME,Vacuum Extreme 2454,9,6,1,4,0x2,1:1:2:2:3,5,1,yes,0,0,0,magic,0,0x0, SO_VARETYR_SPEAR,Varetyr Spear diff --git a/db/re/skill_db.txt b/db/re/skill_db.txt index 4ac60e41c6..13f4eaadc2 100644 --- a/db/re/skill_db.txt +++ b/db/re/skill_db.txt @@ -1175,7 +1175,7 @@ 2448,9,6,1,5,0x2,1:1:1:1:2,5,1,yes,0,0,0,magic,0,0x0, SO_POISON_BUSTER,Poison Buster 2449,9,6,2,0,0,0,5,1,yes,0,0,0,magic,0,0x0, SO_PSYCHIC_WAVE,Psychic Wave 2450,9,6,2,5,0,0,5,1,yes,0,0,0,magic,0,0x0, SO_CLOUD_KILL,Cloud Kill -2451,9,6,16,0,0x1,0,5,1,yes,0,0,0,none,0,0x0, SO_STRIKING,Striking //CHECK Data shows a % for increased successful refine rate. Is this true? +2451,9,6,16,0,0x1,0,5,1,yes,0,0,0,none,0,0x0, SO_STRIKING,Striking 2452,9,6,2,3,0x1,0,5,1,yes,0,0,0,magic,0,0x0, SO_WARMER,Warmer 2453,9,6,2,0,0x1,0,5,1,yes,0,0,0,magic,0,0x1000, SO_VACUUM_EXTREME,Vacuum Extreme 2454,9,6,1,4,0x2,1:1:2:2:3,5,1,yes,0,0,0,magic,0,0x0, SO_VARETYR_SPEAR,Varetyr Spear diff --git a/src/map/skill.c b/src/map/skill.c index 4c98d9df7d..30a762113d 100755 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -6393,16 +6393,21 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; case SO_STRIKING: - if (sd) { - int bonus = 8 + 2 * skill_lv; - bonus += (pc_checkskill(sd, SA_FLAMELAUNCHER)+pc_checkskill(sd, SA_FROSTWEAPON)+pc_checkskill(sd, SA_LIGHTNINGLOADER)+pc_checkskill(sd, SA_SEISMICWEAPON))*5; + if (battle_check_target(src, bl, BCT_SELF|BCT_PARTY) > 0) { + int bonus = 0; - clif_skill_nodamage( src, bl, skill_id, skill_lv, - battle_check_target(src,bl,BCT_PARTY|BCT_SELF)>0 ? //only on self or party member - sc_start2(src,bl, type, 100, skill_lv, bonus, skill_get_time(skill_id,skill_lv)) : - 0 - ); - } + if (dstsd) { + short index = dstsd->equip_index[EQI_HAND_R]; + + if (index >= 0 && dstsd->inventory_data[index] && dstsd->inventory_data[index]->type == IT_WEAPON) + bonus = (8 + 2 * skill_lv) * dstsd->inventory_data[index]->wlv; + } + if (sd) + bonus += (pc_checkskill(sd, SA_FLAMELAUNCHER) + pc_checkskill(sd, SA_FROSTWEAPON) + pc_checkskill(sd, SA_LIGHTNINGLOADER) + pc_checkskill(sd, SA_SEISMICWEAPON)) * 5; + + clif_skill_nodamage(src, bl, skill_id, skill_lv, sc_start2(src,bl, type, 100, skill_lv, bonus, skill_get_time(skill_id, skill_lv))); + } else if (sd) + clif_skill_fail(sd, skill_id, USESKILL_FAIL_TOTARGET, 0); break; case NPC_STOP: