Several changes from devel once more:
- Fuck it, Quadravol will be lever action. - Tiny cleanup. - Rewrite the weapon replacement system (less of a mess now maybe?). - Some menu fixes. - Minimap zoom increments like in the Common Library. - Add missing sound definition for Safety Tether. (This mostly went unnoticed because it's VERY rare to have it play) - Shift Sparkster x3 (DLC2) to slot 7. This way you can have both it and the Quadravol simultaneously. It would be unfair to not let you hold both "iconic" UnSX weapons at once. - Small lore tweak on Quadravol stance swap. - Fix off-by-one bug in looping palette lights. - Re-do logo shader. Use separate layer textures. - Fix Elemental Coating breaking "End Level" damage sectors. (This will be the last batch of changes before I continue working on menus)
|
|
@ -43,7 +43,7 @@ A couple extra weapons, not enough for a full batch, but still worthy additions.
|
|||
* **DLC Weaponset 2:**
|
||||
- [1] Hand of Divine *(Total Madness)*
|
||||
- Facepunching Extraordinaire *(Kill 300 enemies with the Hand of Divine)*
|
||||
- [6] Sparkster x3 *(UnSX 2)*
|
||||
- [7] Sparkster x3 *(UnSX 2)*
|
||||
- A Fine Sparking *(Kill 30 enemies at once with a Sparkster Rifle combo shot)*
|
||||
- [9] Mortal Rifle *(UnSX 2)*
|
||||
- Railed Hard *(Shoot through 16 enemies with a single Mortal Rifle overpressure shot)*
|
||||
|
|
|
|||
19
gldefs.misc
|
|
@ -40,14 +40,25 @@ HardwareShader Texture "graphics/tempbg.png"
|
|||
HardwareShader Texture "graphics/SWWMGZLogo.png"
|
||||
{
|
||||
Shader "shaders/glsl/LogoAnimated.fp"
|
||||
Define "TEX_SZ" = "vec2(2048.,1024.)"
|
||||
Texture "LogoTex" "graphics/SWWMGZLogo_Layers.png"
|
||||
// what no 2d arrays does to a mf
|
||||
Texture "Layer1" "graphics/SWWMGZLogo_Layer1.png"
|
||||
Texture "Layer2" "graphics/SWWMGZLogo_Layer2.png"
|
||||
Texture "Layer3" "graphics/SWWMGZLogo_Layer3.png"
|
||||
Texture "Layer4" "graphics/SWWMGZLogo_Layer4.png"
|
||||
Texture "Layer5" "graphics/SWWMGZLogo_Layer5.png"
|
||||
Texture "Layer6" "graphics/SWWMGZLogo_Layer6.png"
|
||||
}
|
||||
HardwareShader Texture "graphics/M_SWWM.png"
|
||||
{
|
||||
Shader "shaders/glsl/LogoAnimated.fp"
|
||||
Define "TEX_SZ" = "vec2(256.,128.)"
|
||||
Texture "LogoTex" "graphics/M_SWWM_Layers.png"
|
||||
// what no 2d arrays does to a mf
|
||||
Texture "Layer1" "graphics/M_SWWM_Layer1.png"
|
||||
Texture "Layer2" "graphics/M_SWWM_Layer2.png"
|
||||
Texture "Layer3" "graphics/M_SWWM_Layer3.png"
|
||||
Texture "Layer4" "graphics/M_SWWM_Layer4.png"
|
||||
Texture "Layer5" "graphics/M_SWWM_Layer5.png"
|
||||
Texture "Layer6" "graphics/M_SWWM_Layer6.png"
|
||||
Define "NO_BILINEAR"
|
||||
}
|
||||
HardwareShader Sprite "MBRNB0"
|
||||
{
|
||||
|
|
|
|||
BIN
graphics/M_SWWM_Layer1.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
graphics/M_SWWM_Layer2.png
Normal file
|
After Width: | Height: | Size: 90 KiB |
BIN
graphics/M_SWWM_Layer3.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
graphics/M_SWWM_Layer4.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
graphics/M_SWWM_Layer5.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
graphics/M_SWWM_Layer6.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 190 KiB |
BIN
graphics/SWWMGZLogo_Layer1.png
Normal file
|
After Width: | Height: | Size: 384 KiB |
BIN
graphics/SWWMGZLogo_Layer2.png
Normal file
|
After Width: | Height: | Size: 3.1 MiB |
BIN
graphics/SWWMGZLogo_Layer3.png
Normal file
|
After Width: | Height: | Size: 508 KiB |
BIN
graphics/SWWMGZLogo_Layer4.png
Normal file
|
After Width: | Height: | Size: 418 KiB |
BIN
graphics/SWWMGZLogo_Layer5.png
Normal file
|
After Width: | Height: | Size: 520 KiB |
BIN
graphics/SWWMGZLogo_Layer6.png
Normal file
|
After Width: | Height: | Size: 76 KiB |
|
Before Width: | Height: | Size: 7.1 MiB |
|
|
@ -809,9 +809,9 @@ TT_SHEENHMG =
|
|||
TT_QUADRAVOL =
|
||||
"\cfFire:\c- Shoot weapon.\n"
|
||||
"\cfAltfire:\c- Pump weapon.\n"
|
||||
"\cfZoom:\c- Toggle spread mode.\n"
|
||||
"\cfReload:\c- Load cells.\n"
|
||||
"\cfFire+Altfire:\c- Hold to slamfire.";
|
||||
"\cfZoom+Fire:\c- Toggle spread mode.\n"
|
||||
"\cfZoom+Altfire:\c- Switch firing stance.";
|
||||
TT_BLACKFIRE =
|
||||
"\cfFire:\c- Freeze thrower.\n"
|
||||
"\cfAltfire:\c- Icicle shot.\n"
|
||||
|
|
|
|||
|
|
@ -1541,7 +1541,7 @@ SWWM_LORETXT_HEAVYMAHSHEENGUN =
|
|||
"\n"
|
||||
"How much bullet is too much bullet? The answer, according to \cfCyrus Enterprises\c-, is \"never enough\". The \cfSheen Heavy Machinegun\c- is a monstrosity in all aspects when it comes to delivering lead. Steadily feeding directly off \cfHammerspace™\c-, this puppy can be carried anywhere without the need to bring along hefty ammo boxes, ready to rain death upon anything on demand. Additionally, powered by \cfTach-Engine\c-'s \"Magdalene\" Microfusion battery, the weapon can stay in operation for several days without needing to recharge.\n"
|
||||
"\n"
|
||||
"The ammunition employed by this weapon are AP rounds of 14.5x114mm caliber. Unlike the standard heavy ordnance rounds used within the Soviet Union, these are far more potent, employing an alloy of both mundane and exotic elements known as Meta-Tellubrium, generally used for fusion reactor parts due to its outstanding resilience to both extreme pressure and heat. As reported following the \cfGhoul Hunt\c- of 2007, this ammunition is quite effective in tearing through demon flesh as if it were jelly.\n"
|
||||
"The ammunition employed by this weapon are AP rounds of 14.5x114mm caliber. Unlike the standard heavy ordnance rounds used within the Soviet Union, these are far more potent, employing an alloy of both mundane and exotic elements known as Meta-Telebrium, generally used for fusion reactor parts due to its outstanding resilience to both extreme pressure and heat. As reported following the \cfGhoul Hunt\c- of 2007, this ammunition is quite effective in tearing through demon flesh as if it were jelly.\n"
|
||||
"\n"
|
||||
"While generally meant for mounted use, on-the-go operation is possible, provided the user is equipped with silver-rated power armor at minimum in order to handle its heavy recoil.\n"
|
||||
"\n"
|
||||
|
|
@ -2896,11 +2896,11 @@ SWWM_LORETXT_QUADRAVOL =
|
|||
"\n"
|
||||
"\cfPrimary Fire:\c- Single, large fireball shot. Very minor drift, so its effective range is quite long. Ignites nearby targets on impact.\n"
|
||||
"\n"
|
||||
"\cfSecondary Fire:\c- Pumps additional fuel, increasing the strength of your shots, but also their drift, making them less accurate. Excess overcharge will result in a wildly inaccurate misfire, but even this has its uses. Forcibly pumping in the middle of primary fire engages slamfire, allowing you to shoot rapid low-charge bursts.\n"
|
||||
"\cfSecondary Fire:\c- Pumps additional fuel, increasing the strength of your shots, but also their drift, making them less accurate. Excess overcharge will result in a wildly inaccurate misfire, but even this has its uses.\n"
|
||||
"\n"
|
||||
"\cfTertiary Fire:\c- Toggles a scatter shot mode for primary. Several smaller fireballs (number relative to charge), with increased drift and lower effective range, but very useful against multiple targets.\n"
|
||||
"\cfTertiary Fire:\c- Hold and tap primary fire to toggle scatter shot mode for primary. Several smaller fireballs (number relative to charge), with increased drift and lower effective range, but very useful against multiple targets. Hold and tap secondary fire to switch weapon stances between two-handed and one-handed. This serves no real purpose other than looking cooler when pumping, your accuracy with the weapon is unaffected but you won't shoot it as quickly.\n"
|
||||
"\n"
|
||||
"\cfReloading:\c- Insert up to five fuel cells into the weapon's tube magazine. Each cell is immediately ejected once it's been emptied into the weapon's internal \"crucible\", so you can hold additional ammo while keeping your charge.\n"
|
||||
"\cfReloading:\c- Insert up to five fuel cells into the weapon's tube magazine. Each cell is immediately emptied into the weapon's internal \"crucible\", so you can keep loading additional ammo while boosting your charge.\n"
|
||||
"\n"
|
||||
"\cfTechniques:\c- The weapon has a certain \"extra effective\" special move should you be close enough to your target. Plunging the four bayonets into an enemy and immediately pulling the trigger afterwards will result in a potent point blank explosion that will send them flying, covered in flames.\n"
|
||||
"\n"
|
||||
|
|
@ -2909,7 +2909,9 @@ SWWM_LORETXT_QUADRAVOL =
|
|||
"\n"
|
||||
"\cfAnd of course it's huge af too, even if the grip is supposedly adapted. It honestly weirds me out how you can do that thing of... making your hands bigger, but at least it lets you use stuff like that easily.\c-\n"
|
||||
"\n"
|
||||
"\cfAnyway, motherfucking fireballs, that work underwater??? Gonna need to see the science behind this because that makes no fucking sense and yet... it's there.\c-";
|
||||
"\cfAnyway, motherfucking fireballs, that work underwater??? Gonna need to see the science behind this because that makes no fucking sense and yet... it's there.\c-\n"
|
||||
"\n"
|
||||
"\cfBy the way, leverguns make me wild out. You know it, we all know it, they're just SO GOOD.\c-";
|
||||
SWWM_LORETAG_RAFANKOS = "Rafan-Kos";
|
||||
SWWM_LORETAB_RAFANKOS = "Item";
|
||||
SWWM_LOREREL_RAFANKOS = "Nekuratek;Saya";
|
||||
|
|
@ -2927,11 +2929,11 @@ SWWM_LORETXT_RAFANKOS =
|
|||
"\n"
|
||||
"The weapon employs \cfKabbadon\c- as fuel, a common byproduct of \cfNokorokinylum\c- fusion, thus making it fairly easy to produce. However, the density and degree of purity required in the creation of a single fuel pod make its price escalate dramatically.\n"
|
||||
"\n"
|
||||
"\cfPrimary Fire:\c- Release a radiant blast of energy that punches its way through anything, sending sparks flying in all directions along its path and burning other nearby targets. The blast burns for a total of five seconds before rapidly dissipating.\n"
|
||||
"\cfPrimary Fire:\c- Release a radiant blast of energy that punches its way through anything, sending sparks flying in all directions along its path and burning other nearby targets. The blast burns for up to five seconds before rapidly dissipating.\n"
|
||||
"\n"
|
||||
"\cfSecondary Fire:\c- Releases several scattered blasts in a wide cone, with similar destructive potential, but burning quicker, stronger, and dissipating much rapidly.\n"
|
||||
"\cfSecondary Fire:\c- Releases several scattered blasts in a wide cone, with similar destructive potential, but burning quicker, stronger, and dissipating more rapidly.\n"
|
||||
"\n"
|
||||
"\cfReload:\c- Loads in a new magazine, each holding four pods.\n"
|
||||
"\cfReload:\c- Loads in a new magazine, each holding four pods. The currently loaded pod must be fully discharged before a new one can be chambered in.\n"
|
||||
"\n"
|
||||
"\cxSaya's Notes:\c-\n"
|
||||
"\cf\"Ultimate Weapon\"? Talk about pretentious... But you know, something about this was making my brains itch, and then it clicked. This is basically like that one spellcard, the Master Spark. Hell, it almost even sounds and looks the same...\c-\n"
|
||||
|
|
|
|||
|
|
@ -371,7 +371,7 @@ TOOLTIP_EVENT_SWWMRESETCVARS = "Resets all the mod's settings to their original
|
|||
TOOLTIP_EVENT_SWWMRESETACHIEVEMENTS = "Erases all your archievement progress.";
|
||||
TOOLTIP_SWWM_NOINTERTIPS = "Hides intermission tips, in case you don't want to see them.";
|
||||
TOOLTIP_SWWM_DEMOSLAYER = "Killed enemies may drop health and armor orbs.";
|
||||
TOOLTIP_SWWM_NETEVENT_SWWMCLEAREFFECTS = "Fades out any active blood, gore, debris and casings.";
|
||||
TOOLTIP_NETEVENT_SWWMCLEAREFFECTS = "Fades out any active blood, gore, debris and casings.";
|
||||
TOOLTIP_SWWMMINIMAPMENU = "Configure the minimap.";
|
||||
TOOLTIP_SWWMACHIEVEMENTMENU = "View your achievements.";
|
||||
TOOLTIP_SWWM_MM_ENABLE = "Displays a minimap under the score counter.";
|
||||
|
|
|
|||
|
|
@ -699,9 +699,9 @@ TT_SHEENHMG =
|
|||
TT_QUADRAVOL =
|
||||
"\cfPrimario:\c- Disparar arma.\n"
|
||||
"\cfSecundario:\c- Bombear arma.\n"
|
||||
"\cfZoom:\c- Alternar modo disperso.\n"
|
||||
"\cfRecarga:\c- Cargar células.\n"
|
||||
"\cfPrimario+Secundario:\c- Mantener para disparo rápido.";
|
||||
"\cfZoom+Primario:\c- Alternar modo disperso.\n"
|
||||
"\cfZoom+Secundario:\c- Cambiar postura de arma.";
|
||||
TT_BLACKFIRE =
|
||||
"\cfPrimario:\c- Lanzafrío.\n"
|
||||
"\cfSecundario:\c- Disparo de carámbano.\n"
|
||||
|
|
|
|||
|
|
@ -1426,7 +1426,7 @@ SWWM_LORETXT_HEAVYMAHSHEENGUN =
|
|||
"\n"
|
||||
"¿Cuanta bala es demasiada bala? La respuesta, según \cfCyrus Enterprises\c-, es \"nunca suficiente\". La \cfAmetralladora Pesada Sheen\c- es una monstruosidad en todos los aspectos en lo referente a repartir plomo. Alimentada directamente desde \cfHammerspace™\c-, esta preciosidad se puede llevar a cualquier lado sin la necesidad de llevar encima pesadas cajas de munición, lista para diluviar muerte sobre cualquier cosa cuando se desee. Adicionalmente, teniendo la batería de Microfusión \"Magdalene\" de \cfTach-Engine\c-, el arma puede permanecer operativa durante días sin necesidad de recargarla.\n"
|
||||
"\n"
|
||||
"La munición empleada por este arma son balas anti-armadura del calibre 14.5x114mm. A diferencia de la munición estándar para armería pesada empleada en la Unión Soviética, esta es mucho más potente, empleando una aleación de elementos tanto mundanos como exóticos conocida como Meta-Tellubrium, generalmente usada para piezas de reactores de fusión dada su excepcional resistencia tanto a presión como calor extremos. Tal y como fue reportado tras la \cfCaza de Ghouls\c- de 2007, esta munición es bastante efectiva atravesando carne demoníaca como si fuese gelatina.\n"
|
||||
"La munición empleada por este arma son balas anti-armadura del calibre 14.5x114mm. A diferencia de la munición estándar para armería pesada empleada en la Unión Soviética, esta es mucho más potente, empleando una aleación de elementos tanto mundanos como exóticos conocida como Meta-Telebrium, generalmente usada para piezas de reactores de fusión dada su excepcional resistencia tanto a presión como calor extremos. Tal y como fue reportado tras la \cfCaza de Ghouls\c- de 2007, esta munición es bastante efectiva atravesando carne demoníaca como si fuese gelatina.\n"
|
||||
"\n"
|
||||
"Aunque generalmente ideada para el uso montado, la operación al paso es posible, siempre y cuando el usuario tenga una servoarmadura de grado plata como mínimo para manejar el potente retroceso.\n"
|
||||
"\n"
|
||||
|
|
@ -2668,11 +2668,11 @@ SWWM_LORETXT_QUADRAVOL =
|
|||
"\n"
|
||||
"\cfFuego Primario:\c- Disparo de gran bola de fuego. Desvío mucho menor, por lo que su rango efectivo es muy largo. Incendia objetivos cercanos al impactar.\n"
|
||||
"\n"
|
||||
"\cfFuego Secundario:\c- Bombea combustible adicional, incrementando la potencia de tus disparos, pero también su desvío, haciéndolos menos precisos. La sobrecarga excesiva puede resultar en una imprecisa descarga accidental, pero incluso esto tiene sus usos. Forzar el bombeo mientras se usa el fuego primario realizará disparos en cadena rápidos de baja potencia.\n"
|
||||
"\cfFuego Secundario:\c- Bombea combustible adicional, incrementando la potencia de tus disparos, pero también su desvío, haciéndolos menos precisos. La sobrecarga excesiva puede resultar en una imprecisa descarga accidental, pero incluso esto tiene sus usos.\n"
|
||||
"\n"
|
||||
"\cfFuego Terciario:\c- Alterna el fuego primario a un modo de dispersión. Varias bolas de fuego menores (número relativo a la carga), con un desvío incrementado y rango efectivo menor, pero muy útil contra múltiples objetivos.\n"
|
||||
"\cfFuego Terciario:\c- Mantén y pulsa fuego primario para alternar el modo de dispersión. Varias bolas de fuego menores (número relativo a la carga), con un desvío incrementado y rango efectivo menor, pero muy útil contra múltiples objetivos. Mantén y pulsa fuego secundario para alternar la postura de arma entre dos manos y una mano. Esto solo sirve para ser más vistoso al bombear, y no altera tu puntería pero si hace los disparos más lentos.\n"
|
||||
"\n"
|
||||
"\cfRecarga:\c- Inserta hasta cinco células de combustible en el tubo del arma. Cada célula es expulsada inmediatamente tras ser vaciada en el \"crisol\" interno del arma, así que puedes almacenar munición adicional mientras mantienes la carga.\n"
|
||||
"\cfRecarga:\c- Inserta hasta cinco células de combustible en el tubo del arma. Cada célula es vaciada immediatemente en el \"crisol\" interno del arma, así que puedes cargar munición adicional mientras incrementas la carga.\n"
|
||||
"\n"
|
||||
"\cfTécnicas:\c- El arma tiene un cierto movimiento especial \"extra efectivo\" si te encuentras a poca distancia de tu objetivo. Hundiendo las cuatro bayonetas en el enemigo e inmediatamente después apretando el gatillo resultará en una potente explosión a bocajarro que lo enviará volando, cubierto en llamas.\n"
|
||||
"\n"
|
||||
|
|
@ -2681,7 +2681,9 @@ SWWM_LORETXT_QUADRAVOL =
|
|||
"\n"
|
||||
"\cfY por supuesto es jodidamente enorme, también, aunque la empuñadura está supuestamente adaptada. En serio que se me hace rarísimo como puedes hacer eso de... agrandar las manos, pero al menos te permite usar cosas así fácilmente.\c-\n"
|
||||
"\n"
|
||||
"\cfEn fin, putas bolas de fuego, ¿¿¿que funcionan bajo el agua??? Voy a tener que echarle un ojo a la ciencia detrás de esto porque eso no tiene puto sentido y aun así... está ahí.\c-";
|
||||
"\cfEn fin, putas bolas de fuego, ¿¿¿que funcionan bajo el agua??? Voy a tener que echarle un ojo a la ciencia detrás de esto porque eso no tiene puto sentido y aun así... está ahí.\c-\n"
|
||||
"\n"
|
||||
"\cfPor cierto, las armas de palanca me ponen a tope. Tú lo sabes, todos lo sabemos, es que son BUENÍSIMAS.\c-";
|
||||
SWWM_LORETXT_RAFANKOS =
|
||||
"\cxDesignación:\c-\n"
|
||||
"\cf Rafan-Kos (\"Arma Definitiva\")\c-\n"
|
||||
|
|
@ -2696,11 +2698,11 @@ SWWM_LORETXT_RAFANKOS =
|
|||
"\n"
|
||||
"El arma emplea \cfKabbadon\c- como combustible, un subproducto común de la fusión de \cfNokorokinylum\c-, haciéndolo así fácil de fabricar. Sin embargo, dada la densidad y pureza requeridas en la creación de una sola cápsula de combustible hacen que su precio escale dramáticamente.\n"
|
||||
"\n"
|
||||
"\cfFuego Primario:\c- Libera un radiante estallido de energía que se abre paso a través de todo, soltando chispas en todas direcciones a su paso y quemando objetivos cercanos. El estallido arde durante un total de cinco segundos antes de disiparse rápidamente.\n"
|
||||
"\cfFuego Primario:\c- Libera un radiante estallido de energía que se abre paso a través de todo, soltando chispas en todas direcciones a su paso y quemando objetivos cercanos. El estallido arde durante un máximo de cinco segundos antes de disiparse rápidamente.\n"
|
||||
"\n"
|
||||
"\cfFuego Secundario:\c- Libera varios estallidos dispersos en un cono amplio, con un potencial destructivo similar, pero ardiendo más rápido, con mayor intensidad, y disipándose mucho antes.\n"
|
||||
"\n"
|
||||
"\cfRecarga:\c- Coloca un nuevo cargador, cada uno almacenando cuatro cápsulas.\n"
|
||||
"\cfRecarga:\c- Coloca un nuevo cargador, cada uno almacenando cuatro cápsulas. La cápsula cargada debe gastarse completamente antes de poder insertar una nueva en la recámara.\n"
|
||||
"\n"
|
||||
"\cxNotas de Saya:\c-\n"
|
||||
"\cf¿\"Arma Definitiva\"? Menuda cursilada... Pero sabes, algo de todo esto hacía que me picotearan los sesos, y entonces todo encajó. Esta cosa es básicamente como esa carta de hechizo, la Chispa Maestra. Hostia, es que hasta suena y pinta igual...\c-\n"
|
||||
|
|
|
|||
|
|
@ -370,7 +370,7 @@ TOOLTIP_EVENT_SWWMRESETCVARS = "Resetea todas las opciones del mod a sus valores
|
|||
TOOLTIP_EVENT_SWWMRESETACHIEVEMENTS = "Borra todo tu progreso de logros.";
|
||||
TOOLTIP_SWWM_NOINTERTIPS = "Oculta los consejos de intermisión, por si no quieres verlos.";
|
||||
TOOLTIP_SWWM_DEMOSLAYER = "Los enemigos que mates soltarán orbes de salud y armadura.";
|
||||
TOOLTIP_SWWM_NETEVENT_SWWMCLEAREFFECTS = "Desvanece cualquier sangre, vísceras, escombros y casquillos activos.";
|
||||
TOOLTIP_NETEVENT_SWWMCLEAREFFECTS = "Desvanece cualquier sangre, vísceras, escombros y casquillos activos.";
|
||||
TOOLTIP_SWWMMINIMAPMENU = "Configura el minimapa.";
|
||||
TOOLTIP_SWWMACHIEVEMENTMENU = "Revisa tus logros.";
|
||||
TOOLTIP_SWWM_MM_ENABLE = "Muestra un minimapa bajo el contador de puntuación.";
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
[default]
|
||||
SWWM_MODVER="\chSWWM \czGZ\c- \cw1.1.43 r1 \cu(Tue 30 Nov 19:05:06 CET 2021)\c-";
|
||||
SWWM_SHORTVER="\cw1.1.43 r1 \cu(2021-11-30 19:05:06)\c-";
|
||||
SWWM_MODVER="\chSWWM \czGZ\c- \cw1.1.44 \cu(Wed 8 Dec 18:17:41 CET 2021)\c-";
|
||||
SWWM_SHORTVER="\cw1.1.44 \cu(2021-12-08 18:17:41)\c-";
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ TXT
|
|||
|
||||
How much bullet is too much bullet? The answer, according to **Cyrus Enterprises**, is "never enough". The **Sheen Heavy Machinegun** is a monstrosity in all aspects when it comes to delivering lead. Steadily feeding directly off **Hammerspace™**, this puppy can be carried anywhere without the need to bring along hefty ammo boxes, ready to rain death upon anything on demand. Additionally, powered by **Tach-Engine**'s "Magdalene" Microfusion battery, the weapon can stay in operation for several days without needing to recharge.
|
||||
|
||||
The ammunition employed by this weapon are AP rounds of 14.5x114mm caliber. Unlike the standard heavy ordnance rounds used within the Soviet Union, these are far more potent, employing an alloy of both mundane and exotic elements known as Meta-Tellubrium, generally used for fusion reactor parts due to its outstanding resilience to both extreme pressure and heat. As reported following the **Ghoul Hunt** of 2007, this ammunition is quite effective in tearing through demon flesh as if it were jelly.
|
||||
The ammunition employed by this weapon are AP rounds of 14.5x114mm caliber. Unlike the standard heavy ordnance rounds used within the Soviet Union, these are far more potent, employing an alloy of both mundane and exotic elements known as Meta-Telebrium, generally used for fusion reactor parts due to its outstanding resilience to both extreme pressure and heat. As reported following the **Ghoul Hunt** of 2007, this ammunition is quite effective in tearing through demon flesh as if it were jelly.
|
||||
|
||||
While generally meant for mounted use, on-the-go operation is possible, provided the user is equipped with silver-rated power armor at minimum in order to handle its heavy recoil.
|
||||
|
||||
|
|
|
|||
|
|
@ -24,11 +24,11 @@ The Ardent Cross was the name of the general's sword which, when imbued with mag
|
|||
|
||||
\cfPrimary Fire:\c- Single, large fireball shot. Very minor drift, so its effective range is quite long. Ignites nearby targets on impact.
|
||||
|
||||
\cfSecondary Fire:\c- Pumps additional fuel, increasing the strength of your shots, but also their drift, making them less accurate. Excess overcharge will result in a wildly inaccurate misfire, but even this has its uses. Forcibly pumping in the middle of primary fire engages slamfire, allowing you to shoot rapid low-charge bursts.
|
||||
\cfSecondary Fire:\c- Pumps additional fuel, increasing the strength of your shots, but also their drift, making them less accurate. Excess overcharge will result in a wildly inaccurate misfire, but even this has its uses.
|
||||
|
||||
\cfTertiary Fire:\c- Toggles a scatter shot mode for primary. Several smaller fireballs (number relative to charge), with increased drift and lower effective range, but very useful against multiple targets.
|
||||
\cfTertiary Fire:\c- Hold and tap primary fire to toggle scatter shot mode for primary. Several smaller fireballs (number relative to charge), with increased drift and lower effective range, but very useful against multiple targets. Hold and tap secondary fire to switch weapon stances between two-handed and one-handed. This serves no real purpose other than looking cooler when pumping, your accuracy with the weapon is unaffected but you won't shoot it as quickly.
|
||||
|
||||
\cfReloading:\c- Insert up to five fuel cells into the weapon's tube magazine. Each cell is immediately ejected once it's been emptied into the weapon's internal "crucible", so you can hold additional ammo while keeping your charge.
|
||||
\cfReloading:\c- Insert up to five fuel cells into the weapon's tube magazine. Each cell is immediately emptied into the weapon's internal "crucible", so you can keep loading additional ammo while boosting your charge.
|
||||
|
||||
\cfTechniques:\c- The weapon has a certain "extra effective" special move should you be close enough to your target. Plunging the four bayonets into an enemy and immediately pulling the trigger afterwards will result in a potent point blank explosion that will send them flying, covered in flames.
|
||||
|
||||
|
|
@ -38,3 +38,5 @@ The Ardent Cross was the name of the general's sword which, when imbued with mag
|
|||
\cfAnd of course it's huge af too, even if the grip is supposedly adapted. It honestly weirds me out how you can do that thing of... making your hands bigger, but at least it lets you use stuff like that easily.\c-
|
||||
|
||||
\cfAnyway, motherfucking fireballs, that work underwater??? Gonna need to see the science behind this because that makes no fucking sense and yet... it's there.\c-
|
||||
|
||||
\cfBy the way, leverguns make me wild out. You know it, we all know it, they're just SO GOOD.\c-
|
||||
|
|
|
|||
|
|
@ -18,11 +18,11 @@ The **Rafan-Kos** project ("Ultimate Weapon" in Nukuribaku) would only be partia
|
|||
|
||||
The weapon employs **Kabbadon** as fuel, a common byproduct of **Nokorokinylum** fusion, thus making it fairly easy to produce. However, the density and degree of purity required in the creation of a single fuel pod make its price escalate dramatically.
|
||||
|
||||
\cfPrimary Fire:\c- Release a radiant blast of energy that punches its way through anything, sending sparks flying in all directions along its path and burning other nearby targets. The blast burns for a total of five seconds before rapidly dissipating.
|
||||
\cfPrimary Fire:\c- Release a radiant blast of energy that punches its way through anything, sending sparks flying in all directions along its path and burning other nearby targets. The blast burns for up to five seconds before rapidly dissipating.
|
||||
|
||||
\cfSecondary Fire:\c- Releases several scattered blasts in a wide cone, with similar destructive potential, but burning quicker, stronger, and dissipating much rapidly.
|
||||
\cfSecondary Fire:\c- Releases several scattered blasts in a wide cone, with similar destructive potential, but burning quicker, stronger, and dissipating more rapidly.
|
||||
|
||||
\cfReload:\c- Loads in a new magazine, each holding four pods.
|
||||
\cfReload:\c- Loads in a new magazine, each holding four pods. The currently loaded pod must be fully discharged before a new one can be chambered in.
|
||||
|
||||
\cxSaya's Notes:\c-
|
||||
\cf"Ultimate Weapon"? Talk about pretentious... But you know, something about this was making my brains itch, and then it clicked. This is basically like that one spellcard, the Master Spark. Hell, it almost even sounds and looks the same...\c-
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ TXT
|
|||
|
||||
¿Cuanta bala es demasiada bala? La respuesta, según **Cyrus Enterprises**, es "nunca suficiente". La **Ametralladora Pesada Sheen** es una monstruosidad en todos los aspectos en lo referente a repartir plomo. Alimentada directamente desde **Hammerspace™**, esta preciosidad se puede llevar a cualquier lado sin la necesidad de llevar encima pesadas cajas de munición, lista para diluviar muerte sobre cualquier cosa cuando se desee. Adicionalmente, teniendo la batería de Microfusión "Magdalene" de **Tach-Engine**, el arma puede permanecer operativa durante días sin necesidad de recargarla.
|
||||
|
||||
La munición empleada por este arma son balas anti-armadura del calibre 14.5x114mm. A diferencia de la munición estándar para armería pesada empleada en la Unión Soviética, esta es mucho más potente, empleando una aleación de elementos tanto mundanos como exóticos conocida como Meta-Tellubrium, generalmente usada para piezas de reactores de fusión dada su excepcional resistencia tanto a presión como calor extremos. Tal y como fue reportado tras la **Caza de Ghouls** de 2007, esta munición es bastante efectiva atravesando carne demoníaca como si fuese gelatina.
|
||||
La munición empleada por este arma son balas anti-armadura del calibre 14.5x114mm. A diferencia de la munición estándar para armería pesada empleada en la Unión Soviética, esta es mucho más potente, empleando una aleación de elementos tanto mundanos como exóticos conocida como Meta-Telebrium, generalmente usada para piezas de reactores de fusión dada su excepcional resistencia tanto a presión como calor extremos. Tal y como fue reportado tras la **Caza de Ghouls** de 2007, esta munición es bastante efectiva atravesando carne demoníaca como si fuese gelatina.
|
||||
|
||||
Aunque generalmente ideada para el uso montado, la operación al paso es posible, siempre y cuando el usuario tenga una servoarmadura de grado plata como mínimo para manejar el potente retroceso.
|
||||
|
||||
|
|
|
|||
|
|
@ -18,11 +18,11 @@ La Cruz Ardiente era el nombre de la espada del general la cual, al ser imbuida
|
|||
|
||||
\cfFuego Primario:\c- Disparo de gran bola de fuego. Desvío mucho menor, por lo que su rango efectivo es muy largo. Incendia objetivos cercanos al impactar.
|
||||
|
||||
\cfFuego Secundario:\c- Bombea combustible adicional, incrementando la potencia de tus disparos, pero también su desvío, haciéndolos menos precisos. La sobrecarga excesiva puede resultar en una imprecisa descarga accidental, pero incluso esto tiene sus usos. Forzar el bombeo mientras se usa el fuego primario realizará disparos en cadena rápidos de baja potencia.
|
||||
\cfFuego Secundario:\c- Bombea combustible adicional, incrementando la potencia de tus disparos, pero también su desvío, haciéndolos menos precisos. La sobrecarga excesiva puede resultar en una imprecisa descarga accidental, pero incluso esto tiene sus usos.
|
||||
|
||||
\cfFuego Terciario:\c- Alterna el fuego primario a un modo de dispersión. Varias bolas de fuego menores (número relativo a la carga), con un desvío incrementado y rango efectivo menor, pero muy útil contra múltiples objetivos.
|
||||
\cfFuego Terciario:\c- Mantén y pulsa fuego primario para alternar el modo de dispersión. Varias bolas de fuego menores (número relativo a la carga), con un desvío incrementado y rango efectivo menor, pero muy útil contra múltiples objetivos. Mantén y pulsa fuego secundario para alternar la postura de arma entre dos manos y una mano. Esto solo sirve para ser más vistoso al bombear, y no altera tu puntería pero si hace los disparos más lentos.
|
||||
|
||||
\cfRecarga:\c- Inserta hasta cinco células de combustible en el tubo del arma. Cada célula es expulsada inmediatamente tras ser vaciada en el "crisol" interno del arma, así que puedes almacenar munición adicional mientras mantienes la carga.
|
||||
\cfRecarga:\c- Inserta hasta cinco células de combustible en el tubo del arma. Cada célula es vaciada immediatemente en el "crisol" interno del arma, así que puedes cargar munición adicional mientras incrementas la carga.
|
||||
|
||||
\cfTécnicas:\c- El arma tiene un cierto movimiento especial "extra efectivo" si te encuentras a poca distancia de tu objetivo. Hundiendo las cuatro bayonetas en el enemigo e inmediatamente después apretando el gatillo resultará en una potente explosión a bocajarro que lo enviará volando, cubierto en llamas.
|
||||
|
||||
|
|
@ -32,3 +32,5 @@ La Cruz Ardiente era el nombre de la espada del general la cual, al ser imbuida
|
|||
\cfY por supuesto es jodidamente enorme, también, aunque la empuñadura está supuestamente adaptada. En serio que se me hace rarísimo como puedes hacer eso de... agrandar las manos, pero al menos te permite usar cosas así fácilmente.\c-
|
||||
|
||||
\cfEn fin, putas bolas de fuego, ¿¿¿que funcionan bajo el agua??? Voy a tener que echarle un ojo a la ciencia detrás de esto porque eso no tiene puto sentido y aun así... está ahí.\c-
|
||||
|
||||
\cfPor cierto, las armas de palanca me ponen a tope. Tú lo sabes, todos lo sabemos, es que son BUENÍSIMAS.\c-
|
||||
|
|
|
|||
|
|
@ -12,11 +12,11 @@ El proyecto **Rafan-Kos** ("Arma Definitiva" en Nukuribaku) solo sería completa
|
|||
|
||||
El arma emplea **Kabbadon** como combustible, un subproducto común de la fusión de **Nokorokinylum**, haciéndolo así fácil de fabricar. Sin embargo, dada la densidad y pureza requeridas en la creación de una sola cápsula de combustible hacen que su precio escale dramáticamente.
|
||||
|
||||
\cfFuego Primario:\c- Libera un radiante estallido de energía que se abre paso a través de todo, soltando chispas en todas direcciones a su paso y quemando objetivos cercanos. El estallido arde durante un total de cinco segundos antes de disiparse rápidamente.
|
||||
\cfFuego Primario:\c- Libera un radiante estallido de energía que se abre paso a través de todo, soltando chispas en todas direcciones a su paso y quemando objetivos cercanos. El estallido arde durante un máximo de cinco segundos antes de disiparse rápidamente.
|
||||
|
||||
\cfFuego Secundario:\c- Libera varios estallidos dispersos en un cono amplio, con un potencial destructivo similar, pero ardiendo más rápido, con mayor intensidad, y disipándose mucho antes.
|
||||
|
||||
\cfRecarga:\c- Coloca un nuevo cargador, cada uno almacenando cuatro cápsulas.
|
||||
\cfRecarga:\c- Coloca un nuevo cargador, cada uno almacenando cuatro cápsulas. La cápsula cargada debe gastarse completamente antes de poder insertar una nueva en la recámara.
|
||||
|
||||
\cxNotas de Saya:\c-
|
||||
\cf¿"Arma Definitiva"? Menuda cursilada... Pero sabes, algo de todo esto hacía que me picotearan los sesos, y entonces todo encajó. Esta cosa es básicamente como esa carta de hechizo, la Chispa Maestra. Hostia, es que hasta suena y pinta igual...\c-
|
||||
|
|
|
|||
|
|
@ -210,7 +210,10 @@ OptionMenu "SWWMOptionMenu"
|
|||
StaticText " "
|
||||
StaticText "$SWWM_MCTITLE", "Blue"
|
||||
Option "$SWWM_LDSPOIL", "swwm_ldspoil", "YesNo"
|
||||
Option "$SWWM_DRLASKILL", "swwm_drlaskill", "SWWMDRLASkill"
|
||||
IfGame(Doom)
|
||||
{
|
||||
Option "$SWWM_DRLASKILL", "swwm_drlaskill", "SWWMDRLASkill"
|
||||
}
|
||||
StaticText " "
|
||||
StaticText " "
|
||||
|
||||
|
|
|
|||
|
|
@ -5,36 +5,24 @@ const float pi = 3.14159265358979323846;
|
|||
|
||||
vec2 warpcoord( in vec2 uv )
|
||||
{
|
||||
vec2 offset = vec2(0,0);
|
||||
vec2 offset;
|
||||
offset.y = sin(pi*2.*(uv.x*8.+timer*.25))*.005;
|
||||
offset.x = cos(pi*2.*(uv.y*4.+timer*.25))*.005;
|
||||
return fract(uv+offset);
|
||||
return uv+offset;
|
||||
}
|
||||
|
||||
// based on gimp color to alpha, but simplified
|
||||
vec4 blacktoalpha( in vec4 src )
|
||||
{
|
||||
vec4 dst = src;
|
||||
float dist = 0., alpha = 0.;
|
||||
float d, a;
|
||||
float alpha = 0.;
|
||||
float a;
|
||||
a = clamp(dst.r,0.,1.);
|
||||
if ( a > alpha )
|
||||
{
|
||||
alpha = a;
|
||||
dist = d;
|
||||
}
|
||||
if ( a > alpha ) alpha = a;
|
||||
a = clamp(dst.g,0.,1.);
|
||||
if ( a > alpha )
|
||||
{
|
||||
alpha = a;
|
||||
dist = d;
|
||||
}
|
||||
if ( a > alpha ) alpha = a;
|
||||
a = clamp(dst.b,0.,1.);
|
||||
if ( a > alpha )
|
||||
{
|
||||
alpha = a;
|
||||
dist = d;
|
||||
}
|
||||
if ( a > alpha ) alpha = a;
|
||||
if ( alpha > 0. )
|
||||
{
|
||||
float ainv = 1./alpha;
|
||||
|
|
@ -43,30 +31,49 @@ vec4 blacktoalpha( in vec4 src )
|
|||
dst.a *= alpha;
|
||||
return dst;
|
||||
}
|
||||
#ifdef NO_BILINEAR
|
||||
#define BilinearSample(x,y,z,w) texture(x,y)
|
||||
#else
|
||||
vec4 BilinearSample( in sampler2D tex, in vec2 pos, in vec2 size, in vec2 pxsize )
|
||||
{
|
||||
vec2 f = fract(pos*size);
|
||||
pos += (.5-f)*pxsize;
|
||||
vec4 p0q0 = texture(tex,pos);
|
||||
vec4 p1q0 = texture(tex,pos+vec2(pxsize.x,0));
|
||||
vec4 p0q1 = texture(tex,pos+vec2(0,pxsize.y));
|
||||
vec4 p1q1 = texture(tex,pos+vec2(pxsize.x,pxsize.y));
|
||||
vec4 pInterp_q0 = mix(p0q0,p1q0,f.x);
|
||||
vec4 pInterp_q1 = mix(p0q1,p1q1,f.x);
|
||||
return mix(pInterp_q0,pInterp_q1,f.y);
|
||||
}
|
||||
#endif
|
||||
|
||||
void SetupMaterial( inout Material mat )
|
||||
{
|
||||
// store these to save some time
|
||||
vec2 size = vec2(textureSize(Layer1,0));
|
||||
vec2 pxsize = 1./size;
|
||||
// y'all ready for this multilayered madness?
|
||||
vec2 uv = vTexCoord.st;
|
||||
// base blank layer, copy
|
||||
vec4 base = texture(LogoTex,uv*vec2(.5,.25));
|
||||
// base blank layer
|
||||
vec4 base = vec4(0.,0.,0.,1.);
|
||||
// first layer, blend
|
||||
vec4 tmp = texture(LogoTex,uv*vec2(.5,.25)+vec2(0.,.25));
|
||||
vec4 tmp = BilinearSample(Layer1,uv,size,pxsize);
|
||||
base.rgb = mix(base.rgb,tmp.rgb,tmp.a);
|
||||
// second layer, warp then add
|
||||
tmp = texture(LogoTex,warpcoord(uv)*vec2(.5,.25)+vec2(0.,.5));
|
||||
tmp = BilinearSample(Layer2,warpcoord(uv),size,pxsize);
|
||||
base.rgb += tmp.rgb;
|
||||
// third layer, multiply
|
||||
tmp = texture(LogoTex,uv*vec2(.5,.25)+vec2(0.,.75));
|
||||
tmp = BilinearSample(Layer3,uv,size,pxsize);
|
||||
base.rgb *= tmp.rgb;
|
||||
// fourth layer, add
|
||||
tmp = texture(LogoTex,uv*vec2(.5,.25)+vec2(.5,0.));
|
||||
tmp = BilinearSample(Layer4,uv,size,pxsize);
|
||||
base.rgb += tmp.rgb;
|
||||
// fifth layer, add
|
||||
tmp = texture(LogoTex,uv*vec2(.5,.25)+vec2(.5,.25));
|
||||
tmp = BilinearSample(Layer5,uv,size,pxsize);
|
||||
base.rgb += tmp.rgb;
|
||||
// sixth layer, overlay (w/ alpha blend)
|
||||
tmp = texture(LogoTex,uv*vec2(.5,.25)+vec2(.5,.5));
|
||||
// first layer again, overlay (w/ alpha blend)
|
||||
tmp = BilinearSample(Layer1,uv,size,pxsize);
|
||||
vec4 tmp2;
|
||||
tmp2.r = overlay(base.r,tmp.r);
|
||||
tmp2.g = overlay(base.g,tmp.g);
|
||||
|
|
@ -75,22 +82,13 @@ void SetupMaterial( inout Material mat )
|
|||
// black to alpha
|
||||
base = blacktoalpha(base);
|
||||
// add alpha of first layer
|
||||
tmp = texture(LogoTex,uv*vec2(.5,.25)+vec2(0.,.25));
|
||||
base.a += tmp.a;
|
||||
base.a += BilinearSample(Layer1,uv,size,pxsize).a;
|
||||
// clamp
|
||||
base = clamp(base,0.,1.);
|
||||
// seventh layer, alpha blend
|
||||
tmp = texture(LogoTex,uv*vec2(.5,.25)+vec2(.5,.75));
|
||||
base = clamp(base,vec4(0.),vec4(1.));
|
||||
// sixth layer, alpha blend
|
||||
tmp = BilinearSample(Layer6,uv,size,pxsize);
|
||||
tmp2.a = tmp.a+base.a*(1-tmp.a);
|
||||
tmp2.rgb = (tmp.rgb*tmp.a+base.rgb*base.a*(1-tmp.a))/tmp2.a;
|
||||
if ( tmp2.a == 0. ) tmp2.rgb = vec3(0.);
|
||||
// clamp borders
|
||||
vec2 sz = TEX_SZ;
|
||||
vec2 px = uv*sz;
|
||||
if ( (px.x <= 1) || (px.x >= (sz.x-1)) || (px.y <= 1) || (px.y >= (sz.y-1)) )
|
||||
tmp2 = vec4(0.);
|
||||
// ding, logo's done
|
||||
mat.Base = tmp2;
|
||||
mat.Normal = ApplyNormalMap(vTexCoord.st);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1053,6 +1053,7 @@ $limit powerup/divinehit 16
|
|||
powerup/divineend sounds/items/diviend.ogg
|
||||
powerup/tetheruse sounds/items/tetheruse.ogg
|
||||
powerup/tetherfail sounds/items/tetherfail.ogg
|
||||
powerup/tethererror sounds/items/tethererror.ogg
|
||||
|
||||
mykradvo/arc1 sounds/items/mykrarc1.ogg
|
||||
mykradvo/arc2 sounds/items/mykrarc2.ogg
|
||||
|
|
|
|||
|
|
@ -103,7 +103,12 @@ GameInfo
|
|||
"PsykkonovexxGesture"
|
||||
// really damn big textures
|
||||
PrecacheTextures = "graphics/SWWMGZLogo.png",
|
||||
"graphics/SWWMGZLogo_Layers.png"
|
||||
"graphics/SWWMGZLogo_Layer1.png",
|
||||
"graphics/SWWMGZLogo_Layer2.png",
|
||||
"graphics/SWWMGZLogo_Layer3.png",
|
||||
"graphics/SWWMGZLogo_Layer4.png",
|
||||
"graphics/SWWMGZLogo_Layer5.png",
|
||||
"graphics/SWWMGZLogo_Layer6.png"
|
||||
}
|
||||
|
||||
ClearSkills
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// Tach-Engine & Nekuratek Sparkster x3 (from UnSX 2)
|
||||
// Slot 6, spawns shared with Hellblazer
|
||||
// Slot 7, spawns shared with Biospark Carbine
|
||||
|
||||
Class ModernSparkster : SWWMWeapon
|
||||
{
|
||||
|
|
@ -19,7 +19,7 @@ Class ModernSparkster : SWWMWeapon
|
|||
Obituary "$O_NEWSPARKSTER";
|
||||
SWWMWeapon.Tooltip "$TT_NEWSPARKSTER";
|
||||
Inventory.Icon "graphics/HUD/Icons/W_NewSparkster.png";
|
||||
Weapon.SlotNumber 6;
|
||||
Weapon.SlotNumber 7;
|
||||
Weapon.SlotPriority 3.;
|
||||
Weapon.SelectionOrder 625;
|
||||
Weapon.AmmoType1 "SparksterBAmmo";
|
||||
|
|
|
|||
|
|
@ -18,7 +18,9 @@ extend Class SWWMHandler
|
|||
{
|
||||
if ( (gamestate != GS_LEVEL) || (players[consoleplayer].Health <= 0) || !(players[consoleplayer].mo is 'Demolitionist') )
|
||||
return;
|
||||
double val = max(.5,swwm_mm_zoom/2.);
|
||||
double val = swwm_mm_zoom;
|
||||
if ( val > 1. ) val = max(1.,val-.5);
|
||||
else val = max(.5,val-.25);
|
||||
CVar.FindCVar('swwm_mm_zoom').SetFloat(val);
|
||||
}
|
||||
else if ( e.Name ~== "swwmzoomout" )
|
||||
|
|
@ -26,7 +28,9 @@ extend Class SWWMHandler
|
|||
if ( (gamestate != GS_LEVEL) || (players[consoleplayer].Health <= 0) || !(players[consoleplayer].mo is 'Demolitionist') )
|
||||
return;
|
||||
double maxval = players[consoleplayer].mo.FindInventory("Omnisight")?2.:1.;
|
||||
double val = min(maxval,swwm_mm_zoom*2.);
|
||||
double val = swwm_mm_zoom;
|
||||
if ( val >= 1. ) val = min(maxval,val+.5);
|
||||
else val = min(1.,val+.25);
|
||||
CVar.FindCVar('swwm_mm_zoom').SetFloat(val);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -616,9 +616,9 @@ extend Class SWWMHandler
|
|||
else if ( (e.Replacee is 'Chainsaw') || (e.Replacee is 'Gauntlets') || (e.Replacee is 'FWeapAxe') ) e.Replacement = SWWMUtility.PickSWWMSlot1();
|
||||
else if ( (e.Replacee is 'Fist') || (e.Replacee is 'Staff') ) e.Replacement = 'DeepImpact';
|
||||
else if ( (e.Replacee is 'Pistol') || (e.Replacee is 'GoldWand') || (e.Replacee is 'FWeapFist') || (e.Replacee is 'CWeapMace') || (e.Replacee is 'MWeapWand') ) e.Replacement = SWWMUtility.PickSWWMSlot2();
|
||||
else if ( (e.Replacee is 'Shotgun') || (e.Replacee is 'CWeapStaff') ) e.Replacement = SWWMUtility.IsDoomOne()?SWWMUtility.PickHereticSlot3():SWWMUtility.PickSWWMSlot3();
|
||||
else if ( (e.Replacee is 'Shotgun') || (e.Replacee is 'CWeapStaff') ) e.Replacement = SWWMUtility.IsDoomOne()?SWWMUtility.PickDoomSlot3():SWWMUtility.PickSWWMSlot3();
|
||||
else if ( (e.Replacee is 'SuperShotgun') || (e.Replacee is 'MWeapFrost') ) e.Replacement = SWWMUtility.PickSWWMSlot4();
|
||||
else if ( e.Replacee is 'Crossbow' ) e.Replacement = SWWMUtility.PickHereticSlot3();
|
||||
else if ( e.Replacee is 'Crossbow' ) e.Replacement = SWWMUtility.PickDoomSlot3();
|
||||
else if ( (e.Replacee is 'Chaingun') || (e.Replacee is 'Blaster') || (e.Replacee is 'FWeaponPiece3') ) e.Replacement = SWWMUtility.PickSWWMSlot5();
|
||||
else if ( (e.Replacee is 'RocketLauncher') || (e.Replacee is 'PhoenixRod') || (e.Replacee is 'FWeapHammer') ) e.Replacement = SWWMUtility.PickSWWMSlot6();
|
||||
else if ( (e.Replacee is 'PlasmaRifle') || (e.Replacee is 'SkullRod') ) e.Replacement = SWWMUtility.PickDoomSlot6();
|
||||
|
|
|
|||
|
|
@ -207,17 +207,6 @@ Class SWWMAmmo : Ammo
|
|||
return Super.HandlePickup(item);
|
||||
}
|
||||
|
||||
override void DoEffect()
|
||||
{
|
||||
Super.DoEffect();
|
||||
// drop excess ammo
|
||||
if ( !sv_infiniteammo && !Owner.FindInventory('PowerInfiniteAmmo') )
|
||||
{
|
||||
int excess = Amount-MaxAmount;
|
||||
if ( excess > 0 ) CreateTossable(excess);
|
||||
}
|
||||
}
|
||||
|
||||
override bool CanPickup( Actor toucher )
|
||||
{
|
||||
// don't allow picking up ammo for weapons we can't pick up
|
||||
|
|
@ -486,12 +475,6 @@ Class MagAmmo : Inventory abstract
|
|||
override void DoEffect()
|
||||
{
|
||||
Super.DoEffect();
|
||||
// drop excess ammo
|
||||
if ( !sv_infiniteammo && !Owner.FindInventory('PowerInfiniteAmmo') )
|
||||
{
|
||||
int excess = Amount-MaxAmount;
|
||||
if ( excess > 0 ) CreateTossable(excess);
|
||||
}
|
||||
if ( !pamo )
|
||||
{
|
||||
pamo = Ammo(Owner.FindInventory(ParentAmmo));
|
||||
|
|
|
|||
|
|
@ -2174,6 +2174,33 @@ Class BarrierPower : PowerIronFeet
|
|||
if ( !snd ) snd = Spawn("BarrierSnd",Owner.pos);
|
||||
snd.target = Owner;
|
||||
snd.master = self;
|
||||
// break ourselves if we're in an endlevel sector
|
||||
bool endlv = false;
|
||||
for ( int i=0; i<Owner.CurSector.Get3DFloorCount(); i++ )
|
||||
{
|
||||
F3DFloor ff = Owner.CurSector.Get3DFloor(i);
|
||||
if ( !(ff.flags&(F3DFloor.FF_EXISTS|F3DFloor.FF_SWIMMABLE)) ) continue;
|
||||
if ( (ff.model.DamageAmount <= 0) || (ff.model.damageinterval <= 0) ) continue;
|
||||
if ( ff.top.ZAtPoint(Owner.pos.xy) <= Owner.pos.z ) continue;
|
||||
if ( ff.bottom.ZAtPoint(Owner.pos.xy) >= (Owner.pos.z+Owner.Height) ) continue;
|
||||
if ( !(ff.model.flags&Sector.SECF_ENDLEVEL) ) continue;
|
||||
endlv = true;
|
||||
break;
|
||||
}
|
||||
if ( !endlv && (Owner.pos.z <= Owner.floorz) )
|
||||
{
|
||||
bool damageterrain = false;
|
||||
if ( (Owner.floorsector.damageamount > 0) && (Owner.floorsector.damageinterval > 0) ) damageterrain = true;
|
||||
else
|
||||
{
|
||||
let t = Owner.GetFloorTerrain();
|
||||
if ( t && (t.DamageAmount > 0) && (t.DamageTimeMask > 0) )
|
||||
damageterrain = true;
|
||||
}
|
||||
if ( damageterrain && (Owner.floorsector.flags&Sector.SECF_ENDLEVEL) ) endlv = true;
|
||||
}
|
||||
if ( !endlv ) return;
|
||||
EffectTics = min(0,EffectTics);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2226,6 +2253,7 @@ Class EBarrier : Inventory
|
|||
override void DoEffect()
|
||||
{
|
||||
Super.DoEffect();
|
||||
if ( !Owner || (Owner.Health <= 0) ) return;
|
||||
// check terrain for auto-use
|
||||
let b = Powerup(Owner.FindInventory("BarrierPower"));
|
||||
if ( b && (b.EffectTics > 5) )
|
||||
|
|
@ -2234,6 +2262,7 @@ Class EBarrier : Inventory
|
|||
return;
|
||||
}
|
||||
bool damageterrain = false;
|
||||
bool endlevelterrain = false;
|
||||
// check any 3d floors first
|
||||
for ( int i=0; i<Owner.CurSector.Get3DFloorCount(); i++ )
|
||||
{
|
||||
|
|
@ -2242,6 +2271,7 @@ Class EBarrier : Inventory
|
|||
if ( (ff.model.DamageAmount <= 0) || (ff.model.damageinterval <= 0) ) continue;
|
||||
if ( ff.top.ZAtPoint(Owner.pos.xy) <= Owner.pos.z ) continue;
|
||||
if ( ff.bottom.ZAtPoint(Owner.pos.xy) >= (Owner.pos.z+Owner.Height) ) continue;
|
||||
if ( ff.model.flags&Sector.SECF_ENDLEVEL ) endlevelterrain = true;
|
||||
damageterrain = true;
|
||||
break;
|
||||
}
|
||||
|
|
@ -2254,7 +2284,10 @@ Class EBarrier : Inventory
|
|||
if ( t && (t.DamageAmount > 0) && (t.DamageTimeMask > 0) )
|
||||
damageterrain = true;
|
||||
}
|
||||
if ( damageterrain && (Owner.floorsector.flags&Sector.SECF_ENDLEVEL) ) endlevelterrain = true;
|
||||
}
|
||||
// do not auto-use for these
|
||||
if ( endlevelterrain ) return;
|
||||
if ( !damageterrain )
|
||||
{
|
||||
terrainwait = max(0,terrainwait-1);
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ Class PaletteLight : PointLight
|
|||
}
|
||||
private void UpdateLight()
|
||||
{
|
||||
int index = clamp(255-((255*ReactionTime)/abs(InitialReactionTime)),0,255);
|
||||
int index = clamp(255-((255*ReactionTime)/InitialReactionTime),0,255);
|
||||
args[LIGHT_RED] = pal[index].r;
|
||||
args[LIGHT_GREEN] = pal[index].g;
|
||||
args[LIGHT_BLUE] = pal[index].b;
|
||||
|
|
@ -23,7 +23,6 @@ Class PaletteLight : PointLight
|
|||
override void PostBeginPlay()
|
||||
{
|
||||
Super.PostBeginPlay();
|
||||
InitialReactionTime = ReactionTime;
|
||||
String palname = GetTag();
|
||||
int sep = palname.IndexOf(",");
|
||||
int palnum = 0;
|
||||
|
|
@ -43,9 +42,10 @@ Class PaletteLight : PointLight
|
|||
}
|
||||
if ( ReactionTime < 0 )
|
||||
{
|
||||
ReactionTime = -ReactionTime;
|
||||
ReactionTime = abs(ReactionTime)-1;
|
||||
IsLooping = true;
|
||||
}
|
||||
InitialReactionTime = ReactionTime;
|
||||
UpdateLight();
|
||||
}
|
||||
override void Tick()
|
||||
|
|
|
|||
|
|
@ -2063,138 +2063,196 @@ Class SWWMUtility
|
|||
}
|
||||
|
||||
// multi-weapon spawn stuff
|
||||
static private Class<Inventory> PickPair( Class<Inventory> a, Class<Inventory> b, int weight = 1 )
|
||||
|
||||
static private Class<Weapon> PickPair( Class<Weapon> a, Class<Weapon> b )
|
||||
{
|
||||
if ( CheckNeedsItem(a) ) return a;
|
||||
if ( CheckNeedsItem(b) ) return b;
|
||||
return Random[Replacements](weight,0)?a:b;
|
||||
if ( ItemExists(a,mapstart:true) ) return b;
|
||||
return Random[Replacements](0,1)?a:b;
|
||||
}
|
||||
static private Class<Inventory> PickTrio( Class<Inventory> a, Class<Inventory> b, Class<Inventory> c, int weight1 = 1, int weight2 = 1 )
|
||||
static private Class<Weapon> PickTrio( Class<Weapon> a, Class<Weapon> b, Class<Weapon> c )
|
||||
{
|
||||
if ( CheckNeedsItem(a) ) return a;
|
||||
if ( CheckNeedsItem(b) ) return b;
|
||||
if ( CheckNeedsItem(c) ) return c;
|
||||
return Random[Replacements](weight1,0)?a:Random[Replacements](weight2,0)?b:c;
|
||||
if ( ItemExists(a,mapstart:true) )
|
||||
{
|
||||
if ( ItemExists(b,mapstart:true) )
|
||||
return c;
|
||||
return Random[Replacements](0,1)?b:c;
|
||||
}
|
||||
if ( ItemExists(b,mapstart:true) )
|
||||
{
|
||||
if ( ItemExists(c,mapstart:true) )
|
||||
return a;
|
||||
return Random[Replacements](0,1)?a:c;
|
||||
}
|
||||
if ( ItemExists(c,mapstart:true) )
|
||||
Random[Replacements](0,1)?a:b;
|
||||
switch ( Random[Replacements](0,2) )
|
||||
{
|
||||
case 0:
|
||||
return a;
|
||||
case 1:
|
||||
return b;
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
// boy, this one got complicated fast
|
||||
static Class<Inventory> PickSWWMSlot1()
|
||||
// melee weapons + extra slot 2 guns (50% chance)
|
||||
static Class<Weapon> 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 needsmelee = CheckNeedsItem('PusherWeapon')/*|CheckNeedsItem('ItamexHammer')|CheckNeedsItem('FistGun')*/;
|
||||
bool needsgun = CheckNeedsItem('ExplodiumGun',true)/*|CheckNeedsItem('PlasmaBlast',true)*/;
|
||||
if ( !needsmelee && !needsgun )
|
||||
{
|
||||
static const Class<Weapon> wpns[] =
|
||||
{
|
||||
'ExplodiumGun', 'PusherWeapon',
|
||||
'PlasmaBlast', 'ItamexHammer',
|
||||
'FistGun'
|
||||
};
|
||||
//return wpns[Random[Replacements](0,4)];
|
||||
//return wpns[Random[Replacements](0,3)];
|
||||
return wpns[Random[Replacements](0,1)];
|
||||
}
|
||||
if ( !needsmelee && needsgun )
|
||||
{
|
||||
//bool needsexplo = CheckNeedsItem('ExplodiumGun',true);
|
||||
//bool needsblast = CheckNeedsItem('PlasmaBlast',true);
|
||||
//if ( needsexplo && !needsblast ) return 'ExplodiumGun';
|
||||
//if ( !needsexplo && needsblast ) return 'PlasmaBlast';
|
||||
//return Random[Replacements](0,1)?'ExplodiumGun':'PlasmaBlast';
|
||||
return 'ExplodiumGun';
|
||||
}
|
||||
if ( needsmelee && !needsgun )
|
||||
{
|
||||
//return PickTrio('PusherWeapon','ItamexHammer','FistGun');
|
||||
//return PickPair('PusherWeapon','ItamexHammer');
|
||||
return 'PusherWeapon';
|
||||
}
|
||||
if ( CheckNeedsItem('ExplodiumGun',true) && Random[Replacements](0,1) ) return 'ExplodiumGun';
|
||||
//if ( CheckNeedsItem('PlasmaBlast',true) && Random[Replacements](0,1) ) return 'PlasmaBlast';
|
||||
bool hasmelee = (!CheckNeedsItem('PusherWeapon')/*||!CheckNeedsItem('ItamexHammer')||!CheckNeedsItem('FistGun')*/);
|
||||
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 ( hasmelee && !gunexists && Random[Replacements](0,1) )
|
||||
return PickSWWMSlot2();
|
||||
//return PickTrio('PusherWeapon','ItamexHammer','FistGun');
|
||||
//return PickPair('PusherWeapon','ItamexHammer');
|
||||
return 'PusherWeapon';
|
||||
}
|
||||
static Class<Inventory> PickSWWMSlot2()
|
||||
// pistol spawn, pretty simple
|
||||
static Class<Weapon> PickSWWMSlot2()
|
||||
{
|
||||
//return PickPair('ExplodiumGun','PlasmaBlast');
|
||||
return 'ExplodiumGun';
|
||||
}
|
||||
static Class<Inventory> PickSWWMSlot3()
|
||||
// shotgun spawn
|
||||
static Class<Weapon> PickSWWMSlot3()
|
||||
{
|
||||
//return PickPair('Spreadgun','PuntzerBeta');
|
||||
return 'Spreadgun';
|
||||
}
|
||||
static Class<Inventory> PickSWWMSlot4()
|
||||
// super shotgun spawn
|
||||
static Class<Weapon> PickSWWMSlot4()
|
||||
{
|
||||
//return PickPair('Wallbuster','PuntzerGamma');
|
||||
return 'Wallbuster';
|
||||
}
|
||||
static Class<Inventory> PickSWWMSlot5()
|
||||
// chaingun spawn
|
||||
static Class<Weapon> PickSWWMSlot5()
|
||||
{
|
||||
//return PickPair('Eviscerator','HeavyMahSheenGun');
|
||||
return 'Eviscerator';
|
||||
}
|
||||
static Class<Inventory> PickSWWMSlot6()
|
||||
// rocket launcher spawn
|
||||
static Class<Weapon> PickSWWMSlot6()
|
||||
{
|
||||
//return PickTrip('Hellblazer','Quadravol','ModernSparkster');
|
||||
//return PickTrio('Hellblazer','Quadravol','ModernSparkster');
|
||||
//return PickPair('Hellblazer','Quadravol');
|
||||
return 'Hellblazer';
|
||||
}
|
||||
static Class<Inventory> PickSWWMSlot7()
|
||||
// first plasma rifle spawn
|
||||
static Class<Weapon> PickSWWMSlot7()
|
||||
{
|
||||
//return PickPair('Sparkster','BlackfireIgniter');
|
||||
return 'Sparkster';
|
||||
}
|
||||
static Class<Inventory> PickSWWMSlot8()
|
||||
// second plasma rifle spawn
|
||||
static Class<Weapon> PickSWWMSlot8()
|
||||
{
|
||||
//return PickPair('SilverBullet','EMPCarbine');
|
||||
return 'SilverBullet';
|
||||
}
|
||||
static Class<Inventory> PickSWWMSlot9()
|
||||
// first bfg spawn
|
||||
static Class<Weapon> PickSWWMSlot9()
|
||||
{
|
||||
//return PickTrio('CandyGun','RayKhom','MisterRifle');
|
||||
//return PickPair('CandyGun','RayKhom');
|
||||
return 'CandyGun';
|
||||
}
|
||||
static Class<Inventory> PickSWWMSlot0()
|
||||
// second bfg spawn (each weapon can only exist once)
|
||||
static Class<Weapon> PickSWWMSlot0( bool fallback = true )
|
||||
{
|
||||
/*if ( !CheckNeedsItem('Ynykron') )
|
||||
/*if ( ItemExists('Ynykron',mapstart:true) )
|
||||
{
|
||||
if ( !CheckNeedsItem('GrandLance') )
|
||||
if ( ItemExists('GrandLance',mapstart:true) )
|
||||
{
|
||||
if ( !CheckNeedsItem('RafanKos') )
|
||||
return PickSWWMSlot9();
|
||||
if ( ItemExists('RafanKos',null,true) )
|
||||
return fallback?PickSWWMSlot9():null;
|
||||
return 'RafanKos';
|
||||
}
|
||||
if ( !CheckNeedsItem('RafanKos') )
|
||||
if ( ItemExists('RafanKos',mapstart:true) )
|
||||
return 'GrandLance';
|
||||
return PickPair('GrandLance','RafanKos');
|
||||
return Random[Replacements](0,1)?'GrandLance':'RafanKos';
|
||||
}
|
||||
return PickTrio('Ynykron','GrandLance','RafanKos');*/
|
||||
/*if ( !CheckNeedsItem('Ynykron') )
|
||||
if ( ItemExists('GrandLance',mapstart:true) )
|
||||
{
|
||||
if ( !CheckNeedsItem('GrandLance') )
|
||||
return PickSWWMSlot9();
|
||||
if ( ItemExists('RafanKos',mapstart:true) )
|
||||
return 'Ynykron';
|
||||
return Random[Replacements](0,1)?'Ynykron':'RafanKos';
|
||||
}
|
||||
if ( ItemExists('RafanKos',mapstart:truee) )
|
||||
return Random[Replacements](0,1)?'Ynykron':'GrandLance';
|
||||
switch ( Random[Replacements](0,2) )
|
||||
{
|
||||
case 0:
|
||||
return 'Ynykron';
|
||||
case 1:
|
||||
return 'GrandLance';
|
||||
}
|
||||
return PickPair('Ynykron','GrandLance');*/
|
||||
return !CheckNeedsItem('Ynykron')?'CandyGun':'Ynykron';
|
||||
return 'RafanKos';*/
|
||||
/*if ( ItemExists('Ynykron',mapstart:true) )
|
||||
{
|
||||
if ( ItemExists('GrandLance',mapstart:true) )
|
||||
return fallback?PickSWWMSlot9():null;
|
||||
return 'GrandLance';
|
||||
}
|
||||
if ( ItemExists('GrandLance',mapstart:true) )
|
||||
return 'Ynykron';
|
||||
return Random[Replacements](0,1)?'Ynykron':'GrandLance';*/
|
||||
if ( ItemExists('Ynykron',mapstart:true) ) return fallback?PickSWWMSlot9():null;
|
||||
return 'Ynykron';
|
||||
}
|
||||
static Class<Inventory> PickDoomSlot6()
|
||||
// either plasma rifle spawn
|
||||
static Class<Weapon> PickDoomSlot6()
|
||||
{
|
||||
return PickPair(PickSWWMSlot7(),PickSWWMSlot8(),2);
|
||||
bool hasslot7 = (!CheckNeedsItem('Sparkster')/*||!CheckNeedsItem('BlackfireIgniter')*/);
|
||||
bool hasslot8 = (!CheckNeedsItem('SilverBullet')/*||!CheckNeedsItem('EMPCarbine')*/);
|
||||
// if the player already has a slot 7 weapon...
|
||||
if ( hasslot7 )
|
||||
{
|
||||
// ... and also has a slot 8 weapon, 33% chance of a slot 8 spawn
|
||||
// otherwise, guaranteed slot 8 spawn
|
||||
if ( hasslot8 && Random[Replacements](0,2) ) return PickSWWMSlot7();
|
||||
else return PickSWWMSlot8();
|
||||
}
|
||||
// otherwise, always spawn a slot 7 weapon first
|
||||
return PickSWWMSlot7();
|
||||
|
||||
}
|
||||
static Class<Inventory> PickDoomSlot7()
|
||||
// either bfg spawn
|
||||
static Class<Weapon> PickDoomSlot7()
|
||||
{
|
||||
return PickPair(PickSWWMSlot9(),PickSWWMSlot0(),2);
|
||||
bool hasslot9 = (!CheckNeedsItem('CandyGun')/*||!CheckNeedsItem('RayKhom')||!CheckNeedsItem('MortalRifle')*/);
|
||||
bool hasslot0 = (!CheckNeedsItem('Ynykron')/*||!CheckNeedsItem('GrandLance')||!CheckNeedsItem('RafanKos')*/);
|
||||
let rep = PickSWWMSlot0(false);
|
||||
// if the player already has a slot 9 weapon (and a slot 0 weapon can still spawn)...
|
||||
if ( hasslot9 && rep )
|
||||
{
|
||||
// ... and also has a slot 0 weapon already, 33% chance of a slot 0 spawn
|
||||
// otherwise, guaranteed slot 0 spawn
|
||||
if ( hasslot0 && Random[Replacements](0,2) ) return PickSWWMSlot9();
|
||||
else return rep;
|
||||
}
|
||||
// otherwise, always spawn a slot 9 weapon first
|
||||
return PickSWWMSlot9();
|
||||
}
|
||||
static Class<Inventory> PickHereticSlot3() // also used for Doom 1
|
||||
// either shotgun spawn (also used for Heretic)
|
||||
static Class<Weapon> PickDoomSlot3()
|
||||
{
|
||||
if ( level.maptime ) return PickSWWMSlot3(); // always slot 3 after map start, prevents shotgun guys from dropping wallbusters
|
||||
return PickPair(PickSWWMSlot3(),PickSWWMSlot4(),2);
|
||||
// always slot 3 after map start, prevents shotgun guys from dropping wallbusters, which is weird af
|
||||
if ( level.maptime ) return PickSWWMSlot3();
|
||||
bool hasslot3 = (!CheckNeedsItem('Spreadgun')/*||!CheckNeedsItem('PuntzerBeta')*/);
|
||||
bool hasslot4 = (!CheckNeedsItem('Wallbuster')/*||!CheckNeedsItem('PuntzerGamma')*/);
|
||||
// if the player already has a slot 3 weapon...
|
||||
if ( hasslot3 )
|
||||
{
|
||||
// ... and also has a slot 4 weapon, 33% chance of a slot 4 spawn
|
||||
// otherwise, guaranteed slot 4 spawn
|
||||
if ( hasslot4 && Random[Replacements](0,2) ) return PickSWWMSlot3();
|
||||
return PickSWWMSlot4();
|
||||
}
|
||||
// otherwise, always spawn a slot 3 weapon first
|
||||
return PickSWWMSlot3();
|
||||
}
|
||||
// what RandomSpawner does, basically (simplified for items)
|
||||
static play void TransferItemProp( Actor a, Actor b, bool bundlehack = false )
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ Class SWWMWeapon : Weapon abstract
|
|||
|
||||
override void Touch( Actor toucher )
|
||||
{
|
||||
// cannot pick up swapweapon unless explicitly pressing use
|
||||
// show prompt to swap weapon, and prevent normal pickup
|
||||
SWWMWeapon sw;
|
||||
if ( bSPECIAL && swwm_swapweapons && (sw = HasSwapWeapon(toucher)) )
|
||||
{
|
||||
|
|
@ -54,6 +54,7 @@ Class SWWMWeapon : Weapon abstract
|
|||
}
|
||||
return;
|
||||
}
|
||||
// explicit use-to pickup, function must be called from Used() virtual
|
||||
if ( toucher.player && swwm_usetopickup && !bUsePickup )
|
||||
return;
|
||||
Super.Touch(toucher);
|
||||
|
|
@ -388,10 +389,6 @@ Class SWWMWeapon : Weapon abstract
|
|||
if ( swwm_enemydrops > 0 ) return false;
|
||||
else if ( swwm_enemydrops == 0 )
|
||||
{
|
||||
// first, check if no others exist in the map, just in
|
||||
// case this weapon drop MAY be needed
|
||||
if ( !SWWMUtility.ItemExists(GetClass(),self) )
|
||||
return false; // drop us
|
||||
// drop our corresponding ammo
|
||||
if ( !DropAmmoType ) return true;
|
||||
let a = Spawn(DropAmmoType,pos,ALLOW_REPLACE);
|
||||
|
|
|
|||