diff --git a/PYWHEEL.txt b/PYWHEEL.txt index f8a79453a..0db7ce0d5 100644 --- a/PYWHEEL.txt +++ b/PYWHEEL.txt @@ -1,8 +1,7 @@ Demolitionist { - include "PusherWeapon"; - //include "ItamexHammer"; include "DeepImpact"; + //include "ItamexHammer"; include "ExplodiumGun"; //include "PlasmaBlast"; include "Spreadgun"; diff --git a/README.md b/README.md index 20097f0f3..4ce8a99cd 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ All weapons also have a quick melee attack using the **Weapon State 1** button, If a weapon has no actions on either the reload or zoom buttons, it may be replaced with some special idle action, such as spinning or fiddling around with it. -Do note that *(with the exception of the **Deep Impact**)*, you can only have one of each weapon per slot. Make sure you think things through with how to set up your loadout, 'cause you can't carry everything *(that is, unless you toggle the option to do so, which completely defeats this attempt at balance)*. +Keep in mind you can only have one of each weapon per slot *(with the exception of slot 1)*, so make sure you think things through with how to set up your loadout, 'cause you can't carry everything *(that is, unless you toggle the option to do so, which completely defeats this attempt at balance)*. ### Deep Impact (slot 1) ~ Replaces Fist, Staff, Hexen starting weapons ![](docimg/deepimpact.png) @@ -83,15 +83,6 @@ The signature **SWWM** melee weapon, an **Impact Hammer** on steroids. Equipped by default on spawned players. -### Pusher (slot 1) ~ Replaces Chainsaw, Gauntlets, Timon's Axe -![](docimg/pusher.png) - -What was going to be the new melee weapon in **Ultra Suite 2**, but it never happened. A pimped up jackhammer. - -**Primary fire:** Drill at whatever you're facing. - -**Secondary fire:** Pull the drill bit back all the way in, then on button release push it back out with immense force. This will pretty much pierce a hole through anything, but if you miss there's a chance you'll lose grip on the weapon and it'll go flying until it hits something. - ### Combat Hammer (slot 1) ~ Replaces Chainsaw, Gauntlets, Timon's Axe ![](docimg/hammer.png) diff --git a/achievements.lst b/achievements.lst index 1ef20b0d0..0c4835dfa 100644 --- a/achievements.lst +++ b/achievements.lst @@ -113,7 +113,6 @@ stomp,40,yes,any sunny,15,yes,any #tbd,0,no,doom tele,0,no,any -tender,100,yes,any #tennis,0,no,any thicc,100,yes,any thruwall,20,yes,any diff --git a/docimg/pusher.png b/docimg/pusher.png deleted file mode 100644 index 83b318036..000000000 Binary files a/docimg/pusher.png and /dev/null differ diff --git a/gldefs.misc b/gldefs.misc index c4a214b21..d8660229d 100644 --- a/gldefs.misc +++ b/gldefs.misc @@ -118,10 +118,6 @@ HardwareShader Texture "graphics/M_DEMOCHAN_YNYKRON.png" { Shader "shaders/glsl/Bilinear.fp" } -HardwareShader Texture "graphics/M_DEMOCHAN_PUSHER.png" -{ - Shader "shaders/glsl/Bilinear.fp" -} HardwareShader Texture "graphics/M_DEMOCHAN_DAB.png" { Shader "shaders/glsl/Bilinear.fp" diff --git a/graphics/Achievements/AchievementTender.png b/graphics/Achievements/AchievementTender.png deleted file mode 100644 index f2b171e99..000000000 Binary files a/graphics/Achievements/AchievementTender.png and /dev/null differ diff --git a/graphics/HUD/Icons/W_Pusher.png b/graphics/HUD/Icons/W_Pusher.png deleted file mode 100644 index c4dd69998..000000000 Binary files a/graphics/HUD/Icons/W_Pusher.png and /dev/null differ diff --git a/graphics/HUD/PusherBar.png b/graphics/HUD/PusherBar.png deleted file mode 100644 index a4e513f31..000000000 Binary files a/graphics/HUD/PusherBar.png and /dev/null differ diff --git a/graphics/HUD/PusherDisplay.png b/graphics/HUD/PusherDisplay.png deleted file mode 100644 index f6c8346da..000000000 Binary files a/graphics/HUD/PusherDisplay.png and /dev/null differ diff --git a/graphics/M_DEMOCHAN_PUSHER.png b/graphics/M_DEMOCHAN_PUSHER.png deleted file mode 100644 index 80f5c3cf7..000000000 Binary files a/graphics/M_DEMOCHAN_PUSHER.png and /dev/null differ diff --git a/language.def_base b/language.def_base index 16861f4d3..d2a42ae2b 100644 --- a/language.def_base +++ b/language.def_base @@ -1,8 +1,6 @@ [default] // tags, pickups T_DEMOLITIONIST = "Demolitionist"; -T_PUSHER = "Pusher"; -I_PUSHER = "\"Pusher\" Microfusion Rotary Hammer"; T_DEEPIMPACT = "Deep Impact"; I_DEEPIMPACT = "\"Deep Impact\" Airblaster"; T_EXPLODIUM = "Explodium Gun"; @@ -480,7 +478,6 @@ FN_ELITEZOMBIE_FUN1 = "Fastzomb"; FN_ELITEZOMBIE_FUN2 = "He Schutt"; FN_ELITEZOMBIE_FUN3 = "Blondie Boy"; // obituaries -O_PUSHER = "%k carefully removed %o's cavities."; O_DEEPIMPACT = "%o was impacted deeply by %k."; O_DEEPIMPACT_WEAK = "%k coughed in %o's general direction."; O_EXPLODIUM = "%k inflicted severe knee explosions onto %o."; @@ -721,9 +718,6 @@ SWWM_PLACE3 = "3rd"; SWWM_PAUSE = "PAUSED"; // weapon tooltips SWWM_TTNOTE = "Note: Weapon tooltips can be deactivated in DEMOLITIONIST Options."; -TT_PUSHER = -"\cfFire:\c- Drill.\n" -"\cfAltfire:\c- Charged attack."; TT_DEEPIMPACT = "\cfFire:\c- Air push.\n" "\cfAltfire:\c- Charged shot.\n" @@ -918,7 +912,7 @@ SWWM_INTERTIP = "Tip #%d:"; SWWM_INTERTIP1 = "The Demolitionist is immune to drowning, poison and even fall damage (excluding instant kill pits)."; SWWM_INTERTIP2 = "The Explodium Gun's altfire has an explosive yield proportional to the bullets left in the mag."; SWWM_INTERTIP3 = "Your fuel regenerates over time, but the more you use the impulsor, the longer this will take."; -SWWM_INTERTIP4 = "The Pusher has a chance to slip off your hands on altfire if it doesn't land a hit, however as a ranged attack it may still be effective."; +SWWM_INTERTIP4 = "The Deep Impact may look like a toy, but it's really useful for making some distance from enemies, and it can even blow away incoming barrages of projectiles."; SWWM_INTERTIP5 = "Spare copies of items will be stashed away in your inventory if they can't be immediately used, this even includes health and armor."; SWWM_INTERTIP6 = "The Omnisight makes it easy to track down keys and secret exits in maps."; SWWM_INTERTIP7 = "True to its name, the Wallbuster can be used to completely obliterate doors and other obstacles, depending on their size and how many barrels you shoot."; @@ -1279,8 +1273,6 @@ SWWM_ACHIEVEMENT_SUNNY_TAG = "Sunny D"; SWWM_ACHIEVEMENT_SUNNY_TXT = "Use %d Invinciballs"; SWWM_ACHIEVEMENT_TELE_TAG = "A Soldier's Pastime"; SWWM_ACHIEVEMENT_TELE_TXT = "Teleport some bread (a sandwich works too)"; -SWWM_ACHIEVEMENT_TENDER_TAG = "Thorough Tenderizing"; -SWWM_ACHIEVEMENT_TENDER_TXT = "Kill %d enemies with the Pusher"; SWWM_ACHIEVEMENT_THICC_TAG = "The Ass was Fat"; SWWM_ACHIEVEMENT_THICC_TXT = "Kill %d enemies by ground pounding"; SWWM_ACHIEVEMENT_THRUWALL_TAG = "Knock Knock"; diff --git a/language.def_lore b/language.def_lore index 25441f768..02a15131f 100644 --- a/language.def_lore +++ b/language.def_lore @@ -3069,29 +3069,6 @@ SWWM_LORETXT_PUNTZERGAMMA = "\cfBy the way I just realized something: SMW bullets are 6.9mm.\c-\n" "\n" "\cfNice.\c-"; -SWWM_LORETAG_PUSHERWEAPON = "Pusher"; -SWWM_LORETAB_PUSHERWEAPON = "Item"; -SWWM_LOREREL_PUSHERWEAPON = "EngineTech;Mixom;UAC"; -SWWM_LORETXT_PUSHERWEAPON = -"\cxDesignation:\c-\n" -"\cf \"Pusher\" Microfusion Rotary Hammer\c-\n" -"\cxManufacturer:\c-\n" -"\cf Tach-Engine Technology Institute\c-\n" -"\cxClassification:\c-\n" -"\cf Mining Tool\c-\n" -"\n" -"The \cfPusher\c- is a somewhat portable rotary hammer meant for mining and construction work. Its portability comes in part from the usage of an internal microfusion battery, also courtesy of \cfTach-Engine Technologies\c-, providing enough power for 300 hours of constant use. Tach-Engine Technologies does not hold itself responsible for any misuse of this tool.\n" -"\n" -"\cfPrimary Fire:\c- Normal operation. Aim the drill bit at whatever you need to break, and hold the upper trigger.\n" -"\n" -"\cfSecondary Fire:\c- For those cases where you find some real tough material that's hard to crack. Twist the side handle until the drill bit has receded to what you feel is the adequate distance, then tap the primary trigger for it to strike at the target, with full force.\n" -"\n" -"\cfWARNING:\c- Inadequate grip during secondary operation may cause the tool to slip off, always keep the area clear to prevent collateral damages.\n" -"\n" -"\cxSaya's Notes:\c-\n" -"\cfYeah, chainsaws are a staple of \"tool turned weapon\", we all know this, but what about goddamn jackhammers?\c-\n" -"\n" -"\cfYou know actually, that reminded me of this one bigass blunder from Mixom. Those UAC nerds had requested a shipment of jackhammers to be sent to Mars City once, and these idiots go and send chainsaws instead. That's one hell of a mixup, don't ya think?\c-"; SWWM_LORETAG_QUADRAVOL = "Quadravol"; SWWM_LORETAB_QUADRAVOL = "Item"; SWWM_LOREREL_QUADRAVOL = "Kmonn;Xekke"; diff --git a/language.def_menu b/language.def_menu index 577c00f9e..6b9d4f4f6 100644 --- a/language.def_menu +++ b/language.def_menu @@ -423,7 +423,7 @@ TOOLTIP_NETEVENT_SWWMUPDATEGLOWS = "Adds/Removes item glows at runtime, without TOOLTIP_NETEVENT_SWWMUPDATEHITBOXES = "Removes extended item hitboxes at runtime. Due to implementation quirks, they can't be added without a map restart."; TOOLTIP_NETEVENT_SWWMUPDATETRACKERS = "Adds/Removes combat trackers at runtime. This command has the potential to cause severe performance issues in certain situations."; // main menu poses (do not localize) -SWWM_NMENUPOSE = "21"; +SWWM_NMENUPOSE = "20"; SWWM_MENUPOSE1 = "graphics/M_DEMOCHAN_DEEPIMPACT.png"; SWWM_MENUPOSE2 = "graphics/M_DEMOCHAN_EXPLOGUN.png"; SWWM_MENUPOSE3 = "graphics/M_DEMOCHAN_SPREADGUN.png"; @@ -434,17 +434,16 @@ SWWM_MENUPOSE7 = "graphics/M_DEMOCHAN_BIOSPARK.png"; SWWM_MENUPOSE8 = "graphics/M_DEMOCHAN_SILVERBULLET.png"; SWWM_MENUPOSE9 = "graphics/M_DEMOCHAN_CANDYGUN.png"; SWWM_MENUPOSE10 = "graphics/M_DEMOCHAN_YNYKRON.png"; -SWWM_MENUPOSE11 = "graphics/M_DEMOCHAN_PUSHER.png"; -SWWM_MENUPOSE12 = "graphics/M_DEMOCHAN_DAB.png"; -SWWM_MENUPOSE13 = "graphics/M_DEMOCHAN_DOUBLEV.png"; -SWWM_MENUPOSE14 = "graphics/M_DEMOCHAN_HEALTH.png"; -SWWM_MENUPOSE15 = "graphics/M_DEMOCHAN_LOVE.png"; -SWWM_MENUPOSE16 = "graphics/M_DEMOCHAN_RAGEKIT.png"; -SWWM_MENUPOSE17 = "graphics/M_DEMOCHAN_SANDWICH.png"; -SWWM_MENUPOSE18 = "graphics/M_DEMOCHAN_SHELLS.png"; -SWWM_MENUPOSE19 = "graphics/M_DEMOCHAN_SKULL.png"; -SWWM_MENUPOSE20 = "graphics/M_DEMOCHAN_THONK.png"; -SWWM_MENUPOSE21 = "graphics/M_DEMOCHAN_THUMBUP.png"; +SWWM_MENUPOSE11 = "graphics/M_DEMOCHAN_DAB.png"; +SWWM_MENUPOSE12 = "graphics/M_DEMOCHAN_DOUBLEV.png"; +SWWM_MENUPOSE13 = "graphics/M_DEMOCHAN_HEALTH.png"; +SWWM_MENUPOSE14 = "graphics/M_DEMOCHAN_LOVE.png"; +SWWM_MENUPOSE15 = "graphics/M_DEMOCHAN_RAGEKIT.png"; +SWWM_MENUPOSE16 = "graphics/M_DEMOCHAN_SANDWICH.png"; +SWWM_MENUPOSE17 = "graphics/M_DEMOCHAN_SHELLS.png"; +SWWM_MENUPOSE18 = "graphics/M_DEMOCHAN_SKULL.png"; +SWWM_MENUPOSE19 = "graphics/M_DEMOCHAN_THONK.png"; +SWWM_MENUPOSE20 = "graphics/M_DEMOCHAN_THUMBUP.png"; // credits SWWM_MCREDS = "DEMOLITIONIST Credits"; SWWM_CSTITLE = "UnSX Side Story: Demolitionist"; diff --git a/language.def_voice b/language.def_voice index 219d3778e..5d5a068d7 100644 --- a/language.def_voice +++ b/language.def_voice @@ -281,7 +281,6 @@ SWWM_SUBS_DEFAULT_KORAXMASTERS9 = "Urgh... Please just shut the fuck up."; /// Extra lines that wouldn't be possible without original voice acting // per-weapon lines (alternative) SWWM_SUBS_DEFAULT_GETDEEPIMPACT = "I'll huff and I'll puff... and I'll blow your house in."; -SWWM_SUBS_DEFAULT_GETPUSHERWEAPON = "Anyone wants their cavities removed?"; SWWM_SUBS_DEFAULT_GETEXPLODIUMGUN1 = "Ah, my trusty old friend."; SWWM_SUBS_DEFAULT_GETEXPLODIUMGUN2 = "Twice the knee-exploding power."; SWWM_SUBS_DEFAULT_GETSPREADGUN = "Look at this pocket shotty."; diff --git a/language.es_base b/language.es_base index 900dd3616..296cc3059 100644 --- a/language.es_base +++ b/language.es_base @@ -1,7 +1,6 @@ [es] // tags, pickups T_DEMOLITIONIST = "Demolicionista"; -I_PUSHER = "Taladro Percutor de Microfusión \"Pusher\""; I_DEEPIMPACT = "Pistola de Aire \"Deep Impact\""; T_EXPLODIUM = "Pistola de Explodium"; T_EXPLODIUM2 = "Pistolas de Explodium"; @@ -379,7 +378,6 @@ FN_ELITEZOMBIE_FUN1 = "Zomborápido"; FN_ELITEZOMBIE_FUN2 = "Te Dispara"; FN_ELITEZOMBIE_FUN3 = "Rubiales"; // obituaries -O_PUSHER = "%k le quitó cuidadosamente las caries a %o."; O_DEEPIMPACT = "%o fue impactad@[ao_esp] profundamente por %k."; O_DEEPIMPACT_WEAK = "%k tosió en la dirección general de %o."; O_EXPLODIUM = "%k infligió explosiones de rodilla severas a %o."; @@ -607,9 +605,6 @@ SWWM_PLACE3_GENDER1 = "3ª"; SWWM_PAUSE = "PAUSA"; // weapon tooltips SWWM_TTNOTE = "Nota: La ayuda de armas se puede desactivar en Opciones de DEMOLITIONIST."; -TT_PUSHER = -"\cfPrimario:\c- Taladrar.\n" -"\cfSecundario:\c- Ataque cargado."; TT_DEEPIMPACT = "\cfPrimario:\c- Impulso de aire.\n" "\cfSecundario:\c- Disparo cargado.\n" @@ -800,7 +795,7 @@ SWWM_INTERTIP = "Consejo #%d:"; SWWM_INTERTIP1 = "La Demolicionista es inmune al ahogamiento, veneno e incluso daño por caída (excluyendo hoyos de muerte instantánea)."; SWWM_INTERTIP2 = "El fuego secundario de la Pistola de Explodium tiene una carga explosiva proporcional al número de balas restantes en el cargador."; SWWM_INTERTIP3 = "Tu combustible se regenera con el tiempo, pero cuanto más uses el propulsor, más tardará."; -SWWM_INTERTIP4 = "El Pusher puede resbalarse de tus manos con el fuego secundario si no le da a nada, sin embargo esto puede ser efectivo como ataque a distancia."; +SWWM_INTERTIP4 = "El Deep Impact parecerá un juguete, pero es muy útil para mantener la distancia con los enemigos, y puede hasta librarte de bombardeos de proyectiles de un soplido."; SWWM_INTERTIP5 = "Se guardarán copias extra de ítems en tu inventario si no pueden ser usados inmediatamente, esto incluye hasta salud y armadura."; SWWM_INTERTIP6 = "La Omnivisión facilita encontrar llaves y salidas secretas en los mapas."; SWWM_INTERTIP7 = "Tal como su nombre indica, la Wallbuster puede cargarse paredes y otros obstáculos, dependiendo de su tamaño y el número de cañones que dispares."; @@ -1122,8 +1117,6 @@ SWWM_ACHIEVEMENT_STOMP_TXT = "Mata %d enemigos saltando encima"; SWWM_ACHIEVEMENT_SUNNY_TXT = "Usa %d Invincibolas"; SWWM_ACHIEVEMENT_TELE_TAG = "Pasatiempo de Soldado"; SWWM_ACHIEVEMENT_TELE_TXT = "Teletransporta pan (un sandwich también vale)"; -SWWM_ACHIEVEMENT_TENDER_TAG = "Eficiente Enternecido"; -SWWM_ACHIEVEMENT_TENDER_TXT = "Mata %d enemigos con el Pusher"; SWWM_ACHIEVEMENT_THICC_TAG = "El Culo era Gordo"; SWWM_ACHIEVEMENT_THICC_TXT = "Mata %d enemigos a base de estampidas en el suelo"; SWWM_ACHIEVEMENT_THRUWALL_TAG = "Toc Toc"; diff --git a/language.es_lore b/language.es_lore index c7841f650..3661820c0 100644 --- a/language.es_lore +++ b/language.es_lore @@ -2849,26 +2849,6 @@ SWWM_LORETXT_PUNTZERGAMMA = "\cfPor cierto me acabo de dar cuenta de algo: Las balas SMW son de 6.9mm.\c-\n" "\n" "\cfNice.\c-"; -SWWM_LORETXT_PUSHERWEAPON = -"\cxDesignación:\c-\n" -"\cf Taladro Percutor de Microfusión \"Pusher\"\c-\n" -"\cxFabricante:\c-\n" -"\cf Instituto Tecnológico Tach-Engine\c-\n" -"\cxClasificación:\c-\n" -"\cf Herramienta de Minería\c-\n" -"\n" -"El \cfPusher\c- es un taladro percutor relativamente portátil hecho para tareas de minería y construcción. Su portabilidad viene en parte por el uso de una batería interna de microfusión, también cortesía de \cfTecnologías Tach-Engine\c-, ofreciendo suficiente potencia para 300 horas de uso constante. Tecnologías Tach-Engine no se hace responsable por el uso indebido de esta herramienta.\n" -"\n" -"\cfFuego Primario:\c- Operación normal. Apunta la broca hacia lo que necesites romper, y mantén pulsado el gatillo superior.\n" -"\n" -"\cfFuego Secundario:\c- Para aquellos casos en los que encuentres un material realmente duro y difícil de romper. Gira el mango lateral hasta que la broca haya retrocedido hasta una distancia que consideres adecuada, y luego pulsa el gatillo principal para golpear el objetivo, con la fuerza cargada.\n" -"\n" -"\cfADVERTENCIA:\c- La sujeción indebida durante la operación secundaria puede causar que la herramienta se resbale, mantén siempre el área libre para evitar daños colaterales.\n" -"\n" -"\cxNotas de Saya:\c-\n" -"\cfSí, las motosierras son lo típico en cuanto a \"herramienta hecha arma\", todos lo sabemos, pero, ¿y un puto martillo neumático?\c-\n" -"\n" -"\cfAhora que lo pienso, eso me recuerda a aquella metedura de pata tremenda de Mixom. Los frikis de la UAC pidieron un monte de martillos neumáticos para Mars City una vez, y los burros esos van y mandan motosierras. Pues vaya lío ese, ¿no crees?\c-"; SWWM_LORETXT_QUADRAVOL = "\cxDesignación:\c-\n" "\cf Quadravol (\"Cruz Ardiente\")\c-\n" diff --git a/language.es_voice b/language.es_voice index f3aa15287..5270b4a80 100644 --- a/language.es_voice +++ b/language.es_voice @@ -253,7 +253,6 @@ SWWM_SUBS_DEFAULT_KORAXMASTERS9 = "Urgh... Por favor cállate la puta boca ya."; /// Extra lines that wouldn't be possible without original voice acting // per-weapon lines (alternative) SWWM_SUBS_DEFAULT_GETDEEPIMPACT = "Soplaré y soplaré... y vuestra casa derribaré."; -SWWM_SUBS_DEFAULT_GETPUSHERWEAPON = "¿Alguien quiere que le quite las caries?"; SWWM_SUBS_DEFAULT_GETEXPLODIUMGUN1 = "Ah, mi fiel amigo."; SWWM_SUBS_DEFAULT_GETEXPLODIUMGUN2 = "Doble poder revienta-rodillas."; SWWM_SUBS_DEFAULT_GETSPREADGUN = "Mira que escopetita."; diff --git a/language.version b/language.version index c8853266d..d50df73f3 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r65 \cu(Fri 13 May 18:29:45 CEST 2022)\c-"; -SWWM_SHORTVER="\cw1.3pre r65 \cu(2022-05-13 18:29:45)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r66 \cu(Mon 16 May 16:39:11 CEST 2022)\c-"; +SWWM_SHORTVER="\cw1.3pre r66 \cu(2022-05-16 16:39:11)\c-"; diff --git a/lore/default/pusherweapon.txt b/lore/default/pusherweapon.txt deleted file mode 100644 index ec78a6ee3..000000000 --- a/lore/default/pusherweapon.txt +++ /dev/null @@ -1,26 +0,0 @@ -TAG -Pusher -TAB -Item -REL -EngineTech;Mixom;UAC -TXT -\cxDesignation:\c- -\cf "Pusher" Microfusion Rotary Hammer\c- -\cxManufacturer:\c- -\cf Tach-Engine Technology Institute\c- -\cxClassification:\c- -\cf Mining Tool\c- - -The **Pusher** is a somewhat portable rotary hammer meant for mining and construction work. Its portability comes in part from the usage of an internal microfusion battery, also courtesy of **Tach-Engine Technologies**, providing enough power for 300 hours of constant use. Tach-Engine Technologies does not hold itself responsible for any misuse of this tool. - -\cfPrimary Fire:\c- Normal operation. Aim the drill bit at whatever you need to break, and hold the upper trigger. - -\cfSecondary Fire:\c- For those cases where you find some real tough material that's hard to crack. Twist the side handle until the drill bit has receded to what you feel is the adequate distance, then tap the primary trigger for it to strike at the target, with full force. - -\cfWARNING:\c- Inadequate grip during secondary operation may cause the tool to slip off, always keep the area clear to prevent collateral damages. - -\cxSaya's Notes:\c- -\cfYeah, chainsaws are a staple of "tool turned weapon", we all know this, but what about goddamn jackhammers?\c- - -\cfYou know actually, that reminded me of this one bigass blunder from Mixom. Those UAC nerds had requested a shipment of jackhammers to be sent to Mars City once, and these idiots go and send chainsaws instead. That's one hell of a mixup, don't ya think?\c- diff --git a/lore/es/pusherweapon.txt b/lore/es/pusherweapon.txt deleted file mode 100644 index 15b2dedcc..000000000 --- a/lore/es/pusherweapon.txt +++ /dev/null @@ -1,20 +0,0 @@ -TXT -\cxDesignación:\c- -\cf Taladro Percutor de Microfusión "Pusher"\c- -\cxFabricante:\c- -\cf Instituto Tecnológico Tach-Engine\c- -\cxClasificación:\c- -\cf Herramienta de Minería\c- - -El **Pusher** es un taladro percutor relativamente portátil hecho para tareas de minería y construcción. Su portabilidad viene en parte por el uso de una batería interna de microfusión, también cortesía de **Tecnologías Tach-Engine**, ofreciendo suficiente potencia para 300 horas de uso constante. Tecnologías Tach-Engine no se hace responsable por el uso indebido de esta herramienta. - -\cfFuego Primario:\c- Operación normal. Apunta la broca hacia lo que necesites romper, y mantén pulsado el gatillo superior. - -\cfFuego Secundario:\c- Para aquellos casos en los que encuentres un material realmente duro y difícil de romper. Gira el mango lateral hasta que la broca haya retrocedido hasta una distancia que consideres adecuada, y luego pulsa el gatillo principal para golpear el objetivo, con la fuerza cargada. - -\cfADVERTENCIA:\c- La sujeción indebida durante la operación secundaria puede causar que la herramienta se resbale, mantén siempre el área libre para evitar daños colaterales. - -\cxNotas de Saya:\c- -\cfSí, las motosierras son lo típico en cuanto a "herramienta hecha arma", todos lo sabemos, pero, ¿y un puto martillo neumático?\c- - -\cfAhora que lo pienso, eso me recuerda a aquella metedura de pata tremenda de Mixom. Los frikis de la UAC pidieron un monte de martillos neumáticos para Mars City una vez, y los burros esos van y mandan motosierras. Pues vaya lío ese, ¿no crees?\c- diff --git a/modeldef.pusher b/modeldef.pusher deleted file mode 100644 index b7ca22e7d..000000000 --- a/modeldef.pusher +++ /dev/null @@ -1,151 +0,0 @@ -Model "PusherProjectile" -{ - Path "models" - - Model 0 "PusherPickup_d.3d" - Skin 0 "Pusher.png" - Scale 0.15 0.15 0.15 - ZOffset 5 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 -} - -Model "PusherWeapon" -{ - Path "models" - - Model 0 "PusherPickup_d.3d" - Skin 0 "Pusher.png" - Scale 0.15 0.15 0.15 - AngleOffset 180 - ZOffset 20 - ROTATING - - FrameIndex XZW1 A 0 0 -} - -Model "PusherWeapon" -{ - Path "models" - - Model 1 "Pusher1st_d.3d" - SurfaceSkin 1 0 "DemoTags.png" - SurfaceSkin 1 1 "DemoArms.png" - SurfaceSkin 1 2 "DemoSoft.png" - SurfaceSkin 1 3 "Pusher.png" - - AngleOffset -90 - Scale -0.005 0.0025 0.005 - Offset 2 0 1 - - // Still / Deselect - FrameIndex XZW2 A 1 0 - FrameIndex XZW2 B 1 1 - FrameIndex XZW2 C 1 2 - FrameIndex XZW2 D 1 3 - FrameIndex XZW2 E 1 4 - FrameIndex XZW2 F 1 5 - // DeselectEnd / Select - FrameIndex XZW2 G 1 6 - FrameIndex XZW2 H 1 7 - FrameIndex XZW2 I 1 8 - FrameIndex XZW2 J 1 9 - FrameIndex XZW2 K 1 10 - FrameIndex XZW2 L 1 11 - // FireStart - FrameIndex XZW2 M 1 13 - // Fire - FrameIndex XZW2 N 1 14 - FrameIndex XZW2 O 1 15 - FrameIndex XZW2 P 1 16 - FrameIndex XZW2 Q 1 17 - FrameIndex XZW2 R 1 18 - FrameIndex XZW2 S 1 19 - // FireEnd - FrameIndex XZW2 T 1 21 - // AltFire - FrameIndex XZW2 U 1 23 - FrameIndex XZW2 V 1 24 - FrameIndex XZW2 W 1 25 - FrameIndex XZW2 X 1 26 - FrameIndex XZW2 Y 1 27 - FrameIndex XZW2 Z 1 28 - FrameIndex XZW3 A 1 29 - FrameIndex XZW3 B 1 30 - FrameIndex XZW3 C 1 31 - FrameIndex XZW3 D 1 32 - FrameIndex XZW3 E 1 33 - FrameIndex XZW3 F 1 34 - FrameIndex XZW3 G 1 35 - FrameIndex XZW3 H 1 36 - // AltFireRelease - FrameIndex XZW5 R 1 37 // oops, forgot this frame - FrameIndex XZW3 I 1 38 - FrameIndex XZW3 J 1 39 - FrameIndex XZW3 K 1 40 - FrameIndex XZW3 L 1 41 - FrameIndex XZW3 M 1 42 - FrameIndex XZW3 N 1 43 - FrameIndex XZW3 O 1 44 - FrameIndex XZW3 P 1 45 - // AltFireMiss - SurfaceSkin 1 3 "" - FrameIndex XZW3 Q 1 47 - FrameIndex XZW3 R 1 48 - FrameIndex XZW3 S 1 49 - FrameIndex XZW3 T 1 50 - FrameIndex XZW3 U 1 51 - FrameIndex XZW3 V 1 52 - FrameIndex XZW3 W 1 53 - SurfaceSkin 1 3 "Pusher.png" - // Idle - FrameIndex XZW3 X 1 55 - FrameIndex XZW3 Y 1 56 - FrameIndex XZW3 Z 1 57 - FrameIndex XZW4 A 1 58 - FrameIndex XZW4 B 1 59 - FrameIndex XZW4 C 1 60 - FrameIndex XZW4 D 1 61 - FrameIndex XZW4 E 1 62 - FrameIndex XZW4 F 1 63 - FrameIndex XZW4 G 1 64 - FrameIndex XZW4 H 1 65 - FrameIndex XZW4 I 1 66 - FrameIndex XZW4 J 1 67 - FrameIndex XZW4 K 1 68 - FrameIndex XZW4 L 1 69 - FrameIndex XZW4 M 1 70 - FrameIndex XZW4 N 1 71 - FrameIndex XZW4 O 1 72 - FrameIndex XZW4 P 1 73 - FrameIndex XZW4 Q 1 74 - FrameIndex XZW4 R 1 75 - FrameIndex XZW4 S 1 76 - FrameIndex XZW4 T 1 77 - FrameIndex XZW4 U 1 78 - FrameIndex XZW4 V 1 79 - FrameIndex XZW4 W 1 80 - FrameIndex XZW4 X 1 81 - FrameIndex XZW4 Y 1 82 - FrameIndex XZW4 Z 1 83 - // Melee - FrameIndex XZW5 A 1 85 - FrameIndex XZW5 B 1 86 - FrameIndex XZW5 C 1 87 - FrameIndex XZW5 D 1 88 - FrameIndex XZW5 E 1 89 - FrameIndex XZW5 F 1 90 - FrameIndex XZW5 G 1 91 - FrameIndex XZW5 H 1 92 - FrameIndex XZW5 I 1 93 - FrameIndex XZW5 J 1 94 - FrameIndex XZW5 K 1 95 - FrameIndex XZW5 L 1 96 - FrameIndex XZW5 M 1 97 - FrameIndex XZW5 N 1 98 - FrameIndex XZW5 O 1 99 - FrameIndex XZW5 P 1 100 - FrameIndex XZW5 Q 1 101 -} diff --git a/models/Pusher.blend b/models/Pusher.blend deleted file mode 100644 index f07fb0dae..000000000 Binary files a/models/Pusher.blend and /dev/null differ diff --git a/models/Pusher.png b/models/Pusher.png deleted file mode 100644 index 7c6c85d1e..000000000 Binary files a/models/Pusher.png and /dev/null differ diff --git a/models/Pusher1st.blend b/models/Pusher1st.blend deleted file mode 100644 index 56daad1ab..000000000 Binary files a/models/Pusher1st.blend and /dev/null differ diff --git a/models/Pusher1st_a.3d b/models/Pusher1st_a.3d deleted file mode 100644 index 3822d3648..000000000 Binary files a/models/Pusher1st_a.3d and /dev/null differ diff --git a/models/Pusher1st_d.3d b/models/Pusher1st_d.3d deleted file mode 100644 index 57c1243c5..000000000 Binary files a/models/Pusher1st_d.3d and /dev/null differ diff --git a/models/PusherPickup_a.3d b/models/PusherPickup_a.3d deleted file mode 100644 index 6538d14cf..000000000 Binary files a/models/PusherPickup_a.3d and /dev/null differ diff --git a/models/PusherPickup_d.3d b/models/PusherPickup_d.3d deleted file mode 100644 index e5532f2f9..000000000 Binary files a/models/PusherPickup_d.3d and /dev/null differ diff --git a/models/modelnotes.txt b/models/modelnotes.txt index dc7bde861..1620c8bf2 100644 --- a/models/modelnotes.txt +++ b/models/modelnotes.txt @@ -41,6 +41,24 @@ Ammo models: Collectible models: - Saya's Mug +# Misc + +Gib models: + x Steak + x Breast + x Drumstick + - Sausage + - Pork Chop + - Bone + - Heart + - Eyeball + - Fish + - Half-Eaten Sandwich + - Cookie + - Tomato + - Rubber Duck + - Shoe + # Final Update Character models: diff --git a/readme.txt b/readme.txt index 8dacc3aec..c21a4bc90 100644 --- a/readme.txt +++ b/readme.txt @@ -15,16 +15,15 @@ Index of contents: 2. Inventory 2.1. Weaponry 2.1.1. Deep Impact - 2.1.2. Pusher - 2.1.3. Explodium Gun - 2.1.4. Spreadgun - 2.1.5. Wallbuster - 2.1.6. Eviscerator - 2.1.7. Hellblazer - 2.1.8. Biospark Carbine - 2.1.9. Silver Bullet JET - 2.1.A. Candy Gun - 2.1.B. Ynykron Artifact + 2.1.2. Explodium Gun + 2.1.3. Spreadgun + 2.1.4. Wallbuster + 2.1.5. Eviscerator + 2.1.6. Hellblazer + 2.1.7. Biospark Carbine + 2.1.8. Silver Bullet JET + 2.1.9. Candy Gun + 2.1.A. Ynykron Artifact 2.2. Powerups 2.2.1. Grilled Cheese Sandwich 2.2.2. Elemental Coating @@ -119,15 +118,7 @@ Secondary fire charges up a big thicc air bullet that rips hard. Remember to keep this puppy recharged by pumping more air, especially for that altfire, which requires 100% charge. -2.1.2. Pusher - -Slot 1. Melee weapon. -What was going to be Ultra Suite 2's flagship melee weapon. -Primary fire drills around. -Secondary fire charges up a nice impaling action. The weapon will fly off if -there's nothing to hit, however, so be careful (unless you want it to). - -2.1.3. Explodium Gun +2.1.2. Explodium Gun Slot 2. Pistol. Available at start. Another SWWM staple, the pocket exploder. @@ -136,7 +127,7 @@ Secondary fire arms the mag and throws it as a grenade. Stronger the more bullets you have left in it. You can have two of them, by the way. -2.1.4. Spreadgun +2.1.3. Spreadgun Slot 3. Shotgun. Coming from Instant Action 3, of all places, here's this thing. @@ -147,7 +138,7 @@ want to use it on the other shotgun weapon. Reload does what you'd expect it to do. This thing may be unwieldy, but boy does it let you use some fun ammo types. -2.1.5. Wallbuster +2.1.4. Wallbuster Slot 4. Revolver shotgun. A slight readjustment of a weapon from Total Destruction (cancelled). @@ -158,7 +149,7 @@ Reload opens the reload menu. The instructions provided are self-explanatory. Shooting multiple barrels may allow you to bust doors, bars, and other structures, quite handy. -2.1.6. Eviscerator +2.1.5. Eviscerator Slot 5. Flak cannon. It's back, and it's still pure unadulterated danmaku. @@ -168,7 +159,7 @@ Tertiary fire toggles between wide and tight spread. A rare case of a weapon that doesn't need to reload, as it pulls in ammo from your inventory directly. -2.1.7. Hellblazer +2.1.6. Hellblazer Slot 6. Rocket launcher. We've seen its predecessors before, but now it's time for the new cool kid, the @@ -181,7 +172,7 @@ rockets, it will instead select targets for seeking. Reload does what you'd expect. But when holding rockets, it clears any selected seek targets. That's pretty much all. -2.1.8. Biospark Carbine +2.1.7. Biospark Carbine Slot 7. Energy weapon. The Sparkster is back, but not in pog form however. @@ -191,7 +182,7 @@ Tertiary fire ejects the ammo core turning it into a heatseeking orb of death. Reload reloads. You can stack two mags together if you want, for more shoots, at the price of some slight unstability (you might hurt yourself with it). -2.1.9. Silver Bullet JET +2.1.8. Silver Bullet JET Slot 8. Sniper rifle. The big and bulky brother of that unwieldy thing from Ultra Suite. @@ -203,7 +194,7 @@ Tertiary fire is a zoom. Hold to keep increasing the zoom factor, up to 16x. Crouching with this weapon braces it and disengages the recoil compensator, which can definitely cause some self-hurt from how hot the jet gas can get. -2.1.A. Candy Gun +2.1.9. Candy Gun Slot 9. Pistol (but very strong). A tasty treat of sweetness and DEATH. From the lost forever™ Weirdweapons pack. @@ -213,7 +204,7 @@ Holding secondary and primary fire (in that order) will switch to yeeting the entire damn gun, for some absurd reason. It's very effective, though. Considering that you can dispose of it like that, you can hold some spares. -2.1.B. Ynykron Artifact +2.1.A. Ynykron Artifact Slot 0. Divine WMD (replica). The good ol' Mortal Cannon, now in all its unadulterated glory. @@ -336,9 +327,9 @@ very valuable. - - - - - - - - - - An additional set of 10 weapons to spice things up. Note that you can only have -one of each in every slot, so make sure you pick the right options for the -battles ahead (or you could just disable that mechanic entirely, if you're the -kinda person who prefers to carry EVERYTHING). +one of each in every slot (excluding slot 1), so make sure you pick the right +options for the battles ahead (or you could just disable that mechanic +entirely, if you're the kinda person who prefers to carry EVERYTHING). 2.6.1. Itamex Hammer diff --git a/sndinfo.txt b/sndinfo.txt index a483d7fe1..92d23975b 100644 --- a/sndinfo.txt +++ b/sndinfo.txt @@ -321,7 +321,6 @@ voice/default/koraxmasters7 sounds/voice/default/va/demokoraxmasters7.ogg voice/default/koraxmasters8 sounds/voice/default/va/demokoraxmasters8.ogg voice/default/koraxmasters9 sounds/voice/default/va/demokoraxmasters9.ogg voice/default/getdeepimpact sounds/voice/default/va/demogetdeepimpact.ogg -voice/default/getpusherweapon sounds/voice/default/va/demogetpusherweapon.ogg voice/default/getexplodiumgun1 sounds/voice/default/va/demogetexplodiumgun1.ogg voice/default/getexplodiumgun2 sounds/voice/default/va/demogetexplodiumgun2.ogg voice/default/getspreadgun sounds/voice/default/va/demogetspreadgun.ogg @@ -776,6 +775,12 @@ demolitionist/punchf1 sounds/demolitionist/demopunchf1.ogg demolitionist/punchf2 sounds/demolitionist/demopunchf2.ogg demolitionist/punchf3 sounds/demolitionist/demopunchf3.ogg $random demolitionist/punchf { demolitionist/punchf1 demolitionist/punchf2 demolitionist/punchf3 } +demolitionist/xpunch1 sounds/demolitionist/demoxpunch1.ogg +demolitionist/xpunch2 sounds/demolitionist/demoxpunch1.ogg +$random demolitionist/xpunch { demolitionist/xpunch1 demolitionist/xpunch2 } +demolitionist/xpunchf1 sounds/demolitionist/demoxpunchf1.ogg +demolitionist/xpunchf2 sounds/demolitionist/demoxpunchf1.ogg +$random demolitionist/xpunchf { demolitionist/xpunchf1 demolitionist/xpunchf2 } demolitionist/bump1 sounds/demolitionist/demobump1.ogg demolitionist/bump2 sounds/demolitionist/demobump2.ogg demolitionist/bump3 sounds/demolitionist/demobump3.ogg @@ -892,41 +897,6 @@ explodium/throwmag sounds/explodiumgun/expl_throwmag.ogg $limit explodium/hit 32 $limit explodium/maghit 32 -pusher/select sounds/pusher/push_select.ogg -pusher/deselect sounds/pusher/push_deselect.ogg -pusher/motor sounds/pusher/push_motor.ogg -pusher/motorend sounds/pusher/push_motorend.ogg -pusher/start sounds/pusher/push_start.ogg -pusher/drill sounds/pusher/push_drill.ogg -pusher/hit1 sounds/pusher/push_hitw1.ogg -pusher/hit2 sounds/pusher/push_hitw2.ogg -pusher/hit3 sounds/pusher/push_hitw3.ogg -$random pusher/hit { pusher/hit1 pusher/hit2 pusher/hit3 } -$limit pusher/hit 32 -pusher/meat1 sounds/pusher/push_hitf1.ogg -pusher/meat2 sounds/pusher/push_hitf2.ogg -pusher/meat3 sounds/pusher/push_hitf3.ogg -$random pusher/meat { pusher/meat1 pusher/meat2 pusher/meat3 } -$limit pusher/meat 32 -pusher/end sounds/pusher/push_end.ogg -pusher/checkout sounds/pusher/push_idle.ogg -pusher/pullback sounds/pusher/push_altcharge.ogg -pusher/altfire1 sounds/pusher/push_altfire1.ogg -pusher/altfire2 sounds/pusher/push_altfire2.ogg -$random pusher/altfire { pusher/altfire1 pusher/altfire2 } -pusher/miss sounds/pusher/push_miss.ogg -pusher/althit1 sounds/pusher/push_slam1.ogg -pusher/althit2 sounds/pusher/push_slam2.ogg -$random pusher/althit { pusher/althit1 pusher/althit2 } -pusher/altmeat1 sounds/pusher/push_slamf1.ogg -pusher/altmeat2 sounds/pusher/push_slamf2.ogg -$random pusher/altmeat { pusher/altmeat1 pusher/altmeat2 } -pusher/fly sounds/pusher/push_fly.ogg -pusher/bounce1 sounds/pusher/push_bounce1.ogg -pusher/bounce2 sounds/pusher/push_bounce2.ogg -pusher/bounce3 sounds/pusher/push_bounce3.ogg -$random pusher/bounce { pusher/bounce1 pusher/bounce2 pusher/bounce3 } - spreadgun/open sounds/spreadgun/spread_open.ogg spreadgun/hammer sounds/spreadgun/spread_hammer.ogg spreadgun/close sounds/spreadgun/spread_close.ogg @@ -1007,6 +977,7 @@ spreadgun/ballf1 sounds/spreadgun/spread_ballf1.ogg spreadgun/ballf2 sounds/spreadgun/spread_ballf2.ogg spreadgun/ballf3 sounds/spreadgun/spread_ballf3.ogg $random spreadgun/ballf { spreadgun/ballf1 spreadgun/ballf2 spreadgun/ballf3 } +spreadgun/ballfly sounds/spreadgun/spread_ballfly.ogg spreadgun/salt1 sounds/spreadgun/spread_salt1.ogg spreadgun/salt2 sounds/spreadgun/spread_salt2.ogg spreadgun/salt3 sounds/spreadgun/spread_salt3.ogg diff --git a/sounds/pusher/push_slam1.ogg b/sounds/demolitionist/demoxpunch1.ogg similarity index 100% rename from sounds/pusher/push_slam1.ogg rename to sounds/demolitionist/demoxpunch1.ogg diff --git a/sounds/pusher/push_slam2.ogg b/sounds/demolitionist/demoxpunch2.ogg similarity index 100% rename from sounds/pusher/push_slam2.ogg rename to sounds/demolitionist/demoxpunch2.ogg diff --git a/sounds/pusher/push_slamf1.ogg b/sounds/demolitionist/demoxpunchf1.ogg similarity index 100% rename from sounds/pusher/push_slamf1.ogg rename to sounds/demolitionist/demoxpunchf1.ogg diff --git a/sounds/pusher/push_slamf2.ogg b/sounds/demolitionist/demoxpunchf2.ogg similarity index 100% rename from sounds/pusher/push_slamf2.ogg rename to sounds/demolitionist/demoxpunchf2.ogg diff --git a/sounds/pusher/push_altcharge.ogg b/sounds/pusher/push_altcharge.ogg deleted file mode 100644 index 7e3f1cc3f..000000000 Binary files a/sounds/pusher/push_altcharge.ogg and /dev/null differ diff --git a/sounds/pusher/push_altfire1.ogg b/sounds/pusher/push_altfire1.ogg deleted file mode 100644 index 30afce51c..000000000 Binary files a/sounds/pusher/push_altfire1.ogg and /dev/null differ diff --git a/sounds/pusher/push_altfire2.ogg b/sounds/pusher/push_altfire2.ogg deleted file mode 100644 index 430a4cfc7..000000000 Binary files a/sounds/pusher/push_altfire2.ogg and /dev/null differ diff --git a/sounds/pusher/push_bounce1.ogg b/sounds/pusher/push_bounce1.ogg deleted file mode 100644 index b266cc757..000000000 Binary files a/sounds/pusher/push_bounce1.ogg and /dev/null differ diff --git a/sounds/pusher/push_bounce2.ogg b/sounds/pusher/push_bounce2.ogg deleted file mode 100644 index 7cf282164..000000000 Binary files a/sounds/pusher/push_bounce2.ogg and /dev/null differ diff --git a/sounds/pusher/push_bounce3.ogg b/sounds/pusher/push_bounce3.ogg deleted file mode 100644 index 93d01d3dc..000000000 Binary files a/sounds/pusher/push_bounce3.ogg and /dev/null differ diff --git a/sounds/pusher/push_deselect.ogg b/sounds/pusher/push_deselect.ogg deleted file mode 100644 index bf84991f7..000000000 Binary files a/sounds/pusher/push_deselect.ogg and /dev/null differ diff --git a/sounds/pusher/push_drill.ogg b/sounds/pusher/push_drill.ogg deleted file mode 100644 index bb1758fc0..000000000 Binary files a/sounds/pusher/push_drill.ogg and /dev/null differ diff --git a/sounds/pusher/push_end.ogg b/sounds/pusher/push_end.ogg deleted file mode 100644 index 39e30b3d5..000000000 Binary files a/sounds/pusher/push_end.ogg and /dev/null differ diff --git a/sounds/pusher/push_hitf1.ogg b/sounds/pusher/push_hitf1.ogg deleted file mode 100644 index a7b9e9db9..000000000 Binary files a/sounds/pusher/push_hitf1.ogg and /dev/null differ diff --git a/sounds/pusher/push_hitf2.ogg b/sounds/pusher/push_hitf2.ogg deleted file mode 100644 index a6dd3beab..000000000 Binary files a/sounds/pusher/push_hitf2.ogg and /dev/null differ diff --git a/sounds/pusher/push_hitf3.ogg b/sounds/pusher/push_hitf3.ogg deleted file mode 100644 index 3438a4caf..000000000 Binary files a/sounds/pusher/push_hitf3.ogg and /dev/null differ diff --git a/sounds/pusher/push_hitw1.ogg b/sounds/pusher/push_hitw1.ogg deleted file mode 100644 index ecbee7ab5..000000000 Binary files a/sounds/pusher/push_hitw1.ogg and /dev/null differ diff --git a/sounds/pusher/push_hitw2.ogg b/sounds/pusher/push_hitw2.ogg deleted file mode 100644 index d6de68618..000000000 Binary files a/sounds/pusher/push_hitw2.ogg and /dev/null differ diff --git a/sounds/pusher/push_hitw3.ogg b/sounds/pusher/push_hitw3.ogg deleted file mode 100644 index 9acb4926a..000000000 Binary files a/sounds/pusher/push_hitw3.ogg and /dev/null differ diff --git a/sounds/pusher/push_idle.ogg b/sounds/pusher/push_idle.ogg deleted file mode 100644 index 461bb2b18..000000000 Binary files a/sounds/pusher/push_idle.ogg and /dev/null differ diff --git a/sounds/pusher/push_miss.ogg b/sounds/pusher/push_miss.ogg deleted file mode 100644 index 25e6758c5..000000000 Binary files a/sounds/pusher/push_miss.ogg and /dev/null differ diff --git a/sounds/pusher/push_motor.ogg b/sounds/pusher/push_motor.ogg deleted file mode 100644 index ef68825d3..000000000 Binary files a/sounds/pusher/push_motor.ogg and /dev/null differ diff --git a/sounds/pusher/push_motorend.ogg b/sounds/pusher/push_motorend.ogg deleted file mode 100644 index 6d001ead4..000000000 Binary files a/sounds/pusher/push_motorend.ogg and /dev/null differ diff --git a/sounds/pusher/push_select.ogg b/sounds/pusher/push_select.ogg deleted file mode 100644 index 5bd6045f3..000000000 Binary files a/sounds/pusher/push_select.ogg and /dev/null differ diff --git a/sounds/pusher/push_start.ogg b/sounds/pusher/push_start.ogg deleted file mode 100644 index b9c7b5c29..000000000 Binary files a/sounds/pusher/push_start.ogg and /dev/null differ diff --git a/sounds/pusher/push_fly.ogg b/sounds/spreadgun/spread_ballfly.ogg similarity index 100% rename from sounds/pusher/push_fly.ogg rename to sounds/spreadgun/spread_ballfly.ogg diff --git a/sounds/voice/default/va/demogetpusherweapon.ogg b/sounds/voice/default/va/demogetpusherweapon.ogg deleted file mode 100644 index e6271ec91..000000000 Binary files a/sounds/voice/default/va/demogetpusherweapon.ogg and /dev/null differ diff --git a/zmapinfo.txt b/zmapinfo.txt index 411b54169..9b7e9b13d 100644 --- a/zmapinfo.txt +++ b/zmapinfo.txt @@ -43,7 +43,6 @@ GameInfo PrecacheClasses = "Demolitionist", // player // weapons "DeepImpact", - "PusherWeapon", "ItamexHammer", "ExplodiumGun", "DualExplodiumGun", @@ -135,7 +134,6 @@ GameInfo "graphics/M_DEMOCHAN_EVISCERATOR.png", "graphics/M_DEMOCHAN_EXPLOGUN.png", "graphics/M_DEMOCHAN_HELLBLAZER.png", - "graphics/M_DEMOCHAN_PUSHER.png", "graphics/M_DEMOCHAN_SILVERBULLET.png", "graphics/M_DEMOCHAN_SPREADGUN.png", "graphics/M_DEMOCHAN_WALLBUSTER.png", diff --git a/zscript.txt b/zscript.txt index 6058e57e0..257f92efe 100644 --- a/zscript.txt +++ b/zscript.txt @@ -100,8 +100,6 @@ version "4.8" #include "zscript/weapons/swwm_baseweapon_fx.zsc" #include "zscript/weapons/swwm_baseweapon_melee.zsc" #include "zscript/weapons/swwm_baseweapon_precisechair.zsc" -#include "zscript/weapons/swwm_jackhammer.zsc" -#include "zscript/weapons/swwm_jackhammer_fx.zsc" #include "zscript/weapons/swwm_deepdarkimpact.zsc" #include "zscript/weapons/swwm_deepdarkimpact_fx.zsc" #include "zscript/weapons/swwm_splode.zsc" diff --git a/zscript/dlc1/swwm_hammertime.zsc b/zscript/dlc1/swwm_hammertime.zsc index 4cd3d1b34..c873c9dfb 100644 --- a/zscript/dlc1/swwm_hammertime.zsc +++ b/zscript/dlc1/swwm_hammertime.zsc @@ -1,5 +1,5 @@ // Itamex Reinforced Combat Hammer (from UnSX 5) -// Slot 1, spawns shared with Pusher +// Slot 1, spawns shared with Deep Impact Class ItamexHammer : SWWMWeapon { @@ -16,7 +16,7 @@ Class ItamexHammer : SWWMWeapon SWWMWeapon.GetLine "getitamexhammer"; Inventory.Icon "graphics/HUD/Icons/W_ItamexHammer.png"; Weapon.SlotNumber 1; - Weapon.SlotPriority 3.; + Weapon.SlotPriority 2.; Weapon.SelectionOrder 1200; Stamina 9000; +WEAPON.MELEEWEAPON; diff --git a/zscript/handler/swwm_handler_damage.zsc b/zscript/handler/swwm_handler_damage.zsc index f468a6716..1cd36ad86 100644 --- a/zscript/handler/swwm_handler_damage.zsc +++ b/zscript/handler/swwm_handler_damage.zsc @@ -217,8 +217,6 @@ extend Class SWWMHandler if ( (e.Thing is 'Cyberdemon') && (e.Inflictor is 'Rocket') && (buff.tracer == e.Thing) ) SWWMUtility.MarkAchievement("cybully",src.player); } - if ( (e.Inflictor is 'PusherWeapon') || (e.Inflictor is 'PusherProjectile') ) - SWWMUtility.AchievementProgressInc("tender",1,src.player); Inventory tk; if ( (tk = e.Thing.FindInventory("DeepImpactOnlyToken")) && (tk.special1 == 1) ) SWWMUtility.MarkAchievement("shame",src.player); diff --git a/zscript/handler/swwm_handler_process.zsc b/zscript/handler/swwm_handler_process.zsc index 9173d8b49..6ddf37935 100644 --- a/zscript/handler/swwm_handler_process.zsc +++ b/zscript/handler/swwm_handler_process.zsc @@ -321,106 +321,6 @@ extend Class SWWMHandler Console.Printf("%d effects cleared.",n); return; } - else if ( e.Name ~== "swwmdebugdumprng" ) - { - if ( multiplayer && (e.player != Net_Arbitrator) ) - { - if ( e.player == consoleplayer ) - Console.Printf("Only the net arbitrator can call this event."); - return; - } - // dump the values of all mod RNGs (might help someday to track down what desyncs) - String msg = String.Format("\cxRNG dump for player %d (\c-%s\cx):\c-",consoleplayer,players[consoleplayer].GetUserName()); - msg.AppendFormat("\n\n\cfPlay RNG (will cause desyncs if mismatched):\c-\n"); - msg.AppendFormat("\nBlood: %08x",Random2[Blood]()); - msg.AppendFormat("\nBoolet: %08x",Random2[Boolet]()); - msg.AppendFormat("\nBundle: %08x",Random2[Bundle]()); - msg.AppendFormat("\nCandy: %08x",Random2[Candy]()); - msg.AppendFormat("\nChancebox: %08x",Random2[Chancebox]()); - msg.AppendFormat("\nCorrode: %08x",Random2[Corrode]()); - msg.AppendFormat("\nDemolitionist: %08x",Random2[Demolitionist]()); - msg.AppendFormat("\nDoBlast: %08x",Random2[DoBlast]()); - msg.AppendFormat("\nDropChance: %08x",Random2[DropChance]()); - msg.AppendFormat("\nEviscerator: %08x",Random2[Eviscerator]()); - msg.AppendFormat("\nExplodium: %08x",Random2[Explodium]()); - msg.AppendFormat("\nExploS: %08x",Random2[ExploS]()); - msg.AppendFormat("\nExtraMissiles: %08x",Random2[ExtraMissiles]()); - msg.AppendFormat("\nFlameT: %08x",Random2[FlameT]()); - msg.AppendFormat("\nFlicker: %08x",Random2[Flicker]()); - msg.AppendFormat("\nGesture: %08x",Random2[Gesture]()); - msg.AppendFormat("\nGibs: %08x",Random2[Gibs]()); - msg.AppendFormat("\nGoldDrop: %08x",Random2[GoldDrop]()); - msg.AppendFormat("\nGoldy: %08x",Random2[Goldy]()); - msg.AppendFormat("\nGunFlash: %08x",Random2[GunFlash]()); - msg.AppendFormat("\nHellblazer: %08x",Random2[Hellblazer]()); - msg.AppendFormat("\nImpact: %08x",Random2[Impact]()); - msg.AppendFormat("\nInvinciball: %08x",Random2[Invinciball]()); - msg.AppendFormat("\nJunk: %08x",Random2[Junk]()); - msg.AppendFormat("\nMoth: %08x",Random2[Moth]()); - msg.AppendFormat("\nMykradvo: %08x",Random2[Mykradvo]()); - msg.AppendFormat("\nNugget: %08x",Random2[Nugget]()); - msg.AppendFormat("\nParry: %08x",Random2[Parry]()); - msg.AppendFormat("\nPonch: %08x",Random2[Ponch]()); - msg.AppendFormat("\nPuff: %08x",Random2[Puff]()); - msg.AppendFormat("\nPusher: %08x",Random2[Pusher]()); - msg.AppendFormat("\nRage: %08x",Random2[Rage]()); - msg.AppendFormat("\nReplacements: %08x",Random2[Replacements]()); - msg.AppendFormat("\nShellDrop: %08x",Random2[ShellDrop]()); - msg.AppendFormat("\nShivers: %08x",Random2[Shivers]()); - msg.AppendFormat("\nSilverbullet: %08x",Random2[Silverbullet]()); - msg.AppendFormat("\nSpareShells: %08x",Random2[SpareShells]()); - msg.AppendFormat("\nSparkster: %08x",Random2[Sparkster]()); - msg.AppendFormat("\nSpread: %08x",Random2[Spread]()); - msg.AppendFormat("\nSpreadgun: %08x",Random2[Spreadgun]()); - msg.AppendFormat("\nWallbuster: %08x",Random2[Wallbuster]()); - msg.AppendFormat("\nYnykron: %08x",Random2[Ynykron]()); - msg.AppendFormat("\n\n\cfUI RNG (should not cause desyncs if mismatched):\c-\n"); - msg.AppendFormat("\nbdscreen: %08x",Random2[bdscreen]()); - msg.AppendFormat("\nClientSparkles: %08x",Random2[ClientSparkles]()); - msg.AppendFormat("\nDemoLines: %08x",Random2[DemoLines]()); - msg.AppendFormat("\nFInTheChat: %08x",Random2[FInTheChat]()); - msg.AppendFormat("\nFunTags: %08x",Random2[FunTags]()); - msg.AppendFormat("\nhdscreen: %08x",Random2[hdscreen]()); - msg.AppendFormat("\nHudStuff: %08x",Random2[HudStuff]()); - msg.AppendFormat("\nInterArt: %08x",Random2[InterArt]()); - msg.AppendFormat("\nScoreBits: %08x",Random2[ScoreBits]()); - msg.AppendFormat("\nTUID: %08x",Random2[TUID]()); - msg.AppendFormat("\nUIStuff: %08x",Random2[UIStuff]()); - msg.AppendFormat("\nWallbusterMenu: %08x",Random2[WallbusterMenu]()); - Console.Printf(msg); - return; - } - else if ( e.Name ~== "swwmdebugdlglines" ) - { - if ( multiplayer && (e.player != Net_Arbitrator) ) - { - if ( e.player == consoleplayer ) - Console.Printf("Only the net arbitrator can call this event."); - return; - } - // checks that ALL dialogue text fits in 3 lines - String alldlg_pack = "SWWM_SAYAPHOBOS1:SWWM_SAYAPHOBOS2:SWWM_SAYAPHOBOS3:SWWM_SAYAPHOBOS4:SWWM_SAYADEIMOS1:SWWM_SAYADEIMOS2:SWWM_SAYADEIMOS3:SWWM_SAYADEIMOS4:SWWM_SAYADIS1:SWWM_SAYADIS2:SWWM_SAYADIS3:SWWM_SAYADIS4:SWWM_SAYATHY1:SWWM_SAYATHY2:SWWM_SAYATHY3:SWWM_SAYATHY4:SWWM_CYTHOSIGIL1:SWWM_CYTHOSIGIL2:SWWM_CYTHOSIGIL3:SWWM_CYTHOSIGIL4:SWWM_SAYADIMPLE1:SWWM_SAYADIMPLE2:SWWM_SAYADIMPLE3:SWWM_SAYADIMPLE4:SWWM_SAYADIMPLE5:SWWM_SAYACIRCLE1:SWWM_SAYACIRCLE2:SWWM_SAYACIRCLE3:SWWM_SAYACIRCLE4:SWWM_SAYACIRCLE5:SWWM_SAYAGOTCHA1:SWWM_SAYAGOTCHA2:SWWM_SAYAGOTCHA3:SWWM_SAYAGOTCHA4:SWWM_SAYAGOTCHA5:SWWM_SAYAGOTCHAEND1:SWWM_SAYAGOTCHAEND2:SWWM_SAYAGOTCHAEND3:SWWM_SAYAGOTCHAEND4:SWWM_SAYAGOTCHAEND5:SWWM_SAYAIOS1:SWWM_SAYAIOS2:SWWM_SAYAIOS3:SWWM_SAYAIOS4:SWWM_SAYAIOS5:SWWM_SAYARAMPANCY1:SWWM_SAYARAMPANCY2:SWWM_SAYARAMPANCY3:SWWM_SAYARAMPANCY4:SWWM_CYTHONERVE1:SWWM_CYTHONERVE2:SWWM_CYTHONERVE3:SWWM_CYTHONERVE4:SWWM_CYTHONERVE5:SWWM_SAYAEVIA1:SWWM_SAYAEVIA2:SWWM_SAYAEVIA3:SWWM_SAYAEVIA4:SWWM_SAYAEVIB1:SWWM_SAYAEVIB2:SWWM_SAYAMAW1:SWWM_SAYAMAW2:SWWM_SAYAMAW3:SWWM_SAYAMAW4:SWWM_SAYAMAW5:SWWM_SAYAMASTERS1:SWWM_SAYAMASTERS2:SWWM_SAYAMASTERS3:SWWM_SAYAMASTERS4:SWWM_SAYAMASTERS5:SWWM_SAYADSPARIL1:SWWM_SAYADSPARIL2:SWWM_SAYADSPARIL3:SWWM_SAYADSPARIL4:SWWM_SAYADSPARIL5:SWWM_SAYAHEADS1:SWWM_SAYAHEADS2:SWWM_SAYAHEADS3:SWWM_SAYAHEADS4:SWWM_SAYAHEADS5:SWWM_SAYAHEADS6:SWWM_SAYABULLS1:SWWM_SAYABULLS2:SWWM_SAYABULLS3:SWWM_SAYABULLS4:SWWM_SAYABULLS5:SWWM_SAYAGREETA1:SWWM_SAYAGREETA2:SWWM_SAYAGREETA3:SWWM_SAYAGREETB1:SWWM_SAYAGREETC1:SWWM_SAYAGREETD1:SWWM_SAYAGREETE1:SWWM_SAYAGREETF1:SWWM_SAYABLOODA1:SWWM_SAYABLOODA2:SWWM_SAYABLOODB1:SWWM_SAYABLOODC1:SWWM_SAYABLOODD1:SWWM_SAYAHYPO1:SWWM_SAYAHYPO2:SWWM_SAYAHYPO3:SWWM_SAYAHYPO4:SWWM_KIRINWORSHIPA1:SWWM_KIRINWORSHIPB1:SWWM_KIRINWORSHIPC1:SWWM_KIRINWORSHIPD1:SWWM_KIRINWORSHIPD2:SWWM_SAYAGAMEA1:SWWM_SAYAGAMEA2:SWWM_SAYAGAMEB1:SWWM_SAYAGAMEC1:SWWM_SAYAMASTERSA1:SWWM_SAYAMASTERSA2:SWWM_SAYAMASTERSB1:SWWM_SAYAMASTERSC1:SWWM_SAYAMASTERSD1:SWWM_SAYAMASTERSE1:SWWM_SAYAMASTERSF1:SWWM_SAYAFIGHTER1:SWWM_SAYAFIGHTER2:SWWM_SAYACLERICA1:SWWM_SAYACLERICA2:SWWM_SAYACLERICB1:SWWM_SAYACLERICC1:SWWM_SAYACLERICC2:SWWM_SAYAMAGE1:SWWM_SAYAMAGE2:SWWM_SAYAMAGE3:SWWM_SAYAMAGE4:SWWM_SAYAKORAXA1:SWWM_SAYAKORAXB1:SWWM_SAYAKORAXC1:SWWM_SAYAKORAXD1:SWWM_SAYAKORAXE1:SWWM_SAYABLIGHTA1:SWWM_SAYABLIGHTB1:SWWM_SAYABLIGHTC1:SWWM_SAYABLIGHTC2:SWWM_SAYACONSTABLEA1:SWWM_SAYACONSTABLEA2:SWWM_SAYACONSTABLEB1:SWWM_SAYACONSTABLEC1:SWWM_SAYACONSTABLED1:SWWM_SAYANAVEA1:SWWM_SAYANAVEA2:SWWM_SAYANAVEB1:SWWM_SAYANAVEC1:SWWM_SAYANAVED1:SWWM_SAYANAVEE1:SWWM_SAYANAVEF1:SWWM_SAYADEATHKINGS1:SWWM_KIRINPUZZLEA1:SWWM_KIRINPUZZLEA2:SWWM_KIRINPUZZLEB1:SWWM_KIRINPUZZLEC1:SWWM_KIRINPUZZLEC2:SWWM_KIRINPUZZLED1:SWWM_KIRINPUZZLED2:SWWM_KIRINPUZZLEE1:SWWM_KIRINPUZZLEE2:SWWM_KIRINPUZZLEF1:SWWM_KIRINPUZZLEF2:SWWM_KIRINPUZZLEF3:SWWM_KIRINPUZZLEG1:SWWM_KIRINPUZZLEH1:SWWM_KIRINPUZZLEI1:SWWM_KIRINPUZZLEI2:SWWM_KIRINPUZZLEJ1:SWWM_KIRINPUZZLEJ2:SWWM_KIRINPUZZLEK1:SWWM_KIRINPUZZLEL1:SWWM_KIRINPUZZLEM1:SWWM_KIRINPUZZLEN1:SWWM_KIRINPUZZLEO1:SWWM_KIRINPUZZLEP1:SWWM_KIRINPUZZLEQ1:SWWM_KIRINPUZZLER1:SWWM_KIRINPUZZLER2:SWWM_KIRINPUZZLER3:SWWM_KIRINPUZZLES1:SWWM_KIRINPUZZLET1:SWWM_KIRINPUZZLEU1:SWWM_ZNVTXT1:SWWM_ZNVTXT2:SWWM_ZNVTXT3:SWWM_ZNVTXT4:SWWM_ZNVTXT5"; - Array alldlg; - alldlg_pack.Split(alldlg,":"); - let mSmallFont = Font.GetFont('TewiFont'); - for ( int i=0; i 3 ) Console.Printf("\cg%s exceeds line limit (%d > 3)\c-",alldlg[i],l.Count()); - else - { - if ( !e.Args[0] ) - { - l.Destroy(); - continue; - } - Console.Printf("\cd%s is within line limit (%d <= 3)\c-",alldlg[i],l.Count()); - } - for ( int j=0; j %s",l.StringAt(j)); - l.Destroy(); - } - return; - } else if ( e.Name ~== "swwmprofilehandler" ) { if ( multiplayer && (e.player != Net_Arbitrator) ) diff --git a/zscript/swwm_thinkers_player.zsc b/zscript/swwm_thinkers_player.zsc index 487088e07..bfdc2393e 100644 --- a/zscript/swwm_thinkers_player.zsc +++ b/zscript/swwm_thinkers_player.zsc @@ -164,7 +164,6 @@ Class SWWMStats : SWWMStaticThinker if ( inflictor && inflictor.FindInventory("ParriedBuff") ) which = 'DoomWeapon'; // gross hack // properly credit some projectiles to their respective gun else if ( inflictor is 'AirBullet' ) which = 'DeepImpact'; - else if ( inflictor is 'PusherProjectile' ) which = 'PusherWeapon'; 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 'TheBall') && inflictor.special1) ) which = 'Wallbuster'; diff --git a/zscript/utility/swwm_utility.zsc b/zscript/utility/swwm_utility.zsc index d3f33a46b..84b2bec7e 100644 --- a/zscript/utility/swwm_utility.zsc +++ b/zscript/utility/swwm_utility.zsc @@ -1356,7 +1356,6 @@ Class SWWMUtility { if ( !a.bMISSILE ) return false; if ( a is 'AirBullet' ) return true; - if ( a is 'PusherProjectile' ) return true; if ( a is 'ExplodiumMagProj' ) return true; if ( a is 'CorrosiveFlechette' ) return true; if ( a is 'TheBall' ) return true; @@ -2112,19 +2111,13 @@ Class SWWMUtility return Random[Replacements](0,1)?a:b; } - // melee weapons + extra slot 2 guns (50% chance) + // melee weapon + extra slot 2 guns static Class PickSWWMSlot1() { // so the player can recover it if they decided to drop it in a previous map, or they didn't start with it if ( CheckNeedsItem('DeepImpact') ) return 'DeepImpact'; - bool hasmelee = (!CheckNeedsItem('PusherWeapon')||!CheckNeedsItem('ItamexHammer')); - bool hasallmelee = (!CheckNeedsItem('PusherWeapon')&&!CheckNeedsItem('ItamexHammer')); - bool gunexists = ItemExists('ExplodiumGun',worldonly:true)||ItemExists('PlasmaBlast',worldonly:true); - // if the player already has a melee weapon, 50% chance to spawn either slot 2 weapon as long as one doesn't exist in the map already - // if the player has ALL melee weapons (somehow), that chance becomes 100% - if ( hasmelee && !gunexists && (hasallmelee || Random[Replacements](0,1)) ) - return PickSWWMSlot2(); - return PickPair('PusherWeapon','ItamexHammer'); + if ( CheckNeedsItem('ItamexHammer') ) return 'ItamexHammer'; + return PickSWWMSlot2(); } // pistol spawn, pretty simple static Class PickSWWMSlot2() @@ -2164,7 +2157,7 @@ Class SWWMUtility // second plasma rifle spawn static Class PickSWWMSlot8() { - return PickPair('SilverBullet','MisterRifle'); + return PickPair('SilverBullet','RayKhom'); } // first bfg spawn static Class PickSWWMSlot9() @@ -2172,7 +2165,7 @@ Class SWWMUtility // 33% chance to still drop another candy gun if it's not at max capacity if ( !Random[Replacements](0,2) && ItemExists('CandyGun') && CheckNeedsItem('CandyGunSpares',true) ) return 'CandyGun'; - return PickPair('CandyGun','RayKhom'); + return PickPair('CandyGun','MisterRifle'); } // second bfg spawn (each weapon can only exist once) static Class PickSWWMSlot0( bool fallback = true ) @@ -2191,7 +2184,7 @@ Class SWWMUtility static Class PickDoomSlot6() { bool hasslot7 = (!CheckNeedsItem('Sparkster')||!CheckNeedsItem('ModernSparkster')); - bool hasslot8 = (!CheckNeedsItem('SilverBullet')||!CheckNeedsItem('MisterRifle')); + bool hasslot8 = (!CheckNeedsItem('SilverBullet')||!CheckNeedsItem('RayKhom')); // if the player already has a slot 7 weapon... if ( hasslot7 ) { @@ -2206,7 +2199,7 @@ Class SWWMUtility // either bfg spawn static Class PickDoomSlot7() { - bool hasslot9 = (!CheckNeedsItem('CandyGun')||!CheckNeedsItem('RayKhom')); + bool hasslot9 = (!CheckNeedsItem('CandyGun')||!CheckNeedsItem('MisterRifle')); bool hasslot0 = (!CheckNeedsItem('Ynykron')||!CheckNeedsItem('RafanKos')); let rep = PickSWWMSlot0(false); // if the player already has a slot 9 weapon (and a slot 0 weapon can still spawn)... diff --git a/zscript/weapons/swwm_baseweapon_fx.zsc b/zscript/weapons/swwm_baseweapon_fx.zsc index 1c826f13a..d8a7b19c2 100644 --- a/zscript/weapons/swwm_baseweapon_fx.zsc +++ b/zscript/weapons/swwm_baseweapon_fx.zsc @@ -258,7 +258,7 @@ Class BigPunchImpact : Actor { Super.PostBeginPlay(); A_QuakeEx(8,8,8,18,0,600,"",QF_RELATIVE|QF_SCALEDOWN,falloff:200,rollIntensity:.9); - A_StartSound("pusher/althit",CHAN_VOICE,CHANF_DEFAULT,bAMBUSH?.6:1.); + A_StartSound("demolitionist/xpunch",CHAN_VOICE,CHANF_DEFAULT,bAMBUSH?.6:1.); A_SprayDecal("BigWallCrack",-20); int numpt = Random[Ponch](9,16); if ( bAMBUSH ) numpt /= 3; diff --git a/zscript/weapons/swwm_baseweapon_melee.zsc b/zscript/weapons/swwm_baseweapon_melee.zsc index 655f72fcf..65965b48a 100644 --- a/zscript/weapons/swwm_baseweapon_melee.zsc +++ b/zscript/weapons/swwm_baseweapon_melee.zsc @@ -457,8 +457,8 @@ extend Class SWWMWeapon A_QuakeEx(quakin/2,quakin/2,quakin/2,3,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.06*quakin); if ( raging && !(flags&MELEE_ForceSound) ) { - if ( blooded ) A_StartSound("pusher/altmeat",CHAN_WEAPON,CHANF_OVERLAP); - if ( bloodless ) A_StartSound("pusher/althit",CHAN_WEAPON,CHANF_OVERLAP); + if ( blooded ) A_StartSound("demolitionist/xpunchf",CHAN_WEAPON,CHANF_OVERLAP); + if ( bloodless ) A_StartSound("demolitionist/xpunch",CHAN_WEAPON,CHANF_OVERLAP); } else if ( hitsound == "" ) { @@ -546,7 +546,7 @@ extend Class SWWMWeapon int quakin = raging?4:1; A_QuakeEx(quakin,quakin,quakin,3,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.12*quakin); A_BumpFOV(.98); - A_StartSound((raging&&!(flags&MELEE_ForceSound))?"pusher/althit":(hitsound!="")?hitsound:"demolitionist/punch",CHAN_WEAPON,CHANF_OVERLAP); + A_StartSound((raging&&!(flags&MELEE_ForceSound))?"demolitionist/xpunch":(hitsound!="")?hitsound:"demolitionist/punch",CHAN_WEAPON,CHANF_OVERLAP); A_AlertMonsters(swwm_uncapalert?0:100); if ( raging ) raging.DoHitFX(); if ( (flags&MELEE_ForceBust) || swwm_omnibust ) BusterWall.BustLinetrace(d,raging?(dmg*8):dmg,self,d.HitDir,d.HitLocation.z); diff --git a/zscript/weapons/swwm_jackhammer.zsc b/zscript/weapons/swwm_jackhammer.zsc deleted file mode 100644 index e6b521efc..000000000 --- a/zscript/weapons/swwm_jackhammer.zsc +++ /dev/null @@ -1,410 +0,0 @@ -// Tach-Engine Technologies Microfusion Rotary Hammer aka "Pusher" (planned for unreleased Zanaveth Ultra Suite 2) -// Slot 1, replaces Chainsaw, Gauntlets, Timon's Axe - -Class PusherWeapon : SWWMWeapon -{ - double chargelevel, vibe; - int hitcnt; - - transient ui TextureID WeaponBox, ChargeBar; - transient ui DynamicValueInterpolator ChargeInter; - - override void DrawWeapon( double TicFrac, double bx, double by, double hs, Vector2 ss ) - { - if ( !WeaponBox ) WeaponBox = TexMan.CheckForTexture("graphics/HUD/PusherDisplay.png",TexMan.Type_Any); - if ( !ChargeBar ) ChargeBar = TexMan.CheckForTexture("graphics/HUD/PusherBar.png",TexMan.Type_Any); - Screen.DrawTexture(WeaponBox,false,bx-60,by-9,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); - int chg = clamp(ChargeInter?ChargeInter.GetValue():int(chargelevel*100),0,100); - double cw = chg*56./100.; - Screen.DrawTexture(ChargeBar,false,bx-58,by-7,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_WindowRightF,cw); - } - - override void HudTick() - { - Super.HudTick(); - if ( !ChargeInter ) ChargeInter = DynamicValueInterpolator.Create(int(chargelevel*100),.5,1,50); - ChargeInter.Update(int(chargelevel*100)); - } - - override bool ReportHUDAmmo() - { - return true; - } - - override Vector3 GetTraceOffset() - { - return (10.,2.,-3.5); - } - - action void A_PusherDrill() - { - invoker.chargelevel = clamp(invoker.chargelevel+FRandom[Pusher](-.04,.08),.3,1.); - A_QuakeEx(1,1,1,3,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.5); - A_WeaponOffset(FRandom[Pusher](-1,1)*2,32+FRandom[Pusher](-1,1)*2); - A_BumpFOV(1.01); - A_Recoil(-cos(pitch)); - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x+2*y-3.5*z); - FLineTraceData d; - LineTrace(angle,60,pitch,TRF_ABSPOSITION,origin.z,origin.x,origin.y,d); - SWWMBulletTrail.DoTrail(self,origin,x,60,0); - if ( d.HitType != TRACE_HitNone ) - { - A_QuakeEx(2,2,2,7,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.8); - A_AlertMonsters(swwm_uncapalert?0:1200); - int dmg = int(4+invoker.chargelevel*8); - if ( invoker.chargelevel > .4 ) invoker.chargelevel -= FRandom[Pusher](.01,.03); - if ( d.HitType == TRACE_HitActor ) - { - double diff = deltaangle(self.angle,AngleTo(d.HitActor)); - self.angle += clamp(diff,-5.,5.); - SWWMUtility.DoKnockback(d.HitActor,d.HitDir,8500); - d.HitActor.A_QuakeEx(3,3,3,10,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.1); - let p = SWWMPuff.Setup(d.HitLocation,d.HitDir,invoker,self,d.HitActor); - dmg = d.HitActor.DamageMobj(p,self,dmg,'Tenderize',DMG_THRUSTLESS|DMG_INFLICTOR_IS_PUFF); - if ( d.HitActor.bNOBLOOD || d.HitActor.bDORMANT || d.HitActor.bINVULNERABLE ) - { - let p = Spawn("PusherImpact",d.HitLocation-d.HitDir*4); - p.angle = atan2(-d.HitDir.y,-d.HitDir.x); - p.pitch = asin(d.HitDir.z); - } - else - { - d.HitActor.TraceBleed(dmg,invoker); - d.HitActor.SpawnBlood(d.HitLocation,atan2(d.HitDir.y,d.HitDir.x)+180,dmg); - d.HitActor.A_StartSound("pusher/meat",CHAN_DAMAGE,CHANF_OVERLAP); - } - // move towards target (unless we're standing on it) - if ( !(self is 'Demolitionist') || (Demolitionist(self).oldencroached != d.HitActor) ) - bJUSTATTACKED = true; - } - else - { - Vector3 HitNormal = -d.HitDir; - if ( d.HitType == TRACE_HitFloor ) - { - if ( d.Hit3DFloor ) HitNormal = -d.Hit3DFloor.top.Normal; - else HitNormal = d.HitSector.floorplane.Normal; - } - else if ( d.HitType == TRACE_HitCeiling ) - { - if ( d.Hit3DFloor ) HitNormal = -d.Hit3DFloor.bottom.Normal; - else HitNormal = d.HitSector.ceilingplane.Normal; - } - else if ( d.HitType == TRACE_HitWall ) - { - HitNormal = (-d.HitLine.delta.y,d.HitLine.delta.x,0).unit(); - if ( !d.LineSide ) HitNormal *= -1; - d.HitLine.RemoteActivate(self,d.LineSide,SPAC_Impact,d.HitLocation+HitNormal*4); - } - let p = Spawn("PusherImpact",d.HitLocation+HitNormal*4); - p.angle = atan2(HitNormal.y,HitNormal.x); - p.pitch = asin(-HitNormal.z); - if ( d.HitType == TRACE_HitFloor ) p.CheckSplash(40); - if ( waterlevel > 2 ) SWWMUtility.DoKnockback(self,-x,30000); - } - if ( swwm_omnibust ) BusterWall.BustLinetrace(d,dmg,self,d.HitDir,d.HitLocation.z); - } - else if ( waterlevel > 2 ) SWWMUtility.DoKnockback(self,-x,50000); - if ( swwm_extraalert || !(invoker.hitcnt%20) ) A_AlertMonsters(swwm_uncapalert?0:500); - invoker.hitcnt++; - } - - action void A_PusherAlt() - { - A_StopSound(CHAN_WEAPON); - if ( IsActorPlayingSound(CHAN_WEAPONEXTRA,"pusher/motor") ) - A_StartSound("pusher/motorend",CHAN_WEAPONEXTRA,CHANF_DEFAULT,pitch:1.5); - A_StartSound("pusher/stop",CHAN_WEAPON,CHANF_OVERLAP); - A_StartSound("pusher/altfire",CHAN_WEAPON,CHANF_OVERLAP); - A_BumpFOV(1.+invoker.chargelevel*.2); - A_Recoil(-(2.+4.*invoker.chargelevel)*cos(pitch)); - A_QuakeEx(2+int(invoker.chargelevel*2),2+int(invoker.chargelevel*2),2+int(invoker.chargelevel*2),3+int(invoker.chargelevel*6),0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.3+invoker.chargelevel*.7); - A_WeaponOffset(0,32); - A_Overlay(-9999,null); - A_PlayerFire(); - Vector3 x, y, z; - [x, y, z] = swwm_CoordUtil.GetAxes(pitch,angle,roll); - Vector3 origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),10*x+2*y-3.5*z); - FLineTraceData d; - LineTrace(angle,80,pitch,TRF_ABSPOSITION,origin.z,origin.x,origin.y,d); - SWWMBulletTrail.DoTrail(self,origin,x,80,0); - bool gone = false; - if ( d.HitType != TRACE_HitNone ) - { - A_QuakeEx(8,8,8,12,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.8); - A_AlertMonsters(swwm_uncapalert?0:1600); - int dmg = int(240*invoker.chargelevel); - if ( d.HitType == TRACE_HitActor ) - { - double diff = deltaangle(self.angle,AngleTo(d.HitActor)); - self.angle += clamp(diff,-5.,5.); - SWWMUtility.DoKnockback(d.HitActor,d.HitDir,85000); - d.HitActor.A_QuakeEx(9,9,9,15,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.1); - let p = SWWMPuff.Setup(d.HitLocation,d.HitDir,invoker,self,d.HitActor); - dmg = d.HitActor.DamageMobj(p,self,dmg,'Tenderize',DMG_THRUSTLESS|DMG_INFLICTOR_IS_PUFF); - if ( d.HitActor.bNOBLOOD || d.HitActor.bDORMANT || d.HitActor.bINVULNERABLE ) - { - let p = Spawn("BigPusherImpact",d.HitLocation-d.HitDir*4); - p.angle = atan2(-d.HitDir.y,-d.HitDir.x); - p.pitch = asin(d.HitDir.z); - } - else - { - d.HitActor.TraceBleed(dmg,invoker); - d.HitActor.SpawnBlood(d.HitLocation,atan2(d.HitDir.y,d.HitDir.x)+180,dmg); - d.HitActor.A_StartSound("pusher/altmeat",CHAN_DAMAGE,CHANF_OVERLAP); - } - } - else - { - Vector3 HitNormal = -d.HitDir; - if ( d.HitType == TRACE_HitFloor ) - { - if ( d.Hit3DFloor ) HitNormal = -d.Hit3DFloor.top.Normal; - else HitNormal = d.HitSector.floorplane.Normal; - } - else if ( d.HitType == TRACE_HitCeiling ) - { - if ( d.Hit3DFloor ) HitNormal = -d.Hit3DFloor.bottom.Normal; - else HitNormal = d.HitSector.ceilingplane.Normal; - } - else if ( d.HitType == TRACE_HitWall ) - { - HitNormal = (-d.HitLine.delta.y,d.HitLine.delta.x,0).unit(); - if ( !d.LineSide ) HitNormal *= -1; - d.HitLine.RemoteActivate(self,d.LineSide,SPAC_Impact,d.HitLocation+HitNormal*4); - } - let p = Spawn("BigPusherImpact",d.HitLocation+HitNormal*4); - p.angle = atan2(HitNormal.y,HitNormal.x); - p.pitch = asin(-HitNormal.z); - if ( d.HitType == TRACE_HitFloor ) p.CheckSplash(40); - } - if ( swwm_omnibust ) BusterWall.BustLinetrace(d,dmg,self,d.HitDir,d.HitLocation.z); - } - else if ( !Random[Pusher](0,3-int(invoker.chargelevel*3)) ) - { - // didn't hit anything, randomly slip off - player.SetPSprite(PSP_WEAPON,ResolveState("AltMiss")); - invoker.bNODEATHDESELECT = true; // prevent any glitching that could happen if the sequence is interrupted - A_StopSound(CHAN_WEAPON); - A_StopSound(CHAN_WEAPONEXTRA); - A_StartSound("pusher/miss",CHAN_WEAPON,CHANF_OVERLAP); - let p = Spawn("PusherProjectile",origin); - p.angle = angle; - p.pitch = pitch; - p.vel = x*p.speed*invoker.chargelevel; - p.target = self; - SWWMUtility.DoKnockback(self,x,85000.); - } - A_AlertMonsters(swwm_uncapalert?0:1200); - invoker.chargelevel = 0.; - } - - action void A_BeginCharge() - { - invoker.chargelevel = invoker.vibe = 0.; - A_WeaponOffset(0,32); - A_QuakeEx(1,1,1,33,0,1,"",QF_RELATIVE|QF_SCALEUP,rollIntensity:.5); - A_Overlay(-9999,"Dummy"); - } - - action void A_ChargeUp() - { - invoker.chargelevel = min(1.,invoker.chargelevel+.025); - if ( invoker.chargelevel >= .5 ) invoker.vibe = min(1.,invoker.vibe+.02); - A_WeaponOffset(FRandom[Pusher](-1,1)*(invoker.chargelevel-invoker.vibe),32+FRandom[Pusher](-1,1)*(invoker.chargelevel-invoker.vibe)); - if ( !(player.cmd.buttons&BT_ALTATTACK) && (invoker.chargelevel > .3) ) - player.SetPSprite(PSP_WEAPON,ResolveState("AltRelease")); - } - - override void MarkPrecacheSounds() - { - Super.MarkPrecacheSounds(); - MarkSound("pusher/select"); - MarkSound("pusher/deselect"); - MarkSound("pusher/motor"); - MarkSound("pusher/motorend"); - MarkSound("pusher/start"); - MarkSound("pusher/drill"); - MarkSound("pusher/hit1"); - MarkSound("pusher/hit2"); - MarkSound("pusher/hit3"); - MarkSound("pusher/meat1"); - MarkSound("pusher/meat2"); - MarkSound("pusher/meat3"); - MarkSound("pusher/end"); - MarkSound("pusher/checkout"); - MarkSound("pusher/pullback"); - MarkSound("pusher/altfire1"); - MarkSound("pusher/altfire2"); - MarkSound("pusher/miss"); - MarkSound("pusher/althit1"); - MarkSound("pusher/althit2"); - MarkSound("pusher/altmeat1"); - MarkSound("pusher/altmeat2"); - MarkSound("pusher/fly"); - MarkSound("pusher/bounce1"); - MarkSound("pusher/bounce2"); - MarkSound("pusher/bounce3"); - } - - Default - { - //$Title Pusher - //$Group Weapons - //$Sprite graphics/HUD/Icons/W_Pusher.png - //$Icon weapon - Tag "$T_PUSHER"; - Inventory.PickupMessage "$I_PUSHER"; - Obituary "$O_PUSHER"; - SWWMWeapon.Tooltip "$TT_PUSHER"; - SWWMWeapon.GetLine "getpusherweapon"; - Inventory.Icon "graphics/HUD/Icons/W_Pusher.png"; - Weapon.UpSound "pusher/select"; - Weapon.SlotNumber 1; - Weapon.SlotPriority 2.; - Weapon.SelectionOrder 1500; - Stamina 10000; - +WEAPON.MELEEWEAPON; - //+WEAPON.NOAUTOSWITCHTO; - Radius 20; - Height 32; - } - - States - { - Spawn: - XZW1 A -1; - Stop; - Select: - XZW2 G 2 A_FullRaise(); - XZW2 HIJKL 2; - Goto Ready; - Ready: - XZW2 A 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_ALLOWUSER1); - Wait; - Fire: - XZW2 A 2 - { - A_WeaponOffset(0,32); - invoker.chargelevel = .2; - invoker.hitcnt = 0; - A_StartSound("pusher/start",CHAN_WEAPON,CHANF_OVERLAP); - A_StartSound("pusher/motor",CHAN_WEAPONEXTRA,CHANF_LOOP,pitch:1.5); - } - XZW2 M 2; - XZW2 N 0 A_StartSound("pusher/drill",CHAN_WEAPONEXTRA2,CHANF_LOOP); - Hold: - XZW2 N 1 - { - A_WeaponOffset(FRandom[Pusher](-1,1),32+FRandom[Pusher](-1,1)); - A_Recoil(cos(pitch)); - } - XZW2 O 1 A_PusherDrill(); - XZW2 P 1 - { - A_WeaponOffset(FRandom[Pusher](-1,1),32+FRandom[Pusher](-1,1)); - A_Recoil(cos(pitch)); - } - XZW2 Q 1 A_PusherDrill(); - XZW2 R 1 - { - A_WeaponOffset(FRandom[Pusher](-1,1),32+FRandom[Pusher](-1,1)); - A_Recoil(cos(pitch)); - } - XZW2 S 1 A_PusherDrill(); - XZW2 N 2 - { - if ( player.cmd.buttons&BT_ATTACK ) - return ResolveState("Hold"); - invoker.chargelevel *= .4; - A_Recoil(.5*cos(pitch)); - A_ClearRefire(); - A_WeaponOffset(0,32); - A_StopSound(CHAN_WEAPONEXTRA2); - A_StartSound("pusher/stop",CHAN_WEAPON,CHANF_OVERLAP); - A_StartSound("pusher/motorend",CHAN_WEAPONEXTRA,CHANF_DEFAULT,pitch:1.5); - return ResolveState(null); - } - XZW2 T 2 { invoker.chargelevel = 0.; } - Goto Ready; - Dummy: - TNT1 A 1 A_ChargeUp(); - Wait; - AltFire: - XZW2 A 2 - { - A_StartSound("pusher/start",CHAN_WEAPON,CHANF_OVERLAP); - A_StartSound("pusher/motor",CHAN_WEAPONEXTRA,CHANF_LOOP,pitch:1.5); - A_StartSound("pusher/pullback",CHAN_WEAPON,CHANF_OVERLAP); - } - XZW2 UVW 2; - XZW2 X 0 A_BeginCharge(); - XZW2 XYZ 3; - XZW3 ABCDEFG 3; - XZW3 H 0 - { - A_QuakeEx(1,1,1,8,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.5); - A_StartSound("pusher/motorend",CHAN_WEAPONEXTRA,CHANF_DEFAULT,pitch:1.5); - } - XZW3 H 3; - Wait; - AltRelease: - #### # 1 A_PusherAlt(); - XZW5 R 2; - XZW3 IJKL 2; - XZW3 MNOP 3; - Goto Ready; - AltMiss: - XZW3 QRSTUVW 1; - TNT1 A -1 - { - invoker.bNODEATHDESELECT = false; - let nw = player.mo.PickNextWeapon(); - // gross hack (don't prioritize Deep Impact if we have something better than it) - if ( nw is 'DeepImpact' ) - { - player.ReadyWeapon = nw; - nw = player.mo.PickNextWeapon(); - player.ReadyWeapon = invoker; - } - if ( nw != invoker ) player.PendingWeapon = nw; - RemoveInventory(invoker); - invoker.Destroy(); - } - Stop; - Reload: - Zoom: - XZW2 A 2 - { - A_StartSound("pusher/checkout",CHAN_WEAPON,CHANF_OVERLAP); - A_PlayerCheckGun(); - } - XZW3 XYZ 2; - XZW4 ABCDEFGHIJKLMNOPQR 2; - XZW4 STUVWXYZ 3; - Goto Ready; - User1: - XZW2 A 2 - { - A_StartSound("demolitionist/wswing",CHAN_WEAPON,CHANF_OVERLAP); - A_PlayerMelee(); - } - XZW5 ABC 2; - XZW5 D 1 A_Parry(9); - XZW5 EFGH 1; - XZW5 I 0 A_Melee(70,"demolitionist/whitl",1.1,1.2,1.2); - XZW5 IJ 2; - XZW5 K 2 { invoker.PlayUpSound(self); } - XZW5 LM 2; - XZW5 NOPQ 3; - Goto Ready; - Deselect: - XZW2 B 2 A_StartSound("pusher/deselect",CHAN_WEAPON,CHANF_OVERLAP); - XZW2 CDEF 2; - XZW2 F -1 A_FullLower(); - Stop; - } -} diff --git a/zscript/weapons/swwm_jackhammer_fx.zsc b/zscript/weapons/swwm_jackhammer_fx.zsc deleted file mode 100644 index 8ed2e02af..000000000 --- a/zscript/weapons/swwm_jackhammer_fx.zsc +++ /dev/null @@ -1,376 +0,0 @@ -// Pusher projectiles and effects - -Class PusherImpact : Actor -{ - Default - { - Radius 0.1; - Height 0; - +NOGRAVITY; - +NOCLIP; - +NOTELEPORT; - +NOINTERACTION; - } - override void PostBeginPlay() - { - Super.PostBeginPlay(); - A_QuakeEx(2,2,2,12,0,200,"",QF_RELATIVE|QF_SCALEDOWN,falloff:100,rollIntensity:.3); - A_StartSound("pusher/hit",CHAN_VOICE); - A_SprayDecal("WallCrack",-20); - int numpt = Random[Pusher](1,3); - Vector3 x = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch)); - 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 - angle = oldangle; - pitch = oldpitch; - vel = oldvel; - // try to guess if we hit the sky - if ( HitSkyLine(BlockingLine,lineside) || (BlockingCeiling && (ceilingpic == skyflatnum)) || (BlockingFloor && (floorpic == skyflatnum)) ) - { - special1 = 0; - ExplodeMissile(); - return; - } - // re-do the bounce with our formula - vel = .8*((vel dot HitNormal)*HitNormal*(-1.8+FRandom[Pusher](.0,.8))+vel); - A_StartSound("pusher/bounce",volume:.3); - A_AlertMonsters(swwm_uncapalert?0:300); - if ( vel.length() < 5 ) - { - special1 = 0; - ExplodeMissile(); - } - } - void A_BecomePickup() - { - if ( special1 ) - { - // stuff from direct hit - FLineTraceData d; - LineTrace(angle,40,pitch,0,5,data:d); - Vector3 HitNormal = -d.HitDir; - if ( d.HitType == TRACE_HitFloor ) - { - if ( d.Hit3DFloor ) HitNormal = -d.Hit3DFloor.top.Normal; - else HitNormal = d.HitSector.floorplane.Normal; - } - else if ( d.HitType == TRACE_HitCeiling ) - { - if ( d.Hit3DFloor ) HitNormal = -d.Hit3DFloor.bottom.Normal; - else HitNormal = d.HitSector.ceilingplane.Normal; - } - else if ( d.HitType == TRACE_HitWall ) - { - HitNormal = (-d.HitLine.delta.y,d.HitLine.delta.x,0).unit(); - if ( !d.LineSide ) HitNormal *= -1; - } - let p = Spawn("BigPusherImpact",d.HitLocation+HitNormal*4); - p.angle = atan2(HitNormal.y,HitNormal.x); - p.pitch = asin(-HitNormal.z); - bool busted = false; - if ( swwm_omnibust ) - { - if ( BusterWall.BustLinetrace(d,100,target,d.HitDir,d.HitLocation.z) ) - busted = true; - } - if ( busted ) pitch = 0.; - else bNOGRAVITY = true; - } - else pitch = 0; - gravity = 1.; - ClearBounce(); - bSPECIAL = true; - A_SetSize(20,16); - A_ChangeLinkFlags(0); - A_StopSound(CHAN_BODY); - } - override int DoSpecialDamage( Actor target, int damage, Name damagetype ) - { - if ( target == lasthit ) return 0; - lasthit = target; - if ( target.bNOBLOOD || target.bDORMANT || target.bINVULNERABLE ) A_StartSound("pusher/althit",CHAN_WEAPON,CHANF_OVERLAP); - else A_StartSound("pusher/altmeat",CHAN_WEAPON,CHANF_OVERLAP); - target.A_QuakeEx(6,6,6,10,0,200,"",QF_RELATIVE|QF_SCALEDOWN,falloff:100,rollIntensity:.7); - SWWMUtility.DoKnockback(target,vel.unit(),85000); - return damage; - } - override void Touch( Actor toucher ) - { - if ( toucher.player && swwm_usetopickup && !bUsePickup ) - return; - // cannot pick up swapweapon unless explicitly pressing use - let pw = GetDefaultByType("PusherWeapon"); - SWWMWeapon sw; - if ( swwm_swapweapons && (sw = pw.HasSwapWeapon(toucher)) ) - { - if ( toucher.CheckLocalView() ) - Console.MidPrint(SmallFont,String.Format(StringTable.Localize("$SWWM_SWAPWEAPON"),sw.GetTag(),StringTable.Localize("$T_PUSHER"))); - return; - } - let w = toucher.FindInventory("PusherWeapon"); - if ( toucher.player && w ) - { - let psp = toucher.player.GetPSPrite(PSP_WEAPON); - if ( psp && psp.CurState.InStateSequence(w.FindState("AltMiss")) ) - return; - } - if ( !toucher.player || !toucher.GiveInventory("PusherWeapon",1) ) return; - if ( toucher.CheckLocalView() ) - { - toucher.A_StartSound("misc/w_pkup",CHAN_ITEM,CHANF_NOPAUSE|CHANF_MAYBE_LOCAL); - let w = toucher.FindInventory("PusherWeapon"); - if ( w ) w.PrintPickupMessage(true,w.PickupMessage()); - } - else toucher.A_StartSound("misc/w_pkup",CHAN_ITEM,CHANF_MAYBE_LOCAL); - toucher.A_SelectWeapon("PusherWeapon"); - Spawn("SWWMRedPickupFlash",pos); - Destroy(); - } - override bool Used( Actor user ) - { - // test vertical range - Vector3 diff = level.Vec3Diff(user.Vec3Offset(0,0,user.Height/2),Vec3Offset(0,0,Height/2)); - double rang = user.player?PlayerPawn(user.player.mo).UseRange:(user.Height/2); - if ( abs(diff.z) > rang ) return false; - // if the toucher owns our SwapWeapon, drop it before picking us up - let pw = GetDefaultByType("PusherWeapon"); - SWWMWeapon sw; - if ( swwm_swapweapons && (sw = pw.HasSwapWeapon(user)) ) - { - bool swapto = false; - if ( sw == user.player.ReadyWeapon ) swapto = true; - user.DropInventory(sw); - // don't autoswitch just yet (hacky) - if ( swapto ) - { - user.player.ReadyWeapon = null; - user.player.PendingWeapon = WP_NOCHANGE; - } - } - bUsePickup = true; - Touch(user); - bUsePickup = false; - return bDestroyed; - } - States - { - Spawn: - XZW1 A 1 A_Reorient(); - Wait; - Bounce: - XZW1 A 0 A_HandleBounce(); - Goto Spawn; - Death: - XZW1 A 0 A_BecomePickup(); - XZW1 A 1 A_JumpIf(pos.z<=floorz,1); - Wait; - XZW1 A -1 A_StartSound("pusher/bounce"); - Stop; - } -} diff --git a/zscript/weapons/swwm_shot_fx.zsc b/zscript/weapons/swwm_shot_fx.zsc index fc3856b4d..6c21427d0 100644 --- a/zscript/weapons/swwm_shot_fx.zsc +++ b/zscript/weapons/swwm_shot_fx.zsc @@ -1242,7 +1242,7 @@ Class TheBall : Actor override void PostBeginPlay() { Super.PostBeginPlay(); - A_StartSound("pusher/fly",CHAN_WEAPON,CHANF_LOOP,.6,3.,2.); + A_StartSound("spreadgun/ballfly",CHAN_WEAPON,CHANF_LOOP,.6,3.,2.); heat = 1.; } override void Tick()