block load
{
  // Declare variables
  es_xset rd_format 0
  es_xset rd_wait 0
  es_xset rd_random 0
  es_xset rd_handle 0
  es_xset rd_phandle 0
  es_xset rd_ragdoll 0
  // Config variables
  es_xset rd_death_wait "0.01" "How long to wait after player is killed to dissolve the body"
  es_xset rd_dissolvetype "1" "1 = Effect seen in HL2 (default) -- 2 = Body fades black then electricity zaps it away -- 3 = Random"
  // Make public
  es_xsetinfo rd_version "1.0.2"
  es_xmakepublic rd_version
  // Execute config
  exec dissolver.cfg
  // Announce load
  echo [Dissolver] Loaded
}

block unload
{
  // Announce unload
  echo [Dissolver] Unloaded
}

event player_death
{
  es_delayed server_var(rd_death_wait) es_xset rd_userid event_var(userid)
  es_delayed server_var(rd_death_wait) es_xdoblock dissolver/disintegrate
}

block disintegrate
{
  // Spawn the disintegrator
  es_give server_var(rd_userid) env_entity_dissolver
 
  // Set the entities keyvalues
  es_fire server_var(rd_userid) env_entity_dissolver AddOutput "target cs_ragdoll"
  es_fire server_var(rd_userid) env_entity_dissolver AddOutput "magnitude 1"
  
  // Pick a dissolve type
  if (server_var(rd_dissolvetype) = 1) do
  {
    es_fire server_var(rd_userid) env_entity_dissolver AddOutput "dissolvetype 3"
  }
  if (server_var(rd_dissolvetype) = 2) do
  {
    es_fire server_var(rd_userid) env_entity_dissolver AddOutput "dissolvetype 1"
  }
  if (server_var(rd_dissolvetype) = 3) do
  {
    es_xrand rd_random 1 2
    if(server_var(rd_random) = 1) do
    {
      es_fire server_var(rd_userid) env_entity_dissolver AddOutput "dissolvetype 3"
    }
    if(server_var(rd_random) = 2) do
    {
      es_fire server_var(rd_userid) env_entity_dissolver AddOutput "dissolvetype 1"
    }
  }
  
  // Dissolve the body
  es_fire server_var(rd_userid) env_entity_dissolver Dissolve
  
  // Kill the dissolver
  es_xcopy rd_wait rd_death_wait
  es_xmath rd_wait + 0.05
  es_delayed server_var(rd_wait) es_xremove env_entity_dissolver
}