Pārlūkot izejas kodu

4th Improvement - Shadow Cross (#7710)

munkrej 2 gadi atpakaļ
vecāks
revīzija
6c8b29e91b
4 mainītis faili ar 51 papildinājumiem un 10 dzēšanām
  1. 27 8
      db/re/skill_db.yml
  2. 9 1
      src/map/battle.cpp
  3. 14 0
      src/map/skill.cpp
  4. 1 1
      src/map/unit.cpp

+ 27 - 8
db/re/skill_db.yml

@@ -37763,12 +37763,32 @@ Body:
       Critical: true
     Range: 7
     Hit: Multi_Hit
-    HitCount: -8
+    HitCount: 3
     Element: Weapon
-    SplashArea: 1
+    SplashArea: 2
     CastCancel: true
-    AfterCastActDelay: 500
-    Cooldown: 3000
+    AfterCastActDelay: 300
+    Cooldown:
+      - Level: 1
+        Time: 3000
+      - Level: 2
+        Time: 2800
+      - Level: 3
+        Time: 2600
+      - Level: 4
+        Time: 2400
+      - Level: 5
+        Time: 2200
+      - Level: 6
+        Time: 2000
+      - Level: 7
+        Time: 1800
+      - Level: 8
+        Time: 1600
+      - Level: 9
+        Time: 1400
+      - Level: 10
+        Time: 1000
     Requires:
       SpCost:
         - Level: 1
@@ -37793,7 +37813,6 @@ Body:
           Amount: 55
       Weapon:
         Katar: true
-      State: Hidden
   - Id: 5288
     Name: SHC_SHADOW_SENSE
     Description: Shadow Sense
@@ -37813,7 +37832,7 @@ Body:
     CastCancel: true
     AfterCastActDelay: 500
     Duration1: 3000
-    Cooldown: 1500
+    Cooldown: 750
     Requires:
       SpCost: 40
       Status:
@@ -37889,10 +37908,10 @@ Body:
     Hit: Multi_Hit
     HitCount: 1
     Element: Weapon
-    GiveAp: 3
+    GiveAp: 1
     CastCancel: true
     AfterCastActDelay: 500
-    Cooldown: 3000
+    Cooldown: 1000
     Requires:
       SpCost:
         - Level: 1

+ 9 - 1
src/map/battle.cpp

@@ -5483,7 +5483,12 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
 			RE_LVL_DMOD(100);
 			break;
 		case SHC_SAVAGE_IMPACT:
-			skillratio += -100 + 350 * skill_lv + 5 * sstatus->pow;
+			skillratio += -100 + 60 * skill_lv + 5 * sstatus->pow;
+
+			if( sc != nullptr && sc->getSCE( SC_SHADOW_EXCEED ) ){
+				skillratio += 100 * skill_lv;
+			}
+
 			RE_LVL_DMOD(100);
 			break;
 		case SHC_ETERNAL_SLASH:
@@ -6581,6 +6586,9 @@ static struct Damage initialize_weapon_data(struct block_list *src, struct block
 				if (sd && sd->status.weapon == W_2HAXE)
 					wd.div_ = 3;
 				break;
+			case SHC_SAVAGE_IMPACT:
+				wd.div_ = wd.div_ + wd.miscflag;
+				break;
 		}
 	} else {
 		bool is_long = false;

+ 14 - 0
src/map/skill.cpp

@@ -5760,6 +5760,20 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
 					clif_skill_nodamage(src, bl, skill_id, skill_lv, 1);// Trigger animation on servants.
 					break;
 				case SHC_SAVAGE_IMPACT:
+					if( sc && sc->getSCE( SC_CLOAKINGEXCEED ) ){
+						skill_area_temp[0] = 2;
+						status_change_end( src, SC_CLOAKINGEXCEED );
+					}
+
+					// Jump to the target before attacking.
+					if( skill_check_unit_movepos( 5, src, bl->x, bl->y, 0, 1 ) ){
+						skill_blown( src, src, 1, direction_opposite( static_cast<enum directions>( map_calc_dir( bl, src->x, src->y ) ) ), BLOWN_NONE );
+					}
+
+					// Trigger animation
+					clif_skill_nodamage(src, bl, skill_id, skill_lv, 1);
+					break;
+
 				case SHC_FATAL_SHADOW_CROW: {
 					uint8 dir = map_calc_dir(bl, src->x, src->y);	// dir based on target as we move player based on target location
 

+ 1 - 1
src/map/unit.cpp

@@ -2061,7 +2061,7 @@ int unit_skilluse_id2(struct block_list *src, int target_id, uint16 skill_id, ui
 
 			if (!src->prev)
 				return 0; // Warped away!
-		} else if( sc->getSCE(SC_CLOAKINGEXCEED) && !(sc->getSCE(SC_CLOAKINGEXCEED)->val4&4) && skill_id != GC_CLOAKINGEXCEED && skill_id != SHC_SHADOW_STAB) {
+		} else if( sc->getSCE(SC_CLOAKINGEXCEED) && !(sc->getSCE(SC_CLOAKINGEXCEED)->val4&4) && skill_id != GC_CLOAKINGEXCEED && skill_id != SHC_SHADOW_STAB  && skill_id != SHC_SAVAGE_IMPACT ) {
 			status_change_end(src,SC_CLOAKINGEXCEED);
 
 			if (!src->prev)