diff --git a/README.md b/README.md index f78057436..e3199e42b 100644 --- a/README.md +++ b/README.md @@ -145,10 +145,9 @@ on replaced item, may also come in bundles: - **Standard buckshot (red):** Lots of tiny pellets ready to tear enemies to shreds. Most common. - **Slug (green):** Concentrated damage in a single, large projectile. Common. - - **Dragon's breath (white):** Fiery pain in one shot for everything in front of you. Not very effective underwater, but still deals some small heat damage. Somewhat rare. - - **Kinylum saltshot (blue):** Highly volatile shards of **Kinylum** that leave behind a trail of burning plasma. Rare. + - **Kinylum saltshot (blue):** Highly volatile shards of **Kinylum** that leave behind a trail of burning plasma. Somewhat rare. + - ***"The ball"* (purple):** A big lead ball, 'nuff said. Rare. - **Telebrium flechette (black):** A discharge of puncturing darts tipped with pure Telebrium, highly corrosive, effects may spread through emitted fumes. Very rare. - - ***"The ball"* (purple):** A big lead ball, 'nuff said. Somewhat rare. - **Golden shell (self-explanatory color):** An extremely rare, but very valuable type. Fires a sabot packed with a very dense, high-grade **Explodium** charge, the shell also contains some gold glitter, but it's just for show. Clearly designed by someone completely insane, and definitely guaranteed to not fail catastrophically and blow up your gun, your hands, your arms, and the rest of your upper body. Unlike the others, this one is only available as a rare drop from powerful monsters (over 1000HP) and bosses. They may also appear in **Chanceboxes**. ### Puntzer Beta (slot 3) ~ Replaces Shotgun, Ethereal Crossbow, Serpent Staff @@ -170,7 +169,7 @@ These 6.9mm **(nice)** corkscrew-shaped bullets have some fine drilling power, b ### Wallbuster (slot 4) ~ Replaces SSG, Ethereal Crossbow, Frost Shards ![](docimg/wallbuster.png) -A ludicrously overkill weapon, courtesy of the always-overkill **Blackmann Arms**. Sporting a pentagonal array of 5-barrel cylinders, for a grand total of 25 barrels. Everything in front of you is pretty much dead. Cannot use dragon's breath, flechettes or golden shells. +A ludicrously overkill weapon, courtesy of the always-overkill **Blackmann Arms**. Sporting a pentagonal array of 5-barrel cylinders, for a grand total of 25 barrels. Everything in front of you is pretty much dead. Cannot use flechettes or golden shells. **Primary fire:** Shoot one barrel at a time. diff --git a/docimg/shells.png b/docimg/shells.png index 9b0c912df..9472dcd76 100644 Binary files a/docimg/shells.png and b/docimg/shells.png differ diff --git a/graphics/AltHUD/ShellWhite.png b/graphics/AltHUD/ShellWhite.png deleted file mode 100644 index dce9fef7d..000000000 Binary files a/graphics/AltHUD/ShellWhite.png and /dev/null differ diff --git a/graphics/HUD/LoadedWhiteShell.png b/graphics/HUD/LoadedWhiteShell.png deleted file mode 100644 index 583d3f0f2..000000000 Binary files a/graphics/HUD/LoadedWhiteShell.png and /dev/null differ diff --git a/graphics/HUD/SpreadgunDisplay.png b/graphics/HUD/SpreadgunDisplay.png index cbf2e57de..4e3c6e8bb 100644 Binary files a/graphics/HUD/SpreadgunDisplay.png and b/graphics/HUD/SpreadgunDisplay.png differ diff --git a/graphics/HUD/WhiteShell.png b/graphics/HUD/WhiteShell.png deleted file mode 100644 index 745dc7839..000000000 Binary files a/graphics/HUD/WhiteShell.png and /dev/null differ diff --git a/language.def_base b/language.def_base index 6636e7a37..ecd89a37c 100644 --- a/language.def_base +++ b/language.def_base @@ -40,8 +40,6 @@ T_REDSHELL = "Shell"; T_REDSHELLS = "Shells"; T_GREENSHELL = "Slug"; T_GREENSHELLS = "Slugs"; -T_WHITESHELL = "Dragon's Breath Round"; -T_WHITESHELLS = "Dragon's Breath Rounds"; T_BLUESHELL = "Kinylum Saltshot Round"; T_BLUESHELLS = "Kinylum Saltshot Rounds"; T_BLACKSHELL = "Corrosive Round"; @@ -483,7 +481,6 @@ O_DEEPIMPACT_WEAK = "%k coughed in %o's general direction."; O_EXPLODIUM = "%k inflicted severe knee explosions onto %o."; O_SPREADGUN_RED = "%k gave %o a mouthful of shot."; O_SPREADGUN_GREEN = "%o got slugged by %k."; -O_SPREADGUN_WHITE = "%k burninated %o."; O_SPREADGUN_BLUE = "%k made %o very salty."; O_SPREADGUN_BLACK = "%o received a very spiky treatment from %o."; O_SPREADGUN_BLACK_DEBUFF = "%k turned %o into a corroded mess."; diff --git a/language.def_lore b/language.def_lore index b8de8c5ca..6f9b54360 100644 --- a/language.def_lore +++ b/language.def_lore @@ -3644,14 +3644,12 @@ SWWM_LORETXT_SPREADGUN = "\n" "\cfMetal Slug:\c- Green shells. Very potent slugs that have a decent accuracy, even at longer ranges. Due to their size and weight, they can potentially penetrate multiple small targets.\n" "\n" -"\cfDragon's Breath:\c- White shells. A burst of flame in each shot, has considerable range. Ineffective underwater, for obvious reasons.\n" -"\n" "\cfKinylum Saltshot:\c- Teal shells. Small chunks of Kinylum in its natural \"salt\" form. Once shot, they leave a trail of boiling hot plasma that remains in the air for a few moments before finally dissipating. In addition, the chunks will explode violently on contact with any surface, or once they \"destabilize\" (which unfortunately makes this type of ammunition ineffective at longer distances).\n" "\n" -"\cfTelebrium Flechettes:\c- Black shells. Dozens of piercing projectiles tipped with pure Telebrium, an exotic element known for its potent corrosive effects when heated. Targets hit by these projectiles will experience a very painful discharge of corrosive toxins through their bodies (even non-organic ones), although the effects of this will dissipate in a couple seconds. Use of this ammunition is highly restricted, but you have been granted permission to use it against the invading forces.\n" -"\n" "\cfLead Ball:\c- Purple shells. Coming from \cfPlutoni Incorporated\c-, these rounds shoot out a heavy ball of pure hurt. Despite the fact it's made of lead, it tends to keep its shape no matter how hard it hits something (some wonder if it actually IS made of lead, or if it's something else entirely). Having come out of such a place, it's no surprise that they also have some rather odd effects. It appears that, on certain occasions, the balls may emit odd sounds on impact, which in addition cause some form of potent shockwave around itself, increasing its speed in the process. This odd happening is listed as \"Random Crits\" in the store page.\n" "\n" +"\cfTelebrium Flechettes:\c- Black shells. Dozens of piercing projectiles tipped with pure Telebrium, an exotic element known for its potent corrosive effects when heated. Targets hit by these projectiles will experience a very painful discharge of corrosive toxins through their bodies (even non-organic ones), although the effects of this will dissipate in a couple seconds. Use of this ammunition is highly restricted, but you have been granted permission to use it against the invading forces.\n" +"\n" "\cfGolden Shell:\c- Gold-plated shells with a heavy metal body. A highly rare and expensive type of ammunition, with unmatched destructive power. Each round fires a sabot packing a high-grade, high-density \cfExplodium\c- charge, along with gold glitter (which is apparently just for show). Anything directly hit by it is guaranteed to be completely vaporized by the ensuing blast.\n" "\n" "The wide range of compatible ammunition types makes the Spreadgun a rather versatile weapon, once you look past its tedious manual reloading. There are however plans to make a much more comfortable semi-automatic, recoil operated variant of this weapon, with prototypes already being tested.\n" @@ -4003,7 +4001,7 @@ SWWM_LORETXT_WALLBUSTER = "\n" "The internal mechanisms driving this weapon have such a degree of complexity that they've been described as \cf\"Kraut Deep Space Magic\"\c- by some. Only \cfHermann E. Ischer\c- himself knows every detail about their operation. With each twist of the main trigger, the topmost barrel is primed, and then its cylinder spins counter-clockwise, with the next round ready for shooting. On a complete rotation, or when the secondary trigger is used, the main body spins afterwards, switching to another cylinder.\n" "\n" -"The Wallbuster is compatible with most types of 6ga shells distributed by Blackmann, although there are safety restrictions on some, namely dragon's breath, flechettes, and golden shells. This limits the range of ammunition usable to only these four types:\n" +"The Wallbuster is compatible with most types of 6ga shells distributed by Blackmann, although there are safety restrictions on some, namely flechettes and golden shells. This limits the range of ammunition usable to only these four types:\n" "\n" "\cfStandard Buckshot:\c- Red shells. Exactly what it says on the tin. Quite lethal at short range, and with some extra reach due to the length of the weapon's barrels.\n" "\n" diff --git a/language.es_base b/language.es_base index fabc59fbb..019424e07 100644 --- a/language.es_base +++ b/language.es_base @@ -31,8 +31,6 @@ T_REDSHELL = "Cartucho"; T_REDSHELLS = "Cartuchos"; T_GREENSHELL = "Slug"; T_GREENSHELLS = "Slugs"; -T_WHITESHELL = "Cartucho Dragon's Breath"; -T_WHITESHELLS = "Cartuchos Dragon's Breath"; T_BLUESHELL = "Cartucho de Sal de Kinylum"; T_BLUESHELLS = "Cartuchos de Sal de Kinylum"; T_BLACKSHELL = "Cartucho Corrosivo"; @@ -383,7 +381,6 @@ O_DEEPIMPACT_WEAK = "%k tosió en la dirección general de %o."; O_EXPLODIUM = "%k infligió explosiones de rodilla severas a %o."; O_SPREADGUN_RED = "%k le dio a %o un bocado de perdigones."; O_SPREADGUN_GREEN = "%o fue sluggead@[ao_esp] por %k."; -O_SPREADGUN_WHITE = "%k incendificó a %o."; O_SPREADGUN_BLUE = "%k puso a %o muy salad@[ao_esp]."; O_SPREADGUN_BLACK = "%o recibió un trato muy puntiagudo de %k."; O_SPREADGUN_BLACK_DEBUFF = "%k dejó a %o hech@[ao_esp] un desastre corroído."; diff --git a/language.es_dlg b/language.es_dlg index b80c4d1ed..b07847a57 100644 --- a/language.es_dlg +++ b/language.es_dlg @@ -158,7 +158,7 @@ SWWM_SAYACLERICC2 = "Los clérigos son una puta mierda..."; SWWM_SAYAMAGE1 = "La guarida de Menelkir, eh... ...\nOh dios, no se lo digas a \cxKirin-kun\c-, aquí hay puzzles."; SWWM_SAYAMAGE2 = "Sí, está ya más que cansado de todo este tema. Y aparentemente ahora los tenemos de coincidir dibujos."; SWWM_SAYAMAGE3 = "Bueno, al menos estos son puzzles de verdad, y no lo que coño sea que fuera todo aquello."; -SWWM_SAYAMAGE4 = "Aun que sean... Ya sabes... De los que son todo cutres y chupadísimos."; +SWWM_SAYAMAGE4 = "Aunque sean... Ya sabes... De los que son todo cutres y chupadísimos."; // Dark Crucible SWWM_SAYAKORAXA1 = "Aquí estamos, \cdDemo\c-. El gran bastardo feo apestoso ese espera."; SWWM_SAYAKORAXB1 = "Al fin, el reinado maligno del vil conspirador encontrará su fin."; // Kirin reply diff --git a/language.es_lore b/language.es_lore index 3661820c0..93e6222be 100644 --- a/language.es_lore +++ b/language.es_lore @@ -3383,14 +3383,12 @@ SWWM_LORETXT_SPREADGUN = "\n" "\cfSlug Metálico:\c- Cartuchos verdes. Slugs muy potentes con una puntería decente, incluso en distancias largas. Dado su tamaño y peso, tienen el potencial de penetrar varios objetivos pequeños.\n" "\n" -"\cfAliento de Dragón:\c- Cartuchos blancos. Un estallido de llamas con cada disparo, con rango considerable. Ineficaz bajo el agua, por razones obvias.\n" -"\n" "\cfSal de Kinylum:\c- Cartuchos cian. Pequeños trozos de Kinylum en su forma natural de \"sal\". Ya disparados, dejan un rastro de plasma ardiente que permanece en el aire durante unos momentos hasta disiparse. Adicionalmente, los trozos explotarán violentamente en contacto con cualquier superficie, o una vez se \"desestabilicen\" (lo cual desafortunadamente hace que este tipo de munición pierda efectividad a larga distancia).\n" "\n" -"\cfDardos de Telebrium:\c- Cartuchos negros. Docenas de proyectiles penetrantes cargados de Telebrium puro, un elemento exótico conocido por sus potentes efectos corrosivos al ser calentado. Los objetivos alcanzados por estos proyectiles experimentarán una muy dolorosa descarga de toxinas corrosivas por sus cuerpos (incluso los no orgánicos), aunque estos efectos se despejarán en cuestión de segundos. El uso de esta munición está altamente restringido, pero has obtenido permiso para usarla contra las fuerzas invasoras.\n" -"\n" "\cfBola de Plomo:\c- Cartuchos violetas. Viniendo de \cfPlutoni Incorporated\c-, estos cartuchos disparan una bola pesada de dolor puro. A pesar del hecho de que son de plomo, tiende a mantener la forma da igual la fuerza de impacto contra algo (algunos dudan de que realmente sean de plomo, siendo más bien de cualquier otro material). Habiendo salido de tal lugar, no es sorprendente que tengan efectos extraños. Al parecer, en ciertas ocasiones, las bolas pueden emitir sonidos extraños al impactar, los cuales adicionalmente provocan potentes ondas de choque, incrementando su velocidad en el proceso. Este suceso extraño está listado como \"Golpes Críticos Aleatorios\" en la página de la tienda.\n" "\n" +"\cfDardos de Telebrium:\c- Cartuchos negros. Docenas de proyectiles penetrantes cargados de Telebrium puro, un elemento exótico conocido por sus potentes efectos corrosivos al ser calentado. Los objetivos alcanzados por estos proyectiles experimentarán una muy dolorosa descarga de toxinas corrosivas por sus cuerpos (incluso los no orgánicos), aunque estos efectos se despejarán en cuestión de segundos. El uso de esta munición está altamente restringido, pero has obtenido permiso para usarla contra las fuerzas invasoras.\n" +"\n" "\cfCartucho Dorado:\c- Cartuchos cubiertos de oro con un fuerte cuerpo metálico. Un tipo de munición caro y muy poco común, con un poder destructor sin par. Cada cartucho dispara un proyectil que contiene una carga de \cfExplodium\c- de alta densidad y pureza, junto con brillantina dorada (que es aparentemente solo para quedar bonito). Se garantiza que cualquier cosa que reciba un impacto directo será vaporizada completamente por la explosión resultante.\n" "\n" "El amplio rango de munición compatible hace del Trabuco un arma bastante versátil, una vez acostumbrado a su tediosa recarga manual. Hay sin embargo planes para crear una variante semiautomática más cómoda de usar, con prototipos ya probándose.\n" @@ -3721,7 +3719,7 @@ SWWM_LORETXT_WALLBUSTER = "\n" "Los mecanismos internos que empujan el funcionamiento de este arma tienen tal grado de complejidad que han sido descritos por algunos como \cfIngeniería Loca Alemana\c-. Solamente el propio \cfHermann E. Ischer\c- conoce todos los detalles de su operación. Con cada accionamiento del gatillo principal, el cañón superior es disparado, y luego su tambor gira a contrarreloj, con el siguiente cartucho listo para dispararse. Con una rotación completa, o cuando se usa el gatillo secundario, el cuerpo principal gira después, alternando a otro tambor.\n" "\n" -"La Wallbuster es compatible con la mayor parte de cartuchos de calibre 6, aunque hay restricciones de seguridad para algunas, específicamente los cartuchos dragon's breath, flechette y dorados. Esto limita el rango de munición utilizable a sólo estos cuatro tipos:\n" +"La Wallbuster es compatible con la mayor parte de cartuchos de calibre 6, aunque hay restricciones de seguridad para algunas, específicamente los cartuchos de flechette y dorados. Esto limita el rango de munición utilizable a sólo estos cuatro tipos:\n" "\n" "\cfPerdigones Estándar:\c- Cartuchos rojos. Exactamente lo que pone. Bastante letal a corto rango, y con cierto alcance extra dada la longitud de los cañones del arma.\n" "\n" diff --git a/language.es_voice b/language.es_voice index 5270b4a80..d151d48e9 100644 --- a/language.es_voice +++ b/language.es_voice @@ -79,7 +79,7 @@ SWWM_SUBS_DEFAULT_MAPSTART11 = "Bueno, mas vale no dejar a todos esperando."; SWWM_SUBS_DEFAULT_MAPSTART12 = "Me esforzaré al máximo."; SWWM_SUBS_DEFAULT_MAPSTART13 = "Deja que diga una cosa: Todo lo que encuentre, me lo quedo."; SWWM_SUBS_DEFAULT_MAPSTART14 = "Vengo a mascar chicle y patear traseros... Y no tengo boca."; -SWWM_SUBS_DEFAULT_MAPSTART15 = "¿Por qué me mudé aquí? Supongo que por el tiempo."; +SWWM_SUBS_DEFAULT_MAPSTART15 = "¿Por qué me mudé aquí? Supongo que por el clima."; SWWM_SUBS_DEFAULT_MAPSTART16 = "Ugh mas vale que no haya plataformas..."; SWWM_SUBS_DEFAULT_MAPSTART17 = "Ya veo que este día va a ser interesante."; // every time a secret is found @@ -335,7 +335,7 @@ SWWM_SUBS_DEFAULT_DSPARILA2 = "¿Por que no te bajas de esa cosa y hablamos?"; SWWM_SUBS_DEFAULT_DSPARILA3 = "Voy a fregar el suelo contigo, friki."; SWWM_SUBS_DEFAULT_DSPARILB1 = "¿Pero que os pasa a todos con lo de hablar al revés?"; SWWM_SUBS_DEFAULT_DSPARILB2 = "Lo siento, ¿podrías repetir eso?"; -SWWM_SUBS_DEFAULT_DSPARILB3 = "séver la ralbah odeup néibmat oY."; // record this line normally then just reverse it, really +SWWM_SUBS_DEFAULT_DSPARILB3 = ".séver la ralbah odeup néibmat oY"; // record this line normally then just reverse it, really // (H-Doom compat) Demon girl petting SWWM_SUBS_DEFAULT_PETHDOOM1 = "Buena chica~"; SWWM_SUBS_DEFAULT_PETHDOOM2 = "Eh, no tienes por qué pelear."; diff --git a/language.version b/language.version index e21dfe3e0..8a17c105a 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r92 \cu(Sat 4 Jun 01:00:47 CEST 2022)\c-"; -SWWM_SHORTVER="\cw1.3pre r92 \cu(2022-06-04 01:00:47)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r93 \cu(Sat 4 Jun 22:09:46 CEST 2022)\c-"; +SWWM_SHORTVER="\cw1.3pre r93 \cu(2022-06-04 22:09:46)\c-"; diff --git a/lore/default/spreadgun.txt b/lore/default/spreadgun.txt index 799806c49..e2b3155f1 100644 --- a/lore/default/spreadgun.txt +++ b/lore/default/spreadgun.txt @@ -20,14 +20,12 @@ The weapon is chambered for rather sizable 6ga shells, and there's an exclusive \cfMetal Slug:\c- Green shells. Very potent slugs that have a decent accuracy, even at longer ranges. Due to their size and weight, they can potentially penetrate multiple small targets. -\cfDragon's Breath:\c- White shells. A burst of flame in each shot, has considerable range. Ineffective underwater, for obvious reasons. - \cfKinylum Saltshot:\c- Teal shells. Small chunks of Kinylum in its natural "salt" form. Once shot, they leave a trail of boiling hot plasma that remains in the air for a few moments before finally dissipating. In addition, the chunks will explode violently on contact with any surface, or once they "destabilize" (which unfortunately makes this type of ammunition ineffective at longer distances). -\cfTelebrium Flechettes:\c- Black shells. Dozens of piercing projectiles tipped with pure Telebrium, an exotic element known for its potent corrosive effects when heated. Targets hit by these projectiles will experience a very painful discharge of corrosive toxins through their bodies (even non-organic ones), although the effects of this will dissipate in a couple seconds. Use of this ammunition is highly restricted, but you have been granted permission to use it against the invading forces. - \cfLead Ball:\c- Purple shells. Coming from **Plutoni Incorporated**, these rounds shoot out a heavy ball of pure hurt. Despite the fact it's made of lead, it tends to keep its shape no matter how hard it hits something (some wonder if it actually IS made of lead, or if it's something else entirely). Having come out of such a place, it's no surprise that they also have some rather odd effects. It appears that, on certain occasions, the balls may emit odd sounds on impact, which in addition cause some form of potent shockwave around itself, increasing its speed in the process. This odd happening is listed as "Random Crits" in the store page. +\cfTelebrium Flechettes:\c- Black shells. Dozens of piercing projectiles tipped with pure Telebrium, an exotic element known for its potent corrosive effects when heated. Targets hit by these projectiles will experience a very painful discharge of corrosive toxins through their bodies (even non-organic ones), although the effects of this will dissipate in a couple seconds. Use of this ammunition is highly restricted, but you have been granted permission to use it against the invading forces. + \cfGolden Shell:\c- Gold-plated shells with a heavy metal body. A highly rare and expensive type of ammunition, with unmatched destructive power. Each round fires a sabot packing a high-grade, high-density **Explodium** charge, along with gold glitter (which is apparently just for show). Anything directly hit by it is guaranteed to be completely vaporized by the ensuing blast. The wide range of compatible ammunition types makes the Spreadgun a rather versatile weapon, once you look past its tedious manual reloading. There are however plans to make a much more comfortable semi-automatic, recoil operated variant of this weapon, with prototypes already being tested. diff --git a/lore/default/wallbuster.txt b/lore/default/wallbuster.txt index a83280cd0..e7608fc79 100644 --- a/lore/default/wallbuster.txt +++ b/lore/default/wallbuster.txt @@ -17,7 +17,7 @@ The **Wallbuster** is a beefy beast of a shotgun, sporting a total of 25 barrels The internal mechanisms driving this weapon have such a degree of complexity that they've been described as **"Kraut Deep Space Magic"** by some. Only **Hermann E. Ischer** himself knows every detail about their operation. With each twist of the main trigger, the topmost barrel is primed, and then its cylinder spins counter-clockwise, with the next round ready for shooting. On a complete rotation, or when the secondary trigger is used, the main body spins afterwards, switching to another cylinder. -The Wallbuster is compatible with most types of 6ga shells distributed by Blackmann, although there are safety restrictions on some, namely dragon's breath, flechettes, and golden shells. This limits the range of ammunition usable to only these four types: +The Wallbuster is compatible with most types of 6ga shells distributed by Blackmann, although there are safety restrictions on some, namely flechettes and golden shells. This limits the range of ammunition usable to only these four types: \cfStandard Buckshot:\c- Red shells. Exactly what it says on the tin. Quite lethal at short range, and with some extra reach due to the length of the weapon's barrels. diff --git a/lore/es/spreadgun.txt b/lore/es/spreadgun.txt index ae940c258..b5026c9b2 100644 --- a/lore/es/spreadgun.txt +++ b/lore/es/spreadgun.txt @@ -16,14 +16,12 @@ El arma emplea el ciertamente grande calibre 6, y hay un surtido exclusivo de mu \cfSlug Metálico:\c- Cartuchos verdes. Slugs muy potentes con una puntería decente, incluso en distancias largas. Dado su tamaño y peso, tienen el potencial de penetrar varios objetivos pequeños. -\cfAliento de Dragón:\c- Cartuchos blancos. Un estallido de llamas con cada disparo, con rango considerable. Ineficaz bajo el agua, por razones obvias. - \cfSal de Kinylum:\c- Cartuchos cian. Pequeños trozos de Kinylum en su forma natural de "sal". Ya disparados, dejan un rastro de plasma ardiente que permanece en el aire durante unos momentos hasta disiparse. Adicionalmente, los trozos explotarán violentamente en contacto con cualquier superficie, o una vez se "desestabilicen" (lo cual desafortunadamente hace que este tipo de munición pierda efectividad a larga distancia). -\cfDardos de Telebrium:\c- Cartuchos negros. Docenas de proyectiles penetrantes cargados de Telebrium puro, un elemento exótico conocido por sus potentes efectos corrosivos al ser calentado. Los objetivos alcanzados por estos proyectiles experimentarán una muy dolorosa descarga de toxinas corrosivas por sus cuerpos (incluso los no orgánicos), aunque estos efectos se despejarán en cuestión de segundos. El uso de esta munición está altamente restringido, pero has obtenido permiso para usarla contra las fuerzas invasoras. - \cfBola de Plomo:\c- Cartuchos violetas. Viniendo de **Plutoni Incorporated**, estos cartuchos disparan una bola pesada de dolor puro. A pesar del hecho de que son de plomo, tiende a mantener la forma da igual la fuerza de impacto contra algo (algunos dudan de que realmente sean de plomo, siendo más bien de cualquier otro material). Habiendo salido de tal lugar, no es sorprendente que tengan efectos extraños. Al parecer, en ciertas ocasiones, las bolas pueden emitir sonidos extraños al impactar, los cuales adicionalmente provocan potentes ondas de choque, incrementando su velocidad en el proceso. Este suceso extraño está listado como "Golpes Críticos Aleatorios" en la página de la tienda. +\cfDardos de Telebrium:\c- Cartuchos negros. Docenas de proyectiles penetrantes cargados de Telebrium puro, un elemento exótico conocido por sus potentes efectos corrosivos al ser calentado. Los objetivos alcanzados por estos proyectiles experimentarán una muy dolorosa descarga de toxinas corrosivas por sus cuerpos (incluso los no orgánicos), aunque estos efectos se despejarán en cuestión de segundos. El uso de esta munición está altamente restringido, pero has obtenido permiso para usarla contra las fuerzas invasoras. + \cfCartucho Dorado:\c- Cartuchos cubiertos de oro con un fuerte cuerpo metálico. Un tipo de munición caro y muy poco común, con un poder destructor sin par. Cada cartucho dispara un proyectil que contiene una carga de **Explodium** de alta densidad y pureza, junto con brillantina dorada (que es aparentemente solo para quedar bonito). Se garantiza que cualquier cosa que reciba un impacto directo será vaporizada completamente por la explosión resultante. El amplio rango de munición compatible hace del Trabuco un arma bastante versátil, una vez acostumbrado a su tediosa recarga manual. Hay sin embargo planes para crear una variante semiautomática más cómoda de usar, con prototipos ya probándose. diff --git a/lore/es/wallbuster.txt b/lore/es/wallbuster.txt index 75678d8ad..e00806498 100644 --- a/lore/es/wallbuster.txt +++ b/lore/es/wallbuster.txt @@ -11,7 +11,7 @@ La **Wallbuster** es una escopeta bestial, teniendo un total de 25 cañones divi Los mecanismos internos que empujan el funcionamiento de este arma tienen tal grado de complejidad que han sido descritos por algunos como **Ingeniería Loca Alemana**. Solamente el propio **Hermann E. Ischer** conoce todos los detalles de su operación. Con cada accionamiento del gatillo principal, el cañón superior es disparado, y luego su tambor gira a contrarreloj, con el siguiente cartucho listo para dispararse. Con una rotación completa, o cuando se usa el gatillo secundario, el cuerpo principal gira después, alternando a otro tambor. -La Wallbuster es compatible con la mayor parte de cartuchos de calibre 6, aunque hay restricciones de seguridad para algunas, específicamente los cartuchos dragon's breath, flechette y dorados. Esto limita el rango de munición utilizable a sólo estos cuatro tipos: +La Wallbuster es compatible con la mayor parte de cartuchos de calibre 6, aunque hay restricciones de seguridad para algunas, específicamente los cartuchos de flechette y dorados. Esto limita el rango de munición utilizable a sólo estos cuatro tipos: \cfPerdigones Estándar:\c- Cartuchos rojos. Exactamente lo que pone. Bastante letal a corto rango, y con cierto alcance extra dada la longitud de los cañones del arma. diff --git a/modeldef.ammo b/modeldef.ammo index c02f73d18..430925494 100644 --- a/modeldef.ammo +++ b/modeldef.ammo @@ -73,43 +73,6 @@ Model "GreenShell4" FrameIndex XZW1 A 0 0 } -Model "WhiteShell" -{ - Path "models" - - Model 0 "ShellAmmo_One_d.3d" - Skin 0 "Shell_Dragon.png" - Scale 0.024 0.024 0.024 - PitchOffset 30 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "WhiteShell2" -{ - Path "models" - - Model 0 "ShellAmmo_Two_d.3d" - Skin 0 "Shell_Dragon.png" - Scale 0.024 0.024 0.024 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} -Model "WhiteShell4" -{ - Path "models" - - Model 0 "ShellAmmo_Four_d.3d" - Skin 0 "Shell_Dragon.png" - Scale 0.024 0.024 0.024 - ZOffset 16 - ROTATING - - FrameIndex XZW1 A 0 0 -} Model "BlueShell" { diff --git a/modeldef.spreadgun b/modeldef.spreadgun index 268b2fabb..3a02eed7e 100644 --- a/modeldef.spreadgun +++ b/modeldef.spreadgun @@ -26,20 +26,6 @@ Model "GreenShellCasing" ZOffset 1 FrameIndex XZW1 B 0 0 } -Model "WhiteShellCasing" -{ - Path "models" - - Model 0 "ShotShell_d.3d" - Skin 0 "Shell_Dragon_Used.png" - Scale 0.15 0.15 0.15 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 - ZOffset 1 - FrameIndex XZW1 B 0 0 -} Model "BlueShellCasing" { Path "models" @@ -208,10 +194,6 @@ Model "Spreadgun" Scale 0.08 0.08 0.08 Skin 2 "ShotgMuz.png" FrameIndex XZW0 B 2 0 - // dragon - Scale 0.12 0.12 0.12 - Skin 2 "ShotgMuz.png" - FrameIndex XZW0 C 2 0 // kinylum Scale 0.13 0.13 0.13 Skin 2 "ShotgMuzSalt.png" @@ -335,27 +317,6 @@ Model "Spreadgun" FrameIndex XZW4 Y 1 60 SurfaceSkin 1 4 "" FrameIndex XZW4 Z 1 61 - // Unload (White) - SurfaceSkin 1 4 "Shell_Dragon_Used.png" - FrameIndex XZW5 A 1 44 - FrameIndex XZW5 B 1 45 - FrameIndex XZW5 C 1 46 - FrameIndex XZW5 D 1 47 - FrameIndex XZW5 E 1 48 - FrameIndex XZW5 F 1 49 - FrameIndex XZW5 G 1 50 - FrameIndex XZW5 H 1 51 - FrameIndex XZW5 I 1 52 - FrameIndex XZW5 J 1 53 - FrameIndex XZW5 K 1 54 - FrameIndex XZW5 L 1 55 - FrameIndex XZW5 M 1 56 - FrameIndex XZW5 N 1 57 - FrameIndex XZW5 O 1 58 - FrameIndex XZW5 P 1 59 - FrameIndex XZW5 Q 1 60 - SurfaceSkin 1 4 "" - FrameIndex XZW5 R 1 61 // Unload (Blue) SurfaceSkin 1 4 "Shell_Kinylum_Used.png" FrameIndex XZW5 S 1 44 @@ -516,44 +477,6 @@ Model "Spreadgun" FrameIndex XZWA Y 1 93 FrameIndex XZWA Z 1 94 SurfaceSkin 1 4 "" - // Load (White) - SurfaceSkin 1 5 "Shell_Dragon.png" - FrameIndex XZWB A 1 62 - FrameIndex XZWB B 1 63 - FrameIndex XZWB C 1 64 - FrameIndex XZWB D 1 65 - FrameIndex XZWB E 1 66 - FrameIndex XZWB F 1 67 - FrameIndex XZWB G 1 68 - FrameIndex XZWB H 1 69 - FrameIndex XZWB I 1 70 - FrameIndex XZWB J 1 71 - FrameIndex XZWB K 1 72 - SurfaceSkin 1 5 "" - SurfaceSkin 1 4 "Shell_Dragon.png" - FrameIndex XZWB L 1 73 - FrameIndex XZWB M 1 74 - FrameIndex XZWB N 1 75 - FrameIndex XZWB O 1 76 - FrameIndex XZWB P 1 77 - FrameIndex XZWB Q 1 78 - FrameIndex XZWB R 1 79 - FrameIndex XZWB S 1 80 - FrameIndex XZWB T 1 81 - FrameIndex XZWB U 1 82 - FrameIndex XZWB V 1 83 - FrameIndex XZWB W 1 84 - FrameIndex XZWB X 1 85 - FrameIndex XZWB Y 1 86 - FrameIndex XZWB Z 1 87 - FrameIndex XZWC A 1 88 - FrameIndex XZWC B 1 89 - FrameIndex XZWC C 1 90 - FrameIndex XZWC D 1 91 - FrameIndex XZWC E 1 92 - FrameIndex XZWC F 1 93 - FrameIndex XZWC G 1 94 - SurfaceSkin 1 4 "" // Load (Blue) SurfaceSkin 1 5 "Shell_Kinylum.png" FrameIndex XZWC H 1 62 @@ -833,27 +756,6 @@ Model "Spreadgun" FrameIndex XZWL R 1 196 SurfaceSkin 1 4 "" FrameIndex XZWL S 1 197 - // Unload (White) - SurfaceSkin 1 4 "Shell_Dragon.png" - FrameIndex XZWL T 1 180 - FrameIndex XZWL U 1 181 - FrameIndex XZWL V 1 182 - FrameIndex XZWL W 1 183 - FrameIndex XZWL X 1 184 - FrameIndex XZWL Y 1 185 - FrameIndex XZWL Z 1 186 - FrameIndex XZWM A 1 187 - FrameIndex XZWM B 1 188 - FrameIndex XZWM C 1 189 - FrameIndex XZWM D 1 190 - FrameIndex XZWM E 1 191 - FrameIndex XZWM F 1 192 - FrameIndex XZWM G 1 193 - FrameIndex XZWM H 1 194 - FrameIndex XZWM I 1 195 - FrameIndex XZWM J 1 196 - SurfaceSkin 1 4 "" - FrameIndex XZWM K 1 197 // Unload (Blue) SurfaceSkin 1 4 "Shell_Kinylum.png" FrameIndex XZWM L 1 180 @@ -1014,46 +916,6 @@ Model "Spreadgun" FrameIndex XZWR R 1 229 FrameIndex XZWR S 1 230 SurfaceSkin 1 4 "" - // Load (White) - SurfaceSkin 1 5 "Shell_Dragon.png" - FrameIndex XZWR T 1 198 - FrameIndex XZWR U 1 199 - FrameIndex XZWR V 1 200 - FrameIndex XZWR W 1 201 - FrameIndex XZWR X 1 202 - FrameIndex XZWR Y 1 203 - FrameIndex XZWR Z 1 204 - FrameIndex XZWS A 1 205 - FrameIndex XZWS B 1 206 - FrameIndex XZWS C 1 207 - FrameIndex XZWS D 1 208 - SurfaceSkin 1 5 "" - SurfaceSkin 1 4 "Shell_Dragon.png" - FrameIndex XZWS E 1 209 - FrameIndex XZWS F 1 210 - FrameIndex XZWS G 1 211 - FrameIndex XZWS H 1 212 - FrameIndex XZWS I 1 213 - FrameIndex XZWS J 1 214 - FrameIndex XZWS K 1 215 - FrameIndex XZWS L 1 216 - FrameIndex XZWS M 1 217 - FrameIndex XZWS N 1 218 - FrameIndex XZWS O 1 219 - FrameIndex XZWS P 1 220 - FrameIndex XZWS Q 1 221 - FrameIndex XZWS R 1 222 - SurfaceSkin 1 5 "" - SurfaceSkin 1 4 "Shell_Gold.png" - FrameIndex XZWS S 1 223 - FrameIndex XZWS T 1 224 - FrameIndex XZWS U 1 225 - FrameIndex XZWS V 1 226 - FrameIndex XZWS W 1 227 - FrameIndex XZWS X 1 228 - FrameIndex XZWS Y 1 229 - FrameIndex XZWS Z 1 230 - SurfaceSkin 1 4 "" // Load (Blue) SurfaceSkin 1 5 "Shell_Kinylum.png" FrameIndex XZWT A 1 198 diff --git a/models/Shell_Dragon.png b/models/Shell_Dragon.png deleted file mode 100644 index 03bbc7481..000000000 Binary files a/models/Shell_Dragon.png and /dev/null differ diff --git a/models/Shell_Dragon_Used.png b/models/Shell_Dragon_Used.png deleted file mode 100644 index 98a7f7b89..000000000 Binary files a/models/Shell_Dragon_Used.png and /dev/null differ diff --git a/sndinfo.txt b/sndinfo.txt index ffffc3bc7..a1b2e3ebb 100644 --- a/sndinfo.txt +++ b/sndinfo.txt @@ -918,9 +918,6 @@ spreadgun/greenfire1 sounds/spreadgun/spread_greenfire1.ogg spreadgun/greenfire2 sounds/spreadgun/spread_greenfire2.ogg $random spreadgun/greenfire { spreadgun/greenfire1 spreadgun/greenfire2 } $limit spreadgun/greenfire 16 -spreadgun/whitefire1 sounds/spreadgun/spread_whitefire1.ogg -spreadgun/whitefire2 sounds/spreadgun/spread_whitefire2.ogg -$random spreadgun/whitefire { spreadgun/whitefire1 spreadgun/whitefire2 } spreadgun/bluefire1 sounds/spreadgun/spread_bluefire1.ogg spreadgun/bluefire2 sounds/spreadgun/spread_bluefire2.ogg $random spreadgun/bluefire { spreadgun/bluefire1 spreadgun/bluefire2 } diff --git a/sounds/spreadgun/spread_whitefire1.ogg b/sounds/spreadgun/spread_whitefire1.ogg deleted file mode 100644 index 5127c8659..000000000 Binary files a/sounds/spreadgun/spread_whitefire1.ogg and /dev/null differ diff --git a/sounds/spreadgun/spread_whitefire2.ogg b/sounds/spreadgun/spread_whitefire2.ogg deleted file mode 100644 index d7b8b9b94..000000000 Binary files a/sounds/spreadgun/spread_whitefire2.ogg and /dev/null differ diff --git a/zscript.txt b/zscript.txt index 09aa3a473..1ee455cbb 100644 --- a/zscript.txt +++ b/zscript.txt @@ -122,8 +122,8 @@ version "4.8" #include "zscript/weapons/swwm_tastytreat_fx.zsc" #include "zscript/weapons/swwm_deathlydeathcannon.zsc" #include "zscript/weapons/swwm_deathlydeathcannon_fx.zsc" -#include "zscript/weapons/swwm_hud_weapons.zsc" -#include "zscript/weapons/swwm_althud_weapons.zsc" +#include "zscript/weapons/swwm_weapons_hud.zsc" +#include "zscript/weapons/swwm_weapons_althud.zsc" // monsters #include "zscript/swwm_monsters.zsc" // DLC1 - Weapon Set @@ -148,8 +148,8 @@ version "4.8" #include "zscript/dlc1/swwm_thiccbolts_fx.zsc" #include "zscript/dlc1/swwm_ultimate.zsc" #include "zscript/dlc1/swwm_ultimate_fx.zsc" -#include "zscript/dlc1/swwm_hud_weapons_dlc.zsc" -#include "zscript/dlc1/swwm_althud_weapons_dlc.zsc" +#include "zscript/dlc1/swwm_dlcweapons_hud.zsc" +#include "zscript/dlc1/swwm_dlcweapons_althud.zsc" // DLC2 - Game Set #include "zscript/dlc2/swwm_demoland.zsc" #include "zscript/dlc2/swwm_demoshmup.zsc" diff --git a/zscript/dlc1/swwm_althud_weapons_dlc.zsc b/zscript/dlc1/swwm_dlcweapons_althud.zsc similarity index 100% rename from zscript/dlc1/swwm_althud_weapons_dlc.zsc rename to zscript/dlc1/swwm_dlcweapons_althud.zsc diff --git a/zscript/dlc1/swwm_hud_weapons_dlc.zsc b/zscript/dlc1/swwm_dlcweapons_hud.zsc similarity index 100% rename from zscript/dlc1/swwm_hud_weapons_dlc.zsc rename to zscript/dlc1/swwm_dlcweapons_hud.zsc diff --git a/zscript/hud/swwm_althud.zsc b/zscript/hud/swwm_althud.zsc index 8198b0caa..4c56ba747 100644 --- a/zscript/hud/swwm_althud.zsc +++ b/zscript/hud/swwm_althud.zsc @@ -57,12 +57,12 @@ extend Class SWWMStatusBar int tclabel, tcvalue, tcextra, tccompl, tcsucks; String tclabel_s, tcextra_s; - int AmmoFlash[27]; // flash when new ammo is received - int AmmoOldAmounts[27]; // to detect when to flash - int AmmoMaxFlash[27]; // flash when ammo max amount changes - int AmmoOldMaxAmounts[27]; // to detect when to flash - Class AmmoSlots[27]; // ammo type on each slot - String AmmoNames[27]; // ammo 4-letter names + int AmmoFlash[26]; // flash when new ammo is received + int AmmoOldAmounts[26]; // to detect when to flash + int AmmoMaxFlash[26]; // flash when ammo max amount changes + int AmmoOldMaxAmounts[26]; // to detect when to flash + Class AmmoSlots[26]; // ammo type on each slot + String AmmoNames[26]; // ammo 4-letter names int HealthFlash; // flash when healing int LastHealth; // to detect when to flash int LagHealth[10]; // for delayed decay bar @@ -107,7 +107,7 @@ extend Class SWWMStatusBar for ( int i=9; i>0; i-- ) LagHealth[i] = LagHealth[i-1]; // ammo updates - for ( int i=0; i<27; i++ ) + for ( int i=0; i<26; i++ ) { let a = SWWMAmmo(CPlayer.mo.FindInventory(AmmoSlots[i])); int amt = 0; @@ -281,63 +281,60 @@ extend Class SWWMStatusBar for ( int i=0; i<10; i++ ) LagHealth[i] = LastHealth; AmmoSlots[0] = 'RedShell'; AmmoSlots[1] = 'GreenShell'; - AmmoSlots[2] = 'WhiteShell'; - AmmoSlots[3] = 'BlueShell'; + AmmoSlots[2] = 'BlueShell'; + AmmoSlots[3] = 'PurpleShell'; AmmoSlots[4] = 'BlackShell'; - AmmoSlots[5] = 'PurpleShell'; - AmmoSlots[6] = 'GoldShell'; - AmmoSlots[7] = 'SMW05Ammo'; - AmmoSlots[8] = 'EvisceratorShell'; - AmmoSlots[9] = 'SheenAmmo'; - AmmoSlots[10] = 'HellblazerMissiles'; - AmmoSlots[11] = 'HellblazerCrackshots'; - AmmoSlots[12] = 'HellblazerRavagers'; - AmmoSlots[13] = 'HellblazerWarheads'; - AmmoSlots[14] = 'QuadravolAmmo'; - AmmoSlots[15] = 'SparkUnit'; - AmmoSlots[16] = 'SparksterBAmmo'; - AmmoSlots[17] = 'SparksterRAmmo'; - AmmoSlots[18] = 'SilverBulletAmmo'; - AmmoSlots[19] = 'SilverBulletAmmo2'; - AmmoSlots[20] = 'RayAmmo'; - AmmoSlots[21] = 'CandyGunAmmo'; - AmmoSlots[22] = 'CandyGunSpares'; - AmmoSlots[23] = 'MisterAmmo'; - AmmoSlots[24] = 'MisterGAmmo'; - AmmoSlots[25] = 'YnykronAmmo'; - AmmoSlots[26] = 'UltimateAmmo'; + AmmoSlots[5] = 'GoldShell'; + AmmoSlots[6] = 'SMW05Ammo'; + AmmoSlots[7] = 'EvisceratorShell'; + AmmoSlots[8] = 'SheenAmmo'; + AmmoSlots[9] = 'HellblazerMissiles'; + AmmoSlots[10] = 'HellblazerCrackshots'; + AmmoSlots[11] = 'HellblazerRavagers'; + AmmoSlots[12] = 'HellblazerWarheads'; + AmmoSlots[13] = 'QuadravolAmmo'; + AmmoSlots[14] = 'SparkUnit'; + AmmoSlots[15] = 'SparksterBAmmo'; + AmmoSlots[16] = 'SparksterRAmmo'; + AmmoSlots[17] = 'SilverBulletAmmo'; + AmmoSlots[18] = 'SilverBulletAmmo2'; + AmmoSlots[19] = 'RayAmmo'; + AmmoSlots[20] = 'CandyGunAmmo'; + AmmoSlots[21] = 'CandyGunSpares'; + AmmoSlots[22] = 'MisterAmmo'; + AmmoSlots[23] = 'MisterGAmmo'; + AmmoSlots[24] = 'YnykronAmmo'; + AmmoSlots[25] = 'UltimateAmmo'; AmmoNames[0] = "SHOT"; AmmoNames[1] = "SLUG"; - AmmoNames[2] = "DRGN"; - AmmoNames[3] = "SALT"; + AmmoNames[2] = "SALT"; + AmmoNames[3] = "BALL"; AmmoNames[4] = "FLCH"; - AmmoNames[5] = "BALL"; - AmmoNames[6] = "GOLD"; - AmmoNames[7] = "SCRW"; - AmmoNames[8] = "FLAK"; - AmmoNames[9] = "MACH"; - AmmoNames[10] = "RCKT"; - AmmoNames[11] = "CLUS"; - AmmoNames[12] = "RAVG"; - AmmoNames[13] = "WARH"; - AmmoNames[14] = "QUAD"; - AmmoNames[15] = "BSPK"; - AmmoNames[16] = "KINY"; - AmmoNames[17] = "NOKR"; - AmmoNames[18] = "RIFL"; - AmmoNames[19] = "CHOD"; - AmmoNames[20] = "BOLT"; - AmmoNames[21] = "CAND"; - AmmoNames[22] = "CGUN"; - AmmoNames[23] = "MSTR"; - AmmoNames[24] = "MGRN"; - AmmoNames[25] = "CRYS"; - AmmoNames[26] = "ULTI"; - for ( int i=0; i<27; i++ ) + AmmoNames[5] = "GOLD"; + AmmoNames[6] = "SCRW"; + AmmoNames[7] = "FLAK"; + AmmoNames[8] = "MACH"; + AmmoNames[9] = "RCKT"; + AmmoNames[10] = "CLUS"; + AmmoNames[11] = "RAVG"; + AmmoNames[12] = "WARH"; + AmmoNames[13] = "QUAD"; + AmmoNames[14] = "BSPK"; + AmmoNames[15] = "KINY"; + AmmoNames[16] = "NOKR"; + AmmoNames[17] = "RIFL"; + AmmoNames[18] = "CHOD"; + AmmoNames[19] = "BOLT"; + AmmoNames[20] = "CAND"; + AmmoNames[21] = "CGUN"; + AmmoNames[22] = "MSTR"; + AmmoNames[23] = "MGRN"; + AmmoNames[24] = "CRYS"; + AmmoNames[25] = "ULTI"; + for ( int i=0; i<26; i++ ) { AmmoFlash[i] = 0; AmmoOldAmounts[i] = int.min; - if ( i >= 8 ) break; AmmoMaxFlash[i] = 0; AmmoOldMaxAmounts[i] = int.min; } @@ -588,7 +585,7 @@ extend Class SWWMStatusBar Screen.DrawTexture(AltAmmoTex[2],false,xx,yy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); String str; bool drewammo = false; - for ( int i=0; i<27; i++ ) + for ( int i=0; i<26; i++ ) { let a = AmmoSlots[i]; let cur = Ammo(CPlayer.mo.FindInventory(a)); diff --git a/zscript/items/swwm_ammoitems.zsc b/zscript/items/swwm_ammoitems.zsc index 430c70d10..05bb34e21 100644 --- a/zscript/items/swwm_ammoitems.zsc +++ b/zscript/items/swwm_ammoitems.zsc @@ -17,7 +17,7 @@ Class RedShell : SWWMAmmo Inventory.Amount 1; Inventory.MaxAmount 30; Ammo.BackpackAmount 3; - Ammo.BackpackMaxAmount 50; + Ammo.BackpackMaxAmount 60; Ammo.DropAmount 1; +FLOATBOB; FloatBobStrength 0.25; @@ -72,7 +72,7 @@ Class GreenShell : SWWMAmmo Inventory.Amount 1; Inventory.MaxAmount 25; Ammo.BackpackAmount 2; - Ammo.BackpackMaxAmount 45; + Ammo.BackpackMaxAmount 50; Ammo.DropAmount 1; +FLOATBOB; FloatBobStrength 0.25; @@ -112,60 +112,6 @@ Class GreenShell4 : GreenShell } } -Class WhiteShell : SWWMAmmo -{ - Default - { - //$Title 1x White Shells - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_ShellsDragon.png - //$Icon ammo - Tag "$T_WHITESHELL"; - SWWMAmmo.PickupTag "WHITESHELL"; - Stamina 1000; - Inventory.Icon "graphics/HUD/Icons/A_ShellsDragon.png"; - Inventory.Amount 1; - Inventory.MaxAmount 10; - Ammo.BackpackAmount 0; - Ammo.BackpackMaxAmount 30; - Ammo.DropAmount 1; - +FLOATBOB; - FloatBobStrength 0.25; - Radius 4; - Accuracy 70; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} -Class WhiteShell2 : WhiteShell -{ - Default - { - //$Title 2x White Shells - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_ShellsDragon.png - //$Icon ammo - Inventory.Amount 2; - Radius 6; - } -} -Class WhiteShell4 : WhiteShell -{ - Default - { - //$Title 3x White Shells - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_ShellsDragon.png - //$Icon ammo - Inventory.Amount 4; - Radius 6; - } -} - Class BlueShell : SWWMAmmo { Default @@ -176,12 +122,12 @@ Class BlueShell : SWWMAmmo //$Icon ammo Tag "$T_BLUESHELL"; SWWMAmmo.PickupTag "BLUESHELL"; - Stamina 2500; + Stamina 1500; Inventory.Icon "graphics/HUD/Icons/A_ShellsKinylum.png"; Inventory.Amount 1; - Inventory.MaxAmount 15; + Inventory.MaxAmount 20; Ammo.BackpackAmount 1; - Ammo.BackpackMaxAmount 35; + Ammo.BackpackMaxAmount 40; Ammo.DropAmount 1; +FLOATBOB; FloatBobStrength 0.25; @@ -221,61 +167,6 @@ Class BlueShell4 : BlueShell } } -Class BlackShell : SWWMAmmo -{ - Default - { - //$Title 1x Black Shells - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_ShellsFuck.png - //$Icon ammo - Tag "$T_BLACKSHELL"; - SWWMAmmo.PickupTag "BLACKSHELL"; - Stamina 4000; - Inventory.Icon "graphics/HUD/Icons/A_ShellsFuck.png"; - Inventory.Amount 1; - Inventory.MaxAmount 5; - Ammo.BackpackAmount 0; - Ammo.BackpackMaxAmount 25; - Ammo.DropAmount 1; - +FLOATBOB; - FloatBobStrength 0.25; - Radius 4; - Height 20; - Accuracy 75; - } - States - { - Spawn: - XZW1 A -1; - Stop; - } -} -Class BlackShell2 : BlackShell -{ - Default - { - //$Title 2x Black Shells - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_ShellsFuck.png - //$Icon ammo - Inventory.Amount 2; - Radius 6; - } -} -Class BlackShell4 : BlackShell -{ - Default - { - //$Title 4x Black Shells - //$Group Ammo - //$Sprite graphics/HUD/Icons/A_ShellsFuck.png - //$Icon ammo - Inventory.Amount 4; - Radius 6; - } -} - Class PurpleShell : SWWMAmmo { Default @@ -286,12 +177,12 @@ Class PurpleShell : SWWMAmmo //$Icon ammo Tag "$T_PURPLESHELL"; SWWMAmmo.PickupTag "PURPLESHELL"; - Stamina 1500; + Stamina 2500; Inventory.Icon "graphics/HUD/Icons/A_ShellsBall.png"; Inventory.Amount 1; - Inventory.MaxAmount 20; + Inventory.MaxAmount 15; Ammo.BackpackAmount 1; - Ammo.BackpackMaxAmount 40; + Ammo.BackpackMaxAmount 30; Ammo.DropAmount 1; +FLOATBOB; FloatBobStrength 0.25; @@ -331,6 +222,61 @@ Class PurpleShell4 : PurpleShell } } +Class BlackShell : SWWMAmmo +{ + Default + { + //$Title 1x Black Shells + //$Group Ammo + //$Sprite graphics/HUD/Icons/A_ShellsFuck.png + //$Icon ammo + Tag "$T_BLACKSHELL"; + SWWMAmmo.PickupTag "BLACKSHELL"; + Stamina 4000; + Inventory.Icon "graphics/HUD/Icons/A_ShellsFuck.png"; + Inventory.Amount 1; + Inventory.MaxAmount 10; + Ammo.BackpackAmount 0; + Ammo.BackpackMaxAmount 20; + Ammo.DropAmount 1; + +FLOATBOB; + FloatBobStrength 0.25; + Radius 4; + Height 20; + Accuracy 75; + } + States + { + Spawn: + XZW1 A -1; + Stop; + } +} +Class BlackShell2 : BlackShell +{ + Default + { + //$Title 2x Black Shells + //$Group Ammo + //$Sprite graphics/HUD/Icons/A_ShellsFuck.png + //$Icon ammo + Inventory.Amount 2; + Radius 6; + } +} +Class BlackShell4 : BlackShell +{ + Default + { + //$Title 4x Black Shells + //$Group Ammo + //$Sprite graphics/HUD/Icons/A_ShellsFuck.png + //$Icon ammo + Inventory.Amount 4; + Radius 6; + } +} + Class GoldShellSparkle : Actor { override void PostBeginPlay() @@ -529,7 +475,7 @@ Class HellblazerMissiles : SWWMAmmo Inventory.Amount 1; Inventory.MaxAmount 18; Ammo.BackpackAmount 2; - Ammo.BackpackMaxAmount 36; + Ammo.BackpackMaxAmount 48; Ammo.DropAmount 1; +FLOATBOB; FloatBobStrength 0.25; @@ -755,7 +701,7 @@ Class SparkUnit : SWWMAmmo Inventory.Amount 1; Inventory.MaxAmount 8; Ammo.BackpackAmount 1; - Ammo.BackpackMaxAmount 24; + Ammo.BackpackMaxAmount 20; Ammo.DropAmount 1; +FLOATBOB; FloatBobStrength 0.25; diff --git a/zscript/items/swwm_ammospawn.zsc b/zscript/items/swwm_ammospawn.zsc index fa68d26fb..0d13879c0 100644 --- a/zscript/items/swwm_ammospawn.zsc +++ b/zscript/items/swwm_ammospawn.zsc @@ -63,10 +63,10 @@ Class SWWMShellAmmoSmall : SWWMAmmoSpawner return 'GreenShell'; case 6: case 7: - return 'PurpleShell'; + return 'BlueShell'; } // case 8-9 - return 'BlueShell'; + return 'PurpleShell'; } } Class SWWMShellAmmoBig : SWWMAmmoSpawner @@ -77,7 +77,7 @@ Class SWWMShellAmmoBig : SWWMAmmoSpawner { if ( Random[Replacements](0,1) && (notondemand || SWWMUtility.ItemExists('PuntzerBeta') || SWWMUtility.ItemExists('PuntzerGamma')) ) return Random[Replacements](0,2)?'SMW05SmallAmmo':'SMW05BigAmmo'; - switch( Random[Replacements](0,17) ) + switch( Random[Replacements](0,14) ) { case 0: case 1: @@ -92,16 +92,12 @@ Class SWWMShellAmmoBig : SWWMAmmoSpawner case 8: case 9: case 10: - return 'PurpleShell'; + return 'BlueShell'; case 11: case 12: - case 13: - return 'BlueShell'; - case 14: - case 15: - return 'WhiteShell'; + return 'PurpleShell'; } - // case 16-17 + // case 13-14 return 'BlackShell'; } } diff --git a/zscript/items/swwm_armor.zsc b/zscript/items/swwm_armor.zsc index 38da632f8..7d2b13571 100644 --- a/zscript/items/swwm_armor.zsc +++ b/zscript/items/swwm_armor.zsc @@ -19,11 +19,24 @@ Class ArmorNugget : SWWMArmor } Class ArmorNuggetItem : SWWMSpareArmor { - override Inventory CreateCopy( Actor other ) + override bool Use( bool pickup ) { // additional lore - SWWMLoreLibrary.Add(other.player,"Nugget"); - return Super.CreateCopy(other); + SWWMLoreLibrary.Add(Owner.player,"Nugget"); + bool bUsed = Super.Use(pickup); + // sell excess + if ( !bUsed ) + { + int sellprice = int(abs(Stamina)*.5); + SWWMScoreObj.Spawn(sellprice,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2)); + SWWMCredits.Give(Owner.player,sellprice); + if ( Owner.player ) + { + if ( Owner.player == players[consoleplayer] ) Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(self)?"$SWWM_SELLEXTRA_FEM":"$SWWM_SELLEXTRA"),GetTag(),sellprice); + else Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(self)?"$SWWM_SELLEXTRAREM_FEM":"$SWWM_SELLEXTRAREM"),Owner.player.GetUserName(),GetTag(),sellprice); + } + } + return bUsed; } override void DoPickupSpecial( Actor toucher ) @@ -40,13 +53,13 @@ Class ArmorNuggetItem : SWWMSpareArmor //$Icon armour Tag "$T_NUGGETA"; Stamina 400; - Inventory.Icon "graphics/HUD/Icons/I_ArmorNugget.png"; Inventory.PickupMessage "$T_NUGGETA"; - Inventory.MaxAmount 20; - Inventory.InterHubAmount 20; + Inventory.MaxAmount 0; + Inventory.InterHubAmount 0; Inventory.UseSound "misc/armor_pkup"; SWWMSpareArmor.GiveArmor "ArmorNugget"; +INVENTORY.ALWAYSPICKUP; + -INVENTORY.INVBAR; Radius 4; Height 22; } diff --git a/zscript/items/swwm_funstuff.zsc b/zscript/items/swwm_funstuff.zsc index 21092e677..874add639 100644 --- a/zscript/items/swwm_funstuff.zsc +++ b/zscript/items/swwm_funstuff.zsc @@ -970,9 +970,8 @@ Class Chancebox : Actor else if ( Random[Chancebox](0,1) ) { Class vipammodrop = null; - if ( SWWMUtility.ItemExists("Ynykron") && Random[Chancebox](0,1) ) vipammodrop = "YnykronAmmo"; - //if ( SWWMUtility.ItemExists("GrandLance") && Random[Chancebox](0,1) && !vipammodrop ) vipammodrop = "GrandAmmo"; - //if ( SWWMUtility.ItemExists("RafanKos") && Random[Chancebox](0,1) && !vipammodrop ) vipammodrop = "UltimateAmmo"; + if ( SWWMUtility.ItemExists("Ynykron") && SWWMUtility.CheckNeedsItem("YnykronAmmo",true) && Random[Chancebox](0,1) ) vipammodrop = "YnykronAmmo"; + if ( SWWMUtility.ItemExists("RafanKos") && SWWMUtility.CheckNeedsItem("UltimateAmmo",true) && Random[Chancebox](0,1) && !vipammodrop ) vipammodrop = "UltimateAmmo"; if ( SWWMUtility.ItemExists("Spreadgun") && SWWMUtility.CheckNeedsItem("GoldShell",true) && !vipammodrop ) vipammodrop = "GoldShell"; Class vipitemdrop = null; if ( SWWMUtility.CheckNeedsItem("Mykradvo",true) && !SWWMUtility.ItemExists("Mykradvo",worldonly:true) && Random[Chancebox](0,1) ) vipitemdrop = "Mykradvo"; @@ -1051,21 +1050,13 @@ Class Chancebox : Actor a.bDROPPED = false; a.bNOGRAVITY = false; a.vel.z = FRandom[Chancebox](2,4); - for ( int i=0; i<3; i++ ) - { - a = Spawn("WhiteShell",pos); - a.bDROPPED = false; - a.bNOGRAVITY = false; - a.vel.z = FRandom[Chancebox](2,4); - a.vel.xy = (cos(i*120),sin(i*120))*FRandom[Chancebox](1,2); - } for ( int i=0; i<8; i++ ) { a = Spawn((i%2)?"PurpleShell":"BlueShell",pos); a.bDROPPED = false; a.bNOGRAVITY = false; a.vel.z = FRandom[Chancebox](2,4); - a.vel.xy = (cos(i*72),sin(i*72))*FRandom[Chancebox](3,4); + a.vel.xy = (cos(i*72),sin(i*72))*FRandom[Chancebox](2,3); } for ( int i=0; i<12; i++ ) { @@ -1073,7 +1064,7 @@ Class Chancebox : Actor a.bDROPPED = false; a.bNOGRAVITY = false; a.vel.z = FRandom[Chancebox](2,4); - a.vel.xy = (cos(i*30),sin(i*30))*FRandom[Chancebox](5,6); + a.vel.xy = (cos(i*30),sin(i*30))*FRandom[Chancebox](4,5); } } else if ( Random[Chancebox](0,1) ) diff --git a/zscript/items/swwm_health.zsc b/zscript/items/swwm_health.zsc index 30940f31f..e456f8b85 100644 --- a/zscript/items/swwm_health.zsc +++ b/zscript/items/swwm_health.zsc @@ -65,11 +65,24 @@ Class RefresherRegen : Powerup Class HealthNuggetItem : SWWMHealth { - override Inventory CreateCopy( Actor other ) + override bool Use( bool pickup ) { // additional lore - SWWMLoreLibrary.Add(other.player,"Nugget"); - return Super.CreateCopy(other); + SWWMLoreLibrary.Add(Owner.player,"Nugget"); + bool bUsed = Super.Use(pickup); + // sell excess + if ( !bUsed ) + { + int sellprice = int(abs(Stamina)*.5); + SWWMScoreObj.Spawn(sellprice,Owner.Vec3Offset(FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8),FRandom[ScoreBits](-8,8)+Owner.Height/2)); + SWWMCredits.Give(Owner.player,sellprice); + if ( Owner.player ) + { + if ( Owner.player == players[consoleplayer] ) Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(self)?"$SWWM_SELLEXTRA_FEM":"$SWWM_SELLEXTRA"),GetTag(),sellprice); + else Console.Printf(StringTable.Localize(SWWMUtility.SellFemaleItem(self)?"$SWWM_SELLEXTRAREM_FEM":"$SWWM_SELLEXTRAREM"),Owner.player.GetUserName(),GetTag(),sellprice); + } + } + return bUsed; } override void DoPickupSpecial( Actor toucher ) { @@ -84,12 +97,12 @@ Class HealthNuggetItem : SWWMHealth //$Icon health Tag "$T_NUGGETH"; Stamina 200; - Inventory.Icon "graphics/HUD/Icons/I_HealthNugget.png"; Inventory.PickupMessage "$T_NUGGETH"; - Inventory.MaxAmount 20; - Inventory.InterHubAmount 20; + Inventory.MaxAmount 0; + Inventory.InterHubAmount 0; SWWMHealth.GiveHealth "HealthNugget"; +INVENTORY.ALWAYSPICKUP; + -INVENTORY.INVBAR; Radius 4; Height 22; } diff --git a/zscript/kbase/swwm_kbasetab_store.zsc b/zscript/kbase/swwm_kbasetab_store.zsc index 62f27f3d5..65e65aa3e 100644 --- a/zscript/kbase/swwm_kbasetab_store.zsc +++ b/zscript/kbase/swwm_kbasetab_store.zsc @@ -107,6 +107,9 @@ Class DemolitionistStoreTab : DemolitionistMenuTab { // skip maxed items if buying if ( cur && (cur.Amount >= cur.MaxAmount) ) return true; + // nuggets are skipped if more can't be picked up + if ( (type is 'HealthNuggetItem') && (players[consoleplayer].Health >= GetDefaultByType('HealthNugget').MaxAmount) ) return true; + if ( (type is 'ArmorNuggetItem') && (players[consoleplayer].mo.CountInv('ArmorNugget') >= GetDefaultByType('ArmorNugget').MaxAmount) ) return true; // ignore ammo for weapons not owned if buying bool notownedammo = false; if ( type is 'Ammo' ) @@ -600,7 +603,7 @@ Class DemolitionistMenuStoreItem : DemolitionistMenuListItem camt = 0; max = GetDefaultByType(inv).MaxAmount; } - if ( camt >= max ) + if ( (max > 0) && (camt >= max) ) { master.MenuSound("menu/noinvuse"); master.tmsg = StringTable.Localize("$SWWM_STOREFULL"); diff --git a/zscript/swwm_thinkers_player.zsc b/zscript/swwm_thinkers_player.zsc index bfdc2393e..44f00703b 100644 --- a/zscript/swwm_thinkers_player.zsc +++ b/zscript/swwm_thinkers_player.zsc @@ -165,7 +165,7 @@ Class SWWMStats : SWWMStaticThinker // properly credit some projectiles to their respective gun else if ( inflictor is 'AirBullet' ) which = 'DeepImpact'; else if ( (inflictor is 'ExplodiumMagArm') || (inflictor is 'ExplodiumMagProj') || (inflictor is 'ExplodiumBulletImpact') ) which = 'ExplodiumGun'; - else if ( (inflictor is 'DragonBreathArm') || ((inflictor is 'SaltImpact') && !inflictor.Args[0]) || ((inflictor is 'SaltBeam') && !inflictor.Args[1]) || (inflictor is 'CorrodeDebuff') || (inflictor is 'CorrosiveFlechette') || ((inflictor is 'TheBall') && !inflictor.special1) || (inflictor is 'GoldenImpact') || (inflictor is 'GoldenSubImpact') || (inflictor is 'GoldenSubSubImpact') ) which = 'Spreadgun'; + else if ( ((inflictor is 'SaltImpact') && !inflictor.Args[0]) || ((inflictor is 'SaltBeam') && !inflictor.Args[1]) || (inflictor is 'CorrodeDebuff') || (inflictor is 'CorrosiveFlechette') || ((inflictor is 'TheBall') && !inflictor.special1) || (inflictor is 'GoldenImpact') || (inflictor is 'GoldenSubImpact') || (inflictor is 'GoldenSubSubImpact') ) which = 'Spreadgun'; else if ( ((inflictor is 'SaltImpact') && inflictor.Args[0]) || ((inflictor is 'SaltBeam') && inflictor.Args[1]) || ((inflictor is 'TheBall') && inflictor.special1) ) which = 'Wallbuster'; else if ( (inflictor is 'EvisceratorChunk') || (inflictor is 'EvisceratorProj') ) which = 'Eviscerator'; else if ( (inflictor is 'HellblazerMissile') || (inflictor is 'HellblazerRavagerArm') || (inflictor is 'HellblazerWarheadArm') ) which = 'Hellblazer'; diff --git a/zscript/weapons/swwm_shot.zsc b/zscript/weapons/swwm_shot.zsc index b8cfbefeb..09135ca28 100644 --- a/zscript/weapons/swwm_shot.zsc +++ b/zscript/weapons/swwm_shot.zsc @@ -146,28 +146,27 @@ Class Spreadgun : SWWMWeapon { if ( loadammo is 'RedShell' ) return StringTable.Localize("$O_SPREADGUN_RED"); if ( loadammo is 'GreenShell' ) return StringTable.Localize("$O_SPREADGUN_GREEN"); - if ( loadammo is 'WhiteShell' ) return StringTable.Localize("$O_SPREADGUN_WHITE"); if ( loadammo is 'BlueShell' ) return StringTable.Localize("$O_SPREADGUN_BLUE"); - if ( loadammo is 'BlackShell' ) return StringTable.Localize("$O_SPREADGUN_BLACK"); if ( loadammo is 'PurpleShell' ) return StringTable.Localize("$O_SPREADGUN_PURPLE"); + if ( loadammo is 'BlackShell' ) return StringTable.Localize("$O_SPREADGUN_BLACK"); if ( loadammo is 'GoldShell' ) return StringTable.Localize("$O_SPREADGUN_GOLD"); return Super.GetObituary(victim,inflictor,mod,playerattack); } override bool ReportHUDAmmo() { - static const Class types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"}; - for ( int i=0; i<7; i++ ) if ( Owner.CountInv(types[i]) > 0 ) return true; + static const Class types[] = {"RedShell","GreenShell","BlueShell","PurpleShell","BlackShell","GoldShell"}; + for ( int i=0; i<6; i++ ) if ( Owner.CountInv(types[i]) > 0 ) return true; return (!fired && chambered); } override bool CheckAmmo( int firemode, bool autoswitch, bool requireammo, int ammocount ) { - static const Class types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"}; + static const Class types[] = {"RedShell","GreenShell","BlueShell","PurpleShell","BlackShell","GoldShell"}; if ( (firemode == PrimaryFire) || (firemode == AltFire) ) { if ( !fired && chambered ) return true; - for ( int i=0; i<7; i++ ) if ( Owner.CountInv(types[i]) > 0 ) return true; + for ( int i=0; i<6; i++ ) if ( Owner.CountInv(types[i]) > 0 ) return true; return false; } return Super.CheckAmmo(firemode,autoswitch,requireammo,ammocount); @@ -175,8 +174,8 @@ Class Spreadgun : SWWMWeapon override bool UsesAmmo( Class kind ) { - static const Class types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"}; - for ( int i=0; i<7; i++ ) if ( kind is types[i] ) return true; + static const Class types[] = {"RedShell","GreenShell","BlueShell","PurpleShell","BlackShell","GoldShell"}; + for ( int i=0; i<6; i++ ) if ( kind is types[i] ) return true; return false; } @@ -187,11 +186,11 @@ Class Spreadgun : SWWMWeapon action void A_SelectUnloadState() { - static const Class types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"}; - static const statelabel primedstates[] = {"UnloadRed", "UnloadGreen", "UnloadWhite", "UnloadBlue", "UnloadBlack", "UnloadPurple", "UnloadGold"}; - static const statelabel firedstates[] = {"UnloadRedFired", "UnloadGreenFired", "UnloadWhiteFired", "UnloadBlueFired", "UnloadBlackFired", "UnloadPurpleFired", "UnloadGoldFired"}; + static const Class types[] = {"RedShell","GreenShell","BlueShell","PurpleShell","BlackShell","GoldShell"}; + static const statelabel primedstates[] = {"UnloadRed", "UnloadGreen", "UnloadBlue", "UnloadPurple", "UnloadBlack", "UnloadGold"}; + static const statelabel firedstates[] = {"UnloadRedFired", "UnloadGreenFired", "UnloadBlueFired", "UnloadPurpleFired", "UnloadBlackFired", "UnloadGoldFired"}; int amidx = 0; - for ( int i=0; i<7; i++ ) + for ( int i=0; i<6; i++ ) { if ( invoker.loadammo != types[i] ) continue; amidx = i; @@ -207,11 +206,11 @@ Class Spreadgun : SWWMWeapon action void A_SelectLoadState() { - static const Class types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"}; - static const statelabel primedstates[] = {"LoadRed", "LoadGreen", "LoadWhite", "LoadBlue", "LoadBlack", "LoadPurple", "LoadGold"}; - static const statelabel firedstates[] = {"LoadRedFired", "LoadGreenFired", "LoadWhiteFired", "LoadBlueFired", "LoadBlackFired", "LoadPurpleFired", "LoadGoldFired"}; + static const Class types[] = {"RedShell","GreenShell","BlueShell","PurpleShell","BlackShell","GoldShell"}; + static const statelabel primedstates[] = {"LoadRed", "LoadGreen", "LoadBlue", "LoadPurple", "LoadBlack", "LoadGold"}; + static const statelabel firedstates[] = {"LoadRedFired", "LoadGreenFired", "LoadBlueFired", "LoadPurpleFired", "LoadBlackFired", "LoadGoldFired"}; int amidx = 0; - for ( int i=0; i<7; i++ ) + for ( int i=0; i<6; i++ ) { if ( invoker.nextammo != types[i] ) continue; amidx = i; @@ -236,11 +235,11 @@ Class Spreadgun : SWWMWeapon action void A_DropShell() { - static const Class types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"}; - static const Class casetypes[] = {"RedShellCasing","GreenShellCasing","WhiteShellCasing","BlueShellCasing","BlackShellCasing","PurpleShellCasing","GoldShellCasing"}; + static const Class types[] = {"RedShell","GreenShell","BlueShell","PurpleShell","BlackShell","GoldShell"}; + static const Class casetypes[] = {"RedShellCasing","GreenShellCasing","BlueShellCasing","PurpleShellCasing","BlackShellCasing","GoldShellCasing"}; if ( !invoker.fired ) { - for ( int i=0; i<7; i++ ) + for ( int i=0; i<6; i++ ) { if ( invoker.loadammo != types[i] ) continue; let amo = FindInventory(types[i]); @@ -258,7 +257,7 @@ Class Spreadgun : SWWMWeapon } else { - for ( int i=0; i<7; i++ ) + for ( int i=0; i<6; i++ ) { if ( invoker.loadammo != types[i] ) continue; Vector3 x, y, z; @@ -352,13 +351,13 @@ Class Spreadgun : SWWMWeapon action void A_FireShell() { - static const Class types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"}; - static const statelabel flashes[] = {"FlashRed","FlashGreen","FlashWhite","FlashBlue","FlashBlack","FlashPurple","FlashGold"}; - static const String sounds[] = {"spreadgun/redfire","spreadgun/greenfire","spreadgun/whitefire","spreadgun/bluefire","spreadgun/blackfire","spreadgun/purplefire","spreadgun/goldfire"}; - static const int louds[] = {800,1000,1100,1200,1400,600,2500}; - static const int quakes[] = {3,4,2,4,3,1,6}; - static const Color cols[] = {Color(40,255,192,64),Color(36,255,192,80),Color(64,255,160,32),Color(48,32,176,255),Color(72,255,128,16),Color(24,255,224,96),Color(96,255,224,16)}; - for ( int i=0; i<7; i++ ) + static const Class types[] = {"RedShell","GreenShell","BlueShell","PurpleShell","BlackShell","GoldShell"}; + static const statelabel flashes[] = {"FlashRed","FlashGreen","FlashBlue","FlashPurple","FlashBlack","FlashGold"}; + static const String sounds[] = {"spreadgun/redfire","spreadgun/greenfire","spreadgun/bluefire","spreadgun/purplefire","spreadgun/blackfire","spreadgun/goldfire"}; + static const int louds[] = {800,1000,1200,600,1400,2500}; + static const int quakes[] = {3,4,4,1,3,6}; + static const Color cols[] = {Color(40,255,192,64),Color(36,255,192,80),Color(48,32,176,255),Color(24,255,224,96),Color(72,255,128,16),Color(96,255,224,16)}; + for ( int i=0; i<6; i++ ) { if ( invoker.loadammo != types[i] ) continue; A_SWWMFlash(flashes[i]); @@ -409,35 +408,6 @@ Class Spreadgun : SWWMWeapon SWWMUtility.DoKnockback(self,-x,25000.); break; case 2: - for ( int j=0; j<3; j++ ) - { - a = FRandom[Spreadgun](0,360); - s = FRandom[Spreadgun](0,.24); - dir = (x2+y2*cos(a)*s+z2*sin(a)*s).unit(); - let p = Spawn("DragonBreathArm",origin); - p.target = self; - p.angle = atan2(dir.y,dir.x); - p.pitch = asin(-dir.z); - } - for ( int i=0; i<15; i++ ) - { - let s = Spawn("SWWMSmoke",origin); - s.special1 = 1; - s.scale *= .9; - s.alpha *= .3; - s.SetShade(Color(1,1,1)*Random[Spreadgun](96,192)); - s.vel += vel*.5+x*FRandom[Spreadgun](3.,5.)+y*FRandom[Spreadgun](-1,1)+z*FRandom[Spreadgun](-1,1); - } - for ( int i=0; i<12; i++ ) - { - let s = Spawn("SWWMSpark",origin); - s.scale *= .3; - s.alpha *= .4; - s.vel += vel*.5+x*FRandom[Spreadgun](4.,8.)+y*FRandom[Spreadgun](-2,2)+z*FRandom[Spreadgun](-2,2); - } - SWWMUtility.DoKnockback(self,-x,13000.); - break; - case 3: for ( int j=0; j<8; j++ ) { a = FRandom[Spreadgun](0,360); @@ -465,6 +435,32 @@ Class Spreadgun : SWWMWeapon } SWWMUtility.DoKnockback(self,-x,23000.); break; + case 3: + a = FRandom[Spreadgun](0,360); + s = FRandom[Spreadgun](0,.03); + dir = (x2+y2*cos(a)*s+z2*sin(a)*s).unit(); + let b = Spawn("TheBall",origin); + b.target = self; + b.angle = atan2(dir.y,dir.x); + b.pitch = asin(-dir.z); + b.vel = dir*b.speed; + for ( int i=0; i<8; i++ ) + { + let s = Spawn("SWWMSmoke",origin); + s.scale *= .6; + s.alpha *= .25; + s.SetShade(Color(1,1,1)*Random[Spreadgun](96,192)); + s.vel += vel*.5+x*FRandom[Spreadgun](3.,5.); + } + for ( int i=0; i<8; i++ ) + { + let s = Spawn("SWWMSpark",origin); + s.scale *= .2; + s.alpha *= .4; + s.vel += vel*.5+x*FRandom[Spreadgun](4.,8.)+y*FRandom[Spreadgun](-1,1)+z*FRandom[Spreadgun](-1,1); + } + SWWMUtility.DoKnockback(self,-x,9500.); + break; case 4: for ( int j=0; j<50; j++ ) { @@ -495,32 +491,6 @@ Class Spreadgun : SWWMWeapon SWWMUtility.DoKnockback(self,-x,15000.); break; case 5: - a = FRandom[Spreadgun](0,360); - s = FRandom[Spreadgun](0,.03); - dir = (x2+y2*cos(a)*s+z2*sin(a)*s).unit(); - let b = Spawn("TheBall",origin); - b.target = self; - b.angle = atan2(dir.y,dir.x); - b.pitch = asin(-dir.z); - b.vel = dir*b.speed; - for ( int i=0; i<8; i++ ) - { - let s = Spawn("SWWMSmoke",origin); - s.scale *= .6; - s.alpha *= .25; - s.SetShade(Color(1,1,1)*Random[Spreadgun](96,192)); - s.vel += vel*.5+x*FRandom[Spreadgun](3.,5.); - } - for ( int i=0; i<8; i++ ) - { - let s = Spawn("SWWMSpark",origin); - s.scale *= .2; - s.alpha *= .4; - s.vel += vel*.5+x*FRandom[Spreadgun](4.,8.)+y*FRandom[Spreadgun](-1,1)+z*FRandom[Spreadgun](-1,1); - } - SWWMUtility.DoKnockback(self,-x,9500.); - break; - case 6: a = FRandom[Spreadgun](0,360); s = FRandom[Spreadgun](0,.01); dir = (x2+y2*cos(a)*s+z2*sin(a)*s).unit(); @@ -661,7 +631,7 @@ Class Spreadgun : SWWMWeapon override void AttachToOwner( Actor other ) { - static const Class types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"}; + static const Class types[] = {"RedShell","GreenShell","BlueShell","PurpleShell","BlackShell","GoldShell"}; if ( !initialized ) { initialized = true; @@ -669,7 +639,7 @@ Class Spreadgun : SWWMWeapon fired = false; chambered = true; } - for ( int i=0; i<7; i++ ) + for ( int i=0; i<6; i++ ) { Ammo a = Ammo(other.FindInventory(types[i])); if ( !a ) continue; @@ -683,9 +653,9 @@ Class Spreadgun : SWWMWeapon action void A_SwitchAmmoType( bool rev = false ) { - static const Class types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"}; + static const Class types[] = {"RedShell","GreenShell","BlueShell","PurpleShell","BlackShell","GoldShell"}; int cur = 0, next = 0; - for ( int i=0; i<7; i++ ) + for ( int i=0; i<6; i++ ) { if ( invoker.nextammo != types[i] ) continue; cur = i; @@ -704,7 +674,7 @@ Class Spreadgun : SWWMWeapon if ( ridx == -1 ) { // check forwards instead, but avoid golden shells - for ( int i=0; i<6; i++ ) + for ( int i=0; i<5; i++ ) { if ( CountInv(types[i]) <= 0 ) continue; ridx = i; @@ -715,9 +685,9 @@ Class Spreadgun : SWWMWeapon } else { - for ( int i=0; i<7; i++ ) + for ( int i=0; i<6; i++ ) { - ridx = (i+cur+1)%7; + ridx = (i+cur+1)%6; if ( CountInv(types[ridx]) <= 0 ) continue; next = ridx; break; @@ -765,8 +735,6 @@ Class Spreadgun : SWWMWeapon MarkSound("spreadgun/redfire2"); MarkSound("spreadgun/greenfire1"); MarkSound("spreadgun/greenfire2"); - MarkSound("spreadgun/whitefire1"); - MarkSound("spreadgun/whitefire2"); MarkSound("spreadgun/bluefire1"); MarkSound("spreadgun/bluefire2"); MarkSound("spreadgun/blackfire1"); @@ -960,12 +928,6 @@ Class Spreadgun : SWWMWeapon XZW4 MNOPQRSTUVWXYZ 1; XZW9 T 1; Goto Reload2; - UnloadWhiteFired: - XZW2 Z 2; - XZW5 ABCD 2; - XZW5 EFGHIJKLMNOPQR 1; - XZWB A 1; - Goto Reload2; UnloadBlueFired: XZW2 Z 2; XZW5 STUV 2; @@ -1006,13 +968,6 @@ Class Spreadgun : SWWMWeapon XZWL FGHIJKLMNOPQRS 1; XZWQ M 1; Goto Reload2; - UnloadWhite: - XZW2 A 2; - XZWL TUVW 2; - XZWL XYZ 1; - XZWM ABCDEFGHIJK 1; - XZWR T 1; - Goto Reload2; UnloadBlue: XZW2 A 2; XZWM LMNO 2; @@ -1069,10 +1024,6 @@ Class Spreadgun : SWWMWeapon XZW9 TUVWXYZ 1; XZWA ABCDEFGHIJKLMNOPQRSTUVWXYZ 1; Goto Ready; - LoadWhiteFired: - XZWB ABCDEFGHIJKLMNOPQRSTUVWXYZ 1; - XZWC ABCDEFG 1; - Goto Ready; LoadBlueFired: XZWC HIJKLMNOPQRSTUVWXYZ 1; XZWD ABCDEFGHIJKLMN 1; @@ -1098,10 +1049,6 @@ Class Spreadgun : SWWMWeapon XZWQ MNOPQRSTUVWXYZ 1; XZWR ABCDEFGHIJKLMNOPQRS 1; Goto Ready; - LoadWhite: - XZWR TUVWXYZ 1; - XZWS ABCDEFGHIJKLMNOPQRSTUVWXYZ 1; - Goto Ready; LoadBlue: XZWT ABCDEFGHIJKLMNOPQRSTUVWXYZ 1; XZWU ABCDEFG 1; @@ -1205,16 +1152,6 @@ Class Spreadgun : SWWMWeapon l.target = self; } Stop; - FlashWhite: - XZW0 C 2 Bright - { - let l = Spawn("SWWMWeaponLight",pos); - l.args[1] = 176; - l.args[2] = 32; - l.args[3] = 160; - l.target = self; - } - Stop; FlashBlue: XZW0 D 2 Bright { diff --git a/zscript/weapons/swwm_shot_fx.zsc b/zscript/weapons/swwm_shot_fx.zsc index 5c2489b87..39cddc3f6 100644 --- a/zscript/weapons/swwm_shot_fx.zsc +++ b/zscript/weapons/swwm_shot_fx.zsc @@ -13,7 +13,6 @@ Class RedShellCasing : SWWMCasing } } Class GreenShellCasing : RedShellCasing {} -Class WhiteShellCasing : RedShellCasing {} Class BlueShellCasing : RedShellCasing {} Class BlackShellCasing : RedShellCasing {} Class PurpleShellCasing : RedShellCasing {} @@ -117,184 +116,6 @@ Class SlugImpact : Actor } } -Class DragonBreathPuff : Actor -{ - Vector2 initsc; - - Default - { - RenderStyle "Add"; - Scale 0.5; - Alpha 0.35; - Radius .1; - Height 0; - +NOGRAVITY; - +NOBLOCKMAP; - +DONTSPLASH; - +NOINTERACTION; - +NOTELEPORT; - +ROLLSPRITE; - +ROLLCENTER; - +FORCEXYBILLBOARD; - } - override void PostBeginPlay() - { - scale *= FRandom[Spreadgun](.8,1.); - alpha *= FRandom[Spreadgun](.8,1.); - roll = FRandom[Spreadgun](0,360); - SetState(FindState("Spawn")+Random[Spreadgun](0,19)); - initsc = scale; - } - override void Tick() - { - if ( isFrozen() ) return; - A_FadeOut((waterlevel>0)?.1:.02); - scale += initsc*.2; - } - States - { - Spawn: - XFLM ABCDEFGHIJKLMNOPQRST -1 Bright; - Stop; - } -} - -Class DragonBreathArm : Actor -{ - Vector3 oldvel; - - Default - { - Obituary "$O_SPREADGUN_WHITE"; - DamageType 'Fire'; - PROJECTILE; - +THRUACTORS; - +BOUNCEONWALLS; - +BOUNCEONFLOORS; - +BOUNCEONCEILINGS; - +CANBOUNCEWATER; - +USEBOUNCESTATE; - +NODAMAGETHRUST; - +FORCERADIUSDMG; - -NOGRAVITY; - Gravity 0.15; - BounceFactor 1.0; - Radius 2; - Height 4; - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - reactiontime = Random[ExploS](18,24); - vel = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch))*FRandom[ExploS](16.,32.); - let l = Spawn("PaletteLight",pos); - l.Args[3] = int(60+60*(ReactionTime/20.)); - l.ReactionTime = ReactionTime+2; - l.target = self; - - } - override void Tick() - { - oldvel = vel; - Super.Tick(); - } - void A_HandleBounce() - { - Vector3 HitNormal = -vel.unit(); - F3DFloor ff; - if ( BlockingFloor ) - { - // find closest 3d floor for its normal - for ( int i=0; i= (BlockingMobj.pos.x+BlockingMobj.radius) ) - HitNormal = (1,0,0); - else if ( (pos.y+radius) <= (BlockingMobj.pos.y-BlockingMobj.radius) ) - HitNormal = (0,-1,0); - else if ( (pos.y-radius) >= (BlockingMobj.pos.y+BlockingMobj.radius) ) - HitNormal = (0,1,0); - else if ( pos.z >= (BlockingMobj.pos.z+BlockingMobj.height) ) - HitNormal = (0,0,1); - else if ( (pos.z+height) <= BlockingMobj.pos.z ) - HitNormal = (0,0,-1); - } - // undo the bounce, we need to hook in our own - vel = oldvel; - // re-do the bounce with our formula - vel = .8*((vel dot HitNormal)*HitNormal*(-1.8+FRandom[Spreadgun](.0,.6))+vel); - bHITOWNER = true; - } - States - { - Spawn: - TNT1 A 1 - { - if ( waterlevel > 0 ) ReactionTime -= 2; - let p = Spawn("DragonBreathPuff",pos); - p.alpha *= .6+.4*(ReactionTime/20.); - p.scale *= 3.5-2.5*(ReactionTime/20.); - SWWMUtility.DoExplosion(self,6+(reactiontime/2),1000+200*reactiontime,90+5*reactiontime,flags:DE_HOWL,ignoreme:bHITOWNER?null:target); - double spd = vel.length(); - vel = (vel*.4+(FRandom[ExploS](-.2,.2),FRandom[ExploS](-.2,.2),FRandom[ExploS](-.2,.2))).unit()*spd; - Vector3 pvel = (FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)).unit()*FRandom[ExploS](1,5); - if ( !(ReactionTime%2) ) - { - let s = Spawn("SWWMHalfSmoke",pos); - s.vel = pvel+vel*.2; - s.SetShade(Color(1,1,1)*Random[ExploS](96,192)); - s.special1 = Random[ExploS](2,4); - s.scale *= 2.4; - s.alpha *= .1+.2*(ReactionTime/20.); - int numpt = Random[Spreadgun](-2,4); - for ( int i=0; i types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"}; + static const Class types[] = {"RedShell","GreenShell","BlueShell","PurpleShell","BlackShell","GoldShell"}; if ( !AltWeaponBox ) AltWeaponBox = TexMan.CheckForTexture("graphics/AltHUD/SpreadgunDisplay.png",TexMan.Type_Any); if ( !AltRoundTex[0] ) AltRoundTex[0] = TexMan.CheckForTexture("graphics/AltHUD/ShellRed.png",TexMan.Type_Any); if ( !AltRoundTex[1] ) AltRoundTex[1] = TexMan.CheckForTexture("graphics/AltHUD/ShellGreen.png",TexMan.Type_Any); - if ( !AltRoundTex[2] ) AltRoundTex[2] = TexMan.CheckForTexture("graphics/AltHUD/ShellWhite.png",TexMan.Type_Any); - if ( !AltRoundTex[3] ) AltRoundTex[3] = TexMan.CheckForTexture("graphics/AltHUD/ShellBlue.png",TexMan.Type_Any); + if ( !AltRoundTex[2] ) AltRoundTex[2] = TexMan.CheckForTexture("graphics/AltHUD/ShellBlue.png",TexMan.Type_Any); + if ( !AltRoundTex[3] ) AltRoundTex[3] = TexMan.CheckForTexture("graphics/AltHUD/ShellPurple.png",TexMan.Type_Any); if ( !AltRoundTex[4] ) AltRoundTex[4] = TexMan.CheckForTexture("graphics/AltHUD/ShellBlack.png",TexMan.Type_Any); - if ( !AltRoundTex[5] ) AltRoundTex[5] = TexMan.CheckForTexture("graphics/AltHUD/ShellPurple.png",TexMan.Type_Any); - if ( !AltRoundTex[6] ) AltRoundTex[6] = TexMan.CheckForTexture("graphics/AltHUD/ShellGold.png",TexMan.Type_Any); + if ( !AltRoundTex[5] ) AltRoundTex[5] = TexMan.CheckForTexture("graphics/AltHUD/ShellGold.png",TexMan.Type_Any); Screen.DrawTexture(AltWeaponBox,false,bx-9,by-6,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); if ( !chambered ) return; - for ( int i=0; i<7; i++ ) + for ( int i=0; i<6; i++ ) { if ( loadammo != types[i] ) continue; Screen.DrawTexture(AltRoundTex[i],false,bx-7,by-4,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,Color(fired?128:0,0,0,0)); diff --git a/zscript/weapons/swwm_hud_weapons.zsc b/zscript/weapons/swwm_weapons_hud.zsc similarity index 95% rename from zscript/weapons/swwm_hud_weapons.zsc rename to zscript/weapons/swwm_weapons_hud.zsc index ab6c1a2f1..c1a9d0db6 100644 --- a/zscript/weapons/swwm_hud_weapons.zsc +++ b/zscript/weapons/swwm_weapons_hud.zsc @@ -49,49 +49,42 @@ extend Class DualExplodiumGun // Spreadgun extend Class Spreadgun { - ui TextureID WeaponBox, AmmoIcon[7], LoadedIcon[7]; + ui TextureID WeaponBox, AmmoIcon[6], LoadedIcon[6]; override void DrawWeapon( double TicFrac, double bx, double by, double hs, Vector2 ss ) { - static const Class types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"}; + static const Class types[] = {"RedShell","GreenShell","BlueShell","PurpleShell","BlackShell","GoldShell"}; if ( !WeaponBox ) { WeaponBox = TexMan.CheckForTexture("graphics/HUD/SpreadgunDisplay.png",TexMan.Type_Any); AmmoIcon[0] = TexMan.CheckForTexture("graphics/HUD/RedShell.png",TexMan.Type_Any); AmmoIcon[1] = TexMan.CheckForTexture("graphics/HUD/GreenShell.png",TexMan.Type_Any); - AmmoIcon[2] = TexMan.CheckForTexture("graphics/HUD/WhiteShell.png",TexMan.Type_Any); - AmmoIcon[3] = TexMan.CheckForTexture("graphics/HUD/BlueShell.png",TexMan.Type_Any); + AmmoIcon[2] = TexMan.CheckForTexture("graphics/HUD/BlueShell.png",TexMan.Type_Any); + AmmoIcon[3] = TexMan.CheckForTexture("graphics/HUD/PurpleShell.png",TexMan.Type_Any); AmmoIcon[4] = TexMan.CheckForTexture("graphics/HUD/BlackShell.png",TexMan.Type_Any); - AmmoIcon[5] = TexMan.CheckForTexture("graphics/HUD/PurpleShell.png",TexMan.Type_Any); - AmmoIcon[6] = TexMan.CheckForTexture("graphics/HUD/GoldShell.png",TexMan.Type_Any); + AmmoIcon[5] = TexMan.CheckForTexture("graphics/HUD/GoldShell.png",TexMan.Type_Any); LoadedIcon[0] = TexMan.CheckForTexture("graphics/HUD/LoadedRedShell.png",TexMan.Type_Any); LoadedIcon[1] = TexMan.CheckForTexture("graphics/HUD/LoadedGreenShell.png",TexMan.Type_Any); - LoadedIcon[2] = TexMan.CheckForTexture("graphics/HUD/LoadedWhiteShell.png",TexMan.Type_Any); - LoadedIcon[3] = TexMan.CheckForTexture("graphics/HUD/LoadedBlueShell.png",TexMan.Type_Any); + LoadedIcon[2] = TexMan.CheckForTexture("graphics/HUD/LoadedBlueShell.png",TexMan.Type_Any); + LoadedIcon[3] = TexMan.CheckForTexture("graphics/HUD/LoadedPurpleShell.png",TexMan.Type_Any); LoadedIcon[4] = TexMan.CheckForTexture("graphics/HUD/LoadedBlackShell.png",TexMan.Type_Any); - LoadedIcon[5] = TexMan.CheckForTexture("graphics/HUD/LoadedPurpleShell.png",TexMan.Type_Any); - LoadedIcon[6] = TexMan.CheckForTexture("graphics/HUD/LoadedGoldShell.png",TexMan.Type_Any); + LoadedIcon[5] = TexMan.CheckForTexture("graphics/HUD/LoadedGoldShell.png",TexMan.Type_Any); } - Screen.DrawTexture(WeaponBox,false,bx-54,by-43,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + Screen.DrawTexture(WeaponBox,false,bx-46,by-63,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); int ox = 6; int oy = 11; - for ( int i=0; i<7; i++ ) + for ( int i=0; i<6; i++ ) { Screen.DrawTexture(AmmoIcon[i],false,bx-ox,by-oy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,(types[i]==nextammo)?Color(0,0,0,0):Color(128,0,0,0)); String astr = String.Format("%3d",Owner.CountInv(types[i])); Screen.DrawText(SWWMStatusBar(StatusBar).mSmallFont,Font.CR_FIRE,bx-ox-(SWWMStatusBar(StatusBar).mSmallFont.StringWidth(astr)+1),by-oy-1,astr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,(types[i]==nextammo)?Color(0,0,0,0):Color(128,0,0,0)); oy += 10; - if ( i == 3 ) - { - oy = 21; - ox = 33; - } } if ( !chambered ) return; - for ( int i=0; i<7; i++ ) + for ( int i=0; i<6; i++ ) { if ( loadammo != types[i] ) continue; - Screen.DrawTexture(LoadedIcon[i],false,bx-48,by-8,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,fired?Color(128,0,0,0):Color(0,0,0,0)); + Screen.DrawTexture(LoadedIcon[i],false,bx-44,by-8,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,fired?Color(128,0,0,0):Color(0,0,0,0)); break; } }