Browse Source

Adjusts Reverberation behavior (#5013)

* Reverberation no longer uses any sub-attack skill.
* Adjusts hit count to be split on each hit.
Thanks to @attackjom!
Aleos 5 years ago
parent
commit
023dcac49f
4 changed files with 9 additions and 8 deletions
  1. 4 3
      db/re/skill_db.yml
  2. 2 2
      src/map/battle.cpp
  3. 2 2
      src/map/skill.cpp
  4. 1 1
      src/map/skill.hpp

+ 4 - 3
db/re/skill_db.yml

@@ -25089,14 +25089,15 @@ Body:
     Name: WM_REVERBERATION
     Description: Reverberation
     MaxLevel: 5
+    Type: Magic
     TargetType: Attack
     DamageFlags:
       Splash: true
     Flags:
       IsTrap: true
     Range: 9
-    Hit: Single
-    HitCount: 1
+    Hit: Multi_Hit
+    HitCount: -10
     SplashArea:
       - Level: 1
         Area: 2
@@ -25148,7 +25149,7 @@ Body:
         Reproduce: true
     Requires:
       SpCost: 1
-  - Id: 2416
+  - Id: 2416 # Removed on kRO
     Name: WM_REVERBERATION_MAGIC
     Description: Reverberation Magic
     MaxLevel: 5

+ 2 - 2
src/map/battle.cpp

@@ -6069,7 +6069,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
 			if (mflag&ELE_DARK)
 				s_ele = ELE_DARK;
 			break;
-		case WM_REVERBERATION_MAGIC:
+		case WM_REVERBERATION:
 			if (sd)
 				s_ele = sd->bonus.arrow_ele;
 			break;
@@ -6495,7 +6495,7 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
 							skillratio += 100; // !TODO: Confirm target sleeping bonus
 						RE_LVL_DMOD(100);
 						break;
-					case WM_REVERBERATION_MAGIC:
+					case WM_REVERBERATION:
 						// MATK [{(Skill Level x 300) + 400} x Casters Base Level / 100] %
 						skillratio += -100 + 700 + 300 * skill_lv;
 						RE_LVL_DMOD(100);

+ 2 - 2
src/map/skill.cpp

@@ -3645,7 +3645,7 @@ int64 skill_attack (int attack_type, struct block_list* src, struct block_list *
 			if (!(flag&SD_ANIMATION))
 				clif_skill_nodamage(dsrc, bl, skill_id, skill_lv, 1);
 			// Fall through
-		case WM_REVERBERATION_MAGIC:
+		case WM_REVERBERATION:
 			dmg.dmotion = clif_skill_damage(dsrc, bl, tick, dmg.amotion, dmg.dmotion, damage, dmg.div_, skill_id, -2, dmg_type);
 			break;
 		case SJ_FALLINGSTAR_ATK:
@@ -6033,7 +6033,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
 
 	case WM_REVERBERATION:
 		if (flag & 1)
-			skill_attack(skill_get_type(WM_REVERBERATION_MAGIC), src, src, bl, WM_REVERBERATION_MAGIC, skill_lv, tick, flag);
+			skill_attack(skill_get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, flag);
 		else {
 			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|BL_SKILL, src, skill_id, skill_lv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill_castend_damage_id);

+ 1 - 1
src/map/skill.hpp

@@ -1693,7 +1693,7 @@ enum e_skill {
 	WM_METALICSOUND,
 	WM_REVERBERATION,
 	WM_REVERBERATION_MELEE, // Removed on kRO
-	WM_REVERBERATION_MAGIC,
+	WM_REVERBERATION_MAGIC, // Removed on kRO
 	WM_DOMINION_IMPULSE, // Removed on kRO
 	WM_SEVERE_RAINSTORM,
 	WM_POEMOFNETHERWORLD,