Przeglądaj źródła

Rebalance Shadow Cross 20240205 (#8134)

* Savage Impact
- Increases base damage from 900%/1100%(Shadow Exceed)Atk to 1050%/1250%(Shadow Exceed)Atk per hit based on level 10.

* Shadow Stab
- Unifies number of hit from 2/3(Cloaking Exceed) hits to 3 hits regardless of Cloaking Exceed buff.
- Increases base damage from 1750%/2000%(Cloaking Exceed)Atk to 2750%/3250%(Cloaking Exceed)Atk per hit based on level 5.

* Eternal Slash
- Attack count no longer be removed by Dispell or Clearance.
- Increases base damage from 1325%/1825%(Shadow Exceed)Atk to 1500%/2100%(Shadow Exceed)Atk per hit based on level 5.
Atemo 1 rok temu
rodzic
commit
893b133444
4 zmienionych plików z 8 dodań i 13 usunięć
  1. 1 1
      db/re/skill_db.yml
  2. 2 0
      db/re/status.yml
  3. 5 9
      src/map/battle.cpp
  4. 0 3
      src/map/skill.cpp

+ 1 - 1
db/re/skill_db.yml

@@ -38053,7 +38053,7 @@ Body:
       IgnoreDefense: true
       IgnoreDefense: true
     Range: 2
     Range: 2
     Hit: Multi_Hit
     Hit: Multi_Hit
-    HitCount: 2
+    HitCount: 3
     Element: Weapon
     Element: Weapon
     GiveAp: 2
     GiveAp: 2
     CastCancel: true
     CastCancel: true

+ 2 - 0
db/re/status.yml

@@ -7890,6 +7890,8 @@ Body:
       BlEffect: true
       BlEffect: true
       DisplayPc: true
       DisplayPc: true
       SendVal1: true
       SendVal1: true
+      NoDispell: true
+      NoClearance: true
   - Status: Shadow_Weapon
   - Status: Shadow_Weapon
     Icon: EFST_SHADOW_WEAPON
     Icon: EFST_SHADOW_WEAPON
     DurationLookup: SHC_ENCHANTING_SHADOW
     DurationLookup: SHC_ENCHANTING_SHADOW

+ 5 - 9
src/map/battle.cpp

@@ -5579,7 +5579,7 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
 			RE_LVL_DMOD(100);
 			RE_LVL_DMOD(100);
 			break;
 			break;
 		case SHC_SAVAGE_IMPACT:
 		case SHC_SAVAGE_IMPACT:
-			skillratio += -100 + 90 * skill_lv + 5 * sstatus->pow;
+			skillratio += -100 + 105 * skill_lv + 5 * sstatus->pow;
 
 
 			if( sc != nullptr && sc->getSCE( SC_SHADOW_EXCEED ) ){
 			if( sc != nullptr && sc->getSCE( SC_SHADOW_EXCEED ) ){
 				skillratio += 20 * skill_lv + 3 * sstatus->pow;	// !TODO: check POW ratio
 				skillratio += 20 * skill_lv + 3 * sstatus->pow;	// !TODO: check POW ratio
@@ -5588,19 +5588,19 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
 			RE_LVL_DMOD(100);
 			RE_LVL_DMOD(100);
 			break;
 			break;
 		case SHC_ETERNAL_SLASH:
 		case SHC_ETERNAL_SLASH:
-			skillratio += -100 + 265 * skill_lv + 2 * sstatus->pow;
+			skillratio += -100 + 300 * skill_lv + 2 * sstatus->pow;
 
 
 			if( sc != nullptr && sc->getSCE( SC_SHADOW_EXCEED ) ){
 			if( sc != nullptr && sc->getSCE( SC_SHADOW_EXCEED ) ){
-				skillratio += 100 * skill_lv + sstatus->pow;
+				skillratio += 120 * skill_lv + sstatus->pow;
 			}
 			}
 
 
 			RE_LVL_DMOD(100);
 			RE_LVL_DMOD(100);
 			break;
 			break;
 		case SHC_SHADOW_STAB:
 		case SHC_SHADOW_STAB:
-			skillratio += -100 + 350 * skill_lv + 5 * sstatus->pow;
+			skillratio += -100 + 550 * skill_lv + 5 * sstatus->pow;
 
 
 			if( sc && sc->getSCE( SC_CLOAKINGEXCEED ) ){
 			if( sc && sc->getSCE( SC_CLOAKINGEXCEED ) ){
-				skillratio += 50 * skill_lv + 2 * sstatus->pow;
+				skillratio += 100 * skill_lv + 2 * sstatus->pow;
 			}
 			}
 
 
 			RE_LVL_DMOD(100);
 			RE_LVL_DMOD(100);
@@ -6793,10 +6793,6 @@ static struct Damage initialize_weapon_data(struct block_list *src, struct block
 				if (sc && sc->getSCE(SC_E_SLASH_COUNT))
 				if (sc && sc->getSCE(SC_E_SLASH_COUNT))
 					wd.div_ = sc->getSCE(SC_E_SLASH_COUNT)->val1;
 					wd.div_ = sc->getSCE(SC_E_SLASH_COUNT)->val1;
 				break;
 				break;
-			case SHC_SHADOW_STAB:
-				if (wd.miscflag == 2)
-					wd.div_ = 3;
-				break;
 			case SHC_IMPACT_CRATER:
 			case SHC_IMPACT_CRATER:
 				if (sc && sc->getSCE(SC_ROLLINGCUTTER))
 				if (sc && sc->getSCE(SC_ROLLINGCUTTER))
 					wd.div_ = sc->getSCE(SC_ROLLINGCUTTER)->val1;
 					wd.div_ = sc->getSCE(SC_ROLLINGCUTTER)->val1;

+ 0 - 3
src/map/skill.cpp

@@ -5263,9 +5263,6 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
 		break;
 		break;
 
 
 	case SHC_SHADOW_STAB:
 	case SHC_SHADOW_STAB:
-		if (sc && sc->getSCE(SC_CLOAKINGEXCEED))
-			flag |= 2;// Flag to deal 3 hits.
-
 		status_change_end(src, SC_CLOAKING);
 		status_change_end(src, SC_CLOAKING);
 		status_change_end(src, SC_CLOAKINGEXCEED);
 		status_change_end(src, SC_CLOAKINGEXCEED);