WCSSkills

Archived

2021-10 → 2023-01, then 2023-11 → 2024-01

Scale
two full implementations

WCSSkills on GitHub CS2_WCSSkills on GitHub

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