Eviternity compatibility (sort of).
More compatible cosmetic bossbrain. Some fixups.
This commit is contained in:
parent
5d51b18c3f
commit
9fcbb16267
17 changed files with 450 additions and 37 deletions
|
|
@ -20,6 +20,7 @@ This is just a bit of *"future planning"* for stuff that I ***might*** add after
|
|||
- **[Heretic]** Doomguy Action Figure *("Oh, he gets one too?")*
|
||||
- **[Hexen]** Obelisk of the Golden Vale *("I puked out my guts when I touched that fucking thing")*
|
||||
* ***(Maybe)* Fake livestream chat overlay, with dynamic reactions to all sorts of stuff**
|
||||
* **Visible legs in first person**
|
||||
* **DLC Gameset:**
|
||||
- Tetris
|
||||
- Pong
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// player
|
||||
// main mod cvars
|
||||
user string swwm_voicetype = "default"; // voice for your demolitionist
|
||||
//user color swwm_tagcolor = "40 FF 00"; // color of your model tags, not available due to engine dickery
|
||||
user float swwm_flashstrength = 1.0; // strength of screen flashes
|
||||
|
|
@ -89,7 +89,8 @@ user bool swwm_camhud = false; // keep full hud visible when operating cameras
|
|||
user bool swwm_rageshader = false; // alternate ragekit shader for people with photosensitivity
|
||||
server bool swwm_uncapalert = false; // all noise alerts have infinite range
|
||||
user int swwm_damagetarget = 0; // conditional healthbar hiding (1 - hide until damage is first taken, 2 - hide if at full health)
|
||||
server noarchive bool swwm_iseriouslywanttoplaythiswithbd = false; //self-explanatory
|
||||
|
||||
server noarchive bool swwm_iseriouslywanttoplaythiswithbd = false; // self-explanatory
|
||||
|
||||
// cross-session achievement cvars (0: locked, 1: unlocked, 2: notified)
|
||||
nosave int swwm_achievement_gcsandwich = 0;
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ HardwareShader Texture "graphics/M_SWWM.png"
|
|||
Shader "shaders/glsl/LogoAnimated.fp"
|
||||
Texture "LogoTex" "graphics/M_SWWM_Layers.png"
|
||||
}
|
||||
HardwareShader Sprite "BBRNB0"
|
||||
HardwareShader Sprite "MBRNB0"
|
||||
{
|
||||
Shader "shaders/glsl/Whew.fp"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -685,6 +685,19 @@ FN_BOSSBRAIN_FUN = "YOU WERE EXPECTING JOHN ROMERO BUT IT WAS ME, MARISA!";
|
|||
FN_KEEN = "Commander Keen";
|
||||
FN_KEEN_FUN = "Ruined by Bethesda";
|
||||
FN_VOODOO = "Voodoo doll of %s";
|
||||
FN_PIG = "Pig";
|
||||
FN_PIG_FUN = "Porker";
|
||||
// eviternity tags
|
||||
FN_ANGEL = "Archangelus";
|
||||
FN_ANGEL_FUN = "Motherfucking Angel";
|
||||
FN_ASTRAL = "Astral Cacodemon";
|
||||
FN_ASTRAL_FUN = "Gray Boy";
|
||||
FN_FCAPTAIN = "Former Captain";
|
||||
FN_FCAPTAIN_FUN = "Annoying Green Schmuck";
|
||||
FN_ANNIHIL = "Annihilator";
|
||||
FN_ANNIHIL_FUN = "Gray Goat";
|
||||
FN_NDEMON = "Nightmare Demon";
|
||||
FN_NDEMON_FUN = "Greenie";
|
||||
// obituaries
|
||||
O_PUSHER = "%k opened some air holes into %o.";
|
||||
O_DEEPIMPACT = "%o was impacted deeply by %k.";
|
||||
|
|
@ -714,6 +727,7 @@ O_PUNTZERBETA = "%k drilled a hole through %o.";
|
|||
O_PUNTZERGAMMA = "%k drilled several holes through %o.";
|
||||
O_SHEENHMG = "%k drowned %o in bullets.";
|
||||
O_QUADRAVOL = "%k made delicious barbecue out of %o.";
|
||||
O_QUADRAVOL2 = "%o was gravely roasted by %k.";
|
||||
O_BLACKFIRE = "%k turned %o into a popsicle.";
|
||||
O_BLACKFIRE2 = "%o was very coldly impaled by %k.";
|
||||
O_EMPCARBINE = "%o was quite shocked by %k's lightning powers.";
|
||||
|
|
@ -817,6 +831,14 @@ OB_FBOSS = "%o was green'd by the fighty boi's Lame Sword.";
|
|||
OB_MBOSS = "%o was assploded by the magic boi's Explodey Staff.";
|
||||
OB_CBOSS = "%o was ghosted by the holy boi's Ghostpenis.";
|
||||
OB_HERESIARCH = "%o saw that coming.";
|
||||
DEFOB_PIG = "%o angered the hams."; // gzdoom will look this up since it has no obituary assigned
|
||||
// eviternity obituaries
|
||||
OB_FCAPTAIN = "%o was zapped by an angry green lad.";
|
||||
OB_ANNIHIL = "%o ate cybergoat rocket.";
|
||||
OB_NDEMON = "%o got scronched.";
|
||||
OB_ANGEL1 = "%o pissed off that angel.";
|
||||
OB_ANGEL2 = "%o really pissed off that angel.";
|
||||
OB_ASTRAL = "%o got scorched by a gray ball friend.";
|
||||
// misc
|
||||
D_BLASTSUIT = "The Blast Suit broke down.";
|
||||
D_GHOSTARTI = "The Ghost Artifact ran out of energy.";
|
||||
|
|
@ -884,6 +906,9 @@ 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";
|
||||
// eviternity
|
||||
BT_ARCHANGELUS = "Archangelus, Celestial Agent";
|
||||
BT_ARCHANGELUS_FUN = "Big Fucking Angel Dude";
|
||||
// targetter
|
||||
SWWM_OVERKILL = "Overkill";
|
||||
SWWM_MULTIKILL = "Multi Kill";
|
||||
|
|
@ -894,7 +919,7 @@ SWWM_NEXIT = "Exit";
|
|||
SWWM_SEXIT = "Secret Exit";
|
||||
SWWM_LEG = "Legendary ";
|
||||
SWWM_LEGPREFIX = "L";
|
||||
SWWM_LTFORM = "\cfLegendary %s\cf has transformed!";
|
||||
SWWM_LTFORM = "\cfLegendary %s\cf has transformed!\c-";
|
||||
SWWM_SHAMEFUL = "Humiliation";
|
||||
SWWM_BUTTSLAM = "Buttslam";
|
||||
SWWM_LOVED = "L\cg♥\c-VE";
|
||||
|
|
@ -990,7 +1015,7 @@ SWWM_INTERTIP77 = "AAA gaming is rotten to the core. Support small developers wh
|
|||
SWWM_INTERTIP78 = "Xenia > Tux\n\nBring back the cool Linux fox girl. Penguins suck.";
|
||||
SWWM_INTERTIP79 = "The only good nazi is a dead nazi.";
|
||||
SWWM_INTERTIP80 = "Ceci n'est pas un conseil.";
|
||||
SWWM_INTERTIP81 = "Age only affects appearance, and has no bearing on ability. Gender has no bearing on ability. Everyone has imperfections, prejudice births malcontents, become a dark spirit.\n\nTime for crab.";
|
||||
SWWM_INTERTIP81 = "Age only affects appearance, and has no bearing on ability. Gender has no bearing on ability. Everyone has imperfections, prejudice births malcontents, become a dark spirit.\nTime for crab.";
|
||||
SWWM_INTERTIP82 = "\"IF THE ZOO BANS ME FOR HOLLERING AT THE ANIMALS I WILL FACE GOD AND WALK BACKWARDS INTO HELL\" — dril";
|
||||
SWWM_INTERTIP83 = "SWWM GZ is truly Some Weird Weapons Mod for GZDoom.";
|
||||
SWWM_INTERTIP84 = "\"In its vastness, the universe is no more than a mere grain of sand when compared to the limitless bounds of one's imagination.\" — Zanaveth Nekuraku III";
|
||||
|
|
|
|||
|
|
@ -398,6 +398,20 @@ SWWM_MISSION_DOOM =
|
|||
"You are our last hope, so fight, \cfDemo-chan\c-, fight for those you want to protect, for all of us... Make those bastards pay.\n"
|
||||
"\n"
|
||||
"Saya out.";
|
||||
SWWM_MISSION_EVITERNITY =
|
||||
"Welcome to this side mission, \cfDemolitionist\c-. So shit has hit the fan once again, after we thought all got fixed up, and guess WHO is behind it: The motherfucking \cfUAC\c-!\n"
|
||||
"\n"
|
||||
"So I go into twitter this morning, yeah, and the whole timeline is fucking blasting at hyperspeed with people talking to \cfCytho-sama\c-, I go check what he's written and color me surprised, the fucking demons are so asshurt they've gone and formed an alliance with the \"angels\"! Yeah, those people, the \cfXevetha\c-, you know, from the times of the \cfSUSAN\c- AI, and their involvements with \cfImanaki Corp\c-, and the UAC stealing their tech and dismantling the bigass thing after it went boom... Yeah, I know it's a long story, but that's what the \cfLibrary\c- is for, if you want to get informed.\n"
|
||||
"\n"
|
||||
"Anyway, on with the objectives. You're getting your shiny metal butt sent to \cfKereshnovka\c-, or at least, somewhere around it. Those idiots have a sort of base set up there already with fancy castles and whatnot, and you're gonna break in and tear it apart. Somewhere in there you should find a portal to an UAC base on \cfUrkai\c-, yes, THEIR world. Those fucks had this well-hidden, oh sure. And they got their asses betrayed for it, as expected. Can't trust those fake-ass angels, huh...\n"
|
||||
"\n"
|
||||
"From there on, just keep tracing back until you get to the mastermind behind it all, and kick their ass. Like with that big demon, the others will follow if you take them out, for sure. This is going to be a very interesting mission, gonna be glued to the screen watching you explode some knees in there.\n"
|
||||
"\n"
|
||||
"As per usual, nerdboy will yeet supplies all over the place for you to find. You can't even begin to understand how much he annoys me with all that videogamey crap, seriously. I would very much prefer to send you in there guns blazing with your whole arsenal, but that's \"not standard protocol\" he says. Fucking hell...\n"
|
||||
"\n"
|
||||
"Whatever, go forth and kick ass, \cfDemo-chan\c-!\n"
|
||||
"\n"
|
||||
"Saya out.";
|
||||
SWWM_MISSION_HERETIC =
|
||||
"Welcome to your second mission, \cfDemolitionist\c-. While things have calmed down over here, we've been able to resume our work on the \cfAkari Project\c-. You know, the important one I've wanted to work on all my life. So far it's been a success, and you'll be the first to take part in the exploration of other worlds. We've scoured the multiverse for all sorts of interesting places, and this one in particular caught our eye. It is called \cfParthoris\c-, it's a realm of magic and elves and stuff, I dig it. Anyway, I hope the ride wasn't too bumpy, we haven't fine-tuned that yet.\n"
|
||||
"\n"
|
||||
|
|
@ -452,6 +466,14 @@ SWWM_HELP_STORYDOOM =
|
|||
"That's where you come in, \cfDemolitionist\c-. You are the crowning achievement of \cfAkari Labs\c-, the culmination of weeks of hasty planning and thorough training, but you're still good. You can do this, you can kick demon ass like there's no tomorrow, and send those bastards back to \cfHell\c- where they belong.\n"
|
||||
"\n"
|
||||
"So go, \cfDemolitionist\c-, show them all what you're capable of.\n";
|
||||
SWWM_HELP_STORYEVITERNITY =
|
||||
"The year is uncertain. Sometime after the success of the \cfDemolitionist\c- in defeating the invading demonic forces on \cfEarth\c-, a new danger has arisen. Dreadful news come from mankind's only reliable contact in \cfHell\c-, \cfArchduke Cytho Valathor\c-:\n"
|
||||
"\n"
|
||||
"\cf\"Through stolen UAC technology, the Demons have come into contact with the Xevetha race, and plan on forming an alliance, a union of hellish and celestial strength, to take the fight back to Earth once more.\"\c-\n"
|
||||
"\n"
|
||||
"The \cfXevetha\c-, self-proclaimed divine beings, a mockery of angels and gods that they are, they've been here before, their plans of conquest and destruction foiled before in 2097. It was clear that no good would come from the \cfUAC\c- tampering with their technology, and now once again someone has to clean up the mess they've made. That someone, as expected, is the \cfUAC\c-'s own prized errand boy.\n"
|
||||
"\n"
|
||||
"\cfSaya\c- as usual is not too happy with this. It's time for you to win this race once again, and you will face angels, gods, or whatever to get the job done.";
|
||||
SWWM_HELP_STORYHERETIC =
|
||||
"It is the year 2171. It's been decades since the \cfHell\c- invasion had happened, and things have calmed down. However, something's brewing at \cfAkari Labs\c-.\n"
|
||||
"\n"
|
||||
|
|
|
|||
|
|
@ -1,4 +1,14 @@
|
|||
[default]
|
||||
// Strife mission texts
|
||||
TXT_FINDHELP =
|
||||
"Well, \cfDemo-chan\c-, this is a problem. You clearly drew too much attention, a random robot just popping up out of nowhere, armed and ready for combat. No wonder the cops jumped on your shiny metal ass right away.\n"
|
||||
"\n"
|
||||
"Y'know, I don't think these guys really pulled you in here for questioning, so... maybe it's time to \"act in self-defense\", don't you think?\n"
|
||||
"\n"
|
||||
"Anyway, after you beat 'em up, head back out and look for some way to contact the resistance forces in here, this \cf\"Front\"\c-. Just try not to draw any more unwanted attention.\n"
|
||||
"\n"
|
||||
"By the way, this place is full of civilians, so you better watch your fire, alright? We don't want any unnecessary deaths in here, no sir.\n"
|
||||
"\n"
|
||||
"Saya out.";
|
||||
// Strife dialogue texts
|
||||
// Strife actor tags
|
||||
|
|
|
|||
|
|
@ -634,6 +634,18 @@ FN_HERESIARCH_FUN = "Hostia Puta";
|
|||
FN_BOSSBRAIN_FUN = "¡ESPERABAS A JOHN ROMERO PERO ERA YO, MARISA!";
|
||||
FN_KEEN_FUN = "Arruinado por Bethesda";
|
||||
FN_VOODOO = "Muñeco Vudú de %s";
|
||||
FN_PIG = "Cerdo";
|
||||
FN_PIG_FUN = "Cochinillo";
|
||||
// eviternity tags
|
||||
FN_ANGEL_FUN = "Un Puto Ángel";
|
||||
FN_ASTRAL = "Cacodemonio Astral";
|
||||
FN_ASTRAL_FUN = "Bolita Gris";
|
||||
FN_FCAPTAIN = "Capitan Zombi";
|
||||
FN_FCAPTAIN_FUN = "Capullo Verde Tocanarices";
|
||||
FN_ANNIHIL = "Aniquilador";
|
||||
FN_ANNIHIL_FUN = "Cabra Gris";
|
||||
FN_NDEMON = "Demonio de Pesadilla";
|
||||
FN_NDEMON_FUN = "Verdín";
|
||||
// obituaries
|
||||
O_PUSHER = "%k le abrió unos agujeros de ventilación a %o.";
|
||||
O_DEEPIMPACT = "%o fue impactad@[ao_esp] profundamente por %k.";
|
||||
|
|
@ -663,6 +675,7 @@ O_PUNTZERBETA = "%k taladró un agujero a través de%o.";
|
|||
O_PUNTZERGAMMA = "%k taladró varios agujeros a través de %o.";
|
||||
O_SHEENHMG = "%k ahogó a %o en balas.";
|
||||
O_QUADRAVOL = "%k hizo deliciosa barbacoa de %o.";
|
||||
O_QUADRAVOL2 = "%o fue ensartad@[ao_esp] por %k.";
|
||||
O_BLACKFIRE = "%k convirtió a %o en un helado.";
|
||||
O_BLACKFIRE2 = "%o fue empalado muy fríamente por %k.";
|
||||
O_EMPCARBINE = "%o quedó en shock tras presenciar los poderes de rayo de %k.";
|
||||
|
|
@ -766,6 +779,14 @@ OB_FBOSS = "%o fue verdeado por la espada esa del tío ciclao.";
|
|||
OB_MBOSS = "%o fue reventado por la varita explosiva esa del tío mágico.";
|
||||
OB_CBOSS = "%o fue fantasmado por la verga fantasma del tío santurrón.";
|
||||
OB_HERESIARCH = "%o lo vio venir.";
|
||||
DEFOB_PIG = "%o enfureció a los jamones."; // gzdoom will look this up since it has no obituary assigned
|
||||
// eviternity obituaries
|
||||
OB_FCAPTAIN = "%o fue chispad@[ao_esp] por un tío verde cabreado.";
|
||||
OB_ANNIHIL = "%o comió cohete de cibercabra.";
|
||||
OB_NDEMON = "%o fue estronchad@[ao_esp].";
|
||||
OB_ANGEL1 = "%o cabreó a ese ángel.";
|
||||
OB_ANGEL2 = "%o cabreó mucho a ese ángel.";
|
||||
OB_ASTRAL = "%o fue escaldad@[ao_esp] por una amigable bola gris.";
|
||||
// misc
|
||||
D_BLASTSUIT = "El Chaleco Antiexplosivos se ha roto.";
|
||||
D_GHOSTARTI = "El Artefacto Fantasma se ha agotado.";
|
||||
|
|
@ -824,6 +845,9 @@ 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";
|
||||
// eviternity
|
||||
BT_ARCHANGELUS = "Archangelus, Agente Celestial";
|
||||
BT_ARCHANGELUS_FUN = "Un Putísimo Ángel Enorme";
|
||||
// targetter
|
||||
SWWM_MULTIKILL = "Racha";
|
||||
SWWM_SPREEKILL = "Intocable";
|
||||
|
|
@ -833,7 +857,7 @@ SWWM_NEXIT = "Salida";
|
|||
SWWM_SEXIT = "Salida Secreta";
|
||||
SWWM_LEG = " Legendario";
|
||||
SWWM_LEGPREFIX = "R";
|
||||
SWWM_LTFORM = "\cf¡%s\cf Legendario se ha transformado!";
|
||||
SWWM_LTFORM = "\cf¡%s\cf Legendario se ha transformado!\c-";
|
||||
SWWM_SHAMEFUL = "Humillación";
|
||||
SWWM_BUTTSLAM = "Culazo";
|
||||
// score messages
|
||||
|
|
@ -923,7 +947,7 @@ SWWM_INTERTIP76 = "Te he enseñado mi consejo de intermisión contesta pls.";
|
|||
SWWM_INTERTIP77 = "El gaming AAA está podrido hasta la médula. Apoya a los pequeños desarrolladores siempre que puedas.";
|
||||
SWWM_INTERTIP78 = "Xenia > Tux\n\nDevolvednos a la chica zorro molona de Linux. Los pingüinos apestan.";
|
||||
SWWM_INTERTIP79 = "El único nazi bueno es un nazi muerto.";
|
||||
SWWM_INTERTIP81 = "La edad solo afecta a la apariencia, y no tiene relación a la habilidad. El género no tiene relación a la habilidad. Todo el mundo tiene imperfecciones, los prejuicios traen consigo malcontentos, conviertete en un espíritu oscuro.\n\nHora de cangrejo.";
|
||||
SWWM_INTERTIP81 = "La edad solo afecta a la apariencia, y no tiene relación a la habilidad. El género no tiene relación a la habilidad. Todo el mundo tiene imperfecciones, los prejuicios traen consigo malcontentos, conviertete en un espíritu oscuro.\nHora de cangrejo.";
|
||||
SWWM_INTERTIP82 = "\"SI EL ZOO ME PROHIBE LA ENTRADA POR GRITAR A LOS ANIMALES HARÉ FRENTE A DIOS Y CAMINARÉ DE ESPALDAS AL INFIERNO\" — dril";
|
||||
SWWM_INTERTIP83 = "SWWM GZ es realmente Un Extraño Mod de Armas (Some Weird Weapons Mod) para GZDoom.";
|
||||
SWWM_INTERTIP84 = "\"En su inmensidad, el universo no es más que un mero grano de arena cuando se compara a los límites ilimitados de nuestra imaginación.\" — Zanaveth Nekuraku III";
|
||||
|
|
|
|||
|
|
@ -397,6 +397,20 @@ SWWM_MISSION_DOOM =
|
|||
"Eres nuestra última esperanza, así que lucha, \cfDemo-chan\c-, lucha por aquellos que quieres proteger, por todos nosotros... Haz que esos bastardos lo paguen.\n"
|
||||
"\n"
|
||||
" — Saya";
|
||||
SWWM_MISSION_EVITERNITY =
|
||||
"Bienvenida a esta misión extra, \cfDemolicionista\c-. Pues resulta que se ha liado parda otra vez, después de que pensáramos que estaba todo arreglado, y adivina QUIÉN está detrás: ¡la puta \cfUAC\c-!\n"
|
||||
"\n"
|
||||
"Pues resulta que me meto en twitter esta mañana, y está el mensajeo pasando a toda hostia con gente hablándole a \cfCytho-sama\c-, voy a mirar que ha escrito y mira tu por donde, ¡los putos demonios están tan cabreados que van y forman una alianza con los \"ángeles\"! Sí, esa gente, los \cfXevetha\c-, ya sabes, de aquellos tiempos de la IA \cfSUSAN\c-, y todo el embrollo con \cfImanaki Corp\c-, y la UAC robando su tecnología y desmantelando el cacharro enorme ese después de que se reventara... Pues sí, sé que es una historia larga, pero para eso está la \cfBiblioteca\c-, si quieres informarte.\n"
|
||||
"\n"
|
||||
"En fin, vamos con los objetivos. Van a mandar tu brillante trasero metálico a \cfKereshnovka\c-, o al menos, por ahí cerca. Esos idiotas tienen una especie de base ahí montada ya con sus castillitos y tal, y vas a meterte dentro y cargártelo todo. Por ahí deberías encontrar un portal a una base de la UAC en \cfUrkai\c-, sí, el mundo de ELLOS. Esos hijos de perra lo tenían todo bien escondido, vaya que sí. Y los jodieron pero bien por eso, como era de esperar. No se puede fiar uno de esos ángeles de pega, anda que...\n"
|
||||
"\n"
|
||||
"Desde ahí, tú sigue el rastro hasta que encuentres a quien esté a cargo de todo este tinglado, y patéale el culo. Igual que con el demonio grandote ese, los otros caerán también en cuanto te lo cargues, seguro. Esta va a ser una misión muy interesante, voy a estar pegada a la pantalla viendo como explotas rodillas por ahí.\n"
|
||||
"\n"
|
||||
"Y como siempre, el friki ese ha ciscado todos los suministros por ahí para que los encuentres. Es que no sabes lo que me incordia con toda esa mierda de hacerlo todo como en un videojuego. Preferiría mucho mandarte ahí a tope con todo tu arsenal, pero eso \"no es el protocolo estándar\" me suelta. Lo que hay que oír...\n"
|
||||
"\n"
|
||||
"Pues nada, ¡ve y patea traseros, \cfDemo-chan\c-!\n"
|
||||
"\n"
|
||||
" — Saya";
|
||||
SWWM_MISSION_HERETIC =
|
||||
"Bienvenida a tu segunda misión, \cfDemolicionista\c-. Mientras se calma un poco la cosa por aquí, hemos podido retomar nuestro trabajo en el \cfProyecto Akari\c-. Ya sabes, ese tan importante en el que quise trabajar toda la vida. Por ahora todo bien, todo correcto, y vas a ser la primera en tomar parte en la exploración de otros mundos. Hemos rebuscado por el multiverso para encontrar algunos sitios interesantes, y este en particular nos llamó la atención. Se llama \cfParthoris\c-, es un reino de magia y elfos y tal, me mola. Pues eso, espero que el viaje no haya sido muy movido, aún no hemos afinado esa parte.\n"
|
||||
"\n"
|
||||
|
|
@ -451,6 +465,14 @@ SWWM_HELP_STORYDOOM =
|
|||
"Y ahí es donde haces tu entrada, \cfDemolicionista\c-. Eres el mayor logro de \cfAkari Labs\c-, la culminación de semanas de planificación apurada y duro entrenamiento, pero eres lo mejor que hay. Puedes hacerlo, puedes patearles el trasero a esos demonios como si no hubiera un mañana, y mandar a esos bastardos de vuelta al \cfInfierno\c- donde tienen que estar.\n"
|
||||
"\n"
|
||||
"Así que ve, \cfDemolicionista\c-, enséñales a todos lo que eres capaz de hacer.";
|
||||
SWWM_HELP_STORYEVITERNITY =
|
||||
"El año es incierto. Algún tiempo después del éxito de la \cfDemolicionista\c- al derrotar las fuerzas demoníacas invasoras en la \cfTierra\c-, un nuevo peligro ha surgido. Vienen noticias terribles del único contacto fiable que la humanidad tiene en el \cfInfierno\c-, el \cfArchiduque Cytho Valathor\c-:\n"
|
||||
"\n"
|
||||
"\cf\"Usando tecnología robada de la UAC, los Demonios han tomado contacto con la raza de los Xevetha, y planean formar una alianza, una unión de fuerza infernal y celestial, para traer de nuevo su batalla a la Tierra.\"\c-\n"
|
||||
"\n"
|
||||
"Los \cfXevetha\c-, autoproclamados entes divinos, una parodia de ángeles y dioses que son, han estado aquí antes, con sus planes de conquista y destrucción habiendo sido frustrados en 2097. Estaba claro que nada bueno vendría de que la \cfUAC\c- metiese las manos en su tecnología, y ahora una vez más alguien tiene que limpiar este desastre que han hecho. Ese alguien, como es de esperar, es el preciado recadero de la \cfUAC\c-.\n"
|
||||
"\n"
|
||||
"A \cfSaya\c- como siempre no le gusta nada eso. Es hora de que vuelvas a ganar esta carrera, y te enfrentarás a ángeles, dioses, o lo que sea para terminar el trabajo.";
|
||||
SWWM_HELP_STORYHERETIC =
|
||||
"Estamos en el año 2171. Han pasado décadas desde que ocurrió la invasión del \cfInfierno\c-, y las cosas se han calmado. Sin embargo, algo se cuece dentro de \cfAkari Labs\c-.\n"
|
||||
"\n"
|
||||
|
|
|
|||
14
language.es_strife
Normal file
14
language.es_strife
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
[es]
|
||||
// Strife mission texts
|
||||
TXT_FINDHELP =
|
||||
"Bueno, \cfDemo-chan\c-, esto es un problema. Parece que acabas de llamar bastante la atención, un robot así de repente apareciendo de la nada, armado y listo para el combate. No me extraña que la pasma se haya echado encima de tu brillante trasero metálico así de repente.\n"
|
||||
"\n"
|
||||
"Sabes, no creo que estos tipos te hayan traído aquí para interrogarte, así que... a lo mejor es hora de \"actuar en defensa propia\", ¿no crees?\n"
|
||||
"\n"
|
||||
"En fin, en cuanto te los cargues, vuelve fuera y busca alguna forma de contactar con la resistencia de por aquí, ese tal \cf\"Frente\"\c-. Solo intenta no llamar más la atención.\n"
|
||||
"\n"
|
||||
"Por cierto, este sítio está lleno de civiles, así que cuidado al disparar, ¿vale? No queremos muertes innecesarias por aquí, desde luego.\n"
|
||||
"\n"
|
||||
" — Saya";
|
||||
// Strife dialogue texts
|
||||
// Strife actor tags
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
[default]
|
||||
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r645 \cu(Fri 27 Nov 17:18:05 CET 2020)";
|
||||
SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r646 \cu(Sat 28 Nov 22:03:01 CET 2020)";
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 5.6 KiB |
|
|
@ -144,6 +144,197 @@ Class SWWMDroppedKeen : Actor
|
|||
}
|
||||
}
|
||||
|
||||
Class SWWMBossBrainExpl : Actor
|
||||
{
|
||||
void A_Ignite()
|
||||
{
|
||||
A_QuakeEx(3,3,3,20,0,400,"",QF_RELATIVE|QF_SCALEDOWN,falloff:300,rollintensity:2.);
|
||||
A_StartSound("explodium/hit",CHAN_VOICE,CHANF_DEFAULT,.4,.5);
|
||||
Scale *= FRandom[ExploS](0.8,1.1);
|
||||
Scale.x *= RandomPick[ExploS](-1,1);
|
||||
Scale.y *= RandomPick[ExploS](-1,1);
|
||||
int numpt = Random[ExploS](8,16);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
Vector3 pvel = (FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)).unit()*FRandom[ExploS](1,6);
|
||||
let s = Spawn("SWWMSmoke",pos);
|
||||
s.vel = pvel;
|
||||
s.SetShade(Color(1,1,1)*Random[ExploS](64,224));
|
||||
s.special1 = Random[ExploS](1,4);
|
||||
s.scale *= 2.8;
|
||||
s.alpha *= .4;
|
||||
}
|
||||
numpt = Random[ExploS](5,10);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
Vector3 pvel = (FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)).unit()*FRandom[ExploS](2,12);
|
||||
let s = Spawn("SWWMSpark",pos);
|
||||
s.vel = pvel;
|
||||
}
|
||||
numpt = Random[ExploS](10,15);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
Vector3 pvel = (FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)).unit()*FRandom[ExploS](2,24);
|
||||
let s = Spawn("SWWMChip",pos);
|
||||
s.vel = pvel;
|
||||
}
|
||||
numpt = int(Random[ExploS](-1,2)+special1);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
let s = Spawn("SWWMBossBrainExplArm",pos);
|
||||
s.target = target;
|
||||
}
|
||||
}
|
||||
Default
|
||||
{
|
||||
RenderStyle "Add";
|
||||
Scale 2.5;
|
||||
Radius .1;
|
||||
Height 0.;
|
||||
+NOGRAVITY;
|
||||
+NOBLOCKMAP;
|
||||
+NOINTERACTION;
|
||||
+DONTSPLASH;
|
||||
+NOTELEPORT;
|
||||
+FORCEXYBILLBOARD;
|
||||
}
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
TNT1 A 10;
|
||||
TNT1 A 0 A_Ignite();
|
||||
XEX1 ABCDEFGHIJKLMNOPQRSTUVWXYZ[\] 1 Bright;
|
||||
Stop;
|
||||
}
|
||||
}
|
||||
Class SWWMBossBrainExplArm : Actor
|
||||
{
|
||||
Default
|
||||
{
|
||||
PROJECTILE;
|
||||
+THRUACTORS;
|
||||
+BOUNCEONWALLS;
|
||||
+BOUNCEONFLOORS;
|
||||
+BOUNCEONCEILINGS;
|
||||
-NOGRAVITY;
|
||||
Gravity 0.35;
|
||||
BounceFactor 1.0;
|
||||
Radius 4;
|
||||
Height 4;
|
||||
}
|
||||
override void PostBeginPlay()
|
||||
{
|
||||
Super.PostBeginPlay();
|
||||
reactiontime = Random[ExploS](10,15);
|
||||
double ang, pt;
|
||||
ang = FRandom[ExploS](0,360);
|
||||
pt = FRandom[ExploS](-90,90);
|
||||
vel = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt))*FRandom[ExploS](8.,20.);
|
||||
}
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
TNT1 A 1
|
||||
{
|
||||
A_CountDown();
|
||||
Spawn("ExplodiumMagTrail",pos);
|
||||
Vector3 pvel = (FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)).unit()*FRandom[ExploS](1,5);
|
||||
let s = Spawn("SWWMHalfSmoke",pos);
|
||||
s.vel = pvel+vel*.2;
|
||||
s.SetShade(Color(1,1,1)*Random[ExploS](64,224));
|
||||
s.special1 = Random[ExploS](1,3);
|
||||
s.scale *= 2.4;
|
||||
s.alpha *= 0.1+.4*(ReactionTime/15.);
|
||||
}
|
||||
Wait;
|
||||
}
|
||||
}
|
||||
Class SWWMBossBrainPain : Actor
|
||||
{
|
||||
Default
|
||||
{
|
||||
RenderStyle "Add";
|
||||
Radius .1;
|
||||
Height 0.;
|
||||
}
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
MBRN B 1 Bright A_FadeOut(.05);
|
||||
Wait;
|
||||
}
|
||||
}
|
||||
Class SWWMBossBrain : BossBrain
|
||||
{
|
||||
bool eyeless;
|
||||
int smallcooldown;
|
||||
|
||||
override void PostBeginPlay()
|
||||
{
|
||||
Super.PostBeginPlay();
|
||||
let ti = ThinkerIterator.Create("BossEye");
|
||||
if ( ti.Next() ) eyeless = false;
|
||||
else eyeless = true;
|
||||
}
|
||||
|
||||
void SpawnBrainExpl( bool death = false )
|
||||
{
|
||||
if ( death )
|
||||
{
|
||||
// big explosions throughout
|
||||
for ( int x=-350; x<=350; x+=5 )
|
||||
{
|
||||
let s = Spawn("SWWMBossBrainExpl",Vec2OffsetZ(x,-280,Random[BrainExplode](120,500)));
|
||||
s.tics = Random[BrainExplode](5,120);
|
||||
s.special1 = Random[BrainExplode](0,3);
|
||||
}
|
||||
return;
|
||||
}
|
||||
if ( level.maptime < smallcooldown ) return;
|
||||
smallcooldown = level.maptime+10;
|
||||
// small explosion on brain hole
|
||||
for ( int x=-40; x<=40; x+=10 )
|
||||
{
|
||||
let s = Spawn("SWWMBossBrainExpl",Vec2OffsetZ(x,-280,Random[BrainExplode](380,420)));
|
||||
s.tics = Random[BrainExplode](1,8);
|
||||
s.scale *= .5;
|
||||
}
|
||||
}
|
||||
|
||||
Default
|
||||
{
|
||||
Tag "$FN_BOSSBRAIN";
|
||||
Radius 20;
|
||||
Height 40;
|
||||
+NOBLOOD;
|
||||
}
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
MBRN A -1;
|
||||
Stop;
|
||||
Pain:
|
||||
MBRN A 10
|
||||
{
|
||||
A_StartSound("brain/pain",CHAN_VOICE,attenuation:ATTN_NONE);
|
||||
A_QuakeEx(3,3,3,15,0,65535,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.3);
|
||||
if ( !eyeless ) SpawnBrainExpl(false);
|
||||
Spawn("SWWMBossBrainPain",pos);
|
||||
}
|
||||
Goto Spawn;
|
||||
Death:
|
||||
MBRN A 120
|
||||
{
|
||||
A_StartSound("brain/death",CHAN_VOICE,attenuation:ATTN_NONE);
|
||||
A_QuakeEx(9,9,9,120,0,65535,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:1.);
|
||||
if ( !eyeless ) SpawnBrainExpl(true);
|
||||
Spawn("SWWMBossBrainPain",pos);
|
||||
}
|
||||
MBRN A -1 A_BrainDie();
|
||||
Stop;
|
||||
}
|
||||
}
|
||||
|
||||
// imitates UE1 light type LT_TexturePaletteOnce/LT_TexturePaletteLoop
|
||||
Class PaletteLight : PointLight
|
||||
{
|
||||
|
|
|
|||
|
|
@ -259,6 +259,7 @@ Class SWWMHandler : EventHandler
|
|||
MAP_HMAP37,
|
||||
MAP_HMAP38,
|
||||
MAP_HMAP40,
|
||||
MAP_EVMAP30 // eviternity
|
||||
};
|
||||
|
||||
private int WhichVanillaBossMap()
|
||||
|
|
@ -313,6 +314,8 @@ Class SWWMHandler : EventHandler
|
|||
|| (mapsum ~== "1C5DE5A921DEE405E98E7E09D9829387")
|
||||
|| (mapsum ~== "2A6C4235B942467D25FD50D5B313E67A") )
|
||||
return MAP_HMAP40;
|
||||
if ( mapsum ~== "5C5E5C08AF3572F31CF27318679F2B4E" )
|
||||
return MAP_EVMAP30;
|
||||
return MAP_NONE;
|
||||
}
|
||||
|
||||
|
|
@ -1455,6 +1458,9 @@ Class SWWMHandler : EventHandler
|
|||
// romero hax
|
||||
if ( (e.Thing is 'BossBrain') && (e.DamageType == 'Telefrag') )
|
||||
e.DamageSource.DamageMobj(null,null,Actor.TELEFRAG_DAMAGE,'EndLevel');
|
||||
// voodoo doll telefragging barrel hax (eviternity death exits)
|
||||
if ( (e.Thing is 'ExplosiveBarrel') && (e.DamageType == 'Telefrag') && e.DamageSource.player && (e.DamageSource.player.mo != e.DamageSource) )
|
||||
e.DamageSource.DamageMobj(null,null,Actor.TELEFRAG_DAMAGE,'EndLevel');
|
||||
if ( !e.Thing.player && !e.Thing.bIsMonster && !e.Thing.bCountKill && !(e.Thing is 'ScriptedMarine') ) return;
|
||||
DoKillScoring(e);
|
||||
}
|
||||
|
|
@ -1516,11 +1522,30 @@ Class SWWMHandler : EventHandler
|
|||
DoKeyTagFix(e.Thing);
|
||||
SWWMInterest.Spawn(thekey:Key(e.Thing));
|
||||
}
|
||||
else if ( e.Thing.GetClass() == 'BossBrain' )
|
||||
else if ( e.Thing.GetClass() == 'Pig' )
|
||||
e.Thing.SetTag("$FN_PIG"); // missing in gzdoom
|
||||
// eviternity stuff
|
||||
else if ( (e.Thing.GetClassName() == "Archangelus")
|
||||
|| (e.Thing.GetClassName() == "ArchangelusA")
|
||||
|| (e.Thing.GetClassName() == "ArchangelusB") )
|
||||
e.Thing.SetTag("$FN_ANGEL");
|
||||
else if ( e.Thing.GetClassName() == "AstralCaco" )
|
||||
e.Thing.SetTag("$FN_ASTRAL");
|
||||
else if ( e.Thing.GetClassName() == "Annihilator" )
|
||||
{
|
||||
e.Thing.SetTag("$FN_BOSSBRAIN");
|
||||
e.Thing.A_SetSize(20,40);
|
||||
e.Thing.bNOBLOOD = true;
|
||||
e.Thing.SetTag("$FN_ANNIHIL");
|
||||
// OH BOY, THESE AREN'T CHANGEABLE
|
||||
//e.Thing.Obituary = "$OB_ANNIHIL";
|
||||
}
|
||||
else if ( e.Thing.GetClassName() == "FormerCaptain" )
|
||||
{
|
||||
e.Thing.SetTag("$FN_FCAPTAIN");
|
||||
//e.Thing.Obituary = "$OB_FCAPTAIN";
|
||||
}
|
||||
else if ( e.Thing.GetClassName() == "NightmareDemon" )
|
||||
{
|
||||
e.Thing.SetTag("$FN_NDEMON");
|
||||
//e.Thing.Obituary = "$OB_NDEMON";
|
||||
}
|
||||
else if ( SWWMUtility.IdentifyingDog(e.Thing) || SWWMUtility.IdentifyingCaco(e.Thing)
|
||||
|| SWWMUtility.IdentifyingDrug(e.Thing) || SWWMUtility.IdentifyingDoubleBoi(e.Thing) )
|
||||
|
|
@ -1529,8 +1554,9 @@ Class SWWMHandler : EventHandler
|
|||
let hp = Actor.Spawn("HeadpatTracker",e.Thing.pos);
|
||||
hp.target = e.Thing;
|
||||
}
|
||||
SWWMCombatTracker trk;
|
||||
if ( !swwm_notrack && (e.Thing.bSHOOTABLE || e.Thing.bISMONSTER) && !(e.Thing is 'LampMoth') && !(e.Thing is 'CompanionLamp') )
|
||||
SWWMCombatTracker.Spawn(e.Thing);
|
||||
trk = SWWMCombatTracker.Spawn(e.Thing);
|
||||
if ( !(e.Thing is 'LampMoth') && (e.Thing.bSHOOTABLE || e.Thing.bISMONSTER || e.Thing.bCORPSE || (e.Thing is 'Inventory') || (e.Thing is 'CompanionLamp')) )
|
||||
{
|
||||
if ( (swwm_shadows == 2) || ((swwm_shadows == 1) && ((e.Thing is 'Demolitionist') || (e.Thing.SpawnState.sprite == e.Thing.GetSpriteIndex('XZW1')))) )
|
||||
|
|
@ -1569,6 +1595,7 @@ Class SWWMHandler : EventHandler
|
|||
{
|
||||
bossactors.Push(e.Thing);
|
||||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 3;
|
||||
if ( trk ) trk.maxhealth = trk.lasthealth = e.Thing.Health;
|
||||
}
|
||||
bosstag = "$BT_BRUISERS";
|
||||
}
|
||||
|
|
@ -1578,6 +1605,7 @@ Class SWWMHandler : EventHandler
|
|||
{
|
||||
bossactors.Push(e.Thing);
|
||||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 5;
|
||||
if ( trk ) trk.maxhealth = trk.lasthealth = e.Thing.Health;
|
||||
}
|
||||
bosstag = "$BT_CYBIE";
|
||||
}
|
||||
|
|
@ -1587,6 +1615,7 @@ Class SWWMHandler : EventHandler
|
|||
{
|
||||
bossactors.Push(e.Thing);
|
||||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 6;
|
||||
if ( trk ) trk.maxhealth = trk.lasthealth = e.Thing.Health;
|
||||
}
|
||||
bosstag = "$BT_SPIDER";
|
||||
}
|
||||
|
|
@ -1596,6 +1625,7 @@ Class SWWMHandler : EventHandler
|
|||
{
|
||||
bossactors.Push(e.Thing);
|
||||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 4;
|
||||
if ( trk ) trk.maxhealth = trk.lasthealth = e.Thing.Health;
|
||||
}
|
||||
bosstag = "$BT_SPIDER2";
|
||||
}
|
||||
|
|
@ -1604,8 +1634,8 @@ Class SWWMHandler : EventHandler
|
|||
if ( (e.Thing is 'Fatso') || (e.Thing is 'Arachnotron') )
|
||||
{
|
||||
bossactors.Push(e.Thing);
|
||||
if ( upgrademe )
|
||||
e.Thing.StartHealth = e.Thing.Health *= 2;
|
||||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 2;
|
||||
if ( trk ) trk.maxhealth = trk.lasthealth = e.Thing.Health;
|
||||
}
|
||||
bosstag = "$BT_DIMPLE";
|
||||
}
|
||||
|
|
@ -1616,6 +1646,7 @@ Class SWWMHandler : EventHandler
|
|||
bossbrainactor = e.Thing;
|
||||
bossactors.Push(e.Thing);
|
||||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 40; // goodbye, instakills
|
||||
if ( trk ) trk.maxhealth = trk.lasthealth = e.Thing.Health;
|
||||
}
|
||||
if ( e.Thing is 'BossEye' )
|
||||
bossviewactor = e.Thing;
|
||||
|
|
@ -1627,6 +1658,7 @@ Class SWWMHandler : EventHandler
|
|||
{
|
||||
bossactors.Push(e.Thing);
|
||||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 4;
|
||||
if ( trk ) trk.maxhealth = trk.lasthealth = e.Thing.Health;
|
||||
}
|
||||
bosstag = "$BT_LICHES";
|
||||
}
|
||||
|
|
@ -1636,6 +1668,7 @@ Class SWWMHandler : EventHandler
|
|||
{
|
||||
bossactors.Push(e.Thing);
|
||||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 3;
|
||||
if ( trk ) trk.maxhealth = trk.lasthealth = e.Thing.Health;
|
||||
}
|
||||
bosstag = "$BT_MINOTAUR";
|
||||
}
|
||||
|
|
@ -1645,6 +1678,7 @@ Class SWWMHandler : EventHandler
|
|||
{
|
||||
bossactors.Push(e.Thing);
|
||||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 2;
|
||||
if ( trk ) trk.maxhealth = trk.lasthealth = e.Thing.Health;
|
||||
bosstag = "$BT_DSPARIL";
|
||||
}
|
||||
else if ( e.Thing is 'Sorcerer2' )
|
||||
|
|
@ -1654,6 +1688,7 @@ Class SWWMHandler : EventHandler
|
|||
initialized = false;
|
||||
bossactors.Push(e.Thing);
|
||||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 8;
|
||||
if ( trk ) trk.maxhealth = trk.lasthealth = e.Thing.Health;
|
||||
bosstag = "$BT_DSPARIL2";
|
||||
}
|
||||
}
|
||||
|
|
@ -1663,6 +1698,7 @@ Class SWWMHandler : EventHandler
|
|||
{
|
||||
bossactors.Push(e.Thing);
|
||||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 2;
|
||||
if ( trk ) trk.maxhealth = trk.lasthealth = e.Thing.Health;
|
||||
bosstag = "$BT_CLERIC";
|
||||
}
|
||||
}
|
||||
|
|
@ -1672,6 +1708,7 @@ Class SWWMHandler : EventHandler
|
|||
{
|
||||
bossactors.Push(e.Thing);
|
||||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 2;
|
||||
if ( trk ) trk.maxhealth = trk.lasthealth = e.Thing.Health;
|
||||
bosstag = "$BT_FIGHTER";
|
||||
}
|
||||
}
|
||||
|
|
@ -1681,6 +1718,7 @@ Class SWWMHandler : EventHandler
|
|||
{
|
||||
bossactors.Push(e.Thing);
|
||||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 2;
|
||||
if ( trk ) trk.maxhealth = trk.lasthealth = e.Thing.Health;
|
||||
bosstag = "$BT_MAGE";
|
||||
}
|
||||
}
|
||||
|
|
@ -1690,6 +1728,7 @@ Class SWWMHandler : EventHandler
|
|||
{
|
||||
bossactors.Push(e.Thing);
|
||||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 4;
|
||||
if ( trk ) trk.maxhealth = trk.lasthealth = e.Thing.Health;
|
||||
bosstag = "$BT_DRAGON";
|
||||
}
|
||||
}
|
||||
|
|
@ -1699,6 +1738,7 @@ Class SWWMHandler : EventHandler
|
|||
{
|
||||
bossactors.Push(e.Thing);
|
||||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 8;
|
||||
if ( trk ) trk.maxhealth = trk.lasthealth = e.Thing.Health;
|
||||
bosstag = "$BT_HERESIARCH";
|
||||
}
|
||||
}
|
||||
|
|
@ -1708,9 +1748,30 @@ Class SWWMHandler : EventHandler
|
|||
{
|
||||
bossactors.Push(e.Thing);
|
||||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 10;
|
||||
if ( trk ) trk.maxhealth = trk.lasthealth = e.Thing.Health;
|
||||
bosstag = "$BT_KORAX";
|
||||
}
|
||||
}
|
||||
else if ( bossmap == MAP_EVMAP30 )
|
||||
{
|
||||
if ( e.Thing.GetClassName() == "ArchangelusA" )
|
||||
{
|
||||
bossactors.Push(e.Thing);
|
||||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 5;
|
||||
if ( trk ) trk.maxhealth = trk.lasthealth = e.Thing.Health;
|
||||
bosstag = "$BT_ARCHANGELUS";
|
||||
}
|
||||
else if ( e.Thing.GetClassName() == "ArchangelusB" )
|
||||
{
|
||||
// second phase
|
||||
bossactors.Clear();
|
||||
initialized = false;
|
||||
bossactors.Push(e.Thing);
|
||||
if ( upgrademe ) e.Thing.StartHealth = e.Thing.Health *= 5;
|
||||
if ( trk ) trk.maxhealth = trk.lasthealth = e.Thing.Health;
|
||||
bosstag = "$BT_ARCHANGELUS";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override void PostUiTick()
|
||||
|
|
@ -1936,6 +1997,18 @@ Class SWWMHandler : EventHandler
|
|||
if ( dehackery ) return;
|
||||
e.Replacement = 'SWWMHangingKeen';
|
||||
}
|
||||
else if ( (e.Replacee is 'BossBrain') && (!e.Replacement || (e.Replacement == 'BossBrain')) )
|
||||
{
|
||||
let def = GetDefaultByType(e.Replacee);
|
||||
bool dehackery = false;
|
||||
for ( State s=def.SpawnState; s; s=s.NextState )
|
||||
{
|
||||
if ( s.bDEHACKED ) dehackery = true;
|
||||
if ( s.NextState == s ) break;
|
||||
}
|
||||
if ( dehackery ) return;
|
||||
e.Replacement = 'SWWMBossBrain';
|
||||
}
|
||||
else if ( e.Replacee is 'RedCard' )
|
||||
{
|
||||
if ( level.GetChecksum() ~== "3805A661D5C4523AFF7BF86991071043" )
|
||||
|
|
|
|||
|
|
@ -142,6 +142,7 @@ Class SWWMHelpMenu : GenericMenu
|
|||
if ( gameinfo.gametype&GAME_Heretic ) txt = StringTable.Localize("$SWWM_HELP_STORYHERETIC");
|
||||
else if ( gameinfo.gametype&GAME_Hexen ) txt = StringTable.Localize("$SWWM_HELP_STORYHEXEN");
|
||||
else if ( gameinfo.gametype&GAME_Strife ) txt = StringTable.Localize("$SWWM_HELP_STORYSTRIFE");
|
||||
else if ( SWWMUtility.IsEviternity() ) txt = StringTable.Localize("$SWWM_HELP_STORYEVITERNITY");
|
||||
else txt = StringTable.Localize("$SWWM_HELP_STORYDOOM");
|
||||
break;
|
||||
case PAGE_DEMO:
|
||||
|
|
|
|||
|
|
@ -48,6 +48,8 @@ Class SWWMKnowledgeBaseMenu : GenericMenu
|
|||
int sel0, sel1, sel2;
|
||||
int ofs0, ofs1, ofs2; // usually equal to above, except when using mouse input
|
||||
int drag; // when dragging with the mouse, which scroller to affect (1 = ofs0 and so on)
|
||||
// mission
|
||||
String missionstr;
|
||||
// stats
|
||||
SWWMStats stats;
|
||||
Array<String> statlist;
|
||||
|
|
@ -144,6 +146,17 @@ Class SWWMKnowledgeBaseMenu : GenericMenu
|
|||
tmsgtic = gametic+70;
|
||||
lasttuid = Random[TUID]();
|
||||
hnd = SWWMHandler(EventHandler.Find("SWWMHandler"));
|
||||
// mission text
|
||||
// TODO per-cluster messages
|
||||
if ( gameinfo.gametype&GAME_Doom )
|
||||
{
|
||||
if ( SWWMUtility.IsEviternity() ) missionstr = "$SWWM_MISSION_EVITERNITY";
|
||||
else missionstr = "$SWWM_MISSION_DOOM";
|
||||
}
|
||||
else if ( gameinfo.gametype&GAME_Heretic ) missionstr = "$SWWM_MISSION_HERETIC";
|
||||
else if ( gameinfo.gametype&GAME_Hexen ) missionstr = "$SWWM_MISSION_HEXEN";
|
||||
else if ( gameinfo.gametype&GAME_Strife ) missionstr = players[consoleplayer].logtext; // just show the quest log
|
||||
else missionstr = "$SWWM_MISSION_NONE";
|
||||
if ( gameinfo.gametype&GAME_Heretic )
|
||||
{
|
||||
// March 10th 2171, 17:34 JST
|
||||
|
|
@ -366,11 +379,7 @@ Class SWWMKnowledgeBaseMenu : GenericMenu
|
|||
}
|
||||
else if ( curtab == TAB_MISSION )
|
||||
{
|
||||
String str = StringTable.Localize("$SWWM_MISSION_NONE");
|
||||
if ( gameinfo.gametype&GAME_Doom ) str = StringTable.Localize("$SWWM_MISSION_DOOM");
|
||||
else if ( gameinfo.gametype&GAME_Heretic ) str = StringTable.Localize("$SWWM_MISSION_HERETIC");
|
||||
else if ( gameinfo.gametype&GAME_Hexen ) str = StringTable.Localize("$SWWM_MISSION_HEXEN");
|
||||
else if ( gameinfo.gametype&GAME_Strife ) str = StringTable.Localize(players[consoleplayer].logtext);
|
||||
String str = StringTable.Localize(missionstr);
|
||||
BrokenLines l = fnt.BreakLines(str,629);
|
||||
if ( l.Count() > 28 ) l = fnt.BreakLines(str,620);
|
||||
if ( (l.Count() > 28) && (sel0 < l.Count()-28) )
|
||||
|
|
@ -796,11 +805,7 @@ Class SWWMKnowledgeBaseMenu : GenericMenu
|
|||
{
|
||||
// are we clicking where the scrollbar should be?
|
||||
if ( mpos.x < 632 ) return res;
|
||||
String str = StringTable.Localize("$SWWM_MISSION_NONE");
|
||||
if ( gameinfo.gametype&GAME_Doom ) str = StringTable.Localize("$SWWM_MISSION_DOOM");
|
||||
else if ( gameinfo.gametype&GAME_Heretic ) str = StringTable.Localize("$SWWM_MISSION_HERETIC");
|
||||
else if ( gameinfo.gametype&GAME_Hexen ) str = StringTable.Localize("$SWWM_MISSION_HEXEN");
|
||||
else if ( gameinfo.gametype&GAME_Strife ) str = StringTable.Localize(players[consoleplayer].logtext);
|
||||
String str = StringTable.Localize(missionstr);
|
||||
BrokenLines l = fnt.BreakLines(str,629);
|
||||
if ( l.Count() > 28 ) l = fnt.BreakLines(str,620);
|
||||
else return res; // no scrollbar
|
||||
|
|
@ -1330,11 +1335,7 @@ Class SWWMKnowledgeBaseMenu : GenericMenu
|
|||
{
|
||||
if ( curtab == TAB_MISSION )
|
||||
{
|
||||
String str = StringTable.Localize("$SWWM_MISSION_NONE");
|
||||
if ( gameinfo.gametype&GAME_Doom ) str = StringTable.Localize("$SWWM_MISSION_DOOM");
|
||||
else if ( gameinfo.gametype&GAME_Heretic ) str = StringTable.Localize("$SWWM_MISSION_HERETIC");
|
||||
else if ( gameinfo.gametype&GAME_Hexen ) str = StringTable.Localize("$SWWM_MISSION_HEXEN");
|
||||
else if ( gameinfo.gametype&GAME_Strife ) str = StringTable.Localize(players[consoleplayer].logtext);
|
||||
String str = StringTable.Localize(missionstr);
|
||||
BrokenLines l = fnt.BreakLines(str,629);
|
||||
if ( l.Count() > 28 ) l = fnt.BreakLines(str,620);
|
||||
else return res; // no scrollbar
|
||||
|
|
@ -2488,11 +2489,7 @@ Class SWWMKnowledgeBaseMenu : GenericMenu
|
|||
// draw contents
|
||||
if ( curtab == TAB_MISSION )
|
||||
{
|
||||
if ( gameinfo.gametype&GAME_Doom ) str = StringTable.Localize("$SWWM_MISSION_DOOM");
|
||||
else if ( gameinfo.gametype&GAME_Heretic ) str = StringTable.Localize("$SWWM_MISSION_HERETIC");
|
||||
else if ( gameinfo.gametype&GAME_Hexen ) str = StringTable.Localize("$SWWM_MISSION_HEXEN");
|
||||
else if ( gameinfo.gametype&GAME_Strife ) str = StringTable.Localize(players[consoleplayer].logtext);
|
||||
else str = StringTable.Localize("$SWWM_MISSION_NONE");
|
||||
String str = StringTable.Localize(missionstr);
|
||||
BrokenLines l = fnt.BreakLines(str,629);
|
||||
if ( l.Count() > 28 ) l = fnt.BreakLines(str,620);
|
||||
xx = 6;
|
||||
|
|
|
|||
|
|
@ -613,13 +613,12 @@ Class SWWMUtility
|
|||
case 'Cyberdemon':
|
||||
basetag = "CYBER";
|
||||
break;
|
||||
case 'BossBrain':
|
||||
case 'SWWMBossBrain':
|
||||
basetag = "BOSSBRAIN";
|
||||
break;
|
||||
case 'WolfensteinSS':
|
||||
basetag = "WOLFSS";
|
||||
break;
|
||||
case 'CommanderKeen':
|
||||
case 'SWWMHangingKeen':
|
||||
basetag = "KEEN";
|
||||
break;
|
||||
|
|
@ -722,6 +721,26 @@ Class SWWMUtility
|
|||
case 'Heresiarch':
|
||||
basetag = "HERESIARCH";
|
||||
break;
|
||||
case 'Pig':
|
||||
basetag = "PIG";
|
||||
break;
|
||||
// eviternity
|
||||
case 'ArchangelusA':
|
||||
case 'ArchangelusB':
|
||||
basetag = "ANGEL";
|
||||
break;
|
||||
case 'AstralCaco':
|
||||
basetag = "ASTRAL";
|
||||
break;
|
||||
case 'Annihilator':
|
||||
basetag = "ANNIHIL";
|
||||
break;
|
||||
case 'FormerCaptain':
|
||||
basetag = "FCAPTAIN";
|
||||
break;
|
||||
case 'NightmareDemon':
|
||||
basetag = "NDEMON";
|
||||
break;
|
||||
}
|
||||
if ( basetag == "" ) return a.GetTag(defstr);
|
||||
String funtag = "FN_"..basetag.."_FUN";
|
||||
|
|
@ -878,6 +897,7 @@ Class SWWMUtility
|
|||
if ( a is 'Cacodemon' ) return true;
|
||||
if ( a.Species == 'RLCacodemon' ) return true; // DRLA
|
||||
if ( a.Species == 'Caco' ) return true; // CH
|
||||
if ( a.GetClassName() == 'AstralCaco' ) return true; // Eviternity
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -913,6 +933,18 @@ Class SWWMUtility
|
|||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
// detect eviternity (naive method)
|
||||
static bool IsEviternity()
|
||||
{
|
||||
for ( int i=0; i<AllActorClasses.Size(); i++ )
|
||||
{
|
||||
if ( AllActorClasses[i].GetClassName() != "Archangelus" )
|
||||
continue;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Class RadiusDebugSphere : Actor
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue