浏览代码

Implement NPC_MOVE_COORDINATE (#7636)

eppc0330 2 年之前
父节点
当前提交
eb875d1af5
共有 2 个文件被更改,包括 32 次插入0 次删除
  1. 10 0
      db/re/skill_db.yml
  2. 22 0
      src/map/skill.cpp

+ 10 - 0
db/re/skill_db.yml

@@ -17931,6 +17931,16 @@ Body:
     Range: 9
     Duration1: 3000
     Status: GRADUAL_GRAVITY
+  - Id: 755
+    Name: NPC_MOVE_COORDINATE
+    Description: Change Location
+    MaxLevel: 1
+    TargetType: Attack
+    DamageFlags:
+      NoDamage: true
+    Flags:
+      IsNpc: true
+    Range: 14
   - Id: 756
     Name: NPC_WIDEBLEEDING2
     Description: Wide Bleeding

+ 22 - 0
src/map/skill.cpp

@@ -7630,6 +7630,28 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 
 		break;
 
+	case NPC_MOVE_COORDINATE:
+		{
+			int16 px = bl->x, py = bl->y;
+			if (!skill_check_unit_movepos(0, bl, src->x, src->y, 1, 1)) {
+				return 0;
+			}
+
+			clif_skill_nodamage(src, bl, skill_id, skill_lv, 1);
+			clif_skill_damage(src, bl, tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, DMG_SINGLE);
+			clif_blown(bl);
+
+			// If caster is not a boss, switch coordinates with the target
+			if (status_get_class_(src) != CLASS_BOSS) {
+				if (!skill_check_unit_movepos(0, src, px, py, 1, 1)) {
+					return 0;
+				}
+
+				clif_blown(src);
+			}
+		}
+		break;
+
 	case PR_KYRIE:
 	case MER_KYRIE:
 	case SU_TUNAPARTY: