Ball crits, Saltshot and Ragekit melee foil invulnerability.

Vanilla Centaurs still take damage from being set on fire while shielded.
Expanded CLONK library (11 different stock sounds, not just coconut).
Added Dark Souls parry sound easter egg.
Add Demolitionist to Doom 2 cast call screen (awkward, but works).
Adjust Hexen end screen, fit text better.
This commit is contained in:
Mari the Deer 2020-03-21 19:35:56 +01:00
commit 6b0b9ed196
65 changed files with 592 additions and 39 deletions

View file

@ -13,6 +13,9 @@ Most of the work here is original, but there are some notable exceptions:
* System Shock 2
* Painkiller
* Killing Floor
* Dark Souls
* Dark Souls 2
* Dark Souls 3
- This mod uses libeye, by KeksDose. Big thanks.
- Title theme, "Traumatic State", by Teque (which a lot of people just know as "the AS-Golgotha music").
- Intermission theme, "Dragony", also by Teque (very comfy music considering the rest of his repertoire).

View file

@ -1941,14 +1941,16 @@ TXT_HEXEN_WIN2MSG =
"With a deep, guttural voice, he begins to speak\n"
"to you...";
TXT_HEXEN_WIN3MSG =
"\"Well played, mortal, you've conquered this board,\n"
"but your mission is far from over. One more Rider\n"
"remains... and he will not rest until he's avenged\n"
"his fallen comrades.\"\n"
"You laugh. \"If he's anything like the others, I'll\n"
"make him beg for mercy before dinner time. Now if\n"
"you'll excuse me, I've got a fine lady waiting for\n"
"me back at home.\"";
"\"Well played, mortal, you've conquered\n"
"this board, but your mission is far from\n"
"over. One more Rider remains... and he\n"
"will not rest until he's avenged his\n"
"fallen comrades.\"\n"
"\n"
"You laugh. \"If he's anything like the\n"
"others, I'll make him beg for mercy before\n"
"dinner time. Now if you'll excuse me, I've\n"
"got a fine lady waiting for me back home.\"";
// Re-tagged monsters
FN_ZOMBIE = "Zomb";
FN_SHOTGUN = "Baldy";
@ -1968,6 +1970,23 @@ FN_ARCH = "Pls No";
FN_SPIDER = "Mama Spooder";
FN_CYBER = "Dat Ass";
FN_WOLFSS = "Mein Lieben";
CC_ZOMBIE = "Zomb";
CC_SHOTGUN = "Baldy";
CC_HEAVY = "Annoyance";
CC_IMP = "Simp";
CC_DEMON = "Pinky";
CC_LOST = "Skully";
CC_CACO = "Caco";
CC_HELL = "Brownie";
CC_BARON = "Mr. Gruh";
CC_ARACH = "Babby";
CC_PAIN = "Ass Pain";
CC_REVEN = "AAAAAAAAA";
CC_MANCU = "He Thicc";
CC_ARCH = "Pls No";
CC_SPIDER = "Mama Spooder";
CC_CYBER = "Dat Ass";
CC_HERO = "You!";
FN_DOG = "Goodest Boy";
FN_CHICKEN = "Clucker";
FN_BEAST = "Друг";

View file

@ -1356,16 +1356,16 @@ T_GREENKEY = "\cdLlave Verde\c-";
T_BLUEKEY = "\chLlave Azul\c-";
T_REDKEY = "\cgLlave Roja\c-";
T_KEYSTEEL = "\cuLlave de Acero\c-";
T_KEYCAVE = "\ceLlave de Cueva\c-";
T_KEYCAVE = "\ceLlave de la Caverna\c-";
T_KEYAXE = "\ccLlave de Hacha\c-";
T_KEYFIRE = "\cgLlave de Fuego\c-";
T_KEYEMERALD = "\cdLlave de Esmeralda\c-";
T_KEYDUNGEON = "\ccLlave de Mazmorra\c-";
T_KEYEMERALD = "\cdLlave Esmeralda\c-";
T_KEYDUNGEON = "\ccLlave del Calabozo\c-";
T_KEYSILVER = "\cjLlave de Plata\c-";
T_KEYRUSTED = "\cbLlave de Óxido\c-";
T_KEYRUSTED = "\cbLlave Oxidada\c-";
T_KEYHORN = "\coLlave de Cuerno\c-";
T_KEYSWAMP = "\cpLlave de Ciénaga\c-";
T_KEYCASTLE = "\cxLlave de Castillo\c-";
T_KEYSWAMP = "\cpLlave del Pantano\c-";
T_KEYCASTLE = "\cxLlave del Castillo\c-";
// shortened doom key pickup messages
GOTBLUECARD = "Tarjeta Llave Azul";
GOTYELWCARD = "Tarjeta Llave Amarilla";
@ -1406,7 +1406,7 @@ E1TEXT =
"Sigues sin tener ni idea de como has\n"
"ido a parar a la vieja base de Fobos\n"
"de la UAC, pero no hay tiempo para\n"
"pensare en eso. Debes encontrar la\n"
"pensar en eso. Debes encontrar la\n"
"forma de regresar a la Tierra, para\n"
"cumplir to misión de detener la\n"
"invasión del Infierno.\n"
@ -1460,7 +1460,7 @@ E3TEXT =
"epicentro de la zona de invasión. Muerte y\n"
"destrucción llenan las calles, y algún\n"
"sádico bastardo parece haber mutilado\n"
"un pobre conejíto, ugh...\n"
"un pobre conejito, ugh...\n"
"\n"
"Sí, esos demonios van a estar MUY muertos...\n"
"\n"
@ -1509,7 +1509,7 @@ C2TEXT =
"transmisión.\n"
"\n"
"\"Oye, perdón por interrumpir pero, acabamos\n"
"de encontrar por donde salen los hijos de\n"
"de descubrir de donde salen los hijos de\n"
"perra esos. Si no es mucho pedir, ¿podrías\n"
"mover ese brillante culito metálico p'allá\n"
"y mandar a esos capullos de vuelta al\n"
@ -1548,7 +1548,7 @@ C4TEXT =
"tenemos mucho trabajo que hacer, sabes,\n"
"reconstruyendo la Tierra y tal...\"";
C5TEXT =
"¿Que es este sitio? Parece ser parte el Infierno,\n"
"¿Que es este sitio? Parece ser parte del Infierno,\n"
"pero estas estructuras son todas hechas por la\n"
"mano del hombre...\n"
"\n"
@ -1570,7 +1570,7 @@ HE1TEXT =
"humo cuando vea lo que haces con sus preciadas\n"
"legiones de no muertos...";
HE2TEXT =
"Esas criaturas to cachas no fueron rival para\n"
"Esas criaturas tó cachas no fueron rival para\n"
"ti, y al caer la última al suelo, ves como\n"
"los portales que guardaban se abren. ¿A donde\n"
"pueden llevar?\n"
@ -1612,7 +1612,7 @@ HE4TEXT =
"a casa, aunque tengas que matar a mil más\n"
"de estos estúpidos monstruos.";
HE5TEXT =
"Con la muerte del último Minotauro, una\n"
"Con la muerte del último Maulotauro, una\n"
"vez más ves como los portales se abren\n"
"a otro mundo. No puedes ver realmente\n"
"a donde te van a llevar, pero eso ya no\n"
@ -1630,7 +1630,7 @@ TXT_HEXEN_CLUS1MSG =
"siete portales, finalmente estás en otro de\n"
"los submundos de Cronos. Crueles desiertos,\n"
"áridos yermos y apestosas ciénagas te esperan\n"
"más alante, y seguramente más de esos molestos\n"
"más adelante, y seguramente más de esos molestos\n"
"acertijos.\n"
"\n"
"Te encuentras con algo familiar, es ese asqueroso\n"
@ -1676,7 +1676,7 @@ TXT_HEXEN_CLUS4MSG =
"Este sitio apesta a muerte. Es... ¿un cementerio?";
TXT_HEXEN_WIN1MSG =
"Cruzando el último portal, sientes como una\n"
"enorme fuerza te atapulta a través de varias\n"
"enorme fuerza te catapulta a través de varias\n"
"dimensiones.\n"
"\n"
"Tras casi pasar tu velocímetro por el indicador\n"
@ -1704,13 +1704,15 @@ TXT_HEXEN_WIN2MSG =
"hablar contigo...";
TXT_HEXEN_WIN3MSG =
"\"Bien jugado, mortal, has conquistado este\n"
"tablero, pero tu misión lejos quede de haber\n"
"terminado. Hay aun otro Jinete... quien no\n"
"descansará hasta haber vengado a sus camaradas.\"\n"
"Te ries. \"Si es como los otros, lo haré\n"
"suplicar clemencia antes de que llegue la hora\n"
"de cenar. Ahora si me disculpas, hay una bella\n"
"dama que me espera en casa.\"";
"tablero, pero tu misión lejos queda de\n"
"haber terminado. Hay aun otro Jinete...\n"
"quien no descansará hasta haber vengado a\n"
"sus camaradas.\"\n"
"\n"
"Te ries. \"Si es como los otros, le haré\n"
"suplicar clemencia antes de que llegue la\n"
"hora de cenar. Ahora si me disculpas, hay\n"
"una bella dama que me espera en casa.\"";
// Re-tagged monsters
FN_ZOMBIE = "Zombi";
FN_SHOTGUN = "Calvito";
@ -1726,6 +1728,19 @@ FN_PAIN = "Dolor de Culo";
FN_SPIDER = "Mami Araña";
FN_CYBER = "Madre Mía Que Culazo";
FN_WOLFSS = "Votante de VOX";
CC_ZOMBIE = "Zombi";
CC_SHOTGUN = "Calvito";
CC_HEAVY = "Tocacojones";
CC_DEMON = "Rosita";
CC_LOST = "Calaverita";
CC_CACO = "Tomatín";
CC_HELL = "Marroncito";
CC_BARON = "Señor Gruñón";
CC_ARACH = "Ñiño";
CC_PAIN = "Dolor de Culo";
CC_SPIDER = "Mami Araña";
CC_CYBER = "Madre Mía Que Culazo";
CC_HERO = "¡Tú!";
FN_DOG = "Perrete";
FN_CHICKEN = "Gallina";
FN_CLINK = "Rasguñitos";
@ -1870,7 +1885,7 @@ SWWM_INTERTIP28 = "Las llamas de los cartuchos de Napalm del Trabuco se extender
SWWM_INTERTIP29 = "La munición incendiaria es inefectiva bajo el agua, por razones obvias.";
SWWM_INTERTIP30 = "Mis novias son muy cuquis. Lo siento, es que tenía que decirlo.";
// intermission fanart
SWWM_INTERART = "Arte: ";
SWWM_FANART = "Arte: ";
// intermission 4komas (TBD)
/* SUBTITLES */

View file

@ -93,6 +93,11 @@ OptionMenu "SWWMCreditsMenu"
StaticText "Tripwire Interactive", "Gold"
StaticText "Killing Floor", "White"
StaticText " "
StaticText "From Software", "Gold"
StaticText "Dark Souls", "White"
StaticText "Dark Souls II", "White"
StaticText "Dark Souls III", "White"
StaticText " "
StaticText "$SWWM_CMUSIC", "Red"
StaticText " "
StaticText "Teque", "Gold"

BIN
patches/castdemo_0001.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
patches/castdemo_0002.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
patches/castdemo_0003.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
patches/castdemo_0004.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
patches/castdemo_0005.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
patches/castdemo_0006.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
patches/castdemo_0007.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
patches/castdemo_0008.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
patches/castdemo_0009.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
patches/castdemo_0010.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
patches/castdemo_0011.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
patches/castdemo_0012.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
patches/castdemo_0013.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
patches/castdemo_0014.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
patches/castdemo_0015.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
patches/castdemo_0016.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
patches/castdemo_0048.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
patches/castdemo_0049.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
patches/castdemo_0050.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
patches/castdemo_0051.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
patches/castdemo_0052.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
patches/castdemo_0053.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
patches/castdemo_0054.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
patches/castdemo_0055.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
patches/castdemo_0056.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
patches/castdemo_0057.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
patches/castdemo_0058.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
patches/castdemo_0059.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
patches/castdemo_0060.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
patches/castdemo_0061.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
patches/castdemo_0062.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
patches/castdemo_0063.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
patches/castdemo_0064.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
patches/castdemo_0166.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
patches/castdemo_0167.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
patches/castdemo_0168.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
patches/castdemo_0169.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
patches/castdemo_0170.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
patches/castdemo_0171.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View file

@ -603,7 +603,6 @@ misc/teleport sounds/general/teleport.ogg
misc/chat sounds/menu/chatsnd.ogg
misc/chat2 sounds/menu/chatsnd.ogg
misc/sundowner sounds/SUNDOWNER.ogg
misc/clonk sounds/CLONK.ogg
misc/emone sounds/EMONE.ogg
misc/underwater sounds/general/uWater1a.ogg
@ -621,6 +620,24 @@ misc/ricochet2 sounds/general/ric2.ogg
misc/ricochet3 sounds/general/ric3.ogg
$random misc/ricochet { misc/ricochet1 misc/ricochet2 misc/ricochet3 }
misc/parry_ds1 sounds/general/parry_ds1.ogg
misc/parry_ds2 sounds/general/parry_ds2.ogg
misc/parry_ds3 sounds/general/parry_ds3.ogg
$random misc/soulsparry { misc/parry_ds1 misc/parry_ds2 misc/parry_ds3 }
misc/clonk1 sounds/clonk/clonk1.ogg
misc/clonk2 sounds/clonk/clonk2.ogg
misc/clonk3 sounds/clonk/clonk3.ogg
misc/clonk4 sounds/clonk/clonk4.ogg
misc/clonk5 sounds/clonk/clonk5.ogg
misc/clonk6 sounds/clonk/clonk6.ogg
misc/clonk7 sounds/clonk/clonk7.ogg
misc/clonk8 sounds/clonk/clonk8.ogg
misc/clonk9 sounds/clonk/clonk9.ogg
misc/clonk10 sounds/clonk/clonk10.ogg
misc/clonk11 sounds/clonk/clonk11.ogg
$random misc/clonk { misc/clonk1 misc/clonk2 misc/clonk3 misc/clonk4 misc/clonk5 misc/clonk6 misc/clonk7 misc/clonk8 misc/clonk9 misc/clonk10 misc/clonk11 }
armor/blastsuit sounds/items/blastsuit.ogg
armor/wararmor sounds/items/wararmor.ogg
armor/hit1 sounds/items/hullhit.ogg

Binary file not shown.

BIN
sounds/clonk/clonk1.ogg Normal file

Binary file not shown.

BIN
sounds/clonk/clonk10.ogg Normal file

Binary file not shown.

BIN
sounds/clonk/clonk11.ogg Normal file

Binary file not shown.

BIN
sounds/clonk/clonk2.ogg Normal file

Binary file not shown.

BIN
sounds/clonk/clonk3.ogg Normal file

Binary file not shown.

BIN
sounds/clonk/clonk4.ogg Normal file

Binary file not shown.

BIN
sounds/clonk/clonk5.ogg Normal file

Binary file not shown.

BIN
sounds/clonk/clonk6.ogg Normal file

Binary file not shown.

BIN
sounds/clonk/clonk7.ogg Normal file

Binary file not shown.

BIN
sounds/clonk/clonk8.ogg Normal file

Binary file not shown.

BIN
sounds/clonk/clonk9.ogg Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

273
textures.castdemo Normal file
View file

@ -0,0 +1,273 @@
Sprite "CCD1A0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0001.png", 0, 0
}
Sprite "CCD1B0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0002.png", 0, 0
}
Sprite "CCD1C0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0003.png", 0, 0
}
Sprite "CCD1D0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0004.png", 0, 0
}
Sprite "CCD1E0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0005.png", 0, 0
}
Sprite "CCD1F0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0006.png", 0, 0
}
Sprite "CCD1G0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0007.png", 0, 0
}
Sprite "CCD1H0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0008.png", 0, 0
}
Sprite "CCD1I0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0009.png", 0, 0
}
Sprite "CCD1J0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0010.png", 0, 0
}
Sprite "CCD1K0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0011.png", 0, 0
}
Sprite "CCD1L0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0012.png", 0, 0
}
Sprite "CCD1M0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0013.png", 0, 0
}
Sprite "CCD1N0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0014.png", 0, 0
}
Sprite "CCD1O0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0015.png", 0, 0
}
Sprite "CCD1P0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0016.png", 0, 0
}
Sprite "CCD2A0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0166.png", 0, 0
}
Sprite "CCD2B0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0167.png", 0, 0
}
Sprite "CCD2C0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0168.png", 0, 0
}
Sprite "CCD2D0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0169.png", 0, 0
}
Sprite "CCD2E0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0170.png", 0, 0
}
Sprite "CCD2F0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0171.png", 0, 0
}
Sprite "CCD3A0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0048.png", 0, 0
}
Sprite "CCD3B0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0049.png", 0, 0
}
Sprite "CCD3C0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0050.png", 0, 0
}
Sprite "CCD3D0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0051.png", 0, 0
}
Sprite "CCD3E0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0052.png", 0, 0
}
Sprite "CCD3F0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0053.png", 0, 0
}
Sprite "CCD3G0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0054.png", 0, 0
}
Sprite "CCD3H0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0055.png", 0, 0
}
Sprite "CCD3I0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0056.png", 0, 0
}
Sprite "CCD3J0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0057.png", 0, 0
}
Sprite "CCD3K0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0058.png", 0, 0
}
Sprite "CCD3L0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0059.png", 0, 0
}
Sprite "CCD3M0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0060.png", 0, 0
}
Sprite "CCD3N0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0061.png", 0, 0
}
Sprite "CCD3O0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0062.png", 0, 0
}
Sprite "CCD3P0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0063.png", 0, 0
}
Sprite "CCD3Q0", 160, 224
{
XScale 3.2
YScale 3.0
Offset 80, 192
Patch "patches/castdemo_0064.png", 0, 0
}

View file

@ -14,3 +14,171 @@ Map TITLEMAP "SWWM GZ - Title Map"
Music = ""
EventHandlers = "SWWMTitleStuff"
}
// edited Doom 2 cast to show the Demolitionist at the end
Intermission Doom2Cast
{
Cast
{
CastClass = "Zombieman"
CastName = "$CC_ZOMBIE"
AttackSound = "Missile", 1, "grunt/attack"
}
Cast
{
CastClass = "ShotgunGuy"
CastName = "$CC_SHOTGUN"
AttackSound = "Missile", 1, "shotguy/attack"
}
Cast
{
CastClass = "ChaingunGuy"
CastName = "$CC_HEAVY"
AttackSound = "Missile", 1, "chainguy/attack"
AttackSound = "Missile", 2, "chainguy/attack"
AttackSound = "Missile", 3, "chainguy/attack"
}
Cast
{
CastClass = "DoomImp"
CastName = "$CC_IMP"
AttackSound = "Missile", 2, "imp/attack"
}
Cast
{
CastClass = "Demon"
CastName = "$CC_DEMON"
AttackSound = "Melee", 1, "demon/melee"
}
Cast
{
CastClass = "LostSoul"
CastName = "$CC_LOST"
AttackSound = "Missile", 1, "skull/melee"
}
Cast
{
CastClass = "Cacodemon"
CastName = "$CC_CACO"
AttackSound = "Missile", 1, "caco/attack"
}
Cast
{
CastClass = "HellKnight"
CastName = "$CC_HELL"
AttackSound = "Missile", 1, "baron/attack"
}
Cast
{
CastClass = "BaronOfHell"
CastName = "$CC_BARON"
AttackSound = "Missile", 1, "baron/attack"
}
Cast
{
CastClass = "Arachnotron"
CastName = "$CC_ARACH"
AttackSound = "Missile", 1, "baby/attack"
}
Cast
{
CastClass = "PainElemental"
CastName = "$CC_PAIN"
AttackSound = "Missile", 2, "skull/melee"
}
Cast
{
CastClass = "Revenant"
CastName = "$CC_REVEN"
AttackSound = "Missile", 1, "skeleton/attack"
AttackSound = "Melee", 1, "skeleton/swing"
AttackSound = "Melee", 3, "skeleton/melee"
}
Cast
{
CastClass = "Fatso"
CastName = "$CC_MANCU"
AttackSound = "Missile", 1, "fatso/attack"
AttackSound = "Missile", 4, "fatso/attack"
AttackSound = "Missile", 7, "fatso/attack"
}
Cast
{
CastClass = "Archvile"
CastName = "$CC_ARCH"
AttackSound = "Missile", 1, "vile/start"
}
Cast
{
CastClass = "SpiderMastermind"
CastName = "$CC_SPIDER"
AttackSound = "Missile", 1, "spider/attack"
AttackSound = "Missile", 2, "spider/attack"
}
Cast
{
CastClass = "Cyberdemon"
CastName = "$CC_CYBER"
AttackSound = "Missile", 1, "weapons/rocklf"
AttackSound = "Missile", 3, "weapons/rocklf"
AttackSound = "Missile", 5, "weapons/rocklf"
}
Cast
{
CastClass = "CastDemolitionist"
CastName = "$CC_HERO"
AttackSound = "Missile", 0, "explodium/fire"
}
Link = Doom2Cast // restart cast call
}
// edited Hexen ending
// draws the three player classes unconditionally
// shifts the final text screen so it doesn't get cut off
Intermission Inter_Chess
{
Fader
{
Music = "Hall"
Background = "FINALE1"
Time = 2
FadeType = FadeIn
}
TextScreen
{
Background = "FINALE1"
TextSpeed = 3
Text = "$TXT_HEXEN_WIN1MSG"
Time = -250
}
TextScreen
{
Music = "Orb"
Background = "FINALE2"
TextSpeed = 3
Text = "$TXT_HEXEN_WIN2MSG"
Time = -250
}
Fader
{
Background = "FINALE2"
Time = 2
FadeType = FadeOut
}
Fader
{
Music = "Chess"
Background = "FINALE3"
Draw = "CHESSALL", 20, 0
Time = 2
FadeType = FadeIn
}
TextScreen
{
Background = "FINALE3"
Draw = "CHESSALL", 20, 0
TextSpeed = 3
Text = "$TXT_HEXEN_WIN3MSG"
Position = 0, 112
}
}

View file

@ -57,6 +57,8 @@ Class SWWMArmor : Armor abstract
override void ModifyDamage( int damage, Name damageType, out int newdamage, bool passive, Actor inflictor, Actor source, int flags )
{
if ( !passive ) return;
if ( (damagetype == 'Drowning') || (damagetype == 'Falling') || (damagetype == 'Poison') || (damagetype == 'PoisonCloud') )
return; // these go through armor and get ignored by the player
int saved;
if ( (amount > 0) && !DamageTypeDefinition.IgnoreArmor(damageType) && (damage > 0) )
{
@ -490,6 +492,8 @@ Class ParriedRage : Inventory
Class ParryField : Actor
{
int lasteggtic;
Default
{
+NOGRAVITY;
@ -563,6 +567,11 @@ Class ParryField : Actor
i.bAMBUSH = true;
A_QuakeEx(3,3,3,10,0,64,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.2);
A_StartSound("demolitionist/parry",CHAN_WEAPON);
if ( (level.maptime > lasteggtic) && !Random[Parry](0,9) )
{
A_StartSound("misc/soulsparry",CHAN_ITEM,CHANF_OVERLAP,1.,.5);
lasteggtic = level.maptime+5;
}
}
if ( --special1 <= 0 ) Destroy();
}
@ -587,6 +596,11 @@ Class ParryField : Actor
A_StartSound("misc/ricochet",CHAN_VOICE,CHANF_OVERLAP,.7);
A_QuakeEx(3,3,3,10,0,64,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.2);
A_StartSound("demolitionist/parry",CHAN_WEAPON);
if ( (level.maptime > lasteggtic) && !Random[Parry](0,9) )
{
A_StartSound("misc/soulsparry",CHAN_ITEM,CHANF_OVERLAP,1.,.5);
lasteggtic = level.maptime+5;
}
// three options:
switch ( Random[Parry](0,7) )
{
@ -750,12 +764,14 @@ Class SWWMWeapon : Weapon abstract
invoker.bNOEXTREMEDEATH = true;
}
d.HitActor.DaggerAlert(self);
dmg = d.HitActor.DamageMobj(invoker,self,dmg,'Melee',DMG_USEANGLE|DMG_THRUSTLESS,atan2(d.HitDir.y,d.HitDir.x));
int flg = DMG_USEANGLE|DMG_THRUSTLESS;
if ( raging ) flg |= DMG_FOILINVUL;
dmg = d.HitActor.DamageMobj(invoker,self,dmg,'Melee',flg,atan2(d.HitDir.y,d.HitDir.x));
invoker.bEXTREMEDEATH = invoker.default.bEXTREMEDEATH;
invoker.bNOEXTREMEDEATH = invoker.default.bEXTREMEDEATH;
int quakin = raging?8:2;
if ( d.HitActor.player ) d.HitActor.A_QuakeEx(quakin,quakin,quakin,6,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.125*quakin);
if ( !d.HitActor.bNOBLOOD && !d.HitActor.bINVULNERABLE )
if ( !d.HitActor.bNOBLOOD && (raging || !d.HitActor.bINVULNERABLE) )
{
d.HitActor.TraceBleed(dmg,invoker);
d.HitActor.SpawnBlood(d.HitLocation,atan2(d.HitDir.y,d.HitDir.x)+180,dmg);

View file

@ -1800,4 +1800,4 @@ Class SWWMOptionMenu : OptionMenu
ypos += fnt.GetHeight()*CleanYFac_1;
}
}
}
}

View file

@ -571,7 +571,9 @@ Class Demolitionist : PlayerPawn
a.vel += pushdir*(15+(spd*150/max(50,a.mass)));
a.vel.z += 5+(spd*(50/max(50,a.mass)));
}
a.DamageMobj(self,self,int(15+spd*2.5),'Dash',DMG_THRUSTLESS);
int flg = DMG_THRUSTLESS;
if ( FindInventory("RagekitPower") ) flg |= DMG_FOILINVUL;
a.DamageMobj(self,self,int(15+spd*2.5),'Dash',flg);
}
}
else if ( InStateSequence(CurState,FindState("Jump")) )
@ -1735,3 +1737,28 @@ Class DemolitionistSelfLight : Actor
target.A_AttachLight('DemoSelfLight2',DynamicLight.PointLight,Color(32,48,24),80,0,DynamicLight.LF_DONTLIGHTSELF|DynamicLight.LF_ATTENUATE,(0,0,target.height/2));
}
}
// for the doom 2 cast
Class CastDemolitionist : Actor
{
Default
{
DeathSound "demolitionist/death";
}
States
{
Spawn:
See:
CCD1 ABCDEFGHIJKLMNOP 2;
Loop;
Missile:
CCD1 A 2;
CCD2 ABCDEF 2;
Goto See;
Death:
CCD1 A 2;
CCD3 ABCDEFGHIJKLMNOP 2;
CCD3 Q -1;
Stop;
}
}

View file

@ -559,6 +559,7 @@ Class SaltImpact : Actor
+FORCERADIUSDMG;
+FORCEXYBILLBOARD;
+NOTELEPORT;
+FOILINVUL;
}
override void PostBeginPlay()
{
@ -632,6 +633,7 @@ Class SaltBeam : Actor
+ROLLCENTER;
+NODAMAGETHRUST;
+FORCERADIUSDMG;
+FOILINVUL;
}
void SpreadOut()
@ -885,7 +887,11 @@ Class OnFire : Actor
{
cnt = min(10,30-int(29*(min(1.,amount/500.)**3.)));
if ( victim.bSHOOTABLE && (victim.Health > 0) && (amount > 0) )
victim.DamageMobj(self,instigator,clamp(int(amount*.1),1,30),'Fire',DMG_THRUSTLESS); // need to use this actor to have a proper obituary
{
int flg = DMG_THRUSTLESS;
if ( victim is 'Centaur' ) flg |= DMG_FOILINVUL; // you're on fire, that shield is worthless
victim.DamageMobj(self,instigator,clamp(int(amount*.1),1,30),'Fire',flg); // need to use this actor as inflictor to have a proper obituary
}
if ( !victim )
{
A_StopSound(CHAN_5);
@ -1324,12 +1330,15 @@ Class TheBall : Actor
int dmg = int(vel.length()*4.2+heat*80);
bool is_schutt = victim.bSHOOTABLE;
// critical hit!
bool crit = false;
if ( is_schutt && !Random[Spreadgun](0,9) )
{
Spawn("SWWMItemFog",pos);
A_StartSound("misc/clonk",CHAN_FOOTSTEP,CHANF_OVERLAP,1.,.2);
int whichclonk = Random[Spreadgun](1,11);
String snd = String.Format("misc/clonk%d",whichclonk);
A_StartSound(snd,CHAN_FOOTSTEP,CHANF_OVERLAP,1.,.2);
victim.A_QuakeEx(8,8,8,8,0,3000,"",QF_RELATIVE|QF_SCALEDOWN,falloff:300,rollIntensity:1.);
victim.A_StartSound("misc/clonk",CHAN_FOOTSTEP,CHANF_OVERLAP,1.,.2);
victim.A_StartSound(snd,CHAN_FOOTSTEP,CHANF_OVERLAP,1.,.2);
slamforce *= 4;
dmg *= 4;
vel *= 1.1;
@ -1342,10 +1351,11 @@ Class TheBall : Actor
s.alpha *= .2;
s.vel = pvel;
}
crit = true;
}
SWWMHandler.DoKnockback(victim,vel.unit(),slamforce);
bool bleeds = (victim && !victim.bINVULNERABLE && !victim.bNOBLOOD && is_schutt);
dmg = victim.DamageMobj(self,target,dmg,'Concussion',DMG_THRUSTLESS);
dmg = victim.DamageMobj(self,target,dmg,'Concussion',crit?(DMG_THRUSTLESS|DMG_FOILINVUL):DMG_THRUSTLESS); // crits ignore invulnerability
Vector3 dir = -vel.unit();
// slam jam
if ( bleeds )