// ******************************
// Heartbeat  V4.0 Beta
//      for Valve Source Games.
// * Description:
//      Can hear wounded players heartbeats.
// * Install instructions:
//       http://forums.mattie.info/cs/forums/viewtopic.php?p=58954
// * Credits:
//       Concept By: Murpher Written By: Venjax
//       Edited Sounds by: Ace Rimmer - Thanks Bud!
//       ENV_Blood code stolen from Einlazers - Thanks man!
//       Special Thanks: MBchrono, Mattie!, Whore, & ljfsp
// * Requirements:
//      EventScripts v1.2.1 or higher
// ******************************

block config
{
  es_xsetinfo hbemit 0            // Set to 1 to hear others heartbeats. 0 to hear only your own.
  es_xsetinfo slowhealth 60       // Set this variable for first beat
  es_xsetinfo fasthealth 30       // Set this variable for second beat
  es_xsetinfo hb_bleed 1          // Set to 1 to bleed during the fast heartbeat.
  es_xsetinfo hb_bleedout 1    // Set this to amount of damage to lose after player starts to bleed.
}

// DO NOT EDIT BELOW THIS LINE DOING SO WILL VOID WARRANTY AND TECHNICAL SUPPORT. Smile

block load
{
  es_xsetinfo mygame 0
  es_getgame mygame
  es_xsetinfo gmeinfo "CCSPlayer.baseclass.m_iHealth"
  if ("Defeat" in server_var(mygame)) then es_xsetinfo gmeinfo "CDODPlayer.baseclass.m_iHealth"
  if ("Deathmatch" in server_var(mygame)) then es_xsetinfo gmeinfo "CHL2MP_Player.baseclass.baseclass.m_iHealth"
  es_xsetinfo myhealth 0
  es_xsetinfo togvar 0
  es_xsetinfo togvar2 0
  es_xsetinfo stmid 0
  es_xsetinfo ven_hb_ver "v4.0"
  es_xmakepublic ven_hb_ver
  es_xsetinfo hbexists 0
  es_xsetinfo hb_shadox 0
  es_xexists hbexists keygroup hbtoggle
  if (server_var(hbexists) equalto 1) then es_xkeygroupdelete hbtoggle
  es_xkeygroupload hbtoggle |heartbeat
  es_xexists hbexists keygroup hbeaters
  if (server_var(hbexists) equalto 1) then es_xkeygroupdelete hbeaters
  es_xkeygroupcreate hbeaters
  es_xloadevents addons/mattie_eventscripts.res
  es_xdoblock heartbeat/config
  if (server_var(hb_bleed) equalto 1) do
  {
    es_regcmd _hb_dobleed heartbeat/dobleed "internal command to add blood to heartbeat"
  }
  else do
  {
    es_regcmd _hb_dobleed heartbeat/nobleed "internal command for no blood"
  }
}

event es_map_start
{
  downloadable sound/hb/fastbeat.mp3
  downloadable sound/hb/slowbeat.mp3
  es_xdelayed 10 es_xdoblock heartbeat/beatstart
  es_xkeygroupdelete hbtoggle
  es_xkeygroupload hbtoggle |heartbeat
}

event round_start
{
  es_xforeachkey hb_users in hbeaters "es_xdoblock heartbeat/shadox"
}

event player_spawn
{
  es es_xexists hbexists key hbeaters event_var(userid)
  if (server_var(hbexists) equalto 0) do
  {
    es es_xexists togvar2 key hbtoggle event_var(es_steamid)
    if (server_var(togvar2) equalto 0) do
    {
      es es_xkeycreate hbeaters event_var(userid)
      es es_xkeysetvalue hbeaters event_var(userid) hb 1
    }
  }
}

event player_death
{
  es es_xexists hbexists key hbeaters event_var(userid)
  if (server_var(hbexists) equalto 1) then es_xkeydelete hbeaters event_var(userid)
}

event player_disconnect
{
  es es_xexists hbexists key hbeaters event_var(userid)
  if (server_var(hbexists) equalto 1) then es_xkeydelete hbeaters event_var(userid)
}

block beatstart
{
  es_xforeachkey hb_users in hbeaters "es_xdoblock heartbeat/beat"
  es_xdelayed 1.1 es_xdoblock heartbeat/beatstart
}

block beat
{
  es es_xgetplayerprop myhealth server_var(hb_users) server_var(gmeinfo)
  if (server_var(myhealth) <= server_var(slowhealth)) do
  {
    if (server_var(myhealth) > server_var(fasthealth)) do
    {
      if (server_var(hbemit) equalto 1) do
      {
        es_emitsound player server_var(hb_users) hb/slowbeat.mp3 1.0 1.0
      }
      else do
      {
        es es_xcexec server_var(hb_users) playgamesound hb/slowbeat.mp3
      }
    }
    else do
    {
      if (server_var(myhealth) > 1) do
      {
        if (server_var(hbemit) equalto 1) do
        {
          es_emitsound player server_var(hb_users) hb/fastbeat.mp3 1.0 1.0
          _hb_dobleed
        }
        else do
        {
          es es_xcexec server_var(hb_users) playgamesound hb/fastbeat.mp3
          _hb_dobleed
        }
      }
    }
  }
}

event player_say
{
  if (event_var(text) equalto "!heartbeat") do
  {
    es es_xexists togvar key hbtoggle event_var(es_steamid)
    if (server_var(togvar) equalto 0) do
    {
      es es_xtell event_var(userid) [Heartbeat] Вы не будете слышать свое сердцебиение.
      if (server_var(hbemit) notequalto 0) do
      {
        es es_xtell event_var(userid) [Heartbeat] Вы будете слышать сердцебиение других.
      }
      es es_xkeycreate hbtoggle event_var(es_steamid)
      es es_xkeysetvalue hbtoggle event_var(es_steamid) nobeat 1
      es es_xexists hbexists key hbeaters event_var(userid)
      if (server_var(hbexists) equalto 1) then es_xkeydelete hbeaters event_var(userid)
    }
    else do
    {
      es es_xtell event_var(userid) [Heartbeat] Вы теперь будете слышать свое собственное сердцебиение.
      es es_xkeydelete hbtoggle event_var(es_steamid)
      es es_xkeycreate hbeaters event_var(userid)
      es es_xkeysetvalue hbeaters event_var(userid) hb 1     
    }
    es_xkeygroupsave hbtoggle |heartbeat
  }
}

event unload
{
  es_xkeygroupsave hbtoggle |heartbeat
  es_xkeygroupdelete hbtoggle
  es_xkeygroupdelete hbeaters
}

block dobleed
{
  es es_xfire server_var(hb_users) env_blood kill
  es es_xgive server_var(hb_users) env_blood
  es es_xfire server_var(hb_users) env_blood addoutput "spawnflags 13"
  es es_xfire server_var(hb_users) env_blood addoutput "amount 10000"
  es es_xfire server_var(hb_users) env_blood EmitBlood
  if (server_var(hb_bleedout) greaterthan 0) do
  {
    es es_xmath myhealth - server_var(hb_bleedout)
    es es_xsetplayerprop server_var(hb_users) server_var(gmeinfo) server_var(myhealth)
  }
}

block nobleed
{
  //Nothing here!
}

block shadox
{
  es es_xgetuserid hb_shadox server_var(hb_users)
  if (server_var(hb_shadox) equalto 0) then es_xkeydelete hbeaters server_var(hb_users)
}
