diff --git a/db/re/skill_db.yml b/db/re/skill_db.yml index 509c9bb95c..7ccb94b61e 100644 --- a/db/re/skill_db.yml +++ b/db/re/skill_db.yml @@ -17929,6 +17929,30 @@ Body: Size: 25 Hit: Single HitCount: 1 + - Id: 748 + Name: NPC_WIDELEASH + Description: Wide Leash + MaxLevel: 5 + TargetType: Attack + DamageFlags: + NoDamage: true + Splash: true + Flags: + IsNpc: true + Range: + - Level: 1 + Size: 5 + - Level: 2 + Size: 10 + - Level: 3 + Size: 15 + - Level: 4 + Size: 20 + - Level: 5 + Size: 25 + Hit: Single + HitCount: 1 + SplashArea: -1 - Id: 751 Name: NPC_ALL_STAT_DOWN Description: Decrease All Stats diff --git a/src/map/skill.cpp b/src/map/skill.cpp index 6e6b5ea02a..c1e68726d0 100755 --- a/src/map/skill.cpp +++ b/src/map/skill.cpp @@ -12683,6 +12683,20 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui clif_blown( bl ); break; + case NPC_WIDELEASH: + if( flag & 1 ){ + if( !skill_check_unit_movepos( 0, bl, src->x, src->y, 1, 1 ) ){ + return 0; + } + + clif_blown( bl ); + }else{ + skill_area_temp[2] = 0; // For SD_PREAMBLE + clif_skill_nodamage( src, bl, skill_id, skill_lv, 1 ); + map_foreachinallrange( skill_area_sub, bl, skill_get_splash( skill_id, skill_lv ), BL_CHAR, src, skill_id, skill_lv, tick, flag | BCT_ENEMY | SD_PREAMBLE | 1, skill_castend_nodamage_id ); + } + break; + default: { std::shared_ptr skill = skill_db.find(skill_id); ShowWarning("skill_castend_nodamage_id: missing code case for skill %s(%d)\n", skill ? skill->name : "UNKNOWN", skill_id);