More work towards Legacy of Rust support (with caveats).
As of this commit, do not consider the experience when playing that new expansion to be complete. I've only partially written some of the mission texts and rudimentarily enhanced some boss fights. Currently there is one major limitation in that the intermission texts cannot be replaced, as they're hardcoded inside the UMAPINFO. I don't know if I can work around that.
This commit is contained in:
parent
7a3e0ae413
commit
2aa0ea4680
16 changed files with 414 additions and 43 deletions
|
|
@ -7,26 +7,26 @@ This is just a bit of *"future planning"* for stuff that I ***might*** add later
|
|||
More weapons, because we need 'em. In addition, a bunch of cleanup in base weapons to avoid redundancy.
|
||||
|
||||
* [ ] **DLC Weaponset:**
|
||||
- [x] [1] Itamex Reinforced Hammer *(UnSX 5)*
|
||||
- [x] ➊ Itamex Reinforced Hammer *(UnSX 5)*
|
||||
- [x] HAHA DAB *(Gib 300 enemies with the Itamex Hammer)*
|
||||
- [ ] [2] Plasma Blaster *(SWWM)*
|
||||
- [ ] ➋ Plasma Blaster *(SWWM)*
|
||||
- [ ] Blastin' Plasma *(Kill an enemy at full health with a Plasma Blaster charged shot 50 times)*
|
||||
- [ ] [3] Puntzer Beta *(SWWM Iridium)*
|
||||
- [ ] ➌ Puntzer Beta *(SWWM Iridium)*
|
||||
- [ ] High Noon *(Land 6 killing shots in a single Puntzer Beta reload)*
|
||||
- [ ] [4] Puntzer Gamma *(Ultra Suite 2)*
|
||||
- [ ] ➍ Puntzer Gamma *(Ultra Suite 2)*
|
||||
- [ ] You Gained Brouzouf *(Unload an entire mag in fuller auto with the Puntzer Gamma without missing a single shot)*
|
||||
- [x] [5] Sheen HMG *(SWWM Platinum Ep2)*
|
||||
- [x] ➎ Sheen HMG *(SWWM Platinum Ep2)*
|
||||
- [x] Dakka *(Fire the Sheen HMG at 700 RPM for 30 seconds straight)*
|
||||
- [x] [6] Quadravol *(UnSX)*
|
||||
- [x] ➏ Quadravol *(UnSX)*
|
||||
- [x] Gravely Roast *(Perform 200 bayonet combos with the Quadravol)*
|
||||
- [ ] [7] Sparkster x3 *(UnSX 2)*
|
||||
- [ ] ➐ Sparkster x3 *(UnSX 2)*
|
||||
- [ ] A Fine Sparking *(Kill 30 enemies at once with a Sparkster Rifle combo shot)*
|
||||
- [ ] [8] Ray-Khom *(UnSX)*
|
||||
- [ ] ➑ Ray-Khom *(UnSX)*
|
||||
- [ ] The Most Silent Takedown *(Kill 40 enemies with the Ray-Khom primary without alerting them)*
|
||||
- [ ] John Romero's Curse *(Fry yourself by discharging an electric weapon in water)*
|
||||
- [x] [9] Mortal Rifle *(UnSX 2)*
|
||||
- [x] ➒ Mortal Rifle *(UnSX 2)*
|
||||
- [x] Railed Hard *(Kill 44 enemies with a single Mortal Rifle overpressure shot)*
|
||||
- [ ] [0] Rafan-Kos *(UnSX 4)*
|
||||
- [ ] ➓ Rafan-Kos *(UnSX 4)*
|
||||
- [ ] Super Laser Piss *(Melt a grand total of 5000 enemies with the Rafan-Kos)*
|
||||
* [x] **Additional Voice Acting:**
|
||||
- [x] Extra lines for item pickups/usage
|
||||
|
|
@ -47,7 +47,8 @@ More weapons, because we need 'em. In addition, a bunch of cleanup in base weapo
|
|||
* [x] **Additional WAD Compatibility:**
|
||||
- [x] SIGIL 2
|
||||
- [x] Eviternity 2
|
||||
* [ ] **GZDoom 4.12.x Features:**
|
||||
- [ ] Legacy of Rust
|
||||
* [ ] **GZDoom 4.12+ Features:**
|
||||
- [x] Lesser code cleanup/refactor *(new variables, functions, flags, etc.)*
|
||||
- [ ] Visual Thinker migration where needed *(more lightweight sprite explosions and the like)*
|
||||
* [ ] **VKDoom Features:**
|
||||
|
|
@ -56,7 +57,7 @@ More weapons, because we need 'em. In addition, a bunch of cleanup in base weapo
|
|||
|
||||
## 1.4 update *(Fine Refinements)*:
|
||||
|
||||
Re-animation of old FK models. Plus extra score incentives and achievements.
|
||||
Re-animation of old FK models. Some more items. Plus extra score incentives and achievements. Finishing touches for the mod to be considered truly done, really.
|
||||
|
||||
* [ ] **Re-animate all base models with IK *(important for consistency)***
|
||||
- [ ] Re-animate base weapon set and gestures *(won't be hard)*
|
||||
|
|
@ -105,6 +106,7 @@ Re-animation of old FK models. Plus extra score incentives and achievements.
|
|||
- [ ] Satanic Surprise *(Beat SIGIL 2)*
|
||||
- [ ] Explosive Headache *(Beat Doom 2)*
|
||||
- [ ] Rude Awakening *(Beat No Rest For The Living)*
|
||||
- [ ] Two Birds With One Nuke *(Beat Legacy of Rust)*
|
||||
- [ ] Doom Eviternal *(Beat all episodes of Eviternity)*
|
||||
- [ ] Doom Sempiternal *(Beat all episodes of Eviternity 2)*
|
||||
- [ ] Ding Dong The Wizard's Dead *(Beat the first three episodes of Heretic)*
|
||||
|
|
@ -128,8 +130,9 @@ Things that I'm unsure when will be added *(or if they can be added)*.
|
|||
- [ ] Deaf to The Siren's Song *(Beat Sunder)*
|
||||
* [ ] **Official HELLION support *(when it comes out)***
|
||||
- [ ] Romerotown Rampage *(Beat HELLION)*
|
||||
* [ ] **Official Legacy of Rust support *(not sure how it'd fit in the storyline, but maybe)***
|
||||
- [ ] Two Birds With One Nuke *(Beat Legacy of Rust)*
|
||||
* [ ] **Official Heretic + Hexen re-release support *(if heavy lifting is handled by the port)***
|
||||
- [ ] Absolutely Heretical *(Beat Faith Renewed)*
|
||||
- [ ] Absolutely Washed *(Beat Vestiges of Grandeur)*
|
||||
|
||||
## Other Projects
|
||||
|
||||
|
|
|
|||
17
id1.lst
Normal file
17
id1.lst
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
4F9E705F55E45C1047FABF8BDF2B2399
|
||||
5FB5010F988FFAE2679A9BDD57460473
|
||||
7CABD8B043B69996D9777F7070C8BCCE
|
||||
7F00D2FAA5F0B10A6028BE2FC5530EC9
|
||||
8A2C0869EAA69FB7B441CD2B648978D0
|
||||
95B94864754AC50446A456A88DA3E052
|
||||
867B6AD67389A077CE3C9E3CC896F484
|
||||
1283C3288A2F51B7455D817C5B7FCFAD
|
||||
1699E255B8C0DB86EBB00E5B3C44B4AA
|
||||
A3F7A58FC08C369F1360741A99F1497C
|
||||
B6447217725A2A709D6D021CDE15FE10
|
||||
BF34C34C5DFC8BB47228CC304F9A6748
|
||||
C745F8D0D8824A1910F9DC8B7AB16AA2
|
||||
E2D2886FD22DC4354939E6E51690C34B
|
||||
F5AED83945C8BDE642E55E72FE0D92AA
|
||||
F206766043C4D9BA2C36F76106F96279
|
||||
FCF009C63BBA5F8CEE71ED5EC0B02CDA
|
||||
|
|
@ -347,6 +347,45 @@ FN_WOLFSS_FUNN = "3";
|
|||
FN_WOLFSS_FUN1 = "Mein Lieben";
|
||||
FN_WOLFSS_FUN2 = "Blondie";
|
||||
FN_WOLFSS_FUN3 = "Plain Ol' Nazi";
|
||||
FN_ID24BANSHEE_FUNN = "5";
|
||||
FN_ID24BANSHEE_FUN1 = "'Splode";
|
||||
FN_ID24BANSHEE_FUN2 = "Shouty McShoutface";
|
||||
FN_ID24BANSHEE_FUN3 = "Blastface";
|
||||
FN_ID24BANSHEE_FUN4 = "We Have To Explode";
|
||||
FN_ID24BANSHEE_FUN5 = "Volatile";
|
||||
FN_ID24GHOUL_FUNN = "6";
|
||||
FN_ID24GHOUL_FUN1 = "SKULL";
|
||||
FN_ID24GHOUL_FUN2 = "Grayface";
|
||||
FN_ID24GHOUL_FUN3 = "Floaty Head";
|
||||
FN_ID24GHOUL_FUN4 = "They Shoot Now";
|
||||
FN_ID24GHOUL_FUN5 = "Lil' Head";
|
||||
FN_ID24GHOUL_FUN6 = "Skully";
|
||||
FN_ID24MINDWEAVER_FUNN = "5";
|
||||
FN_ID24MINDWEAVER_FUN1 = "Dakka Spooder";
|
||||
FN_ID24MINDWEAVER_FUN2 = "Braingunner";
|
||||
FN_ID24MINDWEAVER_FUN3 = "Adolescent Spider";
|
||||
FN_ID24MINDWEAVER_FUN4 = "Momma's Favorite";
|
||||
FN_ID24MINDWEAVER_FUN5 = "Bullet Nerd";
|
||||
FN_ID24SHOCKTROOPER_FUNN = "5";
|
||||
FN_ID24SHOCKTROOPER_FUN1 = "Plasma Bastard";
|
||||
FN_ID24SHOCKTROOPER_FUN2 = "Zap Zombie";
|
||||
FN_ID24SHOCKTROOPER_FUN3 = "Asshole";
|
||||
FN_ID24SHOCKTROOPER_FUN4 = "Oof Ouch";
|
||||
FN_ID24SHOCKTROOPER_FUN5 = "Glass Cannon";
|
||||
FN_ID24TYRANT_FUNN = "6";
|
||||
FN_ID24TYRANT_FUN1 = "Hornless Behavior";
|
||||
FN_ID24TYRANT_FUN2 = "Downgraded Cow";
|
||||
FN_ID24TYRANT_FUN3 = "Less Augmented Cow";
|
||||
FN_ID24TYRANT_FUN4 = "Green Moo";
|
||||
FN_ID24TYRANT_FUN5 = "Also Shoot At It Until It Dies";
|
||||
FN_ID24TYRANT_FUN6 = "Arse";
|
||||
FN_ID24VASSAGO_FUNN = "6";
|
||||
FN_ID24VASSAGO_FUN1 = "Skullface";
|
||||
FN_ID24VASSAGO_FUN2 = "Fiery Fuck";
|
||||
FN_ID24VASSAGO_FUN3 = "Flamer";
|
||||
FN_ID24VASSAGO_FUN4 = "Winged Goat";
|
||||
FN_ID24VASSAGO_FUN5 = "Pie-Romancer";
|
||||
FN_ID24VASSAGO_FUN6 = "Door On Fire";
|
||||
FN_DOG_FUN = "Goodest Boy";
|
||||
FN_CHICKEN_FUN = "PECK";
|
||||
FN_BEAST_FUN = "Друг";
|
||||
|
|
@ -637,6 +676,12 @@ OB_KNIGHT = "%o was bruised by green plasma.";
|
|||
OB_SPIDER = "%o ate all those bullets.";
|
||||
OB_BABY = "%o angered the spider bab.";
|
||||
OB_CYBORG = "%o didn't follow the protip.";
|
||||
ID24_OB_BANSHEE = "%o got ardently shouted at.";
|
||||
ID24_OB_GHOUL = "%o got pelted by skullies.";
|
||||
ID24_OB_MINDWEAVER = "%o did not expect the demons to give machine guns to children.";
|
||||
ID24_OB_SHOCKTROOPER = "%o got plasma up the ass.";
|
||||
ID24_OB_TYRANT = "%o still didn't follow the protip.";
|
||||
ID24_OB_VASSAGO = "%o could not handle that much heat.";
|
||||
OB_DOG = "%o angered the doggo.";
|
||||
OB_CHICKEN = "%o got the PECK.";
|
||||
OB_BEAST = "%o got flamed by a big friend.";
|
||||
|
|
@ -932,6 +977,9 @@ BT_SPIDER2 = "Spider Sibling";
|
|||
BT_DIMPLE = "Demonic Biomech Squad";
|
||||
BT_IOS = "Baramun, Icon of Sin";
|
||||
BT_CYBIE2 = "Last Tyrant";
|
||||
BT_CYBIE3 = "Guardians of the Soul Silo";
|
||||
BT_TYRANT = "Child of Erebus";
|
||||
BT_TYRANT2 = "Last Children of Erebus";
|
||||
BT_LICHES = "Iron Liches";
|
||||
BT_MINOTAUR = "Maulotaur Servants";
|
||||
BT_DSPARIL = "D'Sparil, Serpent Rider";
|
||||
|
|
@ -952,6 +1000,9 @@ BT_SPIDER2_FUN = "Big Brains Idiot Redux";
|
|||
BT_DIMPLE_FUN = "Lard Lads and Spidey Squad";
|
||||
BT_IOS_FUN = "Goaty McGoatface";
|
||||
BT_CYBIE2_FUN = "Big Stupid Party Pooper";
|
||||
BT_CYBIE3_FUN = "An Assload of Cows";
|
||||
BT_TYRANT_FUN = "Shoot It Until It Dies, Now In Green";
|
||||
BT_TYRANT2_FUN = "Shoot Them All Until They Die, Still In Green";
|
||||
BT_LICHES_FUN = "The Jolly Lad Squad";
|
||||
BT_MINOTAUR_FUN = "AWAKEN MY MASTERS";
|
||||
BT_DSPARIL_FUN = "Red Robed Wizard Dude and Lizard";
|
||||
|
|
|
|||
|
|
@ -172,6 +172,28 @@ SWWM_MISSION_DOOM11 =
|
|||
"Blast 'em to bits, \cfDemolitionist\c-!\n"
|
||||
"\n"
|
||||
"Saya out.";
|
||||
SWWM_MISSION_DOOM28 =
|
||||
"Welcome to this unexpected side mission, \cfDemo-chan\c-. So this is going to come out of nowhere, I know, we thought that the \cfUAC\c- would finally learn their lesson while they were cleaning up their own mess. Not so sure now.\n"
|
||||
"\n"
|
||||
"You're getting deployed to \cf\"New Eden\"\c-, an outpost around the northern coast of Hell's mainland. Thought to be abandoned, sure, but turns out a certain group of people, certain fucking desperate sore loser generals I will not name, have seized it due to one very critical mistake: The goddamn UAC put a shitload of nukes in there.\n"
|
||||
"\n"
|
||||
"Now, these idiots truly did sink to a new low. They had that shit in there, at the ready for launch, \"just in case\" something happened. Well, something sure did happen, because now the \cfArchlord Generals\c- have access to weapons of mass destruction, and as soon as they figure out how to use them, we're screwed.\n"
|
||||
"\n"
|
||||
"So, what's the plan? First, you need to hitch a ride through a portal, and then you'll be back in the ol' land of fire and brimstone. From there, you need to blast your way through the UAC facilities, watching out for any resistance in your path. There's not really any info on the layout of this place, so we either find those nukes by chance, by process of elimination, or you happen to locate an access point where you can fetch a detailed map of the whole installation.\n"
|
||||
"\n"
|
||||
"Time for some more action, \cfDemolitionist\c-!\n"
|
||||
"\n"
|
||||
"Saya out.";
|
||||
SWWM_MISSION_DOOM29 =
|
||||
"OK, so that was embarrassing. Yeah, the access point was obviously rigged, you walked right into a trap, and GUESS WHO also decided that, right after that happened, he had to dispose of your entire inventory. Yup.\n"
|
||||
"\n"
|
||||
"Now, the info we got in the last second was very useful, with one caveat: The missiles are not on \cfNew Eden\c-, but somewhere else entirely. But guess what? I've tracked where those wacky winged weirdos took you, and they actually dropped you off not far from the missile silo.\n"
|
||||
"\n"
|
||||
"Of course, once you get there, expect the place to be very, very heavily guarded. But for now, you do need to get out of that cage and... Find more guns, again. *sigh*\n"
|
||||
"\n"
|
||||
"I really wish you the best of luck, \cfDemo\c-.\n"
|
||||
"\n"
|
||||
"Saya out.";
|
||||
SWWM_MISSION_EVITERNITY1 =
|
||||
"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"
|
||||
|
|
@ -656,6 +678,10 @@ NERVETEXT =
|
|||
"you stretch your joints, happily clap to\n"
|
||||
"yourself, and set forth on your long trip\n"
|
||||
"back home. That reward better be good...";
|
||||
INTERTEXT_ID1_E1 =
|
||||
"<insert text here>";
|
||||
INTERTEXT_ID1_E2 =
|
||||
"<insert text here>";
|
||||
HE1TEXT =
|
||||
"Once you've beaten up those crazy\n"
|
||||
"laughing heads, you can now see the\n"
|
||||
|
|
|
|||
|
|
@ -257,6 +257,39 @@ FN_CYBER_FUN6 = "Vaca Mú";
|
|||
FN_WOLFSS_FUN1 = "Votante De VOX";
|
||||
FN_WOLFSS_FUN2 = "Rubito";
|
||||
FN_WOLFSS_FUN3 = "Cosas Nasis";
|
||||
FN_ID24BANSHEE_FUN1 = "Esplota";
|
||||
FN_ID24BANSHEE_FUN2 = "Don Gritón";
|
||||
FN_ID24BANSHEE_FUN3 = "Bombajeta";
|
||||
FN_ID24BANSHEE_FUN4 = "Hay Que Explotar";
|
||||
FN_ID24BANSHEE_FUN5 = "Volátil";
|
||||
FN_ID24GHOUL_FUN1 = "CRÁNEO";
|
||||
FN_ID24GHOUL_FUN2 = "Caragris";
|
||||
FN_ID24GHOUL_FUN3 = "Cabeza Flotante";
|
||||
FN_ID24GHOUL_FUN4 = "Ahora Disparan";
|
||||
FN_ID24GHOUL_FUN5 = "Cabecín";
|
||||
FN_ID24GHOUL_FUN6 = "Calaverín";
|
||||
FN_ID24MINDWEAVER_FUN1 = "Araña Armada";
|
||||
FN_ID24MINDWEAVER_FUN2 = "Amenteralladora";
|
||||
FN_ID24MINDWEAVER_FUN3 = "Araña Adolescente";
|
||||
FN_ID24MINDWEAVER_FUN4 = "Favorita De Mamá";
|
||||
FN_ID24MINDWEAVER_FUN5 = "Friki Balístico";
|
||||
FN_ID24SHOCKTROOPER_FUN1 = "Bastardo De Plasma";
|
||||
FN_ID24SHOCKTROOPER_FUN2 = "Zombi Plasmado";
|
||||
FN_ID24SHOCKTROOPER_FUN3 = "Caraculo";
|
||||
FN_ID24SHOCKTROOPER_FUN4 = "Uf Ay";
|
||||
FN_ID24SHOCKTROOPER_FUN5 = "Cañón De Cristal";
|
||||
FN_ID24TYRANT_FUN1 = "Comportamiento Descornado";
|
||||
FN_ID24TYRANT_FUN2 = "Vaca Degradada";
|
||||
FN_ID24TYRANT_FUN3 = "Vaca Menos Aumentada";
|
||||
FN_ID24TYRANT_FUN4 = "Mú Verde";
|
||||
FN_ID24TYRANT_FUN5 = "Dispara También Hasta Que Muera";
|
||||
FN_ID24TYRANT_FUN6 = "Posaderas";
|
||||
FN_ID24VASSAGO_FUN1 = "Careta Calavera";
|
||||
FN_ID24VASSAGO_FUN2 = "Capullo Combustible";
|
||||
FN_ID24VASSAGO_FUN3 = "Un Quemao";
|
||||
FN_ID24VASSAGO_FUN4 = "Cabra Alada";
|
||||
FN_ID24VASSAGO_FUN5 = "Pi-Romántico";
|
||||
FN_ID24VASSAGO_FUN6 = "Puerta En Llamas";
|
||||
FN_DOG_FUN = "Perrete";
|
||||
FN_CHICKEN_FUN = "POLLO";
|
||||
FN_CLINK_FUN1 = "Rasguñitos";
|
||||
|
|
@ -506,6 +539,12 @@ OB_KNIGHT = "%o fue churruscad@[ao_esp] por plasma verde.";
|
|||
OB_SPIDER = "%o se comió todas esas balas.";
|
||||
OB_BABY = "%o hizo enfadar al ñiño araña.";
|
||||
OB_CYBORG = "%o no siguió el consejo.";
|
||||
ID24_OB_BANSHEE = "%o recibió un ardiente grito en toda la cara.";
|
||||
ID24_OB_GHOUL = "%o fue acribillado por las calaveritas.";
|
||||
ID24_OB_MINDWEAVER = "%o no esperaba que los demonios les dieran ametralladoras a los niños.";
|
||||
ID24_OB_SHOCKTROOPER = "%o se llevó un plasma de través.";
|
||||
ID24_OB_TYRANT = "%o aun no siguió el consejo.";
|
||||
ID24_OB_VASSAGO = "%o no pudo soportar tanto calor.";
|
||||
OB_DOG = "%o hizo enfadar al perrete.";
|
||||
OB_CHICKEN = "%o recibió el PICO.";
|
||||
OB_BEAST = "%o fue flambead@[ao_esp] por un amigo grandote.";
|
||||
|
|
@ -776,6 +815,9 @@ BT_SPIDER2 = "Hermana Arácnida";
|
|||
BT_DIMPLE = "Escuadrón de Demonios Biomecánicos";
|
||||
BT_IOS = "Baramún, Icono del Pecado";
|
||||
BT_CYBIE2 = "El Último Tirano";
|
||||
BT_CYBIE3 = "Guardianes del Silo de Almas";
|
||||
BT_TYRANT = "Hijo de Erebus";
|
||||
BT_TYRANT2 = "Últimos Hijos de Erebus";
|
||||
BT_LICHES = "Liches de Hierro";
|
||||
BT_MINOTAUR = "Sirvientes Mazotauros";
|
||||
BT_DSPARIL = "D'Sparil, Jinete de Serpiente";
|
||||
|
|
@ -794,7 +836,10 @@ BT_SPIDER_FUN = "Cerebrito Idiota";
|
|||
BT_SPIDER2_FUN = "Cerebrito Idiota Bis";
|
||||
BT_DIMPLE_FUN = "Gordos Grasientos y Armada Arácnida";
|
||||
BT_IOS_FUN = "Cabra Emparedada";
|
||||
BT_CYBYE2_FUN = "Gran y Estúpido Aguafiestas";
|
||||
BT_CYBIE2_FUN = "Gran y Estúpido Aguafiestas";
|
||||
BT_CYBIE3_FUN = "La Hostia de Vacas";
|
||||
BT_TYRANT_FUN = "Dispara Hasta Que Muera, Ahora En Verde";
|
||||
BT_TYRANT2_FUN = "Dispara Hasta Que Mueran Todos, Aun En Verde";
|
||||
BT_LICHES_FUN = "El Escuadrón Risitas";
|
||||
BT_DSPARIL_FUN = "El Brujo Rojo Ese y Lagarto";
|
||||
BT_DSPARIL2_FUN = "El Brujo Rojo Ese";
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
[default]
|
||||
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r1233 \cu(lun 18 ago 2025 23:29:49 CEST)\c-";
|
||||
SWWM_SHORTVER="\cw1.3pre r1233 \cu(2025-08-18 23:29:49)\c-";
|
||||
SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r1235 \cu(mié 20 ago 2025 16:47:24 CEST)\c-";
|
||||
SWWM_SHORTVER="\cw1.3pre r1235 \cu(2025-08-20 16:47:24)\c-";
|
||||
|
|
|
|||
51
zmapinfo.txt
51
zmapinfo.txt
|
|
@ -279,4 +279,55 @@ DoomEdNums
|
|||
4206993 = SWWMDog
|
||||
// Heretic fuckery
|
||||
4206999 = Mace
|
||||
// Legacy of Rust hackery
|
||||
4207007 = ID24Ghoul
|
||||
4207008 = ID24Banshee
|
||||
4207009 = ID24Mindweaver
|
||||
4207010 = ID24PlasmaGuy
|
||||
4207011 = ID24Vassago
|
||||
4207012 = ID24Tyrant
|
||||
4207013 = ID24TyrantBoss1
|
||||
4207014 = ID24TyrantBoss2
|
||||
4207100 = ID24GrayStalagmite
|
||||
4207101 = ID24LargeCorpsePile
|
||||
4207102 = ID24HumanBBQ1
|
||||
4207103 = ID24HumanBBQ2
|
||||
4207104 = ID24HangingBodyBothLegs
|
||||
4207105 = ID24HangingBodyBothLegsSolid
|
||||
4207106 = ID24HangingBodyCrucified
|
||||
4207107 = ID24HangingBodyCrucifiedSolid
|
||||
4207108 = ID24HangingBodyArmsBound
|
||||
4207109 = ID24HangingBodyArmsBoundSolid
|
||||
4207110 = ID24HangingBaronOfHell
|
||||
4207111 = ID24HangingBaronOfHellSolid
|
||||
4207112 = ID24HangingChainedBody
|
||||
4207113 = ID24HangingChainedBodySolid
|
||||
4207114 = ID24HangingChainedTorso
|
||||
4207115 = ID24HangingChainedTorsoSolid
|
||||
4207116 = ID24SkullPoleTrio
|
||||
4207117 = ID24SkullGibs
|
||||
4207118 = ID24BushShort
|
||||
4207119 = ID24BushShortBurned1
|
||||
4207120 = ID24BushShortBurned2
|
||||
4207121 = ID24BushTall
|
||||
4207122 = ID24BushTallBurned1
|
||||
4207123 = ID24BushTallBurned2
|
||||
4207124 = ID24CaveRockColumn
|
||||
4207125 = ID24CaveStalagmiteLarge
|
||||
4207126 = ID24CaveStalagmiteMedium
|
||||
4207127 = ID24CaveStalagmiteSmall
|
||||
4207128 = ID24CaveStalactiteLarge
|
||||
4207129 = ID24CaveStalactiteLargeSolid
|
||||
4207130 = ID24CaveStalactiteMedium
|
||||
4207131 = ID24CaveStalactiteMediumSolid
|
||||
4207132 = ID24CaveStalactiteSmall
|
||||
4207133 = ID24CaveStalactiteSmallSolid
|
||||
4207134 = ID24OfficeChair
|
||||
4207135 = ID24OfficeLamp
|
||||
4207137 = ID24CeilingLamp
|
||||
4207138 = ID24CandelabraShort
|
||||
4207139 = ID24AmbientKlaxon
|
||||
4207140 = ID24AmbientPortalOpen
|
||||
4207141 = ID24AmbientPortalLoop
|
||||
4207142 = ID24AmbientPortalClose
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
version "4.14.1"
|
||||
version "4.15"
|
||||
|
||||
/*
|
||||
DEMOLITIONIST Main Codebase
|
||||
|
|
|
|||
|
|
@ -139,6 +139,11 @@ Class SWWMLevelCompatibility : LevelPostProcessor
|
|||
level.nextsecretmap = level.nextmap; // so the handler can detect this
|
||||
if ( LevelInfo.MapExists("MAP01") ) level.nextmap = "MAP01";
|
||||
break;
|
||||
// Legacy of Rust E1M7
|
||||
case '7F00D2FAA5F0B10A6028BE2FC5530EC9':
|
||||
level.nextsecretmap = level.nextmap; // so the handler can detect this
|
||||
level.nextmap = "MAP08";
|
||||
break;
|
||||
// Heretic E1M8
|
||||
case '27639D04F8090D57A47D354992435893':
|
||||
level.nextsecretmap = level.nextmap; // so the handler can detect this
|
||||
|
|
@ -539,6 +544,35 @@ Class SWWMLevelCompatibility : LevelPostProcessor
|
|||
}
|
||||
switch ( checksum )
|
||||
{
|
||||
// ALL of Legacy of Rust
|
||||
case '4F9E705F55E45C1047FABF8BDF2B2399':
|
||||
case '5FB5010F988FFAE2679A9BDD57460473':
|
||||
case '7CABD8B043B69996D9777F7070C8BCCE':
|
||||
case '7F00D2FAA5F0B10A6028BE2FC5530EC9':
|
||||
case '8A2C0869EAA69FB7B441CD2B648978D0':
|
||||
case '95B94864754AC50446A456A88DA3E052':
|
||||
case '867B6AD67389A077CE3C9E3CC896F484':
|
||||
case '1283C3288A2F51B7455D817C5B7FCFAD':
|
||||
case '1699E255B8C0DB86EBB00E5B3C44B4AA':
|
||||
case 'A3F7A58FC08C369F1360741A99F1497C':
|
||||
case 'B6447217725A2A709D6D021CDE15FE10':
|
||||
case 'BF34C34C5DFC8BB47228CC304F9A6748':
|
||||
case 'C745F8D0D8824A1910F9DC8B7AB16AA2':
|
||||
case 'E2D2886FD22DC4354939E6E51690C34B':
|
||||
case 'F5AED83945C8BDE642E55E72FE0D92AA':
|
||||
// we need to replace the dehacked things with the
|
||||
// ones defined in zscript internally, for the sake of
|
||||
// script compatibility and whatnot
|
||||
for ( uint i=0; i<GetThingCount(); i++ )
|
||||
{
|
||||
int ednum = GetThingEdNum(i);
|
||||
if ( ((ednum >= 3007) && (ednum <= 3014))
|
||||
|| ((ednum >= 3100) && (ednum <= 3142)) )
|
||||
SetThingEdNum(i,ednum+4204000);
|
||||
}
|
||||
break;
|
||||
case 'F206766043C4D9BA2C36F76106F96279':
|
||||
case 'FCF009C63BBA5F8CEE71ED5EC0B02CDA':
|
||||
// ALL of Equinox
|
||||
case '9705315427A2F951A538B23C39199236':
|
||||
case '54E9953A3C1A88641E00AA353BAF46E9':
|
||||
|
|
|
|||
|
|
@ -77,6 +77,28 @@ Class ROM3R0Death : Inventory
|
|||
return;
|
||||
}
|
||||
}
|
||||
Class TyrantWake : Inventory
|
||||
{
|
||||
override void DoEffect()
|
||||
{
|
||||
if ( Owner.InStateSequence(Owner.CurState,Owner.SeeState) )
|
||||
{
|
||||
let hnd = SWWMHandler(EventHandler.Find("SWWMHandler"));
|
||||
if ( hnd && (hnd.bosstag != "$BT_TYRANT2") )
|
||||
{
|
||||
hnd.bossactors.Clear();
|
||||
hnd.initialized = false;
|
||||
let ti = ThinkerIterator.Create('Deh_Actor_157');
|
||||
Actor a;
|
||||
while ( a = Actor(ti.Next()) )
|
||||
hnd.bossactors.Push(a);
|
||||
hnd.bosstag = "$BT_TYRANT2";
|
||||
}
|
||||
DepleteOrDestroy();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
extend Class SWWMHandler
|
||||
{
|
||||
|
|
@ -124,7 +146,9 @@ extend Class SWWMHandler
|
|||
MAP_HMAP60,
|
||||
MAP_EVMAP30, // eviternity
|
||||
MAP_EVIIMAP30, // eviternity 2
|
||||
MAP_DE1M8B // "tech gone bad"
|
||||
MAP_DE1M8B, // "tech gone bad"
|
||||
MAP_ID24MAP13, // TODO Soul Silo cybies
|
||||
MAP_ID24MAP14 // TODO Brink tyrants
|
||||
};
|
||||
|
||||
static play void AddBoss( int tid, String tag, bool endgame = false )
|
||||
|
|
@ -237,6 +261,10 @@ extend Class SWWMHandler
|
|||
return MAP_EVMAP30;
|
||||
if ( mapsum ~== "CF2B3E2589CA6FBB6EE3E3A09F19BA18" )
|
||||
return MAP_EVIIMAP30;
|
||||
if ( mapsum ~== "7CABD8B043B69996D9777F7070C8BCCE" )
|
||||
return MAP_ID24MAP13;
|
||||
if ( mapsum ~== "A3F7A58FC08C369F1360741A99F1497C" )
|
||||
return MAP_ID24MAP14;
|
||||
return MAP_NONE;
|
||||
}
|
||||
private void VanillaBossSpawn( WorldEvent e )
|
||||
|
|
@ -320,6 +348,42 @@ extend Class SWWMHandler
|
|||
bosstag = "$BT_CYBIE2";
|
||||
}
|
||||
}
|
||||
else if ( bossmap == MAP_ID24MAP13 )
|
||||
{
|
||||
if ( e.Thing is 'Cyberdemon' )
|
||||
{
|
||||
bossactors.Push(e.Thing);
|
||||
e.Thing.StartHealth = e.Thing.Health *= 4;
|
||||
e.Thing.GiveInventory('BossMarker',1);
|
||||
bosstag = "$BT_CYBIE3";
|
||||
}
|
||||
}
|
||||
else if ( bossmap == MAP_ID24MAP14 )
|
||||
{
|
||||
if ( e.Thing is 'Deh_Actor_156' )
|
||||
{
|
||||
bossactors.Push(e.Thing);
|
||||
e.Thing.StartHealth = e.Thing.Health *= 4;
|
||||
e.Thing.GiveInventory('BossMarker',1);
|
||||
bosstag = "$BT_TYRANT";
|
||||
}
|
||||
else if ( e.Thing is 'Deh_Actor_155' )
|
||||
{
|
||||
e.Thing.StartHealth = e.Thing.Health *= 4;
|
||||
e.Thing.GiveInventory('BossMarker',1);
|
||||
}
|
||||
else if ( e.Thing is 'Deh_Actor_157' )
|
||||
{
|
||||
e.Thing.StartHealth = e.Thing.Health *= 4;
|
||||
e.Thing.GiveInventory('BossMarker',1);
|
||||
e.Thing.GiveInventory('TyrantWake',1);
|
||||
}
|
||||
else if ( e.Thing is 'Cyberdemon' )
|
||||
{
|
||||
e.Thing.StartHealth = e.Thing.Health *= 4;
|
||||
e.Thing.GiveInventory('BossMarker',1);
|
||||
}
|
||||
}
|
||||
else if ( bossmap == MAP_HE1M8_HE4M8 )
|
||||
{
|
||||
if ( e.Thing is 'IronLich' )
|
||||
|
|
|
|||
|
|
@ -80,7 +80,8 @@ extend Class SWWMHandler
|
|||
else if ( SWWMUtility.IsEviternity() )
|
||||
{
|
||||
// we have to do some heavy lifting here because episodes don't match clusters
|
||||
if ( level.levelnum <= 5 ) clust = 1;
|
||||
if ( level.levelnum <= 0 ) {}
|
||||
else if ( level.levelnum <= 5 ) clust = 1;
|
||||
else if ( level.levelnum <= 10 ) clust = 2;
|
||||
else if ( level.levelnum <= 15 ) clust = 3;
|
||||
else if ( level.levelnum <= 20 ) clust = 4;
|
||||
|
|
@ -93,6 +94,15 @@ extend Class SWWMHandler
|
|||
else clust = 8;
|
||||
}
|
||||
}
|
||||
else if ( SWWMUtility.IsLegacyOfRust() )
|
||||
{
|
||||
// clusters must be manually assigned
|
||||
if ( level.levelnum <= 0 ) {}
|
||||
if ( (level.levelnum <= 7) || (level.levelnum == 15) ) clust = 28;
|
||||
else if ( (level.levelnum <= 14) || (level.levelnum == 16) ) clust = 29;
|
||||
if ( (level.levelnum == 15) || (level.levelnum == 16) )
|
||||
secret = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( (gameinfo.gametype&GAME_DOOM) && ((level.cluster == 9) || (level.cluster == 10)) )
|
||||
|
|
|
|||
|
|
@ -69,6 +69,17 @@ extend Class DemolitionistMenu
|
|||
c_minute = 9;
|
||||
c_tz = "+09";
|
||||
}
|
||||
else if ( SWWMUtility.IsLegacyOfRust() )
|
||||
{
|
||||
// August 8th 2150, 02:31 EDT
|
||||
// (August 8th 2150, 11:31 JST)
|
||||
c_year = 2150;
|
||||
c_month = 7;
|
||||
c_day = 7;
|
||||
c_hour = 2;
|
||||
c_minute = 31;
|
||||
c_tz = "EDT";
|
||||
}
|
||||
else // Doom
|
||||
{
|
||||
// June 6th 2148, 18:37 EDT
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ Class DemolitionistMissionTab : DemolitionistMenuTab
|
|||
}
|
||||
// saves time
|
||||
bool nrftl = false;
|
||||
bool lor = false;
|
||||
bool eviternity = false;
|
||||
bool eviternitwo = false;
|
||||
bool hexdd = false;
|
||||
|
|
@ -32,6 +33,7 @@ Class DemolitionistMissionTab : DemolitionistMenuTab
|
|||
{
|
||||
int clus = level.cluster;
|
||||
if ( clus == 11 ) nrftl = true;
|
||||
lor = SWWMUtility.IsLegacyOfRust();
|
||||
eviternity = SWWMUtility.IsEviternity();
|
||||
eviternitwo = SWWMUtility.IsEviternityTwo();
|
||||
if ( eviternitwo )
|
||||
|
|
@ -59,6 +61,14 @@ Class DemolitionistMissionTab : DemolitionistMenuTab
|
|||
else if ( level.levelnum <= 32 ) clus = 8;
|
||||
missionstr = String.Format("$SWWM_MISSION_EVITERNITY%d",clus);
|
||||
}
|
||||
else if ( lor )
|
||||
{
|
||||
// legacy of rust has its quirks, as with umapinfo there are
|
||||
// technically no clusters
|
||||
if ( (level.levelnum <= 7) || (level.levelnum == 15) ) clus = 28;
|
||||
else if ( (level.levelnum <= 14) || (level.levelnum == 16) ) clus = 29;
|
||||
missionstr = String.Format("$SWWM_MISSION_DOOM%d",clus);
|
||||
}
|
||||
// naive method to guess if this is sigil
|
||||
else if ( (clus == 5) && (level.mapname.Left(2) == "E5") )
|
||||
missionstr = String.Format("$SWWM_MISSION_SIGIL");
|
||||
|
|
|
|||
|
|
@ -223,42 +223,63 @@ Class SWWMStats : SWWMStaticThinker
|
|||
return null;
|
||||
}
|
||||
|
||||
// we doin' that thing again, yup
|
||||
int ClusterRemap( int clus, int levelnum )
|
||||
{
|
||||
if ( SWWMUtility.IsEviternityTwo() )
|
||||
{
|
||||
// clusters in eviternity 2 have to be remapped
|
||||
if ( clus == 5 ) return 1;
|
||||
if ( (clus == 6) || (clus == 13) ) return 2;
|
||||
if ( (clus == 7) || (clus == 14) ) return 3;
|
||||
if ( (clus == 8) || (clus == 15) ) return 4;
|
||||
if ( (clus == 9) || (clus == 16) ) return 5;
|
||||
if ( (clus == 10) || (clus == 17) ) return 6;
|
||||
if ( (clus == 11) || (clus == 12) || (clus == 18) || (clus == 19) ) return 7;
|
||||
}
|
||||
else if ( SWWMUtility.IsEviternity() )
|
||||
{
|
||||
// we have to do some heavy lifting here because episodes don't match clusters
|
||||
if ( levelnum <= 0 ) return clus;
|
||||
if ( levelnum <= 5 ) return 1;
|
||||
if ( levelnum <= 10 ) return 2;
|
||||
if ( levelnum <= 15 ) return 3;
|
||||
if ( levelnum <= 20 ) return 4;
|
||||
if ( levelnum <= 25 ) return 5;
|
||||
if ( levelnum <= 30 ) return 6;
|
||||
if ( levelnum <= 31 ) return 7;
|
||||
if ( levelnum <= 32 ) return 8;
|
||||
}
|
||||
else if ( SWWMUtility.IsLegacyOfRust() )
|
||||
{
|
||||
// legacy of rust has its quirks, as with umapinfo there are
|
||||
// technically no clusters
|
||||
if ( levelnum <= 0 ) return clus;
|
||||
if ( (levelnum <= 7) || (levelnum == 15) ) return 28;
|
||||
else if ( (levelnum <= 14) || (levelnum == 16) ) return 29;
|
||||
}
|
||||
return clus;
|
||||
}
|
||||
|
||||
void PreloadLevelStats()
|
||||
{
|
||||
// pre-adds all unvisited levels from the current cluster
|
||||
int nlevels = LevelInfo.GetLevelInfoCount();
|
||||
int ourcluster = ClusterRemap(level.cluster,level.levelnum);
|
||||
for ( int i=0; i<nlevels; i++ )
|
||||
{
|
||||
let li = LevelInfo.GetLevelInfo(i);
|
||||
if ( !li.isValid() || !LevelInfo.MapExists(li.mapname)
|
||||
|| (li.cluster != level.cluster)
|
||||
|| FindLevelStats(li.mapname) )
|
||||
continue;
|
||||
// wadfusion hack for E1M4B and E1M8B
|
||||
bool wf_hack = false;
|
||||
if ( (li.mapname == "E1M4") && LevelInfo.MapExists("E1M4B") )
|
||||
{
|
||||
let cv = CVar.GetCVar('wf_blackroomswap_e1m4b');
|
||||
if ( cv && cv.GetBool() )
|
||||
{
|
||||
wf_hack = true;
|
||||
li = LevelInfo.FindLevelInfo("E1M4B");
|
||||
}
|
||||
}
|
||||
else if ( (li.mapname == "E1M8") && LevelInfo.MapExists("E1M8B") )
|
||||
{
|
||||
let cv = CVar.GetCVar('wf_blackroomswap_e1m8b');
|
||||
if ( cv && cv.GetBool() )
|
||||
{
|
||||
wf_hack = true;
|
||||
li = LevelInfo.FindLevelInfo("E1M8B");
|
||||
}
|
||||
}
|
||||
int theircluster = ClusterRemap(li.cluster,li.levelnum);
|
||||
if ( theircluster != ourcluster )
|
||||
continue;
|
||||
let ls = new('LevelStat');
|
||||
// we can automatically assume that all levels from the same cluster will have this flag as well
|
||||
ls.hub = !!(level.clusterflags&level.CLUSTER_HUB);
|
||||
ls.visited = false;
|
||||
ls.cluster = wf_hack?1:li.cluster; // force cluster to be 1 for Romero's extra maps
|
||||
ls.cluster = theircluster;
|
||||
ls.levelname = li.LookupLevelName();
|
||||
// level name may contain trailing whitespace due to DEHACKED nonsense, so strip it
|
||||
ls.levelname.StripRight();
|
||||
|
|
@ -614,7 +635,7 @@ Class SWWMLoreLibrary : SWWMStaticThinker
|
|||
else if ( text ~== "SWWM_LORETXT_MARISA" )
|
||||
text = "SWWM_LORETXT_MARISA2"; // post-invasion update
|
||||
}
|
||||
if ( (gameinfo.gametype&GAME_Raven) || SWWMUtility.IsEviternity() || SWWMUtility.IsEviternityTwo() || (mlog && (mlog.year >= 2150) && (mlog.month >= 5)) )
|
||||
if ( (gameinfo.gametype&GAME_Raven) || SWWMUtility.IsEviternity() || SWWMUtility.IsEviternityTwo() || SWWMUtility.IsLegacyOfRust() || (mlog && (mlog.year >= 2150) && (mlog.month >= 5)) )
|
||||
{
|
||||
if ( text ~== "SWWM_LORETXT_AKARILABS" )
|
||||
text = "SWWM_LORETXT_AKARILABS2"; // demo won, akari project announced
|
||||
|
|
|
|||
|
|
@ -52,10 +52,16 @@ extend Class SWWMUtility
|
|||
if ( IsEviternity() ) return true;
|
||||
if ( IsEviternityTwo() ) return true;
|
||||
if ( IsUltDoom2() ) return true;
|
||||
if ( IsLegacyOfRust() ) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool IsLegacyOfRust()
|
||||
{
|
||||
return CheckMD5List("id1.lst");
|
||||
}
|
||||
|
||||
// detect ultimate doom 2
|
||||
static bool IsUltDoom2()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -84,6 +84,26 @@ extend Class SWWMUtility
|
|||
case 'CyberdemonMAP24':
|
||||
basetag = "CYBER";
|
||||
break;
|
||||
case 'ID24Banshee':
|
||||
basetag = "ID24BANSHEE";
|
||||
break;
|
||||
case 'ID24Ghoul':
|
||||
basetag = "ID24GHOUL";
|
||||
break;
|
||||
case 'ID24Mindweaver':
|
||||
basetag = "ID24MINDWEAVER";
|
||||
break;
|
||||
case 'ID24PlasmaGuy':
|
||||
basetag = "ID24SHOCKTROOPER";
|
||||
break;
|
||||
case 'ID24Vassago':
|
||||
basetag = "ID24VASSAGO";
|
||||
break;
|
||||
case 'ID24Tyrant':
|
||||
case 'ID24TyrantBoss1':
|
||||
case 'ID24TyrantBoss2':
|
||||
basetag = "ID24TYRANT";
|
||||
break;
|
||||
case 'SWWMBossBrain':
|
||||
basetag = "BOSSBRAIN";
|
||||
break;
|
||||
|
|
@ -303,6 +323,8 @@ extend Class SWWMUtility
|
|||
Class<Actor> rescls = res;
|
||||
return rescls;
|
||||
}
|
||||
// special boss tyrants in LoR final map
|
||||
if ( (a == 'ID24TyrantBoss1') || (a == 'ID24TyrantBoss2') ) return 'ID24Tyrant';
|
||||
// stealth monsters, the worst thing ever invented
|
||||
if ( a == 'StealthArachnotron' ) return 'Arachnotron';
|
||||
if ( a == 'StealthArchvile' ) return 'Archvile';
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue