L L4D2node

CRagdoll2::~CRagdoll2

0x004a1f00 · 301 bytes · __thiscall

_ZN9CRagdoll2D2Ev

Decompiled

undefined (1 param)

/* CRagdoll2::~CRagdoll2() */

void __thiscall CRagdoll2::~CRagdoll2(CRagdoll2 *this)

{
  undefined4 *puVar1;
  int iVar2;
  CRagdoll2 *pCVar3;
  
  *(undefined ***)this = &PTR__CRagdoll2_00c1c0c8;
  *(undefined **)(this + 4) = &DAT_00c1c124;
  if (*(int *)(this + 0x8b8) != 0) {
    (**(code **)(*g_pPhys2World + 0xcc))(g_pPhys2World,*(int *)(this + 0x8b8));
    puVar1 = *(undefined4 **)(this + 0x8b8);
    if (puVar1 != (undefined4 *)0x0) {
      *puVar1 = &PTR_Execute_00c1c0a8;
      puVar1[9] = 0;
      CUtlMemory<CRagdoll2::AddVel_t,int>::Purge
                ((CUtlMemory<CRagdoll2::AddVel_t,int> *)(puVar1 + 6));
      puVar1[10] = puVar1[6];
      CUtlMemory<CRagdoll2::AddVel_t,int>::Purge
                ((CUtlMemory<CRagdoll2::AddVel_t,int> *)(puVar1 + 6));
      puVar1[4] = 0;
      CUtlMemory<matrix3x4_t,int>::Purge((CUtlMemory<matrix3x4_t,int> *)(puVar1 + 1));
      puVar1[5] = puVar1[1];
      CUtlMemory<matrix3x4_t,int>::Purge((CUtlMemory<matrix3x4_t,int> *)(puVar1 + 1));
      operator_delete(puVar1);
    }
    *(undefined4 *)(this + 0x8b8) = 0;
  }
  if (0 < *(int *)(this + 8)) {
    s_globalCount = s_globalCount + -1;
  }
  iVar2 = 0;
  pCVar3 = this + 0x2c;
  (**(code **)(*g_pPhys2World + 0xa0))(g_pPhys2World,this + 4);
  if (0 < *(int *)(this + 8)) {
    do {
      iVar2 = iVar2 + 1;
      (**(code **)(*g_pPhys2World + 0x24))(g_pPhys2World,*(undefined4 *)pCVar3);
      pCVar3 = pCVar3 + 0x54;
    } while (iVar2 < *(int *)(this + 8));
    if (0 < *(int *)(this + 8)) {
      iVar2 = 0;
      pCVar3 = this + 0x24;
      do {
        iVar2 = iVar2 + 1;
        (**(code **)(*g_pPhys2World + 8))(g_pPhys2World,*(undefined4 *)pCVar3);
        pCVar3 = pCVar3 + 0x54;
      } while (iVar2 < *(int *)(this + 8));
    }
  }
  *(undefined ***)this = &PTR__IRagdoll_00c1bc88;
  return;
}

SourceMod gamedata

paste into addons/sourcemod/gamedata/<your_plugin>.txt
used as the SourceMod key — change to fit your plugin's convention
SourceMod library name (server / engine / matchmaking)

Just a Signatures{} block, ready to drop into a gamedata file. Wire it up in your plugin however you like - SDKCall, DHooks, raw memory ops, or anything else.



        

        

          

Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.

Return-type handling cheatsheet (DHookReturn)