Jelajahi Sumber

Implement NPC_WIDECRITICALWOUND (#7977)

eppc0330 1 tahun lalu
induk
melakukan
d8d7955702
4 mengubah file dengan 42 tambahan dan 1 penghapusan
  1. 1 1
      db/re/item_db_etc.yml
  2. 35 0
      db/re/skill_db.yml
  3. 3 0
      src/map/skill.cpp
  4. 3 0
      src/map/status.cpp

+ 1 - 1
db/re/item_db_etc.yml

@@ -46793,7 +46793,7 @@ Body:
       DropEffect: CLIENT
     Script: |
       bonus bMatkRate,10;
-      bonus5 bAutoSpell,"NPC_CRITICALWOUND",3,5+(10*(getrefine()/3)),BF_MAGIC,1;
+      bonus5 bAutoSpell,"NPC_WIDECRITICALWOUND",8,5+(10*(getrefine()/3)),BF_MAGIC,1;
   - Id: 31024
     AegisName: As_Bdy_Knight_Card
     Name: Immortal Cursed Knight Card

+ 35 - 0
db/re/skill_db.yml

@@ -17953,6 +17953,41 @@ Body:
     Hit: Single
     HitCount: 1
     SplashArea: -1
+  - Id: 749
+    Name: NPC_WIDECRITICALWOUND
+    Description: Wide Critical Wounds
+    MaxLevel: 10
+    Type: Weapon
+    TargetType: Self
+    DamageFlags:
+      Splash: true
+    Flags:
+      IsNpc: true
+    Hit: Single
+    HitCount: 1
+    SplashArea:
+      - Level: 1
+        Area: 2
+      - Level: 2
+        Area: 5
+      - Level: 3
+        Area: 8
+      - Level: 4
+        Area: 11
+      - Level: 5
+        Area: 14
+      - Level: 6
+        Area: 14
+      - Level: 7
+        Area: 14
+      - Level: 8
+        Area: 14
+      - Level: 9
+        Area: 14
+      - Level: 10
+        Area: 2
+    Element: Weapon
+    Duration2: 30000
   - Id: 751
     Name: NPC_ALL_STAT_DOWN
     Description: Decrease All Stats

+ 3 - 0
src/map/skill.cpp

@@ -1813,6 +1813,7 @@ int skill_additional_effect( struct block_list* src, struct block_list *bl, uint
 		}
 		break;
 	case NPC_CRITICALWOUND:
+	case NPC_WIDECRITICALWOUND:
 		sc_start(src,bl,SC_CRITICALWOUND,100,skill_lv,skill_get_time2(skill_id,skill_lv));
 		break;
 	case NPC_FIRESTORM:
@@ -5669,6 +5670,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
 	case EM_EL_DEADLY_POISON:
 	case BO_EXPLOSIVE_POWDER:
 	case BO_MAYHEMIC_THORNS:
+	case NPC_WIDECRITICALWOUND:
 		if( flag&1 ) {//Recursive invocation
 			int sflag = skill_area_temp[0] & 0xFFF;
 			int heal = 0;
@@ -8632,6 +8634,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 	case NPC_HELLJUDGEMENT2:
 	case NPC_PULSESTRIKE:
 	case LG_MOONSLASHER:
+	case NPC_WIDECRITICALWOUND:
 		skill_castend_damage_id(src, src, skill_id, skill_lv, tick, flag);
 		break;
 

+ 3 - 0
src/map/status.cpp

@@ -11445,6 +11445,9 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 				val1 = rnd()%ELE_ALL;
 			break;
 		case SC_CRITICALWOUND:
+			// Level 1 ~ 5 & 6 ~ 10 has different duration
+			// Level 6 ~ 10 use effect of level 1 ~ 5
+			val1 = 1 + ((val1-1)%5);
 			val2 = 20*val1; // Heal effectiveness decrease
 			break;
 		case SC_MAGICMIRROR: