diff --git a/graphics/HUD/SheenBar0.png b/graphics/HUD/SheenBar0.png new file mode 100644 index 000000000..f4e3d5cb3 Binary files /dev/null and b/graphics/HUD/SheenBar0.png differ diff --git a/graphics/HUD/SheenBar1.png b/graphics/HUD/SheenBar1.png new file mode 100644 index 000000000..c6c102bf2 Binary files /dev/null and b/graphics/HUD/SheenBar1.png differ diff --git a/graphics/HUD/SheenBar2.png b/graphics/HUD/SheenBar2.png new file mode 100644 index 000000000..81bbcf1a1 Binary files /dev/null and b/graphics/HUD/SheenBar2.png differ diff --git a/graphics/HUD/SheenBar3.png b/graphics/HUD/SheenBar3.png new file mode 100644 index 000000000..8a5b9a8b8 Binary files /dev/null and b/graphics/HUD/SheenBar3.png differ diff --git a/graphics/HUD/SheenDisplay.png b/graphics/HUD/SheenDisplay.png index 3b03f3e72..d3649b252 100644 Binary files a/graphics/HUD/SheenDisplay.png and b/graphics/HUD/SheenDisplay.png differ diff --git a/graphics/HUD/SheenSpeed.png b/graphics/HUD/SheenSpeed.png new file mode 100644 index 000000000..6a26a0435 Binary files /dev/null and b/graphics/HUD/SheenSpeed.png differ diff --git a/language.def_lore b/language.def_lore index 3ff39abdd..afe03f0b0 100644 --- a/language.def_lore +++ b/language.def_lore @@ -1455,11 +1455,21 @@ SWWM_LORETXT_HEAVYMAHSHEENGUN = "\n" "While generally meant for mounted use, on-the-go operation is possible, provided the user is equipped with silver-rated power armor at minimum in order to handle its heavy recoil.\n" "\n" -"\cfPrimary Fire:\c- 300 RPM operation. A slow spin. Sustained fire in this mode is theoretically endless, as the heat produced can be efficiently nullified by the internal cooling systems, it is therefore the recommended mode for most situations.\n" +"The weapon is rated for three speeds:\n" "\n" -"\cfSecondary Fire:\c- 700 RPM operation. Much faster spin, with moderate heat buildup. It's still possible to keep firing in this mode for about a minute or so from a cold start. If you need to deliver more pain and have the ammunition to spare, choose this.\n" +"\cf300 RPM:\c- A slow spin. Sustained fire in this mode is theoretically endless, as the heat produced can be efficiently nullified by the internal cooling systems, it is therefore the recommended mode for most situations.\n" "\n" -"\cfTertiary Fire:\c- 2100 RPM operation. Extremely fast, with the highest heat potential. Sustained fire in this mode may quickly trigger the weapon's safety lock should the rising heat get too close to non-operational temperature. If you want things dead fast and don't care about running out of ammo in a matter of seconds, do pick this.\n" +"\cf700 RPM:\c- Much faster spin, with moderate heat buildup. It's still possible to keep firing in this mode for about a minute or so from a cold start. If you need to deliver more pain and have the ammunition to spare, choose this.\n" +"\n" +"\cf2100 RPM:\c- Extremely fast, with the highest heat potential. Sustained fire in this mode may quickly trigger the weapon's safety lock should the rising heat get too close to non-operational temperature. If you want things dead fast and don't care about running out of ammo in a matter of seconds, do pick this.\n" +"\n" +"By default, the safest firing speed is active. Other speeds can be selected by pulling or pushing on the trigger handle (note that the handle is locked in place while firing, so speed can't be changed on the fly).\n" +"\n" +"\cfPrimary Fire:\c- Fire at the selected speed. There is no wind up or wind down in this weapon's operation, so it will begin firing from the moment the trigger is squeezed, and immediately stop once it's released.\n" +"\n" +"\cfSecondary Fire:\c- Push the trigger handle to increase the firing speed.\n" +"\n" +"\cfTertiary Fire:\c- Pull the trigger handle to decrease the firing speed.\n" "\n" "\cfReloading:\c- There is absolutely no need whatsoever to reload this weapon, as it feeds directly off Hammerspace, requiring only a large supply of ammunition. Hammerspace containers will automatically link all necessary rounds for tethered feeding.\n" "\n" diff --git a/language.es_lore b/language.es_lore index 8e0006bf8..9240b6b18 100644 --- a/language.es_lore +++ b/language.es_lore @@ -1346,11 +1346,21 @@ SWWM_LORETXT_HEAVYMAHSHEENGUN = "\n" "Aunque generalmente ideada para el uso montado, la operación al paso es posible, siempre y cuando el usuario tenga una servoarmadura de grado plata como mínimo para manejar el potente retroceso.\n" "\n" -"\cfFuego Primario:\c- Operación a 300 RPM. Velocidad lenta. El fuego prolongado en este modo es en teoría infinito, ya que el calor producido puede ser anulado eficientemente por los sistemas de refrigeración internos, es entonces el modo recomendado para la mayoría de situaciones.\n" +"El arma está preparada para tres velocidades:\n" "\n" -"\cfFuego Secundario:\c- Operación a 700 RPM. Mayor velocidad, con calentamiento moderado. Aun es posible el fuego continuado en este modo, durante al menos un minuto aproximadamente desde un inicio en frío. Si necesitas repartir más dolor y tienes munición de sobra, usa esto.\n" +"\cf300 RPM:\c- Velocidad lenta. El fuego prolongado en este modo es en teoría infinito, ya que el calor producido puede ser anulado eficientemente por los sistemas de refrigeración internos, es entonces el modo recomendado para la mayoría de situaciones.\n" "\n" -"\cfFuego Terciario:\c- Operación a 2100 RPM. Extremadamente rápido, con el mayor potencial de calor. El fuego prolongado en este modo puede activar rápidamente el bloqueo de seguridad del arma si el aumento de temperatura se acerca a niveles no operacionales. Si tienes prisa por matar y no te importa quedarte sin munición en pocos segundos, entonces elige esto.\n" +"\cf700 RPM:\c- Mayor velocidad, con calentamiento moderado. Aun es posible el fuego continuado en este modo, durante al menos un minuto aproximadamente desde un inicio en frío. Si necesitas repartir más dolor y tienes munición de sobra, usa esto.\n" +"\n" +"\cf2100 RPM:\c- Extremadamente rápido, con el mayor potencial de calor. El fuego prolongado en este modo puede activar rápidamente el bloqueo de seguridad del arma si el aumento de temperatura se acerca a niveles no operacionales. Si tienes prisa por matar y no te importa quedarte sin munición en pocos segundos, entonces elige esto.\n" +"\n" +"La velocidad más segura viene seleccionada por defecto. Otras velocidades pueden seleccionarse al empujar o tirar del mango de disparo (ten en cuenta que el mango queda bloqueado mientras se dispara, así que no se puede cambiar la velocidad sobre la marcha).\n" +"\n" +"\cfFuego Primario:\c- Dispara con la velocidad seleccionada. El mecanismo del arma arranca y se detiene en seco, así que comenzará a disparar en cuanto se aprieta el gatillo, y parará inmediatamente despues de soltarlo.\n" +"\n" +"\cfFuego Secundario:\c- Empuja el mango para incrementar la velocidad.\n" +"\n" +"\cfFuego Terciario:\c- Tira del mango para reducir la velocidad.\n" "\n" "\cfRecarga:\c- No se necesita absolutamente recargar el arma, ya que se alimenta directamente desde Hammerspace, requiriendo solo un gran suministro de munición. Los contenedores de Hammerspace automáticamente conectarán todas las rondas necesarias para la alimentación enlazada.\n" "\n" diff --git a/language.version b/language.version index 06801245f..8aa1736e9 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r193 \cu(Thu 21 Jul 13:25:16 CEST 2022)\c-"; -SWWM_SHORTVER="\cw1.3pre r193 \cu(2022-07-21 13:25:16)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r194 \cu(Thu 21 Jul 22:01:41 CEST 2022)\c-"; +SWWM_SHORTVER="\cw1.3pre r194 \cu(2022-07-21 22:01:41)\c-"; diff --git a/lore/default/heavymahsheengun.txt b/lore/default/heavymahsheengun.txt index c97b10103..6bb84ad28 100644 --- a/lore/default/heavymahsheengun.txt +++ b/lore/default/heavymahsheengun.txt @@ -18,11 +18,21 @@ The ammunition employed by this weapon are AP rounds of 14.5x114mm caliber. Unli While generally meant for mounted use, on-the-go operation is possible, provided the user is equipped with silver-rated power armor at minimum in order to handle its heavy recoil. -\cfPrimary Fire:\c- 300 RPM operation. A slow spin. Sustained fire in this mode is theoretically endless, as the heat produced can be efficiently nullified by the internal cooling systems, it is therefore the recommended mode for most situations. +The weapon is rated for three speeds: -\cfSecondary Fire:\c- 700 RPM operation. Much faster spin, with moderate heat buildup. It's still possible to keep firing in this mode for about a minute or so from a cold start. If you need to deliver more pain and have the ammunition to spare, choose this. +\cf300 RPM:\c- A slow spin. Sustained fire in this mode is theoretically endless, as the heat produced can be efficiently nullified by the internal cooling systems, it is therefore the recommended mode for most situations. -\cfTertiary Fire:\c- 2100 RPM operation. Extremely fast, with the highest heat potential. Sustained fire in this mode may quickly trigger the weapon's safety lock should the rising heat get too close to non-operational temperature. If you want things dead fast and don't care about running out of ammo in a matter of seconds, do pick this. +\cf700 RPM:\c- Much faster spin, with moderate heat buildup. It's still possible to keep firing in this mode for about a minute or so from a cold start. If you need to deliver more pain and have the ammunition to spare, choose this. + +\cf2100 RPM:\c- Extremely fast, with the highest heat potential. Sustained fire in this mode may quickly trigger the weapon's safety lock should the rising heat get too close to non-operational temperature. If you want things dead fast and don't care about running out of ammo in a matter of seconds, do pick this. + +By default, the safest firing speed is active. Other speeds can be selected by pulling or pushing on the trigger handle (note that the handle is locked in place while firing, so speed can't be changed on the fly). + +\cfPrimary Fire:\c- Fire at the selected speed. There is no wind up or wind down in this weapon's operation, so it will begin firing from the moment the trigger is squeezed, and immediately stop once it's released. + +\cfSecondary Fire:\c- Push the trigger handle to increase the firing speed. + +\cfTertiary Fire:\c- Pull the trigger handle to decrease the firing speed. \cfReloading:\c- There is absolutely no need whatsoever to reload this weapon, as it feeds directly off Hammerspace, requiring only a large supply of ammunition. Hammerspace containers will automatically link all necessary rounds for tethered feeding. diff --git a/lore/es/heavymahsheengun.txt b/lore/es/heavymahsheengun.txt index 03ce4cd03..0eae0167e 100644 --- a/lore/es/heavymahsheengun.txt +++ b/lore/es/heavymahsheengun.txt @@ -14,11 +14,21 @@ La munición empleada por este arma son balas anti-armadura del calibre 14.5x114 Aunque generalmente ideada para el uso montado, la operación al paso es posible, siempre y cuando el usuario tenga una servoarmadura de grado plata como mínimo para manejar el potente retroceso. -\cfFuego Primario:\c- Operación a 300 RPM. Velocidad lenta. El fuego prolongado en este modo es en teoría infinito, ya que el calor producido puede ser anulado eficientemente por los sistemas de refrigeración internos, es entonces el modo recomendado para la mayoría de situaciones. +El arma está preparada para tres velocidades: -\cfFuego Secundario:\c- Operación a 700 RPM. Mayor velocidad, con calentamiento moderado. Aun es posible el fuego continuado en este modo, durante al menos un minuto aproximadamente desde un inicio en frío. Si necesitas repartir más dolor y tienes munición de sobra, usa esto. +\cf300 RPM:\c- Velocidad lenta. El fuego prolongado en este modo es en teoría infinito, ya que el calor producido puede ser anulado eficientemente por los sistemas de refrigeración internos, es entonces el modo recomendado para la mayoría de situaciones. -\cfFuego Terciario:\c- Operación a 2100 RPM. Extremadamente rápido, con el mayor potencial de calor. El fuego prolongado en este modo puede activar rápidamente el bloqueo de seguridad del arma si el aumento de temperatura se acerca a niveles no operacionales. Si tienes prisa por matar y no te importa quedarte sin munición en pocos segundos, entonces elige esto. +\cf700 RPM:\c- Mayor velocidad, con calentamiento moderado. Aun es posible el fuego continuado en este modo, durante al menos un minuto aproximadamente desde un inicio en frío. Si necesitas repartir más dolor y tienes munición de sobra, usa esto. + +\cf2100 RPM:\c- Extremadamente rápido, con el mayor potencial de calor. El fuego prolongado en este modo puede activar rápidamente el bloqueo de seguridad del arma si el aumento de temperatura se acerca a niveles no operacionales. Si tienes prisa por matar y no te importa quedarte sin munición en pocos segundos, entonces elige esto. + +La velocidad más segura viene seleccionada por defecto. Otras velocidades pueden seleccionarse al empujar o tirar del mango de disparo (ten en cuenta que el mango queda bloqueado mientras se dispara, así que no se puede cambiar la velocidad sobre la marcha). + +\cfFuego Primario:\c- Dispara con la velocidad seleccionada. El mecanismo del arma arranca y se detiene en seco, así que comenzará a disparar en cuanto se aprieta el gatillo, y parará inmediatamente despues de soltarlo. + +\cfFuego Secundario:\c- Empuja el mango para incrementar la velocidad. + +\cfFuego Terciario:\c- Tira del mango para reducir la velocidad. \cfRecarga:\c- No se necesita absolutamente recargar el arma, ya que se alimenta directamente desde Hammerspace, requiriendo solo un gran suministro de munición. Los contenedores de Hammerspace automáticamente conectarán todas las rondas necesarias para la alimentación enlazada. diff --git a/modeldef.dlcammo b/modeldef.dlcammo index cf19f17c8..674a7e188 100644 --- a/modeldef.dlcammo +++ b/modeldef.dlcammo @@ -66,11 +66,11 @@ Model "SMW05BigAmmo" Model "SheenAmmo" { - Path "models/extra" + Path "models" - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.015 0.015 0.015 + Model 0 "SheenBullet_d.3d" + Skin 0 "SheenBullet.png" + Scale 0.04 0.04 0.04 ZOffset 16 PitchOffset 30 ROTATING @@ -79,65 +79,49 @@ Model "SheenAmmo" } Model "SheenAmmo2" { - Path "models/extra" + Path "models" - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.015 0.015 0.015 + Model 0 "SheenBullet2_d.3d" + Skin 0 "SheenBullet.png" + Scale 0.04 0.04 0.04 ZOffset 16 - PitchOffset 30 ROTATING FrameIndex XZW1 A 0 0 } Model "SheenAmmo3" { - Path "models/extra" + Path "models" - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.015 0.015 0.015 + Model 0 "SheenBullet3_d.3d" + Skin 0 "SheenBullet.png" + Scale 0.04 0.04 0.04 ZOffset 16 - PitchOffset 30 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SheenTinyAmmo" -{ - Path "models/extra" - - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.02 0.02 0.02 - ZOffset 16 - PitchOffset 30 ROTATING FrameIndex XZW1 A 0 0 } Model "SheenSmallAmmo" { - Path "models/extra" + Path "models" - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.025 0.025 0.025 + Model 0 "SheenBullet10_d.3d" + SurfaceSkin 0 0 "SheenBullet.png" + SurfaceSkin 0 1 "SheenAmmoBand.png" + Scale 0.04 0.04 0.04 ZOffset 16 - PitchOffset 30 ROTATING FrameIndex XZW1 A 0 0 } Model "SheenBigAmmo" { - Path "models/extra" + Path "models" - Model 0 "BaseCube_d.3d" - Skin 0 "CHIPTILY" - Scale 0.03 0.03 0.03 + Model 0 "SheenBullet50_d.3d" + Skin 0 "SheenAmmoBox.png" + Scale 0.08 0.08 0.08 ZOffset 16 - PitchOffset 30 ROTATING FrameIndex XZW1 A 0 0 diff --git a/modeldef.sheenhmg b/modeldef.sheenhmg index 6b1f1955b..ffe731e60 100644 --- a/modeldef.sheenhmg +++ b/modeldef.sheenhmg @@ -4,7 +4,7 @@ Model "HeavyMahSheenGun" Model 0 "SheenHMGPickup_d.3d" SurfaceSkin 0 0 "SheenHMG.png" - SurfaceSkin 0 1 "SheenLED.png" + SurfaceSkin 0 1 "NoLED.png" Scale 0.16 0.16 0.16 AngleOffset 90 ZOffset 20 @@ -12,3 +12,64 @@ Model "HeavyMahSheenGun" FrameIndex XZW1 A 0 0 } + +Model "HeavyMahSheenGun" +{ + Path "models" + + Model 1 "SheenHMG1st_d.3d" + SurfaceSkin 1 0 "DemoTags.png" + SurfaceSkin 1 1 "DemoArms.png" + SurfaceSkin 1 2 "DemoSoft.png" + SurfaceSkin 1 3 "SheenHMG.png" + SurfaceSkin 1 4 "SheenLED.png" + + Scale -0.01 0.005 0.01 + Offset 0 -1 -2 + + // Still + FrameIndex XZW2 A 1 0 + // Deselect + FrameIndex XZW2 B 1 1 + FrameIndex XZW2 C 1 2 + FrameIndex XZW2 D 1 3 + FrameIndex XZW2 E 1 4 + FrameIndex XZW2 F 1 5 + FrameIndex XZW2 G 1 6 + FrameIndex XZW2 H 1 7 + FrameIndex XZW2 I 1 8 + FrameIndex XZW2 J 1 9 + FrameIndex XZW2 K 1 10 // Select + FrameIndex XZW2 L 1 11 + FrameIndex XZW2 M 1 12 + FrameIndex XZW2 N 1 13 + FrameIndex XZW2 O 1 14 + FrameIndex XZW2 P 1 15 + FrameIndex XZW2 Q 1 16 + FrameIndex XZW2 R 1 17 + FrameIndex XZW2 S 1 18 + FrameIndex XZW2 T 1 19 + FrameIndex XZW2 U 1 20 + FrameIndex XZW2 V 1 21 + FrameIndex XZW2 W 1 22 + FrameIndex XZW2 X 1 23 + // StartFire + // SlowFireOne + // SlowFireTwo + // SlowFireThree + // FastFireOne + // FastFireTwo + // FastFireThree + // VERYFASTFIRE + // EndFireFAST7 + // EndFireFAST6 + // EndFireFAST5 + // EndFireFAST4 + // EndFireFAST3 + // EndFireFAST2 + // EndFireFAST1 + // SpeedUp + // SlowDown + // Idle + // Melee +} diff --git a/models/NoLED.png b/models/NoLED.png new file mode 100644 index 000000000..9a66e8823 Binary files /dev/null and b/models/NoLED.png differ diff --git a/models/SheenAmmoBand.png b/models/SheenAmmoBand.png new file mode 100644 index 000000000..d75627b36 Binary files /dev/null and b/models/SheenAmmoBand.png differ diff --git a/models/SheenAmmoBox.png b/models/SheenAmmoBox.png new file mode 100644 index 000000000..5137114bd Binary files /dev/null and b/models/SheenAmmoBox.png differ diff --git a/models/SheenBullet.png b/models/SheenBullet.png new file mode 100644 index 000000000..67546f5fb Binary files /dev/null and b/models/SheenBullet.png differ diff --git a/models/SheenBullet10_a.3d b/models/SheenBullet10_a.3d new file mode 100644 index 000000000..2980611bf Binary files /dev/null and b/models/SheenBullet10_a.3d differ diff --git a/models/SheenBullet10_d.3d b/models/SheenBullet10_d.3d new file mode 100644 index 000000000..022c10956 Binary files /dev/null and b/models/SheenBullet10_d.3d differ diff --git a/models/SheenBullet2_a.3d b/models/SheenBullet2_a.3d new file mode 100644 index 000000000..65747bf89 Binary files /dev/null and b/models/SheenBullet2_a.3d differ diff --git a/models/SheenBullet2_d.3d b/models/SheenBullet2_d.3d new file mode 100644 index 000000000..f09f7bf26 Binary files /dev/null and b/models/SheenBullet2_d.3d differ diff --git a/models/SheenBullet3_a.3d b/models/SheenBullet3_a.3d new file mode 100644 index 000000000..e9345fc1c Binary files /dev/null and b/models/SheenBullet3_a.3d differ diff --git a/models/SheenBullet3_d.3d b/models/SheenBullet3_d.3d new file mode 100644 index 000000000..aa0bad2ec Binary files /dev/null and b/models/SheenBullet3_d.3d differ diff --git a/models/SheenBullet50_a.3d b/models/SheenBullet50_a.3d new file mode 100644 index 000000000..f54804e29 Binary files /dev/null and b/models/SheenBullet50_a.3d differ diff --git a/models/SheenBullet50_d.3d b/models/SheenBullet50_d.3d new file mode 100644 index 000000000..7ea7a8fb9 Binary files /dev/null and b/models/SheenBullet50_d.3d differ diff --git a/models/SheenBulletCase_a.3d b/models/SheenBulletCase_a.3d new file mode 100644 index 000000000..6885314c0 Binary files /dev/null and b/models/SheenBulletCase_a.3d differ diff --git a/models/SheenBulletCase_d.3d b/models/SheenBulletCase_d.3d new file mode 100644 index 000000000..a47db5633 Binary files /dev/null and b/models/SheenBulletCase_d.3d differ diff --git a/models/SheenBulletProjectile_a.3d b/models/SheenBulletProjectile_a.3d new file mode 100644 index 000000000..49ba33cd2 Binary files /dev/null and b/models/SheenBulletProjectile_a.3d differ diff --git a/models/SheenBulletProjectile_d.3d b/models/SheenBulletProjectile_d.3d new file mode 100644 index 000000000..adc688dd4 Binary files /dev/null and b/models/SheenBulletProjectile_d.3d differ diff --git a/models/SheenBullet_Fired.png b/models/SheenBullet_Fired.png new file mode 100644 index 000000000..d7e7f1fe6 Binary files /dev/null and b/models/SheenBullet_Fired.png differ diff --git a/models/SheenBullet_a.3d b/models/SheenBullet_a.3d new file mode 100644 index 000000000..1f65773af Binary files /dev/null and b/models/SheenBullet_a.3d differ diff --git a/models/SheenBullet_d.3d b/models/SheenBullet_d.3d new file mode 100644 index 000000000..28a465e15 Binary files /dev/null and b/models/SheenBullet_d.3d differ diff --git a/models/SheenHMG1st.blend b/models/SheenHMG1st.blend new file mode 100644 index 000000000..2d8706683 Binary files /dev/null and b/models/SheenHMG1st.blend differ diff --git a/models/SheenHMG1st_a.3d b/models/SheenHMG1st_a.3d new file mode 100644 index 000000000..4e0f7e0d1 Binary files /dev/null and b/models/SheenHMG1st_a.3d differ diff --git a/models/SheenHMG1st_d.3d b/models/SheenHMG1st_d.3d new file mode 100644 index 000000000..e6751802b Binary files /dev/null and b/models/SheenHMG1st_d.3d differ diff --git a/models/modelnotes.txt b/models/modelnotes.txt index 85ae8bfcf..7093e1eb0 100644 --- a/models/modelnotes.txt +++ b/models/modelnotes.txt @@ -5,7 +5,7 @@ Weapon models: - Plasma Blaster - Puntzer Beta - Puntzer Gamma - ½ Sheen HMG + x Sheen HMG - Quadravol - Sparkster Rifle - Mortal Rifle @@ -18,11 +18,10 @@ Ammo models: - Single - Beta speedloader - Gamma mag - - Sheen Ammo - - Single - - 10 Belt - - 50 Box - - 100 Box + x Sheen Ammo + x 1/2/3 Rounds + x 10 Pack + x 50 Box - Quadravol Ammo - Sparkster Ammo - Kinylum Round diff --git a/shaders/glsl/Subpixel.fp b/shaders/glsl/Subpixel.fp index f40a454e9..23cbfced7 100644 --- a/shaders/glsl/Subpixel.fp +++ b/shaders/glsl/Subpixel.fp @@ -1,9 +1,14 @@ // RGB subpixel filter for Ammo LEDs +// GRIDSZ = how many subpixels are in the texture (for layouts where subpixel patterns alternate) +#ifndef GRIDSZ +#define GRIDSZ vec2(1.,1.) +#endif + void SetupMaterial( inout Material mat ) { mat.Base = getTexel(vTexCoord.st); - vec2 uv = vTexCoord.st*vec2(textureSize(tex,0)); + vec2 uv = (vTexCoord.st*vec2(textureSize(tex,0)))/GRIDSZ; mat.Base *= 1.5*texture(pixtex,uv); mat.Normal = ApplyNormalMap(vTexCoord.st); mat.Bright = vec4(1.); diff --git a/sndinfo.dlcweapons b/sndinfo.dlcweapons index ab679d938..f6f3e1bc9 100644 --- a/sndinfo.dlcweapons +++ b/sndinfo.dlcweapons @@ -60,7 +60,9 @@ $random sheen/fire { sheen/fire1 sheen/fire2 sheen/fire3 } $limit sheen/fire 16 sheen/700rpm sounds/dlc1/sheen/sheen_700rpm.ogg sheen/2100rpm sounds/dlc1/sheen/sheen_2100rpm.ogg -// TODO overheat sound +sheen/crankin sounds/dlc1/sheen/sheen_crankin.ogg +sheen/crankout sounds/dlc1/sheen/sheen_crankout.ogg +// TODO overheat alarm quadshot/select sounds/dlc1/quadshot/quad_select.ogg quadshot/deselect sounds/dlc1/quadshot/quad_deselect.ogg diff --git a/sounds/dlc1/sheen/sheen_crankin.ogg b/sounds/dlc1/sheen/sheen_crankin.ogg new file mode 100644 index 000000000..ca1e2e176 Binary files /dev/null and b/sounds/dlc1/sheen/sheen_crankin.ogg differ diff --git a/sounds/dlc1/sheen/sheen_crankout.ogg b/sounds/dlc1/sheen/sheen_crankout.ogg new file mode 100644 index 000000000..0ea106147 Binary files /dev/null and b/sounds/dlc1/sheen/sheen_crankout.ogg differ diff --git a/textures/subpixel_nukuri.png b/textures/subpixel_nukuri.png new file mode 100644 index 000000000..8f38864ca Binary files /dev/null and b/textures/subpixel_nukuri.png differ diff --git a/textures/subpixel_xekkian.png b/textures/subpixel_xekkian.png new file mode 100644 index 000000000..b37771593 Binary files /dev/null and b/textures/subpixel_xekkian.png differ diff --git a/zscript/dlc1/swwm_ammoitems_dlc.zsc b/zscript/dlc1/swwm_ammoitems_dlc.zsc index fd7c70dac..60b7e0d79 100644 --- a/zscript/dlc1/swwm_ammoitems_dlc.zsc +++ b/zscript/dlc1/swwm_ammoitems_dlc.zsc @@ -63,10 +63,12 @@ Class SheenAmmo : SWWMAmmo Inventory.MaxAmount 300; Ammo.BackpackAmount 60; Ammo.BackpackMaxAmount 900; - Ammo.DropAmount 3; + Ammo.DropAmount 10; +FLOATBOB; FloatBobStrength 0.25; Accuracy 35; + Radius 4; + Height 24; } States { @@ -80,6 +82,7 @@ Class SheenAmmo2 : SheenAmmo Default { Inventory.Amount 2; + Radius 6; } } Class SheenAmmo3 : SheenAmmo @@ -87,27 +90,23 @@ Class SheenAmmo3 : SheenAmmo Default { Inventory.Amount 3; - } -} -Class SheenTinyAmmo : SheenAmmo -{ - Default - { - Inventory.Amount 10; + Radius 6; } } Class SheenSmallAmmo : SheenAmmo { Default { - Inventory.Amount 50; + Inventory.Amount 10; + Radius 6; } } Class SheenBigAmmo : SheenAmmo { Default { - Inventory.Amount 100; + Inventory.Amount 50; + Radius 16; } } diff --git a/zscript/dlc1/swwm_dlcweapons_hud.zsc b/zscript/dlc1/swwm_dlcweapons_hud.zsc index 1367c064a..e3417f6de 100644 --- a/zscript/dlc1/swwm_dlcweapons_hud.zsc +++ b/zscript/dlc1/swwm_dlcweapons_hud.zsc @@ -1 +1,35 @@ // DrawWeapon code for DLC weapons + +// Sheen HMG +extend Class HeavyMahSheenGun +{ + ui TextureID WeaponBox, BulletTex[2], SpeedTex, BarTex[4]; + + override void DrawWeapon( double TicFrac, double bx, double by, double hs, Vector2 ss ) + { + if ( !WeaponBox ) WeaponBox = TexMan.CheckForTexture("graphics/HUD/SheenDisplay.png",TexMan.Type_Any); + if ( !BulletTex[0] ) BulletTex[0] = TexMan.CheckForTexture("graphics/HUD/SheenRound.png",TexMan.Type_Any); + if ( !BulletTex[1] ) BulletTex[1] = TexMan.CheckForTexture("graphics/HUD/SheenCasing.png",TexMan.Type_Any); + if ( !SpeedTex ) SpeedTex = TexMan.CheckForTexture("graphics/HUD/SheenSpeed.png",TexMan.Type_Any); + if ( !BarTex[0] ) BarTex[0] = TexMan.CheckForTexture("graphics/HUD/SheenBar0.png",TexMan.Type_Any); + if ( !BarTex[1] ) BarTex[1] = TexMan.CheckForTexture("graphics/HUD/SheenBar1.png",TexMan.Type_Any); + if ( !BarTex[2] ) BarTex[2] = TexMan.CheckForTexture("graphics/HUD/SheenBar2.png",TexMan.Type_Any); + if ( !BarTex[3] ) BarTex[3] = TexMan.CheckForTexture("graphics/HUD/SheenBar3.png",TexMan.Type_Any); + Screen.DrawTexture(WeaponBox,false,bx-23,by-24,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + if ( firespeed == 0 ) for ( int i=0; i<2; i++ ) Screen.DrawTexture(SpeedTex,false,bx-21,(by-14)+i*8,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + else if ( firespeed == 1 ) for ( int i=0; i<3; i++ ) Screen.DrawTexture(SpeedTex,false,bx-21,(by-14)+i*4,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + else if ( firespeed == 2 ) for ( int i=0; i<5; i++ ) Screen.DrawTexture(SpeedTex,false,bx-21,(by-14)+i*2,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + // TODO heat bar + if ( fired ) + { + Screen.DrawTexture(BulletTex[1],false,bx-15,(by-10)-4*TicFrac,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + if ( Ammo1.Amount <= 0 ) return; + Screen.DrawTexture(BulletTex[0],false,bx-15,(by-14)-4*TicFrac,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + } + else for ( int i=0; i<2; i++ ) + { + if ( Ammo1.Amount <= i ) break; + Screen.DrawTexture(BulletTex[0],false,bx-15,(by-10)+i*4,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + } + } +} diff --git a/zscript/dlc1/swwm_heavymahsheengun.zsc b/zscript/dlc1/swwm_heavymahsheengun.zsc index af1c30613..b7c34ed71 100644 --- a/zscript/dlc1/swwm_heavymahsheengun.zsc +++ b/zscript/dlc1/swwm_heavymahsheengun.zsc @@ -3,6 +3,11 @@ Class HeavyMahSheenGun : SWWMWeapon { + bool fired; + int firespeed; + double barrelheat; + bool incooldown; + Default { Tag "$T_SHEENHMG"; @@ -10,20 +15,54 @@ Class HeavyMahSheenGun : SWWMWeapon Obituary "$O_SHEENHMG"; SWWMWeapon.Tooltip "$TT_SHEENHMG"; SWWMWeapon.GetLine "getheavymahsheengun"; + Weapon.UpSound "sheen/select"; Weapon.SlotNumber 5; Weapon.SlotPriority 2.; Weapon.SelectionOrder 100; Weapon.AmmoType1 "SheenAmmo"; - Weapon.AmmoGive1 200; + Weapon.AmmoGive1 30; SWWMWeapon.DropAmmoType "SheenAmmo"; Stamina 100000; Radius 30; Height 28; } + override void MarkPrecacheSounds() + { + Super.MarkPrecacheSounds(); + MarkSound("sheen/specialpick"); + MarkSound("sheen/select"); + MarkSound("sheen/deselect"); + MarkSound("sheen/meleestart"); + MarkSound("sheen/meleeend"); + MarkSound("sheen/fire1"); + MarkSound("sheen/fire2"); + MarkSound("sheen/fire3"); + MarkSound("sheen/700rpm"); + MarkSound("sheen/2100rpm"); + MarkSound("sheen/crankin"); + MarkSound("sheen/crankout"); + } States { Spawn: XZW1 A -1; Stop; + Select: + XZW2 K 3 A_FullRaise(); + XZW2 LMNOP 3; + XZW2 QRSTUV 2; + XZW2 WX 3; + Goto Ready; + Ready: + XZW2 A 1 A_WeaponReady(); + Wait; + Fire: + XZW2 A 1; + Goto Ready; + Deselect: + XZW2 A 2 A_StartSound("sheen/deselect",CHAN_WEAPON,CHANF_OVERLAP); + XZW2 BCDEFGHIJK 2; + XZW2 K -1 A_FullLower(); + Stop; } } diff --git a/zscript/items/swwm_ammospawn.zsc b/zscript/items/swwm_ammospawn.zsc index 0d13879c0..95494d856 100644 --- a/zscript/items/swwm_ammospawn.zsc +++ b/zscript/items/swwm_ammospawn.zsc @@ -110,7 +110,7 @@ Class SWWMClipAmmoSmall : SWWMAmmoSpawner if ( !Random[Replacements](0,4) ) { if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('HeavyMahsheenGun')) ) - return Random[Replacements](0,2)?'SheenAmmo3':'SheenTinyAmmo'; + return Random[Replacements](0,2)?'SheenAmmo3':'SheenSmallAmmo'; if ( notondemand || SWWMUtility.ItemExists('Eviscerator') ) return 'EvisceratorShell'; } @@ -137,7 +137,7 @@ Class SWWMBlastAmmoSmall : SWWMAmmoSpawner static Class PickAmmo( bool notondemand = false ) { if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('HeavyMahsheenGun')) ) - return Random[Replacements](0,2)?'SheenSmallAmmo':'SheenTinyAmmo'; + return Random[Replacements](0,2)?'SheenAmmo3':'SheenSmallAmmo'; return 'EvisceratorShell'; } } @@ -148,7 +148,7 @@ Class SWWMBlastAmmoBig : SWWMAmmoSpawner static Class PickAmmo( bool notondemand = false ) { if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('HeavyMahsheenGun')) ) - return Random[Replacements](0,2)?'SheenBigAmmo':'SheenSmallAmmo'; + return Random[Replacements](0,2)?'SheenSmallAmmo':'SheenBigAmmo'; return Random[Replacements](0,2)?'EvisceratorShell':Random[Replacements](0,1)?'EvisceratorShell2':'EvisceratorShell3'; } }