Skill delay and movement delay completely wrong
Summary
When a move command is issued animations for abilities like double strafe, heal, and others should stop playing and the player should be canceled and movement should begin.
When a move command is issued the player should move, even if they were just hit.
Steps to Reproduce
- Cast heal
- Immediately issue a move command before the animation begins
Actual result
- You will now have to sit through the animation instead of moving
Expected result
- Your character moves after casting heal and before the animation begins or slightly after depending how fast you issued the move command.
Additional Information
I believe this is due to battle_config.pc.walk_delay_rate not being set to 0 on the server.
When it's set to 0 it defaults to "1" in calculations which makes it function as RO should:
- When you get hit or use a no cast-time ability your current movement is interrupted
- If you issue another movement command so it goes through after this happens you begin moving again.
However, I am not familiar with Hercules' codebase and only poked through it for ~40 minutes to get a feel for what was going on. It does look like it's properly implemented for MVPs and normal mobs, but the player implementation is not correct.
Notes
It's worth noting that "hit stun" is not a real mechanic, and neither is waiting for after cast animations to finish before moving. Both things are currently heavily present on the server and result in all kinds of frustrating situations, like not being able to move for 3s+ after being hit at times and not being able to kite as an archer class.
Canonically, hit lock only exists in the sense that if you are hit more times per second than it takes for you to move 1 tile you can't move 1 tile because your movement will be cancelled each tick before you successfully move a tile. The artificial delays introduced in Hercules make little sense.
This is how it worked on official servers from 2001 through forever pre-re (and it still works this way in re I'm told), and it's also how it worked on private servers from around 2005 through who knows how long. The earlier athena implementations had these delays because they were naively coded by someone who didn't understand how the game worked. It was fixed in eAthena at the very least by the mid '00s. Somehow, these are the default in Hercules.
Personal Input
The argument FOR removing these is to improve the PVM experience for Priest, Archer classes, and others. It also greatly improves WoE and PVP because you can move a bit while being focused, although if you are hit by enough people it's still difficult to move at any reasonable pace.
After-cast delay, or attack speed delay, should not be impacted by this change. You still must wait an appropriate amount of time before using Double Strafe, Heal, or other abilities again even if you are able to move.
I'm having difficulty coming up with a reason to not make this change. It would open up more leveling spots, allow non-endurance classes to mob more effectively, and encourage people good at and passionate about RO to play on the server. I don't believe it harms the gameplay experience of anyone, either.
If the fix is more involved than changing a config setting, although it appears not to be, I'm willing to personally create a patch for Hercules to make this work correctly. I appreciate any feedback on why it works this way on the server, and hopefully "it's the default Hercules config" is the answer rather than any intentions of the Origins team.