diff --git a/FuturePlans.md b/FuturePlans.md index b55669f51..31b4a984b 100644 --- a/FuturePlans.md +++ b/FuturePlans.md @@ -40,7 +40,7 @@ More weapons, because we need 'em. In addition, all the "easy to implement" mini - ✓ Spreadgun loads golden shells with altfire, like in IA3 - ✓ Wallbuster tops up buckshot one cylinder at a time until stopped - Remove all missile types except blazers, and rewrite the absolute mess of code the Hellblazer currently is - - Ammo types for Silver Bullet kept intact, but implement "alt reload" instead through altfire+reload combo + - Remove fat chodes ## 1.4 update *(Fine Refinements)*: diff --git a/MAPPING.md b/MAPPING.md index 54b893def..8aa8e2057 100644 --- a/MAPPING.md +++ b/MAPPING.md @@ -76,75 +76,72 @@ DoomEdNums 29040 = "SilverBulletAmmo" 29041 = "SilverBulletAmmo2" 29042 = "SilverBullets" - 29043 = "SilverBullets_2" - 29044 = "SilverBullets_3" - 29045 = "SilverBullets2" - 29046 = "SilverBullets2_2" - 29047 = "SilverBullets2_3" - 29048 = "CandyGunAmmo" - 29049 = "CandyGunBullets" - 29050 = "CandyGunBullets2" - 29051 = "CandyGunBullets3" - 29052 = "YnykronAmmo" + 29043 = "SilverBullets2" + 29044 = "SilverBullets3" + 29045 = "CandyGunAmmo" + 29046 = "CandyGunBullets" + 29047 = "CandyGunBullets2" + 29048 = "CandyGunBullets3" + 29049 = "YnykronAmmo" // DLC Ammo - 29053 = "SMW05Ammo" - 29054 = "SMW05Ammo2" - 29055 = "SMW05Ammo3" - 29056 = "SMW05SmallAmmo" - 29057 = "SMW05BigAmmo" - 29058 = "SheenAmmo" - 29059 = "SheenAmmo2" - 29060 = "SheenAmmo3" - 29061 = "SheenSmallAmmo" - 29062 = "SheenBigAmmo" - 29063 = "QuadravolAmmo" - 29064 = "QuadravolAmmo2" - 29065 = "QuadravolAmmo3" - 29066 = "SparksterBAmmo" - 29067 = "SparksterBAmmo2" - 29068 = "SparksterBAmmo3" - 29069 = "SparksterRAmmo" - 29070 = "SparksterRAmmo2" - 29071 = "SparksterRAmmo3" - 29072 = "RayBolt" - 29073 = "RayBolt2" - 29074 = "RayBolt5" - 29075 = "RayAmmo" - 29076 = "MisterRound" - 29077 = "MisterRound2" - 29078 = "MisterRound3" - 29079 = "MisterRound5" - 29080 = "MisterAmmo" - 29081 = "MisterGAmmo" - 29082 = "UltimatePod" - 29083 = "UltimateAmmo" + 29050 = "SMW05Ammo" + 29051 = "SMW05Ammo2" + 29052 = "SMW05Ammo3" + 29053 = "SMW05SmallAmmo" + 29054 = "SMW05BigAmmo" + 29055 = "SheenAmmo" + 29056 = "SheenAmmo2" + 29057 = "SheenAmmo3" + 29058 = "SheenSmallAmmo" + 29059 = "SheenBigAmmo" + 29060 = "QuadravolAmmo" + 29061 = "QuadravolAmmo2" + 29062 = "QuadravolAmmo3" + 29063 = "SparksterBAmmo" + 29064 = "SparksterBAmmo2" + 29065 = "SparksterBAmmo3" + 29066 = "SparksterRAmmo" + 29067 = "SparksterRAmmo2" + 29068 = "SparksterRAmmo3" + 29069 = "RayBolt" + 29070 = "RayBolt2" + 29071 = "RayBolt5" + 29072 = "RayAmmo" + 29073 = "MisterRound" + 29074 = "MisterRound2" + 29075 = "MisterRound3" + 29076 = "MisterRound5" + 29077 = "MisterAmmo" + 29078 = "MisterGAmmo" + 29079 = "UltimatePod" + 29080 = "UltimateAmmo" // For Hexen - 29084 = "FabricatorTier1" - 29085 = "FabricatorTier2" - 29086 = "FabricatorTier3" - 29087 = "FabricatorTier4" + 29081 = "FabricatorTier1" + 29082 = "FabricatorTier2" + 29083 = "FabricatorTier3" + 29084 = "FabricatorTier4" // Backpack - 29088 = "HammerspaceEmbiggener" + 29085 = "HammerspaceEmbiggener" // Health - 29089 = "HealthNuggetItem" - 29090 = "TetraHealthItem" - 29091 = "CubeHealthItem" - 29092 = "RefresherItem" + 29086 = "HealthNuggetItem" + 29087 = "TetraHealthItem" + 29088 = "CubeHealthItem" + 29089 = "RefresherItem" // Armor - 29093 = "ArmorNuggetItem" - 29094 = "BlastSuitItem" - 29095 = "WarArmorItem" + 29090 = "ArmorNuggetItem" + 29091 = "BlastSuitItem" + 29092 = "WarArmorItem" // Powerups - 29096 = "GrilledCheeseSandwich" - 29097 = "GhostArtifact" - 29098 = "GravitySuppressor" - 29099 = "FuckingInvinciball" - 29100 = "Ragekit" - 29101 = "SWWMLamp" - 29102 = "EBarrier" - 29103 = "Mykradvo" - 29104 = "DivineSprite" - 29105 = "AngerySigil" + 29093 = "GrilledCheeseSandwich" + 29094 = "GhostArtifact" + 29095 = "GravitySuppressor" + 29096 = "FuckingInvinciball" + 29097 = "Ragekit" + 29098 = "SWWMLamp" + 29099 = "EBarrier" + 29100 = "Mykradvo" + 29101 = "DivineSprite" + 29102 = "AngerySigil" } ``` diff --git a/README.md b/README.md index b8ebd52c0..70f659837 100644 --- a/README.md +++ b/README.md @@ -320,13 +320,13 @@ Neatly packaged single-shot charges of **Nokron**. Recognizable by its red color The definitive model of **Blackmann Arms**'s legendary **Silver Bullet** series. A lighter *(43kg)*, lower caliber *(1.150)* variant of the former 1.350 **BEHEMOTH** model, discontinued due to being seen as too impractical *(it was full auto, no, really)*. -**Primary fire:** Shoot the bullet. A second press chambers another round. +**Primary fire:** Shoot the bullet. -**Secondary fire:** Hold and combine with primary fire to manually cock *(in case you want to eject unfired rounds)*, or with reload to switch to alternate ammo *(if available)*. +**Secondary fire:** Cocks the gun, loading a new round if available. Note that you can eject unfired rounds in the process *(if you somehow want to)*. **Tertiary fire:** Press and hold to enter scoped mode. Release to pick the desired zoom level *(can go up to 16x)*. Press again to exit scoped mode. -**Reload:** Reload *(what else is new)*. Note that if you only have alternate ammo available, you must use the combo with secondary fire. +**Reload:** Reload *(what else is new)*. This weapon is generally not recommended for human use outside of power armor. Good thing you're not a human, then. Still, the recoil compensator jet engines can potentially deal damage to yourself if you don't have any armor, so be careful. @@ -339,13 +339,6 @@ The 1.150 caliber **eXplosive Super Burst** bullets employ an **Explodium** shap In the world, they may pop up as spare bullets or full mags. Each five bullets picked up will be automatically converted to a full mag in your inventory. They are hard to come by as full mags, so expect to be finding singular rounds more often than not. -### 1.150 FCB Bullets ~ Replaces Cells, Runes -![](docimg/fcbbullet.png) - -The more directly explosive counterpart of the **XSB**. Personally baptized by **Blackmann Arms** CEO **Hermann E. Ischer** himself as ***"Fat Chode Bombs"***, these **High-Explosive Squash Head** rounds will blast through walls on impact, hitting anything standing behind them, and in some cases, tearing down the wall itself too. - -These are a bit more rare than the standard rounds. You won't even get them from **Embiggeners**. - ### Ray-Khom *(slot 8)* ~ Replaces Plasma Rifle, Hellstaff, Arc of Death ![](docimg/raykhom.png) diff --git a/damtypes.txt b/damtypes.txt index 6c515deef..e14fdd1a2 100644 --- a/damtypes.txt +++ b/damtypes.txt @@ -28,7 +28,6 @@ Shot MiniBrass Salt MiniKinylum Concussion MiniBlurp CriticalConcussion MiniWitch -Corroded MiniMint Wallbust MiniSayaHUD Shrapnel MiniTomato Biospark MiniSulfur diff --git a/docimg/fcbbullet.png b/docimg/fcbbullet.png deleted file mode 100644 index c5a959017..000000000 Binary files a/docimg/fcbbullet.png and /dev/null differ diff --git a/graphics/HUD/SilverBulletXSBCasing.png b/graphics/HUD/SilverBulletCasing.png similarity index 100% rename from graphics/HUD/SilverBulletXSBCasing.png rename to graphics/HUD/SilverBulletCasing.png diff --git a/graphics/HUD/SilverBulletFCB.png b/graphics/HUD/SilverBulletFCB.png deleted file mode 100644 index 494f047cc..000000000 Binary files a/graphics/HUD/SilverBulletFCB.png and /dev/null differ diff --git a/graphics/HUD/SilverBulletFCBCasing.png b/graphics/HUD/SilverBulletFCBCasing.png deleted file mode 100644 index d39e93e92..000000000 Binary files a/graphics/HUD/SilverBulletFCBCasing.png and /dev/null differ diff --git a/graphics/HUD/SilverBulletXSB.png b/graphics/HUD/SilverBulletRound.png similarity index 100% rename from graphics/HUD/SilverBulletXSB.png rename to graphics/HUD/SilverBulletRound.png diff --git a/language.def_base b/language.def_base index e79411c6c..31d3df7b5 100644 --- a/language.def_base +++ b/language.def_base @@ -52,12 +52,8 @@ T_SPARKUNIT = "Biospark Unit"; T_SPARKUNITS = "Biospark Units"; T_XSBMAG = "1.150 XSB Magazine"; T_XSBMAGS = "1.150 XSB Magazines"; -T_FCBMAG = "1.150 FCB Magazine"; -T_FCBMAGS = "1.150 FCB Magazines"; T_XSBBULLET = "1.150 XSB Bullet"; T_XSBBULLETS = "1.150 XSB Bullets"; -T_FCBBULLET = "1.150 FCB Bullet"; -T_FCBBULLETS = "1.150 FCB Bullets"; T_CANDYMAG = "Candy Gun Magazine"; T_CANDYMAGS = "Candy Gun Magazines"; T_CANDYBULLET = "Candy Gun Bullet"; @@ -467,7 +463,6 @@ O_EVISCERATOR = "%o was eviscerated by %k."; O_HELLBLAZER = "%k blasted %o into burning bits."; O_SPARKSTER = "%o got sparked hard by %k."; O_SILVERBULLET = "%o could not ignore the girth of %k's bullets."; -O_SILVERBULLET2 = "%o was blasted by %k's girthy bullets."; O_CANDYGUN = "%k made %o taste the sweetness (and death)."; O_YNYKRON = "%o was instantly removed by %k."; O_YNYKRONALT = "%o was furiously obliterated by %k."; @@ -670,8 +665,6 @@ SWWM_GRAVKILL = "Gravity"; SWWM_PARRYKILL = "Deflected Projectiles"; SWWM_SETSLOTSTRICT = "\cg!!!WARNING!!!\c-\n\cj\"setslotstrict\" is enabled. This will cause the mod's weapons to not have slots assigned. Please go into Miscellaneous Options and toggle the \"Strict KEYCONF Weapons/Players\" setting.\c-"; SWWM_WARNALTHUD = "ALTERNATIVE HUD IS UNSUPPORTED"; -SWWM_FCBSEL = "1.150 FCB"; -SWWM_XSBSEL = "1.150 XSB"; SWWM_WIDESPREAD = "Wide Spread Mode"; SWWM_TIGHTSPREAD = "Tight Spread Mode"; SWWM_YNYKRONFORWARD = "Beam Mode"; // desya / forward @@ -733,10 +726,9 @@ TT_SPARKSTER = "\cfReload:\c- Reload / double load."; TT_SILVERBULLET = "\cfFire:\c- Shoot weapon.\n" +"\cfAltfire:\c- Cycle bolt.\n" "\cfZoom:\c- Use scope.\n" -"\cfReload:\c- Reload weapon.\n" -"\cfAltfire+Fire:\c- Manual bolt cycle.\n" -"\cfAltfire+Reload:\c- Reload special ammo."; +"\cfReload:\c- Reload weapon."; TT_CANDYGUN = "\cfFire:\c- Shoot weapon.\n" "\cfAltfire:\c- Throw magazine.\n" diff --git a/language.es_base b/language.es_base index 4f9aed94b..5f31a04b8 100644 --- a/language.es_base +++ b/language.es_base @@ -42,12 +42,8 @@ T_SPARKUNIT = "Unidad Biospark"; T_SPARKUNITS = "Unidades Biospark"; T_XSBMAG = "Cargador 1.150 XSB"; T_XSBMAGS = "Cargadores 1.150 XSB"; -T_FCBMAG = "Cargador 1.150 FCB"; -T_FCBMAGS = "Cargadores 1.150 FCB"; T_XSBBULLET = "Bala 1.150 XSB"; T_XSBBULLETS = "Balas 1.150 XSB"; -T_FCBBULLET = "Bala 1.150 FCB"; -T_FCBBULLETS = "Balas 1.150 FCB"; T_CANDYMAG = "Cargador de Pistola Caramelo"; T_CANDYMAGS = "Cargadores de Pistola Caramelo"; T_CANDYBULLET = "Bala de Pistola Caramelo"; @@ -370,7 +366,6 @@ O_EVISCERATOR = "%o fue descuartizad@[ao_esp] por %k."; O_HELLBLAZER = "%k reventó a %o en cachitos humeantes."; O_SPARKSTER = "%o fue bien chispead@[ao_esp] por %k."; O_SILVERBULLET = "%o no pudo ignorar el grosor de las balas de %k."; -O_SILVERBULLET2 = "%o fue reventad@[ao_esp] por las gruesas balas de %k."; O_CANDYGUN = "%k hizo probar a %o un sabor dulce (de muerte)."; O_YNYKRON = "%o fue borrad@[ao_esp] instantáneamente por %k."; O_YNYKRONALT = "%o fue aniquilad@[ao_esp] furiosamente por %k."; @@ -623,10 +618,9 @@ TT_SPARKSTER = "\cfRecarga:\c- Recarga / doble carga."; TT_SILVERBULLET = "\cfPrimario:\c- Disparar arma.\n" +"\cfSecundario:\c- Accionar perno.\n" "\cfZoom:\c- Usar mira.\n" -"\cfRecarga:\c- Recargar arma.\n" -"\cfSecundario+Primario:\c- Accionar perno manualmente.\n" -"\cfSecundario+Recarga:\c- Recargar munición especial."; +"\cfRecarga:\c- Recargar arma."; TT_CANDYGUN = "\cfPrimario:\c- Disparar arma.\n" "\cfSecundario:\c- Lanzar cargador.\n" diff --git a/language.version b/language.version index 04c693fdf..99bc843b3 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r545 \cu(Fri 7 Oct 19:12:41 CEST 2022)\c-"; -SWWM_SHORTVER="\cw1.3pre r545 \cu(2022-10-07 19:12:41)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r546 \cu(Fri 7 Oct 20:13:10 CEST 2022)\c-"; +SWWM_SHORTVER="\cw1.3pre r546 \cu(2022-10-07 20:13:10)\c-"; diff --git a/lore/default/silverbullet.txt b/lore/default/silverbullet.txt index 3572ddade..9a0c95c8f 100644 --- a/lore/default/silverbullet.txt +++ b/lore/default/silverbullet.txt @@ -15,17 +15,15 @@ TXT The **Silver Bullet JET** is the 1.150 member of the **Silver Bullet** series of ultra-high caliber rifles manufactured by **Blackmann Arms**. It was created as a lighter, more "reasonable" alternative to the 1.350 **Behemoth** model. Weighing 43 kilograms and sporting a total length of 2.4 meters, it is sufficiently compact for non-augmented human use. -The main ammunition designed for this specific model is the 1.150 **XSB (eXplosive Super Burst)**. This beastly 30x140mm cartridge employs a low density **Explodium** shaped charge as propellant, allowing high velocity while still being safe for use. The bullets themselves are composed of a tungsten carbide core, snugly wrapped in an aluminum jacket, and decorated with a thin silver plating for aesthetic appearance (Silver Bullets are, indeed, NOT really made of silver). XSB rounds can penetrate several targets before eventually stopping, depending on their size, they may also do the same for thin walls. - -The secondary ammunition is the 1.150 **FCB (Fat Chode Bomb)**. Personally named by the CEO of Blackmann Arms himself, FCBs are quite similar to the standard XSB ammunition, but instead the bullets are full of additional Explodium, which on impact, is released violently, propagating its deadly blast through solid surfaces. Due to the volatility of these bullets, the propellant employed is slightly less potent, which results in a diminished potential for target penetration, but the blast definitely compensates for this. The explosive charge is so powerful that it can break some walls to pieces. +The ammunition designed for this specific model is the 1.150 **XSB (eXplosive Super Burst)**. This beastly 30x140mm cartridge employs a low density **Explodium** shaped charge as propellant, allowing high velocity while still being safe for use. The bullets themselves are composed of a tungsten carbide core, snugly wrapped in an aluminum jacket, and decorated with a thin silver plating for aesthetic appearance (Silver Bullets are, indeed, NOT really made of silver). XSB rounds can penetrate several targets before eventually stopping, depending on their size, they may also do the same for thin walls. In order to compensate for its massive recoil, the weapon redirects a part of the gasses from round ignition into a set of jet compensators designed by **Forx Aeronautics**. Although partially cooled in the process, it is still hot enough to cause some damage to users not wearing adequate protection. \cfPrimary Fire:\c- Shoot the bullet. Any small targets hit by it are pretty much turned to paste. A second press after firing will chamber another round. -\cfSecondary Fire:\c- Hold and then press primary fire to manually cock, allowing you to retrieve unfired rounds. Hold and then press reload to reload, but using secondary ammunition if available. +\cfSecondary Fire:\c- Cycle the bolt, chambering a new round if available. Note that you may eject unfired rounds as well. -\cfReloading:\c- Reloads the weapon. Each magazine holds 5 rounds. An extra round can also be kept chambered. Note that if you only have secondary ammunition available, you must use the combo with secondary fire. +\cfReloading:\c- Reloads the weapon. Each magazine holds 5 rounds. An extra round can also be kept chambered. \cfZoom:\c- Custom-tailored adjustable telescopic sight, up to 16x. Equipped with a soft foam covering to protect the user's face during scoped fire. diff --git a/lore/es/silverbullet.txt b/lore/es/silverbullet.txt index cea8474df..2f8b7fd75 100644 --- a/lore/es/silverbullet.txt +++ b/lore/es/silverbullet.txt @@ -9,17 +9,15 @@ TXT El **Silver Bullet JET** es el miembro de calibre 1.150 de la serie **Silver Bullet** de rifles de calibre ultra-alto fabricados por **Blackmann Arms**. Fue creado como una alternativa ligera y más "razonable" del modelo **Behemoth** de calibre 1.350. Pesando 43 kilos y con una longitud total de 2.4 metros, es suficientemente compacto para el uso por humanos no mejorados. -La munición diseñada principalmente para este modelo son las balas **XSB (eXplosive Super Burst)** del calibre 1.150. Este bestial cartucho de 30x140mm emplea una carga de baja densidad de **Explodium** como propulsor, permitiendo una alta velocidad siendo a la vez seguro de usar. Las balas en sí están compuestas de un núcleo de carburo de tungsteno, con una envoltura de aluminio, y decorado con una capa fina de plata para una apariencia más estética (estas Balas de Plata, ciertamente, NO están hechas de plata). Las balas XSB pueden penetrar varios objetivos antes de detenerse, dependiendo de su tamaño, pueden incluso hacer lo mismo con paredes ligeras. - -La munición secundaria son las balas **FCB (Fat Chode Bomb)** también de calibre 1.150. Llamadas así por el propio CEO de Blackmann Arms, las FCB son bastante similares a la munición XSB estándar, con la diferencia de que estas balas están llenas de Explodium, el cual, al impactar, es liberado violentamente, propagando su estallido mortífero a través de superficies sólidas. Dada la volatilidad de estas balas, el propulsor empleado es ligeramente menos potente, lo cual resulta en un disminuído potencial de penetración de objetivos, pero la explosión definitivamente lo compensa. La carga explosiva es tan potente que puede derribar completamente algunas paredes. +La munición diseñada para este modelo son las balas **XSB (eXplosive Super Burst)** del calibre 1.150. Este bestial cartucho de 30x140mm emplea una carga de baja densidad de **Explodium** como propulsor, permitiendo una alta velocidad siendo a la vez seguro de usar. Las balas en sí están compuestas de un núcleo de carburo de tungsteno, con una envoltura de aluminio, y decorado con una capa fina de plata para una apariencia más estética (estas Balas de Plata, ciertamente, NO están hechas de plata). Las balas XSB pueden penetrar varios objetivos antes de detenerse, dependiendo de su tamaño, pueden incluso hacer lo mismo con paredes ligeras. Para poder compensar su masivo retroceso, el arma redirige una parte de los gases de ignición hasta un grupo de jets compensadores diseñados por **Aeronáutica Forx**. Aunque son parcialmente refrigerados en el proceso, son aun lo suficientemente cálidos para causar ligero daño a usuarios que no lleven la protección adecuada. -\cfFuego Primario:\c- Dispara la bala. Cualquier objetivo alcanzado por ella queda hecho papilla. Un segundo pulsado tras disparar cargará otra bala. +\cfFuego Primario:\c- Dispara la bala. Cualquier objetivo alcanzado por ella queda hecho papilla. -\cfFuego Secundario:\c- Mantén y luego pulsa fuego primario para accionar el perno manualmente, permitiéndote recuperar balas sin usar. Mantén y luego pulsa recarga para recargar, pero usando munición secundaria si está disponible. +\cfFuego Secundario:\c- Acciona el perno, insertando una nueva bala en la recámara si hay disponibles. Ten en cuenta que puedes eyectar balas sin usar. -\cfRecarga:\c- Recarga el arma. Cada cargador tiene 5 balas. Se puede mantener también una bala extra en la recámara. Ten en cuenta que si solo tienes munición secundaria, deberás usar la combinación de fuego secundario. +\cfRecarga:\c- Recarga el arma. Cada cargador tiene 5 balas. Se puede mantener también una bala extra en la recámara. \cfZoom:\c- Mira telescópica hecha a medida, hasta 16 aumentos. Equipada con una cubierta de espuma suave para proteger la cara del usuario durante el disparo con mira. diff --git a/modeldef.ammo b/modeldef.ammo index 176ed379d..9c81d4e7f 100644 --- a/modeldef.ammo +++ b/modeldef.ammo @@ -257,19 +257,6 @@ Model "SilverBulletAmmo" FrameIndex XZW1 A 0 0 } -Model "SilverBulletAmmo2" -{ - Path "models" - - Model 0 "SilverbulletMag_d.3d" - Skin 0 "SilverbulletAmmo_FCB.png" - Scale 0.25 0.25 0.25 - PitchOffset 30 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} Model "SilverBullets" { Path "models" @@ -283,7 +270,7 @@ Model "SilverBullets" FrameIndex XZW1 A 0 0 } -Model "SilverBullets_2" +Model "SilverBullets2" { Path "models" @@ -295,7 +282,7 @@ Model "SilverBullets_2" FrameIndex XZW1 A 0 0 } -Model "SilverBullets_3" +Model "SilverBullets3" { Path "models" @@ -307,43 +294,6 @@ Model "SilverBullets_3" FrameIndex XZW1 A 0 0 } -Model "SilverBullets2" -{ - Path "models" - - Model 0 "SilverbulletBullet_FCB_d.3d" - Skin 0 "SilverbulletBullet_FCB.png" - Scale 0.05 0.05 0.05 - PitchOffset 30 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SilverBullets2_2" -{ - Path "models" - - Model 0 "SilverbulletBullet2_FCB_d.3d" - Skin 0 "SilverbulletBullet_FCB.png" - Scale 0.05 0.05 0.05 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "SilverBullets2_3" -{ - Path "models" - - Model 0 "SilverbulletBullet3_FCB_d.3d" - Skin 0 "SilverbulletBullet_FCB.png" - Scale 0.05 0.05 0.05 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} Model "CandyGunAmmo" { diff --git a/modeldef.silverbullet b/modeldef.silverbullet index f715477d0..c4a72e45d 100644 --- a/modeldef.silverbullet +++ b/modeldef.silverbullet @@ -13,21 +13,6 @@ Model "SilverBulletCasing" ZOffset 1 FrameIndex XZW1 B 0 0 } -Model "SilverBulletCasing2" -{ - Path "models" - - Model 0 "SilverbulletCase_FCB_d.3d" - Skin 0 "SilverbulletBullet_FCB_Used.png" - Scale 0.04 0.04 0.04 - AngleOffset 90 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 - ZOffset 1 - FrameIndex XZW1 B 0 0 -} Model "SilverBulletMag" { Path "models" @@ -45,23 +30,6 @@ Model "SilverBulletMag" RollOffset -90 FrameIndex XZW1 C 0 0 } -Model "SilverBulletMag2" -{ - Path "models" - - Model 0 "SilverbulletMag_d.3d" - Skin 0 "SilverbulletAmmo_FCB_EmptyMag.png" - Scale 0.2 0.2 0.2 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 - RollOffset 90 - ZOffset 1.8 - FrameIndex XZW1 B 0 0 - RollOffset -90 - FrameIndex XZW1 C 0 0 -} Model "SilverBullet" { @@ -76,8 +44,6 @@ Model "SilverBullet" ROTATING FrameIndex XZW1 A 0 0 - SurfaceSkin 0 1 "SilverbulletAmmo_FCB.png" - FrameIndex XZW1 B 0 0 } Model "SilverBullet" @@ -103,77 +69,48 @@ Model "SilverBullet" Scale -0.005 0.0025 0.005 DONTCULLBACKFACES - // Casing (XSB) + // Casing SurfaceSkin 2 5 "SilverbulletBullet_Used.png" - FrameIndex XZW7 D 2 30 - FrameIndex XZW7 E 2 31 - FrameIndex XZW7 F 2 32 - FrameIndex XZW7 G 2 33 - FrameIndex XZW7 H 2 34 - FrameIndex XZW7 I 2 35 - FrameIndex XZW7 J 2 36 - FrameIndex XZW7 K 2 37 - FrameIndex XZW7 L 2 38 - FrameIndex XZW7 M 2 39 - FrameIndex XZW7 N 2 40 - FrameIndex XZW7 O 2 41 - // Casing (FCB) - SurfaceSkin 2 5 "SilverbulletBullet_FCB_Used.png" - FrameIndex XZWD D 2 30 - FrameIndex XZWD E 2 31 - FrameIndex XZWD F 2 32 - FrameIndex XZWD G 2 33 - FrameIndex XZWD H 2 34 - FrameIndex XZWD I 2 35 - FrameIndex XZWD J 2 36 - FrameIndex XZWD K 2 37 - FrameIndex XZWD L 2 38 - FrameIndex XZWD M 2 39 - FrameIndex XZWD N 2 40 - FrameIndex XZWD O 2 41 - // Jets - SurfaceSkin 2 5 "" - SurfaceSkin 2 6 "SilverbulletJetSmoke.png" - FrameIndex XZW7 P 2 16 - FrameIndex XZW7 Q 2 17 - FrameIndex XZW7 R 2 18 - FrameIndex XZW7 S 2 19 - FrameIndex XZW7 T 2 20 - FrameIndex XZW7 U 2 21 - FrameIndex XZW7 V 2 22 - FrameIndex XZW7 W 2 23 - FrameIndex XZW7 X 2 24 - // Bullet (XSB) - SurfaceSkin 2 6 "" + FrameIndex XZW7 S 2 30 + FrameIndex XZW7 T 2 31 + FrameIndex XZW7 U 2 32 + FrameIndex XZW7 V 2 33 + FrameIndex XZW7 W 2 34 + FrameIndex XZW7 X 2 35 + FrameIndex XZW7 Y 2 36 + FrameIndex XZW7 Z 2 37 + FrameIndex XZW8 A 2 38 + FrameIndex XZW8 B 2 39 + FrameIndex XZW8 C 2 40 + FrameIndex XZW8 D 2 41 + // Bullet SurfaceSkin 2 5 "SilverbulletBullet.png" SurfaceSkin 2 7 "SilverbulletBullet.png" - FrameIndex XZWD P 2 30 - FrameIndex XZWD Q 2 31 - FrameIndex XZWD R 2 32 - FrameIndex XZWD S 2 33 - FrameIndex XZWD T 2 34 - FrameIndex XZWD U 2 35 - FrameIndex XZWD V 2 36 - FrameIndex XZWD W 2 37 - FrameIndex XZWD X 2 38 - FrameIndex XZWD Y 2 39 - FrameIndex XZWD Z 2 40 - FrameIndex XZWE A 2 41 - // Bullet (FCB) - SurfaceSkin 2 5 "SilverbulletBullet_FCB.png" - SurfaceSkin 2 7 "SilverbulletBullet_FCB.png" - FrameIndex XZWE B 2 30 - FrameIndex XZWE C 2 31 - FrameIndex XZWE D 2 32 - FrameIndex XZWE E 2 33 - FrameIndex XZWE F 2 34 - FrameIndex XZWE G 2 35 - FrameIndex XZWE H 2 36 - FrameIndex XZWE I 2 37 - FrameIndex XZWE J 2 38 - FrameIndex XZWE K 2 39 - FrameIndex XZWE L 2 40 - FrameIndex XZWE M 2 41 + FrameIndex XZW8 E 2 30 + FrameIndex XZW8 F 2 31 + FrameIndex XZW8 G 2 32 + FrameIndex XZW8 H 2 33 + FrameIndex XZW8 I 2 34 + FrameIndex XZW8 J 2 35 + FrameIndex XZW8 K 2 36 + FrameIndex XZW8 L 2 37 + FrameIndex XZW8 M 2 38 + FrameIndex XZW8 N 2 39 + FrameIndex XZW8 O 2 40 + FrameIndex XZW8 P 2 41 + SurfaceSkin 2 5 "" + SurfaceSkin 2 7 "" + // Jets + SurfaceSkin 2 6 "SilverbulletJetSmoke.png" + FrameIndex XZW8 Q 2 16 + FrameIndex XZW8 R 2 17 + FrameIndex XZW8 S 2 18 + FrameIndex XZW8 T 2 19 + FrameIndex XZW8 U 2 20 + FrameIndex XZW8 V 2 21 + FrameIndex XZW8 W 2 22 + FrameIndex XZW8 X 2 23 + FrameIndex XZW8 Y 2 24 } Model "SilverBullet" @@ -189,7 +126,6 @@ Model "SilverBullet" AngleOffset -90 Scale -0.005 0.0025 0.005 - // EXPLOSIVE SUPER BURST // Still / Deselect FrameIndex XZW2 A 1 0 FrameIndex XZW2 B 1 1 @@ -261,223 +197,63 @@ Model "SilverBullet" FrameIndex XZW4 L 1 67 FrameIndex XZW4 M 1 68 FrameIndex XZW4 N 1 69 - // UnloadEmpty - SurfaceSkin 1 4 "SilverbulletAmmo_EmptyMag.png" - FrameIndex XZW4 O 1 59 - FrameIndex XZW4 P 1 60 - FrameIndex XZW4 Q 1 61 - FrameIndex XZW4 R 1 62 - FrameIndex XZW4 S 1 63 - FrameIndex XZW4 T 1 64 - FrameIndex XZW4 U 1 65 - FrameIndex XZW4 V 1 66 - FrameIndex XZW4 W 1 67 - FrameIndex XZW4 X 1 68 - FrameIndex XZW4 Y 1 69 - SurfaceSkin 1 4 "SilverbulletAmmo.png" // Load - FrameIndex XZW4 Z 1 70 - FrameIndex XZW5 A 1 71 - FrameIndex XZW5 B 1 72 - FrameIndex XZW5 C 1 73 - FrameIndex XZW5 D 1 74 - FrameIndex XZW5 E 1 75 - FrameIndex XZW5 F 1 76 - FrameIndex XZW5 G 1 77 - FrameIndex XZW5 H 1 78 - FrameIndex XZW5 I 1 79 - FrameIndex XZW5 J 1 80 - FrameIndex XZW5 K 1 81 - FrameIndex XZW5 L 1 82 - FrameIndex XZW5 M 1 83 - FrameIndex XZW5 N 1 84 + FrameIndex XZW4 O 1 70 + FrameIndex XZW4 P 1 71 + FrameIndex XZW4 Q 1 72 + FrameIndex XZW4 R 1 73 + FrameIndex XZW4 S 1 74 + FrameIndex XZW4 T 1 75 + FrameIndex XZW4 U 1 76 + FrameIndex XZW4 V 1 77 + FrameIndex XZW4 W 1 78 + FrameIndex XZW4 X 1 79 + FrameIndex XZW4 Y 1 80 + FrameIndex XZW4 Z 1 81 + FrameIndex XZW5 A 1 82 + FrameIndex XZW5 B 1 83 + FrameIndex XZW5 C 1 84 // Idle - FrameIndex XZW5 O 1 86 - FrameIndex XZW5 P 1 87 - FrameIndex XZW5 Q 1 88 - FrameIndex XZW5 R 1 89 - FrameIndex XZW5 S 1 90 - FrameIndex XZW5 T 1 91 - FrameIndex XZW5 U 1 92 - FrameIndex XZW5 V 1 93 - FrameIndex XZW5 W 1 94 - FrameIndex XZW5 X 1 95 - FrameIndex XZW5 Y 1 96 - FrameIndex XZW5 Z 1 97 - FrameIndex XZW6 A 1 98 - FrameIndex XZW6 B 1 99 - FrameIndex XZW6 C 1 100 - FrameIndex XZW6 D 1 101 - FrameIndex XZW6 E 1 102 - FrameIndex XZW6 F 1 103 - FrameIndex XZW6 G 1 104 - FrameIndex XZW6 H 1 105 + FrameIndex XZW5 D 1 86 + FrameIndex XZW5 E 1 87 + FrameIndex XZW5 F 1 88 + FrameIndex XZW5 G 1 89 + FrameIndex XZW5 H 1 90 + FrameIndex XZW5 I 1 91 + FrameIndex XZW5 J 1 92 + FrameIndex XZW5 K 1 93 + FrameIndex XZW5 L 1 94 + FrameIndex XZW5 M 1 95 + FrameIndex XZW5 N 1 96 + FrameIndex XZW5 O 1 97 + FrameIndex XZW5 P 1 98 + FrameIndex XZW5 Q 1 99 + FrameIndex XZW5 R 1 100 + FrameIndex XZW5 S 1 101 + FrameIndex XZW5 T 1 102 + FrameIndex XZW5 U 1 103 + FrameIndex XZW5 V 1 104 + FrameIndex XZW5 W 1 105 // Melee - FrameIndex XZW6 I 1 107 - FrameIndex XZW6 J 1 108 - FrameIndex XZW6 K 1 109 - FrameIndex XZW6 L 1 110 - FrameIndex XZW6 M 1 111 - FrameIndex XZW6 N 1 112 - FrameIndex XZW6 O 1 113 - FrameIndex XZW6 P 1 114 - FrameIndex XZW6 Q 1 115 - FrameIndex XZW6 R 1 116 - FrameIndex XZW6 S 1 117 - FrameIndex XZW6 T 1 118 - FrameIndex XZW6 U 1 119 - FrameIndex XZW6 V 1 120 - FrameIndex XZW6 W 1 121 - FrameIndex XZW6 X 1 122 - FrameIndex XZW6 Y 1 123 - FrameIndex XZW6 Z 1 124 - FrameIndex XZW7 A 1 125 - FrameIndex XZW7 B 1 126 - FrameIndex XZW7 C 1 127 - //// FAT CHODE BOMB - SurfaceSkin 1 4 "SilverbulletAmmo_FCB.png" - // Still / Deselect - FrameIndex XZW8 A 1 0 - FrameIndex XZW8 B 1 1 - FrameIndex XZW8 C 1 2 - FrameIndex XZW8 D 1 3 - FrameIndex XZW8 E 1 4 - FrameIndex XZW8 F 1 5 - FrameIndex XZW8 G 1 6 // Select - FrameIndex XZW8 H 1 7 - FrameIndex XZW8 I 1 8 - FrameIndex XZW8 J 1 9 - FrameIndex XZW8 K 1 10 - FrameIndex XZW8 L 1 11 - FrameIndex XZW8 M 1 12 - FrameIndex XZW8 N 1 13 - // Fire - FrameIndex XZW8 O 1 15 - FrameIndex XZW8 P 1 16 - FrameIndex XZW8 Q 1 17 - FrameIndex XZW8 R 1 18 - FrameIndex XZW8 S 1 19 - FrameIndex XZW8 T 1 20 - FrameIndex XZW8 U 1 21 - FrameIndex XZW8 V 1 22 - FrameIndex XZW8 W 1 23 - // Bolt - FrameIndex XZW8 X 1 25 - FrameIndex XZW8 Y 1 26 - FrameIndex XZW8 Z 1 27 - FrameIndex XZW9 A 1 28 - FrameIndex XZW9 B 1 29 - FrameIndex XZW9 C 1 30 // StartCasing - FrameIndex XZW9 D 1 31 - FrameIndex XZW9 E 1 32 - FrameIndex XZW9 F 1 33 - FrameIndex XZW9 G 1 34 - FrameIndex XZW9 H 1 35 - FrameIndex XZW9 I 1 36 - FrameIndex XZW9 J 1 37 - FrameIndex XZW9 K 1 38 - FrameIndex XZW9 L 1 39 - FrameIndex XZW9 M 1 40 - FrameIndex XZW9 N 1 41 // EndCasing - FrameIndex XZW9 O 1 42 - FrameIndex XZW9 P 1 43 - FrameIndex XZW9 Q 1 44 - FrameIndex XZW9 R 1 45 - // ZoomIn - FrameIndex XZW9 S 1 47 - FrameIndex XZW9 T 1 48 - FrameIndex XZW9 U 1 49 - FrameIndex XZW9 V 1 50 - FrameIndex XZW9 W 1 51 - FrameIndex XZW9 X 1 52 // ZoomStill / ZoomOut - FrameIndex XZW9 Y 1 53 - FrameIndex XZW9 Z 1 54 - FrameIndex XZWA A 1 55 - FrameIndex XZWA B 1 56 - FrameIndex XZWA C 1 57 - // Unload - FrameIndex XZWA D 1 59 - FrameIndex XZWA E 1 60 - FrameIndex XZWA F 1 61 - FrameIndex XZWA G 1 62 - FrameIndex XZWA H 1 63 - FrameIndex XZWA I 1 64 - FrameIndex XZWA J 1 65 - FrameIndex XZWA K 1 66 - FrameIndex XZWA L 1 67 - FrameIndex XZWA M 1 68 - FrameIndex XZWA N 1 69 - // UnloadEmpty - SurfaceSkin 1 4 "SilverbulletAmmo_FCB_EmptyMag.png" - FrameIndex XZWA O 1 59 - FrameIndex XZWA P 1 60 - FrameIndex XZWA Q 1 61 - FrameIndex XZWA R 1 62 - FrameIndex XZWA S 1 63 - FrameIndex XZWA T 1 64 - FrameIndex XZWA U 1 65 - FrameIndex XZWA V 1 66 - FrameIndex XZWA W 1 67 - FrameIndex XZWA X 1 68 - FrameIndex XZWA Y 1 69 - SurfaceSkin 1 4 "SilverbulletAmmo_FCB.png" - // Load - FrameIndex XZWA Z 1 70 - FrameIndex XZWB A 1 71 - FrameIndex XZWB B 1 72 - FrameIndex XZWB C 1 73 - FrameIndex XZWB D 1 74 - FrameIndex XZWB E 1 75 - FrameIndex XZWB F 1 76 - FrameIndex XZWB G 1 77 - FrameIndex XZWB H 1 78 - FrameIndex XZWB I 1 79 - FrameIndex XZWB J 1 80 - FrameIndex XZWB K 1 81 - FrameIndex XZWB L 1 82 - FrameIndex XZWB M 1 83 - FrameIndex XZWB N 1 84 - // Idle - FrameIndex XZWB O 1 86 - FrameIndex XZWB P 1 87 - FrameIndex XZWB Q 1 88 - FrameIndex XZWB R 1 89 - FrameIndex XZWB S 1 90 - FrameIndex XZWB T 1 91 - FrameIndex XZWB U 1 92 - FrameIndex XZWB V 1 93 - FrameIndex XZWB W 1 94 - FrameIndex XZWB X 1 95 - FrameIndex XZWB Y 1 96 - FrameIndex XZWB Z 1 97 - FrameIndex XZWC A 1 98 - FrameIndex XZWC B 1 99 - FrameIndex XZWC C 1 100 - FrameIndex XZWC D 1 101 - FrameIndex XZWC E 1 102 - FrameIndex XZWC F 1 103 - FrameIndex XZWC G 1 104 - FrameIndex XZWC H 1 105 - // Melee - FrameIndex XZWC I 1 107 - FrameIndex XZWC J 1 108 - FrameIndex XZWC K 1 109 - FrameIndex XZWC L 1 110 - FrameIndex XZWC M 1 111 - FrameIndex XZWC N 1 112 - FrameIndex XZWC O 1 113 - FrameIndex XZWC P 1 114 - FrameIndex XZWC Q 1 115 - FrameIndex XZWC R 1 116 - FrameIndex XZWC S 1 117 - FrameIndex XZWC T 1 118 - FrameIndex XZWC U 1 119 - FrameIndex XZWC V 1 120 - FrameIndex XZWC W 1 121 - FrameIndex XZWC X 1 122 - FrameIndex XZWC Y 1 123 - FrameIndex XZWC Z 1 124 - FrameIndex XZWD A 1 125 - FrameIndex XZWD B 1 126 - FrameIndex XZWD C 1 127 + FrameIndex XZW5 X 1 107 + FrameIndex XZW5 Y 1 108 + FrameIndex XZW5 Z 1 109 + FrameIndex XZW6 A 1 110 + FrameIndex XZW6 B 1 111 + FrameIndex XZW6 C 1 112 + FrameIndex XZW6 D 1 113 + FrameIndex XZW6 E 1 114 + FrameIndex XZW6 F 1 115 + FrameIndex XZW6 G 1 116 + FrameIndex XZW6 H 1 117 + FrameIndex XZW6 I 1 118 + FrameIndex XZW6 J 1 119 + FrameIndex XZW6 K 1 120 + FrameIndex XZW6 L 1 121 + FrameIndex XZW6 M 1 122 + FrameIndex XZW6 N 1 123 + FrameIndex XZW6 O 1 124 + FrameIndex XZW6 P 1 125 + FrameIndex XZW6 Q 1 126 + FrameIndex XZW6 R 1 127 } diff --git a/models/SilverbulletAmmo_EmptyMag.png b/models/SilverbulletAmmo_Empty.png similarity index 100% rename from models/SilverbulletAmmo_EmptyMag.png rename to models/SilverbulletAmmo_Empty.png diff --git a/models/SilverbulletAmmo_FCB.png b/models/SilverbulletAmmo_FCB.png deleted file mode 100644 index 6786d5eb5..000000000 Binary files a/models/SilverbulletAmmo_FCB.png and /dev/null differ diff --git a/models/SilverbulletAmmo_FCB_EmptyMag.png b/models/SilverbulletAmmo_FCB_EmptyMag.png deleted file mode 100644 index b0f4c0bd4..000000000 Binary files a/models/SilverbulletAmmo_FCB_EmptyMag.png and /dev/null differ diff --git a/models/SilverbulletBullet2_FCB_a.3d b/models/SilverbulletBullet2_FCB_a.3d deleted file mode 100644 index 90e3e3c40..000000000 Binary files a/models/SilverbulletBullet2_FCB_a.3d and /dev/null differ diff --git a/models/SilverbulletBullet2_FCB_d.3d b/models/SilverbulletBullet2_FCB_d.3d deleted file mode 100644 index 55e2b762b..000000000 Binary files a/models/SilverbulletBullet2_FCB_d.3d and /dev/null differ diff --git a/models/SilverbulletBullet3_FCB_a.3d b/models/SilverbulletBullet3_FCB_a.3d deleted file mode 100644 index 00a0d2943..000000000 Binary files a/models/SilverbulletBullet3_FCB_a.3d and /dev/null differ diff --git a/models/SilverbulletBullet3_FCB_d.3d b/models/SilverbulletBullet3_FCB_d.3d deleted file mode 100644 index b238a06ae..000000000 Binary files a/models/SilverbulletBullet3_FCB_d.3d and /dev/null differ diff --git a/models/SilverbulletBullet_FCB.png b/models/SilverbulletBullet_FCB.png deleted file mode 100644 index c2f89d5d4..000000000 Binary files a/models/SilverbulletBullet_FCB.png and /dev/null differ diff --git a/models/SilverbulletBullet_FCB_Used.png b/models/SilverbulletBullet_FCB_Used.png deleted file mode 100644 index be0ffa304..000000000 Binary files a/models/SilverbulletBullet_FCB_Used.png and /dev/null differ diff --git a/models/SilverbulletBullet_FCB_a.3d b/models/SilverbulletBullet_FCB_a.3d deleted file mode 100644 index 65153c54c..000000000 Binary files a/models/SilverbulletBullet_FCB_a.3d and /dev/null differ diff --git a/models/SilverbulletBullet_FCB_d.3d b/models/SilverbulletBullet_FCB_d.3d deleted file mode 100644 index 1d507e3bd..000000000 Binary files a/models/SilverbulletBullet_FCB_d.3d and /dev/null differ diff --git a/models/SilverbulletCase_FCB_a.3d b/models/SilverbulletCase_FCB_a.3d deleted file mode 100644 index 6f940f816..000000000 Binary files a/models/SilverbulletCase_FCB_a.3d and /dev/null differ diff --git a/models/SilverbulletCase_FCB_d.3d b/models/SilverbulletCase_FCB_d.3d deleted file mode 100644 index 5ed24aec2..000000000 Binary files a/models/SilverbulletCase_FCB_d.3d and /dev/null differ diff --git a/readme.txt b/readme.txt index 8ea0e9a57..372ebce03 100644 --- a/readme.txt +++ b/readme.txt @@ -185,9 +185,8 @@ at the price of some slight unstability (you might hurt yourself with it). Slot 8. Sniper rifle. The big and bulky brother of that unwieldy thing from Ultra Suite. Primary fire (you guessed it) shoots. -Secondary fire allows for special actions when held. Combine with primary fire -to manually cycle the bolt, and with reload to reload secondary ammo (if any). -Reload does what you'd expect (as long as you have primary ammo). +Secondary fire cycles the bolt. +Reload does what you'd expect. Tertiary fire is a zoom. Hold to keep increasing the zoom factor, up to 16x. Crouching with this weapon braces it and disengages the recoil compensator, which can definitely cause some self-hurt from how hot the jet gas can get. diff --git a/sounds/silverbullet/silver_altfire1.ogg b/sounds/silverbullet/silver_altfire1.ogg deleted file mode 100644 index 37daa379e..000000000 Binary files a/sounds/silverbullet/silver_altfire1.ogg and /dev/null differ diff --git a/sounds/silverbullet/silver_altfire2.ogg b/sounds/silverbullet/silver_altfire2.ogg deleted file mode 100644 index 2ea11b4e2..000000000 Binary files a/sounds/silverbullet/silver_altfire2.ogg and /dev/null differ diff --git a/sounds/silverbullet/silver_altfire3.ogg b/sounds/silverbullet/silver_altfire3.ogg deleted file mode 100644 index c62fc277f..000000000 Binary files a/sounds/silverbullet/silver_altfire3.ogg and /dev/null differ diff --git a/sounds/silverbullet/silver_chode1.ogg b/sounds/silverbullet/silver_chode1.ogg deleted file mode 100644 index be9ee15c9..000000000 Binary files a/sounds/silverbullet/silver_chode1.ogg and /dev/null differ diff --git a/sounds/silverbullet/silver_chode2.ogg b/sounds/silverbullet/silver_chode2.ogg deleted file mode 100644 index d758d0aeb..000000000 Binary files a/sounds/silverbullet/silver_chode2.ogg and /dev/null differ diff --git a/sounds/silverbullet/silver_fire1.ogg b/sounds/silverbullet/silver_fire1.ogg index 813642716..37daa379e 100644 Binary files a/sounds/silverbullet/silver_fire1.ogg and b/sounds/silverbullet/silver_fire1.ogg differ diff --git a/sounds/silverbullet/silver_fire2.ogg b/sounds/silverbullet/silver_fire2.ogg index 8b43b3172..2ea11b4e2 100644 Binary files a/sounds/silverbullet/silver_fire2.ogg and b/sounds/silverbullet/silver_fire2.ogg differ diff --git a/sounds/silverbullet/silver_fire3.ogg b/sounds/silverbullet/silver_fire3.ogg index e28ef4bae..c62fc277f 100644 Binary files a/sounds/silverbullet/silver_fire3.ogg and b/sounds/silverbullet/silver_fire3.ogg differ diff --git a/zscript/hud/swwm_hud.zsc b/zscript/hud/swwm_hud.zsc index e78b76b2f..82bcb848c 100644 --- a/zscript/hud/swwm_hud.zsc +++ b/zscript/hud/swwm_hud.zsc @@ -175,12 +175,12 @@ Class SWWMStatusBar : BaseStatusBar int tclabel, tcvalue, tcextra, tccompl, tcsucks; String tclabel_s, tcextra_s; - int AmmoFlash[19]; // flash when new ammo is received - int AmmoOldAmounts[19]; // to detect when to flash - int AmmoMaxFlash[19]; // flash when ammo max amount changes - int AmmoOldMaxAmounts[19]; // to detect when to flash - Class AmmoSlots[19]; // ammo type on each slot - String AmmoNames[19]; // ammo 4-letter names + int AmmoFlash[18]; // flash when new ammo is received + int AmmoOldAmounts[18]; // to detect when to flash + int AmmoMaxFlash[18]; // flash when ammo max amount changes + int AmmoOldMaxAmounts[18]; // to detect when to flash + Class AmmoSlots[18]; // ammo type on each slot + String AmmoNames[18]; // ammo 4-letter names int HealthFlash; // flash when healing int LastHealth; // to detect when to flash int LagHealth[10]; // for delayed decay bar @@ -944,7 +944,7 @@ Class SWWMStatusBar : BaseStatusBar for ( int i=9; i>0; i-- ) LagHealth[i] = LagHealth[i-1]; // ammo updates - for ( int i=0; i<19; i++ ) + for ( int i=0; i<18; i++ ) { let a = SWWMAmmo(CPlayer.mo.FindInventory(AmmoSlots[i])); int amt = 0; @@ -1299,14 +1299,13 @@ Class SWWMStatusBar : BaseStatusBar AmmoSlots[8] = 'SparksterBAmmo'; AmmoSlots[9] = 'SparksterRAmmo'; AmmoSlots[10] = 'SilverBulletAmmo'; - AmmoSlots[11] = 'SilverBulletAmmo2'; - AmmoSlots[12] = 'RayAmmo'; - AmmoSlots[13] = 'CandyGunAmmo'; - AmmoSlots[14] = 'CandyGunSpares'; - AmmoSlots[15] = 'MisterAmmo'; - AmmoSlots[16] = 'MisterGAmmo'; - AmmoSlots[17] = 'YnykronAmmo'; - AmmoSlots[18] = 'UltimateAmmo'; + AmmoSlots[11] = 'RayAmmo'; + AmmoSlots[12] = 'CandyGunAmmo'; + AmmoSlots[13] = 'CandyGunSpares'; + AmmoSlots[14] = 'MisterAmmo'; + AmmoSlots[15] = 'MisterGAmmo'; + AmmoSlots[16] = 'YnykronAmmo'; + AmmoSlots[17] = 'UltimateAmmo'; AmmoNames[0] = "SHOT"; AmmoNames[1] = "GOLD"; AmmoNames[2] = "SCRW"; @@ -1318,14 +1317,13 @@ Class SWWMStatusBar : BaseStatusBar AmmoNames[8] = "KINY"; AmmoNames[9] = "NOKR"; AmmoNames[10] = "RIFL"; - AmmoNames[11] = "CHOD"; - AmmoNames[12] = "BOLT"; - AmmoNames[13] = "CAND"; - AmmoNames[14] = "CGUN"; - AmmoNames[15] = "MSTR"; - AmmoNames[16] = "MGRN"; - AmmoNames[17] = "CRYS"; - AmmoNames[18] = "ULTI"; + AmmoNames[11] = "BOLT"; + AmmoNames[12] = "CAND"; + AmmoNames[13] = "CGUN"; + AmmoNames[14] = "MSTR"; + AmmoNames[15] = "MGRN"; + AmmoNames[16] = "CRYS"; + AmmoNames[17] = "ULTI"; for ( int i=0; i<18; i++ ) { AmmoFlash[i] = 0; @@ -2694,7 +2692,7 @@ Class SWWMStatusBar : BaseStatusBar OwnedWeapons.Push(SWWMWeapon(i)); } String str; - for ( int i=18; i>=0; i-- ) + for ( int i=17; i>=0; i-- ) { let a = AmmoSlots[i]; // check if owned diff --git a/zscript/items/swwm_ammoitems.zsc b/zscript/items/swwm_ammoitems.zsc index dd9978cc7..728ea11ed 100644 --- a/zscript/items/swwm_ammoitems.zsc +++ b/zscript/items/swwm_ammoitems.zsc @@ -328,9 +328,9 @@ Class SilverBulletAmmo : SWWMAmmo SWWMAmmo.PickupTag "XSBMAG"; Stamina 70000; Inventory.Amount 1; - Inventory.MaxAmount 3; + Inventory.MaxAmount 5; Ammo.BackpackAmount 0; - Ammo.BackpackMaxAmount 6; + Ammo.BackpackMaxAmount 11; Ammo.DropAmount 1; SWWMAmmo.MagAmmoType "SilverBullets"; +FLOATBOB; @@ -347,33 +347,6 @@ Class SilverBulletAmmo : SWWMAmmo } } -Class SilverBulletAmmo2 : SWWMAmmo -{ - Default - { - Tag "$T_FCBMAG"; - SWWMAmmo.PickupTag "FCBMAG"; - Stamina 80000; - Inventory.Amount 1; - Inventory.MaxAmount 2; - Ammo.BackpackAmount 0; - Ammo.BackpackMaxAmount 4; - Ammo.DropAmount 1; - SWWMAmmo.MagAmmoType "SilverBullets2"; - +FLOATBOB; - FloatBobStrength 0.25; - Radius 10; - Height 26; - Accuracy 80; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} - Class SilverBullets : MagAmmo { Default @@ -397,7 +370,7 @@ Class SilverBullets : MagAmmo Stop; } } -Class SilverBullets_2 : SilverBullets +Class SilverBullets2 : SilverBullets { Default { @@ -406,47 +379,7 @@ Class SilverBullets_2 : SilverBullets Height 24; } } -Class SilverBullets_3 : SilverBullets -{ - Default - { - Inventory.Amount 3; - Radius 6; - Height 24; - } -} -Class SilverBullets2 : MagAmmo -{ - Default - { - Tag "$T_FCBBULLET"; - MagAmmo.PickupTag "FCBBULLET"; - Stamina -15000; - MagAmmo.ParentAmmo "SilverBulletAmmo2"; - MagAmmo.ClipSize 5; - Inventory.MaxAmount 5; - +FLOATBOB; - FloatBobStrength 0.25; - Radius 4; - Height 22; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} -Class SilverBullets2_2 : SilverBullets2 -{ - Default - { - Inventory.Amount 2; - Radius 6; - Height 24; - } -} -Class SilverBullets2_3 : SilverBullets2 +Class SilverBullets3 : SilverBullets { Default { diff --git a/zscript/items/swwm_ammospawn.zsc b/zscript/items/swwm_ammospawn.zsc index b3f401e3e..3fa9d86e4 100644 --- a/zscript/items/swwm_ammospawn.zsc +++ b/zscript/items/swwm_ammospawn.zsc @@ -216,11 +216,7 @@ Class SWWMCellAmmoBig : SWWMAmmoSpawner bool aex = SWWMUtility.ItemExists('SilverBullet',ownedonly:enemydrop), bex = SWWMUtility.ItemExists('RayKhom',ownedonly:enemydrop); if ( (!aex && bex) || (Random[Replacements](0,1) && bex) ) return Random[Replacements](0,2)?'RayBolt5':'RayAmmo'; - if ( aex ) - { - if ( Random[Replacements](0,3) ) return Random[Replacements](0,2)?'SilverBullets_2':'SilverBullets2_2'; - return Random[Replacements](0,2)?'SilverBulletAmmo':'SilverBulletAmmo2'; - } + if ( aex ) return Random[Replacements](0,3)?'SilverBullets3':'SilverBulletAmmo'; } bool aex = SWWMUtility.ItemExists('Sparkster',ownedonly:enemydrop), bex = SWWMUtility.ItemExists('ModernSparkster',ownedonly:enemydrop); diff --git a/zscript/items/swwm_funstuff.zsc b/zscript/items/swwm_funstuff.zsc index daac02f98..2bbe75b40 100644 --- a/zscript/items/swwm_funstuff.zsc +++ b/zscript/items/swwm_funstuff.zsc @@ -891,11 +891,11 @@ Class RewardCandyGun : ChanceboxReward override void SpawnReward( Vector3 pos ) { SpawnCenter(pos,"CandyGun"); - SpawnCircle(pos,6,"CandyGunBullets"); + SpawnCircle(pos,7,"CandyGunBullets"); } } // TODO ray-khom bolts all over -// them silver bullets, of two types +// them silver bullets Class RewardSilverBullets : ChanceboxReward { override bool CheckRequirements() @@ -905,7 +905,7 @@ Class RewardSilverBullets : ChanceboxReward override void SpawnReward( Vector3 pos ) { - SpawnCircle(pos,3,"SilverBullets2"); + SpawnCircle(pos,4,"SilverBullets"); SpawnCircle(pos,6,"SilverBullets",3.); } } diff --git a/zscript/swwm_thinkers_player.zsc b/zscript/swwm_thinkers_player.zsc index 840bd0555..706622b80 100644 --- a/zscript/swwm_thinkers_player.zsc +++ b/zscript/swwm_thinkers_player.zsc @@ -174,7 +174,7 @@ Class SWWMStats : SWWMStaticThinker else if ( (inflictor is 'HellblazerMissile') || (inflictor is 'HellblazerArm') ) which = 'Hellblazer'; else if ( (inflictor is 'QuadProj') || (inflictor is 'QuadExplArm') || (inflictor is 'OnFire') ) which = 'Quadravol'; else if ( (inflictor is 'BigBiospark') || (inflictor is 'BiosparkBall') || (inflictor is 'BiosparkBeamImpact') || (inflictor is 'BiosparkComboImpact') || (inflictor is 'BiosparkComboImpactSub') || (inflictor is 'BiosparkBeam') || (inflictor is 'BiosparkArc') || (inflictor is 'BiosparkCore') ) which = 'Sparkster'; - else if ( (inflictor is 'SilverAirRip') || (inflictor is 'SilverAirRip2') || (inflictor is 'SilverImpact') || (inflictor is 'FatChodeImpact') || (inflictor is 'FatChodeExplosionArm') ) which = 'SilverBullet'; + else if ( (inflictor is 'SilverAirRip') || (inflictor is 'SilverImpact') ) which = 'SilverBullet'; else if ( (inflictor is 'CandyBeam') || (inflictor is 'CandyPop') || (inflictor is 'CandyMagArm') || (inflictor is 'CandyGunProj') || (inflictor is 'CandyMagProj') || (inflictor is 'CandyBulletImpact') ) which = 'CandyGun'; else if ( (inflictor is 'MisterBulletImpact') || (inflictor is 'MisterPop') || (inflictor is 'MisterFuzzy') || (inflictor is 'MisterGrenade') || (inflictor is 'MisterRailBeam') ) which = 'MisterRifle'; else if ( (inflictor is 'YnykronBeam') || (inflictor is 'YnykronImpact') || (inflictor is 'YnykronSingularity') || (inflictor is 'YnykronCloud') || (inflictor is 'YnykronVoidBeam') || (inflictor is 'YnykronLightningArc') || (inflictor is 'YnykronLightningImpact') ) which = 'Ynykron'; diff --git a/zscript/weapons/swwm_thiccboolet.zsc b/zscript/weapons/swwm_thiccboolet.zsc index 0d45c318e..1215f7af9 100644 --- a/zscript/weapons/swwm_thiccboolet.zsc +++ b/zscript/weapons/swwm_thiccboolet.zsc @@ -176,51 +176,9 @@ Class SilverBulletTracer : SpreadgunTracer } } -Class FatChodeTracer : LineTracer -{ - Actor ignoreme; - Array ShootThroughList; - Array WaterHitList; - - override ETraceStatus TraceCallback() - { - // liquid splashes - if ( Results.CrossedWater ) - { - let hl = new("WaterHit"); - hl.sect = Results.CrossedWater; - hl.hitpos = Results.CrossedWaterPos; - WaterHitList.Push(hl); - } - else if ( Results.Crossed3DWater ) - { - let hl = new("WaterHit"); - hl.sect = Results.Crossed3DWater; - hl.hitpos = Results.Crossed3DWaterPos; - WaterHitList.Push(hl); - } - if ( Results.HitType == TRACE_HitActor ) - { - if ( Results.HitActor == ignoreme ) return TRACE_Skip; - if ( Results.HitActor.bSHOOTABLE ) return TRACE_Stop; - return TRACE_Skip; - } - else if ( (Results.HitType == TRACE_HitWall) && (Results.Tier == TIER_Middle) ) - { - if ( !Results.HitLine.sidedef[1] || (Results.HitLine.Flags&Line.ML_BlockHitscan) ) - return TRACE_Stop; - ShootThroughList.Push(Results.HitLine); - return TRACE_Skip; - } - return TRACE_Stop; - } -} - Class SilverBullet : SWWMWeapon { bool chambered, fired; - bool fcbchambered, fcbloaded, fcbselected; - ui int lastammo; int clipcount; double casex, casey; int nkills; @@ -239,47 +197,25 @@ Class SilverBullet : SWWMWeapon Property ClipCount : clipcount; - /*override String GetObituary( Actor victim, Actor inflictor, Name mod, bool playerattack ) - { - if ( fcbchambered ) return StringTable.Localize("$O_SILVERBULLET2"); - return Super.GetObituary(victim,inflictor,mod,playerattack); - } - override void HudTick() { Super.HudTick(); if ( !ZoomInter ) ZoomInter = SmoothDynamicValueInterpolator.Create(zoomlevel*10,.5); ZoomInter.Update(zoomlevel*10); - if ( lastammo && (lastammo != fcbselected+1) && (Owner.player == players[consoleplayer]) ) - { - let bar = SWWMStatusBar(statusbar); - if ( bar ) - { - bar.ntagstr = StringTable.Localize(fcbselected?"$SWWM_FCBSEL":"$SWWM_XSBSEL"); - bar.ntagtic = level.totaltime; - bar.ntagcol = nametagcolor; - } - } - lastammo = fcbselected+1; } override bool ReportHUDAmmo() { if ( (chambered && !fired) || (clipcount > 0) ) return true; - if ( (Ammo1.Amount <= 0) && (Ammo2.Amount <= 0) && (Owner.CountInv("SilverBullets") <= 0) && (Owner.CountInv("SilverBullets2") <= 0) ) return false; + if ( (Ammo1.Amount <= 0) && (Owner.CountInv("SilverBullets") <= 0) ) return false; return true; } - override bool IsCurrentAmmo( Class kind ) - { - if ( fcbselected ) return (kind is AmmoType2); - return (kind is AmmoType1); - } override bool CheckAmmo( int firemode, bool autoswitch, bool requireammo, int ammocount ) { if ( sv_infiniteammo || Owner.FindInventory('PowerInfiniteAmmo',true) ) return true; if ( (fireMode == PrimaryFire) || (fireMode == EitherFire) ) { - if ( (chambered && !fired) || (clipcount > 0) || (Ammo1.Amount > 0) || (Ammo2.Amount > 0) || (Owner.CountInv("SilverBullets") > 0) || (Owner.CountInv("SilverBullets2") > 0) ) + if ( (chambered && !fired) || (clipcount > 0) || (Ammo1.Amount > 0) || (Owner.CountInv("SilverBullets") > 0) ) return true; if ( autoswitch ) PlayerPawn(Owner).PickNewWeapon(null); return false; @@ -535,86 +471,6 @@ Class SilverBullet : SWWMWeapon } } } - action void ProcessAltTraceHit( FatChodeTracer t, Vector3 origin, Vector3 dir ) - { - for ( int i=0; i= t.Results.HitActor.Health ) dmg += 600; - let p = SWWMPuff.Setup(t.Results.HitPos,t.Results.HitVector,invoker,self,t.Results.HitActor); - dmg = t.Results.HitActor.DamageMobj(p,self,dmg,'Explodium',DMG_FOILINVUL|DMG_THRUSTLESS|DMG_INFLICTOR_IS_PUFF); - SWWMUtility.DoKnockback(t.Results.HitActor,t.Results.HitVector+(0,0,.025),dmg*20.*FRandom[SilverBullet](.8,1.2)); - if ( t.Results.HitActor && !t.Results.HitActor.bNOBLOOD && !t.Results.HitActor.bDORMANT ) - { - t.Results.HitActor.TraceBleed(dmg,self); - t.Results.HitActor.SpawnBlood(t.Results.HitPos,atan2(t.Results.HitVector.y,t.Results.HitVector.x)+180,dmg); - t.Results.HitActor.A_StartSound("silverbullet/flesh",CHAN_DAMAGE,CHANF_OVERLAP,1.,2.); - } - } - else if ( t.Results.HitType == TRACE_HitWall ) - t.Results.HitLine.RemoteActivate(self,t.Results.Side,SPAC_Impact,t.Results.HitPos); - let p = Spawn("FatChodeImpact",t.Results.HitPos+hitnormal*4); - p.angle = atan2(hitnormal.y,hitnormal.x); - p.pitch = asin(-hitnormal.z); - p.target = self; - FatChodeImpact(p).realangle = atan2(t.Results.HitVector.y,t.Results.HitVector.x); - FatChodeImpact(p).realpitch = asin(-t.Results.HitVector.z); - BusterWall.Bust(t.Results,invoker.proneme?1400:1200,self,t.Results.HitVector,t.Results.HitPos.z); - } - SilverAirRip s; - for ( int i=0; i mac = fcb?"SilverBullets2":"SilverBullets"; - MagAmmo ma = MagAmmo(FindInventory(mac)); + MagAmmo ma = MagAmmo(FindInventory("SilverBullets")); if ( !ma ) { - ma = MagAmmo(Spawn(mac)); + ma = MagAmmo(Spawn("SilverBullets")); ma.Amount = 0; ma.AttachToOwner(self); } @@ -742,7 +584,7 @@ Class SilverBullet : SWWMWeapon } else { - let c = Spawn(mac,origin); + let c = Spawn("SilverBullets",origin); c.vel = x*FRandom[Junk](-.5,.5)+y*FRandom[Junk](4,8)-(0,0,FRandom[Junk](1,3)); c.vel += vel*.5; } @@ -761,17 +603,16 @@ Class SilverBullet : SWWMWeapon } action void A_DropMag() { - Class mac = invoker.fcbloaded?"SilverBullets2":"SilverBullets"; - MagAmmo ma = MagAmmo(FindInventory(mac)); + MagAmmo ma = MagAmmo(FindInventory("SilverBullets")); if ( !ma ) { - ma = MagAmmo(Spawn(mac)); + ma = MagAmmo(Spawn("SilverBullets")); ma.Amount = 0; ma.AttachToOwner(self); } int maxgiveamt = min(ma.MaxAmount-ma.Amount,invoker.clipcount); int dropamt = invoker.clipcount-maxgiveamt; - if ( dropamt > 0 ) invoker.BufferMagAmmo(mac,dropamt); + if ( dropamt > 0 ) invoker.BufferMagAmmo("SilverBullets",dropamt); ma.Amount = min(ma.MaxAmount,ma.Amount+invoker.clipcount); ma.MagFill(); invoker.ClipCount = 0; @@ -779,7 +620,7 @@ Class SilverBullet : SWWMWeapon Vector3 x, y, z; [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),6*x-15*z); - let c = Spawn(invoker.fcbloaded?"SilverBulletMag2":"SilverBulletMag",origin); + let c = Spawn("SilverBulletMag",origin); c.angle = angle; c.pitch = pitch; c.vel = x*FRandom[Junk](-.5,.5)+y*FRandom[Junk](-.5,.5)-(0,0,FRandom[Junk](2,3)); @@ -806,31 +647,6 @@ Class SilverBullet : SWWMWeapon } } - action void A_SwitchAmmoType( bool ifempty = false ) - { - bool oldsel = invoker.fcbselected; - if ( invoker.fcbselected && ((invoker.Ammo1.Amount > 0) || (CountInv("SilverBullets") > 0)) ) - invoker.fcbselected = (ifempty&&((invoker.Ammo2.Amount>0)||(CountInv("SilverBullets2")>0)))?true:false; - else if ( !invoker.fcbselected && ((invoker.Ammo2.Amount > 0) || (CountInv("SilverBullets2") > 0)) ) - invoker.fcbselected = (ifempty&&((invoker.Ammo1.Amount>0)||(CountInv("SilverBullets")>0)))?false:true; - if ( oldsel != invoker.fcbselected ) A_StartSound("misc/invchange",CHAN_WEAPONEXTRA,CHANF_UI|CHANF_LOCAL); - A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); - } - action void A_AltHold() - { - A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH); - // tap fire to unload round - if ( player.cmd.buttons&BT_ATTACK ) - { - player.SetPSPrite(PSP_WEAPON,invoker.FindState("Cock")); - return; - } - if ( player.cmd.buttons&BT_ALTATTACK ) return; - A_SwitchAmmoType(); - if ( invoker.zoomed ) player.SetPSPrite(PSP_WEAPON,invoker.FindState("ZoomReady")); - else player.SetPSPrite(PSP_WEAPON,invoker.fcbloaded?invoker.FindState("Ready2"):invoker.FindState("Ready")); - } - action void A_LoadMag() { MagAmmo sb = MagAmmo(FindInventory("SilverBullets")); @@ -854,29 +670,6 @@ Class SilverBullet : SWWMWeapon invoker.wastecycle = 0; invoker.ClearBufferedAmmo(); } - action void A_LoadMagAlt() - { - MagAmmo sb = MagAmmo(FindInventory("SilverBullets2")); - if ( sv_infiniteammo || FindInventory('PowerInfiniteAmmo',true) ) - invoker.clipcount = invoker.default.clipcount; - else if ( (invoker.Ammo2.Amount <= 0) || (sb.Amount >= sb.ClipSize) ) - { - int takeamt = min(sb.Amount,sb.ClipSize); - invoker.clipcount = takeamt; - sb.Amount -= takeamt; - int req = invoker.default.ClipCount-invoker.clipcount; - if ( req > 0 ) invoker.clipcount += invoker.FetchBufferedMagAmmo("SilverBullets2",req); - } - else if ( invoker.FetchBufferedMagAmmo("SilverBullets2",sb.ClipSize,true) ) - invoker.clipcount = invoker.default.clipcount; - else - { - invoker.Ammo2.Amount = max(0,invoker.Ammo2.Amount-1); - invoker.clipcount = invoker.default.clipcount; - } - invoker.wastecycle = 0; - invoker.ClearBufferedAmmo(); - } override bool PickupForAmmoSWWM( SWWMWeapon ownedWeapon ) { @@ -888,11 +681,10 @@ Class SilverBullet : SWWMWeapon if ( chambered ) { // first check the bullet in the chamber - Class wammo = fcbchambered?'SilverBullets2':'SilverBullets'; - let ma = Owner.FindInventory(wammo); + let ma = Owner.FindInventory("SilverBullets"); if ( !ma ) { - ma = Inventory(Spawn(wammo)); + ma = Inventory(Spawn("SilverBullets")); ma.Amount = 0; ma.AttachToOwner(Owner); } @@ -902,11 +694,10 @@ Class SilverBullet : SWWMWeapon } if ( clipcount > 0 ) { - Class wammo = fcbloaded?'SilverBullets2':'SilverBullets'; - let ma = Owner.FindInventory(wammo); + let ma = Owner.FindInventory("SilverBullets"); if ( !ma ) { - ma = Inventory(Spawn(wammo)); + ma = Inventory(Spawn("SilverBullets")); ma.Amount = 0; ma.AttachToOwner(Owner); } @@ -918,7 +709,7 @@ Class SilverBullet : SWWMWeapon } } return good; - }*/ + } override void MarkPrecacheSounds() { @@ -938,9 +729,6 @@ Class SilverBullet : SWWMWeapon MarkSound("silverbullet/fire1"); MarkSound("silverbullet/fire2"); MarkSound("silverbullet/fire3"); - MarkSound("silverbullet/altfire1"); - MarkSound("silverbullet/altfire2"); - MarkSound("silverbullet/altfire3"); MarkSound("silverbullet/jet"); MarkSound("silverbullet/casing1"); MarkSound("silverbullet/casing2"); @@ -953,8 +741,6 @@ Class SilverBullet : SWWMWeapon MarkSound("silverbullet/hit2"); MarkSound("silverbullet/flesh1"); MarkSound("silverbullet/flesh2"); - MarkSound("silverbullet/chode1"); - MarkSound("silverbullet/chode2"); MarkSound("silverbullet/crouch"); MarkSound("silverbullet/uncrouch"); } @@ -972,8 +758,6 @@ Class SilverBullet : SWWMWeapon Stamina 400000; Weapon.AmmoType1 "SilverBulletAmmo"; Weapon.AmmoGive1 1; - Weapon.AmmoType2 "SilverBulletAmmo2"; - Weapon.AmmoGive2 0; SWWMWeapon.DropAmmoType "SWWMCellAmmoSmall"; SilverBullet.ClipCount 5; +SWWMWEAPON.NOFIRSTGIVE; @@ -985,31 +769,17 @@ Class SilverBullet : SWWMWeapon States { Spawn: - XZW1 A -1 NoDelay A_JumpIf(invoker.fcbloaded,1); - XZW1 B -1; + XZW1 A -1; Stop; - /*Select: - XZW2 G 0 A_JumpIf(invoker.fcbloaded,"Select2"); + Select: XZW2 G 2 A_FullRaise(); XZW2 HIJKLMN 2; Goto Ready; - Select2: - XZW8 G 2 A_FullRaise(); - XZW8 HIJKLMN 2; - Goto Ready2; Ready: XZW2 A 1 { int flg = WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_ALLOWUSER1; - A_WeaponReady(flg); - if ( player.cmd.buttons&BT_ATTACK ) - invoker.CheckAmmo(EitherFire,true); - } - Wait; - Ready2: - XZW8 A 1 - { - int flg = WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_ALLOWUSER1; + if ( !invoker.chambered || invoker.fired ) flg |= WRF_NOPRIMARY; // no dry-fire yet A_WeaponReady(flg); if ( player.cmd.buttons&BT_ATTACK ) invoker.CheckAmmo(EitherFire,true); @@ -1019,6 +789,7 @@ Class SilverBullet : SWWMWeapon TNT1 A 1 { int flg = WRF_ALLOWRELOAD|WRF_ALLOWUSER1; + if ( !invoker.chambered || invoker.fired ) flg |= WRF_NOPRIMARY; // no dry-fire yet if ( invoker.rezoom > 0 ) invoker.rezoom--; else flg |= WRF_ALLOWZOOM; A_WeaponReady(flg); @@ -1026,37 +797,20 @@ Class SilverBullet : SWWMWeapon invoker.CheckAmmo(EitherFire,true); } Wait; - AltFire: - #### # 1 A_AltHold(); - Wait; Fire: XZW2 A 1 { - if ( (player.cmd.buttons&BT_ALTATTACK) && invoker.chambered ) - return ResolveState("Cock"); - if ( !invoker.chambered || invoker.fired ) - { - if ( !invoker.fired && (invoker.clipcount <= 0) && (sv_infiniteammo || FindInventory('PowerInfiniteAmmo',true) || (invoker.Ammo1.Amount > 0) || (invoker.Ammo2.Amount > 0) || (CountInv("SilverBullets") > 0) || (CountInv("SilverBullets2") > 0)) ) - { - A_SwitchAmmoType(true); - return ResolveState("Reload"); - } - return ResolveState("Cock"); - } A_SilverFire(); invoker.fired = true; - if ( invoker.zoomed ) return ResolveState("ZoomFire"); - return A_JumpIf(invoker.fcbloaded,"Fire2"); + return A_JumpIf(invoker.zoomed,"ZoomFire"); } XZW2 OPQR 2; XZW2 STUVW 3; XZW2 A 1 A_JumpIf(invoker.specialf1<=0.,"Ready"); Wait; - Fire2: - XZW8 A 1; - XZW8 OPQR 2; - XZW8 STUVW 3; - XZW8 A 1 A_JumpIf(invoker.specialf1<=0.,"Ready2"); + ZoomFire: + TNT1 A 24; + TNT1 A 1 A_JumpIf(invoker.specialf1<=0.,"ZoomReady"); Wait; Jet: TNT1 A 3 @@ -1066,9 +820,12 @@ Class SilverBullet : SWWMWeapon TNT1 A 0 { A_StartSound("silverbullet/jet",CHAN_WEAPON,CHANF_OVERLAP); - A_Overlay(PSP_WEAPON+1,"JetSmoke"); - A_OverlayFlags(PSP_WEAPON+1,PSPF_RENDERSTYLE|PSPF_ALPHA|PSPF_FORCESTYLE|PSPF_FORCEALPHA,true); - A_OverlayRenderStyle(PSP_WEAPON+1,STYLE_Add); + if ( !invoker.zoomed ) + { + A_Overlay(PSP_WEAPON+1,"JetSmoke"); + A_OverlayFlags(PSP_WEAPON+1,PSPF_RENDERSTYLE|PSPF_ALPHA|PSPF_FORCESTYLE|PSPF_FORCEALPHA,true); + A_OverlayRenderStyle(PSP_WEAPON+1,STYLE_Add); + } } TNT1 A 1 { @@ -1079,18 +836,15 @@ Class SilverBullet : SWWMWeapon TNT1 A 1; Stop; JetSmoke: - XZW7 PQR 2; - XZW7 STUVW 3; - XZW7 X 1 A_JumpIf(invoker.specialf1<=0.,1); + XZW8 QRS 2; + XZW8 TUVWX 3; + XZW8 Y 1 A_JumpIf(invoker.specialf1<=0.,1); Wait; TNT1 A 1; Stop; - Cock: - XZW2 A 0 - { - if ( invoker.zoomed ) return ResolveState("ZoomCock"); - return invoker.fcbloaded?ResolveState("DoCock2"):ResolveState("DoCock"); - } + AltFire: + XZW2 A 0 A_JumpIf(invoker.zoomed,"ZoomCock"); + Goto DoCock; ZoomCock: TNT1 A 12 A_StartSound("silverbullet/meleestart",CHAN_WEAPON,CHANF_OVERLAP); TNT1 A 10 @@ -1100,21 +854,12 @@ Class SilverBullet : SWWMWeapon { int layer = PSP_WEAPON+2; while ( player.FindPSprite(layer) ) layer++; - if ( invoker.fired ) - { - if ( invoker.fcbchambered ) A_Overlay(layer,"ZoomCasing2"); - else A_Overlay(layer,"ZoomCasing"); - } - else - { - if ( invoker.fcbchambered ) A_Overlay(layer,"ZoomBullet2"); - else A_Overlay(layer,"ZoomBullet"); - } + if ( invoker.fired ) A_Overlay(layer,"ZoomCasing"); + else A_Overlay(layer,"ZoomBullet"); } if ( !invoker.chambered || invoker.fired ) invoker.wastecycle = 0; invoker.fired = false; invoker.chambered = (invoker.clipcount>0); - if ( invoker.clipcount > 0 ) invoker.fcbchambered = invoker.fcbloaded; invoker.clipcount = max(0,invoker.clipcount-1); } TNT1 A 2 A_StartSound("silverbullet/boltclose",CHAN_WEAPON,CHANF_OVERLAP); @@ -1131,21 +876,12 @@ Class SilverBullet : SWWMWeapon { int layer = PSP_WEAPON+2; while ( player.FindPSprite(layer) ) layer++; - if ( invoker.fired ) - { - if ( invoker.fcbchambered ) A_Overlay(layer,"Casing2"); - else A_Overlay(layer,"Casing"); - } - else - { - if ( invoker.fcbchambered ) A_Overlay(layer,"Bullet2"); - else A_Overlay(layer,"Bullet"); - } + if ( invoker.fired ) A_Overlay(layer,"Casing"); + else A_Overlay(layer,"Bullet"); } if ( !invoker.chambered || invoker.fired ) invoker.wastecycle = 0; invoker.fired = false; invoker.chambered = (invoker.clipcount>0); - if ( invoker.clipcount > 0 ) invoker.fcbchambered = invoker.fcbloaded; invoker.clipcount = max(0,invoker.clipcount-1); } XZW3 DEFG 2; @@ -1153,107 +889,39 @@ Class SilverBullet : SWWMWeapon XZW3 I 2 A_StartSound("silverbullet/meleeend",CHAN_WEAPON,CHANF_OVERLAP); XZW3 JKLMNOPQR 2; Goto Ready; - DoCock2: - XZW8 A 2 A_StartSound("silverbullet/meleestart",CHAN_WEAPON,CHANF_OVERLAP); - XZW8 XYZ 2; - XZW9 AB 2; - XZW9 C 2 - { - A_StartSound("silverbullet/boltopen",CHAN_WEAPON,CHANF_OVERLAP); - if ( invoker.chambered ) - { - int layer = PSP_WEAPON+2; - while ( player.FindPSprite(layer) ) layer++; - if ( invoker.fired ) - { - if ( invoker.fcbchambered ) A_Overlay(layer,"Casing2"); - else A_Overlay(layer,"Casing"); - } - else - { - if ( invoker.fcbchambered ) A_Overlay(layer,"Bullet2"); - else A_Overlay(layer,"Bullet"); - } - } - if ( !invoker.chambered || invoker.fired ) invoker.wastecycle = 0; - invoker.fired = false; - invoker.chambered = (invoker.clipcount>0); - if ( invoker.clipcount > 0 ) invoker.fcbchambered = invoker.fcbloaded; - invoker.clipcount = max(0,invoker.clipcount-1); - } - XZW9 DEFG 2; - XZW9 H 2 A_StartSound("silverbullet/boltclose",CHAN_WEAPON,CHANF_OVERLAP); - XZW9 I 2 A_StartSound("silverbullet/meleeend",CHAN_WEAPON,CHANF_OVERLAP); - XZW9 JKLMNOPQR 2; - Goto Ready2; ZoomCasing: TNT1 A 14; TNT1 A 0 A_DropCasing(); Stop; - ZoomCasing2: - TNT1 A 14; - TNT1 A 0 A_DropCasing(true); - Stop; ZoomBullet: TNT1 A 14; TNT1 A 0 A_DropBullet(); Stop; - ZoomBullet2: - TNT1 A 14; - TNT1 A 0 A_DropBullet(true); - Stop; Casing: - XZW7 D 2 + XZW7 S 2 { A_OverlayOffset(OverlayID(),0,0); invoker.casex = FRandom[Silverbullet](-2.,2.); invoker.casey = FRandom[Silverbullet](-2.,2.); } - XZW7 E 2; - XZW7 FGHIJKLMNO 1 A_OverlayOffset(OverlayID(),invoker.casex,invoker.casey,WOF_ADD|WOF_INTERPOLATE); + XZW7 T 2; + XZW7 UVWXYZ 1 A_OverlayOffset(OverlayID(),invoker.casex,invoker.casey,WOF_ADD|WOF_INTERPOLATE); + XZW8 ABCD 1 A_OverlayOffset(OverlayID(),invoker.casex,invoker.casey,WOF_ADD|WOF_INTERPOLATE); TNT1 A 0 A_DropCasing(); Stop; - Casing2: - XZWD D 2 - { - A_OverlayOffset(OverlayID(),0,0); - invoker.casex = FRandom[Silverbullet](-2.,2.); - invoker.casey = FRandom[Silverbullet](-2.,2.); - } - XZWD E 2; - XZWD FGHIJKLMNO 1 A_OverlayOffset(OverlayID(),invoker.casex,invoker.casey,WOF_ADD|WOF_INTERPOLATE); - TNT1 A 0 A_DropCasing(true); - Stop; Bullet: - XZWD P 2 + XZW8 E 2 { A_OverlayOffset(OverlayID(),0,0); invoker.casex = FRandom[Silverbullet](-2.,2.); invoker.casey = FRandom[Silverbullet](-2.,2.); } - XZWD Q 2; - XZWD RSTUVWXYZ 1 A_OverlayOffset(OverlayID(),invoker.casex,invoker.casey,WOF_ADD|WOF_INTERPOLATE); - XZWE A 1 A_OverlayOffset(OverlayID(),invoker.casex,invoker.casey,WOF_ADD|WOF_INTERPOLATE); + XZW8 F 2; + XZW8 GHIJKLMNOP 1 A_OverlayOffset(OverlayID(),invoker.casex,invoker.casey,WOF_ADD|WOF_INTERPOLATE); TNT1 A 0 A_DropBullet(); Stop; - Bullet2: - XZWE B 2 - { - A_OverlayOffset(OverlayID(),0,0); - invoker.casex = FRandom[Silverbullet](-2.,2.); - invoker.casey = FRandom[Silverbullet](-2.,2.); - } - XZWE C 2; - XZWE DEFGHIJKLM 1 A_OverlayOffset(OverlayID(),invoker.casex,invoker.casey,WOF_ADD|WOF_INTERPOLATE); - TNT1 A 0 A_DropBullet(true); - Stop; - ZoomFire: - TNT1 A 24; - TNT1 A 1 A_JumpIf(invoker.specialf1<=0.,"ZoomReady"); - Wait; Zoom: XZW2 A 0 A_JumpIf(invoker.zoomed,"UnZoom"); - XZW2 A 0 A_JumpIf(invoker.fcbloaded,"Zoom2"); XZW2 A 2 { A_StartSound("silverbullet/zoomstart",CHAN_WEAPON,CHANF_OVERLAP); @@ -1274,30 +942,7 @@ Class SilverBullet : SWWMWeapon return ResolveState(null); } Wait; - Zoom2: - XZW8 A 0 A_JumpIf(invoker.zoomed,"UnZoom2"); - XZW8 A 2 - { - A_StartSound("silverbullet/zoomstart",CHAN_WEAPON,CHANF_OVERLAP); - invoker.zoomlevel = 0; - } - XZW9 STUVWX 1; - TNT1 A 1 - { - invoker.zoomed = true; - invoker.zoomlevel = clamp(invoker.zoomlevel*1.05+.05,1.,16.); - A_ZoomFactor(invoker.zoomlevel); - if ( !(level.maptime%2) && (invoker.zoomlevel < 16.) ) A_StartSound("silverbullet/zooming",CHAN_WEAPON,CHANF_OVERLAP,.2); - if ( !(player.cmd.buttons&BT_ZOOM) ) - { - invoker.rezoom = 3; - return ResolveState("ZoomReady"); - } - return ResolveState(null); - } - Wait; UnZoom: - XZW3 X 0 A_JumpIf(invoker.fcbloaded,"UnZoom2"); XZW3 X 1 { A_StartSound("silverbullet/zoomend",CHAN_WEAPON,CHANF_OVERLAP); @@ -1318,149 +963,80 @@ Class SilverBullet : SWWMWeapon return ResolveState(null); } Goto Ready; - UnZoom2: - XZW9 X 1 - { - A_StartSound("silverbullet/zoomend",CHAN_WEAPON,CHANF_OVERLAP); - invoker.zoomed = false; - invoker.zoomlevel = 0; - A_ZoomFactor(1.,ZOOM_INSTANT); - } - XZW9 YZ 1; - XZWA ABC 1; - XZW8 A 0 - { - if ( invoker.dezoomstate ) - { - State tmp = invoker.dezoomstate; - invoker.dezoomstate = null; - return tmp; - } - return ResolveState(null); - } - Goto Ready2; Reload: - XZW2 A 0 + XZW2 A -1 { - // autoswitch if needed - A_SwitchAmmoType(true); - if ( ((invoker.clipcount >= invoker.default.clipcount) && (invoker.fcbselected == invoker.fcbloaded)) || (!sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) && (invoker.Ammo1.Amount <= 0) && (invoker.Ammo2.Amount <= 0) && (CountInv("SilverBullets") <= 0) && (CountInv("SilverBullets2") <= 0)) ) + if ( (invoker.clipcount >= invoker.default.clipcount) || (!sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) && (invoker.Ammo1.Amount <= 0) && (CountInv("SilverBullets") <= 0)) ) return ResolveState("Idle"); if ( invoker.zoomed ) { - invoker.dezoomstate = invoker.fcbloaded?ResolveState("Unload2"):ResolveState("Unload"); + invoker.dezoomstate = ResolveState("Unload"); return ResolveState("UnZoom"); } - return A_JumpIf(invoker.fcbloaded,"Unload2"); + return ResolveState("Unload"); } + Stop; Unload: XZW2 A 2 { A_PlayerReload(); A_StartSound("silverbullet/meleestart",CHAN_WEAPON,CHANF_OVERLAP); - return A_JumpIf(invoker.clipcount<=0,"UnloadEmpty"); + A_ChangeModel("",1,"","",4,"models",String.Format("SilverbulletAmmo%s.png",(invoker.clipcount<=0)?"_Empty":""),CMDL_USESURFACESKIN,-1); } XZW4 DEFGHI 2; XZW4 J 2 A_StartSound("silverbullet/magout",CHAN_WEAPON,CHANF_OVERLAP); XZW4 KLMN 2; Goto Load; - UnloadEmpty: - XZW2 A 2; - XZW4 OPQRST 2; - XZW4 U 2 A_StartSound("silverbullet/magout",CHAN_WEAPON,CHANF_OVERLAP); - XZW4 VWXY 2; - Goto Load; - Unload2: - XZW8 A 2 - { - A_PlayerReload(); - A_StartSound("silverbullet/meleestart",CHAN_WEAPON,CHANF_OVERLAP); - return A_JumpIf(invoker.clipcount<=0,"UnloadEmpty2"); - } - XZWA DEFGHI 2; - XZWA J 2 A_StartSound("silverbullet/magout",CHAN_WEAPON,CHANF_OVERLAP); - XZWA KLMN 2; - Goto Load; - UnloadEmpty2: - XZW8 A 2; - XZWA OPQRST 2; - XZWA U 2 A_StartSound("silverbullet/magout",CHAN_WEAPON,CHANF_OVERLAP); - XZWA VWXY 2; - Goto Load; Load: - XZW4 Z 2 + XZW4 O 2 { A_DropMag(); - return A_JumpIf(invoker.fcbselected,"Load2"); + A_ChangeModel("",1,"","",4,"models","SilverbulletAmmo.png",CMDL_USESURFACESKIN,-1); } - XZW5 ABC 2; - XZW5 D 2 + XZW4 PQR 2; + XZW4 S 2 { - invoker.fcbloaded = false; A_LoadMag(); - A_SwitchAmmoType(true); A_StartSound("silverbullet/magin",CHAN_WEAPON,CHANF_OVERLAP); } - XZW5 E 2 A_StartSound("silverbullet/meleeend",CHAN_WEAPON,CHANF_OVERLAP); - XZW5 FGHIJKLMN 2; + XZW4 T 2 A_StartSound("silverbullet/meleeend",CHAN_WEAPON,CHANF_OVERLAP); + XZW4 UVWXYZ 2; + XZW5 ABC 2; Goto Ready; - Load2: - XZWA Z 2; - XZWB ABC 2; - XZWB D 2 - { - invoker.fcbloaded = true; - A_LoadMagAlt(); - A_SwitchAmmoType(true); - A_StartSound("silverbullet/magin",CHAN_WEAPON,CHANF_OVERLAP); - } - XZWB E 2 A_StartSound("silverbullet/meleeend",CHAN_WEAPON,CHANF_OVERLAP); - XZWB FGHIJKLMN 2; - Goto Ready2; Idle: - XZW2 A 0 + XZW2 A -1 { if ( invoker.zoomed ) { - invoker.dezoomstate = invoker.fcbloaded?ResolveState("DoIdle2"):ResolveState("DoIdle"); + invoker.dezoomstate = ResolveState("DoIdle"); return ResolveState("UnZoom"); } - return invoker.fcbloaded?ResolveState("DoIdle2"):ResolveState("DoIdle"); + return ResolveState("DoIdle"); } + Stop; DoIdle: XZW2 A 2 { A_StartSound("silverbullet/idle",CHAN_WEAPON,CHANF_OVERLAP); A_PlayerCheckGun(); } - XZW5 OPQR 3; - XZW5 STUV 2; - XZW5 WXYZ 3; - XZW6 ABCD 4; - XZW6 EFGH 3; + XZW5 DEFG 3; + XZW5 HIJK 2; + XZW5 LMNO 3; + XZW5 PQRS 4; + XZW5 TUVW 3; Goto Ready; - DoIdle2: - XZW8 A 2 - { - A_StartSound("silverbullet/idle",CHAN_WEAPON,CHANF_OVERLAP); - A_PlayerCheckGun(); - } - XZWB OPQR 3; - XZWB STUV 2; - XZWB WXYZ 3; - XZWC ABCD 4; - XZWC EFGH 3; - Goto Ready2; User1: - XZW2 A 0 + XZW2 A -1 { if ( invoker.zoomed ) { - invoker.dezoomstate = invoker.fcbloaded?ResolveState("DoUser12"):ResolveState("DoUser1"); + invoker.dezoomstate = ResolveState("DoUser1"); return ResolveState("UnZoom"); } - return invoker.fcbloaded?ResolveState("DoUser12"):ResolveState("DoUser1"); + return ResolveState("DoUser1"); } + Stop; DoUser1: XZW2 A 2 { @@ -1468,53 +1044,32 @@ Class SilverBullet : SWWMWeapon A_StartSound("demolitionist/wswing",CHAN_WEAPON,CHANF_OVERLAP); A_PlayerMelee(); } - XZW6 IJK 3; - XZW6 L 1 A_Parry(9); - XZW6 MN 1; - XZW6 O 1 A_Melee(90,"demolitionist/whitl",1.6,2.,2.,MELEE_Wider); - XZW6 PQ 1; - XZW6 RST 2; - XZW6 U 3 A_StartSound("silverbullet/meleeend",CHAN_WEAPON,CHANF_OVERLAP); - XZW6 VWXYZ 3; - XZW7 ABC 2; + XZW5 XYZ 3; + XZW6 A 1 A_Parry(9); + XZW6 BC 1; + XZW6 D 1 A_Melee(90,"demolitionist/whitl",1.6,2.,2.,MELEE_Wider); + XZW6 EF 1; + XZW6 GHI 2; + XZW6 J 3 A_StartSound("silverbullet/meleeend",CHAN_WEAPON,CHANF_OVERLAP); + XZW6 KLMNO 3; + XZW6 PQR 2; Goto Ready; - DoUser12: - XZW8 A 2 - { - A_StartSound("silverbullet/meleestart",CHAN_WEAPON,CHANF_OVERLAP); - A_StartSound("demolitionist/wswing",CHAN_WEAPON,CHANF_OVERLAP); - A_PlayerMelee(); - } - XZWC IJK 3; - XZWC L 1 A_Parry(9); - XZWC MN 1; - XZWC O 1 A_Melee(90,"demolitionist/whitl",1.6,2.,2.,MELEE_Wider); - XZWC PQ 1; - XZWC RST 2; - XZWC U 3 A_StartSound("silverbullet/meleeend",CHAN_WEAPON,CHANF_OVERLAP); - XZWC VWXYZ 3; - XZWD ABC 2; - Goto Ready2; Deselect: - XZW2 A 0 + XZW2 A -1 { if ( invoker.zoomed ) { - invoker.dezoomstate = invoker.fcbloaded?ResolveState("DoDeselect2"):ResolveState("DoDeselect"); + invoker.dezoomstate = ResolveState("DoDeselect"); return ResolveState("UnZoom"); } - return invoker.fcbloaded?ResolveState("DoDeselect2"):ResolveState("DoDeselect"); + return ResolveState("DoDeselect"); } + Stop; DoDeselect: XZW2 A 2 A_StartSound("silverbullet/deselect",CHAN_WEAPON,CHANF_OVERLAP); XZW2 BCDEF 2; XZW2 G -1 A_FullLower(); Stop; - DoDeselect2: - XZW8 A 2 A_StartSound("silverbullet/deselect",CHAN_WEAPON,CHANF_OVERLAP); - XZW8 BCDEF 2; - XZW8 G -1 A_FullLower(); - Stop; Flash: XZWZ A 2 Bright { @@ -1522,6 +1077,6 @@ Class SilverBullet : SWWMWeapon l.args[3] = 200; l.target = self; } - Stop;*/ + Stop; } } diff --git a/zscript/weapons/swwm_thiccboolet_fx.zsc b/zscript/weapons/swwm_thiccboolet_fx.zsc index 936164245..8641f7413 100644 --- a/zscript/weapons/swwm_thiccboolet_fx.zsc +++ b/zscript/weapons/swwm_thiccboolet_fx.zsc @@ -7,7 +7,6 @@ Class SilverBulletCasing : SWWMCasing BounceSound "silverbullet/casing"; } } -Class SilverBulletCasing2 : SilverBulletCasing {} Class SilverBulletMag : SWWMCasing { @@ -36,7 +35,6 @@ Class SilverBulletMag : SWWMCasing Stop; } } -Class SilverBulletMag2 : SilverBulletMag {} Class SilverAirRip : Actor { @@ -83,17 +81,6 @@ Class SilverAirRip : Actor Stop; } } -Class SilverAirRip2 : SilverAirRip -{ - Default - { - Obituary "$O_SILVERBULLET2"; - } - override void Explode() - { - SWWMUtility.DoExplosion(self,20,2000,30,ignoreme:target); - } -} Class SilverImpact : Actor { @@ -178,246 +165,3 @@ Class SilverImpact : Actor Stop; } } - -Class ExploLight3 : PaletteLight -{ - Default - { - ReactionTime 30; - Args 0,0,0,250; - } -} - -Class FatChodeRing : Actor -{ - Default - { - RenderStyle "Add"; - Scale 3.; - Radius 0.1; - Height 0; - +NOGRAVITY; - +NOBLOCKMAP; - +FORCEXYBILLBOARD; - +NOTELEPORT; - +NOINTERACTION; - } - override void Tick() - { - if ( isFrozen() ) return; - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } - States - { - Spawn: - XRG0 ABCDEFGHIJKLMNOPQRSTUVWX 1 Bright A_SetScale(scale.x*1.06); - Stop; - } -} - -Class FatChodeImpact : Actor -{ - double realangle, realpitch; - - Default - { - Obituary "$O_SILVERBULLET2"; - DamageType 'Explodium'; - RenderStyle "Add"; - Radius 0.1; - Height 0; - +NOGRAVITY; - +NOCLIP; - +DONTSPLASH; - +NOBLOCKMAP; - +FORCEXYBILLBOARD; - +FORCERADIUSDMG; - +NODAMAGETHRUST; - +NOTELEPORT; - +NOINTERACTION; - Scale 4.5; - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - SWWMUtility.DoExplosion(self,600,40000,250,120,DE_THRUWALLS|DE_EXTRAZTHRUST); - A_AlertMonsters(swwm_uncapalert?0:8000); - A_QuakeEx(7,7,7,50,0,2000,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:800,rollIntensity:1.); - A_StartSound("silverbullet/chode",CHAN_VOICE,CHANF_DEFAULT,1.,.35); - A_SprayDecal("BigPock",-64); - A_SprayDecal("HugeWallCrack",-64); - A_SprayDecal("WumboRocketBlast",-64); - Scale *= FRandom[ExploS](0.8,1.1); - Scale.x *= RandomPick[ExploS](-1,1); - Scale.y *= RandomPick[ExploS](-1,1); - int numpt = Random[Silverbullet](15,25); - Vector3 x = SWWMUtility.Vec3FromAngles(angle,pitch); - for ( int i=0; i 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } - States - { - Spawn: - XEX1 ABCDEFGHIJKLMNOPQRSTUVWXYZ[\ 1 Bright; - Stop; - } -} - -Class FatChodeExtraArm : ExplodiumMagArm -{ - Default - { - Obituary "$O_SILVERBULLET2"; - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - vel *= 1.5; - } -} - -Class FatChodeExplosionTrail : Actor -{ - Default - { - RenderStyle "Add"; - Radius 0.1; - Height 0; - +NOGRAVITY; - +NOCLIP; - +DONTSPLASH; - +NOTELEPORT; - +NOBLOCKMAP; - +FORCEXYBILLBOARD; - +NOTELEPORT; - +NOINTERACTION; - Scale 3.; - } - override void Tick() - { - if ( isFrozen() ) return; - if ( !CheckNoDelay() || (tics == -1) ) return; - if ( tics > 0 ) tics--; - while ( !tics ) - { - if ( !SetState(CurState.NextState) ) - return; - } - } - States - { - Spawn: - XEX1 ACEGIKMOQSUWY[ 1 Bright; - Stop; - } -} - -Class FatChodeExplosionArm : Actor -{ - Default - { - Obituary "$O_SILVERBULLET2"; - DamageType 'Explodium'; - Radius 0.1; - Height 0; - +NOGRAVITY; - +NOCLIP; - +DONTSPLASH; - +NOTELEPORT; - +NOBLOCKMAP; - +FORCERADIUSDMG; - +NODAMAGETHRUST; - +NOINTERACTION; - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - reactiontime = Random[ExploS](15,20); - vel = SWWMUtility.Vec3FromAngles(angle,pitch)*FRandom[ExploS](20.,30.); - } - States - { - Spawn: - TNT1 A 1 - { - if ( !(ReactionTime%2) ) - SWWMUtility.DoExplosion(self,10+reactiontime,8000+1500*reactiontime,80+5*reactiontime,50,DE_THRUWALLS); - if ( level.IsPointInLevel(pos) ) - { - A_SprayDecal("HugeRocketBlast",-32); - Spawn("FatChodeExplosionTrail",pos); - Vector3 pvel = SWWMUtility.Vec3FromAngles(FRandom[ExploS](0,360),FRandom[ExploS](-90,90))*FRandom[ExploS](1,5); - let s = Spawn("SWWMHalfSmoke",pos); - s.vel = pvel+vel*.2; - s.SetShade(Color(1,1,1)*Random[ExploS](64,224)); - s.special1 = Random[ExploS](1,4); - s.scale *= 2.4; - s.alpha *= .1+.4*(ReactionTime/15.); - } - A_CountDown(); - } - Wait; - } -} diff --git a/zscript/weapons/swwm_weapons_hud.zsc b/zscript/weapons/swwm_weapons_hud.zsc index f7321ae2e..d7d33c90b 100644 --- a/zscript/weapons/swwm_weapons_hud.zsc +++ b/zscript/weapons/swwm_weapons_hud.zsc @@ -179,17 +179,15 @@ extend Class Sparkster // Silver Bullet JET extend Class SilverBullet { - ui TextureID WeaponBox[2], ZoomBar, RoundTex[4]; + ui TextureID WeaponBox[2], ZoomBar, RoundTex[2]; override void DrawWeapon( double TicFrac, double bx, double by, double hs, Vector2 ss ) { if ( !WeaponBox[0] ) WeaponBox[0] = TexMan.CheckForTexture("graphics/HUD/SilverBulletDisplay.png"); if ( !WeaponBox[1] ) WeaponBox[1] = TexMan.CheckForTexture("graphics/HUD/SilverBulletZoomDisplay.png"); if ( !ZoomBar ) ZoomBar = TexMan.CheckForTexture("graphics/HUD/SilverBulletZoomBar.png"); - if ( !RoundTex[0] ) RoundTex[0] = TexMan.CheckForTexture("graphics/HUD/SilverBulletXSB.png"); - if ( !RoundTex[1] ) RoundTex[1] = TexMan.CheckForTexture("graphics/HUD/SilverBulletFCB.png"); - if ( !RoundTex[2] ) RoundTex[2] = TexMan.CheckForTexture("graphics/HUD/SilverBulletXSBCasing.png"); - if ( !RoundTex[3] ) RoundTex[3] = TexMan.CheckForTexture("graphics/HUD/SilverBulletFCBCasing.png"); + if ( !RoundTex[0] ) RoundTex[0] = TexMan.CheckForTexture("graphics/HUD/SilverBulletRound.png"); + if ( !RoundTex[1] ) RoundTex[1] = TexMan.CheckForTexture("graphics/HUD/SilverBulletCasing.png"); double zl = clamp(ZoomInter?ZoomInter.GetValue(TicFrac):(zoomlevel*10),0.,160.); if ( zl >= 10. ) { @@ -199,9 +197,9 @@ extend Class SilverBullet Screen.DrawTexture(ZoomBar,false,bx-18,by-37,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,zw); } Screen.DrawTexture(WeaponBox[0],false,bx-20,by-29,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - if ( chambered ) Screen.DrawTexture(RoundTex[fcbchambered+fired*2],false,bx-18,by-27,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + if ( chambered ) Screen.DrawTexture(RoundTex[fired],false,bx-18,by-27,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); for ( int i=0; i