Resource icon

Trusted Paid DeathGuard 2.14

This resource is paid, and requires to be purchased
DeathGuard
DeathGuard is an advanced death investigation and recovery plugin for ARK: Survival Ascended servers and clusters.
It is designed to help server owners handle death claims faster, recover approved inventories safely, prevent duplication, and give admins clear evidence directly in Discord.
Current version: v2.14
Features
Player Death Investigation
  • Sends detailed Discord death logs when a player dies
  • Shows victim info, killer info, damage type and death reason
  • Shows exact death location with teleport command
  • Shows biome, temperature, buffs and status effects
  • Shows server FPS, player ping and jitter
  • Tracks crash, disconnect, timeout and offline context
  • Helps admins decide if a death was fair, suspicious, bugged or recoverable
Inventory Snapshot System
  • Saves a full inventory snapshot when a player dies
  • Can save inventory, equipped armor and hotbar items
  • Supports item limits and retention settings
  • Supports cluster tracking with server ID and map name
  • Optional timed inventory backups every X minutes
  • Timed backups can be limited by permission group
Server Crash Recovery
  • Captures what every online player was carrying at the exact moment the server crashes
  • After the restart, one command compensates every affected player at once
  • No more flood of "I lost everything in the crash" tickets after a bad crash
  • Players claim their lost items themselves with /recover
  • Smart no-duplication system: players only receive what they actually lost
  • Items the server restart already gave back are skipped automatically
  • Stashing items in a vault before claiming gains nothing, the comparison is made at login
  • Shows how much progress was lost per crash, so you can decide instantly
  • Undo command in case you approve the wrong crash
  • Per player commands available for individual support tickets
Character Loss Protection — ProfileGuard
  • Fixes the "I transferred to map and my character is gone" problem
  • Covers the known ARK issue where characters vanish on transfer, with or without a crash
  • Force-saves the character seconds after every transfer and every new character creation
  • Keeps the last 5 character versions per player per map as automatic backups
  • Missing characters are restored automatically — at server start from the backups, or at the player's next login when the loss happened right after a transfer
  • The player never sees the character creation screen in either case
  • Corrupted or overwritten characters can be rolled back to an older version with one command
  • Silent for players no commands, no claims
Shoulder Pet on Transfer
  • Fixes ARK dropping a player's shoulder pet on the ground at the obelisk when they transfer
  • The pet is packed into the inventory as a cryopod and rides along with the player
  • On arrival it deploys again as a normal permanent tame
  • The pod is single use, so players do not gain a free cryopod out of it
  • Optional message telling the player their pet was saved
Discord Bot Integration
  • Interactive Discord embeds for death reports
  • View the saved inventory directly from Discord
  • Copy teleport command from the death message
  • Recover inventory with Discord buttons
  • Multi server dropdown for cluster recovery
  • Retry button for failed recoveries
  • Updates the original death message after recovery instead of spamming new messages
Inventory Recovery
  • Admins can recover inventories through Discord, RCON or console
  • Online players can receive recovered items instantly
  • Offline players can have recoveries saved as pending
  • Players can claim approved recoveries later with /recover
  • Optional same server recovery restriction
  • Optional auto recovery for selected players or permission groups
Anti Duplication Protection
  • Detects if the player already looted their own body
  • Detects if another player looted the death cache
  • Detects items pulled out of the body or bag with building mod tools, like the Cyber's Structures OmniTool or the ArkitectStructures StructureGun
  • Food spoiling in the bag no longer counts as looting, so honest victims can still recover
  • Prevents full recovery when items were already taken
  • Removes recovered items from the death cache
  • Supports recovery blacklist for restricted items
  • Blacklist can block items like artifacts, element, tributes or custom items
  • Helps prevent item duplication from death recovery abuse
  • Admins can still override any block with a force command
Player Recovery System
  • Optional player command system for self recovery
  • Players can list available deaths with /dgbodies
  • Players can recover a specific death with /dgrecover <id>
  • Players can claim approved recoveries with /recover
  • Access can be controlled by permission groups
  • Recovery cost can be different per permission group
  • Can be used as a VIP, supporter, shop or cluster quality of life feature
Shop Integration
  • Supports recovery as a shop item
  • Works with ArkShop
  • Works with WShop
  • Works with TokenBank
  • Can recover the most recent unrecovered death automatically
  • Useful for VIP packages, booster perks, supporter perks or point sinks
Advanced Death Detection
  • Detects PvP deaths
  • Detects turret deaths
  • Detects creature and modded creature kills
  • Detects lava, fire, poison and radiation deaths
  • Detects drowning, starvation, dehydration and suffocation
  • Detects world border deaths
  • Detects bleed, venom, gnash and other damage over time deaths
  • Detects crash, disconnect, timeout and offline related deaths
  • Supports custom kill zones for map hazards like black holes, cave pits or instant death areas
World Border Recovery
  • Can detect world border deaths
  • Can automatically recover items after world border deaths
  • Useful when the body or bag is destroyed by the map boundary
Offline Protection
  • Optional offline damage protection
  • Protects logged out players after a configurable grace period
  • Can also protect players after crashes or timeouts
Tamed Dino Death Recovery
  • Tracks tamed dino deaths
  • Sends dino death reports to Discord
  • Shows species, gender, level, owner, tribe, killer and location
  • Shows dino status context like starving, drowning, torpor or exhaustion
  • Can recover the dead dino as a cryopod
  • Can include the dino inventory in the recovery
  • Supports multi server dino recovery through Discord
Translation Support
  • Supports translated Discord embeds
  • Supports translated buttons and status messages
  • Supports translated player messages
  • Supports translated death reasons, creatures, buffs, biomes and dino death logs
Cluster Ready
  • Built for multi server ARK clusters
  • Supports MySQL
  • Supports server ID and map tracking
  • Supports multi server recovery dropdowns
  • Supports player and dino recovery across configured servers
  • Works well for PvE, PvP, modded and large community clusters




Chat Commands
* /dgbodies
List available unrecovered deaths
* /dgrecover <id>
Recover a specific death snapshot if allowed
* /recover
Claim an approved pending recovery
* /recover list
Show pending recoveries
* /dgoptin
Join auto recovery if enabled
* /dgoptout
Leave auto recovery if enabled
RCON / Console Commands
* DeathGuard.Reload
Reload config.json without restarting the plugin
Player Death Recovery
* DeathGuard.ListDeaths <eos_id> [limit]
List recent death snapshots for a player
* DeathGuard.SnapshotInfo <snapshot_id>
Show full inventory breakdown of a death snapshot
* DeathGuard.RecoverInventory <eos_id> <snapshot_id>
Approve recovery, delivers instantly or marks as pending if offline
* DeathGuard.ForceRecoverInventory <eos_id> <snapshot_id>
Admin override that bypasses normal block conditions
* DeathGuard.ResetSnapshots <eos_id>
Clear old snapshots from a player's death list
* DeathGuard.Recover <eos_id> last
Recover the most recent unrecovered player death, intended for shop integration
Timed Inventory Snapshots
* DeathGuard.ListTimedSnapshots <eos_id> [limit]
List periodic inventory captures for a player
* DeathGuard.TimedSnapshotInfo <snapshot_id>
Show full inventory of a timed snapshot
* DeathGuard.RestoreTimedSnapshot <eos_id> <snapshot_id>
Restore a timed snapshot inventory to an online player
* DeathGuard.TriggerTimedSnapshot
Force a timed snapshot cycle for all online players now

Character Protection (ProfileGuard)
* DeathGuard.ListProfiles <eos_id>
Show a player's stored character versions and whether their character file is on disk
* DeathGuard.RestoreProfile <eos_id> [backup_id]
Restore the newest character backup, or a specific older version
Tamed Dino Recovery
* DeathGuard.ListDinoDeaths <eos_id>
List recent tamed dino deaths for player and tribe
* DeathGuard.RecoverDino [eos_id] <snapshot_id>
Deliver dino as cryopod, auto finds online tribe member when eos_id is omitted
* DeathGuard.ForceRecoverDino <eos_id> <snapshot_id>
Admin override for dino recovery that bypasses safety checks
Pricing
  • $40 USD one time purchase
  • $10 USD per year after the first year for continued updates and support
  • License is per system or host and covers up to 8 maps
DeathGuard gives server owners a complete system for death logs, inventory recovery, server crash compensation, character loss protection, shoulder pet rescue on transfer, dino recovery, anti duplication protection and Discord based admin workflows.


JSON:
{
  "License": {
    "LicenseKey": "your-license-key-here"
  },

  "Mysql": {
    "UseMysql": false, //true = MySQL (recommended) | false = SQLite
    "MysqlHost": "localhost",
    "MysqlPort": 3306,
    "MysqlUser": "arkuser",
    "MysqlPass": "password",
    "MysqlDB": "deathguard",
    "DbPathOverride": "" //Custom SQLite path (empty = default)
  },

  "Discord": {
    "Enabled": true, //Master switch — gates BOTH player and dino notifications
    "BotApiKey": "DeathGuard2025SecureKey", //Must match the bot's ApiKey in its config.json
    "PlayerDeathWebhook": "http://localhost:8080/api/v1/death", //Discord webhook URL, or bot API URL if using the DeathGuard bot
    "DinoDeathWebhook": "http://localhost:8080/api/v1/dino-death", //Empty = no Discord message for dino deaths (deaths are still saved)
    "ExcludedBuffs": [ //Supports wildcards: "Buff_CS_*", "*_Debug_C", "*Internal*"
      "Buff_CS_*",
      "Buff_ClassicFlyers_*"
    ]
  },


  "Inventory": {
    "CaptureOnDeath": true,
    "SnapshotCooldownSeconds": 60, //Seconds between snapshots per player (0 = no cooldown)
    "MaxItemsToCapture": 0, //0 = unlimited | 300 = max 300 items total
    "IncludeEquipped": true, //false = skip armor, chibi, trophy, costume slots
    "IncludeHotbar": true, //false = skip items in hotbar slots 1-10
    "RetentionDays": 30, //0 = keep forever
    "StoreDeathReasonJson": false //Saves extra death details for advanced integrations (leave false unless needed)
  },

  "DinoDeaths": { //Tamed dino death tracking (captures cryopod snapshot on death)
    "Enabled": false, //Enables death tracking. Discord messages also require Discord.Enabled
    "RetentionDays": 30, //0 = keep forever
    "RecoverInventoryToPlayer": true, //true = return dino + all items to player; false = return dino only (items stay in database)
    "DestroyCorpseOnRecovery": true, //true = destroy dino corpse after recovered items removed from it
    "EnableDeathBagCleanup": true, //Also remove leftover death bags after the dino corpse disappears
    "ExcludedDinos": [ //Dinos to skip entirely — no tracking, no Discord.
      "Blueprint'/Game/PrimalEarth/Dinos/Dodo/Dodo_Character_BP.Dodo_Character_BP'"
    ]
  },

  "TimedSnapshots": { //Automatic inventory backups (separate from death snapshots)
    "Enabled": false,
    "IntervalMinutes": 30, //1-60 minutes
    "MaxSnapshotsPerPlayer": 5, //1-100
    "PermissionGroups": [] //Empty = all players. Set groups like ["VIP", "Donor"] to restrict
  },

  "KillZones": [ //Custom names for instant-death locations
    {
      "name": "Black Hole Astraeos", //Display name in logs and Discord
      "causer_class": "TogglePainVolume", //Don't change — identifies the damage source for this zone
      "coords": "-110943 -299354 -3650", //Use CCC console command ingame
      "radius": 300
    }
  ],


  "Recovery": { //Global recovery rules (applies to admin + player recovery)
    "DestroyBodyBagOnRecovery": true,
    "DestroyCorpseOnRecovery": true,
    "AutoRecoverWorldBorderDeaths": false, //Auto-restore on respawn after world border death
    "RequireSameServerForRecovery": false, //true = only recover on same server
    "AutoDeliverOnApproval": true, //true = items delivered immediately when admin approves and player is online and alive; false = player must use /recover
    "Blacklist": { //Block certain items from recovery
      "Enabled": false, //Admin commands (/recover) ignore blacklist
      "Items": [ //Use * as wildcard
        "Blueprint'/Game/PrimalEarth/CoreBlueprints/Resources/PrimalItemResource_Element.PrimalItemResource_Element'",
        "*PrimalItemArtifact*" //Any Artifact
      ]
    }
  },

  "PlayerRecovery": { //Player self recovery commands
    "Enabled": true,
    "ListCommand": "/dgbodies",
    "RecoverCommand": "/dgrecover",
    "UseToken": "", //Empty = points | "TokenType" = TokenBank
    "Permission": { //Player must be in at least one of these groups, otherwise access is denied
      "Legendary": 0,
      "Elite": 100,
      "Advanced": 250,
      "Supporter": 400,
      "Starter": 500
    },
    "DestroyBagOnRecovery": true,
    "MaxDeathAgeHours": 24 //0 = no limit
  },

  "AutoRecovery": { //Automatic recovery on respawn (opt-in)
    "Enabled": false,
    "OptInCommand": "/dgoptin",
    "OptOutCommand": "/dgoptout",
    "PermissionGroup": "DeathGuard", //Permission group for opt-in players
    "UseToken": "", //Empty = points | "TokenType" = TokenBank
    "Permission": { //Player must be in at least one of these groups, otherwise access is denied
      "Legendary": 0,
      "Elite": 100,
      "Advanced": 250,
      "Supporter": 400,
      "Starter": 500
    },
    "DestroyBagOnRecovery": true
  },

  "OfflineProtection": { //PvE ONLY! On PvP this blocks ALL damage including player kills
    "Enabled": false,
    "GracePeriodSeconds": 30 //Seconds after logout before protection activates (0 = instant)
  },


  "Localization": { //OPTIONAL - customize labels for your language
    "CurrencyName": "Points", //Shown when no TokenBank type configured
    "TimeFormat": { //Labels used in "2h 30m ago" time display
      "Hours": "h",
      "Minutes": "m",
      "Seconds": "s",
      "Ago": "ago"
    }
  },

  "Messages": {
    "PlayerIdError": { //Example with all fields - most are optional
      "Message": "[DeathGuard] Could not identify your player ID.",
      "TextColor": "Turquoise", //90+ colors: Red, Green, Gold, Turquoise, Cyan, etc.
      "BackgroundColor": "Black",
      "DisplayTime": 5.0, //Seconds visible
      "Scale": 1.2, //1.0 = normal, 1.5 = large
      "Position": "Center", //Left | Center | Right
      "AddToChat": false
    },
    "DatabaseNotAvailable": {
      "Message": "[DeathGuard] Database not available.",
      "TextColor": "Turquoise"
    },
    "PermissionsNotAvailable": {
      "Message": "[DeathGuard] Permissions system not available.",
      "TextColor": "Turquoise"
    },
    "RecoveryFailed": {
      "Message": "[DeathGuard] Recovery failed: {Error}",
      "TextColor": "Turquoise",
      "DisplayTime": 6.0
    },
    "LoadRecoveryFailed": {
      "Message": "[DeathGuard] Failed to load recovery data.",
      "TextColor": "Turquoise"
    },
    "PaymentFailed": {
      "Message": "[DeathGuard] Payment failed. Please try again.",
      "TextColor": "Turquoise"
    },
    "OptInFailed": {
      "Message": "[DeathGuard] Failed to opt in. Please try again.",
      "TextColor": "Turquoise"
    },
    "OptOutFailed": {
      "Message": "[DeathGuard] Failed to opt out. Please try again.",
      "TextColor": "Turquoise"
    },

    "NoAccess": {
      "Message": "[DeathGuard] You don't have permission to use body recovery.",
      "TextColor": "Red"
    },
    "InsufficientFunds": { //{Currency}, {Cost}, {Balance}
      "Message": "[DeathGuard] Not enough {Currency}. Need {Cost}, you have {Balance}.",
      "TextColor": "Turquoise",
      "DisplayTime": 6.0
    },

    "MustBeAlive": {
      "Message": "[DeathGuard] You must be alive to recover items.",
      "TextColor": "Turquoise"
    },
    "NoPendingDeaths": {
      "Message": "[DeathGuard] You have no pending deaths to recover.",
      "TextColor": "Turquoise"
    },
    "NoPendingRecoveries": {
      "Message": "[DeathGuard] No pending recoveries found.",
      "TextColor": "Turquoise"
    },
    "DeathNotFound": {
      "Message": "[DeathGuard] Death not found. Use /dgbodies to see your deaths.",
      "TextColor": "Turquoise"
    },
    "InvalidDeathId": {
      "Message": "[DeathGuard] Invalid death ID. Use /dgbodies to see your deaths.",
      "TextColor": "Turquoise"
    },
    "RecoverUsage": {
      "Message": "[DeathGuard] Usage: /dgrecover <death_id>",
      "TextColor": "Turquoise"
    },
    "NotYourDeath": {
      "Message": "[DeathGuard] This death does not belong to you.",
      "TextColor": "Turquoise"
    },
    "AlreadyRecovered": {
      "Message": "[DeathGuard] This death has already been recovered.",
      "TextColor": "Turquoise"
    },
    "SelfRetrieved": {
      "Message": "[DeathGuard] You already retrieved {Count} items from this death. Recovery blocked.",
      "TextColor": "Turquoise"
    },
    "ThirdPartyLooted": {
      "Message": "[DeathGuard] Another player already took items from your death bag. Recovery is not available.",
      "TextColor": "Turquoise",
      "DisplayTime": 6.0
    },
    "WrongServer": { //{Map} = server where death occurred
      "Message": "[DeathGuard] This death happened on a different server ({Map}). You can only recover it there.",
      "TextColor": "Turquoise",
      "DisplayTime": 6.0
    },

    "RecoverySuccess": { //{Items} = number of items recovered
      "Message": "[DeathGuard] Recovered {Items} items!",
      "TextColor": "Turquoise",
      "Scale": 1.3
    },
    "RecoverySuccessWithId": {
      "Message": "[DeathGuard] Recovered {Items} items from death #{DeathId}!",
      "TextColor": "Turquoise",
      "Scale": 1.3
    },
    "RecoveryPartial": {
      "Message": "[DeathGuard] {Count} items could not be restored.",
      "TextColor": "Turquoise"
    },
    "InventoryRecovered": {
      "Message": "[DeathGuard] Your inventory has been recovered!",
      "TextColor": "Turquoise",
      "Scale": 1.3
    },

    "AutoRecoverySuccess": {
      "Message": "[DeathGuard] Auto-recovered {Items} items from your last death!",
      "TextColor": "Turquoise",
      "Scale": 1.3
    },
    "AutoRecoveryWorldBorderSuccess": { //Scale/Position/DisplayTime not supported
      "Message": "[DeathGuard] Auto-recovered {Items} items from world border death!",
      "TextColor": "Green"
    },
    "AutoRecoveryInsufficientFunds": {
      "Message": "[DeathGuard] Auto-recovery failed: Not enough {Currency} (need {Cost}, have {Balance}).",
      "TextColor": "Turquoise",
      "DisplayTime": 6.0
    },
    "AutoRecoveryPaymentFailed": {
      "Message": "[DeathGuard] Auto-recovery: Payment failed.",
      "TextColor": "Turquoise"
    },

    "AlreadyOptedIn": {
      "Message": "[DeathGuard] You are already opted in for auto recovery.",
      "TextColor": "Turquoise"
    },
    "AlreadyOptedOut": {
      "Message": "[DeathGuard] You are already opted out.",
      "TextColor": "Turquoise"
    },
    "OptInSuccess": {
      "Message": "[DeathGuard] You are now opted in for automatic death recovery!",
      "TextColor": "Turquoise",
      "Scale": 1.3
    },
    "OptOutSuccess": {
      "Message": "[DeathGuard] You are now opted out from automatic death recovery.",
      "TextColor": "Turquoise"
    },

    "PendingRecoverySingular": {
      "Message": "[DeathGuard] You have a pending inventory recovery. Type /recover to claim.",
      "TextColor": "Turquoise",
      "DisplayTime": 6.0
    },
    "PendingRecoveryPlural": {
      "Message": "[DeathGuard] You have {Count} pending inventory recoveries. Type /recover to claim.",
      "TextColor": "Turquoise",
      "DisplayTime": 6.0
    },
    "MorePendingRecoveries": {
      "Message": "[DeathGuard] You have {Count} more pending recovery(s). Type /recover again.",
      "TextColor": "Turquoise"
    },

    "AdminApprovedRecovery": {
      "Message": "[DeathGuard] An admin approved your inventory recovery. Type /recover to claim.",
      "TextColor": "Turquoise",
      "DisplayTime": 6.0
    },
    "AdminDeliveredRecovery": { //{Items} = number delivered
      "Message": "[DeathGuard] An admin recovered {Items} items directly to your inventory!",
      "TextColor": "Green",
      "Scale": 1.3,
      "DisplayTime": 8.0
    },
    "AdminApprovedWrongServer": { //{Map} = server where death occurred
      "Message": "[DeathGuard] An admin approved your recovery, but you died on {Map}. Go there and type /recover.",
      "TextColor": "Gold",
      "DisplayTime": 8.0
    },

    "DeathListHeader": { //{Count} = total deaths
      "Message": "[DeathGuard] Your deaths ({Count}):",
      "TextColor": "Turquoise",
      "DisplayTime": 8.0
    },
    "DeathListItem": { //{Id}, {Items}, {TimeAgo}
      "Message": "  #{Id}: {Items} items - {TimeAgo}",
      "TextColor": "Turquoise",
      "Scale": 1.1,
      "DisplayTime": 8.0
    },
    "DeathListFooterFree": {
      "Message": "Type /dgrecover <ID> to claim (FREE)",
      "TextColor": "Turquoise",
      "DisplayTime": 8.0
    },
    "DeathListFooterFreeGroup": {
      "Message": "Type /dgrecover <ID> to claim (FREE - {Group})",
      "TextColor": "Turquoise",
      "DisplayTime": 8.0
    },
    "DeathListFooterCost": { //{Cost}, {Currency}
      "Message": "Type /dgrecover <ID> to claim (costs {Cost} {Currency})",
      "TextColor": "Turquoise",
      "DisplayTime": 8.0
    },
    "PendingListHeader": {
      "Message": "[DeathGuard] Pending recoveries ({Count}):",
      "TextColor": "Turquoise",
      "DisplayTime": 8.0
    },
    "PendingListItem": {
      "Message": "  #{Index}: {Items} items - died {TimeAgo}",
      "TextColor": "Turquoise",
      "Scale": 1.1,
      "DisplayTime": 8.0
    },
    "PendingListFooter": {
      "Message": "Type /recover to claim the most recent one.",
      "TextColor": "Turquoise"
    }
  }
}
Author
Fonzie
Views
4,592
First release
Last update

Ratings

5.00 star(s) 3 ratings

Latest updates

  1. release notes

    DeathGuard — Release Notes v2.03 → v2.14 DeathGuard v2.14 Fixed a server crash when a tamed...

Latest reviews

This plugin is a must-have for server owners who value their time and that of their players. You won't find anything better on the market.
A great plugin that saves you a lot of time.
Great support, too.
An essential plugin for understanding the reasons for player and dinosaur deaths, allowing you to recover them when needed. The developer is very responsive, dedicated, and professional.

I highly recommend this plugin for peace of mind.
Back
Top