Flamethrower partially implemented.
I decided on making it default to the old style. The alternate model will be available as a separate add-on, rather than use a cvar, because damn if that was complicated to add. Fix Impaler select anim when thrown and picked back up.
This commit is contained in:
parent
a95e4721f2
commit
0cd7b432e2
24 changed files with 537 additions and 24 deletions
|
|
@ -59,6 +59,8 @@
|
||||||
changes to accomodate for it. I still think the texture sucks. It should be
|
changes to accomodate for it. I still think the texture sucks. It should be
|
||||||
switchable, just like how you can change weapon sprites in Smooth Doom.
|
switchable, just like how you can change weapon sprites in Smooth Doom.
|
||||||
- Ammo is just a recolored explosive barrel.
|
- Ammo is just a recolored explosive barrel.
|
||||||
|
- Decided to default to the old model instead of the new one.
|
||||||
|
- Need to re-add the flame.
|
||||||
|
|
||||||
### Quadshot
|
### Quadshot
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -38,9 +38,6 @@ server bool sting_riflel = false; // old rifle flashlight
|
||||||
server bool sting_razor = false; // razorjack blade charging
|
server bool sting_razor = false; // razorjack blade charging
|
||||||
// hold primary fire to increase the
|
// hold primary fire to increase the
|
||||||
// spin up to 3 levels
|
// spin up to 3 levels
|
||||||
server bool sting_flamet = false; // use flamethrower model based on old
|
|
||||||
// design and texture rather than the
|
|
||||||
// modern redesign
|
|
||||||
server bool sting_automags = false; // automag dual wielding
|
server bool sting_automags = false; // automag dual wielding
|
||||||
// oldskool did this, and you'll come
|
// oldskool did this, and you'll come
|
||||||
// to realize that it wasn't a good
|
// to realize that it wasn't a good
|
||||||
|
|
|
||||||
|
|
@ -813,6 +813,10 @@ HardwareShader Texture "models/ElecFX.png"
|
||||||
{
|
{
|
||||||
Shader "shaders/glsl/ElecFX.fp"
|
Shader "shaders/glsl/ElecFX.fp"
|
||||||
}
|
}
|
||||||
|
HardwareShader Texture "models/FlametFX.png"
|
||||||
|
{
|
||||||
|
Shader "shaders/glsl/FlametFX.fp"
|
||||||
|
}
|
||||||
// PP shaders
|
// PP shaders
|
||||||
HardwareShader PostProcess scene
|
HardwareShader PostProcess scene
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -233,7 +233,6 @@ STING_RIFLEL = "Rifle flashlight";
|
||||||
STING_RAZOR = "Razorjack charging";
|
STING_RAZOR = "Razorjack charging";
|
||||||
STING_EHOLD = "Loaded Eightball can be held for 2 seconds";
|
STING_EHOLD = "Loaded Eightball can be held for 2 seconds";
|
||||||
STING_BHOLD = "Charged Biorifle can be held for 2 seconds";
|
STING_BHOLD = "Charged Biorifle can be held for 2 seconds";
|
||||||
STING_FLAMET = "Old Flamethrower model";
|
|
||||||
STING_DOPTS = "Weapon dual wielding";
|
STING_DOPTS = "Weapon dual wielding";
|
||||||
STING_AUTODUAL = "Automags";
|
STING_AUTODUAL = "Automags";
|
||||||
STING_PROTODUAL = "Protomags";
|
STING_PROTODUAL = "Protomags";
|
||||||
|
|
@ -470,7 +469,6 @@ STING_RIFLEL = "Linterna de Rifle";
|
||||||
STING_RAZOR = "Carga de Razorjack";
|
STING_RAZOR = "Carga de Razorjack";
|
||||||
STING_EHOLD = "El Eightball se puede mantener cargado por 2 segundos";
|
STING_EHOLD = "El Eightball se puede mantener cargado por 2 segundos";
|
||||||
STING_BHOLD = "El Biorifle se puede mantener cargado por 2 segundos";
|
STING_BHOLD = "El Biorifle se puede mantener cargado por 2 segundos";
|
||||||
STING_FLAMET = "Modelo viejo de Lanzallamas";
|
|
||||||
STING_DOPTS = "Armas a dos manos";
|
STING_DOPTS = "Armas a dos manos";
|
||||||
STING_AUTODUAL = "Autoarmas";
|
STING_AUTODUAL = "Autoarmas";
|
||||||
STING_PROTODUAL = "Protoarmas";
|
STING_PROTODUAL = "Protoarmas";
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,6 @@ OptionMenu "UnrealOptionMenu"
|
||||||
Option "$STING_RAZOR", "sting_razor", "YesNo"
|
Option "$STING_RAZOR", "sting_razor", "YesNo"
|
||||||
Option "$STING_EHOLD", "sting_ehold", "YesNo"
|
Option "$STING_EHOLD", "sting_ehold", "YesNo"
|
||||||
Option "$STING_BHOLD", "sting_bhold", "YesNo"
|
Option "$STING_BHOLD", "sting_bhold", "YesNo"
|
||||||
Option "$STING_FLAMET", "sting_flamet", "YesNo"
|
|
||||||
StaticText " "
|
StaticText " "
|
||||||
StaticText "$STING_DOPTS", "Gold"
|
StaticText "$STING_DOPTS", "Gold"
|
||||||
Option "$STING_AUTODUAL", "sting_automags", "YesNo"
|
Option "$STING_AUTODUAL", "sting_automags", "YesNo"
|
||||||
|
|
|
||||||
261
modeldef.napalm
261
modeldef.napalm
|
|
@ -15,7 +15,8 @@ Model "UFlamethrower"
|
||||||
{
|
{
|
||||||
Path "models"
|
Path "models"
|
||||||
Model 1 "FlameTPick_d.3d"
|
Model 1 "FlameTPick_d.3d"
|
||||||
Skin 1 "JNapalm1_.png"
|
SurfaceSkin 1 0 "JNapalm1_.png"
|
||||||
|
SurfaceSkin 1 1 "Flamet_.png"
|
||||||
ZOffset 10
|
ZOffset 10
|
||||||
AngleOffset -90
|
AngleOffset -90
|
||||||
Scale 0.1 0.1 0.12
|
Scale 0.1 0.1 0.12
|
||||||
|
|
@ -30,16 +31,254 @@ Model "UFlamethrower"
|
||||||
Model "UFlamethrower"
|
Model "UFlamethrower"
|
||||||
{
|
{
|
||||||
Path "models"
|
Path "models"
|
||||||
Model 3 "FlameTOldPick_d.3d"
|
Model 2 "FlameT_d.3d"
|
||||||
SurfaceSkin 3 0 "JNapalm1_.png"
|
SurfaceSkin 2 2 "FlametFX.png"
|
||||||
SurfaceSkin 3 1 "Flamet_.png"
|
|
||||||
ZOffset 10
|
|
||||||
AngleOffset -90
|
AngleOffset -90
|
||||||
Scale 0.1 0.1 0.12
|
Scale 0.1 -0.06 0.1
|
||||||
|
Offset 5 -8 -6
|
||||||
|
|
||||||
FrameIndex OFLP B 3 0
|
// Down
|
||||||
|
FrameIndex FLFD A 2 1
|
||||||
ZOffset 12
|
FrameIndex FLFD B 2 2
|
||||||
ROTATING
|
FrameIndex FLFD C 2 3
|
||||||
FrameIndex OFLP A 3 0
|
FrameIndex FLFD D 2 4
|
||||||
|
// Select
|
||||||
|
FrameIndex FLFS A 2 16
|
||||||
|
FrameIndex FLFS B 2 17
|
||||||
|
FrameIndex FLFS C 2 18
|
||||||
|
FrameIndex FLFS D 2 19
|
||||||
|
// Idle
|
||||||
|
FrameIndex FLFI A 2 20
|
||||||
|
FrameIndex FLFI B 2 21
|
||||||
|
FrameIndex FLFI C 2 22
|
||||||
|
FrameIndex FLFI D 2 23
|
||||||
|
FrameIndex FLFI E 2 24
|
||||||
|
FrameIndex FLFI F 2 25
|
||||||
|
FrameIndex FLFI G 2 26
|
||||||
|
// PreFire
|
||||||
|
FrameIndex FLFF A 2 27
|
||||||
|
FrameIndex FLFF B 2 28
|
||||||
|
FrameIndex FLFF C 2 29
|
||||||
|
FrameIndex FLFF D 2 30
|
||||||
|
FrameIndex FLFF E 2 31
|
||||||
|
// Fire
|
||||||
|
FrameIndex FLFF F 2 32
|
||||||
|
FrameIndex FLFF G 2 33
|
||||||
|
FrameIndex FLFF H 2 34
|
||||||
|
FrameIndex FLFF I 2 35
|
||||||
|
FrameIndex FLFF J 2 36
|
||||||
|
FrameIndex FLFF K 2 37
|
||||||
|
// PostFire
|
||||||
|
FrameIndex FLFF L 2 38
|
||||||
|
FrameIndex FLFF M 2 39
|
||||||
|
FrameIndex FLFF N 2 40
|
||||||
|
FrameIndex FLFF O 2 41
|
||||||
|
FrameIndex FLFF P 2 42
|
||||||
|
// AltFireStart
|
||||||
|
FrameIndex FLFA A 2 43
|
||||||
|
FrameIndex FLFA B 2 44
|
||||||
|
FrameIndex FLFA C 2 45
|
||||||
|
FrameIndex FLFA D 2 46
|
||||||
|
FrameIndex FLFA E 2 47
|
||||||
|
// AltFireRep
|
||||||
|
FrameIndex FLFA F 2 48
|
||||||
|
FrameIndex FLFA G 2 49
|
||||||
|
FrameIndex FLFA H 2 50
|
||||||
|
FrameIndex FLFA I 2 51
|
||||||
|
FrameIndex FLFA J 2 52
|
||||||
|
FrameIndex FLFA K 2 53
|
||||||
|
FrameIndex FLFA L 2 54
|
||||||
|
// AltFireRelease
|
||||||
|
FrameIndex FLFA M 2 55
|
||||||
|
FrameIndex FLFA N 2 56
|
||||||
|
FrameIndex FLFA O 2 57
|
||||||
|
FrameIndex FLFA P 2 58
|
||||||
|
FrameIndex FLFA Q 2 59
|
||||||
|
FrameIndex FLFA R 2 60
|
||||||
|
FrameIndex FLFA S 2 61
|
||||||
|
FrameIndex FLFA T 2 62
|
||||||
|
FrameIndex FLFA U 2 63
|
||||||
|
FrameIndex FLFA V 2 64
|
||||||
|
FrameIndex FLFA W 2 65
|
||||||
|
FrameIndex FLFA X 2 66
|
||||||
|
// AltFireEnd
|
||||||
|
FrameIndex FLFA Y 2 67
|
||||||
|
FrameIndex FLFA Z 2 68
|
||||||
|
FrameIndex FLFA [ 2 69
|
||||||
|
FrameIndex FLFA \ 2 70
|
||||||
|
FrameIndex FLFA ] 2 71
|
||||||
|
FrameIndex FFA2 A 2 72
|
||||||
|
FrameIndex FFA2 B 2 73
|
||||||
|
FrameIndex FFA2 C 2 74
|
||||||
|
FrameIndex FFA2 D 2 75
|
||||||
|
// Twiddle
|
||||||
|
FrameIndex FLFT A 2 76
|
||||||
|
FrameIndex FLFT B 2 77
|
||||||
|
FrameIndex FLFT C 2 78
|
||||||
|
FrameIndex FLFT D 2 79
|
||||||
|
FrameIndex FLFT E 2 80
|
||||||
|
FrameIndex FLFT F 2 81
|
||||||
|
FrameIndex FLFT G 2 82
|
||||||
|
FrameIndex FLFT H 2 83
|
||||||
|
FrameIndex FLFT I 2 84
|
||||||
|
FrameIndex FLFT J 2 85
|
||||||
|
FrameIndex FLFT K 2 86
|
||||||
|
FrameIndex FLFT L 2 87
|
||||||
|
FrameIndex FLFT M 2 88
|
||||||
|
FrameIndex FLFT N 2 89
|
||||||
|
FrameIndex FLFT O 2 90
|
||||||
|
FrameIndex FLFT P 2 91
|
||||||
|
FrameIndex FLFT Q 2 92
|
||||||
|
FrameIndex FLFT R 2 93
|
||||||
|
FrameIndex FLFT S 2 94
|
||||||
|
FrameIndex FLFT T 2 95
|
||||||
|
FrameIndex FLFT U 2 96
|
||||||
|
FrameIndex FLFT V 2 97
|
||||||
|
FrameIndex FLFT W 2 98
|
||||||
|
FrameIndex FLFT X 2 99
|
||||||
|
FrameIndex FLFT Y 2 100
|
||||||
|
FrameIndex FLFT Z 2 101
|
||||||
|
FrameIndex FLFT [ 2 102
|
||||||
|
FrameIndex FLFT \ 2 103
|
||||||
|
FrameIndex FLFT ] 2 104
|
||||||
|
FrameIndex FFT2 A 2 105
|
||||||
|
FrameIndex FFT2 B 2 106
|
||||||
|
FrameIndex FFT2 C 2 107
|
||||||
|
FrameIndex FFT2 D 2 108
|
||||||
|
FrameIndex FFT2 E 2 109
|
||||||
|
FrameIndex FFT2 F 2 110
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Model "UFlamethrower"
|
||||||
|
{
|
||||||
|
Path "models"
|
||||||
|
Model 0 "FlameT_d.3d"
|
||||||
|
SurfaceSkin 0 0 "Flamet.png"
|
||||||
|
SurfaceSkin 0 1 "Automa1.png"
|
||||||
|
AngleOffset -90
|
||||||
|
Scale 0.1 -0.06 0.1
|
||||||
|
Offset 5 -8 -6
|
||||||
|
|
||||||
|
// Down
|
||||||
|
FrameIndex FLMD A 0 1
|
||||||
|
FrameIndex FLMD B 0 2
|
||||||
|
FrameIndex FLMD C 0 3
|
||||||
|
FrameIndex FLMD D 0 4
|
||||||
|
FrameIndex FLMD E 0 5
|
||||||
|
FrameIndex FLMD F 0 6
|
||||||
|
FrameIndex FLMD G 0 7
|
||||||
|
FrameIndex FLMD H 0 8
|
||||||
|
FrameIndex FLMD I 0 9
|
||||||
|
FrameIndex FLMD J 0 10
|
||||||
|
// Select
|
||||||
|
FrameIndex FLMS A 0 10
|
||||||
|
FrameIndex FLMS B 0 11
|
||||||
|
FrameIndex FLMS C 0 12
|
||||||
|
FrameIndex FLMS D 0 13
|
||||||
|
FrameIndex FLMS E 0 14
|
||||||
|
FrameIndex FLMS F 0 15
|
||||||
|
FrameIndex FLMS G 0 16
|
||||||
|
FrameIndex FLMS H 0 17
|
||||||
|
FrameIndex FLMS I 0 18
|
||||||
|
FrameIndex FLMS J 0 19
|
||||||
|
// Idle
|
||||||
|
FrameIndex FLMI A 0 20
|
||||||
|
FrameIndex FLMI B 0 21
|
||||||
|
FrameIndex FLMI C 0 22
|
||||||
|
FrameIndex FLMI D 0 23
|
||||||
|
FrameIndex FLMI E 0 24
|
||||||
|
FrameIndex FLMI F 0 25
|
||||||
|
FrameIndex FLMI G 0 26
|
||||||
|
// PreFire
|
||||||
|
FrameIndex FLMF A 0 27
|
||||||
|
FrameIndex FLMF B 0 28
|
||||||
|
FrameIndex FLMF C 0 29
|
||||||
|
FrameIndex FLMF D 0 30
|
||||||
|
FrameIndex FLMF E 0 31
|
||||||
|
// Fire
|
||||||
|
FrameIndex FLMF F 0 32
|
||||||
|
FrameIndex FLMF G 0 33
|
||||||
|
FrameIndex FLMF H 0 34
|
||||||
|
FrameIndex FLMF I 0 35
|
||||||
|
FrameIndex FLMF J 0 36
|
||||||
|
FrameIndex FLMF K 0 37
|
||||||
|
// PostFire
|
||||||
|
FrameIndex FLMF L 0 38
|
||||||
|
FrameIndex FLMF M 0 39
|
||||||
|
FrameIndex FLMF N 0 40
|
||||||
|
FrameIndex FLMF O 0 41
|
||||||
|
FrameIndex FLMF P 0 42
|
||||||
|
// AltFireStart
|
||||||
|
FrameIndex FLMA A 0 43
|
||||||
|
FrameIndex FLMA B 0 44
|
||||||
|
FrameIndex FLMA C 0 45
|
||||||
|
FrameIndex FLMA D 0 46
|
||||||
|
FrameIndex FLMA E 0 47
|
||||||
|
// AltFireRep
|
||||||
|
FrameIndex FLMA F 0 48
|
||||||
|
FrameIndex FLMA G 0 49
|
||||||
|
FrameIndex FLMA H 0 50
|
||||||
|
FrameIndex FLMA I 0 51
|
||||||
|
FrameIndex FLMA J 0 52
|
||||||
|
FrameIndex FLMA K 0 53
|
||||||
|
FrameIndex FLMA L 0 54
|
||||||
|
// AltFireRelease
|
||||||
|
FrameIndex FLMA M 0 55
|
||||||
|
FrameIndex FLMA N 0 56
|
||||||
|
FrameIndex FLMA O 0 57
|
||||||
|
FrameIndex FLMA P 0 58
|
||||||
|
FrameIndex FLMA Q 0 59
|
||||||
|
FrameIndex FLMA R 0 60
|
||||||
|
FrameIndex FLMA S 0 61
|
||||||
|
FrameIndex FLMA T 0 62
|
||||||
|
FrameIndex FLMA U 0 63
|
||||||
|
FrameIndex FLMA V 0 64
|
||||||
|
FrameIndex FLMA W 0 65
|
||||||
|
FrameIndex FLMA X 0 66
|
||||||
|
// AltFireEnd
|
||||||
|
FrameIndex FLMA Y 0 67
|
||||||
|
FrameIndex FLMA Z 0 68
|
||||||
|
FrameIndex FLMA [ 0 69
|
||||||
|
FrameIndex FLMA \ 0 70
|
||||||
|
FrameIndex FLMA ] 0 71
|
||||||
|
FrameIndex FLA2 A 0 72
|
||||||
|
FrameIndex FLA2 B 0 73
|
||||||
|
FrameIndex FLA2 C 0 74
|
||||||
|
FrameIndex FLA2 D 0 75
|
||||||
|
// Twiddle
|
||||||
|
FrameIndex FLMT A 0 76
|
||||||
|
FrameIndex FLMT B 0 77
|
||||||
|
FrameIndex FLMT C 0 78
|
||||||
|
FrameIndex FLMT D 0 79
|
||||||
|
FrameIndex FLMT E 0 80
|
||||||
|
FrameIndex FLMT F 0 81
|
||||||
|
FrameIndex FLMT G 0 82
|
||||||
|
FrameIndex FLMT H 0 83
|
||||||
|
FrameIndex FLMT I 0 84
|
||||||
|
FrameIndex FLMT J 0 85
|
||||||
|
FrameIndex FLMT K 0 86
|
||||||
|
FrameIndex FLMT L 0 87
|
||||||
|
FrameIndex FLMT M 0 88
|
||||||
|
FrameIndex FLMT N 0 89
|
||||||
|
FrameIndex FLMT O 0 90
|
||||||
|
FrameIndex FLMT P 0 91
|
||||||
|
FrameIndex FLMT Q 0 92
|
||||||
|
FrameIndex FLMT R 0 93
|
||||||
|
FrameIndex FLMT S 0 94
|
||||||
|
FrameIndex FLMT T 0 95
|
||||||
|
FrameIndex FLMT U 0 96
|
||||||
|
FrameIndex FLMT V 0 97
|
||||||
|
FrameIndex FLMT W 0 98
|
||||||
|
FrameIndex FLMT X 0 99
|
||||||
|
FrameIndex FLMT Y 0 100
|
||||||
|
FrameIndex FLMT Z 0 101
|
||||||
|
FrameIndex FLMT [ 0 102
|
||||||
|
FrameIndex FLMT \ 0 103
|
||||||
|
FrameIndex FLMT ] 0 104
|
||||||
|
FrameIndex FLT2 A 0 105
|
||||||
|
FrameIndex FLT2 B 0 106
|
||||||
|
FrameIndex FLT2 C 0 107
|
||||||
|
FrameIndex FLT2 D 0 108
|
||||||
|
FrameIndex FLT2 E 0 109
|
||||||
|
FrameIndex FLT2 F 0 110
|
||||||
|
}
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
models/FlametFX.png
Normal file
BIN
models/FlametFX.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 404 B |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
50
shaders/glsl/FlametFX.fp
Normal file
50
shaders/glsl/FlametFX.fp
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
/* https://www.shadertoy.com/view/XsXSWS */
|
||||||
|
|
||||||
|
vec2 hash( vec2 p )
|
||||||
|
{
|
||||||
|
p = vec2( dot(p,vec2(127.1,311.7)),
|
||||||
|
dot(p,vec2(269.5,183.3)) );
|
||||||
|
return -1.0 + 2.0*fract(sin(p)*43758.5453123);
|
||||||
|
}
|
||||||
|
|
||||||
|
float noise( in vec2 p )
|
||||||
|
{
|
||||||
|
const float K1 = 0.366025404; // (sqrt(3)-1)/2;
|
||||||
|
const float K2 = 0.211324865; // (3-sqrt(3))/6;
|
||||||
|
vec2 i = floor( p + (p.x+p.y)*K1 );
|
||||||
|
vec2 a = p - i + (i.x+i.y)*K2;
|
||||||
|
vec2 o = (a.x>a.y) ? vec2(1.0,0.0) : vec2(0.0,1.0);
|
||||||
|
vec2 b = a - o + K2;
|
||||||
|
vec2 c = a - 1.0 + 2.0*K2;
|
||||||
|
vec3 h = max( 0.5-vec3(dot(a,a), dot(b,b), dot(c,c) ), 0.0 );
|
||||||
|
vec3 n = h*h*h*h*vec3( dot(a,hash(i+0.0)), dot(b,hash(i+o)), dot(c,hash(i+1.0)));
|
||||||
|
return dot( n, vec3(70.0) );
|
||||||
|
}
|
||||||
|
|
||||||
|
float fbm(vec2 uv)
|
||||||
|
{
|
||||||
|
float f;
|
||||||
|
mat2 m = mat2( 1.6, 1.2, -1.2, 1.6 );
|
||||||
|
f = 0.5000*noise( uv ); uv = m*uv;
|
||||||
|
f += 0.2500*noise( uv ); uv = m*uv;
|
||||||
|
f += 0.1250*noise( uv ); uv = m*uv;
|
||||||
|
f += 0.0625*noise( uv ); uv = m*uv;
|
||||||
|
f = 0.5 + 0.5*f;
|
||||||
|
return f;
|
||||||
|
}
|
||||||
|
|
||||||
|
vec4 ProcessTexel()
|
||||||
|
{
|
||||||
|
vec2 uv = vTexCoord.st;
|
||||||
|
uv.y = 1.0-uv.y;
|
||||||
|
vec2 q = uv;
|
||||||
|
float T3 = 1.2*timer;
|
||||||
|
q.x = mod(q.x,1.)-0.5;
|
||||||
|
q.y -= 0.2;
|
||||||
|
float n = fbm(q*vec2(1.2,.3) - vec2(0,T3));
|
||||||
|
float c = 1. - 12. * pow( max( 0., length(q*vec2(1.+q.y*1.25,.85) ) - n * max( 0., q.y+.15 ) ),1.5 );
|
||||||
|
float c1 = n * c * (1.5-pow(1.25*uv.y,4.));
|
||||||
|
c1=clamp(c1,0.,1.);
|
||||||
|
vec3 col = vec3(c1*c1*c1*c1,1.2*c1*c1*c1,1.7*c1*c1);
|
||||||
|
return vec4(col,1.0);
|
||||||
|
}
|
||||||
|
|
@ -317,6 +317,14 @@ flamegun/alt flamgalt
|
||||||
flamegun/exp expl04
|
flamegun/exp expl04
|
||||||
$limit flamegun/exp 16
|
$limit flamegun/exp 16
|
||||||
|
|
||||||
|
flamet/select flamtsel
|
||||||
|
flamet/idle flamtidl
|
||||||
|
flamet/down flamtide
|
||||||
|
flamet/fire flamtfir
|
||||||
|
flamet/fireend flamtstp
|
||||||
|
flamet/charge flamtchg
|
||||||
|
flamet/altfire flamtalt
|
||||||
|
|
||||||
translator/event transa3
|
translator/event transa3
|
||||||
|
|
||||||
detector/start detact
|
detector/start detact
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,4 @@
|
||||||
Sprite "FLMAA0",1,1{}
|
Sprite "FLMAA0",1,1{}
|
||||||
Sprite "FLMPA0",1,1{}
|
Sprite "FLMPA0",1,1{}
|
||||||
Sprite "OFLPA0",1,1{}
|
|
||||||
Sprite "FLMSA0",1,1{}
|
Sprite "FLMSA0",1,1{}
|
||||||
Sprite "OFLSA0",1,1{}
|
|
||||||
Sprite "NAPAA0",1,1{}
|
Sprite "NAPAA0",1,1{}
|
||||||
|
|
|
||||||
|
|
@ -106,6 +106,7 @@ Class Impaler : UnrealWeapon
|
||||||
IMPI A 0
|
IMPI A 0
|
||||||
{
|
{
|
||||||
let weap = Weapon(invoker);
|
let weap = Weapon(invoker);
|
||||||
|
invoker.HasGem = false;
|
||||||
if ( (invoker.ClipCount>=0) || (weap.Ammo1.Amount > 0) )
|
if ( (invoker.ClipCount>=0) || (weap.Ammo1.Amount > 0) )
|
||||||
return ResolveState("Reload");
|
return ResolveState("Reload");
|
||||||
return ResolveState("Idle");
|
return ResolveState("Idle");
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,14 @@ Class FlameAmmo : Ammo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Class UFlameTrail : Actor
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
Class OnFire : Thinker
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
Class UFlame : Actor
|
Class UFlame : Actor
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
@ -30,7 +38,75 @@ Class UNapalm : Actor
|
||||||
Class UFlamethrower : UnrealWeapon
|
Class UFlamethrower : UnrealWeapon
|
||||||
{
|
{
|
||||||
bool bCharging;
|
bool bCharging;
|
||||||
|
double ChargeSize, Count;
|
||||||
|
|
||||||
|
override Inventory CreateTossable( int amt )
|
||||||
|
{
|
||||||
|
if ( Owner.player && (Owner.player.ReadyWeapon == self) )
|
||||||
|
Owner.A_PlaySound("flamet/down",CHAN_6,Dampener.Active(self)?.1:1.);
|
||||||
|
return Super.CreateTossable(amt);
|
||||||
|
}
|
||||||
|
action void A_FireFlame()
|
||||||
|
{
|
||||||
|
let weap = Weapon(invoker);
|
||||||
|
if ( (weap.Ammo1.Amount <= 0) || !(player.cmd.buttons&BT_ATTACK) )
|
||||||
|
{
|
||||||
|
player.SetPSPrite(PSP_WEAPON,invoker.FindState("Release"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
invoker.count += 10./TICRATE;
|
||||||
|
while ( invoker.count > 1. )
|
||||||
|
{
|
||||||
|
weap.DepleteAmmo(weap.bAltFire,true,1);
|
||||||
|
invoker.count -= 1.;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
action void A_BeginFlame()
|
||||||
|
{
|
||||||
|
let weap = Weapon(invoker);
|
||||||
|
weap.DepleteAmmo(weap.bAltFire,true,1);
|
||||||
|
invoker.count = 0;
|
||||||
|
A_PlaySound("flamet/fire",CHAN_WEAPON,Dampener.Active(self)?.1:1.,true);
|
||||||
|
A_Overlay(-9999,"Dummy2");
|
||||||
|
}
|
||||||
|
action void A_BeginCharge()
|
||||||
|
{
|
||||||
|
let weap = Weapon(invoker);
|
||||||
|
weap.DepleteAmmo(weap.bAltFire,true,1);
|
||||||
|
invoker.count = invoker.chargesize = 0;
|
||||||
|
A_PlaySound("flamet/charge",CHAN_WEAPON,Dampener.Active(self)?.1:1.);
|
||||||
|
A_Overlay(-9999,"Dummy3");
|
||||||
|
}
|
||||||
|
action void A_ChargeUp()
|
||||||
|
{
|
||||||
|
let weap = Weapon(invoker);
|
||||||
|
if ( (invoker.chargesize < 4.9) && (weap.Ammo1.Amount > 0) )
|
||||||
|
{
|
||||||
|
invoker.count += 40./TICRATE;
|
||||||
|
while ( invoker.count > 1. )
|
||||||
|
{
|
||||||
|
invoker.chargesize += 0.05;
|
||||||
|
weap.DepleteAmmo(weap.bAltFire,true,1);
|
||||||
|
invoker.count -= 1.;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
double ox = FRandom[Flamet](-1,1)*invoker.chargesize*0.3;
|
||||||
|
double oy = FRandom[Flamet](-1,1)*invoker.chargesize*0.3;
|
||||||
|
A_WeaponOffset(ox,32+oy);
|
||||||
|
A_OverlayOffset(-2,-ox,-oy);
|
||||||
|
A_SoundVolume(CHAN_WEAPON,Dampener.Active(self)?.1:1.);
|
||||||
|
if ( (weap.Ammo1.Amount <= 0) || (invoker.chargesize >= 4.9) || !(player.cmd.buttons&BT_ALTATTACK) )
|
||||||
|
player.SetPSPrite(PSP_WEAPON,invoker.FindState("AltRelease"));
|
||||||
|
}
|
||||||
|
action void A_FireNapalm()
|
||||||
|
{
|
||||||
|
A_Overlay(-9999,"Null");
|
||||||
|
A_WeaponOffset(0,32);
|
||||||
|
A_OverlayOffset(-2,0,0);
|
||||||
|
invoker.bCharging = false;
|
||||||
|
A_PlaySound("flamet/altfire",CHAN_WEAPON,Dampener.Active(self)?.1:1.);
|
||||||
|
if ( self is 'UTPlayer' ) UTPlayer(self).PlayAttacking3();
|
||||||
|
}
|
||||||
Default
|
Default
|
||||||
{
|
{
|
||||||
Tag "$T_FLAMETHROWER";
|
Tag "$T_FLAMETHROWER";
|
||||||
|
|
@ -42,20 +118,161 @@ Class UFlamethrower : UnrealWeapon
|
||||||
Weapon.AmmoType "FlameAmmo";
|
Weapon.AmmoType "FlameAmmo";
|
||||||
Weapon.AmmoUse 1;
|
Weapon.AmmoUse 1;
|
||||||
Weapon.AmmoType2 "FlameAmmo";
|
Weapon.AmmoType2 "FlameAmmo";
|
||||||
Weapon.AmmoUse2 30;
|
Weapon.AmmoUse2 1;
|
||||||
Weapon.AmmoGive 100;
|
Weapon.AmmoGive 100;
|
||||||
UTWeapon.DropAmmo 50;
|
UTWeapon.DropAmmo 50;
|
||||||
}
|
}
|
||||||
States
|
States
|
||||||
{
|
{
|
||||||
Spawn:
|
Spawn:
|
||||||
FLMP A 1 A_JumpIf(sting_flamet,2);
|
FLMP A -1;
|
||||||
|
Stop;
|
||||||
|
FLMP B -1;
|
||||||
|
Stop;
|
||||||
|
Select:
|
||||||
|
FLMS A 1 A_Raise(int.max);
|
||||||
Wait;
|
Wait;
|
||||||
FLMP B 1 A_JumpIf(sting_flamet,2);
|
Ready:
|
||||||
|
FLMS ABCDEF 2 A_WeaponReady(WRF_NOFIRE);
|
||||||
|
FLMS G 0
|
||||||
|
{
|
||||||
|
A_PlaySound("flamet/idle",CHAN_6,Dampener.Active(self)?.1:1.,true);
|
||||||
|
A_Overlay(-2,"FlameReady");
|
||||||
|
A_OverlayFlags(-2,PSPF_RENDERSTYLE|PSPF_FORCESTYLE,true);
|
||||||
|
A_OverlayRenderStyle(-2,STYLE_Add);
|
||||||
|
}
|
||||||
|
FLMS GHIJ 2 A_WeaponReady(WRF_NOFIRE);
|
||||||
|
Goto Idle;
|
||||||
|
Dummy:
|
||||||
|
TNT1 A 1
|
||||||
|
{
|
||||||
|
A_CheckReload();
|
||||||
|
A_WeaponReady();
|
||||||
|
}
|
||||||
Wait;
|
Wait;
|
||||||
OFLP A 1 A_JumpIf(!sting_flamet,"Spawn");
|
Idle:
|
||||||
|
FLMI A 0 A_Overlay(-9999,"Dummy");
|
||||||
|
FLMI ABCDEFG 12 A_SoundVolume(CHAN_6,Dampener.Active(self)?.1:1.);
|
||||||
|
FLMI A 0 A_Jump(20,"Twiddle");
|
||||||
|
Goto Idle+1;
|
||||||
|
Twiddle:
|
||||||
|
#### # 2
|
||||||
|
{
|
||||||
|
A_SoundVolume(CHAN_6,Dampener.Active(self)?.1:1.);
|
||||||
|
player.SetPSprite(-2,ResolveState("FlameTwiddle"));
|
||||||
|
}
|
||||||
|
FLMT ABCDEFGHIJKLMNOPQRSTUVWXYZ[\] 2 A_SoundVolume(CHAN_6,Dampener.Active(self)?.1:1.);
|
||||||
|
FLT2 ABCDEF 2 A_SoundVolume(CHAN_6,Dampener.Active(self)?.1:1.);
|
||||||
|
Goto Idle+1;
|
||||||
|
Fire:
|
||||||
|
#### # 2
|
||||||
|
{
|
||||||
|
A_Overlay(-9999,"Null");
|
||||||
|
player.SetPSprite(-2,ResolveState("FlameFire"));
|
||||||
|
}
|
||||||
|
FLMF ABCDE 2;
|
||||||
|
FLMF F 0 A_BeginFlame();
|
||||||
|
Goto Hold;
|
||||||
|
Dummy2:
|
||||||
|
TNT1 A 1 A_FireFlame();
|
||||||
Wait;
|
Wait;
|
||||||
OFLP B 1 A_JumpIf(!sting_flamet,"Spawn+1");
|
Hold:
|
||||||
|
FLMF FGHIJK 2 A_SoundVolume(CHAN_WEAPON,Dampener.Active(self)?.1:1.);
|
||||||
|
Loop;
|
||||||
|
Release:
|
||||||
|
#### # 2
|
||||||
|
{
|
||||||
|
A_Overlay(-9999,"Null");
|
||||||
|
player.SetPSprite(-2,ResolveState("FlameRelease"));
|
||||||
|
A_PlaySound("flamet/fireend",CHAN_WEAPON,Dampener.Active(self)?.1:1.);
|
||||||
|
A_ClearRefire();
|
||||||
|
}
|
||||||
|
FLMF MNOP 2;
|
||||||
|
Goto Idle;
|
||||||
|
AltFire:
|
||||||
|
#### # 2
|
||||||
|
{
|
||||||
|
A_Overlay(-9999,"Null");
|
||||||
|
player.SetPSprite(-2,ResolveState("FlameAltFire"));
|
||||||
|
invoker.bCharging = true;
|
||||||
|
}
|
||||||
|
FLMA ABCDE 2;
|
||||||
|
FLMA F 0 A_BeginCharge();
|
||||||
|
Goto AltHold;
|
||||||
|
Dummy3:
|
||||||
|
TNT1 A 1 A_ChargeUp();
|
||||||
Wait;
|
Wait;
|
||||||
|
AltHold:
|
||||||
|
FLMA FIGHLKGJHLGFHJGILHFKGFKHIGKGHL 10;
|
||||||
|
Loop;
|
||||||
|
AltRelease:
|
||||||
|
FLMA M 0
|
||||||
|
{
|
||||||
|
A_FireNapalm();
|
||||||
|
player.SetPSprite(-2,ResolveState("FlameAltRelease"));
|
||||||
|
}
|
||||||
|
FLMA MNOPQRSTUVWX 2;
|
||||||
|
FLMA Y 0
|
||||||
|
{
|
||||||
|
if ( invoker.CheckAmmo(1,false,true) )
|
||||||
|
A_Refire("GotoAltHold");
|
||||||
|
}
|
||||||
|
FLMA Y 0 A_ClearRefire();
|
||||||
|
FLMA YZ[\] 2;
|
||||||
|
FLA2 ABCD 2;
|
||||||
|
Goto Idle;
|
||||||
|
GotoAltHold:
|
||||||
|
FLMA Y 0
|
||||||
|
{
|
||||||
|
player.SetPSprite(-2,ResolveState("FlameAltHold"));
|
||||||
|
}
|
||||||
|
Goto AltHold;
|
||||||
|
Deselect:
|
||||||
|
#### # 1
|
||||||
|
{
|
||||||
|
A_Overlay(-9999,"Null");
|
||||||
|
A_PlaySound("flamet/down",CHAN_6,Dampener.Active(self)?.1:1.);
|
||||||
|
player.SetPSprite(-2,ResolveState("FlameDeselect"));
|
||||||
|
}
|
||||||
|
FLMD ABCDEFHIJ 1;
|
||||||
|
FLMD J 1 A_Lower(int.max);
|
||||||
|
Wait;
|
||||||
|
FlameReady:
|
||||||
|
FLFS ABCD 2 Bright;
|
||||||
|
Goto FlameIdle;
|
||||||
|
FlameIdle:
|
||||||
|
FLFI ABCDEFG 12 Bright;
|
||||||
|
Loop;
|
||||||
|
FlameTwiddle:
|
||||||
|
#### # 2 Bright;
|
||||||
|
FLFT ABCDEFGHIJKLMNOPQRSTUVWXYZ[\] 2 Bright;
|
||||||
|
FFT2 ABCDEF 2 Bright;
|
||||||
|
Goto FlameIdle;
|
||||||
|
FlameFire:
|
||||||
|
#### # 1 Bright;
|
||||||
|
FLFF ABCDE 2 Bright;
|
||||||
|
Goto FlameHold;
|
||||||
|
FlameHold:
|
||||||
|
FLFF FGHIJK 2 Bright;
|
||||||
|
Loop;
|
||||||
|
FlameRelease:
|
||||||
|
#### # 2 Bright;
|
||||||
|
FLFF MNOP 2 Bright;
|
||||||
|
Goto FlameIdle;
|
||||||
|
FlameAltFire:
|
||||||
|
#### # 2 Bright;
|
||||||
|
FLFA ABCDE 2 Bright;
|
||||||
|
Goto FlameAltHold;
|
||||||
|
FlameAltHold:
|
||||||
|
FLFA FIGHLKGJHLGFHJGILHFKGFKHIGKGHL 10 Bright;
|
||||||
|
Loop;
|
||||||
|
FlameAltRelease:
|
||||||
|
FLFA MNOPQRSTUVWXYZ[\] 2 Bright;
|
||||||
|
FFA2 ABCD 2 Bright;
|
||||||
|
Goto FlameIdle;
|
||||||
|
FlameDeselect:
|
||||||
|
#### # 1 Bright;
|
||||||
|
FLFD ABCD 2 Bright;
|
||||||
|
Stop;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue