Deathkings of the Dark Citadel support.
This commit is contained in:
parent
cb3d828e43
commit
d913752e31
20 changed files with 427 additions and 68 deletions
66
filter/hexen.deathkings/zmapinfo.hexdd
Normal file
66
filter/hexen.deathkings/zmapinfo.hexdd
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
// edited Hexen ending (for Deathkings)
|
||||
// draws the three player classes unconditionally
|
||||
// shifts the final text screen so it doesn't get cut off
|
||||
// it also gives it a lil' flavor change (heh)
|
||||
Intermission Inter_Chess
|
||||
{
|
||||
Fader
|
||||
{
|
||||
Music = "Hall"
|
||||
Background = "graphics/FINALE1_noorb.png"
|
||||
Time = 2
|
||||
FadeType = FadeIn
|
||||
}
|
||||
TextScreen
|
||||
{
|
||||
Background = "graphics/FINALE1_noorb.png"
|
||||
TextSpeed = 3
|
||||
Text = "$TXT_HEXDD_WIN1MSG"
|
||||
Time = -250
|
||||
}
|
||||
TextScreen
|
||||
{
|
||||
Music = "Orb"
|
||||
Background = "FINALE2"
|
||||
TextSpeed = 3
|
||||
Text = "$TXT_HEXDD_WIN2MSG"
|
||||
Time = -250
|
||||
}
|
||||
Fader
|
||||
{
|
||||
Background = "FINALE2"
|
||||
Time = 2
|
||||
FadeType = FadeOut
|
||||
}
|
||||
Fader
|
||||
{
|
||||
Music = "music/nomusic.ogg"
|
||||
Sound = "misc/orbexplode"
|
||||
Background = "graphics/FINALE2_splode.png"
|
||||
Time = 6
|
||||
FadeType = FadeOut
|
||||
}
|
||||
TextScreen
|
||||
{
|
||||
Background = "graphics/FINALE2_black.png"
|
||||
TextSpeed = 3
|
||||
Text = "$TXT_HEXDD_WIN3MSG"
|
||||
Time = -250
|
||||
}
|
||||
Fader
|
||||
{
|
||||
Music = "Chess"
|
||||
Background = "FINALE3"
|
||||
Draw = "CHESSALL", 20, 0
|
||||
Time = 2
|
||||
FadeType = FadeIn
|
||||
}
|
||||
TextScreen
|
||||
{
|
||||
Background = "FINALE3"
|
||||
Draw = "CHESSALL", 20, 0
|
||||
TextSpeed = 3
|
||||
Text = "$TXT_HEXDD_WIN4MSG"
|
||||
Position = 10, 120
|
||||
}
|
||||
}
|
||||
50
filter/hexen.hexen/zmapinfo.hexen
Normal file
50
filter/hexen.hexen/zmapinfo.hexen
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
// 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 = 10, 120
|
||||
}
|
||||
}
|
||||
BIN
graphics/FINALE1_noorb.png
Normal file
BIN
graphics/FINALE1_noorb.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
BIN
graphics/FINALE2_black.png
Normal file
BIN
graphics/FINALE2_black.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 102 B |
BIN
graphics/FINALE2_splode.png
Normal file
BIN
graphics/FINALE2_splode.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
|
|
@ -158,6 +158,7 @@ T_KEYRUSTED = "\cbRusted Key\c-";
|
|||
T_KEYHORN = "\coHorn Key\c-";
|
||||
T_KEYSWAMP = "\cpSwamp Key\c-";
|
||||
T_KEYCASTLE = "\cxCastle Key\c-";
|
||||
T_CHAOSSPHERE = "\cwChaos Sphere\c-";
|
||||
// shortened doom key pickup messages
|
||||
GOTBLUECARD = "Blue Keycard";
|
||||
GOTYELWCARD = "Yellow Keycard";
|
||||
|
|
@ -607,6 +608,7 @@ BT_MAGE = "Menelkir, Archmage of The Arcanum";
|
|||
BT_DRAGON = "Death Wyvern, Nether Beast";
|
||||
BT_HERESIARCH = "Heresiarch, Demonic Sorcerer";
|
||||
BT_KORAX = "Korax, Trickster Demon";
|
||||
BT_DEATHKINGS = "Deathkings of the Dark Citadel";
|
||||
// fun boss tags
|
||||
BT_BRUISERS_FUN = "Super Bruiser Bros";
|
||||
BT_CYBIE_FUN = "Shoot It Until It Dies";
|
||||
|
|
@ -624,6 +626,7 @@ BT_MAGE_FUN = "Menelkir the Magic Boi";
|
|||
BT_DRAGON_FUN = "A Motherfucking Dragon";
|
||||
BT_HERESIARCH_FUN = "Very Pissed Off Red Dude";
|
||||
BT_KORAX_FUN = "Korax the Big Stinky Ugly Bastard";
|
||||
BT_DEATHKINGS_FUN = "A Very Anticlimactic Boss Rehash";
|
||||
// eviternity
|
||||
BT_ARCHANGELUS = "Archangelus, Celestial Agent";
|
||||
BT_ARCHANGELUS_FUN = "Big Fucking Angel Dude";
|
||||
|
|
|
|||
|
|
@ -340,6 +340,32 @@ SWWM_MISSION_HEXEN5 =
|
|||
"Win this battle, \cfDemo-chan\c-. A very fine reward awaits you back home, oh yes.\n"
|
||||
"\n"
|
||||
"Saya out.";
|
||||
SWWM_MISSION_HEXDD1 =
|
||||
"Well, that was unexpected, and I guess... welcome to ANOTHER side mission, \cfDemolitionist\c-. Sure, this happened entirely by surprise, and I'm going to have to take more precautions next time. That honestly scared the fuck out of me.\n"
|
||||
"\n"
|
||||
"So, I'm at as much of a loss as you about what that fucking orb did. Both you AND the thing disappeared out of nowhere. I don't know WHAT exactly made this happen, but whatever, at least you didn't get erased, so that's a MASSIVE relief, let me tell you.\n"
|
||||
"\n"
|
||||
"The location data shows that you're still in \cfCronos\c-, although this place is... quite far away from the others you were in. I have a bad feeling about this, it's reminding me way too much about what happened back when you beat up the other \cfSerpent Rider\c-, that some fucker just yoinked you away. Well, whoever it is, find them and kick their ass.\n"
|
||||
"\n"
|
||||
"Do your thing, \cfDemo-chan\c-. Fuck 'em up!\n"
|
||||
"\n"
|
||||
"Saya out.";
|
||||
SWWM_MISSION_HEXDD2 =
|
||||
"Geez, I don't even know where to start, this place is really a mess, but I managed to gather some info at least. For starters, you're in some sort of \"realm of the dead\", ruled by a bunch of people known as the \cfDeathkings\c-. Yeah, sounds very colorful, I know. I don't know if they're responsible for pulling you in here, but if they are, then that makes them our target.\n"
|
||||
"\n"
|
||||
"*sigh*\n"
|
||||
"\n"
|
||||
"I'm just getting so tired, \cfDemo-chan\c-. At least watching you explode all these monsters into bits is entertaining.\n"
|
||||
"\n"
|
||||
"Saya out.";
|
||||
SWWM_MISSION_HEXDD3 =
|
||||
"This better be the end of all this nonsense, this so-called \cfDark Citadel\c-. If those \cfDeathkings\c- are there, then maybe you can rearrange their bodies into chunky salsa as punishment for stealing you away.\n"
|
||||
"\n"
|
||||
"You know, even \cfKirin\c- is pissed about this now, and I generally don't see him get angry, unless it's at videogames. Yeah, this is taking a toll on all of us, and I can tell you're not too happy about it either.\n"
|
||||
"\n"
|
||||
"Well, \cfDemo-chan\c-, may all this anger we feel give you strength to absolutely fucking obliterate those sons of bitches. We'll all be much happier when the deed is done.\n"
|
||||
"\n"
|
||||
"Saya out.";
|
||||
SWWM_MISSION_NONE = "(no mission briefing available)";
|
||||
// edited cluster texts
|
||||
E1TEXT =
|
||||
|
|
@ -677,3 +703,77 @@ TXT_HEXEN_WIN3MSG =
|
|||
"underestimated it, foolish as he is.\n"
|
||||
"So... will it be my turn next? Then, it\n"
|
||||
"shall not find me unprepared.\"";
|
||||
TXT_HEXDD_CLUS1MSG =
|
||||
"Tired, annoyed... This whole adventure\n"
|
||||
"is dragging on for longer than you\n"
|
||||
"had imagined, and by this point you're\n"
|
||||
"starting to consider an early\n"
|
||||
"retirement.\n"
|
||||
"\n"
|
||||
"A voice message from Saya comes in:\n"
|
||||
"\n"
|
||||
"\"I'd recall you back home, but I'm\n"
|
||||
"feeling vengeful. Whoever dragged\n"
|
||||
"you here has to be around, and I want\n"
|
||||
"to watch their knees explode for this.\n"
|
||||
"I'm sure you feel the same way too.\"\n"
|
||||
"\n"
|
||||
"Damn right...";
|
||||
TXT_HEXDD_CLUS2MSG =
|
||||
"You're seriously tired of this whole\n"
|
||||
"world already, with its annoying\n"
|
||||
"\"puzzles\" and pesky swarms of\n"
|
||||
"monsters that keep popping up.\n"
|
||||
"\n"
|
||||
"Moving on, you finally see it, the Dark\n"
|
||||
"Citadel. This should be it, therein lies\n"
|
||||
"your final objective: the so-called\n"
|
||||
"Deathkings. More enemies lie in wait\n"
|
||||
"along the way, but that doesn't\n"
|
||||
"matter...\n"
|
||||
"\n"
|
||||
"Because you're going to teach them\n"
|
||||
"all what happens when you piss off a\n"
|
||||
"combat robot armed to the teeth.";
|
||||
TXT_HEXDD_WIN1MSG =
|
||||
"Once again, there you are, back in the\n"
|
||||
"same room, with the same altar, empty.\n"
|
||||
"\n"
|
||||
"That's right, all this time you've been\n"
|
||||
"holding on to that orb, the \"Chaos\n"
|
||||
"Sphere\". As you take it out, you\n"
|
||||
"notice that it is now again glowing\n"
|
||||
"brightly, like it used to be before you\n"
|
||||
"took it away from this place.\n"
|
||||
"\n"
|
||||
"This damned thing has caused you way\n"
|
||||
"too much trouble ever since then.";
|
||||
TXT_HEXDD_WIN2MSG =
|
||||
"After placing it back on its altar, you\n"
|
||||
"give it an angry staredown. This\n"
|
||||
"thing's whole existence... it really\n"
|
||||
"pisses you off.\n"
|
||||
"\n"
|
||||
"Taking out a handful of Explodium\n"
|
||||
"mags, you tape them all around the\n"
|
||||
"orb, covering it entirely. If there's\n"
|
||||
"something you can do to feel better,\n"
|
||||
"then this is it.";
|
||||
TXT_HEXDD_WIN3MSG =
|
||||
"Detonating it all with a deafening\n"
|
||||
"boom, the entire room is showered in\n"
|
||||
"smoke and shattered glass. And\n"
|
||||
"shortly after, silence...\n"
|
||||
" \n"
|
||||
" \n"
|
||||
" \n"
|
||||
"Yeah, that feels much better.\n"
|
||||
" \n"
|
||||
"Fuck that orb.";
|
||||
TXT_HEXDD_WIN4MSG =
|
||||
"\"This machine... this unstoppable\n"
|
||||
"instrument of devastation... It has\n"
|
||||
"awakened something in me, I can feel\n"
|
||||
"it. Finally, a worthy opponent... If it is\n"
|
||||
"to come after me next, then certainly\n"
|
||||
"our battle shall be legendary.\"";
|
||||
|
|
|
|||
|
|
@ -147,6 +147,7 @@ T_KEYRUSTED = "\cbLlave Oxidada\c-";
|
|||
T_KEYHORN = "\coLlave de Cuerno\c-";
|
||||
T_KEYSWAMP = "\cpLlave del Pantano\c-";
|
||||
T_KEYCASTLE = "\cxLlave del Castillo\c-";
|
||||
T_CHAOSSPHERE = "\cwEsfera del Caos\c-";
|
||||
// shortened doom key pickup messages
|
||||
GOTBLUECARD = "Tarjeta Llave Azul";
|
||||
GOTYELWCARD = "Tarjeta Llave Amarilla";
|
||||
|
|
@ -538,6 +539,7 @@ BT_MAGE = "Menelkir, Archimago del Arcanum";
|
|||
BT_DRAGON = "Wyvern Mortal, Bestia del Inframundo";
|
||||
BT_HERESIARCH = "Heresiarca, Hechicero Demoníaco";
|
||||
BT_KORAX = "Korax, Demonio Embaucador";
|
||||
BT_DEATHKINGS = "Reyes de la Muerte de la Ciudadela Oscura";
|
||||
BT_CYBIE_FUN = "Dispara Hasta Que Muera";
|
||||
BT_SPIDER_FUN = "Cerebrito Idiota";
|
||||
BT_SPIDER2_FUN = "Cerebrito Idiota Bis";
|
||||
|
|
@ -552,6 +554,7 @@ BT_MAGE_FUN = "Menelkir el Mágico";
|
|||
BT_DRAGON_FUN = "Un Puñetero Dragón";
|
||||
BT_HERESIARCH_FUN = "Tío Rojo Muy Cabreado";
|
||||
BT_KORAX_FUN = "Korax el Bastardo Feo Asqueroso";
|
||||
BT_DEATHKINGS_FUN = "Un Refrito de Jefes muy Anticlimático";
|
||||
// eviternity
|
||||
BT_ARCHANGELUS = "Archangelus, Agente Celestial";
|
||||
BT_ARCHANGELUS_FUN = "Un Putísimo Ángel Enorme";
|
||||
|
|
|
|||
|
|
@ -340,6 +340,32 @@ SWWM_MISSION_HEXEN5 =
|
|||
"Gana esta batalla, \cfDemo-chan\c-. Una muy bonita recompensa te espera en casa, oh sí.\n"
|
||||
"\n"
|
||||
" — Saya";
|
||||
SWWM_MISSION_HEXDD1 =
|
||||
"Bueno, eso ha sido inesperado, y supongo que... bienvenida a OTRA misión extra, \cfDemolicionista\c-. Vale, todo esto ha pasado así de repente, y ya tomaré precauciones la próxima vez. En serio es que menudo puto susto me he llevado.\n"
|
||||
"\n"
|
||||
"A ver, yo tampoco tengo muy claro que coño acaba de hacer la bola esa. Tú y TAMBIÉN la bola habéis desaparecido así de repente. Ni puta de que hizo que pasara esto, pero es igual, al menos no acabaste borrada y, debo decirlo, eso es un alivio ENORME.\n"
|
||||
"\n"
|
||||
"Los datos de localización ponen que sigues en \cfCronos\c-, aunque el sitio este está... bastante lejos de los otros por los que has pasado. Esto me da mala espina, me recuerda demasiado a lo que pasó aquella vez cuando te cargaste al otro \cfJinete de Serpiente\c-, que algún capullo fue y te pilló para otro lado. Bueno, sea quien sea, encuéntralo y patéale el culo.\n"
|
||||
"\n"
|
||||
"Al tema, \cfDemo-chan\c-. ¡Dales duro!\n"
|
||||
"\n"
|
||||
" — Saya";
|
||||
SWWM_MISSION_HEXDD2 =
|
||||
"Buf, es que no se por donde empezar, el sitio este es un puto lío, pero al menos conseguí sacar un poco de info. Para empezar, estás en una especie de \"reino de los muertos\", donde mandan un puñado de tíos que se llaman \cfReyes de la Muerte\c-. Pues sí, suena fenomenal, lo sé. No sé yo si son los responsables de traerte aquí, pero si lo son, eso los convierte en nuestro objetivo.\n"
|
||||
"\n"
|
||||
"*suspiro*\n"
|
||||
"\n"
|
||||
"Estoy tan cansada ya, \cfDemo-chan\c-. Al menos ver como revientas en trocitos a todos los monstruos estos es entretenido.\n"
|
||||
"\n"
|
||||
" — Saya";
|
||||
SWWM_MISSION_HEXDD3 =
|
||||
"Mas vale que este sea el final de toda esta mierda, esta tal \cfCiudadela Oscura\c-. Si esos \cfReyes de la Muerte\c- andan por ahí, tal vez puedas reajustar sus cuerpos en forma de salsa boloñesa como castigo por secuestrarte.\n"
|
||||
"\n"
|
||||
"Sabes, es que hasta \cfKirin\c- está cabreado con todo esto ya, y normalmente no lo veo tan enfadado, a menos que sea con algún videojuego. Sí, esto se nos hace muy pesado ya, y puedo notar que tú tampoco estás muy entusiasmada.\n"
|
||||
"\n"
|
||||
"Bueno, \cfDemo-chan\c-, que toda esta ira que sentimos te de fuerzas para puto descoyuntar a esos hijos de perra. Nos quedaremos todos muy a gusto cuando se acabe el chollo.\n"
|
||||
"\n"
|
||||
" — Saya";
|
||||
SWWM_MISSION_NONE = "(no hay instrucciones de misión disponibles)";
|
||||
// edited cluster texts
|
||||
E1TEXT =
|
||||
|
|
@ -676,3 +702,74 @@ TXT_HEXEN_WIN3MSG =
|
|||
"subestimó, necio que es. Bien... ¿Será\n"
|
||||
"ahora mi turno? Entonces no me\n"
|
||||
"encontrará desprevenido.\"";
|
||||
TXT_HEXDD_CLUS1MSG =
|
||||
"Cansada, molesta... Toda esta aventura\n"
|
||||
"se hace más larga de lo que habías\n"
|
||||
"imaginado, y llegado este punto ya\n"
|
||||
"piensas hasta en jubilarte.\n"
|
||||
"\n"
|
||||
"Llega un mensaje de voz de Saya:\n"
|
||||
"\n"
|
||||
"\"Te traería de vuelta a casa, pero me\n"
|
||||
"siento vengativa. Quien te haya\n"
|
||||
"arrastrado aquí tiene que andar\n"
|
||||
"cerca, y quiero ver como sus rodillas\n"
|
||||
"explotan por esto. Me da que a ti\n"
|
||||
"también te apetecería eso.\"\n"
|
||||
"\n"
|
||||
"Vaya que sí...";
|
||||
TXT_HEXDD_CLUS2MSG =
|
||||
"Ya estás más que harta de todo este\n"
|
||||
"mundo, con sus insufribles\n"
|
||||
"\"rompecabezas\" y molestas hordas de\n"
|
||||
"monstruos que no paran de salir.\n"
|
||||
"\n"
|
||||
"Más adelante, por fin la ves, la\n"
|
||||
"Ciudadela Oscura. Tiene que ser aquí,\n"
|
||||
"donde está tu objetivo final: los tales\n"
|
||||
"Reyes de la Muerte. Habrán más\n"
|
||||
"enemigos acechando por el camino,\n"
|
||||
"pero eso no importa...\n"
|
||||
"\n"
|
||||
"Porque vas a enseñarles a todos lo\n"
|
||||
"que pasa cuando cabrean a un robot\n"
|
||||
"de combate armado hasta los dientes.";
|
||||
TXT_HEXDD_WIN1MSG =
|
||||
"Otra vez, aquí estás, de vuelta en la\n"
|
||||
"misma sala, con el mismo altar, vacío.\n"
|
||||
"\n"
|
||||
"Eso es, todo este tiempo llevabas\n"
|
||||
"encima ese orbe, la \"Esfera del Caos\".\n"
|
||||
"Al sacarlo, notas como vuelve a\n"
|
||||
"brillar con fuerza, como solía hacer\n"
|
||||
"antes de que lo sacaras de aquí.\n"
|
||||
"\n"
|
||||
"Este maldito trasto te ha causado\n"
|
||||
"demasiados problemas desde entonces.";
|
||||
TXT_HEXDD_WIN2MSG ="Tras volver a colocarlo en su altar,\n"
|
||||
"le clavas la mirada con desdén. La\n"
|
||||
"propia existencia de esta cosa...\n"
|
||||
"realmente te cabrea.\n"
|
||||
"\n"
|
||||
"Sacando un puñado de cargadores de\n"
|
||||
"Explodium, los vas pegando al orbe,\n"
|
||||
"cubriéndolo por completo. Si hay algo\n"
|
||||
"que puedes hacer para sentirte\n"
|
||||
"mejor, tiene que ser esto.";
|
||||
TXT_HEXDD_WIN3MSG ="Detonando todo con un estallido\n"
|
||||
"ensordecedor, toda la sala queda\n"
|
||||
"cubierta de humo y cristal roto. Y\n"
|
||||
"poco después, silencio...\n"
|
||||
" \n"
|
||||
" \n"
|
||||
" \n"
|
||||
"Sí, eso se siente de maravilla.\n"
|
||||
" \n"
|
||||
"A tomar por culo el orbe.";
|
||||
TXT_HEXDD_WIN4MSG =
|
||||
"\"Esta máquina... este instrumento\n"
|
||||
"imparable de devastación... Ha\n"
|
||||
"despertado algo en mí, puedo sentirlo.\n"
|
||||
"Al fin, un oponente digno... Si ha de\n"
|
||||
"venir a por mí, entonces ciertamente\n"
|
||||
"nuestra batalla será legendaria.\"";
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
[default]
|
||||
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r263 \cu(Thu 11 Feb 00:43:27 CET 2021)\c-";
|
||||
SWWM_SHORTVER="\cw0.9.11b-pre r263 \cu(2021-02-11 00:43:27)\c-";
|
||||
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r264 \cu(Thu 11 Feb 23:25:16 CET 2021)\c-";
|
||||
SWWM_SHORTVER="\cw0.9.11b-pre r264 \cu(2021-02-11 23:25:16)\c-";
|
||||
|
|
|
|||
BIN
music/nomusic.ogg
Normal file
BIN
music/nomusic.ogg
Normal file
Binary file not shown.
|
|
@ -913,6 +913,7 @@ misc/heart sounds/KOKORO.ogg
|
|||
misc/achievement sounds/CTF6.ogg
|
||||
misc/wow sounds/WOW.ogg
|
||||
misc/achievement2 sounds/YAY.ogg
|
||||
misc/orbexplode sounds/ORBEXPLODE.ogg
|
||||
misc/gibber1 sounds/general/Gib1.ogg
|
||||
misc/gibber2 sounds/general/Gib2.ogg
|
||||
misc/gibber3 sounds/general/Gib3.ogg
|
||||
|
|
|
|||
BIN
sounds/ORBEXPLODE.ogg
Normal file
BIN
sounds/ORBEXPLODE.ogg
Normal file
Binary file not shown.
51
zmapinfo.txt
51
zmapinfo.txt
|
|
@ -287,54 +287,3 @@ Intermission Doom2Cast
|
|||
}
|
||||
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 = 10, 120
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -308,11 +308,12 @@ Class SWWMHandler : EventHandler
|
|||
MAP_DMAP07,
|
||||
MAP_DMAP30,
|
||||
MAP_HMAP12,
|
||||
MAP_HMAP23_HMAP27,
|
||||
MAP_HMAP23_HMAP27_HMAP48_HMAP55,
|
||||
MAP_HMAP36,
|
||||
MAP_HMAP37,
|
||||
MAP_HMAP38,
|
||||
MAP_HMAP40,
|
||||
MAP_HMAP60,
|
||||
MAP_EVMAP30 // eviternity
|
||||
};
|
||||
|
||||
|
|
@ -350,8 +351,10 @@ Class SWWMHandler : EventHandler
|
|||
|| (mapsum ~== "91AD797F95CC4C6D6AE33B21F664C60B")
|
||||
|| (mapsum ~== "188B1B4244BD8DA501D8532696EC8654")
|
||||
|| (mapsum ~== "5B29D0889DF09A8250D62FA09EB2B452")
|
||||
|| (mapsum ~== "D3C5FA777BA52264546E6569F167AF0D") )
|
||||
return MAP_HMAP23_HMAP27;
|
||||
|| (mapsum ~== "D3C5FA777BA52264546E6569F167AF0D")
|
||||
|| (mapsum ~== "15FC0991D975325556EFF71F241A4458")
|
||||
|| (mapsum ~== "2FAD54B58487884F06EAFA507B553921") )
|
||||
return MAP_HMAP23_HMAP27_HMAP48_HMAP55;
|
||||
if ( (mapsum ~== "4444C95C2029DA6EECAC92DAA31CE665")
|
||||
|| (mapsum ~== "33752742BCA8E539A6EE3E5D0FDA8744")
|
||||
|| (mapsum ~== "3FFAF2F624C1B4BB6F581DCF7B99CBA7") )
|
||||
|
|
@ -368,6 +371,8 @@ Class SWWMHandler : EventHandler
|
|||
|| (mapsum ~== "1C5DE5A921DEE405E98E7E09D9829387")
|
||||
|| (mapsum ~== "2A6C4235B942467D25FD50D5B313E67A") )
|
||||
return MAP_HMAP40;
|
||||
if ( mapsum ~== "B0ADDB295A3ACCE43978AAC91FB8C58A" )
|
||||
return MAP_HMAP60;
|
||||
if ( mapsum ~== "5C5E5C08AF3572F31CF27318679F2B4E" )
|
||||
return MAP_EVMAP30;
|
||||
return MAP_NONE;
|
||||
|
|
@ -2033,7 +2038,7 @@ Class SWWMHandler : EventHandler
|
|||
bosstag = "$BT_DRAGON";
|
||||
}
|
||||
}
|
||||
else if ( bossmap == MAP_HMAP23_HMAP27 )
|
||||
else if ( bossmap == MAP_HMAP23_HMAP27_HMAP48_HMAP55 )
|
||||
{
|
||||
if ( e.Thing is 'Heresiarch' )
|
||||
{
|
||||
|
|
@ -2053,6 +2058,17 @@ Class SWWMHandler : EventHandler
|
|||
bosstag = "$BT_KORAX";
|
||||
}
|
||||
}
|
||||
else if ( bossmap == MAP_HMAP60 )
|
||||
{
|
||||
if ( (e.Thing is 'FighterBoss') || (e.Thing is 'ClericBoss') || (e.Thing is 'MageBoss') )
|
||||
{
|
||||
bossactors.Push(e.Thing);
|
||||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 4;
|
||||
if ( trk ) trk.bBOSS = true;
|
||||
bosstag = "$BT_DEATHKINGS";
|
||||
initialized = true; // healthbar shows from the start
|
||||
}
|
||||
}
|
||||
else if ( bossmap == MAP_EVMAP30 )
|
||||
{
|
||||
if ( e.Thing.GetClassName() == "ArchangelusA" )
|
||||
|
|
@ -2320,7 +2336,7 @@ Class SWWMHandler : EventHandler
|
|||
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.Replacee.GetClassName() == 'TangoPistol') ) e.Replacement = SWWMUtility.PickSWWMSlot2();
|
||||
else if ( (e.Replacee is 'Shotgun') || (e.Replacee is 'CWeapStaff') || (e.Replacee.GetClassName() == 'TangoShotgun') ) e.Replacement = SWWMUtility.PickSWWMSlot3();
|
||||
else if ( (e.Replacee is 'Shotgun') || (e.Replacee is 'CWeapStaff') || (e.Replacee.GetClassName() == 'TangoShotgun') ) e.Replacement = SWWMUtility.IsDoomOne()?SWWMUtility.PickHereticSlot3():SWWMUtility.PickSWWMSlot3();
|
||||
else if ( (e.Replacee is 'SuperShotgun') || (e.Replacee is 'MWeapFrost') || (e.Replacee.GetClassName() == 'TangoSuperShotgun') ) e.Replacement = SWWMUtility.PickSWWMSlot4();
|
||||
else if ( (e.Replacee is 'Crossbow') || (e.Replacee.GetClassName() == 'TangoScrapGun') ) e.Replacement = SWWMUtility.PickHereticSlot3();
|
||||
else if ( (e.Replacee is 'Chaingun') || (e.Replacee is 'Blaster') || (e.Replacee is 'FWeaponPiece3') || (e.Replacee.GetClassName() == 'TangoAssaultRifle') || (e.Replacee.GetClassName() == 'TangoChaingun') ) e.Replacement = SWWMUtility.PickSWWMSlot5();
|
||||
|
|
|
|||
|
|
@ -145,6 +145,7 @@ Class DemolitionistMenu : GenericMenu
|
|||
hnd = SWWMHandler(EventHandler.Find("SWWMHandler"));
|
||||
// mission text
|
||||
bool nrftl = false;
|
||||
bool hexdd = false;
|
||||
if ( (gameinfo.gametype&GAME_Doom) && SWWMUtility.IsKnownMap() )
|
||||
{
|
||||
int clus = level.cluster;
|
||||
|
|
@ -214,7 +215,11 @@ Class DemolitionistMenu : GenericMenu
|
|||
}
|
||||
else if ( (gameinfo.gametype&GAME_Hexen) && SWWMUtility.IsKnownMap() )
|
||||
{
|
||||
missionstr = String.Format("$SWWM_MISSION_HEXEN%d",level.cluster);
|
||||
// detect deathkings in the most amazing way imaginable
|
||||
int mapnamenum = level.mapname.Mid(3).ToInt(10);
|
||||
if ( mapnamenum > 40 ) hexdd = true;
|
||||
String gstr = hexdd?"HEXDD":"HEXEN";
|
||||
missionstr = String.Format("$SWWM_MISSION_%s%d",gstr,level.cluster);
|
||||
if ( StringTable.Localize(missionstr) ~== missionstr.Mid(1) )
|
||||
missionstr = "$SWWM_MISSION_NONE";
|
||||
int csiz = stats.clustervisit.Size();
|
||||
|
|
@ -224,7 +229,7 @@ Class DemolitionistMenu : GenericMenu
|
|||
if ( (stats.clustervisit[i] == level.cluster) && !firstskip )
|
||||
continue;
|
||||
firstskip = true;
|
||||
String xstr = String.Format("$SWWM_MISSION_HEXEN%d",stats.clustervisit[i]);
|
||||
String xstr = String.Format("$SWWM_MISSION_%s%d",gstr,stats.clustervisit[i]);
|
||||
if ( StringTable.Localize(missionstr) ~== missionstr.Mid(1) )
|
||||
continue;
|
||||
missionbacklog.Push(xstr);
|
||||
|
|
@ -259,6 +264,13 @@ Class DemolitionistMenu : GenericMenu
|
|||
c_hour = 16;
|
||||
c_minute = 41;
|
||||
c_tz = "JST";
|
||||
if ( hexdd )
|
||||
{
|
||||
// deathkings happen the day after
|
||||
c_day = 25;
|
||||
c_hour = 10;
|
||||
c_minute = 28;
|
||||
}
|
||||
}
|
||||
else if ( gameinfo.gametype&GAME_Strife )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -456,3 +456,16 @@ Class SWWMGreenKeyGesture : SWWMKeyGesture {}
|
|||
Class SWWMBlueKeyGesture : SWWMKeyGesture {}
|
||||
Class SWWMYellowKeyGesture : SWWMKeyGesture {}
|
||||
Class SWWMRedKeyGesture : SWWMKeyGesture {}
|
||||
|
||||
// HEXDD thingy
|
||||
Class SWWMChaosSphere : Key
|
||||
{
|
||||
Default
|
||||
{
|
||||
Tag "$T_CHAOSSPHERE";
|
||||
Inventory.InterHubAmount 1; // don't strip, this thing is always kept
|
||||
+INVENTORY.UNDROPPABLE;
|
||||
+INVENTORY.UNTOSSABLE;
|
||||
+INVENTORY.UNCLEARABLE;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -380,6 +380,17 @@ Class Demolitionist : PlayerPawn
|
|||
eg.chambered = true;
|
||||
DualExplodiumGun(eg.SisterWeapon).chambered = true;
|
||||
player.ReadyWeapon = player.PendingWeapon = eg;
|
||||
// in hexdd, we start with the chaos sphere in our grasp
|
||||
if ( SWWMUtility.IsVanillaHexenMap() )
|
||||
{
|
||||
// this really is a dumb way to detect the expansion
|
||||
int mapnamenum = level.mapname.Mid(3).ToInt(10);
|
||||
if ( mapnamenum > 40 )
|
||||
{
|
||||
let cs = Inventory(Spawn('SWWMChaosSphere'));
|
||||
cs.AttachToOwner(self);
|
||||
}
|
||||
}
|
||||
bInDefaultInventory = false;
|
||||
}
|
||||
override void ClearInventory()
|
||||
|
|
@ -2016,7 +2027,7 @@ Class Demolitionist : PlayerPawn
|
|||
if ( (item is 'Weapon') && !(item is 'SWWMGesture') && !(item is 'SWWMItemGesture') && mystats && !mystats.GotWeapon(Weapon(item).GetClass()) && CheckLocalView() )
|
||||
SWWMHandler.AddOneliner("getweapon",2);
|
||||
}
|
||||
if ( (item is 'Key') && !key_reentrant && !deathmatch )
|
||||
if ( (item is 'Key') && !key_reentrant && !deathmatch && !bInDefaultInventory )
|
||||
{
|
||||
// score
|
||||
int score = 100;
|
||||
|
|
|
|||
|
|
@ -263,7 +263,7 @@ Class GhostPower : PowerInvisibility
|
|||
Powerup.Duration -60;
|
||||
Powerup.Strength 100;
|
||||
Powerup.Mode "Translucent";
|
||||
Powerup.Color "F0E0FF", 0.1;
|
||||
Powerup.Color "F0 E0 FF", 0.1;
|
||||
+INVENTORY.ADDITIVETIME;
|
||||
}
|
||||
|
||||
|
|
@ -640,7 +640,7 @@ Class InvinciballPower : Powerup
|
|||
{
|
||||
Powerup.Duration -30;
|
||||
Inventory.Icon "graphics/HUD/Icons/I_Invinciball.png";
|
||||
Powerup.Color "FF3000", 0.1;
|
||||
Powerup.Color "FF 30 00", 0.1;
|
||||
+INVENTORY.ADDITIVETIME;
|
||||
}
|
||||
|
||||
|
|
@ -879,7 +879,7 @@ Class RagekitPower : Powerup
|
|||
{
|
||||
Powerup.Duration -30;
|
||||
Inventory.Icon "graphics/HUD/Icons/I_Ragekit.png";
|
||||
Powerup.Color "FF0000", 0.2;
|
||||
Powerup.Color "FF 00 00", 0.2;
|
||||
+INVENTORY.ADDITIVETIME;
|
||||
}
|
||||
|
||||
|
|
@ -1854,7 +1854,7 @@ Class BarrierPower : PowerIronFeet
|
|||
{
|
||||
Inventory.Icon "graphics/HUD/Icons/I_Barrier.png";
|
||||
Powerup.Duration -60;
|
||||
Powerup.Color "20FF00", 0.1;
|
||||
Powerup.Color "20 FF 00", 0.1;
|
||||
Powerup.Mode "Full"; // no leaky damage
|
||||
+INVENTORY.ADDITIVETIME;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1120,6 +1120,7 @@ Class SWWMUtility
|
|||
|| (csum ~== "3417A4859C8FECE797C9DAA715D14D63")
|
||||
|| (csum ~== "38028DC7E09DC5C91068AAC565A3962B") )
|
||||
return true;
|
||||
// no TNT / Plutonia (non-canon Demolitionist appearance)
|
||||
return false;
|
||||
}
|
||||
static bool IsVanillaHereticMap()
|
||||
|
|
@ -1278,9 +1279,35 @@ Class SWWMUtility
|
|||
|| (csum ~== "78979A583B1E30D94C9DAE2BCFA9A18D")
|
||||
|| (csum ~== "112599C94EB03328D217233D4CB65A70")
|
||||
|| (csum ~== "7729174BAA658C8FD86CF8290422F512")
|
||||
|| (csum ~== "33752742BCA8E539A6EE3E5D0FDA8744") )
|
||||
|| (csum ~== "33752742BCA8E539A6EE3E5D0FDA8744")
|
||||
// Deathkings
|
||||
|| (csum ~== "0C7B62B11C7970DAAF66F9084C8E408E")
|
||||
|| (csum ~== "A5F820CB016DE3D9A402C0173E7F9998")
|
||||
|| (csum ~== "B0ADDB295A3ACCE43978AAC91FB8C58A")
|
||||
|| (csum ~== "B295A2FBB187A1DC8AEFDE825DFB084A")
|
||||
|| (csum ~== "B77D810C972976C54A694C62361FFF9D")
|
||||
|| (csum ~== "C35E3C2727CCD7EF7793230AEF6255E7")
|
||||
|| (csum ~== "C35F7CB2E9F93BB331FFCEB6622ABD64")
|
||||
|| (csum ~== "CA7825F84BC08E76C6C85A41AEFE4370")
|
||||
|| (csum ~== "CB0334184147FF565F6EF437F316B3EB")
|
||||
|| (csum ~== "E2B5D1400279335811C1C1C0B437D9C8")
|
||||
|| (csum ~== "E3EFB0156A20ADF2DF00915A0EA85DF5")
|
||||
|| (csum ~== "2FAD54B58487884F06EAFA507B553921")
|
||||
|| (csum ~== "3BB1724A4B66E85E2431110E4D7C4B76")
|
||||
|| (csum ~== "6C886A3E37410C6FC83ED87BB6E9864F")
|
||||
|| (csum ~== "6FAFFEAAE301FD341169A3CC63CBE183")
|
||||
|| (csum ~== "7C28FD1ED662667FC54CDA123CF0614A")
|
||||
|| (csum ~== "7DC65D5029DD834481CD716B3D71388A")
|
||||
|| (csum ~== "11A83AAE9F747E1BA649F52D6C2DDB3A")
|
||||
|| (csum ~== "15FC0991D975325556EFF71F241A4458")
|
||||
|| (csum ~== "56D7CFFF0440328ADB20521ED70C739A")
|
||||
|| (csum ~== "90B4951F996BA30096F2D4238EEC39CA")
|
||||
|| (csum ~== "2945EDC2A9D7222AE54F0C68E1EA79FC")
|
||||
|| (csum ~== "4482A52290F42C50D6F80A0D4751A0E4")
|
||||
|| (csum ~== "4945FC07392AF9D2F1FABDD471C691A5")
|
||||
|| (csum ~== "7721B620EA970DF48FF4A18489822F6C")
|
||||
|| (csum ~== "0487193FFC57884EDB053F3E9148C534") )
|
||||
return true;
|
||||
// no deathkings (yet)
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -1343,6 +1370,17 @@ Class SWWMUtility
|
|||
p.health = p.mo.Health = p.mo.SpawnHealth();
|
||||
}
|
||||
|
||||
// checks if we're playing in doom 1
|
||||
// this is used so we can sometimes replace the shotgun with a SSG slot weapon
|
||||
static bool IsDoomOne()
|
||||
{
|
||||
if ( !(gameinfo.GameType&GAME_DOOM) ) return false;
|
||||
// is the map in ExMx format? Then it's likely we're playing a doom 1 map
|
||||
if ( (level.mapname.Length() >= 4) && (level.mapname.Mid(0,1) == "E") && (level.mapname.ByteAt(1) >= 0x30) && (level.mapname.ByteAt(1) < 0x40) && (level.mapname.Mid(2,1) == "M") && (level.mapname.ByteAt(3) >= 0x30) && (level.mapname.ByteAt(3) < 0x40) )
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
// check that all players can get enough of this if needed
|
||||
// multi: check for multiple copies, not just single instances
|
||||
// (useful e.g. for dual wieldable weapons)
|
||||
|
|
@ -1438,7 +1476,7 @@ Class SWWMUtility
|
|||
//return PickPair(PickSWWMSlot9(),PickSWWMSlot0(),2);
|
||||
return PickPair('CandyGun','Ynykron',2);
|
||||
}
|
||||
static Class<Inventory> PickHereticSlot3()
|
||||
static Class<Inventory> PickHereticSlot3() // also used for Doom 1
|
||||
{
|
||||
//return PickPair(PickSWWMSlot3(),PickSWWMSlot4(),2);
|
||||
return PickPair('Spreadgun','Wallbuster',2);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue