diff --git a/FuturePlans.md b/FuturePlans.md index 2ed2f297c..0c7fb2d56 100644 --- a/FuturePlans.md +++ b/FuturePlans.md @@ -19,11 +19,6 @@ This is just a bit of *"future planning"* for stuff that I ***might*** add after - Lithium - Volume One *(A work of art, one of the finest graphic novels)* - Manarock *("A delicacy for gods, but instantly deadly for mortals")* - Rubber Duck *("Is this some kind of convoluted joke from those two?")* -* **Original English Voice Acting:** - - Demolitionist - - Ibuki - - Saya - - Kirin * ***(Maybe)* Fake livestream chat overlay, with dynamic reactions to all sorts of stuff** * **Leaning and a lot of other stuff involving ViewAngles and ViewPos** * **Crouch sliding *(+ proper crouch dashing)*** @@ -40,9 +35,14 @@ This is just a bit of *"future planning"* for stuff that I ***might*** add after - **[Heretic]** Interstellar Demolitionist (a somewhat simple vertical SHMUP, kinda Touhou styled) - **[Hexen]** Demolition Quest (a JRPG, kinda like early FF / BoF) * **Mothgirl summon for Lämp easter egg** -* **Ibuki companion add-on *(w/ optional "stream friendly" clothing)*** -* **Saya model, for scenes or something idk *(maybe a companion add-on too)*** -* ***(Maybe)* Kirin model???** +* **Ibuki companion add-on** +* **Saya companion add-on** +* **Kirin companion add-on *(Hexen-exclusive)*** +* **Original English Voice Acting:** + - Demolitionist + - Ibuki + - Saya + - Kirin * **Japanese localization???** * **Strife support, with rewritten dialogue** * **Monster/decoration replacements add-on** diff --git a/README.md b/README.md index 3d27aa3d7..af7d77c3d 100644 --- a/README.md +++ b/README.md @@ -108,7 +108,7 @@ Coming from the **Doom** modding side of things, this gun really packs a punch, **Primary fire:** Fires, duh. Depending on the loaded ammo the effects may vary. -**Secondary fire:** Switches ammo type for the next shot to be loaded. +**Secondary fire:** On tap, switches ammo type for the next shot to be loaded. On hold, also tap primary fire to unload the current shell, but leave the gun empty. **Reload:** Unload the current shell and load a new one. Unspent shells are re-added to their respective ammo type pool (or dropped if you can't hold more). diff --git a/language.def_lore b/language.def_lore index 60248bd74..b660e9cb0 100644 --- a/language.def_lore +++ b/language.def_lore @@ -330,7 +330,7 @@ SWWM_LORETXT_KEYCHAIN = "\cxDesignation:\c-\n\cf Keychain\c-\n\cxManufacturer:\c SWWM_LORETAG_SPREADGUN = "Spreadgun"; SWWM_LORETAB_SPREADGUN = "Item"; SWWM_LOREREL_SPREADGUN = "Blackmann;Saya;NosKora;Explodium"; -SWWM_LORETXT_SPREADGUN = "\cxDesignation:\c-\n\cf \"Rhino Stopper\" Spreadgun\c-\n\cxManufacturer:\c-\n\cf Blackmann Arms Ltd.\c-\n\cxClassification:\c-\n\cf Single-shot \"Slide-action\" Shotgun\c-\n\nThe \cfSpreadgun\c- is a simple single-shot shotgun with a rather unconventional reload mechanism. Unlike other weapons of the same fashion, the Spreadgun employs an odd variant of break action that \cfBlackmann Arms\c- has described as \"slide-action\", whereas rather than being hinged, the barrel slides horizontally at the press of two side buttons, with a small metal bit springing up and ejecting the loaded shell. After loading in another round, the user merely has to push the barrel back into its closed position. Some have doubts about the practicality of this operation, or its safety, but it's been guaranteed that the gun will not misfire no matter the force exerted to push the barrel back in.\n\nAs it is chambered in the rare 10Ga-short type, there's an exclusive assortment of ammunition types it can use, all handled by Blackmann Arms themselves. They are as follows:\n\n\cfStandard Buckshot:\c- Red shells. Exactly what it says on the tin. The spread caused by the shortness of the barrel may make it difficult to reach distant targets, but at close range it should be very effective.\n\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\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\nThe 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\n\cfPrimary Fire:\c- Shoot the loaded shell.\n\n\cfSecondary Fire:\c- Select the next ammo type to be used on reload.\n\n\cfReloading:\c- Unload the current shell and load a new one. If the loaded shell was not spent, it will be returned to its ammo pool. Should there not be enough storage space for it, it will be dropped on the ground instead.\n\n\cxSaya's Notes:\c-\n\cfYeah, this shit looks impractical af, and I don't know how no one has shot a hole through their hand reloading the damn thing. BUT, it does let you use all sorts of fun ammo. You've got the typical bread and butter of shells there, and then there's... Literal radioactive rock salt, that explodes, yeah, amazing. But then you look at what's right after that and... yeah.\c-\n\n\cfHermann-senpai redirected me to nerdboi for those black shells, because they were his idea. So, let me explain. Telebrium is... a war crime. Plain and simple. We can kind of get away with it, though, because it's just mindless beasts that you're throwing it at. Still makes me uneasy, but hey, we're not using it on people, unlike the actual cases where it WAS used on people (good god, the stories about that).\c-\n\n\cfAnyway, enough about crimes, let's talk about the purple bois. So these things are a serious crime, and THOSE TWO had to be involved of course. I'm pretty sure those things are NOT made of lead. This looks like that weird metal they work with, that I swear to fuck I can't even pronounce the name of. And it has... yes, RANDOM CRITS. Therein lies the crime, Demo-chan. Can't believe we've got that shit going on now. I absolutely lost it when I first saw it in action, and I'm sure you will, too.\c-\n\n\cfLastly there's those golden bois. We can't buy them ourselves, so nerdo made another of his nerdy deals and said that he might reward you every now and then with one for eliminating \"high level targets\" or something like that. Can't wait to see what that shit is like, a fucking... golden shower of pain.\c-\n\n\cf*cough*\c-\n\n\cfPlease don't misinterpret that last thing I said, btw.\c-"; +SWWM_LORETXT_SPREADGUN = "\cxDesignation:\c-\n\cf \"Rhino Stopper\" Spreadgun\c-\n\cxManufacturer:\c-\n\cf Blackmann Arms Ltd.\c-\n\cxClassification:\c-\n\cf Single-shot \"Slide-action\" Shotgun\c-\n\nThe \cfSpreadgun\c- is a simple single-shot shotgun with a rather unconventional reload mechanism. Unlike other weapons of the same fashion, the Spreadgun employs an odd variant of break action that \cfBlackmann Arms\c- has described as \"slide-action\", whereas rather than being hinged, the barrel slides horizontally at the press of two side buttons, with a small metal bit springing up and ejecting the loaded shell. After loading in another round, the user merely has to push the barrel back into its closed position. Some have doubts about the practicality of this operation, or its safety, but it's been guaranteed that the gun will not misfire no matter the force exerted to push the barrel back in.\n\nAs it is chambered in the rare 10Ga-short type, there's an exclusive assortment of ammunition types it can use, all handled by Blackmann Arms themselves. They are as follows:\n\n\cfStandard Buckshot:\c- Red shells. Exactly what it says on the tin. The spread caused by the shortness of the barrel may make it difficult to reach distant targets, but at close range it should be very effective.\n\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\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\nThe 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\n\cfPrimary Fire:\c- Shoot the loaded shell.\n\n\cfSecondary Fire:\c- Tap to select the next ammo type to be used on reload. Hold and then press primary fire to unload the current shell and leave the weapon empty.\n\n\cfReloading:\c- Unload the current shell and load a new one. If the loaded shell was not spent, it will be returned to its ammo pool. Should there not be enough storage space for it, it will be dropped on the ground instead.\n\n\cxSaya's Notes:\c-\n\cfYeah, this shit looks impractical af, and I don't know how no one has shot a hole through their hand reloading the damn thing. BUT, it does let you use all sorts of fun ammo. You've got the typical bread and butter of shells there, and then there's... Literal radioactive rock salt, that explodes, yeah, amazing. But then you look at what's right after that and... yeah.\c-\n\n\cfHermann-senpai redirected me to nerdboi for those black shells, because they were his idea. So, let me explain. Telebrium is... a war crime. Plain and simple. We can kind of get away with it, though, because it's just mindless beasts that you're throwing it at. Still makes me uneasy, but hey, we're not using it on people, unlike the actual cases where it WAS used on people (good god, the stories about that).\c-\n\n\cfAnyway, enough about crimes, let's talk about the purple bois. So these things are a serious crime, and THOSE TWO had to be involved of course. I'm pretty sure those things are NOT made of lead. This looks like that weird metal they work with, that I swear to fuck I can't even pronounce the name of. And it has... yes, RANDOM CRITS. Therein lies the crime, Demo-chan. Can't believe we've got that shit going on now. I absolutely lost it when I first saw it in action, and I'm sure you will, too.\c-\n\n\cfLastly there's those golden bois. We can't buy them ourselves, so nerdo made another of his nerdy deals and said that he might reward you every now and then with one for eliminating \"high level targets\" or something like that. Can't wait to see what that shit is like, a fucking... golden shower of pain.\c-\n\n\cf*cough*\c-\n\n\cfPlease don't misinterpret that last thing I said, btw.\c-"; SWWM_LORETAG_NOSKORA = "Nos-Kora"; SWWM_LORETAB_NOSKORA = "People"; SWWM_LOREREL_NOSKORA = "Nukuri;Saya;"; diff --git a/language.es_lore b/language.es_lore index 539493d38..13f208c9a 100644 --- a/language.es_lore +++ b/language.es_lore @@ -29,7 +29,7 @@ SWWM_LORETXT_CRONOS = "\cxNombre:\c-\n\cf Cronos\c-\n\cxClasificación:\c-\n\cf SWWM_LORETAG_BELT = "Cinturón Útil"; SWWM_LORETXT_BELT = "\cxDesignación:\c-\n\cf Cinturón Útil Magnético Adaptable\c-\n\cxFabricante:\c-\n\cf Symnatek\c-\n\cxClasificación:\c-\n\cf Accesorio de Utilidad\c-\n\nUn simple cinturón magnético, adaptable a cualquier tamaño de cintura al desacoplar y acoplar segmentos. La fuerza magnética localizada de cada uno de los segmentos del cinturón es lo suficientemente fuerte como para mantener objetos sujetos firmemente sin importar lo mucho que se mueva el usuario. Es por lo tanto ideal para ti.\n\nNo importa la situación. no importa lo intensa que sea la batalla, nunca perderás tus pertenencias más importantes, como tu llavero o tus contenedores de \cfHammerspace™\c- a cada lado, con tus armas, munición y otros. Aparte de todo esto, el cinturón es también muy útil para facilitar el proceso de recarga de varias armas (al menos aquellas con partes metálicas en sus cargadores).\n\n\cxNotas de Saya:\c-\n\cfNUNCA te pilles los dedos con esto, duele un huevo.\c-"; SWWM_LORETAG_SPREADGUN = "Trabuco"; -SWWM_LORETXT_SPREADGUN = "\cxDesignación:\c-\n\cf Trabuco \"Rhino Stopper\"\c-\n\cxFabricante:\c-\n\cf Blackmann Arms S.L.\c-\n\cxClasificación:\c-\n\cf Escopeta de \"cañón deslizante\"\c-\n\nEl \cfTrabuco\c- es una simple escopeta de un disparo con un mecanismo de recarga poco convencional. A diferencia de otras armas del mismo tipo, el Trabuco emplea una variante extraña del cañón basculante que \cfBlackmann Arms\c- ha descrito como \"cañón deslizante\", por la cual en lugar de usar una bisagra, el cañón se desliza horizontalmente al pulsar dos botones laterales, con una pequeña pieza metálica saltando y eyectando el cartucho cargado. Tras cargar el siguiente cartucho, el usuario simplemente tiene que empujar el cañón a su posición inicial. Algunos tienen dudas sobre la factibilidad de esta operación, o de su seguridad, pero han garantizado que el arma no disparará accidentalmente no importa la fuerza ejercida empujando de vuelta el cañón.\n\nAl estar adaptada al poco común calibre 10-corto, hay un surtido exclusivo de munición que el Trabuco puede usar, todos manejados por Blackmann. Siendo estos:\n\n\cfPerdigones Estándar:\c- Cartuchos rojos. Exactamente lo que pone. La dispersión causada por la poca longitud del cañón puede que dificulte alcanzar objetivos lejanos, pero a un rango más corto debería ser más efectivo.\n\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\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\nEl 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\n\cfFuego Primario:\c- Dispara el cartucho cargado.\n\n\cfFuego Secundario:\c- Elige el tipo de munición a usar en la siguiente recarga.\n\n\cfRecarga:\c- Retira el cartucho actual y carga uno nuevo. Si el cartucho cargado no fue gastado, se devolverá a su pila de munición. Si no queda suficiente espacio para almacenarlo, se dejará caer en el suelo.\n\n\cxNotas de Saya:\c-\n\cfSí, la mierda esta es jodidamente poco práctica, y no sé como es que nadie se ha reventado la mano recargando la cosa esta. PERO, te deja usar toda clase de munición divertida. Tienes lo típico y normal de cada escopeta por ahí, y luego hay... Literalmente piedras de sal radioactiva, que explotan, pues sí, mola. Pero luego ves lo que hay justo después y es que... ya.\c-\n\n\cfHermann-senpai me pasó al friki por lo de los cartuchos negros, porque fueron idea suya. A ver, deja que explique. El Telebrium es... un crimen de guerra. Así de simple. Pero casi que podemos salirnos de rositas, porque lo estamos usando contra bestias desquiciadas. Me sigue sentando un poco mal, pero a ver, no lo estamos usando contra personas, a diferencia de los casos en los que REALMENTE se usó contra personas (joder, las historias sobre ese tema).\c-\n\n\cfEn fin, basta de hablar de crímenes, hablemos ahora de los cartuchos violetas esos. Pues resulta que en serio son un crimen, y ESOS DOS por supuesto están involucrados. Estoy segura de que esas cosas NO están hechas de plomo. Parece más ese metal raro con el que trabajan, que es que puto juro que no puedo ni pronunciar el nombre. Y tiene... sí, CRÍTICOS RANDOM. He aquí el crimen, Demo-chan. No puedo creerme que mierdas así existan ahora. Es que se me fue la olla la primera vez que lo vi en acción, y estoy segura de que a ti te pasará lo mismo.\c-\n\n\cfFinamente están las cosas doradas esas. No podemos comprarlas, así que el friki hizo otro de sus frikitratos y dijo que te recompensaría de vez en cuando por eliminar \"objetivos de alto nivel\" o algo así. Que ganas tengo de ver como es eso, una puta... lluvia dorada de dolor.\c-\n\n\cf*tose*\c-\n\n\cfEspero que por favor no malinterpretes eso último que dije, por cierto.\c-"; +SWWM_LORETXT_SPREADGUN = "\cxDesignación:\c-\n\cf Trabuco \"Rhino Stopper\"\c-\n\cxFabricante:\c-\n\cf Blackmann Arms S.L.\c-\n\cxClasificación:\c-\n\cf Escopeta de \"cañón deslizante\"\c-\n\nEl \cfTrabuco\c- es una simple escopeta de un disparo con un mecanismo de recarga poco convencional. A diferencia de otras armas del mismo tipo, el Trabuco emplea una variante extraña del cañón basculante que \cfBlackmann Arms\c- ha descrito como \"cañón deslizante\", por la cual en lugar de usar una bisagra, el cañón se desliza horizontalmente al pulsar dos botones laterales, con una pequeña pieza metálica saltando y eyectando el cartucho cargado. Tras cargar el siguiente cartucho, el usuario simplemente tiene que empujar el cañón a su posición inicial. Algunos tienen dudas sobre la factibilidad de esta operación, o de su seguridad, pero han garantizado que el arma no disparará accidentalmente no importa la fuerza ejercida empujando de vuelta el cañón.\n\nAl estar adaptada al poco común calibre 10-corto, hay un surtido exclusivo de munición que el Trabuco puede usar, todos manejados por Blackmann. Siendo estos:\n\n\cfPerdigones Estándar:\c- Cartuchos rojos. Exactamente lo que pone. La dispersión causada por la poca longitud del cañón puede que dificulte alcanzar objetivos lejanos, pero a un rango más corto debería ser más efectivo.\n\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\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\nEl 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\n\cfFuego Primario:\c- Dispara el cartucho cargado.\n\n\cfFuego Secundario:\c- Pulsa para elegir el tipo de munición a usar en la siguiente recarga. Mantén y luego pulsa fuego primario para retirar el cartucho actual y dejar el arma vacía.\n\n\cfRecarga:\c- Retira el cartucho actual y carga uno nuevo. Si el cartucho cargado no fue gastado, se devolverá a su pila de munición. Si no queda suficiente espacio para almacenarlo, se dejará caer en el suelo.\n\n\cxNotas de Saya:\c-\n\cfSí, la mierda esta es jodidamente poco práctica, y no sé como es que nadie se ha reventado la mano recargando la cosa esta. PERO, te deja usar toda clase de munición divertida. Tienes lo típico y normal de cada escopeta por ahí, y luego hay... Literalmente piedras de sal radioactiva, que explotan, pues sí, mola. Pero luego ves lo que hay justo después y es que... ya.\c-\n\n\cfHermann-senpai me pasó al friki por lo de los cartuchos negros, porque fueron idea suya. A ver, deja que explique. El Telebrium es... un crimen de guerra. Así de simple. Pero casi que podemos salirnos de rositas, porque lo estamos usando contra bestias desquiciadas. Me sigue sentando un poco mal, pero a ver, no lo estamos usando contra personas, a diferencia de los casos en los que REALMENTE se usó contra personas (joder, las historias sobre ese tema).\c-\n\n\cfEn fin, basta de hablar de crímenes, hablemos ahora de los cartuchos violetas esos. Pues resulta que en serio son un crimen, y ESOS DOS por supuesto están involucrados. Estoy segura de que esas cosas NO están hechas de plomo. Parece más ese metal raro con el que trabajan, que es que puto juro que no puedo ni pronunciar el nombre. Y tiene... sí, CRÍTICOS RANDOM. He aquí el crimen, Demo-chan. No puedo creerme que mierdas así existan ahora. Es que se me fue la olla la primera vez que lo vi en acción, y estoy segura de que a ti te pasará lo mismo.\c-\n\n\cfFinamente están las cosas doradas esas. No podemos comprarlas, así que el friki hizo otro de sus frikitratos y dijo que te recompensaría de vez en cuando por eliminar \"objetivos de alto nivel\" o algo así. Que ganas tengo de ver como es eso, una puta... lluvia dorada de dolor.\c-\n\n\cf*tose*\c-\n\n\cfEspero que por favor no malinterpretes eso último que dije, por cierto.\c-"; SWWM_LORETAG_MOTHPLUSHY = "Peluche de Polilla"; SWWM_LORETXT_MOTHPLUSHY = "\cxDesignación:\c-\n\cf Peluche de Mashiro la Chica Polilla\c-\n\cxFabricante:\c-\n\cf Nukritas 2xx\c-\n\cxClasificación:\c-\n\cf Muñeco de Peluche\c-\n\nUn muñeco de peluche cariñosamente creado a mano de \cfMashiro\c-, la chica polilla, para buenos niños y niñas por igual. Como todas las polillas, le encanta la luz de una buena lámpara. Si la provees del calmante brillo de una \cfLámpara Compañera Sankai\c-, puede que tengas una amiga fiable, puede que incluso una amante. Solo, no hagas ruido, puede que la asustes.\n\nEn \cfPlutoni Incorporated\c- no nos hacemos responsables si acabas atrapada en un bucle de tiempo con una buena chica polilla haciéndote compañía.\n\n\cxNotas de Saya:\c-\n\cfHay un montón de estas en mi dormitorio, sabes. Una por cada vez que esos dos me han cabreado. Da miedo que me conozcan tan bien, en serio.\c-\n\n\cfOh por cierto, me han dicho que esa en específico que tienes, de su estúpida mierda gacha, está potencialmente maldita. No me gusta PARA NADA como suena eso... a no ser... ¿Y si resulta que atrae una chica polilla de verdad? Oh dios oh tío quiero ver eso porfa PORFA.\c-"; SWWM_LORETXT_AKARILABS = "\cxNombre:\c-\n\cf Akari Labs\c-\n\cxClasificación:\c-\n\cf Laboratorio de Investigación Científica\c-\n\cf Fábrica de Robots\c-\n\cf Servicio de Adopción\c-\n\cxLocalización:\c-\n\cf Kasukabe, Prefectura de Saitama, Japón\c-\n\cxPágina Web:\c-\n\cf https://akarilabs.jp\c-\n\n\cfAkari Labs\c-, popularmente llamada \cfLa Fuente de Innovación\c-, es una compañía de I+D de Kasukabe, Japón, principalmente conocida por su trabajo en el campo de la robótica. Es una de las mayores compañías en el país, solo superada por otros gigantes tecnológicos como \cfMixom\c-.\n\nLa compañía fue fundada en 2010 por \cfSaya Miyamoto\c- y \cfTaro Miyamoto\c-, comenzando sus días como un pequeño taller en su garaje. Con el tiempo, el incremento en popularidad de sus ingeniosos inventos trajo consigo una mayor expansión, y más gente atraída a trabajar con ellos. Aunque sus oficinas centrales son lo suficientemente grandes para alojar a todos sus empleados, algunos trabajan remotamente, debido a varias circunstancias.\n\nEntre sus muchas creaciones, las \cfMaidbots\c-, inicialmente introducidas en 2017, son las más conocidas. Asistentas robóticas casi humanas que pueden ser adoptadas libremente por cualquier familia. Todas y cada una de las unidades tienen su propia personalidad y preferencias, y a pesar de su apariencia robótica, no son tan diferentes de una persona real, teniendo los mismos derechos y estando sujetas a las mismas leyes que una. Todas las Maidbots están entrenadas desde su nacimiento en varias tareas, desde tareas del hogar a primeros auxilios o incluso técnicas de defensa personal. Aunque la mayoría son adoptadas para ayudar en casa y poco más, han habido muchos casos de clientes que se han enamorado o incluso casado con ellas. La postura oficial de los laboratorios en cuanto a estos casos es que \"no hay nada malo\" en algo así, pero que uno no debe olvidar que aunque las Maidbots están \"totalmente equipadas para actos íntimos\", no pueden tener hijos.\n\nDurante los \cfJuegos Olímpicos de Tokyo 2020\c-, la Maidbot personal de Saya fue elegida para cantar el himno nacional. Su voz cautivó a millones, y lanzó su carrera como idol.\n\nEn 2074, durante los comienzos de la \cfTercera Guerra Mundial\c-, los laboratorios enfrentaron cierta controversia tras aceptar Saya Miyamoto un contrato de 40 mil millones de dólares del ejército de los EEUU, pidiendo sus servicios para un programa clasificado de supersoldados. Anteriormente había mostrado interés en la bioingeniería, e incluso hubo indicios de que Akari Labs pudiera entrar el mercado de aumentación, pero nada más pasar esto, solo hubo silencio durante tres años. Más tarde, \cfIbuki\c-, el \cfOni Rojo\c-, fue revelada públicamente. La creación de Saya probó ser bastante efectiva en combate, a pesar de sus extrañas características físicas (muy probablemente viniendo de sus gustos personales), pero a pesar de su éxito contra las fuerzas invasoras, no hubo nada que pudiera hacer para prevenir la \cfCicatriz Blanca\c-. Tras ser recuperada del yermo humeante varios años después, Ibuki rehizo su vida, finalmente convirtiéndose en una supermodelo famosa mundialmente gracias a su atractivo físico.\n\nTras el final de la guerra, Akari Labs sí acabó entrando en el mercado de mejoras biomecánicas, lo cual ayudó a mantenerse a flote tras la pérdida de todos sus patrocinadores con base en los EEUU, al menos hasta la reforma del país como \cfUnión de Estados\c- en 2137.\n\nCuando el incidente en las instalaciones de la UAC en Marte y sus lunas se hizo público, Saya inmediatamente dio un paso no solo para insultar personalmente a su CEO, \cfIan Kelliher\c-, por los errores de su compañía una vez más, pero también para anunciar que si esta invasión que trajeron consigo llegase a la Tierra, ella personalmente \"crearía el mayor y mejor robot de combate jamas hecho para patearles el trasero\". Tal y como fue previsto, ejércitos demoníacos del Infierno comenzaron a aparecer de portales abiertos cerca de instalaciones de la UAC por todo el mundo, y entonces, tal y como ella prometió, Saya desplegó su arma definitiva, el \cfDemolicionista\c-."; diff --git a/language.version b/language.version index dce9bf335..adfa13376 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r251 \cu(Wed 3 Feb 13:58:22 CET 2021)\c-"; -SWWM_SHORTVER="\cw0.9.11b-pre r251 \cu(2021-02-03 13:58:22)\c-"; +SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r252 \cu(Wed 3 Feb 18:13:49 CET 2021)\c-"; +SWWM_SHORTVER="\cw0.9.11b-pre r252 \cu(2021-02-03 18:13:49)\c-"; diff --git a/lore/default/spreadgun.txt b/lore/default/spreadgun.txt index 83100ca9e..e723571bf 100644 --- a/lore/default/spreadgun.txt +++ b/lore/default/spreadgun.txt @@ -34,7 +34,7 @@ The wide range of compatible ammunition types makes the Spreadgun a rather versa \cfPrimary Fire:\c- Shoot the loaded shell. -\cfSecondary Fire:\c- Select the next ammo type to be used on reload. +\cfSecondary Fire:\c- Tap to select the next ammo type to be used on reload. Hold and then press primary fire to unload the current shell and leave the weapon empty. \cfReloading:\c- Unload the current shell and load a new one. If the loaded shell was not spent, it will be returned to its ammo pool. Should there not be enough storage space for it, it will be dropped on the ground instead. diff --git a/lore/es/spreadgun.txt b/lore/es/spreadgun.txt index d18a89fab..4b85f6dbe 100644 --- a/lore/es/spreadgun.txt +++ b/lore/es/spreadgun.txt @@ -30,7 +30,7 @@ El amplio rango de munición compatible hace del Trabuco un arma bastante versá \cfFuego Primario:\c- Dispara el cartucho cargado. -\cfFuego Secundario:\c- Elige el tipo de munición a usar en la siguiente recarga. +\cfFuego Secundario:\c- Pulsa para elegir el tipo de munición a usar en la siguiente recarga. Mantén y luego pulsa fuego primario para retirar el cartucho actual y dejar el arma vacía. \cfRecarga:\c- Retira el cartucho actual y carga uno nuevo. Si el cartucho cargado no fue gastado, se devolverá a su pila de munición. Si no queda suficiente espacio para almacenarlo, se dejará caer en el suelo. diff --git a/modeldef.spreadgun b/modeldef.spreadgun index 4b7ab2542..ae6c66f57 100644 --- a/modeldef.spreadgun +++ b/modeldef.spreadgun @@ -201,36 +201,36 @@ Model "Spreadgun" // buckshot Scale 0.13 0.13 0.13 Skin 2 "ShotgMuz.png" - FrameIndex XZWZ A 2 0 + FrameIndex XZW0 A 2 0 // slug Scale 0.08 0.08 0.08 Skin 2 "ShotgMuz.png" - FrameIndex XZWZ B 2 0 + FrameIndex XZW0 B 2 0 // dragon Scale 0.12 0.12 0.12 Skin 2 "ShotgMuz.png" - FrameIndex XZWZ C 2 0 + FrameIndex XZW0 C 2 0 // kinylum Scale 0.13 0.13 0.13 Skin 2 "ShotgMuzSalt.png" - FrameIndex XZWZ D 2 0 + FrameIndex XZW0 D 2 0 // flechettes Scale 0.1 0.1 0.1 Skin 2 "ShotgMuz.png" - FrameIndex XZWZ E 2 0 + FrameIndex XZW0 E 2 0 // ball Scale 0.06 0.06 0.06 Skin 2 "ShotgMuz.png" - FrameIndex XZWZ F 2 0 + FrameIndex XZW0 F 2 0 // gold Scale 0.2 0.2 0.2 Skin 2 "GoldMuz.png" - FrameIndex XZWZ G 2 0 + FrameIndex XZW0 G 2 0 } // AAAAAAAAAAAA // We really need a scripted way of changing surface skins so I don't have -// to do this. Hell this damn thing almost exhausted all the dummy sprite names +// to do this. Hell this damn thing uses ALL current dummy sprite names (though not all 936 frames) Model "Spreadgun" { Path "models" @@ -1204,4 +1204,67 @@ Model "Spreadgun" FrameIndex XZWY A 1 229 FrameIndex XZWY B 1 230 SurfaceSkin 1 4 "" + // Empty Unload + FrameIndex XZWY C 1 232 + FrameIndex XZWY D 1 233 + FrameIndex XZWY E 1 234 + FrameIndex XZWY F 1 235 + FrameIndex XZWY G 1 236 + FrameIndex XZWY H 1 237 + FrameIndex XZWY I 1 238 + FrameIndex XZWY J 1 239 + FrameIndex XZWY K 1 240 + FrameIndex XZWY L 1 241 + FrameIndex XZWY M 1 242 + FrameIndex XZWY N 1 243 + FrameIndex XZWY O 1 244 + FrameIndex XZWY P 1 245 + FrameIndex XZWY Q 1 246 + FrameIndex XZWY R 1 247 + FrameIndex XZWY S 1 248 + FrameIndex XZWY T 1 249 + FrameIndex XZWY U 1 250 + // Empty Load + FrameIndex XZWY V 1 251 + FrameIndex XZWY W 1 252 + FrameIndex XZWY X 1 253 + FrameIndex XZWY Y 1 254 + FrameIndex XZWY Z 1 255 + FrameIndex XZWZ A 1 256 + FrameIndex XZWZ B 1 257 + FrameIndex XZWZ C 1 258 + FrameIndex XZWZ D 1 259 + FrameIndex XZWZ E 1 260 + FrameIndex XZWZ F 1 261 + FrameIndex XZWZ G 1 262 + FrameIndex XZWZ H 1 263 + FrameIndex XZWZ I 1 264 + FrameIndex XZWZ J 1 265 + FrameIndex XZWZ K 1 266 + FrameIndex XZWZ L 1 267 + FrameIndex XZWZ M 1 268 + FrameIndex XZWZ N 1 269 + FrameIndex XZWZ O 1 270 + // Empty Load (Fired) + FrameIndex XZWZ P 1 272 + FrameIndex XZWZ Q 1 273 + FrameIndex XZWZ R 1 274 + FrameIndex XZWZ S 1 275 + FrameIndex XZWZ T 1 276 + FrameIndex XZWZ U 1 277 + FrameIndex XZWZ V 1 278 + FrameIndex XZWZ W 1 279 + FrameIndex XZWZ X 1 280 + FrameIndex XZWZ Y 1 281 + FrameIndex XZWZ Z 1 282 + FrameIndex XZW0 H 1 283 + FrameIndex XZW0 I 1 284 + FrameIndex XZW0 J 1 285 + FrameIndex XZW0 K 1 286 + FrameIndex XZW0 L 1 287 + FrameIndex XZW0 M 1 288 + FrameIndex XZW0 N 1 289 + FrameIndex XZW0 O 1 290 + FrameIndex XZW0 P 1 291 + FrameIndex XZW0 Q 1 292 } diff --git a/models/Spreadgun1st.blend b/models/Spreadgun1st.blend index 5afe565d0..cc3aee971 100644 Binary files a/models/Spreadgun1st.blend and b/models/Spreadgun1st.blend differ diff --git a/models/Spreadgun1st_a.3d b/models/Spreadgun1st_a.3d index e2af1a934..f185c3546 100644 Binary files a/models/Spreadgun1st_a.3d and b/models/Spreadgun1st_a.3d differ diff --git a/zscript/swwm_shot.zsc b/zscript/swwm_shot.zsc index 57a070714..fac11ffaa 100644 --- a/zscript/swwm_shot.zsc +++ b/zscript/swwm_shot.zsc @@ -1498,6 +1498,40 @@ Class GExploLight2 : PaletteLight } } +Class GExploRing : Actor +{ + Default + { + RenderStyle "Add"; + Scale 8.; + 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.05); + Stop; + } +} + + Class GoldenImpact : Actor { Default @@ -1520,7 +1554,7 @@ Class GoldenImpact : Actor { Super.PostBeginPlay(); A_AlertMonsters(swwm_uncapalert?0:40000); - SWWMUtility.DoExplosion(self,777,40000,600,500,DE_EXTRAZTHRUST); + SWWMUtility.DoExplosion(self,777,90000,600,500,DE_EXTRAZTHRUST); A_QuakeEx(9,9,9,40,0,5000,"",QF_RELATIVE|QF_SCALEDOWN,falloff:500,rollintensity:1.5); A_StartSound("spreadgun/goldexpl",CHAN_VOICE,attenuation:.3); A_StartSound("spreadgun/goldexpl",CHAN_WEAPON,attenuation:.15); @@ -1528,15 +1562,15 @@ Class GoldenImpact : Actor Scale *= FRandom[ExploS](0.8,1.1); Scale.x *= RandomPick[ExploS](-1,1); Scale.y *= RandomPick[ExploS](-1,1); - int numpt = Random[ExploS](10,20); + int numpt = Random[ExploS](30,40); for ( int i=0; i 20) ) return; + if ( (special1%4) || (special1 > 30) ) return; + SWWMUtility.DoExplosion(self,777,90000,600-special1*15,500-special1*15,DE_EXTRAZTHRUST); FLineTraceData d; Vector3 HitNormal; Vector3 origin; double ang, pt; for ( int i=0; i<6; i++ ) { - double totaldist = 30+(special1**2.)*1.2; + double totaldist = 30+(special1**2.)*.4; ang = FRandom[ExploS](0,360); pt = FRandom[ExploS](-90,90); origin = pos; @@ -1627,12 +1663,7 @@ Class GoldenImpact : Actor { Spawn: XEX1 AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]] 1 Bright A_GoldSpread(); - TNT1 A 1 - { - A_GoldSpread(); - if ( special1 > 20 ) Destroy(); - } - Wait; + Stop; } } @@ -1658,21 +1689,21 @@ Class GoldenSubImpact : Actor override void PostBeginPlay() { Super.PostBeginPlay(); - SWWMUtility.DoExplosion(self,77,30000,400,300,DE_EXTRAZTHRUST); + SWWMUtility.DoExplosion(self,77,80000,500,400,DE_EXTRAZTHRUST); A_QuakeEx(7,7,7,20,0,2000,"",QF_RELATIVE|QF_SCALEDOWN,falloff:200,rollintensity:.8); A_SprayDecal("BigRocketBlast",-172); Scale *= FRandom[ExploS](0.8,1.1); Scale.x *= RandomPick[ExploS](-1,1); Scale.y *= RandomPick[ExploS](-1,1); - int numpt = Random[ExploS](3,8); + int numpt = Random[ExploS](6,10); for ( int i=0; i 10) ) return; + if ( (special1%2) || (special1 > 20) ) return; + SWWMUtility.DoExplosion(self,77,80000,500-special1*10,400-special1*10,DE_EXTRAZTHRUST); FLineTraceData d; Vector3 HitNormal; Vector3 origin; double ang, pt; for ( int i=0; i<3; i++ ) { - double totaldist = 20+(special1**2.)*.8; + double totaldist = 20+(special1**2.)*.2; ang = FRandom[ExploS](0,360); pt = FRandom[ExploS](-90,90); origin = pos; @@ -1763,11 +1795,6 @@ Class GoldenSubImpact : Actor { Spawn: XEX1 ABCDEFGHIJKLMNOPQRSTUVWXYZ[\] 1 Bright A_GoldSubSpread(); - TNT1 A 1 - { - A_GoldSubSpread(); - if ( special1 > 10 ) Destroy(); - } Stop; } } @@ -1794,24 +1821,30 @@ Class GoldenSubSubImpact : Actor override void PostBeginPlay() { Super.PostBeginPlay(); - SWWMUtility.DoExplosion(self,7,20000,200,100,DE_EXTRAZTHRUST); + SWWMUtility.DoExplosion(self,7,70000,400,300,DE_EXTRAZTHRUST); A_QuakeEx(4,4,4,15,0,1000,"",QF_RELATIVE|QF_SCALEDOWN,falloff:100,rollintensity:.4); A_SprayDecal("RocketBlast",-172); Scale *= FRandom[ExploS](0.8,1.1); Scale.x *= RandomPick[ExploS](-1,1); Scale.y *= RandomPick[ExploS](-1,1); - int numpt = Random[ExploS](1,2); + int numpt = Random[ExploS](2,4); for ( int i=0; i 10) ) return; + SWWMUtility.DoExplosion(self,7,70000,400-special1*5,300-special1*5,DE_EXTRAZTHRUST); + } override void Tick() { if ( isFrozen() ) return; @@ -1826,7 +1859,7 @@ Class GoldenSubSubImpact : Actor States { Spawn: - XEX1 ABCDEFGHIJKLMNOPQRSTUVWXYZ[\] 1 Bright; + XEX1 ABCDEFGHIJKLMNOPQRSTUVWXYZ[\] 1 Bright A_GoldSubSubSpread(); Stop; } } @@ -1834,7 +1867,10 @@ Class GoldenSubSubImpact : Actor Class Spreadgun : SWWMWeapon { bool fired; // shell was used + bool chambered; // a shell is actually loaded + bool emptyup; // next reload will keep the chamber empty Class loadammo, nextammo; // currently loaded shell, next shell to load + bool initialized; transient ui TextureID WeaponBox, AmmoIcon[7], LoadedIcon[7]; transient ui Font TewiFont; @@ -1888,6 +1924,7 @@ Class Spreadgun : SWWMWeapon ox = 33; } } + if ( !chambered ) return; for ( int i=0; i<7; i++ ) { if ( loadammo != types[i] ) continue; @@ -1900,7 +1937,7 @@ Class Spreadgun : SWWMWeapon { 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; - return !fired; + return (!fired && chambered); } override bool CheckAmmo( int firemode, bool autoswitch, bool requireammo, int ammocount ) @@ -1908,7 +1945,7 @@ Class Spreadgun : SWWMWeapon static const Class types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"}; if ( (firemode == PrimaryFire) || (firemode == AltFire) ) { - if ( !fired ) return true; + if ( !fired && chambered ) return true; for ( int i=0; i<7; i++ ) if ( Owner.CountInv(types[i]) > 0 ) return true; return false; } @@ -1934,9 +1971,11 @@ Class Spreadgun : SWWMWeapon amidx = i; break; } - if ( !invoker.fired ) player.SetPSprite(PSP_WEAPON,invoker.FindState(primedstates[amidx])); + if ( !invoker.chambered ) player.SetPSprite(PSP_WEAPON,invoker.FindState("UnloadEmpty")); // no "fired" one for this, as it can never happen + else if ( !invoker.fired ) player.SetPSprite(PSP_WEAPON,invoker.FindState(primedstates[amidx])); else player.SetPSprite(PSP_WEAPON,invoker.FindState(firedstates[amidx])); - A_Overlay(-9999,"UnloadDummy"); + if ( invoker.chambered ) A_Overlay(-9999,"UnloadDummy"); + else A_Overlay(-9999,"UnloadDummyEmpty"); A_StartSound("spreadgun/deselect",CHAN_WEAPON,CHANF_OVERLAP); } @@ -1952,14 +1991,21 @@ Class Spreadgun : SWWMWeapon amidx = i; break; } - if ( !invoker.fired ) player.SetPSprite(PSP_WEAPON,invoker.FindState(primedstates[amidx])); + if ( invoker.emptyup ) + { + if ( !invoker.fired ) player.SetPSprite(PSP_WEAPON,invoker.FindState("LoadEmpty")); + else player.SetPSprite(PSP_WEAPON,invoker.FindState("LoadEmptyFired")); + } + else if ( !invoker.fired ) player.SetPSprite(PSP_WEAPON,invoker.FindState(primedstates[amidx])); else player.SetPSprite(PSP_WEAPON,invoker.FindState(firedstates[amidx])); - if ( !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) ) + if ( !invoker.emptyup && !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) ) { let amo = FindInventory(invoker.nextammo); if ( amo && (amo.Amount > 0) ) amo.Amount--; } - A_Overlay(-9999,"LoadDummy"); + if ( invoker.emptyup ) A_Overlay(-9999,"LoadDummyEmpty"); + else A_Overlay(-9999,"LoadDummy"); + invoker.emptyup = false; } action void A_DropShell() @@ -2347,6 +2393,7 @@ Class Spreadgun : SWWMWeapon action void A_LoadShell() { A_StartSound("spreadgun/shellin",CHAN_WEAPON,CHANF_OVERLAP); + invoker.chambered = true; invoker.loadammo = invoker.nextammo; } @@ -2363,7 +2410,7 @@ Class Spreadgun : SWWMWeapon { bool good = Super.PickupForAmmoSWWM(ownedWeapon); let Owner = ownedWeapon.Owner; - if ( (AmmoGive1 == 0) && loadammo && !fired ) + if ( (AmmoGive1 == 0) && loadammo && !fired && chambered ) { let cur = Owner.FindInventory(loadammo); if ( !cur ) @@ -2384,7 +2431,13 @@ Class Spreadgun : SWWMWeapon { static const Class types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"}; Super.AttachToOwner(other); - if ( !loadammo ) loadammo = "RedShell"; + if ( !initialized ) + { + initialized = true; + if ( !loadammo ) loadammo = "RedShell"; + fired = false; + chambered = true; + } for ( int i=0; i<7; i++ ) { Ammo a = Ammo(other.FindInventory(types[i])); @@ -2445,7 +2498,15 @@ Class Spreadgun : SWWMWeapon action void A_AltHold() { A_WeaponReady(WRF_NOFIRE); + // tap fire to unload round + if ( invoker.chambered && (player.cmd.buttons&BT_ATTACK) ) + { + invoker.emptyup = true; + player.SetPSPrite(PSP_WEAPON,invoker.FindState("Reload")); + return; + } if ( player.cmd.buttons&BT_ALTATTACK ) return; + A_SwitchAmmoType(); if ( !invoker.fired ) player.SetPSPrite(PSP_WEAPON,invoker.FindState("Ready")); else player.SetPSPrite(PSP_WEAPON,invoker.FindState("ReadyFired")); } @@ -2514,6 +2575,7 @@ Class Spreadgun : SWWMWeapon if ( invoker.nextammo && (CountInv(invoker.nextammo) > 0) && (invoker.loadammo != invoker.nextammo) ) flg |= WRF_ALLOWRELOAD; A_WeaponReady(flg); + return ResolveState(null); } Wait; ReadyFired: @@ -2527,12 +2589,13 @@ Class Spreadgun : SWWMWeapon A_WeaponReady(flg); if ( player.cmd.buttons&(BT_ATTACK|BT_ALTATTACK) ) invoker.CheckAmmo(EitherFire,true); + return ResolveState(null); } Wait; Fire: #### # 1 { - if ( invoker.fired ) return ResolveState("Reload"); + if ( invoker.fired || !invoker.chambered ) return ResolveState("Reload"); A_FireShell(); return ResolveState(null); } @@ -2540,7 +2603,6 @@ Class Spreadgun : SWWMWeapon XZW2 VWXY 2; Goto ReadyFired; AltFire: - #### # 1 A_SwitchAmmoType(); #### # 1 A_AltHold(); Wait; Reload: @@ -2552,9 +2614,17 @@ Class Spreadgun : SWWMWeapon Stop; UnloadDummy: // overlay with shared functions for all unload anims TNT1 A 11; - TNT1 A 14 A_StartSound("spreadgun/open",CHAN_WEAPON,CHANF_OVERLAP); + TNT1 A 14 + { + invoker.chambered = false; + A_StartSound("spreadgun/open",CHAN_WEAPON,CHANF_OVERLAP); + } TNT1 A 1 A_DropShell(); Stop; + UnloadDummyEmpty: + TNT1 A 11; + TNT1 A 14 A_StartSound("spreadgun/open",CHAN_WEAPON,CHANF_OVERLAP); + Stop; UnloadRedFired: XZW2 Z 2; XZW3 QRST 2; @@ -2648,6 +2718,11 @@ Class Spreadgun : SWWMWeapon XZWP ABCDE 1; XZWW V 1; Goto Reload2; + UnloadEmpty: + XZW2 A 2; + XZWY CDEF 2; + XZWY GHIJKLMNOPQRSTU 1; + Goto Reload2; Reload2: #### # 1 A_SelectLoadState(); Stop; @@ -2658,6 +2733,12 @@ Class Spreadgun : SWWMWeapon TNT1 A 2 A_Prime(); TNT1 A 1 { invoker.PlayUpSound(self); } Stop; + LoadDummyEmpty: + TNT1 A 9; + TNT1 A 2 A_StartSound("spreadgun/close",CHAN_WEAPON,CHANF_OVERLAP); + TNT1 A 2 A_Prime(); + TNT1 A 1 { invoker.PlayUpSound(self); } + Stop; LoadRedFired: XZW8 MNOPQRSTUVWXYZ 1; XZW9 ABCDEFGHIJKLMNOPQRS 1; @@ -2716,6 +2797,14 @@ Class Spreadgun : SWWMWeapon XZWX ABCDEFGHIJKLMNOPQRSTUVWXYZ 1; XZWY AB 1; Goto Ready; + LoadEmpty: + XZWY UVWXYZ 1; + XZWZ ABCDEFGHIJKLMNO 1; + Goto Ready; + LoadEmptyFired: + XZWZ PQRSTUVWXYZ 1; + XZW0 HIJKLMNOPQ 1; + Goto Ready; Zoom: XZW2 A 1 { @@ -2779,7 +2868,7 @@ Class Spreadgun : SWWMWeapon XZWK FGHI 2; Goto ReadyFired; FlashRed: - XZWZ A 2 Bright + XZW0 A 2 Bright { let l = Spawn("SWWMWeaponLight",pos); l.args[3] = 120; @@ -2787,7 +2876,7 @@ Class Spreadgun : SWWMWeapon } Stop; FlashGreen: - XZWZ B 2 Bright + XZW0 B 2 Bright { let l = Spawn("SWWMWeaponLight",pos); l.args[3] = 90; @@ -2795,7 +2884,7 @@ Class Spreadgun : SWWMWeapon } Stop; FlashWhite: - XZWZ C 2 Bright + XZW0 C 2 Bright { let l = Spawn("SWWMWeaponLight",pos); l.args[1] = 176; @@ -2805,7 +2894,7 @@ Class Spreadgun : SWWMWeapon } Stop; FlashBlue: - XZWZ D 2 Bright + XZW0 D 2 Bright { let l = Spawn("SWWMWeaponLight",pos); l.args[0] = 96; @@ -2816,7 +2905,7 @@ Class Spreadgun : SWWMWeapon } Stop; FlashBlack: - XZWZ E 2 Bright + XZW0 E 2 Bright { let l = Spawn("SWWMWeaponLight",pos); l.args[3] = 60; @@ -2824,7 +2913,7 @@ Class Spreadgun : SWWMWeapon } Stop; FlashPurple: - XZWZ F 2 Bright + XZW0 F 2 Bright { let l = Spawn("SWWMWeaponLight",pos); l.args[3] = 60; @@ -2832,7 +2921,7 @@ Class Spreadgun : SWWMWeapon } Stop; FlashGold: - XZWZ G 2 Bright + XZW0 G 2 Bright { let l = Spawn("SWWMWeaponLight",pos); l.args[3] = 300; diff --git a/zscript/swwm_thiccboolet.zsc b/zscript/swwm_thiccboolet.zsc index 6858ff5ae..ffb99cac8 100644 --- a/zscript/swwm_thiccboolet.zsc +++ b/zscript/swwm_thiccboolet.zsc @@ -408,6 +408,40 @@ Class ExploLight3 : PaletteLight 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; @@ -491,6 +525,7 @@ Class FatChodeImpact : Actor e.pitch = asin(-dir.z); } Spawn("ExploLight3",pos); + Spawn("FatChodeRing",pos); } override void Tick() {