From a95e4721f26681f0ec8b1da05cf57f25874ffd03 Mon Sep 17 00:00:00 2001 From: Marisa Kirisame Date: Sat, 21 Sep 2019 23:20:38 +0200 Subject: [PATCH] Fireblaster (Flame Gun) added. --- GunLore.md | 8 +- Readme.md | 2 +- gldefs.txt | 34 ++++ modeldef.flamegun | 134 +++++++++++++ palettes/FlamG.pal | Bin 0 -> 768 bytes sndinfo.txt | 14 ++ sprites/flameg/FGEXA0.png | Bin 0 -> 380 bytes sprites/flameg/FGEXB0.png | Bin 0 -> 500 bytes sprites/flameg/FGEXC0.png | Bin 0 -> 991 bytes sprites/flameg/FGEXD0.png | Bin 0 -> 1723 bytes sprites/flameg/FGEXE0.png | Bin 0 -> 1748 bytes sprites/flameg/FGEXF0.png | Bin 0 -> 1409 bytes sprites/flameg/FGEXG0.png | Bin 0 -> 959 bytes sprites/flameg/FGEXH0.png | Bin 0 -> 409 bytes sprites/flameg/FGFLA0.png | Bin 0 -> 6271 bytes trnslate.txt | 1 + zscript/flamegun.zsc | 390 +++++++++++++++++++++++++++++++++++++- zscript/napalm.zsc | 2 + zscript/unrealcommon.zsc | 4 +- 19 files changed, 581 insertions(+), 8 deletions(-) create mode 100644 palettes/FlamG.pal create mode 100644 sprites/flameg/FGEXA0.png create mode 100644 sprites/flameg/FGEXB0.png create mode 100644 sprites/flameg/FGEXC0.png create mode 100644 sprites/flameg/FGEXD0.png create mode 100644 sprites/flameg/FGEXE0.png create mode 100644 sprites/flameg/FGEXF0.png create mode 100644 sprites/flameg/FGEXG0.png create mode 100644 sprites/flameg/FGEXH0.png create mode 100644 sprites/flameg/FGFLA0.png diff --git a/GunLore.md b/GunLore.md index 32c9db8..e0b1766 100644 --- a/GunLore.md +++ b/GunLore.md @@ -296,12 +296,10 @@ The weapon is completely useless if the user or target are underwater. Another Mercenary invention, and a direct evolution of the previously listed Flamethrower. Shoots green-ish fireballs stabilized by microgravity. -Primary fire: A single, steady shot, followed by rapid three shot bursts in a -horizontal arc if you keep the trigger held. Costs 10 units of napalm per -projectile. +Primary fire: Rapid, steady shots. Costs 10 units of napalm per projectile. -Secondary fire: A slowly charged fireball costing 20 units of napalm. Deals -more splash damage. +Secondary fire: A slowly charged fireball costing 20 units of napalm. Spreads +small embers on impact. Like its predecessor, the Fireblaster is obviously completely useless when water is involved. A very clever human scientist would eventually solve this, diff --git a/Readme.md b/Readme.md index dd06fda..a452601 100644 --- a/Readme.md +++ b/Readme.md @@ -35,6 +35,7 @@ Doom Tournament (currently the devel branch is required). - Protomag (slot 2) (replaces pistol) - Dual Protomags - Quadshot (slot 3) (replaces shotguns) + - Fireblaster (slot 5) (replaces rocket launcher) - Peacemaker (slot 8) (rare spawn in backpacks) - Demolisher (slot 9) (replaces bfg9000) - Autocannon (slot 0) (replaces bfg9000) @@ -71,7 +72,6 @@ Doom Tournament (currently the devel branch is required). ## In progress - Stunner (slot 4) (replaces chainsaw) - - Fireblaster (slot 5) (replaces rocket launcher) - Flamethrower (slot 6) (replaces plasma rifle) - Impaler (slot 7) (replaces plasma rifle) diff --git a/gldefs.txt b/gldefs.txt index d7ec01a..a6a3df9 100644 --- a/gldefs.txt +++ b/gldefs.txt @@ -377,6 +377,40 @@ Object ForceField Frame "FFPK" { light "FFIELDLIGHT" } } +FlickerLight2 UFLAMGLIGHT1 +{ + Color 0.3 1.0 0.2 + Size 40 + SecondarySize 48 + Interval 0.1 +} +FlickerLight2 UFLAMGLIGHT2 +{ + Color 0.5 1.0 0.2 + Size 56 + SecondarySize 60 + Interval 0.1 +} +FlickerLight2 UFLAMGLIGHT3 +{ + Color 0.4 1.0 0.2 + Size 12 + SecondarySize 16 + Interval 0.1 +} +Object UFireball +{ + Frame "FIRB" { light "UFLAMGLIGHT1" } +} +Object UFireball2 +{ + Frame "FIRB" { light "UFLAMGLIGHT2" } +} +Object UFireballEmber +{ + Frame "FIRB" { light "UFLAMGLIGHT3" } +} + // Shaders / Brightmaps HardwareShader Texture "graphics/MenuBarr.png" { diff --git a/modeldef.flamegun b/modeldef.flamegun index 8acf4ce..7c263cc 100644 --- a/modeldef.flamegun +++ b/modeldef.flamegun @@ -1,3 +1,70 @@ +Model "UFireball" +{ + Path "models" + Model 0 "Flame_d.3d" + Skin 0 "JFlame2.png" + PitchOffset 90 + Scale 0.048 0.04 0.04 + Offset -4 0 0 + PITCHFROMMOMENTUM + + FrameIndex FIRB A 0 1 + FrameIndex FIRB B 0 2 + FrameIndex FIRB C 0 3 + FrameIndex FIRB D 0 4 + FrameIndex FIRB E 0 5 + FrameIndex FIRB F 0 6 + FrameIndex FIRB G 0 7 + FrameIndex FIRB H 0 8 + FrameIndex FIRB I 0 9 + FrameIndex FIRB J 0 10 + FrameIndex FIRB K 0 11 +} +Model "UFireball2" +{ + Path "models" + Model 0 "Flame_d.3d" + Skin 0 "JFlame3.png" + PitchOffset 90 + Scale 0.06 0.05 0.05 + Offset -5 0 0 + PITCHFROMMOMENTUM + + FrameIndex FIRB A 0 1 + FrameIndex FIRB B 0 2 + FrameIndex FIRB C 0 3 + FrameIndex FIRB D 0 4 + FrameIndex FIRB E 0 5 + FrameIndex FIRB F 0 6 + FrameIndex FIRB G 0 7 + FrameIndex FIRB H 0 8 + FrameIndex FIRB I 0 9 + FrameIndex FIRB J 0 10 + FrameIndex FIRB K 0 11 +} +Model "UFireballEmber" +{ + Path "models" + Model 0 "Flame_d.3d" + Skin 0 "JFlame3.png" + PitchOffset 90 + Scale 0.024 0.02 0.02 + Offset -2 0 0 + PITCHFROMMOMENTUM + + FrameIndex FIRB A 0 1 + FrameIndex FIRB B 0 2 + FrameIndex FIRB C 0 3 + FrameIndex FIRB D 0 4 + FrameIndex FIRB E 0 5 + FrameIndex FIRB F 0 6 + FrameIndex FIRB G 0 7 + FrameIndex FIRB H 0 8 + FrameIndex FIRB I 0 9 + FrameIndex FIRB J 0 10 + FrameIndex FIRB K 0 11 +} + Model "FlameGun" { Path "models" @@ -12,3 +79,70 @@ Model "FlameGun" ROTATING FrameIndex FGNP A 1 0 } + +Model "FlameGun" +{ + Path "models" + Model 0 "FlameGun_d.3d" + SurfaceSkin 0 0 "JFlameG1.png" + SurfaceSkin 0 1 "Automa1.png" + AngleOffset -90 + Scale 0.1 -0.07 0.1 + Offset 9 -16 -10 + + // Down + FrameIndex FGND A 0 1 + FrameIndex FGND B 0 2 + FrameIndex FGND C 0 3 + FrameIndex FGND D 0 4 + FrameIndex FGND E 0 5 + FrameIndex FGND F 0 6 + FrameIndex FGND G 0 7 + FrameIndex FGND H 0 8 + FrameIndex FGND I 0 9 + FrameIndex FGND J 0 10 + // Select + FrameIndex FGNS A 0 10 + FrameIndex FGNS B 0 11 + FrameIndex FGNS C 0 12 + FrameIndex FGNS D 0 13 + FrameIndex FGNS E 0 14 + FrameIndex FGNS F 0 15 + FrameIndex FGNS G 0 16 + FrameIndex FGNS H 0 17 + FrameIndex FGNS I 0 18 + FrameIndex FGNS J 0 19 + // Idle + FrameIndex FGNI A 0 20 + FrameIndex FGNI B 0 21 + FrameIndex FGNI C 0 22 + FrameIndex FGNI D 0 23 + FrameIndex FGNI E 0 24 + FrameIndex FGNI F 0 25 + FrameIndex FGNI G 0 26 + // Twiddle + FrameIndex FGNT A 0 27 + FrameIndex FGNT B 0 28 + FrameIndex FGNT C 0 29 + FrameIndex FGNT D 0 30 + FrameIndex FGNT E 0 31 + FrameIndex FGNT F 0 32 + FrameIndex FGNT G 0 33 + FrameIndex FGNT H 0 34 + FrameIndex FGNT I 0 35 + FrameIndex FGNT J 0 36 + FrameIndex FGNT K 0 37 + FrameIndex FGNT L 0 38 + FrameIndex FGNT M 0 39 + // Fire + FrameIndex FGNF A 0 40 + FrameIndex FGNF B 0 41 + FrameIndex FGNF C 0 42 + FrameIndex FGNF D 0 43 + FrameIndex FGNF E 0 44 + FrameIndex FGNF F 0 45 + FrameIndex FGNF G 0 46 + FrameIndex FGNF H 0 47 + FrameIndex FGNF I 0 48 + FrameIndex FGNF J 0 49 +} \ No newline at end of file diff --git a/palettes/FlamG.pal b/palettes/FlamG.pal new file mode 100644 index 0000000000000000000000000000000000000000..5584943d887e663cfba63009397bf3a76e91f38b GIT binary patch literal 768 zcmWF!508(J&(6*+FE4LsuJ7sZo<4p0g2nUKtY5uj_x1zF_n$d``o`_+Po6)1^ZE6U z|KIVTFaJLii9Y;)PYind|20AM?Em9O|L@=bfBnw?%Qya?zwrO~+5d-+{oj4;|Mva= z*YEkide8smTmH}A_<#1g|C3k!?_d1CeaZjk1^?^k{4byRzj)gJ>`DLA`~SyJ_#fT# zKfL3=f9HSirvJ`O|LyDln>YM7uKBOu@L#{?zjn=k?FKMv`LEsbU%LZ=)I0vG_khua z|LPDl<-hur|LRl!D?`xC|H?D}E6)X^h5wZo{#Ty&Uw#o7E&DIO48)LL_8$)tU-lmh zTJ>Li6-Zoo*?*j9(Qp1m-}&c#=AZYTf97lcsn5A5Jm#KopL@b>?w;%19hcdg&$Bn3 zX0JQW-gKP3?l61Ze)h`U>=oPDi#9Xlu4l+y&5*I2A$2iB%6x|8*$na18R8~0ME5g9 zb%Ri7J40YIgHJt!XElRIIfHXCgMB`OT{eStI)ha*gK0d2VKjq5ID>952a5Noq4lYBPwagOG$egRn9P s@yj#t%QFbeGw?}65x+PCzc>SzFcfj}GjQ@VuyR8Y13Lpd3^Bj}0AypE3IG5A literal 0 HcmV?d00001 diff --git a/sndinfo.txt b/sndinfo.txt index 9399a02..6f5dbc2 100644 --- a/sndinfo.txt +++ b/sndinfo.txt @@ -171,6 +171,7 @@ stinger/altfire stingera stinger/hit bladehit stinger/hit2 ricochet stinger/flesh chunkhit +$limit stinger/hit 16 flak/click click @@ -197,6 +198,7 @@ dpistol/up3 number3 dpistol/up4 number4 dpistol/fly dispfly dpistol/hit dispex1 +$limit dpistol/hit 16 amplifier/act ampact amplifier/set health1 @@ -291,18 +293,30 @@ big/punch bigmejct big/reload bigmrelo big/shell bigmshel big/blast bigmhit +$limit big/blast 16 smini/select sminisel smini/fire sminione smini/altfire sminialt smini/endfire sminiend smini/explode sminiexp +$limit smini/explode 16 bonesaw/select bsawsel bonesaw/claw bsawstab bonesaw/spin bsawloop bonesaw/spinend bsawend +flamegun/select flamgsel +flamegun/idle flamgidl +flamegun/start flamgbeg +flamegun/fire flamgfir +flamegun/end flamgend +flamegun/charge flamgabg +flamegun/alt flamgalt +flamegun/exp expl04 +$limit flamegun/exp 16 + translator/event transa3 detector/start detact diff --git a/sprites/flameg/FGEXA0.png b/sprites/flameg/FGEXA0.png new file mode 100644 index 0000000000000000000000000000000000000000..58b96413ada4dd9a2f5ef0909386c6c5bd4daab5 GIT binary patch literal 380 zcmeAS@N?(olHy`uVBq!ia0y~yU}ykg4rT@hhA$5${$yZa;7BiWOk!YQuwh_e@R`YO z8pXiCU>x8R;>w`PkiL_zY+gj;8n?zZi5*+LChYT{emH;Tnc$UIo3`GcuZI;;=qa zoloGz|M=(@ExCZuld0)GE@O!tw zMdo8+MYL%W-WFfB3*OV#9KX5VYx~WFls#Uz%^A#O zZR1qebKR&Zs7v5xD6yLBw_Wr>fe>H2ZX>%ae>5v!yKYN+X9pCV*#CoZ^8?Q4buYAA R7#J8BJYD@<);T3K0RX{{p7Hjj z%9TB5wk!Q@5S6>%+SK*peny$&g%I>l{o!P$c!munf6Df_AMwzXVx6`p{fSQWwkV5L z7ZhvmOg6M#7rMjf{p_bd4FhTw*e6CML_E<9h;(_sprF=$iz82o*oxWPIEwa8nBrO> zDloUz@buNj6ld7P zkRfv?Ii77(Hdms{%MylHr48F;OZhHrTf9or>9eHERK{iBjNe$XYuquNq!!b@s7!_N z>7=GScRq%XnQKn2isgMe$0_i=nAK8+UvJCu+LJ7VU!){l<=!J&tZDd#gX5x=WFJc% ztAOuwsr^g_k`9lK>ui!daID{MizLIT_if(Snx}s9x6g57PV{4qyxZ|UIa4{sTX~;N zi{$2?QEUdj=6B3?H$E?UmHfdzukW$Nx%rQzt1oO{y6CuQ1Oo#DgQu&X%Q~loCIDf@ B)RzDN literal 0 HcmV?d00001 diff --git a/sprites/flameg/FGEXC0.png b/sprites/flameg/FGEXC0.png new file mode 100644 index 0000000000000000000000000000000000000000..c003328f2fa307e11a88e0d978a2e4574aaa1cc9 GIT binary patch literal 991 zcmeAS@N?(olHy`uVBq!ia0y~yU}ykg4rT@hhA$5${$yZa;7BiWOk!YQuwh_e@R`YO z8pXiC5FX$Y;>w`P5LM}z+UAwfZIM64rfgnB`8>z!w*1C5ZjEaaJEl~2Z%vziIDh7u z;Q4DNEWB8`@@mu8`xAB_U$g(kydxL4p82@u?5%z0-^{%B`1pf27hit6_3hiY|Ns9l zo#8FYz`(#*666=m;PC858Uq8flBbJfNX4zUGcHbgY{B8WwZ*Mu!s7>9*Ra0)zrR@C z=HOud5>2CG>jQ8V&B=r;x78ocLIz0G1 zM}Sjt4|B`+mKj1xN6eXOtj~7Z6gxOL1t}`+$}0-@G!{Ii$+_ZzG^1OOkB-jAQ)i}3 zVZE%mRee(Rtjlwrsbuwv<@g?4XI~>`utK zE+fvU8fAwr&)I7=mcYfkhj_-vJY!%%mUfu7r;EvcL zKfVL3nrGvW=btq>Kevj3A^B4C4_$w)xiSt;RxcW^&05LzZKkV);kvpv4BuZfKK#MU z-eUchnPJfnUiJ>Fx6C^frWU0*XnIcARm098k$>8e>FKtPge7r&C;nwo6%yGH^OTAuzpX|rZ+)k)*B9(e;H!~4_z&t%(L zReF0@Ec5x;3D5p#<*yCZUp6=1ty&wsQZ9aSVuG#I787qqaFo-XifBC}cq}~5))CJvM-D2$5`!S>K>b9%p zf3=icB&x#|S{SDH%dL2}|Mh!$dj^}T1-s_2umAp_Q1s0&U;iunt2g|zV=VhyX%+fE zS!zYh_MkI+Urc%8@>kxv@zK|9J8n-4eG>Aw-`>sR`dShFr3Md9eq?4~I99P&ciY`* zdF3C>V+8b5BQGQ;6> o*ePyr0X@Zg(~uH({gM4=R<_y)gl{ZnU|?YIboFyt=akR{04I>wg#Z8m literal 0 HcmV?d00001 diff --git a/sprites/flameg/FGEXD0.png b/sprites/flameg/FGEXD0.png new file mode 100644 index 0000000000000000000000000000000000000000..e398b25f5e1397bf2d1270876da16b596b9e7500 GIT binary patch literal 1723 zcmeAS@N?(olHy`uVBq!ia0y~yU}ykg4rT@hhA$5${$yZa;7BiWOk!YQuwh_e@R`YO z8pXiCC>Y=q;>w`Pz`)7C$jZRP$-pYiz`@DDA;Z9>%D}_Nz$?taXUxEF!62Z(DJae$ zCN3AGErRS(%;3#fX z$zbB8YUw3o*~DPuXlx&>;1Hqb)XnPbW#bZS>>jJ?Ifd0H&BA{kYe0lsP`*u6rDN0@ z&e+)4Q zdUbD2o3PJ+(!91wj}@jL&YyWEc>bCR3olkKx*EIkYSY@C^ENzA+j@V(?&E9reJt7k zV&0L9TaW$9KJ&ln?5%z0-^{%B`1pf27hit6_5c6>3A{?v7#J8BOM?7@862M7NMm4N zb@6m@45_&FHtKKjEjIyMndZVDMN%23OxHf$R+j5ndS&X>B-ez(jr`smob?P3|NnR1 zwc5B(-OuP`kKdmn|7KOTW7~h1-QPVm$H@d4?32&merh)Ff~}!9au`~DjUBjl@tT4Z z%v=2Ldz<-+=5O4l`+wZe|Fd`fgX&ghR>nQISKGwpm)@)Sx;r||_BTUU_?PR)4Hty` zepP<@=KA;>E2nMWzHcLMx4@yiV{0RRynpmL^6%%vlg)c3L~RVr+VZ-${I+Cpz&gRl z#<@RMMb&;fXL$JWDY>N!lcV%EhcCYR!zbqUQT6vP?yX2QsgwL$=CXda{o&=6=X&1# zn|bzJ=UI=re*M~_To1RcIg?p&ul?Ap`42A`wmP2QtXdIhegY zIM~%`veAZUrOn6xB&OPYP-$A>*%qGQl7D6D!c^nyqI2w1&RgopvAld$AedM#vpqyA z|F+@%_|~Rsqu(a~Ul=m%_n#WQ|Lyr2!`<@Br}9tYh-0wee9-D$+aq=J)`pUY_V<@9 zzo+oz@ktv#SB+%{>I4!Q99v>knC@=OjJPTGux072S*P}FU~YP#);47$bJG*CK9)HQ z+y^hRbG!}NB>nAS=zrmQ)wv+n-!^{TL%N!4$=Q8*`sCppy^}eV2Y6dU=?=4zo2P!5#JE#6QK!x!} zKtnD^P=lSoq0ejGpNV8X@Jm?N)PE?D!?Jot^&}>xhp|_U-tfAJsGex#J}$x}5X81p zh-uv|cD~$tk!9yz7v_toZC}8gkYG4n@eb$1IR;007VtAGFoe5sZfTHLJ>AOV;35|s z!*tl^JHv}_-9PGdbOj_mEO+oK9S@OVNG)Re@TbDEf8)mmUk)%7F<5=*pYooy@9p9* zdXKJheU3ZR$R5JDPw9rL%vG6y8O#g0A3e=#t<)F)EDvpO~gdTgUS~=m`2MrBVO);qQmXOcpGJgNeNV*iZ51 WGi|(>)X%`cz~JfX=d#Wzp$PzS4-y0b literal 0 HcmV?d00001 diff --git a/sprites/flameg/FGEXE0.png b/sprites/flameg/FGEXE0.png new file mode 100644 index 0000000000000000000000000000000000000000..70286dc004fc9d22dfd8addbb74a6160e7c83adb GIT binary patch literal 1748 zcmeAS@N?(olHy`uVBq!ia0y~yU}ykg4rT@hhA$5${$yZa;7BiWOk!YQuwh_e@R`YO z8pXiC@H4-`BkckbMMe9e)IThDx4bLM~3*<1Ur zJwE>6&Bg0~i}M&57#K@}{DK)Ap4~`eU|=ovba4!+xb-$FyZDxy2&?y%L)|hfudQm! zP10OeqP_l=sJ>_l#|lPip3b}f|0h@JFY3H3>Azgo_E%#6n}Z6+s^g#E+0DImRudE) z+JE$R+Sb?R>`_MrEmnr-IK+l71WO(IFJ1mzRQkbdEzYC9i!Jv)-=Fm1_Q}`ghu_?b z{83xTHYaku^oO(wQ}6wZ?T#o{7hUq;&G9!MO{Oegt{y7p_2Zm@_S!3}x5e*cw10W! z%i82Nleb3iul!fudhgY-m5HW&IvG#SAGv)@d#ZfthjX`$O*Y-TQjoZL>C^SBz2T3F z_L^v(YW^3>x#gSB^)DY*wQQLmeA>kCLipPq;a3j`oR;#qYh&t_(NXHVJpK57{Y?}0 zw8t0xU$bog1IKr)AD?BX}>n&&pJUGodqp52D~KXwYFRX5%2^X933^(*j2@a7fMR=iF) z(E4+dNLsJa^~Yzn%6jE!GF>)Vlg#*M!f!{f&!28r2qoR_`MmS^10m;&&ujfSp3i-p z^CR}1V#b~n@szp0_ML8d&|}`UbCG+>2h0B81A5EX%eYgI5uveGafi1c1JNF%4$NbLq;fnr$)jAV?^!PtFF@A7I z>kPvQYw^a@&YDM5{#ZEuw|sr{$C<~S^ItkwPwSR4&#U|S``5FYV?Rn2QlGG1N)CLn zA+TOgrla|VyWFpSu1ww{!v*VV1Lt~sNzc6F^t9b*9>>LQOJm>Z^)iioH{{-PD_&rb zwca#uvPA7qbMsrgmsY#V9J63yIIx46Ey35|_X3W2>^d4**%vM(JXl~dMXy}(@kf<; zJI*}SaMROTI9HQNRlkS7__|Y)Ma_=ZKkZG&jcT436v!$au-*KW(VXSJmHt%Ya%PA3 zxjTE*Cr>DEUT}RIKSNl@w;p4`59{t%#V=vYkv&uT-Hz>Ac@kqzLCkz3y?q99XpvdmFKvp5f9VO82@+6Ydw(B!wLzV4ptV-21Z zqqwzZzkQ{=8G{eTTxe1^65cgmSZDtK3a`lzRo)yuS+JE^_>#g4?q_1}?6)XOc(&jE zYkXyIdku%e|C5hCGO8=j=vW)|QNhKD<(h$@qI}iIEK|R-*`6F{Uka)cvaT&E%y|Zn1sEUH9}#=``0(SyN_XGbt8P+Zexdl-`N{vkC0lRh zmdzGTu;o0xit%#Sp`SXDIp6yEH5}VJ4qVk-%jMV?ZTC#J=6-Ha4@caVFf|9>i~oRRy=5=i zW=u2PuzW@14(}ybYrK-YuQ=RMeKawVbwRj+xZVb)O_Nu1CCrLo-fO0~byWiIA_471 zi=Il~oSB)r;(pkl$lBoW`??_k2ylY2p6U3#d+yu{C+9IRFfe$!`njxgN@xNAs2(7u literal 0 HcmV?d00001 diff --git a/sprites/flameg/FGEXF0.png b/sprites/flameg/FGEXF0.png new file mode 100644 index 0000000000000000000000000000000000000000..44bfa3bcdc69713175b2234120dc1655680e194d GIT binary patch literal 1409 zcmeAS@N?(olHy`uVBq!ia0y~yU}ykg4rT@hhA$5${$yZa;7BiWOk!YQuwh_e@R`YO z8pXiCura_V#Fasnfq|2Ok(GgolYv#3frFEQgOim*hJj0!frpQQSD1m%n1SDdK|q01 zP@F+bTv%L{Puz<^Mn*oz-`Dhv)tO2X_et zh&a_HEP13C@IfYWZP@CoSzDt()T^gw=gtZJT&(`QR50ah{qemMH{UwzxbJFqq(iah z{a1h2PnrI)O1a+kHz9l1O8&&KQbJ3T(f zJ(XN5Fws|8|Iu0PpUIc~#g(S-Ppf?AoqfS0@5%lTi|1T%-8m^;Z`~7fh6z(#P4-N&FIQc0;QsyBZs(Z%Jyo`q>sn4U~%afCL z`eHnd=hwen&A3VD^O};SS)Q6t6_>72DgE?gshhcjnCPDJ)N`xCg1nw4i^p;XWtz^G zRPf%hYnnU5rb$_F2nmDtd;URoz}ndjHPoVj(!%;hP5(^Uhz z_rHF0Kk3Y?>#^Q%?Ein>_u<6j=^JM~@(>fQ5ZV3jIsetry(tCzr1Q1=H(fQ`%_zD_ zCgALu_1>qvwo2swT3K;hj43Ru$bEup;^Jq^# z6XPabpT+U@l7@6udbZR+KIAS~Y9wm93_N ziOd==RVQwe`NJ{cS4+tEDM=@{S}?s>cjlre=O&p0XU_WgUVXjp*o*72v#(~a%XbX= zykN>xhE-{+vR?iDu+BShZ_4$$8?nMRTJo`}mJDA{oXJ0yDHCNLYPz}naYU$R151i! zgPqa){O`Bl-kAAv;_~)&XP5bbL_=21J{lr#_cqH@W$LW<*@YR|O3f^hLUWePtX%o` zU99+A|5L|r|Gjb5>BJ)@hpm_1w{3G1dJrfpZ+Evx^P|T!wh14rWRB}eb58hD_M&|I zZ@o$HL#MIN`o4SPtU%9DZS&;)yCt(1`RScLeC&5&&SrJ>m2&Izzdx?ny}mW%)Talf zGTEMnD<^#k;s0#Hn|s^psmOt{jN&g-LOh=Z@qhknQubDF_Z+4>wQE$ThD@rI4dOP*iVu`_16Ke|zP=+j*Op zUg2w*BXm#Z*~^O-Tk`Tu*(^057~J>&e!0xLtZa&}A8&rw^}8lzYlCc8&yjMdx|`>H z&TH2x%LA|VuFq;vNN23N8+)DUL?uH-u*`(wO4bG*M@0FMwe{EhKhoFU1fR*ao~+Bj Pz`)??>gTe~DWM4f#Djtr literal 0 HcmV?d00001 diff --git a/sprites/flameg/FGEXG0.png b/sprites/flameg/FGEXG0.png new file mode 100644 index 0000000000000000000000000000000000000000..39bd6d2e0e4a9455b2442769895a543f14dc644d GIT binary patch literal 959 zcmeAS@N?(olHy`uVBq!ia0y~yU}ykg4rT@hhA$5${$yZa;7BiWOk!YQuwh_e@R`YO z8pXiC&=uel;>w`Pz`)7C$jZRP$-pYiz`@DD!O6-Y!@#A=z{AJDE6l)e!62Z(DJae$ zCN3?4l`$9 zU|=i>@(X5gcy=R=fr06~r;B5Vgyh?U4~uSxh_qhRPk-+=&GO+c(^c9RuWZSiJK@mp z{c`4Nt!FMg3|HlSy3X~oiSK0--_LWaZf;(;IdZxSnE(1!|99(aUy>}Q&ogz6xoC3s zfAIddkyrKex3771b@jaWVdre;o=`f(-h8yEe%!5gllH|5!*rHj%lFC|

bdHudZ+ZFlldUzg!wjTPW~Qe*r)x!9)&H9j^W%r1?z5-4Wfx@q zSDu=5e*fKNPE2=2yw7Ml6)`zSh2Hx4`n`OxsK>S=Yn=LZ@{hJ||33eH`J_WL!;a2T z3b71zY!R@pw-WDs(ROgXuA#c^BW}gRX*=$-PVG`P)DHdQdSk=M;)Pr{gA9~&*SZS| zOuD(mxVV0QFzZ6CA5yU&d0%|Jy>=DHggL6#r&Fz_PZDa8`zUIkyZ#5;mlm&OK@R0L zJ7&A_xU?Lp`NA?`vKLcZyMOy3Wk;6JodKdYr)>RqJwAL_TFYDTj932-4dHkm{`qZv zUP?29TaMU!yx(o@h~*6SL3e{VDj(c4L!7w5W@P zci-hgDXSfV-jh-{O5dMdomAjhm50>C;57?=F-of4p!>C@XjO>q4t3 zg;sCaS0`1jieX?r_{mAoOq)A1K4PNMrsP<~S<5n^=-K{v{C5= literal 0 HcmV?d00001 diff --git a/sprites/flameg/FGEXH0.png b/sprites/flameg/FGEXH0.png new file mode 100644 index 0000000000000000000000000000000000000000..dd99d73a7add651125bae15d09e0f01653786efb GIT binary patch literal 409 zcmeAS@N?(olHy`uVBq!ia0y~yU}ykg4rT@hhA$5${$yZa;7BiWOk!YQuwh_e@R`YO z8pXiCkQv|;;>w`Pz`)7C$jZRP$-pYiz`@DD!^gnK$0wk`DJae$CN3pi)ls&vVNcv(Gvgmfz|+;wWt~$(69A$u Biv<7x literal 0 HcmV?d00001 diff --git a/sprites/flameg/FGFLA0.png b/sprites/flameg/FGFLA0.png new file mode 100644 index 0000000000000000000000000000000000000000..9596dae4f483eb583dc7218bf79f216bf55eff75 GIT binary patch literal 6271 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 gb%7 literal 0 HcmV?d00001 diff --git a/trnslate.txt b/trnslate.txt index 44a1bf1..0fb2c4b 100644 --- a/trnslate.txt +++ b/trnslate.txt @@ -1,3 +1,4 @@ DamTeal="0:255=%[0,0,0]:[0.30,0.76,1.20]" DamMagenta="0:255=%[0,0,0]:[1.50,0.30,1.50]" RedIcon="0:255=#[255,0,0]" +FlamGSpark="0:255=%[0,0,0]:[0.75,1.00,0.00]" diff --git a/zscript/flamegun.zsc b/zscript/flamegun.zsc index a2e0dec..e8bac2b 100644 --- a/zscript/flamegun.zsc +++ b/zscript/flamegun.zsc @@ -1,13 +1,280 @@ +Class UFireLight : PaletteLight +{ + Default + { + Tag "FlamG"; + Args 0,0,0,60; + } +} + +Class UFireTrail : Actor +{ + Default + { + RenderStyle "Add"; + Radius 0.1; + Height 0; + +NOBLOCKMAP; + +NOGRAVITY; + +DONTSPLASH; + +FORCEXYBILLBOARD; + +NOTELEPORT; + Scale 0.5; + Alpha 0.2; + } + override void Tick() + { + Super.Tick(); + if ( !target || !target.bMISSILE ) + { + Destroy(); + return; + } + SetOrigin(target.pos,true); + } + States + { + Spawn: + FGFL A -1 Bright; + Stop; + } +} + Class UFireball : Actor { + Vector3 Acceleration; + double spreadf; + int ns, nsp; + + property SpreadFactor : spreadf; + property NumSmokes : ns; + property NumSparks : nsp; + + Default + { + DamageType 'Fire'; + DamageFunction 30; + Radius 4; + Height 4; + Speed 15; + PROJECTILE; + +SKYEXPLODE; + +EXPLODEONWATER; + +FORCERADIUSDMG; + +NODAMAGETHRUST; + +FORCEXYBILLBOARD; + UFireball.SpreadFactor 0.2; + UFireball.NumSmokes 1; + UFireball.NumSparks 2; + } + override void PostBeginPlay() + { + Super.PostBeginPlay(); + if ( bAMBUSH ) return; + let l = Spawn("UFireTrail",pos); + l.target = self; + Acceleration = vel.unit()*50; + A_PlaySound("eightball/fly",CHAN_VOICE,1.0,true,3.,pitch:1.5); + } + action void A_Spread() + { + vel += invoker.Acceleration/TICRATE; + vel += (FRandom[EWizFX](-1,1),FRandom[EWizFX](-1,1),FRandom[EWizFX](-1,1))*FRandom[EWizFX](.5,1.)*invoker.spreadf; + Vector3 dir = vel.unit(); + if ( vel.length() > 30. ) vel = dir*30.; + angle = atan2(dir.y,dir.x); + pitch = asin(-dir.z); + if ( waterlevel > 0 ) + { + int numpt = Random[ExploS](10,15); + if ( bAMBUSH ) numpt /= 3; + for ( int i=0; i40,"AltRelease"); + } + Wait; + AltRelease: + FGNF B 2 + { + invoker.special1 = 0; + A_WeaponOffset(0,32); + A_FlameGunFire(true); + } + FGNF CDEFGHIJ 2; + FGNT ABCDEFGHIJKLM 2; + Goto Idle; + Deselect: + FGND A 1 A_Overlay(-9999,"Null"); + FGND BCDEFGHIJ 1; + FGND J 1 A_Lower(int.max); + Wait; } } diff --git a/zscript/napalm.zsc b/zscript/napalm.zsc index d6c85ea..2678b1d 100644 --- a/zscript/napalm.zsc +++ b/zscript/napalm.zsc @@ -29,6 +29,8 @@ Class UNapalm : Actor Class UFlamethrower : UnrealWeapon { + bool bCharging; + Default { Tag "$T_FLAMETHROWER"; diff --git a/zscript/unrealcommon.zsc b/zscript/unrealcommon.zsc index edb134f..86aef70 100644 --- a/zscript/unrealcommon.zsc +++ b/zscript/unrealcommon.zsc @@ -264,7 +264,9 @@ Class UPlayer : UTPlayer if ( (player.ReadyWeapon is 'Eightball') || ((player.ReadyWeapon is 'DispersionPistol') && DispersionPistol(player.ReadyWeapon).bCharging) || ((player.ReadyWeapon is 'UBioRifle') && UBioRifle(player.ReadyWeapon).bCharging) - || (player.ReadyWeapon is 'Razorjack')|| (player.ReadyWeapon is 'Stunner') ) + || ((player.ReadyWeapon is 'FlameGun') && FlameGun(player.ReadyWeapon).bCharging) + || (player.ReadyWeapon is 'Razorjack') || (player.ReadyWeapon is 'Stunner') + || ((player.ReadyWeapon is 'UFlamethrower') && UFlamethrower(player.ReadyWeapon).bCharging) ) { if ( !InStateSequence(CurState,FindState("MissileRepStill")) ) SetStateLabel("MissileRepStill");