summaryrefslogtreecommitdiff
path: root/assets/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'assets/scripts')
-rw-r--r--assets/scripts/core.shader190
-rw-r--r--assets/scripts/cuboid.shader30
-rw-r--r--assets/scripts/g_alienattackfx.particle135
-rw-r--r--assets/scripts/g_alienattackfx.shader145
-rw-r--r--assets/scripts/g_alienblood.particle334
-rw-r--r--assets/scripts/g_alienblood.shader163
-rw-r--r--assets/scripts/g_alienbuildablefx.particle105
-rw-r--r--assets/scripts/g_alienmodelshaders.shader229
-rw-r--r--assets/scripts/g_buildmarker.shader17
-rw-r--r--assets/scripts/g_decals.shader114
-rw-r--r--assets/scripts/g_disconnect.particle25
-rw-r--r--assets/scripts/g_fire.shader459
-rw-r--r--assets/scripts/g_humanblood.particle35
-rw-r--r--assets/scripts/g_humanblood.shader79
-rw-r--r--assets/scripts/g_humanbuildablefx.particle413
-rw-r--r--assets/scripts/g_humanbuildablefx.shader192
-rw-r--r--assets/scripts/g_humanmodelshaders.shader653
-rw-r--r--assets/scripts/g_humanweaponfx.particle907
-rw-r--r--assets/scripts/g_humanweaponfx.shader142
-rw-r--r--assets/scripts/g_humanweaponfx.trail25
-rw-r--r--assets/scripts/g_jetpack.particle95
-rw-r--r--assets/scripts/g_lightning.trail61
-rw-r--r--assets/scripts/g_misc.shader141
-rw-r--r--assets/scripts/g_muzzleflashes.shader101
-rw-r--r--assets/scripts/particles_reference.txt58
-rw-r--r--assets/scripts/ui_crosshairs.shader96
-rw-r--r--assets/scripts/ui_hud.shader38
-rw-r--r--assets/scripts/ui_mainmenu.shader43
-rw-r--r--assets/scripts/water.shader57
29 files changed, 5082 insertions, 0 deletions
diff --git a/assets/scripts/core.shader b/assets/scripts/core.shader
new file mode 100644
index 0000000..e80aa10
--- /dev/null
+++ b/assets/scripts/core.shader
@@ -0,0 +1,190 @@
+// the REGION shader is generated by the map editor on temporary
+// brushes around a selected area for testing parts of maps
+textures/REGION
+{
+ surfaceparm nolightmap
+}
+
+white
+{
+ {
+ map *white
+ blendfunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ rgbgen vertex
+ }
+}
+
+outline
+{
+ cull none
+ nopicmip
+ nomipmaps
+ {
+ map gfx/2d/outline.tga
+ blendfunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ rgbgen vertex
+ }
+}
+
+console
+{
+ nopicmip
+ nomipmaps
+ {
+ map gfx/colors/black.tga
+ }
+}
+
+gfx/misc/detail
+{
+ nopicmip
+ {
+ map gfx/misc/detail.jpg
+ blendFunc GL_DST_COLOR GL_SRC_COLOR
+ rgbgen identity
+ }
+}
+
+// The console font
+gfx/2d/bigchars
+{
+ nopicmip
+ nomipmaps
+ {
+ map gfx/2d/bigchars.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ rgbgen vertex
+ }
+}
+
+gfx/2d/cursor
+{
+ nopicmip
+ nomipmaps
+ {
+ map gfx/2d/cursor.tga
+ }
+}
+
+// projectionShadow is used for cheap squashed model shadows
+projectionShadow
+{
+ polygonOffset
+ deformVertexes projectionShadow
+ {
+ map *white
+ blendFunc GL_ONE GL_ZERO
+ rgbGen wave square 0 0 0 0
+ }
+}
+
+// blinked on top of lagometer when connection is interrupted
+gfx/2d/net
+{
+ nopicmip
+ {
+ map gfx/2d/net.jpg
+ }
+}
+
+//===============================================================
+
+gfx/2d/numbers/zero_32b
+{
+ nopicmip
+ {
+ map gfx/2d/numbers/zero_32b.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ rgbgen vertex
+ }
+}
+gfx/2d/numbers/one_32b
+{
+ nopicmip
+ {
+ map gfx/2d/numbers/one_32b.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ rgbgen vertex
+ }
+}
+gfx/2d/numbers/two_32b
+{
+ nopicmip
+ {
+ map gfx/2d/numbers/two_32b.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ rgbgen vertex
+ }
+}
+gfx/2d/numbers/three_32b
+{
+ nopicmip
+ {
+ map gfx/2d/numbers/three_32b.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ rgbgen vertex
+ }
+}
+gfx/2d/numbers/four_32b
+{
+ nopicmip
+ {
+ map gfx/2d/numbers/four_32b.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ rgbgen vertex
+ }
+}
+gfx/2d/numbers/five_32b
+{
+ nopicmip
+ {
+ map gfx/2d/numbers/five_32b.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ rgbgen vertex
+ }
+}
+gfx/2d/numbers/six_32b
+{
+ nopicmip
+ {
+ map gfx/2d/numbers/six_32b.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ rgbgen vertex
+ }
+}
+gfx/2d/numbers/seven_32b
+{
+ nopicmip
+ {
+ map gfx/2d/numbers/seven_32b.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ rgbgen vertex
+ }
+}
+gfx/2d/numbers/eight_32b
+{
+ nopicmip
+ {
+ map gfx/2d/numbers/eight_32b.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ rgbgen vertex
+ }
+}
+gfx/2d/numbers/nine_32b
+{
+ nopicmip
+ {
+ map gfx/2d/numbers/nine_32b.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ rgbgen vertex
+ }
+}
+gfx/2d/numbers/minus_32b
+{
+ nopicmip
+ {
+ map gfx/2d/numbers/minus_32b.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ rgbgen vertex
+ }
+}
diff --git a/assets/scripts/cuboid.shader b/assets/scripts/cuboid.shader
index e75ef7d..fc5a764 100644
--- a/assets/scripts/cuboid.shader
+++ b/assets/scripts/cuboid.shader
@@ -254,3 +254,33 @@ gfx/cuboid/prebuild_alien
}
}
+gfx/2d/basivision
+{
+ {
+ map gfx/2d/basivision_1.jpg
+ blendFunc GL_ONE_MINUS_DST_COLOR GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+gfx/2d/basivisionBlip
+{
+ {
+ clampmap gfx/2d/basivision_blip.jpg
+ blendFunc add
+ tcMod rotate 26
+ }
+ {
+ clampmap gfx/2d/basivision_blip.jpg
+ blendFunc add
+ tcMod rotate -49
+ }
+}
+
+gfx/2d/basivisionFlare
+{
+ {
+ clampmap gfx/2d/basivision_flare.jpg
+ tcMod stretch sin 1 0.1 0 140
+ blendFunc add
+ }
+}
diff --git a/assets/scripts/g_alienattackfx.particle b/assets/scripts/g_alienattackfx.particle
new file mode 100644
index 0000000..b6e7710
--- /dev/null
+++ b/assets/scripts/g_alienattackfx.particle
@@ -0,0 +1,135 @@
+// Basilisk Gas
+
+models/weapons/level1upg/muzzlePS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gas01 gas02 gas03 gas04 gas05 gas06 gas07 gas08 gas09 gas10 gas11 gas12 gas13 gas14 gas15 gas16
+
+ displacement 0 0 0 0
+
+ parentVelocityFraction 0.5
+
+ velocityType cent
+ velocityDir linear
+ velocityMagnitude 80
+ velocity 0 0 0 ~50
+
+ radius 0 5 35
+ alpha 150 0.5 0
+ rotation 0 ~360 -
+ bounce 0
+
+ lifeTime 1200
+ }
+
+ count 40
+ delay 0
+ period 10 - 0
+ }
+}
+
+poisonCloudedPS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gas01 gas02 gas03 gas04 gas05 gas06 gas07 gas08 gas09 gas10 gas11 gas12 gas13 gas14 gas15 gas16
+
+ displacement 0 0 0 ~6
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 60
+ velocity 0 0 0 ~50
+
+ radius 0 4 12
+ alpha 100 0.25 0
+ rotation 0 ~360 -
+
+ lifeTime 800
+ }
+
+ count 100
+ delay 0
+ period 50 200 0
+ }
+}
+
+firstPersonPoisonCloudPS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gas01 gas02 gas03 gas04 gas05 gas06 gas07 gas08 gas09 gas10 gas11 gas12 gas13 gas14 gas15 gas16
+
+ displacement 0 0 0 ~32
+
+ parentVelocityFraction 1.0
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 16
+ velocity 0 0 1 0
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 300
+ acceleration 0 0 1 0
+
+ radius 0 10 40
+ alpha 0 0.5 0
+ rotation 0 ~360 -
+ bounce 0.5
+
+ lifeTime 1000
+ }
+
+ count 400
+ delay 0
+ period 20 - 0
+ }
+}
+
+
+
+
+
+// Dragoon Barb
+
+models/weapons/level3upg/impactPS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/level3upg/barb_splash
+
+ displacement 0 0 0 ~8
+
+ velocityType normal
+ velocityDir linear
+ velocityMagnitude 800
+ velocity 0 0 1 ~80
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 800
+ acceleration 0 0 -1 0
+
+ radius 0 3~2 0
+ alpha 0 10 1
+ rotation 0 ~360 -
+ bounce 0.4~100%
+
+ lifeTime 175
+ }
+
+ count 12
+ delay 0
+ period 0 - 0
+ }
+} \ No newline at end of file
diff --git a/assets/scripts/g_alienattackfx.shader b/assets/scripts/g_alienattackfx.shader
new file mode 100644
index 0000000..7564d3a
--- /dev/null
+++ b/assets/scripts/g_alienattackfx.shader
@@ -0,0 +1,145 @@
+// marauder zap in g_lightning.trail
+
+gas01
+{
+ nopicmip
+ {
+ map gfx/gas/gas01.tga
+ blendFunc Blend
+ }
+}
+
+gas02
+{
+ nopicmip
+ {
+ map gfx/gas/gas02.tga
+ blendFunc Blend
+ }
+}
+
+gas03
+{
+ nopicmip
+ {
+ map gfx/gas/gas03.tga
+ blendFunc Blend
+ }
+}
+
+gas04
+{
+ nopicmip
+ {
+ map gfx/gas/gas04.tga
+ blendFunc Blend
+ }
+}
+
+gas05
+{
+ nopicmip
+ {
+ map gfx/gas/gas05.tga
+ blendFunc Blend
+ }
+}
+
+gas06
+{
+ nopicmip
+ {
+ map gfx/gas/gas06.tga
+ blendFunc Blend
+ }
+}
+
+gas07
+{
+ nopicmip
+ {
+ map gfx/gas/gas07.tga
+ blendFunc Blend
+ }
+}
+
+gas08
+{
+ nopicmip
+ {
+ map gfx/gas/gas08.tga
+ blendFunc Blend
+ }
+}
+
+gas09
+{
+ nopicmip
+ {
+ map gfx/gas/gas09.tga
+ blendFunc Blend
+ }
+}
+
+gas10
+{
+ nopicmip
+ {
+ map gfx/gas/gas10.tga
+ blendFunc Blend
+ }
+}
+
+gas11
+{
+ nopicmip
+ {
+ map gfx/gas/gas11.tga
+ blendFunc Blend
+ }
+}
+
+gas12
+{
+ nopicmip
+ {
+ map gfx/gas/gas12.tga
+ blendFunc Blend
+ }
+}
+
+gas13
+{
+ nopicmip
+ {
+ map gfx/gas/gas13.tga
+ blendFunc Blend
+ }
+}
+
+gas14
+{
+ nopicmip
+ {
+ map gfx/gas/gas14.tga
+ blendFunc Blend
+ }
+}
+
+gas15
+{
+ nopicmip
+ {
+ map gfx/gas/gas15.tga
+ blendFunc Blend
+ }
+}
+
+gas16
+{
+ nopicmip
+ {
+ map gfx/gas/gas16.tga
+ blendFunc Blend
+ }
+} \ No newline at end of file
diff --git a/assets/scripts/g_alienblood.particle b/assets/scripts/g_alienblood.particle
new file mode 100644
index 0000000..0d627ad
--- /dev/null
+++ b/assets/scripts/g_alienblood.particle
@@ -0,0 +1,334 @@
+alienBleedPS // alien blood
+{
+ ejector
+ {
+ particle
+ {
+ shader sync greenblood01frame01 greenblood01frame02 greenblood01frame03 greenblood01frame04 greenblood01frame05 greenblood01frame06 greenblood01frame07 greenblood01frame08
+
+ displacement 0 0 0 ~8
+
+ radius 0 6~2 9~2
+ alpha 0 1 0
+ rotation 0 ~360 -
+ bounce 0
+
+ lifeTime 250~50
+ }
+ count 1
+ delay 0
+ period 0 - 0
+ }
+ thirdPersonOnly
+}
+
+alienBuildableBleedPS // alien building blood
+{
+ ejector
+ {
+ particle
+ {
+ shader sync greenblood01frame01 greenblood01frame02 greenblood01frame03 greenblood01frame04 greenblood01frame05 greenblood01frame06 greenblood01frame07 greenblood01frame08
+
+ displacement 0 0 0 ~8
+
+ radius 0 6~2 9~2
+ alpha 0 1 0
+ rotation 0 ~360 -
+ bounce 0
+
+ lifeTime 250~50
+ }
+ count 1
+ delay 0
+ period 0 - 0
+ }
+ thirdPersonOnly
+}
+
+alienBuildableDamagedPS // alien building almost destroyed
+{
+ ejector
+ {
+ particle
+ {
+ shader sync greenblood03frame01 greenblood03frame02 greenblood03frame03 greenblood03frame04 greenblood03frame05 greenblood03frame06 greenblood03frame07
+
+ displacement 0 0 0 ~4
+
+ velocityType normal
+ velocityDir linear
+ velocityMagnitude 100
+ velocity 0 0 0 ~20
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 200
+ acceleration 0 0 -2 0
+
+ radius 0 4 12~6
+ alpha 0 1 1
+ rotation 0 ~360 -
+
+ lifeTime 300~50%
+ }
+
+ particle
+ {
+ shader sync greenblood01frame01 greenblood01frame02 greenblood01frame03 greenblood01frame04 greenblood01frame05 greenblood01frame06 greenblood01frame07 greenblood01frame08
+
+ displacement 0 0 0 ~6
+
+ velocityType normal
+ velocityDir linear
+ velocityMagnitude 100
+ velocity 0 0 0 ~20
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 200
+ acceleration 0 0 -2 0
+
+ radius 0 4 12~4
+ alpha 0 1 1
+ rotation 0 ~360 -
+
+ lifeTime 300~50%
+ }
+ count infinite
+ delay 0
+ period 600 - 0
+ }
+
+ ejector
+ {
+ particle
+ {
+ shader sync greenblood01frame01 greenblood01frame02 greenblood01frame03 greenblood01frame04 greenblood01frame05 greenblood01frame06 greenblood01frame07 greenblood01frame08
+
+ displacement 0 0 0 ~20
+
+ velocityType normal
+ velocityDir linear
+ velocityMagnitude 100
+ velocity 0 0 0 ~20
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 200
+ acceleration 0 0 -2 0
+
+ radius 0 4.0 4.0
+ alpha 0 1 1
+ rotation 0 ~360 -
+
+ lifeTime 300~50%
+ }
+
+ particle
+ {
+ shader sync greenblood01frame01 greenblood01frame02 greenblood01frame03 greenblood01frame04 greenblood01frame05 greenblood01frame06 greenblood01frame07 greenblood01frame08
+
+ displacement 0 0 0 ~20
+
+ velocityType normal
+ velocityDir linear
+ velocityMagnitude 100
+ velocity 0 0 0 ~20
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 200
+ acceleration 0 0 -2 0
+
+ radius 0 4 4
+ alpha 0 1 1
+ rotation 0 ~360 -
+
+ lifeTime 300~50%
+ }
+ count infinite
+ delay 300
+ period 600 - 0
+ }
+}
+
+alienBuildableDestroyedPS // alien building destroyed
+{
+ ejector
+ {
+ particle
+ {
+ shader sync greenblood01frame01 greenblood01frame02 greenblood01frame03 greenblood01frame04 greenblood01frame05 greenblood01frame06 greenblood01frame07 greenblood01frame08
+
+ displacement 0 0 0 ~0
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 300~75%
+ velocity 0 0 0.05 ~40
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 800
+ acceleration 0 0 -2 0
+
+ radius 0 10 15
+ alpha 0 1 1
+ rotation 0 ~360 -
+ bounce cull
+
+ lifeTime 600
+ }
+
+ count 32
+ delay 0
+ period 0 - 0
+ }
+ ejector
+ {
+ particle
+ {
+ shader sync greenblood03frame01
+
+ displacement 0 0 30 ~0
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 300~75%
+ velocity 0 0 1 ~40
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 800
+ acceleration 0 0 -2 0
+
+ radius 600 8 0
+ alpha 0 1 1
+ rotation 0 ~360 -
+ bounce 0.1
+ bouncemark 1 24~8 greensplat2
+
+ lifeTime 1200
+ }
+
+ particle
+ {
+ shader sync greenblood03frame01
+
+ displacement 0 0 30 0
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 300~75%
+ velocity 0 0 1 ~40
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 800
+ acceleration 0 0 -2 0
+
+ radius 600 8 0
+ alpha 0 1 1
+ rotation 0 ~360 -
+ bounce 0.1
+ bouncemark 1 24~8 greensplat3
+
+ lifeTime 1200
+ }
+
+ particle
+ {
+ shader sync greenblood03frame01
+
+ displacement 0 0 30 0
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 300~75%
+ velocity 0 0 1 ~40
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 800
+ acceleration 0 0 -2 0
+
+ radius 500 10 0
+ alpha 0 1 1
+ rotation 0 ~360 -
+ bounce 0.1
+ bouncemark 1 24~8 greensplat4
+
+ lifeTime 1000
+ }
+
+ count 3
+ delay 0
+ period 0 - 0
+ }
+ ejector // gibs
+ {
+ particle
+ {
+ model models/fx/alien_gibs/a_gib1.md3 models/fx/alien_gibs/a_gib2.md3 models/fx/alien_gibs/a_gib3.md3 models/fx/alien_gibs/a_gib4.md3
+
+ displacement 0~20 0~20 40~10 0
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 300~75%
+ velocity 0 0 1 ~60
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 800
+ acceleration 0 0 -1 0
+
+ radius 2000 1 0
+ bounce 0.2
+ bounceMark 1~1 24 greensplat3
+ bounceSound ~1 sound/misc/organic_bounce.wav
+
+ lifeTime 3000~500
+ }
+
+ count 3
+ delay 0
+ period 0 - 0
+ }
+}
+
+alienEvolvePS // alien evolution blood
+{
+ ejector
+ {
+ particle
+ {
+ shader sync greenblood01frame01 greenblood01frame02 greenblood01frame03 greenblood01frame04 greenblood01frame05 greenblood01frame06 greenblood01frame07 greenblood01frame08
+
+ displacement 0 0 0 ~0
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 150~75%
+ velocity 0 0 1 ~50
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 800
+ acceleration 0 0 -1 0
+
+ radius 0 5 30
+ alpha 0 1 0
+ rotation 0 ~360 -
+ bounce 0.2
+
+ lifeTime 1000
+ }
+
+ count 30
+ delay 0
+ period 5 - 0
+ }
+ thirdPersonOnly
+} \ No newline at end of file
diff --git a/assets/scripts/g_alienblood.shader b/assets/scripts/g_alienblood.shader
new file mode 100644
index 0000000..f6c39e4
--- /dev/null
+++ b/assets/scripts/g_alienblood.shader
@@ -0,0 +1,163 @@
+// blood decals are in g_decals.shader
+
+greenblood01frame01
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/blood/greenblood01frame01.tga
+ blendfunc gl_one gl_one_minus_src_color
+ }
+}
+
+greenblood01frame02
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/blood/greenblood01frame02.tga
+ blendfunc gl_one gl_one_minus_src_color
+ }
+}
+
+greenblood01frame03
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/blood/greenblood01frame03.tga
+ blendfunc gl_one gl_one_minus_src_color
+ }
+}
+
+greenblood01frame04
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/blood/greenblood01frame04.tga
+ blendfunc gl_one gl_one_minus_src_color
+ }
+}
+
+greenblood01frame05
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/blood/greenblood01frame05.tga
+ blendfunc gl_one gl_one_minus_src_color
+ }
+}
+
+greenblood01frame06
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/blood/greenblood01frame06.tga
+ blendfunc gl_one gl_one_minus_src_color
+ }
+}
+
+greenblood01frame07
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/blood/greenblood01frame07.tga
+ blendfunc gl_one gl_one_minus_src_color
+ }
+}
+
+greenblood01frame08
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/blood/greenblood01frame08.tga
+ blendfunc gl_one gl_one_minus_src_color
+ }
+}
+
+greenblood03frame01
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/blood/greenblood03frame01.tga
+ blendfunc gl_one gl_one_minus_src_color
+ }
+}
+
+greenblood03frame02
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/blood/greenblood03frame02.tga
+ blendfunc gl_one gl_one_minus_src_color
+ }
+}
+
+greenblood03frame03
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/blood/greenblood03frame03.tga
+ blendfunc gl_one gl_one_minus_src_color
+ }
+}
+
+greenblood03frame04
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/blood/greenblood03frame04.tga
+ blendfunc gl_one gl_one_minus_src_color
+
+ }
+}
+
+greenblood03frame05
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/blood/greenblood03frame05.tga
+ blendfunc gl_one gl_one_minus_src_color
+ }
+}
+
+greenblood03frame06
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/blood/greenblood03frame06.tga
+ blendfunc gl_one gl_one_minus_src_color
+
+ }
+}
+
+greenblood03frame07
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/blood/greenblood03frame07.tga
+ blendfunc gl_one gl_one_minus_src_color
+ }
+}
+
+greenblood03frame08
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/blood/greenblood03frame08.tga
+ blendfunc gl_one gl_one_minus_src_color
+ }
+} \ No newline at end of file
diff --git a/assets/scripts/g_alienbuildablefx.particle b/assets/scripts/g_alienbuildablefx.particle
new file mode 100644
index 0000000..a946351
--- /dev/null
+++ b/assets/scripts/g_alienbuildablefx.particle
@@ -0,0 +1,105 @@
+alienAcidTubePS // Acid Tube
+{
+ ejector // acid spray
+ {
+ particle
+ {
+ shader sync greenblood01frame01 greenblood01frame02 greenblood01frame03 greenblood01frame04 greenblood01frame05 greenblood01frame06 greenblood01frame07 greenblood01frame08
+
+ displacement 0 0 0 ~2
+ normalDisplacement 20
+
+ velocityType normal
+ velocityDir linear
+ velocityMagnitude 300~75%
+ velocity 0 0 1 ~10
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 800
+ acceleration 0 0 -1 ~30
+
+ radius 0 8 20
+ alpha 0 1.0 0
+ rotation 0 ~360 -
+ bounce 0.2
+
+ lifeTime 600~50%
+ }
+
+ count 50
+ delay 0
+ period 5 - 0
+ }
+
+ ejector // acid decals
+ {
+ particle
+ {
+ shader sync greenblood01frame01
+
+ displacement 0 0 0 0
+ normalDisplacement 0
+
+ velocityType normal
+ velocityDir linear
+ velocityMagnitude 300~75%
+ velocity 0 0 1 ~10
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 900
+ acceleration 0 0 -1 ~30
+
+ radius 0 0 0
+ alpha 0 0 0
+ rotation 0 ~360 -
+
+ bounce 0.3
+ bounceMark 0~1 32~8 greensplat
+ bounceSound 1 sound/buildables/acid_tube/acidsplat.wav
+
+ onDeathSystem alienBuildableBleedPS
+
+ lifeTime 1000~50%
+ }
+
+ count 1
+ delay 0
+ period 5 - 0
+ }
+}
+
+models/weapons/hive/missilePS // Hive
+{
+ ejector
+ {
+ particle
+ {
+ shader 20 models/weapons/hive/sprite1.tga models/weapons/hive/sprite2.tga
+
+ displacement 0 0 0 ~4
+
+ parentVelocityFraction 0.5
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 100
+ velocity 0 0 1 ~180
+
+ accelerationType cent
+ accelerationDir point
+ accelerationMagnitude 2000
+
+ rotation 0 -20~40 -20~40
+ radius 0 2 2
+ alpha 0 1 0
+ bounce 0.5
+
+ lifeTime 4000
+ }
+
+ count infinite
+ delay 0
+ period 100 - 0
+ }
+} \ No newline at end of file
diff --git a/assets/scripts/g_alienmodelshaders.shader b/assets/scripts/g_alienmodelshaders.shader
new file mode 100644
index 0000000..3a8b854
--- /dev/null
+++ b/assets/scripts/g_alienmodelshaders.shader
@@ -0,0 +1,229 @@
+// Advanced Marauder
+
+models/players/level2/level2adv
+{
+ {
+ map models/players/level2/lvl2_fx.tga
+ blendFunc GL_ONE GL_ZERO
+ tcmod scale 7 7
+ tcMod scroll 5 -5
+ tcmod rotate 360
+ rgbGen identity
+ }
+
+ {
+ map models/players/level2/adv.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ rgbGen lightingDiffuse
+ }
+}
+
+models/players/level2/electric_s
+{
+ {
+ map models/players/level2/electric.jpg
+ blendfunc add
+ tcMod scroll 10 0.5
+ }
+}
+
+
+
+
+
+// Booster
+
+models/buildables/booster/booster_head
+{
+ {
+ map models/buildables/booster/booster_head.tga
+ rgbGen lightingDiffuse
+ }
+ {
+ map models/buildables/booster/ref_map.tga
+ blendfunc filter
+ rgbGen identity
+ tcMod rotate 5
+ tcGen environment
+ }
+}
+
+models/buildables/booster/booster_sac
+{
+ {
+ map models/buildables/booster/booster_sac.tga
+ rgbGen lightingDiffuse
+ }
+ {
+ map models/buildables/booster/poison.tga
+ blendfunc add
+ rgbGen wave sin 0 1 0 0.1
+ tcMod scroll -0.05 -0.05
+ }
+}
+models/buildables/booster/pod_strands
+{
+ cull disable
+ {
+ map models/buildables/barricade/pod_strands.tga
+ rgbGen lightingDiffuse
+ alphaFunc GE128
+ }
+}
+models/buildables/hovel/pod_strands
+{
+ cull disable
+ {
+ map models/buildables/barricade/pod_strands.tga
+ rgbGen lightingDiffuse
+ alphaFunc GE128
+ }
+}
+
+
+
+
+
+// Egg
+
+models/buildables/eggpod/pod_body
+{
+ nopicmip
+ cull disable
+ {
+ map models/buildables/eggpod/pod_body.tga
+ rgbGen lightingDiffuse
+ }
+}
+
+models/buildables/eggpod/pod_tip
+{
+ nopicmip
+ cull disable
+ {
+ map models/buildables/eggpod/pod_tip.tga
+ rgbGen lightingDiffuse
+ alphaFunc GE128
+ }
+}
+
+models/buildables/eggpod/pod_tendrils
+{
+ nopicmip
+ cull disable
+ {
+ map models/buildables/eggpod/pod_tendrils.tga
+ rgbGen lightingDiffuse
+ }
+}
+
+models/buildables/eggpod/pod_strands
+{
+ nopicmip
+ cull disable
+ {
+ map models/buildables/eggpod/pod_strands.tga
+ rgbGen lightingDiffuse
+ alphaFunc GE128
+ }
+}
+
+models/buildables/barricade/pod_strands
+{
+ nopicmip
+ cull disable
+ {
+ map models/buildables/barricade/pod_strands.tga
+ rgbGen lightingDiffuse
+ alphaFunc GE128
+ }
+}
+models/buildables/barricade/alien_spike
+{
+ nopicmip
+ {
+ map models/buildables/barricade/alien_spike.tga
+ rgbGen lightingDiffuse
+ }
+}
+
+models/buildables/acid_tube/pod_strands
+{
+ nopicmip
+ cull disable
+ {
+ map models/buildables/eggpod/pod_strands.tga
+ rgbGen lightingDiffuse
+ alphaFunc GE128
+ }
+}
+
+
+
+
+
+// Hive
+
+models/buildables/hive/hive_strands_s
+{
+ cull disable
+ {
+ map models/buildables/hive/hive_strands.tga
+ rgbGen lightingDiffuse
+ alphaFunc GE128
+ }
+}
+
+
+
+
+
+// Overmind
+
+models/buildables/overmind/pod_strands
+{
+ cull disable
+ {
+ map models/buildables/eggpod/pod_strands.tga
+ rgbGen lightingDiffuse
+ alphaFunc GE128
+ }
+}
+
+models/buildables/overmind/over_spike
+{
+ {
+ map models/buildables/overmind/over_spike.tga
+ rgbGen lightingDiffuse
+ }
+ {
+ map models/buildables/overmind/ref2.tga
+ blendfunc filter
+ rgbGen identity
+ tcGen environment
+ }
+}
+
+
+
+
+
+// Trapper
+
+models/buildables/trapper/trapper_gills
+{
+nopicmip
+cull disable
+ {
+ map models/buildables/trapper/trapper_gills.tga
+ rgbGen lightingDiffuse
+ alphaFunc GE128
+ }
+ {
+ map models/buildables/trapper/trapper_gills.tga
+ rgbGen lightingDiffuse
+ tcMod scroll -0.01 0
+ tcMod scale -1 1
+ alphaFunc GE128
+ }
+} \ No newline at end of file
diff --git a/assets/scripts/g_buildmarker.shader b/assets/scripts/g_buildmarker.shader
new file mode 100644
index 0000000..bae10ae
--- /dev/null
+++ b/assets/scripts/g_buildmarker.shader
@@ -0,0 +1,17 @@
+gfx/misc/redbuild
+{
+ cull disable
+ {
+ map gfx/misc/redbuild.tga
+ blendfunc add
+ }
+}
+
+gfx/misc/greenbuild
+{
+ cull disable
+ {
+ map gfx/misc/greenbuild.tga
+ blendfunc add
+ }
+} \ No newline at end of file
diff --git a/assets/scripts/g_decals.shader b/assets/scripts/g_decals.shader
new file mode 100644
index 0000000..71096b6
--- /dev/null
+++ b/assets/scripts/g_decals.shader
@@ -0,0 +1,114 @@
+gfx/marks/shadow // blob shadow
+{
+ polygonOffset
+ {
+ map gfx/marks/shadow.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ rgbGen vertex
+ alphaGen vertex
+ }
+}
+
+gfx/marks/wake // foamy water around swimming players
+{
+ polygonOffset
+ {
+ clampmap gfx/marks/splash.tga
+ blendFunc GL_ONE GL_ONE
+ rgbGen vertex
+ tcmod rotate 250
+ tcMod stretch sin .9 0.1 0 0.7
+ rgbGen wave sin .7 .3 .25 .5
+ }
+ {
+ clampmap gfx/marks/splash.tga
+ blendFunc GL_ONE GL_ONE
+ rgbGen vertex
+ tcmod rotate -230
+ tcMod stretch sin .9 0.05 0 0.9
+ rgbGen wave sin .7 .3 .25 .4
+ }
+}
+
+gfx/marks/bullet_mrk // bullet decal
+{
+ polygonOffset
+ {
+ map gfx/marks/bullet_mrk.tga
+ blendFunc GL_ZERO GL_ONE_MINUS_SRC_COLOR
+ rgbGen exactVertex
+ }
+}
+
+gfx/marks/burn_mrk // burn mark
+{
+ polygonOffset
+ {
+ map gfx/marks/burn_mrk.tga
+ blendFunc GL_ZERO GL_ONE_MINUS_SRC_COLOR
+ rgbGen exactVertex
+ }
+}
+
+gfx/marks/plasma_mrk // plasma decal
+{
+ polygonOffset
+ {
+ map gfx/marks/plasma_mrk.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ rgbGen vertex
+ alphaGen vertex
+ }
+}
+
+creep // alien creep texture
+{
+ nopicmip
+ polygonoffset
+ {
+ clampmap gfx/misc/creep.tga
+ blendfunc blend
+ rgbGen identityLighting
+ alphaGen Vertex
+ }
+}
+
+greensplat // alien acid/blood decal
+{
+ nopicmip
+ polygonoffset
+ {
+ map gfx/blood/greensplat.tga
+ blendfunc blend
+ }
+}
+
+greensplat2 // alien acid/blood decal
+{
+ nopicmip
+ polygonoffset
+ {
+ map gfx/blood/greenblood01frame08.tga
+ blendfunc blend
+ }
+}
+
+greensplat3 // alien acid/blood decal
+{
+ nopicmip
+ polygonoffset
+ {
+ map gfx/blood/greenblood01frame07.tga
+ blendfunc blend
+ }
+}
+
+greensplat4 // alien acid/blood decal
+{
+ nopicmip
+ polygonoffset
+ {
+ map gfx/blood/greenblood03frame07.tga
+ blendfunc blend
+ }
+} \ No newline at end of file
diff --git a/assets/scripts/g_disconnect.particle b/assets/scripts/g_disconnect.particle
new file mode 100644
index 0000000..e7ba0c1
--- /dev/null
+++ b/assets/scripts/g_disconnect.particle
@@ -0,0 +1,25 @@
+disconnectPS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/sprites/bubble
+ displacement 0 0 0 ~60
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 15
+ velocity 0 0 1 ~90
+
+ radius 0 24 32
+ alpha 0 1 -
+
+ lifeTime 1000~300
+ }
+
+ count 3
+ delay 0
+ period 0 - 0
+ }
+} \ No newline at end of file
diff --git a/assets/scripts/g_fire.shader b/assets/scripts/g_fire.shader
new file mode 100644
index 0000000..1dc86f0
--- /dev/null
+++ b/assets/scripts/g_fire.shader
@@ -0,0 +1,459 @@
+flame1
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/flame/flame00.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+flame2
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/flame/flame01.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+flame3
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/flame/flame02.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+flame4
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/flame/flame03.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+flame5
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/flame/flame04.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+flame6
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/flame/flame05.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+flame7
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/flame/flame06.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+flame8
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/flame/flame07.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+flame9
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/flame/flame08.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+flame10
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/flame/flame09.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+flame11
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/flame/flame10.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+flame12
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/flame/flame11.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+flame13
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/flame/flame12.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+flame14
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/flame/flame13.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+flame15
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/flame/flame14.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+flame16
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/flame/flame15.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+flame17
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/flame/flame16.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+flame18
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/flame/flame17.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+flame19
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/flame/flame18.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+flame20
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/flame/flame19.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+flame21
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/flame/flame20.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+flame22
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/flame/flame21.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+flame23
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/flame/flame22.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+flame24
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/flame/flame23.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+flame25
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/flame/flame24.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+fire00
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/fire/fire00.jpg
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+fire01
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/fire/fire01.jpg
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+fire02
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/fire/fire02.jpg
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+fire03
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/fire/fire03.jpg
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+fire04
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/fire/fire04.jpg
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+fire05
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/fire/fire05.jpg
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+fire06
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/fire/fire06.jpg
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+fire07
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/fire/fire07.jpg
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+fire08
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/fire/fire08.jpg
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+fire09
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/fire/fire09.jpg
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+fire10
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/fire/fire10.jpg
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+fire11
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/fire/fire11.jpg
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+fire12
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/fire/fire12.jpg
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+fire13
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/fire/fire13.jpg
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+fire14
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/fire/fire14.jpg
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+fire15
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/fire/fire15.jpg
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+fire16
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/fire/fire16.jpg
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+fire17
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/fire/fire17.jpg
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+fire18
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/fire/fire18.jpg
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+fire19
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/fire/fire19.jpg
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+explosionflash
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/flash/explosionflash.jpg
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+} \ No newline at end of file
diff --git a/assets/scripts/g_humanblood.particle b/assets/scripts/g_humanblood.particle
new file mode 100644
index 0000000..d537c27
--- /dev/null
+++ b/assets/scripts/g_humanblood.particle
@@ -0,0 +1,35 @@
+humanBleedPS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync blood01frame01 blood01frame02 blood01frame03 blood01frame04 blood01frame05 blood01frame06 blood01frame07 blood01frame08
+
+ displacement 0 0 0 0
+
+ velocityType normal
+ velocityDir linear
+ velocityMagnitude 15
+ velocity 0 0 0 ~35
+
+ accelerationType static
+ accelerationDir linear
+ acceleration 0 0 -1 ~5
+ accelerationMagnitude 25
+
+ radius 0 5 8
+ alpha 250 .75 0
+ rotation 0 ~-15 ~15
+ bounce cull
+
+ lifeTime 400~100
+ }
+
+ count 1
+ delay 0
+ period 0 - 0
+ }
+
+ thirdPersonOnly
+} \ No newline at end of file
diff --git a/assets/scripts/g_humanblood.shader b/assets/scripts/g_humanblood.shader
new file mode 100644
index 0000000..f5ffb02
--- /dev/null
+++ b/assets/scripts/g_humanblood.shader
@@ -0,0 +1,79 @@
+blood01frame01
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/blood/blood01frame01.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+blood01frame02
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/blood/blood01frame02.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+blood01frame03
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/blood/blood01frame03.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+blood01frame04
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/blood/blood01frame04.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+blood01frame05
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/blood/blood01frame05.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+blood01frame06
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/blood/blood01frame06.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+blood01frame07
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/blood/blood01frame07.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+blood01frame08
+{
+ nopicmip
+ cull disable
+ {
+ map gfx/blood/blood01frame08.tga
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+} \ No newline at end of file
diff --git a/assets/scripts/g_humanbuildablefx.particle b/assets/scripts/g_humanbuildablefx.particle
new file mode 100644
index 0000000..24fce14
--- /dev/null
+++ b/assets/scripts/g_humanbuildablefx.particle
@@ -0,0 +1,413 @@
+humanBuildableBleedPS
+{
+ ejector
+ {
+ particle // residual sparks
+ {
+ shader sync spark00
+
+ displacement 0 0 0 ~1
+ normalDisplacement -8
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 200
+ velocity 0 0 0.2 ~60
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 500
+ acceleration 0~360 0~360 -1 0
+
+ radius 0 1.5~1 0
+ alpha 0 1 1
+ rotation 0 ~360 -
+ bounce 0.6
+
+ lifeTime 600~20%
+ }
+
+ count 1~2
+ delay 0
+ period 0 - 0
+ }
+
+ ejector // impact sparks
+ {
+ particle
+ {
+ shader sync spark01frame01 spark01frame03
+
+ displacement 0 0 0 4
+
+ normalDisplacement 15
+
+ velocityType static
+ accelerationType static
+
+ radius 0 10~60% 0~4
+ alpha 0 1 0
+ rotation 0 ~360 -
+ bounce 0
+
+ lifeTime 100
+ }
+
+ count 1~1
+ delay 0
+ period 0 - 0
+ }
+}
+
+humanBuildableDamagedPS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/sprites/smoke
+
+ displacement 0 0 16 0
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 25
+ velocity 0 0 1 ~60
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 25
+ acceleration 0 0 1 0
+
+ radius 0 10 50
+ alpha 0 0.6 0
+ rotation 0 ~360 -
+ bounce 0.5
+
+ lifeTime 1000~25%
+ }
+
+ count infinite
+ delay 0
+ period 100 - 0
+ }
+
+ ejector
+ {
+ particle
+ {
+ shader sync spark00
+
+ displacement 0 0 11 0
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 200
+ velocity 0 0 1 ~60
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 800
+ acceleration 0 0 -1 0
+
+ radius 0 4 0
+ alpha 0 1 0
+ rotation 0 ~360 -
+ bounce 0.6
+
+ lifeTime 1500~50%
+ }
+
+ count infinite
+ delay 0
+ period 700 - 0
+ }
+}
+
+humanBuildableDestroyedTrailPS
+{
+ ejector // fire trail
+ {
+ particle
+ {
+ shader sync fire09 fire10 fire11 fire12 fire13 fire14 fire15 fire16 fire17 fire18 fire19
+
+ displacement 0 0 6 0
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 30
+ velocity 0 0 0 ~60
+
+ radius 0 5 15
+ alpha 150 1 0
+ rotation 0 ~360 -
+ bounce 0.3
+
+ lifeTime 200
+ }
+ count 110
+ delay 0
+ period 10 - 0
+ }
+
+ ejector // smoke trail
+ {
+ particle
+ {
+ shader sync gfx/sprites/smoke
+
+ displacement 0 0 15 0
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 30
+ velocity 0 0 0 ~60
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 25
+ acceleration 0 0 0.2 0
+
+ radius 0 4 20~5
+ alpha 0 0.250.1 0
+ rotation 0 ~360 -
+ bounce 0.3
+
+ lifeTime 450~100
+ }
+ count 70
+ delay 15
+ period 10 - 0
+ }
+
+ ejector // debris upward fire
+ {
+ particle
+ {
+ shader sync fire08 fire09 fire10 fire11 fire12 fire13 fire14 fire15 fire16 fire17 fire18 fire19
+
+ displacement 0~4 0~4 6 0
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 40~5
+ velocity 0.1 0.1 0.5~1 0.1
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 50
+ acceleration 0 0 -0.3 0
+
+ radius 0 6~2 11~2
+ rotation 0 ~360 -
+ bounce 0
+
+ lifeTime 700~100
+ }
+
+ count 50~10
+ delay 200
+ period 100~40 - 0
+ }
+
+ ejector // debris base fire
+ {
+ particle
+ {
+ shader sync fire05 fire06 fire07 fire08 fire09 fire10 fire11 fire12 fire13 fire14 fire15 fire16 fire17 fire18 fire19
+
+ displacement 0 0 6 0
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 1
+ velocity 0 0 0 0
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 1
+ acceleration 0 0 0 0
+
+ radius 0 8 16
+ rotation 0 ~360 -
+ bounce 0
+
+ lifeTime 1000~100
+ }
+
+ count 40
+ delay 1300
+ period 112~40% - 0
+ }
+}
+
+humanBuildableDestroyedPS
+{
+ ejector // boom
+ {
+ particle // light up environment
+ {
+ dynamicLight 0 300 0 { 1 0.75 0 }
+ lifeTime 600~100
+ }
+
+ particle // explosion ring 1
+ {
+ shader sync radialblast01 radialblast02 radialblast03 radialblast04 radialblast05
+
+ displacement 0 0 0 0
+
+ normalDisplacement 15
+
+ velocityType static
+ accelerationType static
+
+ radius 0 40 150
+ alpha 0 1 0
+ rotation 0 ~360 -
+ bounce 0
+
+ scaleWithCharge 0.1
+
+ lifeTime 200
+ }
+
+ particle // explosion ring 2
+ {
+ shader sync radialblast03 radialblast03 radialblast03 radialblast03 radialblast04 radialblast05
+
+ displacement 0 0 0 0
+
+ normalDisplacement 15
+
+ velocityType static
+ accelerationType static
+
+ radius 0 0 100
+ alpha 0 1 0
+ rotation 0 ~360 -
+ bounce 0
+
+ scaleWithCharge 0.10
+
+ lifeTime 100
+ }
+
+ particle // explosion flash
+ {
+ shader sync explosionflash
+
+ displacement 0 0 0 0
+
+ normalDisplacement 100
+
+ velocityType static
+ accelerationType static
+
+ radius 0 100 0
+ alpha 80 1 0
+ rotation 0 ~360 -
+ bounce 0
+
+ scaleWithCharge 0.1
+
+ lifeTime 200
+ }
+
+ count 1
+ delay 0
+ period 0 - ~0%
+ }
+
+ ejector // sparks
+ {
+ particle // spam some sparks
+ {
+ shader sync spark00
+
+ displacement 0 0 8 0
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 350~75%
+ velocity 0 0 1 ~60
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 800
+ acceleration 0 0 -1 0
+
+ radius 0 2 0
+ alpha 0 1 0
+ rotation 0 ~360 -
+ bounce 0.4~100%
+
+ lifeTime 3000~90%
+ }
+
+ count 50
+ delay 0
+ period 0 - 0
+ }
+
+ ejector // debris
+ {
+ particle // metal gib models with child trail
+ {
+ model models/fx/metal_gibs/m_gib1.md3 models/fx/metal_gibs/m_gib2.md3 models/fx/metal_gibs/m_gib3.md3 models/fx/metal_gibs/m_gib5.md3 models/fx/metal_gibs/m_gib6.md3 models/fx/metal_gibs/m_gib7.md3 models/fx/metal_gibs/m_gib8.md3
+
+ displacement 0 0 40 0
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 300~75%
+ velocity 0 0 1 ~60
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 800
+ acceleration 0 0 -1 0
+
+ radius 5900 1~30% 0
+ bounce 0.2
+ bounceMark 1~1 16 gfx/marks/burn_mrk
+ bounceSound ~1 sound/buildables/human/fragmentbounce.wav
+
+ lifeTime 7000~1000
+ childSystem humanBuildableDestroyedTrailPS
+ }
+
+ count 3~1
+ delay 0
+ period 10 - 0
+ }
+
+ ejector // quick large puffy explosion clouds
+ {
+ particle
+ {
+ shader sync smoke01 smoke02 smoke03 smoke04 smoke05 smoke06 smoke07 smoke08 smoke09 smoke10 smoke11 smoke12 smoke13 smoke14 smoke15 smoke16
+
+ displacement ~20 ~20 ~20 10
+
+ parentVelocityFraction 0.5
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 150
+ velocity ~1 ~1 0.2 ~50
+
+ radius 0 5~20 200~20
+ alpha 0 0.4 0
+ rotation 0 ~360 -
+ bounce 0
+
+ lifeTime 600
+ }
+
+ count 6
+ delay 0
+ period 0 - 0
+ }
+} \ No newline at end of file
diff --git a/assets/scripts/g_humanbuildablefx.shader b/assets/scripts/g_humanbuildablefx.shader
new file mode 100644
index 0000000..413205d
--- /dev/null
+++ b/assets/scripts/g_humanbuildablefx.shader
@@ -0,0 +1,192 @@
+metal_gibs
+{
+ {
+ map models/fx/metal_gibs/metal_gibs.tga
+ rgbGen lightingDiffuse
+ }
+ {
+ map models/fx/metal_gibs/hot_gibs.tga
+ blendfunc add
+ rgbGen wave sin 0 1 0 0.0625
+ }
+}
+
+smoke01
+{
+ nopicmip
+ {
+ map gfx/smoke/smoke01.tga
+ blendFunc Blend
+ }
+}
+
+smoke02
+{
+ nopicmip
+ {
+ map gfx/smoke/smoke02.tga
+ blendFunc Blend
+ }
+}
+
+smoke03
+{
+ nopicmip
+ {
+ map gfx/smoke/smoke03.tga
+ blendFunc Blend
+ }
+}
+
+smoke04
+{
+ nopicmip
+ {
+ map gfx/smoke/smoke04.tga
+ blendFunc Blend
+ }
+}
+
+smoke05
+{
+ nopicmip
+ {
+ map gfx/smoke/smoke05.tga
+ blendFunc Blend
+ }
+}
+
+smoke06
+{
+ nopicmip
+ {
+ map gfx/smoke/smoke06.tga
+ blendFunc Blend
+ }
+}
+
+smoke07
+{
+ nopicmip
+ {
+ map gfx/smoke/smoke07.tga
+ blendFunc Blend
+ }
+}
+
+smoke08
+{
+ nopicmip
+ {
+ map gfx/smoke/smoke08.tga
+ blendFunc Blend
+ }
+}
+
+smoke09
+{
+ nopicmip
+ {
+ map gfx/smoke/smoke09.tga
+ blendFunc Blend
+ }
+}
+
+smoke10
+{
+ nopicmip
+ {
+ map gfx/smoke/smoke10.tga
+ blendFunc Blend
+ }
+}
+
+smoke11
+{
+ nopicmip
+ {
+ map gfx/smoke/smoke11.tga
+ blendFunc Blend
+ }
+}
+
+smoke12
+{
+ nopicmip
+ {
+ map gfx/smoke/smoke12.tga
+ blendFunc Blend
+ }
+}
+
+smoke13
+{
+ nopicmip
+ {
+ map gfx/smoke/smoke13.tga
+ blendFunc Blend
+ }
+}
+
+smoke14
+{
+ nopicmip
+ {
+ map gfx/smoke/smoke14.tga
+ blendFunc Blend
+ }
+}
+
+smoke15
+{
+ nopicmip
+ {
+ map gfx/smoke/smoke15.tga
+ blendFunc Blend
+ }
+}
+
+smoke16
+{
+ nopicmip
+ {
+ map gfx/smoke/smoke16.tga
+ blendFunc Blend
+ }
+}
+
+spark00
+{
+ nopicmip
+ {
+ map gfx/spark/spark00.jpg
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+spark01frame01
+{
+ nopicmip
+ {
+ map gfx/spark/spark01frame01.jpg
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+spark01frame02
+{
+ nopicmip
+ {
+ map gfx/spark/spark01frame02.jpg
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+spark01frame03
+{
+ nopicmip
+ {
+ map gfx/spark/spark01frame03.jpg
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+} \ No newline at end of file
diff --git a/assets/scripts/g_humanmodelshaders.shader b/assets/scripts/g_humanmodelshaders.shader
new file mode 100644
index 0000000..25ac489
--- /dev/null
+++ b/assets/scripts/g_humanmodelshaders.shader
@@ -0,0 +1,653 @@
+// Human Player Model
+
+models/players/human_base/h_base
+{
+ cull disable
+ {
+ map models/players/human_base/h_base.tga
+ rgbGen lightingDiffuse
+ alphaFunc GE128
+ }
+}
+
+models/players/human_base/h_helmet
+{
+ cull disable
+ {
+ map models/players/human_base/h_helmet.tga
+ rgbGen lightingDiffuse
+ alphaFunc GE128
+ }
+}
+
+
+
+
+
+// Jetpack
+
+models/players/human_base/jetpack_flash
+{
+ sort additive
+ {
+ map models/players/human_base/jetpack_flash.jpg
+ blendfunc GL_ONE GL_ONE
+ tcMod scroll 10.0 0.0
+ }
+}
+
+
+
+
+
+// Defense Computer
+
+models/buildables/dcc/comp_pipes
+{
+ {
+ map models/buildables/dcc/comp_pipes.tga
+ rgbGen lightingDiffuse
+ tcGen environment
+ }
+}
+
+models/buildables/dcc/comp_display
+{
+ {
+ map models/buildables/dcc/comp_grad.tga
+ rgbGen identity
+ tcMod scroll 0 1
+ }
+ {
+ map models/buildables/dcc/comp_display.tga
+ blendfunc gl_one gl_src_alpha
+ rgbGen identity
+ }
+}
+
+
+
+
+
+// Medipad
+
+models/buildables/medistat/red_cross
+{
+ {
+ map models/buildables/medistat/red_cross.tga
+ blendfunc gl_one_minus_dst_color gl_one
+ }
+}
+
+models/buildables/medistat/medi_cone
+{
+ cull none
+
+ {
+ map models/buildables/medistat/medi_cone.jpg
+ blendfunc add
+ rgbGen lightingDiffuse
+ tcMod scroll 1 0
+ }
+ {
+ map models/buildables/telenode/sparkles.tga
+ blendfunc add
+ rgbGen identity
+ rgbGen wave noise 0 1 35 1
+ tcMod scale 2 2
+ tcMod scroll 1 0.5
+ }
+}
+
+
+
+
+
+// Reactor Core
+
+models/buildables/reactor/reactor_main
+{
+ {
+ map models/buildables/reactor/reactor_main.tga
+ rgbGen lightingDiffuse
+ }
+ {
+ map models/buildables/reactor/reactor_glow.tga
+ blendfunc add
+ rgbGen wave sin 0 1 0 0.5
+ }
+}
+
+models/buildables/reactor/reactor_meter
+{
+ {
+ map models/buildables/reactor/reactor_meter.tga
+ rgbGen lightingDiffuse
+ }
+}
+
+models/buildables/reactor/reactor_display
+{
+ {
+ map models/buildables/reactor/reactor_display.tga
+ rgbGen identity
+ }
+}
+
+models/buildables/reactor/reactor_bolt
+{
+ cull disable
+ {
+ map models/buildables/reactor/reactor_bolt.tga
+ blendfunc add
+ rgbGen identity
+ tcMod scroll 2 0
+ }
+}
+
+models/buildables/repeater/energy
+{
+ {
+ map models/buildables/repeater/energy.tga
+ rgbGen wave sawtooth 0.3 1 0 0.5
+ tcMod scale 2 1
+ tcMod scroll 0 1
+ }
+}
+
+models/buildables/repeater/repeator_panel
+{
+ {
+ map models/buildables/repeater/repeator_panel.tga
+ rgbGen identity
+ }
+}
+
+models/buildables/arm/arm_panel2
+{
+ {
+ map models/buildables/arm/arm_panel2.tga
+ rgbGen identity
+ }
+}
+
+models/buildables/arm/arm_panel3
+{
+ {
+ map models/buildables/arm/arm_panel3.tga
+ rgbGen identity
+ }
+}
+
+
+
+
+
+// Stasis
+
+models/mapobjects/stasis/chamber
+{
+ {
+ map models/mapobjects/stasis/chamber.tga
+ rgbGen vertex
+ }
+}
+
+models/mapobjects/stasis/lifemeter
+{
+ {
+ map models/mapobjects/stasis/lifemeter.tga
+ rgbGen vertex
+ }
+}
+
+models/mapobjects/stasis/lifemeter2
+{
+ {
+ map models/mapobjects/stasis/meters.tga
+ rgbGen identityLighting
+ tcMod scroll 0.5 0
+ }
+ {
+ map models/mapobjects/stasis/lifemeter2.tga
+ alphaFunc GE128
+ }
+}
+
+models/mapobjects/stasis/window
+{
+ {
+ map models/mapobjects/stasis/window.tga
+ blendfunc filter
+ }
+ {
+ map models/mapobjects/stasis/bubbles.tga
+ blendfunc add
+
+ tcMod scroll 0 0.2
+ tcMod scale 2 1
+ }
+}
+
+models/mapobjects/stasis/flowpipe
+{
+ {
+ map models/mapobjects/stasis/flowpipe.tga
+
+ tcMod scale 5 5
+ tcMod scroll 1 0
+ }
+ {
+ map models/buildables/overmind/ref2.tga
+ blendfunc filter
+
+ tcGen environment
+ }
+}
+
+models/mapobjects/stasis/bubbles
+{
+ {
+ map models/mapobjects/stasis/bubbles.tga
+ rgbGen wave noise 0 1 0 1
+ tcMod scroll 0 0.5
+ }
+}
+
+
+
+
+
+// Telenode
+
+models/buildables/telenode/telenode_top
+{
+ {
+ map models/buildables/telenode/telenode_top.tga
+ rgbGen lightingDiffuse
+ }
+ {
+ map models/buildables/overmind/ref2.tga
+ blendfunc filter
+ rgbGen identity
+ tcGen environment
+ }
+}
+
+models/buildables/telenode/energy
+{
+ {
+ map models/buildables/telenode/energy.tga
+ rgbGen wave inversesawtooth 0.2 0.4 0 1
+ tcMod rotate 10
+ }
+}
+
+models/buildables/telenode/rep_cyl
+{
+ cull disable
+ {
+ map models/buildables/telenode/rep_cyl.jpg
+ blendfunc add
+ rgbGen lightingDiffuse
+ tcMod scroll 0.2 0
+ }
+ {
+ map models/buildables/telenode/lines2.tga
+ blendfunc add
+ rgbGen identity
+ tcMod scroll 0 0.2
+ }
+}
+
+models/buildables/telenode/telenode_parts
+{
+ {
+ map models/buildables/telenode/telenode_parts.tga
+ rgbGen lightingDiffuse
+ }
+ {
+ map models/buildables/overmind/ref2.tga
+ blendfunc filter
+ rgbGen identity
+ tcGen environment
+ }
+}
+
+
+
+
+
+// Tesla Generator
+
+models/buildables/tesla/tesla_main
+{
+ {
+ map models/buildables/tesla/tesla_main.tga
+ rgbGen lightingDiffuse
+ }
+ {
+ map models/buildables/overmind/ref2.tga
+ blendfunc filter
+ rgbGen identity
+ tcGen environment
+ }
+}
+
+models/buildables/tesla/tesla_ball
+{
+ {
+ map models/buildables/tesla/tesla_ball.tga
+ rgbGen lightingDiffuse
+ tcGen environment
+ }
+}
+
+models/buildables/tesla/tesla_grill
+{
+ {
+ map models/buildables/tesla/tesla_grill.tga
+ rgbGen wave sin 0 1 0 0.4
+ }
+}
+
+models/buildables/tesla/tesla_spark
+{
+ cull disable
+ {
+ map models/buildables/tesla/tesla_spark.tga
+ blendfunc add
+ rgbGen identity
+ }
+}
+
+models/ammo/tesla/tesla_bolt
+{
+ cull disable
+ {
+ map models/ammo/tesla/tesla_bolt.tga
+ blendfunc add
+ rgbGen vertex
+ tcMod scroll 0.2 0
+ }
+ {
+ map models/ammo/tesla/tesla_bolt.tga
+ blendfunc add
+ rgbGen wave sin 0 1 0 5
+ tcMod scroll 0.5 0
+ tcMod scale -1 1
+ }
+}
+
+
+
+
+
+// Turret
+
+models/buildables/mgturret/t_flash
+{
+ cull disable
+ {
+ map models/buildables/mgturret/t_flash.tga
+ blendfunc add
+ rgbGen wave square 0 1 0 10
+ }
+}
+
+models/buildables/mgturret/turret_coil
+{
+ cull disable
+ {
+ map models/buildables/mgturret/turret_coil.tga
+ rgbGen lightingDiffuse
+ alphaFunc GE128
+ }
+}
+
+models/buildables/mgturret/turret_shiny
+{
+ {
+ map models/buildables/mgturret/turret_shiny.tga
+ rgbGen lightingDiffuse
+ }
+ {
+ map models/buildables/mgturret/ref_map.tga
+ blendfunc filter
+ rgbGen identity
+ tcGen environment
+ }
+}
+
+
+
+
+
+// Construction Kit //
+
+models/weapons/ckit/rep_cyl
+{
+ cull disable
+ {
+ map models/weapons/ckit/rep_cyl.jpg
+ blendfunc add
+ tcMod scroll 0.2 0
+ }
+ {
+ map models/weapons/ckit/lines2.jpg
+ blendfunc add
+ tcMod scroll 0 -0.2
+ }
+}
+
+models/weapons/ckit/screen
+{
+ {
+ map models/weapons/ckit/screen.jpg
+ }
+
+ {
+ map models/weapons/ckit/scroll.jpg
+ blendfunc add
+ tcMod scroll 10 -0.4
+ }
+}
+
+models/weapons/ackit/rep_cyl
+{
+ cull disable
+ {
+ map models/weapons/ackit/rep_cyl.jpg
+ blendfunc add
+ tcMod scroll 0.2 0
+ }
+ {
+ map models/weapons/ackit/lines2.jpg
+ blendfunc add
+ tcMod scroll 0 -0.2
+ }
+}
+
+models/weapons/ackit/advscreen
+{
+ {
+ map models/weapons/ackit/advscreen.jpg
+ }
+
+ {
+ map models/weapons/ackit/scroll.jpg
+ blendfunc add
+ tcMod scroll 10 -0.4
+ }
+}
+
+
+
+
+
+// Advanced Construction Kit
+
+models/weapons/ackit/rep_cyl
+{
+ cull disable
+ {
+ map models/weapons/ackit/rep_cyl.jpg
+ blendfunc add
+ rgbGen lightingDiffuse
+ tcMod scroll 0.2 0
+ }
+ {
+ map models/weapons/ackit/lines2.jpg
+ blendfunc add
+ rgbGen identity
+ tcMod scroll 0 -0.2
+ }
+}
+
+models/weapons/ackit/particle
+{
+ cull disable
+ {
+ map models/weapons/ackit/particle.jpg
+ blendfunc add
+ rgbGen identity
+ tcMod scroll 0.02 -0.4
+ }
+}
+
+models/weapons/ackit/screen
+{
+ {
+ map models/weapons/ackit/screen.jpg
+ }
+
+ {
+ map models/weapons/ackit/scroll.jpg
+ blendfunc add
+ rgbGen lightingDiffuse
+ tcMod scroll 10.0 -0.2
+ }
+}
+
+models/weapons/ackit/screen2
+{
+ {
+ map models/weapons/ackit/screen2.jpg
+ }
+
+ {
+ map models/weapons/ackit/scroll2.jpg
+ blendfunc add
+ rgbGen lightingDiffuse
+ tcMod scroll 0.2 -10.0
+ }
+}
+
+
+
+
+
+// Flamer
+
+models/weapons/flamer/pilot
+{
+ sort additive
+ cull disable
+ {
+ map models/weapons/flamer/pilot.jpg
+ blendfunc GL_ONE GL_ONE
+ tcMod scroll 9.0 0
+ }
+}
+
+models/weapons/flamer/gas
+{
+ sort additive
+ cull disable
+ {
+ map models/weapons/flamer/gas.jpg
+ blendfunc GL_ONE GL_ONE
+ tcMod scroll 0.04 0.02
+ }
+}
+
+models/weapons/flamer/flamer
+{
+ sort additive
+ surfaceparm trans
+ {
+ map models/weapons/flamer/flamer.tga
+ depthWrite
+ alphaFunc GE128
+ rgbGen lightingDiffuse
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ }
+}
+
+
+
+
+
+// Grenade
+
+models/weapons/grenade/grenade_s
+{
+ {
+ map models/weapons/grenade/energy.jpg
+ rgbGen wave sawtooth 0.3 1 0 0.5
+ tcMod scale 2 1
+ tcMod scroll 0 1
+ }
+}
+
+gfx/grenade/flare_01
+{
+ {
+ map gfx/grenade/flare_01.tga
+ blendfunc add
+ }
+}
+
+
+
+
+
+// Mass Driver
+
+models/weapons/mdriver/glow
+{
+ cull disable
+ {
+ map models/weapons/mdriver/glow.jpg
+ blendfunc GL_ONE GL_ONE
+ tcMod scroll -9.0 9.0
+ }
+}
+
+
+
+
+
+// Pain Saw
+
+models/weapons/psaw/chain
+{
+ sort additive
+ cull disable
+ {
+ map models/weapons/psaw/chain.jpg
+ blendfunc GL_ONE GL_ONE
+ tcMod scroll 1.0 -4.0
+ }
+}
+
+models/weapons/psaw/battery
+{
+ sort additive
+ cull disable
+ {
+ map models/weapons/psaw/chain.jpg
+ blendfunc GL_ONE GL_ONE
+ tcMod scroll 0.04 -0.02
+ }
+} \ No newline at end of file
diff --git a/assets/scripts/g_humanweaponfx.particle b/assets/scripts/g_humanweaponfx.particle
new file mode 100644
index 0000000..89f0b9e
--- /dev/null
+++ b/assets/scripts/g_humanweaponfx.particle
@@ -0,0 +1,907 @@
+models/weapons/blaster/missilePS // Blaster // Projectile
+{
+ ejector // projectile
+ {
+ particle
+ {
+ shader sync spark00
+
+ parentVelocityFraction 0
+
+ radius 0 4 4
+ alpha 0 1 1
+ bounce cull
+
+ lifeTime 40
+ }
+
+ count infinite
+ delay 0
+ period 1 - 0
+ }
+ ejector // impact sound hack
+ {
+ particle
+ {
+ shader sync spark00
+
+ parentVelocityFraction 1
+
+ radius 0 0 0
+ alpha 0 0 0
+ bounce 1
+ bounceSound 1 models/weapons/blaster/hit.wav
+
+ lifeTime 4000
+ }
+
+ count 1
+ delay 0
+ period 4000 - 0
+ }
+}
+
+models/weapons/chaingun/muzzlePS // Chaingun // Shell Casings
+{
+ ejector
+ {
+ particle
+ {
+ model models/weapons/shells/rifle-shell.md3
+
+ displacement -5 -3 0 ~0.0
+
+ parentVelocityFraction 0.85
+
+ velocityType static_transform
+ velocityDir linear
+ velocityMagnitude 200
+ velocity 0 -1 3 ~10
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 800
+ acceleration 0 0 -1 0
+
+ rotation 0 ~360 -
+ radius 4800 1.0 0
+ bounce 0.6
+
+ lifeTime 5000
+ }
+
+ count 1
+ delay 0
+ period 0 - ~0%
+ }
+}
+
+models/weapons/flamer/muzzlePS // Flamer
+{
+ ejector
+ {
+ particle
+ {
+ shader sync flame3 flame4 flame5 flame6 flame7 flame8 flame9 flame10 flame11 flame12 flame13 flame14 flame15 flame16 flame17 flame18 flame19 flame20 flame21 flame22 flame23 flame24 flame25
+ displacement 0 0 0 0
+
+ parentVelocityFraction 0.65
+
+ velocityType cent
+ velocityDir linear
+ velocityMagnitude 200
+ velocity 0 0 0 ~0
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 50
+ acceleration 0 0 1 ~0
+
+ radius 40 2 40
+ alpha 0 1 0
+ rotation 0 ~180 -
+ bounce 0.1
+
+ lifeTime 900
+ }
+ count infinite
+ delay 0
+ period 20 - 0
+ }
+}
+
+models/weapons/grenade/impactPS // Grenade
+{
+ ejector
+ {
+ particle
+ {
+ shader sync flame3 flame4 flame5 flame6 flame7 flame8 flame9 flame10 flame11 flame12 flame13 flame14 flame15 flame16 flame17 flame18 flame19 flame20 flame21 flame22 flame23 flame24 flame25
+
+ displacement 0 0 11 ~0
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 200~75%
+ velocity 0 0 1 ~10
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 300
+ acceleration 0 0 -1 0
+
+ radius 0 20 120
+ alpha 0 1 0
+ rotation 0 ~360 -
+ bounce 0
+
+ lifeTime 500
+
+ childSystem models/weapons/grenade/impactTrailPS
+ }
+
+ count 5
+ delay 50
+ period 10 - ~0%
+ }
+
+ ejector
+ {
+ particle // fast smoke
+ {
+ shader sync smoke01 smoke02 smoke03 smoke04 smoke05 smoke06 smoke07 smoke08 smoke09 smoke10 smoke11 smoke12 smoke13 smoke14 smoke15 smoke16
+
+ displacement ~20 ~20 ~20 10
+
+ parentVelocityFraction 0.5
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 150
+ velocity ~1 ~1 0.2 ~50
+
+ radius 0 5~20 200~20
+ alpha 0 0.4 0
+ rotation 0 ~360 -
+ bounce 0
+
+ lifeTime 1000
+ }
+
+ particle // ring 1
+ {
+ shader sync radialblast01 radialblast02 radialblast03 radialblast04 radialblast05
+
+ displacement 0 0 0 0
+
+ normalDisplacement 15
+
+ velocityType static
+ accelerationType static
+
+ radius 0 40 150
+ alpha 0 1 0
+ rotation 0 ~360 -
+ bounce 0
+
+ lifeTime 200
+ }
+
+ particle // ring 2
+ {
+ shader sync radialblast03 radialblast03 radialblast03 radialblast03 radialblast04 radialblast05
+
+ displacement 0 0 0 0
+
+ normalDisplacement 15
+
+ velocityType static
+ accelerationType static
+
+ radius 0 0 100
+ alpha 0 1 0
+ rotation 0 ~360 -
+ bounce 0
+
+ lifeTime 100
+ }
+
+ particle // explosion flash
+ {
+ shader sync explosionflash
+
+ displacement 0 0 0 0
+
+ normalDisplacement 100
+
+ velocityType static
+ accelerationType static
+
+ radius 0 100 0
+ alpha 80 1 0
+ rotation 0 ~360 -
+ bounce 0
+
+ scaleWithCharge 0.1
+ onDeathSystem models/weapons/grenade/impactTrailPS
+
+ lifeTime 200
+ }
+
+ count 1
+ delay 0
+ period 0 - 0
+ }
+
+ ejector // sparks
+ {
+ particle // spam some sparks
+ {
+ shader sync spark00
+
+ displacement 0 0 8 0
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 350~75%
+ velocity 0 0 1 ~60
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 800
+ acceleration 0 0 -1 0
+
+ radius 0 2 0
+ alpha 0 1 0
+ rotation 0 ~360 -
+ bounce 0.4~100%
+
+ lifeTime 3000~90%
+ }
+
+ count 100
+ delay 0
+ period 0 - 0
+ }
+}
+
+models/weapons/grenade/impactTrailPS // Grenade
+{
+ ejector
+ {
+ particle
+ {
+ shader sync flame3 flame4 flame5 flame6 flame7 flame8 flame9 flame10 flame11 flame12 flame13 flame14 flame15 flame16 flame17 flame18 flame19 flame20 flame21 flame22 flame23 flame24 flame25
+
+ displacement 0 0 0 ~16
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 30
+ velocity 0 0 -1 0
+
+ radius 0 30 10
+ alpha 0 1 0
+ rotation 0 ~360 -
+ bounce 0
+
+ lifeTime 500
+ }
+
+ count 5
+ delay 10
+ period 40 - 0
+ }
+}
+
+models/weapons/lasgun/impactPS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/lasgun/purple_particle
+
+ displacement 0 0 0 ~2
+ normalDisplacement 7
+
+ velocityType normal
+ velocityDir linear
+ velocityMagnitude 100
+ velocity 0 0 0 ~90
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 600
+ acceleration 0 0 -1 ~10
+
+ radius 0 3~2 0
+ alpha 0 1 1
+ rotation 0 ~360 -
+ bounce 0.5
+
+ lifeTime 500
+ }
+
+ count 3
+ delay 0
+ period 0 - 0
+ }
+}
+
+models/weapons/lcannon/missilePS // Lucifer Cannon // Primary Projectile
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/blaster/orange_particle
+
+ displacement 0 0 0 ~3
+
+ parentVelocityFraction 1
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 120
+ velocity 0 0 1 ~360
+
+ radius 0 6~20% 1
+ alpha 0 1 1
+ bounce cull
+
+ lifeTime 1000
+ }
+
+ count infinite
+ delay 0
+ period 50 - 0
+ }
+}
+
+models/weapons/lcannon/secondaryMissilePS // Lucifer Cannon // Secondary Projectile
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/blaster/orange_particle
+
+ displacement 0 0 0 ~3
+
+ parentVelocityFraction 0.5
+
+ radius 0 2 0
+ alpha 0 1 0
+ bounce cull
+
+ lifeTime 400
+ }
+
+ count infinite
+ delay 0
+ period 25 - 0
+ }
+}
+
+models/weapons/lcannon/impactPS // Lucifer Cannon // Primary Impact
+{
+ ejector // air particles
+ {
+ particle
+ {
+ shader sync spark00
+
+ displacement 0 0 0 ~2
+
+ normalDisplacement 20
+
+ velocityType normal
+ velocityDir linear
+ velocityMagnitude 300
+ velocity 0 0 0 ~160
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 1
+ acceleration 0 0 0 0
+
+ radius 0 5~75% 0
+ alpha 0 1 0
+ rotation 0 ~360 -
+ bounce 0.8
+
+ lifeTime 1200
+ }
+
+ count 20
+ delay 0
+ period 0 - 0
+ }
+ ejector // blast fx
+ {
+ particle // ring 1
+ {
+ shader sync radialblast01 radialblast02 radialblast03 radialblast04 radialblast05
+
+ displacement 0 0 0 0
+
+ normalDisplacement 15
+
+ velocityType static
+ accelerationType static
+
+ radius 0 40 150
+ alpha 0 1 0
+ rotation 0 ~360 -
+ bounce 0
+
+ scaleWithCharge 0.1
+
+ lifeTime 200
+ }
+
+ particle // ring 2
+ {
+ shader sync radialblast03 radialblast03 radialblast03 radialblast03 radialblast04 radialblast05
+
+ displacement 0 0 0 0
+
+ normalDisplacement 15
+
+ velocityType static
+ accelerationType static
+
+ radius 0 0 100
+ alpha 0 1 0
+ rotation 0 ~360 -
+ bounce 0
+
+ scaleWithCharge 0.10
+
+ lifeTime 100
+ }
+
+ particle // flash
+ {
+ shader sync explosionflash
+
+ displacement 0 0 0 0
+
+ normalDisplacement 100
+
+ velocityType static
+ accelerationType static
+
+ radius 0 100 0
+ alpha 80 1 0
+ rotation 0 ~360 -
+ bounce 0
+
+ scaleWithCharge 0.1
+
+ lifeTime 200
+ }
+
+ count 1
+ delay 0
+ period 0 - 0
+ }
+}
+
+models/weapons/lcannon/secondaryImpactPS // Lucifer Cannon // Secondary Impact
+{
+ ejector // air particles
+ {
+ particle
+ {
+ shader sync spark00
+
+ displacement 0 0 0 ~2
+
+ normalDisplacement 20
+
+ velocityType normal
+ velocityDir linear
+ velocityMagnitude 300
+ velocity 0 0 0 ~160
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 1
+ acceleration 0 0 0 0
+
+ radius 0 4~75% 0
+ alpha 0 1 0
+ rotation 0 ~360 -
+ bounce 0.8
+
+ lifeTime 800
+ }
+ count 10
+ delay 0
+ period 0 - 0
+ }
+
+ ejector // blast fx
+ {
+ particle // ring 1
+ {
+ shader sync radialblast01 radialblast02 radialblast03 radialblast04 radialblast05
+
+ displacement 0 0 0 0
+
+ normalDisplacement 15
+
+ velocityType static
+ accelerationType static
+
+ radius 0 20 75
+ alpha 0 1 0
+ rotation 0 ~360 -
+ bounce 0
+
+ scaleWithCharge 0.1
+
+ lifeTime 200
+ }
+
+ particle // ring 2
+ {
+ shader sync radialblast03 radialblast03 radialblast03 radialblast03 radialblast04 radialblast05
+
+ displacement 0 0 0 0
+
+ normalDisplacement 15
+
+ velocityType static
+ accelerationType static
+
+ radius 0 0 50
+ alpha 0 1 0
+ rotation 0 ~360 -
+ bounce 0
+
+ scaleWithCharge 0.10
+
+ lifeTime 100
+ }
+
+ particle // flash
+ {
+ shader sync explosionflash
+
+ displacement 0 0 0 0
+
+ normalDisplacement 100
+
+ velocityType static
+ accelerationType static
+
+ radius 0 50 0
+ alpha 80 1 0
+ rotation 0 ~360 -
+ bounce 0
+
+ scaleWithCharge 0.1
+
+ lifeTime 200
+ }
+
+ count 1
+ delay 0
+ period 0 - 0
+ }
+}
+
+models/weapons/mdriver/impactPS // Mass Driver
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/mdriver/green_particle
+
+ displacement 0 0 0 ~2
+
+ normalDisplacement 10
+
+ velocityType normal
+ velocityDir linear
+ velocityMagnitude 400
+ velocity 0 0 0 ~80
+
+ accelerationType normal
+ accelerationDir linear
+ accelerationMagnitude 200
+ acceleration 0 0 1 ~360
+
+ radius 0 6 4
+ alpha 0 1 0
+ rotation 0 ~360 -
+ bounce 0.5
+
+ lifeTime 1000
+ }
+
+ count 10
+ delay 0
+ period 0 - 0
+ }
+}
+
+models/weapons/psaw/impactPS // Painsaw // Blue Particles
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/psaw/blue_particle
+
+ displacement 0 0 10 ~2
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 300
+ velocity 0 0 1 ~300
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 800
+ acceleration 0 0 -1 ~10
+
+ radius 0 5~2 0
+ alpha 0 1 1
+ rotation 0 ~360 -
+ bounce 0.5
+
+ lifeTime 1750
+ }
+
+ count 1
+ delay 0
+ period 0 - 0
+ }
+}
+
+models/weapons/prifle/impactPS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/prifle/red_blob
+
+ radius 0 3 6
+ alpha 70 1 0
+ rotation 0 ~360 -
+
+ lifeTime 140
+ }
+
+ count 1
+ delay 0
+ period 0 - 0
+ }
+}
+
+models/weapons/prifle/missilePS // Pulse Rifle // Projectile
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/prifle/red_blob
+
+ parentVelocityFraction 0.8
+
+ radius 0 2 1.5
+ alpha 0 8 0
+ bounce 0.01
+
+ lifeTime 400
+ }
+
+ count infinite
+ delay 0
+ period 10 - 0
+ }
+}
+
+models/weapons/rifle/impactPS // Rifle // Impact FX
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/rifle/verysmallrock
+
+ displacement 0 0 0 ~4
+
+ velocityType normal
+ velocityDir linear
+ velocityMagnitude 100
+ velocity 0 0 1 ~20
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 600
+ acceleration 0 0 -1 0
+
+ radius 0 1 1
+ alpha 0 1 0
+ rotation 0 ~360 -
+ bounce 0
+
+ lifeTime 350
+ }
+
+ count 0~2
+ delay ~100
+ period 0 - 0
+ }
+
+ ejector
+ {
+ particle
+ {
+ shader sync smoke08 smoke09 smoke10 smoke11 smoke12 smoke14 smoke15 smoke16
+
+ normalDisplacement ~100
+
+ velocityType normal
+ velocityDir linear
+ velocityMagnitude 30
+ velocity 0 0 1 0
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 30
+ acceleration 0 0 -1 0
+
+ radius 0 6 12
+ alpha 0 0.5 0
+ rotation 0 ~360 -
+ bounce 0
+
+ lifeTime 500
+ }
+
+ count 4
+ delay 0
+ period 5 - 0
+ }
+}
+
+models/weapons/rifle/muzzlePS // Rifle
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/sprites/smoke
+
+ displacement 0 0 0 0
+
+ parentVelocityFraction 0.9
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 20
+ velocity 0 0 0 0
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 300
+ acceleration 0 0 1 0
+
+ radius 0 2 4
+ alpha 0 0.4 0
+ rotation 0 ~360 -
+ bounce 0
+
+ lifeTime 200
+ }
+
+ count 1
+ delay 0
+ period 0 - 0
+ }
+
+ ejector // shell casings
+ {
+ particle
+ {
+ model models/weapons/shells/rifle-shell.md3
+
+ displacement -5 -3 0 0
+
+ parentVelocityFraction 0.85
+
+ velocityType static_transform
+ velocityDir linear
+ velocityMagnitude 200
+ velocity 0 -1 3 ~10
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 800
+ acceleration 0 0 -1 0
+
+ radius 0 1.0 -
+ bounce 0.5
+
+ lifeTime 5000
+ }
+
+ count 1
+ delay 0
+ period 0 - 0
+ }
+}
+
+models/weapons/shotgun/muzzlePS // Shotgun
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/sprites/smoke
+
+ displacement 0 0 0 0
+
+ parentVelocityFraction 0.9
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 20
+ velocity 0 0 0 0
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 300
+ acceleration 0 0 1 0
+
+ radius 0 2 4
+ alpha 0 0.4 0
+ rotation 0 ~360 -
+ bounce 0
+
+ lifeTime 200
+ }
+
+ count 1
+ delay 0
+ period 0 - 0
+ }
+
+ ejector // shell casings
+ {
+ particle
+ {
+ model models/weapons/shells/shotgun-shell.md3
+
+ displacement -5 -3 0 ~0.0
+
+ parentVelocityFraction 0.85
+
+ velocityType static_transform
+ velocityDir linear
+ velocityMagnitude 200
+ velocity 0 -1 3 ~10
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 800
+ acceleration 0 0 -1 0
+
+ radius 0 1 -
+ bounce 0.5
+
+ lifeTime 5000
+ }
+
+ count 1
+ delay 0
+ period 0 - 0
+ }
+} \ No newline at end of file
diff --git a/assets/scripts/g_humanweaponfx.shader b/assets/scripts/g_humanweaponfx.shader
new file mode 100644
index 0000000..fe22dc4
--- /dev/null
+++ b/assets/scripts/g_humanweaponfx.shader
@@ -0,0 +1,142 @@
+gfx/blaster/orange_particle
+{
+ cull disable
+ {
+ map gfx/blaster/orange_particle.jpg
+ blendFunc Add
+ alphaGen vertex
+ rgbGen vertex
+ }
+}
+
+gfx/mdriver/green_particle
+{
+ cull disable
+ {
+ map gfx/mdriver/green_particle.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ rgbGen vertex
+ alphaGen vertex
+ }
+}
+
+gfx/mdriver/trail
+{
+ nomipmaps
+ cull disable
+ {
+ map gfx/mdriver/trail.tga
+ blendFunc blend
+ }
+}
+
+gfx/psaw/blue_particle
+{
+ cull disable
+ {
+ map gfx/psaw/blue_particle.jpg
+ blendFunc GL_ONE GL_ONE
+ alphaGen vertex
+ rgbGen vertex
+ }
+}
+
+gfx/rifle/verysmallrock
+{
+ cull disable
+ {
+ map gfx/rifle/verysmallrock.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ alphaGen vertex
+ rgbGen vertex
+ }
+}
+
+gfx/prifle/red_blob
+{
+ cull disable
+ {
+ map gfx/prifle/red_blob.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ alphaGen vertex
+ }
+}
+
+gfx/prifle/red_streak
+{
+ nomipmaps
+ cull disable
+ {
+ map gfx/prifle/red_streak.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ alphaGen vertex
+ }
+}
+
+gfx/lcannon/primary
+{
+ cull disable
+ {
+ animmap 24 gfx/lcannon/primary_1.jpg gfx/lcannon/primary_2.jpg gfx/lcannon/primary_3.jpg gfx/lcannon/primary_4.jpg
+ blendFunc GL_ONE GL_ONE
+ }
+}
+
+gfx/lasgun/purple_particle
+{
+ cull disable
+ {
+ map gfx/lasgun/purple_particle.tga
+ blendFunc GL_ONE GL_ONE
+ }
+}
+
+radialblast01
+{
+ cull disable
+ nopicmip
+ {
+ map gfx/lcannon/radial01.jpg
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+radialblast02
+{
+ cull disable
+ nopicmip
+ {
+ map gfx/lcannon/radial02.jpg
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+radialblast03
+{
+ cull disable
+ nopicmip
+ {
+ map gfx/lcannon/radial03.jpg
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+radialblast04
+{
+ cull disable
+ nopicmip
+ {
+ map gfx/lcannon/radial04.jpg
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+}
+
+radialblast05
+{
+ cull disable
+ nopicmip
+ {
+ map gfx/lcannon/radial05.jpg
+ blendFunc GL_ONE GL_ONE_MINUS_SRC_COLOR
+ }
+} \ No newline at end of file
diff --git a/assets/scripts/g_humanweaponfx.trail b/assets/scripts/g_humanweaponfx.trail
new file mode 100644
index 0000000..75d5711
--- /dev/null
+++ b/assets/scripts/g_humanweaponfx.trail
@@ -0,0 +1,25 @@
+models/weapons/mdriver/fireTS
+{
+ beam
+ {
+ shader gfx/mdriver/trail
+ width 3.0 3.0
+ textureType stretch 0.94 0.03
+ }
+ lifeTime 70
+}
+
+models/weapons/prifle/missileTS
+{
+ beam
+ {
+ shader gfx/prifle/red_streak
+
+ segments 2
+ width 6.0 4.0
+ alpha 1.0 0.1
+ segmentTime 120
+
+ textureType stretch 0.0 1.0
+ }
+} \ No newline at end of file
diff --git a/assets/scripts/g_jetpack.particle b/assets/scripts/g_jetpack.particle
new file mode 100644
index 0000000..398aafa
--- /dev/null
+++ b/assets/scripts/g_jetpack.particle
@@ -0,0 +1,95 @@
+jetPackDescendPS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/sprites/smoke_blue
+ displacement 0 0 0 0
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 50
+ velocity 0 0 -1 ~15
+
+ accelerationType static
+ accelerationDir linear
+ acceleration 0 0 -1 ~5
+ accelerationMagnitude 25
+
+ radius 0 5 40
+ alpha 250 .15 0
+ rotation 0 ~360 ~360
+ bounce 0.0
+
+ lifeTime 1000
+ }
+ count infinite
+ delay 0
+ period 45 - ~0%
+ }
+}
+
+jetPackAscendPS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/sprites/smoke_blue
+ displacement 0 0 0 0
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 50
+ velocity 0 0 -1 ~15
+
+ accelerationType static
+ accelerationDir linear
+ acceleration 0 0 -1 ~5
+ accelerationMagnitude 25
+
+ radius 0 5 40
+ alpha 250 .30 0
+ rotation 0 ~360 ~360
+ bounce 0.0
+
+ lifeTime 2000
+ }
+ count infinite
+ delay 0
+ period 45 - ~0%
+ }
+}
+
+jetPackHoverPS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/sprites/smoke_blue
+ displacement 0 0 0 0
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 50
+ velocity 0 0 -1 ~15
+
+ accelerationType static
+ accelerationDir linear
+ acceleration 0 0 -1 ~5
+ accelerationMagnitude 25
+
+ radius 0 5 40
+ alpha 250 .20 0
+ rotation 0 ~360 ~360
+ bounce 0.0
+
+ lifeTime 1500
+ }
+ count infinite
+ delay 0
+ period 45 - ~0%
+ }
+} \ No newline at end of file
diff --git a/assets/scripts/g_lightning.trail b/assets/scripts/g_lightning.trail
new file mode 100644
index 0000000..0dafd8d
--- /dev/null
+++ b/assets/scripts/g_lightning.trail
@@ -0,0 +1,61 @@
+models/buildables/tesla/zap // Tesla Generator Lightning
+{
+ beam
+ {
+ shader models/ammo/tesla/tesla_bolt
+
+ segments 9
+ width 8 8
+ color { 0.75 0.5 1 } -
+
+ textureType repeat front 100
+
+ jitter 12 200
+ jitter 2 20
+ }
+
+ beam
+ {
+ shader models/ammo/tesla/tesla_bolt
+
+ segments 9
+ width 8 8
+ color { 0.5 0.8 1 } -
+
+ textureType repeat back 50
+
+ jitter 12 150
+ jitter 2 30
+ }
+}
+
+models/weapons/lev2zap/lightning // Advanced Marauder Lightning
+{
+ beam
+ {
+ shader models/ammo/tesla/tesla_bolt
+
+ segments 5
+ width 16.0 16.0
+ color { 0.8 0.8 0.8 } -
+
+ textureType repeat front 100.0
+
+ jitter 4 200
+ jitter 1 20
+ }
+
+ beam
+ {
+ shader models/ammo/tesla/tesla_bolt
+
+ segments 8
+ width 5 5
+ color { 0.5 0.8 1 } -
+
+ textureType repeat back 50
+
+ jitter 2 150
+ jitter 1 30
+ }
+} \ No newline at end of file
diff --git a/assets/scripts/g_misc.shader b/assets/scripts/g_misc.shader
new file mode 100644
index 0000000..bafde0a
--- /dev/null
+++ b/assets/scripts/g_misc.shader
@@ -0,0 +1,141 @@
+// unsorted stuff
+
+gfx/misc/tracer
+{
+ cull none
+ {
+ map gfx/sprites/spark.tga
+ blendFunc blend
+ }
+}
+
+gfx/damage/fullscreen_painblend
+{
+ {
+ map gfx/damage/fullscreen_painblend.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ rgbGen vertex
+ alphaGen vertex
+ tcMod rotate 90
+ }
+
+ {
+ map gfx/damage/fullscreen_painblend.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ rgbGen vertex
+ alphaGen vertex
+ tcMod rotate -90
+ }
+}
+
+gfx/sprites/smoke
+{
+ cull none
+ entityMergable
+ {
+ map gfx/sprites/smoke.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ rgbGen vertex
+ alphaGen vertex
+ }
+}
+
+gfx/sprites/green_acid
+{
+ nopicmip
+ {
+ clampmap gfx/sprites/green_acid.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ rgbGen vertex
+ alphaGen vertex
+ }
+}
+
+gfx/sprites/spark
+{
+ cull none
+ {
+ map gfx/sprites/spark.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ rgbGen vertex
+ alphaGen vertex
+ }
+}
+
+gfx/sprites/bubble
+{
+ sort underwater
+ cull none
+ entityMergable
+ {
+ map gfx/sprites/bubble.jpg
+ blendFunc GL_ONE GL_ONE
+ rgbGen vertex
+ alphaGen vertex
+ }
+}
+
+gfx/sprites/poisoncloud
+{
+ cull none
+ entityMergable
+ {
+ map gfx/sprites/poisoncloud.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ rgbGen vertex
+ alphaGen vertex
+ }
+}
+
+gfx/sprites/chatballoon
+{
+ {
+ map gfx/sprites/chatballoon.tga
+ blendfunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ }
+}
+
+gfx/misc/nopower
+{
+ {
+ map gfx/misc/nopower.tga
+ blendfunc add
+ rgbGen identity
+ }
+}
+
+models/mapobjects/plant_life/fern_leaf
+{
+ cull disable
+ nopicmip
+ {
+ map models/mapobjects/plant_life/fern_leaf.tga
+ alphaFunc GE128
+ depthWrite
+ rgbGen vertex
+ }
+}
+
+models/mapobjects/plant_life/palm_leaf
+{
+ cull disable
+ nopicmip
+ {
+ map models/mapobjects/plant_life/palm_leaf.tga
+ alphaFunc GE128
+ depthWrite
+ rgbGen vertex
+ }
+}
+
+models/mapobjects/plant_life/grass
+{
+ cull disable
+ nopicmip
+ {
+ map models/mapobjects/plant_life/grass.tga
+ alphaFunc GE128
+ depthWrite
+ rgbGen vertex
+ }
+} \ No newline at end of file
diff --git a/assets/scripts/g_muzzleflashes.shader b/assets/scripts/g_muzzleflashes.shader
new file mode 100644
index 0000000..2a3e7b4
--- /dev/null
+++ b/assets/scripts/g_muzzleflashes.shader
@@ -0,0 +1,101 @@
+models/weapons/rifle/flash // Rifle
+{
+ sort additive
+ cull disable
+ {
+ map models/weapons/rifle/flash.jpg
+ tcMod rotate 3000
+ blendfunc GL_ONE GL_ONE
+ }
+}
+
+models/weapons/chaingun/flash // Chaingun
+{
+ sort additive
+ cull disable
+ {
+ map models/weapons/chaingun/flash.jpg
+ tcMod rotate 3000
+ blendfunc GL_ONE GL_ONE
+ }
+}
+
+models/weapons/flamer/flash // Flamer
+{
+ sort additive
+ cull disable
+ {
+ map models/weapons/flamer/flash.jpg
+ blendfunc GL_ONE GL_ONE
+ }
+}
+
+models/weapons/lgun/flash // Lasgun
+{
+ sort additive
+ cull disable
+ {
+ map models/weapons/lgun/flash.jpg
+ blendfunc GL_ONE GL_ONE
+ }
+}
+
+models/weapons/lcannon/flash // Lucifer Cannon
+{
+ sort additive
+ cull disable
+ {
+ map models/weapons/lcannon/flash.jpg
+ blendfunc GL_ONE GL_ONE
+ }
+}
+
+models/weapons/mdriver/flash // Mass Driver
+{
+ sort additive
+ cull disable
+ {
+ map models/weapons/mdriver/flash.jpg
+ blendfunc GL_ONE GL_ONE
+ }
+}
+
+models/weapons/psaw/flash // Pain Saw
+{
+ sort additive
+ cull disable
+ {
+ map models/weapons/psaw/flash.jpg
+ blendfunc GL_ONE GL_ONE
+ }
+}
+
+models/weapons/prifle/flash // Pulse Rifle
+{
+ sort additive
+ cull disable
+ {
+ map models/weapons/prifle/flash.jpg
+ blendfunc GL_ONE GL_ONE
+ }
+}
+
+models/weapons/shotgun/flash // Shotgun
+{
+ sort additive
+ cull disable
+ {
+ map models/weapons/shotgun/flash.jpg
+ blendfunc GL_ONE GL_ONE
+ }
+}
+
+models/weapons/blaster/flash // Blaster
+{
+ sort additive
+ cull disable
+ {
+ map models/weapons/blaster/flash.jpg
+ blendfunc GL_ONE GL_ONE
+ }
+}
diff --git a/assets/scripts/particles_reference.txt b/assets/scripts/particles_reference.txt
new file mode 100644
index 0000000..612c162
--- /dev/null
+++ b/assets/scripts/particles_reference.txt
@@ -0,0 +1,58 @@
+Particle system variables
+--------------------------------------------------------------------------------
+
+shader <fps> | sync <shader1> <shader2> ... <shaderN> - this specifies the shaders to use for the particle. The frame rate can be set to a static rate or the sync parameter can be used in which case the frame rate will be synchronised to the lifetime of the particle such that the first frame is displayed on birth and the last frame is displayed immediately before death.
+model <model1> <model2> ... <modelN> - use one of the specified models as the particle. This cannot be used in conjunction with the shader keyword.
+modelAnmation <firstFrame> <numFrames> <loopFrames> <fps> | sync - animation parameters to use when model particles are employed.
+
+lifeTime <time> - the lifetime of the particle.
+
+radius <delay> <initial> <final> - the size of the particle throughout its lifetime. The delay parameter specifies the time in msec before radius scaling begins. The initial and final parameters specify the radii of the particle in quake units.
+alpha <delay> <initial> <final> - the opacity of the particle throughout its lifetime. The delay parameter specifies the time in msec before alpha scaling begins. The initial and final parameters specify the alpha of the particle where 1.0 is totally opaque and 0.0 is totally transparent.
+rotation <delay> <initial> <final> - the rotation of the particle throughout its lifetime. The delay parameter specifies the time in msec before the rotation begins. The initial and final parameters specify the rotation of the particle in degrees.
+
+displacement <x> <y> <z> <variance> - a static displacement about the attachment point. The variance parameter specifies a random displacement in all axes.
+normalDisplacement <displacement> - for particle systems that have their normal set (impact particle systems for example) this specifies the magnitude of a displacement along the normal.
+
+velocityType static | static_transform |tag |cent |normal - this specifies how the particle will compute its initial velocity. static means it is specified statically in the .particle file, static_transform means the same, except that it is transformed by the orientation matrix of what it is attached to, tag means the velocity is in the direction of the tag it is attached to, cent means the velocity is in the direction of the cent it is attached to and normal means the velocity is in the direction of the particle system normal.
+velocityDir linear | point - this specifies whether the initial velocity is computed as a simple direction or as the direction towards a secondary point (defined by velocityPoint or dynamically through velocityType cent).
+velocity <x> <y> <z> <variance> - for when velocityType static is present this specifies the direction. The variance here is specified in degrees e.g. "~5" - up to 5 degrees deviation.
+velocityMagnitude <magnitude> - the magnitude of the velocity.
+velocityPoint <x> <y> <z> <variance> - for when velocityType static and velocityDir point are present this specifies the point to move towards.
+parentVelocityFraction <fraction> - for when the particle system is attached to a cent this specifies the fraction of the cent’s velocity that is added to the particle’s velocity.
+
+accelerationType static | static_transform | tag | cent | normal - this specifies how the particle will compute its acceleration. static means it is specified statically in the .particle file, static_transform means the same, except that it is transformed by the orientation matrix of what it is attached to, tag means the acceleration is in the direction of the tag it is attached to, cent means the acceleration is in the direction of the cent it is attached to and normal means the acceleration is in the direction of the particle system normal.
+accelerationDir linear | point - this specifies whether the acceleration is computed as a simple direction or as the direction towards a secondary point (defined by accelerationPoint or dynamically through accelerationType cent).
+acceleration <x> <y> <z> <variance> - for when accelerationType static is present this specifies the direction. The variance here is specified in degrees e.g. "~5" - up to 5 degrees deviation.
+accelerationMagnitude <magnitude> - the magnitude of the acceleration.
+accelerationPoint <x> <y> <z> <variance> - for when accelerationType static and accelerationDir point are present this specifies the point to move towards.
+bounce <fraction> | cull - the fraction of velocity that is reflected when a particle collides. If this is set to 0.0 the particle won’t collide. When cull is used particles are culled as soon as they collide with objects.
+bounceMark <count> <radius> <shader> - make a mark at each bounce point for up to <count> bounces.
+bounceSound <count> <sound> - make a sound at each bounce point for up to <count> bounces.
+
+dynamicLight <delayRadius> <startRadius> <endRadius> { <r> <g> <b> } - attach a dynamic light to this particle.
+color <delay> { <ir> <ig> <ib> } { <fr> <fg> <fb> } - color the particle where <i.> refers to the initial color component and <f.> refers to the final color component.
+
+childSystem <particle system> - specifies a particle system to attach to this particle.
+childTrailSystem <trail system> - specifies a trail system to attach to this particle.
+onDeathSystem <particle system> - specifies a particle system to spawn at the point where this particle died.
+
+overdrawProtection - cull particles that occupy a large amount of screen space.
+realLight - light particles using the lightgrid instead of fullbright.
+cullOnStartSolid - cull particles that are spawned inside brushes.
+
+--------------------------------------------------------------------------------
+
+
+Notes:
+------
+
+* '|' means 'or'
+* setting magnitude to 0 might cause issues
+
+
+Numerical operators
+-------------------
+~ random
+- unspecified
+% percentage \ No newline at end of file
diff --git a/assets/scripts/ui_crosshairs.shader b/assets/scripts/ui_crosshairs.shader
new file mode 100644
index 0000000..278a296
--- /dev/null
+++ b/assets/scripts/ui_crosshairs.shader
@@ -0,0 +1,96 @@
+gfx/2d/crosshair-alien_s
+{
+ nopicmip
+ {
+ map gfx/2d/crosshair-alien.tga
+ blendfunc blend
+ rgbGen vertex
+ }
+}
+
+gfx/2d/crosshair-rifle_s
+{
+ nopicmip
+ {
+ map gfx/2d/crosshair-rifle.tga
+ blendfunc blend
+ rgbGen vertex
+ }
+}
+
+gfx/2d/crosshair-prifle_s
+{
+ nopicmip
+ {
+ map gfx/2d/crosshair-prifle.tga
+ blendfunc blend
+ rgbGen vertex
+ }
+}
+
+gfx/2d/crosshair-chaingun_s
+{
+ nopicmip
+ {
+ map gfx/2d/crosshair-chaingun.tga
+ blendfunc blend
+ rgbGen vertex
+ }
+}
+
+gfx/2d/crosshair-mdriver_s
+{
+ nopicmip
+ {
+ map gfx/2d/crosshair-mdriver.tga
+ blendfunc blend
+ rgbGen vertex
+ }
+}
+
+gfx/2d/crosshair-lcannon_s
+{
+ nopicmip
+ {
+ map gfx/2d/crosshair-lcannon.tga
+ blendfunc blend
+ rgbGen vertex
+ }
+}
+
+gfx/2d/crosshair-lgun_s
+{
+ nopicmip
+ {
+ map gfx/2d/crosshair-lgun.tga
+ blendfunc blend
+ rgbGen vertex
+ }
+}
+
+gfx/2d/crosshair-flamer_s
+{
+ nopicmip
+ {
+ clampmap gfx/2d/crosshair-flamer1.tga
+ blendfunc blend
+ tcmod rotate 5
+ rgbGen vertex
+ }
+ {
+ clampmap gfx/2d/crosshair-flamer1.tga
+ blendfunc blend
+ tcmod rotate -5
+ rgbGen vertex
+ }
+}
+
+gfx/2d/crosshair-psaw
+{
+ nopicmip
+ {
+ map gfx/2d/crosshair-psaw.tga
+ blendfunc blend
+ rgbGen vertex
+ }
+} \ No newline at end of file
diff --git a/assets/scripts/ui_hud.shader b/assets/scripts/ui_hud.shader
new file mode 100644
index 0000000..f970d56
--- /dev/null
+++ b/assets/scripts/ui_hud.shader
@@ -0,0 +1,38 @@
+ui/assets/neutral/squad_h
+{
+ nopicmip
+ {
+ map ui/assets/neutral/squad_h.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ rgbgen vertex
+ }
+}
+
+ui/assets/neutral/squad_v
+{
+ nopicmip
+ {
+ map ui/assets/neutral/squad_v.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ rgbgen vertex
+ }
+}
+
+gfx/damage/fullscreen_painblend
+{
+ {
+ map gfx/damage/fullscreen_painblend.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ rgbGen vertex
+ alphaGen vertex
+ tcMod rotate 90
+ }
+
+ {
+ map gfx/damage/fullscreen_painblend.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ rgbGen vertex
+ alphaGen vertex
+ tcMod rotate -90
+ }
+} \ No newline at end of file
diff --git a/assets/scripts/ui_mainmenu.shader b/assets/scripts/ui_mainmenu.shader
new file mode 100644
index 0000000..3664f3c
--- /dev/null
+++ b/assets/scripts/ui_mainmenu.shader
@@ -0,0 +1,43 @@
+models/splash/bright_star
+{
+ nopicmip
+ {
+ map models/splash/bright_star.tga
+ blendfunc add
+ rgbGen identity
+ }
+ {
+ map models/splash/bright_star_2.tga
+ blendfunc add
+ rgbGen wave sin 0 0.5 0 0.09
+ }
+}
+
+models/splash/nebula
+{
+ nopicmip
+ {
+ map models/splash/nebula.tga
+ blendfunc add
+ rgbGen wave sin 0.5 1 5 0.05
+ tcMod scale -1 1
+ }
+ {
+ map models/splash/nebula_2.tga
+ blendfunc add
+ rgbGen wave sin 0.3 1 2.5 0.05
+ tcMod scale -1 1
+ }
+}
+
+models/splash/trem_black
+{
+ nopicmip
+ {
+ map ui/assets/title.tga
+ blendfunc blend
+ //alphaFunc GE128
+ rgbGen identity
+ }
+}
+
diff --git a/assets/scripts/water.shader b/assets/scripts/water.shader
new file mode 100644
index 0000000..ff306cd
--- /dev/null
+++ b/assets/scripts/water.shader
@@ -0,0 +1,57 @@
+//deep ocean
+textures/misc/dark_water
+{
+ {
+ map textures/misc/dark_water.tga
+ tcMod rotate 1
+ }
+ {
+ map textures/misc/caustic.tga
+ blendfunc add
+ rgbGen wave sin 0 1 0 0.05
+ tcMod scale 0.5 0.5
+ tcMod rotate 1
+ }
+ {
+ map textures/misc/caustic.tga
+ blendfunc add
+ rgbGen wave sin 0 1 0 -0.05
+ tcMod scale -0.5 -0.5
+ tcMod rotate 1
+ }
+}
+
+//tank bubbles
+textures/misc/bubbles
+{
+ cull disable
+ {
+ map textures/misc/bubbles.tga
+ blendfunc add
+ rgbGen wave noise 0 1 0 0.02
+ tcMod scroll -0.01 0.05
+ tcMod scale 2 2
+ }
+ {
+ map textures/misc/bubbles.tga
+ blendfunc add
+ rgbGen wave noise 0 1 0 0.02
+ tcMod scroll 0.01 0.02
+ tcMod scale -2 2
+ }
+}
+
+//foamy water top
+textures/misc/foam
+{
+ surfaceparm nonsolid
+ surfaceparm trans
+ surfaceparm water
+ deformVertexes wave 128 sin 0 5 6 0.5
+ tessSize 32
+ cull disable
+ {
+ map textures/misc/foam.tga
+ blendfunc add
+ }
+} \ No newline at end of file