L2JMobius

High Five Blow-type skills not playing critical hit sound on success

MoiKa · 8 · 1154

Offline MoiKa

  • Heir
  • **
    • Posts: 11
Hi,

I've noticed that blow-type skills are not playing the critical hit sound effect when they land successfully. This used to be a clear audio cue in retail that helped identify a successful critical blow.

Currently, even when the blow lands and deals damage, there's no sound feedback — it feels like a fail hit. Could this be a bug or a missing sound trigger in the skill handling?

Tested on H5 l2mobius.net


Thanks in advance for checking it out!


Online Mobius

  • Distinguished King
  • *****
    • Posts: 19715
Known since 2010.
https://l2jserver.com/forum/viewtopic.php?t=16057

And 2017
https://maxcheaters.com/topic/215932-blow-skills-success-sound-effect/

Try this.
Code: (diff) [Select]
Index: dist/game/data/scripts/handlers/effecthandlers/Backstab.java
===================================================================
--- dist/game/data/scripts/handlers/effecthandlers/Backstab.java (revision 17550)
+++ dist/game/data/scripts/handlers/effecthandlers/Backstab.java (working copy)
@@ -25,6 +25,7 @@
 import org.l2jmobius.gameserver.model.item.enums.ShotType;
 import org.l2jmobius.gameserver.model.skill.Skill;
 import org.l2jmobius.gameserver.model.stats.Formulas;
+import org.l2jmobius.gameserver.network.serverpackets.PlaySound;
 
 /**
  * Backstab effect implementation.
@@ -71,6 +72,10 @@
  if (Formulas.calcCrit(effector, effected, skill))
  {
  damage *= 2;
+ if (effector.isPlayer())
+ {
+ effector.sendPacket(new PlaySound("skillsound.critical_hit_02"));
+ }
  }
 
  effected.reduceCurrentHp(damage, effector, skill);
Index: dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java
===================================================================
--- dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java (revision 17550)
+++ dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java (working copy)
@@ -25,6 +25,7 @@
 import org.l2jmobius.gameserver.model.item.enums.ShotType;
 import org.l2jmobius.gameserver.model.skill.Skill;
 import org.l2jmobius.gameserver.model.stats.Formulas;
+import org.l2jmobius.gameserver.network.serverpackets.PlaySound;
 
 /**
  * Fatal Blow effect implementation.
@@ -71,6 +72,10 @@
  if (crit)
  {
  damage *= 2;
+ if (effector.isPlayer())
+ {
+ effector.sendPacket(new PlaySound("skillsound.critical_hit_02"));
+ }
  }
 
  effected.reduceCurrentHp(damage, effector, skill);


Offline MoiKa

  • Heir
  • **
    • Posts: 11
Known since 2010.
https://l2jserver.com/forum/viewtopic.php?t=16057

And 2017
https://maxcheaters.com/topic/215932-blow-skills-success-sound-effect/

Try this.
Code: (diff) [Select]
Index: dist/game/data/scripts/handlers/effecthandlers/Backstab.java
===================================================================
--- dist/game/data/scripts/handlers/effecthandlers/Backstab.java (revision 17550)
+++ dist/game/data/scripts/handlers/effecthandlers/Backstab.java (working copy)
@@ -25,6 +25,7 @@
 import org.l2jmobius.gameserver.model.item.enums.ShotType;
 import org.l2jmobius.gameserver.model.skill.Skill;
 import org.l2jmobius.gameserver.model.stats.Formulas;
+import org.l2jmobius.gameserver.network.serverpackets.PlaySound;
 
 /**
  * Backstab effect implementation.
@@ -71,6 +72,10 @@
  if (Formulas.calcCrit(effector, effected, skill))
  {
  damage *= 2;
+ if (effector.isPlayer())
+ {
+ effector.sendPacket(new PlaySound("skillsound.critical_hit_02"));
+ }
  }
 
  effected.reduceCurrentHp(damage, effector, skill);
Index: dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java
===================================================================
--- dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java (revision 17550)
+++ dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java (working copy)
@@ -25,6 +25,7 @@
 import org.l2jmobius.gameserver.model.item.enums.ShotType;
 import org.l2jmobius.gameserver.model.skill.Skill;
 import org.l2jmobius.gameserver.model.stats.Formulas;
+import org.l2jmobius.gameserver.network.serverpackets.PlaySound;
 
 /**
  * Fatal Blow effect implementation.
@@ -71,6 +72,10 @@
  if (crit)
  {
  damage *= 2;
+ if (effector.isPlayer())
+ {
+ effector.sendPacket(new PlaySound("skillsound.critical_hit_02"));
+ }
  }
 
  effected.reduceCurrentHp(damage, effector, skill);

Is there a reason it wasn't included? Like a performance or something? Or did someone just forget to include it  ;D?

I'll try it tonight.

Thank you so much.


Online Mobius

  • Distinguished King
  • *****
    • Posts: 19715
I would guess it was just missed.

New patch.
Code: (diff) [Select]
Index: dist/game/data/scripts/handlers/effecthandlers/Backstab.java
===================================================================
--- dist/game/data/scripts/handlers/effecthandlers/Backstab.java (revision 17554)
+++ dist/game/data/scripts/handlers/effecthandlers/Backstab.java (working copy)
@@ -25,6 +25,7 @@
 import org.l2jmobius.gameserver.model.item.enums.ShotType;
 import org.l2jmobius.gameserver.model.skill.Skill;
 import org.l2jmobius.gameserver.model.stats.Formulas;
+import org.l2jmobius.gameserver.network.serverpackets.PlaySound;
 
 /**
  * Backstab effect implementation.
@@ -68,13 +69,18 @@
  double damage = Formulas.calcBackstabDamage(effector, effected, skill, shld, ss);
 
  // Crit rate base crit rate for skill, modified with STR bonus
- if (Formulas.calcCrit(effector, effected, skill))
+ final boolean crit = Formulas.calcCrit(effector, effected, skill);
+ if (crit)
  {
  damage *= 2;
+ if (effector.isPlayer())
+ {
+ effector.sendPacket(new PlaySound("skillsound.critical_hit_02"));
+ }
  }
 
  effected.reduceCurrentHp(damage, effector, skill);
- effected.notifyDamageReceived(damage, effector, skill, true, false);
+ effected.notifyDamageReceived(damage, effector, skill, crit, false);
 
  // Manage attack or cast break of the target (calculating rate, sending message...)
  if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage))
@@ -86,10 +92,10 @@
  if (effector.isPlayer())
  {
  final Player activePlayer = effector.asPlayer();
- activePlayer.sendDamageMessage(effected, (int) damage, false, true, false);
+ activePlayer.sendDamageMessage(effected, (int) damage, false, crit, false);
  }
 
  // Check if damage should be reflected
- Formulas.calcDamageReflected(effector, effected, skill, true);
+ Formulas.calcDamageReflected(effector, effected, skill, crit);
  }
 }
\ No newline at end of file
Index: dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java
===================================================================
--- dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java (revision 17554)
+++ dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java (working copy)
@@ -25,6 +25,7 @@
 import org.l2jmobius.gameserver.model.item.enums.ShotType;
 import org.l2jmobius.gameserver.model.skill.Skill;
 import org.l2jmobius.gameserver.model.stats.Formulas;
+import org.l2jmobius.gameserver.network.serverpackets.PlaySound;
 
 /**
  * Fatal Blow effect implementation.
@@ -71,6 +72,10 @@
  if (crit)
  {
  damage *= 2;
+ if (effector.isPlayer())
+ {
+ effector.sendPacket(new PlaySound("skillsound.critical_hit_02"));
+ }
  }
 
  effected.reduceCurrentHp(damage, effector, skill);
@@ -86,10 +91,10 @@
  if (effector.isPlayer())
  {
  final Player activePlayer = effector.asPlayer();
- activePlayer.sendDamageMessage(effected, (int) damage, false, true, false);
+ activePlayer.sendDamageMessage(effected, (int) damage, false, crit, false);
  }
 
  // Check if damage should be reflected.
- Formulas.calcDamageReflected(effector, effected, skill, true);
+ Formulas.calcDamageReflected(effector, effected, skill, crit);
  }
 }
\ No newline at end of file


Offline MoiKa

  • Heir
  • **
    • Posts: 11
I would guess it was just missed.

New patch.
Code: (diff) [Select]
Index: dist/game/data/scripts/handlers/effecthandlers/Backstab.java
===================================================================
--- dist/game/data/scripts/handlers/effecthandlers/Backstab.java (revision 17554)
+++ dist/game/data/scripts/handlers/effecthandlers/Backstab.java (working copy)
@@ -25,6 +25,7 @@
 import org.l2jmobius.gameserver.model.item.enums.ShotType;
 import org.l2jmobius.gameserver.model.skill.Skill;
 import org.l2jmobius.gameserver.model.stats.Formulas;
+import org.l2jmobius.gameserver.network.serverpackets.PlaySound;
 
 /**
  * Backstab effect implementation.
@@ -68,13 +69,18 @@
  double damage = Formulas.calcBackstabDamage(effector, effected, skill, shld, ss);
 
  // Crit rate base crit rate for skill, modified with STR bonus
- if (Formulas.calcCrit(effector, effected, skill))
+ final boolean crit = Formulas.calcCrit(effector, effected, skill);
+ if (crit)
  {
  damage *= 2;
+ if (effector.isPlayer())
+ {
+ effector.sendPacket(new PlaySound("skillsound.critical_hit_02"));
+ }
  }
 
  effected.reduceCurrentHp(damage, effector, skill);
- effected.notifyDamageReceived(damage, effector, skill, true, false);
+ effected.notifyDamageReceived(damage, effector, skill, crit, false);
 
  // Manage attack or cast break of the target (calculating rate, sending message...)
  if (!effected.isRaid() && Formulas.calcAtkBreak(effected, damage))
@@ -86,10 +92,10 @@
  if (effector.isPlayer())
  {
  final Player activePlayer = effector.asPlayer();
- activePlayer.sendDamageMessage(effected, (int) damage, false, true, false);
+ activePlayer.sendDamageMessage(effected, (int) damage, false, crit, false);
  }
 
  // Check if damage should be reflected
- Formulas.calcDamageReflected(effector, effected, skill, true);
+ Formulas.calcDamageReflected(effector, effected, skill, crit);
  }
 }
\ No newline at end of file
Index: dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java
===================================================================
--- dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java (revision 17554)
+++ dist/game/data/scripts/handlers/effecthandlers/FatalBlow.java (working copy)
@@ -25,6 +25,7 @@
 import org.l2jmobius.gameserver.model.item.enums.ShotType;
 import org.l2jmobius.gameserver.model.skill.Skill;
 import org.l2jmobius.gameserver.model.stats.Formulas;
+import org.l2jmobius.gameserver.network.serverpackets.PlaySound;
 
 /**
  * Fatal Blow effect implementation.
@@ -71,6 +72,10 @@
  if (crit)
  {
  damage *= 2;
+ if (effector.isPlayer())
+ {
+ effector.sendPacket(new PlaySound("skillsound.critical_hit_02"));
+ }
  }
 
  effected.reduceCurrentHp(damage, effector, skill);
@@ -86,10 +91,10 @@
  if (effector.isPlayer())
  {
  final Player activePlayer = effector.asPlayer();
- activePlayer.sendDamageMessage(effected, (int) damage, false, true, false);
+ activePlayer.sendDamageMessage(effected, (int) damage, false, crit, false);
  }
 
  // Check if damage should be reflected.
- Formulas.calcDamageReflected(effector, effected, skill, true);
+ Formulas.calcDamageReflected(effector, effected, skill, crit);
  }
 }
\ No newline at end of file

Thank you Mobius!.

For me backstab is fine, however, I think that for fatal blow, whenever it's successful, the critical sound applies, not just when it's a skill critical (influenced by STR). But these are already minor details.



Online Skache

  • Distinguished King
  • *****
    • Posts: 825
    • l2skale.com
Maybe fatal blow cannot do critical?

As i understand backstab has this in client description --> https://prnt.sc/vbKYZIePkfQo

But Fatal blow does not have it --> https://prnt.sc/M_4X1pRvSzje / https://prnt.sc/Fqn3duM2xVcU


Offline MoiKa

  • Heir
  • **
    • Posts: 11
Maybe fatal blow cannot do critical?

As i understand backstab has this in client description --> https://prnt.sc/vbKYZIePkfQo

But Fatal blow does not have it --> https://prnt.sc/M_4X1pRvSzje / https://prnt.sc/Fqn3duM2xVcU

For Fatal blow skills... Only lethal blow has a chance from 20% to hit critical (21% in enchanted skills)
Lethal: effect={{i_fatal_blow;5773;300;20}
Mortal: effect={{i_fatal_blow;977;200;0}}
Deadly: effect={{i_fatal_blow;5479;300;0}
Blinding: effect={{i_fatal_blow;3653;250;0}
Critical blow: effect={{i_fatal_blow;3653;250;0}

Backstab has 15% to hit critical
effect={{i_backstab;5479;400;15}

The thing is, Fatal Blow skills, whenever they succeed, whether critical or non-critical, sound like a critical. At least that's how it was playing the off.

Thank you!