block config
{
  // The sprite model
  lt_model "materials/sprites/laser.vmt"
  
  // The time the effect is shown
  lt_duration 2.0
}


block load
{
  es_xset lt_model 0 "Tracer sprite model"
  es_xset lt_duration 0 "Tracer duration"
  
  es_xset _lt_modelindex 0
  es_xset _lt_lastshot 0
  es_xset _lt_lastred 0
  es_xset _lt_lastblue 0
  es_xset _lt_iscrouch 0
  es_xset _lt_target 0
  es_xset _lt_x 0
  es_xset _lt_y 0
  es_xset _lt_z 0
  
  es_xset _lt_auth 0
  
  es_xdoblock 15tracers/config
  es_xdoblock corelib/noisy_on
  ifx true(eventscripts_currentmap) do
  {
    es_xdoblock 15tracers/es_map_start
  }
  es :auth registerCapability "15tracers_beam" server_var(AUTHSERVICE_ALL)
}

block unload
{
  es_xdoblock corelib/noisy_off
}

event es_map_start
{
  es_precachemodel _lt_modelindex server_var(lt_model)
}

event weapon_fire
{
  es :auth isUseridAuthorized _lt_auth event_var(userid) "15tracers_beam"
  ifx true(_lt_auth) do
  {
    es_getplayerlocation _lt_x _lt_y _lt_z event_var(userid)
    if (event_var(es_userteam) == 2) do
    {
      es_xset _lt_lastred 255
      es_xset _lt_lastblue 64
    }
    else do
    {
      es_xset _lt_lastred 64
      es_xset _lt_lastblue 255
    }
    es_getplayerprop _lt_iscrouch event_var(userid) CBasePlayer.m_fFlags
    ifx parse("_lt_iscrouch and 2") do
    {
      es_xmath _lt_z + 44
    }
    else do
    {
      es_xmath _lt_z + 64
    }
    es_createvectorstring _lt_lastshot server_var(_lt_x) server_var(_lt_y) server_var(_lt_z)
  }
}

event bullet_impact
{
  ifx true(_lt_auth) do
  {
    es_createvectorstring _lt_target event_var(x) event_var(y) event_var(z)
    es_effect beam server_var(_lt_lastshot) server_var(_lt_target) server_var(_lt_modelindex) server_var(_lt_modelindex) 0 0 server_var(lt_duration) 5 5 10 0 server_var(_lt_lastred) 0 server_var(_lt_lastblue) 200 0
  }
}
