diff --git a/ProtoNotes.md b/ProtoNotes.md index 6685a96..35fa032 100644 --- a/ProtoNotes.md +++ b/ProtoNotes.md @@ -59,6 +59,8 @@ 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. - 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 diff --git a/cvarinfo.txt b/cvarinfo.txt index 492ffc7..a63382d 100644 --- a/cvarinfo.txt +++ b/cvarinfo.txt @@ -38,9 +38,6 @@ server bool sting_riflel = false; // old rifle flashlight server bool sting_razor = false; // razorjack blade charging // hold primary fire to increase the // 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 // oldskool did this, and you'll come // to realize that it wasn't a good diff --git a/gldefs.txt b/gldefs.txt index a6a3df9..c863887 100644 --- a/gldefs.txt +++ b/gldefs.txt @@ -813,6 +813,10 @@ HardwareShader Texture "models/ElecFX.png" { Shader "shaders/glsl/ElecFX.fp" } +HardwareShader Texture "models/FlametFX.png" +{ + Shader "shaders/glsl/FlametFX.fp" +} // PP shaders HardwareShader PostProcess scene { diff --git a/language.txt b/language.txt index d916bb7..7d0ad8c 100644 --- a/language.txt +++ b/language.txt @@ -233,7 +233,6 @@ STING_RIFLEL = "Rifle flashlight"; STING_RAZOR = "Razorjack charging"; STING_EHOLD = "Loaded Eightball 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_AUTODUAL = "Automags"; STING_PROTODUAL = "Protomags"; @@ -470,7 +469,6 @@ STING_RIFLEL = "Linterna de Rifle"; STING_RAZOR = "Carga de Razorjack"; STING_EHOLD = "El Eightball 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_AUTODUAL = "Autoarmas"; STING_PROTODUAL = "Protoarmas"; diff --git a/menudef.txt b/menudef.txt index e507c9f..bb6504f 100644 --- a/menudef.txt +++ b/menudef.txt @@ -33,7 +33,6 @@ OptionMenu "UnrealOptionMenu" Option "$STING_RAZOR", "sting_razor", "YesNo" Option "$STING_EHOLD", "sting_ehold", "YesNo" Option "$STING_BHOLD", "sting_bhold", "YesNo" - Option "$STING_FLAMET", "sting_flamet", "YesNo" StaticText " " StaticText "$STING_DOPTS", "Gold" Option "$STING_AUTODUAL", "sting_automags", "YesNo" diff --git a/modeldef.napalm b/modeldef.napalm index ff91980..4dd35d2 100644 --- a/modeldef.napalm +++ b/modeldef.napalm @@ -15,7 +15,8 @@ Model "UFlamethrower" { Path "models" Model 1 "FlameTPick_d.3d" - Skin 1 "JNapalm1_.png" + SurfaceSkin 1 0 "JNapalm1_.png" + SurfaceSkin 1 1 "Flamet_.png" ZOffset 10 AngleOffset -90 Scale 0.1 0.1 0.12 @@ -30,16 +31,254 @@ Model "UFlamethrower" Model "UFlamethrower" { Path "models" - Model 3 "FlameTOldPick_d.3d" - SurfaceSkin 3 0 "JNapalm1_.png" - SurfaceSkin 3 1 "Flamet_.png" - ZOffset 10 + Model 2 "FlameT_d.3d" + SurfaceSkin 2 2 "FlametFX.png" 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 - - ZOffset 12 - ROTATING - FrameIndex OFLP A 3 0 + // Down + FrameIndex FLFD A 2 1 + FrameIndex FLFD B 2 2 + FrameIndex FLFD C 2 3 + 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 +} \ No newline at end of file diff --git a/models/FlameTOldPick_a.3d b/models/FlameTOldPick_a.3d deleted file mode 100644 index 24f076f7..0000000 Binary files a/models/FlameTOldPick_a.3d and /dev/null differ diff --git a/models/FlameTOldPick_d.3d b/models/FlameTOldPick_d.3d deleted file mode 100644 index 2817a64..0000000 Binary files a/models/FlameTOldPick_d.3d and /dev/null differ diff --git a/models/FlameTOld_a.3d b/models/FlameTOld_a.3d deleted file mode 100644 index cda2b88..0000000 Binary files a/models/FlameTOld_a.3d and /dev/null differ diff --git a/models/FlameTOld_d.3d b/models/FlameTOld_d.3d deleted file mode 100644 index 6cd7acb..0000000 Binary files a/models/FlameTOld_d.3d and /dev/null differ diff --git a/models/FlameTPick_a.3d b/models/FlameTPick_a.3d index f296dcd..24f076f7 100644 Binary files a/models/FlameTPick_a.3d and b/models/FlameTPick_a.3d differ diff --git a/models/FlameTPick_d.3d b/models/FlameTPick_d.3d index d4541dd..2817a64 100644 Binary files a/models/FlameTPick_d.3d and b/models/FlameTPick_d.3d differ diff --git a/models/FlameT_a.3d b/models/FlameT_a.3d index 6ff1fdd..7f98aae 100644 Binary files a/models/FlameT_a.3d and b/models/FlameT_a.3d differ diff --git a/models/FlameT_d.3d b/models/FlameT_d.3d index 480e387..3cd7f86 100644 Binary files a/models/FlameT_d.3d and b/models/FlameT_d.3d differ diff --git a/models/FlametFX.png b/models/FlametFX.png new file mode 100644 index 0000000..ff7732d Binary files /dev/null and b/models/FlametFX.png differ diff --git a/models/Flamethrower.blend b/models/Flamethrower.blend index 6d8564c..74c6c34 100644 Binary files a/models/Flamethrower.blend and b/models/Flamethrower.blend differ diff --git a/models/FlamethrowerOld.blend b/models/FlamethrowerOld.blend deleted file mode 100644 index 74c6c34..0000000 Binary files a/models/FlamethrowerOld.blend and /dev/null differ diff --git a/models/FlamethrowerOld_1st.blend b/models/FlamethrowerOld_1st.blend deleted file mode 100644 index bf77c97..0000000 Binary files a/models/FlamethrowerOld_1st.blend and /dev/null differ diff --git a/models/Flamethrower_1st.blend b/models/Flamethrower_1st.blend index feaa140..51e9d79 100644 Binary files a/models/Flamethrower_1st.blend and b/models/Flamethrower_1st.blend differ diff --git a/shaders/glsl/FlametFX.fp b/shaders/glsl/FlametFX.fp new file mode 100644 index 0000000..9b05c48 --- /dev/null +++ b/shaders/glsl/FlametFX.fp @@ -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); +} diff --git a/sndinfo.txt b/sndinfo.txt index 6f5dbc2..3995677 100644 --- a/sndinfo.txt +++ b/sndinfo.txt @@ -317,6 +317,14 @@ flamegun/alt flamgalt flamegun/exp expl04 $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 detector/start detact diff --git a/textures.napalm b/textures.napalm index 4dafdbc..5eef0eb 100644 --- a/textures.napalm +++ b/textures.napalm @@ -1,6 +1,4 @@ Sprite "FLMAA0",1,1{} Sprite "FLMPA0",1,1{} -Sprite "OFLPA0",1,1{} Sprite "FLMSA0",1,1{} -Sprite "OFLSA0",1,1{} Sprite "NAPAA0",1,1{} diff --git a/zscript/impaler.zsc b/zscript/impaler.zsc index a68ec80..d682b74 100644 --- a/zscript/impaler.zsc +++ b/zscript/impaler.zsc @@ -106,6 +106,7 @@ Class Impaler : UnrealWeapon IMPI A 0 { let weap = Weapon(invoker); + invoker.HasGem = false; if ( (invoker.ClipCount>=0) || (weap.Ammo1.Amount > 0) ) return ResolveState("Reload"); return ResolveState("Idle"); diff --git a/zscript/napalm.zsc b/zscript/napalm.zsc index 2678b1d..1c49bb3 100644 --- a/zscript/napalm.zsc +++ b/zscript/napalm.zsc @@ -19,6 +19,14 @@ Class FlameAmmo : Ammo } } +Class UFlameTrail : Actor +{ +} + +Class OnFire : Thinker +{ +} + Class UFlame : Actor { } @@ -30,7 +38,75 @@ Class UNapalm : Actor Class UFlamethrower : UnrealWeapon { 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 { Tag "$T_FLAMETHROWER"; @@ -42,20 +118,161 @@ Class UFlamethrower : UnrealWeapon Weapon.AmmoType "FlameAmmo"; Weapon.AmmoUse 1; Weapon.AmmoType2 "FlameAmmo"; - Weapon.AmmoUse2 30; + Weapon.AmmoUse2 1; Weapon.AmmoGive 100; UTWeapon.DropAmmo 50; } States { 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; - 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; - 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; - 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; + 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; } }