1.6 KiB
1.6 KiB
ApplySkillShortcut Anti-spam
What it is
CECHostPlayer.ApplySkillShortcut(...) has a small client-side anti-spam gate to prevent input floods (touch/mouse spam, key repeat, UI double-fire) from generating excessive trace/cast work.
This is not a replacement for server cooldowns or validation. It’s client-side hygiene to keep the client stable and reduce redundant requests.
How it works
The gate is implemented inside Assets/Scripts/CECHostPlayer.Skill.cs:
- Global minimum interval (ANY): blocks ultra-high-frequency bursts across all skills.
- Per-skill minimum interval (PER_SKILL): blocks rapidly pressing the same skill repeatedly.
- Charge exception: if the player is charging a skill and presses the same skill again to release immediately, that press is allowed (so charging remains responsive).
The timing source is Time.unscaledTime so the throttle stays consistent even if Time.timeScale changes.
Tunables
In CECHostPlayer.Skill.cs:
APPLY_SKILL_SHORTCUT_MIN_INTERVAL_ANY(default0.05s)APPLY_SKILL_SHORTCUT_MIN_INTERVAL_PER_SKILL(default0.12s)
If you need to tweak feel:
- Lower ANY carefully; it protects against accidental double-fire from UI/input systems.
- Lower PER_SKILL if skills feel “eaten” during fast tapping, but keep it high enough to block spam.
Why the charge exception exists
Chargeable skills commonly use a second press to “cast now”. Blocking that second press makes charging feel broken, so the anti-spam explicitly does not block it.