WCSSkills
Archived2021-10 → 2023-01, then 2023-11 → 2024-01
- Scale
- two full implementations
A Counter-Strike server mod where players compose individual skills instead of picking a class — built on a trait-based status-effect system adapted from a JRPG's combat rules. Written first in Python, then rewritten from scratch in C++20.
A rules engine, not a feature list.
Every skill applies status effects in three modes that combine freely — instant, periodic, and triggered by an event such as taking damage, dealing damage, or another effect firing. Every skill and effect carries traits, and traits interact: healing carries Light, which is hostile to Darkness, so a loadout holding both disables both at spawn. Weapon classes map onto a three-card system borrowed from the source rules. Alignment axes constrain what an effect may do, with support, direct damage and crowd control falling on different points of them. Turn-based durations translate into seconds, adjustable per effect.
The rewrite had a reason.
The game changed platform. Rather than port, I rebuilt in C++20 — hand-written containers, a tick scheduler with overflow detection, a JSON-driven data layer for skills, effects and traits, and a seven-character error-code scheme worked around the plugin host's error buffer limit, each code documented.
Highlights
- A trait interaction system where combinations disable each other by rule
- A hand-written doubly linked list, generic data storage and tick scheduler
- A GoogleTest suite with a leak checker, on a CMake CI matrix across Linux and Windows
Stack
PythonSource.PythonC++20CMakeGoogleTestSQLite C APImetamodnlohmann/json