Browse Source

Implemented NPC_WIDELEASH (#7643)

Lemongrass3110 2 years ago
parent
commit
ae2ea3df10
2 changed files with 38 additions and 0 deletions
  1. 24 0
      db/re/skill_db.yml
  2. 14 0
      src/map/skill.cpp

+ 24 - 0
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

+ 14 - 0
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<s_skill_db> 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);