Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Find CBaseEntity TakeDamageOld

ASecurity

Find and identify the CBaseEntity::TakeDamageOld function in the CS2 server binary using IDA Pro MCP. Use this skill when reverse engineering CS2 server.dll or libserver.so to locate the legacy damage-application entry point by finding the code that references its self-identifying assert/warning message "CBaseEntity::TakeDamageOld: damagetype %d with info.GetDamageForce() == Vector::vZero". Trigger: CBaseEntity_TakeDamageOld

3 stars
0 votes
0 copies
0 views
Added 9/27/2026
ai-agents

Works with

mcp

Security Analysis

A100/100

Scanned 9/27/2026

Install to Claude Code

$npx -y skills add mrc4tt/CS2_VibeSignatures --skill find-CBaseEntity_TakeDamageOld --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Find CBaseEntity TakeDamageOld?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Find CBaseEntity TakeDamageOld
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mrc4tt-find-cbaseentity-takedamageold/badge)](https://www.skillsdirectory.com/skills/mrc4tt-find-cbaseentity-takedamageold)

More formats (shields.io, HTML) on the badges page.

Download with Pro
Files
SKILL.md
---
name: find-CBaseEntity_TakeDamageOld
description: |
  Find and identify the CBaseEntity::TakeDamageOld function in the CS2 server binary using IDA Pro MCP.
  Use this skill when reverse engineering CS2 server.dll or libserver.so to locate the legacy damage-application
  entry point by finding the code that references its self-identifying assert/warning message
  "CBaseEntity::TakeDamageOld: damagetype %d with info.GetDamageForce() == Vector::vZero".
  Trigger: CBaseEntity_TakeDamageOld
disable-model-invocation: true
---

# Find CBaseEntity_TakeDamageOld

Locate `CBaseEntity::TakeDamageOld` in CS2 `server.dll` / `libserver.so` using IDA Pro MCP tools.

## Method

### 1. Find the Self-Identifying Warning String

```text
mcp__ida-pro-mcp__find_regex pattern="TakeDamageOld: damagetype"
```

There are two closely related warning strings (one for `GetDamagePosition() == VectorWS::vZero`, one for
`GetDamageForce() == Vector::vZero`); either works as an anchor since both are printed from inside the same
function. Use `"CBaseEntity::TakeDamageOld: damagetype %d with info.GetDamageForce() == Vector::vZero"`.

> Linux 14168 reference: the string is at `0x982d40` (the `GetDamagePosition` variant is at `0x97a258`).

### 2. Get the Referencing Function

```text
mcp__ida-pro-mcp__xrefs_to addr="0x982d40"
```

The string has exactly one xref; its containing function is `CBaseEntity::TakeDamageOld`.

> Linux 14168 reference: `0x982d40` is referenced from `0xd4c387`, inside the function starting at `0xd4c280`
> (size `0xd15`).

### 3. Sanity-Check the Candidate

```text
mcp__ida-pro-mcp__decompile addr="0xd4c280"
```

Confirm the decompilation is consistent with `TakeDamageOld`'s known role: takes `this` plus a
`CTakeDamageInfo`-like structure/handle and additional damage-position/force parameters, validates the
damage-force/position vectors are non-zero (emitting the anchor warning otherwise), and applies health reduction,
armor absorption, and damage-event bookkeeping. The candidate's prologue also has a distinctive `pxor xmm0, xmm0`
(`66 0F EF C0`) immediately after the `push rbp`, used to zero-initialize a local vector/float before the
standard `mov rbp, rsp` — a useful secondary fingerprint alongside the string anchor.

### 4. Generate Function Signature

**ALWAYS** Use SKILL `/generate-signature-for-function` with `addr=0xd4c280` to generate a robust and unique
`func_sig`.

> Linux 14168 reference: generated signature is `55 66 0F EF C0 48 89 E5 41 57 41 56 41 55 49 89 FD 31 FF` —
> already unique across the binary at this length.

### 5. Write IDA Analysis Output as YAML

**ALWAYS** Use SKILL `/write-func-as-yaml` to write the analysis results.

Required parameters:
- `func_name`: `CBaseEntity_TakeDamageOld`
- `func_addr`: `0xd4c280`
- `func_sig`: The validated signature from step 4

## Function Characteristics

- **Purpose**: Legacy/compat damage-application entry point on `CBaseEntity`. Validates the incoming damage
  info's force/position vectors (warning if either is exactly zero for a damage type that expects a nonzero
  value), then applies health/armor reduction and damage-event bookkeeping.
- **Binary**: `server.dll` / `libserver.so`
- **Parameters**: `(this, damage info handle/pointer, double, float, ...)` (observed decompiled shape: `(_QWORD
  *a1, __int64 a2, void **a3, double a4, float a5)`).
- **Return value**: `__int64` (result/status, exact meaning not confirmed beyond "not a simple bool").

## Discovery Strategy

1. `TakeDamageOld` prints a self-identifying warning message (embedding its own qualified name,
   `"CBaseEntity::TakeDamageOld: ..."`) when it detects an invalid zero damage-force/position vector — this kind
   of self-naming assert string is an extremely reliable, low-ambiguity anchor since the function name is baked
   directly into the string.
2. The string has a single xref, so its containing function is unambiguous.
3. The candidate's parameter shape and the distinctive early `pxor xmm0, xmm0` in its prologue corroborate the
   identification.

This is robust because the anchor string literally contains the fully-qualified function name, making
misidentification essentially impossible as long as the string survives (which self-documenting assert/warning
strings reliably do across recompiles).

## Output YAML Format

The output YAML filename depends on the platform:
- `server.dll` -> `CBaseEntity_TakeDamageOld.windows.yaml`
- `libserver.so` -> `CBaseEntity_TakeDamageOld.linux.yaml`

Fields: `func_name`, `func_va`, `func_rva`, `func_size`, `func_sig`.

Attribution

mrc4ttmrc4tt
View sourceMore from mrc4tt →
SSkills DirectorySkills Directory

Know which skills are safe — weekly.

Best new skills + every skill we flagged as malicious. From the team that scanned 103,619.

Join free

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Know which skills are safe — weekly.

Best new skills + every skill we flagged as malicious. From the team that scanned 103,619.

Join free

Related Skills

Caveman

Ultra-compressed communication mode that cuts output tokens while keeping technical accuracy. Levels: lite, full, ultra and the wenyan variants. Use for /caveman, "caveman mode", "talk like caveman", "be brief" or "less tokens".

1074701 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

694821 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3351 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

691 votes

math-skill

A comprehensive mathematical reasoning skill for AI assistants — handles arithmetic to research-level problems with rigorous step-by-step reasoning, systematic verification, and transparent uncertainty handling

381 votes
View all in ai-agents →