;;
;;  The effects are enabled by default but they can be disabled on 
;;   the client by setting the client variable "cl_enableefx 0"
;;
;;  There is a client variable "cl_reloadefx" which you can use to 
;;   reload the efx scripts without exiting the game. 
;;
;;  When making new efx scripts bind the command "cl_reloadefx 1" 
;;   to a key and run Vampire-Slayer in a window. You can then make
;;   changes to your efx script in your favourite editor and see
;;   the results instantly in the game with a single key press.
;;
;; NB: There is a bug in the efx file parser which means you
;;      must leave a space or ',' between each keyword and around 
;;      brackest () and braces {}. This may be fix in the future but 
;;	if you just follow the example scripts you'll be just fine :P
;;
;; So the question you all asking is why should I use these scripts
;;  rather than just putting the efx in using worldcraft. The the good
;;  news is there are a number of reasions.
;; 1) These efx are all processed client side which means less network
;;     traffic and there for less 'lag' than server based effects
;; 2) Save time tweaking effects, because the effect is defined in a
;;     seperate file you DO NOT need to recompile the map to change an 
;;     effect
;; 3) The script allows for greater variation of effects at run time 
;;     by allowing ranges to be used as parameters. This is a subtle 
;;     yet powerfull feature. A smoke effect done in worldcraft would 
;;     have all the smoke particles the same size and moving in the same 
;;     direction at the same speed. Using the effects script each smoke
;;     particle could have a unique size, direction and speed, giving
;;     much more natural effects.
;;
;;
;; The commands
;;
;; Precache - All sprites, models and sounds must be listed
;;             in the precache section otherwise they will
;;             not appear in the efx
;;
;; Script <name> - Defines a new script called <name>. This
;;                  is the what you set as the "Efx Script"
;;                  parameter in a "env_efx" entity.
;;
;; Efx parameter types
;; num         - number
;;    3142              fixed integer value
;;    3.142             fixed floating point value
;;    rv( 0,3.142 )     random value between 0 and 3.142
;;
;; vec         - vector
;;    { 0,0,0 }
;;    { 0,0,rv( 0,1 ) }
;;    { rv( 0,1 ),rv( 0,1 ),rv( 0,1 ) }
;;
;; col         - colour
;;    { 255,255,255 }
;;    { 255,255,rv( 0,255 ) }
;;    { rv( 0,255 ),rv( 0,255 ),rv( 0,255 ) }
;;
;; str        - a text string
;;    shortstring
;;    "long string with spaces"
;;    
;; <rendermode> - must be one of the following enumeration
;;    Normal            src
;;    TransColor        c*a+dest*(1-a)
;;    TransTexture      src*a+dest*(1-a)
;;    Glow              src*a+dest -- No Z buffer checks
;;    TransAlpha        src*srca+dest*(1-srca)
;;    TransAdd          src*a+dest
;;
;; <renderfx>   - must be one of the following enumeration
;;    None          
;;    PulseSlow     
;;    PulseFast     
;;    PulseSlowWide 
;;    PulseFastWide 
;;    FadeSlow      
;;    FadeFast      
;;    SolidSlow     
;;    SolidFast     
;;    StrobeSlow    
;;    StrobeFast    
;;    StrobeFaster  
;;    FlickerSlow   
;;    FlickerFast   
;;    NoDissipation 
;;    Distort       
;;    Hologram,     
;;    DeadPlayer    
;;    Explode       
;;    GlowShell     
;;    ClampMinScale 
;;
;; <ftent>	- entity flags
;;    FTENT_NONE
;;    FTENT_SINEWAVE
;;    FTENT_GRAVITY
;;    FTENT_ROTATE
;;    FTENT_SLOWGRAVITY
;;    FTENT_SMOKETRAIL
;;    FTENT_COLLIDEWORLD
;;    FTENT_FLICKER
;;    FTENT_FADEOUT
;;    FTENT_SPRANIMATE
;;    FTENT_HITSOUND
;;    FTENT_SPIRAL
;;    FTENT_SPRCYCLE
;;    FTENT_COLLIDEALL
;;    FTENT_PERSIST
;;    FTENT_COLLIDEKILL
;;    FTENT_PLYRATTACHMENT
;;    FTENT_SPRANIMATELOOP
;;    FTENT_SPARKSHOWER
;;    FTENT_NOMODEL
;;    FTENT_CLIENTCUSTOM
;;
;;
;; Efx functions, there's too many to comment but there's 
;;  loads of examples so go and experiment
;;
;; BlobExplosion { rate = num }
;; Blood { rate = num, dir = vec, colour = col, speed = num }
;; BloodStream { rate = num, dir = vec, colour = col, speed = num }
;; BreakModel { rate = num, dir = vec, random = num, life = num, count = num, model = str, flags = <ftent> }
;; Bubbles { rate = num, heigt = num, speed = num, model = str, count = num }
;; Bubbletrail { rate = num, heigt = num, speed = num, model = str, count = num }
;; BulletImpactParticles { rate = num }
;; Explosion { rate = num, scale = num, framerate = num, model = str, flags = <ftent> }
;; FireField { rate = num, radius = num, model = str, count = num, flags = <ftent> }
;; FlickerParticles { rate = num }
;; FunnelSprite { rate = num, model = str, reverse = num }
;; Implosion { rate = num, radius = num, life = num, count = num }
;; LargeFunnel { rate = num, reverse = num }
;; LavaSplash { rate = num }
;; ParticleBox { rate = num, r = num, g = num, b = num, life = num }
;; ParticleBurst { rate = num, color = col, life = num }
;; ParticleExplosion { rate = num, colorstart = col, colorlength = num }
;; RocketFlare { rate = num }
;; ParticleEffect { rate = vec, color = col, count = num }
;; Spark { rate = num, count = num, velocityMin = num, velocityMax = num }
;; SparkShower { rate = num }
;; SparkStreaks { rate = num, count = num, velocityMin = num, velocityMax = num }
;; TempModel { rate = num, dir = vec, angles = vec, life = num, model = str, soundtype = num }
;; TempSprite { rate = num, dir = vec, scale = num, model = str, rendermode = <rendermode>, renderfx = <renderfx>, a = num, life = num, flags = <ftent> }
;;
;; Fog { color = col, start = num, end = num, intime = num } 
;;
;;


Precache {
;; Sprites
;;  model = sprites/blood.spr
;;  model = sprites/blooddrop.spr
;;  model = sprites/bloodspray.spr
;;  model = sprites/bubble.spr
;;  model = sprites/stmbal1.spr
;;  model = sprites/laserdot.spr
;;  model = sprites/explode1.spr

  model = sprites/smoke.spr
  model = sprites/flake.spr
  model = sprites/fire.spr
  
;; Models
;;  model = models/w_weaponbox.mdl

;; Sounds
  
}

;Script Fog1 {
;  Fog {
;    color = { 122,192,193 }
;    start = 500
;    end = 4000
;    fade = 5
;  }
;}

;Script Fog2 {
;  Fog {
;    color = { 225,168,221 }
;    start = 500
;    end = 1500
;    fade = 5
;  }
;}

Script test1 {
  BlobExplosion { 
    rate = 5
  }
}

Script test2 {
  Blood { 
    rate = 5
    dir = { 0,0,0 }
    colour = { 255,255,255 }
    speed = 80
  }
  BloodStream { 
    rate = 5
    dir = { 500,0,100 }
    colour = { 255,255,255 }
    speed = 100
  }
}

Script test3 {
;  BreakModel {
;    rate = 5
;    dir = { 0,0,100 }
;    random = 100
;    life = 3
;    count = 10
;    model = models/w_weaponbox.mdl
;  }

  TempSprite {
    rate = 0.1
    dir = { 0,0,1 }
    scale = 1.0
    model = sprites/stmbal1.spr
//    model = sprites/smoke.spr
//    model = sprites/flake.spr
    rendermode = TransAdd
    renderfx = NoDissipation
    a = 10
    life = 0
    FTENT_SPRANIMATE 
    ;flags = FTENT_SPRANIMATELOOP
    ;flags = FTENT_SMOKETRAIL 
    ;flags = FTENT_SPARKSHOWER
    ;flags = FTENT_SLOWGRAVITY FTENT_COLLIDEKILL
    ;;flags = FTENT_COLLIDEKILL
  }

}

Script test4 {
  Bubbles { 
    rate = 5
    height = 200
    speed = 10
    model = sprites/bubble.spr
    count = 3
  }

;;  BubbleTrail { 
;;    rate = 5
;;    height = 200
;;    speed = -10 
;;    model = sprites/bubble.spr
;;    count = 20
;;  }
}

Script test5 {
  BulletImpactParticles { 
    rate = 1
  }
}

Script test6 {
  Explosion { 
    rate = 30
    scale = 1.5
    framerate = 30
    model = sprites/explode1.spr
;    flags = <ftent> 
  }
}

Script test7 {
  FireField { 
    rate = 10
    radius = 50
    model = sprites/explode1.spr
    count = 20 
;    flags = <ftent> 
  }
}

Script test8 {
  FlickerParticles { 
    rate = 0.1
  }
}

Script test9 {
  FunnelSprite { 
    rate = 0.01
    model = sprites/laserdot.spr
    reverse = 0
  }
}

Script test10 {
  Implosion { 
    rate = 5, 
    radius = 50, 
    life = 2, 
    count = 100
  }
}

Script test11 {
  LavaSplash { 
    rate = 5
  }
}

Script test12 {
  Spark {
    rate = 0.1
    count = 50
    velocityMin = 1
    velocityMax = 10
  }
}

Script test13 {
  SparkShower { 
    rate = 0.2
  }
}

Script test14 {
  SparkStreaks {
    rate = 0.01
    count = 50
    velocityMin = 1
    velocityMax = 10
  }
}

Script test15 {
  TempModel {
    rate = 5
    dir = { 0,0,100 }
    life = 3
    model = models/w_weaponbox.mdl
  }
}

Script test16 {
  TempSprite {
    rate = 0.02
    dir = { 0,0,-70.0 }
    scale = 0.1
    model = sprites/stmbal1.spr
;;    model = sprites/bubble.spr
    rendermode = TransAdd
;;    rendermode = TransAlpha
    renderfx = NoDissipation
    a = 1
    life = 3
    ;;flags = FTENT_SPARKSHOWER
    flags = FTENT_SLOWGRAVITY FTENT_COLLIDEKILL
    ;;flags = FTENT_COLLIDEKILL
  }
}

