From 19e6b0f9de7280770f0dd98d9431d3337b9a6e7c Mon Sep 17 00:00:00 2001 From: Michieru Date: Sat, 1 Nov 2014 21:36:22 +0100 Subject: Fix clearance, should work only on mob, party or self and skill can't be cast on all players that are not in the party (bug:7050) --- db/re/skill_db.txt | 2 +- src/map/skill.c | 13 +------------ src/map/unit.c | 6 ++++++ 3 files changed, 8 insertions(+), 13 deletions(-) diff --git a/db/re/skill_db.txt b/db/re/skill_db.txt index 34639425e..ebaf3ab6c 100644 --- a/db/re/skill_db.txt +++ b/db/re/skill_db.txt @@ -749,7 +749,7 @@ 2049,0,0,0,0,0,0,10,0,no,0,0,0,none,0, AB_EUCHARISTICA,Eucharistica 2050,11,6,16,6,0x1,0,1,1,yes,0,0,0,magic,0, AB_RENOVATIO,Renovatio 2051,11,6,16,6,0x21,0,5,1,yes,0,0,0,magic,0, AB_HIGHNESSHEAL,Highness Heal //CHECK Info shows this has magic attack. -2052,11,6,1,0,0x1,0,5,1,yes,0,0,0,magic,0, AB_CLEARANCE,Clearance //CHECK Also shows this as a magic attack. Why? +2052,11,6,16,0,0x1,0,5,1,yes,0,0,0,magic,0, AB_CLEARANCE,Clearance 2053,11,6,16,0,0x1,0,5,1,yes,0,0,0,magic,0, AB_EXPIATIO,Expiatio //CHECK Does this also give the buff to party members? 2054,0,6,4,6,0x1,0,10,1,yes,0,0,0,none,0, AB_DUPLELIGHT,Duple Light //CHECK Had issues adding a skill level check to make the % go higher with the skills level. Will do later. 2055,-1,6,1,-1,0,0,10,1,no,0,0,0,weapon,0, AB_DUPLELIGHT_MELEE,Duple Light Melee diff --git a/src/map/skill.c b/src/map/skill.c index 340fd0ec5..1fca0dfc7 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -8325,7 +8325,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin if( flag&1 || (splash = skill->get_splash(skill_id, skill_lv)) < 1 ) { int i; //As of the behavior in official server Clearance is just a super version of Dispell skill. [Jobbie] - if( bl->type != BL_MOB && battle->check_target(src,bl,BCT_PARTY) <= 0 ) // Only affect mob or party. + if( bl->type != BL_MOB && battle->check_target(src,bl,BCT_PARTY) <= 0 && sd ) // Only affect mob, party or self. break; clif->skill_nodamage(src,bl,skill_id,skill_lv,1); @@ -13174,17 +13174,6 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id } } break; - /** - * Keeping as a note: - * Bug Report #17 provides a link to a sep-2011 changelog that shows this requirement was removed - **/ - //case AB_LAUDAAGNUS: - //case AB_LAUDARAMUS: - // if( !sd->status.party_id ) { - // clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0); - // return 0; - // } - // break; case AB_ADORAMUS: /** diff --git a/src/map/unit.c b/src/map/unit.c index 76a5853df..34a9dcc24 100644 --- a/src/map/unit.c +++ b/src/map/unit.c @@ -1406,6 +1406,12 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui } } break; + case AB_CLEARANCE: + if( target->type != BL_MOB && battle->check_target(src,target,BCT_PARTY) <= 0 && sd ) { + clif->skill_fail(sd, skill_id, USESKILL_FAIL_TOTARGET, 0); + return 0; + } + break; case SR_GATEOFHELL: case SR_TIGERCANNON: if (sc && sc->data[SC_COMBOATTACK] && -- cgit v1.2.3-60-g2f50