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 1cb727105..04e790af4 100644 --- a/README.md +++ b/README.md @@ -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. - ### Explodium Gun (slot 2) ~ Replaces Pistol, Elven Wand, Hexen starting weapons ![](docimg/explodiumgun.png) diff --git a/achievements.lst b/achievements.lst index 687fbaeb9..ca94c5aa5 100644 --- a/achievements.lst +++ b/achievements.lst @@ -98,7 +98,6 @@ step,30,yes,any stomp,40,yes,any sunny,15,yes,any tele,0,no,any -tender,100,yes,any thicc,100,yes,any thruwall,20,yes,any tornado,0,no,heretic 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 2c4e697ac..af138be2d 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"; @@ -478,7 +476,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."; @@ -718,9 +715,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" @@ -915,7 +909,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."; @@ -1296,8 +1290,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 acc8c9442..6f9b54360 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 2c1459e85..f0e0f22c5 100644 --- a/language.def_menu +++ b/language.def_menu @@ -406,7 +406,7 @@ TOOLTIP_SWWM_MM_THINGCOLOR_VIPITEM = "Color for very important items."; TOOLTIP_SWWM_MM_THINGCOLOR_SHOOTABLE = "Color for things that can be damaged."; TOOLTIP_SWWM_MM_THINGCOLOR_MISSILE = "Color for projectiles."; // 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"; @@ -417,17 +417,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 287263ba6..ef4ba5636 100644 --- a/language.def_voice +++ b/language.def_voice @@ -273,7 +273,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 057cd82e3..8bf8e826f 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"; @@ -377,7 +376,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."; @@ -604,9 +602,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" @@ -797,7 +792,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."; @@ -1139,8 +1134,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 840ec84de..93e6222be 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 413a398ce..462e26ef0 100644 --- a/language.es_voice +++ b/language.es_voice @@ -245,7 +245,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 2bc42bc35..8e3e90e63 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.2.23 r4 \cu(Sun 12 Jun 13:13:02 CEST 2022)\c-"; -SWWM_SHORTVER="\cw1.2.23 r4 \cu(2022-06-12 13:13:02)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.2.23 r5 \cu(Sun 12 Jun 13:26:52 CEST 2022)\c-"; +SWWM_SHORTVER="\cw1.2.23 r5 \cu(2022-06-12 13:26:52)\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 70b1bc0c9..0b89eccef 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. diff --git a/sndinfo.txt b/sndinfo.txt index 612b2f17c..0c7aa353c 100644 --- a/sndinfo.txt +++ b/sndinfo.txt @@ -313,7 +313,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 @@ -743,6 +742,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 @@ -859,41 +864,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 @@ -971,6 +941,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 8fbfed65e..226cc21e6 100644 --- a/zscript.txt +++ b/zscript.txt @@ -97,8 +97,6 @@ version "4.8" #include "zscript/weapons/swwm_baseweapon_melee.zsc" #include "zscript/weapons/swwm_baseweapon_precisechair.zsc" #include "zscript/weapons/swwm_baseweapon_ammobuffer.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 3a1890078..9f4295e91 100644 --- a/zscript/handler/swwm_handler_damage.zsc +++ b/zscript/handler/swwm_handler_damage.zsc @@ -209,8 +209,6 @@ extend Class SWWMHandler if ( (e.Thing is 'Cyberdemon') && (inflictor is 'Rocket') && (buff.tracer == e.Thing) ) SWWMUtility.MarkAchievement("cybully",src.player); } - if ( (inflictor is 'PusherWeapon') || (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 f903081a6..01da67453 100644 --- a/zscript/handler/swwm_handler_process.zsc +++ b/zscript/handler/swwm_handler_process.zsc @@ -210,106 +210,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 2bab053a8..d0383621c 100644 --- a/zscript/swwm_thinkers_player.zsc +++ b/zscript/swwm_thinkers_player.zsc @@ -163,7 +163,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 '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 982edfea6..999db0cae 100644 --- a/zscript/utility/swwm_utility.zsc +++ b/zscript/utility/swwm_utility.zsc @@ -1368,7 +1368,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; @@ -2148,20 +2147,13 @@ Class SWWMUtility return c; } - // 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'); - return 'PusherWeapon'; + //if ( CheckNeedsItem('ItamexHammer') ) return 'ItamexHammer'; + return PickSWWMSlot2(); } // pistol spawn, pretty simple static Class PickSWWMSlot2() @@ -2202,13 +2194,16 @@ Class SWWMUtility // second plasma rifle spawn static Class PickSWWMSlot8() { - //return PickPair('SilverBullet','MisterRifle'); + //return PickPair('SilverBullet','RayKhom'); return 'SilverBullet'; } // first bfg spawn static Class PickSWWMSlot9() { - //return PickPair('CandyGun','RayKhom'); + // 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','MisterRifle'); return 'CandyGun'; } // second bfg spawn (each weapon can only exist once) @@ -2230,7 +2225,7 @@ Class SWWMUtility static Class PickDoomSlot6() { bool hasslot7 = (!CheckNeedsItem('Sparkster')/*||!CheckNeedsItem('ModernSparkster')*/); - bool hasslot8 = (!CheckNeedsItem('SilverBullet')/*||!CheckNeedsItem('MortalRifle')*/); + bool hasslot8 = (!CheckNeedsItem('SilverBullet')/*||!CheckNeedsItem('RayKhom')*/); // if the player already has a slot 7 weapon... if ( hasslot7 ) { @@ -2246,7 +2241,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 cda7e214e..45f6d784d 100644 --- a/zscript/weapons/swwm_baseweapon_fx.zsc +++ b/zscript/weapons/swwm_baseweapon_fx.zsc @@ -257,8 +257,8 @@ Class BigPunchImpact : Actor override void PostBeginPlay() { Super.PostBeginPlay(); - A_QuakeEx(8,8,8,18,0,600,"",QF_RELATIVE|QF_SCALEDOWN|QF_3D,falloff:200,rollIntensity:.9); - A_StartSound("pusher/althit",CHAN_VOICE,CHANF_DEFAULT,bAMBUSH?.6:1.); + A_QuakeEx(8,8,8,18,0,600,"",QF_RELATIVE|QF_SCALEDOWN,falloff:200,rollIntensity:.9); + 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 10b7e28d1..4a4d70152 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|QF_3D,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|QF_3D,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 a02033a21..000000000 --- a/zscript/weapons/swwm_jackhammer.zsc +++ /dev/null @@ -1,399 +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 DynamicValueInterpolator ChargeInter; - - 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 31d912f88..df7111788 100644 --- a/zscript/weapons/swwm_shot_fx.zsc +++ b/zscript/weapons/swwm_shot_fx.zsc @@ -1063,7 +1063,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()