//             /NNNNNNNNNms+
//      `-//:.:MMMMMMMMMMMMy               _   _          _____  ______
//    :so:.`.oMMMMMMMMMMMN-               | \ | |   /\   |  __ \|  ____|
//   oo     +mMMMMMMMMMMMM                |  \| |  /  \  | |  | | |__
//  .m     sdyyyhMmMMMMMMM-               | . ` | / /\ \ | |  | |  __|
//  `m`   oh    /hmMMMMMMMd               | |\  |/ ____ \| |__| | |____
//   :h. :N`   /h+MMMMMMMMM/              |_| \_/_/    \_\_____/|______|
//    `oyNd/+os/+MMMMMMMMMMM+
//      om..`  -sssssssssssss:
//     `N/  :dd`dNNNNy hNNNNy`mm:
//     /M` /MM-sMMMMMy dMMMMM//MM/
//     sd  mMy mMMMMMs yMMMMMh dMN
//     yh -oo`.+ooooo- :ooooo+`.oo-
//     yy dMM.oMMMMMMs yMMMMMM::MMd
//     ss NMM sMMMMMMs yMMMMMM+.MMN
//     oy /o/ -oooooo- -ooooo+. +o/
//     :h mMN sMMMMMMs yMMMMMM+.MMm        _________________ _____ _____ _____ _____
//     `m hMM.oMMMMMMs hMMMMMM/:MMh        |  ___|  ___|  ___|  ___/  __ \_   _/  ___|
//      d./mm--mmmmmmo smmmmmm./mm/        | |__ | |_  | |_  | |__ | /  \/ | | \ `--.
//      +/ +s: osssss/ +sssss+ +s+         |  __||  _| |  _| |  __|| |     | |  `--. \
//         +Mm hMMMMMh mMMMMMs`MM+         | |___| |   | |   | |___| \__/\ | | /\__/ /
//          hM//MMMMMh mMMMMM-oMh          \____/\_|   \_|   \____/ \____/ \_/ \____/
//           -: :oooo: /oooo-`/-
//            sy-MMMMm MMMMN.ds
//             ` +MMMd NMMN:`.
//
//
// By LosNir, nfx v1.0
// http://www.losnir.net
//
//  _______  _______  _        _______ _________ _______
// (  ____ \(  ___  )( (    /|(  ____ \\__   __/(  ____ \
// | (    \/| (   ) ||  \  ( || (    \/   ) (   | (    \/
// | |      | |   | ||   \ | || (__       | |   | |
// | |      | |   | || (\ \) ||  __)      | |   | | ____
// | |      | |   | || | \   || (         | |   | | \_  )
// | (____/\| (___) || )  \  || )      ___) (___| (___) |
// (_______/(_______)|/    )_)|/       \_______/(_______)

block config
{
   // Enable or Disable at startup (1 = enabled, 0 = disabled)
   es_xset nfx_Enabled 1

   // Admin's steam-id is here. Separate with a comma (,)
   es_xset nfx_Admins "STEAM_0:1:14764536"

   // Main (Base) Command
   es_xset nfx_MainCommand "!nfx"

   // ############ EFFECTS LEVEL ############
   // HIGHER VALUE MEANS BIGGER EFFECT

   // Bump: Small Purple Light Flash
   es_xset nfx_fx_splf 5

   // Bump: White Light Flash
   es_xset nfx_fx_wlf 1

   // Bump: Bouncy Sparks
   es_xset nfx_fx_bs 20

   // Bump: Impact + Sound (Higher value may disturb)
   es_xset nfx_fx_is 2

   // #############################################
   // NOTE!
   // NOTE! Extra Fire Explosion must be higher then Water Explosion
   //       In order to achieve REALISTIC Water combined Explosion.
   // #############################################

   // Explosion: Extra Fire Explosion
   es_xset nfx_fx_efe 25

   // Bump: Water Explosion
   es_xset nfx_fx_we 20
}

// ######################################################
// DO NOT EDIT BELOW THIS LINE

// ######################################################
// # LOAD / UNLOAD
// ######################################################
block load
{
   es_xload corelib

   es_xset nadeEffects "v1.0 STABLE"
   es_xdoblock nadeEffects/config
   es_xmakepublic nadeEffects

   es_msg #multi #lightgreen[#greenLoaded#lightgreen]#lightgreen nadeEffects#default server_var(nadeEffects) by#green LosNir
}
block unload
{
   es_msg #multi #lightgreen[#greenUnloaded#lightgreen]#lightgreen nadeEffects#default server_var(nadeEffects) by#green LosNir
}

// ######################################################
// # MAIN COMMAND
// ######################################################
event player_say
{
   // Command
   es_xset nfx_Command 0
   es_token nfx_Command event_var(text) 1

   if(server_var(nfx_Command) == server_var(nfx_MainCommand)) do
   {
      // Argument 1
      es_xset nfx_Arg1 0
      es_token nfx_Arg1 event_var(text) 2

      // Argument 2
      es_xset nfx_Arg2 0
      es_token nfx_Arg2 event_var(text) 3

      if(event_var(es_steamid) in server_var(nfx_Admins)) do
      {
         if(server_var(nfx_Arg1) == "Enable") then es_doblock nadeEffects/nfxEnable
         if(server_var(nfx_Arg1) == "Disable") then es_doblock nadeEffects/nfxDisable

         if(server_var(nfx_Arg1) == "splf") then es_set nfx_fx_splf server_var(nfx_Arg2)
         if(server_var(nfx_Arg1) == "wlf") then es_set nfx_fx_wlf server_var(nfx_Arg2)
         if(server_var(nfx_Arg1) == "bs") then es_set nfx_fx_bs server_var(nfx_Arg2)
         if(server_var(nfx_Arg1) == "is") then es_set nfx_fx_is server_var(nfx_Arg2)

         if(server_var(nfx_Arg1) == "efe") then es_set nfx_fx_efe server_var(nfx_Arg2)
         if(server_var(nfx_Arg1) == "we") then es_set nfx_fx_we server_var(nfx_Arg2)
      }
      if(server_var(nfx_Arg1) == 0) then es_msg #multi #lightgreen[#greenInfo#lightgreen]#lightgreen nadeEffects#default server_var(nadeEffects) by#green LosNir
      if(server_var(nfx_Arg1) == "showConfig") then es_msg #multi #lightgreen[#greennadeEffects#lightgreen]#default SPLF:#lightgreen server_var(nfx_fx_splf)#default WLF:#lightgreen server_var(nfx_fx_wlf)#default BS:#lightgreen server_var(nfx_fx_bs)#default IS:#lightgreen server_var(nfx_fx_is)#default / EFE:#lightgreen server_var(nfx_fx_efe)#default WE:#lightgreen server_var(nfx_fx_we)#default -> Enabled: #green server_var(nfx_Enabled)
   }
}

// ######################################################
// # ENABLE / DISABLE
// ######################################################
block nfxEnable
{
   es_xset nfx_Enabled 1
   es_msg #multi #lightgreen[#greenEnabled#lightgreen]#lightgreen nadeEffects#default server_var(nadeEffects) by#green LosNir
}
block nfxDisable
{
   es_xset nfx_Enabled 0
   es_msg #multi #lightgreen[#greenDisabled#lightgreen]#lightgreen nadeEffects#default server_var(nadeEffects) by#green LosNir
}

// ######################################################
// # CORE
// ######################################################
event grenade_bounce
{
   if(server_var(nfx_Enabled) == 1) do
   {
      es_xset fxSPLFc 0
      es_xset fxWLFc 0
      es_xset fxBSc 0
      es_xset fxISc 0

      es_xset fxSPLFdone 0
      es_xset fxWLFdone 0
      es_xset fxBSdone 0
      es_xset fxISdone 0

      es_xset i 0
      while "server_var(i) < 4" "es_xdoblock nadeEffects/doBounce"
   }
}

event hegrenade_detonate
{
   if(server_var(nfx_Enabled) == 1) do
   {
      es_xset fxEFEc 0
      es_xset fxWEc 0

      es_xset fxEFEdone 0
      es_xset fxWEdone 0

      es_xset i 0
      while "server_var(i) < 2" "es_xdoblock nadeEffects/doExplosion"
   }
}

// ######################################################
// # EFFECTS
// ######################################################

block doBounce
{
   if(server_var(nfx_fx_splf) > server_var(fxSPLFc)) do
   {
      es_fire event_var(userid) hegrenade_projectile DispatchEffect GunshipImpact
      es_xmath fxSPLFc + 1
   }
   else do
   {
      if(server_var(fxSPLFdone) == 0) then es_xmath i + 1
      es_xset fxSPLFdone 1
   }

   // ###########

   if(server_var(nfx_fx_wlf) > server_var(fxWLFc)) do
   {
      es_fire event_var(userid) hegrenade_projectile DispatchEffect RPGShotDown
      es_xmath fxWLFc + 1
   }
   else do
   {
      if(server_var(fxWLFdone) == 0) then es_xmath i + 1
      es_xset fxWLFdone 1
   }

   // ###########

   if(server_var(nfx_fx_bs) > server_var(fxBSc)) do
   {
      es_fire event_var(userid) hegrenade_projectile DispatchEffect ManhackSparks
      es_xmath fxBSc + 1
   }
   else do
   {
      if(server_var(fxBSdone) == 0) then es_xmath i + 1
      es_xset fxBSdone 1
   }

   // ###########

   if(server_var(nfx_fx_is) > server_var(fxISc)) do
   {
      es_fire event_var(userid) hegrenade_projectile DispatchEffect impact
      es_xmath fxISc + 1
   }
   else do
   {
      if(server_var(fxISdone) == 0) then es_xmath i + 1
      es_xset fxISdone 1
   }
}

block doExplosion
{
   if(server_var(nfx_fx_efe) > server_var(fxEFEc)) do
   {
      es_fire event_var(userid) hegrenade_projectile DispatchEffect Explosion
      es_xmath fxEFEc + 1
   }
   else do
   {
      if(server_var(fxEFEdone) == 0) then es_xmath i + 1
      es_xset fxEFEdone 1
   }

   // ###########

   if(server_var(nfx_fx_we) > server_var(fxWEc)) do
   {
      es_fire event_var(userid) hegrenade_projectile DispatchEffect WaterSurfaceExplosion
      es_xmath fxWEc + 1
   }
   else do
   {
      if(server_var(fxWEdone) == 0) then es_xmath i + 1
      es_xset fxWEdone 1
   }
}