Markdown (GitHub flavored):
# DeathGuard
Admin tool for verifying and handling player death recovery requests.
## What it does
- Logs every player death with cause, location, and inventory
- Saves inventory snapshots at moment of death
- Lets admins recover items via Discord - even after the death bag decayed
- Shows if a player crashed or disconnected before dying
## For Admins
When a player asks for item recovery, you can:
- Check their death history
- See exactly what caused the death (PVP, creature, crash, environment)
- View what items they had
- Recover with one click in Discord
No more guessing or manually spawning items.
## Death Types
| Type | Description |
|------|-------------|
| PVP | Player or turret kill |
| Creature | Wild dino (shows name + level) |
| Environment | Drowning, freezing, starving, lava |
| Crash/Timeout | Disconnected before death |
| World Border | Map boundary death |
| Poison | Organic Polymer, etc. |
## Discord Features
- Death notifications in your admin channel
- Recover button - restores items directly to player
- Works with clusters (multi-server)
## Key Points
- Snapshots saved before decay always recoverable
- Works even if death bag is gone
- Anti-abuse: self retrieve tracker
- Configurable retention period
JSON:
{
"License": {
"LicenseKey": "20d31a70-6eba-4da5-9299-d069bb733ffc" // Your license key
},
"Discord": {
"Enabled": true, // Enable/disable Discord notifications
"WebhookUrl": "http://localhost:8080/api/v1/death", // Bot API URL (or Discord webhook URL for legacy mode)
"BotApiKey": "DeathGuard2025SecureKey", // Must match key in bot config.json
"ExcludedBuffs": [ // Buffs hidden from Discord messages (supports wildcards)
// Pattern syntax:
// - "Buff_CS_*" = all buffs starting with "Buff_CS_"
// - "*_Debug_C" = all buffs ending with "_Debug_C"
// - "*Internal*" = all buffs containing "Internal"
// - "Buff_OnFire_C" = exact match only (no wildcard)
"Buff_CS_*",
"Buff_ClassicFlyers_*"
]
},
"Mysql": {
"UseMysql": false, // true = MySQL, false = SQLite
"MysqlHost": "", // Server address
"MysqlPort": 3306, // Port
"MysqlUser": "", // Username
"MysqlPass": "", // Password
"MysqlDB": "", // Database name
"DbPathOverride": "" // Custom SQLite path (empty = default)
},
"Inventory": {
"CaptureOnDeath": true, // Save inventory on death
"SnapshotCooldownSeconds": 60, // Cooldown between snapshots per player (0 = disabled)
"MaxItemsToCapture": 300, // Max items to save
"IncludeEquipped": true, // Include armor and weapons
"IncludeHotbar": true, // Include hotbar items
"RetentionDays": 30 // Days to keep snapshots (applies to death + timed snapshots, 0 = forever)
},
"Recovery": {
"DestroyBodyBagOnRecovery": true, // Destroy body bag after recovery
"DestroyCorpseOnRecovery": true, // Destroy corpse after recovery
"AutoRecoverWorldBorderDeaths": false // Auto-restore inventory on respawn after world border death
},
"TimedSnapshots": {
"Enabled": false, // Enable automatic inventory backups
"IntervalMinutes": 15, // Backup interval (1-60 minutes)
"MaxSnapshotsPerPlayer": 5 // Max backups per player (1-100)
},
"KillZones": [ // Custom names for instant-death locations
{
"name": "Black Hole Astraeos", // Display name in logs and Discord
"causer_class": "TogglePainVolume", // ARK class that causes the damage
"coords": "-110943 -299354 -3650", // Use CCC console command ingame to get coords
"radius": 300 // Detection radius in unreal units
},
{
"name": "Ice Cave Death Pit", // Example for The Island
"causer_class": "PainCausingVolume",
"coords": "0 0 0", // Use CCC console command ingame to get coords
"radius": 300
}
]
}